diff --git a/asciidoctor/README.md b/asciidoctor/README.md new file mode 100644 index 0000000000..164200d227 --- /dev/null +++ b/asciidoctor/README.md @@ -0,0 +1,3 @@ +### Relevant articles + +- [Introduction to Asciidoctor](http://www.baeldung.com/introduction-to-asciidoctor) \ No newline at end of file diff --git a/asciidoctor/log4j.properties b/asciidoctor/log4j.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/asciidoctor/pom.xml b/asciidoctor/pom.xml new file mode 100644 index 0000000000..989f6e5354 --- /dev/null +++ b/asciidoctor/pom.xml @@ -0,0 +1,56 @@ + + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + 4.0.0 + + asciidoctor + asciidoctor + + + + org.asciidoctor + asciidoctor-maven-plugin + 1.5.5 + + + org.asciidoctor + asciidoctorj-pdf + 1.5.0-alpha.15 + + + + + output-pdf + generate-resources + + process-asciidoc + + + + + src/docs/asciidoc + target/docs/asciidoc + pdf + + + + + + + + org.asciidoctor + asciidoctorj + 1.5.4 + + + org.asciidoctor + asciidoctorj-pdf + 1.5.0-alpha.11 + + + diff --git a/libraries/src/docs/asciidoc/test.adoc b/asciidoctor/src/docs/asciidoc/test.adoc similarity index 100% rename from libraries/src/docs/asciidoc/test.adoc rename to asciidoctor/src/docs/asciidoc/test.adoc diff --git a/libraries/src/main/java/com/baeldung/asciidoctor/AsciidoctorDemo.java b/asciidoctor/src/main/java/com/baeldung/asciidoctor/AsciidoctorDemo.java similarity index 100% rename from libraries/src/main/java/com/baeldung/asciidoctor/AsciidoctorDemo.java rename to asciidoctor/src/main/java/com/baeldung/asciidoctor/AsciidoctorDemo.java diff --git a/libraries/src/test/java/com/baeldung/asciidoctor/AsciidoctorDemoTest.java b/asciidoctor/src/test/java/com/baeldung/asciidoctor/AsciidoctorDemoTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/asciidoctor/AsciidoctorDemoTest.java rename to asciidoctor/src/test/java/com/baeldung/asciidoctor/AsciidoctorDemoTest.java diff --git a/camel-api/README.md b/camel-api/README.md new file mode 100644 index 0000000000..fe8dadcfe1 --- /dev/null +++ b/camel-api/README.md @@ -0,0 +1,15 @@ +Example for the Article on Camel API with SpringBoot + +to start up, run: + mvn spring-boot:run + +them, do a POST http request to: + http://localhost:8080/camel/api/bean + +with the HEADER: Content-Type: application/json, + +and a BODY Payload like {"id": 1,"name": "World"} + +and we will get a return code of 201 and the response: Hello, World - if the transform() method from Application class is uncommented and the process() method is commented + +or return code of 201 and the response: {"id": 10,"name": "Hello, World"} - if the transform() method from Application class is commented and the process() method is uncommented diff --git a/camel-api/pom.xml b/camel-api/pom.xml new file mode 100644 index 0000000000..6db9f9bfd1 --- /dev/null +++ b/camel-api/pom.xml @@ -0,0 +1,80 @@ + + + + 4.0.0 + + com.example + spring-boot-camel + 0.0.1-SNAPSHOT + + Spring-Boot - Camel API + + + UTF-8 + 3.6.0 + 2.19.1 + 2.19.1 + 1.5.4.RELEASE + + + + + org.apache.camel + camel-servlet-starter + ${camel.version} + + + org.apache.camel + camel-jackson-starter + ${camel.version} + + + org.apache.camel + camel-swagger-java-starter + ${camel.version} + + + org.apache.camel + camel-spring-boot-starter + ${camel.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot-starter.version} + + + + + spring-boot:run + + + + maven-compiler-plugin + ${maven-compiler-plugin.version} + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot-starter.version} + + + + repackage + + + + + + + diff --git a/camel-api/src/main/java/com/baeldung/camel/Application.java b/camel-api/src/main/java/com/baeldung/camel/Application.java new file mode 100644 index 0000000000..f805385ff9 --- /dev/null +++ b/camel-api/src/main/java/com/baeldung/camel/Application.java @@ -0,0 +1,104 @@ +package com.baeldung.camel; + +import javax.ws.rs.core.MediaType; + +import org.apache.camel.CamelContext; +import org.apache.camel.Exchange; +import org.apache.camel.Processor; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.component.servlet.CamelHttpTransportServlet; +import org.apache.camel.impl.DefaultCamelContext; +import org.apache.camel.model.rest.RestBindingMode; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.boot.web.support.SpringBootServletInitializer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.stereotype.Component; + +@SpringBootApplication +@ComponentScan(basePackages="com.baeldung.camel") +public class Application extends SpringBootServletInitializer { + + @Value("${server.port}") + String serverPort; + + @Value("${baeldung.api.path}") + String contextPath; + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + + @Bean + ServletRegistrationBean servletRegistrationBean() { + ServletRegistrationBean servlet = new ServletRegistrationBean(new CamelHttpTransportServlet(), contextPath+"/*"); + servlet.setName("CamelServlet"); + return servlet; + } + + + @Component + class RestApi extends RouteBuilder { + + @Override + public void configure() { + + CamelContext context = new DefaultCamelContext(); + + + // http://localhost:8080/camel/api-doc + restConfiguration().contextPath(contextPath) // + .port(serverPort) + .enableCORS(true) + .apiContextPath("/api-doc") + .apiProperty("api.title", "Test REST API") + .apiProperty("api.version", "v1") + .apiProperty("cors", "true") // cross-site + .apiContextRouteId("doc-api") + .component("servlet") + .bindingMode(RestBindingMode.json) + .dataFormatProperty("prettyPrint", "true"); +/** +The Rest DSL supports automatic binding json/xml contents to/from POJOs using Camels Data Format. +By default the binding mode is off, meaning there is no automatic binding happening for incoming and outgoing messages. +You may want to use binding if you develop POJOs that maps to your REST services request and response types. +This allows you, as a developer, to work with the POJOs in Java code. +*/ + + rest("/api/").description("Teste REST Service") + .id("api-route") + .post("/bean") + .produces(MediaType.APPLICATION_JSON) + .consumes(MediaType.APPLICATION_JSON) +// .get("/hello/{place}") + .bindingMode(RestBindingMode.auto) + .type(MyBean.class) + .enableCORS(true) +// .outType(OutBean.class) + + .to("direct:remoteService"); + + + from("direct:remoteService") + .routeId("direct-route") + .tracing() + .log(">>> ${body.id}") + .log(">>> ${body.name}") +// .transform().simple("blue ${in.body.name}") + .process(new Processor() { + @Override + public void process(Exchange exchange) throws Exception { + MyBean bodyIn = (MyBean) exchange.getIn().getBody(); + + ExampleServices.example(bodyIn); + + exchange.getIn().setBody(bodyIn); + } + }) + .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(201)); + } + } +} diff --git a/camel-api/src/main/java/com/baeldung/camel/ExampleServices.java b/camel-api/src/main/java/com/baeldung/camel/ExampleServices.java new file mode 100644 index 0000000000..ec8f368e68 --- /dev/null +++ b/camel-api/src/main/java/com/baeldung/camel/ExampleServices.java @@ -0,0 +1,15 @@ +package com.baeldung.camel; + +/** + * a Mock class to show how some other layer + * (a persistence layer, for instance) + * could be used insida a Camel + * + */ +public class ExampleServices { + + public static void example(MyBean bodyIn) { + bodyIn.setName( "Hello, " + bodyIn.getName() ); + bodyIn.setId(bodyIn.getId()*10); + } +} diff --git a/camel-api/src/main/java/com/baeldung/camel/MyBean.java b/camel-api/src/main/java/com/baeldung/camel/MyBean.java new file mode 100644 index 0000000000..5368e40c93 --- /dev/null +++ b/camel-api/src/main/java/com/baeldung/camel/MyBean.java @@ -0,0 +1,18 @@ +package com.baeldung.camel; + +public class MyBean { + private Integer id; + private String name; + public Integer getId() { + return id; + } + public void setId(Integer id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } +} diff --git a/camel-api/src/main/resources/application.properties b/camel-api/src/main/resources/application.properties new file mode 100644 index 0000000000..bce95f8eaf --- /dev/null +++ b/camel-api/src/main/resources/application.properties @@ -0,0 +1,15 @@ +logging.config=classpath:logback.xml + +# the options from org.apache.camel.spring.boot.CamelConfigurationProperties can be configured here +camel.springboot.name=MyCamel + +# lets listen on all ports to ensure we can be invoked from the pod IP +server.address=0.0.0.0 +management.address=0.0.0.0 + +# lets use a different management port in case you need to listen to HTTP requests on 8080 +management.port=8081 + +# disable all management enpoints except health +endpoints.enabled = true +endpoints.health.enabled = true \ No newline at end of file diff --git a/camel-api/src/main/resources/application.yml b/camel-api/src/main/resources/application.yml new file mode 100644 index 0000000000..3a4b913db7 --- /dev/null +++ b/camel-api/src/main/resources/application.yml @@ -0,0 +1,27 @@ +server: + port: 8080 + +# for example purposes of Camel version 2.18 and below +baeldung: + api: + path: '/camel' + +camel: + springboot: + # The Camel context name + name: ServicesRest + +# Binding health checks to a different port +management: + port: 8081 + +# disable all management enpoints except health +endpoints: + enabled: false + health: + enabled: true + +# The application configuration properties +quickstart: + generateOrderPeriod: 10s + processOrderPeriod: 30s diff --git a/camel-api/src/main/resources/logback.xml b/camel-api/src/main/resources/logback.xml new file mode 100644 index 0000000000..d0b4334f5a --- /dev/null +++ b/camel-api/src/main/resources/logback.xml @@ -0,0 +1,17 @@ + + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + diff --git a/core-java/pom.xml b/core-java/pom.xml index 2267dba1e6..84a56c8bc7 100644 --- a/core-java/pom.xml +++ b/core-java/pom.xml @@ -327,6 +327,22 @@ + + org.codehaus.mojo + exec-maven-plugin + 1.6.0 + + java + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + -Xmx300m + -XX:+UseParallelGC + -classpath + + com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed + + + diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java b/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java index 13fe0c3126..7b261b2b8e 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java +++ b/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersConsumer.java @@ -6,7 +6,7 @@ public class NumbersConsumer implements Runnable { private final BlockingQueue queue; private final int poisonPill; - public NumbersConsumer(BlockingQueue queue, int poisonPill) { + NumbersConsumer(BlockingQueue queue, int poisonPill) { this.queue = queue; this.poisonPill = poisonPill; } diff --git a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java b/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java index b262097c63..9dcd0a3e47 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java +++ b/core-java/src/main/java/com/baeldung/concurrent/blockingqueue/NumbersProducer.java @@ -9,7 +9,7 @@ public class NumbersProducer implements Runnable { private final int poisonPill; private final int poisonPillPerProducer; - public NumbersProducer(BlockingQueue numbersQueue, int poisonPill, int poisonPillPerProducer) { + NumbersProducer(BlockingQueue numbersQueue, int poisonPill, int poisonPillPerProducer) { this.numbersQueue = numbersQueue; this.poisonPill = poisonPill; this.poisonPillPerProducer = poisonPillPerProducer; diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java b/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java index 90cd01b69f..d48f317fe7 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java +++ b/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/BrokenWorker.java @@ -7,7 +7,7 @@ public class BrokenWorker implements Runnable { private final List outputScraper; private final CountDownLatch countDownLatch; - public BrokenWorker(final List outputScraper, final CountDownLatch countDownLatch) { + BrokenWorker(final List outputScraper, final CountDownLatch countDownLatch) { this.outputScraper = outputScraper; this.countDownLatch = countDownLatch; } diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java b/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java index 66be2030e2..4aee5cf89a 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java +++ b/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/WaitingWorker.java @@ -10,7 +10,7 @@ public class WaitingWorker implements Runnable { private final CountDownLatch callingThreadBlocker; private final CountDownLatch completedThreadCounter; - public WaitingWorker(final List outputScraper, final CountDownLatch readyThreadCounter, final CountDownLatch callingThreadBlocker, CountDownLatch completedThreadCounter) { + WaitingWorker(final List outputScraper, final CountDownLatch readyThreadCounter, final CountDownLatch callingThreadBlocker, CountDownLatch completedThreadCounter) { this.outputScraper = outputScraper; this.readyThreadCounter = readyThreadCounter; diff --git a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java b/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java index e712fc18d6..389e25719b 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java +++ b/core-java/src/main/java/com/baeldung/concurrent/countdownlatch/Worker.java @@ -7,7 +7,7 @@ public class Worker implements Runnable { private final List outputScraper; private final CountDownLatch countDownLatch; - public Worker(final List outputScraper, final CountDownLatch countDownLatch) { + Worker(final List outputScraper, final CountDownLatch countDownLatch) { this.outputScraper = outputScraper; this.countDownLatch = countDownLatch; } diff --git a/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java b/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java new file mode 100644 index 0000000000..977dae4fdb --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/cyclicbarrier/CyclicBarrierDemo.java @@ -0,0 +1,81 @@ +package com.baeldung.concurrent.cyclicbarrier; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Random; +import java.util.concurrent.BrokenBarrierException; +import java.util.concurrent.CyclicBarrier; + +public class CyclicBarrierDemo { + + private CyclicBarrier cyclicBarrier; + private List> partialResults = Collections.synchronizedList(new ArrayList<>()); + private Random random = new Random(); + private int NUM_PARTIAL_RESULTS; + private int NUM_WORKERS; + + + private void runSimulation(int numWorkers, int numberOfPartialResults) { + NUM_PARTIAL_RESULTS = numberOfPartialResults; + NUM_WORKERS = numWorkers; + + cyclicBarrier = new CyclicBarrier(NUM_WORKERS, new AggregatorThread()); + System.out.println("Spawning " + NUM_WORKERS + " worker threads to compute " + + NUM_PARTIAL_RESULTS + " partial results each"); + for (int i = 0; i < NUM_WORKERS; i++) { + Thread worker = new Thread(new NumberCruncherThread()); + worker.setName("Thread " + i); + worker.start(); + } + } + + class NumberCruncherThread implements Runnable { + + @Override + public void run() { + String thisThreadName = Thread.currentThread().getName(); + List partialResult = new ArrayList<>(); + for (int i = 0; i < NUM_PARTIAL_RESULTS; i++) { + Integer num = random.nextInt(10); + System.out.println(thisThreadName + + ": Crunching some numbers! Final result - " + num); + partialResult.add(num); + } + partialResults.add(partialResult); + try { + System.out.println(thisThreadName + " waiting for others to reach barrier."); + cyclicBarrier.await(); + } catch (InterruptedException | BrokenBarrierException e) { + e.printStackTrace(); + } + } + } + + class AggregatorThread implements Runnable { + + @Override + public void run() { + String thisThreadName = Thread.currentThread().getName(); + System.out.println(thisThreadName + ": Computing final sum of " + NUM_WORKERS + + " workers, having " + NUM_PARTIAL_RESULTS + " results each."); + int sum = 0; + for (List threadResult : partialResults) { + System.out.print("Adding "); + for (Integer partialResult : threadResult) { + System.out.print(partialResult+" "); + sum += partialResult; + } + System.out.println(); + } + System.out.println(Thread.currentThread().getName() + ": Final result = " + sum); + } + + } + + public static void main(String[] args) { + CyclicBarrierDemo play = new CyclicBarrierDemo(); + play.runSimulation(5, 3); + } + +} diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java b/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java index aa4ca58d6a..5f72758e71 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java +++ b/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayObject.java @@ -9,7 +9,7 @@ public class DelayObject implements Delayed { private String data; private long startTime; - public DelayObject(String data, long delayInMilliseconds) { + DelayObject(String data, long delayInMilliseconds) { this.data = data; this.startTime = System.currentTimeMillis() + delayInMilliseconds; } diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java b/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java index 8a969bf7aa..d1c1eae9f2 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java +++ b/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueConsumer.java @@ -7,9 +7,9 @@ import java.util.concurrent.atomic.AtomicInteger; public class DelayQueueConsumer implements Runnable { private BlockingQueue queue; private final Integer numberOfElementsToTake; - public final AtomicInteger numberOfConsumedElements = new AtomicInteger(); + final AtomicInteger numberOfConsumedElements = new AtomicInteger(); - public DelayQueueConsumer(BlockingQueue queue, Integer numberOfElementsToTake) { + DelayQueueConsumer(BlockingQueue queue, Integer numberOfElementsToTake) { this.queue = queue; this.numberOfElementsToTake = numberOfElementsToTake; } diff --git a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java b/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java index 617f19b9ac..f24f4bc385 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java +++ b/core-java/src/main/java/com/baeldung/concurrent/delayqueue/DelayQueueProducer.java @@ -9,9 +9,9 @@ public class DelayQueueProducer implements Runnable { private final Integer numberOfElementsToProduce; private final Integer delayOfEachProducedMessageMilliseconds; - public DelayQueueProducer(BlockingQueue queue, - Integer numberOfElementsToProduce, - Integer delayOfEachProducedMessageMilliseconds) { + DelayQueueProducer(BlockingQueue queue, + Integer numberOfElementsToProduce, + Integer delayOfEachProducedMessageMilliseconds) { this.queue = queue; this.numberOfElementsToProduce = numberOfElementsToProduce; this.delayOfEachProducedMessageMilliseconds = delayOfEachProducedMessageMilliseconds; diff --git a/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java b/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java index 3f1eacd276..c5672706ad 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java +++ b/core-java/src/main/java/com/baeldung/concurrent/diningphilosophers/Philosopher.java @@ -5,7 +5,7 @@ public class Philosopher implements Runnable { private final Object leftFork; private final Object rightFork; - public Philosopher(Object left, Object right) { + Philosopher(Object left, Object right) { this.leftFork = left; this.rightFork = right; } @@ -30,7 +30,6 @@ public class Philosopher implements Runnable { } } catch (InterruptedException e) { Thread.currentThread().interrupt(); - return; } } } \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java b/core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java index 471072b333..35bb2aa497 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java +++ b/core-java/src/main/java/com/baeldung/concurrent/future/FactorialSquareCalculator.java @@ -7,7 +7,7 @@ public class FactorialSquareCalculator extends RecursiveTask { final private Integer n; - public FactorialSquareCalculator(Integer n) { + FactorialSquareCalculator(Integer n) { this.n = n; } diff --git a/core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java b/core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java index bcd559dd3b..3329fa599b 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java +++ b/core-java/src/main/java/com/baeldung/concurrent/future/SquareCalculator.java @@ -3,15 +3,15 @@ package com.baeldung.concurrent.future; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; -public class SquareCalculator { +class SquareCalculator { private final ExecutorService executor; - public SquareCalculator(ExecutorService executor) { + SquareCalculator(ExecutorService executor) { this.executor = executor; } - public Future calculate(Integer input) { + Future calculate(Integer input) { return executor.submit(() -> { Thread.sleep(1000); return input * input; diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java b/core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java index 4f061d2efd..f01c675fd2 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java +++ b/core-java/src/main/java/com/baeldung/concurrent/locks/ReentrantLockWithCondition.java @@ -13,71 +13,71 @@ import static java.lang.Thread.sleep; public class ReentrantLockWithCondition { - static Logger logger = LoggerFactory.getLogger(ReentrantLockWithCondition.class); + private static Logger LOG = LoggerFactory.getLogger(ReentrantLockWithCondition.class); - Stack stack = new Stack<>(); - int CAPACITY = 5; + private Stack stack = new Stack<>(); + private static final int CAPACITY = 5; - ReentrantLock lock = new ReentrantLock(); - Condition stackEmptyCondition = lock.newCondition(); - Condition stackFullCondition = lock.newCondition(); + private ReentrantLock lock = new ReentrantLock(); + private Condition stackEmptyCondition = lock.newCondition(); + private Condition stackFullCondition = lock.newCondition(); - public void pushToStack(String item) throws InterruptedException { - try { - lock.lock(); - if (stack.size() == CAPACITY) { - logger.info(Thread.currentThread().getName() + " wait on stack full"); - stackFullCondition.await(); - } - logger.info("Pushing the item " + item); - stack.push(item); - stackEmptyCondition.signalAll(); - } finally { - lock.unlock(); - } + private void pushToStack(String item) throws InterruptedException { + try { + lock.lock(); + if (stack.size() == CAPACITY) { + LOG.info(Thread.currentThread().getName() + " wait on stack full"); + stackFullCondition.await(); + } + LOG.info("Pushing the item " + item); + stack.push(item); + stackEmptyCondition.signalAll(); + } finally { + lock.unlock(); + } - } + } - public String popFromStack() throws InterruptedException { - try { - lock.lock(); - if (stack.size() == 0) { - logger.info(Thread.currentThread().getName() + " wait on stack empty"); - stackEmptyCondition.await(); - } - return stack.pop(); - } finally { - stackFullCondition.signalAll(); - lock.unlock(); - } - } + private String popFromStack() throws InterruptedException { + try { + lock.lock(); + if (stack.size() == 0) { + LOG.info(Thread.currentThread().getName() + " wait on stack empty"); + stackEmptyCondition.await(); + } + return stack.pop(); + } finally { + stackFullCondition.signalAll(); + lock.unlock(); + } + } - public static void main(String[] args) { - final int threadCount = 2; - ReentrantLockWithCondition object = new ReentrantLockWithCondition(); - final ExecutorService service = Executors.newFixedThreadPool(threadCount); - service.execute(() -> { - for (int i = 0; i < 10; i++) { - try { - object.pushToStack("Item " + i); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } + public static void main(String[] args) { + final int threadCount = 2; + ReentrantLockWithCondition object = new ReentrantLockWithCondition(); + final ExecutorService service = Executors.newFixedThreadPool(threadCount); + service.execute(() -> { + for (int i = 0; i < 10; i++) { + try { + object.pushToStack("Item " + i); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } - }); + }); - service.execute(() -> { - for (int i = 0; i < 10; i++) { - try { - logger.info("Item popped " + object.popFromStack()); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } + service.execute(() -> { + for (int i = 0; i < 10; i++) { + try { + LOG.info("Item popped " + object.popFromStack()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } - }); + }); - service.shutdown(); - } + service.shutdown(); + } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java b/core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java index b6a4615638..14ae47b2f3 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java +++ b/core-java/src/main/java/com/baeldung/concurrent/locks/SharedObjectWithLock.java @@ -12,81 +12,77 @@ import static java.lang.Thread.sleep; public class SharedObjectWithLock { - Logger logger = LoggerFactory.getLogger(SharedObjectWithLock.class); + private static final Logger LOG = LoggerFactory.getLogger(SharedObjectWithLock.class); - ReentrantLock lock = new ReentrantLock(true); + private ReentrantLock lock = new ReentrantLock(true); - int counter = 0; + private int counter = 0; - public void perform() { + void perform() { - lock.lock(); - logger.info("Thread - " + Thread.currentThread().getName() + " acquired the lock"); - try { - logger.info("Thread - " + Thread.currentThread().getName() + " processing"); - counter++; - } catch (Exception exception) { - logger.error(" Interrupted Exception ", exception); - } finally { - lock.unlock(); - logger.info("Thread - " + Thread.currentThread().getName() + " released the lock"); - } - } + lock.lock(); + LOG.info("Thread - " + Thread.currentThread().getName() + " acquired the lock"); + try { + LOG.info("Thread - " + Thread.currentThread().getName() + " processing"); + counter++; + } catch (Exception exception) { + LOG.error(" Interrupted Exception ", exception); + } finally { + lock.unlock(); + LOG.info("Thread - " + Thread.currentThread().getName() + " released the lock"); + } + } - public void performTryLock() { + private void performTryLock() { - logger.info("Thread - " + Thread.currentThread().getName() + " attempting to acquire the lock"); - try { - boolean isLockAcquired = lock.tryLock(2, TimeUnit.SECONDS); - if (isLockAcquired) { - try { - logger.info("Thread - " + Thread.currentThread().getName() + " acquired the lock"); + LOG.info("Thread - " + Thread.currentThread().getName() + " attempting to acquire the lock"); + try { + boolean isLockAcquired = lock.tryLock(2, TimeUnit.SECONDS); + if (isLockAcquired) { + try { + LOG.info("Thread - " + Thread.currentThread().getName() + " acquired the lock"); - logger.info("Thread - " + Thread.currentThread().getName() + " processing"); - sleep(1000); - } finally { - lock.unlock(); - logger.info("Thread - " + Thread.currentThread().getName() + " released the lock"); + LOG.info("Thread - " + Thread.currentThread().getName() + " processing"); + sleep(1000); + } finally { + lock.unlock(); + LOG.info("Thread - " + Thread.currentThread().getName() + " released the lock"); - } - } - } catch (InterruptedException exception) { - logger.error(" Interrupted Exception ", exception); - } - logger.info("Thread - " + Thread.currentThread().getName() + " could not acquire the lock"); - } + } + } + } catch (InterruptedException exception) { + LOG.error(" Interrupted Exception ", exception); + } + LOG.info("Thread - " + Thread.currentThread().getName() + " could not acquire the lock"); + } - public ReentrantLock getLock() { - return lock; - } + public ReentrantLock getLock() { + return lock; + } - boolean isLocked() { - return lock.isLocked(); - } + boolean isLocked() { + return lock.isLocked(); + } - boolean hasQueuedThreads() { - return lock.hasQueuedThreads(); - } + boolean hasQueuedThreads() { + return lock.hasQueuedThreads(); + } - int getCounter() { - return counter; - } + int getCounter() { + return counter; + } - public static void main(String[] args) { + public static void main(String[] args) { - final int threadCount = 2; - final ExecutorService service = Executors.newFixedThreadPool(threadCount); - final SharedObjectWithLock object = new SharedObjectWithLock(); + final int threadCount = 2; + final ExecutorService service = Executors.newFixedThreadPool(threadCount); + final SharedObjectWithLock object = new SharedObjectWithLock(); - service.execute(() -> { - object.perform(); - }); - service.execute(() -> { - object.performTryLock(); - }); + service.execute(object::perform); + service.execute(object::performTryLock); - service.shutdown(); + service.shutdown(); - } + } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java b/core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java index 0b0dbc72cb..638bb56b2f 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java +++ b/core-java/src/main/java/com/baeldung/concurrent/locks/StampedLockDemo.java @@ -12,93 +12,93 @@ import java.util.concurrent.locks.StampedLock; import static java.lang.Thread.sleep; public class StampedLockDemo { - Map map = new HashMap<>(); - Logger logger = LoggerFactory.getLogger(StampedLockDemo.class); + private Map map = new HashMap<>(); + private Logger logger = LoggerFactory.getLogger(StampedLockDemo.class); - private final StampedLock lock = new StampedLock(); + private final StampedLock lock = new StampedLock(); - public void put(String key, String value) throws InterruptedException { - long stamp = lock.writeLock(); + public void put(String key, String value) throws InterruptedException { + long stamp = lock.writeLock(); - try { - logger.info(Thread.currentThread().getName() + " acquired the write lock with stamp " + stamp); - map.put(key, value); - } finally { - lock.unlockWrite(stamp); - logger.info(Thread.currentThread().getName() + " unlocked the write lock with stamp " + stamp); - } - } + try { + logger.info(Thread.currentThread().getName() + " acquired the write lock with stamp " + stamp); + map.put(key, value); + } finally { + lock.unlockWrite(stamp); + logger.info(Thread.currentThread().getName() + " unlocked the write lock with stamp " + stamp); + } + } - public String get(String key) throws InterruptedException { - long stamp = lock.readLock(); - logger.info(Thread.currentThread().getName() + " acquired the read lock with stamp " + stamp); - try { - sleep(5000); - return map.get(key); + public String get(String key) throws InterruptedException { + long stamp = lock.readLock(); + logger.info(Thread.currentThread().getName() + " acquired the read lock with stamp " + stamp); + try { + sleep(5000); + return map.get(key); - } finally { - lock.unlockRead(stamp); - logger.info(Thread.currentThread().getName() + " unlocked the read lock with stamp " + stamp); + } finally { + lock.unlockRead(stamp); + logger.info(Thread.currentThread().getName() + " unlocked the read lock with stamp " + stamp); - } + } - } + } - public String readWithOptimisticLock(String key) throws InterruptedException { - long stamp = lock.tryOptimisticRead(); - String value = map.get(key); + private String readWithOptimisticLock(String key) throws InterruptedException { + long stamp = lock.tryOptimisticRead(); + String value = map.get(key); - if (!lock.validate(stamp)) { - stamp = lock.readLock(); - try { - sleep(5000); - return map.get(key); + if (!lock.validate(stamp)) { + stamp = lock.readLock(); + try { + sleep(5000); + return map.get(key); - } finally { - lock.unlock(stamp); - logger.info(Thread.currentThread().getName() + " unlocked the read lock with stamp " + stamp); + } finally { + lock.unlock(stamp); + logger.info(Thread.currentThread().getName() + " unlocked the read lock with stamp " + stamp); - } - } - return value; - } + } + } + return value; + } - public static void main(String[] args) { - final int threadCount = 4; - final ExecutorService service = Executors.newFixedThreadPool(threadCount); - StampedLockDemo object = new StampedLockDemo(); + public static void main(String[] args) { + final int threadCount = 4; + final ExecutorService service = Executors.newFixedThreadPool(threadCount); + StampedLockDemo object = new StampedLockDemo(); - Runnable writeTask = () -> { + Runnable writeTask = () -> { - try { - object.put("key1", "value1"); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }; - Runnable readTask = () -> { + try { + object.put("key1", "value1"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }; + Runnable readTask = () -> { - try { - object.get("key1"); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }; - Runnable readOptimisticTask = () -> { + try { + object.get("key1"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }; + Runnable readOptimisticTask = () -> { - try { - object.readWithOptimisticLock("key1"); - } catch (InterruptedException e) { - e.printStackTrace(); - } - }; - service.submit(writeTask); - service.submit(writeTask); - service.submit(readTask); - service.submit(readOptimisticTask); + try { + object.readWithOptimisticLock("key1"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + }; + service.submit(writeTask); + service.submit(writeTask); + service.submit(readTask); + service.submit(readOptimisticTask); - service.shutdown(); + service.shutdown(); - } + } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java b/core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java index 83b8b34fe9..eeb7aa4b13 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java +++ b/core-java/src/main/java/com/baeldung/concurrent/locks/SynchronizedHashMapWithRWLock.java @@ -15,106 +15,106 @@ import static java.lang.Thread.sleep; public class SynchronizedHashMapWithRWLock { - static Map syncHashMap = new HashMap<>(); - Logger logger = LoggerFactory.getLogger(SynchronizedHashMapWithRWLock.class); + private static Map syncHashMap = new HashMap<>(); + private Logger logger = LoggerFactory.getLogger(SynchronizedHashMapWithRWLock.class); - private final ReadWriteLock lock = new ReentrantReadWriteLock(); - private final Lock readLock = lock.readLock(); - private final Lock writeLock = lock.writeLock(); + private final ReadWriteLock lock = new ReentrantReadWriteLock(); + private final Lock readLock = lock.readLock(); + private final Lock writeLock = lock.writeLock(); - public void put(String key, String value) throws InterruptedException { + public void put(String key, String value) throws InterruptedException { - try { - writeLock.lock(); - logger.info(Thread.currentThread().getName() + " writing"); - syncHashMap.put(key, value); - sleep(1000); - } finally { - writeLock.unlock(); - } + try { + writeLock.lock(); + logger.info(Thread.currentThread().getName() + " writing"); + syncHashMap.put(key, value); + sleep(1000); + } finally { + writeLock.unlock(); + } - } + } - public String get(String key) { - try { - readLock.lock(); - logger.info(Thread.currentThread().getName() + " reading"); - return syncHashMap.get(key); - } finally { - readLock.unlock(); - } - } + public String get(String key) { + try { + readLock.lock(); + logger.info(Thread.currentThread().getName() + " reading"); + return syncHashMap.get(key); + } finally { + readLock.unlock(); + } + } - public String remove(String key) { - try { - writeLock.lock(); - return syncHashMap.remove(key); - } finally { - writeLock.unlock(); - } - } + public String remove(String key) { + try { + writeLock.lock(); + return syncHashMap.remove(key); + } finally { + writeLock.unlock(); + } + } - public boolean containsKey(String key) { - try { - readLock.lock(); - return syncHashMap.containsKey(key); - } finally { - readLock.unlock(); - } - } + public boolean containsKey(String key) { + try { + readLock.lock(); + return syncHashMap.containsKey(key); + } finally { + readLock.unlock(); + } + } - boolean isReadLockAvailable() { - return readLock.tryLock(); - } + boolean isReadLockAvailable() { + return readLock.tryLock(); + } - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) throws InterruptedException { - final int threadCount = 3; - final ExecutorService service = Executors.newFixedThreadPool(threadCount); - SynchronizedHashMapWithRWLock object = new SynchronizedHashMapWithRWLock(); + final int threadCount = 3; + final ExecutorService service = Executors.newFixedThreadPool(threadCount); + SynchronizedHashMapWithRWLock object = new SynchronizedHashMapWithRWLock(); - service.execute(new Thread(new Writer(object), "Writer")); - service.execute(new Thread(new Reader(object), "Reader1")); - service.execute(new Thread(new Reader(object), "Reader2")); + service.execute(new Thread(new Writer(object), "Writer")); + service.execute(new Thread(new Reader(object), "Reader1")); + service.execute(new Thread(new Reader(object), "Reader2")); - service.shutdown(); - } + service.shutdown(); + } - private static class Reader implements Runnable { + private static class Reader implements Runnable { - SynchronizedHashMapWithRWLock object; + SynchronizedHashMapWithRWLock object; - public Reader(SynchronizedHashMapWithRWLock object) { - this.object = object; - } + Reader(SynchronizedHashMapWithRWLock object) { + this.object = object; + } - @Override - public void run() { - for (int i = 0; i < 10; i++) { - object.get("key" + i); - } - } - } + @Override + public void run() { + for (int i = 0; i < 10; i++) { + object.get("key" + i); + } + } + } - private static class Writer implements Runnable { + private static class Writer implements Runnable { - SynchronizedHashMapWithRWLock object; + SynchronizedHashMapWithRWLock object; - public Writer(SynchronizedHashMapWithRWLock object) { - this.object = object; - } + public Writer(SynchronizedHashMapWithRWLock object) { + this.object = object; + } - @Override - public void run() { - for (int i = 0; i < 10; i++) { - try { - object.put("key" + i, "value" + i); - sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - } - } + @Override + public void run() { + for (int i = 0; i < 10; i++) { + try { + object.put("key" + i, "value" + i); + sleep(1000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } + } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java b/core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java new file mode 100644 index 0000000000..50cd2966ea --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/semaphores/CounterUsingMutex.java @@ -0,0 +1,31 @@ +package com.baeldung.concurrent.semaphores; + +import java.util.concurrent.Semaphore; + +class CounterUsingMutex { + + private final Semaphore mutex; + private int count; + + CounterUsingMutex() { + mutex = new Semaphore(1); + count = 0; + } + + void increase() throws InterruptedException { + mutex.acquire(); + this.count = this.count + 1; + Thread.sleep(1000); + mutex.release(); + + } + + int getCount() { + return this.count; + } + + boolean hasQueuedThreads() { + return mutex.hasQueuedThreads(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java b/core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java new file mode 100644 index 0000000000..718574d3c8 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/semaphores/DelayQueueUsingTimedSemaphore.java @@ -0,0 +1,23 @@ +package com.baeldung.concurrent.semaphores; + +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang3.concurrent.TimedSemaphore; + +class DelayQueueUsingTimedSemaphore { + + private final TimedSemaphore semaphore; + + DelayQueueUsingTimedSemaphore(long period, int slotLimit) { + semaphore = new TimedSemaphore(period, TimeUnit.SECONDS, slotLimit); + } + + boolean tryAdd() { + return semaphore.tryAcquire(); + } + + int availableSlots() { + return semaphore.getAvailablePermits(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java b/core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java new file mode 100644 index 0000000000..3cf7c45428 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/concurrent/semaphores/LoginQueueUsingSemaphore.java @@ -0,0 +1,25 @@ +package com.baeldung.concurrent.semaphores; + +import java.util.concurrent.Semaphore; + +class LoginQueueUsingSemaphore { + + private final Semaphore semaphore; + + LoginQueueUsingSemaphore(int slotLimit) { + semaphore = new Semaphore(slotLimit); + } + + boolean tryLogin() { + return semaphore.tryAcquire(); + } + + void logout() { + semaphore.release(); + } + + int availableSlots() { + return semaphore.availablePermits(); + } + +} diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java b/core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java index ce1f57bb93..d5ff5f7842 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java +++ b/core-java/src/main/java/com/baeldung/concurrent/skiplist/Event.java @@ -2,20 +2,20 @@ package com.baeldung.concurrent.skiplist; import java.time.ZonedDateTime; -public class Event { +class Event { private final ZonedDateTime eventTime; private final String content; - public Event(ZonedDateTime eventTime, String content) { + Event(ZonedDateTime eventTime, String content) { this.eventTime = eventTime; this.content = content; } - public ZonedDateTime getEventTime() { + ZonedDateTime getEventTime() { return eventTime; } - public String getContent() { + String getContent() { return content; } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java b/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java index 3aca6b0147..2e501ed368 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java +++ b/core-java/src/main/java/com/baeldung/concurrent/skiplist/EventWindowSort.java @@ -5,24 +5,24 @@ import java.util.Comparator; import java.util.concurrent.ConcurrentNavigableMap; import java.util.concurrent.ConcurrentSkipListMap; -public class EventWindowSort { +class EventWindowSort { private final ConcurrentSkipListMap events - = new ConcurrentSkipListMap<>(Comparator.comparingLong(value -> value.toInstant().toEpochMilli())); + = new ConcurrentSkipListMap<>(Comparator.comparingLong(value -> value.toInstant().toEpochMilli())); - public void acceptEvent(Event event) { + void acceptEvent(Event event) { events.put(event.getEventTime(), event.getContent()); } - public ConcurrentNavigableMap getEventsFromLastMinute() { + ConcurrentNavigableMap getEventsFromLastMinute() { return events.tailMap(ZonedDateTime - .now() - .minusMinutes(1)); + .now() + .minusMinutes(1)); } - public ConcurrentNavigableMap getEventsOlderThatOneMinute() { + ConcurrentNavigableMap getEventsOlderThatOneMinute() { return events.headMap(ZonedDateTime - .now() - .minusMinutes(1)); + .now() + .minusMinutes(1)); } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java index 0311d9b0b2..90bc4dceed 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java +++ b/core-java/src/main/java/com/baeldung/concurrent/sleepwait/WaitSleepExample.java @@ -13,10 +13,10 @@ public class WaitSleepExample { private static final Object LOCK = new Object(); public static void main(String... args) throws InterruptedException { - sleepWaitInSyncronizedBlocks(); + sleepWaitInSynchronizedBlocks(); } - private static void sleepWaitInSyncronizedBlocks() throws InterruptedException { + private static void sleepWaitInSynchronizedBlocks() throws InterruptedException { Thread.sleep(1000); // called on the thread LOG.debug("Thread '" + Thread.currentThread().getName() + "' is woken after sleeping for 1 second"); @@ -25,5 +25,5 @@ public class WaitSleepExample { LOG.debug("Object '" + LOCK + "' is woken after waiting for 1 second"); } } - + } diff --git a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java b/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java index d66cd0d796..332a6d9263 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java +++ b/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedBlocks.java @@ -5,13 +5,13 @@ public class BaeldungSynchronizedBlocks { private int count = 0; private static int staticCount = 0; - public void performSynchronisedTask() { + void performSynchronisedTask() { synchronized (this) { setCount(getCount() + 1); } } - public static void performStaticSyncTask() { + static void performStaticSyncTask() { synchronized (BaeldungSynchronizedBlocks.class) { setStaticCount(getStaticCount() + 1); } @@ -25,11 +25,11 @@ public class BaeldungSynchronizedBlocks { this.count = count; } - public static int getStaticCount() { + static int getStaticCount() { return staticCount; } - public static void setStaticCount(int staticCount) { + private static void setStaticCount(int staticCount) { BaeldungSynchronizedBlocks.staticCount = staticCount; } } diff --git a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java b/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java index 1295140b7c..179c6fb9ef 100644 --- a/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java +++ b/core-java/src/main/java/com/baeldung/concurrent/synchronize/BaeldungSynchronizedMethods.java @@ -5,17 +5,17 @@ public class BaeldungSynchronizedMethods { private int sum = 0; private int syncSum = 0; - public static int staticSum = 0; + static int staticSum = 0; - public void calculate() { + void calculate() { setSum(getSum() + 1); } - public synchronized void synchronisedCalculate() { + synchronized void synchronisedCalculate() { setSyncSum(getSyncSum() + 1); } - public static synchronized void syncStaticCalculate() { + static synchronized void syncStaticCalculate() { staticSum = staticSum + 1; } @@ -27,11 +27,11 @@ public class BaeldungSynchronizedMethods { this.sum = sum; } - public int getSyncSum() { + int getSyncSum() { return syncSum; } - public void setSyncSum(int syncSum) { + private void setSyncSum(int syncSum) { this.syncSum = syncSum; } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java index 82f5745b3c..0d727cf0b5 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseLocalDate.java @@ -6,40 +6,40 @@ import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAdjusters; -public class UseLocalDate { +class UseLocalDate { - public LocalDate getLocalDateUsingFactoryOfMethod(int year, int month, int dayOfMonth) { + LocalDate getLocalDateUsingFactoryOfMethod(int year, int month, int dayOfMonth) { return LocalDate.of(year, month, dayOfMonth); } - public LocalDate getLocalDateUsingParseMethod(String representation) { + LocalDate getLocalDateUsingParseMethod(String representation) { return LocalDate.parse(representation); } - public LocalDate getLocalDateFromClock() { + LocalDate getLocalDateFromClock() { LocalDate localDate = LocalDate.now(); return localDate; } - public LocalDate getNextDay(LocalDate localDate) { + LocalDate getNextDay(LocalDate localDate) { return localDate.plusDays(1); } - public LocalDate getPreviousDay(LocalDate localDate) { + LocalDate getPreviousDay(LocalDate localDate) { return localDate.minus(1, ChronoUnit.DAYS); } - public DayOfWeek getDayOfWeek(LocalDate localDate) { + DayOfWeek getDayOfWeek(LocalDate localDate) { DayOfWeek day = localDate.getDayOfWeek(); return day; } - public LocalDate getFirstDayOfMonth() { + LocalDate getFirstDayOfMonth() { LocalDate firstDayOfMonth = LocalDate.now().with(TemporalAdjusters.firstDayOfMonth()); return firstDayOfMonth; } - public LocalDateTime getStartOfDay(LocalDate localDate) { + LocalDateTime getStartOfDay(LocalDate localDate) { LocalDateTime startofDay = localDate.atStartOfDay(); return startofDay; } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java b/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java index 9bd8f9706c..8d166c413f 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseLocalTime.java @@ -5,31 +5,27 @@ import java.time.temporal.ChronoUnit; public class UseLocalTime { - public LocalTime getLocalTimeUsingFactoryOfMethod(int hour, int min, int seconds) { - LocalTime localTime = LocalTime.of(hour, min, seconds); - return localTime; + LocalTime getLocalTimeUsingFactoryOfMethod(int hour, int min, int seconds) { + return LocalTime.of(hour, min, seconds); } - public LocalTime getLocalTimeUsingParseMethod(String timeRepresentation) { - LocalTime localTime = LocalTime.parse(timeRepresentation); - return localTime; + LocalTime getLocalTimeUsingParseMethod(String timeRepresentation) { + return LocalTime.parse(timeRepresentation); } - public LocalTime getLocalTimeFromClock() { - LocalTime localTime = LocalTime.now(); - return localTime; + private LocalTime getLocalTimeFromClock() { + return LocalTime.now(); } - public LocalTime addAnHour(LocalTime localTime) { - LocalTime newTime = localTime.plus(1, ChronoUnit.HOURS); - return newTime; + LocalTime addAnHour(LocalTime localTime) { + return localTime.plus(1, ChronoUnit.HOURS); } - public int getHourFromLocalTime(LocalTime localTime) { + int getHourFromLocalTime(LocalTime localTime) { return localTime.getHour(); } - public LocalTime getLocalTimeWithMinuteSetToValue(LocalTime localTime, int minute) { + LocalTime getLocalTimeWithMinuteSetToValue(LocalTime localTime, int minute) { return localTime.withMinute(minute); } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java b/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java index 5a42ef83b4..10bc6caec3 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java +++ b/core-java/src/main/java/com/baeldung/datetime/UsePeriod.java @@ -3,13 +3,13 @@ package com.baeldung.datetime; import java.time.LocalDate; import java.time.Period; -public class UsePeriod { +class UsePeriod { - public LocalDate modifyDates(LocalDate localDate, Period period) { + LocalDate modifyDates(LocalDate localDate, Period period) { return localDate.plus(period); } - public Period getDifferenceBetweenDates(LocalDate localDate1, LocalDate localDate2) { + Period getDifferenceBetweenDates(LocalDate localDate1, LocalDate localDate2) { return Period.between(localDate1, localDate2); } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java b/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java index 94154ce5c0..1fa413bbf2 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseToInstant.java @@ -8,12 +8,10 @@ import java.util.Date; public class UseToInstant { public LocalDateTime convertDateToLocalDate(Date date) { - LocalDateTime localDateTime = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); - return localDateTime; + return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()); } public LocalDateTime convertDateToLocalDate(Calendar calendar) { - LocalDateTime localDateTime = LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault()); - return localDateTime; + return LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault()); } } diff --git a/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java b/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java index 2d1b17484b..f5e1af0a06 100644 --- a/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java +++ b/core-java/src/main/java/com/baeldung/datetime/UseZonedDateTime.java @@ -4,10 +4,9 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.ZonedDateTime; -public class UseZonedDateTime { +class UseZonedDateTime { - public ZonedDateTime getZonedDateTime(LocalDateTime localDateTime, ZoneId zoneId) { - ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, zoneId); - return zonedDateTime; + ZonedDateTime getZonedDateTime(LocalDateTime localDateTime, ZoneId zoneId) { + return ZonedDateTime.of(localDateTime, zoneId); } } diff --git a/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java b/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java index f9028bd159..bdc732947f 100644 --- a/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java +++ b/core-java/src/main/java/com/baeldung/dirmonitoring/DirectoryMonitoringExample.java @@ -13,8 +13,7 @@ public class DirectoryMonitoringExample { private static final Logger LOG = LoggerFactory.getLogger(DirectoryMonitoringExample.class); - - public static final int POLL_INTERVAL = 500; + private static final int POLL_INTERVAL = 500; public static void main(String[] args) throws Exception { FileAlterationObserver observer = new FileAlterationObserver(System.getProperty("user.home")); diff --git a/core-java/src/main/java/com/baeldung/doublecolon/Computer.java b/core-java/src/main/java/com/baeldung/doublecolon/Computer.java index b5d2e70abd..dc0b064013 100644 --- a/core-java/src/main/java/com/baeldung/doublecolon/Computer.java +++ b/core-java/src/main/java/com/baeldung/doublecolon/Computer.java @@ -6,12 +6,12 @@ public class Computer { private String color; private Integer healty; - public Computer(final int age, final String color) { + Computer(final int age, final String color) { this.age = age; this.color = color; } - public Computer(final Integer age, final String color, final Integer healty) { + Computer(final Integer age, final String color, final Integer healty) { this.age = age; this.color = color; this.healty = healty; @@ -28,7 +28,7 @@ public class Computer { this.age = age; } - public String getColor() { + String getColor() { return color; } @@ -36,11 +36,11 @@ public class Computer { this.color = color; } - public Integer getHealty() { + Integer getHealty() { return healty; } - public void setHealty(final Integer healty) { + void setHealty(final Integer healty) { this.healty = healty; } @@ -72,10 +72,7 @@ public class Computer { final Computer computer = (Computer) o; - if (age != null ? !age.equals(computer.age) : computer.age != null) { - return false; - } - return color != null ? color.equals(computer.color) : computer.color == null; + return (age != null ? age.equals(computer.age) : computer.age == null) && (color != null ? color.equals(computer.color) : computer.color == null); } diff --git a/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java b/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java index d181dfcdf7..317808d893 100644 --- a/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java +++ b/core-java/src/main/java/com/baeldung/doublecolon/ComputerUtils.java @@ -7,8 +7,8 @@ import java.util.List; public class ComputerUtils { - public static final ComputerPredicate after2010Predicate = (c) -> (c.getAge() > 2010); - public static final ComputerPredicate blackPredicate = (c) -> "black".equals(c.getColor()); + static final ComputerPredicate after2010Predicate = (c) -> (c.getAge() > 2010); + static final ComputerPredicate blackPredicate = (c) -> "black".equals(c.getColor()); public static List filter(final List inventory, final ComputerPredicate p) { @@ -18,7 +18,7 @@ public class ComputerUtils { return result; } - public static void repair(final Computer computer) { + static void repair(final Computer computer) { if (computer.getHealty() < 50) { computer.setHealty(100); } diff --git a/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java b/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java index f5c31e9653..79c8d9e383 100644 --- a/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java +++ b/core-java/src/main/java/com/baeldung/doublecolon/MacbookPro.java @@ -13,7 +13,7 @@ public class MacbookPro extends Computer { super(age, color); } - public MacbookPro(Integer age, String color, Integer healty) { + MacbookPro(Integer age, String color, Integer healty) { super(age, color, healty); } diff --git a/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java b/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java index 942efc50cc..c35b69d075 100644 --- a/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java +++ b/core-java/src/main/java/com/baeldung/dynamicproxy/TimingDynamicInvocationHandler.java @@ -15,7 +15,7 @@ public class TimingDynamicInvocationHandler implements InvocationHandler { private Object target; - public TimingDynamicInvocationHandler(Object target) { + TimingDynamicInvocationHandler(Object target) { this.target = target; for(Method method: target.getClass().getDeclaredMethods()) { diff --git a/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java index b9125c3e2f..66de220057 100644 --- a/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java +++ b/core-java/src/main/java/com/baeldung/equalshashcode/entities/Square.java @@ -1,10 +1,10 @@ package com.baeldung.equalshashcode.entities; -import java.awt.Color; +import java.awt.*; public class Square extends Rectangle { - Color color; + private Color color; public Square(double width, Color color) { super(width, width); diff --git a/core-java/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java b/core-java/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java index d8d35d5363..4afce56e39 100644 --- a/core-java/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java +++ b/core-java/src/main/java/com/baeldung/filesystem/jndi/LookupFSJNDI.java @@ -8,7 +8,7 @@ import javax.naming.InitialContext; import javax.naming.NamingException; public class LookupFSJNDI { - InitialContext ctx = null; + private InitialContext ctx = null; public LookupFSJNDI() throws NamingException { super(); diff --git a/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java b/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java index d795f90419..2bc078cdb0 100644 --- a/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java +++ b/core-java/src/main/java/com/baeldung/map/iteration/MapIteration.java @@ -1,58 +1,71 @@ package com.baeldung.map.iteration; -import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; -import java.util.List; import java.util.Map; public class MapIteration { - public List iterateUsingEntrySet(Map map) { - List mapKeyValueList = new ArrayList<>(); + public static void main(String[] args) { + MapIteration mapIteration = new MapIteration(); + Map map = new HashMap<>(); + + map.put("One", 1); + map.put("Three", 3); + map.put("Two", 2); + + System.out.println("Iterating Keys of Map Using KeySet"); + mapIteration.iterateKeys(map); + + System.out.println("Iterating Map Using Entry Set"); + mapIteration.iterateUsingEntrySet(map); + + System.out.println("Iterating Using Iterator and Map Entry"); + mapIteration.iterateUsingIteratorAndEntry(map); + + System.out.println("Iterating Using KeySet and For Each"); + mapIteration.iterateUsingKeySetAndForeach(map); + + System.out.println("Iterating Map Using Lambda Expression"); + mapIteration.iterateUsingLambda(map); + + System.out.println("Iterating Using Stream API"); + mapIteration.iterateUsingStreamAPI(map); + } + + public void iterateUsingEntrySet(Map map) { for (Map.Entry entry : map.entrySet()) { - mapKeyValueList.add(entry.getKey() + ":" + entry.getValue()); + System.out.println(entry.getKey() + ":" + entry.getValue()); } - return mapKeyValueList; } - public List iterateUsingLambda(Map map) { - List mapKeyValueList = new ArrayList<>(); - map.forEach((k, v) -> mapKeyValueList.add(k + ":" + v)); - return mapKeyValueList; + public void iterateUsingLambda(Map map) { + map.forEach((k, v) -> System.out.println((k + ":" + v))); } - public List iterateUsingIteratorAndEntry(Map map) { - ArrayList mapKeyValueList = new ArrayList<>(); + public void iterateUsingIteratorAndEntry(Map map) { Iterator> iterator = map.entrySet().iterator(); - while (iterator.hasNext()) { Map.Entry pair = iterator.next(); - mapKeyValueList.add(pair.getKey() + ":" + pair.getValue()); + System.out.println(pair.getKey() + ":" + pair.getValue()); } - - return mapKeyValueList; } - public List iterateUsingKeySetAndForeach(Map map) { - List mapKeyValueList = new ArrayList<>(); + public void iterateUsingKeySetAndForeach(Map map) { for (String key : map.keySet()) { - mapKeyValueList.add(key + ":" + map.get(key)); + System.out.println(key + ":" + map.get(key)); } - return mapKeyValueList; } - public List iterateUsingStreamAPI(Map map) { - ArrayList mapKeyValueList = new ArrayList<>(); - map.entrySet().stream().forEach(e -> mapKeyValueList.add(e.getKey() + ":" + e.getValue())); - return mapKeyValueList; + public void iterateUsingStreamAPI(Map map) { + map.entrySet().stream().forEach(e -> System.out.println(e.getKey() + ":" + e.getValue())); } - public ArrayList iterateKeys(Map map) { - ArrayList mapKeyList = new ArrayList<>(); + public void iterateKeys(Map map) { for (String key : map.keySet()) { - mapKeyList.add(key); + System.out.println(key); } - return mapKeyList; + } } \ No newline at end of file diff --git a/core-java/src/main/java/com/baeldung/maths/BigDecimalImpl.java b/core-java/src/main/java/com/baeldung/maths/BigDecimalImpl.java new file mode 100644 index 0000000000..1472dd7d6d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/maths/BigDecimalImpl.java @@ -0,0 +1,18 @@ +package com.baeldung.maths; + +import java.math.BigDecimal; +import java.math.RoundingMode; + +public class BigDecimalImpl { + + public static void main(String[] args) { + + BigDecimal serviceTax = new BigDecimal("56.0084578639"); + serviceTax = serviceTax.setScale(2, RoundingMode.CEILING); + + BigDecimal entertainmentTax = new BigDecimal("23.00689"); + entertainmentTax = entertainmentTax.setScale(2, RoundingMode.FLOOR); + + BigDecimal totalTax = serviceTax.add(entertainmentTax); + } +} diff --git a/core-java/src/main/java/com/baeldung/maths/BigIntegerImpl.java b/core-java/src/main/java/com/baeldung/maths/BigIntegerImpl.java new file mode 100644 index 0000000000..dc509429f9 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/maths/BigIntegerImpl.java @@ -0,0 +1,16 @@ +package com.baeldung.maths; + +import java.math.BigInteger; + +public class BigIntegerImpl { + + public static void main(String[] args) { + + BigInteger numStarsMilkyWay = new BigInteger("8731409320171337804361260816606476"); + BigInteger numStarsAndromeda = new BigInteger("5379309320171337804361260816606476"); + + BigInteger totalStars = numStarsMilkyWay.add(numStarsAndromeda); + + } + +} diff --git a/core-java/src/main/java/com/baeldung/outofmemoryerror/OutOfMemoryGCLimitExceed.java b/core-java/src/main/java/com/baeldung/outofmemoryerror/OutOfMemoryGCLimitExceed.java new file mode 100644 index 0000000000..a1b4140281 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/outofmemoryerror/OutOfMemoryGCLimitExceed.java @@ -0,0 +1,19 @@ +package com.baeldung.outofmemoryerror; + +import java.util.HashMap; +import java.util.Map; +import java.util.Random; + +public class OutOfMemoryGCLimitExceed { + public static void addRandomDataToMap() { + Map dataMap = new HashMap<>(); + Random r = new Random(); + while (true) { + dataMap.put(r.nextInt(), String.valueOf(r.nextInt())); + } + } + + public static void main(String[] args) { + OutOfMemoryGCLimitExceed.addRandomDataToMap(); + } +} diff --git a/core-java/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java b/core-java/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java new file mode 100644 index 0000000000..79c18916c2 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java @@ -0,0 +1,16 @@ +package com.baeldung.typeerasure; + +public class ArrayContentPrintUtil { + + public static void printArray(E[] array) { + for (E element : array) { + System.out.printf("%s ", element); + } + } + + public static > void printArray(E[] array) { + for (E element : array) { + System.out.printf("%s ", element); + } + } +} diff --git a/core-java/src/main/java/com/baeldung/typeerasure/BoundStack.java b/core-java/src/main/java/com/baeldung/typeerasure/BoundStack.java new file mode 100644 index 0000000000..6d158fda77 --- /dev/null +++ b/core-java/src/main/java/com/baeldung/typeerasure/BoundStack.java @@ -0,0 +1,37 @@ +package com.baeldung.typeerasure; + +import java.util.Arrays; + +public class BoundStack> { + + private E[] stackContent; + private int total; + + public BoundStack(int capacity) { + this.stackContent = (E[]) new Object[capacity]; + } + + public void push(E data) { + if (total == stackContent.length) { + resize(2 * stackContent.length); + } + stackContent[total++] = data; + } + + public E pop() { + if (!isEmpty()) { + E datum = stackContent[total]; + stackContent[total--] = null; + return datum; + } + return null; + } + + private void resize(int capacity) { + Arrays.copyOf(stackContent, capacity); + } + + public boolean isEmpty() { + return total == 0; + } +} diff --git a/core-java/src/main/java/com/baeldung/typeerasure/IntegerStack.java b/core-java/src/main/java/com/baeldung/typeerasure/IntegerStack.java new file mode 100644 index 0000000000..ad1da1239d --- /dev/null +++ b/core-java/src/main/java/com/baeldung/typeerasure/IntegerStack.java @@ -0,0 +1,13 @@ +package com.baeldung.typeerasure; + +public class IntegerStack extends Stack { + + public IntegerStack(int capacity) { + super(capacity); + } + + public void push(Integer value) { + System.out.println("Pushing into my integerStack"); + super.push(value); + } +} diff --git a/core-java/src/main/java/com/baeldung/typeerasure/Stack.java b/core-java/src/main/java/com/baeldung/typeerasure/Stack.java new file mode 100644 index 0000000000..b88ef6ad8b --- /dev/null +++ b/core-java/src/main/java/com/baeldung/typeerasure/Stack.java @@ -0,0 +1,39 @@ +package com.baeldung.typeerasure; + +import java.util.Arrays; + +public class Stack { + + private E[] stackContent; + private int total; + + public Stack(int capacity) { + this.stackContent = (E[]) new Object[capacity]; + } + + public void push(E data) { + System.out.println("In base stack push#"); + if (total == stackContent.length) { + resize(2 * stackContent.length); + } + stackContent[total++] = data; + } + + public E pop() { + if (!isEmpty()) { + E datum = stackContent[total]; + stackContent[total--] = null; + return datum; + } + return null; + } + + private void resize(int capacity) { + Arrays.copyOf(stackContent, capacity); + } + + public boolean isEmpty() { + return total == 0; + } + +} diff --git a/core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java b/core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java new file mode 100644 index 0000000000..8d64bb6809 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/concurrent/semaphores/SemaphoresManualTest.java @@ -0,0 +1,114 @@ +package com.baeldung.concurrent.semaphores; + +import org.junit.Test; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.stream.IntStream; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class SemaphoresManualTest { + + // ========= login queue ====== + + @Test + public void givenLoginQueue_whenReachLimit_thenBlocked() { + final int slots = 10; + final ExecutorService executorService = Executors.newFixedThreadPool(slots); + final LoginQueueUsingSemaphore loginQueue = new LoginQueueUsingSemaphore(slots); + IntStream.range(0, slots) + .forEach(user -> executorService.execute(loginQueue::tryLogin)); + executorService.shutdown(); + + assertEquals(0, loginQueue.availableSlots()); + assertFalse(loginQueue.tryLogin()); + } + + @Test + public void givenLoginQueue_whenLogout_thenSlotsAvailable() { + final int slots = 10; + final ExecutorService executorService = Executors.newFixedThreadPool(slots); + final LoginQueueUsingSemaphore loginQueue = new LoginQueueUsingSemaphore(slots); + IntStream.range(0, slots) + .forEach(user -> executorService.execute(loginQueue::tryLogin)); + executorService.shutdown(); + + assertEquals(0, loginQueue.availableSlots()); + loginQueue.logout(); + assertTrue(loginQueue.availableSlots() > 0); + assertTrue(loginQueue.tryLogin()); + } + + // ========= delay queue ======= + + @Test + public void givenDelayQueue_whenReachLimit_thenBlocked() { + final int slots = 50; + final ExecutorService executorService = Executors.newFixedThreadPool(slots); + final DelayQueueUsingTimedSemaphore delayQueue = new DelayQueueUsingTimedSemaphore(1, slots); + IntStream.range(0, slots) + .forEach(user -> executorService.execute(delayQueue::tryAdd)); + executorService.shutdown(); + + assertEquals(0, delayQueue.availableSlots()); + assertFalse(delayQueue.tryAdd()); + } + + @Test + public void givenDelayQueue_whenTimePass_thenSlotsAvailable() throws InterruptedException { + final int slots = 50; + final ExecutorService executorService = Executors.newFixedThreadPool(slots); + final DelayQueueUsingTimedSemaphore delayQueue = new DelayQueueUsingTimedSemaphore(1, slots); + IntStream.range(0, slots) + .forEach(user -> executorService.execute(delayQueue::tryAdd)); + executorService.shutdown(); + + assertEquals(0, delayQueue.availableSlots()); + Thread.sleep(1000); + assertTrue(delayQueue.availableSlots() > 0); + assertTrue(delayQueue.tryAdd()); + } + + // ========== mutex ======== + + @Test + public void whenMutexAndMultipleThreads_thenBlocked() throws InterruptedException { + final int count = 5; + final ExecutorService executorService = Executors.newFixedThreadPool(count); + final CounterUsingMutex counter = new CounterUsingMutex(); + IntStream.range(0, count) + .forEach(user -> executorService.execute(() -> { + try { + counter.increase(); + } catch (final InterruptedException e) { + e.printStackTrace(); + } + })); + executorService.shutdown(); + + assertTrue(counter.hasQueuedThreads()); + } + + @Test + public void givenMutexAndMultipleThreads_ThenDelay_thenCorrectCount() throws InterruptedException { + final int count = 5; + final ExecutorService executorService = Executors.newFixedThreadPool(count); + final CounterUsingMutex counter = new CounterUsingMutex(); + IntStream.range(0, count) + .forEach(user -> executorService.execute(() -> { + try { + counter.increase(); + } catch (final InterruptedException e) { + e.printStackTrace(); + } + })); + executorService.shutdown(); + assertTrue(counter.hasQueuedThreads()); + Thread.sleep(5000); + assertFalse(counter.hasQueuedThreads()); + assertEquals(count, counter.getCount()); + } +} diff --git a/core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java b/core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java deleted file mode 100644 index 47dcd9ab1a..0000000000 --- a/core-java/src/test/java/com/baeldung/map/iteration/MapIterationTest.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.baeldung.map.iteration; - -import static org.junit.Assert.assertTrue; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.junit.BeforeClass; -import org.junit.Test; - -public class MapIterationTest { - - public static Map testMap = new HashMap(); - public static String testString1 = "One:1"; - public static String testString2 = "Two:2"; - public static String testString3 = "Three:3"; - - @BeforeClass - public static void createTestData() { - testMap.put("One", 1); - testMap.put("Three", 3); - testMap.put("Two", 2); - } - - @Test - public void givenMap_whenIterateUsingEntrySetReturnsAllEntries_thenCorrect() { - MapIteration mapIteration = new MapIteration(); - List list = mapIteration.iterateUsingEntrySet(testMap); - assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); - } - - @Test - public void givenMap_whenIterateUsingLambdaReturnsAllEntries_thenCorrect() { - MapIteration mapIteration = new MapIteration(); - List list = mapIteration.iterateUsingLambda(testMap); - assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); - } - - @Test - public void givenMap_whenIterateUsingIteratorAndEntryReturnsAllEntries_thenCorrect() { - MapIteration mapIteration = new MapIteration(); - List list = mapIteration.iterateUsingIteratorAndEntry(testMap); - assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); - } - - @Test - public void givenMap_whenIterateUsingKeySetAndForeachReturnsAllEntries_thenCorrect() { - MapIteration mapIteration = new MapIteration(); - List list = mapIteration.iterateUsingKeySetAndForeach(testMap); - assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); - } - - @Test - public void givenMap_whenIterateUsingStreamAPIReturnsAllEntries_thenCorrect() { - MapIteration mapIteration = new MapIteration(); - List list = mapIteration.iterateUsingStreamAPI(testMap); - assertTrue((list.contains(testString1)) && (list.contains(testString2)) && (list.contains(testString3))); - } - - @Test - public void givenMap_whenIterateUsingKeysReturnsAllKeys_thenCorrect() { - MapIteration mapIteration = new MapIteration(); - ArrayList list = mapIteration.iterateKeys(testMap); - assertTrue((list.contains("One")) && (list.contains("Two")) && (list.contains("Three"))); - } - -} diff --git a/core-java/src/test/java/com/baeldung/maths/BigDecimalImplTest.java b/core-java/src/test/java/com/baeldung/maths/BigDecimalImplTest.java new file mode 100644 index 0000000000..973b987224 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/maths/BigDecimalImplTest.java @@ -0,0 +1,24 @@ +package com.baeldung.maths; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import org.junit.Assert; +import org.junit.Test; + +public class BigDecimalImplTest { + + @Test + public void givenBigDecimalNumbers_whenAddedTogether_thenGetExpectedResult() { + BigDecimal serviceTax = new BigDecimal("56.0084578639"); + serviceTax = serviceTax.setScale(2, RoundingMode.CEILING); + + BigDecimal entertainmentTax = new BigDecimal("23.00689"); + entertainmentTax = entertainmentTax.setScale(2, RoundingMode.FLOOR); + + BigDecimal totalTax = serviceTax.add(entertainmentTax); + BigDecimal result = BigDecimal.valueOf(79.01); + + Assert.assertEquals(result, totalTax); + + } +} diff --git a/core-java/src/test/java/com/baeldung/maths/BigIntegerImplTest.java b/core-java/src/test/java/com/baeldung/maths/BigIntegerImplTest.java new file mode 100644 index 0000000000..040c595065 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/maths/BigIntegerImplTest.java @@ -0,0 +1,22 @@ +package com.baeldung.maths; + +import java.math.BigInteger; + +import org.junit.Assert; + +import org.junit.Test; + +public class BigIntegerImplTest { + + @Test + public void givenBigIntegerNumbers_whenAddedTogether_thenGetExpectedResult() { + BigInteger numStarsMilkyWay = new BigInteger("8731409320171337804361260816606476"); + BigInteger numStarsAndromeda = new BigInteger("5379309320171337804361260816606476"); + + BigInteger totalStars = numStarsMilkyWay.add(numStarsAndromeda); + BigInteger result = new BigInteger("14110718640342675608722521633212952"); + + Assert.assertEquals(result, totalStars); + } + +} diff --git a/core-java/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java b/core-java/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java new file mode 100644 index 0000000000..060f177265 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java @@ -0,0 +1,21 @@ +package com.baeldung.typeerasure; + +import org.junit.Test; + +public class TypeErasureUnitTest { + + @Test(expected = ClassCastException.class) + public void givenIntegerStack_whenStringPushedAndAssignPoppedValueToInteger_shouldFail() { + IntegerStack integerStack = new IntegerStack(5); + Stack stack = integerStack; + stack.push("Hello"); + Integer data = integerStack.pop(); + } + + @Test + public void givenAnyArray_whenInvokedPrintArray_shouldSucceed() { + Integer[] scores = new Integer[] { 100, 200, 10, 99, 20 }; + ArrayContentPrintUtil.printArray(scores); + } + +} diff --git a/guest/memory-leaks/pom.xml b/guest/memory-leaks/pom.xml new file mode 100644 index 0000000000..eada59c5a1 --- /dev/null +++ b/guest/memory-leaks/pom.xml @@ -0,0 +1,39 @@ + + 4.0.0 + com.baeldung + memory-leaks + 0.0.1-SNAPSHOT + + + + junit + junit + 4.12 + + + + + + + src/main/resources/ + + **/*.java + + + + src/test/resources/ + + + + + maven-compiler-plugin + 3.5 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/guest/memory-leaks/src/test/java/com/baeldung/Key.java b/guest/memory-leaks/src/test/java/com/baeldung/Key.java new file mode 100644 index 0000000000..6ae2fe7fcf --- /dev/null +++ b/guest/memory-leaks/src/test/java/com/baeldung/Key.java @@ -0,0 +1,11 @@ +package com.baeldung; + +public class Key { + + public static String key; + + public Key(String key) { + Key.key = key; + } + +} diff --git a/guest/memory-leaks/src/test/java/com/baeldung/MemoryLeaksTest.java b/guest/memory-leaks/src/test/java/com/baeldung/MemoryLeaksTest.java new file mode 100644 index 0000000000..a8a094b4db --- /dev/null +++ b/guest/memory-leaks/src/test/java/com/baeldung/MemoryLeaksTest.java @@ -0,0 +1,98 @@ +//package com.baeldung; +// +//import java.io.BufferedReader; +//import java.io.File; +//import java.io.IOException; +//import java.io.InputStream; +//import java.io.InputStreamReader; +//import java.net.URISyntaxException; +//import java.net.URL; +//import java.net.URLConnection; +//import java.nio.charset.StandardCharsets; +//import java.nio.file.Files; +//import java.nio.file.Paths; +//import java.nio.file.StandardOpenOption; +//import java.util.ArrayList; +//import java.util.Map; +//import java.util.Random; +//import java.util.Scanner; +// +//import org.junit.FixMethodOrder; +//import org.junit.Test; +//import org.junit.runner.RunWith; +//import org.junit.runners.JUnit4; +//import org.junit.runners.MethodSorters; +// +//@FixMethodOrder(MethodSorters.NAME_ASCENDING) +//@RunWith(JUnit4.class) +//public class MemoryLeaksTest { +// private Random random = new Random(); +// public static final ArrayList list = new ArrayList(1000000); +// +// @Test +// public void givenStaticField_whenLotsOfOperations_thenMemoryLeak() throws InterruptedException { +// for (int i = 0; i < 1000000; i++) { +// list.add(random.nextDouble()); +// } +// System.gc(); +// Thread.sleep(10000); //to allow GC do its job +// } +// +// +// @Test +// public void givenNormalField_whenLotsOfOperations_thenGCWorksFine() throws InterruptedException { +// addElementsToTheList(); +// System.gc(); +// Thread.sleep(10000); //to allow GC do its job +// } +// +// private void addElementsToTheList(){ +// ArrayList list = new ArrayList(1000000); +// for (int i = 0; i < 1000000; i++) { +// list.add(random.nextDouble()); +// } +// } +// +// @SuppressWarnings({ "resource" }) +// @Test(expected = OutOfMemoryError.class) +// public void givenLengthString_whenIntern_thenOutOfMemory() throws IOException, InterruptedException { +// Thread.sleep(15000); +// String str = new Scanner(new File("src/test/resources/large.txt"), "UTF-8").useDelimiter("\\A") +// .next(); +// System.gc(); +// str.intern(); +// Thread.sleep(10000); +// } +// +// @Test(expected = OutOfMemoryError.class) +// public void givenURL_whenUnclosedStream_thenOutOfMemory() throws IOException, URISyntaxException { +// String str = ""; +// URLConnection conn = new URL("http:norvig.com/big.txt").openConnection(); +// BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8)); +// while (br.readLine() != null) { +// str += br.readLine(); +// } +// Files.write(Paths.get("src/main/resources/"), str.getBytes(), StandardOpenOption.CREATE); +// } +// +// @SuppressWarnings("unused") +// @Test(expected = OutOfMemoryError.class) +// public void givenConnection_whenUnclosed_thenOutOfMemory() throws IOException, URISyntaxException { +// URL url = new URL("ftp:speedtest.tele2.net"); +// URLConnection urlc = url.openConnection(); +// InputStream is = urlc.getInputStream(); +// String str = ""; +// while (true) { +// str += is.toString() +// .intern(); +// } +// } +// +// @Test(expected = OutOfMemoryError.class) +// public void givenMap_whenNoEqualsNoHashCodeMethods_thenOutOfMemory() throws IOException, URISyntaxException { +// Map map = System.getProperties(); +// while (true) { +// map.put(new Key("key"), "value"); +// } +// } +//} diff --git a/guest/memory-leaks/src/test/resources/large.txt b/guest/memory-leaks/src/test/resources/large.txt new file mode 100644 index 0000000000..8807f07143 --- /dev/null +++ b/guest/memory-leaks/src/test/resources/large.txt @@ -0,0 +1,5391 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus ut nisi neque. Proin faucibus scelerisque odio vel vulputate. Maecenas vel urna pharetra velit faucibus vehicula. Nullam lobortis orci orci, non tempus justo faucibus lacinia. Aenean sodales nulla in lorem fringilla, eu vulputate tortor sodales. Vestibulum ut libero vitae leo imperdiet posuere. Integer nec nisl diam. Vivamus non massa scelerisque, congue tortor ut, aliquet nibh. Nulla pretium ex mi, vel elementum arcu vulputate eget. Suspendisse non bibendum lectus. Quisque et sapien sit amet sem dignissim efficitur vel at magna. Maecenas imperdiet, nunc a congue maximus, felis tellus finibus augue, vel porttitor velit velit in lectus. Duis euismod malesuada volutpat. + +Nunc a vulputate eros, non volutpat mauris. Nam lobortis, magna ac posuere venenatis, dui neque vulputate purus, ac semper nisi justo lobortis ipsum. Donec fringilla dignissim magna, quis rutrum velit pellentesque non. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris vel felis imperdiet, convallis odio a, commodo leo. Nulla facilisi. In hendrerit ligula lectus, quis molestie leo congue et. Duis elementum suscipit est quis consequat. Pellentesque magna urna, accumsan eget porta sed, elementum nec enim. Nulla et risus accumsan sapien ultrices ultricies. Aliquam facilisis vitae erat sit amet molestie. Vivamus sit amet metus malesuada ex laoreet tempor. Suspendisse quis varius lacus, ut lobortis urna. + +Duis et massa sapien. Duis quis purus vel nisi commodo ultricies quis id ipsum. Quisque vel nisi nec nunc egestas cursus non quis lacus. Nam dapibus convallis lacus eget lobortis. Pellentesque quis tellus tincidunt, gravida eros consectetur, accumsan ipsum. Pellentesque ipsum mi, posuere vitae urna vitae, accumsan eleifend dolor. Mauris tempus enim vel pretium pulvinar. Praesent eu diam tellus. Vestibulum cursus diam lorem, et consequat dolor aliquet ut. Sed ullamcorper nibh augue, a congue leo vehicula quis. Cras porttitor, magna eget aliquet vehicula, velit est convallis odio, quis varius sem risus eget est. Morbi molestie malesuada egestas. + +Pellentesque hendrerit lectus ligula, sed facilisis ipsum venenatis vitae. Praesent placerat et magna eu accumsan. Curabitur libero sem, egestas quis dui vel, vestibulum luctus arcu. Integer et efficitur eros. Sed venenatis suscipit ultricies. Integer at massa eu metus pretium pretium ac quis nunc. Praesent eget faucibus leo. Sed convallis mattis dictum. Suspendisse vel molestie dui. Integer blandit, risus eu interdum laoreet, ligula quam aliquam metus, at imperdiet nisl lacus id massa. Nunc sapien diam, mattis id justo sit amet, gravida tempor lorem. Quisque metus ex, varius ut elit vel, rutrum consequat magna. Donec efficitur nisl nec augue auctor, vel cursus quam dignissim. Vestibulum sit amet libero velit. + +Fusce vel fringilla orci. Duis ut hendrerit ligula. Mauris tristique libero non posuere tempor. Suspendisse commodo sodales felis, sit amet tempor nunc semper laoreet. Maecenas commodo diam vel bibendum gravida. In scelerisque sapien ut arcu placerat, et posuere nibh congue. Ut ullamcorper malesuada turpis in cursus. Donec auctor at massa non volutpat. Ut consectetur egestas purus, nec sodales eros euismod at. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; In mattis leo tincidunt, volutpat ex maximus, placerat leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas non maximus tortor. + +Morbi ullamcorper purus semper nisl vulputate, non fermentum augue posuere. Aenean ut ultrices sem. Aliquam erat volutpat. Pellentesque id odio lorem. Phasellus eget leo ante. Vivamus ac lacinia velit, quis eleifend nulla. Nulla magna turpis, scelerisque non sapien at, bibendum dictum diam. Pellentesque hendrerit nulla dictum velit pulvinar, eu volutpat leo venenatis. Duis egestas ut eros convallis ultrices. Mauris id nisi et leo maximus scelerisque ut sit amet dolor. Ut consectetur volutpat nibh ut luctus. Curabitur congue mauris et magna tempus, sit amet eleifend felis cursus. Pellentesque non augue vitae velit elementum imperdiet ut nec lacus. + +Nulla posuere enim vel velit vehicula, ut viverra quam luctus. Integer dapibus tincidunt nisl ut fringilla. Nullam sodales mattis tincidunt. Mauris non metus sed risus condimentum tristique quis ut mi. Vivamus vitae nisl lorem. Morbi vehicula malesuada ipsum, eu feugiat sapien vulputate vitae. Sed ut magna augue. Pellentesque pharetra urna mauris, eget tincidunt turpis finibus non. Sed ullamcorper purus a nunc convallis tristique. Phasellus nec tristique metus. Mauris tristique neque dolor, id feugiat arcu pulvinar ut. Aenean justo nunc, euismod nec quam quis, porttitor lacinia neque. Nam diam tellus, hendrerit a neque vel, efficitur dictum ante. Integer ut leo leo. Curabitur viverra quis sem vel tempor. Maecenas in elementum elit. + +Nullam ut nulla non lectus aliquet aliquet vel ut leo. Morbi at dui mauris. Mauris in posuere turpis. Donec lectus justo, porta egestas rhoncus at, tristique vitae sapien. Curabitur hendrerit convallis mattis. Ut at nunc ac mi sodales lacinia ut sit amet nisi. Sed ac felis nec est ornare aliquam. In congue quam leo. Sed aliquam sit amet felis a tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur vitae augue vitae leo aliquet elementum. Suspendisse facilisis nisi id enim placerat cursus. + +Maecenas nec tincidunt elit. Curabitur faucibus elit a ex pretium, at pretium leo tincidunt. Duis rutrum, nunc nec iaculis malesuada, ligula purus scelerisque est, id rutrum justo tellus a eros. Nulla quis nulla dictum, blandit sapien eu, tincidunt sem. Curabitur vestibulum, mi in ultricies auctor, purus tortor semper lacus, at suscipit sem ex at nisl. Integer hendrerit lacinia nibh, tristique blandit lacus pellentesque eget. In tempor ut nunc ut pharetra. Sed pellentesque semper euismod. Suspendisse sit amet mauris vitae tortor dapibus mattis. Phasellus at rhoncus ligula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque pretium malesuada tellus, tincidunt iaculis ligula tincidunt quis. Sed eu nisi non massa vulputate semper id id lorem. Praesent ut leo lacus. + +Sed sed facilisis erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Proin sit amet dui hendrerit, efficitur justo nec, faucibus orci. Vestibulum tempor nec diam in vestibulum. Nullam eu lorem ut diam sagittis consequat malesuada nec massa. Mauris mollis ante at lacinia fringilla. Praesent cursus diam vel congue hendrerit. Fusce in suscipit tortor. + +Aenean laoreet, nisi a efficitur placerat, tellus felis rhoncus dui, id lobortis felis libero eget mauris. Praesent a mi erat. Phasellus auctor tristique viverra. Phasellus sem felis, sodales ac sem vitae, pharetra varius urna. In ultrices scelerisque magna eget varius. Etiam volutpat ornare rutrum. Maecenas vel porttitor elit. In at iaculis ipsum, vel euismod justo. Etiam molestie lectus elit, hendrerit aliquam quam dictum sit amet. Sed eu nibh mauris. + +Sed congue mauris nulla. Duis lacus quam, facilisis in fermentum eget, elementum nec sapien. Fusce diam augue, ornare rutrum tincidunt sed, lacinia id tortor. Nam in nunc enim. Praesent cursus, lorem dignissim dictum malesuada, odio quam auctor libero, nec dapibus lectus nibh non tortor. Integer sed semper sapien. Mauris velit ex, aliquet sit amet vehicula vel, euismod ut tortor. Curabitur eget iaculis sapien, in mattis enim. Phasellus elit turpis, facilisis vel erat et, viverra laoreet lorem. Morbi a egestas est. Integer mi magna, condimentum sit amet commodo quis, placerat sed nisi. Maecenas tempus, odio ac ultrices faucibus, purus diam auctor neque, eget malesuada nibh nisi at mauris. Etiam luctus, sem non viverra pretium, leo augue viverra orci, et finibus enim erat vitae lorem. Proin iaculis nulla suscipit lobortis vulputate. + +Morbi mauris urna, posuere at finibus vitae, lacinia in nibh. Duis vel lectus eu metus placerat vehicula vel ac est. Quisque dapibus consectetur vulputate. In hac habitasse platea dictumst. Integer vel sagittis turpis, eget egestas ex. Quisque maximus lacinia orci, id viverra nisl auctor quis. Maecenas semper vestibulum ornare. Ut id neque tincidunt, efficitur turpis fermentum, commodo tortor. Cras luctus sed arcu et porta. Nunc at enim fringilla, pulvinar nibh et, venenatis magna. Sed at porta tellus, cursus fringilla sapien. Mauris feugiat ipsum ex, non fermentum magna pulvinar eu. Fusce a condimentum justo. Nam sit amet mi vitae purus consectetur rhoncus. Suspendisse molestie ipsum id tellus malesuada mollis. + +Vivamus sed eros eget turpis tincidunt iaculis. Nam at quam a odio tincidunt pharetra a sit amet sem. Mauris scelerisque tempus maximus. Ut iaculis mi eget mi ultricies, eu vulputate eros rhoncus. Nulla consectetur faucibus dolor, ac euismod enim semper rhoncus. Proin aliquet scelerisque dolor, ac auctor urna posuere ut. Fusce non mi vehicula, aliquam nulla nec, luctus felis. Cras vitae sapien quis metus auctor aliquet et molestie turpis. Aliquam enim mauris, feugiat feugiat pellentesque non, aliquam vel nulla. Curabitur luctus sem vel molestie feugiat. Fusce sed felis tincidunt diam pulvinar faucibus. Nulla rutrum, justo eleifend convallis laoreet, dolor nisi placerat leo, at cursus nisl metus sed magna. Fusce eu metus velit. Cras accumsan leo quis arcu sollicitudin luctus. Nulla facilisi. + +In hac habitasse platea dictumst. Nulla facilisi. Integer gravida orci porttitor, sollicitudin nisi nec, commodo nisi. Donec finibus convallis augue, eu ultricies lorem consequat non. Nunc fermentum odio ut tellus sollicitudin, eget rhoncus enim lobortis. Aliquam a blandit arcu, eget maximus nulla. Nullam non sem nibh. Aenean cursus fermentum lectus sed commodo. Aenean sodales vestibulum sem. Nullam sodales a nibh vitae ullamcorper. Phasellus placerat ac mi ac blandit. Ut vehicula sodales orci, vel vestibulum dolor aliquam quis. + +Etiam ultrices purus eget semper tincidunt. Nunc quis nisl id nibh pellentesque congue. Morbi ultricies fermentum mauris sit amet sodales. Quisque porttitor, quam ac ultricies tempor, turpis felis tempor felis, rhoncus vehicula arcu justo sagittis est. Vivamus semper nulla mauris, et condimentum nisl pharetra ut. Nam sed euismod nunc. Etiam tortor tortor, aliquam vel nibh et, hendrerit volutpat tellus. Morbi purus massa, maximus sit amet scelerisque ac, lacinia vitae erat. Cras interdum consequat turpis nec rutrum. Donec molestie odio fringilla viverra interdum. Mauris id orci gravida lacus finibus commodo. Nullam risus arcu, dignissim eu aliquet eu, faucibus at diam. Suspendisse at ligula a ipsum aliquam iaculis ac vitae tellus. Curabitur et tempor quam. + +Maecenas quis risus aliquet, pretium sem ac, condimentum ex. Praesent eleifend, ex at pretium pharetra, elit arcu rhoncus urna, eget hendrerit nunc elit vel mauris. Praesent suscipit augue vel urna sagittis, et tempus tortor tempus. In ultricies sagittis sapien nec commodo. Cras nec venenatis eros. Nunc iaculis urna at urna mollis sagittis. Cras sed turpis sit amet orci semper dignissim id id enim. Morbi sed ornare felis, quis egestas tellus. Cras eget diam quis dolor molestie pulvinar. Fusce ut dui at tortor condimentum porttitor. Nulla nisi diam, malesuada vitae vestibulum a, fringilla ut felis. + +Fusce efficitur porta enim, nec semper justo ornare et. Pellentesque ultricies tellus ac turpis interdum commodo. Aliquam erat volutpat. Vivamus rhoncus turpis et nulla tempor gravida. Donec varius eros ac dolor blandit, ut iaculis ipsum ultrices. Suspendisse at maximus massa, ut elementum est. Suspendisse interdum est at tristique volutpat. Etiam varius dui vitae enim elementum ullamcorper a vel arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam metus sem, iaculis quis lectus sit amet, semper aliquet ligula. Ut bibendum nisi nec turpis ornare facilisis. Morbi pharetra eros tincidunt orci feugiat, ac tempus ligula elementum. Nulla facilisi. Nam dignissim tellus id dolor vestibulum convallis. Donec vitae sapien vitae lacus tempus accumsan ac et diam. Phasellus sit amet euismod magna. + +Maecenas tortor turpis, egestas sit amet pharetra in, dignissim vel sapien. Fusce finibus vel nisi sed lacinia. Integer maximus est vel lectus aliquet consequat. Maecenas dictum neque non enim dictum suscipit. Vestibulum lacinia, urna sit amet consequat mattis, nisi enim interdum leo, eget convallis odio mauris vel risus. Suspendisse vel tempor est. Nullam a scelerisque mauris. Maecenas id sagittis urna. Donec non turpis sed mauris feugiat rhoncus eu id leo. Duis porttitor sodales eros, ac sollicitudin eros luctus ac. Proin et libero malesuada, facilisis ligula non, gravida lorem. Maecenas a euismod arcu. + +Etiam fringilla eros ante, vitae imperdiet erat eleifend ut. Phasellus eget lectus augue. Ut magna elit, laoreet non cursus ut, rutrum vitae est. Morbi eu libero sit amet lorem euismod pretium. Quisque finibus iaculis tincidunt. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut luctus, elit id pulvinar bibendum, erat lectus lacinia lacus, eget condimentum diam diam a ligula. Morbi sit amet nunc nisi. Praesent rhoncus congue enim vel eleifend. Aenean vel mattis nisi. + +Aliquam dictum euismod suscipit. Etiam eu tellus et metus laoreet fringilla. Suspendisse potenti. Praesent feugiat, lacus sit amet dictum dignissim, nibh neque volutpat ex, eu malesuada arcu neque in mauris. Mauris tincidunt velit eu sapien convallis, nec facilisis ligula volutpat. Morbi interdum imperdiet gravida. Praesent sapien diam, vulputate et tempor sit amet, interdum ut erat. Vestibulum vel lacus consequat, vestibulum velit quis, vulputate dolor. Proin pellentesque gravida fermentum. Fusce risus felis, ullamcorper quis nibh ac, elementum placerat est. + +Quisque risus mi, ultricies non eleifend ut, mattis eu justo. Praesent eu sapien turpis. Integer imperdiet non nisi ac fermentum. Maecenas ornare erat nec vulputate dapibus. Mauris sollicitudin velit id tortor commodo, eu feugiat metus sodales. Fusce aliquet felis non dolor ullamcorper, id auctor purus pharetra. Phasellus at vehicula ipsum, in faucibus elit. In vitae turpis mauris. + +Vestibulum maximus risus ac vestibulum ultricies. Maecenas mattis ipsum vel eros malesuada sodales. Proin aliquam odio in turpis luctus scelerisque. Cras pretium sodales justo sed dignissim. Quisque eu pretium lorem, vel dignissim ex. Duis placerat mattis turpis et elementum. Suspendisse ac tincidunt odio. Vivamus non nulla vitae purus egestas porttitor. Ut at erat vitae est mollis bibendum. Praesent porttitor iaculis velit non mollis. Vestibulum sed varius mauris, ac pulvinar erat. Aliquam porttitor ac elit vehicula congue. Vestibulum nec quam at massa auctor eleifend quis ac nulla. Quisque aliquam, risus sed pulvinar viverra, orci ligula eleifend augue, at eleifend urna neque eu mi. Donec efficitur eu metus ac convallis. + +Sed vestibulum rutrum mattis. Vivamus a semper orci. Donec ut nulla id ante venenatis accumsan eget a augue. Suspendisse sollicitudin nulla sed nibh faucibus, tempor efficitur arcu bibendum. Maecenas nec mollis felis, vestibulum consequat leo. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque vel risus sapien. Etiam ligula libero, dignissim in sapien sit amet, malesuada volutpat dolor. Nam tincidunt eget lectus eget rutrum. Donec laoreet a velit nec vestibulum. Vestibulum scelerisque euismod imperdiet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ultricies laoreet lectus vel porttitor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Ut egestas elit id urna feugiat ultricies eget at ex. + +Duis feugiat, ante in pulvinar commodo, nibh diam tincidunt lectus, sed ultrices purus neque fermentum neque. Curabitur lobortis, lorem mattis tempus eleifend, nibh urna facilisis sem, ut aliquam dui urna vel turpis. Quisque hendrerit lorem non commodo blandit. Vestibulum placerat nisl non dui congue, at porta nibh sollicitudin. Quisque ut nulla laoreet, tincidunt dolor quis, condimentum turpis. Integer gravida, mauris vel volutpat ornare, lacus neque egestas ante, a consequat dui felis et risus. Nulla ut fermentum lacus. + +Sed vitae enim sit amet ex pharetra aliquam. Nulla enim odio, ultrices sed sem gravida, faucibus commodo metus. Cras iaculis elit at lectus euismod, quis pretium ipsum sagittis. Cras tellus enim, ultrices a luctus et, tempor consectetur lorem. Vivamus in ullamcorper tortor, non tincidunt elit. Suspendisse magna quam, condimentum quis congue at, dignissim a libero. Donec dui libero, placerat ut neque in, suscipit rutrum urna. Praesent eu iaculis nulla, et dapibus ligula. Phasellus at metus dictum, sagittis erat in, tincidunt elit. Nulla facilisis quam lorem, eget finibus nibh condimentum sed. Quisque sit amet ipsum elit. Integer sed arcu sed dui faucibus hendrerit. + +Phasellus dapibus sem vitae malesuada tristique. Sed consectetur dui eu condimentum posuere. Aliquam quis pulvinar tellus. Mauris vel orci a quam ornare gravida vel et purus. Ut eleifend libero sem, ut commodo lectus suscipit eu. Nam tempor est eros, ut rutrum magna eleifend at. Mauris congue, nisi in convallis laoreet, diam odio iaculis augue, eu lacinia velit magna tempor nunc. + +Ut eu magna eu ligula porttitor aliquam et id felis. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut sollicitudin, mauris vel maximus posuere, justo metus molestie nisi, et molestie erat magna ornare dui. Morbi tellus mauris, maximus quis tempor nec, convallis a enim. Nullam sit amet magna metus. Fusce a metus gravida, ullamcorper dolor id, vulputate nibh. Nulla tempus libero nec felis lobortis, in molestie nisi vulputate. Pellentesque blandit hendrerit ligula, vitae mollis diam dignissim sed. Suspendisse dignissim, lectus euismod egestas facilisis, nibh elit suscipit risus, quis sodales ipsum lorem non metus. Praesent ut aliquet ex. Nam odio risus, facilisis ac ligula ac, tempus suscipit ex. + +Sed mattis lobortis risus. Nullam convallis odio turpis, finibus pulvinar ex condimentum et. Maecenas metus nisi, ultrices ut bibendum eget, cursus sed metus. Sed venenatis dapibus commodo. Aenean vitae suscipit nisl. Sed lacinia vel est vestibulum faucibus. Pellentesque eu gravida ipsum. Donec lacinia, dolor eu egestas sodales, ligula arcu imperdiet erat, quis luctus justo dolor sed enim. Donec ornare ornare ullamcorper. Etiam convallis augue imperdiet elementum eleifend. Cras hendrerit diam magna, non blandit ligula hendrerit nec. Aliquam erat volutpat. In in arcu tincidunt, consequat purus nec, luctus odio. Ut dapibus efficitur ipsum id ornare. Morbi mattis est id libero interdum, et vestibulum enim gravida. + +Sed porta nunc nulla, sit amet pulvinar arcu cursus in. Morbi at augue lacus. Sed molestie mi nec imperdiet mollis. Fusce nibh massa, finibus id augue in, consequat cursus libero. In pharetra, urna eu aliquam auctor, lorem risus sollicitudin justo, nec tincidunt erat metus id metus. Fusce finibus libero justo, eu tincidunt lacus eleifend nec. In accumsan ex eros, eu blandit dui bibendum vitae. In ut est at tellus mattis feugiat at vitae nibh. + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas eget odio nec justo cursus tristique quis ut mauris. Cras sit amet lectus diam. Praesent vitae dolor sem. Phasellus non justo nunc. Mauris accumsan lorem bibendum elit fermentum dapibus. Vivamus sagittis nisl quis pharetra dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse molestie molestie malesuada. In lacus elit, accumsan et mauris facilisis, consectetur dapibus metus. Curabitur tincidunt metus eros, at fringilla leo accumsan sed. Nulla ipsum enim, pellentesque vitae nunc vel, rutrum dapibus mauris. Sed vehicula scelerisque lacus in volutpat. Etiam ac ante vitae velit pretium varius eget vitae enim. Aenean at orci sed quam semper sodales sed ut lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; + +Aliquam elit nulla, tincidunt a ullamcorper quis, gravida ac nunc. Sed vitae suscipit ex. Pellentesque fermentum, nisl id dapibus pellentesque, nisl sem consectetur magna, at fringilla leo arcu ac odio. Maecenas ultrices ante felis, et iaculis urna condimentum id. Praesent sagittis ullamcorper lacus, id hendrerit nisi congue id. Fusce elit sem, porttitor nec ligula id, accumsan tempus nisi. Nam non semper arcu, facilisis egestas mauris. Ut pharetra ligula convallis orci hendrerit, id commodo quam pulvinar. In hac habitasse platea dictumst. Nulla tempor, orci in aliquet cursus, nunc urna imperdiet mi, eget condimentum purus nibh a augue. Vestibulum vehicula arcu sit amet rutrum elementum. Nam et lacus efficitur nisi auctor semper. Phasellus eget libero at nibh scelerisque ultricies vel quis justo. Cras eu risus nunc. + +Donec sit amet augue nec lectus molestie lacinia ut posuere ligula. Nunc mattis erat non nunc lobortis, ut sagittis purus convallis. Duis vel luctus risus, quis vestibulum sem. Suspendisse sit amet cursus dolor. Nulla dignissim mi ac ex feugiat, non pretium erat mattis. Ut ac vestibulum arcu. Curabitur rutrum facilisis dapibus. Praesent et porta dolor, vitae sagittis mi. Praesent ac metus vel lectus fringilla laoreet. Phasellus a ex ac dui pretium blandit. Cras sem quam, luctus non bibendum id, blandit eu ligula. Phasellus volutpat pharetra nisi ac mollis. + +Duis ultrices varius arcu non dictum. Nullam tortor libero, fermentum ac vehicula eu, tristique a lacus. Proin ut vestibulum purus. Ut sed ante congue leo blandit ultricies. Phasellus euismod vulputate felis, quis sodales mauris lobortis in. Donec eget elementum ante, quis porttitor ipsum. Praesent tristique lorem sit amet felis ornare accumsan. Donec vel sodales lorem. + +Phasellus mattis magna sapien, sed dignissim arcu faucibus vel. Nulla sollicitudin, ipsum non iaculis dignissim, est nulla ultrices magna, posuere tristique risus velit a erat. In convallis nisi vitae nunc rhoncus dictum. Sed vitae egestas ex. Nunc faucibus ullamcorper blandit. Nullam cursus, orci id rhoncus luctus, arcu nibh blandit quam, a lobortis ipsum erat sed justo. Phasellus porta sapien felis, sit amet scelerisque dolor pharetra eu. Aenean ullamcorper nibh a ipsum luctus iaculis. Mauris mollis magna ex, venenatis vulputate nisi vehicula at. Nullam fringilla nulla nec orci convallis, at hendrerit dolor vulputate. Vivamus porta quam ac justo sodales tempor. Donec rhoncus arcu eget lorem sagittis, eu tempus mauris luctus. + +Aenean hendrerit iaculis dui. Ut congue urna diam, a mattis neque euismod ut. Vestibulum ut scelerisque tortor. Donec semper tempor leo sed blandit. Fusce consectetur enim eu nisl cursus commodo. Morbi vehicula ex ac augue fermentum venenatis. Nam bibendum sem varius neque faucibus, at pellentesque est eleifend. Proin aliquet nibh mollis sapien aliquam, et lacinia nisi facilisis. Phasellus eget rhoncus arcu. Donec pharetra urna a scelerisque pretium. + +Cras commodo eu sapien eu commodo. Pellentesque ac ultrices orci. Aenean cursus velit ut orci dictum lacinia. Praesent commodo, mauris a fermentum ultrices, odio purus sollicitudin ex, et feugiat nunc libero eget erat. Donec quis libero odio. Nam fermentum mi enim, sed sollicitudin justo accumsan sit amet. Nulla sit amet eleifend nisi. Sed pretium eu eros ut tristique. Nam lobortis tellus et pellentesque aliquet. + +Nulla leo risus, auctor eget ultrices id, fringilla ut risus. Sed mauris lorem, blandit non pulvinar id, varius eget dui. Aliquam erat volutpat. Curabitur sit amet hendrerit purus, id vehicula ante. Proin nulla ipsum, pharetra sit amet rutrum id, dapibus sed enim. Integer ut neque id nulla mollis vehicula. Aenean bibendum finibus augue at ornare. Quisque sit amet interdum odio. In eu lorem enim. Pellentesque elementum elementum erat a dictum. Nam purus mauris, dictum fringilla lobortis non, suscipit in neque. Maecenas ullamcorper fringilla tellus, sit amet facilisis massa scelerisque tempus. In in aliquam urna. + +In efficitur iaculis eros, et finibus enim rutrum ac. Suspendisse porta cursus ex a accumsan. Mauris finibus, magna sed faucibus ultricies, dolor ante viverra velit, venenatis efficitur erat nisl eu tortor. Maecenas quis magna leo. Proin imperdiet massa ac justo luctus sodales. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc blandit varius porttitor. Ut luctus enim id massa blandit semper. + +Mauris pretium, erat vitae feugiat maximus, risus purus scelerisque ligula, at elementum massa tortor vel lacus. Donec aliquam justo sit amet libero blandit, eu condimentum dolor condimentum. Fusce semper elit at lorem mattis fermentum. Nunc dapibus nulla eu semper tristique. Cras et maximus urna. Sed porttitor et quam a pretium. Vivamus condimentum dolor sit amet placerat porta. Pellentesque in velit porttitor, laoreet sem sed, pellentesque enim. Ut nec elit metus. In hac habitasse platea dictumst. Phasellus ex ipsum, faucibus quis vulputate eget, dapibus vel mi. Nullam eros erat, facilisis nec lacus nec, rutrum porttitor lacus. + +Pellentesque rutrum nisi sed augue ornare aliquam. Vestibulum convallis, magna nec aliquam facilisis, leo elit auctor lorem, placerat tincidunt turpis elit et orci. Curabitur eget consequat nisi, quis imperdiet metus. Quisque dapibus metus sed luctus accumsan. Donec at rhoncus neque. Cras mollis sagittis iaculis. Donec efficitur lorem et ante cursus, quis consectetur risus commodo. Nunc euismod turpis non gravida lacinia. Nullam tincidunt magna eget pretium laoreet. Aliquam in odio in massa interdum dapibus. Nullam eu auctor nibh. Suspendisse eget porttitor ante. Sed fermentum commodo pulvinar. Fusce dictum, mi eget venenatis tempor, est erat scelerisque lacus, in semper eros mauris dignissim diam. In porta, arcu laoreet dictum finibus, ligula leo cursus ante, a euismod enim sem quis augue. + +Nullam vitae ex risus. Ut pretium tempus ligula. Nullam eu orci turpis. Aenean commodo urna at lacus tristique lobortis. Nulla dolor felis, interdum id magna non, lacinia posuere mauris. Cras et est sed arcu pharetra dictum. Mauris leo lacus, malesuada sollicitudin vestibulum at, placerat non ante. Fusce suscipit, lacus vel lobortis posuere, nisi elit porta massa, et egestas ligula turpis ullamcorper justo. Morbi sit amet lectus porttitor, aliquam eros at, interdum neque. Aliquam finibus diam pulvinar consectetur eleifend. Etiam libero ante, varius in mi sed, condimentum bibendum leo. Donec elementum congue malesuada. Etiam et diam vel eros semper egestas. + +In hac habitasse platea dictumst. Donec fermentum risus in augue accumsan, pretium commodo dolor consectetur. Proin ac metus vitae lacus dignissim viverra. Donec sodales tempor lorem, ac pharetra augue rhoncus sit amet. Aenean sed eleifend massa. Nam volutpat quis sem et lobortis. Curabitur eleifend fermentum erat, et dignissim massa tempus placerat. + +Integer bibendum mi in arcu sodales, non porttitor ante cursus. Donec sollicitudin facilisis tincidunt. Mauris blandit maximus dignissim. Aliquam quis nulla pellentesque, pretium arcu in, tempus magna. Nunc sed urna mi. Nulla facilisi. Curabitur ut nibh facilisis, dapibus nunc ac, mollis neque. Sed at dolor ac lacus eleifend rhoncus. Etiam eget blandit dui, sed molestie quam. Donec sit amet massa eget odio tincidunt elementum vel eget odio. Vivamus vel odio a tellus vehicula pulvinar vel et nisi. Fusce ut neque vitae mauris dictum molestie eget sit amet turpis. Morbi neque purus, porttitor sed lorem et, mollis dapibus felis. Phasellus iaculis mi nec lectus posuere, ultricies luctus libero consequat. Quisque sed fringilla velit. Fusce quis turpis mollis, sagittis tortor ut, malesuada eros. + +Nunc mollis leo dui, vitae eleifend nisi euismod id. Duis egestas porttitor laoreet. Integer tristique aliquet dolor nec imperdiet. Maecenas suscipit quis ligula vitae lacinia. Vivamus ac mi purus. Integer tincidunt semper eleifend. Morbi ut molestie enim. Fusce convallis purus sem. + +Praesent ac sem quam. Curabitur in dui libero. Donec ac lacus diam. Nam quis risus pharetra, efficitur nibh a, porta turpis. Aenean convallis tortor non sapien ullamcorper sollicitudin. Donec tellus arcu, posuere at lorem vel, consequat blandit massa. Nulla finibus quam justo, id consequat ex ultrices eu. Cras et elit ullamcorper, pellentesque urna sed, dapibus libero. Etiam molestie convallis lorem, et euismod nisl convallis nec. In ornare odio lectus, sit amet eleifend ex rutrum id. Aliquam quis leo lacinia, ultricies elit vitae, venenatis ex. Duis sit amet lorem dignissim, viverra tortor vel, aliquam neque. Fusce facilisis ipsum at velit accumsan, et ultricies turpis laoreet. + +Curabitur mollis, metus ac dignissim euismod, nisi sapien rhoncus mauris, vel porta risus mi vitae risus. Phasellus metus arcu, tristique ut sapien eu, tincidunt varius quam. Praesent mauris eros, consequat a dapibus ac, viverra eget dui. Donec euismod convallis nisl eget blandit. Sed scelerisque ligula et neque venenatis venenatis. Fusce maximus scelerisque pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras et maximus massa, vel blandit est. Phasellus et interdum ex. + +Pellentesque egestas tempus felis et luctus. Ut aliquet sed ipsum at ultrices. Suspendisse et justo at risus euismod vulputate. Vivamus quis hendrerit quam. Mauris eget commodo sapien. Ut nec erat ut ex tristique pulvinar. Duis vestibulum iaculis lorem. Nulla ornare purus a massa cursus, a egestas purus accumsan. Etiam eu mollis ipsum, id blandit eros. Nunc nec dolor in mauris congue vehicula. Cras hendrerit sapien orci. + +Pellentesque non purus sed urna pharetra ultricies vitae ut sapien. Ut purus ligula, tempor vitae erat eu, finibus fringilla sem. Phasellus laoreet est tortor, eget pharetra eros tincidunt at. Nullam dapibus eros a nisl accumsan sollicitudin. Nunc vestibulum enim sed justo molestie, sit amet ultricies mi rutrum. Aenean in libero non ligula faucibus facilisis sit amet eu turpis. Nam vel porttitor dui. Phasellus venenatis urna massa, et venenatis ligula dictum quis. Curabitur tincidunt nec lectus vel finibus. In hac habitasse platea dictumst. Aliquam erat volutpat. Mauris vel quam egestas, interdum libero ut, hendrerit diam. Maecenas dui orci, accumsan non tortor eu, faucibus aliquam diam. Maecenas ullamcorper metus sit amet porta consectetur. Vestibulum pretium vehicula lorem at placerat. Nunc et blandit nisl. + +Nulla ultrices ultricies est eu viverra. Aenean ut pulvinar metus. Etiam vulputate neque mauris, ut ultrices purus aliquam a. Aliquam luctus quam vel tincidunt semper. Vivamus aliquam dapibus nisl, vitae cursus dolor. Proin aliquet ante ante. Ut sapien ipsum, cursus id placerat vitae, feugiat faucibus massa. \ No newline at end of file diff --git a/jee7/pom.xml b/jee7/pom.xml index e633d2df3d..b5e0d80b6c 100644 --- a/jee7/pom.xml +++ b/jee7/pom.xml @@ -31,6 +31,7 @@ 1.0.0.Final 2.6 + 4.2.3.RELEASE @@ -136,6 +137,34 @@ standard 1.1.2 + + + javax.mvc + javax.mvc-api + 20160715 + + + org.glassfish.ozark + ozark + 20160715 + + + + org.springframework.security + spring-security-web + ${org.springframework.security.version} + + + + org.springframework.security + spring-security-config + ${org.springframework.security.version} + + + org.springframework.security + spring-security-taglibs + ${org.springframework.security.version} + @@ -378,4 +407,18 @@ + + + + bintray-mvc-spec-maven + bintray + http://dl.bintray.com/mvc-spec/maven + + true + + + false + + + diff --git a/jee7/src/main/java/com/baeldung/springSecurity/ApplicationConfig.java b/jee7/src/main/java/com/baeldung/springSecurity/ApplicationConfig.java new file mode 100755 index 0000000000..f8e7982253 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/springSecurity/ApplicationConfig.java @@ -0,0 +1,13 @@ +package com.baeldung.springSecurity; + +import javax.ws.rs.ApplicationPath; +import javax.ws.rs.core.Application; + +/** + * Application class required by JAX-RS. If you don't want to have any + * prefix in the URL, you can set the application path to "/". + */ +@ApplicationPath("/") +public class ApplicationConfig extends Application { + +} diff --git a/jee7/src/main/java/com/baeldung/springSecurity/SecurityWebApplicationInitializer.java b/jee7/src/main/java/com/baeldung/springSecurity/SecurityWebApplicationInitializer.java new file mode 100644 index 0000000000..e6a05f7b71 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/springSecurity/SecurityWebApplicationInitializer.java @@ -0,0 +1,10 @@ +package com.baeldung.springSecurity; + +import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; + +public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { + + public SecurityWebApplicationInitializer() { + super(SpringSecurityConfig.class); + } +} diff --git a/jee7/src/main/java/com/baeldung/springSecurity/SpringSecurityConfig.java b/jee7/src/main/java/com/baeldung/springSecurity/SpringSecurityConfig.java new file mode 100644 index 0000000000..bda8930f36 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/springSecurity/SpringSecurityConfig.java @@ -0,0 +1,46 @@ +package com.baeldung.springSecurity; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +@EnableWebSecurity +public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth + .inMemoryAuthentication() + .withUser("user1") + .password("user1Pass") + .roles("USER") + .and() + .withUser("admin") + .password("adminPass") + .roles("ADMIN"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .csrf() + .disable() + .authorizeRequests() + .antMatchers("/auth/login*") + .anonymous() + .antMatchers("/home/admin*") + .hasRole("ADMIN") + .anyRequest() + .authenticated() + .and() + .formLogin() + .loginPage("/auth/login") + .defaultSuccessUrl("/home", true) + .failureUrl("/auth/login?error=true") + .and() + .logout() + .logoutSuccessUrl("/auth/login"); + } +} \ No newline at end of file diff --git a/jee7/src/main/java/com/baeldung/springSecurity/controller/HomeController.java b/jee7/src/main/java/com/baeldung/springSecurity/controller/HomeController.java new file mode 100644 index 0000000000..53fd9f4b81 --- /dev/null +++ b/jee7/src/main/java/com/baeldung/springSecurity/controller/HomeController.java @@ -0,0 +1,28 @@ +package com.baeldung.springSecurity.controller; + +import javax.mvc.annotation.Controller; +import javax.ws.rs.GET; +import javax.ws.rs.Path; + +@Path("/home") +@Controller +public class HomeController { + + @GET + public String home() { + return "home.jsp"; + } + + @GET + @Path("/user") + public String admin() { + return "user.jsp"; + } + + @GET + @Path("/admin") + public String user() { + return "admin.jsp"; + } + +} diff --git a/jee7/src/main/java/com/baeldung/springSecurity/controller/LoginController.java b/jee7/src/main/java/com/baeldung/springSecurity/controller/LoginController.java new file mode 100644 index 0000000000..a7e7bb471d --- /dev/null +++ b/jee7/src/main/java/com/baeldung/springSecurity/controller/LoginController.java @@ -0,0 +1,15 @@ +package com.baeldung.springSecurity.controller; + +import javax.mvc.annotation.Controller; +import javax.ws.rs.GET; +import javax.ws.rs.Path; + +@Path("/auth/login") +@Controller +public class LoginController { + + @GET + public String login() { + return "login.jsp"; + } +} diff --git a/jee7/src/main/webapp/WEB-INF/views/admin.jsp b/jee7/src/main/webapp/WEB-INF/views/admin.jsp new file mode 100644 index 0000000000..b83ea09f5b --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/views/admin.jsp @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> + + + + +

Welcome to the ADMIN page

+ + ">Logout + + + \ No newline at end of file diff --git a/jee7/src/main/webapp/WEB-INF/views/home.jsp b/jee7/src/main/webapp/WEB-INF/views/home.jsp new file mode 100644 index 0000000000..c6e129c9ce --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/views/home.jsp @@ -0,0 +1,26 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> + + + + +

This is the body of the sample view

+ + + This text is only visible to a user +

+ ">Restricted Admin Page +

+
+ + + This text is only visible to an admin +
+ ">Admin Page +
+
+ + ">Logout + + + \ No newline at end of file diff --git a/jee7/src/main/webapp/WEB-INF/views/login.jsp b/jee7/src/main/webapp/WEB-INF/views/login.jsp new file mode 100644 index 0000000000..d6f2e56f3a --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/views/login.jsp @@ -0,0 +1,26 @@ + + + + +

Login

+ +
+ + + + + + + + + + + + + +
User:
Password:
+ +
+ + + \ No newline at end of file diff --git a/jee7/src/main/webapp/WEB-INF/views/user.jsp b/jee7/src/main/webapp/WEB-INF/views/user.jsp new file mode 100644 index 0000000000..11b8155da7 --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/views/user.jsp @@ -0,0 +1,12 @@ +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> +<%@ taglib prefix="security" uri="http://www.springframework.org/security/tags" %> + + + + +

Welcome to the Restricted Admin page

+ + ">Logout + + + \ No newline at end of file diff --git a/kotlin-mockito/README.md b/kotlin-mockito/README.md deleted file mode 100644 index 1408bc1ebd..0000000000 --- a/kotlin-mockito/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## Relevant articles: - -- [Introduction to the Kotlin Language](http://www.baeldung.com/kotlin) -- [A guide to the “when{}” block in Kotlin](http://www.baeldung.com/kotlin-when) -- [Comprehensive Guide to Null Safety in Kotlin](http://www.baeldung.com/kotlin-null-safety) -- [Kotlin Java Interoperability](http://www.baeldung.com/kotlin-java-interoperability) -- [Difference Between “==” and “===” in Kotlin](http://www.baeldung.com/kotlin-equality-operators) -- [Generics in Kotlin](http://www.baeldung.com/kotlin-generics) diff --git a/kotlin-mockito/pom.xml b/kotlin-mockito/pom.xml deleted file mode 100644 index abb43f4109..0000000000 --- a/kotlin-mockito/pom.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - 4.0.0 - - kotlin-mockito - 1.0-SNAPSHOT - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - org.jetbrains.kotlin - kotlin-stdlib - ${kotlin.version} - - - org.mockito - mockito-core - ${mockito.version} - test - - - junit - junit - ${junit.version} - test - - - com.nhaarman - mockito-kotlin - ${mockito-kotlin.version} - test - - - - - ${project.basedir}/src/main/kotlin - ${project.basedir}/src/test/kotlin - - - - kotlin-maven-plugin - org.jetbrains.kotlin - ${kotlin.version} - - - compile - - compile - - - - ${project.basedir}/src/main/kotlin - ${project.basedir}/src/main/java - - - - - test-compile - - test-compile - - - - ${project.basedir}/src/test/kotlin - ${project.basedir}/src/test/java - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler.version} - - - - default-compile - none - - - - default-testCompile - none - - - java-compile - compile - - compile - - - - java-test-compile - test-compile - - testCompile - - - - - - - - - 2.8.9 - 4.12 - 1.1.2-4 - 1.5.0 - 3.5.1 - - - diff --git a/kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java b/kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java deleted file mode 100644 index ef91db517b..0000000000 --- a/kotlin-mockito/src/main/java/com/baeldung/java/ArrayExample.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.java; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; - -public class ArrayExample { - - public int sumValues(int[] nums) { - int res = 0; - - for (int x:nums) { - res += x; - } - - return res; - } - - public void writeList() throws IOException { - File file = new File("E://file.txt"); - FileReader fr = new FileReader(file); - fr.close(); - } -} diff --git a/kotlin-mockito/src/main/java/com/baeldung/java/Customer.java b/kotlin-mockito/src/main/java/com/baeldung/java/Customer.java deleted file mode 100644 index 0156bf7b44..0000000000 --- a/kotlin-mockito/src/main/java/com/baeldung/java/Customer.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.java; - -public class Customer { - - private String firstName; - private String lastName; - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - -} diff --git a/kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java b/kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java deleted file mode 100644 index f405924cdf..0000000000 --- a/kotlin-mockito/src/main/java/com/baeldung/java/StringUtils.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.java; - -public class StringUtils { - public static String toUpperCase(String name) { - return name.toUpperCase(); - } -} diff --git a/kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java b/kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java deleted file mode 100644 index 370f24785a..0000000000 --- a/kotlin-mockito/src/test/java/com/baeldung/kotlin/JavaCallToKotlinUnitTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.kotlin; - -import org.junit.Test; - -import static org.junit.Assert.assertEquals; - -public class JavaCallToKotlinUnitTest { - @Test - public void givenKotlinClass_whenCallFromJava_shouldProduceResults() { - //when - int res = new MathematicsOperations().addTwoNumbers(2, 4); - - //then - assertEquals(6, res); - - } -} diff --git a/kotlin/pom.xml b/kotlin/pom.xml index 7b45e9809b..e88013ab69 100644 --- a/kotlin/pom.xml +++ b/kotlin/pom.xml @@ -1,9 +1,8 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - com.baeldung kotlin 1.0-SNAPSHOT @@ -13,6 +12,13 @@ 1.0.0-SNAPSHOT + + + central + http://jcenter.bintray.com + + + org.jetbrains.kotlin @@ -31,9 +37,19 @@ ${kotlin-reflect.version} test + + org.jetbrains.kotlinx + kotlinx-coroutines-core + ${kotlinx.version} + + + com.nhaarman + mockito-kotlin + ${mockito-kotlin.version} + test + - @@ -104,10 +120,12 @@ - 1.1.1 - 1.1.1 - 1.1.1 - 1.1.1 + 1.1.2 + 1.1.2 + 1.1.2 + 1.1.2 + 0.15 + 1.5.0 \ No newline at end of file diff --git a/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/BookService.kt b/kotlin/src/main/kotlin/com/baeldung/kotlin/mockito/BookService.kt similarity index 100% rename from kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/BookService.kt rename to kotlin/src/main/kotlin/com/baeldung/kotlin/mockito/BookService.kt diff --git a/kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/LendBookManager.kt b/kotlin/src/main/kotlin/com/baeldung/kotlin/mockito/LendBookManager.kt similarity index 100% rename from kotlin-mockito/src/main/kotlin/com/baeldung/kotlin/LendBookManager.kt rename to kotlin/src/main/kotlin/com/baeldung/kotlin/mockito/LendBookManager.kt diff --git a/kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesTest.kt b/kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesTest.kt new file mode 100644 index 0000000000..54fafdb3e1 --- /dev/null +++ b/kotlin/src/test/kotlin/com/baeldung/kotlin/CoroutinesTest.kt @@ -0,0 +1,179 @@ +package com.baeldung.kotlin + +import kotlinx.coroutines.experimental.* +import org.junit.Test +import java.util.concurrent.atomic.AtomicInteger +import kotlin.coroutines.experimental.buildSequence +import kotlin.system.measureTimeMillis +import kotlin.test.assertEquals +import kotlin.test.assertTrue + + +class CoroutinesTest { + + @Test + fun givenBuildSequence_whenTakeNElements_thenShouldReturnItInALazyWay() { + //given + val fibonacciSeq = buildSequence { + var a = 0 + var b = 1 + + yield(1) + + while (true) { + yield(a + b) + + val tmp = a + b + a = b + b = tmp + } + } + + //when + val res = fibonacciSeq.take(5).toList() + + //then + assertEquals(res, listOf(1, 1, 2, 3, 5)) + } + + @Test + fun givenLazySeq_whenTakeNElements_thenShouldReturnAllElements() { + //given + val lazySeq = buildSequence { + print("START ") + for (i in 1..5) { + yield(i) + print("STEP ") + } + print("END") + } + //when + val res = lazySeq.take(10).toList() + + //then + assertEquals(res, listOf(1, 2, 3, 4, 5)) + } + + @Test + fun givenAsyncCoroutine_whenStartIt_thenShouldExecuteItInTheAsyncWay() { + //given + val res = mutableListOf() + + //when + runBlocking { + val promise = launch(CommonPool) { expensiveComputation(res) } + res.add("Hello,") + promise.join() + } + + //then + assertEquals(res, listOf("Hello,", "word!")) + } + + + suspend fun expensiveComputation(res: MutableList) { + delay(1000L) + res.add("word!") + } + + @Test + fun givenHugeAmountOfCoroutines_whenStartIt_thenShouldExecuteItWithoutOutOfMemory() { + runBlocking { + //given + val counter = AtomicInteger(0) + val numberOfCoroutines = 100_000 + + //when + val jobs = List(numberOfCoroutines) { + launch(CommonPool) { + delay(1L) + counter.incrementAndGet() + } + } + jobs.forEach { it.join() } + + //then + assertEquals(counter.get(), numberOfCoroutines) + } + } + + @Test + fun givenCancellableJob_whenRequestForCancel_thenShouldQuit() { + runBlocking { + //given + val job = launch(CommonPool) { + while (isActive) { + println("is working") + } + } + + delay(1300L) + + //when + job.cancel() + + //then cancel successfully + + } + } + + @Test(expected = CancellationException::class) + fun givenAsyncAction_whenDeclareTimeout_thenShouldFinishWhenTimedOut() { + runBlocking { + withTimeout(1300L) { + repeat(1000) { i -> + println("Some expensive computation $i ...") + delay(500L) + } + } + } + } + + @Test + fun givenHaveTwoExpensiveAction_whenExecuteThemAsync_thenTheyShouldRunConcurrently() { + runBlocking { + val delay = 1000L + val time = measureTimeMillis { + //given + val one = async(CommonPool) { someExpensiveComputation(delay) } + val two = async(CommonPool) { someExpensiveComputation(delay) } + + //when + runBlocking { + one.await() + two.await() + } + } + + //then + assertTrue(time < delay * 2) + } + } + + @Test + fun givenTwoExpensiveAction_whenExecuteThemLazy_thenTheyShouldNotConcurrently() { + runBlocking { + val delay = 1000L + val time = measureTimeMillis { + //given + val one = async(CommonPool, CoroutineStart.LAZY) { someExpensiveComputation(delay) } + val two = async(CommonPool, CoroutineStart.LAZY) { someExpensiveComputation(delay) } + + //when + runBlocking { + one.await() + two.await() + } + } + + //then + assertTrue(time > delay * 2) + } + } + + suspend fun someExpensiveComputation(delayInMilliseconds: Long) { + delay(delayInMilliseconds) + } + + +} diff --git a/kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTest.kt b/kotlin/src/test/kotlin/com/baeldung/kotlin/mockito/LendBookManagerTest.kt similarity index 100% rename from kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTest.kt rename to kotlin/src/test/kotlin/com/baeldung/kotlin/mockito/LendBookManagerTest.kt diff --git a/kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTestMockitoKotlin.kt b/kotlin/src/test/kotlin/com/baeldung/kotlin/mockito/LendBookManagerTestMockitoKotlin.kt similarity index 100% rename from kotlin-mockito/src/test/kotlin/com/baeldung/kotlin/LendBookManagerTestMockitoKotlin.kt rename to kotlin/src/test/kotlin/com/baeldung/kotlin/mockito/LendBookManagerTestMockitoKotlin.kt diff --git a/libraries/README.md b/libraries/README.md index 81d716cf48..293e11cf0c 100644 --- a/libraries/README.md +++ b/libraries/README.md @@ -17,6 +17,7 @@ - [Introduction to HikariCP](http://www.baeldung.com/hikaricp) - [Serenity BDD with Spring and JBehave](http://www.baeldung.com/serenity-spring-jbehave) - [Locality-Sensitive Hashing in Java Using Java-LSH](http://www.baeldung.com/locality-sensitive-hashing) +- [Apache Commons Collections OrderedMap](http://www.baeldung.com/apache-commons-ordered-map) The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own. diff --git a/libraries/pom.xml b/libraries/pom.xml index 406887e4b0..ee5fb2f977 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> parent-modules com.baeldung @@ -59,7 +59,7 @@ ${basedir}/datanucleus.properties ${basedir}/log4j.properties true - false + false @@ -70,32 +70,6 @@ - - org.asciidoctor - asciidoctor-maven-plugin - 1.5.5 - - - org.asciidoctor - asciidoctorj-pdf - 1.5.0-alpha.15 - - - - - output-pdf - generate-resources - - process-asciidoc - - - - - src/docs/asciidoc - target/docs/asciidoc - pdf - -
@@ -107,15 +81,20 @@ ${cglib.version} - commons-beanutils - commons-beanutils - ${commons-beanutils.version} - + commons-beanutils + commons-beanutils + ${commons-beanutils.version} + org.apache.commons commons-lang3 ${commons-lang.version} + + org.apache.commons + commons-text + ${commons-text.version} + org.apache.commons commons-collections4 @@ -216,12 +195,6 @@ serenity-core ${serenity.version} test - - - org.asciidoctor - asciidoctor-java-integration - - net.serenity-bdd @@ -277,7 +250,7 @@ org.datanucleus datanucleus-maven-plugin 5.0.2 - + org.datanucleus datanucleus-xml @@ -329,11 +302,11 @@ 1.4.195 - pl.pragmatists - JUnitParams - ${jUnitParams.version} - test - + pl.pragmatists + JUnitParams + ${jUnitParams.version} + test + org.quartz-scheduler quartz @@ -365,17 +338,7 @@ netty-all ${netty.version} - - org.asciidoctor - asciidoctorj - 1.5.4 - - - org.asciidoctor - asciidoctorj-pdf - 1.5.0-alpha.11 - - + org.apache.opennlp opennlp-tools @@ -392,12 +355,24 @@ java-lsh ${java-lsh.version} + + au.com.dius + pact-jvm-consumer-junit_2.11 + ${pact.version} + test + + + org.codehaus.groovy + groovy-all + 2.4.10 + 0.7.0 3.2.4 3.5 - 1.9.3 + 1.1 + 1.9.3 1.9.2 1.2 3.21.0-GA @@ -421,6 +396,7 @@ 4.1 4.12 0.10 + 3.5.0 diff --git a/libraries/src/main/java/com/baeldung/commons/beanutils/CourseEntity.java b/libraries/src/main/java/com/baeldung/commons/beanutils/CourseEntity.java new file mode 100644 index 0000000000..4a0b59404d --- /dev/null +++ b/libraries/src/main/java/com/baeldung/commons/beanutils/CourseEntity.java @@ -0,0 +1,35 @@ +package com.baeldung.commons.beanutils; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CourseEntity { + private String name; + private List codes; + private Map students = new HashMap(); + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getCodes() { + return codes; + } + + public void setCodes(List codes) { + this.codes = codes; + } + + public void setStudent(String id, Student student) { + students.put(id, student); + } + + public Student getStudent(String enrolledId) { + return students.get(enrolledId); + } +} diff --git a/libraries/src/main/java/com/baeldung/commons/beanutils/CourseService.java b/libraries/src/main/java/com/baeldung/commons/beanutils/CourseService.java index f519365dab..1f566a782a 100644 --- a/libraries/src/main/java/com/baeldung/commons/beanutils/CourseService.java +++ b/libraries/src/main/java/com/baeldung/commons/beanutils/CourseService.java @@ -3,32 +3,38 @@ package com.baeldung.commons.beanutils; import java.lang.reflect.InvocationTargetException; import java.util.List; +import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; public class CourseService { public static void setValues(Course course, String name, List codes) - throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { // Setting the simple properties PropertyUtils.setSimpleProperty(course, "name", name); PropertyUtils.setSimpleProperty(course, "codes", codes); } public static void setIndexedValue(Course course, int codeIndex, String code) - throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { // Setting the indexed properties PropertyUtils.setIndexedProperty(course, "codes[" + codeIndex + "]", code); } public static void setMappedValue(Course course, String enrollId, Student student) - throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { // Setting the mapped properties PropertyUtils.setMappedProperty(course, "enrolledStudent(" + enrollId + ")", student); } public static String getNestedValue(Course course, String enrollId, String nestedPropertyName) - throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { return (String) PropertyUtils.getNestedProperty( course, "enrolledStudent(" + enrollId + ")." + nestedPropertyName); } + + public static void copyProperties(Course course, CourseEntity courseEntity) + throws IllegalAccessException, InvocationTargetException { + BeanUtils.copyProperties(course, courseEntity); + } } diff --git a/libraries/src/main/java/com/baeldung/commons/collectionutil/Address.java b/libraries/src/main/java/com/baeldung/commons/collectionutil/Address.java new file mode 100644 index 0000000000..a1e231ec85 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/commons/collectionutil/Address.java @@ -0,0 +1,47 @@ +package com.baeldung.commons.collectionutil; + +public class Address { + + private String locality; + private String city; + private String zip; + + public String getLocality() { + return locality; + } + + public void setLocality(String locality) { + this.locality = locality; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getZip() { + return zip; + } + + public void setZip(String zip) { + this.zip = zip; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Address [locality=").append(locality).append(", city=").append(city).append(", zip=").append(zip).append("]"); + return builder.toString(); + } + + public Address(String locality, String city, String zip) { + super(); + this.locality = locality; + this.city = city; + this.zip = zip; + } + +} \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/commons/collectionutil/Customer.java b/libraries/src/main/java/com/baeldung/commons/collectionutil/Customer.java new file mode 100644 index 0000000000..e22f13861e --- /dev/null +++ b/libraries/src/main/java/com/baeldung/commons/collectionutil/Customer.java @@ -0,0 +1,118 @@ +package com.baeldung.commons.collectionutil; + +public class Customer implements Comparable { + + private Integer id; + private String name; + private Long phone; + private String locality; + private String city; + private String zip; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getPhone() { + return phone; + } + + public void setPhone(Long phone) { + this.phone = phone; + } + + public String getLocality() { + return locality; + } + + public void setLocality(String locality) { + this.locality = locality; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getZip() { + return zip; + } + + public void setZip(String zip) { + this.zip = zip; + } + + public Customer(Integer id, String name, Long phone, String locality, String city, String zip) { + super(); + this.id = id; + this.name = name; + this.phone = phone; + this.locality = locality; + this.city = city; + this.zip = zip; + } + + public Customer(Integer id, String name, Long phone) { + super(); + this.id = id; + this.name = name; + this.phone = phone; + } + + public Customer(String name) { + super(); + this.name = name; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + Customer other = (Customer) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + public int compareTo(Customer o) { + return this.name.compareTo(o.getName()); + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Customer [id=").append(id).append(", name=").append(name).append(", phone=").append(phone).append("]"); + return builder.toString(); + } + +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/commons/beanutils/CourseServiceTest.java b/libraries/src/test/java/com/baeldung/commons/beanutils/CourseServiceTest.java index d2ae6d7d55..5407477a00 100644 --- a/libraries/src/test/java/com/baeldung/commons/beanutils/CourseServiceTest.java +++ b/libraries/src/test/java/com/baeldung/commons/beanutils/CourseServiceTest.java @@ -8,31 +8,46 @@ import org.junit.Assert; import org.junit.Test; public class CourseServiceTest { - + @Test public void givenCourse_whenSetValuesUsingPropertyUtil_thenReturnSetValues() - throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { Course course = new Course(); String name = "Computer Science"; List codes = Arrays.asList("CS", "CS01"); CourseService.setValues(course, name, codes); - + Assert.assertEquals(name, course.getName()); Assert.assertEquals(2, course.getCodes().size()); Assert.assertEquals("CS", course.getCodes().get(0)); - + CourseService.setIndexedValue(course, 1, "CS02"); Assert.assertEquals("CS02", course.getCodes().get(1)); - + Student student = new Student(); String studentName = "Joe"; student.setName(studentName); - + CourseService.setMappedValue(course, "ST-1", student); Assert.assertEquals(student, course.getEnrolledStudent("ST-1")); - + String accessedStudentName = CourseService.getNestedValue(course, "ST-1", "name"); Assert.assertEquals(studentName, accessedStudentName); } + @Test + public void givenCopyProperties_whenCopyCourseToCourseEntity_thenCopyPropertyWithSameName() + throws IllegalAccessException, InvocationTargetException, NoSuchMethodException { + Course course = new Course(); + course.setName("Computer Science"); + course.setCodes(Arrays.asList("CS")); + course.setEnrolledStudent("ST-1", new Student()); + + CourseEntity courseEntity = new CourseEntity(); + + CourseService.copyProperties(course, courseEntity); + Assert.assertEquals(course.getName(), courseEntity.getName()); + Assert.assertEquals(course.getCodes(), courseEntity.getCodes()); + Assert.assertNull(courseEntity.getStudent("ST-1")); + } } diff --git a/libraries/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java b/libraries/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java new file mode 100644 index 0000000000..64a3932fb3 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/commons/collections/BidiMapUnitTest.java @@ -0,0 +1,49 @@ +package com.baeldung.commons.collections; + +import org.apache.commons.collections4.BidiMap; +import org.apache.commons.collections4.bidimap.DualHashBidiMap; +import org.apache.commons.collections4.bidimap.DualLinkedHashBidiMap; +import org.apache.commons.collections4.bidimap.DualTreeBidiMap; +import org.apache.commons.collections4.bidimap.TreeBidiMap; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Created by smatt on 03/07/2017. + */ +public class BidiMapUnitTest { + + @Test + public void givenKeyValue_whenPut_thenAddEntryToMap() { + BidiMap map = new DualHashBidiMap<>(); + map.put("key1", "value1"); + map.put("key2", "value2"); + assertEquals(map.size(), 2); + } + + @Test + public void whenInverseBidiMap_thenInverseKeyValue() { + BidiMap map = new DualHashBidiMap<>(); + map.put("key1", "value1"); + map.put("key2", "value2"); + BidiMap rMap = map.inverseBidiMap(); + assertTrue(rMap.containsKey("value1") && rMap.containsKey("value2")); + } + + @Test + public void givenValue_whenRemoveValue_thenRemoveMatchingMapEntry() { + BidiMap map = new DualHashBidiMap<>(); + map.put("key1", "value1"); + map.put("key2", "value2"); + map.removeValue("value2"); + assertFalse(map.containsKey("key2")); + } + + @Test + public void givenValue_whenGetKey_thenMappedKey() { + BidiMap map = new DualHashBidiMap<>(); + map.put("key1", "value1"); + assertEquals(map.getKey("value1"), "key1"); + } +} diff --git a/libraries/src/test/java/com/baeldung/commons/collections/CollectionUtilsGuideTest.java b/libraries/src/test/java/com/baeldung/commons/collections/CollectionUtilsGuideTest.java new file mode 100644 index 0000000000..9166865484 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/commons/collections/CollectionUtilsGuideTest.java @@ -0,0 +1,113 @@ +package com.baeldung.commons.collections; + + +import com.baeldung.commons.collectionutil.Address; +import com.baeldung.commons.collectionutil.Customer; +import org.apache.commons.collections4.Closure; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.Predicate; +import org.apache.commons.collections4.Transformer; +import org.junit.Before; +import org.junit.Test; + +import java.util.*; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class CollectionUtilsGuideTest { + + + Customer customer1 = new Customer(1, "Daniel", 123456l, "locality1", "city1", "1234"); + Customer customer4 = new Customer(4, "Bob", 456789l, "locality4", "city4", "4567"); + List list1, list2, list3, linkedList1; + + @Before + public void setup() { + Customer customer2 = new Customer(2, "Fredrik", 234567l, "locality2", "city2", "2345"); + Customer customer3 = new Customer(3, "Kyle", 345678l, "locality3", "city3", "3456"); + Customer customer5 = new Customer(5, "Cat", 567890l, "locality5", "city5", "5678"); + Customer customer6 = new Customer(6, "John", 678901l, "locality6", "city6", "6789"); + + list1 = Arrays.asList(customer1, customer2, customer3); + list2 = Arrays.asList(customer4, customer5, customer6); + list3 = Arrays.asList(customer1, customer2); + + linkedList1 = new LinkedList<>(list1); + } + + @Test + public void givenList_whenAddIgnoreNull_thenNoNullAdded() { + CollectionUtils.addIgnoreNull(list1, null); + assertFalse(list1.contains(null)); + } + + @Test + public void givenTwoSortedLists_whenCollated_thenSorted() { + List sortedList = CollectionUtils.collate(list1, list2); + + assertEquals(6, sortedList.size()); + assertTrue(sortedList.get(0).getName().equals("Bob")); + assertTrue(sortedList.get(2).getName().equals("Daniel")); + } + + @Test + public void givenListOfCustomers_whenTransformed_thenListOfAddress() { + Collection
addressCol = CollectionUtils.collect(list1, customer -> { + return new Address(customer.getLocality(), customer.getCity(), customer.getZip()); + }); + + List
addressList = new ArrayList<>(addressCol); + assertTrue(addressList.size() == 3); + assertTrue(addressList.get(0).getLocality().equals("locality1")); + } + + @Test + public void givenCustomerList_whenFiltered_thenCorrectSize() { + + boolean isModified = CollectionUtils.filter(linkedList1, customer -> Arrays.asList("Daniel","Kyle").contains(customer.getName())); + + //filterInverse does the opposite. It removes the element from the list if the Predicate returns true + //select and selectRejected work the same way except that they do not remove elements from the given collection and return a new collection + + assertTrue(isModified && linkedList1.size() == 2); + } + + @Test + public void givenNonEmptyList_whenCheckedIsNotEmpty_thenTrue() { + List emptyList = new ArrayList<>(); + List nullList = null; + + //Very handy at times where we want to check if a collection is not null and not empty too. + //isNotEmpty does the opposite. Handy because using ! operator on isEmpty makes it missable while reading + assertTrue(CollectionUtils.isNotEmpty(list1)); + assertTrue(CollectionUtils.isEmpty(nullList)); + assertTrue(CollectionUtils.isEmpty(emptyList)); + } + + @Test + public void givenCustomerListAndASubcollection_whenChecked_thenTrue() { + assertTrue(CollectionUtils.isSubCollection(list3, list1)); + } + + @Test + public void givenTwoLists_whenIntersected_thenCheckSize() { + Collection intersection = CollectionUtils.intersection(list1, list3); + assertTrue(intersection.size() == 2); + } + + @Test + public void givenTwoLists_whenSubtracted_thenCheckElementNotPresentInA() { + Collection result = CollectionUtils.subtract(list1, list3); + assertFalse(result.contains(customer1)); + } + + @Test + public void givenTwoLists_whenUnioned_thenCheckElementPresentInResult() { + Collection union = CollectionUtils.union(list1, list2); + assertTrue(union.contains(customer1)); + assertTrue(union.contains(customer4)); + } + +} \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java b/libraries/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java index 5392daea3b..6b2777c289 100644 --- a/libraries/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java +++ b/libraries/src/test/java/com/baeldung/commons/collections/orderedmap/OrderedMapUnitTest.java @@ -1,5 +1,10 @@ package com.baeldung.commons.collections.orderedmap; +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.List; + import org.apache.commons.collections4.OrderedMap; import org.apache.commons.collections4.OrderedMapIterator; import org.apache.commons.collections4.map.LinkedMap; @@ -7,11 +12,6 @@ import org.apache.commons.collections4.map.ListOrderedMap; import org.junit.Before; import org.junit.Test; -import java.util.ArrayList; -import java.util.List; - -import static org.junit.Assert.assertEquals; - public class OrderedMapUnitTest { private String[] names = {"Emily", "Mathew", "Rose", "John", "Anna"}; @@ -45,11 +45,12 @@ public class OrderedMapUnitTest { // as defined in the constant arrays of names and ages: OrderedMapIterator runnersIterator = this.runnersLinkedMap.mapIterator(); - for (int i = 0; runnersIterator.hasNext(); i++) { + int i = 0; + while (runnersIterator.hasNext()) { runnersIterator.next(); - assertEquals(runnersIterator.getKey(), this.names[i]); assertEquals(runnersIterator.getValue(), this.ages[i]); + i++; } } @@ -59,11 +60,12 @@ public class OrderedMapUnitTest { // as defined in the constant arrays of names and ages: OrderedMapIterator runnersIterator = this.runnersListOrderedMap.mapIterator(); - for (int i = 0; runnersIterator.hasNext(); i++) { + int i = 0; + while (runnersIterator.hasNext()) { runnersIterator.next(); - assertEquals(runnersIterator.getKey(), this.names[i]); assertEquals(runnersIterator.getValue(), this.ages[i]); + i++; } } @@ -73,9 +75,11 @@ public class OrderedMapUnitTest { // as defined in the constant arrays of names and ages String name = this.runnersLinkedMap.firstKey(); - for (int i = 0; name != null; i++) { + int i = 0; + while (name != null) { assertEquals(name, this.names[i]); name = this.runnersLinkedMap.nextKey(name); + i++; } } @@ -85,9 +89,11 @@ public class OrderedMapUnitTest { // as defined in the constant arrays of names and ages String name = this.runnersListOrderedMap.firstKey(); - for (int i = 0; name != null; i++) { + int i = 0; + while (name != null) { assertEquals(name, this.names[i]); name = this.runnersListOrderedMap.nextKey(name); + i++; } } @@ -97,9 +103,11 @@ public class OrderedMapUnitTest { // as defined in the constant arrays of names and ages String name = this.runnersLinkedMap.lastKey(); - for (int i = RUNNERS_COUNT - 1; name != null; i--) { + int i = RUNNERS_COUNT - 1; + while (name != null) { assertEquals(name, this.names[i]); name = this.runnersLinkedMap.previousKey(name); + i--; } } @@ -109,9 +117,11 @@ public class OrderedMapUnitTest { // as defined in the constant arrays of names and ages String name = this.runnersListOrderedMap.lastKey(); - for (int i = RUNNERS_COUNT - 1; name != null; i--) { + int i = RUNNERS_COUNT - 1; + while (name != null) { assertEquals(name, this.names[i]); name = this.runnersListOrderedMap.previousKey(name); + i--; } } diff --git a/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java b/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java new file mode 100644 index 0000000000..2952938cd9 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java @@ -0,0 +1,82 @@ +package com.baeldung.pact; + + +import au.com.dius.pact.consumer.Pact; +import au.com.dius.pact.consumer.PactProviderRuleMk2; +import au.com.dius.pact.consumer.PactVerification; +import au.com.dius.pact.consumer.dsl.PactDslWithProvider; +import au.com.dius.pact.model.RequestResponsePact; +import org.junit.Rule; +import org.junit.Test; +import org.springframework.http.*; +import org.springframework.web.client.RestTemplate; + +import java.util.HashMap; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +public class PactConsumerDrivenContractUnitTest { + + @Rule + public PactProviderRuleMk2 mockProvider + = new PactProviderRuleMk2("test_provider", "localhost", 8080, this); + + @Pact(consumer = "test_consumer") + public RequestResponsePact createPact(PactDslWithProvider builder) { + Map headers = new HashMap(); + headers.put("Content-Type", "application/json"); + + return builder + .given("test GET ") + .uponReceiving("GET REQUEST") + .path("/") + .method("GET") + .willRespondWith() + .status(200) + .headers(headers) + .body("{\"condition\": true, \"name\": \"tom\"}") + .given("test POST") + .uponReceiving("POST REQUEST") + .method("POST") + .headers(headers) + .body("{\"name\": \"Michael\"}") + .path("/create") + .willRespondWith() + .status(201) + .headers(headers) + .body("") + .toPact(); + } + + + @Test + @PactVerification() + public void givenGet_whenSendRequest_shouldReturn200WithProperHeaderAndBody() { + //when + ResponseEntity response + = new RestTemplate().getForEntity(mockProvider.getUrl(), String.class); + + //then + assertThat(response.getStatusCode().value()).isEqualTo(200); + assertThat(response.getHeaders().get("Content-Type").contains("application/json")).isTrue(); + assertThat(response.getBody()).contains("condition", "true", "name", "tom"); + + //and + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + String jsonBody = "{\"name\": \"Michael\"}"; + + //when + ResponseEntity postResponse = new RestTemplate().exchange( + mockProvider.getUrl() + "/create", + HttpMethod.POST, + new HttpEntity<>(jsonBody, httpHeaders), + String.class + ); + + //then + assertThat(postResponse.getStatusCode().value()).isEqualTo(201); + } + +} diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java b/libraries/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java index bb25186cee..82dbad0f11 100644 --- a/libraries/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java +++ b/libraries/src/test/java/com/baeldung/serenity/spring/AdderClassDirtiesContextIntegrationTest.java @@ -14,23 +14,21 @@ import org.springframework.test.context.ContextConfiguration; import static com.baeldung.serenity.spring.RandomNumberUtil.randomInt; import static org.springframework.test.annotation.DirtiesContext.ClassMode.AFTER_CLASS; -/** - * @author aiet - */ - @RunWith(Suite.class) @Suite.SuiteClasses({ - AdderClassDirtiesContextIntegrationTest.DirtiesContextTest.class, AdderClassDirtiesContextIntegrationTest.AnotherDirtiesContextTest.class - }) + AdderClassDirtiesContextIntegrationTest.DirtiesContextTest.class, AdderClassDirtiesContextIntegrationTest.AnotherDirtiesContextTest.class +}) public class AdderClassDirtiesContextIntegrationTest { @RunWith(SerenityRunner.class) @ContextConfiguration(classes = AdderService.class) public static abstract class Base { - @Steps AdderServiceSteps adderServiceSteps; + @Steps + AdderServiceSteps adderServiceSteps; - @ClassRule public static SpringIntegrationClassRule springIntegrationClassRule = new SpringIntegrationClassRule(); + @ClassRule + public static SpringIntegrationClassRule springIntegrationClassRule = new SpringIntegrationClassRule(); void whenAccumulate_thenSummedUp() { adderServiceSteps.whenAccumulate(); diff --git a/libraries/src/test/java/com/baeldung/serenity/spring/AdderTest.java b/libraries/src/test/java/com/baeldung/serenity/spring/AdderTest.java index a57b924211..771f389cb1 100644 --- a/libraries/src/test/java/com/baeldung/serenity/spring/AdderTest.java +++ b/libraries/src/test/java/com/baeldung/serenity/spring/AdderTest.java @@ -6,13 +6,11 @@ import org.jbehave.core.annotations.BeforeStory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; -/** - * @author aiet - */ -@ContextConfiguration(classes = { AdderController.class, AdderService.class }) +@ContextConfiguration(classes = {AdderController.class, AdderService.class}) public class AdderTest extends SerenityStory { - @Autowired private AdderService adderService; + @Autowired + private AdderService adderService; @BeforeStory public void init() { diff --git a/libraries/src/test/java/com/baeldung/text/DiffTest.java b/libraries/src/test/java/com/baeldung/text/DiffTest.java new file mode 100644 index 0000000000..95370013b6 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/DiffTest.java @@ -0,0 +1,18 @@ +package com.baeldung.text; + +import org.apache.commons.text.diff.EditScript; +import org.apache.commons.text.diff.StringsComparator; +import org.junit.Assert; +import org.junit.Test; + +public class DiffTest { + + @Test + public void whenEditScript_thenCorrect() { + StringsComparator cmp = new StringsComparator("ABCFGH", "BCDEFG"); + EditScript script = cmp.getScript(); + int mod = script.getModifications(); + + Assert.assertEquals(4, mod); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java b/libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java new file mode 100644 index 0000000000..80ca0cfbba --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/LongestCommonSubsequenceTest.java @@ -0,0 +1,25 @@ +package com.baeldung.text; + +import org.apache.commons.text.similarity.LongestCommonSubsequence; +import org.apache.commons.text.similarity.LongestCommonSubsequenceDistance; +import org.junit.Assert; +import org.junit.Test; + +public class LongestCommonSubsequenceTest { + + @Test + public void whenCompare_thenCorrect() { + LongestCommonSubsequence lcs = new LongestCommonSubsequence(); + int countLcs = lcs.apply("New York", "New Hampshire"); + + Assert.assertEquals(5, countLcs); + } + + @Test + public void whenCalculateDistance_thenCorrect() { + LongestCommonSubsequenceDistance lcsd = new LongestCommonSubsequenceDistance(); + int countLcsd = lcsd.apply("New York", "New Hampshire"); + + Assert.assertEquals(11, countLcsd); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java b/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java new file mode 100644 index 0000000000..a8dbaadc5a --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/StrBuilderTest.java @@ -0,0 +1,24 @@ +package com.baeldung.text; + +import org.apache.commons.text.StrBuilder; +import org.junit.Assert; +import org.junit.Test; + +public class StrBuilderTest { + + @Test + public void whenReplaced_thenCorrect() { + StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); + strBuilder.replaceAll("example", "new"); + + Assert.assertEquals(new StrBuilder("new StrBuilder!"), strBuilder); + } + + @Test + public void whenCleared_thenEmpty() { + StrBuilder strBuilder = new StrBuilder("example StrBuilder!"); + strBuilder.clear(); + + Assert.assertEquals(new StrBuilder(""), strBuilder); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java b/libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java new file mode 100644 index 0000000000..24e6ff59c8 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/StrSubstitutorTest.java @@ -0,0 +1,23 @@ +package com.baeldung.text; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.commons.text.StrSubstitutor; +import org.junit.Assert; +import org.junit.Test; + +public class StrSubstitutorTest { + + @Test + public void whenSubstituted_thenCorrect() { + Map substitutes = new HashMap<>(); + substitutes.put("name", "John"); + substitutes.put("college", "University of Stanford"); + String templateString = "My name is ${name} and I am a student at the ${college}."; + StrSubstitutor sub = new StrSubstitutor(substitutes); + String result = sub.replace(templateString); + + Assert.assertEquals("My name is John and I am a student at the University of Stanford.", result); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java b/libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java new file mode 100644 index 0000000000..5a52bfd0db --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/UnicodeEscaperTest.java @@ -0,0 +1,16 @@ +package com.baeldung.text; + +import org.apache.commons.text.translate.UnicodeEscaper; +import org.junit.Assert; +import org.junit.Test; + +public class UnicodeEscaperTest { + + @Test + public void whenTranslate_thenCorrect() { + UnicodeEscaper ue = UnicodeEscaper.above(0); + String result = ue.translate("ABCD"); + + Assert.assertEquals("\\u0041\\u0042\\u0043\\u0044", result); + } +} diff --git a/libraries/src/test/java/com/baeldung/text/WordUtilsTest.java b/libraries/src/test/java/com/baeldung/text/WordUtilsTest.java new file mode 100644 index 0000000000..b9268d67b3 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/text/WordUtilsTest.java @@ -0,0 +1,23 @@ +package com.baeldung.text; + +import org.apache.commons.text.WordUtils; +import org.junit.Assert; +import org.junit.Test; + +public class WordUtilsTest { + + @Test + public void whenCapitalized_thenCorrect() { + String toBeCapitalized = "to be capitalized!"; + String result = WordUtils.capitalize(toBeCapitalized); + + Assert.assertEquals("To Be Capitalized!", result); + } + + @Test + public void whenContainsWords_thenCorrect() { + boolean containsWords = WordUtils.containsAllWords("String to search", "to", "search"); + + Assert.assertTrue(containsWords); + } +} diff --git a/metrics/pom.xml b/metrics/pom.xml index 1053c66ff5..794c53b157 100644 --- a/metrics/pom.xml +++ b/metrics/pom.xml @@ -15,6 +15,7 @@ 3.1.2 3.1.0 + 0.12.16 @@ -43,6 +44,11 @@ javax.servlet-api ${dep.ver.servlet} + + com.netflix.servo + servo-core + ${netflix.servo.ver} + diff --git a/metrics/src/test/java/com/baeldung/metrics/servo/MetricAnnotationTest.java b/metrics/src/test/java/com/baeldung/metrics/servo/MetricAnnotationTest.java new file mode 100644 index 0000000000..3d6a73912f --- /dev/null +++ b/metrics/src/test/java/com/baeldung/metrics/servo/MetricAnnotationTest.java @@ -0,0 +1,56 @@ +package com.baeldung.metrics.servo; + +import com.netflix.servo.Metric; +import com.netflix.servo.annotations.DataSourceType; +import com.netflix.servo.annotations.Monitor; +import com.netflix.servo.annotations.MonitorTags; +import com.netflix.servo.monitor.Monitors; +import com.netflix.servo.tag.BasicTag; +import com.netflix.servo.tag.BasicTagList; +import com.netflix.servo.tag.TagList; +import org.junit.Test; + +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.atomic.AtomicInteger; + +import static com.google.common.collect.Lists.newArrayList; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.hamcrest.CoreMatchers.hasItem; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +/** + * @author aiet + */ +public class MetricAnnotationTest extends MetricTestBase { + + @Monitor(name = "integerCounter", type = DataSourceType.COUNTER, description = "Total number of update operations.") + private final AtomicInteger updateCount = new AtomicInteger(0); + + @MonitorTags private TagList tags = new BasicTagList(newArrayList(new BasicTag("tag-key", "tag-value"))); + + @Test + public void givenAnnotatedMonitor_whenUpdated_thenDataCollected() throws Exception { + Monitors.registerObject("testObject", this); + assertTrue(Monitors.isObjectRegistered("testObject", this)); + + updateCount.incrementAndGet(); + updateCount.incrementAndGet(); + SECONDS.sleep(1); + + List> metrics = observer.getObservations(); + System.out.println(metrics); + assertThat(metrics, hasSize(greaterThanOrEqualTo(1))); + + Iterator> metricIterator = metrics.iterator(); + //skip first empty observation + metricIterator.next(); + while (metricIterator.hasNext()) { + assertThat(metricIterator.next(), hasItem(hasProperty("config", hasProperty("name", is("integerCounter"))))); + } + + } +} diff --git a/metrics/src/test/java/com/baeldung/metrics/servo/MetricObserverTest.java b/metrics/src/test/java/com/baeldung/metrics/servo/MetricObserverTest.java new file mode 100644 index 0000000000..14d3c2646f --- /dev/null +++ b/metrics/src/test/java/com/baeldung/metrics/servo/MetricObserverTest.java @@ -0,0 +1,70 @@ +package com.baeldung.metrics.servo; + +import com.netflix.servo.DefaultMonitorRegistry; +import com.netflix.servo.Metric; +import com.netflix.servo.monitor.BasicGauge; +import com.netflix.servo.monitor.DynamicCounter; +import com.netflix.servo.monitor.Gauge; +import com.netflix.servo.monitor.MonitorConfig; +import org.junit.Test; + +import java.util.Iterator; +import java.util.List; + +import static com.netflix.servo.annotations.DataSourceType.GAUGE; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +/** + * @author aiet + */ +public class MetricObserverTest extends MetricTestBase { + + @Test + public void givenMetrics_whenRegister_thenMonitored() throws InterruptedException { + Gauge gauge = new BasicGauge<>(MonitorConfig + .builder("test") + .build(), () -> 2.32); + assertEquals(2.32, gauge.getValue(), 0.01); + + DefaultMonitorRegistry + .getInstance() + .register(gauge); + + for (int i = 0; i < 2; i++) { + SECONDS.sleep(1); + } + + List> metrics = observer.getObservations(); + assertThat(metrics, hasSize(greaterThanOrEqualTo(2))); + + Iterator> metricIterator = metrics.iterator(); + //skip first empty observation + metricIterator.next(); + while (metricIterator.hasNext()) { + assertThat(metricIterator.next(), hasItem(allOf(hasProperty("config", hasProperty("tags", hasItem(GAUGE))), hasProperty("value", is(2.32))))); + } + + } + + @Test + public void givenMetrics_whenRegisterDynamically_thenMonitored() throws Exception { + for (int i = 0; i < 2; i++) { + DynamicCounter.increment("monitor-name", "tag-key", "tag-value"); + SECONDS.sleep(1); + } + + List> metrics = observer.getObservations(); + assertThat(metrics, hasSize(greaterThanOrEqualTo(2))); + + Iterator> metricIterator = metrics.iterator(); + //skip first empty observation + metricIterator.next(); + while (metricIterator.hasNext()) { + assertThat(metricIterator.next(), hasItem(hasProperty("value", greaterThanOrEqualTo(1.0)))); + } + } + +} diff --git a/metrics/src/test/java/com/baeldung/metrics/servo/MetricPollerTest.java b/metrics/src/test/java/com/baeldung/metrics/servo/MetricPollerTest.java new file mode 100644 index 0000000000..4a9a77efde --- /dev/null +++ b/metrics/src/test/java/com/baeldung/metrics/servo/MetricPollerTest.java @@ -0,0 +1,50 @@ +package com.baeldung.metrics.servo; + +import com.netflix.servo.Metric; +import com.netflix.servo.publish.*; +import org.junit.Test; + +import java.util.List; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static java.util.stream.Collectors.toList; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertThat; + +/** + * @author aiet + */ +public class MetricPollerTest { + + @Test + public void givenJvmPoller_whenMonitor_thenDataCollected() throws Exception { + MemoryMetricObserver observer = new MemoryMetricObserver(); + PollRunnable pollRunnable = new PollRunnable(new JvmMetricPoller(), new BasicMetricFilter(true), observer); + PollScheduler + .getInstance() + .start(); + PollScheduler + .getInstance() + .addPoller(pollRunnable, 1, SECONDS); + + SECONDS.sleep(1); + + PollScheduler + .getInstance() + .stop(); + List> metrics = observer.getObservations(); + assertThat(metrics, hasSize(greaterThanOrEqualTo(1))); + + List args = metrics + .stream() + .filter(m -> !m.isEmpty()) + .flatMap(ms -> ms + .stream() + .map(m -> m + .getConfig() + .getName())) + .collect(toList()); + assertThat(args, hasItems("loadedClassCount", "initUsage", "maxUsage", "threadCount")); + } + +} diff --git a/metrics/src/test/java/com/baeldung/metrics/servo/MetricTestBase.java b/metrics/src/test/java/com/baeldung/metrics/servo/MetricTestBase.java new file mode 100644 index 0000000000..86a9d201e8 --- /dev/null +++ b/metrics/src/test/java/com/baeldung/metrics/servo/MetricTestBase.java @@ -0,0 +1,40 @@ +package com.baeldung.metrics.servo; + +import com.netflix.servo.publish.*; +import org.junit.After; +import org.junit.Before; + +import static java.util.concurrent.TimeUnit.SECONDS; + +/** + * @author aiet + */ +abstract class MetricTestBase { + + MemoryMetricObserver observer; + + @Before + public void prepareScheduler() { + System.setProperty("servo.pollers", "1000"); + observer = new MemoryMetricObserver(); + PollScheduler + .getInstance() + .start(); + MetricFilter metricFilter = new BasicMetricFilter(true); + PollRunnable task = new PollRunnable(new MonitorRegistryMetricPoller(), metricFilter, observer); + PollScheduler + .getInstance() + .addPoller(task, 1, SECONDS); + } + + @After + public void stopScheduler() { + if (PollScheduler + .getInstance() + .isStarted()) { + PollScheduler + .getInstance() + .stop(); + } + } +} diff --git a/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java b/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java new file mode 100644 index 0000000000..68ba23244d --- /dev/null +++ b/metrics/src/test/java/com/baeldung/metrics/servo/MetricTypeTest.java @@ -0,0 +1,220 @@ +package com.baeldung.metrics.servo; + +import com.netflix.servo.monitor.*; +import com.netflix.servo.stats.StatsConfig; +import org.junit.Ignore; +import org.junit.Test; + +import java.util.Map; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static java.util.stream.Collectors.toMap; +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; + +/** + * Unit test for simple App. + */ +public class MetricTypeTest { + + @Test + public void givenDefaultCounter_whenManipulate_thenCountValid() { + Counter counter = Monitors.newCounter("test"); + assertEquals("counter should start with 0", 0, counter + .getValue() + .intValue()); + counter.increment(); + assertEquals("counter should have increased by 1", 1, counter + .getValue() + .intValue()); + counter.increment(-1); + assertEquals("counter should have decreased by 1", 0, counter + .getValue() + .intValue()); + } + + @Test + public void givenBasicCounter_whenManipulate_thenCountValid() { + Counter counter = new BasicCounter(MonitorConfig + .builder("test") + .build()); + assertEquals("counter should start with 0", 0, counter + .getValue() + .intValue()); + counter.increment(); + assertEquals("counter should have increased by 1", 1, counter + .getValue() + .intValue()); + counter.increment(-1); + assertEquals("counter should have decreased by 1", 0, counter + .getValue() + .intValue()); + } + + @Ignore + @Test + public void givenStepCounter_whenManipulate_thenRateValid() throws Exception { + System.setProperty("servo.pollers", "1000"); + Counter counter = new StepCounter(MonitorConfig + .builder("test") + .build()); + assertEquals("counter should start with rate 0.0", 0.0, counter.getValue()); + + counter.increment(); + SECONDS.sleep(1); + + assertEquals("counter rate should have increased to 1.0", 1.0, counter.getValue()); + } + + @Test + public void givenPeakRateCounter_whenManipulate_thenPeakRateReturn() throws Exception { + Counter counter = new PeakRateCounter(MonitorConfig + .builder("test") + .build()); + assertEquals("counter should start with 0", 0, counter + .getValue() + .intValue()); + + counter.increment(); + SECONDS.sleep(1); + counter.increment(); + counter.increment(); + + assertEquals("peak rate should have be 2", 2, counter + .getValue() + .intValue()); + } + + @Test + public void givenTimer_whenExecuteTask_thenTimerUpdated() throws Exception { + BasicTimer timer = new BasicTimer(MonitorConfig + .builder("test") + .build(), SECONDS); + + Stopwatch stopwatch = timer.start(); + SECONDS.sleep(1); + timer.record(2, SECONDS); + stopwatch.stop(); + + assertEquals("timer should count 1 second", 1, timer + .getValue() + .intValue()); + assertEquals("timer should count 3 seconds in total", 3.0, timer.getTotalTime(), 0.01); + assertEquals("timer should record 2 updates", 2, timer + .getCount() + .intValue()); + + assertEquals("timer should have max 2", 2, timer.getMax(), 0.01); + } + + @Test + public void givenBucketTimer_whenRecord_thenStatsCalculated() throws Exception { + BucketTimer timer = new BucketTimer(MonitorConfig + .builder("test") + .build(), new BucketConfig.Builder() + .withBuckets(new long[] { 2L, 5L }) + .withTimeUnit(SECONDS) + .build(), SECONDS); + timer.record(3); + timer.record(6); + + assertEquals("timer should count 9 seconds in total", 9, timer + .getTotalTime() + .intValue()); + + final Map metricMap = timer + .getMonitors() + .stream() + .filter(monitor -> monitor + .getConfig() + .getTags() + .containsKey("servo.bucket")) + .collect(toMap(monior -> getMonitorTagValue(monior, "servo.bucket"), monitor -> (Long) monitor.getValue())); + + assertThat(metricMap, allOf(hasEntry("bucket=2s", 0L), hasEntry("bucket=5s", 1L), hasEntry("bucket=overflow", 1L))); + } + + private static String getMonitorTagValue(Monitor monitor, String tagKey) { + return monitor + .getConfig() + .getTags() + .getTag(tagKey) + .getValue(); + } + + @Test + public void givenStatsTimer_whenExecuteTask_thenStatsCalculated() throws Exception { + System.setProperty("netflix.servo", "1000"); + StatsTimer timer = new StatsTimer(MonitorConfig + .builder("test") + .build(), new StatsConfig.Builder() + .withComputeFrequencyMillis(2000) + .withPercentiles(new double[] { 99.0, 95.0, 90.0 }) + .withPublishMax(true) + .withPublishMin(true) + .withPublishCount(true) + .withPublishMean(true) + .withPublishStdDev(true) + .withPublishVariance(true) + .build(), SECONDS); + + Stopwatch stopwatch = timer.start(); + SECONDS.sleep(1); + timer.record(3, SECONDS); + stopwatch.stop(); + + stopwatch = timer.start(); + timer.record(6, SECONDS); + SECONDS.sleep(2); + stopwatch.stop(); + + assertEquals("timer should count 12 seconds in total", 12, timer.getTotalTime()); + assertEquals("timer should count 12 seconds in total", 12, timer.getTotalMeasurement()); + assertEquals("timer should record 4 updates", 4, timer.getCount()); + assertEquals("stats timer value time-cost/update should be 2", 3, timer + .getValue() + .intValue()); + + final Map metricMap = timer + .getMonitors() + .stream() + .collect(toMap(monitor -> getMonitorTagValue(monitor, "statistic"), monitor -> (Number) monitor.getValue())); + + assertThat(metricMap.keySet(), containsInAnyOrder("count", "totalTime", "max", "min", "variance", "stdDev", "avg", "percentile_99", "percentile_95", "percentile_90")); + } + + @Test + public void givenGauge_whenCall_thenValueReturned() { + Gauge gauge = new BasicGauge<>(MonitorConfig + .builder("test") + .build(), () -> 2.32); + assertEquals(2.32, gauge.getValue(), 0.01); + } + + @Test + public void givenMaxGauge_whenUpdateMultipleTimes_thenMaxReturned() { + MaxGauge gauge = new MaxGauge(MonitorConfig + .builder("test") + .build()); + assertEquals(0, gauge + .getValue() + .intValue()); + + gauge.update(4); + assertEquals(4, gauge.getCurrentValue(0)); + + gauge.update(1); + assertEquals(4, gauge.getCurrentValue(0)); + } + + @Test + public void givenInformationalMonitor_whenRecord_thenInformationCollected() throws Exception { + BasicInformational informational = new BasicInformational(MonitorConfig + .builder("test") + .build()); + informational.setValue("information collected"); + assertEquals("information collected", informational.getValue()); + } + +} diff --git a/pom.xml b/pom.xml index 91d7abd5ca..818d131359 100644 --- a/pom.xml +++ b/pom.xml @@ -88,14 +88,12 @@ junit5 jws - kotlin - libraries log-mdc log4j log4j2 lombok - + mapstruct metrics mesos-marathon @@ -123,7 +121,7 @@ selenium-junit-testng solr spark-java - spring-5 + spring-5-mvc spring-akka spring-amqp @@ -142,7 +140,6 @@ spring-data-couchbase-2 spring-data-dynamodb spring-data-elasticsearch - spring-data-javaslang spring-data-mongodb spring-data-neo4j spring-data-redis @@ -194,10 +191,12 @@ spring-security-mvc-login spring-security-mvc-persisted-remember-me spring-security-mvc-session + spring-security-mvc-socket spring-security-rest-basic-auth spring-security-rest-custom spring-security-rest-full spring-security-rest + spring-security-sso spring-security-x509 spring-session spring-sleuth @@ -228,6 +227,7 @@ spring-drools drools liquibase + spring-boot-property-exp diff --git a/spring-5/pom.xml b/spring-5/pom.xml index 4b373923ef..c2c565aef6 100644 --- a/spring-5/pom.xml +++ b/spring-5/pom.xml @@ -39,6 +39,11 @@ org.springframework.boot spring-boot-starter-webflux + + org.projectreactor + reactor-spring + 1.0.1.RELEASE + diff --git a/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java b/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java new file mode 100644 index 0000000000..3a2e1b1a75 --- /dev/null +++ b/spring-5/src/main/java/com/baeldung/web/reactive/client/WebClientController.java @@ -0,0 +1,86 @@ +package com.baeldung.web.reactive.client; + +import org.reactivestreams.Publisher; +import org.reactivestreams.Subscriber; +import org.springframework.http.*; +import org.springframework.http.client.reactive.ClientHttpRequest; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.reactive.function.BodyInserter; +import org.springframework.web.reactive.function.BodyInserters; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Mono; + +import java.net.URI; +import java.nio.charset.Charset; +import java.time.ZonedDateTime; +import java.util.Collections; + +@RestController +public class WebClientController { + + @ResponseStatus(HttpStatus.OK) + @GetMapping("/resource") + public void getResource() { + } + + public void demonstrateWebClient() { + // request + WebClient.UriSpec request1 = createWebClientWithServerURLAndDefaultValues().method(HttpMethod.POST); + WebClient.UriSpec request2 = createWebClientWithServerURLAndDefaultValues().post(); + + // request body specifications + WebClient.RequestBodySpec uri1 = createWebClientWithServerURLAndDefaultValues().method(HttpMethod.POST).uri("/resource"); + WebClient.RequestBodySpec uri2 = createWebClientWithServerURLAndDefaultValues().post().uri(URI.create("/resource")); + + // request header specification + WebClient.RequestHeadersSpec requestSpec1 = uri1.body(BodyInserters.fromPublisher(Mono.just("data"), String.class)); + WebClient.RequestHeadersSpec requestSpec2 = uri2.body(BodyInserters.fromObject("data")); + + // inserters + BodyInserter, ReactiveHttpOutputMessage> inserter1 = BodyInserters + .fromPublisher(Subscriber::onComplete, String.class); + + + LinkedMultiValueMap map = new LinkedMultiValueMap<>(); + map.add("key1", "value1"); + map.add("key2", "value2"); + + BodyInserter, ClientHttpRequest> inserter2 = BodyInserters.fromMultipartData(map); + BodyInserter inserter3 = BodyInserters.fromObject("body"); + + // responses + WebClient.ResponseSpec response1 = uri1 + .body(inserter3) + .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .accept(MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML) + .acceptCharset(Charset.forName("UTF-8")) + .ifNoneMatch("*") + .ifModifiedSince(ZonedDateTime.now()) + .retrieve(); + WebClient.ResponseSpec response2 = requestSpec2.retrieve(); + + } + + private WebClient createWebClient() { + return WebClient.create(); + } + + private WebClient createWebClientWithServerURL() { + return WebClient.create("http://localhost:8081"); + } + + private WebClient createWebClientWithServerURLAndDefaultValues() { + return WebClient + .builder() + .baseUrl("http://localhost:8081") + .defaultCookie("cookieKey", "cookieValue") + .defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) + .defaultUriVariables(Collections.singletonMap("url", "http://localhost:8080")) + .build(); + } + +} diff --git a/spring-5/src/test/java/com/baeldung/web/client/WebTestClientTest.java b/spring-5/src/test/java/com/baeldung/web/client/WebTestClientTest.java new file mode 100644 index 0000000000..4127f22c01 --- /dev/null +++ b/spring-5/src/test/java/com/baeldung/web/client/WebTestClientTest.java @@ -0,0 +1,58 @@ +package com.baeldung.web.client; + +import com.baeldung.Spring5Application; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.web.reactive.server.WebTestClient; +import org.springframework.web.reactive.function.server.RequestPredicates; +import org.springframework.web.reactive.function.server.RouterFunction; +import org.springframework.web.reactive.function.server.RouterFunctions; +import org.springframework.web.reactive.function.server.ServerResponse; +import org.springframework.web.server.WebHandler; +import reactor.core.publisher.Mono; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = Spring5Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +public class WebTestClientTest { + + @LocalServerPort + private int port; + + private final RouterFunction ROUTER_FUNCTION = RouterFunctions.route( + RequestPredicates.GET("/resource"), + request -> ServerResponse.ok().build() + ); + private final WebHandler WEB_HANDLER = exchange -> Mono.empty(); + + @Test + public void testWebTestClientWithServerWebHandler() { + WebTestClient.bindToWebHandler(WEB_HANDLER).build(); + } + + @Test + public void testWebTestClientWithRouterFunction() { + WebTestClient + .bindToRouterFunction(ROUTER_FUNCTION) + .build().get().uri("/resource") + .exchange() + .expectStatus().isOk() + .expectBody().isEmpty(); + } + + @Test + public void testWebTestClientWithServerURL() { + WebTestClient + .bindToServer() + .baseUrl("http://localhost:" + port) + .build() + .get() + .uri("/resource") + .exchange() + .expectStatus().is4xxClientError() + .expectBody(); + } + +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/Greeting.java b/spring-all/src/main/java/com/baeldung/contexts/Greeting.java new file mode 100644 index 0000000000..99b473c6c4 --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/Greeting.java @@ -0,0 +1,19 @@ +package com.baeldung.contexts; + +public class Greeting { + + private String message; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public String toString() { + return "Greeting [message=" + message + "]"; + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java b/spring-all/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java new file mode 100644 index 0000000000..c3ff90cf39 --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/config/ApplicationInitializer.java @@ -0,0 +1,35 @@ +package com.baeldung.contexts.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +@Configuration +public class ApplicationInitializer implements WebApplicationInitializer { + + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + AnnotationConfigWebApplicationContext rootContext = new AnnotationConfigWebApplicationContext(); + rootContext.register(RootApplicationConfig.class); + servletContext.addListener(new ContextLoaderListener(rootContext)); + + AnnotationConfigWebApplicationContext normalWebAppContext = new AnnotationConfigWebApplicationContext(); + normalWebAppContext.register(NormalWebAppConfig.class); + ServletRegistration.Dynamic normal = servletContext.addServlet("normal-webapp", new DispatcherServlet(normalWebAppContext)); + normal.setLoadOnStartup(1); + normal.addMapping("/api/*"); + + AnnotationConfigWebApplicationContext secureWebAppContext = new AnnotationConfigWebApplicationContext(); + secureWebAppContext.register(SecureWebAppConfig.class); + ServletRegistration.Dynamic secure = servletContext.addServlet("secure-webapp", new DispatcherServlet(secureWebAppContext)); + secure.setLoadOnStartup(1); + secure.addMapping("/s/api/*"); + } + +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java b/spring-all/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java new file mode 100644 index 0000000000..c250cedc49 --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/config/NormalWebAppConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.contexts.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.view.InternalResourceViewResolver; +import org.springframework.web.servlet.view.JstlView; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = { "com.baeldung.contexts.normal" }) +public class NormalWebAppConfig extends WebMvcConfigurerAdapter { + + @Bean + public ViewResolver viewResolver() { + InternalResourceViewResolver resolver = new InternalResourceViewResolver(); + resolver.setPrefix("/WEB-INF/view/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java b/spring-all/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java new file mode 100644 index 0000000000..59821076d2 --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/config/RootApplicationConfig.java @@ -0,0 +1,19 @@ +package com.baeldung.contexts.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.contexts.Greeting; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.contexts.services" }) +public class RootApplicationConfig { + + @Bean + public Greeting greeting() { + Greeting greeting = new Greeting(); + greeting.setMessage("Hello World !!"); + return greeting; + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java b/spring-all/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java new file mode 100644 index 0000000000..f499a4ceba --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/config/SecureWebAppConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.contexts.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.view.InternalResourceViewResolver; +import org.springframework.web.servlet.view.JstlView; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = { "com.baeldung.contexts.secure" }) +public class SecureWebAppConfig extends WebMvcConfigurerAdapter { + + @Bean + public ViewResolver viewResolver() { + InternalResourceViewResolver resolver = new InternalResourceViewResolver(); + resolver.setPrefix("/WEB-INF/secure/view/"); + resolver.setSuffix(".jsp"); + resolver.setViewClass(JstlView.class); + return resolver; + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java b/spring-all/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java new file mode 100644 index 0000000000..dd70ce8e97 --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/normal/HelloWorldController.java @@ -0,0 +1,41 @@ +package com.baeldung.contexts.normal; + +import java.util.Arrays; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.ContextLoader; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.servlet.ModelAndView; + +import com.baeldung.contexts.services.ApplicationContextUtilService; +import com.baeldung.contexts.services.GreeterService; + +@Controller +public class HelloWorldController { + + @Autowired + WebApplicationContext webApplicationContext; + + @Autowired + private GreeterService greeterService; + + private void processContext() { + WebApplicationContext rootContext = ContextLoader.getCurrentWebApplicationContext(); + + System.out.println("root context : " + rootContext); + System.out.println("root context Beans: " + Arrays.asList(rootContext.getBeanDefinitionNames())); + + System.out.println("context : " + webApplicationContext); + System.out.println("context Beans: " + Arrays.asList(webApplicationContext.getBeanDefinitionNames())); + } + + @RequestMapping(path = "/welcome") + public ModelAndView helloWorld() { + processContext(); + String message = "
" + "

" + greeterService.greet() + "

"; + return new ModelAndView("welcome", "message", message); + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java b/spring-all/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java new file mode 100644 index 0000000000..b46ace91ae --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/secure/HelloWorldSecureController.java @@ -0,0 +1,49 @@ +package com.baeldung.contexts.secure; + +import java.util.Arrays; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.context.ApplicationContext; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.context.ContextLoader; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.servlet.ModelAndView; + +import com.baeldung.contexts.services.ApplicationContextUtilService; +import com.baeldung.contexts.services.GreeterService; + +@Controller +public class HelloWorldSecureController { + + @Autowired + WebApplicationContext webApplicationContext; + + @Autowired + private GreeterService greeterService; + + @Autowired + @Qualifier("contextAware") + private ApplicationContextUtilService contextUtilService; + + private void processContext() { + ApplicationContext context = contextUtilService.getApplicationContext(); + System.out.println("application context : " + context); + System.out.println("application context Beans: " + Arrays.asList(context.getBeanDefinitionNames())); + + WebApplicationContext rootContext = ContextLoader.getCurrentWebApplicationContext(); + System.out.println("context : " + rootContext); + System.out.println("context Beans: " + Arrays.asList(rootContext.getBeanDefinitionNames())); + + System.out.println("context : " + webApplicationContext); + System.out.println("context Beans: " + Arrays.asList(webApplicationContext.getBeanDefinitionNames())); + } + + @RequestMapping(path = "/welcome") + public ModelAndView helloWorld() { + processContext(); + String message = "
" + "

" + greeterService.greet() + "

"; + return new ModelAndView("welcome", "message", message); + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java b/spring-all/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java new file mode 100644 index 0000000000..332cb10620 --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/services/ApplicationContextUtilService.java @@ -0,0 +1,21 @@ +package com.baeldung.contexts.services; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Service; + +@Service(value="contextAware") +public class ApplicationContextUtilService implements ApplicationContextAware { + + private ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + + public ApplicationContext getApplicationContext() { + return applicationContext; + } +} diff --git a/spring-all/src/main/java/com/baeldung/contexts/services/GreeterService.java b/spring-all/src/main/java/com/baeldung/contexts/services/GreeterService.java new file mode 100644 index 0000000000..f68b2fe5af --- /dev/null +++ b/spring-all/src/main/java/com/baeldung/contexts/services/GreeterService.java @@ -0,0 +1,19 @@ +package com.baeldung.contexts.services; + +import javax.annotation.Resource; + +import org.springframework.stereotype.Service; + +import com.baeldung.contexts.Greeting; + +@Service +public class GreeterService { + + @Resource + private Greeting greeting; + + public String greet(){ + return greeting.getMessage(); + } + +} diff --git a/spring-all/src/main/webapp/WEB-INF/index.jsp b/spring-all/src/main/webapp/WEB-INF/index.jsp new file mode 100644 index 0000000000..c38169bb95 --- /dev/null +++ b/spring-all/src/main/webapp/WEB-INF/index.jsp @@ -0,0 +1,5 @@ + + +

Hello World!

+ + diff --git a/spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml b/spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml new file mode 100644 index 0000000000..d358e2d62b --- /dev/null +++ b/spring-all/src/main/webapp/WEB-INF/normal-webapp-servlet.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/rootApplicationContext.xml b/spring-all/src/main/webapp/WEB-INF/rootApplicationContext.xml new file mode 100644 index 0000000000..cd79c64e79 --- /dev/null +++ b/spring-all/src/main/webapp/WEB-INF/rootApplicationContext.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml b/spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml new file mode 100644 index 0000000000..5bca724670 --- /dev/null +++ b/spring-all/src/main/webapp/WEB-INF/secure-webapp-servlet.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp b/spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp new file mode 100644 index 0000000000..49ca0f8e87 --- /dev/null +++ b/spring-all/src/main/webapp/WEB-INF/secure/view/welcome.jsp @@ -0,0 +1,11 @@ + + + Spring Web Contexts + + +
+
+ Secure Web Application : ${message} +
+ + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/view/welcome.jsp b/spring-all/src/main/webapp/WEB-INF/view/welcome.jsp new file mode 100644 index 0000000000..6a82fb1d5a --- /dev/null +++ b/spring-all/src/main/webapp/WEB-INF/view/welcome.jsp @@ -0,0 +1,11 @@ + + + Spring Web Contexts + + +
+
+ Normal Web Application : ${message} +
+ + \ No newline at end of file diff --git a/spring-all/src/main/webapp/WEB-INF/web.xml b/spring-all/src/main/webapp/WEB-INF/web.xml index 3ac9e9ed8c..2050f28f81 100644 --- a/spring-all/src/main/webapp/WEB-INF/web.xml +++ b/spring-all/src/main/webapp/WEB-INF/web.xml @@ -3,7 +3,48 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> - + + + + contextConfigLocation + /WEB-INF/rootApplicationContext.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + + + secure-webapp + + org.springframework.web.servlet.DispatcherServlet + + 1 + + contextConfigLocation + /WEB-INF/secure-webapp-servlet.xml + + + + secure-webapp + /s/api/* + + + + + normal-webapp + + org.springframework.web.servlet.DispatcherServlet + + 1 + + + normal-webapp + /api/* + + test-mvc diff --git a/spring-all/src/main/webapp/index.jsp b/spring-all/src/main/webapp/index.jsp new file mode 100644 index 0000000000..c38169bb95 --- /dev/null +++ b/spring-all/src/main/webapp/index.jsp @@ -0,0 +1,5 @@ + + +

Hello World!

+ + diff --git a/spring-boot-property-exp/README.md b/spring-boot-property-exp/README.md new file mode 100644 index 0000000000..5b2552ade7 --- /dev/null +++ b/spring-boot-property-exp/README.md @@ -0,0 +1,2 @@ +## The Module Holds Sources for the Following Articles + - [Automatic Property Expansion with Spring Boot] (http://www.baeldung.com/property-expansion-spring-boot) \ No newline at end of file diff --git a/spring-boot-property-exp/pom.xml b/spring-boot-property-exp/pom.xml new file mode 100644 index 0000000000..f554bb5b99 --- /dev/null +++ b/spring-boot-property-exp/pom.xml @@ -0,0 +1,32 @@ + + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + 4.0.0 + + com.baeldung + spring-boot-property-exp + 0.0.1-SNAPSHOT + + pom + + spring-boot-property-exp + http://maven.apache.org + + + UTF-8 + + + + property-exp-default + property-exp-custom + + + + diff --git a/spring-boot-property-exp/property-exp-custom/pom.xml b/spring-boot-property-exp/property-exp-custom/pom.xml new file mode 100644 index 0000000000..234404a6c0 --- /dev/null +++ b/spring-boot-property-exp/property-exp-custom/pom.xml @@ -0,0 +1,60 @@ + + + spring-boot-property-exp + com.baeldung + 0.0.1-SNAPSHOT + + 4.0.0 + + com.baeldung + property-exp-custom + 0.0.1-SNAPSHOT + jar + + property-exp-custom + http://maven.apache.org + + + UTF-8 + Custom Property Value + + + + + org.springframework.boot + spring-boot-starter + 1.5.4.RELEASE + + + + + + + ${basedir}/src/main/resources + true + + **/application*.yml + **/application*.yaml + **/application*.properties + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.7 + + + @ + + true + + + + + + + diff --git a/spring-boot-property-exp/property-exp-custom/src/main/java/com/baeldung/propertyexpansion/SpringBootPropertyExpansionApp.java b/spring-boot-property-exp/property-exp-custom/src/main/java/com/baeldung/propertyexpansion/SpringBootPropertyExpansionApp.java new file mode 100644 index 0000000000..d88dbf0123 --- /dev/null +++ b/spring-boot-property-exp/property-exp-custom/src/main/java/com/baeldung/propertyexpansion/SpringBootPropertyExpansionApp.java @@ -0,0 +1,13 @@ +package com.baeldung.propertyexpansion; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringBootPropertyExpansionApp { + + public static void main(String[] args) { + SpringApplication.run(SpringBootPropertyExpansionApp.class, args); + } + +} diff --git a/spring-boot-property-exp/property-exp-custom/src/main/java/com/baeldung/propertyexpansion/components/PropertyLoggerBean.java b/spring-boot-property-exp/property-exp-custom/src/main/java/com/baeldung/propertyexpansion/components/PropertyLoggerBean.java new file mode 100644 index 0000000000..920996e120 --- /dev/null +++ b/spring-boot-property-exp/property-exp-custom/src/main/java/com/baeldung/propertyexpansion/components/PropertyLoggerBean.java @@ -0,0 +1,37 @@ +package com.baeldung.propertyexpansion.components; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +public class PropertyLoggerBean { + + private static final Logger log = LoggerFactory.getLogger(PropertyLoggerBean.class); + + @Value("${expanded.project.version}") + private String projectVersion; + + @Value("${expanded.project.property}") + private String projectProperty; + + + @PostConstruct + public void printProperties() { + + log.info(""); + log.info("Properties logged in a bean:"); + log.info("==========================================="); + log.info("Project version : {}", projectVersion); + log.info("Project property : {}", projectProperty); + log.info("==========================================="); + log.info(""); + + } + + + +} diff --git a/spring-boot-property-exp/property-exp-custom/src/main/resources/application.properties b/spring-boot-property-exp/property-exp-custom/src/main/resources/application.properties new file mode 100644 index 0000000000..545fcc2e46 --- /dev/null +++ b/spring-boot-property-exp/property-exp-custom/src/main/resources/application.properties @@ -0,0 +1,2 @@ +expanded.project.version=${project.version} +expanded.project.property=${custom.property} \ No newline at end of file diff --git a/spring-boot-property-exp/property-exp-custom/src/main/resources/banner.txt b/spring-boot-property-exp/property-exp-custom/src/main/resources/banner.txt new file mode 100644 index 0000000000..2b5d7f1ee5 --- /dev/null +++ b/spring-boot-property-exp/property-exp-custom/src/main/resources/banner.txt @@ -0,0 +1,21 @@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@########@@@@@@@@@@@@@@@@@@@@@@@@...@@@@@@@@@:..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@#. @@@@@* *@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@#o @@@@@* @@@@@* @@@:*.*@@@@@@@: *8@@@ @@@@&:.#@. @o**@@@@**:@o*o@@:.:@@@@@:.o#@&*:@@@@ +@@@@@@@@@@@@* @@@@@* 8888 8@ @@@8 #@o 8@# .@ @@* :. @* @@@@ @. : &@ ** .@@@@ +@@@@@@@@@@. @ o@@@@@* *@@@o::& .* 8@@@@. @@ 8@@@@. @* @@@@ @. @@@& * @@@@# .@@@@ +@@@@@@@@@& @ @@@@@@* @@@@@@ 8 @@@@ .. o&&&&&&& @@ #@@@@. @* @@@@ @. @@@# * @@@@@ .@@@@ +@@@@@@@@@ @@o @@@@@@@* oooo* 8 @@@& @* @@@ # 88. 88. *& o#: @. @@@# *@ &#& .@@@@ +@@@@@@@@# @@@8 @@@@@@@* .*@@@#. *@@ @@@& :#@@@o .@@: *&@8 @o o@@: @. @@@# *@@#. :8# .@@@@ +@@@@@@@@@ @@@@ &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@# o@@@@ @@@@@ +@@@@@& &@@@@ 8@@@@@@@@@8&8@@@@@#8#@@@o8@#&@@o&@@@&@@8@@&@@@@88@@8#@8&@@##@@@@@@#8@@#8@@88@@@@@ *@@@@@@@ +@@@# #@@@@#. @@@@@@@@@@@@@8@@8#o@&#@@@@o.@o*@@*.@@@.@&:8o8*@@@8&@@#@@@8@@@@8@#@@@8&@@@@@@#@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + +These values are expanded in banner.txt +========================================================== +expanded.project.version value is ${expanded.project.version} + +expanded.project.property value is ${expanded.project.property} +========================================================== \ No newline at end of file diff --git a/spring-boot-property-exp/property-exp-default/build.gradle b/spring-boot-property-exp/property-exp-default/build.gradle new file mode 100644 index 0000000000..f3c5f4a378 --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/build.gradle @@ -0,0 +1,50 @@ +buildscript { + repositories { + mavenCentral() + } + dependencies { + classpath("org.springframework.boot:spring-boot-gradle-plugin:1.5.2.RELEASE") + } +} + +apply plugin: 'java' +apply plugin: 'maven' +apply plugin: 'idea' +apply plugin: 'org.springframework.boot' + +group = 'com.baeldung' +version = '0.0.1-SNAPSHOT' + +description = """spring-boot""" + +sourceCompatibility = 1.8 +targetCompatibility = 1.8 +tasks.withType(JavaCompile) { + options.encoding = 'UTF-8' +} + +repositories { + mavenCentral() +} + +import org.apache.tools.ant.filters.ReplaceTokens +processResources { + with copySpec { + from 'src/main/resources' + include '**/application*.yml' + include '**/application*.yaml' + include '**/application*.properties' + project.properties.findAll().each { prop -> + + if (prop.value != null) { + filter(ReplaceTokens, tokens: [ (prop.key): prop.value]) + filter(ReplaceTokens, tokens: [ ('project.' + prop.key): prop.value]) + } + + } + } +} + +dependencies { + compile("org.springframework.boot:spring-boot-starter") +} diff --git a/spring-boot-property-exp/property-exp-default/gradle.properties b/spring-boot-property-exp/property-exp-default/gradle.properties new file mode 100644 index 0000000000..e0ec84d851 --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/gradle.properties @@ -0,0 +1 @@ +custom.property=Custom Gradle Property \ No newline at end of file diff --git a/spring-boot-property-exp/property-exp-default/pom.xml b/spring-boot-property-exp/property-exp-default/pom.xml new file mode 100644 index 0000000000..3629e56111 --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 1.5.4.RELEASE + + + com.baeldung + property-exp-default + 0.0.1-SNAPSHOT + jar + + property-exp-default + http://maven.apache.org + + + UTF-8 + Custom Property Value + + + + + org.springframework.boot + spring-boot-starter + + + + diff --git a/spring-boot-property-exp/property-exp-default/settings.gradle b/spring-boot-property-exp/property-exp-default/settings.gradle new file mode 100644 index 0000000000..faccf1c7f3 --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'property-exp-default' diff --git a/spring-boot-property-exp/property-exp-default/src/main/java/com/baeldung/propertyexpansion/SpringBootPropertyExpansionApp.java b/spring-boot-property-exp/property-exp-default/src/main/java/com/baeldung/propertyexpansion/SpringBootPropertyExpansionApp.java new file mode 100644 index 0000000000..d88dbf0123 --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/src/main/java/com/baeldung/propertyexpansion/SpringBootPropertyExpansionApp.java @@ -0,0 +1,13 @@ +package com.baeldung.propertyexpansion; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringBootPropertyExpansionApp { + + public static void main(String[] args) { + SpringApplication.run(SpringBootPropertyExpansionApp.class, args); + } + +} diff --git a/spring-boot-property-exp/property-exp-default/src/main/java/com/baeldung/propertyexpansion/components/PropertyLoggerBean.java b/spring-boot-property-exp/property-exp-default/src/main/java/com/baeldung/propertyexpansion/components/PropertyLoggerBean.java new file mode 100644 index 0000000000..b7427d5eab --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/src/main/java/com/baeldung/propertyexpansion/components/PropertyLoggerBean.java @@ -0,0 +1,36 @@ +package com.baeldung.propertyexpansion.components; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; + +@Component +public class PropertyLoggerBean { + + private static final Logger log = LoggerFactory.getLogger(PropertyLoggerBean.class); + + @Value("${expanded.project.version}") + private String projectVersion; + + @Value("${expanded.project.property}") + private String projectProperty; + + @PostConstruct + public void printProperties() { + + log.info(""); + log.info("Properties logged from logger bean"); + log.info("==========================================="); + log.info("Project version : {}", projectVersion); + log.info("Project property : {}", projectProperty); + log.info("==========================================="); + log.info(""); + + } + + + +} diff --git a/spring-boot-property-exp/property-exp-default/src/main/resources/application.properties b/spring-boot-property-exp/property-exp-default/src/main/resources/application.properties new file mode 100644 index 0000000000..4e28ccadaa --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/src/main/resources/application.properties @@ -0,0 +1,2 @@ +expanded.project.version=@project.version@ +expanded.project.property=@custom.property@ \ No newline at end of file diff --git a/spring-boot-property-exp/property-exp-default/src/main/resources/banner.txt b/spring-boot-property-exp/property-exp-default/src/main/resources/banner.txt new file mode 100644 index 0000000000..20963b0447 --- /dev/null +++ b/spring-boot-property-exp/property-exp-default/src/main/resources/banner.txt @@ -0,0 +1,21 @@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@########@@@@@@@@@@@@@@@@@@@@@@@@...@@@@@@@@@:..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@#. @@@@@* *@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@#o @@@@@* @@@@@* @@@:*.*@@@@@@@: *8@@@ @@@@&:.#@. @o**@@@@**:@o*o@@:.:@@@@@:.o#@&*:@@@@ +@@@@@@@@@@@@* @@@@@* 8888 8@ @@@8 #@o 8@# .@ @@* :. @* @@@@ @. : &@ ** .@@@@ +@@@@@@@@@@. @ o@@@@@* *@@@o::& .* 8@@@@. @@ 8@@@@. @* @@@@ @. @@@& * @@@@# .@@@@ +@@@@@@@@@& @ @@@@@@* @@@@@@ 8 @@@@ .. o&&&&&&& @@ #@@@@. @* @@@@ @. @@@# * @@@@@ .@@@@ +@@@@@@@@@ @@o @@@@@@@* oooo* 8 @@@& @* @@@ # 88. 88. *& o#: @. @@@# *@ &#& .@@@@ +@@@@@@@@# @@@8 @@@@@@@* .*@@@#. *@@ @@@& :#@@@o .@@: *&@8 @o o@@: @. @@@# *@@#. :8# .@@@@ +@@@@@@@@@ @@@@ &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@# o@@@@ @@@@@ +@@@@@& &@@@@ 8@@@@@@@@@8&8@@@@@#8#@@@o8@#&@@o&@@@&@@8@@&@@@@88@@8#@8&@@##@@@@@@#8@@#8@@88@@@@@ *@@@@@@@ +@@@# #@@@@#. @@@@@@@@@@@@@8@@8#o@&#@@@@o.@o*@@*.@@@.@&:8o8*@@@8&@@#@@@8@@@@8@#@@@8&@@@@@@#@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + +These values are expanded in banner.txt +========================================================== +{expanded.project.version} is ${expanded.project.version} + +{expanded.project.property} is ${expanded.project.property} +========================================================== \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/book/BooksClient.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/book/BooksClient.java index 67e8f882ad..f60f65d23c 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/book/BooksClient.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/book/BooksClient.java @@ -1,10 +1,14 @@ package com.baeldung.spring.cloud.bootstrap.gateway.client.book; import org.springframework.cloud.netflix.feign.FeignClient; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; @FeignClient(value = "book-service") public interface BooksClient { - @GetMapping("/books/{bookId}") + + @RequestMapping(value = "/books/{bookId}", method = {RequestMethod.GET}) Book getBookById(@PathVariable("bookId") Long bookId); } diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/rating/RatingsClient.java b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/rating/RatingsClient.java index 4e87374b66..9728111c5e 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/rating/RatingsClient.java +++ b/spring-cloud/spring-cloud-bootstrap/gateway/src/main/java/com/baeldung/spring/cloud/bootstrap/gateway/client/rating/RatingsClient.java @@ -11,6 +11,7 @@ import java.util.List; @FeignClient(value = "rating-service") public interface RatingsClient { - @GetMapping("/ratings") + + @RequestMapping(value = "/ratings", method = {RequestMethod.GET}) List getRatingsByBookId(@RequestParam("bookId") Long bookId, @RequestHeader("Cookie") String session); } diff --git a/spring-data-javaslang/.gitignore b/spring-data-javaslang/.gitignore deleted file mode 100644 index 7ee5423d14..0000000000 --- a/spring-data-javaslang/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/target/ -/project/ -.idea -.classpath -.eclipse diff --git a/spring-data-javaslang/pom.xml b/spring-data-javaslang/pom.xml deleted file mode 100644 index 02d214344e..0000000000 --- a/spring-data-javaslang/pom.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - 4.0.0 - spring-data-javaslang - spring-data-javaslang - 0.0.1-SNAPSHOT - - - 2.9.1-01 - 2.3.7-01 - 2.4.8 - 2.0.5 - 1.5.1.RELEASE - 4.3.6.RELEASE - 4.3.6.RELEASE - 4.3.6.RELEASE - ${basedir}/src/test/java - - - - parent-boot-5 - com.baeldung - 0.0.1-SNAPSHOT - ../parent-boot-5 - - - - - test-app - - verify - - - org.springframework.boot - spring-boot-maven-plugin - - - spring-boot-run - verify - - run - - false - - - - - - - - - - - org.springframework.boot - spring-boot-devtools - true - - - - com.h2database - h2 - 1.4.193 - - - - io.javaslang - javaslang - ${javaslang.version} - - - - org.springframework.data - spring-data-jpa - 1.11.0.RELEASE - - - - org.springframework.boot - spring-boot - ${spring-boot.version} - - - - org.springframework.boot - spring-boot-starter-data-jpa - ${spring-boot.version} - - - - org.springframework.boot - spring-boot-starter-test - ${spring-boot.version} - - - - org.springframework - spring-context - ${spring-context.version} - - - - org.springframework - spring-core - ${spring-core.version} - - - - \ No newline at end of file diff --git a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/model/Book.java b/spring-data-javaslang/src/main/java/com/baeldung/spring_data/model/Book.java deleted file mode 100644 index 95653abb6c..0000000000 --- a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/model/Book.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.baeldung.spring_data.model; - -import javaslang.collection.Seq; - -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.CollectionTable; -import javax.persistence.Column; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; - -@Entity -@Table(name = "book") -public class Book { - - @GeneratedValue - @Id - private Long id; - - private String title; - - private Seq authors; - - - public void setTitle(String title){ - this.title = title; - } - - public String getTitle(){ - return this.title; - } - - public Long getId(){ - return this.id; - } - - public void setAuthors(Seq authors){ - this.authors = authors; - } - - public Seq getAuthors(){ - return this.authors; - } -} diff --git a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/model/JavaBook.java b/spring-data-javaslang/src/main/java/com/baeldung/spring_data/model/JavaBook.java deleted file mode 100644 index ab99b0d929..0000000000 --- a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/model/JavaBook.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.spring_data.model; - -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; - -import java.util.List; - -@Entity -@Table(name = "java_book") -public class JavaBook { - - @GeneratedValue - @Id - private Long id; - - private String title; - - @ElementCollection - private List authors; - - - public void setAuthors(List authors){ - this.authors = authors; - } - - public void setTitle(String title){ - this.title = title; - } - - public String getTitle(){ - return this.title; - } - - public Long getId(){ - return this.id; - } -} - diff --git a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/repository/BookRepository.java b/spring-data-javaslang/src/main/java/com/baeldung/spring_data/repository/BookRepository.java deleted file mode 100644 index 75b6d0b426..0000000000 --- a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/repository/BookRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.spring_data.repository; - -import com.baeldung.spring_data.model.Book; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import javaslang.collection.Seq; -import javaslang.control.Option; - -@Repository -public interface BookRepository extends JpaRepository{ - Book save(Book book); - - Option findById(Long id); - - Option> findByTitleContaining(String title); - -} diff --git a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/repository/JavaBookRepository.java b/spring-data-javaslang/src/main/java/com/baeldung/spring_data/repository/JavaBookRepository.java deleted file mode 100644 index a4aeab85ee..0000000000 --- a/spring-data-javaslang/src/main/java/com/baeldung/spring_data/repository/JavaBookRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.spring_data.repository; - -import com.baeldung.spring_data.model.JavaBook; - -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -public interface JavaBookRepository extends JpaRepository{ - JavaBook save(JavaBook book); - - JavaBook findById(Long id); - - List findByTitleContaining(String title); -} \ No newline at end of file diff --git a/spring-data-javaslang/src/main/java/com/baeldung/spring_data_app/MainApp.java b/spring-data-javaslang/src/main/java/com/baeldung/spring_data_app/MainApp.java deleted file mode 100644 index d8a194e92e..0000000000 --- a/spring-data-javaslang/src/main/java/com/baeldung/spring_data_app/MainApp.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.spring_data_app; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -@Configuration -@EnableJpaRepositories("com.baeldung.spring_data.repository") -@EnableTransactionManagement -@EntityScan("com.baeldung.spring_data.model") -@SpringBootApplication -public class MainApp { - public static void main(String[] args){ - SpringApplication.run(MainApp.class, args); - } -} diff --git a/spring-data-javaslang/src/test/java/com/baeldung/spring_data_tests/SpringIntegrationTest.java b/spring-data-javaslang/src/test/java/com/baeldung/spring_data_tests/SpringIntegrationTest.java deleted file mode 100644 index 7a23fa1ef2..0000000000 --- a/spring-data-javaslang/src/test/java/com/baeldung/spring_data_tests/SpringIntegrationTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.baeldung.spring_data_tests; - -import com.baeldung.spring_data.model.Book; -import com.baeldung.spring_data.model.JavaBook; -import com.baeldung.spring_data.repository.BookRepository; -import com.baeldung.spring_data.repository.JavaBookRepository; -import com.baeldung.spring_data_app.MainApp; -import javaslang.collection.List; -import javaslang.collection.Seq; -import javaslang.control.Option; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.ArrayList; - -import static org.assertj.core.api.Assertions.assertThat; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = MainApp.class,webEnvironment = WebEnvironment.NONE) -public class SpringIntegrationTest { - - @Autowired - private JavaBookRepository javaRepository; - - @Autowired - private BookRepository repository; - - @Test - public void should_return_seq(){ - Seq authors = List.of("author1","author2"); - Book testBook = new Book(); - testBook.setTitle("Javaslang in Spring Data Seq Test Return"); - testBook.setAuthors(authors); - Book book = repository.save(testBook); - Option> books = repository.findByTitleContaining("Seq Test"); - - assertThat(books).isNotEmpty(); - } - - - @Test - public void should_return_option_with_book(){ - Seq authors = List.of("author1","author2"); - Book testBook = new Book(); - testBook.setTitle("Javaslang in Spring Data"); - testBook.setAuthors(authors); - Book book = repository.save(testBook); - Option retBook = repository.findById(1L); - - assertThat(retBook.isDefined()).isTrue(); - assertThat(retBook).isNotEmpty(); - } - - @Test - public void should_return_list(){ - ArrayList authors = new ArrayList(); - authors.add("author1"); - authors.add("author2"); - JavaBook testBook = new JavaBook(); - testBook.setTitle("Javaslang in Spring Data Seq Return"); - testBook.setAuthors(authors); - JavaBook book = javaRepository.save(testBook); - java.util.List books = javaRepository.findByTitleContaining("Seq"); - assertThat(books) - .isNotEmpty() - .hasSize(1) - .extracting("title") - .contains("Javaslang in Spring Data Seq Return"); - } - - @Test - public void should_return_book(){ - ArrayList authors = new ArrayList(); - authors.add("author1"); - authors.add("author2"); - JavaBook testBook = new JavaBook(); - testBook.setTitle("Javaslang in Spring Data"); - testBook.setAuthors(authors); - JavaBook book = javaRepository.save(testBook); - JavaBook retBook = javaRepository.findById(1L); - - assertThat(retBook.getId()).isEqualTo(1L); - assertThat(retBook.getTitle()).isEqualTo("Javaslang in Spring Data"); - } -} \ No newline at end of file diff --git a/spring-drools/pom.xml b/spring-drools/pom.xml index 8dba1271d7..239c0c065c 100644 --- a/spring-drools/pom.xml +++ b/spring-drools/pom.xml @@ -14,42 +14,10 @@ - 1.1.1.RELEASE - 4.0-alpha6 - 7.0.0.CR1 - 3.13 + 7.0.0.Final + 4.3.3.RELEASE - - - - io.spring.platform - platform-bom - ${spring-boot-version} - pom - import - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.boot - spring-boot-starter-actuator - - - org.apache.httpcomponents - httpcore - ${http-component-version} - org.kie @@ -61,7 +29,6 @@ drools-decisiontables ${drools-version} - org.drools drools-core @@ -72,54 +39,18 @@ drools-compiler ${drools-version} - - org.apache.poi - poi - ${apache-poi-version} - - - org.apache.poi - poi-ooxml - ${apache-poi-version} - + org.kie kie-spring - 6.4.0.Final - - - org.springframework - spring-tx - - - org.springframework - spring-beans - - - org.springframework - spring-core - - - org.springframework - spring-context - - + ${drools-version} + + + org.springframework + spring-test + ${spring-framework.version} + test - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - \ No newline at end of file diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/Application.java b/spring-drools/src/main/java/com/baeldung/spring/drools/Application.java deleted file mode 100644 index 8f5b915f88..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/Application.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.spring.drools; - - -import com.baeldung.spring.drools.model.Applicant; -import com.baeldung.spring.drools.model.Product; -import com.baeldung.spring.drools.model.SuggestedRole; -import com.baeldung.spring.drools.service.ApplicantService; -import com.baeldung.spring.drools.service.ProductService; -import org.kie.api.KieServices; -import org.kie.api.runtime.KieContainer; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Import; - -@SpringBootApplication -@Import(DroolConfiguration.class) -public class Application { - - public static void main(String[] args) { - ApplicationContext ctx = SpringApplication.run(Application.class, args); - ApplicantService applicantService=(ApplicantService)ctx.getBean("applicantService"); - applicantService.suggestARoleForApplicant(new Applicant("Baljeet",37,1200000.0,8),new SuggestedRole()); - - ProductService productService=(ProductService)ctx.getBean("productService"); - Product returnedProduct=productService.applyLabelToProduct(new Product("Microwave","Book")); - } - -} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/DroolConfiguration.java b/spring-drools/src/main/java/com/baeldung/spring/drools/DroolConfiguration.java deleted file mode 100644 index 7a5e833ed5..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/DroolConfiguration.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.baeldung.spring.drools; - -import com.baeldung.spring.drools.service.ApplicantService; -import com.baeldung.spring.drools.service.ProductService; -import org.kie.api.KieBase; -import org.kie.api.KieServices; -import org.kie.api.builder.*; -import org.kie.api.runtime.KieContainer; -import org.kie.api.runtime.KieSession; -import org.kie.internal.io.ResourceFactory; -import org.kie.spring.KModuleBeanFactoryPostProcessor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.Resource; -import org.springframework.core.io.support.PathMatchingResourcePatternResolver; -import org.springframework.core.io.support.ResourcePatternResolver; - -import java.io.IOException; - -@Configuration -public class DroolConfiguration { - - private static final String RULES_PATH = "com/baeldung/spring/drools/rules/"; - - @Bean - public KieFileSystem kieFileSystem() throws IOException { - KieFileSystem kieFileSystem = getKieServices().newKieFileSystem(); - for (Resource file : getRuleFiles()) { - kieFileSystem.write(ResourceFactory.newClassPathResource(RULES_PATH + file.getFilename(), "UTF-8")); - } - return kieFileSystem; - } - - private Resource[] getRuleFiles() throws IOException { - ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver(); - return resourcePatternResolver.getResources("classpath*:" + RULES_PATH + "**/*.*"); - } - - @Bean - public KieContainer kieContainer() throws IOException { - final KieRepository kieRepository = getKieServices().getRepository(); - - kieRepository.addKieModule(new KieModule() { - public ReleaseId getReleaseId() { - return kieRepository.getDefaultReleaseId(); - } - }); - - KieBuilder kieBuilder = getKieServices().newKieBuilder(kieFileSystem()); - kieBuilder.buildAll(); - - return getKieServices().newKieContainer(kieRepository.getDefaultReleaseId()); - } - - private KieServices getKieServices() { - return KieServices.Factory.get(); - } - - @Bean - public KieBase kieBase() throws IOException { - return kieContainer().getKieBase(); - } - - @Bean - public KieSession kieSession() throws IOException { - return kieContainer().newKieSession(); - } - - @Bean - public ApplicantService getApplicantService(){ - return new ApplicantService(); - } - - @Bean - public ProductService getProductService(KieContainer kieContainer){ - return new ProductService(); - } - - @Bean - public KModuleBeanFactoryPostProcessor kiePostProcessor() { - return new KModuleBeanFactoryPostProcessor(); - } -} \ No newline at end of file diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/app/ApplicationRunner.java b/spring-drools/src/main/java/com/baeldung/spring/drools/app/ApplicationRunner.java new file mode 100644 index 0000000000..ce4b49451a --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/app/ApplicationRunner.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.drools.app; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import com.baeldung.spring.drools.model.TaxiRide; +import com.baeldung.spring.drools.model.Fare; +import com.baeldung.spring.drools.service.TaxiFareCalculatorService; +import com.baeldung.spring.drools.service.TaxiFareConfiguration; + +public class ApplicationRunner { + + public static void main(String[] args) { + ApplicationContext context = new AnnotationConfigApplicationContext(TaxiFareConfiguration.class); + TaxiFareCalculatorService orderService = context.getBean(TaxiFareCalculatorService.class); + + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(true); + taxiRide.setDistanceInMile(190L); + Fare rideFare = new Fare(); + orderService.calculateFare(taxiRide, rideFare); + } + +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Applicant.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Applicant.java deleted file mode 100644 index f28d0fcab7..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Applicant.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.baeldung.spring.drools.model; - -public class Applicant { - - private String name; - private int age; - private double currentSalary; - private int experienceInYears; - - public Applicant(String name, int age, Double currentSalary, int experienceInYears) { - this.name = name; - this.age = age; - this.currentSalary = currentSalary; - this.experienceInYears = experienceInYears; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public Double getCurrentSalary() { - return currentSalary; - } - - public void setCurrentSalary(Double currentSalary) { - this.currentSalary = currentSalary; - } - - public int getExperienceInYears() { - return experienceInYears; - } - - public void setExperienceInYears(int experienceInYears) { - this.experienceInYears = experienceInYears; - } -} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Fare.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Fare.java new file mode 100644 index 0000000000..86044b281a --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Fare.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.drools.model; + +public class Fare { + + private Long nightSurcharge; + private Long rideFare; + + public Fare() { + nightSurcharge = 0L; + rideFare = 0L; + } + + public Long getNightSurcharge() { + return nightSurcharge; + } + + public void setNightSurcharge(Long nightSurcharge) { + this.nightSurcharge = nightSurcharge; + } + + public Long getRideFare() { + return rideFare; + } + + public void setRideFare(Long rideFare) { + this.rideFare = rideFare; + } + + public Long getTotalFare() { + return nightSurcharge + rideFare; + } +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Product.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/Product.java deleted file mode 100644 index a861df5834..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/model/Product.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.spring.drools.model; - -public class Product { - private String name; - private String type; - - private String label; - - public Product(String name, String type) { - this.name = name; - this.type = type; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - -} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/SuggestedRole.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/SuggestedRole.java deleted file mode 100644 index 1ace5aa4ae..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/model/SuggestedRole.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.spring.drools.model; - -public class SuggestedRole { - - private String role; - - public String getRole() { - return role; - } - - public void setRole(String role) { - this.role = role; - } -} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/model/TaxiRide.java b/spring-drools/src/main/java/com/baeldung/spring/drools/model/TaxiRide.java new file mode 100644 index 0000000000..6dc08bbb60 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/model/TaxiRide.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.drools.model; + +public class TaxiRide { + + private Boolean bNightSurcharge; + private Long distanceInMile; + + public Boolean getbNightSurcharge() { + return bNightSurcharge; + } + + public void setbNightSurcharge(Boolean bNightSurcharge) { + this.bNightSurcharge = bNightSurcharge; + } + + public Long getDistanceInMile() { + return distanceInMile; + } + + public void setDistanceInMile(Long distanceInMile) { + this.distanceInMile = distanceInMile; + } + +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/ApplicantService.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/ApplicantService.java deleted file mode 100644 index f78ffe668b..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/service/ApplicantService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.spring.drools.service; - -import com.baeldung.spring.drools.model.Applicant; -import com.baeldung.spring.drools.model.SuggestedRole; -import org.kie.api.runtime.KieContainer; -import org.kie.api.runtime.KieSession; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class ApplicantService { - - @Autowired - private KieContainer kieContainer; - - public SuggestedRole suggestARoleForApplicant(Applicant applicant,SuggestedRole suggestedRole){ - KieSession kieSession = kieContainer.newKieSession(); - kieSession.insert(applicant); - kieSession.setGlobal("suggestedRole",suggestedRole); - kieSession.fireAllRules(); - System.out.println(suggestedRole.getRole()); - return suggestedRole; - - } -} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/ProductService.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/ProductService.java deleted file mode 100644 index 21ca9c9730..0000000000 --- a/spring-drools/src/main/java/com/baeldung/spring/drools/service/ProductService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.spring.drools.service; - -import com.baeldung.spring.drools.model.Product; -import org.kie.api.runtime.KieContainer; -import org.kie.api.runtime.KieSession; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class ProductService { - - @Autowired - private KieContainer kieContainer; - - public Product applyLabelToProduct(Product product){ - KieSession kieSession = kieContainer.newKieSession(); - kieSession.insert(product); - kieSession.fireAllRules(); - System.out.println(product.getLabel()); - return product; - - } - -} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java new file mode 100644 index 0000000000..0407eff5d9 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareCalculatorService.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.drools.service; + +import org.kie.api.runtime.KieContainer; +import org.kie.api.runtime.KieSession; +import org.springframework.beans.factory.annotation.Autowired; + +import com.baeldung.spring.drools.model.Fare; +import com.baeldung.spring.drools.model.TaxiRide; + +public class TaxiFareCalculatorService { + + @Autowired + private KieContainer kieContainer; + + public Long calculateFare(TaxiRide taxiRide, Fare rideFare) { + KieSession kieSession = kieContainer.newKieSession(); + kieSession.setGlobal("rideFare", rideFare); + kieSession.insert(taxiRide); + kieSession.fireAllRules(); + kieSession.dispose(); + System.out.println("!! RIDE FARE !! " + rideFare.getTotalFare()); + return rideFare.getTotalFare(); + } +} diff --git a/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareConfiguration.java b/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareConfiguration.java new file mode 100644 index 0000000000..8da1d4b992 --- /dev/null +++ b/spring-drools/src/main/java/com/baeldung/spring/drools/service/TaxiFareConfiguration.java @@ -0,0 +1,35 @@ +package com.baeldung.spring.drools.service; + +import org.kie.api.KieServices; +import org.kie.api.builder.KieBuilder; +import org.kie.api.builder.KieFileSystem; +import org.kie.api.builder.KieModule; +import org.kie.api.runtime.KieContainer; +import org.kie.api.runtime.KieSession; +import org.kie.internal.io.ResourceFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class TaxiFareConfiguration { + + private static final String drlFile = "TAXI_FARE_RULE.drl"; + + @Bean + public KieContainer kieContainer() { + KieServices kieServices = KieServices.Factory.get(); + + KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); + kieFileSystem.write(ResourceFactory.newClassPathResource(drlFile)); + KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem); + kieBuilder.buildAll(); + KieModule kieModule = kieBuilder.getKieModule(); + + return kieServices.newKieContainer(kieModule.getReleaseId()); + } + + @Bean + public TaxiFareCalculatorService taxiFareCalculatorService() { + return new TaxiFareCalculatorService(); + } +} diff --git a/spring-drools/src/main/resources/TAXI_FARE_RULE.drl b/spring-drools/src/main/resources/TAXI_FARE_RULE.drl new file mode 100644 index 0000000000..56335c08b3 --- /dev/null +++ b/spring-drools/src/main/resources/TAXI_FARE_RULE.drl @@ -0,0 +1,57 @@ +import com.baeldung.spring.drools.model.TaxiRide; +import com.baeldung.spring.drools.model.Fare; +import java.util.*; + +global com.baeldung.spring.drools.model.Fare rideFare; +dialect "mvel" + +rule "Calculate Taxi Fare - Scenario 1" + when + taxiRideInstance:TaxiRide(bNightSurcharge == false && distanceInMile < 10); + then + rideFare.setNightSurcharge(0); + rideFare.setRideFare(70); +end + +rule "Calculate Taxi Fare - Scenario 2" + when + taxiRideInstance:TaxiRide(bNightSurcharge == true && distanceInMile < 10); + then + rideFare.setNightSurcharge(30); + rideFare.setRideFare(70); +end + + +rule "Calculate Taxi Fare - Scenario 3" + when + taxiRideInstance:TaxiRide(bNightSurcharge == false && distanceInMile >= 10 && distanceInMile < 100); + then + rideFare.setNightSurcharge(0); + rideFare.setRideFare(70+(2*taxiRideInstance.getDistanceInMile())); +end + + +rule "Calculate Taxi Fare - Scenario 4" + when + taxiRideInstance:TaxiRide(bNightSurcharge == true && distanceInMile >= 10 && distanceInMile < 100); + then + rideFare.setNightSurcharge(30+taxiRideInstance.getDistanceInMile()); + rideFare.setRideFare(70+(2*taxiRideInstance.getDistanceInMile())); +end + + +rule "Calculate Taxi Fare - Scenario 5" + when + taxiRideInstance:TaxiRide(bNightSurcharge == false && distanceInMile >= 100); + then + rideFare.setNightSurcharge(0); + rideFare.setRideFare(70+(1.5*taxiRideInstance.getDistanceInMile())); +end + +rule "Calculate Taxi Fare - Scenario 6" + when + taxiRideInstance:TaxiRide(bNightSurcharge == true && distanceInMile >= 100); + then + rideFare.setNightSurcharge(30+taxiRideInstance.getDistanceInMile()); + rideFare.setRideFare(70+(1.5*taxiRideInstance.getDistanceInMile())); +end diff --git a/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/Product_rules.xls b/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/Product_rules.xls deleted file mode 100644 index 24caaf2470..0000000000 Binary files a/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/Product_rules.xls and /dev/null differ diff --git a/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/SuggestApplicant.drl b/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/SuggestApplicant.drl deleted file mode 100644 index baaf29d0b4..0000000000 --- a/spring-drools/src/main/resources/com/baeldung/spring/drools/rules/SuggestApplicant.drl +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.spring.drools.rules; - -import com.baeldung.spring.drools.model.Applicant; - -global com.baeldung.spring.drools.model.SuggestedRole suggestedRole; - -dialect "mvel" - -rule "Suggest Manager Role" - when - Applicant(experienceInYears > 10) - Applicant(currentSalary > 1000000 && currentSalary <= 2500000) - then - suggestedRole.setRole("Manager"); -end - -rule "Suggest Senior developer Role" - when - Applicant(experienceInYears > 5 && experienceInYears <= 10) - Applicant(currentSalary > 500000 && currentSalary <= 1500000) - then - suggestedRole.setRole("Senior developer"); -end - -rule "Suggest Developer Role" - when - Applicant(experienceInYears > 0 && experienceInYears <= 5) - Applicant(currentSalary > 200000 && currentSalary <= 1000000) - then - suggestedRole.setRole("Developer"); -end diff --git a/spring-drools/src/test/java/com/baeldung/spring/drools/service/ApplicantServiceIntegrationTest.java b/spring-drools/src/test/java/com/baeldung/spring/drools/service/ApplicantServiceIntegrationTest.java deleted file mode 100644 index d7e7634c00..0000000000 --- a/spring-drools/src/test/java/com/baeldung/spring/drools/service/ApplicantServiceIntegrationTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.baeldung.spring.drools.service; - -import com.baeldung.spring.drools.Application; -import com.baeldung.spring.drools.DroolConfiguration; -import com.baeldung.spring.drools.model.Applicant; -import com.baeldung.spring.drools.model.SuggestedRole; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import static junit.framework.Assert.assertNull; -import static junit.framework.TestCase.assertEquals; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {DroolConfiguration.class}) -public class ApplicantServiceIntegrationTest { - - @Autowired - ApplicantService applicantService; - - @Test - public void whenCriteriaMatching_ThenSuggestManagerRole(){ - Applicant applicant=new Applicant("Davis",37,1600000.0,11); - SuggestedRole suggestedRole=new SuggestedRole(); - applicantService.suggestARoleForApplicant(applicant,suggestedRole); - assertEquals("Manager",suggestedRole.getRole()); - } - - @Test - public void whenCriteriaMatching_ThenSuggestSeniorDeveloperRole(){ - Applicant applicant=new Applicant("John",37,1200000.0,8); - SuggestedRole suggestedRole=new SuggestedRole(); - applicantService.suggestARoleForApplicant(applicant,suggestedRole); - assertEquals("Senior developer",suggestedRole.getRole()); - } - @Test - public void whenCriteriaMatching_ThenSuggestDeveloperRole(){ - Applicant applicant=new Applicant("Davis",37,800000.0,3); - SuggestedRole suggestedRole=new SuggestedRole(); - applicantService.suggestARoleForApplicant(applicant,suggestedRole); - assertEquals("Developer",suggestedRole.getRole()); - } - @Test - public void whenCriteriaNotMatching_ThenNoRole(){ - Applicant applicant=new Applicant("John",37,1200000.0,5); - SuggestedRole suggestedRole=new SuggestedRole(); - applicantService.suggestARoleForApplicant(applicant,suggestedRole); - assertNull(suggestedRole.getRole()); - } -} diff --git a/spring-drools/src/test/java/com/baeldung/spring/drools/service/ProductServiceIntegrationTest.java b/spring-drools/src/test/java/com/baeldung/spring/drools/service/ProductServiceIntegrationTest.java deleted file mode 100644 index 7a442e48fd..0000000000 --- a/spring-drools/src/test/java/com/baeldung/spring/drools/service/ProductServiceIntegrationTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.spring.drools.service; - -import com.baeldung.spring.drools.Application; -import com.baeldung.spring.drools.DroolConfiguration; -import com.baeldung.spring.drools.model.Product; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import static junit.framework.TestCase.assertEquals; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = {DroolConfiguration.class}) -public class ProductServiceIntegrationTest { - - @Autowired - ProductService productService; - - @Test - public void whenProductTypeElectronic_ThenLabelBarcode(){ - Product product=new Product("Microwave","Electronic"); - product=productService.applyLabelToProduct(product); - assertEquals("BarCode",product.getLabel()); - } - - @Test - public void whenProductTypeBook_ThenLabelIsbn(){ - Product product=new Product("AutoBiography","Book"); - product=productService.applyLabelToProduct(product); - assertEquals("ISBN",product.getLabel()); - } -} diff --git a/spring-drools/src/test/java/com/baeldung/spring/drools/service/TaxiFareCalculatorServiceIntegrationTest.java b/spring-drools/src/test/java/com/baeldung/spring/drools/service/TaxiFareCalculatorServiceIntegrationTest.java new file mode 100644 index 0000000000..97bd44316f --- /dev/null +++ b/spring-drools/src/test/java/com/baeldung/spring/drools/service/TaxiFareCalculatorServiceIntegrationTest.java @@ -0,0 +1,94 @@ +package com.baeldung.spring.drools.service; + +import com.baeldung.spring.drools.model.Fare; +import com.baeldung.spring.drools.model.TaxiRide; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = TaxiFareConfiguration.class) +public class TaxiFareCalculatorServiceIntegrationTest { + + @Autowired + private TaxiFareCalculatorService taxiFareCalculatorService; + + @Test + public void testCalculateFareScenario1() { + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(false); + taxiRide.setDistanceInMile(9L); + Fare rideFare = new Fare(); + Long totalCharge = taxiFareCalculatorService.calculateFare(taxiRide, rideFare); + + assertNotNull(totalCharge); + assertEquals(Long.valueOf(70), totalCharge); + } + + @Test + public void testCalculateFareScenario2() { + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(true); + taxiRide.setDistanceInMile(5L); + Fare rideFare = new Fare(); + Long totalCharge = taxiFareCalculatorService.calculateFare(taxiRide, rideFare); + + assertNotNull(totalCharge); + assertEquals(Long.valueOf(100), totalCharge); + } + + @Test + public void testCalculateFareScenario3() { + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(false); + taxiRide.setDistanceInMile(50L); + Fare rideFare = new Fare(); + Long totalCharge = taxiFareCalculatorService.calculateFare(taxiRide, rideFare); + + assertNotNull(totalCharge); + assertEquals(Long.valueOf(170), totalCharge); + } + + @Test + public void testCalculateFareScenario4() { + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(true); + taxiRide.setDistanceInMile(50L); + Fare rideFare = new Fare(); + Long totalCharge = taxiFareCalculatorService.calculateFare(taxiRide, rideFare); + + assertNotNull(totalCharge); + assertEquals(Long.valueOf(250), totalCharge); + } + + @Test + public void testCalculateFareScenario5() { + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(false); + taxiRide.setDistanceInMile(100L); + Fare rideFare = new Fare(); + Long totalCharge = taxiFareCalculatorService.calculateFare(taxiRide, rideFare); + + assertNotNull(totalCharge); + assertEquals(Long.valueOf(220), totalCharge); + } + + @Test + public void testCalculateFareScenario6() { + TaxiRide taxiRide = new TaxiRide(); + taxiRide.setbNightSurcharge(true); + taxiRide.setDistanceInMile(100L); + Fare rideFare = new Fare(); + Long totalCharge = taxiFareCalculatorService.calculateFare(taxiRide, rideFare); + + assertNotNull(totalCharge); + assertEquals(Long.valueOf(350), totalCharge); + } + +} diff --git a/spring-rest-simple/src/main/java/org/baeldung/config/Application.java b/spring-rest-simple/src/main/java/org/baeldung/config/Application.java index 077213b04d..3a98da82c9 100644 --- a/spring-rest-simple/src/main/java/org/baeldung/config/Application.java +++ b/spring-rest-simple/src/main/java/org/baeldung/config/Application.java @@ -2,12 +2,14 @@ package org.baeldung.config; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @EnableAutoConfiguration @ComponentScan("org.baeldung") -public class Application extends WebMvcConfigurerAdapter { +@SpringBootApplication +public class Application extends SpringBootServletInitializer { public static void main(final String[] args) { SpringApplication.run(Application.class, args); diff --git a/spring-rest-simple/src/main/webapp/WEB-INF/web.xml b/spring-rest-simple/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index a439de8a05..0000000000 --- a/spring-rest-simple/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - Spring MVC Application - - - - contextClass - - org.springframework.web.context.support.AnnotationConfigWebApplicationContext - - - - contextConfigLocation - org.baeldung.config - - - - org.springframework.web.context.ContextLoaderListener - - - - - api - org.springframework.web.servlet.DispatcherServlet - 1 - - - api - / - - - - - - - diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/Application.java b/spring-security-mvc-boot/src/main/java/org/baeldung/Application.java index fa10799caa..b3c98c3e71 100644 --- a/spring-security-mvc-boot/src/main/java/org/baeldung/Application.java +++ b/spring-security-mvc-boot/src/main/java/org/baeldung/Application.java @@ -2,15 +2,16 @@ package org.baeldung; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.web.support.SpringBootServletInitializer; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; @Configuration @EnableAutoConfiguration -@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.voter.*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.multiplelogin.*"), - @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.multipleentrypoints.*") }) -public class Application { +@ComponentScan(excludeFilters = { @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.voter.*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.multipleauthproviders.*"), + @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.multiplelogin.*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = "org.baeldung.multipleentrypoints.*") }) +public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/persistence/SetupData.java b/spring-security-mvc-boot/src/main/java/org/baeldung/persistence/SetupData.java index 631c8dfc58..2cc86167e2 100644 --- a/spring-security-mvc-boot/src/main/java/org/baeldung/persistence/SetupData.java +++ b/spring-security-mvc-boot/src/main/java/org/baeldung/persistence/SetupData.java @@ -12,6 +12,7 @@ import org.baeldung.persistence.model.Organization; import org.baeldung.persistence.model.Privilege; import org.baeldung.persistence.model.User; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component @@ -25,6 +26,9 @@ public class SetupData { @Autowired private OrganizationRepository organizationRepository; + @Autowired + private PasswordEncoder encoder; + @PostConstruct public void init() { initOrganizations(); @@ -38,14 +42,14 @@ public class SetupData { // final User user1 = new User(); user1.setUsername("john"); - user1.setPassword("123"); + user1.setPassword(encoder.encode("123")); user1.setPrivileges(new HashSet(Arrays.asList(privilege1))); user1.setOrganization(organizationRepository.findByName("FirstOrg")); userRepository.save(user1); // final User user2 = new User(); user2.setUsername("tom"); - user2.setPassword("111"); + user2.setPassword(encoder.encode("111")); user2.setPrivileges(new HashSet(Arrays.asList(privilege1, privilege2))); user2.setOrganization(organizationRepository.findByName("SecondOrg")); userRepository.save(user2); diff --git a/spring-security-mvc-boot/src/test/java/org/baeldung/web/ApplicationLiveTest.java b/spring-security-mvc-boot/src/test/java/org/baeldung/web/ApplicationLiveTest.java index a8d273664d..371e53070d 100644 --- a/spring-security-mvc-boot/src/test/java/org/baeldung/web/ApplicationLiveTest.java +++ b/spring-security-mvc-boot/src/test/java/org/baeldung/web/ApplicationLiveTest.java @@ -2,20 +2,18 @@ package org.baeldung.web; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; - -import org.baeldung.persistence.model.Foo; -import org.junit.Test; -import org.springframework.http.MediaType; - import io.restassured.RestAssured; import io.restassured.authentication.FormAuthConfig; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; +import org.baeldung.persistence.model.Foo; +import org.junit.Test; +import org.springframework.http.MediaType; + + public class ApplicationLiveTest { - - private final FormAuthConfig formAuthConfig = new FormAuthConfig("http://localhost:8082/spring-security-mvc-boot/login", "username", "password"); - + @Test public void givenUserWithReadPrivilegeAndHasPermission_whenGetFooById_thenOK() { final Response response = givenAuth("john", "123").get("http://localhost:8082/spring-security-mvc-boot/foos/1"); @@ -31,7 +29,7 @@ public class ApplicationLiveTest { @Test public void givenUserWithWritePrivilegeAndHasPermission_whenPostFoo_thenOk() { - final Response response = givenAuth("tom", "111").contentType(MediaType.APPLICATION_JSON_VALUE).body(new Foo("sample")).post("http://localhost:8082/spring-security-mvc-boot/foos"); + final Response response = givenAuth("tom", "111").and().body(new Foo("sample")).and().contentType(MediaType.APPLICATION_JSON_VALUE).post("http://localhost:8082/spring-security-mvc-boot/foos"); assertEquals(201, response.getStatusCode()); assertTrue(response.asString().contains("id")); } @@ -62,6 +60,6 @@ public class ApplicationLiveTest { // private RequestSpecification givenAuth(String username, String password) { - return RestAssured.given().auth().form(username, password, formAuthConfig); + return RestAssured.given().log().uri().auth().form(username, password, new FormAuthConfig("/spring-security-mvc-boot/login","username","password")); } } \ No newline at end of file diff --git a/spring-security-mvc-socket/.gitignore b/spring-security-mvc-socket/.gitignore new file mode 100644 index 0000000000..6daae96b0b --- /dev/null +++ b/spring-security-mvc-socket/.gitignore @@ -0,0 +1,5 @@ +node_modules +.idea +target +*.iml +out \ No newline at end of file diff --git a/spring-security-mvc-socket/README.md b/spring-security-mvc-socket/README.md new file mode 100644 index 0000000000..2144765a04 --- /dev/null +++ b/spring-security-mvc-socket/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Intro to Security and WebSockets](http://www.baeldung.com/intro-to-security-and-websockets) \ No newline at end of file diff --git a/spring-security-mvc-socket/pom.xml b/spring-security-mvc-socket/pom.xml new file mode 100644 index 0000000000..c1715d36d2 --- /dev/null +++ b/spring-security-mvc-socket/pom.xml @@ -0,0 +1,181 @@ + + + 4.0.0 + com.baeldung.springsecuredsockets + spring-security-mvc-socket + war + 1.0.0 + spring-security-mvc-socket + + 4.3.8.RELEASE + 4.2.3.RELEASE + 2.8.7 + 1.7.25 + + + + + org.springframework + spring-core + ${springframework.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-web + ${springframework.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-webmvc + ${springframework.version} + + + commons-logging + commons-logging + + + + + + + org.springframework.security + spring-security-web + ${springsecurity.version} + + + org.springframework.security + spring-security-config + ${springsecurity.version} + + + + + org.springframework.data + spring-data-jpa + 1.11.3.RELEASE + + + org.hibernate + hibernate-core + 5.2.10.Final + + + com.h2database + h2 + 1.4.196 + + + + + org.springframework + spring-websocket + ${springframework.version} + + + org.springframework + spring-messaging + ${springframework.version} + + + org.springframework.security + spring-security-messaging + ${springsecurity.version} + + + + + org.slf4j + jcl-over-slf4j + ${slf4j.version} + + + ch.qos.logback + logback-classic + 1.2.3 + + + + + javax.servlet + javax.servlet-api + 3.1.0 + + + javax.servlet.jsp.jstl + jstl-api + 1.2 + + + javax.servlet.jsp + javax.servlet.jsp-api + 2.3.1 + + + javax.servlet + jstl + 1.2 + + + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + + + + + + + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.2 + + /spring-security-mvc-socket + + + + org.apache.maven.plugins + maven-war-plugin + 3.0.0 + + src/main/webapp + false + + + + + spring-security-mvc-socket + + \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java new file mode 100644 index 0000000000..da687a328a --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/AppConfig.java @@ -0,0 +1,56 @@ +package com.baeldung.springsecuredsockets.config; + +import org.h2.tools.Server; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import org.springframework.web.servlet.resource.PathResourceResolver; +import org.springframework.web.servlet.view.JstlView; +import org.springframework.web.servlet.view.UrlBasedViewResolver; +import java.sql.SQLException; + +@Configuration +@EnableWebMvc +@EnableJpaRepositories +@ComponentScan("com.baeldung.springsecuredsockets") +@Import({ SecurityConfig.class, DataStoreConfig.class, SocketBrokerConfig.class, SocketSecurityConfig.class }) +public class AppConfig extends WebMvcConfigurerAdapter { + + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/").setViewName("index"); + registry.addViewController("/login").setViewName("login"); + registry.addViewController("/secured/socket").setViewName("socket"); + registry.addViewController("/secured/success").setViewName("success"); + registry.addViewController("/denied").setViewName("denied"); + } + + @Bean + public UrlBasedViewResolver viewResolver() { + final UrlBasedViewResolver bean = new UrlBasedViewResolver(); + bean.setPrefix("/WEB-INF/jsp/"); + bean.setSuffix(".jsp"); + bean.setViewClass(JstlView.class); + return bean; + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/resources/**") + .addResourceLocations("/", "/resources/") + .setCachePeriod(3600) + .resourceChain(true) + .addResolver(new PathResourceResolver()); + } + + // View H2 + @Bean(initMethod="start", destroyMethod="stop") + public Server h2Console () throws SQLException { + return Server.createWebServer("-web","-webAllowOthers","-webDaemon","-webPort", "8082"); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java new file mode 100644 index 0000000000..2246c0055b --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/DataStoreConfig.java @@ -0,0 +1,69 @@ +package com.baeldung.springsecuredsockets.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.JpaVendorAdapter; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.Database; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; +import java.util.Properties; + +@Configuration +@ComponentScan("com.baeldung.springsecuredsockets") +@EnableTransactionManagement +@EnableJpaRepositories("com.baeldung.springsecuredsockets.repositories") +public class DataStoreConfig { + + //Configuration for embededded data store through H2 + @Bean + public DataSource dataSource() { + return new EmbeddedDatabaseBuilder() + .setType(EmbeddedDatabaseType.H2) + .setName("socketDB") + .addScript("classpath:schema.sql") + .addScript("classpath:data.sql") + .setScriptEncoding("UTF-8") + .continueOnError(true) + .ignoreFailedDrops(true) + .build(); + } + + @Bean + public JpaVendorAdapter jpaVendorAdapter() { + final HibernateJpaVendorAdapter bean = new HibernateJpaVendorAdapter(); + bean.setDatabase(Database.H2); + bean.setGenerateDdl(true); + return bean; + } + + @Bean + public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource dataSource) { + final LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean(); + bean.setDataSource(dataSource); + bean.setJpaVendorAdapter(jpaVendorAdapter()); + bean.setPackagesToScan("com.baeldung.springsecuredsockets"); + + //Set properties on Hibernate + Properties properties = new Properties(); + properties.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect"); + properties.setProperty("hibernate.hbm2ddl.auto", "update"); + bean.setJpaProperties(properties); + + return bean; + } + + @Bean + public JpaTransactionManager transactionManager(EntityManagerFactory emf) { + return new JpaTransactionManager(emf); + } + +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java new file mode 100644 index 0000000000..7006619d35 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SecurityConfig.java @@ -0,0 +1,136 @@ +package com.baeldung.springsecuredsockets.config; + +import com.baeldung.springsecuredsockets.security.CustomAccessDeniedHandler; +import com.baeldung.springsecuredsockets.security.CustomDaoAuthenticationProvider; +import com.baeldung.springsecuredsockets.security.CustomLoginSuccessHandler; +import com.baeldung.springsecuredsockets.security.CustomLogoutSuccessHandler; +import com.baeldung.springsecuredsockets.security.CustomUserDetailsService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.web.access.AccessDeniedHandler; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; + +/** + * @EnableGlobalAuthentication annotates: + * @EnableWebSecurity + * @EnableWebMvcSecurity + * @EnableGlobalMethodSecurity Passing in 'prePostEnabled = true' allows: + *

+ * Pre/Post annotations such as: + * @PreAuthorize("hasRole('ROLE_USER')") + */ + +@Configuration +@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) +@EnableWebSecurity +@ComponentScan("com.baeldung.springsecuredsockets") +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Autowired + private CustomUserDetailsService customUserDetailsService; + + /** + * Login, Logout, Success, and Access Denied beans/handlers + */ + + @Bean + public AccessDeniedHandler accessDeniedHandler() { + return new CustomAccessDeniedHandler(); + } + + @Bean + public LogoutSuccessHandler logoutSuccessHandler() { + return new CustomLogoutSuccessHandler(); + } + + @Bean + public AuthenticationSuccessHandler loginSuccessHandler() { + return new CustomLoginSuccessHandler(); + } + + /** + * Authentication beans + */ + + @Bean + public PasswordEncoder encoder() { + return new BCryptPasswordEncoder(); + } + + @Bean + public DaoAuthenticationProvider authenticationProvider() { + final DaoAuthenticationProvider bean = new CustomDaoAuthenticationProvider(); + bean.setUserDetailsService(customUserDetailsService); + bean.setPasswordEncoder(encoder()); + return bean; + } + + /** + * Order of precedence is very important. + *

+ * Matching occurs from top to bottom - so, the topmost match succeeds first. + */ + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers("/", "/index", "/authenticate") + .permitAll() + .antMatchers("/secured/**/**", + "/secured/success", "/secured/socket", "/secured/success") + .authenticated() + .anyRequest().authenticated() + .and() + .formLogin() + .loginPage("/login").permitAll() + .usernameParameter("username") + .passwordParameter("password") + .loginProcessingUrl("/authenticate") + .successHandler(loginSuccessHandler()) + .failureUrl("/denied").permitAll() + .and() + .logout() + .logoutSuccessHandler(logoutSuccessHandler()) + .and() + /** + * Applies to User Roles - not to login failures or unauthenticated access attempts. + */ + .exceptionHandling() + .accessDeniedHandler(accessDeniedHandler()) + .and() + .authenticationProvider(authenticationProvider()); + + /** Disabled for local testing */ + http + .csrf().disable(); + + /** This is solely required to support H2 console viewing in Spring MVC with Spring Security */ + http + .headers() + .frameOptions() + .disable(); + } + + @Override + protected void configure(final AuthenticationManagerBuilder auth) throws Exception { + auth.authenticationProvider(authenticationProvider()); + } + + @Override + public void configure(WebSecurity web) throws Exception { + web.ignoring().antMatchers("/resources/**"); + } + +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java new file mode 100644 index 0000000000..5affbd4c0e --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketBrokerConfig.java @@ -0,0 +1,27 @@ +package com.baeldung.springsecuredsockets.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.simp.config.MessageBrokerRegistry; +import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; +import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; +import org.springframework.web.socket.config.annotation.StompEndpointRegistry; + + +@Configuration +@EnableWebSocketMessageBroker +@ComponentScan("com.baeldung.springsecuredsockets.controllers") +public class SocketBrokerConfig extends AbstractWebSocketMessageBrokerConfigurer { + + @Override + public void configureMessageBroker(MessageBrokerRegistry config) { + config.enableSimpleBroker("/secured/history"); + config.setApplicationDestinationPrefixes("/spring-security-mvc-socket"); + } + + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + registry.addEndpoint("/secured/chat").withSockJS(); + } +} + diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java new file mode 100644 index 0000000000..a37dfb7672 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/SocketSecurityConfig.java @@ -0,0 +1,21 @@ +package com.baeldung.springsecuredsockets.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry; +import org.springframework.security.config.annotation.web.socket.AbstractSecurityWebSocketMessageBrokerConfigurer; + +@Configuration +public class SocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer { + + @Override + protected boolean sameOriginDisabled() { + return true; + } + + @Override + protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) { + messages + .simpDestMatchers("/secured/**").authenticated() + .anyMessage().authenticated(); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java new file mode 100644 index 0000000000..20311426c7 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/config/WebAppInitializer.java @@ -0,0 +1,24 @@ +package com.baeldung.springsecuredsockets.config; + +import org.hibernate.cfg.Configuration; +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +public class WebAppInitializer implements WebApplicationInitializer { + + @Override + public void onStartup(ServletContext container) throws ServletException { + AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); + context.register(AppConfig.class); + context.setServletContext(container); + + ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(context)); + servlet.setLoadOnStartup(1); + servlet.addMapping("/"); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java new file mode 100644 index 0000000000..f18162cba0 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/CsrfTokenController.java @@ -0,0 +1,19 @@ +package com.baeldung.springsecuredsockets.controllers; + +import org.springframework.security.web.csrf.CsrfToken; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletRequest; + +@Controller +public class CsrfTokenController { + @RequestMapping(value = "/csrf", method = RequestMethod.GET) + public @ResponseBody + String getCsrfToken(HttpServletRequest request) { + CsrfToken csrf = (CsrfToken) request.getAttribute(CsrfToken.class.getName()); + return csrf.getToken(); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java new file mode 100644 index 0000000000..68c5e306d8 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/controllers/SocketController.java @@ -0,0 +1,28 @@ +package com.baeldung.springsecuredsockets.controllers; + +import com.baeldung.springsecuredsockets.transfer.socket.Message; +import com.baeldung.springsecuredsockets.transfer.socket.OutputMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.SendTo; +import org.springframework.messaging.simp.SimpMessagingTemplate; +import org.springframework.stereotype.Controller; +import java.text.SimpleDateFormat; +import java.util.Date; + +@Controller +public class SocketController { + + @Autowired + private SimpMessagingTemplate simpMessagingTemplate; + private static final Logger log = LoggerFactory.getLogger(SocketController.class); + + @MessageMapping("/secured/chat") + @SendTo("/secured/history") + public OutputMessage send(Message msg) throws Exception { + OutputMessage out = new OutputMessage(msg.getFrom(), msg.getText(), new SimpleDateFormat("HH:mm").format(new Date())); + return out; + } +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java new file mode 100644 index 0000000000..09fee9a31b --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/Role.java @@ -0,0 +1,51 @@ +package com.baeldung.springsecuredsockets.domain; + +import javax.persistence.*; +import java.util.Set; + +@Entity +@Table(name = "role") +public class Role { + + @Id + //Slight increase in performance over GenerationType.IDENTITY + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "role_id", updatable = false, nullable = false) + private long role_id; + + @Column(name = "role", nullable = false) + private String role; + + /** + * Many to Many Example - see Role. + *

+ * One User many have many Roles. + * Each Role may be assigned to many Users. + */ + @ManyToMany(mappedBy = "roles", fetch = FetchType.EAGER) + private Set users; + + public long getRole_id() { + return role_id; + } + + public void setRole_id(long role_id) { + this.role_id = role_id; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public Set getUsers() { + return users; + } + + public void setUsers(Set users) { + this.users = users; + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java new file mode 100644 index 0000000000..8f84b2246d --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/domain/User.java @@ -0,0 +1,65 @@ +package com.baeldung.springsecuredsockets.domain; + +import javax.persistence.*; +import java.util.Set; + +//Custom User Model + +@Entity +@Table(name = "user") +public class User { + + @Id + //Slight increase in performance over GenerationType.IDENTITY + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "user_id", updatable = false, nullable = false) + private long user_id; + + @Column(name = "username", nullable = false) + private String username; + + @Column(name = "password", nullable = false) + private String password; + + /** + * Many to Many Example - see Role. + *

+ * One User many have many Roles. + * Each Role may be assigned to many Users. + */ + @ManyToMany(fetch = FetchType.EAGER) + @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) + private Set roles; + + public long getUser_id() { + return user_id; + } + + public void setUser_id(long user_id) { + this.user_id = user_id; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Set getRoles() { + return roles; + } + + public void setRoles(Set roles) { + this.roles = roles; + } +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java new file mode 100644 index 0000000000..fae5cfac6e --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/repositories/UserRepository.java @@ -0,0 +1,11 @@ +package com.baeldung.springsecuredsockets.repositories; + + +import com.baeldung.springsecuredsockets.domain.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { + User findByUsername(String username); +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java new file mode 100644 index 0000000000..0ab31a9c86 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomAccessDeniedHandler.java @@ -0,0 +1,23 @@ +package com.baeldung.springsecuredsockets.security; + +import org.springframework.http.HttpStatus; +import org.springframework.security.access.AccessDeniedException; +import org.springframework.security.web.access.AccessDeniedHandler; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * Applies to User Roles - not to login failures or unauthenticaed access attempts. + */ + +public class CustomAccessDeniedHandler implements AccessDeniedHandler { + + @Override + public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException exc) throws IOException, ServletException { + response.setStatus(HttpStatus.BAD_REQUEST.value()); + response.sendRedirect(request.getContextPath() + "/denied"); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java new file mode 100644 index 0000000000..576495bedf --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomDaoAuthenticationProvider.java @@ -0,0 +1,42 @@ +package com.baeldung.springsecuredsockets.security; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.authentication.dao.DaoAuthenticationProvider; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; + +public class CustomDaoAuthenticationProvider extends DaoAuthenticationProvider { + + Logger log = LoggerFactory.getLogger(CustomDaoAuthenticationProvider.class); + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + + String name = authentication.getName(); + String password = authentication.getCredentials().toString(); + UserDetails u = null; + + try { + u = getUserDetailsService().loadUserByUsername(name); + } catch (UsernameNotFoundException ex) { + log.error("User '" + name + "' not found"); + } catch (Exception e) { + log.error("Exception in CustomDaoAuthenticationProvider: " + e); + } + + if (u != null) { + if (u.getPassword().equals(password)) { + return new UsernamePasswordAuthenticationToken(u, password, u.getAuthorities()); + } + } + + throw new BadCredentialsException(messages.getMessage("CustomDaoAuthenticationProvider.badCredentials", "Bad credentials")); + + } +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java new file mode 100644 index 0000000000..281fd0f163 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLoginSuccessHandler.java @@ -0,0 +1,25 @@ +package com.baeldung.springsecuredsockets.security; + +import com.baeldung.springsecuredsockets.domain.User; +import com.baeldung.springsecuredsockets.repositories.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.AuthenticationSuccessHandler; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class CustomLoginSuccessHandler implements AuthenticationSuccessHandler { + + @Autowired + UserRepository userRepository; + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { + User user = userRepository.findByUsername(authentication.getName()); + response.setStatus(HttpStatus.OK.value()); + response.sendRedirect(request.getContextPath() + "/secured/success"); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java new file mode 100644 index 0000000000..620e75fb39 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomLogoutSuccessHandler.java @@ -0,0 +1,21 @@ +package com.baeldung.springsecuredsockets.security; + + +import org.springframework.http.HttpStatus; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class CustomLogoutSuccessHandler implements LogoutSuccessHandler { + @Override + public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) + throws IOException, ServletException { + + response.setStatus(HttpStatus.OK.value()); + response.sendRedirect(request.getContextPath() + "/index"); + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java new file mode 100644 index 0000000000..a0eb4d4bde --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/CustomUserDetailsService.java @@ -0,0 +1,51 @@ +package com.baeldung.springsecuredsockets.security; + +import com.baeldung.springsecuredsockets.domain.Role; +import com.baeldung.springsecuredsockets.domain.User; +import com.baeldung.springsecuredsockets.repositories.UserRepository; +import com.baeldung.springsecuredsockets.transfer.user.CustomUserDetails; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.HashSet; + +@Service() +public class CustomUserDetailsService implements UserDetailsService { + + Logger log = LoggerFactory.getLogger(CustomUserDetailsService.class); + + @Autowired + private UserRepository userRepository; + + public CustomUserDetailsService() { + super(); + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + try { + User user = userRepository.findByUsername(username); + if (user != null) return new CustomUserDetails(user, getAuthorities(user)); + } catch (Exception ex) { + log.error("Exception in CustomUserDetailsService: " + ex); + } + return null; + } + + private Collection getAuthorities(User user) { + Collection authorities = new HashSet<>(); + for (Role role : user.getRoles()) { + GrantedAuthority grantedAuthority = new SimpleGrantedAuthority(role.getRole()); + authorities.add(grantedAuthority); + } + return authorities; + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java new file mode 100644 index 0000000000..2fcc0d254a --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/security/SecurityWebApplicationInitializer.java @@ -0,0 +1,12 @@ +package com.baeldung.springsecuredsockets.security; + +import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; + +/** + * This is required to enable springSecurityFilterChain. + * + * Remember that Spring Security utilizes filters to intercept and manage requests + * according to the specified authorization and authentication rules + */ + +public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java new file mode 100644 index 0000000000..024b386164 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/Message.java @@ -0,0 +1,20 @@ +package com.baeldung.springsecuredsockets.transfer.socket; + +public class Message { + + private String from; + private String text; + + public String getFrom() { + return from; + } + public void setFrom(String from) { + this.from = from; + } + public String getText() { + return text; + } + public void setText(String text) { + this.text = text; + } +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java new file mode 100644 index 0000000000..1bfb8eabe4 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/socket/OutputMessage.java @@ -0,0 +1,17 @@ +package com.baeldung.springsecuredsockets.transfer.socket; + +public class OutputMessage extends Message { + + private String time; + + public OutputMessage(final String from, final String text, final String time) { + setFrom(from); + setText(text); + this.time = time; + } + + public String getTime() { + return time; + } + public void setTime(String time) { this.time = time; } +} diff --git a/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java new file mode 100644 index 0000000000..18ccbb4586 --- /dev/null +++ b/spring-security-mvc-socket/src/main/java/com/baeldung/springsecuredsockets/transfer/user/CustomUserDetails.java @@ -0,0 +1,25 @@ +package com.baeldung.springsecuredsockets.transfer.user; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.userdetails.User; + +import java.util.Collection; + +public class CustomUserDetails extends User { + + private com.baeldung.springsecuredsockets.domain.User user; + + public CustomUserDetails(com.baeldung.springsecuredsockets.domain.User user, Collection authorities) { + super(user.getUsername(), user.getPassword(), authorities); + this.user = user; + } + + public CustomUserDetails(com.baeldung.springsecuredsockets.domain.User user, boolean enabled, boolean accountNonExpired, boolean credentialsNonExpired, boolean accountNonLocked, Collection authorities) { + super(user.getUsername(), user.getPassword(), enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities); + this.user = user; + } + + public com.baeldung.springsecuredsockets.domain.User getUser() { + return user; + } +} \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/resources/data.sql b/spring-security-mvc-socket/src/main/resources/data.sql new file mode 100644 index 0000000000..5137646609 --- /dev/null +++ b/spring-security-mvc-socket/src/main/resources/data.sql @@ -0,0 +1,18 @@ +INSERT INTO user (user_id, username, password) +VALUES (1, 'user', 'password'); +INSERT INTO user (user_id, username, password) +VALUES (2, 'admin','password'); +INSERT INTO user (user_id, username, password) +VALUES (3, 'mary','password'); + +INSERT INTO role (role_id, role) +VALUES (1, 'USER'); +INSERT INTO role (role_id, role) +VALUES (2, 'ADMIN'); + +INSERT INTO user_role (id, user_id, role_id) +VALUES (1, 1, 1); +INSERT INTO user_role (id, user_id, role_id) +VALUES (2, 2, 2); +INSERT INTO user_role (id, user_id, role_id) +VALUES (3, 3, 1); \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/resources/schema.sql b/spring-security-mvc-socket/src/main/resources/schema.sql new file mode 100644 index 0000000000..2479b1c711 --- /dev/null +++ b/spring-security-mvc-socket/src/main/resources/schema.sql @@ -0,0 +1,26 @@ +DROP TABLE IF EXISTS user; +CREATE TABLE user ( + user_id INT(11) NOT NULL AUTO_INCREMENT, + username VARCHAR(45) NOT NULL , + password VARCHAR(45) NOT NULL , + UNIQUE KEY uni_user_username (username), + PRIMARY KEY (user_id) +); + +DROP TABLE IF EXISTS role; +CREATE TABLE role ( + role_id INT(11) NOT NULL AUTO_INCREMENT, + role VARCHAR(45) NOT NULL, + UNIQUE KEY uni_role_role (role), + PRIMARY KEY (role_id) +); + +/** JOIN TABLES */ + +DROP TABLE IF EXISTS user_role; +CREATE TABLE user_role( + id INT(11) NOT NULL AUTO_INCREMENT, + user_id INT(11) NOT NULL, + role_id INT(11) NOT NULL, + PRIMARY KEY (id) +); \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp new file mode 100644 index 0000000000..d61148b04f --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/denied.jsp @@ -0,0 +1,18 @@ +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> + + + + + Spring Secured Sockets + " rel="stylesheet"> + + + +

ACCESS DENIED!

+
+
+ Click to login. + + \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp new file mode 100644 index 0000000000..d83338680e --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/index.jsp @@ -0,0 +1,30 @@ +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> + + + + + Spring Secured Sockets + " rel="stylesheet"> + + + + + + + + + + + + + +

Welcome!

+
+ {{greeting}} +
+
+ Click to login. + + \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp new file mode 100644 index 0000000000..d50059c674 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/login.jsp @@ -0,0 +1,45 @@ +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> + + + + + Spring Secured Sockets + " rel="stylesheet"> + + + + + + + + + + + + + + + +

JSP Login Form


+
+ + + + + + + + + + + + +
User:
Password:
+
+ + + + + \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp new file mode 100644 index 0000000000..b5807d74a6 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/socket.jsp @@ -0,0 +1,51 @@ +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> + + + + + Spring Secured Sockets + " rel="stylesheet"> + + + + + + + + + + + + + + + +

Socket Chat

+ +
+
+ +
+
+
+ + + +
+
+
+ + +

+
+
+ +Click to go back! +Click to start over (you will still be authenticated)! + + + + + \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp new file mode 100644 index 0000000000..27e8f7aa44 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/WEB-INF/jsp/success.jsp @@ -0,0 +1,31 @@ +<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %> + + + + + Spring Secured Sockets + " rel="stylesheet"> + + + + + + + + + + + + + +

Congrats! You've logged in.

+ + Click to chat! + Click to start over (you will still be authenticated)! + + + + + \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js new file mode 100644 index 0000000000..71a618a637 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/app.js @@ -0,0 +1,5 @@ +'use strict'; + +var angularApp = angular.module('angularApp', ['ngRoute']); + + diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js new file mode 100644 index 0000000000..04c02e339b --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/indexController.js @@ -0,0 +1,12 @@ +'use strict'; + +angularApp + .controller('indexController', function ($scope) { + $scope.greeting = ''; + + $scope.initialize = function () { + $scope.greeting = "Howdy!" + }; + + $scope.initialize(); + }); \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/loginController.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/loginController.js new file mode 100644 index 0000000000..07187d5327 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/loginController.js @@ -0,0 +1,6 @@ +'use strict'; + +angularApp + .controller('loginController', function ($scope) { + + }); diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js new file mode 100644 index 0000000000..395bf85c4a --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/socketController.js @@ -0,0 +1,37 @@ +'use strict'; + +angularApp + .controller('socketController', function ($scope, SocketService) { + + $scope.stompClient = null; + $scope.sendEndpoint = '/secured/chat'; + $scope.subscribeEndpoint = '/secured/history'; + $scope.elems = { + connect: 'connect', + from: 'from', + text: 'text', + disconnect: 'disconnect', + conversationDiv: 'conversationDiv', + response: 'response' + }; + + $scope.connect = function (context) { + $scope.sendEndpoint = '/secured/chat'; + $scope.sendEndpoint = context + $scope.sendEndpoint ; + $scope.stompClient = SocketService.connect($scope.sendEndpoint, $scope.elems); + }; + + $scope.subscribe = function () { + $scope.stompClient.subscribe($scope.subscribeEndpoint, function (msgOut) { + SocketService.messageOut(JSON.parse(msgOut.body), $scope.elems); + }); + }; + + $scope.disconnect = function () { + SocketService.disconnect($scope.elems, $scope.stompClient); + }; + + $scope.sendMessage = function () { + SocketService.sendMessage( $scope.elems, $scope.stompClient, $scope.sendEndpoint); + }; + }); \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js new file mode 100644 index 0000000000..ccb972202d --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/controllers/successController.js @@ -0,0 +1,13 @@ +'use strict'; + +angularApp + .controller('successController', function ($scope) { + + $scope.successMsg = ''; + + $scope.initialize = function () { + $scope.successMsg = "You've logged in!"; + }; + + $scope.initialize(); + }); diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js new file mode 100644 index 0000000000..70644f996d --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/routes/router.js @@ -0,0 +1,19 @@ +'use strict'; + +angularApp + .config(function ($routeProvider) { + $routeProvider + .when('/index', { + controller: 'indexController' + }) + .when('/login', { + controller: 'loginController' + }) + .when('/sockets', { + controller: 'socketController' + }) + .when('/success', { + controller: 'successController' + }) + .otherwise('/index'); + }); \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js b/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js new file mode 100644 index 0000000000..56930808a3 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/scripts/services/SocketService.js @@ -0,0 +1,46 @@ +'use strict'; + +function SocketService() { + var that = this, + idHelper = function(context) { + return document.getElementById(context); + }; + + that.setConnected = function (elems, connected) { + idHelper(elems.connect).disabled = connected; + idHelper(elems.disconnect).disabled = !connected; + idHelper(elems.conversationDiv).style.visibility = connected ? 'visible' : 'hidden'; + idHelper(elems.response).innerHTML = ''; + }; + + that.connect = function (endpoint, elems) { + var socket = new SockJS(endpoint), stompClient = Stomp.over(socket); + stompClient.connect({}, function (frame) { + that.setConnected(elems, true); + }); + return stompClient; + }; + + that.disconnect = function (elems, stompClient) { + if (stompClient !== null && stompClient !== undefined) stompClient.disconnect(); + that.setConnected(elems, false); + }; + + that.sendMessage = function (elems, stompClient, endpoint) { + stompClient.send(endpoint, {}, + JSON.stringify({ + 'from': idHelper(elems.from).value, + 'text': idHelper(elems.text).value + })); + }; + + that.messageOut = function (msg, elems) { + var r = idHelper(elems.response), p = document.createElement('p'); + p.style.wordWrap = 'break-word'; + p.appendChild(document.createTextNode(msg.from + ': ' + msg.text + ' (' + msg.time + ')')); + r.appendChild(p); + }; +} + +angularApp + .service('SocketService', SocketService); \ No newline at end of file diff --git a/spring-security-mvc-socket/src/main/webapp/resources/styles/style.css b/spring-security-mvc-socket/src/main/webapp/resources/styles/style.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js b/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js new file mode 100644 index 0000000000..624dcb5d7b --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular-route.min.js @@ -0,0 +1,16 @@ +/* + AngularJS v1.5.7 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(F,d){'use strict';function x(t,l,g){return{restrict:"ECA",terminal:!0,priority:400,transclude:"element",link:function(b,e,a,c,k){function p(){m&&(g.cancel(m),m=null);h&&(h.$destroy(),h=null);n&&(m=g.leave(n),m.then(function(){m=null}),n=null)}function A(){var a=t.current&&t.current.locals;if(d.isDefined(a&&a.$template)){var a=b.$new(),c=t.current;n=k(a,function(a){g.enter(a,null,n||e).then(function(){!d.isDefined(z)||z&&!b.$eval(z)||l()});p()});h=c.scope=a;h.$emit("$viewContentLoaded"); +h.$eval(s)}else p()}var h,n,m,z=a.autoscroll,s=a.onload||"";b.$on("$routeChangeSuccess",A);A()}}}function w(d,l,g){return{restrict:"ECA",priority:-400,link:function(b,e){var a=g.current,c=a.locals;e.html(c.$template);var k=d(e.contents());if(a.controller){c.$scope=b;var p=l(a.controller,c);a.controllerAs&&(b[a.controllerAs]=p);e.data("$ngControllerController",p);e.children().data("$ngControllerController",p)}b[a.resolveAs||"$resolve"]=c;k(b)}}}var C=d.isArray,D=d.isObject,s=d.module("ngRoute",["ng"]).provider("$route", +function(){function t(b,e){return d.extend(Object.create(b),e)}function l(b,d){var a=d.caseInsensitiveMatch,c={originalPath:b,regexp:b},g=c.keys=[];b=b.replace(/([().])/g,"\\$1").replace(/(\/)?:(\w+)(\*\?|[\?\*])?/g,function(b,a,d,c){b="?"===c||"*?"===c?"?":null;c="*"===c||"*?"===c?"*":null;g.push({name:d,optional:!!b});a=a||"";return""+(b?"":a)+"(?:"+(b?a:"")+(c&&"(.+?)"||"([^/]+)")+(b||"")+")"+(b||"")}).replace(/([\/$\*])/g,"\\$1");c.regexp=new RegExp("^"+b+"$",a?"i":"");return c}var g={};this.when= +function(b,e){var a;a=void 0;if(C(e)){a=a||[];for(var c=0,k=e.length;c").append(a).html();try{return a[0].nodeType===Na?M(d):d.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(c){return M(d)}}function zc(a){try{return decodeURIComponent(a)}catch(b){}}function Ac(a){var b={};r((a||"").split("&"),function(a){var c,e,f;a&&(e=a=a.replace(/\+/g,"%20"),c=a.indexOf("="), +-1!==c&&(e=a.substring(0,c),f=a.substring(c+1)),e=zc(e),x(e)&&(f=x(f)?zc(f):!0,sa.call(b,e)?J(b[e])?b[e].push(f):b[e]=[b[e],f]:b[e]=f))});return b}function Tb(a){var b=[];r(a,function(a,c){J(a)?r(a,function(a){b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))}):b.push(ja(c,!0)+(!0===a?"":"="+ja(a,!0)))});return b.length?b.join("&"):""}function qb(a){return ja(a,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ja(a,b){return encodeURIComponent(a).replace(/%40/gi,"@").replace(/%3A/gi, +":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,b?"%20":"+")}function fe(a,b){var d,c,e=Oa.length;for(c=0;c/,">"));}b=b||[];b.unshift(["$provide",function(b){b.value("$rootElement",a)}]);d.debugInfoEnabled&&b.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);b.unshift("ng");c=db(b,d.strictDi);c.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,d,c){a.$apply(function(){b.data("$injector",c);d(b)(a)})}]); +return c},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;E&&e.test(E.name)&&(d.debugInfoEnabled=!0,E.name=E.name.replace(e,""));if(E&&!f.test(E.name))return c();E.name=E.name.replace(f,"");ea.resumeBootstrap=function(a){r(a,function(a){b.push(a)});return c()};z(ea.resumeDeferredBootstrap)&&ea.resumeDeferredBootstrap()}function he(){E.name="NG_ENABLE_DEBUG_INFO!"+E.name;E.location.reload()}function ie(a){a=ea.element(a).injector();if(!a)throw za("test");return a.get("$$testability")}function Cc(a, +b){b=b||"_";return a.replace(je,function(a,c){return(c?b:"")+a.toLowerCase()})}function ke(){var a;if(!Dc){var b=rb();(pa=w(b)?E.jQuery:b?E[b]:void 0)&&pa.fn.on?(B=pa,R(pa.fn,{scope:Pa.scope,isolateScope:Pa.isolateScope,controller:Pa.controller,injector:Pa.injector,inheritedData:Pa.inheritedData}),a=pa.cleanData,pa.cleanData=function(b){for(var c,e=0,f;null!=(f=b[e]);e++)(c=pa._data(f,"events"))&&c.$destroy&&pa(f).triggerHandler("$destroy");a(b)}):B=U;ea.element=B;Dc=!0}}function sb(a,b,d){if(!a)throw za("areq", +b||"?",d||"required");return a}function Qa(a,b,d){d&&J(a)&&(a=a[a.length-1]);sb(z(a),b,"not a function, got "+(a&&"object"===typeof a?a.constructor.name||"Object":typeof a));return a}function Ra(a,b){if("hasOwnProperty"===a)throw za("badname",b);}function Ec(a,b,d){if(!b)return a;b=b.split(".");for(var c,e=a,f=b.length,g=0;g")+c[2];for(c=c[0];c--;)d=d.lastChild;f=ab(f,d.childNodes);d=e.firstChild;d.textContent=""}else f.push(b.createTextNode(a));e.textContent="";e.innerHTML="";r(f,function(a){e.appendChild(a)}); +return e}function Pc(a,b){var d=a.parentNode;d&&d.replaceChild(b,a);b.appendChild(a)}function U(a){if(a instanceof U)return a;var b;F(a)&&(a=W(a),b=!0);if(!(this instanceof U)){if(b&&"<"!=a.charAt(0))throw Wb("nosel");return new U(a)}if(b){b=E.document;var d;a=(d=Of.exec(a))?[b.createElement(d[1])]:(d=Oc(a,b))?d.childNodes:[]}Qc(this,a)}function Xb(a){return a.cloneNode(!0)}function wb(a,b){b||fb(a);if(a.querySelectorAll)for(var d=a.querySelectorAll("*"),c=0,e=d.length;c=Ba?!1:"function"===typeof a&&/^(?:class\s|constructor\()/.test(Function.prototype.toString.call(a)+" ");return d?(c.unshift(null),new (Function.prototype.bind.apply(a,c))):a.apply(b,c)},instantiate:function(a,b,c){var d=J(a)?a[a.length-1]:a;a=e(a,b,c);a.unshift(null);return new (Function.prototype.bind.apply(d, +a))},get:d,annotate:db.$$annotate,has:function(b){return n.hasOwnProperty(b+"Provider")||a.hasOwnProperty(b)}}}b=!0===b;var k={},l=[],m=new Sa([],!0),n={$provide:{provider:d(c),factory:d(f),service:d(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:d(function(a,b){return f(a,da(b),!1)}),constant:d(function(a,b){Ra(a,"constant");n[a]=b;s[a]=b}),decorator:function(a,b){var c=p.get(a+"Provider"),d=c.$get;c.$get=function(){var a=I.invoke(d,c);return I.invoke(b,null, +{$delegate:a})}}}},p=n.$injector=h(n,function(a,b){ea.isString(b)&&l.push(b);throw Ha("unpr",l.join(" <- "));}),s={},V=h(s,function(a,b){var c=p.get(a+"Provider",b);return I.invoke(c.$get,c,void 0,a)}),I=V;n.$injectorProvider={$get:da(V)};var q=g(a),I=V.get("$injector");I.strictDi=b;r(q,function(a){a&&I.invoke(a)});return I}function Ye(){var a=!0;this.disableAutoScrolling=function(){a=!1};this.$get=["$window","$location","$rootScope",function(b,d,c){function e(a){var b=null;Array.prototype.some.call(a, +function(a){if("a"===ua(a))return b=a,!0});return b}function f(a){if(a){a.scrollIntoView();var c;c=g.yOffset;z(c)?c=c():Qb(c)?(c=c[0],c="fixed"!==b.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):S(c)||(c=0);c&&(a=a.getBoundingClientRect().top,b.scrollBy(0,a-c))}else b.scrollTo(0,0)}function g(a){a=F(a)?a:d.hash();var b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=b.document;a&&c.$watch(function(){return d.hash()},function(a,b){a=== +b&&""===a||Qf(function(){c.$evalAsync(g)})});return g}]}function hb(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;J(a)&&(a=a.join(" "));J(b)&&(b=b.join(" "));return a+" "+b}function Zf(a){F(a)&&(a=a.split(" "));var b=T();r(a,function(a){a.length&&(b[a]=!0)});return b}function Ia(a){return H(a)?a:{}}function $f(a,b,d,c){function e(a){try{a.apply(null,ta.call(arguments,1))}finally{if(V--,0===V)for(;I.length;)try{I.pop()()}catch(b){d.error(b)}}}function f(){y=null;g();h()}function g(){q=P(); +q=w(q)?null:q;na(q,D)&&(q=D);D=q}function h(){if(v!==k.url()||K!==q)v=k.url(),K=q,r(L,function(a){a(k.url(),q)})}var k=this,l=a.location,m=a.history,n=a.setTimeout,p=a.clearTimeout,s={};k.isMock=!1;var V=0,I=[];k.$$completeOutstandingRequest=e;k.$$incOutstandingRequestCount=function(){V++};k.notifyWhenNoOutstandingRequests=function(a){0===V?a():I.push(a)};var q,K,v=l.href,u=b.find("base"),y=null,P=c.history?function(){try{return m.state}catch(a){}}:A;g();K=q;k.url=function(b,d,e){w(e)&&(e=null);l!== +a.location&&(l=a.location);m!==a.history&&(m=a.history);if(b){var f=K===e;if(v===b&&(!c.history||f))return k;var h=v&&Ja(v)===Ja(b);v=b;K=e;!c.history||h&&f?(h||(y=b),d?l.replace(b):h?(d=l,e=b.indexOf("#"),e=-1===e?"":b.substr(e),d.hash=e):l.href=b,l.href!==b&&(y=b)):(m[d?"replaceState":"pushState"](e,"",b),g(),K=q);y&&(y=b);return k}return y||l.href.replace(/%27/g,"'")};k.state=function(){return q};var L=[],C=!1,D=null;k.onUrlChange=function(b){if(!C){if(c.history)B(a).on("popstate",f);B(a).on("hashchange", +f);C=!0}L.push(b);return b};k.$$applicationDestroyed=function(){B(a).off("hashchange popstate",f)};k.$$checkUrlChange=h;k.baseHref=function(){var a=u.attr("href");return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};k.defer=function(a,b){var c;V++;c=n(function(){delete s[c];e(a)},b||0);s[c]=!0;return c};k.defer.cancel=function(a){return s[a]?(delete s[a],p(a),e(A),!0):!1}}function ef(){this.$get=["$window","$log","$sniffer","$document",function(a,b,d,c){return new $f(a,c,b,d)}]}function ff(){this.$get= +function(){function a(a,c){function e(a){a!=n&&(p?p==a&&(p=a.n):p=a,f(a.n,a.p),f(a,n),n=a,n.n=null)}function f(a,b){a!=b&&(a&&(a.p=b),b&&(b.n=a))}if(a in b)throw O("$cacheFactory")("iid",a);var g=0,h=R({},c,{id:a}),k=T(),l=c&&c.capacity||Number.MAX_VALUE,m=T(),n=null,p=null;return b[a]={put:function(a,b){if(!w(b)){if(ll&&this.remove(p.key);return b}},get:function(a){if(l";b=la.firstChild.attributes;var d=b[0];b.removeNamedItem(d.name);d.value=c;a.attributes.setNamedItem(d)}function N(a,b){try{a.addClass(b)}catch(c){}}function ba(a,b,c,d,e){a instanceof B||(a=B(a));for(var f=/\S+/,g=0,h=a.length;g< +h;g++){var k=a[g];k.nodeType===Na&&k.nodeValue.match(f)&&Pc(k,a[g]=E.document.createElement("span"))}var l=t(a,b,a,c,d,e);ba.$$addScopeClass(a);var n=null;return function(b,c,d){sb(b,"scope");e&&e.needsNewScope&&(b=b.$parent.$new());d=d||{};var f=d.parentBoundTranscludeFn,g=d.transcludeControllers;d=d.futureParentElement;f&&f.$$boundTransclude&&(f=f.$$boundTransclude);n||(n=(d=d&&d[0])?"foreignobject"!==ua(d)&&ka.call(d).match(/SVG/)?"svg":"html":"html");d="html"!==n?B(ca(n,B("
").append(a).html())): +c?Pa.clone.call(a):a;if(g)for(var h in g)d.data("$"+h+"Controller",g[h].instance);ba.$$addScopeInfo(d,b);c&&c(d,b);l&&l(b,d,d,f);return d}}function t(a,b,c,d,e,f){function g(a,c,d,e){var f,k,l,n,m,v,q;if(p)for(q=Array(c.length),n=0;nu.priority)break;if(x=u.scope)u.templateUrl||(H(x)?(X("new/isolated scope",s||v,u,N),s=u):X("new/isolated scope",s,u,N)),v=v||u;G=u.name;if(!Ca&&(u.replace&&(u.templateUrl||u.template)||u.transclude&&!u.$$tlb)){for(x=A+1;Ca=a[x++];)if(Ca.transclude&&!Ca.$$tlb||Ca.replace&& +(Ca.templateUrl||Ca.template)){wa=!0;break}Ca=!0}!u.templateUrl&&u.controller&&(x=u.controller,q=q||T(),X("'"+G+"' controllers",q[G],u,N),q[G]=u);if(x=u.transclude)if(D=!0,u.$$tlb||(X("transclusion",C,u,N),C=u),"element"==x)y=!0,p=u.priority,Q=N,N=d.$$element=B(ba.$$createComment(G,d[G])),b=N[0],da(f,ta.call(Q,0),b),Q[0].$$parentNode=Q[0].parentNode,P=ac(wa,Q,e,p,g&&g.name,{nonTlbTranscludeDirective:C});else{var M=T();Q=B(Xb(b)).contents();if(H(x)){Q=[];var S=T(),Da=T();r(x,function(a,b){var c="?"=== +a.charAt(0);a=c?a.substring(1):a;S[a]=b;M[b]=null;Da[b]=c});r(N.contents(),function(a){var b=S[xa(ua(a))];b?(Da[b]=!0,M[b]=M[b]||[],M[b].push(a)):Q.push(a)});r(Da,function(a,b){if(!a)throw fa("reqslot",b);});for(var Y in M)M[Y]&&(M[Y]=ac(wa,M[Y],e))}N.empty();P=ac(wa,Q,e,void 0,void 0,{needsNewScope:u.$$isolateScope||u.$$newScope});P.$$slots=M}if(u.template)if(I=!0,X("template",L,u,N),L=u,x=z(u.template)?u.template(N,d):u.template,x=ra(x),u.replace){g=u;Q=Vb.test(x)?$c(ca(u.templateNamespace,W(x))): +[];b=Q[0];if(1!=Q.length||1!==b.nodeType)throw fa("tplrt",G,"");da(f,N,b);E={$attr:{}};x=$b(b,[],E);var aa=a.splice(A+1,a.length-(A+1));(s||v)&&ad(x,s,v);a=a.concat(x).concat(aa);U(d,E);E=a.length}else N.html(x);if(u.templateUrl)I=!0,X("template",L,u,N),L=u,u.replace&&(g=u),m=$(a.splice(A,a.length-A),N,d,f,D&&P,h,k,{controllerDirectives:q,newScopeDirective:v!==u&&v,newIsolateScopeDirective:s,templateDirective:L,nonTlbTranscludeDirective:C}),E=a.length;else if(u.compile)try{t=u.compile(N,d,P);var Z= +u.$$originalDirective||u;z(t)?n(null,bb(Z,t),F,Ta):t&&n(bb(Z,t.pre),bb(Z,t.post),F,Ta)}catch(ea){c(ea,va(N))}u.terminal&&(m.terminal=!0,p=Math.max(p,u.priority))}m.scope=v&&!0===v.scope;m.transcludeOnThisElement=D;m.templateOnThisElement=I;m.transclude=P;l.hasElementTranscludeDirective=y;return m}function ib(a,b,c,d){var e;if(F(b)){var f=b.match(l);b=b.substring(f[0].length);var g=f[1]||f[3],f="?"===f[2];"^^"===g?c=c.parent():e=(e=d&&d[b])&&e.instance;if(!e){var h="$"+b+"Controller";e=g?c.inheritedData(h): +c.data(h)}if(!e&&!f)throw fa("ctreq",b,a);}else if(J(b))for(e=[],g=0,f=b.length;gm.priority)&&-1!=m.restrict.indexOf(g)){l&&(m=Rb(m,{$$start:l,$$end:n}));if(!m.$$bindings){var q=m,s=m,L=m.name,u={isolateScope:null,bindToController:null};H(s.scope)&&(!0===s.bindToController?(u.bindToController=d(s.scope,L,!0),u.isolateScope={}):u.isolateScope=d(s.scope,L,!1));H(s.bindToController)&&(u.bindToController= +d(s.bindToController,L,!0));if(H(u.bindToController)){var C=s.controller,D=s.controllerAs;if(!C)throw fa("noctrl",L);if(!Xc(C,D))throw fa("noident",L);}var N=q.$$bindings=u;H(N.isolateScope)&&(m.$$isolateBindings=N.isolateScope)}b.push(m);k=m}}catch(G){c(G)}}return k}function S(b){if(f.hasOwnProperty(b))for(var c=a.get(b+"Directive"),d=0,e=c.length;d"+b+"";return c.childNodes[0].childNodes;default:return b}}function ea(a,b){if("srcdoc"==b)return L.HTML;var c=ua(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return L.RESOURCE_URL}function ia(a, +c,d,e,f){var g=ea(a,e);f=k[e]||f;var h=b(d,!0,g,f);if(h){if("multiple"===e&&"select"===ua(a))throw fa("selmulti",va(a));c.push({priority:100,compile:function(){return{pre:function(a,c,k){c=k.$$observers||(k.$$observers=T());if(m.test(e))throw fa("nodomevents");var l=k[e];l!==d&&(h=l&&b(l,!0,g,f),d=l);h&&(k[e]=h(a),(c[e]||(c[e]=[])).$$inter=!0,(k.$$observers&&k.$$observers[e].$$scope||a).$watch(h,function(a,b){"class"===e&&a!=b?k.$updateClass(a,b):k.$set(e,a)}))}}}})}}function da(a,b,c){var d=b[0], +e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g=b)return a;for(;b--;)8===a[b].nodeType&&bg.call(a,b,1);return a}function Xc(a,b){if(b&&F(b))return b;if(F(a)){var d=dd.exec(a);if(d)return d[3]}}function gf(){var a={},b=!1;this.has=function(b){return a.hasOwnProperty(b)};this.register=function(b,c){Ra(b,"controller");H(b)?R(a,b):a[b]=c};this.allowGlobals=function(){b=!0};this.$get=["$injector","$window",function(d,c){function e(a, +b,c,d){if(!a||!H(a.$scope))throw O("$controller")("noscp",d,b);a.$scope[b]=c}return function(f,g,h,k){var l,m,n;h=!0===h;k&&F(k)&&(n=k);if(F(f)){k=f.match(dd);if(!k)throw cg("ctrlfmt",f);m=k[1];n=n||k[3];f=a.hasOwnProperty(m)?a[m]:Ec(g.$scope,m,!0)||(b?Ec(c,m,!0):void 0);Qa(f,m,!0)}if(h)return h=(J(f)?f[f.length-1]:f).prototype,l=Object.create(h||null),n&&e(g,n,l,m||f.name),R(function(){var a=d.invoke(f,l,g,m);a!==l&&(H(a)||z(a))&&(l=a,n&&e(g,n,l,m||f.name));return l},{instance:l,identifier:n});l= +d.instantiate(f,g,m);n&&e(g,n,l,m||f.name);return l}}]}function hf(){this.$get=["$window",function(a){return B(a.document)}]}function jf(){this.$get=["$log",function(a){return function(b,d){a.error.apply(a,arguments)}}]}function cc(a){return H(a)?ia(a)?a.toISOString():cb(a):a}function of(){this.$get=function(){return function(a){if(!a)return"";var b=[];tc(a,function(a,c){null===a||w(a)||(J(a)?r(a,function(a){b.push(ja(c)+"="+ja(cc(a)))}):b.push(ja(c)+"="+ja(cc(a))))});return b.join("&")}}}function pf(){this.$get= +function(){return function(a){function b(a,e,f){null===a||w(a)||(J(a)?r(a,function(a,c){b(a,e+"["+(H(a)?c:"")+"]")}):H(a)&&!ia(a)?tc(a,function(a,c){b(a,e+(f?"":"[")+c+(f?"":"]"))}):d.push(ja(e)+"="+ja(cc(a))))}if(!a)return"";var d=[];b(a,"",!0);return d.join("&")}}}function dc(a,b){if(F(a)){var d=a.replace(dg,"").trim();if(d){var c=b("Content-Type");(c=c&&0===c.indexOf(ed))||(c=(c=d.match(eg))&&fg[c[0]].test(d));c&&(a=xc(d))}}return a}function fd(a){var b=T(),d;F(a)?r(a.split("\n"),function(a){d= +a.indexOf(":");var e=M(W(a.substr(0,d)));a=W(a.substr(d+1));e&&(b[e]=b[e]?b[e]+", "+a:a)}):H(a)&&r(a,function(a,d){var f=M(d),g=W(a);f&&(b[f]=b[f]?b[f]+", "+g:g)});return b}function gd(a){var b;return function(d){b||(b=fd(a));return d?(d=b[M(d)],void 0===d&&(d=null),d):b}}function hd(a,b,d,c){if(z(c))return c(a,b,d);r(c,function(c){a=c(a,b,d)});return a}function nf(){var a=this.defaults={transformResponse:[dc],transformRequest:[function(a){return H(a)&&"[object File]"!==ka.call(a)&&"[object Blob]"!== +ka.call(a)&&"[object FormData]"!==ka.call(a)?cb(a):a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ga(ec),put:ga(ec),patch:ga(ec)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer"},b=!1;this.useApplyAsync=function(a){return x(a)?(b=!!a,this):b};var d=!0;this.useLegacyPromiseExtensions=function(a){return x(a)?(d=!!a,this):d};var c=this.interceptors=[];this.$get=["$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector", +function(e,f,g,h,k,l){function m(b){function c(a){var b=R({},a);b.data=hd(a.data,a.headers,a.status,f.transformResponse);a=a.status;return 200<=a&&300>a?b:k.reject(b)}function e(a,b){var c,d={};r(a,function(a,e){z(a)?(c=a(b),null!=c&&(d[e]=c)):d[e]=a});return d}if(!H(b))throw O("$http")("badreq",b);if(!F(b.url))throw O("$http")("badreq",b.url);var f=R({method:"get",transformRequest:a.transformRequest,transformResponse:a.transformResponse,paramSerializer:a.paramSerializer},b);f.headers=function(b){var c= +a.headers,d=R({},b.headers),f,g,h,c=R({},c.common,c[M(b.method)]);a:for(f in c){g=M(f);for(h in d)if(M(h)===g)continue a;d[f]=c[f]}return e(d,ga(b))}(b);f.method=ub(f.method);f.paramSerializer=F(f.paramSerializer)?l.get(f.paramSerializer):f.paramSerializer;var g=[function(b){var d=b.headers,e=hd(b.data,gd(d),void 0,b.transformRequest);w(e)&&r(d,function(a,b){"content-type"===M(b)&&delete d[b]});w(b.withCredentials)&&!w(a.withCredentials)&&(b.withCredentials=a.withCredentials);return n(b,e).then(c, +c)},void 0],h=k.when(f);for(r(V,function(a){(a.request||a.requestError)&&g.unshift(a.request,a.requestError);(a.response||a.responseError)&&g.push(a.response,a.responseError)});g.length;){b=g.shift();var m=g.shift(),h=h.then(b,m)}d?(h.success=function(a){Qa(a,"fn");h.then(function(b){a(b.data,b.status,b.headers,f)});return h},h.error=function(a){Qa(a,"fn");h.then(null,function(b){a(b.data,b.status,b.headers,f)});return h}):(h.success=id("success"),h.error=id("error"));return h}function n(c,d){function g(a){if(a){var c= +{};r(a,function(a,d){c[d]=function(c){function d(){a(c)}b?h.$applyAsync(d):h.$$phase?d():h.$apply(d)}});return c}}function l(a,c,d,e){function f(){n(c,a,d,e)}D&&(200<=a&&300>a?D.put(Q,[a,c,fd(d),e]):D.remove(Q));b?h.$applyAsync(f):(f(),h.$$phase||h.$apply())}function n(a,b,d,e){b=-1<=b?b:0;(200<=b&&300>b?L.resolve:L.reject)({data:a,status:b,headers:gd(d),config:c,statusText:e})}function y(a){n(a.data,a.status,ga(a.headers()),a.statusText)}function V(){var a=m.pendingRequests.indexOf(c);-1!==a&&m.pendingRequests.splice(a, +1)}var L=k.defer(),C=L.promise,D,G,Aa=c.headers,Q=p(c.url,c.paramSerializer(c.params));m.pendingRequests.push(c);C.then(V,V);!c.cache&&!a.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(D=H(c.cache)?c.cache:H(a.cache)?a.cache:s);D&&(G=D.get(Q),x(G)?G&&z(G.then)?G.then(y,y):J(G)?n(G[1],G[0],ga(G[2]),G[3]):n(G,200,{},"OK"):D.put(Q,C));w(G)&&((G=jd(c.url)?f()[c.xsrfCookieName||a.xsrfCookieName]:void 0)&&(Aa[c.xsrfHeaderName||a.xsrfHeaderName]=G),e(c.method,Q,d,l,Aa,c.timeout,c.withCredentials, +c.responseType,g(c.eventHandlers),g(c.uploadEventHandlers)));return C}function p(a,b){0=l&&(v.resolve(q),I(u.$$intervalId),delete g[u.$$intervalId]);K||a.$apply()},k);g[u.$$intervalId]=v;return u}var g={};f.cancel=function(a){return a&&a.$$intervalId in g?(g[a.$$intervalId].reject("canceled"),b.clearInterval(a.$$intervalId),delete g[a.$$intervalId],!0):!1};return f}]}function fc(a){a=a.split("/");for(var b=a.length;b--;)a[b]= +qb(a[b]);return a.join("/")}function kd(a,b){var d=qa(a);b.$$protocol=d.protocol;b.$$host=d.hostname;b.$$port=aa(d.port)||hg[d.protocol]||null}function ld(a,b){var d="/"!==a.charAt(0);d&&(a="/"+a);var c=qa(a);b.$$path=decodeURIComponent(d&&"/"===c.pathname.charAt(0)?c.pathname.substring(1):c.pathname);b.$$search=Ac(c.search);b.$$hash=decodeURIComponent(c.hash);b.$$path&&"/"!=b.$$path.charAt(0)&&(b.$$path="/"+b.$$path)}function la(a,b){if(0===b.lastIndexOf(a,0))return b.substr(a.length)}function Ja(a){var b= +a.indexOf("#");return-1==b?a:a.substr(0,b)}function jb(a){return a.replace(/(#.+)|#$/,"$1")}function gc(a,b,d){this.$$html5=!0;d=d||"";kd(a,this);this.$$parse=function(a){var d=la(b,a);if(!F(d))throw Gb("ipthprfx",a,b);ld(d,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Tb(this.$$search),d=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(a?"?"+a:"")+d;this.$$absUrl=b+this.$$url.substr(1)};this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)), +!0;var f,g;x(f=la(a,c))?(g=f,g=x(f=la(d,f))?b+(la("/",f)||f):a+g):x(f=la(b,c))?g=b+f:b==c+"/"&&(g=b);g&&this.$$parse(g);return!!g}}function hc(a,b,d){kd(a,this);this.$$parse=function(c){var e=la(a,c)||la(b,c),f;w(e)||"#"!==e.charAt(0)?this.$$html5?f=e:(f="",w(e)&&(a=c,this.replace())):(f=la(d,e),w(f)&&(f=e));ld(f,this);c=this.$$path;var e=a,g=/^\/[A-Z]:(\/.*)/;0===f.lastIndexOf(e,0)&&(f=f.replace(e,""));g.exec(f)||(c=(f=g.exec(c))?f[1]:c);this.$$path=c;this.$$compose()};this.$$compose=function(){var b= +Tb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+(this.$$url?d+this.$$url:"")};this.$$parseLinkUrl=function(b,d){return Ja(a)==Ja(b)?(this.$$parse(b),!0):!1}}function md(a,b,d){this.$$html5=!0;hc.apply(this,arguments);this.$$parseLinkUrl=function(c,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;a==Ja(c)?f=c:(g=la(b,c))?f=a+d+g:b===c+"/"&&(f=b);f&&this.$$parse(f);return!!f};this.$$compose=function(){var b=Tb(this.$$search), +e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=fc(this.$$path)+(b?"?"+b:"")+e;this.$$absUrl=a+d+this.$$url}}function Hb(a){return function(){return this[a]}}function nd(a,b){return function(d){if(w(d))return this[a];this[a]=b(d);this.$$compose();return this}}function sf(){var a="",b={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(b){return x(b)?(a=b,this):a};this.html5Mode=function(a){return Ea(a)?(b.enabled=a,this):H(a)?(Ea(a.enabled)&&(b.enabled=a.enabled),Ea(a.requireBase)&& +(b.requireBase=a.requireBase),Ea(a.rewriteLinks)&&(b.rewriteLinks=a.rewriteLinks),this):b};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(d,c,e,f,g){function h(a,b,d){var e=l.url(),f=l.$$state;try{c.url(a,b,d),l.$$state=c.state()}catch(g){throw l.url(e),l.$$state=f,g;}}function k(a,b){d.$broadcast("$locationChangeSuccess",l.absUrl(),a,l.$$state,b)}var l,m;m=c.baseHref();var n=c.url(),p;if(b.enabled){if(!m&&b.requireBase)throw Gb("nobase");p=n.substring(0,n.indexOf("/", +n.indexOf("//")+2))+(m||"/");m=e.history?gc:md}else p=Ja(n),m=hc;var s=p.substr(0,Ja(p).lastIndexOf("/")+1);l=new m(p,s,"#"+a);l.$$parseLinkUrl(n,n);l.$$state=c.state();var r=/^\s*(javascript|mailto):/i;f.on("click",function(a){if(b.rewriteLinks&&!a.ctrlKey&&!a.metaKey&&!a.shiftKey&&2!=a.which&&2!=a.button){for(var e=B(a.target);"a"!==ua(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),k=e.attr("href")||e.attr("xlink:href");H(h)&&"[object SVGAnimatedString]"===h.toString()&&(h= +qa(h.animVal).href);r.test(h)||!h||e.attr("target")||a.isDefaultPrevented()||!l.$$parseLinkUrl(h,k)||(a.preventDefault(),l.absUrl()!=c.url()&&(d.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});jb(l.absUrl())!=jb(n)&&c.url(l.absUrl(),!0);var I=!0;c.onUrlChange(function(a,b){w(la(s,a))?g.location.href=a:(d.$evalAsync(function(){var c=l.absUrl(),e=l.$$state,f;a=jb(a);l.$$parse(a);l.$$state=b;f=d.$broadcast("$locationChangeStart",a,c,b,e).defaultPrevented;l.absUrl()===a&&(f?(l.$$parse(c),l.$$state= +e,h(c,!1,e)):(I=!1,k(c,e)))}),d.$$phase||d.$digest())});d.$watch(function(){var a=jb(c.url()),b=jb(l.absUrl()),f=c.state(),g=l.$$replace,n=a!==b||l.$$html5&&e.history&&f!==l.$$state;if(I||n)I=!1,d.$evalAsync(function(){var b=l.absUrl(),c=d.$broadcast("$locationChangeStart",b,a,l.$$state,f).defaultPrevented;l.absUrl()===b&&(c?(l.$$parse(a),l.$$state=f):(n&&h(b,g,f===l.$$state?null:l.$$state),k(a,f)))});l.$$replace=!1});return l}]}function tf(){var a=!0,b=this;this.debugEnabled=function(b){return x(b)? +(a=b,this):a};this.$get=["$window",function(d){function c(a){a instanceof Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=d.console||{},e=b[a]||b.log||A;a=!1;try{a=!!e.apply}catch(k){}return a?function(){var a=[];r(arguments,function(b){a.push(c(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"), +debug:function(){var c=e("debug");return function(){a&&c.apply(b,arguments)}}()}}]}function Ua(a,b){if("__defineGetter__"===a||"__defineSetter__"===a||"__lookupGetter__"===a||"__lookupSetter__"===a||"__proto__"===a)throw ca("isecfld",b);return a}function ig(a){return a+""}function ra(a,b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a.window===a)throw ca("isecwindow",b);if(a.children&&(a.nodeName||a.prop&&a.attr&&a.find))throw ca("isecdom",b);if(a===Object)throw ca("isecobj",b);}return a}function od(a, +b){if(a){if(a.constructor===a)throw ca("isecfn",b);if(a===jg||a===kg||a===lg)throw ca("isecff",b);}}function Ib(a,b){if(a&&(a===(0).constructor||a===(!1).constructor||a==="".constructor||a==={}.constructor||a===[].constructor||a===Function.constructor))throw ca("isecaf",b);}function mg(a,b){return"undefined"!==typeof a?a:b}function pd(a,b){return"undefined"===typeof a?b:"undefined"===typeof b?a:a+b}function $(a,b){var d,c;switch(a.type){case t.Program:d=!0;r(a.body,function(a){$(a.expression,b);d= +d&&a.expression.constant});a.constant=d;break;case t.Literal:a.constant=!0;a.toWatch=[];break;case t.UnaryExpression:$(a.argument,b);a.constant=a.argument.constant;a.toWatch=a.argument.toWatch;break;case t.BinaryExpression:$(a.left,b);$(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.left.toWatch.concat(a.right.toWatch);break;case t.LogicalExpression:$(a.left,b);$(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=a.constant?[]:[a];break;case t.ConditionalExpression:$(a.test, +b);$(a.alternate,b);$(a.consequent,b);a.constant=a.test.constant&&a.alternate.constant&&a.consequent.constant;a.toWatch=a.constant?[]:[a];break;case t.Identifier:a.constant=!1;a.toWatch=[a];break;case t.MemberExpression:$(a.object,b);a.computed&&$(a.property,b);a.constant=a.object.constant&&(!a.computed||a.property.constant);a.toWatch=[a];break;case t.CallExpression:d=a.filter?!b(a.callee.name).$stateful:!1;c=[];r(a.arguments,function(a){$(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)}); +a.constant=d;a.toWatch=a.filter&&!b(a.callee.name).$stateful?c:[a];break;case t.AssignmentExpression:$(a.left,b);$(a.right,b);a.constant=a.left.constant&&a.right.constant;a.toWatch=[a];break;case t.ArrayExpression:d=!0;c=[];r(a.elements,function(a){$(a,b);d=d&&a.constant;a.constant||c.push.apply(c,a.toWatch)});a.constant=d;a.toWatch=c;break;case t.ObjectExpression:d=!0;c=[];r(a.properties,function(a){$(a.value,b);d=d&&a.value.constant&&!a.computed;a.value.constant||c.push.apply(c,a.value.toWatch)}); +a.constant=d;a.toWatch=c;break;case t.ThisExpression:a.constant=!1;a.toWatch=[];break;case t.LocalsExpression:a.constant=!1,a.toWatch=[]}}function qd(a){if(1==a.length){a=a[0].expression;var b=a.toWatch;return 1!==b.length?b:b[0]!==a?b:void 0}}function rd(a){return a.type===t.Identifier||a.type===t.MemberExpression}function sd(a){if(1===a.body.length&&rd(a.body[0].expression))return{type:t.AssignmentExpression,left:a.body[0].expression,right:{type:t.NGValueParameter},operator:"="}}function td(a){return 0=== +a.body.length||1===a.body.length&&(a.body[0].expression.type===t.Literal||a.body[0].expression.type===t.ArrayExpression||a.body[0].expression.type===t.ObjectExpression)}function ud(a,b){this.astBuilder=a;this.$filter=b}function vd(a,b){this.astBuilder=a;this.$filter=b}function Jb(a){return"constructor"==a}function ic(a){return z(a.valueOf)?a.valueOf():ng.call(a)}function uf(){var a=T(),b=T(),d={"true":!0,"false":!1,"null":null,undefined:void 0},c,e;this.addLiteral=function(a,b){d[a]=b};this.setIdentifierFns= +function(a,b){c=a;e=b;return this};this.$get=["$filter",function(f){function g(c,d,e){var g,k,C;e=e||K;switch(typeof c){case "string":C=c=c.trim();var D=e?b:a;g=D[C];if(!g){":"===c.charAt(0)&&":"===c.charAt(1)&&(k=!0,c=c.substring(2));g=e?q:I;var G=new jc(g);g=(new kc(G,f,g)).parse(c);g.constant?g.$$watchDelegate=p:k?g.$$watchDelegate=g.literal?n:m:g.inputs&&(g.$$watchDelegate=l);e&&(g=h(g));D[C]=g}return s(g,d);case "function":return s(c,d);default:return s(A,d)}}function h(a){function b(c,d,e,f){var g= +K;K=!0;try{return a(c,d,e,f)}finally{K=g}}if(!a)return a;b.$$watchDelegate=a.$$watchDelegate;b.assign=h(a.assign);b.constant=a.constant;b.literal=a.literal;for(var c=0;a.inputs&&c=this.promise.$$state.status&&d&&d.length&&a(function(){for(var a,e,f=0,g=d.length;fa)for(b in l++,f)sa.call(e,b)||(q--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,h,k=1r&&(w=4-r,x[w]||(x[w]=[]),x[w].push({msg:z(a.exp)? +"fn: "+(a.exp.name||a.exp.toString()):a.exp,newVal:g,oldVal:k}));else if(a===c){q=!1;break a}}catch(B){f(B)}if(!(p=y.$$watchersCount&&y.$$childHead||y!==this&&y.$$nextSibling))for(;y!==this&&!(p=y.$$nextSibling);)y=y.$parent}while(y=p);if((q||v.length)&&!r--)throw K.$$phase=null,d("infdig",b,x);}while(q||v.length);for(K.$$phase=null;PBa)throw ya("iequirks");var c=ga(ma);c.isEnabled=function(){return a}; +c.trustAs=d.trustAs;c.getTrusted=d.getTrusted;c.valueOf=d.valueOf;a||(c.trustAs=c.getTrusted=function(a,b){return b},c.valueOf=Ya);c.parseAs=function(a,d){var e=b(d);return e.literal&&e.constant?e:b(d,function(b){return c.getTrusted(a,b)})};var e=c.parseAs,f=c.getTrusted,g=c.trustAs;r(ma,function(a,b){var d=M(b);c[eb("parse_as_"+d)]=function(b){return e(a,b)};c[eb("get_trusted_"+d)]=function(b){return f(a,b)};c[eb("trust_as_"+d)]=function(b){return g(a,b)}});return c}]}function Af(){this.$get=["$window", +"$document",function(a,b){var d={},c=!(a.chrome&&a.chrome.app&&a.chrome.app.runtime)&&a.history&&a.history.pushState,e=aa((/android (\d+)/.exec(M((a.navigator||{}).userAgent))||[])[1]),f=/Boxee/i.test((a.navigator||{}).userAgent),g=b[0]||{},h,k=/^(Moz|webkit|ms)(?=[A-Z])/,l=g.body&&g.body.style,m=!1,n=!1;if(l){for(var p in l)if(m=k.exec(p)){h=m[0];h=h[0].toUpperCase()+h.substr(1);break}h||(h="WebkitOpacity"in l&&"webkit");m=!!("transition"in l||h+"Transition"in l);n=!!("animation"in l||h+"Animation"in +l);!e||m&&n||(m=F(l.webkitTransition),n=F(l.webkitAnimation))}return{history:!(!c||4>e||f),hasEvent:function(a){if("input"===a&&11>=Ba)return!1;if(w(d[a])){var b=g.createElement("div");d[a]="on"+a in b}return d[a]},csp:Fa(),vendorPrefix:h,transitions:m,animations:n,android:e}}]}function Cf(){var a;this.httpOptions=function(b){return b?(a=b,this):a};this.$get=["$templateCache","$http","$q","$sce",function(b,d,c,e){function f(g,h){f.totalPendingRequests++;if(!F(g)||w(b.get(g)))g=e.getTrustedResourceUrl(g); +var k=d.defaults&&d.defaults.transformResponse;J(k)?k=k.filter(function(a){return a!==dc}):k===dc&&(k=null);return d.get(g,R({cache:b,transformResponse:k},a))["finally"](function(){f.totalPendingRequests--}).then(function(a){b.put(g,a.data);return a.data},function(a){if(!h)throw pg("tpload",g,a.status,a.statusText);return c.reject(a)})}f.totalPendingRequests=0;return f}]}function Df(){this.$get=["$rootScope","$browser","$location",function(a,b,d){return{findBindings:function(a,b,d){a=a.getElementsByClassName("ng-binding"); +var g=[];r(a,function(a){var c=ea.element(a).data("$binding");c&&r(c,function(c){d?(new RegExp("(^|\\s)"+xd(b)+"(\\s|\\||$)")).test(c)&&g.push(a):-1!=c.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,d){for(var g=["ng-","data-ng-","ng\\:"],h=0;hc&&(c=e),c+=+a.slice(e+1),a=a.substring(0,e)):0>c&&(c=a.length);for(e=0;a.charAt(e)==mc;e++);if(e==(g=a.length))d=[0],c=1;else{for(g--;a.charAt(g)==mc;)g--;c-=e;d=[];for(f=0;e<=g;e++,f++)d[f]=+a.charAt(e)}c>Hd&&(d=d.splice(0,Hd-1),b=c-1,c=1);return{d:d,e:b,i:c}}function xg(a,b,d,c){var e=a.d,f=e.length-a.i;b=w(b)?Math.min(Math.max(d,f),c):+b;d=b+a.i;c=e[d];if(0d-1){for(c=0;c>d;c--)e.unshift(0),a.i++;e.unshift(1);a.i++}else e[d-1]++;for(;fh;)k.unshift(0),h++;0=b.lgSize&&h.unshift(k.splice(-b.lgSize,k.length).join(""));k.length>b.gSize;)h.unshift(k.splice(-b.gSize,k.length).join(""));k.length&&h.unshift(k.join(""));k=h.join(d);f.length&&(k+=c+f.join(""));e&&(k+="e+"+e)}return 0>a&&!g?b.negPre+k+b.negSuf:b.posPre+k+b.posSuf}function Kb(a,b,d,c){var e="";if(0>a||c&&0>=a)c?a=-a+1:(a=-a,e="-");for(a=""+a;a.length-d)f+=d;0===f&&-12==d&&(f=12);return Kb(f,b,c,e)}}function kb(a,b,d){return function(c,e){var f=c["get"+a](),g=ub((d?"STANDALONE":"")+(b?"SHORT":"")+a);return e[g][f]}}function Id(a){var b=(new Date(a,0,1)).getDay();return new Date(a,0,(4>=b?5:12)-b)}function Jd(a){return function(b){var d=Id(b.getFullYear());b=+new Date(b.getFullYear(),b.getMonth(),b.getDate()+(4-b.getDay()))-+d;b=1+Math.round(b/6048E5);return Kb(b,a)}}function nc(a, +b){return 0>=a.getFullYear()?b.ERAS[0]:b.ERAS[1]}function Cd(a){function b(a){var b;if(b=a.match(d)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,k=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=aa(b[9]+b[10]),g=aa(b[9]+b[11]));h.call(a,aa(b[1]),aa(b[2])-1,aa(b[3]));f=aa(b[4]||0)-f;g=aa(b[5]||0)-g;h=aa(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));k.call(a,f,g,h,b)}return a}var d=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; +return function(c,d,f){var g="",h=[],k,l;d=d||"mediumDate";d=a.DATETIME_FORMATS[d]||d;F(c)&&(c=yg.test(c)?aa(c):b(c));S(c)&&(c=new Date(c));if(!ia(c)||!isFinite(c.getTime()))return c;for(;d;)(l=zg.exec(d))?(h=ab(h,l,1),d=h.pop()):(h.push(d),d=null);var m=c.getTimezoneOffset();f&&(m=yc(f,m),c=Sb(c,f,!0));r(h,function(b){k=Ag[b];g+=k?k(c,a.DATETIME_FORMATS,m):"''"===b?"'":b.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function rg(){return function(a,b){w(b)&&(b=2);return cb(a,b)}}function sg(){return function(a, +b,d){b=Infinity===Math.abs(Number(b))?Number(b):aa(b);if(isNaN(b))return a;S(a)&&(a=a.toString());if(!oa(a))return a;d=!d||isNaN(d)?0:aa(d);d=0>d?Math.max(0,a.length+d):d;return 0<=b?oc(a,d,d+b):0===d?oc(a,b,a.length):oc(a,Math.max(0,d+b),d)}}function oc(a,b,d){return F(a)?a.slice(b,d):ta.call(a,b,d)}function Ed(a){function b(b){return b.map(function(b){var c=1,d=Ya;if(z(b))d=b;else if(F(b)){if("+"==b.charAt(0)||"-"==b.charAt(0))c="-"==b.charAt(0)?-1:1,b=b.substring(1);if(""!==b&&(d=a(b),d.constant))var e= +d(),d=function(a){return a[e]}}return{get:d,descending:c}})}function d(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}function c(a,b){var c=0,d=a.type,k=b.type;if(d===k){var k=a.value,l=b.value;"string"===d?(k=k.toLowerCase(),l=l.toLowerCase()):"object"===d&&(H(k)&&(k=a.index),H(l)&&(l=b.index));k!==l&&(c=kb||37<=b&&40>=b||m(a,this,this.value)});if(e.hasEvent("paste"))b.on("paste cut",m)}b.on("change",l);if(Md[g]&&c.$$hasNativeValidators&&g===d.type)b.on("keydown wheel mousedown",function(a){if(!k){var b=this.validity,c=b.badInput,d=b.typeMismatch;k=f.defer(function(){k=null;b.badInput===c&&b.typeMismatch===d||l(a)})}});c.$render=function(){var a=c.$isEmpty(c.$viewValue)? +"":c.$viewValue;b.val()!==a&&b.val(a)}}function Nb(a,b){return function(d,c){var e,f;if(ia(d))return d;if(F(d)){'"'==d.charAt(0)&&'"'==d.charAt(d.length-1)&&(d=d.substring(1,d.length-1));if(Bg.test(d))return new Date(d);a.lastIndex=0;if(e=a.exec(d))return e.shift(),f=c?{yyyy:c.getFullYear(),MM:c.getMonth()+1,dd:c.getDate(),HH:c.getHours(),mm:c.getMinutes(),ss:c.getSeconds(),sss:c.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(a,c){c=t};g.$observe("min",function(a){t=p(a);h.$validate()})}if(x(g.max)||g.ngMax){var q;h.$validators.max=function(a){return!n(a)||w(q)||d(a)<=q};g.$observe("max",function(a){q=p(a);h.$validate()})}}}function Nd(a,b,d,c){(c.$$hasNativeValidators=H(b[0].validity))&&c.$parsers.push(function(a){var c=b.prop("validity")||{};return c.badInput||c.typeMismatch?void 0:a})}function Od(a, +b,d,c,e){if(x(c)){a=a(c);if(!a.constant)throw nb("constexpr",d,c);return a(b)}return e}function qc(a,b){a="ngClass"+a;return["$animate",function(d){function c(a,b){var c=[],d=0;a:for(;d(?:<\/\1>|)$/,Vb=/<|&#?\w+;/,Mf=/<([\w:-]+)/,Nf=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,ha={option:[1,'"],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ha.optgroup=ha.option;ha.tbody=ha.tfoot=ha.colgroup=ha.caption=ha.thead; +ha.th=ha.td;var Uf=E.Node.prototype.contains||function(a){return!!(this.compareDocumentPosition(a)&16)},Pa=U.prototype={ready:function(a){function b(){d||(d=!0,a())}var d=!1;"complete"===E.document.readyState?E.setTimeout(b):(this.on("DOMContentLoaded",b),U(E).on("load",b))},toString:function(){var a=[];r(this,function(b){a.push(""+b)});return"["+a.join(", ")+"]"},eq:function(a){return 0<=a?B(this[a]):B(this[this.length+a])},length:0,push:Dg,sort:[].sort,splice:[].splice},Eb={};r("multiple selected checked disabled readOnly required open".split(" "), +function(a){Eb[M(a)]=a});var Vc={};r("input select option textarea button form details".split(" "),function(a){Vc[a]=!0});var cd={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};r({data:Yb,removeData:fb,hasData:function(a){for(var b in gb[a.ng339])return!0;return!1},cleanData:function(a){for(var b=0,d=a.length;b/,Xf=/^[^\(]*\(\s*([^\)]*)\)/m,Eg=/,/,Fg=/^\s*(_?)(\S+?)\1\s*$/,Vf=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Ha=O("$injector");db.$$annotate= +function(a,b,d){var c;if("function"===typeof a){if(!(c=a.$inject)){c=[];if(a.length){if(b)throw F(d)&&d||(d=a.name||Yf(a)),Ha("strictdi",d);b=Wc(a);r(b[1].split(Eg),function(a){a.replace(Fg,function(a,b,d){c.push(d)})})}a.$inject=c}}else J(a)?(b=a.length-1,Qa(a[b],"fn"),c=a.slice(0,b)):Qa(a,"fn",!0);return c};var Sd=O("$animate"),af=function(){this.$get=A},bf=function(){var a=new Sa,b=[];this.$get=["$$AnimateRunner","$rootScope",function(d,c){function e(a,b,c){var d=!1;b&&(b=F(b)?b.split(" "):J(b)? +b:[],r(b,function(b){b&&(d=!0,a[b]=c)}));return d}function f(){r(b,function(b){var c=a.get(b);if(c){var d=Zf(b.attr("class")),e="",f="";r(c,function(a,b){a!==!!d[b]&&(a?e+=(e.length?" ":"")+b:f+=(f.length?" ":"")+b)});r(b,function(a){e&&Bb(a,e);f&&Ab(a,f)});a.remove(b)}});b.length=0}return{enabled:A,on:A,off:A,pin:A,push:function(g,h,k,l){l&&l();k=k||{};k.from&&g.css(k.from);k.to&&g.css(k.to);if(k.addClass||k.removeClass)if(h=k.addClass,l=k.removeClass,k=a.get(g)||{},h=e(k,h,!0),l=e(k,l,!1),h||l)a.put(g, +k),b.push(g),1===b.length&&c.$$postDigest(f);g=new d;g.complete();return g}}}]},Ze=["$provide",function(a){var b=this;this.$$registeredAnimations=Object.create(null);this.register=function(d,c){if(d&&"."!==d.charAt(0))throw Sd("notcsel",d);var e=d+"-animation";b.$$registeredAnimations[d.substr(1)]=e;a.factory(e,c)};this.classNameFilter=function(a){if(1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null)&&/(\s+|\/)ng-animate(\s+|\/)/.test(this.$$classNameFilter.toString()))throw Sd("nongcls", +"ng-animate");return this.$$classNameFilter};this.$get=["$$animateQueue",function(a){function b(a,c,d){if(d){var h;a:{for(h=0;h <= >= && || ! = |".split(" "),function(a){Ob[a]=!0});var Jg={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},jc=function(a){this.options=a};jc.prototype={constructor:jc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdentifierStart:function(a){return this.options.isIdentifierStart?this.options.isIdentifierStart(a,this.codePointAt(a)):this.isValidIdentifierStart(a)},isValidIdentifierStart:function(a){return"a"<=a&&"z">= +a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isIdentifierContinue:function(a){return this.options.isIdentifierContinue?this.options.isIdentifierContinue(a,this.codePointAt(a)):this.isValidIdentifierContinue(a)},isValidIdentifierContinue:function(a,b){return this.isValidIdentifierStart(a,b)||this.isNumber(a)},codePointAt:function(a){return 1===a.length?a.charCodeAt(0):(a.charCodeAt(0)<<10)+a.charCodeAt(1)-56613888},peekMultichar:function(){var a=this.text.charAt(this.index),b=this.peek();if(!b)return a;var d= +a.charCodeAt(0),c=b.charCodeAt(0);return 55296<=d&&56319>=d&&56320<=c&&57343>=c?a+b:a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,b,d){d=d||this.index;b=x(b)?"s "+b+"-"+this.index+" ["+this.text.substring(b,d)+"]":" "+d;throw ca("lexerr",a,b,this.text);},readNumber:function(){for(var a="",b=this.index;this.index","<=",">=");)a={type:t.BinaryExpression,operator:b.text,left:a,right:this.additive()};return a},additive:function(){for(var a=this.multiplicative(),b;b=this.expect("+","-");)a={type:t.BinaryExpression,operator:b.text,left:a,right:this.multiplicative()};return a},multiplicative:function(){for(var a=this.unary(),b;b=this.expect("*", +"/","%");)a={type:t.BinaryExpression,operator:b.text,left:a,right:this.unary()};return a},unary:function(){var a;return(a=this.expect("+","-","!"))?{type:t.UnaryExpression,operator:a.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?a=Z(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)? +a={type:t.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var b;b=this.expect("(","[",".");)"("===b.text?(a={type:t.CallExpression,callee:a,arguments:this.parseArguments()},this.consume(")")):"["===b.text?(a={type:t.MemberExpression,object:a,property:this.expression(),computed:!0},this.consume("]")):"."===b.text?a={type:t.MemberExpression,object:a, +property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return a},filter:function(a){a=[a];for(var b={type:t.CallExpression,callee:this.identifier(),arguments:a,filter:!0};this.expect(":");)a.push(this.expression());return b},parseArguments:function(){var a=[];if(")"!==this.peekToken().text){do a.push(this.filterChain());while(this.expect(","))}return a},identifier:function(){var a=this.consume();a.identifier||this.throwError("is not a valid identifier",a);return{type:t.Identifier,name:a.text}}, +constant:function(){return{type:t.Literal,value:this.consume().value}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression())}while(this.expect(","))}this.consume("]");return{type:t.ArrayExpression,elements:a}},object:function(){var a=[],b;if("}"!==this.peekToken().text){do{if(this.peek("}"))break;b={type:t.Property,kind:"init"};this.peek().constant?(b.key=this.constant(),b.computed=!1,this.consume(":"),b.value=this.expression()): +this.peek().identifier?(b.key=this.identifier(),b.computed=!1,this.peek(":")?(this.consume(":"),b.value=this.expression()):b.value=b.key):this.peek("[")?(this.consume("["),b.key=this.expression(),this.consume("]"),b.computed=!0,this.consume(":"),b.value=this.expression()):this.throwError("invalid key",this.peek());a.push(b)}while(this.expect(","))}this.consume("}");return{type:t.ObjectExpression,properties:a}},throwError:function(a,b){throw ca("syntax",b.text,a,b.index+1,this.text,this.text.substring(b.index)); +},consume:function(a){if(0===this.tokens.length)throw ca("ueoe",this.text);var b=this.expect(a);b||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return b},peekToken:function(){if(0===this.tokens.length)throw ca("ueoe",this.text);return this.tokens[0]},peek:function(a,b,d,c){return this.peekAhead(0,a,b,d,c)},peekAhead:function(a,b,d,c,e){if(this.tokens.length>a){a=this.tokens[a];var f=a.text;if(f===b||f===d||f===c||f===e||!(b||d||c||e))return a}return!1},expect:function(a,b,d,c){return(a= +this.peek(a,b,d,c))?(this.tokens.shift(),a):!1},selfReferential:{"this":{type:t.ThisExpression},$locals:{type:t.LocalsExpression}}};ud.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.state={nextId:0,filters:{},expensiveChecks:b,fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]};$(c,d.$filter);var e="",f;this.stage="assign";if(f=sd(c))this.state.computing="assign",e=this.nextId(),this.recurse(f,e),this.return_(e),e="fn.assign="+this.generateFunction("assign", +"s,v,l");f=qd(c.body);d.stage="inputs";r(f,function(a,b){var c="fn"+b;d.state[c]={vars:[],body:[],own:{}};d.state.computing=c;var e=d.nextId();d.recurse(a,e);d.return_(e);d.state.inputs.push(c);a.watchId=b});this.state.computing="fn";this.stage="main";this.recurse(c);e='"'+this.USE+" "+this.STRICT+'";\n'+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+e+this.watchFns()+"return fn;";e=(new Function("$filter","ensureSafeMemberName","ensureSafeObject","ensureSafeFunction","getStringValue", +"ensureSafeAssignContext","ifDefined","plus","text",e))(this.$filter,Ua,ra,od,ig,Ib,mg,pd,a);this.state=this.stage=void 0;e.literal=td(c);e.constant=c.constant;return e},USE:"use",STRICT:"strict",watchFns:function(){var a=[],b=this.state.inputs,d=this;r(b,function(b){a.push("var "+b+"="+d.generateFunction(b,"s"))});b.length&&a.push("fn.inputs=["+b.join(",")+"];");return a.join("")},generateFunction:function(a,b){return"function("+b+"){"+this.varsPrefix(a)+this.body(a)+"};"},filterPrefix:function(){var a= +[],b=this;r(this.state.filters,function(d,c){a.push(d+"=$filter("+b.escape(c)+")")});return a.length?"var "+a.join(",")+";":""},varsPrefix:function(a){return this.state[a].vars.length?"var "+this.state[a].vars.join(",")+";":""},body:function(a){return this.state[a].body.join("")},recurse:function(a,b,d,c,e,f){var g,h,k=this,l,m,n;c=c||A;if(!f&&x(a.watchId))b=b||this.nextId(),this.if_("i",this.lazyAssign(b,this.computedMember("i",a.watchId)),this.lazyRecurse(a,b,d,c,e,!0));else switch(a.type){case t.Program:r(a.body, +function(b,c){k.recurse(b.expression,void 0,void 0,function(a){h=a});c!==a.body.length-1?k.current().body.push(h,";"):k.return_(h)});break;case t.Literal:m=this.escape(a.value);this.assign(b,m);c(m);break;case t.UnaryExpression:this.recurse(a.argument,void 0,void 0,function(a){h=a});m=a.operator+"("+this.ifDefined(h,0)+")";this.assign(b,m);c(m);break;case t.BinaryExpression:this.recurse(a.left,void 0,void 0,function(a){g=a});this.recurse(a.right,void 0,void 0,function(a){h=a});m="+"===a.operator? +this.plus(g,h):"-"===a.operator?this.ifDefined(g,0)+a.operator+this.ifDefined(h,0):"("+g+")"+a.operator+"("+h+")";this.assign(b,m);c(m);break;case t.LogicalExpression:b=b||this.nextId();k.recurse(a.left,b);k.if_("&&"===a.operator?b:k.not(b),k.lazyRecurse(a.right,b));c(b);break;case t.ConditionalExpression:b=b||this.nextId();k.recurse(a.test,b);k.if_(b,k.lazyRecurse(a.alternate,b),k.lazyRecurse(a.consequent,b));c(b);break;case t.Identifier:b=b||this.nextId();d&&(d.context="inputs"===k.stage?"s":this.assign(this.nextId(), +this.getHasOwnProperty("l",a.name)+"?l:s"),d.computed=!1,d.name=a.name);Ua(a.name);k.if_("inputs"===k.stage||k.not(k.getHasOwnProperty("l",a.name)),function(){k.if_("inputs"===k.stage||"s",function(){e&&1!==e&&k.if_(k.not(k.nonComputedMember("s",a.name)),k.lazyAssign(k.nonComputedMember("s",a.name),"{}"));k.assign(b,k.nonComputedMember("s",a.name))})},b&&k.lazyAssign(b,k.nonComputedMember("l",a.name)));(k.state.expensiveChecks||Jb(a.name))&&k.addEnsureSafeObject(b);c(b);break;case t.MemberExpression:g= +d&&(d.context=this.nextId())||this.nextId();b=b||this.nextId();k.recurse(a.object,g,void 0,function(){k.if_(k.notNull(g),function(){e&&1!==e&&k.addEnsureSafeAssignContext(g);if(a.computed)h=k.nextId(),k.recurse(a.property,h),k.getStringValue(h),k.addEnsureSafeMemberName(h),e&&1!==e&&k.if_(k.not(k.computedMember(g,h)),k.lazyAssign(k.computedMember(g,h),"{}")),m=k.ensureSafeObject(k.computedMember(g,h)),k.assign(b,m),d&&(d.computed=!0,d.name=h);else{Ua(a.property.name);e&&1!==e&&k.if_(k.not(k.nonComputedMember(g, +a.property.name)),k.lazyAssign(k.nonComputedMember(g,a.property.name),"{}"));m=k.nonComputedMember(g,a.property.name);if(k.state.expensiveChecks||Jb(a.property.name))m=k.ensureSafeObject(m);k.assign(b,m);d&&(d.computed=!1,d.name=a.property.name)}},function(){k.assign(b,"undefined")});c(b)},!!e);break;case t.CallExpression:b=b||this.nextId();a.filter?(h=k.filter(a.callee.name),l=[],r(a.arguments,function(a){var b=k.nextId();k.recurse(a,b);l.push(b)}),m=h+"("+l.join(",")+")",k.assign(b,m),c(b)):(h= +k.nextId(),g={},l=[],k.recurse(a.callee,h,g,function(){k.if_(k.notNull(h),function(){k.addEnsureSafeFunction(h);r(a.arguments,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(k.ensureSafeObject(a))})});g.name?(k.state.expensiveChecks||k.addEnsureSafeObject(g.context),m=k.member(g.context,g.name,g.computed)+"("+l.join(",")+")"):m=h+"("+l.join(",")+")";m=k.ensureSafeObject(m);k.assign(b,m)},function(){k.assign(b,"undefined")});c(b)}));break;case t.AssignmentExpression:h=this.nextId();g= +{};if(!rd(a.left))throw ca("lval");this.recurse(a.left,void 0,g,function(){k.if_(k.notNull(g.context),function(){k.recurse(a.right,h);k.addEnsureSafeObject(k.member(g.context,g.name,g.computed));k.addEnsureSafeAssignContext(g.context);m=k.member(g.context,g.name,g.computed)+a.operator+h;k.assign(b,m);c(b||m)})},1);break;case t.ArrayExpression:l=[];r(a.elements,function(a){k.recurse(a,k.nextId(),void 0,function(a){l.push(a)})});m="["+l.join(",")+"]";this.assign(b,m);c(m);break;case t.ObjectExpression:l= +[];n=!1;r(a.properties,function(a){a.computed&&(n=!0)});n?(b=b||this.nextId(),this.assign(b,"{}"),r(a.properties,function(a){a.computed?(g=k.nextId(),k.recurse(a.key,g)):g=a.key.type===t.Identifier?a.key.name:""+a.key.value;h=k.nextId();k.recurse(a.value,h);k.assign(k.member(b,g,a.computed),h)})):(r(a.properties,function(b){k.recurse(b.value,a.constant?void 0:k.nextId(),void 0,function(a){l.push(k.escape(b.key.type===t.Identifier?b.key.name:""+b.key.value)+":"+a)})}),m="{"+l.join(",")+"}",this.assign(b, +m));c(b||m);break;case t.ThisExpression:this.assign(b,"s");c("s");break;case t.LocalsExpression:this.assign(b,"l");c("l");break;case t.NGValueParameter:this.assign(b,"v"),c("v")}},getHasOwnProperty:function(a,b){var d=a+"."+b,c=this.current().own;c.hasOwnProperty(d)||(c[d]=this.nextId(!1,a+"&&("+this.escape(b)+" in "+a+")"));return c[d]},assign:function(a,b){if(a)return this.current().body.push(a,"=",b,";"),a},filter:function(a){this.state.filters.hasOwnProperty(a)||(this.state.filters[a]=this.nextId(!0)); +return this.state.filters[a]},ifDefined:function(a,b){return"ifDefined("+a+","+this.escape(b)+")"},plus:function(a,b){return"plus("+a+","+b+")"},return_:function(a){this.current().body.push("return ",a,";")},if_:function(a,b,d){if(!0===a)b();else{var c=this.current().body;c.push("if(",a,"){");b();c.push("}");d&&(c.push("else{"),d(),c.push("}"))}},not:function(a){return"!("+a+")"},notNull:function(a){return a+"!=null"},nonComputedMember:function(a,b){var d=/[^$_a-zA-Z0-9]/g;return/[$_a-zA-Z][$_a-zA-Z0-9]*/.test(b)? +a+"."+b:a+'["'+b.replace(d,this.stringEscapeFn)+'"]'},computedMember:function(a,b){return a+"["+b+"]"},member:function(a,b,d){return d?this.computedMember(a,b):this.nonComputedMember(a,b)},addEnsureSafeObject:function(a){this.current().body.push(this.ensureSafeObject(a),";")},addEnsureSafeMemberName:function(a){this.current().body.push(this.ensureSafeMemberName(a),";")},addEnsureSafeFunction:function(a){this.current().body.push(this.ensureSafeFunction(a),";")},addEnsureSafeAssignContext:function(a){this.current().body.push(this.ensureSafeAssignContext(a), +";")},ensureSafeObject:function(a){return"ensureSafeObject("+a+",text)"},ensureSafeMemberName:function(a){return"ensureSafeMemberName("+a+",text)"},ensureSafeFunction:function(a){return"ensureSafeFunction("+a+",text)"},getStringValue:function(a){this.assign(a,"getStringValue("+a+")")},ensureSafeAssignContext:function(a){return"ensureSafeAssignContext("+a+",text)"},lazyRecurse:function(a,b,d,c,e,f){var g=this;return function(){g.recurse(a,b,d,c,e,f)}},lazyAssign:function(a,b){var d=this;return function(){d.assign(a, +b)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)},escape:function(a){if(F(a))return"'"+a.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(S(a))return a.toString();if(!0===a)return"true";if(!1===a)return"false";if(null===a)return"null";if("undefined"===typeof a)return"undefined";throw ca("esc");},nextId:function(a,b){var d="v"+this.state.nextId++;a||this.current().vars.push(d+(b?"="+b:""));return d},current:function(){return this.state[this.state.computing]}}; +vd.prototype={compile:function(a,b){var d=this,c=this.astBuilder.ast(a);this.expression=a;this.expensiveChecks=b;$(c,d.$filter);var e,f;if(e=sd(c))f=this.recurse(e);e=qd(c.body);var g;e&&(g=[],r(e,function(a,b){var c=d.recurse(a);a.input=c;g.push(c);a.watchId=b}));var h=[];r(c.body,function(a){h.push(d.recurse(a.expression))});e=0===c.body.length?A:1===c.body.length?h[0]:function(a,b){var c;r(h,function(d){c=d(a,b)});return c};f&&(e.assign=function(a,b,c){return f(a,c,b)});g&&(e.inputs=g);e.literal= +td(c);e.constant=c.constant;return e},recurse:function(a,b,d){var c,e,f=this,g;if(a.input)return this.inputs(a.input,a.watchId);switch(a.type){case t.Literal:return this.value(a.value,b);case t.UnaryExpression:return e=this.recurse(a.argument),this["unary"+a.operator](e,b);case t.BinaryExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case t.LogicalExpression:return c=this.recurse(a.left),e=this.recurse(a.right),this["binary"+a.operator](c,e,b);case t.ConditionalExpression:return this["ternary?:"](this.recurse(a.test), +this.recurse(a.alternate),this.recurse(a.consequent),b);case t.Identifier:return Ua(a.name,f.expression),f.identifier(a.name,f.expensiveChecks||Jb(a.name),b,d,f.expression);case t.MemberExpression:return c=this.recurse(a.object,!1,!!d),a.computed||(Ua(a.property.name,f.expression),e=a.property.name),a.computed&&(e=this.recurse(a.property)),a.computed?this.computedMember(c,e,b,d,f.expression):this.nonComputedMember(c,e,f.expensiveChecks,b,d,f.expression);case t.CallExpression:return g=[],r(a.arguments, +function(a){g.push(f.recurse(a))}),a.filter&&(e=this.$filter(a.callee.name)),a.filter||(e=this.recurse(a.callee,!0)),a.filter?function(a,c,d,f){for(var n=[],p=0;p":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)>b(c,e,f,g);return d?{value:c}:c}},"binary<=":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)<=b(c,e,f,g);return d?{value:c}:c}},"binary>=":function(a, +b,d){return function(c,e,f,g){c=a(c,e,f,g)>=b(c,e,f,g);return d?{value:c}:c}},"binary&&":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)&&b(c,e,f,g);return d?{value:c}:c}},"binary||":function(a,b,d){return function(c,e,f,g){c=a(c,e,f,g)||b(c,e,f,g);return d?{value:c}:c}},"ternary?:":function(a,b,d,c){return function(e,f,g,h){e=a(e,f,g,h)?b(e,f,g,h):d(e,f,g,h);return c?{value:e}:e}},value:function(a,b){return function(){return b?{context:void 0,name:void 0,value:a}:a}},identifier:function(a, +b,d,c,e){return function(f,g,h,k){f=g&&a in g?g:f;c&&1!==c&&f&&!f[a]&&(f[a]={});g=f?f[a]:void 0;b&&ra(g,e);return d?{context:f,name:a,value:g}:g}},computedMember:function(a,b,d,c,e){return function(f,g,h,k){var l=a(f,g,h,k),m,n;null!=l&&(m=b(f,g,h,k),m+="",Ua(m,e),c&&1!==c&&(Ib(l),l&&!l[m]&&(l[m]={})),n=l[m],ra(n,e));return d?{context:l,name:m,value:n}:n}},nonComputedMember:function(a,b,d,c,e,f){return function(g,h,k,l){g=a(g,h,k,l);e&&1!==e&&(Ib(g),g&&!g[b]&&(g[b]={}));h=null!=g?g[b]:void 0;(d|| +Jb(b))&&ra(h,f);return c?{context:g,name:b,value:h}:h}},inputs:function(a,b){return function(d,c,e,f){return f?f[b]:a(d,c,e)}}};var kc=function(a,b,d){this.lexer=a;this.$filter=b;this.options=d;this.ast=new t(a,d);this.astCompiler=d.csp?new vd(this.ast,b):new ud(this.ast,b)};kc.prototype={constructor:kc,parse:function(a){return this.astCompiler.compile(a,this.options.expensiveChecks)}};var ng=Object.prototype.valueOf,ya=O("$sce"),ma={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"}, +pg=O("$compile"),Y=E.document.createElement("a"),zd=qa(E.location.href);Ad.$inject=["$document"];Mc.$inject=["$provide"];var Hd=22,Gd=".",mc="0";Bd.$inject=["$locale"];Dd.$inject=["$locale"];var Ag={yyyy:X("FullYear",4,0,!1,!0),yy:X("FullYear",2,0,!0,!0),y:X("FullYear",1,0,!1,!0),MMMM:kb("Month"),MMM:kb("Month",!0),MM:X("Month",2,1),M:X("Month",1,1),LLLL:kb("Month",!1,!0),dd:X("Date",2),d:X("Date",1),HH:X("Hours",2),H:X("Hours",1),hh:X("Hours",2,-12),h:X("Hours",1,-12),mm:X("Minutes",2),m:X("Minutes", +1),ss:X("Seconds",2),s:X("Seconds",1),sss:X("Milliseconds",3),EEEE:kb("Day"),EEE:kb("Day",!0),a:function(a,b){return 12>a.getHours()?b.AMPMS[0]:b.AMPMS[1]},Z:function(a,b,d){a=-1*d;return a=(0<=a?"+":"")+(Kb(Math[0=a.getFullYear()?b.ERANAMES[0]:b.ERANAMES[1]}},zg=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/,yg=/^\-?\d+$/;Cd.$inject=["$locale"]; +var tg=da(M),ug=da(ub);Ed.$inject=["$parse"];var pe=da({restrict:"E",compile:function(a,b){if(!b.href&&!b.xlinkHref)return function(a,b){if("a"===b[0].nodeName.toLowerCase()){var e="[object SVGAnimatedString]"===ka.call(b.prop("href"))?"xlink:href":"href";b.on("click",function(a){b.attr(e)||a.preventDefault()})}}}}),vb={};r(Eb,function(a,b){function d(a,d,e){a.$watch(e[c],function(a){e.$set(b,!!a)})}if("multiple"!=a){var c=xa("ng-"+b),e=d;"checked"===a&&(e=function(a,b,e){e.ngModel!==e[c]&&d(a,b, +e)});vb[c]=function(){return{restrict:"A",priority:100,link:e}}}});r(cd,function(a,b){vb[b]=function(){return{priority:100,link:function(a,c,e){if("ngPattern"===b&&"/"==e.ngPattern.charAt(0)&&(c=e.ngPattern.match(Cg))){e.$set("ngPattern",new RegExp(c[1],c[2]));return}a.$watch(e[b],function(a){e.$set(b,a)})}}}});r(["src","srcset","href"],function(a){var b=xa("ng-"+a);vb[b]=function(){return{priority:99,link:function(d,c,e){var f=a,g=a;"href"===a&&"[object SVGAnimatedString]"===ka.call(c.prop("href"))&& +(g="xlinkHref",e.$attr[g]="xlink:href",f=null);e.$observe(b,function(b){b?(e.$set(g,b),Ba&&f&&c.prop(f,e[g])):"href"===a&&e.$set(g,null)})}}}});var Lb={$addControl:A,$$renameControl:function(a,b){a.$name=b},$removeControl:A,$setValidity:A,$setDirty:A,$setPristine:A,$setSubmitted:A};Kd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var Td=function(a){return["$timeout","$parse",function(b,d){function c(a){return""===a?d('this[""]').assign:d(a).assign||A}return{name:"form",restrict:a? +"EAC":"E",require:["form","^^?form"],controller:Kd,compile:function(d,f){d.addClass(Va).addClass(ob);var g=f.name?"name":a&&f.ngForm?"ngForm":!1;return{pre:function(a,d,e,f){var n=f[0];if(!("action"in e)){var p=function(b){a.$apply(function(){n.$commitViewValue();n.$setSubmitted()});b.preventDefault()};d[0].addEventListener("submit",p,!1);d.on("$destroy",function(){b(function(){d[0].removeEventListener("submit",p,!1)},0,!1)})}(f[1]||n.$$parentForm).$addControl(n);var s=g?c(n.$name):A;g&&(s(a,n),e.$observe(g, +function(b){n.$name!==b&&(s(a,void 0),n.$$parentForm.$$renameControl(n,b),s=c(n.$name),s(a,n))}));d.on("$destroy",function(){n.$$parentForm.$removeControl(n);s(a,void 0);R(n,Lb)})}}}}}]},qe=Td(),De=Td(!0),Bg=/^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/,Kg=/^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i,Lg=/^(?=.{1,254}$)(?=.{1,64}@)[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+(\.[-!#$%&'*+\/0-9=?A-Z^_`a-z{|}~]+)*@[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?)*$/, +Mg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/,Ud=/^(\d{4,})-(\d{2})-(\d{2})$/,Vd=/^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,rc=/^(\d{4,})-W(\d\d)$/,Wd=/^(\d{4,})-(\d\d)$/,Xd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Md=T();r(["date","datetime-local","month","time","week"],function(a){Md[a]=!0});var Yd={text:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);pc(c)},date:mb("date",Ud,Nb(Ud,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":mb("datetimelocal",Vd,Nb(Vd,"yyyy MM dd HH mm ss sss".split(" ")), +"yyyy-MM-ddTHH:mm:ss.sss"),time:mb("time",Xd,Nb(Xd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:mb("week",rc,function(a,b){if(ia(a))return a;if(F(a)){rc.lastIndex=0;var d=rc.exec(a);if(d){var c=+d[1],e=+d[2],f=d=0,g=0,h=0,k=Id(c),e=7*(e-1);b&&(d=b.getHours(),f=b.getMinutes(),g=b.getSeconds(),h=b.getMilliseconds());return new Date(c,0,k.getDate()+e,d,f,g,h)}}return NaN},"yyyy-Www"),month:mb("month",Wd,Nb(Wd,["yyyy","MM"]),"yyyy-MM"),number:function(a,b,d,c,e,f){Nd(a,b,d,c);lb(a,b,d,c,e,f);c.$$parserName= +"number";c.$parsers.push(function(a){if(c.$isEmpty(a))return null;if(Mg.test(a))return parseFloat(a)});c.$formatters.push(function(a){if(!c.$isEmpty(a)){if(!S(a))throw nb("numfmt",a);a=a.toString()}return a});if(x(d.min)||d.ngMin){var g;c.$validators.min=function(a){return c.$isEmpty(a)||w(g)||a>=g};d.$observe("min",function(a){x(a)&&!S(a)&&(a=parseFloat(a,10));g=S(a)&&!isNaN(a)?a:void 0;c.$validate()})}if(x(d.max)||d.ngMax){var h;c.$validators.max=function(a){return c.$isEmpty(a)||w(h)||a<=h};d.$observe("max", +function(a){x(a)&&!S(a)&&(a=parseFloat(a,10));h=S(a)&&!isNaN(a)?a:void 0;c.$validate()})}},url:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);pc(c);c.$$parserName="url";c.$validators.url=function(a,b){var d=a||b;return c.$isEmpty(d)||Kg.test(d)}},email:function(a,b,d,c,e,f){lb(a,b,d,c,e,f);pc(c);c.$$parserName="email";c.$validators.email=function(a,b){var d=a||b;return c.$isEmpty(d)||Lg.test(d)}},radio:function(a,b,d,c){w(d.name)&&b.attr("name",++pb);b.on("click",function(a){b[0].checked&&c.$setViewValue(d.value, +a&&a.type)});c.$render=function(){b[0].checked=d.value==c.$viewValue};d.$observe("value",c.$render)},checkbox:function(a,b,d,c,e,f,g,h){var k=Od(h,a,"ngTrueValue",d.ngTrueValue,!0),l=Od(h,a,"ngFalseValue",d.ngFalseValue,!1);b.on("click",function(a){c.$setViewValue(b[0].checked,a&&a.type)});c.$render=function(){b[0].checked=c.$viewValue};c.$isEmpty=function(a){return!1===a};c.$formatters.push(function(a){return na(a,k)});c.$parsers.push(function(a){return a?k:l})},hidden:A,button:A,submit:A,reset:A, +file:A},Gc=["$browser","$sniffer","$filter","$parse",function(a,b,d,c){return{restrict:"E",require:["?ngModel"],link:{pre:function(e,f,g,h){h[0]&&(Yd[M(g.type)]||Yd.text)(e,f,g,h[0],b,a,d,c)}}}}],Ng=/^(true|false|\d+)$/,Ve=function(){return{restrict:"A",priority:100,compile:function(a,b){return Ng.test(b.ngValue)?function(a,b,e){e.$set("value",a.$eval(e.ngValue))}:function(a,b,e){a.$watch(e.ngValue,function(a){e.$set("value",a)})}}}},ve=["$compile",function(a){return{restrict:"AC",compile:function(b){a.$$addBindingClass(b); +return function(b,c,e){a.$$addBindingInfo(c,e.ngBind);c=c[0];b.$watch(e.ngBind,function(a){c.textContent=w(a)?"":a})}}}}],xe=["$interpolate","$compile",function(a,b){return{compile:function(d){b.$$addBindingClass(d);return function(c,d,f){c=a(d.attr(f.$attr.ngBindTemplate));b.$$addBindingInfo(d,c.expressions);d=d[0];f.$observe("ngBindTemplate",function(a){d.textContent=w(a)?"":a})}}}}],we=["$sce","$parse","$compile",function(a,b,d){return{restrict:"A",compile:function(c,e){var f=b(e.ngBindHtml),g= +b(e.ngBindHtml,function(b){return a.valueOf(b)});d.$$addBindingClass(c);return function(b,c,e){d.$$addBindingInfo(c,e.ngBindHtml);b.$watch(g,function(){var d=f(b);c.html(a.getTrustedHtml(d)||"")})}}}}],Ue=da({restrict:"A",require:"ngModel",link:function(a,b,d,c){c.$viewChangeListeners.push(function(){a.$eval(d.ngChange)})}}),ye=qc("",!0),Ae=qc("Odd",0),ze=qc("Even",1),Be=Ma({compile:function(a,b){b.$set("ngCloak",void 0);a.removeClass("ng-cloak")}}),Ce=[function(){return{restrict:"A",scope:!0,controller:"@", +priority:500}}],Lc={},Og={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var b=xa("ng-"+a);Lc[b]=["$parse","$rootScope",function(d,c){return{restrict:"A",compile:function(e,f){var g=d(f[b],null,!0);return function(b,d){d.on(a,function(d){var e=function(){g(b,{$event:d})};Og[a]&&c.$$phase?b.$evalAsync(e):b.$apply(e)})}}}}]});var Fe=["$animate","$compile",function(a, +b){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(d,c,e,f,g){var h,k,l;d.$watch(e.ngIf,function(d){d?k||g(function(d,f){k=f;d[d.length++]=b.$$createComment("end ngIf",e.ngIf);h={clone:d};a.enter(d,c.parent(),c)}):(l&&(l.remove(),l=null),k&&(k.$destroy(),k=null),h&&(l=tb(h.clone),a.leave(l).then(function(){l=null}),h=null))})}}}],Ge=["$templateRequest","$anchorScroll","$animate",function(a,b,d){return{restrict:"ECA",priority:400,terminal:!0, +transclude:"element",controller:ea.noop,compile:function(c,e){var f=e.ngInclude||e.src,g=e.onload||"",h=e.autoscroll;return function(c,e,m,n,p){var s=0,r,t,q,w=function(){t&&(t.remove(),t=null);r&&(r.$destroy(),r=null);q&&(d.leave(q).then(function(){t=null}),t=q,q=null)};c.$watch(f,function(f){var m=function(){!x(h)||h&&!c.$eval(h)||b()},t=++s;f?(a(f,!0).then(function(a){if(!c.$$destroyed&&t===s){var b=c.$new();n.template=a;a=p(b,function(a){w();d.enter(a,null,e).then(m)});r=b;q=a;r.$emit("$includeContentLoaded", +f);c.$eval(g)}},function(){c.$$destroyed||t!==s||(w(),c.$emit("$includeContentError",f))}),c.$emit("$includeContentRequested",f)):(w(),n.template=null)})}}}}],Xe=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(b,d,c,e){ka.call(d[0]).match(/SVG/)?(d.empty(),a(Oc(e.template,E.document).childNodes)(b,function(a){d.append(a)},{futureParentElement:d})):(d.html(e.template),a(d.contents())(b))}}}],He=Ma({priority:450,compile:function(){return{pre:function(a, +b,d){a.$eval(d.ngInit)}}}}),Te=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,b,d,c){var e=b.attr(d.$attr.ngList)||", ",f="false"!==d.ngTrim,g=f?W(e):e;c.$parsers.push(function(a){if(!w(a)){var b=[];a&&r(a.split(g),function(a){a&&b.push(f?W(a):a)});return b}});c.$formatters.push(function(a){if(J(a))return a.join(e)});c.$isEmpty=function(a){return!a||!a.length}}}},ob="ng-valid",Pd="ng-invalid",Va="ng-pristine",Mb="ng-dirty",Rd="ng-pending",nb=O("ngModel"),Pg=["$scope", +"$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,b,d,c,e,f,g,h,k,l){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=void 0;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$untouched=!0;this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=void 0;this.$name=l(d.name||"",!1)(a); +this.$$parentForm=Lb;var m=e(d.ngModel),n=m.assign,p=m,s=n,t=null,I,q=this;this.$$setOptions=function(a){if((q.$options=a)&&a.getterSetter){var b=e(d.ngModel+"()"),f=e(d.ngModel+"($$$p)");p=function(a){var c=m(a);z(c)&&(c=b(a));return c};s=function(a,b){z(m(a))?f(a,{$$$p:b}):n(a,b)}}else if(!m.assign)throw nb("nonassign",d.ngModel,va(c));};this.$render=A;this.$isEmpty=function(a){return w(a)||""===a||null===a||a!==a};this.$$updateEmptyClasses=function(a){q.$isEmpty(a)?(f.removeClass(c,"ng-not-empty"), +f.addClass(c,"ng-empty")):(f.removeClass(c,"ng-empty"),f.addClass(c,"ng-not-empty"))};var K=0;Ld({ctrl:this,$element:c,set:function(a,b){a[b]=!0},unset:function(a,b){delete a[b]},$animate:f});this.$setPristine=function(){q.$dirty=!1;q.$pristine=!0;f.removeClass(c,Mb);f.addClass(c,Va)};this.$setDirty=function(){q.$dirty=!0;q.$pristine=!1;f.removeClass(c,Va);f.addClass(c,Mb);q.$$parentForm.$setDirty()};this.$setUntouched=function(){q.$touched=!1;q.$untouched=!0;f.setClass(c,"ng-untouched","ng-touched")}; +this.$setTouched=function(){q.$touched=!0;q.$untouched=!1;f.setClass(c,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){g.cancel(t);q.$viewValue=q.$$lastCommittedViewValue;q.$render()};this.$validate=function(){if(!S(q.$modelValue)||!isNaN(q.$modelValue)){var a=q.$$rawModelValue,b=q.$valid,c=q.$modelValue,d=q.$options&&q.$options.allowInvalid;q.$$runValidators(a,q.$$lastCommittedViewValue,function(e){d||b===e||(q.$modelValue=e?a:void 0,q.$modelValue!==c&&q.$$writeModelToScope())})}}; +this.$$runValidators=function(a,b,c){function d(){var c=!0;r(q.$validators,function(d,e){var g=d(a,b);c=c&&g;f(e,g)});return c?!0:(r(q.$asyncValidators,function(a,b){f(b,null)}),!1)}function e(){var c=[],d=!0;r(q.$asyncValidators,function(e,g){var h=e(a,b);if(!h||!z(h.then))throw nb("nopromise",h);f(g,void 0);c.push(h.then(function(){f(g,!0)},function(){d=!1;f(g,!1)}))});c.length?k.all(c).then(function(){g(d)},A):g(!0)}function f(a,b){h===K&&q.$setValidity(a,b)}function g(a){h===K&&c(a)}K++;var h= +K;(function(){var a=q.$$parserName||"parse";if(w(I))f(a,null);else return I||(r(q.$validators,function(a,b){f(b,null)}),r(q.$asyncValidators,function(a,b){f(b,null)})),f(a,I),I;return!0})()?d()?e():g(!1):g(!1)};this.$commitViewValue=function(){var a=q.$viewValue;g.cancel(t);if(q.$$lastCommittedViewValue!==a||""===a&&q.$$hasNativeValidators)q.$$updateEmptyClasses(a),q.$$lastCommittedViewValue=a,q.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var b=q.$$lastCommittedViewValue; +if(I=w(b)?void 0:!0)for(var c=0;ce||c.$isEmpty(b)||b.length<=e}}}}},Jc=function(){return{restrict:"A",require:"?ngModel",link:function(a,b,d,c){if(c){var e=0;d.$observe("minlength",function(a){e=aa(a)||0;c.$validate()});c.$validators.minlength=function(a,b){return c.$isEmpty(b)||b.length>=e}}}}};E.angular.bootstrap?E.console&&console.log("WARNING: Tried to load angular more than once."):(ke(),me(ea),ea.module("ngLocale",[],["$provide",function(a){function b(a){a+= +"";var b=a.indexOf(".");return-1==b?0:a.length-b-1}a.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:"January February March April May June July August September October November December".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),SHORTMONTH:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),STANDALONEMONTH:"January February March April May June July August September October November December".split(" "), +WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a","short":"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\u00a4",negSuf:"",posPre:"\u00a4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(a, +c){var e=a|0,f=c;void 0===f&&(f=Math.min(b(a),3));Math.pow(10,f);return 1==e&&0==f?"one":"other"}})}]),B(E.document).ready(function(){ge(E.document,Bc)}))})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(''); +//# sourceMappingURL=angular.min.js.map diff --git a/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map b/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map new file mode 100644 index 0000000000..6d34cd22b3 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/vendor/angular/angular.min.js.map @@ -0,0 +1,8 @@ +{ +"version":3, +"file":"angular.min.js", +"lineCount":315, +"mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAAS,CAgClBC,QAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,SAAAA,EAAAA,CAAAA,IAAAA,EAAAA,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,sCAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAAA,CAAAA,EAAAA,EAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,SAAAA,OAAAA,CAAAA,CAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAAA,CAAAA,GAAAA,CAAAA,GAAAA,EAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,GAAAA,KAAAA,EAAAA,kBAAAA,CAAAA,CAAAA,EAAAA,CAAAA,SAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,UAAAA,EAAAA,MAAAA,EAAAA,CAAAA,CAAAA,SAAAA,EAAAA,QAAAA,CAAAA,aAAAA,CAAAA,EAAAA,CAAAA,CAAAA,WAAAA,EAAAA,MAAAA,EAAAA,CAAAA,WAAAA,CAAAA,QAAAA,EAAAA,MAAAA,EAAAA,CAAAA,IAAAA,UAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,MAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAmNAC,QAASA,GAAW,CAACC,CAAD,CAAM,CAGxB,GAAW,IAAX,EAAIA,CAAJ,EAAmBC,EAAA,CAASD,CAAT,CAAnB,CAAkC,MAAO,CAAA,CAMzC,IAAIE,CAAA,CAAQF,CAAR,CAAJ,EAAoBG,CAAA,CAASH,CAAT,CAApB,EAAsCI,CAAtC,EAAgDJ,CAAhD,WAA+DI,EAA/D,CAAwE,MAAO,CAAA,CAI/E;IAAIC,EAAS,QAATA,EAAqBC,OAAA,CAAON,CAAP,CAArBK,EAAoCL,CAAAK,OAIxC,OAAOE,EAAA,CAASF,CAAT,CAAP,GACa,CADb,EACGA,CADH,GACoBA,CADpB,CAC6B,CAD7B,GACmCL,EADnC,EAC0CA,CAD1C,WACyDQ,MADzD,GACsF,UADtF,EACmE,MAAOR,EAAAS,KAD1E,CAjBwB,CAyD1BC,QAASA,EAAO,CAACV,CAAD,CAAMW,CAAN,CAAgBC,CAAhB,CAAyB,CAAA,IACnCC,CADmC,CAC9BR,CACT,IAAIL,CAAJ,CACE,GAAIc,CAAA,CAAWd,CAAX,CAAJ,CACE,IAAKa,CAAL,GAAYb,EAAZ,CAGa,WAAX,EAAIa,CAAJ,EAAiC,QAAjC,EAA0BA,CAA1B,EAAoD,MAApD,EAA6CA,CAA7C,EAAgEb,CAAAe,eAAhE,EAAsF,CAAAf,CAAAe,eAAA,CAAmBF,CAAnB,CAAtF,EACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBZ,CAAA,CAAIa,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCb,CAAtC,CALN,KAQO,IAAIE,CAAA,CAAQF,CAAR,CAAJ,EAAoBD,EAAA,CAAYC,CAAZ,CAApB,CAAsC,CAC3C,IAAIiB,EAA6B,QAA7BA,GAAc,MAAOjB,EACpBa,EAAA,CAAM,CAAX,KAAcR,CAAd,CAAuBL,CAAAK,OAAvB,CAAmCQ,CAAnC,CAAyCR,CAAzC,CAAiDQ,CAAA,EAAjD,CACE,CAAII,CAAJ,EAAmBJ,CAAnB,GAA0Bb,EAA1B,GACEW,CAAAK,KAAA,CAAcJ,CAAd,CAAuBZ,CAAA,CAAIa,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCb,CAAtC,CAJuC,CAAtC,IAOA,IAAIA,CAAAU,QAAJ,EAAmBV,CAAAU,QAAnB,GAAmCA,CAAnC,CACHV,CAAAU,QAAA,CAAYC,CAAZ,CAAsBC,CAAtB,CAA+BZ,CAA/B,CADG,KAEA,IAAIkB,EAAA,CAAclB,CAAd,CAAJ,CAEL,IAAKa,CAAL,GAAYb,EAAZ,CACEW,CAAAK,KAAA,CAAcJ,CAAd,CAAuBZ,CAAA,CAAIa,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCb,CAAtC,CAHG,KAKA,IAAkC,UAAlC,GAAI,MAAOA,EAAAe,eAAX,CAEL,IAAKF,CAAL,GAAYb,EAAZ,CACMA,CAAAe,eAAA,CAAmBF,CAAnB,CAAJ;AACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBZ,CAAA,CAAIa,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCb,CAAtC,CAJC,KASL,KAAKa,CAAL,GAAYb,EAAZ,CACMe,EAAAC,KAAA,CAAoBhB,CAApB,CAAyBa,CAAzB,CAAJ,EACEF,CAAAK,KAAA,CAAcJ,CAAd,CAAuBZ,CAAA,CAAIa,CAAJ,CAAvB,CAAiCA,CAAjC,CAAsCb,CAAtC,CAKR,OAAOA,EAzCgC,CA4CzCmB,QAASA,GAAa,CAACnB,CAAD,CAAMW,CAAN,CAAgBC,CAAhB,CAAyB,CAE7C,IADA,IAAIQ,EAAOd,MAAAc,KAAA,CAAYpB,CAAZ,CAAAqB,KAAA,EAAX,CACSC,EAAI,CAAb,CAAgBA,CAAhB,CAAoBF,CAAAf,OAApB,CAAiCiB,CAAA,EAAjC,CACEX,CAAAK,KAAA,CAAcJ,CAAd,CAAuBZ,CAAA,CAAIoB,CAAA,CAAKE,CAAL,CAAJ,CAAvB,CAAqCF,CAAA,CAAKE,CAAL,CAArC,CAEF,OAAOF,EALsC,CAc/CG,QAASA,GAAa,CAACC,CAAD,CAAa,CACjC,MAAO,SAAQ,CAACC,CAAD,CAAQZ,CAAR,CAAa,CAACW,CAAA,CAAWX,CAAX,CAAgBY,CAAhB,CAAD,CADK,CAcnCC,QAASA,GAAO,EAAG,CACjB,MAAO,EAAEC,EADQ,CAmBnBC,QAASA,GAAU,CAACC,CAAD,CAAMC,CAAN,CAAYC,CAAZ,CAAkB,CAGnC,IAFA,IAAIC,EAAIH,CAAAI,UAAR,CAESX,EAAI,CAFb,CAEgBY,EAAKJ,CAAAzB,OAArB,CAAkCiB,CAAlC,CAAsCY,CAAtC,CAA0C,EAAEZ,CAA5C,CAA+C,CAC7C,IAAItB,EAAM8B,CAAA,CAAKR,CAAL,CACV,IAAKa,CAAA,CAASnC,CAAT,CAAL,EAAuBc,CAAA,CAAWd,CAAX,CAAvB,CAEA,IADA,IAAIoB,EAAOd,MAAAc,KAAA,CAAYpB,CAAZ,CAAX,CACSoC,EAAI,CADb,CACgBC,EAAKjB,CAAAf,OAArB,CAAkC+B,CAAlC,CAAsCC,CAAtC,CAA0CD,CAAA,EAA1C,CAA+C,CAC7C,IAAIvB,EAAMO,CAAA,CAAKgB,CAAL,CAAV,CACIE,EAAMtC,CAAA,CAAIa,CAAJ,CAENkB,EAAJ,EAAYI,CAAA,CAASG,CAAT,CAAZ,CACMC,EAAA,CAAOD,CAAP,CAAJ,CACET,CAAA,CAAIhB,CAAJ,CADF,CACa,IAAI2B,IAAJ,CAASF,CAAAG,QAAA,EAAT,CADb,CAEWC,EAAA,CAASJ,CAAT,CAAJ,CACLT,CAAA,CAAIhB,CAAJ,CADK,CACM,IAAI8B,MAAJ,CAAWL,CAAX,CADN,CAEIA,CAAAM,SAAJ,CACLf,CAAA,CAAIhB,CAAJ,CADK,CACMyB,CAAAO,UAAA,CAAc,CAAA,CAAd,CADN;AAEIC,EAAA,CAAUR,CAAV,CAAJ,CACLT,CAAA,CAAIhB,CAAJ,CADK,CACMyB,CAAAS,MAAA,EADN,EAGAZ,CAAA,CAASN,CAAA,CAAIhB,CAAJ,CAAT,CACL,GADyBgB,CAAA,CAAIhB,CAAJ,CACzB,CADoCX,CAAA,CAAQoC,CAAR,CAAA,CAAe,EAAf,CAAoB,EACxD,EAAAV,EAAA,CAAWC,CAAA,CAAIhB,CAAJ,CAAX,CAAqB,CAACyB,CAAD,CAArB,CAA4B,CAAA,CAA5B,CAJK,CAPT,CAcET,CAAA,CAAIhB,CAAJ,CAdF,CAcayB,CAlBgC,CAJF,CA2B/BN,CAtChB,CAsCWH,CArCTI,UADF,CAsCgBD,CAtChB,CAGE,OAmCSH,CAnCFI,UAoCT,OAAOJ,EA/B4B,CAoDrCmB,QAASA,EAAM,CAACnB,CAAD,CAAM,CACnB,MAAOD,GAAA,CAAWC,CAAX,CAAgBoB,EAAAjC,KAAA,CAAWkC,SAAX,CAAsB,CAAtB,CAAhB,CAA0C,CAAA,CAA1C,CADY,CAuBrBC,QAASA,GAAK,CAACtB,CAAD,CAAM,CAClB,MAAOD,GAAA,CAAWC,CAAX,CAAgBoB,EAAAjC,KAAA,CAAWkC,SAAX,CAAsB,CAAtB,CAAhB,CAA0C,CAAA,CAA1C,CADW,CAMpBE,QAASA,GAAK,CAACC,CAAD,CAAM,CAClB,MAAOC,SAAA,CAASD,CAAT,CAAc,EAAd,CADW,CAKpBE,QAASA,GAAO,CAACC,CAAD,CAASC,CAAT,CAAgB,CAC9B,MAAOT,EAAA,CAAO1C,MAAAoD,OAAA,CAAcF,CAAd,CAAP,CAA8BC,CAA9B,CADuB,CAoBhCE,QAASA,EAAI,EAAG,EAgChBC,QAASA,GAAQ,CAACC,CAAD,CAAI,CAAC,MAAOA,EAAR,CAIrBC,QAASA,GAAO,CAACrC,CAAD,CAAQ,CAAC,MAAOsC,SAAiB,EAAG,CAAC,MAAOtC,EAAR,CAA5B,CAExBuC,QAASA,GAAiB,CAAChE,CAAD,CAAM,CAC9B,MAAOc,EAAA,CAAWd,CAAAiE,SAAX,CAAP,EAAmCjE,CAAAiE,SAAnC,GAAoDA,EADtB,CAiBhCC,QAASA,EAAW,CAACzC,CAAD,CAAQ,CAAC,MAAwB,WAAxB,GAAO,MAAOA,EAAf,CAe5B0C,QAASA,EAAS,CAAC1C,CAAD,CAAQ,CAAC,MAAwB,WAAxB;AAAO,MAAOA,EAAf,CAgB1BU,QAASA,EAAQ,CAACV,CAAD,CAAQ,CAEvB,MAAiB,KAAjB,GAAOA,CAAP,EAA0C,QAA1C,GAAyB,MAAOA,EAFT,CAWzBP,QAASA,GAAa,CAACO,CAAD,CAAQ,CAC5B,MAAiB,KAAjB,GAAOA,CAAP,EAA0C,QAA1C,GAAyB,MAAOA,EAAhC,EAAsD,CAAC2C,EAAA,CAAe3C,CAAf,CAD3B,CAiB9BtB,QAASA,EAAQ,CAACsB,CAAD,CAAQ,CAAC,MAAwB,QAAxB,GAAO,MAAOA,EAAf,CAqBzBlB,QAASA,EAAQ,CAACkB,CAAD,CAAQ,CAAC,MAAwB,QAAxB,GAAO,MAAOA,EAAf,CAezBc,QAASA,GAAM,CAACd,CAAD,CAAQ,CACrB,MAAgC,eAAhC,GAAOwC,EAAAjD,KAAA,CAAcS,CAAd,CADc,CA+BvBX,QAASA,EAAU,CAACW,CAAD,CAAQ,CAAC,MAAwB,UAAxB,GAAO,MAAOA,EAAf,CAU3BiB,QAASA,GAAQ,CAACjB,CAAD,CAAQ,CACvB,MAAgC,iBAAhC,GAAOwC,EAAAjD,KAAA,CAAcS,CAAd,CADgB,CAYzBxB,QAASA,GAAQ,CAACD,CAAD,CAAM,CACrB,MAAOA,EAAP,EAAcA,CAAAH,OAAd,GAA6BG,CADR,CAKvBqE,QAASA,GAAO,CAACrE,CAAD,CAAM,CACpB,MAAOA,EAAP,EAAcA,CAAAsE,WAAd,EAAgCtE,CAAAuE,OADZ,CAoBtBC,QAASA,GAAS,CAAC/C,CAAD,CAAQ,CACxB,MAAwB,SAAxB,GAAO,MAAOA,EADU,CAW1BgD,QAASA,GAAY,CAAChD,CAAD,CAAQ,CAC3B,MAAOA,EAAP,EAAgBlB,CAAA,CAASkB,CAAApB,OAAT,CAAhB;AAA0CqE,EAAAC,KAAA,CAAwBV,EAAAjD,KAAA,CAAcS,CAAd,CAAxB,CADf,CAkC7BqB,QAASA,GAAS,CAAC8B,CAAD,CAAO,CACvB,MAAO,EAAGA,CAAAA,CAAH,EACJ,EAAAA,CAAAhC,SAAA,EACGgC,CAAAC,KADH,EACgBD,CAAAE,KADhB,EAC6BF,CAAAG,KAD7B,CADI,CADgB,CAUzBC,QAASA,GAAO,CAAC3B,CAAD,CAAM,CAAA,IAChBrD,EAAM,EAAIiF,EAAAA,CAAQ5B,CAAA6B,MAAA,CAAU,GAAV,CAAtB,KAAsC5D,CACtC,KAAKA,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgB2D,CAAA5E,OAAhB,CAA8BiB,CAAA,EAA9B,CACEtB,CAAA,CAAIiF,CAAA,CAAM3D,CAAN,CAAJ,CAAA,CAAgB,CAAA,CAElB,OAAOtB,EALa,CAStBmF,QAASA,GAAS,CAACC,CAAD,CAAU,CAC1B,MAAOC,EAAA,CAAUD,CAAAxC,SAAV,EAA+BwC,CAAA,CAAQ,CAAR,CAA/B,EAA6CA,CAAA,CAAQ,CAAR,CAAAxC,SAA7C,CADmB,CAQ5B0C,QAASA,GAAW,CAACC,CAAD,CAAQ9D,CAAR,CAAe,CACjC,IAAI+D,EAAQD,CAAAE,QAAA,CAAchE,CAAd,CACC,EAAb,EAAI+D,CAAJ,EACED,CAAAG,OAAA,CAAaF,CAAb,CAAoB,CAApB,CAEF,OAAOA,EAL0B,CAkEnCG,QAASA,EAAI,CAACC,CAAD,CAASC,CAAT,CAAsB,CA8BjCC,QAASA,EAAW,CAACF,CAAD,CAASC,CAAT,CAAsB,CACxC,IAAI7D,EAAI6D,CAAA5D,UAAR,CACIpB,CACJ,IAAIX,CAAA,CAAQ0F,CAAR,CAAJ,CAAqB,CACVtE,CAAAA,CAAI,CAAb,KAAS,IAAOY,EAAK0D,CAAAvF,OAArB,CAAoCiB,CAApC,CAAwCY,CAAxC,CAA4CZ,CAAA,EAA5C,CACEuE,CAAAE,KAAA,CAAiBC,CAAA,CAAYJ,CAAA,CAAOtE,CAAP,CAAZ,CAAjB,CAFiB,CAArB,IAIO,IAAIJ,EAAA,CAAc0E,CAAd,CAAJ,CAEL,IAAK/E,CAAL,GAAY+E,EAAZ,CACEC,CAAA,CAAYhF,CAAZ,CAAA,CAAmBmF,CAAA,CAAYJ,CAAA,CAAO/E,CAAP,CAAZ,CAHhB,KAKA,IAAI+E,CAAJ,EAA+C,UAA/C,GAAc,MAAOA,EAAA7E,eAArB,CAEL,IAAKF,CAAL,GAAY+E,EAAZ,CACMA,CAAA7E,eAAA,CAAsBF,CAAtB,CAAJ;CACEgF,CAAA,CAAYhF,CAAZ,CADF,CACqBmF,CAAA,CAAYJ,CAAA,CAAO/E,CAAP,CAAZ,CADrB,CAHG,KASL,KAAKA,CAAL,GAAY+E,EAAZ,CACM7E,EAAAC,KAAA,CAAoB4E,CAApB,CAA4B/E,CAA5B,CAAJ,GACEgF,CAAA,CAAYhF,CAAZ,CADF,CACqBmF,CAAA,CAAYJ,CAAA,CAAO/E,CAAP,CAAZ,CADrB,CAKoBmB,EAzhB1B,CAyhBa6D,CAxhBX5D,UADF,CAyhB0BD,CAzhB1B,CAGE,OAshBW6D,CAthBJ5D,UAuhBP,OAAO4D,EA5BiC,CA+B1CG,QAASA,EAAW,CAACJ,CAAD,CAAS,CAE3B,GAAK,CAAAzD,CAAA,CAASyD,CAAT,CAAL,CACE,MAAOA,EAIT,KAAIJ,EAAQS,CAAAR,QAAA,CAAoBG,CAApB,CACZ,IAAe,EAAf,GAAIJ,CAAJ,CACE,MAAOU,EAAA,CAAUV,CAAV,CAGT,IAAIvF,EAAA,CAAS2F,CAAT,CAAJ,EAAwBvB,EAAA,CAAQuB,CAAR,CAAxB,CACE,KAAMO,GAAA,CAAS,MAAT,CAAN,CAIEC,IAAAA,EAAe,CAAA,CAAfA,CACAP,EAAcQ,CAAA,CAAST,CAAT,CAEEU,KAAAA,EAApB,GAAIT,CAAJ,GACEA,CACA,CADc3F,CAAA,CAAQ0F,CAAR,CAAA,CAAkB,EAAlB,CAAuBtF,MAAAoD,OAAA,CAAcU,EAAA,CAAewB,CAAf,CAAd,CACrC,CAAAQ,CAAA,CAAe,CAAA,CAFjB,CAKAH,EAAAF,KAAA,CAAiBH,CAAjB,CACAM,EAAAH,KAAA,CAAeF,CAAf,CAEA,OAAOO,EAAA,CACHN,CAAA,CAAYF,CAAZ,CAAoBC,CAApB,CADG,CAEHA,CA9BuB,CAiC7BQ,QAASA,EAAQ,CAACT,CAAD,CAAS,CACxB,OAAQ3B,EAAAjD,KAAA,CAAc4E,CAAd,CAAR,EACE,KAAK,oBAAL,CACA,KAAK,qBAAL,CACA,KAAK,qBAAL,CACA,KAAK,uBAAL,CACA,KAAK,uBAAL,CACA,KAAK,qBAAL,CACA,KAAK,4BAAL,CACA,KAAK,sBAAL,CACA,KAAK,sBAAL,CACE,MAAO,KAAIA,CAAAW,YAAJ,CAAuBP,CAAA,CAAYJ,CAAAY,OAAZ,CAAvB,CAET;KAAK,sBAAL,CAEE,GAAKvD,CAAA2C,CAAA3C,MAAL,CAAmB,CACjB,IAAIwD,EAAS,IAAIC,WAAJ,CAAgBd,CAAAe,WAAhB,CACbC,EAAA,IAAIC,UAAJ,CAAeJ,CAAf,CAAAG,KAAA,CAA2B,IAAIC,UAAJ,CAAejB,CAAf,CAA3B,CACA,OAAOa,EAHU,CAKnB,MAAOb,EAAA3C,MAAA,CAAa,CAAb,CAET,MAAK,kBAAL,CACA,KAAK,iBAAL,CACA,KAAK,iBAAL,CACA,KAAK,eAAL,CACE,MAAO,KAAI2C,CAAAW,YAAJ,CAAuBX,CAAAnD,QAAA,EAAvB,CAET,MAAK,iBAAL,CAGE,MAFIqE,EAEGA,CAFE,IAAInE,MAAJ,CAAWiD,CAAAA,OAAX,CAA0BA,CAAA3B,SAAA,EAAA8C,MAAA,CAAwB,SAAxB,CAAA,CAAmC,CAAnC,CAA1B,CAEFD,CADPA,CAAAE,UACOF,CADQlB,CAAAoB,UACRF,CAAAA,CAET,MAAK,eAAL,CACE,MAAO,KAAIlB,CAAAW,YAAJ,CAAuB,CAACX,CAAD,CAAvB,CAAiC,CAACqB,KAAMrB,CAAAqB,KAAP,CAAjC,CAjCX,CAoCA,GAAInG,CAAA,CAAW8E,CAAA/C,UAAX,CAAJ,CACE,MAAO+C,EAAA/C,UAAA,CAAiB,CAAA,CAAjB,CAtCe,CA7F1B,IAAIoD,EAAc,EAAlB;AACIC,EAAY,EAEhB,IAAIL,CAAJ,CAAiB,CACf,GAAIpB,EAAA,CAAaoB,CAAb,CAAJ,EA/H4B,sBA+H5B,GA/HK5B,EAAAjD,KAAA,CA+H0C6E,CA/H1C,CA+HL,CACE,KAAMM,GAAA,CAAS,MAAT,CAAN,CAEF,GAAIP,CAAJ,GAAeC,CAAf,CACE,KAAMM,GAAA,CAAS,KAAT,CAAN,CAIEjG,CAAA,CAAQ2F,CAAR,CAAJ,CACEA,CAAAxF,OADF,CACuB,CADvB,CAGEK,CAAA,CAAQmF,CAAR,CAAqB,QAAQ,CAACpE,CAAD,CAAQZ,CAAR,CAAa,CAC5B,WAAZ,GAAIA,CAAJ,EACE,OAAOgF,CAAA,CAAYhF,CAAZ,CAF+B,CAA1C,CAOFoF,EAAAF,KAAA,CAAiBH,CAAjB,CACAM,EAAAH,KAAA,CAAeF,CAAf,CACA,OAAOC,EAAA,CAAYF,CAAZ,CAAoBC,CAApB,CArBQ,CAwBjB,MAAOG,EAAA,CAAYJ,CAAZ,CA5B0B,CA0MnCsB,QAASA,GAAM,CAACC,CAAD,CAAKC,CAAL,CAAS,CACtB,GAAID,CAAJ,GAAWC,CAAX,CAAe,MAAO,CAAA,CACtB,IAAW,IAAX,GAAID,CAAJ,EAA0B,IAA1B,GAAmBC,CAAnB,CAAgC,MAAO,CAAA,CACvC,IAAID,CAAJ,GAAWA,CAAX,EAAiBC,CAAjB,GAAwBA,CAAxB,CAA4B,MAAO,CAAA,CAHb,KAIlBC,EAAK,MAAOF,EAJM,CAIsBtG,CAC5C,IAAIwG,CAAJ,EADyBC,MAAOF,EAChC,EAAsB,QAAtB,EAAgBC,CAAhB,CACE,GAAInH,CAAA,CAAQiH,CAAR,CAAJ,CAAiB,CACf,GAAK,CAAAjH,CAAA,CAAQkH,CAAR,CAAL,CAAkB,MAAO,CAAA,CACzB,KAAK/G,CAAL,CAAc8G,CAAA9G,OAAd,GAA4B+G,CAAA/G,OAA5B,CAAuC,CACrC,IAAKQ,CAAL,CAAW,CAAX,CAAcA,CAAd,CAAoBR,CAApB,CAA4BQ,CAAA,EAA5B,CACE,GAAK,CAAAqG,EAAA,CAAOC,CAAA,CAAGtG,CAAH,CAAP,CAAgBuG,CAAA,CAAGvG,CAAH,CAAhB,CAAL,CAA+B,MAAO,CAAA,CAExC,OAAO,CAAA,CAJ8B,CAFxB,CAAjB,IAQO,CAAA,GAAI0B,EAAA,CAAO4E,CAAP,CAAJ,CACL,MAAK5E,GAAA,CAAO6E,CAAP,CAAL,CACOF,EAAA,CAAOC,CAAAI,QAAA,EAAP,CAAqBH,CAAAG,QAAA,EAArB,CADP;AAAwB,CAAA,CAEnB,IAAI7E,EAAA,CAASyE,CAAT,CAAJ,CACL,MAAKzE,GAAA,CAAS0E,CAAT,CAAL,CACOD,CAAAlD,SAAA,EADP,EACwBmD,CAAAnD,SAAA,EADxB,CAA0B,CAAA,CAG1B,IAAII,EAAA,CAAQ8C,CAAR,CAAJ,EAAmB9C,EAAA,CAAQ+C,CAAR,CAAnB,EAAkCnH,EAAA,CAASkH,CAAT,CAAlC,EAAkDlH,EAAA,CAASmH,CAAT,CAAlD,EACElH,CAAA,CAAQkH,CAAR,CADF,EACiB7E,EAAA,CAAO6E,CAAP,CADjB,EAC+B1E,EAAA,CAAS0E,CAAT,CAD/B,CAC6C,MAAO,CAAA,CACpDI,EAAA,CAASC,CAAA,EACT,KAAK5G,CAAL,GAAYsG,EAAZ,CACE,GAAsB,GAAtB,GAAItG,CAAA6G,OAAA,CAAW,CAAX,CAAJ,EAA6B,CAAA5G,CAAA,CAAWqG,CAAA,CAAGtG,CAAH,CAAX,CAA7B,CAAA,CACA,GAAK,CAAAqG,EAAA,CAAOC,CAAA,CAAGtG,CAAH,CAAP,CAAgBuG,CAAA,CAAGvG,CAAH,CAAhB,CAAL,CAA+B,MAAO,CAAA,CACtC2G,EAAA,CAAO3G,CAAP,CAAA,CAAc,CAAA,CAFd,CAIF,IAAKA,CAAL,GAAYuG,EAAZ,CACE,GAAM,EAAAvG,CAAA,GAAO2G,EAAP,CAAN,EACsB,GADtB,GACI3G,CAAA6G,OAAA,CAAW,CAAX,CADJ,EAEIvD,CAAA,CAAUiD,CAAA,CAAGvG,CAAH,CAAV,CAFJ,EAGK,CAAAC,CAAA,CAAWsG,CAAA,CAAGvG,CAAH,CAAX,CAHL,CAG0B,MAAO,CAAA,CAEnC,OAAO,CAAA,CArBF,CAwBT,MAAO,CAAA,CAtCe,CAkIxB8G,QAASA,GAAM,CAACC,CAAD,CAASC,CAAT,CAAiBrC,CAAjB,CAAwB,CACrC,MAAOoC,EAAAD,OAAA,CAAc1E,EAAAjC,KAAA,CAAW6G,CAAX,CAAmBrC,CAAnB,CAAd,CAD8B,CA4BvCsC,QAASA,GAAI,CAACC,CAAD,CAAOC,CAAP,CAAW,CACtB,IAAIC,EAA+B,CAAnB,CAAA/E,SAAA7C,OAAA,CAxBT4C,EAAAjC,KAAA,CAwB0CkC,SAxB1C,CAwBqDgF,CAxBrD,CAwBS,CAAiD,EACjE,OAAI,CAAApH,CAAA,CAAWkH,CAAX,CAAJ,EAAwBA,CAAxB,WAAsCrF,OAAtC,CAcSqF,CAdT,CACSC,CAAA5H,OAAA,CACH,QAAQ,EAAG,CACT,MAAO6C,UAAA7C,OAAA,CACH2H,CAAAG,MAAA,CAASJ,CAAT,CAAeJ,EAAA,CAAOM,CAAP,CAAkB/E,SAAlB;AAA6B,CAA7B,CAAf,CADG,CAEH8E,CAAAG,MAAA,CAASJ,CAAT,CAAeE,CAAf,CAHK,CADR,CAMH,QAAQ,EAAG,CACT,MAAO/E,UAAA7C,OAAA,CACH2H,CAAAG,MAAA,CAASJ,CAAT,CAAe7E,SAAf,CADG,CAEH8E,CAAAhH,KAAA,CAAQ+G,CAAR,CAHK,CATK,CAqBxBK,QAASA,GAAc,CAACvH,CAAD,CAAMY,CAAN,CAAa,CAClC,IAAI4G,EAAM5G,CAES,SAAnB,GAAI,MAAOZ,EAAX,EAAiD,GAAjD,GAA+BA,CAAA6G,OAAA,CAAW,CAAX,CAA/B,EAA0E,GAA1E,GAAwD7G,CAAA6G,OAAA,CAAW,CAAX,CAAxD,CACEW,CADF,CACQ/B,IAAAA,EADR,CAEWrG,EAAA,CAASwB,CAAT,CAAJ,CACL4G,CADK,CACC,SADD,CAEI5G,CAAJ,EAAc5B,CAAAyI,SAAd,GAAkC7G,CAAlC,CACL4G,CADK,CACC,WADD,CAEIhE,EAAA,CAAQ5C,CAAR,CAFJ,GAGL4G,CAHK,CAGC,QAHD,CAMP,OAAOA,EAb2B,CAqDpCE,QAASA,GAAM,CAACvI,CAAD,CAAMwI,CAAN,CAAc,CAC3B,GAAI,CAAAtE,CAAA,CAAYlE,CAAZ,CAAJ,CAIA,MAHKO,EAAA,CAASiI,CAAT,CAGE,GAFLA,CAEK,CAFIA,CAAA,CAAS,CAAT,CAAa,IAEjB,EAAAC,IAAAC,UAAA,CAAe1I,CAAf,CAAoBoI,EAApB,CAAoCI,CAApC,CALoB,CAqB7BG,QAASA,GAAQ,CAACC,CAAD,CAAO,CACtB,MAAOzI,EAAA,CAASyI,CAAT,CAAA,CACDH,IAAAI,MAAA,CAAWD,CAAX,CADC,CAEDA,CAHgB,CAQxBE,QAASA,GAAgB,CAACC,CAAD,CAAWC,CAAX,CAAqB,CAE5CD,CAAA,CAAWA,CAAAE,QAAA,CAAiBC,EAAjB,CAA6B,EAA7B,CACX,KAAIC,EAA0B3G,IAAAqG,MAAA,CAAW,wBAAX,CAAsCE,CAAtC,CAA1BI,CAA4E,GAChF,OAAOC,MAAA,CAAMD,CAAN,CAAA,CAAiCH,CAAjC,CAA4CG,CAJP,CAe9CE,QAASA,GAAsB,CAACC,CAAD,CAAOP,CAAP,CAAiBQ,CAAjB,CAA0B,CACvDA,CAAA,CAAUA,CAAA;AAAW,EAAX,CAAe,CACzB,KAAIC,EAAqBF,CAAAG,kBAAA,EACrBC,EAAAA,CAAiBZ,EAAA,CAAiBC,CAAjB,CAA2BS,CAA3B,CACO,EAAA,EAAWE,CAAX,CAA4BF,CAVxDF,EAAA,CAAO,IAAI9G,IAAJ,CAUe8G,CAVN/B,QAAA,EAAT,CACP+B,EAAAK,WAAA,CAAgBL,CAAAM,WAAA,EAAhB,CAAoCC,CAApC,CASA,OAROP,EAIgD,CAWzDQ,QAASA,GAAW,CAAC1E,CAAD,CAAU,CAC5BA,CAAA,CAAUhF,CAAA,CAAOgF,CAAP,CAAArC,MAAA,EACV,IAAI,CAGFqC,CAAA2E,MAAA,EAHE,CAIF,MAAOC,CAAP,CAAU,EACZ,IAAIC,EAAW7J,CAAA,CAAO,OAAP,CAAA8J,OAAA,CAAuB9E,CAAvB,CAAA+E,KAAA,EACf,IAAI,CACF,MAAO/E,EAAA,CAAQ,CAAR,CAAAgF,SAAA,GAAwBC,EAAxB,CAAyChF,CAAA,CAAU4E,CAAV,CAAzC,CACHA,CAAAlD,MAAA,CACQ,YADR,CAAA,CACsB,CADtB,CAAAkC,QAAA,CAEU,aAFV,CAEyB,QAAQ,CAAClC,CAAD,CAAQnE,CAAR,CAAkB,CAAC,MAAO,GAAP,CAAayC,CAAA,CAAUzC,CAAV,CAAd,CAFnD,CAFF,CAKF,MAAOoH,CAAP,CAAU,CACV,MAAO3E,EAAA,CAAU4E,CAAV,CADG,CAbgB,CA8B9BK,QAASA,GAAqB,CAAC7I,CAAD,CAAQ,CACpC,GAAI,CACF,MAAO8I,mBAAA,CAAmB9I,CAAnB,CADL,CAEF,MAAOuI,CAAP,CAAU,EAHwB,CAatCQ,QAASA,GAAa,CAAYC,CAAZ,CAAsB,CAC1C,IAAIzK,EAAM,EACVU,EAAA,CAAQwE,CAACuF,CAADvF,EAAa,EAAbA,OAAA,CAAuB,GAAvB,CAAR,CAAqC,QAAQ,CAACuF,CAAD,CAAW,CAAA,IAClDC,CADkD,CACtC7J,CADsC,CACjCwH,CACjBoC,EAAJ,GACE5J,CAOA,CAPM4J,CAON,CAPiBA,CAAAxB,QAAA,CAAiB,KAAjB,CAAuB,KAAvB,CAOjB,CANAyB,CAMA,CANaD,CAAAhF,QAAA,CAAiB,GAAjB,CAMb;AALoB,EAKpB,GALIiF,CAKJ,GAJE7J,CACA,CADM4J,CAAAE,UAAA,CAAmB,CAAnB,CAAsBD,CAAtB,CACN,CAAArC,CAAA,CAAMoC,CAAAE,UAAA,CAAmBD,CAAnB,CAAgC,CAAhC,CAGR,EADA7J,CACA,CADMyJ,EAAA,CAAsBzJ,CAAtB,CACN,CAAIsD,CAAA,CAAUtD,CAAV,CAAJ,GACEwH,CACA,CADMlE,CAAA,CAAUkE,CAAV,CAAA,CAAiBiC,EAAA,CAAsBjC,CAAtB,CAAjB,CAA8C,CAAA,CACpD,CAAKtH,EAAAC,KAAA,CAAoBhB,CAApB,CAAyBa,CAAzB,CAAL,CAEWX,CAAA,CAAQF,CAAA,CAAIa,CAAJ,CAAR,CAAJ,CACLb,CAAA,CAAIa,CAAJ,CAAAkF,KAAA,CAAcsC,CAAd,CADK,CAGLrI,CAAA,CAAIa,CAAJ,CAHK,CAGM,CAACb,CAAA,CAAIa,CAAJ,CAAD,CAAUwH,CAAV,CALb,CACErI,CAAA,CAAIa,CAAJ,CADF,CACawH,CAHf,CARF,CAFsD,CAAxD,CAsBA,OAAOrI,EAxBmC,CA2B5C4K,QAASA,GAAU,CAAC5K,CAAD,CAAM,CACvB,IAAI6K,EAAQ,EACZnK,EAAA,CAAQV,CAAR,CAAa,QAAQ,CAACyB,CAAD,CAAQZ,CAAR,CAAa,CAC5BX,CAAA,CAAQuB,CAAR,CAAJ,CACEf,CAAA,CAAQe,CAAR,CAAe,QAAQ,CAACqJ,CAAD,CAAa,CAClCD,CAAA9E,KAAA,CAAWgF,EAAA,CAAelK,CAAf,CAAoB,CAAA,CAApB,CAAX,EAC2B,CAAA,CAAf,GAAAiK,CAAA,CAAsB,EAAtB,CAA2B,GAA3B,CAAiCC,EAAA,CAAeD,CAAf,CAA2B,CAAA,CAA3B,CAD7C,EADkC,CAApC,CADF,CAMAD,CAAA9E,KAAA,CAAWgF,EAAA,CAAelK,CAAf,CAAoB,CAAA,CAApB,CAAX,EACsB,CAAA,CAAV,GAAAY,CAAA,CAAiB,EAAjB,CAAsB,GAAtB,CAA4BsJ,EAAA,CAAetJ,CAAf,CAAsB,CAAA,CAAtB,CADxC,EAPgC,CAAlC,CAWA,OAAOoJ,EAAAxK,OAAA,CAAewK,CAAAG,KAAA,CAAW,GAAX,CAAf,CAAiC,EAbjB,CA4BzBC,QAASA,GAAgB,CAAC5C,CAAD,CAAM,CAC7B,MAAO0C,GAAA,CAAe1C,CAAf,CAAoB,CAAA,CAApB,CAAAY,QAAA,CACY,OADZ,CACqB,GADrB,CAAAA,QAAA,CAEY,OAFZ,CAEqB,GAFrB,CAAAA,QAAA,CAGY,OAHZ,CAGqB,GAHrB,CADsB,CAmB/B8B,QAASA,GAAc,CAAC1C,CAAD,CAAM6C,CAAN,CAAuB,CAC5C,MAAOC,mBAAA,CAAmB9C,CAAnB,CAAAY,QAAA,CACY,OADZ,CACqB,GADrB,CAAAA,QAAA,CAEY,OAFZ;AAEqB,GAFrB,CAAAA,QAAA,CAGY,MAHZ,CAGoB,GAHpB,CAAAA,QAAA,CAIY,OAJZ,CAIqB,GAJrB,CAAAA,QAAA,CAKY,OALZ,CAKqB,GALrB,CAAAA,QAAA,CAMY,MANZ,CAMqBiC,CAAA,CAAkB,KAAlB,CAA0B,GAN/C,CADqC,CAY9CE,QAASA,GAAc,CAAChG,CAAD,CAAUiG,CAAV,CAAkB,CAAA,IACnCvG,CADmC,CAC7BxD,CAD6B,CAC1BY,EAAKoJ,EAAAjL,OAClB,KAAKiB,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBY,CAAhB,CAAoB,EAAEZ,CAAtB,CAEE,GADAwD,CACI,CADGwG,EAAA,CAAehK,CAAf,CACH,CADuB+J,CACvB,CAAAlL,CAAA,CAAS2E,CAAT,CAAgBM,CAAAmG,aAAA,CAAqBzG,CAArB,CAAhB,CAAJ,CACE,MAAOA,EAGX,OAAO,KARgC,CAiJzC0G,QAASA,GAAW,CAACpG,CAAD,CAAUqG,CAAV,CAAqB,CAAA,IACnCC,CADmC,CAEnCC,CAFmC,CAGnCC,EAAS,EAGblL,EAAA,CAAQ4K,EAAR,CAAwB,QAAQ,CAACO,CAAD,CAAS,CACnCC,CAAAA,EAAgB,KAEfJ,EAAAA,CAAL,EAAmBtG,CAAA2G,aAAnB,EAA2C3G,CAAA2G,aAAA,CAAqBD,CAArB,CAA3C,GACEJ,CACA,CADatG,CACb,CAAAuG,CAAA,CAASvG,CAAAmG,aAAA,CAAqBO,CAArB,CAFX,CAHuC,CAAzC,CAQApL,EAAA,CAAQ4K,EAAR,CAAwB,QAAQ,CAACO,CAAD,CAAS,CACnCC,CAAAA,EAAgB,KACpB,KAAIE,CAECN,EAAAA,CAAL,GAAoBM,CAApB,CAAgC5G,CAAA6G,cAAA,CAAsB,GAAtB,CAA4BH,CAAA7C,QAAA,CAAa,GAAb,CAAkB,KAAlB,CAA5B,CAAuD,GAAvD,CAAhC,IACEyC,CACA,CADaM,CACb,CAAAL,CAAA,CAASK,CAAAT,aAAA,CAAuBO,CAAvB,CAFX,CAJuC,CAAzC,CASIJ,EAAJ,GACEE,CAAAM,SACA,CAD8D,IAC9D,GADkBd,EAAA,CAAeM,CAAf,CAA2B,WAA3B,CAClB,CAAAD,CAAA,CAAUC,CAAV,CAAsBC,CAAA,CAAS,CAACA,CAAD,CAAT,CAAoB,EAA1C,CAA8CC,CAA9C,CAFF,CAvBuC,CAwFzCH,QAASA,GAAS,CAACrG,CAAD;AAAU+G,CAAV,CAAmBP,CAAnB,CAA2B,CACtCzJ,CAAA,CAASyJ,CAAT,CAAL,GAAuBA,CAAvB,CAAgC,EAAhC,CAIAA,EAAA,CAAS5I,CAAA,CAHWoJ,CAClBF,SAAU,CAAA,CADQE,CAGX,CAAsBR,CAAtB,CACT,KAAIS,EAAcA,QAAQ,EAAG,CAC3BjH,CAAA,CAAUhF,CAAA,CAAOgF,CAAP,CAEV,IAAIA,CAAAkH,SAAA,EAAJ,CAAwB,CACtB,IAAIC,EAAOnH,CAAA,CAAQ,CAAR,CAAD,GAAgBvF,CAAAyI,SAAhB,CAAmC,UAAnC,CAAgDwB,EAAA,CAAY1E,CAAZ,CAE1D,MAAMe,GAAA,CACF,SADE,CAGFoG,CAAAtD,QAAA,CAAY,GAAZ,CAAgB,MAAhB,CAAAA,QAAA,CAAgC,GAAhC,CAAoC,MAApC,CAHE,CAAN,CAHsB,CASxBkD,CAAA,CAAUA,CAAV,EAAqB,EACrBA,EAAAK,QAAA,CAAgB,CAAC,UAAD,CAAa,QAAQ,CAACC,CAAD,CAAW,CAC9CA,CAAAhL,MAAA,CAAe,cAAf,CAA+B2D,CAA/B,CAD8C,CAAhC,CAAhB,CAIIwG,EAAAc,iBAAJ,EAEEP,CAAApG,KAAA,CAAa,CAAC,kBAAD,CAAqB,QAAQ,CAAC4G,CAAD,CAAmB,CAC3DA,CAAAD,iBAAA,CAAkC,CAAA,CAAlC,CAD2D,CAAhD,CAAb,CAKFP,EAAAK,QAAA,CAAgB,IAAhB,CACIF,EAAAA,CAAWM,EAAA,CAAeT,CAAf,CAAwBP,CAAAM,SAAxB,CACfI,EAAAO,OAAA,CAAgB,CAAC,YAAD,CAAe,cAAf,CAA+B,UAA/B,CAA2C,WAA3C,CACbC,QAAuB,CAACC,CAAD,CAAQ3H,CAAR,CAAiB4H,CAAjB,CAA0BV,CAA1B,CAAoC,CAC1DS,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtB7H,CAAA8H,KAAA,CAAa,WAAb,CAA0BZ,CAA1B,CACAU,EAAA,CAAQ5H,CAAR,CAAA,CAAiB2H,CAAjB,CAFsB,CAAxB,CAD0D,CAD9C,CAAhB,CAQA;MAAOT,EAlCoB,CAA7B,CAqCIa,EAAuB,wBArC3B,CAsCIC,EAAqB,sBAErBvN,EAAJ,EAAcsN,CAAAxI,KAAA,CAA0B9E,CAAAiM,KAA1B,CAAd,GACEF,CAAAc,iBACA,CAD0B,CAAA,CAC1B,CAAA7M,CAAAiM,KAAA,CAAcjM,CAAAiM,KAAA7C,QAAA,CAAoBkE,CAApB,CAA0C,EAA1C,CAFhB,CAKA,IAAItN,CAAJ,EAAe,CAAAuN,CAAAzI,KAAA,CAAwB9E,CAAAiM,KAAxB,CAAf,CACE,MAAOO,EAAA,EAGTxM,EAAAiM,KAAA,CAAcjM,CAAAiM,KAAA7C,QAAA,CAAoBmE,CAApB,CAAwC,EAAxC,CACdC,GAAAC,gBAAA,CAA0BC,QAAQ,CAACC,CAAD,CAAe,CAC/C9M,CAAA,CAAQ8M,CAAR,CAAsB,QAAQ,CAAC7B,CAAD,CAAS,CACrCQ,CAAApG,KAAA,CAAa4F,CAAb,CADqC,CAAvC,CAGA,OAAOU,EAAA,EAJwC,CAO7CvL,EAAA,CAAWuM,EAAAI,wBAAX,CAAJ,EACEJ,EAAAI,wBAAA,EAhEyC,CA8E7CC,QAASA,GAAmB,EAAG,CAC7B7N,CAAAiM,KAAA,CAAc,uBAAd,CAAwCjM,CAAAiM,KACxCjM,EAAA8N,SAAAC,OAAA,EAF6B,CAa/BC,QAASA,GAAc,CAACC,CAAD,CAAc,CAC/BxB,CAAAA,CAAWe,EAAAjI,QAAA,CAAgB0I,CAAhB,CAAAxB,SAAA,EACf,IAAKA,CAAAA,CAAL,CACE,KAAMnG,GAAA,CAAS,MAAT,CAAN,CAGF,MAAOmG,EAAAyB,IAAA,CAAa,eAAb,CAN4B,CAUrCC,QAASA,GAAU,CAAClC,CAAD;AAAOmC,CAAP,CAAkB,CACnCA,CAAA,CAAYA,CAAZ,EAAyB,GACzB,OAAOnC,EAAA7C,QAAA,CAAaiF,EAAb,CAAgC,QAAQ,CAACC,CAAD,CAASC,CAAT,CAAc,CAC3D,OAAQA,CAAA,CAAMH,CAAN,CAAkB,EAA1B,EAAgCE,CAAAE,YAAA,EAD2B,CAAtD,CAF4B,CAQrCC,QAASA,GAAU,EAAG,CACpB,IAAIC,CAEJ,IAAIC,CAAAA,EAAJ,CAAA,CAKA,IAAIC,EAASC,EAAA,EASb,EARAC,EAQA,CARSzK,CAAA,CAAYuK,CAAZ,CAAA,CAAsB5O,CAAA8O,OAAtB,CACCF,CAAD,CACsB5O,CAAA,CAAO4O,CAAP,CADtB,CAAsBnI,IAAAA,EAO/B,GAAcqI,EAAA3G,GAAA4G,GAAd,EACExO,CAaA,CAbSuO,EAaT,CAZA3L,CAAA,CAAO2L,EAAA3G,GAAP,CAAkB,CAChB+E,MAAO8B,EAAA9B,MADS,CAEhB+B,aAAcD,EAAAC,aAFE,CAGhBC,WAAYF,EAAAE,WAHI,CAIhBzC,SAAUuC,EAAAvC,SAJM,CAKhB0C,cAAeH,EAAAG,cALC,CAAlB,CAYA,CADAT,CACA,CADoBI,EAAAM,UACpB,CAAAN,EAAAM,UAAA,CAAmBC,QAAQ,CAACC,CAAD,CAAQ,CAEjC,IADA,IAAIC,CAAJ,CACS9N,EAAI,CADb,CACgB+N,CAAhB,CAA2C,IAA3C,GAAuBA,CAAvB,CAA8BF,CAAA,CAAM7N,CAAN,CAA9B,EAAiDA,CAAA,EAAjD,CAEE,CADA8N,CACA,CADST,EAAAW,MAAA,CAAaD,CAAb,CAAmB,QAAnB,CACT,GAAcD,CAAAG,SAAd,EACEZ,EAAA,CAAOU,CAAP,CAAAG,eAAA,CAA4B,UAA5B,CAGJjB,EAAA,CAAkBY,CAAlB,CARiC,CAdrC,EAyBE/O,CAzBF,CAyBWqP,CAGXpC,GAAAjI,QAAA,CAAkBhF,CAGlBoO,GAAA,CAAkB,CAAA,CA7ClB,CAHoB,CAsDtBkB,QAASA,GAAS,CAACC,CAAD,CAAM7D,CAAN,CAAY8D,CAAZ,CAAoB,CACpC,GAAKD,CAAAA,CAAL,CACE,KAAMxJ,GAAA,CAAS,MAAT;AAA2C2F,CAA3C,EAAmD,GAAnD,CAA0D8D,CAA1D,EAAoE,UAApE,CAAN,CAEF,MAAOD,EAJ6B,CAOtCE,QAASA,GAAW,CAACF,CAAD,CAAM7D,CAAN,CAAYgE,CAAZ,CAAmC,CACjDA,CAAJ,EAA6B5P,CAAA,CAAQyP,CAAR,CAA7B,GACIA,CADJ,CACUA,CAAA,CAAIA,CAAAtP,OAAJ,CAAiB,CAAjB,CADV,CAIAqP,GAAA,CAAU5O,CAAA,CAAW6O,CAAX,CAAV,CAA2B7D,CAA3B,CAAiC,sBAAjC,EACK6D,CAAA,EAAsB,QAAtB,GAAO,MAAOA,EAAd,CAAiCA,CAAApJ,YAAAuF,KAAjC,EAAyD,QAAzD,CAAoE,MAAO6D,EADhF,EAEA,OAAOA,EAP8C,CAevDI,QAASA,GAAuB,CAACjE,CAAD,CAAOlL,CAAP,CAAgB,CAC9C,GAAa,gBAAb,GAAIkL,CAAJ,CACE,KAAM3F,GAAA,CAAS,SAAT,CAA8DvF,CAA9D,CAAN,CAF4C,CAchDoP,QAASA,GAAM,CAAChQ,CAAD,CAAMiQ,CAAN,CAAYC,CAAZ,CAA2B,CACxC,GAAKD,CAAAA,CAAL,CAAW,MAAOjQ,EACdoB,EAAAA,CAAO6O,CAAA/K,MAAA,CAAW,GAAX,CAKX,KAJA,IAAIrE,CAAJ,CACIsP,EAAenQ,CADnB,CAEIoQ,EAAMhP,CAAAf,OAFV,CAISiB,EAAI,CAAb,CAAgBA,CAAhB,CAAoB8O,CAApB,CAAyB9O,CAAA,EAAzB,CACET,CACA,CADMO,CAAA,CAAKE,CAAL,CACN,CAAItB,CAAJ,GACEA,CADF,CACQ,CAACmQ,CAAD,CAAgBnQ,CAAhB,EAAqBa,CAArB,CADR,CAIF,OAAKqP,CAAAA,CAAL,EAAsBpP,CAAA,CAAWd,CAAX,CAAtB,CACS8H,EAAA,CAAKqI,CAAL,CAAmBnQ,CAAnB,CADT,CAGOA,CAhBiC,CAwB1CqQ,QAASA,GAAa,CAACC,CAAD,CAAQ,CAM5B,IAJA,IAAI1L,EAAO0L,CAAA,CAAM,CAAN,CAAX,CACIC,EAAUD,CAAA,CAAMA,CAAAjQ,OAAN,CAAqB,CAArB,CADd,CAEImQ,CAFJ,CAISlP,EAAI,CAAb,CAAgBsD,CAAhB,GAAyB2L,CAAzB,GAAqC3L,CAArC,CAA4CA,CAAA6L,YAA5C,EAA+DnP,CAAA,EAA/D,CACE,GAAIkP,CAAJ,EAAkBF,CAAA,CAAMhP,CAAN,CAAlB,GAA+BsD,CAA/B,CACO4L,CAGL,GAFEA,CAEF,CAFepQ,CAAA,CAAO6C,EAAAjC,KAAA,CAAWsP,CAAX,CAAkB,CAAlB,CAAqBhP,CAArB,CAAP,CAEf;AAAAkP,CAAAzK,KAAA,CAAgBnB,CAAhB,CAIJ,OAAO4L,EAAP,EAAqBF,CAfO,CA8B9B7I,QAASA,EAAS,EAAG,CACnB,MAAOnH,OAAAoD,OAAA,CAAc,IAAd,CADY,CAoBrBgN,QAASA,GAAiB,CAAC7Q,CAAD,CAAS,CAKjC8Q,QAASA,EAAM,CAAC3Q,CAAD,CAAM8L,CAAN,CAAY8E,CAAZ,CAAqB,CAClC,MAAO5Q,EAAA,CAAI8L,CAAJ,CAAP,GAAqB9L,CAAA,CAAI8L,CAAJ,CAArB,CAAiC8E,CAAA,EAAjC,CADkC,CAHpC,IAAIC,EAAkB/Q,CAAA,CAAO,WAAP,CAAtB,CACIqG,EAAWrG,CAAA,CAAO,IAAP,CAMXuN,EAAAA,CAAUsD,CAAA,CAAO9Q,CAAP,CAAe,SAAf,CAA0BS,MAA1B,CAGd+M,EAAAyD,SAAA,CAAmBzD,CAAAyD,SAAnB,EAAuChR,CAEvC,OAAO6Q,EAAA,CAAOtD,CAAP,CAAgB,QAAhB,CAA0B,QAAQ,EAAG,CAE1C,IAAIlB,EAAU,EAqDd,OAAOR,SAAe,CAACG,CAAD,CAAOiF,CAAP,CAAiBC,CAAjB,CAA2B,CAE7C,GAAa,gBAAb,GAKsBlF,CALtB,CACE,KAAM3F,EAAA,CAAS,SAAT,CAIoBvF,QAJpB,CAAN,CAKAmQ,CAAJ,EAAgB5E,CAAApL,eAAA,CAAuB+K,CAAvB,CAAhB,GACEK,CAAA,CAAQL,CAAR,CADF,CACkB,IADlB,CAGA,OAAO6E,EAAA,CAAOxE,CAAP,CAAgBL,CAAhB,CAAsB,QAAQ,EAAG,CAuPtCmF,QAASA,EAAW,CAACC,CAAD,CAAWC,CAAX,CAAmBC,CAAnB,CAAiCC,CAAjC,CAAwC,CACrDA,CAAL,GAAYA,CAAZ,CAAoBC,CAApB,CACA,OAAO,SAAQ,EAAG,CAChBD,CAAA,CAAMD,CAAN,EAAsB,MAAtB,CAAA,CAA8B,CAACF,CAAD,CAAWC,CAAX,CAAmBjO,SAAnB,CAA9B,CACA,OAAOqO,EAFS,CAFwC,CAa5DC,QAASA,EAA2B,CAACN,CAAD,CAAWC,CAAX,CAAmB,CACrD,MAAO,SAAQ,CAACM,CAAD,CAAaC,CAAb,CAA8B,CACvCA,CAAJ;AAAuB5Q,CAAA,CAAW4Q,CAAX,CAAvB,GAAoDA,CAAAC,aAApD,CAAmF7F,CAAnF,CACAwF,EAAAvL,KAAA,CAAiB,CAACmL,CAAD,CAAWC,CAAX,CAAmBjO,SAAnB,CAAjB,CACA,OAAOqO,EAHoC,CADQ,CAnQvD,GAAKR,CAAAA,CAAL,CACE,KAAMF,EAAA,CAAgB,OAAhB,CAEiD/E,CAFjD,CAAN,CAMF,IAAIwF,EAAc,EAAlB,CAGIM,EAAe,EAHnB,CAMIC,EAAY,EANhB,CAQIjG,EAASqF,CAAA,CAAY,WAAZ,CAAyB,QAAzB,CAAmC,MAAnC,CAA2CW,CAA3C,CARb,CAWIL,EAAiB,CAEnBO,aAAcR,CAFK,CAGnBS,cAAeH,CAHI,CAInBI,WAAYH,CAJO,CAenBd,SAAUA,CAfS,CAyBnBjF,KAAMA,CAzBa,CAsCnBoF,SAAUM,CAAA,CAA4B,UAA5B,CAAwC,UAAxC,CAtCS,CAiDnBZ,QAASY,CAAA,CAA4B,UAA5B,CAAwC,SAAxC,CAjDU,CA4DnBS,QAAST,CAAA,CAA4B,UAA5B,CAAwC,SAAxC,CA5DU,CAuEnB/P,MAAOwP,CAAA,CAAY,UAAZ,CAAwB,OAAxB,CAvEY,CAmFnBiB,SAAUjB,CAAA,CAAY,UAAZ,CAAwB,UAAxB,CAAoC,SAApC,CAnFS,CA+FnBkB,UAAWX,CAAA,CAA4B,UAA5B,CAAwC,WAAxC,CA/FQ,CAiInBY,UAAWZ,CAAA,CAA4B,kBAA5B,CAAgD,UAAhD,CAjIQ,CAmJnBa,OAAQb,CAAA,CAA4B,iBAA5B,CAA+C,UAA/C,CAnJW,CA+JnBzC,WAAYyC,CAAA,CAA4B,qBAA5B;AAAmD,UAAnD,CA/JO,CA4KnBc,UAAWd,CAAA,CAA4B,kBAA5B,CAAgD,WAAhD,CA5KQ,CAyLnBe,UAAWf,CAAA,CAA4B,kBAA5B,CAAgD,WAAhD,CAzLQ,CAsMnB5F,OAAQA,CAtMW,CAkNnB4G,IAAKA,QAAQ,CAACC,CAAD,CAAQ,CACnBZ,CAAA9L,KAAA,CAAe0M,CAAf,CACA,OAAO,KAFY,CAlNF,CAwNjBzB,EAAJ,EACEpF,CAAA,CAAOoF,CAAP,CAGF,OAAOO,EA/O+B,CAAjC,CAXwC,CAvDP,CAArC,CAd0B,CAwWnCmB,QAASA,GAAW,CAACpQ,CAAD,CAAMT,CAAN,CAAW,CAC7B,GAAI3B,CAAA,CAAQoC,CAAR,CAAJ,CAAkB,CAChBT,CAAA,CAAMA,CAAN,EAAa,EAEb,KAHgB,IAGPP,EAAI,CAHG,CAGAY,EAAKI,CAAAjC,OAArB,CAAiCiB,CAAjC,CAAqCY,CAArC,CAAyCZ,CAAA,EAAzC,CACEO,CAAA,CAAIP,CAAJ,CAAA,CAASgB,CAAA,CAAIhB,CAAJ,CAJK,CAAlB,IAMO,IAAIa,CAAA,CAASG,CAAT,CAAJ,CAGL,IAASzB,CAAT,GAFAgB,EAEgBS,CAFVT,CAEUS,EAFH,EAEGA,CAAAA,CAAhB,CACE,GAAwB,GAAxB,GAAMzB,CAAA6G,OAAA,CAAW,CAAX,CAAN,EAAiD,GAAjD,GAA+B7G,CAAA6G,OAAA,CAAW,CAAX,CAA/B,CACE7F,CAAA,CAAIhB,CAAJ,CAAA,CAAWyB,CAAA,CAAIzB,CAAJ,CAKjB,OAAOgB,EAAP,EAAcS,CAjBe,CAyK/BqQ,QAASA,GAAkB,CAACtF,CAAD,CAAU,CACnCrK,CAAA,CAAOqK,CAAP,CAAgB,CACd,UAAa5B,EADC,CAEd,KAAQ9F,CAFM,CAGd,OAAU3C,CAHI,CAId,MAASG,EAJK,CAKd,OAAU+D,EALI,CAMd,QAAW9G,CANG,CAOd,QAAWM,CAPG,CAQd,SAAYkM,EARE,CASd,KAAQjJ,CATM,CAUd,KAAQmE,EAVM,CAWd,OAAUS,EAXI,CAYd,SAAYI,EAZE,CAad,SAAY/E,EAbE,CAcd,YAAeM,CAdD;AAed,UAAaC,CAfC,CAgBd,SAAYhE,CAhBE,CAiBd,WAAcW,CAjBA,CAkBd,SAAYqB,CAlBE,CAmBd,SAAY5B,CAnBE,CAoBd,UAAauC,EApBC,CAqBd,QAAW5C,CArBG,CAsBd,QAAW0S,EAtBG,CAuBd,OAAUrQ,EAvBI,CAwBd,UAAa8C,CAxBC,CAyBd,UAAawN,EAzBC,CA0Bd,UAAa,CAACC,QAAS,CAAV,CA1BC,CA2Bd,eAAkBjF,EA3BJ,CA4Bd,SAAY/N,CA5BE,CA6Bd,MAASiT,EA7BK,CA8Bd,oBAAuBrF,EA9BT,CAAhB,CAiCAsF,GAAA,CAAgBtC,EAAA,CAAkB7Q,CAAlB,CAEhBmT,GAAA,CAAc,IAAd,CAAoB,CAAC,UAAD,CAApB,CAAkC,CAAC,UAAD,CAChCC,QAAiB,CAACxG,CAAD,CAAW,CAE1BA,CAAAyE,SAAA,CAAkB,CAChBgC,cAAeC,EADC,CAAlB,CAGA1G,EAAAyE,SAAA,CAAkB,UAAlB,CAA8BkC,EAA9B,CAAAd,UAAA,CACY,CACNe,EAAGC,EADG,CAENC,MAAOC,EAFD,CAGNC,SAAUD,EAHJ,CAINE,KAAMC,EAJA,CAKNC,OAAQC,EALF,CAMNC,OAAQC,EANF,CAONC,MAAOC,EAPD,CAQNC,OAAQC,EARF,CASNC,OAAQC,EATF,CAUNC,WAAYC,EAVN,CAWNC,eAAgBC,EAXV,CAYNC,QAASC,EAZH,CAaNC,YAAaC,EAbP,CAcNC,WAAYC,EAdN,CAeNC,QAASC,EAfH,CAgBNC,aAAcC,EAhBR;AAiBNC,OAAQC,EAjBF,CAkBNC,OAAQC,EAlBF,CAmBNC,KAAMC,EAnBA,CAoBNC,UAAWC,EApBL,CAqBNC,OAAQC,EArBF,CAsBNC,cAAeC,EAtBT,CAuBNC,YAAaC,EAvBP,CAwBNC,SAAUC,EAxBJ,CAyBNC,OAAQC,EAzBF,CA0BNC,QAASC,EA1BH,CA2BNC,SAAUC,EA3BJ,CA4BNC,aAAcC,EA5BR,CA6BNC,gBAAiBC,EA7BX,CA8BNC,UAAWC,EA9BL,CA+BNC,aAAcC,EA/BR,CAgCNC,QAASC,EAhCH,CAiCNC,OAAQC,EAjCF,CAkCNC,SAAUC,EAlCJ,CAmCNC,QAASC,EAnCH,CAoCNC,UAAWD,EApCL,CAqCNE,SAAUC,EArCJ,CAsCNC,WAAYD,EAtCN,CAuCNE,UAAWC,EAvCL,CAwCNC,YAAaD,EAxCP,CAyCNE,UAAWC,EAzCL,CA0CNC,YAAaD,EA1CP,CA2CNE,QAASC,EA3CH,CA4CNC,eAAgBC,EA5CV,CADZ,CAAAjG,UAAA,CA+CY,CACRoD,UAAW8C,EADH,CA/CZ,CAAAlG,UAAA,CAkDYmG,EAlDZ,CAAAnG,UAAA,CAmDYoG,EAnDZ,CAoDAjM,EAAAyE,SAAA,CAAkB,CAChByH,cAAeC,EADC,CAEhBC,SAAUC,EAFM,CAGhBC,YAAaC,EAHG,CAIhBC,YAAaC,EAJG,CAKhBC,eAAgBC,EALA;AAMhBC,gBAAiBC,EAND,CAOhBC,kBAAmBC,EAPH,CAQhBC,SAAUC,EARM,CAShBC,cAAeC,EATC,CAUhBC,YAAaC,EAVG,CAWhBC,UAAWC,EAXK,CAYhBC,kBAAmBC,EAZH,CAahBC,QAASC,EAbO,CAchBC,cAAeC,EAdC,CAehBC,aAAcC,EAfE,CAgBhBC,UAAWC,EAhBK,CAiBhBC,MAAOC,EAjBS,CAkBhBC,qBAAsBC,EAlBN,CAmBhBC,2BAA4BC,EAnBZ,CAoBhBC,aAAcC,EApBE,CAqBhBC,YAAaC,EArBG,CAsBhBC,UAAWC,EAtBK,CAuBhBC,KAAMC,EAvBU,CAwBhBC,OAAQC,EAxBQ,CAyBhBC,WAAYC,EAzBI,CA0BhBC,GAAIC,EA1BY,CA2BhBC,IAAKC,EA3BW,CA4BhBC,KAAMC,EA5BU,CA6BhBC,aAAcC,EA7BE,CA8BhBC,SAAUC,EA9BM,CA+BhBC,eAAgBC,EA/BA,CAgChBC,iBAAkBC,EAhCF,CAiChBC,cAAeC,EAjCC,CAkChBC,SAAUC,EAlCM,CAmChBC,QAASC,EAnCO,CAoChBC,MAAOC,EApCS,CAqChBC,SAAUC,EArCM,CAsChBC,UAAWC,EAtCK,CAuChBC,eAAgBC,EAvCA,CAAlB,CAzD0B,CADI,CAAlC,CApCmC,CAoSrCC,QAASA,GAAS,CAAC3R,CAAD,CAAO,CACvB,MAAOA,EAAA7C,QAAA,CACGyU,EADH;AACyB,QAAQ,CAACC,CAAD,CAAI1P,CAAJ,CAAeE,CAAf,CAAuByP,CAAvB,CAA+B,CACnE,MAAOA,EAAA,CAASzP,CAAA0P,YAAA,EAAT,CAAgC1P,CAD4B,CADhE,CAAAlF,QAAA,CAIG6U,EAJH,CAIoB,OAJpB,CADgB,CAgCzBC,QAASA,GAAiB,CAACnZ,CAAD,CAAO,CAG3BwF,CAAAA,CAAWxF,CAAAwF,SACf,OAz2BsB4T,EAy2BtB,GAAO5T,CAAP,EAAyC,CAACA,CAA1C,EAr2BuB6T,CAq2BvB,GAAsD7T,CAJvB,CAoBjC8T,QAASA,GAAmB,CAAC/T,CAAD,CAAOvJ,CAAP,CAAgB,CAAA,IACtCud,CADsC,CACjC5R,CADiC,CAEtC6R,EAAWxd,CAAAyd,uBAAA,EAF2B,CAGtC/N,EAAQ,EAEZ,IA5BQgO,EAAA3Z,KAAA,CA4BawF,CA5Bb,CA4BR,CAGO,CAELgU,CAAA,CAAMA,CAAN,EAAaC,CAAAG,YAAA,CAAqB3d,CAAA4d,cAAA,CAAsB,KAAtB,CAArB,CACbjS,EAAA,CAAM,CAACkS,EAAAC,KAAA,CAAqBvU,CAArB,CAAD,EAA+B,CAAC,EAAD,CAAK,EAAL,CAA/B,EAAyC,CAAzC,CAAAkE,YAAA,EACNsQ,EAAA,CAAOC,EAAA,CAAQrS,CAAR,CAAP,EAAuBqS,EAAAC,SACvBV,EAAAW,UAAA,CAAgBH,CAAA,CAAK,CAAL,CAAhB,CAA0BxU,CAAAlB,QAAA,CAAa8V,EAAb,CAA+B,WAA/B,CAA1B,CAAwEJ,CAAA,CAAK,CAAL,CAIxE,KADArd,CACA,CADIqd,CAAA,CAAK,CAAL,CACJ,CAAOrd,CAAA,EAAP,CAAA,CACE6c,CAAA,CAAMA,CAAAa,UAGR1O,EAAA,CAAQ3I,EAAA,CAAO2I,CAAP,CAAc6N,CAAAc,WAAd,CAERd,EAAA,CAAMC,CAAAc,WACNf,EAAAgB,YAAA,CAAkB,EAhBb,CAHP,IAEE7O,EAAAvK,KAAA,CAAWnF,CAAAwe,eAAA,CAAuBjV,CAAvB,CAAX,CAqBFiU,EAAAe,YAAA,CAAuB,EACvBf,EAAAU,UAAA,CAAqB,EACrBpe,EAAA,CAAQ4P,CAAR,CAAe,QAAQ,CAAC1L,CAAD,CAAO,CAC5BwZ,CAAAG,YAAA,CAAqB3Z,CAArB,CAD4B,CAA9B,CAIA;MAAOwZ,EAlCmC,CAoD5CiB,QAASA,GAAc,CAACza,CAAD,CAAO0a,CAAP,CAAgB,CACrC,IAAI9b,EAASoB,CAAA2a,WAET/b,EAAJ,EACEA,CAAAgc,aAAA,CAAoBF,CAApB,CAA6B1a,CAA7B,CAGF0a,EAAAf,YAAA,CAAoB3Z,CAApB,CAPqC,CAmBvC6K,QAASA,EAAM,CAACrK,CAAD,CAAU,CACvB,GAAIA,CAAJ,WAAuBqK,EAAvB,CACE,MAAOrK,EAGT,KAAIqa,CAEAtf,EAAA,CAASiF,CAAT,CAAJ,GACEA,CACA,CADUsa,CAAA,CAAKta,CAAL,CACV,CAAAqa,CAAA,CAAc,CAAA,CAFhB,CAIA,IAAM,EAAA,IAAA,WAAgBhQ,EAAhB,CAAN,CAA+B,CAC7B,GAAIgQ,CAAJ,EAAwC,GAAxC,EAAmBra,CAAAsC,OAAA,CAAe,CAAf,CAAnB,CACE,KAAMiY,GAAA,CAAa,OAAb,CAAN,CAEF,MAAO,KAAIlQ,CAAJ,CAAWrK,CAAX,CAJsB,CAO/B,GAAIqa,CAAJ,CAAiB,CAnDjB7e,CAAA,CAAqBf,CAAAyI,SACrB,KAAIsX,CAGF,EAAA,CADF,CAAKA,CAAL,CAAcC,EAAAnB,KAAA,CAAuBvU,CAAvB,CAAd,EACS,CAACvJ,CAAA4d,cAAA,CAAsBoB,CAAA,CAAO,CAAP,CAAtB,CAAD,CADT,CAIA,CAAKA,CAAL,CAAc1B,EAAA,CAAoB/T,CAApB,CAA0BvJ,CAA1B,CAAd,EACSgf,CAAAX,WADT,CAIO,EAwCU,CACfa,EAAA,CAAe,IAAf,CAAqB,CAArB,CAnBqB,CAyBzBC,QAASA,GAAW,CAAC3a,CAAD,CAAU,CAC5B,MAAOA,EAAAvC,UAAA,CAAkB,CAAA,CAAlB,CADqB,CAI9Bmd,QAASA,GAAY,CAAC5a,CAAD,CAAU6a,CAAV,CAA2B,CACzCA,CAAL,EAAsBC,EAAA,CAAiB9a,CAAjB,CAEtB,IAAIA,CAAA+a,iBAAJ,CAEE,IADA,IAAIC,EAAchb,CAAA+a,iBAAA,CAAyB,GAAzB,CAAlB,CACS7e,EAAI,CADb,CACgB+e,EAAID,CAAA/f,OAApB,CAAwCiB,CAAxC,CAA4C+e,CAA5C,CAA+C/e,CAAA,EAA/C,CACE4e,EAAA,CAAiBE,CAAA,CAAY9e,CAAZ,CAAjB,CAN0C,CAWhDgf,QAASA,GAAS,CAAClb,CAAD;AAAU6B,CAAV,CAAgBe,CAAhB,CAAoBuY,CAApB,CAAiC,CACjD,GAAIpc,CAAA,CAAUoc,CAAV,CAAJ,CAA4B,KAAMZ,GAAA,CAAa,SAAb,CAAN,CAG5B,IAAIvQ,GADAoR,CACApR,CADeqR,EAAA,CAAmBrb,CAAnB,CACfgK,GAAyBoR,CAAApR,OAA7B,CACIsR,EAASF,CAATE,EAAyBF,CAAAE,OAE7B,IAAKA,CAAL,CAEA,GAAKzZ,CAAL,CAOO,CAEL,IAAI0Z,EAAgBA,QAAQ,CAAC1Z,CAAD,CAAO,CACjC,IAAI2Z,EAAcxR,CAAA,CAAOnI,CAAP,CACd9C,EAAA,CAAU6D,CAAV,CAAJ,EACE1C,EAAA,CAAYsb,CAAZ,EAA2B,EAA3B,CAA+B5Y,CAA/B,CAEI7D,EAAA,CAAU6D,CAAV,CAAN,EAAuB4Y,CAAvB,EAA2D,CAA3D,CAAsCA,CAAAvgB,OAAtC,GACwB+E,CAnNxByb,oBAAA,CAmNiC5Z,CAnNjC,CAmNuCyZ,CAnNvC,CAAsC,CAAA,CAAtC,CAoNE,CAAA,OAAOtR,CAAA,CAAOnI,CAAP,CAFT,CALiC,CAWnCvG,EAAA,CAAQuG,CAAA/B,MAAA,CAAW,GAAX,CAAR,CAAyB,QAAQ,CAAC+B,CAAD,CAAO,CACtC0Z,CAAA,CAAc1Z,CAAd,CACI6Z,GAAA,CAAgB7Z,CAAhB,CAAJ,EACE0Z,CAAA,CAAcG,EAAA,CAAgB7Z,CAAhB,CAAd,CAHoC,CAAxC,CAbK,CAPP,IACE,KAAKA,CAAL,GAAamI,EAAb,CACe,UAGb,GAHInI,CAGJ,EAFwB7B,CAvMxByb,oBAAA,CAuMiC5Z,CAvMjC,CAuMuCyZ,CAvMvC,CAAsC,CAAA,CAAtC,CAyMA,CAAA,OAAOtR,CAAA,CAAOnI,CAAP,CAdsC,CAsCnDiZ,QAASA,GAAgB,CAAC9a,CAAD,CAAU0G,CAAV,CAAgB,CACvC,IAAIiV,EAAY3b,CAAA4b,MAAhB,CACIR,EAAeO,CAAfP,EAA4BS,EAAA,CAAQF,CAAR,CAE5BP,EAAJ,GACM1U,CAAJ,CACE,OAAO0U,CAAAtT,KAAA,CAAkBpB,CAAlB,CADT,EAKI0U,CAAAE,OAOJ,GANMF,CAAApR,OAAAG,SAGJ,EAFEiR,CAAAE,OAAA,CAAoB,EAApB,CAAwB,UAAxB,CAEF,CAAAJ,EAAA,CAAUlb,CAAV,CAGF,EADA,OAAO6b,EAAA,CAAQF,CAAR,CACP,CAAA3b,CAAA4b,MAAA,CAAgB1a,IAAAA,EAZhB,CADF,CAJuC,CAsBzCma,QAASA,GAAkB,CAACrb,CAAD,CAAU8b,CAAV,CAA6B,CAAA,IAClDH;AAAY3b,CAAA4b,MADsC,CAElDR,EAAeO,CAAfP,EAA4BS,EAAA,CAAQF,CAAR,CAE5BG,EAAJ,EAA0BV,CAAAA,CAA1B,GACEpb,CAAA4b,MACA,CADgBD,CAChB,CAlPyB,EAAEI,EAkP3B,CAAAX,CAAA,CAAeS,EAAA,CAAQF,CAAR,CAAf,CAAoC,CAAC3R,OAAQ,EAAT,CAAalC,KAAM,EAAnB,CAAuBwT,OAAQpa,IAAAA,EAA/B,CAFtC,CAKA,OAAOka,EAT+C,CAaxDY,QAASA,GAAU,CAAChc,CAAD,CAAUvE,CAAV,CAAeY,CAAf,CAAsB,CACvC,GAAIsc,EAAA,CAAkB3Y,CAAlB,CAAJ,CAAgC,CAE9B,IAAIic,EAAiBld,CAAA,CAAU1C,CAAV,CAArB,CACI6f,EAAiB,CAACD,CAAlBC,EAAoCzgB,CAApCygB,EAA2C,CAACnf,CAAA,CAAStB,CAAT,CADhD,CAEI0gB,EAAa,CAAC1gB,CAEdqM,EAAAA,EADAsT,CACAtT,CADeuT,EAAA,CAAmBrb,CAAnB,CAA4B,CAACkc,CAA7B,CACfpU,GAAuBsT,CAAAtT,KAE3B,IAAImU,CAAJ,CACEnU,CAAA,CAAKrM,CAAL,CAAA,CAAYY,CADd,KAEO,CACL,GAAI8f,CAAJ,CACE,MAAOrU,EAEP,IAAIoU,CAAJ,CAEE,MAAOpU,EAAP,EAAeA,CAAA,CAAKrM,CAAL,CAEfmC,EAAA,CAAOkK,CAAP,CAAarM,CAAb,CARC,CAVuB,CADO,CA0BzC2gB,QAASA,GAAc,CAACpc,CAAD,CAAUqc,CAAV,CAAoB,CACzC,MAAKrc,EAAAmG,aAAL,CAEqC,EAFrC,CACQtC,CAAC,GAADA,EAAQ7D,CAAAmG,aAAA,CAAqB,OAArB,CAARtC,EAAyC,EAAzCA,EAA+C,GAA/CA,SAAA,CAA4D,SAA5D,CAAuE,GAAvE,CAAAxD,QAAA,CACI,GADJ,CACUgc,CADV,CACqB,GADrB,CADR,CAAkC,CAAA,CADO,CAM3CC,QAASA,GAAiB,CAACtc,CAAD,CAAUuc,CAAV,CAAsB,CAC1CA,CAAJ,EAAkBvc,CAAAwc,aAAlB,EACElhB,CAAA,CAAQihB,CAAAzc,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAAC2c,CAAD,CAAW,CAChDzc,CAAAwc,aAAA,CAAqB,OAArB,CAA8BlC,CAAA,CAC1BzW,CAAC,GAADA,EAAQ7D,CAAAmG,aAAA,CAAqB,OAArB,CAARtC,EAAyC,EAAzCA,EAA+C,GAA/CA,SAAA,CACS,SADT;AACoB,GADpB,CAAAA,QAAA,CAES,GAFT,CAEeyW,CAAA,CAAKmC,CAAL,CAFf,CAEgC,GAFhC,CAEqC,GAFrC,CAD0B,CAA9B,CADgD,CAAlD,CAF4C,CAYhDC,QAASA,GAAc,CAAC1c,CAAD,CAAUuc,CAAV,CAAsB,CAC3C,GAAIA,CAAJ,EAAkBvc,CAAAwc,aAAlB,CAAwC,CACtC,IAAIG,EAAkB9Y,CAAC,GAADA,EAAQ7D,CAAAmG,aAAA,CAAqB,OAArB,CAARtC,EAAyC,EAAzCA,EAA+C,GAA/CA,SAAA,CACW,SADX,CACsB,GADtB,CAGtBvI,EAAA,CAAQihB,CAAAzc,MAAA,CAAiB,GAAjB,CAAR,CAA+B,QAAQ,CAAC2c,CAAD,CAAW,CAChDA,CAAA,CAAWnC,CAAA,CAAKmC,CAAL,CAC4C,GAAvD,GAAIE,CAAAtc,QAAA,CAAwB,GAAxB,CAA8Boc,CAA9B,CAAyC,GAAzC,CAAJ,GACEE,CADF,EACqBF,CADrB,CACgC,GADhC,CAFgD,CAAlD,CAOAzc,EAAAwc,aAAA,CAAqB,OAArB,CAA8BlC,CAAA,CAAKqC,CAAL,CAA9B,CAXsC,CADG,CAiB7CjC,QAASA,GAAc,CAACkC,CAAD,CAAOC,CAAP,CAAiB,CAGtC,GAAIA,CAAJ,CAGE,GAAIA,CAAA7X,SAAJ,CACE4X,CAAA,CAAKA,CAAA3hB,OAAA,EAAL,CAAA,CAAsB4hB,CADxB,KAEO,CACL,IAAI5hB,EAAS4hB,CAAA5hB,OAGb,IAAsB,QAAtB,GAAI,MAAOA,EAAX,EAAkC4hB,CAAApiB,OAAlC,GAAsDoiB,CAAtD,CACE,IAAI5hB,CAAJ,CACE,IAAS,IAAAiB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBjB,CAApB,CAA4BiB,CAAA,EAA5B,CACE0gB,CAAA,CAAKA,CAAA3hB,OAAA,EAAL,CAAA,CAAsB4hB,CAAA,CAAS3gB,CAAT,CAF1B,CADF,IAOE0gB,EAAA,CAAKA,CAAA3hB,OAAA,EAAL,CAAA,CAAsB4hB,CAXnB,CAR6B,CA0BxCC,QAASA,GAAgB,CAAC9c,CAAD,CAAU0G,CAAV,CAAgB,CACvC,MAAOqW,GAAA,CAAoB/c,CAApB,CAA6B,GAA7B,EAAoC0G,CAApC,EAA4C,cAA5C,EAA8D,YAA9D,CADgC,CAIzCqW,QAASA,GAAmB,CAAC/c,CAAD;AAAU0G,CAAV,CAAgBrK,CAAhB,CAAuB,CAxoC1Bwc,CA2oCvB,EAAI7Y,CAAAgF,SAAJ,GACEhF,CADF,CACYA,CAAAgd,gBADZ,CAKA,KAFIC,CAEJ,CAFYniB,CAAA,CAAQ4L,CAAR,CAAA,CAAgBA,CAAhB,CAAuB,CAACA,CAAD,CAEnC,CAAO1G,CAAP,CAAA,CAAgB,CACd,IADc,IACL9D,EAAI,CADC,CACEY,EAAKmgB,CAAAhiB,OAArB,CAAmCiB,CAAnC,CAAuCY,CAAvC,CAA2CZ,CAAA,EAA3C,CACE,GAAI6C,CAAA,CAAU1C,CAAV,CAAkBrB,CAAA8M,KAAA,CAAY9H,CAAZ,CAAqBid,CAAA,CAAM/gB,CAAN,CAArB,CAAlB,CAAJ,CAAuD,MAAOG,EAMhE2D,EAAA,CAAUA,CAAAma,WAAV,EAvpC8B+C,EAupC9B,GAAiCld,CAAAgF,SAAjC,EAAqFhF,CAAAmd,KARvE,CARiC,CAoBnDC,QAASA,GAAW,CAACpd,CAAD,CAAU,CAE5B,IADA4a,EAAA,CAAa5a,CAAb,CAAsB,CAAA,CAAtB,CACA,CAAOA,CAAA8Z,WAAP,CAAA,CACE9Z,CAAAqd,YAAA,CAAoBrd,CAAA8Z,WAApB,CAH0B,CAO9BwD,QAASA,GAAY,CAACtd,CAAD,CAAUud,CAAV,CAAoB,CAClCA,CAAL,EAAe3C,EAAA,CAAa5a,CAAb,CACf,KAAI5B,EAAS4B,CAAAma,WACT/b,EAAJ,EAAYA,CAAAif,YAAA,CAAmBrd,CAAnB,CAH2B,CAOzCwd,QAASA,GAAoB,CAACC,CAAD,CAASC,CAAT,CAAc,CACzCA,CAAA,CAAMA,CAAN,EAAajjB,CACb,IAAgC,UAAhC,GAAIijB,CAAAxa,SAAAya,WAAJ,CAIED,CAAAE,WAAA,CAAeH,CAAf,CAJF,KAOEziB,EAAA,CAAO0iB,CAAP,CAAAlU,GAAA,CAAe,MAAf,CAAuBiU,CAAvB,CATuC,CA0E3CI,QAASA,GAAkB,CAAC7d,CAAD,CAAU0G,CAAV,CAAgB,CAEzC,IAAIoX,EAAcC,EAAA,CAAarX,CAAAuC,YAAA,EAAb,CAGlB,OAAO6U,EAAP,EAAsBE,EAAA,CAAiBje,EAAA,CAAUC,CAAV,CAAjB,CAAtB,EAA8D8d,CALrB,CA0L3CG,QAASA,GAAkB,CAACje,CAAD,CAAUgK,CAAV,CAAkB,CAC3C,IAAIkU,EAAeA,QAAQ,CAACC,CAAD;AAAQtc,CAAR,CAAc,CAEvCsc,CAAAC,mBAAA,CAA2BC,QAAQ,EAAG,CACpC,MAAOF,EAAAG,iBAD6B,CAItC,KAAIC,EAAWvU,CAAA,CAAOnI,CAAP,EAAesc,CAAAtc,KAAf,CAAf,CACI2c,EAAiBD,CAAA,CAAWA,CAAAtjB,OAAX,CAA6B,CAElD,IAAKujB,CAAL,CAAA,CAEA,GAAI1f,CAAA,CAAYqf,CAAAM,4BAAZ,CAAJ,CAAoD,CAClD,IAAIC,EAAmCP,CAAAQ,yBACvCR,EAAAQ,yBAAA,CAAiCC,QAAQ,EAAG,CAC1CT,CAAAM,4BAAA,CAAoC,CAAA,CAEhCN,EAAAU,gBAAJ,EACEV,CAAAU,gBAAA,EAGEH,EAAJ,EACEA,CAAA9iB,KAAA,CAAsCuiB,CAAtC,CARwC,CAFM,CAepDA,CAAAW,8BAAA,CAAsCC,QAAQ,EAAG,CAC/C,MAA6C,CAAA,CAA7C,GAAOZ,CAAAM,4BADwC,CAKjD,KAAIO,EAAiBT,CAAAU,sBAAjBD,EAAmDE,EAGjC,EAAtB,CAAKV,CAAL,GACED,CADF,CACajR,EAAA,CAAYiR,CAAZ,CADb,CAIA,KAAS,IAAAriB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBsiB,CAApB,CAAoCtiB,CAAA,EAApC,CACOiiB,CAAAW,8BAAA,EAAL,EACEE,CAAA,CAAehf,CAAf,CAAwBme,CAAxB,CAA+BI,CAAA,CAASriB,CAAT,CAA/B,CA/BJ,CATuC,CA+CzCgiB,EAAAjU,KAAA;AAAoBjK,CACpB,OAAOke,EAjDoC,CAoD7CgB,QAASA,GAAqB,CAAClf,CAAD,CAAUme,CAAV,CAAiBgB,CAAjB,CAA0B,CACtDA,CAAAvjB,KAAA,CAAaoE,CAAb,CAAsBme,CAAtB,CADsD,CAIxDiB,QAASA,GAA0B,CAACC,CAAD,CAASlB,CAAT,CAAgBgB,CAAhB,CAAyB,CAI1D,IAAIG,EAAUnB,CAAAoB,cAGTD,EAAL,GAAiBA,CAAjB,GAA6BD,CAA7B,EAAwCG,EAAA5jB,KAAA,CAAoByjB,CAApB,CAA4BC,CAA5B,CAAxC,GACEH,CAAAvjB,KAAA,CAAayjB,CAAb,CAAqBlB,CAArB,CARwD,CAuP5DnG,QAASA,GAAgB,EAAG,CAC1B,IAAAyH,KAAA,CAAYC,QAAiB,EAAG,CAC9B,MAAO9hB,EAAA,CAAOyM,CAAP,CAAe,CACpBsV,SAAUA,QAAQ,CAACngB,CAAD,CAAOogB,CAAP,CAAgB,CAC5BpgB,CAAAE,KAAJ,GAAeF,CAAf,CAAsBA,CAAA,CAAK,CAAL,CAAtB,CACA,OAAO4c,GAAA,CAAe5c,CAAf,CAAqBogB,CAArB,CAFyB,CADd,CAKpBC,SAAUA,QAAQ,CAACrgB,CAAD,CAAOogB,CAAP,CAAgB,CAC5BpgB,CAAAE,KAAJ,GAAeF,CAAf,CAAsBA,CAAA,CAAK,CAAL,CAAtB,CACA,OAAOkd,GAAA,CAAeld,CAAf,CAAqBogB,CAArB,CAFyB,CALd,CASpBE,YAAaA,QAAQ,CAACtgB,CAAD,CAAOogB,CAAP,CAAgB,CAC/BpgB,CAAAE,KAAJ,GAAeF,CAAf,CAAsBA,CAAA,CAAK,CAAL,CAAtB,CACA,OAAO8c,GAAA,CAAkB9c,CAAlB,CAAwBogB,CAAxB,CAF4B,CATjB,CAAf,CADuB,CADN,CA+B5BG,QAASA,GAAO,CAACnlB,CAAD,CAAMolB,CAAN,CAAiB,CAC/B,IAAIvkB,EAAMb,CAANa,EAAab,CAAAiC,UAEjB,IAAIpB,CAAJ,CAIE,MAHmB,UAGZA,GAHH,MAAOA,EAGJA,GAFLA,CAEKA,CAFCb,CAAAiC,UAAA,EAEDpB,EAAAA,CAGLwkB,EAAAA,CAAU,MAAOrlB,EAOrB,OALEa,EAKF,CANe,UAAf,EAAIwkB,CAAJ,EAAyC,QAAzC,EAA8BA,CAA9B,EAA6D,IAA7D,GAAqDrlB,CAArD,CACQA,CAAAiC,UADR;AACwBojB,CADxB,CACkC,GADlC,CACwC,CAACD,CAAD,EAAc1jB,EAAd,GADxC,CAGQ2jB,CAHR,CAGkB,GAHlB,CAGwBrlB,CAdO,CAuBjCslB,QAASA,GAAO,CAAC/f,CAAD,CAAQggB,CAAR,CAAqB,CACnC,GAAIA,CAAJ,CAAiB,CACf,IAAI5jB,EAAM,CACV,KAAAD,QAAA,CAAe8jB,QAAQ,EAAG,CACxB,MAAO,EAAE7jB,CADe,CAFX,CAMjBjB,CAAA,CAAQ6E,CAAR,CAAe,IAAAkgB,IAAf,CAAyB,IAAzB,CAPmC,CA0HrCC,QAASA,GAAW,CAAC1d,CAAD,CAAK,CACnB2d,CAAAA,CAAS1c,CAJN2c,QAAAC,UAAA5hB,SAAAjD,KAAA,CAIkBgH,CAJlB,CAIMiB,CAJiC,GAIjCA,SAAA,CAAwB6c,EAAxB,CAAwC,EAAxC,CAEb,OADWH,EAAA5e,MAAA,CAAagf,EAAb,CACX,EADsCJ,CAAA5e,MAAA,CAAaif,EAAb,CAFf,CAMzBC,QAASA,GAAM,CAACje,CAAD,CAAK,CAIlB,MAAA,CADIke,CACJ,CADWR,EAAA,CAAY1d,CAAZ,CACX,EACS,WADT,CACuBiB,CAACid,CAAA,CAAK,CAAL,CAADjd,EAAY,EAAZA,SAAA,CAAwB,WAAxB,CAAqC,GAArC,CADvB,CACmE,GADnE,CAGO,IAPW,CAijBpB2D,QAASA,GAAc,CAACuZ,CAAD,CAAgBja,CAAhB,CAA0B,CA4C/Cka,QAASA,EAAa,CAACC,CAAD,CAAW,CAC/B,MAAO,SAAQ,CAACxlB,CAAD,CAAMY,CAAN,CAAa,CAC1B,GAAIU,CAAA,CAAStB,CAAT,CAAJ,CACEH,CAAA,CAAQG,CAAR,CAAaU,EAAA,CAAc8kB,CAAd,CAAb,CADF,KAGE,OAAOA,EAAA,CAASxlB,CAAT,CAAcY,CAAd,CAJiB,CADG,CAUjCyP,QAASA,EAAQ,CAACpF,CAAD,CAAOwa,CAAP,CAAkB,CACjCvW,EAAA,CAAwBjE,CAAxB,CAA8B,SAA9B,CACA,IAAIhL,CAAA,CAAWwlB,CAAX,CAAJ,EAA6BpmB,CAAA,CAAQomB,CAAR,CAA7B,CACEA,CAAA,CAAYC,CAAAC,YAAA,CAA6BF,CAA7B,CAEd,IAAKzB,CAAAyB,CAAAzB,KAAL,CACE,KAAMhU,GAAA,CAAgB,MAAhB,CAA2E/E,CAA3E,CAAN,CAEF,MAAO2a,EAAA,CAAc3a,CAAd,CA3DY4a,UA2DZ,CAAP;AAA8CJ,CARb,CAWnCK,QAASA,EAAkB,CAAC7a,CAAD,CAAO8E,CAAP,CAAgB,CACzC,MAAOgW,SAA4B,EAAG,CACpC,IAAIC,EAASC,CAAAja,OAAA,CAAwB+D,CAAxB,CAAiC,IAAjC,CACb,IAAI1M,CAAA,CAAY2iB,CAAZ,CAAJ,CACE,KAAMhW,GAAA,CAAgB,OAAhB,CAAyF/E,CAAzF,CAAN,CAEF,MAAO+a,EAL6B,CADG,CAU3CjW,QAASA,EAAO,CAAC9E,CAAD,CAAOib,CAAP,CAAkBC,CAAlB,CAA2B,CACzC,MAAO9V,EAAA,CAASpF,CAAT,CAAe,CACpB+Y,KAAkB,CAAA,CAAZ,GAAAmC,CAAA,CAAoBL,CAAA,CAAmB7a,CAAnB,CAAyBib,CAAzB,CAApB,CAA0DA,CAD5C,CAAf,CADkC,CAiC3CE,QAASA,EAAW,CAACd,CAAD,CAAgB,CAClCzW,EAAA,CAAUxL,CAAA,CAAYiiB,CAAZ,CAAV,EAAwCjmB,CAAA,CAAQimB,CAAR,CAAxC,CAAgE,eAAhE,CAAiF,cAAjF,CADkC,KAE9BtU,EAAY,EAFkB,CAEdqV,CACpBxmB,EAAA,CAAQylB,CAAR,CAAuB,QAAQ,CAACxa,CAAD,CAAS,CAItCwb,QAASA,EAAc,CAAC9V,CAAD,CAAQ,CAAA,IACzB/P,CADyB,CACtBY,CACFZ,EAAA,CAAI,CAAT,KAAYY,CAAZ,CAAiBmP,CAAAhR,OAAjB,CAA+BiB,CAA/B,CAAmCY,CAAnC,CAAuCZ,CAAA,EAAvC,CAA4C,CAAA,IACtC8lB,EAAa/V,CAAA,CAAM/P,CAAN,CADyB,CAEtC4P,EAAWqV,CAAAxY,IAAA,CAAqBqZ,CAAA,CAAW,CAAX,CAArB,CAEflW,EAAA,CAASkW,CAAA,CAAW,CAAX,CAAT,CAAAjf,MAAA,CAA8B+I,CAA9B,CAAwCkW,CAAA,CAAW,CAAX,CAAxC,CAJ0C,CAFf,CAH/B,GAAI,CAAAC,CAAAtZ,IAAA,CAAkBpC,CAAlB,CAAJ,CAAA,CACA0b,CAAA5B,IAAA,CAAkB9Z,CAAlB,CAA0B,CAAA,CAA1B,CAYA,IAAI,CACExL,CAAA,CAASwL,CAAT,CAAJ,EACEub,CAGA,CAHWlU,EAAA,CAAcrH,CAAd,CAGX,CAFAkG,CAEA,CAFYA,CAAAlK,OAAA,CAAiBsf,CAAA,CAAYC,CAAAnW,SAAZ,CAAjB,CAAApJ,OAAA,CAAwDuf,CAAAlV,WAAxD,CAEZ,CADAmV,CAAA,CAAeD,CAAApV,aAAf,CACA,CAAAqV,CAAA,CAAeD,CAAAnV,cAAf,CAJF,EAKWjR,CAAA,CAAW6K,CAAX,CAAJ,CACHkG,CAAA9L,KAAA,CAAewgB,CAAA1Z,OAAA,CAAwBlB,CAAxB,CAAf,CADG,CAEIzL,CAAA,CAAQyL,CAAR,CAAJ,CACHkG,CAAA9L,KAAA,CAAewgB,CAAA1Z,OAAA,CAAwBlB,CAAxB,CAAf,CADG;AAGLkE,EAAA,CAAYlE,CAAZ,CAAoB,QAApB,CAXA,CAaF,MAAO3B,CAAP,CAAU,CAYV,KAXI9J,EAAA,CAAQyL,CAAR,CAWE,GAVJA,CAUI,CAVKA,CAAA,CAAOA,CAAAtL,OAAP,CAAuB,CAAvB,CAUL,EARF2J,CAAAsd,QAQE,EARWtd,CAAAud,MAQX,EARqD,EAQrD,EARsBvd,CAAAud,MAAA9hB,QAAA,CAAgBuE,CAAAsd,QAAhB,CAQtB,GAFJtd,CAEI,CAFAA,CAAAsd,QAEA,CAFY,IAEZ,CAFmBtd,CAAAud,MAEnB,EAAA1W,EAAA,CAAgB,UAAhB,CACIlF,CADJ,CACY3B,CAAAud,MADZ,EACuBvd,CAAAsd,QADvB,EACoCtd,CADpC,CAAN,CAZU,CA1BZ,CADsC,CAAxC,CA2CA,OAAO6H,EA9C2B,CAqDpC2V,QAASA,EAAsB,CAACC,CAAD,CAAQ7W,CAAR,CAAiB,CAE9C8W,QAASA,EAAU,CAACC,CAAD,CAAcC,CAAd,CAAsB,CACvC,GAAIH,CAAA1mB,eAAA,CAAqB4mB,CAArB,CAAJ,CAAuC,CACrC,GAAIF,CAAA,CAAME,CAAN,CAAJ,GAA2BE,CAA3B,CACE,KAAMhX,GAAA,CAAgB,MAAhB,CACI8W,CADJ,CACkB,MADlB,CAC2B1X,CAAAjF,KAAA,CAAU,MAAV,CAD3B,CAAN,CAGF,MAAOyc,EAAA,CAAME,CAAN,CAL8B,CAOrC,GAAI,CAGF,MAFA1X,EAAAzD,QAAA,CAAamb,CAAb,CAEO,CADPF,CAAA,CAAME,CAAN,CACO,CADcE,CACd,CAAAJ,CAAA,CAAME,CAAN,CAAA,CAAqB/W,CAAA,CAAQ+W,CAAR,CAAqBC,CAArB,CAH1B,CAIF,MAAOE,CAAP,CAAY,CAIZ,KAHIL,EAAA,CAAME,CAAN,CAGEG,GAHqBD,CAGrBC,EAFJ,OAAOL,CAAA,CAAME,CAAN,CAEHG,CAAAA,CAAN,CAJY,CAJd,OASU,CACR7X,CAAA8X,MAAA,EADQ,CAjB2B,CAwBzCC,QAASA,EAAa,CAAChgB,CAAD,CAAKigB,CAAL,CAAaN,CAAb,CAA0B,CAAA,IAC1CzB,EAAO,EACPgC,EAAAA,CAAUtb,EAAAub,WAAA,CAA0BngB,CAA1B,CAA8BkE,CAA9B,CAAwCyb,CAAxC,CAEd,KAJ8C,IAIrCrmB,EAAI,CAJiC,CAI9BjB,EAAS6nB,CAAA7nB,OAAzB,CAAyCiB,CAAzC,CAA6CjB,CAA7C,CAAqDiB,CAAA,EAArD,CAA0D,CACxD,IAAIT,EAAMqnB,CAAA,CAAQ5mB,CAAR,CACV;GAAmB,QAAnB,GAAI,MAAOT,EAAX,CACE,KAAMgQ,GAAA,CAAgB,MAAhB,CACyEhQ,CADzE,CAAN,CAGFqlB,CAAAngB,KAAA,CAAUkiB,CAAA,EAAUA,CAAAlnB,eAAA,CAAsBF,CAAtB,CAAV,CAAuConB,CAAA,CAAOpnB,CAAP,CAAvC,CACuC6mB,CAAA,CAAW7mB,CAAX,CAAgB8mB,CAAhB,CADjD,CANwD,CAS1D,MAAOzB,EAbuC,CA4DhD,MAAO,CACLrZ,OAlCFA,QAAe,CAAC7E,CAAD,CAAKD,CAAL,CAAWkgB,CAAX,CAAmBN,CAAnB,CAAgC,CACvB,QAAtB,GAAI,MAAOM,EAAX,GACEN,CACA,CADcM,CACd,CAAAA,CAAA,CAAS,IAFX,CAKI/B,EAAAA,CAAO8B,CAAA,CAAchgB,CAAd,CAAkBigB,CAAlB,CAA0BN,CAA1B,CACPznB,EAAA,CAAQ8H,CAAR,CAAJ,GACEA,CADF,CACOA,CAAA,CAAGA,CAAA3H,OAAH,CAAe,CAAf,CADP,CAfE,EAAA,CADU,EAAZ,EAAI+nB,EAAJ,CACS,CAAA,CADT,CAKuB,UALvB,GAKO,MAeMpgB,EApBb,EAMK,4BAAArD,KAAA,CA7wBFihB,QAAAC,UAAA5hB,SAAAjD,KAAA,CA2xBUgH,CA3xBV,CA6wBE,CA7wBqC,GA6wBrC,CAcL,OAAK,EAAL,EAKEke,CAAA1Z,QAAA,CAAa,IAAb,CACO,CAAA,KAAKoZ,QAAAC,UAAA/d,KAAAK,MAAA,CAA8BH,CAA9B,CAAkCke,CAAlC,CAAL,CANT,EAGSle,CAAAG,MAAA,CAASJ,CAAT,CAAeme,CAAf,CAdoC,CAiCxC,CAELM,YAbFA,QAAoB,CAAC6B,CAAD,CAAOJ,CAAP,CAAeN,CAAf,CAA4B,CAG9C,IAAIW,EAAQpoB,CAAA,CAAQmoB,CAAR,CAAA,CAAgBA,CAAA,CAAKA,CAAAhoB,OAAL,CAAmB,CAAnB,CAAhB,CAAwCgoB,CAChDnC,EAAAA,CAAO8B,CAAA,CAAcK,CAAd,CAAoBJ,CAApB,CAA4BN,CAA5B,CAEXzB,EAAA1Z,QAAA,CAAa,IAAb,CACA,OAAO,MAAKoZ,QAAAC,UAAA/d,KAAAK,MAAA,CAA8BmgB,CAA9B;AAAoCpC,CAApC,CAAL,CAPuC,CAWzC,CAGLnY,IAAK2Z,CAHA,CAILa,SAAU3b,EAAAub,WAJL,CAKLK,IAAKA,QAAQ,CAAC1c,CAAD,CAAO,CAClB,MAAO2a,EAAA1lB,eAAA,CAA6B+K,CAA7B,CA1PQ4a,UA0PR,CAAP,EAA8De,CAAA1mB,eAAA,CAAqB+K,CAArB,CAD5C,CALf,CAtFuC,CAhKhDI,CAAA,CAAyB,CAAA,CAAzB,GAAYA,CADmC,KAE3C2b,EAAgB,EAF2B,CAI3C5X,EAAO,EAJoC,CAK3CoX,EAAgB,IAAI/B,EAAJ,CAAY,EAAZ,CAAgB,CAAA,CAAhB,CAL2B,CAM3CmB,EAAgB,CACdha,SAAU,CACNyE,SAAUkV,CAAA,CAAclV,CAAd,CADJ,CAENN,QAASwV,CAAA,CAAcxV,CAAd,CAFH,CAGNqB,QAASmU,CAAA,CAuEnBnU,QAAgB,CAACnG,CAAD,CAAOvF,CAAP,CAAoB,CAClC,MAAOqK,EAAA,CAAQ9E,CAAR,CAAc,CAAC,WAAD,CAAc,QAAQ,CAAC2c,CAAD,CAAY,CACrD,MAAOA,EAAAjC,YAAA,CAAsBjgB,CAAtB,CAD8C,CAAlC,CAAd,CAD2B,CAvEjB,CAHH,CAIN9E,MAAO2kB,CAAA,CA4EjB3kB,QAAc,CAACqK,CAAD,CAAOzD,CAAP,CAAY,CAAE,MAAOuI,EAAA,CAAQ9E,CAAR,CAAchI,EAAA,CAAQuE,CAAR,CAAd,CAA4B,CAAA,CAA5B,CAAT,CA5ET,CAJD,CAKN6J,SAAUkU,CAAA,CA6EpBlU,QAAiB,CAACpG,CAAD,CAAOrK,CAAP,CAAc,CAC7BsO,EAAA,CAAwBjE,CAAxB,CAA8B,UAA9B,CACA2a,EAAA,CAAc3a,CAAd,CAAA,CAAsBrK,CACtBinB,EAAA,CAAc5c,CAAd,CAAA,CAAsBrK,CAHO,CA7EX,CALJ,CAMN0Q,UAkFVA,QAAkB,CAACwV,CAAD,CAAcgB,CAAd,CAAuB,CAAA,IACnCC,EAAerC,CAAAxY,IAAA,CAAqB4Z,CAArB,CA7FAjB,UA6FA,CADoB,CAEnCmC,EAAWD,CAAA/D,KAEf+D,EAAA/D,KAAA,CAAoBiE,QAAQ,EAAG,CAC7B,IAAIC,EAAejC,CAAAja,OAAA,CAAwBgc,CAAxB,CAAkCD,CAAlC,CACnB,OAAO9B,EAAAja,OAAA,CAAwB8b,CAAxB,CAAiC,IAAjC;AAAuC,CAACK,UAAWD,CAAZ,CAAvC,CAFsB,CAJQ,CAxFzB,CADI,CAN2B,CAgB3CxC,EAAoBE,CAAAgC,UAApBlC,CACIiB,CAAA,CAAuBf,CAAvB,CAAsC,QAAQ,CAACkB,CAAD,CAAcC,CAAd,CAAsB,CAC9Dva,EAAAlN,SAAA,CAAiBynB,CAAjB,CAAJ,EACE3X,CAAAlK,KAAA,CAAU6hB,CAAV,CAEF,MAAM/W,GAAA,CAAgB,MAAhB,CAAiDZ,CAAAjF,KAAA,CAAU,MAAV,CAAjD,CAAN,CAJkE,CAApE,CAjBuC,CAuB3C0d,EAAgB,EAvB2B,CAwB3CO,EACIzB,CAAA,CAAuBkB,CAAvB,CAAsC,QAAQ,CAACf,CAAD,CAAcC,CAAd,CAAsB,CAClE,IAAI1W,EAAWqV,CAAAxY,IAAA,CAAqB4Z,CAArB,CAvBJjB,UAuBI,CAAmDkB,CAAnD,CACf,OAAOd,EAAAja,OAAA,CACHqE,CAAA2T,KADG,CACY3T,CADZ,CACsB5K,IAAAA,EADtB,CACiCqhB,CADjC,CAF2D,CAApE,CAzBuC,CA8B3Cb,EAAmBmC,CAEvBxC,EAAA,kBAAA,CAA8C,CAAE5B,KAAM/gB,EAAA,CAAQmlB,CAAR,CAAR,CAC9C,KAAIpX,EAAYoV,CAAA,CAAYd,CAAZ,CAAhB,CACAW,EAAmBmC,CAAAlb,IAAA,CAA0B,WAA1B,CACnB+Y,EAAA5a,SAAA,CAA4BA,CAC5BxL,EAAA,CAAQmR,CAAR,CAAmB,QAAQ,CAAC7J,CAAD,CAAK,CAAMA,CAAJ,EAAQ8e,CAAAja,OAAA,CAAwB7E,CAAxB,CAAV,CAAhC,CAEA,OAAO8e,EAtCwC,CA6QjDlO,QAASA,GAAqB,EAAG,CAE/B,IAAIsQ,EAAuB,CAAA,CAe3B,KAAAC,qBAAA,CAA4BC,QAAQ,EAAG,CACrCF,CAAA,CAAuB,CAAA,CADc,CAiJvC,KAAArE,KAAA,CAAY,CAAC,SAAD,CAAY,WAAZ,CAAyB,YAAzB,CAAuC,QAAQ,CAAC9H,CAAD,CAAU1B,CAAV,CAAqBM,CAArB,CAAiC,CAM1F0N,QAASA,EAAc,CAACC,CAAD,CAAO,CAC5B,IAAIzC,EAAS,IACbrmB,MAAAqlB,UAAA0D,KAAAvoB,KAAA,CAA0BsoB,CAA1B;AAAgC,QAAQ,CAAClkB,CAAD,CAAU,CAChD,GAA2B,GAA3B,GAAID,EAAA,CAAUC,CAAV,CAAJ,CAEE,MADAyhB,EACO,CADEzhB,CACF,CAAA,CAAA,CAHuC,CAAlD,CAMA,OAAOyhB,EARqB,CAgC9B2C,QAASA,EAAQ,CAACna,CAAD,CAAO,CACtB,GAAIA,CAAJ,CAAU,CACRA,CAAAoa,eAAA,EAEA,KAAI7L,CAvBFA,EAAAA,CAAS8L,CAAAC,QAET7oB,EAAA,CAAW8c,CAAX,CAAJ,CACEA,CADF,CACWA,CAAA,EADX,CAEW9a,EAAA,CAAU8a,CAAV,CAAJ,EACDvO,CAGF,CAHSuO,CAAA,CAAO,CAAP,CAGT,CAAAA,CAAA,CADqB,OAAvB,GADYb,CAAA6M,iBAAA5V,CAAyB3E,CAAzB2E,CACR6V,SAAJ,CACW,CADX,CAGWxa,CAAAya,sBAAA,EAAAC,OANN,EAQKxpB,CAAA,CAASqd,CAAT,CARL,GASLA,CATK,CASI,CATJ,CAqBDA,EAAJ,GAcMoM,CACJ,CADc3a,CAAAya,sBAAA,EAAAG,IACd,CAAAlN,CAAAmN,SAAA,CAAiB,CAAjB,CAAoBF,CAApB,CAA8BpM,CAA9B,CAfF,CALQ,CAAV,IAuBEb,EAAAyM,SAAA,CAAiB,CAAjB,CAAoB,CAApB,CAxBoB,CA4BxBE,QAASA,EAAM,CAACS,CAAD,CAAO,CACpBA,CAAA,CAAOhqB,CAAA,CAASgqB,CAAT,CAAA,CAAiBA,CAAjB,CAAwB9O,CAAA8O,KAAA,EAC/B,KAAIC,CAGCD,EAAL,CAGK,CAAKC,CAAL,CAAW9hB,CAAA+hB,eAAA,CAAwBF,CAAxB,CAAX,EAA2CX,CAAA,CAASY,CAAT,CAA3C,CAGA,CAAKA,CAAL,CAAWf,CAAA,CAAe/gB,CAAAgiB,kBAAA,CAA2BH,CAA3B,CAAf,CAAX,EAA8DX,CAAA,CAASY,CAAT,CAA9D,CAGa,KAHb,GAGID,CAHJ,EAGoBX,CAAA,CAAS,IAAT,CATzB,CAAWA,CAAA,CAAS,IAAT,CALS,CAjEtB,IAAIlhB,EAAWyU,CAAAzU,SAoFX4gB,EAAJ,EACEvN,CAAApX,OAAA,CAAkBgmB,QAAwB,EAAG,CAAC,MAAOlP,EAAA8O,KAAA,EAAR,CAA7C,CACEK,QAA8B,CAACC,CAAD,CAASC,CAAT,CAAiB,CAEzCD,CAAJ;AAAeC,CAAf,EAAoC,EAApC,GAAyBD,CAAzB,EAEA7H,EAAA,CAAqB,QAAQ,EAAG,CAC9BjH,CAAArX,WAAA,CAAsBolB,CAAtB,CAD8B,CAAhC,CAJ6C,CADjD,CAWF,OAAOA,EAjGmF,CAAhF,CAlKmB,CA2QjCiB,QAASA,GAAY,CAACtX,CAAD,CAAGuX,CAAH,CAAM,CACzB,GAAKvX,CAAAA,CAAL,EAAWuX,CAAAA,CAAX,CAAc,MAAO,EACrB,IAAKvX,CAAAA,CAAL,CAAQ,MAAOuX,EACf,IAAKA,CAAAA,CAAL,CAAQ,MAAOvX,EACXnT,EAAA,CAAQmT,CAAR,CAAJ,GAAgBA,CAAhB,CAAoBA,CAAArI,KAAA,CAAO,GAAP,CAApB,CACI9K,EAAA,CAAQ0qB,CAAR,CAAJ,GAAgBA,CAAhB,CAAoBA,CAAA5f,KAAA,CAAO,GAAP,CAApB,CACA,OAAOqI,EAAP,CAAW,GAAX,CAAiBuX,CANQ,CAkB3BC,QAASA,GAAY,CAAC7F,CAAD,CAAU,CACzB7kB,CAAA,CAAS6kB,CAAT,CAAJ,GACEA,CADF,CACYA,CAAA9f,MAAA,CAAc,GAAd,CADZ,CAMA,KAAIlF,EAAMyH,CAAA,EACV/G,EAAA,CAAQskB,CAAR,CAAiB,QAAQ,CAAC8F,CAAD,CAAQ,CAG3BA,CAAAzqB,OAAJ,GACEL,CAAA,CAAI8qB,CAAJ,CADF,CACe,CAAA,CADf,CAH+B,CAAjC,CAOA,OAAO9qB,EAfsB,CAyB/B+qB,QAASA,GAAqB,CAACC,CAAD,CAAU,CACtC,MAAO7oB,EAAA,CAAS6oB,CAAT,CAAA,CACDA,CADC,CAED,EAHgC,CAw2BxCC,QAASA,GAAO,CAACprB,CAAD,CAASyI,CAAT,CAAmBiT,CAAnB,CAAyBc,CAAzB,CAAmC,CAqBjD6O,QAASA,EAA0B,CAACljB,CAAD,CAAK,CACtC,GAAI,CACFA,CAAAG,MAAA,CAAS,IAAT,CA7oJGlF,EAAAjC,KAAA,CA6oJsBkC,SA7oJtB,CA6oJiCgF,CA7oJjC,CA6oJH,CADE,CAAJ,OAEU,CAER,GADAijB,CAAA,EACI,CAA4B,CAA5B,GAAAA,CAAJ,CACE,IAAA,CAAOC,CAAA/qB,OAAP,CAAA,CACE,GAAI,CACF+qB,CAAAC,IAAA,EAAA,EADE,CAEF,MAAOrhB,CAAP,CAAU,CACVuR,CAAA+P,MAAA,CAAWthB,CAAX,CADU,CANR,CAH4B,CA2JxCuhB,QAASA,EAA0B,EAAG,CACpCC,CAAA,CAAkB,IAClBC,EAAA,EACAC,EAAA,EAHoC,CAQtCD,QAASA,EAAU,EAAG,CAEpBE,CAAA,CAAcC,CAAA,EACdD;CAAA,CAAcznB,CAAA,CAAYynB,CAAZ,CAAA,CAA2B,IAA3B,CAAkCA,CAG5CzkB,GAAA,CAAOykB,CAAP,CAAoBE,CAApB,CAAJ,GACEF,CADF,CACgBE,CADhB,CAGAA,EAAA,CAAkBF,CATE,CAYtBD,QAASA,EAAa,EAAG,CACvB,GAAII,CAAJ,GAAuB/jB,CAAAgkB,IAAA,EAAvB,EAAqCC,CAArC,GAA0DL,CAA1D,CAIAG,CAEA,CAFiB/jB,CAAAgkB,IAAA,EAEjB,CADAC,CACA,CADmBL,CACnB,CAAAjrB,CAAA,CAAQurB,CAAR,CAA4B,QAAQ,CAACC,CAAD,CAAW,CAC7CA,CAAA,CAASnkB,CAAAgkB,IAAA,EAAT,CAAqBJ,CAArB,CAD6C,CAA/C,CAPuB,CApMwB,IAC7C5jB,EAAO,IADsC,CAE7C4F,EAAW9N,CAAA8N,SAFkC,CAG7Cwe,EAAUtsB,CAAAssB,QAHmC,CAI7CnJ,EAAanjB,CAAAmjB,WAJgC,CAK7CoJ,EAAevsB,CAAAusB,aAL8B,CAM7CC,EAAkB,EAEtBtkB,EAAAukB,OAAA,CAAc,CAAA,CAEd,KAAInB,EAA0B,CAA9B,CACIC,EAA8B,EAGlCrjB,EAAAwkB,6BAAA,CAAoCrB,CACpCnjB,EAAAykB,6BAAA,CAAoCC,QAAQ,EAAG,CAAEtB,CAAA,EAAF,CAkC/CpjB,EAAA2kB,gCAAA,CAAuCC,QAAQ,CAACC,CAAD,CAAW,CACxB,CAAhC,GAAIzB,CAAJ,CACEyB,CAAA,EADF,CAGExB,CAAArlB,KAAA,CAAiC6mB,CAAjC,CAJsD,CAjDT,KA6D7CjB,CA7D6C,CA6DhCK,CA7DgC,CA8D7CF,EAAiBne,CAAAkf,KA9D4B,CA+D7CC,EAAcxkB,CAAAvD,KAAA,CAAc,MAAd,CA/D+B,CAgE7CymB,EAAkB,IAhE2B,CAiE7CI,EAAmBvP,CAAA8P,QAAD,CAA2BP,QAAwB,EAAG,CACtE,GAAI,CACF,MAAOO,EAAAY,MADL,CAEF,MAAO/iB,CAAP,CAAU,EAH0D,CAAtD,CAAoBrG,CAQ1C8nB,EAAA,EACAO,EAAA,CAAmBL,CAsBnB5jB,EAAAgkB,IAAA,CAAWiB,QAAQ,CAACjB,CAAD,CAAM9iB,CAAN,CAAe8jB,CAAf,CAAsB,CAInC7oB,CAAA,CAAY6oB,CAAZ,CAAJ,GACEA,CADF,CACU,IADV,CAKIpf,EAAJ;AAAiB9N,CAAA8N,SAAjB,GAAkCA,CAAlC,CAA6C9N,CAAA8N,SAA7C,CACIwe,EAAJ,GAAgBtsB,CAAAssB,QAAhB,GAAgCA,CAAhC,CAA0CtsB,CAAAssB,QAA1C,CAGA,IAAIJ,CAAJ,CAAS,CACP,IAAIkB,EAAYjB,CAAZiB,GAAiCF,CAKrC,IAAIjB,CAAJ,GAAuBC,CAAvB,GAAgCI,CAAA9P,CAAA8P,QAAhC,EAAoDc,CAApD,EACE,MAAOllB,EAET,KAAImlB,EAAWpB,CAAXoB,EAA6BC,EAAA,CAAUrB,CAAV,CAA7BoB,GAA2DC,EAAA,CAAUpB,CAAV,CAC/DD,EAAA,CAAiBC,CACjBC,EAAA,CAAmBe,CAKfZ,EAAA9P,CAAA8P,QAAJ,EAA0Be,CAA1B,EAAuCD,CAAvC,EAMOC,CAUL,GATE1B,CASF,CAToBO,CASpB,EAPI9iB,CAAJ,CACE0E,CAAA1E,QAAA,CAAiB8iB,CAAjB,CADF,CAEYmB,CAAL,EAGLvf,CAAA,CAAAA,CAAA,CApGFnI,CAoGE,CAAwBumB,CApGlBtmB,QAAA,CAAY,GAAZ,CAoGN,CAnGN,CAmGM,CAnGY,EAAX,GAAAD,CAAA,CAAe,EAAf,CAmGuBumB,CAnGHqB,OAAA,CAAW5nB,CAAX,CAmGrB,CAAAmI,CAAAwc,KAAA,CAAgB,CAHX,EACLxc,CAAAkf,KADK,CACWd,CAIlB,CAAIpe,CAAAkf,KAAJ,GAAsBd,CAAtB,GACEP,CADF,CACoBO,CADpB,CAhBF,GACEI,CAAA,CAAQljB,CAAA,CAAU,cAAV,CAA2B,WAAnC,CAAA,CAAgD8jB,CAAhD,CAAuD,EAAvD,CAA2DhB,CAA3D,CAGA,CAFAN,CAAA,EAEA,CAAAO,CAAA,CAAmBL,CAJrB,CAoBIH,EAAJ,GACEA,CADF,CACoBO,CADpB,CAGA,OAAOhkB,EAvCA,CA8CP,MAAOyjB,EAAP,EAA0B7d,CAAAkf,KAAA5jB,QAAA,CAAsB,MAAtB,CAA6B,GAA7B,CA3DW,CAyEzClB,EAAAglB,MAAA,CAAaM,QAAQ,EAAG,CACtB,MAAO1B,EADe,CAzKyB,KA6K7CM,EAAqB,EA7KwB,CA8K7CqB,EAAgB,CAAA,CA9K6B,CAuL7CzB,EAAkB,IA8CtB9jB,EAAAwlB,YAAA,CAAmBC,QAAQ,CAACZ,CAAD,CAAW,CAEpC,GAAKU,CAAAA,CAAL,CAAoB,CAMlB,GAAIjR,CAAA8P,QAAJ,CAAsB/rB,CAAA,CAAOP,CAAP,CAAA+O,GAAA,CAAkB,UAAlB,CAA8B2c,CAA9B,CAEtBnrB,EAAA,CAAOP,CAAP,CAAA+O,GAAA,CAAkB,YAAlB;AAAgC2c,CAAhC,CAEA+B,EAAA,CAAgB,CAAA,CAVE,CAapBrB,CAAAlmB,KAAA,CAAwB6mB,CAAxB,CACA,OAAOA,EAhB6B,CAyBtC7kB,EAAA0lB,uBAAA,CAA8BC,QAAQ,EAAG,CACvCttB,CAAA,CAAOP,CAAP,CAAA8tB,IAAA,CAAmB,qBAAnB,CAA0CpC,CAA1C,CADuC,CASzCxjB,EAAA6lB,iBAAA,CAAwBlC,CAexB3jB,EAAA8lB,SAAA,CAAgBC,QAAQ,EAAG,CACzB,IAAIjB,EAAOC,CAAAhoB,KAAA,CAAiB,MAAjB,CACX,OAAO+nB,EAAA,CAAOA,CAAA5jB,QAAA,CAAa,wBAAb,CAAuC,EAAvC,CAAP,CAAoD,EAFlC,CAmB3BlB,EAAAgmB,MAAA,CAAaC,QAAQ,CAAChmB,CAAD,CAAKimB,CAAL,CAAY,CAC/B,IAAIC,CACJ/C,EAAA,EACA+C,EAAA,CAAYlL,CAAA,CAAW,QAAQ,EAAG,CAChC,OAAOqJ,CAAA,CAAgB6B,CAAhB,CACPhD,EAAA,CAA2BljB,CAA3B,CAFgC,CAAtB,CAGTimB,CAHS,EAGA,CAHA,CAIZ5B,EAAA,CAAgB6B,CAAhB,CAAA,CAA6B,CAAA,CAC7B,OAAOA,EARwB,CAsBjCnmB,EAAAgmB,MAAAI,OAAA,CAAoBC,QAAQ,CAACC,CAAD,CAAU,CACpC,MAAIhC,EAAA,CAAgBgC,CAAhB,CAAJ,EACE,OAAOhC,CAAA,CAAgBgC,CAAhB,CAGA,CAFPjC,CAAA,CAAaiC,CAAb,CAEO,CADPnD,CAAA,CAA2BvnB,CAA3B,CACO,CAAA,CAAA,CAJT,EAMO,CAAA,CAP6B,CA/TW,CA2UnD+V,QAASA,GAAgB,EAAG,CAC1B,IAAAmL,KAAA,CAAY,CAAC,SAAD,CAAY,MAAZ,CAAoB,UAApB,CAAgC,WAAhC,CACR,QAAQ,CAAC9H,CAAD,CAAUxB,CAAV,CAAgBc,CAAhB,CAA0BtC,CAA1B,CAAqC,CAC3C,MAAO,KAAIkR,EAAJ,CAAYlO,CAAZ,CAAqBhD,CAArB,CAAgCwB,CAAhC,CAAsCc,CAAtC,CADoC,CADrC,CADc,CAwF5BzC,QAASA,GAAqB,EAAG,CAE/B,IAAAiL,KAAA;AAAYC,QAAQ,EAAG,CAGrBwJ,QAASA,EAAY,CAACC,CAAD,CAAUvD,CAAV,CAAmB,CA0MtCwD,QAASA,EAAO,CAACC,CAAD,CAAQ,CAClBA,CAAJ,EAAaC,CAAb,GACOC,CAAL,CAEWA,CAFX,EAEuBF,CAFvB,GAGEE,CAHF,CAGaF,CAAAG,EAHb,EACED,CADF,CACaF,CAQb,CAHAI,CAAA,CAAKJ,CAAAG,EAAL,CAAcH,CAAAK,EAAd,CAGA,CAFAD,CAAA,CAAKJ,CAAL,CAAYC,CAAZ,CAEA,CADAA,CACA,CADWD,CACX,CAAAC,CAAAE,EAAA,CAAa,IAVf,CADsB,CAmBxBC,QAASA,EAAI,CAACE,CAAD,CAAYC,CAAZ,CAAuB,CAC9BD,CAAJ,EAAiBC,CAAjB,GACMD,CACJ,GADeA,CAAAD,EACf,CAD6BE,CAC7B,EAAIA,CAAJ,GAAeA,CAAAJ,EAAf,CAA6BG,CAA7B,CAFF,CADkC,CA5NpC,GAAIR,CAAJ,GAAeU,EAAf,CACE,KAAMnvB,EAAA,CAAO,eAAP,CAAA,CAAwB,KAAxB,CAAkEyuB,CAAlE,CAAN,CAFoC,IAKlCW,EAAO,CAL2B,CAMlCC,EAAQnsB,CAAA,CAAO,EAAP,CAAWgoB,CAAX,CAAoB,CAACoE,GAAIb,CAAL,CAApB,CAN0B,CAOlCrhB,EAAOzF,CAAA,EAP2B,CAQlC4nB,EAAYrE,CAAZqE,EAAuBrE,CAAAqE,SAAvBA,EAA4CC,MAAAC,UARV,CASlCC,EAAU/nB,CAAA,EATwB,CAUlCinB,EAAW,IAVuB,CAWlCC,EAAW,IAyCf,OAAOM,EAAA,CAAOV,CAAP,CAAP,CAAyB,CAoBvB9I,IAAKA,QAAQ,CAAC5kB,CAAD,CAAMY,CAAN,CAAa,CACxB,GAAI,CAAAyC,CAAA,CAAYzC,CAAZ,CAAJ,CAAA,CACA,GAAI4tB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQ3uB,CAAR,CAAX4uB,GAA4BD,CAAA,CAAQ3uB,CAAR,CAA5B4uB,CAA2C,CAAC5uB,IAAKA,CAAN,CAA3C4uB,CAEJjB,EAAA,CAAQiB,CAAR,CAH+B,CAM3B5uB,CAAN,GAAaqM,EAAb,EAAoBgiB,CAAA,EACpBhiB,EAAA,CAAKrM,CAAL,CAAA,CAAYY,CAERytB,EAAJ,CAAWG,CAAX,EACE,IAAAK,OAAA,CAAYf,CAAA9tB,IAAZ,CAGF,OAAOY,EAdP,CADwB,CApBH,CAiDvBsM,IAAKA,QAAQ,CAAClN,CAAD,CAAM,CACjB,GAAIwuB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQ3uB,CAAR,CAEf,IAAK4uB,CAAAA,CAAL,CAAe,MAEfjB,EAAA,CAAQiB,CAAR,CAL+B,CAQjC,MAAOviB,EAAA,CAAKrM,CAAL,CATU,CAjDI;AAwEvB6uB,OAAQA,QAAQ,CAAC7uB,CAAD,CAAM,CACpB,GAAIwuB,CAAJ,CAAeC,MAAAC,UAAf,CAAiC,CAC/B,IAAIE,EAAWD,CAAA,CAAQ3uB,CAAR,CAEf,IAAK4uB,CAAAA,CAAL,CAAe,MAEXA,EAAJ,EAAgBf,CAAhB,GAA0BA,CAA1B,CAAqCe,CAAAX,EAArC,CACIW,EAAJ,EAAgBd,CAAhB,GAA0BA,CAA1B,CAAqCc,CAAAb,EAArC,CACAC,EAAA,CAAKY,CAAAb,EAAL,CAAgBa,CAAAX,EAAhB,CAEA,QAAOU,CAAA,CAAQ3uB,CAAR,CATwB,CAY3BA,CAAN,GAAaqM,EAAb,GAEA,OAAOA,CAAA,CAAKrM,CAAL,CACP,CAAAquB,CAAA,EAHA,CAboB,CAxEC,CAoGvBS,UAAWA,QAAQ,EAAG,CACpBziB,CAAA,CAAOzF,CAAA,EACPynB,EAAA,CAAO,CACPM,EAAA,CAAU/nB,CAAA,EACVinB,EAAA,CAAWC,CAAX,CAAsB,IAJF,CApGC,CAqHvBiB,QAASA,QAAQ,EAAG,CAGlBJ,CAAA,CADAL,CACA,CAFAjiB,CAEA,CAFO,IAGP,QAAO+hB,CAAA,CAAOV,CAAP,CAJW,CArHG,CA6IvBsB,KAAMA,QAAQ,EAAG,CACf,MAAO7sB,EAAA,CAAO,EAAP,CAAWmsB,CAAX,CAAkB,CAACD,KAAMA,CAAP,CAAlB,CADQ,CA7IM,CApDa,CAFxC,IAAID,EAAS,EAiPbX,EAAAuB,KAAA,CAAoBC,QAAQ,EAAG,CAC7B,IAAID,EAAO,EACXnvB,EAAA,CAAQuuB,CAAR,CAAgB,QAAQ,CAACxH,CAAD,CAAQ8G,CAAR,CAAiB,CACvCsB,CAAA,CAAKtB,CAAL,CAAA,CAAgB9G,CAAAoI,KAAA,EADuB,CAAzC,CAGA,OAAOA,EALsB,CAmB/BvB,EAAAvgB,IAAA,CAAmBgiB,QAAQ,CAACxB,CAAD,CAAU,CACnC,MAAOU,EAAA,CAAOV,CAAP,CAD4B,CAKrC,OAAOD,EA1Qc,CAFQ,CA2TjC9R,QAASA,GAAsB,EAAG,CAChC,IAAAqI,KAAA,CAAY,CAAC,eAAD,CAAkB,QAAQ,CAAClL,CAAD,CAAgB,CACpD,MAAOA,EAAA,CAAc,WAAd,CAD6C,CAA1C,CADoB,CA+1BlCvG,QAASA,GAAgB,CAAC3G,CAAD,CAAWujB,CAAX,CAAkC,CAczDC,QAASA,EAAoB,CAACljB,CAAD;AAAQmjB,CAAR,CAAuBC,CAAvB,CAAqC,CAChE,IAAIC,EAAe,qCAAnB,CAEIC,EAAW5oB,CAAA,EAEf/G,EAAA,CAAQqM,CAAR,CAAe,QAAQ,CAACujB,CAAD,CAAaC,CAAb,CAAwB,CAC7C,GAAID,CAAJ,GAAkBE,EAAlB,CACEH,CAAA,CAASE,CAAT,CAAA,CAAsBC,CAAA,CAAaF,CAAb,CADxB,KAAA,CAIA,IAAIvpB,EAAQupB,CAAAvpB,MAAA,CAAiBqpB,CAAjB,CAEZ,IAAKrpB,CAAAA,CAAL,CACE,KAAM0pB,GAAA,CAAe,MAAf,CAGFP,CAHE,CAGaK,CAHb,CAGwBD,CAHxB,CAIDH,CAAA,CAAe,gCAAf,CACD,0BALE,CAAN,CAQFE,CAAA,CAASE,CAAT,CAAA,CAAsB,CACpBG,KAAM3pB,CAAA,CAAM,CAAN,CAAA,CAAS,CAAT,CADc,CAEpB4pB,WAAyB,GAAzBA,GAAY5pB,CAAA,CAAM,CAAN,CAFQ,CAGpB6pB,SAAuB,GAAvBA,GAAU7pB,CAAA,CAAM,CAAN,CAHU,CAIpB8pB,SAAU9pB,CAAA,CAAM,CAAN,CAAV8pB,EAAsBN,CAJF,CAMlBxpB,EAAA,CAAM,CAAN,CAAJ,GACEypB,CAAA,CAAaF,CAAb,CADF,CAC6BD,CAAA,CAASE,CAAT,CAD7B,CArBA,CAD6C,CAA/C,CA2BA,OAAOF,EAhCyD,CAwElES,QAASA,EAAwB,CAAChlB,CAAD,CAAO,CACtC,IAAIqC,EAASrC,CAAApE,OAAA,CAAY,CAAZ,CACb,IAAKyG,CAAAA,CAAL,EAAeA,CAAf,GAA0B9I,CAAA,CAAU8I,CAAV,CAA1B,CACE,KAAMsiB,GAAA,CAAe,QAAf,CAAsH3kB,CAAtH,CAAN,CAEF,GAAIA,CAAJ,GAAaA,CAAA4T,KAAA,EAAb,CACE,KAAM+Q,GAAA,CAAe,QAAf,CAEA3kB,CAFA,CAAN,CANoC,CAYxCilB,QAASA,EAAmB,CAACze,CAAD,CAAY,CACtC,IAAI0e,EAAU1e,CAAA0e,QAAVA,EAAgC1e,CAAAvD,WAAhCiiB,EAAwD1e,CAAAxG,KAEvD,EAAA5L,CAAA,CAAQ8wB,CAAR,CAAL,EAAyB7uB,CAAA,CAAS6uB,CAAT,CAAzB,EACEtwB,CAAA,CAAQswB,CAAR,CAAiB,QAAQ,CAACvvB,CAAD;AAAQZ,CAAR,CAAa,CACpC,IAAIkG,EAAQtF,CAAAsF,MAAA,CAAYkqB,CAAZ,CACDxvB,EAAAkJ,UAAAmB,CAAgB/E,CAAA,CAAM,CAAN,CAAA1G,OAAhByL,CACX,GAAWklB,CAAA,CAAQnwB,CAAR,CAAX,CAA0BkG,CAAA,CAAM,CAAN,CAA1B,CAAqClG,CAArC,CAHoC,CAAtC,CAOF,OAAOmwB,EAX+B,CAlGiB,IACrDE,EAAgB,EADqC,CAGrDC,EAA2B,qCAH0B,CAIrDC,EAAyB,6BAJ4B,CAKrDC,EAAuBrsB,EAAA,CAAQ,2BAAR,CAL8B,CAMrDisB,EAAwB,6BAN6B,CAWrDK,EAA4B,yBAXyB,CAYrDd,EAAe/oB,CAAA,EAmHnB,KAAA6K,UAAA,CAAiBif,QAASC,EAAiB,CAAC1lB,CAAD,CAAO2lB,CAAP,CAAyB,CAClE1hB,EAAA,CAAwBjE,CAAxB,CAA8B,WAA9B,CACI3L,EAAA,CAAS2L,CAAT,CAAJ,EACEglB,CAAA,CAAyBhlB,CAAzB,CA6BA,CA5BA4D,EAAA,CAAU+hB,CAAV,CAA4B,kBAA5B,CA4BA,CA3BKP,CAAAnwB,eAAA,CAA6B+K,CAA7B,CA2BL,GA1BEolB,CAAA,CAAcplB,CAAd,CACA,CADsB,EACtB,CAAAW,CAAAmE,QAAA,CAAiB9E,CAAjB,CApIO4lB,WAoIP,CAAgC,CAAC,WAAD,CAAc,mBAAd,CAC9B,QAAQ,CAACjJ,CAAD,CAAYxO,CAAZ,CAA+B,CACrC,IAAI0X,EAAa,EACjBjxB,EAAA,CAAQwwB,CAAA,CAAcplB,CAAd,CAAR,CAA6B,QAAQ,CAAC2lB,CAAD,CAAmBjsB,CAAnB,CAA0B,CAC7D,GAAI,CACF,IAAI8M,EAAYmW,CAAA5b,OAAA,CAAiB4kB,CAAjB,CACZ3wB,EAAA,CAAWwR,CAAX,CAAJ,CACEA,CADF,CACc,CAAEtF,QAASlJ,EAAA,CAAQwO,CAAR,CAAX,CADd;AAEYtF,CAAAsF,CAAAtF,QAFZ,EAEiCsF,CAAAuc,KAFjC,GAGEvc,CAAAtF,QAHF,CAGsBlJ,EAAA,CAAQwO,CAAAuc,KAAR,CAHtB,CAKAvc,EAAAsf,SAAA,CAAqBtf,CAAAsf,SAArB,EAA2C,CAC3Ctf,EAAA9M,MAAA,CAAkBA,CAClB8M,EAAAxG,KAAA,CAAiBwG,CAAAxG,KAAjB,EAAmCA,CACnCwG,EAAA0e,QAAA,CAAoBD,CAAA,CAAoBze,CAApB,CACpBA,EAAAuf,SAAA,CAAqBvf,CAAAuf,SAArB,EAA2C,IAC3Cvf,EAAAX,aAAA,CAAyB8f,CAAA9f,aACzBggB,EAAA5rB,KAAA,CAAgBuM,CAAhB,CAbE,CAcF,MAAOtI,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAfiD,CAA/D,CAmBA,OAAO2nB,EArB8B,CADT,CAAhC,CAyBF,EAAAT,CAAA,CAAcplB,CAAd,CAAA/F,KAAA,CAAyB0rB,CAAzB,CA9BF,EAgCE/wB,CAAA,CAAQoL,CAAR,CAAcvK,EAAA,CAAciwB,CAAd,CAAd,CAEF,OAAO,KApC2D,CA6HpE,KAAAjf,UAAA,CAAiBuf,QAA0B,CAAChmB,CAAD,CAAOkf,CAAP,CAAgB,CAGzDpa,QAASA,EAAO,CAAC6X,CAAD,CAAY,CAC1BsJ,QAASA,EAAc,CAAC/pB,CAAD,CAAK,CAC1B,MAAIlH,EAAA,CAAWkH,CAAX,CAAJ,EAAsB9H,CAAA,CAAQ8H,CAAR,CAAtB,CACS,QAAQ,CAACgqB,CAAD,CAAWC,CAAX,CAAmB,CAChC,MAAOxJ,EAAA5b,OAAA,CAAiB7E,CAAjB,CAAqB,IAArB,CAA2B,CAACkqB,SAAUF,CAAX,CAAqBG,OAAQF,CAA7B,CAA3B,CADyB,CADpC,CAKSjqB,CANiB,CAU5B,IAAIoqB,EAAapH,CAAAoH,SAAD,EAAsBpH,CAAAqH,YAAtB,CAAiDrH,CAAAoH,SAAjD,CAA4C,EAA5D,CACIE,EAAM,CACRvjB,WAAYA,CADJ,CAERwjB,aAAcC,EAAA,CAAwBxH,CAAAjc,WAAxB,CAAdwjB,EAA6DvH,CAAAuH,aAA7DA,EAAqF,OAF7E;AAGRH,SAAUL,CAAA,CAAeK,CAAf,CAHF,CAIRC,YAAaN,CAAA,CAAe/G,CAAAqH,YAAf,CAJL,CAKRI,WAAYzH,CAAAyH,WALJ,CAMR1lB,MAAO,EANC,CAOR2lB,iBAAkB1H,CAAAqF,SAAlBqC,EAAsC,EAP9B,CAQRb,SAAU,GARF,CASRb,QAAShG,CAAAgG,QATD,CAaVtwB,EAAA,CAAQsqB,CAAR,CAAiB,QAAQ,CAAC3iB,CAAD,CAAMxH,CAAN,CAAW,CACZ,GAAtB,GAAIA,CAAA6G,OAAA,CAAW,CAAX,CAAJ,GAA2B4qB,CAAA,CAAIzxB,CAAJ,CAA3B,CAAsCwH,CAAtC,CADkC,CAApC,CAIA,OAAOiqB,EA7BmB,CAF5B,IAAIvjB,EAAaic,CAAAjc,WAAbA,EAAmC,QAAQ,EAAG,EAyClDrO,EAAA,CAAQsqB,CAAR,CAAiB,QAAQ,CAAC3iB,CAAD,CAAMxH,CAAN,CAAW,CACZ,GAAtB,GAAIA,CAAA6G,OAAA,CAAW,CAAX,CAAJ,GACEkJ,CAAA,CAAQ/P,CAAR,CAEA,CAFewH,CAEf,CAAIvH,CAAA,CAAWiO,CAAX,CAAJ,GAA4BA,CAAA,CAAWlO,CAAX,CAA5B,CAA8CwH,CAA9C,CAHF,CADkC,CAApC,CAQAuI,EAAAsX,QAAA,CAAkB,CAAC,WAAD,CAElB,OAAO,KAAA5V,UAAA,CAAexG,CAAf,CAAqB8E,CAArB,CApDkD,CA4E3D,KAAA+hB,2BAAA,CAAkCC,QAAQ,CAACC,CAAD,CAAS,CACjD,MAAI1uB,EAAA,CAAU0uB,CAAV,CAAJ,EACE7C,CAAA2C,2BAAA,CAAiDE,CAAjD,CACO,CAAA,IAFT,EAIS7C,CAAA2C,2BAAA,EALwC,CA8BnD,KAAAG,4BAAA;AAAmCC,QAAQ,CAACF,CAAD,CAAS,CAClD,MAAI1uB,EAAA,CAAU0uB,CAAV,CAAJ,EACE7C,CAAA8C,4BAAA,CAAkDD,CAAlD,CACO,CAAA,IAFT,EAIS7C,CAAA8C,4BAAA,EALyC,CA+BpD,KAAIpmB,EAAmB,CAAA,CACvB,KAAAA,iBAAA,CAAwBsmB,QAAQ,CAACC,CAAD,CAAU,CACxC,MAAI9uB,EAAA,CAAU8uB,CAAV,CAAJ,EACEvmB,CACO,CADYumB,CACZ,CAAA,IAFT,EAIOvmB,CALiC,CAS1C,KAAIwmB,EAAM,EAqBV,KAAAC,aAAA,CAAoBC,QAAQ,CAAC3xB,CAAD,CAAQ,CAClC,MAAIyB,UAAA7C,OAAJ,EACE6yB,CACO,CADDzxB,CACC,CAAA,IAFT,EAIOyxB,CAL2B,CAQpC,KAAArO,KAAA,CAAY,CACF,WADE,CACW,cADX,CAC2B,mBAD3B,CACgD,kBADhD,CACoE,QADpE,CAEF,aAFE,CAEa,YAFb,CAE2B,MAF3B,CAEmC,UAFnC,CAE+C,eAF/C,CAGV,QAAQ,CAAC4D,CAAD,CAAclO,CAAd,CAA8BN,CAA9B,CAAmDwC,CAAnD,CAAuEhB,CAAvE,CACC5B,CADD,CACgB8B,CADhB,CAC8BM,CAD9B,CACsCpD,CADtC,CACkD3F,CADlD,CACiE,CAazEmgB,QAASA,EAAmB,EAAG,CAC7B,GAAI,CACF,GAAM,CAAA,EAAEF,EAAR,CAGE,KADAG,EACM,CADWhtB,IAAAA,EACX,CAAAmqB,EAAA,CAAe,SAAf,CAA8EyC,CAA9E,CAAN,CAGFvX,CAAA1O,OAAA,CAAkB,QAAQ,EAAG,CAE3B,IADA,IAAIsmB;AAAS,EAAb,CACSjyB,EAAI,CADb,CACgBY,EAAKoxB,CAAAjzB,OAArB,CAA4CiB,CAA5C,CAAgDY,CAAhD,CAAoD,EAAEZ,CAAtD,CACE,GAAI,CACFgyB,CAAA,CAAehyB,CAAf,CAAA,EADE,CAEF,MAAO0I,CAAP,CAAU,CACVupB,CAAAxtB,KAAA,CAAYiE,CAAZ,CADU,CAKdspB,CAAA,CAAiBhtB,IAAAA,EACjB,IAAIitB,CAAAlzB,OAAJ,CACE,KAAMkzB,EAAN,CAZyB,CAA7B,CAPE,CAAJ,OAsBU,CACRJ,EAAA,EADQ,CAvBmB,CA6B/BK,QAASA,GAAU,CAACpuB,CAAD,CAAUquB,CAAV,CAA4B,CAC7C,GAAIA,CAAJ,CAAsB,CACpB,IAAIryB,EAAOd,MAAAc,KAAA,CAAYqyB,CAAZ,CAAX,CACInyB,CADJ,CACO+e,CADP,CACUxf,CAELS,EAAA,CAAI,CAAT,KAAY+e,CAAZ,CAAgBjf,CAAAf,OAAhB,CAA6BiB,CAA7B,CAAiC+e,CAAjC,CAAoC/e,CAAA,EAApC,CACET,CACA,CADMO,CAAA,CAAKE,CAAL,CACN,CAAA,IAAA,CAAKT,CAAL,CAAA,CAAY4yB,CAAA,CAAiB5yB,CAAjB,CANM,CAAtB,IASE,KAAA6yB,MAAA,CAAa,EAGf,KAAAC,UAAA,CAAiBvuB,CAb4B,CA6O/CwuB,QAASA,EAAc,CAACxuB,CAAD,CAAUyrB,CAAV,CAAoBpvB,CAApB,CAA2B,CAIhDoyB,EAAA/U,UAAA,CAA8B,QAA9B,CAAyC+R,CAAzC,CAAoD,GAChDiD,EAAAA,CAAaD,EAAA3U,WAAA4U,WACjB,KAAIC,EAAYD,CAAA,CAAW,CAAX,CAEhBA,EAAAE,gBAAA,CAA2BD,CAAAjoB,KAA3B,CACAioB,EAAAtyB,MAAA,CAAkBA,CAClB2D,EAAA0uB,WAAAG,aAAA,CAAgCF,CAAhC,CAVgD,CAalDG,QAASA,EAAY,CAAChC,CAAD,CAAWiC,CAAX,CAAsB,CACzC,GAAI,CACFjC,CAAAjN,SAAA,CAAkBkP,CAAlB,CADE,CAEF,MAAOnqB,CAAP,CAAU,EAH6B,CA0D3CgD,QAASA,GAAO,CAAConB,CAAD,CAAgBC,CAAhB,CAA8BC,CAA9B,CAA2CC,CAA3C,CACIC,CADJ,CAC4B,CACpCJ,CAAN,WAA+Bh0B,EAA/B,GAGEg0B,CAHF,CAGkBh0B,CAAA,CAAOg0B,CAAP,CAHlB,CAUA,KAJA,IAAIK,EAAY,KAAhB,CAISnzB,EAAI,CAJb,CAIgB8O,EAAMgkB,CAAA/zB,OAAtB,CAA4CiB,CAA5C;AAAgD8O,CAAhD,CAAqD9O,CAAA,EAArD,CAA0D,CACxD,IAAIozB,EAAUN,CAAA,CAAc9yB,CAAd,CAEVozB,EAAAtqB,SAAJ,GAAyBC,EAAzB,EAA2CqqB,CAAAC,UAAA5tB,MAAA,CAAwB0tB,CAAxB,CAA3C,EACEpV,EAAA,CAAeqV,CAAf,CAAwBN,CAAA,CAAc9yB,CAAd,CAAxB,CAA2CzB,CAAAyI,SAAAkW,cAAA,CAA8B,MAA9B,CAA3C,CAJsD,CAQ1D,IAAIoW,EACIC,CAAA,CAAaT,CAAb,CAA4BC,CAA5B,CAA0CD,CAA1C,CACaE,CADb,CAC0BC,CAD1B,CAC2CC,CAD3C,CAERxnB,GAAA8nB,gBAAA,CAAwBV,CAAxB,CACA,KAAIW,EAAY,IAChB,OAAOC,SAAqB,CAACjoB,CAAD,CAAQkoB,CAAR,CAAwBjK,CAAxB,CAAiC,CAC3Dtb,EAAA,CAAU3C,CAAV,CAAiB,OAAjB,CAEIynB,EAAJ,EAA8BA,CAAAU,cAA9B,GAKEnoB,CALF,CAKUA,CAAAooB,QAAAC,KAAA,EALV,CAQApK,EAAA,CAAUA,CAAV,EAAqB,EAXsC,KAYvDqK,EAA0BrK,CAAAqK,wBAZ6B,CAazDC,EAAwBtK,CAAAsK,sBACxBC,EAAAA,CAAsBvK,CAAAuK,oBAMpBF,EAAJ,EAA+BA,CAAAG,kBAA/B,GACEH,CADF,CAC4BA,CAAAG,kBAD5B,CAIKT,EAAL,GAyCA,CAzCA,CAsCF,CADInwB,CACJ,CArCgD2wB,CAqChD,EArCgDA,CAoCpB,CAAc,CAAd,CAC5B,EAG6B,eAApB,GAAApwB,EAAA,CAAUP,CAAV,CAAA,EAAuCX,EAAAjD,KAAA,CAAc4D,CAAd,CAAAmC,MAAA,CAA0B,KAA1B,CAAvC,CAA0E,KAA1E,CAAkF,MAH3F,CACS,MAvCP,CAUE0uB,EAAA,CANgB,MAAlB,GAAIV,CAAJ,CAMc30B,CAAA,CACVs1B,EAAA,CAAaX,CAAb,CAAwB30B,CAAA,CAAO,OAAP,CAAA8J,OAAA,CAAuBkqB,CAAvB,CAAAjqB,KAAA,EAAxB,CADU,CANd;AASW8qB,CAAJ,CAGOpmB,EAAA9L,MAAA/B,KAAA,CAA2BozB,CAA3B,CAHP,CAKOA,CAGd,IAAIkB,CAAJ,CACE,IAASK,IAAAA,CAAT,GAA2BL,EAA3B,CACEG,CAAAvoB,KAAA,CAAe,GAAf,CAAqByoB,CAArB,CAAsC,YAAtC,CAAoDL,CAAA,CAAsBK,CAAtB,CAAAC,SAApD,CAIJ5oB,GAAA6oB,eAAA,CAAuBJ,CAAvB,CAAkC1oB,CAAlC,CAEIkoB,EAAJ,EAAoBA,CAAA,CAAeQ,CAAf,CAA0B1oB,CAA1B,CAChB6nB,EAAJ,EAAqBA,CAAA,CAAgB7nB,CAAhB,CAAuB0oB,CAAvB,CAAkCA,CAAlC,CAA6CJ,CAA7C,CACrB,OAAOI,EAvDoD,CAxBnB,CA4G5CZ,QAASA,EAAY,CAACiB,CAAD,CAAWzB,CAAX,CAAyB0B,CAAzB,CAAuCzB,CAAvC,CAAoDC,CAApD,CACGC,CADH,CAC2B,CA0C9CI,QAASA,EAAe,CAAC7nB,CAAD,CAAQ+oB,CAAR,CAAkBC,CAAlB,CAAgCV,CAAhC,CAAyD,CAAA,IAC/DW,CAD+D,CAClDpxB,CADkD,CAC5CqxB,CAD4C,CAChC30B,CADgC,CAC7BY,CAD6B,CACpBg0B,CADoB,CAE3EC,CAGJ,IAAIC,CAAJ,CAOE,IAHAD,CAGK,CAHgB31B,KAAJ,CADIs1B,CAAAz1B,OACJ,CAGZ,CAAAiB,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgB+0B,CAAAh2B,OAAhB,CAAgCiB,CAAhC,EAAmC,CAAnC,CACEg1B,CACA,CADMD,CAAA,CAAQ/0B,CAAR,CACN,CAAA60B,CAAA,CAAeG,CAAf,CAAA,CAAsBR,CAAA,CAASQ,CAAT,CAT1B,KAYEH,EAAA,CAAiBL,CAGdx0B,EAAA,CAAI,CAAT,KAAYY,CAAZ,CAAiBm0B,CAAAh2B,OAAjB,CAAiCiB,CAAjC,CAAqCY,CAArC,CAAA,CACE0C,CAIA,CAJOuxB,CAAA,CAAeE,CAAA,CAAQ/0B,CAAA,EAAR,CAAf,CAIP,CAHAi1B,CAGA,CAHaF,CAAA,CAAQ/0B,CAAA,EAAR,CAGb,CAFA00B,CAEA,CAFcK,CAAA,CAAQ/0B,CAAA,EAAR,CAEd,CAAIi1B,CAAJ,EACMA,CAAAxpB,MAAJ,EACEkpB,CACA,CADalpB,CAAAqoB,KAAA,EACb,CAAApoB,EAAA6oB,eAAA,CAAuBz1B,CAAA,CAAOwE,CAAP,CAAvB,CAAqCqxB,CAArC,CAFF,EAIEA,CAJF,CAIelpB,CAiBf,CAbEmpB,CAaF,CAdIK,CAAAC,wBAAJ,CAC2BC,EAAA,CACrB1pB,CADqB,CACdwpB,CAAA9D,WADc,CACS4C,CADT,CAD3B,CAIYqB,CAAAH,CAAAG,sBAAL,EAAyCrB,CAAzC,CACoBA,CADpB,CAGKA,CAAAA,CAAL,EAAgChB,CAAhC,CACoBoC,EAAA,CAAwB1pB,CAAxB,CAA+BsnB,CAA/B,CADpB,CAIoB,IAG3B,CAAAkC,CAAA,CAAWP,CAAX,CAAwBC,CAAxB,CAAoCrxB,CAApC,CAA0CmxB,CAA1C,CAAwDG,CAAxD,CAtBF,EAwBWF,CAxBX,EAyBEA,CAAA,CAAYjpB,CAAZ;AAAmBnI,CAAAqa,WAAnB,CAAoC3Y,IAAAA,EAApC,CAA+C+uB,CAA/C,CAlD2E,CAtCjF,IAJ8C,IAC1CgB,EAAU,EADgC,CAE1CM,CAF0C,CAEnChF,CAFmC,CAEX1S,CAFW,CAEc2X,CAFd,CAE2BR,CAF3B,CAIrC90B,EAAI,CAAb,CAAgBA,CAAhB,CAAoBw0B,CAAAz1B,OAApB,CAAqCiB,CAAA,EAArC,CAA0C,CACxCq1B,CAAA,CAAQ,IAAInD,EAGZ7B,EAAA,CAAakF,EAAA,CAAkBf,CAAA,CAASx0B,CAAT,CAAlB,CAA+B,EAA/B,CAAmCq1B,CAAnC,CAAgD,CAAN,GAAAr1B,CAAA,CAAUgzB,CAAV,CAAwBhuB,IAAAA,EAAlE,CACmBiuB,CADnB,CAQb,EALAgC,CAKA,CALc5E,CAAAtxB,OAAD,CACPy2B,EAAA,CAAsBnF,CAAtB,CAAkCmE,CAAA,CAASx0B,CAAT,CAAlC,CAA+Cq1B,CAA/C,CAAsDtC,CAAtD,CAAoE0B,CAApE,CACwB,IADxB,CAC8B,EAD9B,CACkC,EADlC,CACsCvB,CADtC,CADO,CAGP,IAEN,GAAkB+B,CAAAxpB,MAAlB,EACEC,EAAA8nB,gBAAA,CAAwB6B,CAAAhD,UAAxB,CAGFqC,EAAA,CAAeO,CAAD,EAAeA,CAAAQ,SAAf,EACE,EAAA9X,CAAA,CAAa6W,CAAA,CAASx0B,CAAT,CAAA2d,WAAb,CADF,EAEC5e,CAAA4e,CAAA5e,OAFD,CAGR,IAHQ,CAIRw0B,CAAA,CAAa5V,CAAb,CACGsX,CAAA,EACEA,CAAAC,wBADF,EACwC,CAACD,CAAAG,sBADzC,GAEOH,CAAA9D,WAFP,CAEgC4B,CAHnC,CAKN,IAAIkC,CAAJ,EAAkBP,CAAlB,CACEK,CAAAtwB,KAAA,CAAazE,CAAb,CAAgBi1B,CAAhB,CAA4BP,CAA5B,CAEA,CADAY,CACA,CADc,CAAA,CACd,CAAAR,CAAA,CAAkBA,CAAlB,EAAqCG,CAIvC/B,EAAA,CAAyB,IAhCe,CAoC1C,MAAOoC,EAAA,CAAchC,CAAd,CAAgC,IAxCO,CAkGhD6B,QAASA,GAAuB,CAAC1pB,CAAD,CAAQsnB,CAAR,CAAsB2C,CAAtB,CAAiD,CAC/EC,QAASA,EAAiB,CAACC,CAAD,CAAmBC,CAAnB,CAA4BC,CAA5B,CAAyC7B,CAAzC,CAA8D8B,CAA9D,CAA+E,CAElGH,CAAL,GACEA,CACA,CADmBnqB,CAAAqoB,KAAA,CAAW,CAAA,CAAX,CAAkBiC,CAAlB,CACnB,CAAAH,CAAAI,cAAA,CAAiC,CAAA,CAFnC,CAKA,OAAOjD,EAAA,CAAa6C,CAAb,CAA+BC,CAA/B,CAAwC,CAC7C9B,wBAAyB2B,CADoB;AAE7C1B,sBAAuB8B,CAFsB,CAG7C7B,oBAAqBA,CAHwB,CAAxC,CAPgG,CAgBzG,IAAIgC,EAAaN,CAAAO,QAAbD,CAAyC9vB,CAAA,EAA7C,CACSgwB,CAAT,KAASA,CAAT,GAAqBpD,EAAAmD,QAArB,CAEID,CAAA,CAAWE,CAAX,CAAA,CADEpD,CAAAmD,QAAA,CAAqBC,CAArB,CAAJ,CACyBhB,EAAA,CAAwB1pB,CAAxB,CAA+BsnB,CAAAmD,QAAA,CAAqBC,CAArB,CAA/B,CAA+DT,CAA/D,CADzB,CAGyB,IAI3B,OAAOC,EA1BwE,CAuCjFJ,QAASA,GAAiB,CAACjyB,CAAD,CAAO+sB,CAAP,CAAmBgF,CAAnB,CAA0BrC,CAA1B,CAAuCC,CAAvC,CAAwD,CAAA,IAE5EmD,EAAWf,CAAAjD,MAFiE,CAG5E3sB,CAGJ,QALenC,CAAAwF,SAKf,EACE,KA57MgB4T,CA47MhB,CAEE2Z,EAAA,CAAahG,CAAb,CACIiG,EAAA,CAAmBzyB,EAAA,CAAUP,CAAV,CAAnB,CADJ,CACyC,GADzC,CAC8C0vB,CAD9C,CAC2DC,CAD3D,CAIA,KANF,IAMWzvB,CANX,CAM0CrD,CAN1C,CAMiDo2B,CANjD,CAM2DC,EAASlzB,CAAAkvB,WANpE,CAOW1xB,EAAI,CAPf,CAOkBC,EAAKy1B,CAALz1B,EAAey1B,CAAAz3B,OAD/B,CAC8C+B,CAD9C,CACkDC,CADlD,CACsDD,CAAA,EADtD,CAC2D,CACzD,IAAI21B,EAAgB,CAAA,CAApB,CACIC,EAAc,CAAA,CAElBlzB,EAAA,CAAOgzB,CAAA,CAAO11B,CAAP,CACP0J,EAAA,CAAOhH,CAAAgH,KACPrK,EAAA,CAAQie,CAAA,CAAK5a,CAAArD,MAAL,CAGRw2B,EAAA,CAAaL,EAAA,CAAmB9rB,CAAnB,CACb,IAAI+rB,CAAJ,CAAeK,EAAAvzB,KAAA,CAAqBszB,CAArB,CAAf,CACEnsB,CAAA,CAAOA,CAAA7C,QAAA,CAAakvB,EAAb,CAA4B,EAA5B,CAAA/K,OAAA,CACG,CADH,CAAAnkB,QAAA,CACc,OADd,CACuB,QAAQ,CAAClC,CAAD,CAAQoH,CAAR,CAAgB,CAClD,MAAOA,EAAA0P,YAAA,EAD2C,CAD/C,CAOT,EADIua,CACJ,CADwBH,CAAAlxB,MAAA,CAAiBsxB,EAAjB,CACxB,GAAyBC,CAAA,CAAwBF,CAAA,CAAkB,CAAlB,CAAxB,CAAzB,GACEL,CAEA,CAFgBjsB,CAEhB,CADAksB,CACA,CADclsB,CAAAshB,OAAA,CAAY,CAAZ,CAAethB,CAAAzL,OAAf,CAA6B,CAA7B,CACd,CADgD,KAChD,CAAAyL,CAAA;AAAOA,CAAAshB,OAAA,CAAY,CAAZ,CAAethB,CAAAzL,OAAf,CAA6B,CAA7B,CAHT,CAMAk4B,EAAA,CAAQX,EAAA,CAAmB9rB,CAAAuC,YAAA,EAAnB,CACRqpB,EAAA,CAASa,CAAT,CAAA,CAAkBzsB,CAClB,IAAI+rB,CAAJ,EAAiB,CAAAlB,CAAA51B,eAAA,CAAqBw3B,CAArB,CAAjB,CACI5B,CAAA,CAAM4B,CAAN,CACA,CADe92B,CACf,CAAIwhB,EAAA,CAAmBre,CAAnB,CAAyB2zB,CAAzB,CAAJ,GACE5B,CAAA,CAAM4B,CAAN,CADF,CACiB,CAAA,CADjB,CAIJC,GAAA,CAA4B5zB,CAA5B,CAAkC+sB,CAAlC,CAA8ClwB,CAA9C,CAAqD82B,CAArD,CAA4DV,CAA5D,CACAF,GAAA,CAAahG,CAAb,CAAyB4G,CAAzB,CAAgC,GAAhC,CAAqCjE,CAArC,CAAkDC,CAAlD,CAAmEwD,CAAnE,CACcC,CADd,CAjCyD,CAsC3D7D,CAAA,CAAYvvB,CAAAuvB,UACRhyB,EAAA,CAASgyB,CAAT,CAAJ,GAEIA,CAFJ,CAEgBA,CAAAsE,QAFhB,CAIA,IAAIt4B,CAAA,CAASg0B,CAAT,CAAJ,EAAyC,EAAzC,GAA2BA,CAA3B,CACE,IAAA,CAAOptB,CAAP,CAAeqqB,CAAA1S,KAAA,CAA4ByV,CAA5B,CAAf,CAAA,CACEoE,CAIA,CAJQX,EAAA,CAAmB7wB,CAAA,CAAM,CAAN,CAAnB,CAIR,CAHI4wB,EAAA,CAAahG,CAAb,CAAyB4G,CAAzB,CAAgC,GAAhC,CAAqCjE,CAArC,CAAkDC,CAAlD,CAGJ,GAFEoC,CAAA,CAAM4B,CAAN,CAEF,CAFiB7Y,CAAA,CAAK3Y,CAAA,CAAM,CAAN,CAAL,CAEjB,EAAAotB,CAAA,CAAYA,CAAA/G,OAAA,CAAiBrmB,CAAAvB,MAAjB,CAA+BuB,CAAA,CAAM,CAAN,CAAA1G,OAA/B,CAGhB,MACF,MAAKgK,EAAL,CACE,GAAa,EAAb,GAAI+d,EAAJ,CAEE,IAAA,CAAOxjB,CAAA2a,WAAP,EAA0B3a,CAAA6L,YAA1B,EAA8C7L,CAAA6L,YAAArG,SAA9C,GAA4EC,EAA5E,CAAA,CACEzF,CAAA+vB,UACA,EADkC/vB,CAAA6L,YAAAkkB,UAClC,CAAA/vB,CAAA2a,WAAAkD,YAAA,CAA4B7d,CAAA6L,YAA5B,CAGJioB,GAAA,CAA4B/G,CAA5B,CAAwC/sB,CAAA+vB,UAAxC,CACA,MACF,MA//MgBgE,CA+/MhB,CACE,GAAI,CAEF,GADA5xB,CACA,CADQoqB,CAAAzS,KAAA,CAA8B9Z,CAAA+vB,UAA9B,CACR,CACE4D,CACA;AADQX,EAAA,CAAmB7wB,CAAA,CAAM,CAAN,CAAnB,CACR,CAAI4wB,EAAA,CAAahG,CAAb,CAAyB4G,CAAzB,CAAgC,GAAhC,CAAqCjE,CAArC,CAAkDC,CAAlD,CAAJ,GACEoC,CAAA,CAAM4B,CAAN,CADF,CACiB7Y,CAAA,CAAK3Y,CAAA,CAAM,CAAN,CAAL,CADjB,CAJA,CAQF,MAAOiD,CAAP,CAAU,EAhFhB,CAwFA2nB,CAAAtwB,KAAA,CAAgBu3B,CAAhB,CACA,OAAOjH,EA/FyE,CA0GlFkH,QAASA,GAAS,CAACj0B,CAAD,CAAOk0B,CAAP,CAAkBC,CAAlB,CAA2B,CAC3C,IAAIzoB,EAAQ,EAAZ,CACI0oB,EAAQ,CACZ,IAAIF,CAAJ,EAAiBl0B,CAAAmH,aAAjB,EAAsCnH,CAAAmH,aAAA,CAAkB+sB,CAAlB,CAAtC,EACE,EAAG,CACD,GAAKl0B,CAAAA,CAAL,CACE,KAAM6rB,GAAA,CAAe,SAAf,CAEIqI,CAFJ,CAEeC,CAFf,CAAN,CAriNY/a,CAyiNd,EAAIpZ,CAAAwF,SAAJ,GACMxF,CAAAmH,aAAA,CAAkB+sB,CAAlB,CACJ,EADkCE,CAAA,EAClC,CAAIp0B,CAAAmH,aAAA,CAAkBgtB,CAAlB,CAAJ,EAAgCC,CAAA,EAFlC,CAIA1oB,EAAAvK,KAAA,CAAWnB,CAAX,CACAA,EAAA,CAAOA,CAAA6L,YAXN,CAAH,MAYiB,CAZjB,CAYSuoB,CAZT,CADF,KAeE1oB,EAAAvK,KAAA,CAAWnB,CAAX,CAGF,OAAOxE,EAAA,CAAOkQ,CAAP,CArBoC,CAgC7C2oB,QAASA,EAA0B,CAACC,CAAD,CAASJ,CAAT,CAAoBC,CAApB,CAA6B,CAC9D,MAAOI,SAA4B,CAACpsB,CAAD,CAAQ3H,CAAR,CAAiBuxB,CAAjB,CAAwBS,CAAxB,CAAqC/C,CAArC,CAAmD,CACpFjvB,CAAA,CAAUyzB,EAAA,CAAUzzB,CAAA,CAAQ,CAAR,CAAV,CAAsB0zB,CAAtB,CAAiCC,CAAjC,CACV,OAAOG,EAAA,CAAOnsB,CAAP,CAAc3H,CAAd,CAAuBuxB,CAAvB,CAA8BS,CAA9B,CAA2C/C,CAA3C,CAF6E,CADxB,CAkBhE+E,QAASA,GAAoB,CAACC,CAAD,CAAQjF,CAAR,CAAuBC,CAAvB,CAAqCC,CAArC,CAAkDC,CAAlD,CAAmEC,CAAnE,CAA2F,CACtH,IAAI8E,CAEJ,OAAID,EAAJ,CACSrsB,EAAA,CAAQonB,CAAR,CAAuBC,CAAvB,CAAqCC,CAArC,CAAkDC,CAAlD,CAAmEC,CAAnE,CADT,CAGO+E,QAAwB,EAAG,CAC3BD,CAAL,GACEA,CAIA,CAJWtsB,EAAA,CAAQonB,CAAR,CAAuBC,CAAvB,CAAqCC,CAArC,CAAkDC,CAAlD,CAAmEC,CAAnE,CAIX,CAAAJ,CAAA,CAAgBC,CAAhB,CAA+BG,CAA/B,CAAwD,IAL1D,CAOA,OAAO8E,EAAAnxB,MAAA,CAAe,IAAf;AAAqBjF,SAArB,CARyB,CANoF,CAyCxH4zB,QAASA,GAAqB,CAACnF,CAAD,CAAa6H,CAAb,CAA0BC,CAA1B,CAAyCpF,CAAzC,CACCqF,CADD,CACeC,CADf,CACyCC,CADzC,CACqDC,CADrD,CAECrF,CAFD,CAEyB,CAmTrDsF,QAASA,EAAU,CAACC,CAAD,CAAMC,CAAN,CAAYlB,CAAZ,CAAuBC,CAAvB,CAAgC,CACjD,GAAIgB,CAAJ,CAAS,CACHjB,CAAJ,GAAeiB,CAAf,CAAqBd,CAAA,CAA2Bc,CAA3B,CAAgCjB,CAAhC,CAA2CC,CAA3C,CAArB,CACAgB,EAAA/I,QAAA,CAAc1e,CAAA0e,QACd+I,EAAA7J,cAAA,CAAoBA,CACpB,IAAI+J,CAAJ,GAAiC3nB,CAAjC,EAA8CA,CAAA4nB,eAA9C,CACEH,CAAA,CAAMI,EAAA,CAAmBJ,CAAnB,CAAwB,CAACjrB,aAAc,CAAA,CAAf,CAAxB,CAER8qB,EAAA7zB,KAAA,CAAgBg0B,CAAhB,CAPO,CAST,GAAIC,CAAJ,CAAU,CACJlB,CAAJ,GAAekB,CAAf,CAAsBf,CAAA,CAA2Be,CAA3B,CAAiClB,CAAjC,CAA4CC,CAA5C,CAAtB,CACAiB,EAAAhJ,QAAA,CAAe1e,CAAA0e,QACfgJ,EAAA9J,cAAA,CAAqBA,CACrB,IAAI+J,CAAJ,GAAiC3nB,CAAjC,EAA8CA,CAAA4nB,eAA9C,CACEF,CAAA,CAAOG,EAAA,CAAmBH,CAAnB,CAAyB,CAAClrB,aAAc,CAAA,CAAf,CAAzB,CAET+qB,EAAA9zB,KAAA,CAAiBi0B,CAAjB,CAPQ,CAVuC,CAqBnDzD,QAASA,EAAU,CAACP,CAAD,CAAcjpB,CAAd,CAAqBqtB,CAArB,CAA+BrE,CAA/B,CAA6CkB,CAA7C,CAAgE,CAqJjFoD,QAASA,EAA0B,CAACttB,CAAD,CAAQutB,CAAR,CAAuB/E,CAAvB,CAA4CkC,CAA5C,CAAsD,CACvF,IAAInC,CAECjxB,GAAA,CAAQ0I,CAAR,CAAL,GACE0qB,CAGA,CAHWlC,CAGX,CAFAA,CAEA,CAFsB+E,CAEtB,CADAA,CACA,CADgBvtB,CAChB,CAAAA,CAAA,CAAQzG,IAAAA,EAJV,CAOIi0B,EAAJ,GACEjF,CADF,CAC0BkF,CAD1B,CAGKjF,EAAL,GACEA,CADF,CACwBgF,CAAA,CAAgCrI,CAAA1uB,OAAA,EAAhC,CAAoD0uB,CAD5E,CAGA,IAAIuF,CAAJ,CAAc,CAKZ,IAAIgD,EAAmBxD,CAAAO,QAAA,CAA0BC,CAA1B,CACvB,IAAIgD,CAAJ,CACE,MAAOA,EAAA,CAAiB1tB,CAAjB,CAAwButB,CAAxB,CAAuChF,CAAvC,CAA8DC,CAA9D,CAAmFmF,CAAnF,CACF,IAAIx2B,CAAA,CAAYu2B,CAAZ,CAAJ,CACL,KAAMhK,GAAA,CAAe,QAAf,CAGLgH,CAHK,CAGK3tB,EAAA,CAAYooB,CAAZ,CAHL,CAAN;AATU,CAAd,IAeE,OAAO+E,EAAA,CAAkBlqB,CAAlB,CAAyButB,CAAzB,CAAwChF,CAAxC,CAA+DC,CAA/D,CAAoFmF,CAApF,CA/B8E,CArJR,IAC7Ep5B,CAD6E,CAC1EY,CAD0E,CACtEg3B,CADsE,CAC9DpqB,CAD8D,CAChD6rB,CADgD,CAC/BH,CAD+B,CACXnG,CADW,CACGnC,CAGhFsH,EAAJ,GAAoBY,CAApB,EACEzD,CACA,CADQ8C,CACR,CAAAvH,CAAA,CAAWuH,CAAA9F,UAFb,GAIEzB,CACA,CADW9xB,CAAA,CAAOg6B,CAAP,CACX,CAAAzD,CAAA,CAAQ,IAAInD,EAAJ,CAAetB,CAAf,CAAyBuH,CAAzB,CALV,CAQAkB,EAAA,CAAkB5tB,CACdktB,EAAJ,CACEnrB,CADF,CACiB/B,CAAAqoB,KAAA,CAAW,CAAA,CAAX,CADjB,CAEWwF,CAFX,GAGED,CAHF,CAGoB5tB,CAAAooB,QAHpB,CAMI8B,EAAJ,GAGE5C,CAGA,CAHegG,CAGf,CAFAhG,CAAAmB,kBAEA,CAFiCyB,CAEjC,CAAA5C,CAAAwG,aAAA,CAA4BC,QAAQ,CAACrD,CAAD,CAAW,CAC7C,MAAO,CAAE,CAAAR,CAAAO,QAAA,CAA0BC,CAA1B,CADoC,CANjD,CAWIsD,EAAJ,GACEP,CADF,CACuBQ,EAAA,CAAiB9I,CAAjB,CAA2ByE,CAA3B,CAAkCtC,CAAlC,CAAgD0G,CAAhD,CAAsEjsB,CAAtE,CAAoF/B,CAApF,CAA2FktB,CAA3F,CADvB,CAIIA,EAAJ,GAEEjtB,EAAA6oB,eAAA,CAAuB3D,CAAvB,CAAiCpjB,CAAjC,CAA+C,CAAA,CAA/C,CAAqD,EAAEmsB,CAAF,GAAwBA,CAAxB,GAA8ChB,CAA9C,EACjDgB,CADiD,GAC3BhB,CAAAiB,oBAD2B,EAArD,CAQA,CANAluB,EAAA8nB,gBAAA,CAAwB5C,CAAxB,CAAkC,CAAA,CAAlC,CAMA,CALApjB,CAAAqsB,kBAKA,CAJIlB,CAAAkB,kBAIJ,CAHAC,CAGA,CAHmBC,EAAA,CAA4BtuB,CAA5B,CAAmC4pB,CAAnC,CAA0C7nB,CAA1C,CACWA,CAAAqsB,kBADX,CAEWlB,CAFX,CAGnB,CAAImB,CAAAE,cAAJ,EACExsB,CAAAysB,IAAA,CAAiB,UAAjB,CAA6BH,CAAAE,cAA7B,CAXJ,CAgBA,KAASxvB,CAAT,GAAiB0uB,EAAjB,CAAqC,CAC/BgB,CAAAA,CAAsBT,CAAA,CAAqBjvB,CAArB,CACtBiD,EAAAA,CAAayrB,CAAA,CAAmB1uB,CAAnB,CACjB,KAAIukB,GAAWmL,CAAAC,WAAA/I,iBAGb3jB;CAAA2sB,YAAA,CADE3sB,CAAA4sB,WAAJ,EAA6BtL,EAA7B,CAEIgL,EAAA,CAA4BV,CAA5B,CAA6ChE,CAA7C,CAAoD5nB,CAAA6mB,SAApD,CAAyEvF,EAAzE,CAAmFmL,CAAnF,CAFJ,CAI2B,EAG3B,KAAII,EAAmB7sB,CAAA,EACnB6sB,EAAJ,GAAyB7sB,CAAA6mB,SAAzB,GAGE7mB,CAAA6mB,SAGA,CAHsBgG,CAGtB,CAFA1J,CAAAhlB,KAAA,CAAc,GAAd,CAAoBsuB,CAAA1vB,KAApB,CAA+C,YAA/C,CAA6D8vB,CAA7D,CAEA,CADA7sB,CAAA2sB,YAAAJ,cACA,EADwCvsB,CAAA2sB,YAAAJ,cAAA,EACxC,CAAAvsB,CAAA2sB,YAAA,CACEL,EAAA,CAA4BV,CAA5B,CAA6ChE,CAA7C,CAAoD5nB,CAAA6mB,SAApD,CAAyEvF,EAAzE,CAAmFmL,CAAnF,CAPJ,CAbmC,CAyBrC96B,CAAA,CAAQq6B,CAAR,CAA8B,QAAQ,CAACS,CAAD,CAAsB1vB,CAAtB,CAA4B,CAChE,IAAIklB,EAAUwK,CAAAxK,QACVwK,EAAA9I,iBAAJ,EAA6C,CAAAxyB,CAAA,CAAQ8wB,CAAR,CAA7C,EAAiE7uB,CAAA,CAAS6uB,CAAT,CAAjE,EACEhuB,CAAA,CAAOw3B,CAAA,CAAmB1uB,CAAnB,CAAA8pB,SAAP,CAA0CiG,EAAA,CAAe/vB,CAAf,CAAqBklB,CAArB,CAA8BkB,CAA9B,CAAwCsI,CAAxC,CAA1C,CAH8D,CAAlE,CAQA95B,EAAA,CAAQ85B,CAAR,CAA4B,QAAQ,CAACzrB,CAAD,CAAa,CAC/C,IAAI+sB,EAAqB/sB,CAAA6mB,SACzB,IAAI90B,CAAA,CAAWg7B,CAAAC,WAAX,CAAJ,CACE,GAAI,CACFD,CAAAC,WAAA,CAA8BhtB,CAAA2sB,YAAAM,eAA9B,CADE,CAEF,MAAOhyB,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAId,GAAIlJ,CAAA,CAAWg7B,CAAAG,QAAX,CAAJ,CACE,GAAI,CACFH,CAAAG,QAAA,EADE,CAEF,MAAOjyB,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAIVlJ,CAAA,CAAWg7B,CAAAI,WAAX,CAAJ;AACEvB,CAAAY,IAAA,CAAoB,UAApB,CAAgCY,QAA0B,EAAG,CAC3DL,CAAAI,WAAA,EAD2D,CAA7D,CAjB6C,CAAjD,CAwBK56B,EAAA,CAAI,CAAT,KAAYY,CAAZ,CAAiB03B,CAAAv5B,OAAjB,CAAoCiB,CAApC,CAAwCY,CAAxC,CAA4CZ,CAAA,EAA5C,CACE43B,CACA,CADSU,CAAA,CAAWt4B,CAAX,CACT,CAAA86B,EAAA,CAAalD,CAAb,CACIA,CAAApqB,aAAA,CAAsBA,CAAtB,CAAqC/B,CADzC,CAEImlB,CAFJ,CAGIyE,CAHJ,CAIIuC,CAAAlI,QAJJ,EAIsB6K,EAAA,CAAe3C,CAAAhJ,cAAf,CAAqCgJ,CAAAlI,QAArC,CAAqDkB,CAArD,CAA+DsI,CAA/D,CAJtB,CAKInG,CALJ,CAYF,KAAIqG,EAAe3tB,CACfktB,EAAJ,GAAiCA,CAAA7H,SAAjC,EAA+G,IAA/G,GAAsE6H,CAAA5H,YAAtE,IACEqI,CADF,CACiB5rB,CADjB,CAGAknB,EAAA,EAAeA,CAAA,CAAY0E,CAAZ,CAA0BN,CAAAnb,WAA1B,CAA+C3Y,IAAAA,EAA/C,CAA0D2wB,CAA1D,CAGf,KAAK31B,CAAL,CAASu4B,CAAAx5B,OAAT,CAA8B,CAA9B,CAAsC,CAAtC,EAAiCiB,CAAjC,CAAyCA,CAAA,EAAzC,CACE43B,CACA,CADSW,CAAA,CAAYv4B,CAAZ,CACT,CAAA86B,EAAA,CAAalD,CAAb,CACIA,CAAApqB,aAAA,CAAsBA,CAAtB,CAAqC/B,CADzC,CAEImlB,CAFJ,CAGIyE,CAHJ,CAIIuC,CAAAlI,QAJJ,EAIsB6K,EAAA,CAAe3C,CAAAhJ,cAAf,CAAqCgJ,CAAAlI,QAArC,CAAqDkB,CAArD,CAA+DsI,CAA/D,CAJtB,CAKInG,CALJ,CAUF3zB,EAAA,CAAQ85B,CAAR,CAA4B,QAAQ,CAACzrB,CAAD,CAAa,CAC3C+sB,CAAAA,CAAqB/sB,CAAA6mB,SACrB90B,EAAA,CAAWg7B,CAAAO,UAAX,CAAJ,EACEP,CAAAO,UAAA,EAH6C,CAAjD,CA5IiF,CAvUnF7H,CAAA,CAAyBA,CAAzB,EAAmD,EAuBnD,KAxBqD,IAGjD8H,EAAmB,CAAChN,MAAAC,UAH6B,CAIjDqL,EAAoBpG,CAAAoG,kBAJ6B,CAKjDG,EAAuBvG,CAAAuG,qBAL0B,CAMjDd,EAA2BzF,CAAAyF,yBANsB;AAOjDgB,EAAoBzG,CAAAyG,kBAP6B,CAQjDsB,EAA4B/H,CAAA+H,0BARqB,CASjDC,EAAyB,CAAA,CATwB,CAUjDC,EAAc,CAAA,CAVmC,CAWjDlC,EAAgC/F,CAAA+F,8BAXiB,CAYjDmC,EAAejD,CAAA9F,UAAf+I,CAAyCt8B,CAAA,CAAOo5B,CAAP,CAZQ,CAajDlnB,CAbiD,CAcjD4d,CAdiD,CAejDyM,CAfiD,CAiBjDC,EAAoBvI,CAjB6B,CAkBjD6E,CAlBiD,CAmBjD2D,GAAiC,CAAA,CAnBgB,CAoBjDC,GAAqC,CAAA,CApBY,CAqBjDC,CArBiD,CAwB5Cz7B,EAAI,CAxBwC,CAwBrCY,EAAKyvB,CAAAtxB,OAArB,CAAwCiB,CAAxC,CAA4CY,CAA5C,CAAgDZ,CAAA,EAAhD,CAAqD,CACnDgR,CAAA,CAAYqf,CAAA,CAAWrwB,CAAX,CACZ,KAAIw3B,EAAYxmB,CAAA0qB,QAAhB,CACIjE,GAAUzmB,CAAA2qB,MAGVnE,EAAJ,GACE4D,CADF,CACiB7D,EAAA,CAAUW,CAAV,CAAuBV,CAAvB,CAAkCC,EAAlC,CADjB,CAGA4D,EAAA,CAAYr2B,IAAAA,EAEZ,IAAIg2B,CAAJ,CAAuBhqB,CAAAsf,SAAvB,CACE,KAGF,IAAImL,CAAJ,CAAqBzqB,CAAAvF,MAArB,CAIOuF,CAAA+f,YAeL,GAdMlwB,CAAA,CAAS46B,CAAT,CAAJ,EAGEG,CAAA,CAAkB,oBAAlB,CAAwCjD,CAAxC,EAAoEW,CAApE,CACkBtoB,CADlB,CAC6BoqB,CAD7B,CAEA,CAAAzC,CAAA,CAA2B3nB,CAL7B,EASE4qB,CAAA,CAAkB,oBAAlB,CAAwCjD,CAAxC,CAAkE3nB,CAAlE,CACkBoqB,CADlB,CAKJ,EAAA9B,CAAA,CAAoBA,CAApB,EAAyCtoB,CAG3C4d,EAAA,CAAgB5d,CAAAxG,KAQhB,IAAK+wB,CAAAA,EAAL,GAAyCvqB,CAAArJ,QAAzC,GAA+DqJ,CAAA+f,YAA/D,EAAwF/f,CAAA8f,SAAxF,GACQ9f,CAAAmgB,WADR,EACiC0K,CAAA7qB,CAAA6qB,MADjC,EACoD,CAG5C,IAASC,CAAT,CAAyB97B,CAAzB,CAA6B,CAA7B,CAAgC+7B,EAAhC,CAAqD1L,CAAA,CAAWyL,CAAA,EAAX,CAArD,CAAA,CACI,GAAKC,EAAA5K,WAAL,EAAuC0K,CAAAE,EAAAF,MAAvC,EACQE,EAAAp0B,QADR;CACuCo0B,EAAAhL,YADvC,EACyEgL,EAAAjL,SADzE,EACwG,CACpG0K,EAAA,CAAqC,CAAA,CACrC,MAFoG,CAM5GD,EAAA,CAAiC,CAAA,CAXW,CAc/CxK,CAAA/f,CAAA+f,YAAL,EAA8B/f,CAAAvD,WAA9B,GACEguB,CAIA,CAJiBzqB,CAAAvD,WAIjB,CAHAgsB,CAGA,CAHuBA,CAGvB,EAH+CtzB,CAAA,EAG/C,CAFAy1B,CAAA,CAAkB,GAAlB,CAAwBhN,CAAxB,CAAwC,cAAxC,CACI6K,CAAA,CAAqB7K,CAArB,CADJ,CACyC5d,CADzC,CACoDoqB,CADpD,CAEA,CAAA3B,CAAA,CAAqB7K,CAArB,CAAA,CAAsC5d,CALxC,CAQA,IAAIyqB,CAAJ,CAAqBzqB,CAAAmgB,WAArB,CAWE,GAVA+J,CAUI,CAVqB,CAAA,CAUrB,CALClqB,CAAA6qB,MAKD,GAJFD,CAAA,CAAkB,cAAlB,CAAkCX,CAAlC,CAA6DjqB,CAA7D,CAAwEoqB,CAAxE,CACA,CAAAH,CAAA,CAA4BjqB,CAG1B,EAAkB,SAAlB,EAAAyqB,CAAJ,CACExC,CAmBA,CAnBgC,CAAA,CAmBhC,CAlBA+B,CAkBA,CAlBmBhqB,CAAAsf,SAkBnB,CAjBA+K,CAiBA,CAjBYD,CAiBZ,CAhBAA,CAgBA,CAhBejD,CAAA9F,UAgBf,CAfIvzB,CAAA,CAAO4M,EAAAswB,gBAAA,CAAwBpN,CAAxB,CAAuCuJ,CAAA,CAAcvJ,CAAd,CAAvC,CAAP,CAeJ,CAdAsJ,CAcA,CAdckD,CAAA,CAAa,CAAb,CAcd,CAbAa,EAAA,CAAY7D,CAAZ,CA7+OHz2B,EAAAjC,KAAA,CA6+OuC27B,CA7+OvC,CAA+B,CAA/B,CA6+OG,CAAgDnD,CAAhD,CAaA,CAFAmD,CAAA,CAAU,CAAV,CAAAa,aAEA,CAF4Bb,CAAA,CAAU,CAAV,CAAApd,WAE5B,CAAAqd,CAAA,CAAoBxD,EAAA,CAAqB0D,EAArB,CAAyDH,CAAzD,CAAoEtI,CAApE,CAAkFiI,CAAlF,CACQmB,CADR,EAC4BA,CAAA3xB,KAD5B,CACmD,CAQzCywB,0BAA2BA,CARc,CADnD,CApBtB,KA+BO,CAEL,IAAImB,EAAQj2B,CAAA,EAEZk1B,EAAA,CAAYv8B,CAAA,CAAO2f,EAAA,CAAYyZ,CAAZ,CAAP,CAAAmE,SAAA,EAEZ,IAAIx7B,CAAA,CAAS46B,CAAT,CAAJ,CAA8B,CAI5BJ,CAAA,CAAY,EAEZ,KAAIiB,EAAUn2B,CAAA,EAAd,CACIo2B,GAAcp2B,CAAA,EAGlB/G,EAAA,CAAQq8B,CAAR,CAAwB,QAAQ,CAACe,CAAD,CAAkBrG,CAAlB,CAA4B,CAE1D,IAAI7G,EAA0C,GAA1CA;AAAYkN,CAAAp2B,OAAA,CAAuB,CAAvB,CAChBo2B,EAAA,CAAkBlN,CAAA,CAAWkN,CAAAnzB,UAAA,CAA0B,CAA1B,CAAX,CAA0CmzB,CAE5DF,EAAA,CAAQE,CAAR,CAAA,CAA2BrG,CAK3BiG,EAAA,CAAMjG,CAAN,CAAA,CAAkB,IAIlBoG,GAAA,CAAYpG,CAAZ,CAAA,CAAwB7G,CAdkC,CAA5D,CAkBAlwB,EAAA,CAAQg8B,CAAAiB,SAAA,EAAR,CAAiC,QAAQ,CAAC/4B,CAAD,CAAO,CAC9C,IAAI6yB,EAAWmG,CAAA,CAAQhG,EAAA,CAAmBzyB,EAAA,CAAUP,CAAV,CAAnB,CAAR,CACX6yB,EAAJ,EACEoG,EAAA,CAAYpG,CAAZ,CAEA,CAFwB,CAAA,CAExB,CADAiG,CAAA,CAAMjG,CAAN,CACA,CADkBiG,CAAA,CAAMjG,CAAN,CAClB,EADqC,EACrC,CAAAiG,CAAA,CAAMjG,CAAN,CAAA1xB,KAAA,CAAqBnB,CAArB,CAHF,EAKE+3B,CAAA52B,KAAA,CAAenB,CAAf,CAP4C,CAAhD,CAYAlE,EAAA,CAAQm9B,EAAR,CAAqB,QAAQ,CAACE,CAAD,CAAStG,CAAT,CAAmB,CAC9C,GAAKsG,CAAAA,CAAL,CACE,KAAMtN,GAAA,CAAe,SAAf,CAA8EgH,CAA9E,CAAN,CAF4C,CAAhD,CAMA,KAASA,IAAAA,CAAT,GAAqBiG,EAArB,CACMA,CAAA,CAAMjG,CAAN,CAAJ,GAEEiG,CAAA,CAAMjG,CAAN,CAFF,CAEoB2B,EAAA,CAAqB0D,EAArB,CAAyDY,CAAA,CAAMjG,CAAN,CAAzD,CAA0EpD,CAA1E,CAFpB,CA/C0B,CAsD9BqI,CAAA3yB,MAAA,EACA6yB,EAAA,CAAoBxD,EAAA,CAAqB0D,EAArB,CAAyDH,CAAzD,CAAoEtI,CAApE,CAAkF/tB,IAAAA,EAAlF,CAChBA,IAAAA,EADgB,CACL,CAAE4uB,cAAe5iB,CAAA4nB,eAAfhF,EAA2C5iB,CAAA0rB,WAA7C,CADK,CAEpBpB,EAAApF,QAAA,CAA4BkG,CA/DvB,CAmET,GAAIprB,CAAA8f,SAAJ,CAWE,GAVAqK,CAUIxzB,CAVU,CAAA,CAUVA,CATJi0B,CAAA,CAAkB,UAAlB,CAA8BjC,CAA9B,CAAiD3oB,CAAjD,CAA4DoqB,CAA5D,CASIzzB,CARJgyB,CAQIhyB,CARgBqJ,CAQhBrJ,CANJ8zB,CAMI9zB,CANcnI,CAAA,CAAWwR,CAAA8f,SAAX,CAAD,CACX9f,CAAA8f,SAAA,CAAmBsK,CAAnB,CAAiCjD,CAAjC,CADW,CAEXnnB,CAAA8f,SAIFnpB,CAFJ8zB,CAEI9zB,CAFag1B,EAAA,CAAoBlB,CAApB,CAEb9zB,CAAAqJ,CAAArJ,QAAJ,CAAuB,CACrBw0B,CAAA,CAAmBnrB,CAIjBqqB,EAAA,CAn/LJre,EAAA3Z,KAAA,CAg/LuBo4B,CAh/LvB,CAg/LE,CAGcmB,EAAA,CAAexI,EAAA,CAAapjB,CAAA6rB,kBAAb,CAA0Cze,CAAA,CAAKqd,CAAL,CAA1C,CAAf,CAHd;AACc,EAIdvD,EAAA,CAAcmD,CAAA,CAAU,CAAV,CAEd,IAAwB,CAAxB,EAAIA,CAAAt8B,OAAJ,EAz1NY2d,CAy1NZ,GAA6Bwb,CAAApvB,SAA7B,CACE,KAAMqmB,GAAA,CAAe,OAAf,CAEFP,CAFE,CAEa,EAFb,CAAN,CAKFqN,EAAA,CAAY7D,CAAZ,CAA0BgD,CAA1B,CAAwClD,CAAxC,CAEI4E,EAAAA,CAAmB,CAAC1K,MAAO,EAAR,CAOnB2K,EAAAA,CAAqBxH,EAAA,CAAkB2C,CAAlB,CAA+B,EAA/B,CAAmC4E,CAAnC,CACzB,KAAIE,GAAwB3M,CAAAjsB,OAAA,CAAkBpE,CAAlB,CAAsB,CAAtB,CAAyBqwB,CAAAtxB,OAAzB,EAA8CiB,CAA9C,CAAkD,CAAlD,EAE5B,EAAI24B,CAAJ,EAAgCW,CAAhC,GAIE2D,EAAA,CAAmBF,CAAnB,CAAuCpE,CAAvC,CAAiEW,CAAjE,CAEFjJ,EAAA,CAAaA,CAAAhqB,OAAA,CAAkB02B,CAAlB,CAAA12B,OAAA,CAA6C22B,EAA7C,CACbE,EAAA,CAAwB/E,CAAxB,CAAuC2E,CAAvC,CAEAl8B,EAAA,CAAKyvB,CAAAtxB,OApCgB,CAAvB,IAsCEq8B,EAAAvyB,KAAA,CAAkB4yB,CAAlB,CAIJ,IAAIzqB,CAAA+f,YAAJ,CACEoK,CAkBA,CAlBc,CAAA,CAkBd,CAjBAS,CAAA,CAAkB,UAAlB,CAA8BjC,CAA9B,CAAiD3oB,CAAjD,CAA4DoqB,CAA5D,CAiBA,CAhBAzB,CAgBA,CAhBoB3oB,CAgBpB,CAdIA,CAAArJ,QAcJ,GAbEw0B,CAaF,CAbqBnrB,CAarB,EATAikB,CASA,CATakI,CAAA,CAAmB9M,CAAAjsB,OAAA,CAAkBpE,CAAlB,CAAqBqwB,CAAAtxB,OAArB,CAAyCiB,CAAzC,CAAnB,CAAgEo7B,CAAhE,CAETjD,CAFS,CAEMC,CAFN,CAEoB8C,CAFpB,EAE8CI,CAF9C,CAEiEhD,CAFjE,CAE6EC,CAF7E,CAE0F,CACjGkB,qBAAsBA,CAD2E,CAEjGH,kBAAoBA,CAApBA,GAA0CtoB,CAA1CsoB,EAAwDA,CAFyC,CAGjGX,yBAA0BA,CAHuE,CAIjGgB,kBAAmBA,CAJ8E,CAKjGsB,0BAA2BA,CALsE,CAF1F,CASb,CAAAr6B,CAAA,CAAKyvB,CAAAtxB,OAnBP,KAoBO,IAAIiS,CAAAtF,QAAJ,CACL,GAAI,CACFksB,CAAA,CAAS5mB,CAAAtF,QAAA,CAAkB0vB,CAAlB,CAAgCjD,CAAhC,CAA+CmD,CAA/C,CACT,KAAIh8B;AAAU0R,CAAA4oB,oBAAVt6B,EAA2C0R,CAC3CxR,EAAA,CAAWo4B,CAAX,CAAJ,CACEY,CAAA,CAAW,IAAX,CAAiBhyB,EAAA,CAAKlH,CAAL,CAAcs4B,CAAd,CAAjB,CAAwCJ,CAAxC,CAAmDC,EAAnD,CADF,CAEWG,CAFX,EAGEY,CAAA,CAAWhyB,EAAA,CAAKlH,CAAL,CAAcs4B,CAAAa,IAAd,CAAX,CAAsCjyB,EAAA,CAAKlH,CAAL,CAAcs4B,CAAAc,KAAd,CAAtC,CAAkElB,CAAlE,CAA6EC,EAA7E,CANA,CAQF,MAAO/uB,EAAP,CAAU,CACViQ,CAAA,CAAkBjQ,EAAlB,CAAqBF,EAAA,CAAY4yB,CAAZ,CAArB,CADU,CAKVpqB,CAAAykB,SAAJ,GACER,CAAAQ,SACA,CADsB,CAAA,CACtB,CAAAuF,CAAA,CAAmBoC,IAAAC,IAAA,CAASrC,CAAT,CAA2BhqB,CAAAsf,SAA3B,CAFrB,CAxQmD,CA+QrD2E,CAAAxpB,MAAA,CAAmB6tB,CAAnB,EAAoE,CAAA,CAApE,GAAwCA,CAAA7tB,MACxCwpB,EAAAC,wBAAA,CAAqCgG,CACrCjG,EAAAG,sBAAA,CAAmC+F,CACnClG,EAAA9D,WAAA,CAAwBmK,CAExBpI,EAAA+F,8BAAA,CAAuDA,CAGvD,OAAOhE,EA/S8C,CAkgBvDsF,QAASA,GAAc,CAAC3L,CAAD,CAAgBc,CAAhB,CAAyBkB,CAAzB,CAAmCsI,CAAnC,CAAuD,CAC5E,IAAI/4B,CAEJ,IAAItB,CAAA,CAAS6wB,CAAT,CAAJ,CAAuB,CACrB,IAAIjqB,EAAQiqB,CAAAjqB,MAAA,CAAckqB,CAAd,CACRnlB,EAAAA,CAAOklB,CAAArmB,UAAA,CAAkB5D,CAAA,CAAM,CAAN,CAAA1G,OAAlB,CACX,KAAIu+B,EAAc73B,CAAA,CAAM,CAAN,CAAd63B,EAA0B73B,CAAA,CAAM,CAAN,CAA9B,CACI6pB,EAAwB,GAAxBA,GAAW7pB,CAAA,CAAM,CAAN,CAGK,KAApB,GAAI63B,CAAJ,CACE1M,CADF,CACaA,CAAA1uB,OAAA,EADb,CAME/B,CANF,EAKEA,CALF,CAKU+4B,CALV,EAKgCA,CAAA,CAAmB1uB,CAAnB,CALhC,GAMmBrK,CAAAm0B,SAGnB,IAAKn0B,CAAAA,CAAL,CAAY,CACV,IAAIo9B,EAAW,GAAXA,CAAiB/yB,CAAjB+yB,CAAwB,YAC5Bp9B,EAAA,CAAQm9B,CAAA,CAAc1M,CAAAljB,cAAA,CAAuB6vB,CAAvB,CAAd;AAAiD3M,CAAAhlB,KAAA,CAAc2xB,CAAd,CAF/C,CAKZ,GAAKp9B,CAAAA,CAAL,EAAemvB,CAAAA,CAAf,CACE,KAAMH,GAAA,CAAe,OAAf,CAEF3kB,CAFE,CAEIokB,CAFJ,CAAN,CAtBmB,CAAvB,IA0BO,IAAIhwB,CAAA,CAAQ8wB,CAAR,CAAJ,CAEL,IADAvvB,CACgBS,CADR,EACQA,CAAPZ,CAAOY,CAAH,CAAGA,CAAAA,CAAAA,CAAK8uB,CAAA3wB,OAArB,CAAqCiB,CAArC,CAAyCY,CAAzC,CAA6CZ,CAAA,EAA7C,CACEG,CAAA,CAAMH,CAAN,CAAA,CAAWu6B,EAAA,CAAe3L,CAAf,CAA8Bc,CAAA,CAAQ1vB,CAAR,CAA9B,CAA0C4wB,CAA1C,CAAoDsI,CAApD,CAHR,KAKIr4B,EAAA,CAAS6uB,CAAT,CAAJ,GACLvvB,CACA,CADQ,EACR,CAAAf,CAAA,CAAQswB,CAAR,CAAiB,QAAQ,CAACjiB,CAAD,CAAa+vB,CAAb,CAAuB,CAC9Cr9B,CAAA,CAAMq9B,CAAN,CAAA,CAAkBjD,EAAA,CAAe3L,CAAf,CAA8BnhB,CAA9B,CAA0CmjB,CAA1C,CAAoDsI,CAApD,CAD4B,CAAhD,CAFK,CAOP,OAAO/4B,EAAP,EAAgB,IAzC4D,CA4C9Eu5B,QAASA,GAAgB,CAAC9I,CAAD,CAAWyE,CAAX,CAAkBtC,CAAlB,CAAgC0G,CAAhC,CAAsDjsB,CAAtD,CAAoE/B,CAApE,CAA2EktB,CAA3E,CAAqG,CAC5H,IAAIO,EAAqB/yB,CAAA,EAAzB,CACSs3B,CAAT,KAASA,CAAT,GAA0BhE,EAA1B,CAAgD,CAC9C,IAAIzoB,EAAYyoB,CAAA,CAAqBgE,CAArB,CAAhB,CACI9W,EAAS,CACX+W,OAAQ1sB,CAAA,GAAc2nB,CAAd,EAA0C3nB,CAAA4nB,eAA1C,CAAqEprB,CAArE,CAAoF/B,CADjF,CAEXmlB,SAAUA,CAFC,CAGXC,OAAQwE,CAHG,CAIXsI,YAAa5K,CAJF,CADb,CAQItlB,EAAauD,CAAAvD,WACC,IAAlB,EAAIA,CAAJ,GACEA,CADF,CACe4nB,CAAA,CAAMrkB,CAAAxG,KAAN,CADf,CAIIgwB,EAAAA,CAAqBjiB,CAAA,CAAY9K,CAAZ,CAAwBkZ,CAAxB,CAAgC,CAAA,CAAhC,CAAsC3V,CAAAigB,aAAtC,CAMzBiI,EAAA,CAAmBloB,CAAAxG,KAAnB,CAAA,CAAqCgwB,CACrC5J,EAAAhlB,KAAA,CAAc,GAAd,CAAoBoF,CAAAxG,KAApB,CAAqC,YAArC,CAAmDgwB,CAAAlG,SAAnD,CArB8C,CAuBhD,MAAO4E,EAzBqH,CAkC9H+D,QAASA,GAAkB,CAAC5M,CAAD,CAAa7iB,CAAb,CAA2BowB,CAA3B,CAAqC,CAC9D,IAD8D,IACrD98B,EAAI,CADiD,CAC9CC,EAAKsvB,CAAAtxB,OAArB,CAAwC+B,CAAxC,CAA4CC,CAA5C,CAAgDD,CAAA,EAAhD,CACEuvB,CAAA,CAAWvvB,CAAX,CAAA,CAAgBmB,EAAA,CAAQouB,CAAA,CAAWvvB,CAAX,CAAR;AAAuB,CAAC83B,eAAgBprB,CAAjB,CAA+BkvB,WAAYkB,CAA3C,CAAvB,CAF4C,CAoBhEvH,QAASA,GAAY,CAACwH,CAAD,CAAcrzB,CAAd,CAAoB6B,CAApB,CAA8B2mB,CAA9B,CAA2CC,CAA3C,CAA4D6K,CAA5D,CACCC,CADD,CACc,CACjC,GAAIvzB,CAAJ,GAAayoB,CAAb,CAA8B,MAAO,KACjCxtB,EAAAA,CAAQ,IACZ,IAAImqB,CAAAnwB,eAAA,CAA6B+K,CAA7B,CAAJ,CAAwC,CAAA,IAC7BwG,CAAWqf,EAAAA,CAAalJ,CAAA1a,IAAA,CAAcjC,CAAd,CAnzD1B4lB,WAmzD0B,CAAjC,KADsC,IAElCpwB,EAAI,CAF8B,CAE3BY,EAAKyvB,CAAAtxB,OADhB,CACmCiB,CADnC,CACuCY,CADvC,CAC2CZ,CAAA,EAD3C,CAEE,GAAI,CAEF,GADAgR,CACI,CADQqf,CAAA,CAAWrwB,CAAX,CACR,EAAC4C,CAAA,CAAYowB,CAAZ,CAAD,EAA6BA,CAA7B,CAA2ChiB,CAAAsf,SAA3C,GAC0C,EAD1C,EACCtf,CAAAuf,SAAApsB,QAAA,CAA2BkI,CAA3B,CADL,CACiD,CAC3CyxB,CAAJ,GACE9sB,CADF,CACc/O,EAAA,CAAQ+O,CAAR,CAAmB,CAAC0qB,QAASoC,CAAV,CAAyBnC,MAAOoC,CAAhC,CAAnB,CADd,CAGA,IAAK5D,CAAAnpB,CAAAmpB,WAAL,CAA2B,CACVnpB,IAAAA,EAAAA,CAAAA,CACYA,EAAAA,CADZA,CACuBxG,EAAAwG,CAAAxG,KADvBwG,CA7wDvB+d,EAAW,CACbvhB,aAAc,IADD,CAEb4jB,iBAAkB,IAFL,CAIXvwB,EAAA,CAASmQ,CAAAvF,MAAT,CAAJ,GACqC,CAAA,CAAnC,GAAIuF,CAAAogB,iBAAJ,EACErC,CAAAqC,iBAEA,CAF4BzC,CAAA,CAAqB3d,CAAAvF,MAArB,CACqBmjB,CADrB,CACoC,CAAA,CADpC,CAE5B,CAAAG,CAAAvhB,aAAA,CAAwB,EAH1B,EAKEuhB,CAAAvhB,aALF,CAK0BmhB,CAAA,CAAqB3d,CAAAvF,MAArB,CACqBmjB,CADrB,CACoC,CAAA,CADpC,CAN5B,CAUI/tB,EAAA,CAASmQ,CAAAogB,iBAAT,CAAJ,GACErC,CAAAqC,iBADF;AAEMzC,CAAA,CAAqB3d,CAAAogB,iBAArB,CAAiDxC,CAAjD,CAAgE,CAAA,CAAhE,CAFN,CAIA,IAAI/tB,CAAA,CAASkuB,CAAAqC,iBAAT,CAAJ,CAAyC,CACvC,IAAI3jB,EAAauD,CAAAvD,WAAjB,CACIwjB,EAAejgB,CAAAigB,aACnB,IAAKxjB,CAAAA,CAAL,CAEE,KAAM0hB,GAAA,CAAe,QAAf,CAEAP,CAFA,CAAN,CAGK,GAAK,CAAAsC,EAAA,CAAwBzjB,CAAxB,CAAoCwjB,CAApC,CAAL,CAEL,KAAM9B,GAAA,CAAe,SAAf,CAEAP,CAFA,CAAN,CAVqC,CA2vD7B,IAAIG,EAAW/d,CAAAmpB,WAAXpL,CA5uDTA,CA8uDSluB,EAAA,CAASkuB,CAAAvhB,aAAT,CAAJ,GACEwD,CAAA6oB,kBADF,CACgC9K,CAAAvhB,aADhC,CAHyB,CAO3BqwB,CAAAp5B,KAAA,CAAiBuM,CAAjB,CACAvL,EAAA,CAAQuL,CAZuC,CAH/C,CAiBF,MAAOtI,CAAP,CAAU,CAAEiQ,CAAA,CAAkBjQ,CAAlB,CAAF,CApBwB,CAuBxC,MAAOjD,EA1B0B,CAsCnCuxB,QAASA,EAAuB,CAACxsB,CAAD,CAAO,CACrC,GAAIolB,CAAAnwB,eAAA,CAA6B+K,CAA7B,CAAJ,CACE,IADsC,IAClB6lB,EAAalJ,CAAA1a,IAAA,CAAcjC,CAAd,CAv1D1B4lB,WAu1D0B,CADK,CAElCpwB,EAAI,CAF8B,CAE3BY,EAAKyvB,CAAAtxB,OADhB,CACmCiB,CADnC,CACuCY,CADvC,CAC2CZ,CAAA,EAD3C,CAGE,GADAgR,CACIgtB,CADQ3N,CAAA,CAAWrwB,CAAX,CACRg+B,CAAAhtB,CAAAgtB,aAAJ,CACE,MAAO,CAAA,CAIb,OAAO,CAAA,CAV8B,CAqBvCd,QAASA,EAAuB,CAAC38B,CAAD,CAAMS,CAAN,CAAW,CAAA,IACrCi9B,EAAUj9B,CAAAoxB,MAD2B,CAErC8L,EAAU39B,CAAA6xB,MAIdhzB,EAAA,CAAQmB,CAAR,CAAa,QAAQ,CAACJ,CAAD,CAAQZ,CAAR,CAAa,CACX,GAArB,EAAIA,CAAA6G,OAAA,CAAW,CAAX,CAAJ,GACMpF,CAAA,CAAIzB,CAAJ,CAGJ,EAHgByB,CAAA,CAAIzB,CAAJ,CAGhB,GAH6BY,CAG7B,GAFEA,CAEF,GAFoB,OAAR;AAAAZ,CAAA,CAAkB,GAAlB,CAAwB,GAEpC,EAF2CyB,CAAA,CAAIzB,CAAJ,CAE3C,EAAAgB,CAAA49B,KAAA,CAAS5+B,CAAT,CAAcY,CAAd,CAAqB,CAAA,CAArB,CAA2B89B,CAAA,CAAQ1+B,CAAR,CAA3B,CAJF,CADgC,CAAlC,CAUAH,EAAA,CAAQ4B,CAAR,CAAa,QAAQ,CAACb,CAAD,CAAQZ,CAAR,CAAa,CAK3BgB,CAAAd,eAAA,CAAmBF,CAAnB,CAAL,EAAkD,GAAlD,GAAgCA,CAAA6G,OAAA,CAAW,CAAX,CAAhC,GACE7F,CAAA,CAAIhB,CAAJ,CAEA,CAFWY,CAEX,CAAY,OAAZ,GAAIZ,CAAJ,EAA+B,OAA/B,GAAuBA,CAAvB,GACE2+B,CAAA,CAAQ3+B,CAAR,CADF,CACiB0+B,CAAA,CAAQ1+B,CAAR,CADjB,CAHF,CALgC,CAAlC,CAhByC,CAgC3C49B,QAASA,EAAkB,CAAC9M,CAAD,CAAa+K,CAAb,CAA2BzK,CAA3B,CACvB8D,CADuB,CACT6G,CADS,CACUhD,CADV,CACsBC,CADtB,CACmCrF,CADnC,CAC2D,CAAA,IAChFkL,EAAY,EADoE,CAEhFC,CAFgF,CAGhFC,CAHgF,CAIhFC,EAA4BnD,CAAA,CAAa,CAAb,CAJoD,CAKhFoD,EAAqBnO,CAAA5J,MAAA,EAL2D,CAMhFgY,EAAuBx8B,EAAA,CAAQu8B,CAAR,CAA4B,CACjDzN,YAAa,IADoC,CAC9BI,WAAY,IADkB,CACZxpB,QAAS,IADG,CACGiyB,oBAAqB4E,CADxB,CAA5B,CANyD,CAShFzN,EAAevxB,CAAA,CAAWg/B,CAAAzN,YAAX,CAAD,CACRyN,CAAAzN,YAAA,CAA+BqK,CAA/B,CAA6CzK,CAA7C,CADQ,CAER6N,CAAAzN,YAX0E,CAYhF8L,EAAoB2B,CAAA3B,kBAExBzB,EAAA3yB,MAAA,EAEA0S,EAAA,CAAiB4V,CAAjB,CAAA2N,KAAA,CACQ,QAAQ,CAACC,CAAD,CAAU,CAAA,IAClBzG,CADkB,CACyBtD,CAE/C+J,EAAA,CAAUhC,EAAA,CAAoBgC,CAApB,CAEV,IAAIH,CAAA72B,QAAJ,CAAgC,CAI5B0zB,CAAA,CAr/MJre,EAAA3Z,KAAA,CAk/MuBs7B,CAl/MvB,CAk/ME,CAGc/B,EAAA,CAAexI,EAAA,CAAayI,CAAb,CAAgCze,CAAA,CAAKugB,CAAL,CAAhC,CAAf,CAHd,CACc,EAIdzG,EAAA,CAAcmD,CAAA,CAAU,CAAV,CAEd,IAAwB,CAAxB,EAAIA,CAAAt8B,OAAJ,EA31OY2d,CA21OZ,GAA6Bwb,CAAApvB,SAA7B,CACE,KAAMqmB,GAAA,CAAe,OAAf;AAEFqP,CAAAh0B,KAFE,CAEuBumB,CAFvB,CAAN,CAKF6N,CAAA,CAAoB,CAACxM,MAAO,EAAR,CACpB6J,GAAA,CAAYxH,CAAZ,CAA0B2G,CAA1B,CAAwClD,CAAxC,CACA,KAAI6E,EAAqBxH,EAAA,CAAkB2C,CAAlB,CAA+B,EAA/B,CAAmC0G,CAAnC,CAErB/9B,EAAA,CAAS29B,CAAA/yB,MAAT,CAAJ,EAGEwxB,EAAA,CAAmBF,CAAnB,CAAuC,CAAA,CAAvC,CAEF1M,EAAA,CAAa0M,CAAA12B,OAAA,CAA0BgqB,CAA1B,CACb6M,EAAA,CAAwBvM,CAAxB,CAAgCiO,CAAhC,CAxB8B,CAAhC,IA0BE1G,EACA,CADcqG,CACd,CAAAnD,CAAAvyB,KAAA,CAAkB81B,CAAlB,CAGFtO,EAAAnlB,QAAA,CAAmBuzB,CAAnB,CAEAJ,EAAA,CAA0B7I,EAAA,CAAsBnF,CAAtB,CAAkC6H,CAAlC,CAA+CvH,CAA/C,CACtB2K,CADsB,CACHF,CADG,CACWoD,CADX,CAC+BlG,CAD/B,CAC2CC,CAD3C,CAEtBrF,CAFsB,CAG1B9zB,EAAA,CAAQq1B,CAAR,CAAsB,QAAQ,CAACnxB,CAAD,CAAOtD,CAAP,CAAU,CAClCsD,CAAJ,EAAY40B,CAAZ,GACEzD,CAAA,CAAaz0B,CAAb,CADF,CACoBo7B,CAAA,CAAa,CAAb,CADpB,CADsC,CAAxC,CAOA,KAFAkD,CAEA,CAF2B/K,CAAA,CAAa6H,CAAA,CAAa,CAAb,CAAAzd,WAAb,CAAyC2d,CAAzC,CAE3B,CAAO8C,CAAAr/B,OAAP,CAAA,CAAyB,CACnB0M,CAAAA,CAAQ2yB,CAAA3X,MAAA,EACRoY,EAAAA,CAAyBT,CAAA3X,MAAA,EAFN,KAGnBqY,EAAkBV,CAAA3X,MAAA,EAHC,CAInBkP,EAAoByI,CAAA3X,MAAA,EAJD,CAKnBqS,EAAWsC,CAAA,CAAa,CAAb,CAEf,IAAI2D,CAAAtzB,CAAAszB,YAAJ,CAAA,CAEA,GAAIF,CAAJ,GAA+BN,CAA/B,CAA0D,CACxD,IAAIS,EAAaH,CAAAhM,UAEXK,EAAA+F,8BAAN,EACIuF,CAAA72B,QADJ,GAGEmxB,CAHF,CAGara,EAAA,CAAYyZ,CAAZ,CAHb,CAKA+D,GAAA,CAAY6C,CAAZ,CAA6BhgC,CAAA,CAAO+/B,CAAP,CAA7B,CAA6D/F,CAA7D,CAGAlG,EAAA,CAAa9zB,CAAA,CAAOg6B,CAAP,CAAb,CAA+BkG,CAA/B,CAXwD,CAcxDpK,CAAA,CADEyJ,CAAAnJ,wBAAJ,CAC2BC,EAAA,CAAwB1pB,CAAxB,CAA+B4yB,CAAAlN,WAA/B,CAAmEwE,CAAnE,CAD3B,CAG2BA,CAE3B0I,EAAA,CAAwBC,CAAxB,CAAkD7yB,CAAlD,CAAyDqtB,CAAzD,CAAmErE,CAAnE,CACEG,CADF,CApBA,CAPuB,CA8BzBwJ,CAAA,CAAY,IA7EU,CAD1B,CAiFA,OAAOa,SAA0B,CAACC,CAAD,CAAoBzzB,CAApB;AAA2BnI,CAA3B,CAAiCkJ,CAAjC,CAA8CmpB,CAA9C,CAAiE,CAC5Ff,CAAAA,CAAyBe,CACzBlqB,EAAAszB,YAAJ,GACIX,CAAJ,CACEA,CAAA35B,KAAA,CAAegH,CAAf,CACenI,CADf,CAEekJ,CAFf,CAGeooB,CAHf,CADF,EAMMyJ,CAAAnJ,wBAGJ,GAFEN,CAEF,CAF2BO,EAAA,CAAwB1pB,CAAxB,CAA+B4yB,CAAAlN,WAA/B,CAAmEwE,CAAnE,CAE3B,EAAA0I,CAAA,CAAwBC,CAAxB,CAAkD7yB,CAAlD,CAAyDnI,CAAzD,CAA+DkJ,CAA/D,CAA4EooB,CAA5E,CATF,CADA,CAFgG,CAjGd,CAsHtF0C,QAASA,EAAU,CAACvlB,CAAD,CAAIuX,CAAJ,CAAO,CACxB,IAAI6V,EAAO7V,CAAAgH,SAAP6O,CAAoBptB,CAAAue,SACxB,OAAa,EAAb,GAAI6O,CAAJ,CAAuBA,CAAvB,CACIptB,CAAAvH,KAAJ,GAAe8e,CAAA9e,KAAf,CAA+BuH,CAAAvH,KAAD,CAAU8e,CAAA9e,KAAV,CAAqB,EAArB,CAAyB,CAAvD,CACOuH,CAAA7N,MADP,CACiBolB,CAAAplB,MAJO,CAO1B03B,QAASA,EAAiB,CAACwD,CAAD,CAAOC,CAAP,CAA0BruB,CAA1B,CAAqClN,CAArC,CAA8C,CAEtEw7B,QAASA,EAAuB,CAACC,CAAD,CAAa,CAC3C,MAAOA,EAAA,CACJ,YADI,CACWA,CADX,CACwB,GADxB,CAEL,EAHyC,CAM7C,GAAIF,CAAJ,CACE,KAAMlQ,GAAA,CAAe,UAAf,CACFkQ,CAAA70B,KADE,CACsB80B,CAAA,CAAwBD,CAAAhvB,aAAxB,CADtB,CAEFW,CAAAxG,KAFE,CAEc80B,CAAA,CAAwBtuB,CAAAX,aAAxB,CAFd,CAE+D+uB,CAF/D,CAEqE52B,EAAA,CAAY1E,CAAZ,CAFrE,CAAN,CAToE,CAgBxEszB,QAASA,GAA2B,CAAC/G,CAAD,CAAamP,CAAb,CAAmB,CACrD,IAAIC,EAAgBxmB,CAAA,CAAaumB,CAAb,CAAmB,CAAA,CAAnB,CAChBC,EAAJ,EACEpP,CAAA5rB,KAAA,CAAgB,CACd6rB,SAAU,CADI,CAEd5kB,QAASg0B,QAAiC,CAACC,CAAD,CAAe,CACnDC,CAAAA,CAAqBD,CAAAz9B,OAAA,EAAzB,KACI29B,EAAmB,CAAE9gC,CAAA6gC,CAAA7gC,OAIrB8gC,EAAJ,EAAsBn0B,EAAAo0B,kBAAA,CAA0BF,CAA1B,CAEtB;MAAOG,SAA8B,CAACt0B,CAAD,CAAQnI,CAAR,CAAc,CACjD,IAAIpB,EAASoB,CAAApB,OAAA,EACR29B,EAAL,EAAuBn0B,EAAAo0B,kBAAA,CAA0B59B,CAA1B,CACvBwJ,GAAAs0B,iBAAA,CAAyB99B,CAAzB,CAAiCu9B,CAAAQ,YAAjC,CACAx0B,EAAAxI,OAAA,CAAaw8B,CAAb,CAA4BS,QAAiC,CAAC//B,CAAD,CAAQ,CACnEmD,CAAA,CAAK,CAAL,CAAA+vB,UAAA,CAAoBlzB,CAD+C,CAArE,CAJiD,CARI,CAF3C,CAAhB,CAHmD,CA2BvDi0B,QAASA,GAAY,CAACzuB,CAAD,CAAOmrB,CAAP,CAAiB,CACpCnrB,CAAA,CAAO5B,CAAA,CAAU4B,CAAV,EAAkB,MAAlB,CACP,QAAQA,CAAR,EACA,KAAK,KAAL,CACA,KAAK,MAAL,CACE,IAAIqY,EAAUzf,CAAAyI,SAAAkW,cAAA,CAA8B,KAA9B,CACdc,EAAAR,UAAA,CAAoB,GAApB,CAA0B7X,CAA1B,CAAiC,GAAjC,CAAuCmrB,CAAvC,CAAkD,IAAlD,CAAyDnrB,CAAzD,CAAgE,GAChE,OAAOqY,EAAAL,WAAA,CAAmB,CAAnB,CAAAA,WACT,SACE,MAAOmT,EAPT,CAFoC,CActCqP,QAASA,GAAiB,CAAC78B,CAAD,CAAO88B,CAAP,CAA2B,CACnD,GAA0B,QAA1B,EAAIA,CAAJ,CACE,MAAOzlB,EAAA0lB,KAET,KAAIp1B,EAAMpH,EAAA,CAAUP,CAAV,CAEV,IAA0B,WAA1B,EAAI88B,CAAJ,EACY,MADZ,EACKn1B,CADL,EAC4C,QAD5C,EACsBm1B,CADtB,EAEY,KAFZ,EAEKn1B,CAFL,GAE4C,KAF5C,EAEsBm1B,CAFtB,EAG4C,OAH5C,EAGsBA,CAHtB,EAIE,MAAOzlB,EAAA2lB,aAV0C,CAerDpJ,QAASA,GAA2B,CAAC5zB,CAAD;AAAO+sB,CAAP,CAAmBlwB,CAAnB,CAA0BqK,CAA1B,CAAgC+1B,CAAhC,CAA8C,CAChF,IAAIC,EAAiBL,EAAA,CAAkB78B,CAAlB,CAAwBkH,CAAxB,CACrB+1B,EAAA,CAAexQ,CAAA,CAAqBvlB,CAArB,CAAf,EAA6C+1B,CAE7C,KAAId,EAAgBxmB,CAAA,CAAa9Y,CAAb,CAAoB,CAAA,CAApB,CAA0BqgC,CAA1B,CAA0CD,CAA1C,CAGpB,IAAKd,CAAL,CAAA,CAGA,GAAa,UAAb,GAAIj1B,CAAJ,EAA+C,QAA/C,GAA2B3G,EAAA,CAAUP,CAAV,CAA3B,CACE,KAAM6rB,GAAA,CAAe,UAAf,CAEF3mB,EAAA,CAAYlF,CAAZ,CAFE,CAAN,CAKF+sB,CAAA5rB,KAAA,CAAgB,CACd6rB,SAAU,GADI,CAEd5kB,QAASA,QAAQ,EAAG,CAChB,MAAO,CACL+sB,IAAKgI,QAAiC,CAACh1B,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CACvDk9B,CAAAA,CAAel9B,CAAAk9B,YAAfA,GAAoCl9B,CAAAk9B,YAApCA,CAAuDv6B,CAAA,EAAvDu6B,CAEJ,IAAI1Q,CAAA3sB,KAAA,CAA+BmH,CAA/B,CAAJ,CACE,KAAM2kB,GAAA,CAAe,aAAf,CAAN,CAMF,IAAIwR,EAAWn9B,CAAA,CAAKgH,CAAL,CACXm2B,EAAJ,GAAiBxgC,CAAjB,GAIEs/B,CACA,CADgBkB,CAChB,EAD4B1nB,CAAA,CAAa0nB,CAAb,CAAuB,CAAA,CAAvB,CAA6BH,CAA7B,CAA6CD,CAA7C,CAC5B,CAAApgC,CAAA,CAAQwgC,CALV,CAUKlB,EAAL,GAKAj8B,CAAA,CAAKgH,CAAL,CAGA,CAHai1B,CAAA,CAAch0B,CAAd,CAGb,CADAm1B,CAACF,CAAA,CAAYl2B,CAAZ,CAADo2B,GAAuBF,CAAA,CAAYl2B,CAAZ,CAAvBo2B,CAA2C,EAA3CA,UACA,CAD0D,CAAA,CAC1D,CAAA39B,CAACO,CAAAk9B,YAADz9B,EAAqBO,CAAAk9B,YAAA,CAAiBl2B,CAAjB,CAAAq2B,QAArB59B,EAAuDwI,CAAvDxI,QAAA,CACSw8B,CADT,CACwBS,QAAiC,CAACS,CAAD,CAAWG,CAAX,CAAqB,CAO7D,OAAb,GAAIt2B,CAAJ,EAAwBm2B,CAAxB,EAAoCG,CAApC,CACEt9B,CAAAu9B,aAAA,CAAkBJ,CAAlB,CAA4BG,CAA5B,CADF,CAGEt9B,CAAA26B,KAAA,CAAU3zB,CAAV,CAAgBm2B,CAAhB,CAVwE,CAD9E,CARA,CArB2D,CADxD,CADS,CAFN,CAAhB,CATA,CAPgF,CAgFlF1E,QAASA,GAAW,CAACxH,CAAD,CAAeuM,CAAf,CAAiCC,CAAjC,CAA0C,CAAA,IACxDC,EAAuBF,CAAA,CAAiB,CAAjB,CADiC;AAExDG,EAAcH,CAAAjiC,OAF0C,CAGxDmD,EAASg/B,CAAAjjB,WAH+C,CAIxDje,CAJwD,CAIrDY,CAEP,IAAI6zB,CAAJ,CACE,IAAKz0B,CAAO,CAAH,CAAG,CAAAY,CAAA,CAAK6zB,CAAA11B,OAAjB,CAAsCiB,CAAtC,CAA0CY,CAA1C,CAA8CZ,CAAA,EAA9C,CACE,GAAIy0B,CAAA,CAAaz0B,CAAb,CAAJ,EAAuBkhC,CAAvB,CAA6C,CAC3CzM,CAAA,CAAaz0B,CAAA,EAAb,CAAA,CAAoBihC,CACJG,EAAAA,CAAKtgC,CAALsgC,CAASD,CAATC,CAAuB,CAAvC,KAAS,IACArgC,EAAK0zB,CAAA11B,OADd,CAEK+B,CAFL,CAESC,CAFT,CAEaD,CAAA,EAAA,CAAKsgC,CAAA,EAFlB,CAGMA,CAAJ,CAASrgC,CAAT,CACE0zB,CAAA,CAAa3zB,CAAb,CADF,CACoB2zB,CAAA,CAAa2M,CAAb,CADpB,CAGE,OAAO3M,CAAA,CAAa3zB,CAAb,CAGX2zB,EAAA11B,OAAA,EAAuBoiC,CAAvB,CAAqC,CAKjC1M,EAAAn1B,QAAJ,GAA6B4hC,CAA7B,GACEzM,CAAAn1B,QADF,CACyB2hC,CADzB,CAGA,MAnB2C,CAwB7C/+B,CAAJ,EACEA,CAAAgc,aAAA,CAAoB+iB,CAApB,CAA6BC,CAA7B,CAOEpkB,EAAAA,CAAWve,CAAAyI,SAAA+V,uBAAA,EACf,KAAK/c,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBmhC,CAAhB,CAA6BnhC,CAAA,EAA7B,CACE8c,CAAAG,YAAA,CAAqB+jB,CAAA,CAAiBhhC,CAAjB,CAArB,CAGElB,EAAAuiC,QAAA,CAAeH,CAAf,CAAJ,GAIEpiC,CAAA8M,KAAA,CAAYq1B,CAAZ,CAAqBniC,CAAA8M,KAAA,CAAYs1B,CAAZ,CAArB,CAGA,CAAApiC,CAAA,CAAOoiC,CAAP,CAAA7U,IAAA,CAAiC,UAAjC,CAPF,CAYAvtB,EAAA6O,UAAA,CAAiBmP,CAAA+B,iBAAA,CAA0B,GAA1B,CAAjB,CAGA,KAAK7e,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBmhC,CAAhB,CAA6BnhC,CAAA,EAA7B,CACE,OAAOghC,CAAA,CAAiBhhC,CAAjB,CAETghC,EAAA,CAAiB,CAAjB,CAAA,CAAsBC,CACtBD,EAAAjiC,OAAA,CAA0B,CAhEkC,CAoE9D85B,QAASA,GAAkB,CAACnyB,CAAD,CAAK46B,CAAL,CAAiB,CAC1C,MAAO5/B,EAAA,CAAO,QAAQ,EAAG,CAAE,MAAOgF,EAAAG,MAAA,CAAS,IAAT,CAAejF,SAAf,CAAT,CAAlB;AAAyD8E,CAAzD,CAA6D46B,CAA7D,CADmC,CAK5CxG,QAASA,GAAY,CAAClD,CAAD,CAASnsB,CAAT,CAAgBmlB,CAAhB,CAA0ByE,CAA1B,CAAiCS,CAAjC,CAA8C/C,CAA9C,CAA4D,CAC/E,GAAI,CACF6E,CAAA,CAAOnsB,CAAP,CAAcmlB,CAAd,CAAwByE,CAAxB,CAA+BS,CAA/B,CAA4C/C,CAA5C,CADE,CAEF,MAAOrqB,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CAAqBF,EAAA,CAAYooB,CAAZ,CAArB,CADU,CAHmE,CAWjFmJ,QAASA,GAA2B,CAACtuB,CAAD,CAAQ4pB,CAAR,CAAe9wB,CAAf,CAA4BwqB,CAA5B,CAAsC/d,CAAtC,CAAiD,CAuHnFuwB,QAASA,EAAa,CAAChiC,CAAD,CAAMiiC,CAAN,CAAoBC,CAApB,CAAmC,CACnDjiC,CAAA,CAAW+E,CAAAk2B,WAAX,CAAJ,EAA0C+G,CAA1C,GAA2DC,CAA3D,GAEOzP,CAcL,GAbEvmB,CAAAi2B,aAAA,CAAmB3P,CAAnB,CACA,CAAAC,CAAA,CAAiB,EAYnB,EATK2P,CASL,GAREA,CACA,CADU,EACV,CAAA3P,CAAAvtB,KAAA,CAAoBm9B,CAApB,CAOF,EAJID,CAAA,CAAQpiC,CAAR,CAIJ,GAHEkiC,CAGF,CAHkBE,CAAA,CAAQpiC,CAAR,CAAAkiC,cAGlB,EAAAE,CAAA,CAAQpiC,CAAR,CAAA,CAAe,IAAIsiC,EAAJ,CAAiBJ,CAAjB,CAAgCD,CAAhC,CAhBjB,CADuD,CAqBzDI,QAASA,EAAoB,EAAG,CAC9Br9B,CAAAk2B,WAAA,CAAuBkH,CAAvB,CAEAA,EAAA,CAAU38B,IAAAA,EAHoB,CA3IhC,IAAI88B,EAAwB,EAA5B,CACIpH,EAAiB,EADrB,CAEIiH,CACJviC,EAAA,CAAQ2vB,CAAR,CAAkBgT,QAA0B,CAAC/S,CAAD,CAAaC,CAAb,CAAwB,CAAA,IAC9DM,EAAWP,CAAAO,SADmD,CAElED,EAAWN,CAAAM,SAFuD,CAIlE0S,CAJkE,CAKlEC,CALkE,CAKvDC,CALuD,CAK5CC,CAEtB,QAJOnT,CAAAI,KAIP,EAEE,KAAK,GAAL,CACOE,CAAL,EAAkB7vB,EAAAC,KAAA,CAAoB21B,CAApB,CAA2B9F,CAA3B,CAAlB,GACEhrB,CAAA,CAAY0qB,CAAZ,CADF,CAC2BoG,CAAA,CAAM9F,CAAN,CAD3B,CAC6C,IAAK,EADlD,CAGA8F,EAAA+M,SAAA,CAAe7S,CAAf,CAAyB,QAAQ,CAACpvB,CAAD,CAAQ,CACvC,GAAItB,CAAA,CAASsB,CAAT,CAAJ,EAAuB+C,EAAA,CAAU/C,CAAV,CAAvB,CAEEohC,CAAA,CAActS,CAAd,CAAyB9uB,CAAzB,CADeoE,CAAAu8B,CAAY7R,CAAZ6R,CACf,CACA,CAAAv8B,CAAA,CAAY0qB,CAAZ,CAAA,CAAyB9uB,CAJY,CAAzC,CAOAk1B,EAAAqL,YAAA,CAAkBnR,CAAlB,CAAAsR,QAAA,CAAsCp1B,CACtCu2B,EAAA,CAAY3M,CAAA,CAAM9F,CAAN,CACR1wB,EAAA,CAASmjC,CAAT,CAAJ,CAGEz9B,CAAA,CAAY0qB,CAAZ,CAHF;AAG2BhW,CAAA,CAAa+oB,CAAb,CAAA,CAAwBv2B,CAAxB,CAH3B,CAIWvI,EAAA,CAAU8+B,CAAV,CAJX,GAOEz9B,CAAA,CAAY0qB,CAAZ,CAPF,CAO2B+S,CAP3B,CASAtH,EAAA,CAAezL,CAAf,CAAA,CAA4B,IAAI4S,EAAJ,CAAiBQ,EAAjB,CAAuC99B,CAAA,CAAY0qB,CAAZ,CAAvC,CAC5B,MAEF,MAAK,GAAL,CACE,GAAK,CAAAxvB,EAAAC,KAAA,CAAoB21B,CAApB,CAA2B9F,CAA3B,CAAL,CAA2C,CACzC,GAAID,CAAJ,CAAc,KACd+F,EAAA,CAAM9F,CAAN,CAAA,CAAkB,IAAK,EAFkB,CAI3C,GAAID,CAAJ,EAAiB,CAAA+F,CAAA,CAAM9F,CAAN,CAAjB,CAAkC,KAElC0S,EAAA,CAAY9nB,CAAA,CAAOkb,CAAA,CAAM9F,CAAN,CAAP,CAEV4S,EAAA,CADEF,CAAAK,QAAJ,CACY18B,EADZ,CAGYu8B,QAAsB,CAACpwB,CAAD,CAAIuX,CAAJ,CAAO,CAAE,MAAOvX,EAAP,GAAauX,CAAb,EAAmBvX,CAAnB,GAAyBA,CAAzB,EAA8BuX,CAA9B,GAAoCA,CAAtC,CAEzC4Y,EAAA,CAAYD,CAAAM,OAAZ,EAAgC,QAAQ,EAAG,CAEzCP,CAAA,CAAYz9B,CAAA,CAAY0qB,CAAZ,CAAZ,CAAqCgT,CAAA,CAAUx2B,CAAV,CACrC,MAAM0jB,GAAA,CAAe,WAAf,CAEFkG,CAAA,CAAM9F,CAAN,CAFE,CAEeA,CAFf,CAEyBve,CAAAxG,KAFzB,CAAN,CAHyC,CAO3Cw3B,EAAA,CAAYz9B,CAAA,CAAY0qB,CAAZ,CAAZ,CAAqCgT,CAAA,CAAUx2B,CAAV,CACjC+2B,EAAAA,CAAmBA,QAAyB,CAACC,CAAD,CAAc,CACvDN,CAAA,CAAQM,CAAR,CAAqBl+B,CAAA,CAAY0qB,CAAZ,CAArB,CAAL,GAEOkT,CAAA,CAAQM,CAAR,CAAqBT,CAArB,CAAL,CAKEE,CAAA,CAAUz2B,CAAV,CAAiBg3B,CAAjB,CAA+Bl+B,CAAA,CAAY0qB,CAAZ,CAA/B,CALF,CAEE1qB,CAAA,CAAY0qB,CAAZ,CAFF,CAE2BwT,CAJ7B,CAUA,OAAOT,EAAP,CAAmBS,CAXyC,CAa9DD,EAAAE,UAAA,CAA6B,CAAA,CAE3BC,EAAA,CADE3T,CAAAK,WAAJ,CACgB5jB,CAAAm3B,iBAAA,CAAuBvN,CAAA,CAAM9F,CAAN,CAAvB,CAAwCiT,CAAxC,CADhB,CAGgB/2B,CAAAxI,OAAA,CAAakX,CAAA,CAAOkb,CAAA,CAAM9F,CAAN,CAAP,CAAwBiT,CAAxB,CAAb,CAAwD,IAAxD,CAA8DP,CAAAK,QAA9D,CAEhBR,EAAAr9B,KAAA,CAA2Bk+B,CAA3B,CACA,MAEF,MAAK,GAAL,CACE,GAAK,CAAAljC,EAAAC,KAAA,CAAoB21B,CAApB,CAA2B9F,CAA3B,CAAL,CAA2C,CACzC,GAAID,CAAJ,CAAc,KACd+F,EAAA,CAAM9F,CAAN,CAAA,CAAkB,IAAK,EAFkB,CAI3C,GAAID,CAAJ,EAAiB,CAAA+F,CAAA,CAAM9F,CAAN,CAAjB,CAAkC,KAElC0S;CAAA,CAAY9nB,CAAA,CAAOkb,CAAA,CAAM9F,CAAN,CAAP,CAEZ,KAAIsT,EAAet+B,CAAA,CAAY0qB,CAAZ,CAAf4T,CAAwCZ,CAAA,CAAUx2B,CAAV,CAC5CivB,EAAA,CAAezL,CAAf,CAAA,CAA4B,IAAI4S,EAAJ,CAAiBQ,EAAjB,CAAuC99B,CAAA,CAAY0qB,CAAZ,CAAvC,CAE5B0T,EAAA,CAAcl3B,CAAAxI,OAAA,CAAag/B,CAAb,CAAwBa,QAA+B,CAACnC,CAAD,CAAWG,CAAX,CAAqB,CACxF,GAAIA,CAAJ,GAAiBH,CAAjB,CAA2B,CACzB,GAAIG,CAAJ,GAAiB+B,CAAjB,CAA+B,MAC/B/B,EAAA,CAAW+B,CAFc,CAI3BtB,CAAA,CAActS,CAAd,CAAyB0R,CAAzB,CAAmCG,CAAnC,CACAv8B,EAAA,CAAY0qB,CAAZ,CAAA,CAAyB0R,CAN+D,CAA5E,CAOXsB,CAAAK,QAPW,CASdR,EAAAr9B,KAAA,CAA2Bk+B,CAA3B,CACA,MAEF,MAAK,GAAL,CAEEV,CAAA,CAAY5M,CAAA51B,eAAA,CAAqB8vB,CAArB,CAAA,CAAiCpV,CAAA,CAAOkb,CAAA,CAAM9F,CAAN,CAAP,CAAjC,CAA2DltB,CAGvE,IAAI4/B,CAAJ,GAAkB5/B,CAAlB,EAA0BitB,CAA1B,CAAoC,KAEpC/qB,EAAA,CAAY0qB,CAAZ,CAAA,CAAyB,QAAQ,CAACtI,CAAD,CAAS,CACxC,MAAOsb,EAAA,CAAUx2B,CAAV,CAAiBkb,CAAjB,CADiC,CArG9C,CAPkE,CAApE,CA8IA,OAAO,CACL+T,eAAgBA,CADX,CAELV,cAAe8H,CAAA/iC,OAAfi7B,EAA+CA,QAAsB,EAAG,CACtE,IADsE,IAC7Dh6B,EAAI,CADyD,CACtDY,EAAKkhC,CAAA/iC,OAArB,CAAmDiB,CAAnD,CAAuDY,CAAvD,CAA2D,EAAEZ,CAA7D,CACE8hC,CAAA,CAAsB9hC,CAAtB,CAAA,EAFoE,CAFnE,CAlJ4E,CAp0DrF,IAAI+iC,GAAmB,KAAvB,CACIxQ,GAAoBh0B,CAAAyI,SAAAkW,cAAA,CAA8B,KAA9B,CADxB,CAKI2U,GAAeD,CALnB,CAQII,CAgDJE,GAAA3N,UAAA,CAAuB,CAgBrBye,WAAY1M,EAhBS,CA8BrB2M,UAAWA,QAAQ,CAACC,CAAD,CAAW,CACxBA,CAAJ,EAAkC,CAAlC,CAAgBA,CAAAnkC,OAAhB,EACEwY,CAAAoM,SAAA,CAAkB,IAAA0O,UAAlB,CAAkC6Q,CAAlC,CAF0B,CA9BT,CA+CrBC,aAAcA,QAAQ,CAACD,CAAD,CAAW,CAC3BA,CAAJ;AAAkC,CAAlC,CAAgBA,CAAAnkC,OAAhB,EACEwY,CAAAqM,YAAA,CAAqB,IAAAyO,UAArB,CAAqC6Q,CAArC,CAF6B,CA/CZ,CAiErBnC,aAAcA,QAAQ,CAACqC,CAAD,CAAapE,CAAb,CAAyB,CAC7C,IAAIqE,EAAQC,EAAA,CAAgBF,CAAhB,CAA4BpE,CAA5B,CACRqE,EAAJ,EAAaA,CAAAtkC,OAAb,EACEwY,CAAAoM,SAAA,CAAkB,IAAA0O,UAAlB,CAAkCgR,CAAlC,CAIF,EADIE,CACJ,CADeD,EAAA,CAAgBtE,CAAhB,CAA4BoE,CAA5B,CACf,GAAgBG,CAAAxkC,OAAhB,EACEwY,CAAAqM,YAAA,CAAqB,IAAAyO,UAArB,CAAqCkR,CAArC,CAR2C,CAjE1B,CAsFrBpF,KAAMA,QAAQ,CAAC5+B,CAAD,CAAMY,CAAN,CAAaqjC,CAAb,CAAwBjU,CAAxB,CAAkC,CAAA,IAM1CkU,EAAa9hB,EAAA,CADN,IAAA0Q,UAAA/uB,CAAe,CAAfA,CACM,CAAyB/D,CAAzB,CAN6B,CAO1CmkC,EAtvJHC,EAAA,CAsvJmCpkC,CAtvJnC,CA+uJ6C,CAQ1CqkC,EAAWrkC,CAGXkkC,EAAJ,EACE,IAAApR,UAAA9uB,KAAA,CAAoBhE,CAApB,CAAyBY,CAAzB,CACA,CAAAovB,CAAA,CAAWkU,CAFb,EAGWC,CAHX,GAIE,IAAA,CAAKA,CAAL,CACA,CADmBvjC,CACnB,CAAAyjC,CAAA,CAAWF,CALb,CAQA,KAAA,CAAKnkC,CAAL,CAAA,CAAYY,CAGRovB,EAAJ,CACE,IAAA6C,MAAA,CAAW7yB,CAAX,CADF,CACoBgwB,CADpB,EAGEA,CAHF,CAGa,IAAA6C,MAAA,CAAW7yB,CAAX,CAHb,IAKI,IAAA6yB,MAAA,CAAW7yB,CAAX,CALJ,CAKsBgwB,CALtB,CAKiC7iB,EAAA,CAAWnN,CAAX,CAAgB,GAAhB,CALjC,CASA+B,EAAA,CAAWuC,EAAA,CAAU,IAAAwuB,UAAV,CAEX,IAAkB,GAAlB,GAAK/wB,CAAL,GAAkC,MAAlC,GAA0B/B,CAA1B,EAAoD,WAApD,GAA4CA,CAA5C,GACkB,KADlB,GACK+B,CADL,EACmC,KADnC,GAC2B/B,CAD3B,CAGE,IAAA,CAAKA,CAAL,CAAA,CAAYY,CAAZ,CAAoByR,CAAA,CAAczR,CAAd,CAA6B,KAA7B,GAAqBZ,CAArB,CAHtB,KAIO,IAAiB,KAAjB;AAAI+B,CAAJ,EAAkC,QAAlC,GAA0B/B,CAA1B,EAA8CsD,CAAA,CAAU1C,CAAV,CAA9C,CAAgE,CAerE,IAbIolB,IAAAA,EAAS,EAATA,CAGAse,EAAgBzlB,CAAA,CAAKje,CAAL,CAHhBolB,CAKAue,EAAa,qCALbve,CAMArP,EAAU,IAAA7S,KAAA,CAAUwgC,CAAV,CAAA,CAA2BC,CAA3B,CAAwC,KANlDve,CASAwe,EAAUF,CAAAjgC,MAAA,CAAoBsS,CAApB,CATVqP,CAYAye,EAAoB5G,IAAA6G,MAAA,CAAWF,CAAAhlC,OAAX,CAA4B,CAA5B,CAZpBwmB,CAaKvlB,EAAI,CAAb,CAAgBA,CAAhB,CAAoBgkC,CAApB,CAAuChkC,CAAA,EAAvC,CACE,IAAIkkC,EAAe,CAAfA,CAAWlkC,CAAf,CAEAulB,EAAAA,CAAAA,CAAU3T,CAAA,CAAcwM,CAAA,CAAK2lB,CAAA,CAAQG,CAAR,CAAL,CAAd,CAAuC,CAAA,CAAvC,CAFV,CAIA3e,EAAAA,CAAAA,EAAW,GAAXA,CAAiBnH,CAAA,CAAK2lB,CAAA,CAAQG,CAAR,CAAmB,CAAnB,CAAL,CAAjB3e,CAIE4e,EAAAA,CAAY/lB,CAAA,CAAK2lB,CAAA,CAAY,CAAZ,CAAQ/jC,CAAR,CAAL,CAAA4D,MAAA,CAA2B,IAA3B,CAGhB2hB,EAAA,EAAU3T,CAAA,CAAcwM,CAAA,CAAK+lB,CAAA,CAAU,CAAV,CAAL,CAAd,CAAkC,CAAA,CAAlC,CAGe,EAAzB,GAAIA,CAAAplC,OAAJ,GACEwmB,CADF,EACa,GADb,CACmBnH,CAAA,CAAK+lB,CAAA,CAAU,CAAV,CAAL,CADnB,CAGA,KAAA,CAAK5kC,CAAL,CAAA,CAAYY,CAAZ,CAAoBolB,CAjCiD,CAoCrD,CAAA,CAAlB,GAAIie,CAAJ,GACgB,IAAd,GAAIrjC,CAAJ,EAAsByC,CAAA,CAAYzC,CAAZ,CAAtB,CACE,IAAAkyB,UAAA+R,WAAA,CAA0B7U,CAA1B,CADF,CAGMwT,EAAA1/B,KAAA,CAAsBksB,CAAtB,CAAJ,CACE,IAAA8C,UAAA7uB,KAAA,CAAoB+rB,CAApB,CAA8BpvB,CAA9B,CADF,CAGEmyB,CAAA,CAAe,IAAAD,UAAA,CAAe,CAAf,CAAf,CAAkC9C,CAAlC,CAA4CpvB,CAA5C,CAPN,CAcA,EADIugC,CACJ,CADkB,IAAAA,YAClB,GAAethC,CAAA,CAAQshC,CAAA,CAAYkD,CAAZ,CAAR,CAA+B,QAAQ,CAACl9B,CAAD,CAAK,CACzD,GAAI,CACFA,CAAA,CAAGvG,CAAH,CADE,CAEF,MAAOuI,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAH6C,CAA5C,CAvF+B,CAtF3B,CA0MrB05B,SAAUA,QAAQ,CAAC7iC,CAAD,CAAMmH,CAAN,CAAU,CAAA,IACtB2uB,EAAQ,IADc;AAEtBqL,EAAerL,CAAAqL,YAAfA,GAAqCrL,CAAAqL,YAArCA,CAAyDv6B,CAAA,EAAzDu6B,CAFsB,CAGtB2D,EAAa3D,CAAA,CAAYnhC,CAAZ,CAAb8kC,GAAkC3D,CAAA,CAAYnhC,CAAZ,CAAlC8kC,CAAqD,EAArDA,CAEJA,EAAA5/B,KAAA,CAAeiC,CAAf,CACA2T,EAAArX,WAAA,CAAsB,QAAQ,EAAG,CAC1BqhC,CAAAzD,QAAL,EAA0B,CAAAvL,CAAA51B,eAAA,CAAqBF,CAArB,CAA1B,EAAwDqD,CAAA,CAAYyyB,CAAA,CAAM91B,CAAN,CAAZ,CAAxD,EAEEmH,CAAA,CAAG2uB,CAAA,CAAM91B,CAAN,CAAH,CAH6B,CAAjC,CAOA,OAAO,SAAQ,EAAG,CAChByE,EAAA,CAAYqgC,CAAZ,CAAuB39B,CAAvB,CADgB,CAbQ,CA1MP,CA1DkD,KA8SrE49B,GAAcrrB,CAAAqrB,YAAA,EA9SuD,CA+SrEC,GAAYtrB,CAAAsrB,UAAA,EA/SyD,CAgTrE5H,GAAsC,IAAhB,EAAC2H,EAAD,EAAsC,IAAtC,EAAwBC,EAAxB,CAChBjiC,EADgB,CAEhBq6B,QAA4B,CAAC7L,CAAD,CAAW,CACvC,MAAOA,EAAAnpB,QAAA,CAAiB,OAAjB,CAA0B28B,EAA1B,CAAA38B,QAAA,CAA+C,KAA/C,CAAsD48B,EAAtD,CADgC,CAlTwB,CAqTrE3N,GAAkB,cArTmD,CAsTrEG,GAAuB,aAE3BrrB,GAAAs0B,iBAAA,CAA2B50B,CAAA,CAAmB40B,QAAyB,CAACpP,CAAD,CAAW4T,CAAX,CAAoB,CACzF,IAAIzV,EAAW6B,CAAAhlB,KAAA,CAAc,UAAd,CAAXmjB,EAAwC,EAExCnwB,EAAA,CAAQ4lC,CAAR,CAAJ,CACEzV,CADF,CACaA,CAAA1oB,OAAA,CAAgBm+B,CAAhB,CADb,CAGEzV,CAAAtqB,KAAA,CAAc+/B,CAAd,CAGF5T,EAAAhlB,KAAA,CAAc,UAAd,CAA0BmjB,CAA1B,CATyF,CAAhE,CAUvB1sB,CAEJqJ,GAAAo0B,kBAAA,CAA4B10B,CAAA,CAAmB00B,QAA0B,CAAClP,CAAD,CAAW,CAClFgC,CAAA,CAAahC,CAAb,CAAuB,YAAvB,CADkF,CAAxD;AAExBvuB,CAEJqJ,GAAA6oB,eAAA,CAAyBnpB,CAAA,CAAmBmpB,QAAuB,CAAC3D,CAAD,CAAWnlB,CAAX,CAAkBg5B,CAAlB,CAA4BC,CAA5B,CAAwC,CAEzG9T,CAAAhlB,KAAA,CADe64B,CAAAlH,CAAYmH,CAAA,CAAa,yBAAb,CAAyC,eAArDnH,CAAwE,QACvF,CAAwB9xB,CAAxB,CAFyG,CAAlF,CAGrBpJ,CAEJqJ,GAAA8nB,gBAAA,CAA0BpoB,CAAA,CAAmBooB,QAAwB,CAAC5C,CAAD,CAAW6T,CAAX,CAAqB,CACxF7R,CAAA,CAAahC,CAAb,CAAuB6T,CAAA,CAAW,kBAAX,CAAgC,UAAvD,CADwF,CAAhE,CAEtBpiC,CAEJqJ,GAAAswB,gBAAA,CAA0B2I,QAAQ,CAAC/V,CAAD,CAAgBgW,CAAhB,CAAyB,CACzD,IAAIjG,EAAU,EACVvzB,EAAJ,GACEuzB,CACA,CADU,GACV,EADiB/P,CACjB,EADkC,EAClC,EADwC,IACxC,CAAIgW,CAAJ,GAAajG,CAAb,EAAwBiG,CAAxB,CAAkC,GAAlC,CAFF,CAIA,OAAOrmC,EAAAyI,SAAA69B,cAAA,CAA8BlG,CAA9B,CANkD,CAS3D,OAAOjzB,GA1VkE,CAJ/D,CA5a6C,CAo5E3Dm2B,QAASA,GAAY,CAACiD,CAAD,CAAWC,CAAX,CAAoB,CACvC,IAAAtD,cAAA,CAAqBqD,CACrB,KAAAtD,aAAA,CAAoBuD,CAFmB,CAYzCzO,QAASA,GAAkB,CAAC9rB,CAAD,CAAO,CAChC,MAAO2R,GAAA,CAAU3R,CAAA7C,QAAA,CAAakvB,EAAb,CAA4B,EAA5B,CAAV,CADyB,CAgElCyM,QAASA,GAAe,CAAC0B,CAAD,CAAOC,CAAP,CAAa,CAAA,IAC/BC,EAAS,EADsB,CAE/BC,EAAUH,CAAAphC,MAAA,CAAW,KAAX,CAFqB,CAG/BwhC,EAAUH,CAAArhC,MAAA,CAAW,KAAX,CAHqB,CAM1B5D,EAAI,CADb,EAAA,CACA,IAAA,CAAgBA,CAAhB,CAAoBmlC,CAAApmC,OAApB,CAAoCiB,CAAA,EAApC,CAAyC,CAEvC,IADA,IAAIqlC;AAAQF,CAAA,CAAQnlC,CAAR,CAAZ,CACSc,EAAI,CAAb,CAAgBA,CAAhB,CAAoBskC,CAAArmC,OAApB,CAAoC+B,CAAA,EAApC,CACE,GAAIukC,CAAJ,EAAaD,CAAA,CAAQtkC,CAAR,CAAb,CAAyB,SAAS,CAEpCokC,EAAA,GAA2B,CAAhB,CAAAA,CAAAnmC,OAAA,CAAoB,GAApB,CAA0B,EAArC,EAA2CsmC,CALJ,CAOzC,MAAOH,EAb4B,CAgBrCtI,QAASA,GAAc,CAAC0I,CAAD,CAAU,CAC/BA,CAAA,CAAUxmC,CAAA,CAAOwmC,CAAP,CACV,KAAItlC,EAAIslC,CAAAvmC,OAER,IAAS,CAAT,EAAIiB,CAAJ,CACE,MAAOslC,EAGT,KAAA,CAAOtlC,CAAA,EAAP,CAAA,CAr6PsBq3B,CAu6PpB,GADWiO,CAAAhiC,CAAQtD,CAARsD,CACPwF,SAAJ,EACE1E,EAAA1E,KAAA,CAAY4lC,CAAZ,CAAqBtlC,CAArB,CAAwB,CAAxB,CAGJ,OAAOslC,EAdwB,CAqBjCpU,QAASA,GAAuB,CAACzjB,CAAD,CAAa83B,CAAb,CAAoB,CAClD,GAAIA,CAAJ,EAAa1mC,CAAA,CAAS0mC,CAAT,CAAb,CAA8B,MAAOA,EACrC,IAAI1mC,CAAA,CAAS4O,CAAT,CAAJ,CAA0B,CACxB,IAAIhI,EAAQ+/B,EAAApoB,KAAA,CAAe3P,CAAf,CACZ,IAAIhI,CAAJ,CAAW,MAAOA,EAAA,CAAM,CAAN,CAFM,CAFwB,CAmBpD+S,QAASA,GAAmB,EAAG,CAAA,IACzBsd,EAAc,EADW,CAEzB2P,EAAU,CAAA,CAOd,KAAAve,IAAA,CAAWwe,QAAQ,CAACl7B,CAAD,CAAO,CACxB,MAAOsrB,EAAAr2B,eAAA,CAA2B+K,CAA3B,CADiB,CAY1B,KAAAm7B,SAAA,CAAgBC,QAAQ,CAACp7B,CAAD,CAAOvF,CAAP,CAAoB,CAC1CwJ,EAAA,CAAwBjE,CAAxB,CAA8B,YAA9B,CACI3J,EAAA,CAAS2J,CAAT,CAAJ,CACE9I,CAAA,CAAOo0B,CAAP,CAAoBtrB,CAApB,CADF,CAGEsrB,CAAA,CAAYtrB,CAAZ,CAHF,CAGsBvF,CALoB,CAc5C,KAAA4gC,aAAA,CAAoBC,QAAQ,EAAG,CAC7BL,CAAA,CAAU,CAAA,CADmB,CAK/B,KAAAliB,KAAA,CAAY,CAAC,WAAD,CAAc,SAAd,CAAyB,QAAQ,CAAC4D,CAAD,CAAY1L,CAAZ,CAAqB,CAyGhEsqB,QAASA,EAAa,CAACpf,CAAD;AAAS0T,CAAT,CAAqB/F,CAArB,CAA+B9pB,CAA/B,CAAqC,CACzD,GAAMmc,CAAAA,CAAN,EAAgB,CAAA9lB,CAAA,CAAS8lB,CAAA+W,OAAT,CAAhB,CACE,KAAMl/B,EAAA,CAAO,aAAP,CAAA,CAAsB,OAAtB,CAEJgM,CAFI,CAEE6vB,CAFF,CAAN,CAKF1T,CAAA+W,OAAA,CAAcrD,CAAd,CAAA,CAA4B/F,CAP6B,CA5E3D,MAAO/b,SAAoB,CAACytB,CAAD,CAAarf,CAAb,CAAqBsf,CAArB,CAA4BV,CAA5B,CAAmC,CAAA,IAQxDjR,CARwD,CAQvCrvB,CARuC,CAQ1Bo1B,CAClC4L,EAAA,CAAkB,CAAA,CAAlB,GAAQA,CACJV,EAAJ,EAAa1mC,CAAA,CAAS0mC,CAAT,CAAb,GACElL,CADF,CACekL,CADf,CAIA,IAAI1mC,CAAA,CAASmnC,CAAT,CAAJ,CAA0B,CACxBvgC,CAAA,CAAQugC,CAAAvgC,MAAA,CAAiB+/B,EAAjB,CACR,IAAK//B,CAAAA,CAAL,CACE,KAAMygC,GAAA,CAAkB,SAAlB,CAE8CF,CAF9C,CAAN,CAIF/gC,CAAA,CAAcQ,CAAA,CAAM,CAAN,CACd40B,EADA,CACaA,CADb,EAC2B50B,CAAA,CAAM,CAAN,CAC3BugC,EAAA,CAAalQ,CAAAr2B,eAAA,CAA2BwF,CAA3B,CAAA,CACP6wB,CAAA,CAAY7wB,CAAZ,CADO,CAEPyJ,EAAA,CAAOiY,CAAA+W,OAAP,CAAsBz4B,CAAtB,CAAmC,CAAA,CAAnC,CAFO,GAGJwgC,CAAA,CAAU/2B,EAAA,CAAO+M,CAAP,CAAgBxW,CAAhB,CAA6B,CAAA,CAA7B,CAAV,CAA+CD,IAAAA,EAH3C,CAKbuJ,GAAA,CAAYy3B,CAAZ,CAAwB/gC,CAAxB,CAAqC,CAAA,CAArC,CAdwB,CAiB1B,GAAIghC,CAAJ,CAoBE,MATIE,EASiB,CATK5hB,CAAC3lB,CAAA,CAAQonC,CAAR,CAAA,CACzBA,CAAA,CAAWA,CAAAjnC,OAAX,CAA+B,CAA/B,CADyB,CACWinC,CADZzhB,WASL,CAPrB+P,CAOqB,CAPVt1B,MAAAoD,OAAA,CAAc+jC,CAAd,EAAqC,IAArC,CAOU,CALjB9L,CAKiB,EAJnB0L,CAAA,CAAcpf,CAAd,CAAsB0T,CAAtB,CAAkC/F,CAAlC,CAA4CrvB,CAA5C,EAA2D+gC,CAAAx7B,KAA3D,CAImB,CAAA9I,CAAA,CAAO0kC,QAAwB,EAAG,CACrD,IAAI7gB,EAAS4B,CAAA5b,OAAA,CAAiBy6B,CAAjB,CAA6B1R,CAA7B,CAAuC3N,CAAvC,CAA+C1hB,CAA/C,CACTsgB,EAAJ,GAAe+O,CAAf,GAA4BzzB,CAAA,CAAS0kB,CAAT,CAA5B,EAAgD/lB,CAAA,CAAW+lB,CAAX,CAAhD,IACE+O,CACA,CADW/O,CACX,CAAI8U,CAAJ,EAEE0L,CAAA,CAAcpf,CAAd,CAAsB0T,CAAtB,CAAkC/F,CAAlC,CAA4CrvB,CAA5C,EAA2D+gC,CAAAx7B,KAA3D,CAJJ,CAOA,OAAO8pB,EAT8C,CAAlC,CAUlB,CACDA,SAAUA,CADT,CAED+F,WAAYA,CAFX,CAVkB,CAgBvB/F,EAAA;AAAWnN,CAAAjC,YAAA,CAAsB8gB,CAAtB,CAAkCrf,CAAlC,CAA0C1hB,CAA1C,CAEPo1B,EAAJ,EACE0L,CAAA,CAAcpf,CAAd,CAAsB0T,CAAtB,CAAkC/F,CAAlC,CAA4CrvB,CAA5C,EAA2D+gC,CAAAx7B,KAA3D,CAGF,OAAO8pB,EAzEqD,CA7BE,CAAtD,CAxCiB,CAsL/B5b,QAASA,GAAiB,EAAG,CAC3B,IAAA6K,KAAA,CAAY,CAAC,SAAD,CAAY,QAAQ,CAAChlB,CAAD,CAAS,CACvC,MAAOO,EAAA,CAAOP,CAAAyI,SAAP,CADgC,CAA7B,CADe,CAiD7B4R,QAASA,GAAyB,EAAG,CACnC,IAAA2K,KAAA,CAAY,CAAC,MAAD,CAAS,QAAQ,CAACtJ,CAAD,CAAO,CAClC,MAAO,SAAQ,CAACosB,CAAD,CAAYC,CAAZ,CAAmB,CAChCrsB,CAAA+P,MAAAnjB,MAAA,CAAiBoT,CAAjB,CAAuBrY,SAAvB,CADgC,CADA,CAAxB,CADuB,CA8CrC2kC,QAASA,GAAc,CAACC,CAAD,CAAI,CACzB,MAAI3lC,EAAA,CAAS2lC,CAAT,CAAJ,CACSvlC,EAAA,CAAOulC,CAAP,CAAA,CAAYA,CAAAC,YAAA,EAAZ,CAA8Bx/B,EAAA,CAAOu/B,CAAP,CADvC,CAGOA,CAJkB,CAQ3BhtB,QAASA,GAA4B,EAAG,CAiBtC,IAAA+J,KAAA,CAAYC,QAAQ,EAAG,CACrB,MAAOkjB,SAA0B,CAACC,CAAD,CAAS,CACxC,GAAKA,CAAAA,CAAL,CAAa,MAAO,EACpB,KAAIp9B,EAAQ,EACZ1J,GAAA,CAAc8mC,CAAd,CAAsB,QAAQ,CAACxmC,CAAD,CAAQZ,CAAR,CAAa,CAC3B,IAAd,GAAIY,CAAJ,EAAsByC,CAAA,CAAYzC,CAAZ,CAAtB,GACIvB,CAAA,CAAQuB,CAAR,CAAJ,CACEf,CAAA,CAAQe,CAAR,CAAe,QAAQ,CAACqmC,CAAD,CAAI,CACzBj9B,CAAA9E,KAAA,CAAWgF,EAAA,CAAelK,CAAf,CAAX,CAAkC,GAAlC,CAAwCkK,EAAA,CAAe88B,EAAA,CAAeC,CAAf,CAAf,CAAxC,CADyB,CAA3B,CADF,CAKEj9B,CAAA9E,KAAA,CAAWgF,EAAA,CAAelK,CAAf,CAAX,CAAiC,GAAjC,CAAuCkK,EAAA,CAAe88B,EAAA,CAAepmC,CAAf,CAAf,CAAvC,CANF,CADyC,CAA3C,CAWA,OAAOoJ,EAAAG,KAAA,CAAW,GAAX,CAdiC,CADrB,CAjBe,CAqCxCgQ,QAASA,GAAkC,EAAG,CA4C5C,IAAA6J,KAAA;AAAYC,QAAQ,EAAG,CACrB,MAAOojB,SAAkC,CAACD,CAAD,CAAS,CAMhDE,QAASA,EAAS,CAACC,CAAD,CAAcv8B,CAAd,CAAsBw8B,CAAtB,CAAgC,CAC5B,IAApB,GAAID,CAAJ,EAA4BlkC,CAAA,CAAYkkC,CAAZ,CAA5B,GACIloC,CAAA,CAAQkoC,CAAR,CAAJ,CACE1nC,CAAA,CAAQ0nC,CAAR,CAAqB,QAAQ,CAAC3mC,CAAD,CAAQ+D,CAAR,CAAe,CAC1C2iC,CAAA,CAAU1mC,CAAV,CAAiBoK,CAAjB,CAA0B,GAA1B,EAAiC1J,CAAA,CAASV,CAAT,CAAA,CAAkB+D,CAAlB,CAA0B,EAA3D,EAAiE,GAAjE,CAD0C,CAA5C,CADF,CAIWrD,CAAA,CAASimC,CAAT,CAAJ,EAA8B,CAAA7lC,EAAA,CAAO6lC,CAAP,CAA9B,CACLjnC,EAAA,CAAcinC,CAAd,CAA2B,QAAQ,CAAC3mC,CAAD,CAAQZ,CAAR,CAAa,CAC9CsnC,CAAA,CAAU1mC,CAAV,CAAiBoK,CAAjB,EACKw8B,CAAA,CAAW,EAAX,CAAgB,GADrB,EAEIxnC,CAFJ,EAGKwnC,CAAA,CAAW,EAAX,CAAgB,GAHrB,EAD8C,CAAhD,CADK,CAQLx9B,CAAA9E,KAAA,CAAWgF,EAAA,CAAec,CAAf,CAAX,CAAoC,GAApC,CAA0Cd,EAAA,CAAe88B,EAAA,CAAeO,CAAf,CAAf,CAA1C,CAbF,CADgD,CALlD,GAAKH,CAAAA,CAAL,CAAa,MAAO,EACpB,KAAIp9B,EAAQ,EACZs9B,EAAA,CAAUF,CAAV,CAAkB,EAAlB,CAAsB,CAAA,CAAtB,CACA,OAAOp9B,EAAAG,KAAA,CAAW,GAAX,CAJyC,CAD7B,CA5CqB,CAwE9Cs9B,QAASA,GAA4B,CAACp7B,CAAD,CAAOq7B,CAAP,CAAgB,CACnD,GAAIpoC,CAAA,CAAS+M,CAAT,CAAJ,CAAoB,CAElB,IAAIs7B,EAAWt7B,CAAAjE,QAAA,CAAaw/B,EAAb,CAAqC,EAArC,CAAA/oB,KAAA,EAEf,IAAI8oB,CAAJ,CAAc,CACZ,IAAIE,EAAcH,CAAA,CAAQ,cAAR,CACd,EAAC,CAAD,CAAC,CAAD,EAAC,CAAD,GAAC,CAAA,QAAA,CAAA,EAAA,CAAD,IAWN,CAXM,EAUFI,CAVE,CAAkEtlC,CAUxD0D,MAAA,CAAU6hC,EAAV,CAVV,GAWcC,EAAA,CAAUF,CAAA,CAAU,CAAV,CAAV,CAAAhkC,KAAA,CAXoDtB,CAWpD,CAXd,CAAA,EAAJ,GACE6J,CADF,CACSvE,EAAA,CAAS6/B,CAAT,CADT,CAFY,CAJI,CAYpB,MAAOt7B,EAb4C,CA2BrD47B,QAASA,GAAY,CAACP,CAAD,CAAU,CAAA,IACzB3oB,EAASnY,CAAA,EADgB,CACHnG,CAQtBnB,EAAA,CAASooC,CAAT,CAAJ,CACE7nC,CAAA,CAAQ6nC,CAAArjC,MAAA,CAAc,IAAd,CAAR,CAA6B,QAAQ,CAAC6jC,CAAD,CAAO,CAC1CznC,CAAA;AAAIynC,CAAAtjC,QAAA,CAAa,GAAb,CACS,KAAA,EAAAJ,CAAA,CAAUqa,CAAA,CAAKqpB,CAAA3b,OAAA,CAAY,CAAZ,CAAe9rB,CAAf,CAAL,CAAV,CAAoC,EAAA,CAAAoe,CAAA,CAAKqpB,CAAA3b,OAAA,CAAY9rB,CAAZ,CAAgB,CAAhB,CAAL,CAR/CT,EAAJ,GACE+e,CAAA,CAAO/e,CAAP,CADF,CACgB+e,CAAA,CAAO/e,CAAP,CAAA,CAAc+e,CAAA,CAAO/e,CAAP,CAAd,CAA4B,IAA5B,CAAmCwH,CAAnC,CAAyCA,CADzD,CAM4C,CAA5C,CADF,CAKWlG,CAAA,CAASomC,CAAT,CALX,EAME7nC,CAAA,CAAQ6nC,CAAR,CAAiB,QAAQ,CAACS,CAAD,CAAYC,CAAZ,CAAuB,CACjC,IAAA,EAAA5jC,CAAA,CAAU4jC,CAAV,CAAA,CAAsB,EAAAvpB,CAAA,CAAKspB,CAAL,CAZjCnoC,EAAJ,GACE+e,CAAA,CAAO/e,CAAP,CADF,CACgB+e,CAAA,CAAO/e,CAAP,CAAA,CAAc+e,CAAA,CAAO/e,CAAP,CAAd,CAA4B,IAA5B,CAAmCwH,CAAnC,CAAyCA,CADzD,CAWgD,CAAhD,CAKF,OAAOuX,EApBsB,CAoC/BspB,QAASA,GAAa,CAACX,CAAD,CAAU,CAC9B,IAAIY,CAEJ,OAAO,SAAQ,CAACr9B,CAAD,CAAO,CACfq9B,CAAL,GAAiBA,CAAjB,CAA+BL,EAAA,CAAaP,CAAb,CAA/B,CAEA,OAAIz8B,EAAJ,EACMrK,CAIGA,CAJK0nC,CAAA,CAAW9jC,CAAA,CAAUyG,CAAV,CAAX,CAILrK,CAHO,IAAK,EAGZA,GAHHA,CAGGA,GAFLA,CAEKA,CAFG,IAEHA,EAAAA,CALT,EAQO0nC,CAXa,CAHQ,CA8BhCC,QAASA,GAAa,CAACl8B,CAAD,CAAOq7B,CAAP,CAAgBc,CAAhB,CAAwBC,CAAxB,CAA6B,CACjD,GAAIxoC,CAAA,CAAWwoC,CAAX,CAAJ,CACE,MAAOA,EAAA,CAAIp8B,CAAJ,CAAUq7B,CAAV,CAAmBc,CAAnB,CAGT3oC,EAAA,CAAQ4oC,CAAR,CAAa,QAAQ,CAACthC,CAAD,CAAK,CACxBkF,CAAA,CAAOlF,CAAA,CAAGkF,CAAH,CAASq7B,CAAT,CAAkBc,CAAlB,CADiB,CAA1B,CAIA,OAAOn8B,EAT0C,CAwBnD0N,QAASA,GAAa,EAAG,CAiCvB,IAAI2uB,EAAW,IAAAA,SAAXA,CAA2B,CAE7BC,kBAAmB,CAAClB,EAAD,CAFU,CAK7BmB,iBAAkB,CAAC,QAAQ,CAACC,CAAD,CAAI,CAC7B,MAAOvnC,EAAA,CAASunC,CAAT,CAAA,EA1tTmB,eA0tTnB,GA1tTJzlC,EAAAjD,KAAA,CA0tT2B0oC,CA1tT3B,CA0tTI,EAhtTmB,eAgtTnB;AAhtTJzlC,EAAAjD,KAAA,CAgtTyC0oC,CAhtTzC,CAgtTI,EArtTmB,mBAqtTnB,GArtTJzlC,EAAAjD,KAAA,CAqtT2D0oC,CArtT3D,CAqtTI,CAA4DnhC,EAAA,CAAOmhC,CAAP,CAA5D,CAAwEA,CADlD,CAAb,CALW,CAU7BnB,QAAS,CACPoB,OAAQ,CACN,OAAU,mCADJ,CADD,CAIP3P,KAAQtnB,EAAA,CAAYk3B,EAAZ,CAJD,CAKPnkB,IAAQ/S,EAAA,CAAYk3B,EAAZ,CALD,CAMPC,MAAQn3B,EAAA,CAAYk3B,EAAZ,CAND,CAVoB,CAmB7BE,eAAgB,YAnBa,CAoB7BC,eAAgB,cApBa,CAsB7BC,gBAAiB,sBAtBY,CAA/B,CAyBIC,EAAgB,CAAA,CAoBpB,KAAAA,cAAA,CAAqBC,QAAQ,CAACzoC,CAAD,CAAQ,CACnC,MAAI0C,EAAA,CAAU1C,CAAV,CAAJ,EACEwoC,CACO,CADS,CAAExoC,CAAAA,CACX,CAAA,IAFT,EAIOwoC,CAL4B,CAQrC,KAAIE,EAAmB,CAAA,CAgBvB,KAAAC,2BAAA,CAAkCC,QAAQ,CAAC5oC,CAAD,CAAQ,CAChD,MAAI0C,EAAA,CAAU1C,CAAV,CAAJ,EACE0oC,CACO,CADY,CAAE1oC,CAAAA,CACd,CAAA,IAFT,EAIO0oC,CALyC,CAqBlD,KAAIG,EAAuB,IAAAC,aAAvBD,CAA2C,EAE/C,KAAAzlB,KAAA,CAAY,CAAC,cAAD,CAAiB,gBAAjB,CAAmC,eAAnC,CAAoD,YAApD,CAAkE,IAAlE,CAAwE,WAAxE;AACR,QAAQ,CAAC5J,CAAD,CAAesC,CAAf,CAA+B5D,CAA/B,CAA8CgC,CAA9C,CAA0DE,CAA1D,CAA8D4M,CAA9D,CAAyE,CAkjBnF9N,QAASA,EAAK,CAAC6vB,CAAD,CAAgB,CAwF5BhB,QAASA,EAAiB,CAACiB,CAAD,CAAW,CAEnC,IAAIC,EAAO1nC,CAAA,CAAO,EAAP,CAAWynC,CAAX,CACXC,EAAAx9B,KAAA,CAAYk8B,EAAA,CAAcqB,CAAAv9B,KAAd,CAA6Bu9B,CAAAlC,QAA7B,CAA+CkC,CAAApB,OAA/C,CACcz9B,CAAA49B,kBADd,CAEMH,EAAAA,CAAAoB,CAAApB,OAAlB,OAvxBC,IAuxBM,EAvxBCA,CAuxBD,EAvxBoB,GAuxBpB,CAvxBWA,CAuxBX,CACHqB,CADG,CAEH7uB,CAAA8uB,OAAA,CAAUD,CAAV,CAP+B,CAUrCE,QAASA,EAAgB,CAACrC,CAAD,CAAU38B,CAAV,CAAkB,CAAA,IACrCi/B,CADqC,CACtBC,EAAmB,EAEtCpqC,EAAA,CAAQ6nC,CAAR,CAAiB,QAAQ,CAACwC,CAAD,CAAWC,CAAX,CAAmB,CACtClqC,CAAA,CAAWiqC,CAAX,CAAJ,EACEF,CACA,CADgBE,CAAA,CAASn/B,CAAT,CAChB,CAAqB,IAArB,EAAIi/B,CAAJ,GACEC,CAAA,CAAiBE,CAAjB,CADF,CAC6BH,CAD7B,CAFF,EAMEC,CAAA,CAAiBE,CAAjB,CANF,CAM6BD,CAPa,CAA5C,CAWA,OAAOD,EAdkC,CAhG3C,GAAK,CAAA3oC,CAAA,CAASqoC,CAAT,CAAL,CACE,KAAM1qC,EAAA,CAAO,OAAP,CAAA,CAAgB,QAAhB,CAA0F0qC,CAA1F,CAAN,CAGF,GAAK,CAAArqC,CAAA,CAASqqC,CAAAze,IAAT,CAAL,CACE,KAAMjsB,EAAA,CAAO,OAAP,CAAA,CAAgB,QAAhB,CAA6F0qC,CAAAze,IAA7F,CAAN,CAGF,IAAIngB,EAAS5I,CAAA,CAAO,CAClBmO,OAAQ,KADU,CAElBs4B,iBAAkBF,CAAAE,iBAFA,CAGlBD,kBAAmBD,CAAAC,kBAHD,CAIlBQ,gBAAiBT,CAAAS,gBAJC,CAAP,CAKVQ,CALU,CAOb5+B,EAAA28B,QAAA,CAkGA0C,QAAqB,CAACr/B,CAAD,CAAS,CAAA,IACxBs/B;AAAa3B,CAAAhB,QADW,CAExB4C,EAAanoC,CAAA,CAAO,EAAP,CAAW4I,CAAA28B,QAAX,CAFW,CAGxB6C,CAHwB,CAGTC,CAHS,CAGeC,CAHf,CAK5BJ,EAAaloC,CAAA,CAAO,EAAP,CAAWkoC,CAAAvB,OAAX,CAA8BuB,CAAA,CAAW7lC,CAAA,CAAUuG,CAAAuF,OAAV,CAAX,CAA9B,CAGb,EAAA,CACA,IAAKi6B,CAAL,GAAsBF,EAAtB,CAAkC,CAChCG,CAAA,CAAyBhmC,CAAA,CAAU+lC,CAAV,CAEzB,KAAKE,CAAL,GAAsBH,EAAtB,CACE,GAAI9lC,CAAA,CAAUimC,CAAV,CAAJ,GAAiCD,CAAjC,CACE,SAAS,CAIbF,EAAA,CAAWC,CAAX,CAAA,CAA4BF,CAAA,CAAWE,CAAX,CATI,CAalC,MAAOR,EAAA,CAAiBO,CAAjB,CAA6Bz4B,EAAA,CAAY9G,CAAZ,CAA7B,CAtBqB,CAlGb,CAAa4+B,CAAb,CACjB5+B,EAAAuF,OAAA,CAAgB0B,EAAA,CAAUjH,CAAAuF,OAAV,CAChBvF,EAAAo+B,gBAAA,CAAyB7pC,CAAA,CAASyL,CAAAo+B,gBAAT,CAAA,CACvBvhB,CAAA1a,IAAA,CAAcnC,CAAAo+B,gBAAd,CADuB,CACiBp+B,CAAAo+B,gBAuB1C,KAAIuB,EAAQ,CArBQC,QAAQ,CAAC5/B,CAAD,CAAS,CACnC,IAAI28B,EAAU38B,CAAA28B,QAAd,CACIkD,EAAUrC,EAAA,CAAcx9B,CAAAsB,KAAd,CAA2Bg8B,EAAA,CAAcX,CAAd,CAA3B,CAAmDjiC,IAAAA,EAAnD,CAA8DsF,CAAA69B,iBAA9D,CAGVvlC,EAAA,CAAYunC,CAAZ,CAAJ,EACE/qC,CAAA,CAAQ6nC,CAAR,CAAiB,QAAQ,CAAC9mC,CAAD,CAAQupC,CAAR,CAAgB,CACb,cAA1B,GAAI3lC,CAAA,CAAU2lC,CAAV,CAAJ,EACI,OAAOzC,CAAA,CAAQyC,CAAR,CAF4B,CAAzC,CAOE9mC,EAAA,CAAY0H,CAAA8/B,gBAAZ,CAAJ,EAA4C,CAAAxnC,CAAA,CAAYqlC,CAAAmC,gBAAZ,CAA5C,GACE9/B,CAAA8/B,gBADF,CAC2BnC,CAAAmC,gBAD3B,CAKA,OAAOC,EAAA,CAAQ//B,CAAR,CAAgB6/B,CAAhB,CAAAzL,KAAA,CAA8BwJ,CAA9B;AAAiDA,CAAjD,CAlB4B,CAqBzB,CAAgBljC,IAAAA,EAAhB,CAAZ,CACIslC,EAAU/vB,CAAAgwB,KAAA,CAAQjgC,CAAR,CAYd,KATAlL,CAAA,CAAQorC,CAAR,CAA8B,QAAQ,CAACC,CAAD,CAAc,CAClD,CAAIA,CAAAC,QAAJ,EAA2BD,CAAAE,aAA3B,GACEV,CAAA/+B,QAAA,CAAcu/B,CAAAC,QAAd,CAAmCD,CAAAE,aAAnC,CAEF,EAAIF,CAAAtB,SAAJ,EAA4BsB,CAAAG,cAA5B,GACEX,CAAAxlC,KAAA,CAAWgmC,CAAAtB,SAAX,CAAiCsB,CAAAG,cAAjC,CALgD,CAApD,CASA,CAAOX,CAAAlrC,OAAP,CAAA,CAAqB,CACf8rC,CAAAA,CAASZ,CAAAxjB,MAAA,EACb,KAAIqkB,EAAWb,CAAAxjB,MAAA,EAAf,CAEA6jB,EAAUA,CAAA5L,KAAA,CAAamM,CAAb,CAAqBC,CAArB,CAJS,CAOjBjC,CAAJ,EACEyB,CAAAS,QASA,CATkBC,QAAQ,CAACtkC,CAAD,CAAK,CAC7B6H,EAAA,CAAY7H,CAAZ,CAAgB,IAAhB,CAEA4jC,EAAA5L,KAAA,CAAa,QAAQ,CAACyK,CAAD,CAAW,CAC9BziC,CAAA,CAAGyiC,CAAAv9B,KAAH,CAAkBu9B,CAAApB,OAAlB,CAAmCoB,CAAAlC,QAAnC,CAAqD38B,CAArD,CAD8B,CAAhC,CAGA,OAAOggC,EANsB,CAS/B,CAAAA,CAAAtgB,MAAA,CAAgBihB,QAAQ,CAACvkC,CAAD,CAAK,CAC3B6H,EAAA,CAAY7H,CAAZ,CAAgB,IAAhB,CAEA4jC,EAAA5L,KAAA,CAAa,IAAb,CAAmB,QAAQ,CAACyK,CAAD,CAAW,CACpCziC,CAAA,CAAGyiC,CAAAv9B,KAAH,CAAkBu9B,CAAApB,OAAlB,CAAmCoB,CAAAlC,QAAnC,CAAqD38B,CAArD,CADoC,CAAtC,CAGA,OAAOggC,EANoB,CAV/B,GAmBEA,CAAAS,QACA,CADkBG,EAAA,CAAoB,SAApB,CAClB,CAAAZ,CAAAtgB,MAAA,CAAgBkhB,EAAA,CAAoB,OAApB,CApBlB,CAuBA,OAAOZ,EAtFqB,CAwR9BD,QAASA,EAAO,CAAC//B,CAAD,CAAS6/B,CAAT,CAAkB,CA0DhCgB,QAASA,EAAmB,CAACC,CAAD,CAAgB,CAC1C,GAAIA,CAAJ,CAAmB,CACjB,IAAIC;AAAgB,EACpBjsC,EAAA,CAAQgsC,CAAR,CAAuB,QAAQ,CAACppB,CAAD,CAAeziB,CAAf,CAAoB,CACjD8rC,CAAA,CAAc9rC,CAAd,CAAA,CAAqB,QAAQ,CAAC0iB,CAAD,CAAQ,CASnCqpB,QAASA,EAAgB,EAAG,CAC1BtpB,CAAA,CAAaC,CAAb,CAD0B,CARxB0mB,CAAJ,CACEtuB,CAAAkxB,YAAA,CAAuBD,CAAvB,CADF,CAEWjxB,CAAAmxB,QAAJ,CACLF,CAAA,EADK,CAGLjxB,CAAA1O,OAAA,CAAkB2/B,CAAlB,CANiC,CADY,CAAnD,CAeA,OAAOD,EAjBU,CADuB,CA6B5CI,QAASA,EAAI,CAAC1D,CAAD,CAASoB,CAAT,CAAmBuC,CAAnB,CAAkCC,CAAlC,CAA8C,CAUzDC,QAASA,EAAkB,EAAG,CAC5BC,CAAA,CAAe1C,CAAf,CAAyBpB,CAAzB,CAAiC2D,CAAjC,CAAgDC,CAAhD,CAD4B,CAT1BxlB,CAAJ,GA1iCC,GA2iCC,EAAc4hB,CAAd,EA3iCyB,GA2iCzB,CAAcA,CAAd,CACE5hB,CAAAhC,IAAA,CAAUsG,CAAV,CAAe,CAACsd,CAAD,CAASoB,CAAT,CAAmB3B,EAAA,CAAakE,CAAb,CAAnB,CAAgDC,CAAhD,CAAf,CADF,CAIExlB,CAAAiI,OAAA,CAAa3D,CAAb,CALJ,CAaIke,EAAJ,CACEtuB,CAAAkxB,YAAA,CAAuBK,CAAvB,CADF,EAGEA,CAAA,EACA,CAAKvxB,CAAAmxB,QAAL,EAAyBnxB,CAAA1O,OAAA,EAJ3B,CAdyD,CA0B3DkgC,QAASA,EAAc,CAAC1C,CAAD,CAAWpB,CAAX,CAAmBd,CAAnB,CAA4B0E,CAA5B,CAAwC,CAE7D5D,CAAA,CAAoB,EAAX,EAAAA,CAAA,CAAeA,CAAf,CAAwB,CAEjC,EAvkCC,GAukCA,EAAUA,CAAV,EAvkC0B,GAukC1B,CAAUA,CAAV,CAAoB+D,CAAAC,QAApB,CAAuCD,CAAAzC,OAAxC,EAAyD,CACvDz9B,KAAMu9B,CADiD,CAEvDpB,OAAQA,CAF+C,CAGvDd,QAASW,EAAA,CAAcX,CAAd,CAH8C,CAIvD38B,OAAQA,CAJ+C,CAKvDqhC,WAAYA,CAL2C,CAAzD,CAJ6D,CAa/DK,QAASA,EAAwB,CAACzmB,CAAD,CAAS,CACxCsmB,CAAA,CAAetmB,CAAA3Z,KAAf,CAA4B2Z,CAAAwiB,OAA5B,CAA2C32B,EAAA,CAAYmU,CAAA0hB,QAAA,EAAZ,CAA3C,CAA0E1hB,CAAAomB,WAA1E,CADwC,CAI1CM,QAASA,EAAgB,EAAG,CAC1B,IAAIjX,EAAM3b,CAAA6yB,gBAAA/nC,QAAA,CAA8BmG,CAA9B,CACG,GAAb,GAAI0qB,CAAJ,EAAgB3b,CAAA6yB,gBAAA9nC,OAAA,CAA6B4wB,CAA7B;AAAkC,CAAlC,CAFU,CAlII,IAC5B8W,EAAWvxB,CAAAkS,MAAA,EADiB,CAE5B6d,EAAUwB,CAAAxB,QAFkB,CAG5BnkB,CAH4B,CAI5BgmB,CAJ4B,CAK5BtC,GAAav/B,CAAA28B,QALe,CAM5Bxc,EAAM2hB,CAAA,CAAS9hC,CAAAmgB,IAAT,CAAqBngB,CAAAo+B,gBAAA,CAAuBp+B,CAAAq8B,OAAvB,CAArB,CAEVttB,EAAA6yB,gBAAAznC,KAAA,CAA2B6F,CAA3B,CACAggC,EAAA5L,KAAA,CAAauN,CAAb,CAA+BA,CAA/B,CAGK9lB,EAAA7b,CAAA6b,MAAL,EAAqBA,CAAA8hB,CAAA9hB,MAArB,EAAyD,CAAA,CAAzD,GAAwC7b,CAAA6b,MAAxC,EACuB,KADvB,GACK7b,CAAAuF,OADL,EACkD,OADlD,GACgCvF,CAAAuF,OADhC,GAEEsW,CAFF,CAEUtlB,CAAA,CAASyJ,CAAA6b,MAAT,CAAA,CAAyB7b,CAAA6b,MAAzB,CACAtlB,CAAA,CAASonC,CAAA9hB,MAAT,CAAA,CAA2B8hB,CAAA9hB,MAA3B,CACAkmB,CAJV,CAOIlmB,EAAJ,GACEgmB,CACA,CADahmB,CAAA1Z,IAAA,CAAUge,CAAV,CACb,CAAI5nB,CAAA,CAAUspC,CAAV,CAAJ,CACoBA,CAAlB,EA7nVM3sC,CAAA,CA6nVY2sC,CA7nVDzN,KAAX,CA6nVN,CAEEyN,CAAAzN,KAAA,CAAgBsN,CAAhB,CAA0CA,CAA1C,CAFF,CAKMptC,CAAA,CAAQutC,CAAR,CAAJ,CACEN,CAAA,CAAeM,CAAA,CAAW,CAAX,CAAf,CAA8BA,CAAA,CAAW,CAAX,CAA9B,CAA6C/6B,EAAA,CAAY+6B,CAAA,CAAW,CAAX,CAAZ,CAA7C,CAAyEA,CAAA,CAAW,CAAX,CAAzE,CADF,CAGEN,CAAA,CAAeM,CAAf,CAA2B,GAA3B,CAAgC,EAAhC,CAAoC,IAApC,CATN,CAcEhmB,CAAAhC,IAAA,CAAUsG,CAAV,CAAe6f,CAAf,CAhBJ,CAuBI1nC,EAAA,CAAYupC,CAAZ,CAAJ,GAQE,CAPIG,CAOJ,CAPgBC,EAAA,CAAgBjiC,CAAAmgB,IAAhB,CAAA,CACVxO,CAAA,EAAA,CAAiB3R,CAAAk+B,eAAjB,EAA0CP,CAAAO,eAA1C,CADU,CAEVxjC,IAAAA,EAKN,IAHE6kC,EAAA,CAAYv/B,CAAAm+B,eAAZ,EAAqCR,CAAAQ,eAArC,CAGF,CAHmE6D,CAGnE,EAAA3yB,CAAA,CAAarP,CAAAuF,OAAb,CAA4B4a,CAA5B,CAAiC0f,CAAjC,CAA0CsB,CAA1C,CAAgD5B,EAAhD,CAA4Dv/B,CAAAkiC,QAA5D,CACIliC,CAAA8/B,gBADJ;AAC4B9/B,CAAAmiC,aAD5B,CAEItB,CAAA,CAAoB7gC,CAAA8gC,cAApB,CAFJ,CAGID,CAAA,CAAoB7gC,CAAAoiC,oBAApB,CAHJ,CARF,CAcA,OAAOpC,EAxDyB,CAyIlC8B,QAASA,EAAQ,CAAC3hB,CAAD,CAAMkiB,CAAN,CAAwB,CACT,CAA9B,CAAIA,CAAA5tC,OAAJ,GACE0rB,CADF,GACgC,EAAtB,EAACA,CAAAtmB,QAAA,CAAY,GAAZ,CAAD,CAA2B,GAA3B,CAAiC,GAD3C,EACkDwoC,CADlD,CAGA,OAAOliB,EAJgC,CAj9BzC,IAAI4hB,EAAeh0B,CAAA,CAAc,OAAd,CAKnB4vB,EAAAS,gBAAA,CAA2B7pC,CAAA,CAASopC,CAAAS,gBAAT,CAAA,CACzBvhB,CAAA1a,IAAA,CAAcw7B,CAAAS,gBAAd,CADyB,CACiBT,CAAAS,gBAO5C,KAAI8B,EAAuB,EAE3BprC,EAAA,CAAQ4pC,CAAR,CAA8B,QAAQ,CAAC4D,CAAD,CAAqB,CACzDpC,CAAAt/B,QAAA,CAA6BrM,CAAA,CAAS+tC,CAAT,CAAA,CACvBzlB,CAAA1a,IAAA,CAAcmgC,CAAd,CADuB,CACazlB,CAAA5b,OAAA,CAAiBqhC,CAAjB,CAD1C,CADyD,CAA3D,CA8qBAvzB,EAAA6yB,gBAAA,CAAwB,EA4GxBW,UAA2B,CAAC9rB,CAAD,CAAQ,CACjC3hB,CAAA,CAAQwC,SAAR,CAAmB,QAAQ,CAAC4I,CAAD,CAAO,CAChC6O,CAAA,CAAM7O,CAAN,CAAA,CAAc,QAAQ,CAACigB,CAAD,CAAMngB,CAAN,CAAc,CAClC,MAAO+O,EAAA,CAAM3X,CAAA,CAAO,EAAP,CAAW4I,CAAX,EAAqB,EAArB,CAAyB,CACpCuF,OAAQrF,CAD4B,CAEpCigB,IAAKA,CAF+B,CAAzB,CAAN,CAD2B,CADJ,CAAlC,CADiC,CAAnCoiB,CA1DA,CAAmB,KAAnB,CAA0B,QAA1B,CAAoC,MAApC,CAA4C,OAA5C,CAsEAC,UAAmC,CAACtiC,CAAD,CAAO,CACxCpL,CAAA,CAAQwC,SAAR,CAAmB,QAAQ,CAAC4I,CAAD,CAAO,CAChC6O,CAAA,CAAM7O,CAAN,CAAA,CAAc,QAAQ,CAACigB,CAAD;AAAM7e,CAAN,CAAYtB,CAAZ,CAAoB,CACxC,MAAO+O,EAAA,CAAM3X,CAAA,CAAO,EAAP,CAAW4I,CAAX,EAAqB,EAArB,CAAyB,CACpCuF,OAAQrF,CAD4B,CAEpCigB,IAAKA,CAF+B,CAGpC7e,KAAMA,CAH8B,CAAzB,CAAN,CADiC,CADV,CAAlC,CADwC,CAA1CkhC,CA9BA,CAA2B,MAA3B,CAAmC,KAAnC,CAA0C,OAA1C,CAYAzzB,EAAA4uB,SAAA,CAAiBA,CAGjB,OAAO5uB,EAxyB4E,CADzE,CA7HW,CA+mCzBS,QAASA,GAAmB,EAAG,CAC7B,IAAAyJ,KAAA,CAAYC,QAAQ,EAAG,CACrB,MAAOupB,SAAkB,EAAG,CAC1B,MAAO,KAAIxuC,CAAAyuC,eADe,CADP,CADM,CAyB/BpzB,QAASA,GAAoB,EAAG,CAC9B,IAAA2J,KAAA,CAAY,CAAC,UAAD,CAAa,SAAb,CAAwB,WAAxB,CAAqC,aAArC,CAAoD,QAAQ,CAACpL,CAAD,CAAWsD,CAAX,CAAoBhD,CAApB,CAA+BoB,CAA/B,CAA4C,CAClH,MAAOozB,GAAA,CAAkB90B,CAAlB,CAA4B0B,CAA5B,CAAyC1B,CAAAsU,MAAzC,CAAyDhR,CAAA1P,QAAAmhC,UAAzD,CAAoFz0B,CAAA,CAAU,CAAV,CAApF,CAD2G,CAAxG,CADkB,CAMhCw0B,QAASA,GAAiB,CAAC90B,CAAD,CAAW40B,CAAX,CAAsBI,CAAtB,CAAqCD,CAArC,CAAgDE,CAAhD,CAA6D,CAsHrFC,QAASA,EAAQ,CAAC5iB,CAAD,CAAM6iB,CAAN,CAAkB7B,CAAlB,CAAwB,CAAA,IAInCn5B,EAAS86B,CAAAlwB,cAAA,CAA0B,QAA1B,CAJ0B,CAIWoO,EAAW,IAC7DhZ,EAAA3M,KAAA,CAAc,iBACd2M,EAAAtR,IAAA,CAAaypB,CACbnY,EAAAi7B,MAAA,CAAe,CAAA,CAEfjiB,EAAA,CAAWA,QAAQ,CAACrJ,CAAD,CAAQ,CACH3P,CAx6RtBiN,oBAAA,CAw6R8B5Z,MAx6R9B,CAw6RsC2lB,CAx6RtC,CAAsC,CAAA,CAAtC,CAy6RsBhZ,EAz6RtBiN,oBAAA,CAy6R8B5Z,OAz6R9B;AAy6RuC2lB,CAz6RvC,CAAsC,CAAA,CAAtC,CA06RA8hB,EAAAI,KAAArsB,YAAA,CAA6B7O,CAA7B,CACAA,EAAA,CAAS,IACT,KAAIy1B,EAAU,EAAd,CACIvI,EAAO,SAEPvd,EAAJ,GACqB,MAInB,GAJIA,CAAAtc,KAIJ,EAJ8BunC,CAAA,CAAUI,CAAV,CAAAG,OAI9B,GAHExrB,CAGF,CAHU,CAAEtc,KAAM,OAAR,CAGV,EADA65B,CACA,CADOvd,CAAAtc,KACP,CAAAoiC,CAAA,CAAwB,OAAf,GAAA9lB,CAAAtc,KAAA,CAAyB,GAAzB,CAA+B,GAL1C,CAQI8lC,EAAJ,EACEA,CAAA,CAAK1D,CAAL,CAAavI,CAAb,CAjBuB,CAqBRltB,EA/7RjBo7B,iBAAA,CA+7RyB/nC,MA/7RzB,CA+7RiC2lB,CA/7RjC,CAAmC,CAAA,CAAnC,CAg8RiBhZ,EAh8RjBo7B,iBAAA,CAg8RyB/nC,OAh8RzB,CAg8RkC2lB,CAh8RlC,CAAmC,CAAA,CAAnC,CAi8RF8hB,EAAAI,KAAAvwB,YAAA,CAA6B3K,CAA7B,CACA,OAAOgZ,EAjCgC,CApHzC,MAAO,SAAQ,CAACzb,CAAD,CAAS4a,CAAT,CAAciO,CAAd,CAAoBpN,CAApB,CAA8B2b,CAA9B,CAAuCuF,CAAvC,CAAgDpC,CAAhD,CAAiEqC,CAAjE,CAA+ErB,CAA/E,CAA8FsB,CAA9F,CAAmH,CAmGhIiB,QAASA,EAAc,EAAG,CACxBC,CAAA,EAAaA,CAAA,EACbC,EAAA,EAAOA,CAAAC,MAAA,EAFiB,CAK1BC,QAASA,EAAe,CAACziB,CAAD,CAAWyc,CAAX,CAAmBoB,CAAnB,CAA6BuC,CAA7B,CAA4CC,CAA5C,CAAwD,CAE1E9oC,CAAA,CAAU+pB,CAAV,CAAJ,EACEugB,CAAAtgB,OAAA,CAAqBD,CAArB,CAEFghB,EAAA,CAAYC,CAAZ,CAAkB,IAElBviB,EAAA,CAASyc,CAAT,CAAiBoB,CAAjB,CAA2BuC,CAA3B,CAA0CC,CAA1C,CACAxzB,EAAA8S,6BAAA,CAAsC5oB,CAAtC,CAR8E,CAvGhF8V,CAAA+S,6BAAA,EACAT,EAAA,CAAMA,CAAN,EAAatS,CAAAsS,IAAA,EAEb,IAAyB,OAAzB,EAAI1mB,CAAA,CAAU8L,CAAV,CAAJ,CAAkC,CAChC,IAAIy9B,EAAa,GAAbA,CAAmB3qC,CAACuqC,CAAA17B,QAAA,EAAD7O,UAAA,CAA+B,EAA/B,CACvBuqC;CAAA,CAAUI,CAAV,CAAA,CAAwB,QAAQ,CAAC1hC,CAAD,CAAO,CACrCshC,CAAA,CAAUI,CAAV,CAAA1hC,KAAA,CAA6BA,CAC7BshC,EAAA,CAAUI,CAAV,CAAAG,OAAA,CAA+B,CAAA,CAFM,CAKvC,KAAIG,EAAYP,CAAA,CAAS5iB,CAAA9iB,QAAA,CAAY,eAAZ,CAA6B,oBAA7B,CAAoD2lC,CAApD,CAAT,CACZA,CADY,CACA,QAAQ,CAACvF,CAAD,CAASvI,CAAT,CAAe,CACrCuO,CAAA,CAAgBziB,CAAhB,CAA0Byc,CAA1B,CAAkCmF,CAAA,CAAUI,CAAV,CAAA1hC,KAAlC,CAA8D,EAA9D,CAAkE4zB,CAAlE,CACA0N,EAAA,CAAUI,CAAV,CAAA,CAAwBjrC,CAFa,CADvB,CAPgB,CAAlC,IAYO,CAEL,IAAIwrC,EAAMd,CAAA,CAAUl9B,CAAV,CAAkB4a,CAAlB,CAEVojB,EAAAG,KAAA,CAASn+B,CAAT,CAAiB4a,CAAjB,CAAsB,CAAA,CAAtB,CACArrB,EAAA,CAAQ6nC,CAAR,CAAiB,QAAQ,CAAC9mC,CAAD,CAAQZ,CAAR,CAAa,CAChCsD,CAAA,CAAU1C,CAAV,CAAJ,EACI0tC,CAAAI,iBAAA,CAAqB1uC,CAArB,CAA0BY,CAA1B,CAFgC,CAAtC,CAMA0tC,EAAAK,OAAA,CAAaC,QAAsB,EAAG,CACpC,IAAIxC,EAAakC,CAAAlC,WAAbA,EAA+B,EAAnC,CAIIxC,EAAY,UAAD,EAAe0E,EAAf,CAAsBA,CAAA1E,SAAtB,CAAqC0E,CAAAO,aAJpD,CAOIrG,EAAwB,IAAf,GAAA8F,CAAA9F,OAAA,CAAsB,GAAtB,CAA4B8F,CAAA9F,OAK1B,EAAf,GAAIA,CAAJ,GACEA,CADF,CACWoB,CAAA,CAAW,GAAX,CAA6C,MAA5B,EAAAkF,EAAA,CAAW5jB,CAAX,CAAA6jB,SAAA,CAAqC,GAArC,CAA2C,CADvE,CAIAP,EAAA,CAAgBziB,CAAhB,CACIyc,CADJ,CAEIoB,CAFJ,CAGI0E,CAAAU,sBAAA,EAHJ,CAII5C,CAJJ,CAjBoC,CAwBlChB,EAAAA,CAAeA,QAAQ,EAAG,CAG5BoD,CAAA,CAAgBziB,CAAhB,CAA2B,EAA3B,CAA8B,IAA9B,CAAoC,IAApC,CAA0C,EAA1C,CAH4B,CAM9BuiB,EAAAW,QAAA,CAAc7D,CACdkD,EAAAY,QAAA,CAAc9D,CAEdvrC,EAAA,CAAQgsC,CAAR,CAAuB,QAAQ,CAACjrC,CAAD;AAAQZ,CAAR,CAAa,CACxCsuC,CAAAH,iBAAA,CAAqBnuC,CAArB,CAA0BY,CAA1B,CADwC,CAA5C,CAIAf,EAAA,CAAQstC,CAAR,CAA6B,QAAQ,CAACvsC,CAAD,CAAQZ,CAAR,CAAa,CAChDsuC,CAAAa,OAAAhB,iBAAA,CAA4BnuC,CAA5B,CAAiCY,CAAjC,CADgD,CAAlD,CAIIiqC,EAAJ,GACEyD,CAAAzD,gBADF,CACwB,CAAA,CADxB,CAIA,IAAIqC,CAAJ,CACE,GAAI,CACFoB,CAAApB,aAAA,CAAmBA,CADjB,CAEF,MAAO/jC,CAAP,CAAU,CAQV,GAAqB,MAArB,GAAI+jC,CAAJ,CACE,KAAM/jC,EAAN,CATQ,CAcdmlC,CAAAc,KAAA,CAAS/rC,CAAA,CAAY81B,CAAZ,CAAA,CAAoB,IAApB,CAA2BA,CAApC,CAzEK,CA4EP,GAAc,CAAd,CAAI8T,CAAJ,CACE,IAAI5f,EAAYugB,CAAA,CAAcQ,CAAd,CAA8BnB,CAA9B,CADlB,KAEyBA,EAAlB,EA74VKhtC,CAAA,CA64VagtC,CA74VF9N,KAAX,CA64VL,EACL8N,CAAA9N,KAAA,CAAaiP,CAAb,CA/F8H,CAF7C,CAkNvFz0B,QAASA,GAAoB,EAAG,CAC9B,IAAIorB,EAAc,IAAlB,CACIC,EAAY,IAWhB,KAAAD,YAAA,CAAmBsK,QAAQ,CAACzuC,CAAD,CAAQ,CACjC,MAAIA,EAAJ,EACEmkC,CACO,CADOnkC,CACP,CAAA,IAFT,EAISmkC,CALwB,CAkBnC,KAAAC,UAAA,CAAiBsK,QAAQ,CAAC1uC,CAAD,CAAQ,CAC/B,MAAIA,EAAJ,EACEokC,CACO,CADKpkC,CACL,CAAA,IAFT,EAISokC,CALsB,CAUjC,KAAAhhB,KAAA,CAAY,CAAC,QAAD,CAAW,mBAAX,CAAgC,MAAhC,CAAwC,QAAQ,CAACpJ,CAAD,CAASxB,CAAT,CAA4BgC,CAA5B,CAAkC,CAM5Fm0B,QAASA,EAAM,CAACC,CAAD,CAAK,CAClB,MAAO,QAAP,CAAkBA,CADA,CAIpBC,QAASA,EAAY,CAACxP,CAAD,CAAO,CAC1B,MAAOA,EAAA73B,QAAA,CAAasnC,CAAb,CAAiC3K,CAAjC,CAAA38B,QAAA,CACGunC,CADH;AACqB3K,CADrB,CADmB,CAuB5B4K,QAASA,EAAqB,CAAC1jC,CAAD,CAAQmf,CAAR,CAAkBwkB,CAAlB,CAAkCC,CAAlC,CAAkD,CAC9E,IAAIC,CACJ,OAAOA,EAAP,CAAiB7jC,CAAAxI,OAAA,CAAassC,QAAiC,CAAC9jC,CAAD,CAAQ,CACrE6jC,CAAA,EACA,OAAOD,EAAA,CAAe5jC,CAAf,CAF8D,CAAtD,CAGdmf,CAHc,CAGJwkB,CAHI,CAF6D,CA8HhFn2B,QAASA,EAAY,CAACumB,CAAD,CAAOgQ,CAAP,CAA2BhP,CAA3B,CAA2CD,CAA3C,CAAyD,CAuG5EkP,QAASA,EAAyB,CAACtvC,CAAD,CAAQ,CACxC,GAAI,CACeA,IAAAA,EAAAA,CAvCjB,EAAA,CAAOqgC,CAAA,CACL7lB,CAAA+0B,WAAA,CAAgBlP,CAAhB,CAAgCrgC,CAAhC,CADK,CAELwa,CAAAxZ,QAAA,CAAahB,CAAb,CAsCK,KAAA,CAAA,IAAAogC,CAAA,EAAiB,CAAA19B,CAAA,CAAU1C,CAAV,CAAjB,CAAoCA,CAAAA,CAAAA,CAApC,KAzPX,IAAa,IAAb,EAAIA,CAAJ,CACE,CAAA,CAAO,EADT,KAAA,CAGA,OAAQ,MAAOA,EAAf,EACE,KAAK,QAAL,CACE,KACF,MAAK,QAAL,CACEA,CAAA,CAAQ,EAAR,CAAaA,CACb,MACF,SACEA,CAAA,CAAQ8G,EAAA,CAAO9G,CAAP,CAPZ,CAUA,CAAA,CAAOA,CAbP,CAyPI,MAAO,EAFL,CAGF,MAAOqmB,CAAP,CAAY,CACZ7N,CAAA,CAAkBg3B,EAAAC,OAAA,CAA0BpQ,CAA1B,CAAgChZ,CAAhC,CAAlB,CADY,CAJ0B,CArG1C,GAAKznB,CAAAygC,CAAAzgC,OAAL,EAAmD,EAAnD,GAAoBygC,CAAAr7B,QAAA,CAAamgC,CAAb,CAApB,CAAsD,CACpD,IAAI+K,CACCG,EAAL,GACMK,CAIJ,CAJoBb,CAAA,CAAaxP,CAAb,CAIpB,CAHA6P,CAGA,CAHiB7sC,EAAA,CAAQqtC,CAAR,CAGjB,CAFAR,CAAAS,IAEA,CAFqBtQ,CAErB,CADA6P,CAAApP,YACA,CAD6B,EAC7B,CAAAoP,CAAAU,gBAAA,CAAiCZ,CALnC,CAOA,OAAOE,EAT6C,CAYtD9O,CAAA,CAAe,CAAEA,CAAAA,CAd2D,KAexE35B,CAfwE,CAgBxEopC,CAhBwE,CAiBxE9rC,EAAQ,CAjBgE,CAkBxE+7B,EAAc,EAlB0D,CAmBxEgQ,EAAW,EACXC,EAAAA,CAAa1Q,CAAAzgC,OAKjB,KAzB4E,IAsBxEsH,EAAS,EAtB+D,CAuBxE8pC,EAAsB,EAE1B,CAAOjsC,CAAP;AAAegsC,CAAf,CAAA,CACE,GAAyD,EAAzD,GAAMtpC,CAAN,CAAmB44B,CAAAr7B,QAAA,CAAamgC,CAAb,CAA0BpgC,CAA1B,CAAnB,GAC+E,EAD/E,GACO8rC,CADP,CACkBxQ,CAAAr7B,QAAA,CAAaogC,CAAb,CAAwB39B,CAAxB,CAAqCwpC,CAArC,CADlB,EAEMlsC,CAQJ,GARc0C,CAQd,EAPEP,CAAA5B,KAAA,CAAYuqC,CAAA,CAAaxP,CAAAn2B,UAAA,CAAenF,CAAf,CAAsB0C,CAAtB,CAAb,CAAZ,CAOF,CALAkpC,CAKA,CALMtQ,CAAAn2B,UAAA,CAAezC,CAAf,CAA4BwpC,CAA5B,CAA+CJ,CAA/C,CAKN,CAJA/P,CAAAx7B,KAAA,CAAiBqrC,CAAjB,CAIA,CAHAG,CAAAxrC,KAAA,CAAc0V,CAAA,CAAO21B,CAAP,CAAYL,CAAZ,CAAd,CAGA,CAFAvrC,CAEA,CAFQ8rC,CAER,CAFmBK,CAEnB,CADAF,CAAA1rC,KAAA,CAAyB4B,CAAAtH,OAAzB,CACA,CAAAsH,CAAA5B,KAAA,CAAY,EAAZ,CAVF,KAWO,CAEDP,CAAJ,GAAcgsC,CAAd,EACE7pC,CAAA5B,KAAA,CAAYuqC,CAAA,CAAaxP,CAAAn2B,UAAA,CAAenF,CAAf,CAAb,CAAZ,CAEF,MALK,CAeLs8B,CAAJ,EAAsC,CAAtC,CAAsBn6B,CAAAtH,OAAtB,EACI4wC,EAAAW,cAAA,CAAiC9Q,CAAjC,CAGJ,IAAKgQ,CAAAA,CAAL,EAA2BvP,CAAAlhC,OAA3B,CAA+C,CAC7C,IAAIwxC,GAAUA,QAAQ,CAACrL,CAAD,CAAS,CAC7B,IAD6B,IACpBllC,EAAI,CADgB,CACbY,EAAKq/B,CAAAlhC,OAArB,CAAyCiB,CAAzC,CAA6CY,CAA7C,CAAiDZ,CAAA,EAAjD,CAAsD,CACpD,GAAIugC,CAAJ,EAAoB39B,CAAA,CAAYsiC,CAAA,CAAOllC,CAAP,CAAZ,CAApB,CAA4C,MAC5CqG,EAAA,CAAO8pC,CAAA,CAAoBnwC,CAApB,CAAP,CAAA,CAAiCklC,CAAA,CAAOllC,CAAP,CAFmB,CAItD,MAAOqG,EAAAqD,KAAA,CAAY,EAAZ,CALsB,CAc/B,OAAOhI,EAAA,CAAO8uC,QAAwB,CAAClxC,CAAD,CAAU,CAC5C,IAAIU,EAAI,CAAR,CACIY,EAAKq/B,CAAAlhC,OADT,CAEImmC,EAAahmC,KAAJ,CAAU0B,CAAV,CAEb,IAAI,CACF,IAAA,CAAOZ,CAAP,CAAWY,CAAX,CAAeZ,CAAA,EAAf,CACEklC,CAAA,CAAOllC,CAAP,CAAA,CAAYiwC,CAAA,CAASjwC,CAAT,CAAA,CAAYV,CAAZ,CAGd,OAAOixC,GAAA,CAAQrL,CAAR,CALL,CAMF,MAAO1e,CAAP,CAAY,CACZ7N,CAAA,CAAkBg3B,EAAAC,OAAA,CAA0BpQ,CAA1B,CAAgChZ,CAAhC,CAAlB,CADY,CAX8B,CAAzC,CAeF,CAEHspB,IAAKtQ,CAFF,CAGHS,YAAaA,CAHV;AAIH8P,gBAAiBA,QAAQ,CAACtkC,CAAD,CAAQmf,CAAR,CAAkB,CACzC,IAAIoX,CACJ,OAAOv2B,EAAAglC,YAAA,CAAkBR,CAAlB,CAA4BS,QAA6B,CAACxL,CAAD,CAASyL,CAAT,CAAoB,CAClF,IAAIC,EAAYL,EAAA,CAAQrL,CAAR,CACZ1lC,EAAA,CAAWorB,CAAX,CAAJ,EACEA,CAAAlrB,KAAA,CAAc,IAAd,CAAoBkxC,CAApB,CAA+B1L,CAAA,GAAWyL,CAAX,CAAuB3O,CAAvB,CAAmC4O,CAAlE,CAA6EnlC,CAA7E,CAEFu2B,EAAA,CAAY4O,CALsE,CAA7E,CAFkC,CAJxC,CAfE,CAfsC,CAxD6B,CA/Jc,IACxFR,EAAoB9L,CAAAvlC,OADoE,CAExFsxC,EAAkB9L,CAAAxlC,OAFsE,CAGxFkwC,EAAqB,IAAI5tC,MAAJ,CAAWijC,CAAA38B,QAAA,CAAoB,IAApB,CAA0BmnC,CAA1B,CAAX,CAA8C,GAA9C,CAHmE,CAIxFI,EAAmB,IAAI7tC,MAAJ,CAAWkjC,CAAA58B,QAAA,CAAkB,IAAlB,CAAwBmnC,CAAxB,CAAX,CAA4C,GAA5C,CAwRvB71B,EAAAqrB,YAAA,CAA2BuM,QAAQ,EAAG,CACpC,MAAOvM,EAD6B,CAgBtCrrB,EAAAsrB,UAAA,CAAyBuM,QAAQ,EAAG,CAClC,MAAOvM,EAD2B,CAIpC,OAAOtrB,EAhTqF,CAAlF,CAzCkB,CA6VhCG,QAASA,GAAiB,EAAG,CAC3B,IAAAmK,KAAA,CAAY,CAAC,YAAD,CAAe,SAAf,CAA0B,IAA1B,CAAgC,KAAhC,CAAuC,UAAvC,CACP,QAAQ,CAAClJ,CAAD,CAAeoB,CAAf,CAA0BlB,CAA1B,CAAgCE,CAAhC,CAAuCtC,CAAvC,CAAiD,CAiI5D44B,QAASA,EAAQ,CAACrqC,CAAD,CAAKimB,CAAL,CAAYqkB,CAAZ,CAAmBC,CAAnB,CAAgC,CAkC/C3lB,QAASA,EAAQ,EAAG,CACb4lB,CAAL,CAGExqC,CAAAG,MAAA,CAAS,IAAT,CAAe+d,CAAf,CAHF,CACEle,CAAA,CAAGyqC,CAAH,CAFgB,CAlC2B,IAC3CD,EAA+B,CAA/BA,CAAYtvC,SAAA7C,OAD+B,CAE3C6lB,EAAOssB,CAAA,CA5gWRvvC,EAAAjC,KAAA,CA4gW8BkC,SA5gW9B,CA4gWyCgF,CA5gWzC,CA4gWQ;AAAsC,EAFF,CAG3CwqC,EAAc31B,CAAA21B,YAH6B,CAI3CC,EAAgB51B,CAAA41B,cAJ2B,CAK3CF,EAAY,CAL+B,CAM3CG,EAAazuC,CAAA,CAAUouC,CAAV,CAAbK,EAAuC,CAACL,CANG,CAO3CnF,EAAWrf,CAAC6kB,CAAA,CAAY72B,CAAZ,CAAkBF,CAAnBkS,OAAA,EAPgC,CAQ3C6d,EAAUwB,CAAAxB,QAEd0G,EAAA,CAAQnuC,CAAA,CAAUmuC,CAAV,CAAA,CAAmBA,CAAnB,CAA2B,CAEnC1G,EAAAiH,aAAA,CAAuBH,CAAA,CAAYI,QAAa,EAAG,CAC7CF,CAAJ,CACEn5B,CAAAsU,MAAA,CAAenB,CAAf,CADF,CAGEjR,CAAArX,WAAA,CAAsBsoB,CAAtB,CAEFwgB,EAAA2F,OAAA,CAAgBN,CAAA,EAAhB,CAEY,EAAZ,CAAIH,CAAJ,EAAiBG,CAAjB,EAA8BH,CAA9B,GACElF,CAAAC,QAAA,CAAiBoF,CAAjB,CAEA,CADAE,CAAA,CAAc/G,CAAAiH,aAAd,CACA,CAAA,OAAOG,CAAA,CAAUpH,CAAAiH,aAAV,CAHT,CAMKD,EAAL,EAAgBj3B,CAAA1O,OAAA,EAdiC,CAA5B,CAgBpBghB,CAhBoB,CAkBvB+kB,EAAA,CAAUpH,CAAAiH,aAAV,CAAA,CAAkCzF,CAElC,OAAOxB,EAhCwC,CAhIjD,IAAIoH,EAAY,EAsLhBX,EAAAlkB,OAAA,CAAkB8kB,QAAQ,CAACrH,CAAD,CAAU,CAClC,MAAIA,EAAJ,EAAeA,CAAAiH,aAAf,GAAuCG,EAAvC,EACEA,CAAA,CAAUpH,CAAAiH,aAAV,CAAAlI,OAAA,CAAuC,UAAvC,CAGO,CAFP5tB,CAAA41B,cAAA,CAAsB/G,CAAAiH,aAAtB,CAEO,CADP,OAAOG,CAAA,CAAUpH,CAAAiH,aAAV,CACA,CAAA,CAAA,CAJT,EAMO,CAAA,CAP2B,CAUpC,OAAOR,EAjMqD,CADlD,CADe,CA6N7Ba,QAASA,GAAU,CAACjjC,CAAD,CAAO,CACpBkjC,CAAAA,CAAWljC,CAAA/K,MAAA,CAAW,GAAX,CAGf,KAHA,IACI5D,EAAI6xC,CAAA9yC,OAER,CAAOiB,CAAA,EAAP,CAAA,CACE6xC,CAAA,CAAS7xC,CAAT,CAAA;AAAc2J,EAAA,CAAiBkoC,CAAA,CAAS7xC,CAAT,CAAjB,CAGhB,OAAO6xC,EAAAnoC,KAAA,CAAc,GAAd,CARiB,CAW1BooC,QAASA,GAAgB,CAACC,CAAD,CAAcC,CAAd,CAA2B,CAClD,IAAIC,EAAY5D,EAAA,CAAW0D,CAAX,CAEhBC,EAAAE,WAAA,CAAyBD,CAAA3D,SACzB0D,EAAAG,OAAA,CAAqBF,CAAAG,SACrBJ,EAAAK,OAAA,CAAqBvwC,EAAA,CAAMmwC,CAAAK,KAAN,CAArB,EAA8CC,EAAA,CAAcN,CAAA3D,SAAd,CAA9C,EAAmF,IALjC,CASpDkE,QAASA,GAAW,CAACC,CAAD,CAAcT,CAAd,CAA2B,CAC7C,IAAIU,EAAsC,GAAtCA,GAAYD,CAAArsC,OAAA,CAAmB,CAAnB,CACZssC,EAAJ,GACED,CADF,CACgB,GADhB,CACsBA,CADtB,CAGA,KAAIhtC,EAAQ4oC,EAAA,CAAWoE,CAAX,CACZT,EAAAW,OAAA,CAAqB1pC,kBAAA,CAAmBypC,CAAA,EAAyC,GAAzC,GAAYjtC,CAAAmtC,SAAAxsC,OAAA,CAAsB,CAAtB,CAAZ,CACpCX,CAAAmtC,SAAAvpC,UAAA,CAAyB,CAAzB,CADoC,CACN5D,CAAAmtC,SADb,CAErBZ,EAAAa,SAAA,CAAuB3pC,EAAA,CAAczD,CAAAqtC,OAAd,CACvBd,EAAAe,OAAA,CAAqB9pC,kBAAA,CAAmBxD,CAAAojB,KAAnB,CAGjBmpB,EAAAW,OAAJ,EAA0D,GAA1D,EAA0BX,CAAAW,OAAAvsC,OAAA,CAA0B,CAA1B,CAA1B,GACE4rC,CAAAW,OADF,CACuB,GADvB,CAC6BX,CAAAW,OAD7B,CAZ6C,CA4B/CK,QAASA,GAAY,CAACC,CAAD,CAAOxoB,CAAP,CAAY,CAC/B,GAX2C,CAW3C,GAAeA,CAXRyoB,YAAA,CAWaD,CAXb,CAA6B,CAA7B,CAWP,CACE,MAAOxoB,EAAAqB,OAAA,CAAWmnB,CAAAl0C,OAAX,CAFsB,CAOjC8sB,QAASA,GAAS,CAACpB,CAAD,CAAM,CACtB,IAAIvmB;AAAQumB,CAAAtmB,QAAA,CAAY,GAAZ,CACZ,OAAiB,EAAV,EAAAD,CAAA,CAAcumB,CAAd,CAAoBA,CAAAqB,OAAA,CAAW,CAAX,CAAc5nB,CAAd,CAFL,CAKxBivC,QAASA,GAAa,CAAC1oB,CAAD,CAAM,CAC1B,MAAOA,EAAA9iB,QAAA,CAAY,UAAZ,CAAwB,IAAxB,CADmB,CAwB5ByrC,QAASA,GAAgB,CAACC,CAAD,CAAUC,CAAV,CAAyBC,CAAzB,CAAqC,CAC5D,IAAAC,QAAA,CAAe,CAAA,CACfD,EAAA,CAAaA,CAAb,EAA2B,EAC3BzB,GAAA,CAAiBuB,CAAjB,CAA0B,IAA1B,CAQA,KAAAI,QAAA,CAAeC,QAAQ,CAACjpB,CAAD,CAAM,CAC3B,IAAIkpB,EAAUX,EAAA,CAAaM,CAAb,CAA4B7oB,CAA5B,CACd,IAAK,CAAA5rB,CAAA,CAAS80C,CAAT,CAAL,CACE,KAAMC,GAAA,CAAgB,UAAhB,CAA6EnpB,CAA7E,CACF6oB,CADE,CAAN,CAIFd,EAAA,CAAYmB,CAAZ,CAAqB,IAArB,CAEK,KAAAhB,OAAL,GACE,IAAAA,OADF,CACgB,GADhB,CAIA,KAAAkB,UAAA,EAb2B,CAoB7B,KAAAA,UAAA,CAAiBC,QAAQ,EAAG,CAAA,IACtBhB,EAASxpC,EAAA,CAAW,IAAAupC,SAAX,CADa,CAEtBhqB,EAAO,IAAAkqB,OAAA,CAAc,GAAd,CAAoBppC,EAAA,CAAiB,IAAAopC,OAAjB,CAApB,CAAoD,EAE/D,KAAAgB,MAAA,CAAanC,EAAA,CAAW,IAAAe,OAAX,CAAb,EAAwCG,CAAA,CAAS,GAAT,CAAeA,CAAf,CAAwB,EAAhE,EAAsEjqB,CACtE,KAAAmrB,SAAA,CAAgBV,CAAhB,CAAgC,IAAAS,MAAAjoB,OAAA,CAAkB,CAAlB,CALN,CAQ5B,KAAAmoB,eAAA,CAAsBC,QAAQ,CAACzpB,CAAD,CAAM0pB,CAAN,CAAe,CAC3C,GAAIA,CAAJ,EAA8B,GAA9B,GAAeA,CAAA,CAAQ,CAAR,CAAf,CAIE,MADA,KAAAtrB,KAAA,CAAUsrB,CAAAxyC,MAAA,CAAc,CAAd,CAAV,CACO;AAAA,CAAA,CALkC,KAOvCyyC,CAPuC,CAO/BC,CAGRxxC,EAAA,CAAUuxC,CAAV,CAAmBpB,EAAA,CAAaK,CAAb,CAAsB5oB,CAAtB,CAAnB,CAAJ,EACE4pB,CAEE,CAFWD,CAEX,CAAAE,CAAA,CADEzxC,CAAA,CAAUuxC,CAAV,CAAmBpB,EAAA,CAAaO,CAAb,CAAyBa,CAAzB,CAAnB,CAAJ,CACiBd,CADjB,EACkCN,EAAA,CAAa,GAAb,CAAkBoB,CAAlB,CADlC,EAC+DA,CAD/D,EAGiBf,CAHjB,CAG2BgB,CAL7B,EAOWxxC,CAAA,CAAUuxC,CAAV,CAAmBpB,EAAA,CAAaM,CAAb,CAA4B7oB,CAA5B,CAAnB,CAAJ,CACL6pB,CADK,CACUhB,CADV,CAC0Bc,CAD1B,CAEId,CAFJ,EAEqB7oB,CAFrB,CAE2B,GAF3B,GAGL6pB,CAHK,CAGUhB,CAHV,CAKHgB,EAAJ,EACE,IAAAb,QAAA,CAAaa,CAAb,CAEF,OAAO,CAAEA,CAAAA,CAzBkC,CAvCe,CA+E9DC,QAASA,GAAmB,CAAClB,CAAD,CAAUC,CAAV,CAAyBkB,CAAzB,CAAqC,CAE/D1C,EAAA,CAAiBuB,CAAjB,CAA0B,IAA1B,CAQA,KAAAI,QAAA,CAAeC,QAAQ,CAACjpB,CAAD,CAAM,CAC3B,IAAIgqB,EAAiBzB,EAAA,CAAaK,CAAb,CAAsB5oB,CAAtB,CAAjBgqB,EAA+CzB,EAAA,CAAaM,CAAb,CAA4B7oB,CAA5B,CAAnD,CACIiqB,CAEC9xC,EAAA,CAAY6xC,CAAZ,CAAL,EAAiE,GAAjE,GAAoCA,CAAAruC,OAAA,CAAsB,CAAtB,CAApC,CAcM,IAAAotC,QAAJ,CACEkB,CADF,CACmBD,CADnB,EAGEC,CACA,CADiB,EACjB,CAAI9xC,CAAA,CAAY6xC,CAAZ,CAAJ,GACEpB,CACA,CADU5oB,CACV,CAAA,IAAA9iB,QAAA,EAFF,CAJF,CAdF,EAIE+sC,CACA,CADiB1B,EAAA,CAAawB,CAAb,CAAyBC,CAAzB,CACjB,CAAI7xC,CAAA,CAAY8xC,CAAZ,CAAJ,GAEEA,CAFF,CAEmBD,CAFnB,CALF,CAyBAjC,GAAA,CAAYkC,CAAZ,CAA4B,IAA5B,CAEqC/B,EAAAA,CAAAA,IAAAA,OAA6BU,KAAAA,EAAAA,CAAAA,CAoB5DsB,EAAqB,iBA1Lc,EA+LvC,GAAelqB,CA/LZyoB,YAAA,CA+LiBD,CA/LjB,CAA6B,CAA7B,CA+LH,GACExoB,CADF,CACQA,CAAA9iB,QAAA,CAAYsrC,CAAZ,CAAkB,EAAlB,CADR,CAKI0B,EAAAv3B,KAAA,CAAwBqN,CAAxB,CAAJ,GAKA,CALA,CAKO,CADPmqB,CACO,CADiBD,CAAAv3B,KAAA,CAAwBzO,CAAxB,CACjB,EAAwBimC,CAAA,CAAsB,CAAtB,CAAxB,CAAmDjmC,CAL1D,CA9BF,KAAAgkC,OAAA,CAAc,CAEd,KAAAkB,UAAA,EAjC2B,CA0E7B,KAAAA,UAAA,CAAiBC,QAAQ,EAAG,CAAA,IACtBhB;AAASxpC,EAAA,CAAW,IAAAupC,SAAX,CADa,CAEtBhqB,EAAO,IAAAkqB,OAAA,CAAc,GAAd,CAAoBppC,EAAA,CAAiB,IAAAopC,OAAjB,CAApB,CAAoD,EAE/D,KAAAgB,MAAA,CAAanC,EAAA,CAAW,IAAAe,OAAX,CAAb,EAAwCG,CAAA,CAAS,GAAT,CAAeA,CAAf,CAAwB,EAAhE,EAAsEjqB,CACtE,KAAAmrB,SAAA,CAAgBX,CAAhB,EAA2B,IAAAU,MAAA,CAAaS,CAAb,CAA0B,IAAAT,MAA1B,CAAuC,EAAlE,CAL0B,CAQ5B,KAAAE,eAAA,CAAsBC,QAAQ,CAACzpB,CAAD,CAAM0pB,CAAN,CAAe,CAC3C,MAAItoB,GAAA,CAAUwnB,CAAV,CAAJ,EAA0BxnB,EAAA,CAAUpB,CAAV,CAA1B,EACE,IAAAgpB,QAAA,CAAahpB,CAAb,CACO,CAAA,CAAA,CAFT,EAIO,CAAA,CALoC,CA5FkB,CAgHjEoqB,QAASA,GAA0B,CAACxB,CAAD,CAAUC,CAAV,CAAyBkB,CAAzB,CAAqC,CACtE,IAAAhB,QAAA,CAAe,CAAA,CACfe,GAAA1tC,MAAA,CAA0B,IAA1B,CAAgCjF,SAAhC,CAEA,KAAAqyC,eAAA,CAAsBC,QAAQ,CAACzpB,CAAD,CAAM0pB,CAAN,CAAe,CAC3C,GAAIA,CAAJ,EAA8B,GAA9B,GAAeA,CAAA,CAAQ,CAAR,CAAf,CAIE,MADA,KAAAtrB,KAAA,CAAUsrB,CAAAxyC,MAAA,CAAc,CAAd,CAAV,CACO,CAAA,CAAA,CAGT,KAAI2yC,CAAJ,CACIF,CAEAf,EAAJ,EAAexnB,EAAA,CAAUpB,CAAV,CAAf,CACE6pB,CADF,CACiB7pB,CADjB,CAEO,CAAK2pB,CAAL,CAAcpB,EAAA,CAAaM,CAAb,CAA4B7oB,CAA5B,CAAd,EACL6pB,CADK,CACUjB,CADV,CACoBmB,CADpB,CACiCJ,CADjC,CAEId,CAFJ,GAEsB7oB,CAFtB,CAE4B,GAF5B,GAGL6pB,CAHK,CAGUhB,CAHV,CAKHgB,EAAJ,EACE,IAAAb,QAAA,CAAaa,CAAb,CAEF,OAAO,CAAEA,CAAAA,CArBkC,CAwB7C,KAAAT,UAAA,CAAiBC,QAAQ,EAAG,CAAA,IACtBhB,EAASxpC,EAAA,CAAW,IAAAupC,SAAX,CADa;AAEtBhqB,EAAO,IAAAkqB,OAAA,CAAc,GAAd,CAAoBppC,EAAA,CAAiB,IAAAopC,OAAjB,CAApB,CAAoD,EAE/D,KAAAgB,MAAA,CAAanC,EAAA,CAAW,IAAAe,OAAX,CAAb,EAAwCG,CAAA,CAAS,GAAT,CAAeA,CAAf,CAAwB,EAAhE,EAAsEjqB,CAEtE,KAAAmrB,SAAA,CAAgBX,CAAhB,CAA0BmB,CAA1B,CAAuC,IAAAT,MANb,CA5B0C,CAkXxEe,QAASA,GAAc,CAACtX,CAAD,CAAW,CAChC,MAAO,SAAQ,EAAG,CAChB,MAAO,KAAA,CAAKA,CAAL,CADS,CADc,CAOlCuX,QAASA,GAAoB,CAACvX,CAAD,CAAWwX,CAAX,CAAuB,CAClD,MAAO,SAAQ,CAAC70C,CAAD,CAAQ,CACrB,GAAIyC,CAAA,CAAYzC,CAAZ,CAAJ,CACE,MAAO,KAAA,CAAKq9B,CAAL,CAGT,KAAA,CAAKA,CAAL,CAAA,CAAiBwX,CAAA,CAAW70C,CAAX,CACjB,KAAA0zC,UAAA,EAEA,OAAO,KARc,CAD2B,CA8CpD75B,QAASA,GAAiB,EAAG,CAAA,IACvBw6B,EAAa,EADU,CAEvBS,EAAY,CACVtjB,QAAS,CAAA,CADC,CAEVujB,YAAa,CAAA,CAFH,CAGVC,aAAc,CAAA,CAHJ,CAahB,KAAAX,WAAA,CAAkBY,QAAQ,CAAC7qC,CAAD,CAAS,CACjC,MAAI1H,EAAA,CAAU0H,CAAV,CAAJ,EACEiqC,CACO,CADMjqC,CACN,CAAA,IAFT,EAISiqC,CALwB,CA4BnC,KAAAS,UAAA,CAAiBI,QAAQ,CAACjmB,CAAD,CAAO,CAC9B,MAAIlsB,GAAA,CAAUksB,CAAV,CAAJ,EACE6lB,CAAAtjB,QACO,CADavC,CACb,CAAA,IAFT,EAGWvuB,CAAA,CAASuuB,CAAT,CAAJ,EAEDlsB,EAAA,CAAUksB,CAAAuC,QAAV,CAYG,GAXLsjB,CAAAtjB,QAWK,CAXevC,CAAAuC,QAWf,EARHzuB,EAAA,CAAUksB,CAAA8lB,YAAV,CAQG;CAPLD,CAAAC,YAOK,CAPmB9lB,CAAA8lB,YAOnB,EAJHhyC,EAAA,CAAUksB,CAAA+lB,aAAV,CAIG,GAHLF,CAAAE,aAGK,CAHoB/lB,CAAA+lB,aAGpB,EAAA,IAdF,EAgBEF,CApBqB,CA+DhC,KAAA1xB,KAAA,CAAY,CAAC,YAAD,CAAe,UAAf,CAA2B,UAA3B,CAAuC,cAAvC,CAAuD,SAAvD,CACR,QAAQ,CAAClJ,CAAD,CAAalC,CAAb,CAAuB4C,CAAvB,CAAiC0Z,CAAjC,CAA+ChZ,CAA/C,CAAwD,CA2BlE65B,QAASA,EAAyB,CAAC7qB,CAAD,CAAM9iB,CAAN,CAAe8jB,CAAf,CAAsB,CACtD,IAAI8pB,EAASx7B,CAAA0Q,IAAA,EAAb,CACI+qB,EAAWz7B,CAAA07B,QACf,IAAI,CACFt9B,CAAAsS,IAAA,CAAaA,CAAb,CAAkB9iB,CAAlB,CAA2B8jB,CAA3B,CAKA,CAAA1R,CAAA07B,QAAA,CAAoBt9B,CAAAsT,MAAA,EANlB,CAOF,MAAO/iB,CAAP,CAAU,CAKV,KAHAqR,EAAA0Q,IAAA,CAAc8qB,CAAd,CAGM7sC,CAFNqR,CAAA07B,QAEM/sC,CAFc8sC,CAEd9sC,CAAAA,CAAN,CALU,CAV0C,CAqJxDgtC,QAASA,EAAmB,CAACH,CAAD,CAASC,CAAT,CAAmB,CAC7Cn7B,CAAAs7B,WAAA,CAAsB,wBAAtB,CAAgD57B,CAAA67B,OAAA,EAAhD,CAAoEL,CAApE,CACEx7B,CAAA07B,QADF,CACqBD,CADrB,CAD6C,CAhLmB,IAC9Dz7B,CAD8D,CAE9D87B,CACAtpB,EAAAA,CAAWpU,CAAAoU,SAAA,EAHmD,KAI9DupB,EAAa39B,CAAAsS,IAAA,EAJiD,CAK9D4oB,CAEJ,IAAI4B,CAAAtjB,QAAJ,CAAuB,CACrB,GAAKpF,CAAAA,CAAL,EAAiB0oB,CAAAC,YAAjB,CACE,KAAMtB,GAAA,CAAgB,QAAhB,CAAN,CAGFP,CAAA,CAAqByC,CA1uBlBzsC,UAAA,CAAc,CAAd,CA0uBkBysC,CA1uBD3xC,QAAA,CAAY,GAAZ;AA0uBC2xC,CA1uBgB3xC,QAAA,CAAY,IAAZ,CAAjB,CAAqC,CAArC,CAAjB,CA0uBH,EAAoCooB,CAApC,EAAgD,GAAhD,CACAspB,EAAA,CAAe96B,CAAA8P,QAAA,CAAmBuoB,EAAnB,CAAsCyB,EANhC,CAAvB,IAQExB,EACA,CADUxnB,EAAA,CAAUiqB,CAAV,CACV,CAAAD,CAAA,CAAetB,EAEjB,KAAIjB,EAA0BD,CArvBzBvnB,OAAA,CAAW,CAAX,CAAcD,EAAA,CAqvBWwnB,CArvBX,CAAAH,YAAA,CAA2B,GAA3B,CAAd,CAAgD,CAAhD,CAuvBLn5B,EAAA,CAAY,IAAI87B,CAAJ,CAAiBxC,CAAjB,CAA0BC,CAA1B,CAAyC,GAAzC,CAA+CkB,CAA/C,CACZz6B,EAAAk6B,eAAA,CAAyB6B,CAAzB,CAAqCA,CAArC,CAEA/7B,EAAA07B,QAAA,CAAoBt9B,CAAAsT,MAAA,EAEpB,KAAIsqB,EAAoB,2BAqBxBthB,EAAAnnB,GAAA,CAAgB,OAAhB,CAAyB,QAAQ,CAAC2U,CAAD,CAAQ,CAIvC,GAAKgzB,CAAAE,aAAL,EAA+Ba,CAAA/zB,CAAA+zB,QAA/B,EAAgDC,CAAAh0B,CAAAg0B,QAAhD,EAAiEC,CAAAj0B,CAAAi0B,SAAjE,EAAkG,CAAlG,EAAmFj0B,CAAAk0B,MAAnF,EAAuH,CAAvH,EAAuGl0B,CAAAm0B,OAAvG,CAAA,CAKA,IAHA,IAAIttB,EAAMhqB,CAAA,CAAOmjB,CAAAkB,OAAP,CAGV,CAA6B,GAA7B,GAAOtf,EAAA,CAAUilB,CAAA,CAAI,CAAJ,CAAV,CAAP,CAAA,CAEE,GAAIA,CAAA,CAAI,CAAJ,CAAJ,GAAe2L,CAAA,CAAa,CAAb,CAAf,EAAmC,CAAA,CAAC3L,CAAD,CAAOA,CAAA5mB,OAAA,EAAP,EAAqB,CAArB,CAAnC,CAA4D,MAG9D,KAAIm0C,EAAUvtB,CAAAvlB,KAAA,CAAS,MAAT,CAAd,CAGI4wC,EAAUrrB,CAAAtlB,KAAA,CAAS,MAAT,CAAV2wC,EAA8BrrB,CAAAtlB,KAAA,CAAS,YAAT,CAE9B3C,EAAA,CAASw1C,CAAT,CAAJ,EAAgD,4BAAhD,GAAyBA,CAAA1zC,SAAA,EAAzB,GAGE0zC,CAHF;AAGYhI,EAAA,CAAWgI,CAAAlf,QAAX,CAAA5L,KAHZ,CAOIwqB,EAAA1yC,KAAA,CAAuBgzC,CAAvB,CAAJ,EAEIA,CAAAA,CAFJ,EAEgBvtB,CAAAtlB,KAAA,CAAS,QAAT,CAFhB,EAEuCye,CAAAC,mBAAA,EAFvC,EAGM,CAAAnI,CAAAk6B,eAAA,CAAyBoC,CAAzB,CAAkClC,CAAlC,CAHN,GAOIlyB,CAAAq0B,eAAA,EAEA,CAAIv8B,CAAA67B,OAAA,EAAJ,EAA0Bz9B,CAAAsS,IAAA,EAA1B,GACEpQ,CAAA1O,OAAA,EAEA,CAAA8P,CAAA1P,QAAA,CAAgB,0BAAhB,CAAA,CAA8C,CAAA,CAHhD,CATJ,CAtBA,CAJuC,CAAzC,CA8CIonC,GAAA,CAAcp5B,CAAA67B,OAAA,EAAd,CAAJ,EAAyCzC,EAAA,CAAc2C,CAAd,CAAzC,EACE39B,CAAAsS,IAAA,CAAa1Q,CAAA67B,OAAA,EAAb,CAAiC,CAAA,CAAjC,CAGF,KAAIW,EAAe,CAAA,CAGnBp+B,EAAA8T,YAAA,CAAqB,QAAQ,CAACuqB,CAAD,CAASC,CAAT,CAAmB,CAE1C7zC,CAAA,CAAYowC,EAAA,CAAaM,CAAb,CAA4BkD,CAA5B,CAAZ,CAAJ,CAEE/6B,CAAApP,SAAAkf,KAFF,CAE0BirB,CAF1B,EAMAn8B,CAAArX,WAAA,CAAsB,QAAQ,EAAG,CAC/B,IAAIuyC,EAASx7B,CAAA67B,OAAA,EAAb,CACIJ,EAAWz7B,CAAA07B,QADf,CAEIrzB,CACJo0B,EAAA,CAASrD,EAAA,CAAcqD,CAAd,CACTz8B,EAAA05B,QAAA,CAAkB+C,CAAlB,CACAz8B,EAAA07B,QAAA,CAAoBgB,CAEpBr0B,EAAA,CAAmB/H,CAAAs7B,WAAA,CAAsB,sBAAtB,CAA8Ca,CAA9C,CAAsDjB,CAAtD,CACfkB,CADe,CACLjB,CADK,CAAApzB,iBAKfrI,EAAA67B,OAAA,EAAJ,GAA2BY,CAA3B,GAEIp0B,CAAJ,EACErI,CAAA05B,QAAA,CAAkB8B,CAAlB,CAEA,CADAx7B,CAAA07B,QACA;AADoBD,CACpB,CAAAF,CAAA,CAA0BC,CAA1B,CAAkC,CAAA,CAAlC,CAAyCC,CAAzC,CAHF,GAKEe,CACA,CADe,CAAA,CACf,CAAAb,CAAA,CAAoBH,CAApB,CAA4BC,CAA5B,CANF,CAFA,CAb+B,CAAjC,CAwBA,CAAKn7B,CAAAmxB,QAAL,EAAyBnxB,CAAAq8B,QAAA,EA9BzB,CAF8C,CAAhD,CAoCAr8B,EAAApX,OAAA,CAAkB0zC,QAAuB,EAAG,CAC1C,IAAIpB,EAASpC,EAAA,CAAch7B,CAAAsS,IAAA,EAAd,CAAb,CACI+rB,EAASrD,EAAA,CAAcp5B,CAAA67B,OAAA,EAAd,CADb,CAEIJ,EAAWr9B,CAAAsT,MAAA,EAFf,CAGImrB,EAAiB78B,CAAA88B,UAHrB,CAIIC,EAAoBvB,CAApBuB,GAA+BN,CAA/BM,EACD/8B,CAAAy5B,QADCsD,EACoB/7B,CAAA8P,QADpBisB,EACwCtB,CADxCsB,GACqD/8B,CAAA07B,QAEzD,IAAIc,CAAJ,EAAoBO,CAApB,CACEP,CAEA,CAFe,CAAA,CAEf,CAAAl8B,CAAArX,WAAA,CAAsB,QAAQ,EAAG,CAC/B,IAAIwzC,EAASz8B,CAAA67B,OAAA,EAAb,CACIxzB,EAAmB/H,CAAAs7B,WAAA,CAAsB,sBAAtB,CAA8Ca,CAA9C,CAAsDjB,CAAtD,CACnBx7B,CAAA07B,QADmB,CACAD,CADA,CAAApzB,iBAKnBrI,EAAA67B,OAAA,EAAJ,GAA2BY,CAA3B,GAEIp0B,CAAJ,EACErI,CAAA05B,QAAA,CAAkB8B,CAAlB,CACA,CAAAx7B,CAAA07B,QAAA,CAAoBD,CAFtB,GAIMsB,CAIJ,EAHExB,CAAA,CAA0BkB,CAA1B,CAAkCI,CAAlC,CAC0BpB,CAAA,GAAaz7B,CAAA07B,QAAb,CAAiC,IAAjC,CAAwC17B,CAAA07B,QADlE,CAGF,CAAAC,CAAA,CAAoBH,CAApB,CAA4BC,CAA5B,CARF,CAFA,CAP+B,CAAjC,CAsBFz7B,EAAA88B,UAAA,CAAsB,CAAA,CAjCoB,CAA5C,CAuCA,OAAO98B,EA9K2D,CADxD,CA1Ge,CA8U7BG,QAASA,GAAY,EAAG,CAAA,IAClB68B,EAAQ,CAAA,CADU,CAElBtwC,EAAO,IASX,KAAAuwC,aAAA,CAAoBC,QAAQ,CAACC,CAAD,CAAO,CACjC,MAAIr0C,EAAA,CAAUq0C,CAAV,CAAJ;CACEH,CACK,CADGG,CACH,CAAA,IAFP,EAISH,CALwB,CASnC,KAAAxzB,KAAA,CAAY,CAAC,SAAD,CAAY,QAAQ,CAAC9H,CAAD,CAAU,CAwDxC07B,QAASA,EAAW,CAAC9oC,CAAD,CAAM,CACpBA,CAAJ,WAAmB+oC,MAAnB,GACM/oC,CAAA4X,MAAJ,CACE5X,CADF,CACSA,CAAA2X,QAAD,EAAoD,EAApD,GAAgB3X,CAAA4X,MAAA9hB,QAAA,CAAkBkK,CAAA2X,QAAlB,CAAhB,CACA,SADA,CACY3X,CAAA2X,QADZ,CAC0B,IAD1B,CACiC3X,CAAA4X,MADjC,CAEA5X,CAAA4X,MAHR,CAIW5X,CAAAgpC,UAJX,GAKEhpC,CALF,CAKQA,CAAA2X,QALR,CAKsB,IALtB,CAK6B3X,CAAAgpC,UAL7B,CAK6C,GAL7C,CAKmDhpC,CAAAo5B,KALnD,CADF,CASA,OAAOp5B,EAViB,CAa1BipC,QAASA,EAAU,CAAC3xC,CAAD,CAAO,CAAA,IACpB4xC,EAAU97B,CAAA87B,QAAVA,EAA6B,EADT,CAEpBC,EAAQD,CAAA,CAAQ5xC,CAAR,CAAR6xC,EAAyBD,CAAAE,IAAzBD,EAAwCn1C,CACxCq1C,EAAAA,CAAW,CAAA,CAIf,IAAI,CACFA,CAAA,CAAW,CAAE7wC,CAAA2wC,CAAA3wC,MADX,CAEF,MAAO6B,CAAP,CAAU,EAEZ,MAAIgvC,EAAJ,CACS,QAAQ,EAAG,CAChB,IAAI9yB,EAAO,EACXxlB,EAAA,CAAQwC,SAAR,CAAmB,QAAQ,CAACyM,CAAD,CAAM,CAC/BuW,CAAAngB,KAAA,CAAU0yC,CAAA,CAAY9oC,CAAZ,CAAV,CAD+B,CAAjC,CAGA,OAAOmpC,EAAA3wC,MAAA,CAAY0wC,CAAZ,CAAqB3yB,CAArB,CALS,CADpB,CAYO,QAAQ,CAAC+yB,CAAD,CAAOC,CAAP,CAAa,CAC1BJ,CAAA,CAAMG,CAAN,CAAoB,IAAR,EAAAC,CAAA,CAAe,EAAf,CAAoBA,CAAhC,CAD0B,CAvBJ,CApE1B,MAAO,CAQLH,IAAKH,CAAA,CAAW,KAAX,CARA,CAiBL/oB,KAAM+oB,CAAA,CAAW,MAAX,CAjBD,CA0BLO,KAAMP,CAAA,CAAW,MAAX,CA1BD,CAmCLttB,MAAOstB,CAAA,CAAW,OAAX,CAnCF;AA4CLP,MAAQ,QAAQ,EAAG,CACjB,IAAIrwC,EAAK4wC,CAAA,CAAW,OAAX,CAET,OAAO,SAAQ,EAAG,CACZP,CAAJ,EACErwC,CAAAG,MAAA,CAASJ,CAAT,CAAe7E,SAAf,CAFc,CAHD,CAAX,EA5CH,CADiC,CAA9B,CApBU,CA4JxBk2C,QAASA,GAAoB,CAACttC,CAAD,CAAOutC,CAAP,CAAuB,CAClD,GAAa,kBAAb,GAAIvtC,CAAJ,EAA4C,kBAA5C,GAAmCA,CAAnC,EACgB,kBADhB,GACOA,CADP,EAC+C,kBAD/C,GACsCA,CADtC,EAEgB,WAFhB,GAEOA,CAFP,CAGE,KAAMwtC,GAAA,CAAa,SAAb,CAEmBD,CAFnB,CAAN,CAIF,MAAOvtC,EAR2C,CAWpDytC,QAASA,GAAc,CAACztC,CAAD,CAAO,CAe5B,MAAOA,EAAP,CAAc,EAfc,CAkB9B0tC,QAASA,GAAgB,CAACx5C,CAAD,CAAMq5C,CAAN,CAAsB,CAE7C,GAAIr5C,CAAJ,CAAS,CACP,GAAIA,CAAAuG,YAAJ,GAAwBvG,CAAxB,CACE,KAAMs5C,GAAA,CAAa,QAAb,CAEFD,CAFE,CAAN,CAGK,GACHr5C,CAAAH,OADG,GACYG,CADZ,CAEL,KAAMs5C,GAAA,CAAa,YAAb,CAEFD,CAFE,CAAN,CAGK,GACHr5C,CAAAy5C,SADG,GACcz5C,CAAA4C,SADd,EAC+B5C,CAAA6E,KAD/B,EAC2C7E,CAAA8E,KAD3C,EACuD9E,CAAA+E,KADvD,EAEL,KAAMu0C,GAAA,CAAa,SAAb,CAEFD,CAFE,CAAN,CAGK,GACHr5C,CADG,GACKM,MADL,CAEL,KAAMg5C,GAAA,CAAa,SAAb,CAEFD,CAFE,CAAN,CAjBK,CAsBT,MAAOr5C,EAxBsC,CA+B/C05C,QAASA,GAAkB,CAAC15C,CAAD;AAAMq5C,CAAN,CAAsB,CAC/C,GAAIr5C,CAAJ,CAAS,CACP,GAAIA,CAAAuG,YAAJ,GAAwBvG,CAAxB,CACE,KAAMs5C,GAAA,CAAa,QAAb,CAEJD,CAFI,CAAN,CAGK,GAAIr5C,CAAJ,GAAY25C,EAAZ,EAAoB35C,CAApB,GAA4B45C,EAA5B,EAAqC55C,CAArC,GAA6C65C,EAA7C,CACL,KAAMP,GAAA,CAAa,QAAb,CAEJD,CAFI,CAAN,CANK,CADsC,CAcjDS,QAASA,GAAuB,CAAC95C,CAAD,CAAMq5C,CAAN,CAAsB,CACpD,GAAIr5C,CAAJ,GACMA,CADN,GACcuG,CAAC,CAADA,aADd,EACiCvG,CADjC,GACyCuG,CAAC,CAAA,CAADA,aADzC,EACgEvG,CADhE,GACwE,EAAAuG,YADxE,EAEMvG,CAFN,GAEc,EAAAuG,YAFd,EAEgCvG,CAFhC,GAEwC,EAAAuG,YAFxC,EAE0DvG,CAF1D,GAEkE4lB,QAAArf,YAFlE,EAGI,KAAM+yC,GAAA,CAAa,QAAb,CACyDD,CADzD,CAAN,CAJgD,CAsjBtDU,QAASA,GAAS,CAACjS,CAAD,CAAI4B,CAAJ,CAAO,CACvB,MAAoB,WAAb,GAAA,MAAO5B,EAAP,CAA2BA,CAA3B,CAA+B4B,CADf,CAIzBsQ,QAASA,GAAM,CAAC35B,CAAD,CAAI45B,CAAJ,CAAO,CACpB,MAAiB,WAAjB,GAAI,MAAO55B,EAAX,CAAqC45B,CAArC,CACiB,WAAjB,GAAI,MAAOA,EAAX,CAAqC55B,CAArC,CACOA,CADP,CACW45B,CAHS,CAWtBC,QAASA,EAA+B,CAACC,CAAD,CAAMhgC,CAAN,CAAe,CACrD,IAAIigC,CAAJ,CACIC,CACJ,QAAQF,CAAAlzC,KAAR,EACA,KAAKqzC,CAAAC,QAAL,CACEH,CAAA,CAAe,CAAA,CACf15C,EAAA,CAAQy5C,CAAArL,KAAR,CAAkB,QAAQ,CAAC0L,CAAD,CAAO,CAC/BN,CAAA,CAAgCM,CAAAlT,WAAhC,CAAiDntB,CAAjD,CACAigC,EAAA;AAAeA,CAAf,EAA+BI,CAAAlT,WAAAp1B,SAFA,CAAjC,CAIAioC,EAAAjoC,SAAA,CAAekoC,CACf,MACF,MAAKE,CAAAG,QAAL,CACEN,CAAAjoC,SAAA,CAAe,CAAA,CACfioC,EAAAO,QAAA,CAAc,EACd,MACF,MAAKJ,CAAAK,gBAAL,CACET,CAAA,CAAgCC,CAAAS,SAAhC,CAA8CzgC,CAA9C,CACAggC,EAAAjoC,SAAA,CAAeioC,CAAAS,SAAA1oC,SACfioC,EAAAO,QAAA,CAAcP,CAAAS,SAAAF,QACd,MACF,MAAKJ,CAAAO,iBAAL,CACEX,CAAA,CAAgCC,CAAAW,KAAhC,CAA0C3gC,CAA1C,CACA+/B,EAAA,CAAgCC,CAAAY,MAAhC,CAA2C5gC,CAA3C,CACAggC,EAAAjoC,SAAA,CAAeioC,CAAAW,KAAA5oC,SAAf,EAAoCioC,CAAAY,MAAA7oC,SACpCioC,EAAAO,QAAA,CAAcP,CAAAW,KAAAJ,QAAA/yC,OAAA,CAAwBwyC,CAAAY,MAAAL,QAAxB,CACd,MACF,MAAKJ,CAAAU,kBAAL,CACEd,CAAA,CAAgCC,CAAAW,KAAhC,CAA0C3gC,CAA1C,CACA+/B,EAAA,CAAgCC,CAAAY,MAAhC,CAA2C5gC,CAA3C,CACAggC,EAAAjoC,SAAA,CAAeioC,CAAAW,KAAA5oC,SAAf,EAAoCioC,CAAAY,MAAA7oC,SACpCioC,EAAAO,QAAA,CAAcP,CAAAjoC,SAAA,CAAe,EAAf,CAAoB,CAACioC,CAAD,CAClC,MACF,MAAKG,CAAAW,sBAAL,CACEf,CAAA,CAAgCC,CAAAx1C,KAAhC;AAA0CwV,CAA1C,CACA+/B,EAAA,CAAgCC,CAAAe,UAAhC,CAA+C/gC,CAA/C,CACA+/B,EAAA,CAAgCC,CAAAgB,WAAhC,CAAgDhhC,CAAhD,CACAggC,EAAAjoC,SAAA,CAAeioC,CAAAx1C,KAAAuN,SAAf,EAAoCioC,CAAAe,UAAAhpC,SAApC,EAA8DioC,CAAAgB,WAAAjpC,SAC9DioC,EAAAO,QAAA,CAAcP,CAAAjoC,SAAA,CAAe,EAAf,CAAoB,CAACioC,CAAD,CAClC,MACF,MAAKG,CAAAc,WAAL,CACEjB,CAAAjoC,SAAA,CAAe,CAAA,CACfioC,EAAAO,QAAA,CAAc,CAACP,CAAD,CACd,MACF,MAAKG,CAAAe,iBAAL,CACEnB,CAAA,CAAgCC,CAAAmB,OAAhC,CAA4CnhC,CAA5C,CACIggC,EAAAoB,SAAJ,EACErB,CAAA,CAAgCC,CAAArb,SAAhC,CAA8C3kB,CAA9C,CAEFggC,EAAAjoC,SAAA,CAAeioC,CAAAmB,OAAAppC,SAAf,GAAuC,CAACioC,CAAAoB,SAAxC,EAAwDpB,CAAArb,SAAA5sB,SAAxD,CACAioC,EAAAO,QAAA,CAAc,CAACP,CAAD,CACd,MACF,MAAKG,CAAAkB,eAAL,CACEpB,CAAA,CAAeD,CAAA9nC,OAAA,CAxDV,CAwDmC8H,CAzDjCnS,CAyD0CmyC,CAAAsB,OAAA3vC,KAzD1C9D,CACDg8B,UAwDS,CAAqD,CAAA,CACpEqW,EAAA,CAAc,EACd35C,EAAA,CAAQy5C,CAAAj3C,UAAR,CAAuB,QAAQ,CAACs3C,CAAD,CAAO,CACpCN,CAAA,CAAgCM,CAAhC,CAAsCrgC,CAAtC,CACAigC,EAAA,CAAeA,CAAf,EAA+BI,CAAAtoC,SAC1BsoC,EAAAtoC,SAAL,EACEmoC,CAAAt0C,KAAAoC,MAAA,CAAuBkyC,CAAvB,CAAoCG,CAAAE,QAApC,CAJkC,CAAtC,CAOAP;CAAAjoC,SAAA,CAAekoC,CACfD,EAAAO,QAAA,CAAcP,CAAA9nC,OAAA,EAlER2xB,CAkEkC7pB,CAnEjCnS,CAmE0CmyC,CAAAsB,OAAA3vC,KAnE1C9D,CACDg8B,UAkEQ,CAAsDqW,CAAtD,CAAoE,CAACF,CAAD,CAClF,MACF,MAAKG,CAAAoB,qBAAL,CACExB,CAAA,CAAgCC,CAAAW,KAAhC,CAA0C3gC,CAA1C,CACA+/B,EAAA,CAAgCC,CAAAY,MAAhC,CAA2C5gC,CAA3C,CACAggC,EAAAjoC,SAAA,CAAeioC,CAAAW,KAAA5oC,SAAf,EAAoCioC,CAAAY,MAAA7oC,SACpCioC,EAAAO,QAAA,CAAc,CAACP,CAAD,CACd,MACF,MAAKG,CAAAqB,gBAAL,CACEvB,CAAA,CAAe,CAAA,CACfC,EAAA,CAAc,EACd35C,EAAA,CAAQy5C,CAAAl4B,SAAR,CAAsB,QAAQ,CAACu4B,CAAD,CAAO,CACnCN,CAAA,CAAgCM,CAAhC,CAAsCrgC,CAAtC,CACAigC,EAAA,CAAeA,CAAf,EAA+BI,CAAAtoC,SAC1BsoC,EAAAtoC,SAAL,EACEmoC,CAAAt0C,KAAAoC,MAAA,CAAuBkyC,CAAvB,CAAoCG,CAAAE,QAApC,CAJiC,CAArC,CAOAP,EAAAjoC,SAAA,CAAekoC,CACfD,EAAAO,QAAA,CAAcL,CACd,MACF,MAAKC,CAAAsB,iBAAL,CACExB,CAAA,CAAe,CAAA,CACfC,EAAA,CAAc,EACd35C,EAAA,CAAQy5C,CAAA0B,WAAR,CAAwB,QAAQ,CAAC/c,CAAD,CAAW,CACzCob,CAAA,CAAgCpb,CAAAr9B,MAAhC,CAAgD0Y,CAAhD,CACAigC,EAAA,CAAeA,CAAf,EAA+Btb,CAAAr9B,MAAAyQ,SAA/B,EAA0D,CAAC4sB,CAAAyc,SACtDzc,EAAAr9B,MAAAyQ,SAAL,EACEmoC,CAAAt0C,KAAAoC,MAAA,CAAuBkyC,CAAvB,CAAoCvb,CAAAr9B,MAAAi5C,QAApC,CAJuC,CAA3C,CAOAP;CAAAjoC,SAAA,CAAekoC,CACfD,EAAAO,QAAA,CAAcL,CACd,MACF,MAAKC,CAAAwB,eAAL,CACE3B,CAAAjoC,SAAA,CAAe,CAAA,CACfioC,EAAAO,QAAA,CAAc,EACd,MACF,MAAKJ,CAAAyB,iBAAL,CACE5B,CAAAjoC,SACA,CADe,CAAA,CACf,CAAAioC,CAAAO,QAAA,CAAc,EApGhB,CAHqD,CA4GvDsB,QAASA,GAAS,CAAClN,CAAD,CAAO,CACvB,GAAmB,CAAnB,EAAIA,CAAAzuC,OAAJ,CAAA,CACI47C,CAAAA,CAAiBnN,CAAA,CAAK,CAAL,CAAAxH,WACrB,KAAIt7B,EAAYiwC,CAAAvB,QAChB,OAAyB,EAAzB,GAAI1uC,CAAA3L,OAAJ,CAAmC2L,CAAnC,CACOA,CAAA,CAAU,CAAV,CAAA,GAAiBiwC,CAAjB,CAAkCjwC,CAAlC,CAA8C1F,IAAAA,EAJrD,CADuB,CAQzB41C,QAASA,GAAY,CAAC/B,CAAD,CAAM,CACzB,MAAOA,EAAAlzC,KAAP,GAAoBqzC,CAAAc,WAApB,EAAsCjB,CAAAlzC,KAAtC,GAAmDqzC,CAAAe,iBAD1B,CAI3Bc,QAASA,GAAa,CAAChC,CAAD,CAAM,CAC1B,GAAwB,CAAxB,GAAIA,CAAArL,KAAAzuC,OAAJ,EAA6B67C,EAAA,CAAa/B,CAAArL,KAAA,CAAS,CAAT,CAAAxH,WAAb,CAA7B,CACE,MAAO,CAACrgC,KAAMqzC,CAAAoB,qBAAP,CAAiCZ,KAAMX,CAAArL,KAAA,CAAS,CAAT,CAAAxH,WAAvC,CAA+DyT,MAAO,CAAC9zC,KAAMqzC,CAAA8B,iBAAP,CAAtE,CAAoGC,SAAU,GAA9G,CAFiB,CAM5BC,QAASA,GAAS,CAACnC,CAAD,CAAM,CACtB,MAA2B,EAA3B;AAAOA,CAAArL,KAAAzuC,OAAP,EACwB,CADxB,GACI85C,CAAArL,KAAAzuC,OADJ,GAEI85C,CAAArL,KAAA,CAAS,CAAT,CAAAxH,WAAArgC,KAFJ,GAEoCqzC,CAAAG,QAFpC,EAGIN,CAAArL,KAAA,CAAS,CAAT,CAAAxH,WAAArgC,KAHJ,GAGoCqzC,CAAAqB,gBAHpC,EAIIxB,CAAArL,KAAA,CAAS,CAAT,CAAAxH,WAAArgC,KAJJ,GAIoCqzC,CAAAsB,iBAJpC,CADsB,CAYxBW,QAASA,GAAW,CAACC,CAAD,CAAariC,CAAb,CAAsB,CACxC,IAAAqiC,WAAA,CAAkBA,CAClB,KAAAriC,QAAA,CAAeA,CAFyB,CAihB1CsiC,QAASA,GAAc,CAACD,CAAD,CAAariC,CAAb,CAAsB,CAC3C,IAAAqiC,WAAA,CAAkBA,CAClB,KAAAriC,QAAA,CAAeA,CAF4B,CA4Z7CuiC,QAASA,GAA6B,CAAC5wC,CAAD,CAAO,CAC3C,MAAe,aAAf,EAAOA,CADoC,CAM7C6wC,QAASA,GAAU,CAACl7C,CAAD,CAAQ,CACzB,MAAOX,EAAA,CAAWW,CAAAgB,QAAX,CAAA,CAA4BhB,CAAAgB,QAAA,EAA5B,CAA8Cm6C,EAAA57C,KAAA,CAAmBS,CAAnB,CAD5B,CAuD3Bia,QAASA,GAAc,EAAG,CACxB,IAAImhC,EAAep1C,CAAA,EAAnB,CACIq1C,EAAiBr1C,CAAA,EADrB,CAEIs1C,EAAW,CACb,OAAQ,CAAA,CADK,CAEb,QAAS,CAAA,CAFI,CAGb,OAAQ,IAHK,CAIb,UAAaz2C,IAAAA,EAJA,CAFf,CAQI02C,CARJ,CAQgBC,CAahB,KAAAC,WAAA,CAAkBC,QAAQ,CAACC,CAAD,CAAcC,CAAd,CAA4B,CACpDN,CAAA,CAASK,CAAT,CAAA,CAAwBC,CAD4B,CA2BtD,KAAAC,iBAAA;AAAwBC,QAAQ,CAACC,CAAD,CAAkBC,CAAlB,CAAsC,CACpET,CAAA,CAAaQ,CACbP,EAAA,CAAgBQ,CAChB,OAAO,KAH6D,CAMtE,KAAA54B,KAAA,CAAY,CAAC,SAAD,CAAY,QAAQ,CAAC1K,CAAD,CAAU,CAwBxCsB,QAASA,EAAM,CAAC21B,CAAD,CAAMsM,CAAN,CAAqBC,CAArB,CAAsC,CAAA,IAC/CC,CAD+C,CAC7BC,CAD6B,CACpBC,CAE/BH,EAAA,CAAkBA,CAAlB,EAAqCI,CAErC,QAAQ,MAAO3M,EAAf,EACE,KAAK,QAAL,CAEE0M,CAAA,CADA1M,CACA,CADMA,CAAA1xB,KAAA,EAGN,KAAI+H,EAASk2B,CAAA,CAAkBb,CAAlB,CAAmCD,CAChDe,EAAA,CAAmBn2B,CAAA,CAAMq2B,CAAN,CAEnB,IAAKF,CAAAA,CAAL,CAAuB,CACC,GAAtB,GAAIxM,CAAA1pC,OAAA,CAAW,CAAX,CAAJ,EAA+C,GAA/C,GAA6B0pC,CAAA1pC,OAAA,CAAW,CAAX,CAA7B,GACEm2C,CACA,CADU,CAAA,CACV,CAAAzM,CAAA,CAAMA,CAAAzmC,UAAA,CAAc,CAAd,CAFR,CAIIqzC,EAAAA,CAAeL,CAAA,CAAkBM,CAAlB,CAA2CC,CAC9D,KAAIC,EAAQ,IAAIC,EAAJ,CAAUJ,CAAV,CAEZJ,EAAA,CAAmB/0C,CADNw1C,IAAIC,EAAJD,CAAWF,CAAXE,CAAkBlkC,CAAlBkkC,CAA2BL,CAA3BK,CACMx1C,OAAA,CAAauoC,CAAb,CACfwM,EAAA1rC,SAAJ,CACE0rC,CAAAvM,gBADF,CACqCZ,CADrC,CAEWoN,CAAJ,CACLD,CAAAvM,gBADK,CAC8BuM,CAAAha,QAAA,CAC/B2a,CAD+B,CACDC,CAF7B,CAGIZ,CAAAa,OAHJ,GAILb,CAAAvM,gBAJK,CAI8BqN,CAJ9B,CAMHf,EAAJ,GACEC,CADF,CACqBe,CAAA,CAA2Bf,CAA3B,CADrB,CAGAn2B,EAAA,CAAMq2B,CAAN,CAAA,CAAkBF,CApBG,CAsBvB,MAAOgB,EAAA,CAAehB,CAAf,CAAiCF,CAAjC,CAET,MAAK,UAAL,CACE,MAAOkB,EAAA,CAAexN,CAAf,CAAoBsM,CAApB,CAET,SACE,MAAOkB,EAAA,CAAej7C,CAAf,CAAqB+5C,CAArB,CApCX,CALmD,CA6CrDiB,QAASA,EAA0B,CAAC32C,CAAD,CAAK,CAatC62C,QAASA,EAAgB,CAAC9xC,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACvD,IAAIK;AAAyBf,CAC7BA,EAAA,CAAuB,CAAA,CACvB,IAAI,CACF,MAAO/1C,EAAA,CAAG+E,CAAH,CAAUkb,CAAV,CAAkB4b,CAAlB,CAA0B4a,CAA1B,CADL,CAAJ,OAEU,CACRV,CAAA,CAAuBe,CADf,CAL6C,CAZzD,GAAK92C,CAAAA,CAAL,CAAS,MAAOA,EAChB62C,EAAAxN,gBAAA,CAAmCrpC,CAAAqpC,gBACnCwN,EAAAhb,OAAA,CAA0B8a,CAAA,CAA2B32C,CAAA67B,OAA3B,CAC1Bgb,EAAA3sC,SAAA,CAA4BlK,CAAAkK,SAC5B2sC,EAAAjb,QAAA,CAA2B57B,CAAA47B,QAC3B,KAAS,IAAAtiC,EAAI,CAAb,CAAgB0G,CAAAy2C,OAAhB,EAA6Bn9C,CAA7B,CAAiC0G,CAAAy2C,OAAAp+C,OAAjC,CAAmD,EAAEiB,CAArD,CACE0G,CAAAy2C,OAAA,CAAUn9C,CAAV,CAAA,CAAeq9C,CAAA,CAA2B32C,CAAAy2C,OAAA,CAAUn9C,CAAV,CAA3B,CAEjBu9C,EAAAJ,OAAA,CAA0Bz2C,CAAAy2C,OAE1B,OAAOI,EAX+B,CAwBxCE,QAASA,EAAyB,CAAC9c,CAAD,CAAW+c,CAAX,CAA4B,CAE5D,MAAgB,KAAhB,EAAI/c,CAAJ,EAA2C,IAA3C,EAAwB+c,CAAxB,CACS/c,CADT,GACsB+c,CADtB,CAIwB,QAAxB,GAAI,MAAO/c,EAAX,GAKEA,CAEI,CAFO0a,EAAA,CAAW1a,CAAX,CAEP,CAAoB,QAApB,GAAA,MAAOA,EAPb,EASW,CAAA,CATX,CAgBOA,CAhBP,GAgBoB+c,CAhBpB,EAgBwC/c,CAhBxC,GAgBqDA,CAhBrD,EAgBiE+c,CAhBjE,GAgBqFA,CAtBzB,CAyB9DN,QAASA,EAAmB,CAAC3xC,CAAD,CAAQmf,CAAR,CAAkBwkB,CAAlB,CAAkCkN,CAAlC,CAAoDqB,CAApD,CAA2E,CACrG,IAAIC,EAAmBtB,CAAAa,OAAvB,CACIU,CAEJ,IAAgC,CAAhC,GAAID,CAAA7+C,OAAJ,CAAmC,CACjC,IAAI++C,EAAkBL,CAAtB,CACAG,EAAmBA,CAAA,CAAiB,CAAjB,CACnB,OAAOnyC,EAAAxI,OAAA,CAAa86C,QAA6B,CAACtyC,CAAD,CAAQ,CACvD,IAAIuyC,EAAgBJ,CAAA,CAAiBnyC,CAAjB,CACfgyC,EAAA,CAA0BO,CAA1B,CAAyCF,CAAzC,CAAL,GACED,CACA,CADavB,CAAA,CAAiB7wC,CAAjB,CAAwBzG,IAAAA,EAAxB;AAAmCA,IAAAA,EAAnC,CAA8C,CAACg5C,CAAD,CAA9C,CACb,CAAAF,CAAA,CAAkBE,CAAlB,EAAmC3C,EAAA,CAAW2C,CAAX,CAFrC,CAIA,OAAOH,EANgD,CAAlD,CAOJjzB,CAPI,CAOMwkB,CAPN,CAOsBuO,CAPtB,CAH0B,CAenC,IAFA,IAAIM,EAAwB,EAA5B,CACIC,EAAiB,EADrB,CAESl+C,EAAI,CAFb,CAEgBY,EAAKg9C,CAAA7+C,OAArB,CAA8CiB,CAA9C,CAAkDY,CAAlD,CAAsDZ,CAAA,EAAtD,CACEi+C,CAAA,CAAsBj+C,CAAtB,CACA,CAD2By9C,CAC3B,CAAAS,CAAA,CAAel+C,CAAf,CAAA,CAAoB,IAGtB,OAAOyL,EAAAxI,OAAA,CAAak7C,QAA8B,CAAC1yC,CAAD,CAAQ,CAGxD,IAFA,IAAI2yC,EAAU,CAAA,CAAd,CAESp+C,EAAI,CAFb,CAEgBY,EAAKg9C,CAAA7+C,OAArB,CAA8CiB,CAA9C,CAAkDY,CAAlD,CAAsDZ,CAAA,EAAtD,CAA2D,CACzD,IAAIg+C,EAAgBJ,CAAA,CAAiB59C,CAAjB,CAAA,CAAoByL,CAApB,CACpB,IAAI2yC,CAAJ,GAAgBA,CAAhB,CAA0B,CAACX,CAAA,CAA0BO,CAA1B,CAAyCC,CAAA,CAAsBj+C,CAAtB,CAAzC,CAA3B,EACEk+C,CAAA,CAAel+C,CAAf,CACA,CADoBg+C,CACpB,CAAAC,CAAA,CAAsBj+C,CAAtB,CAAA,CAA2Bg+C,CAA3B,EAA4C3C,EAAA,CAAW2C,CAAX,CAJW,CAQvDI,CAAJ,GACEP,CADF,CACevB,CAAA,CAAiB7wC,CAAjB,CAAwBzG,IAAAA,EAAxB,CAAmCA,IAAAA,EAAnC,CAA8Ck5C,CAA9C,CADf,CAIA,OAAOL,EAfiD,CAAnD,CAgBJjzB,CAhBI,CAgBMwkB,CAhBN,CAgBsBuO,CAhBtB,CAxB8F,CA2CvGT,QAASA,EAAoB,CAACzxC,CAAD,CAAQmf,CAAR,CAAkBwkB,CAAlB,CAAkCkN,CAAlC,CAAoD,CAAA,IAC3EhN,CAD2E,CAClEtN,CACb,OAAOsN,EAAP,CAAiB7jC,CAAAxI,OAAA,CAAao7C,QAAqB,CAAC5yC,CAAD,CAAQ,CACzD,MAAO6wC,EAAA,CAAiB7wC,CAAjB,CADkD,CAA1C,CAEd6yC,QAAwB,CAACn+C,CAAD,CAAQo+C,CAAR,CAAa9yC,CAAb,CAAoB,CAC7Cu2B,CAAA,CAAY7hC,CACRX,EAAA,CAAWorB,CAAX,CAAJ,EACEA,CAAA/jB,MAAA,CAAe,IAAf,CAAqBjF,SAArB,CAEEiB,EAAA,CAAU1C,CAAV,CAAJ,EACEsL,CAAAi2B,aAAA,CAAmB,QAAQ,EAAG,CACxB7+B,CAAA,CAAUm/B,CAAV,CAAJ,EACEsN,CAAA,EAF0B,CAA9B,CAN2C,CAF9B,CAcdF,CAdc,CAF8D,CAmBjF6N,QAASA,EAA2B,CAACxxC,CAAD,CAAQmf,CAAR,CAAkBwkB,CAAlB,CAAkCkN,CAAlC,CAAoD,CAgBtFkC,QAASA,EAAY,CAACr+C,CAAD,CAAQ,CAC3B,IAAIs+C,EAAa,CAAA,CACjBr/C,EAAA,CAAQe,CAAR,CAAe,QAAQ,CAAC4G,CAAD,CAAM,CACtBlE,CAAA,CAAUkE,CAAV,CAAL,GAAqB03C,CAArB;AAAkC,CAAA,CAAlC,CAD2B,CAA7B,CAGA,OAAOA,EALoB,CAhByD,IAClFnP,CADkF,CACzEtN,CACb,OAAOsN,EAAP,CAAiB7jC,CAAAxI,OAAA,CAAao7C,QAAqB,CAAC5yC,CAAD,CAAQ,CACzD,MAAO6wC,EAAA,CAAiB7wC,CAAjB,CADkD,CAA1C,CAEd6yC,QAAwB,CAACn+C,CAAD,CAAQo+C,CAAR,CAAa9yC,CAAb,CAAoB,CAC7Cu2B,CAAA,CAAY7hC,CACRX,EAAA,CAAWorB,CAAX,CAAJ,EACEA,CAAAlrB,KAAA,CAAc,IAAd,CAAoBS,CAApB,CAA2Bo+C,CAA3B,CAAgC9yC,CAAhC,CAEE+yC,EAAA,CAAar+C,CAAb,CAAJ,EACEsL,CAAAi2B,aAAA,CAAmB,QAAQ,EAAG,CACxB8c,CAAA,CAAaxc,CAAb,CAAJ,EAA6BsN,CAAA,EADD,CAA9B,CAN2C,CAF9B,CAYdF,CAZc,CAFqE,CAyBxFD,QAASA,EAAqB,CAAC1jC,CAAD,CAAQmf,CAAR,CAAkBwkB,CAAlB,CAAkCkN,CAAlC,CAAoD,CAChF,IAAIhN,CACJ,OAAOA,EAAP,CAAiB7jC,CAAAxI,OAAA,CAAay7C,QAAsB,CAACjzC,CAAD,CAAQ,CAC1D6jC,CAAA,EACA,OAAOgN,EAAA,CAAiB7wC,CAAjB,CAFmD,CAA3C,CAGdmf,CAHc,CAGJwkB,CAHI,CAF+D,CAQlFkO,QAASA,EAAc,CAAChB,CAAD,CAAmBF,CAAnB,CAAkC,CACvD,GAAKA,CAAAA,CAAL,CAAoB,MAAOE,EAC3B,KAAIqC,EAAgBrC,CAAAvM,gBAApB,CACI6O,EAAY,CAAA,CADhB,CAOIl4C,EAHAi4C,CAGK,GAHa1B,CAGb,EAFL0B,CAEK,GAFazB,CAEb,CAAe2B,QAAqC,CAACpzC,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACvFh9C,CAAAA,CAAQy+C,CAAA,EAAazB,CAAb,CAAsBA,CAAA,CAAO,CAAP,CAAtB,CAAkCb,CAAA,CAAiB7wC,CAAjB,CAAwBkb,CAAxB,CAAgC4b,CAAhC,CAAwC4a,CAAxC,CAC9C,OAAOf,EAAA,CAAcj8C,CAAd,CAAqBsL,CAArB,CAA4Bkb,CAA5B,CAFoF,CAApF,CAGLm4B,QAAqC,CAACrzC,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACnEh9C,CAAAA,CAAQm8C,CAAA,CAAiB7wC,CAAjB,CAAwBkb,CAAxB,CAAgC4b,CAAhC,CAAwC4a,CAAxC,CACR53B,EAAAA,CAAS62B,CAAA,CAAcj8C,CAAd,CAAqBsL,CAArB,CAA4Bkb,CAA5B,CAGb,OAAO9jB,EAAA,CAAU1C,CAAV,CAAA,CAAmBolB,CAAnB,CAA4BplB,CALoC,CASrEm8C,EAAAvM,gBAAJ,EACIuM,CAAAvM,gBADJ,GACyCqN,CADzC,CAEE12C,CAAAqpC,gBAFF,CAEuBuM,CAAAvM,gBAFvB;AAGYqM,CAAA1Z,UAHZ,GAMEh8B,CAAAqpC,gBAEA,CAFqBqN,CAErB,CADAwB,CACA,CADY,CAACtC,CAAAa,OACb,CAAAz2C,CAAAy2C,OAAA,CAAYb,CAAAa,OAAA,CAA0Bb,CAAAa,OAA1B,CAAoD,CAACb,CAAD,CARlE,CAWA,OAAO51C,EAhCgD,CApNzD,IAAIq4C,EAAettC,EAAA,EAAAstC,aAAnB,CACInC,EAAgB,CACdnrC,IAAKstC,CADS,CAEd1C,gBAAiB,CAAA,CAFH,CAGdZ,SAAUp3C,CAAA,CAAKo3C,CAAL,CAHI,CAIduD,kBAAmBx/C,CAAA,CAAWk8C,CAAX,CAAnBsD,EAA6CtD,CAJ/B,CAKduD,qBAAsBz/C,CAAA,CAAWm8C,CAAX,CAAtBsD,EAAmDtD,CALrC,CADpB,CAQIgB,EAAyB,CACvBlrC,IAAKstC,CADkB,CAEvB1C,gBAAiB,CAAA,CAFM,CAGvBZ,SAAUp3C,CAAA,CAAKo3C,CAAL,CAHa,CAIvBuD,kBAAmBx/C,CAAA,CAAWk8C,CAAX,CAAnBsD,EAA6CtD,CAJtB,CAKvBuD,qBAAsBz/C,CAAA,CAAWm8C,CAAX,CAAtBsD,EAAmDtD,CAL5B,CAR7B,CAeIc,EAAuB,CAAA,CAE3BtiC,EAAA+kC,yBAAA,CAAkCC,QAAQ,EAAG,CAC3C,MAAO1C,EADoC,CAI7C,OAAOtiC,EAtBiC,CAA9B,CAvDY,CAygB1BK,QAASA,GAAU,EAAG,CAEpB,IAAA+I,KAAA,CAAY,CAAC,YAAD,CAAe,mBAAf,CAAoC,QAAQ,CAAClJ,CAAD,CAAa1B,CAAb,CAAgC,CACtF,MAAOymC,GAAA,CAAS,QAAQ,CAAC9zB,CAAD,CAAW,CACjCjR,CAAArX,WAAA,CAAsBsoB,CAAtB,CADiC,CAA5B,CAEJ3S,CAFI,CAD+E,CAA5E,CAFQ,CAStB+B,QAASA,GAAW,EAAG,CACrB,IAAA6I,KAAA;AAAY,CAAC,UAAD,CAAa,mBAAb,CAAkC,QAAQ,CAACpL,CAAD,CAAWQ,CAAX,CAA8B,CAClF,MAAOymC,GAAA,CAAS,QAAQ,CAAC9zB,CAAD,CAAW,CACjCnT,CAAAsU,MAAA,CAAenB,CAAf,CADiC,CAA5B,CAEJ3S,CAFI,CAD2E,CAAxE,CADS,CAgBvBymC,QAASA,GAAQ,CAACC,CAAD,CAAWC,CAAX,CAA6B,CAsB5CC,QAASA,EAAO,EAAG,CACjB,IAAA9J,QAAA,CAAe,CAAE1N,OAAQ,CAAV,CADE,CAgCnByX,QAASA,EAAU,CAAClgD,CAAD,CAAUoH,CAAV,CAAc,CAC/B,MAAO,SAAQ,CAACvG,CAAD,CAAQ,CACrBuG,CAAAhH,KAAA,CAAQJ,CAAR,CAAiBa,CAAjB,CADqB,CADQ,CA8BjCs/C,QAASA,EAAoB,CAACh0B,CAAD,CAAQ,CAC/Bi0B,CAAAj0B,CAAAi0B,iBAAJ,EAA+Bj0B,CAAAk0B,QAA/B,GACAl0B,CAAAi0B,iBACA,CADyB,CAAA,CACzB,CAAAL,CAAA,CAAS,QAAQ,EAAG,CA3BO,IACvB34C,CADuB,CACnBolC,CADmB,CACT6T,CAElBA,EAAA,CAwBmCl0B,CAxBzBk0B,QAwByBl0B,EAvBnCi0B,iBAAA,CAAyB,CAAA,CAuBUj0B,EAtBnCk0B,QAAA,CAAgB36C,IAAAA,EAChB,KAN2B,IAMlBhF,EAAI,CANc,CAMXY,EAAK++C,CAAA5gD,OAArB,CAAqCiB,CAArC,CAAyCY,CAAzC,CAA6C,EAAEZ,CAA/C,CAAkD,CAChD8rC,CAAA,CAAW6T,CAAA,CAAQ3/C,CAAR,CAAA,CAAW,CAAX,CACX0G,EAAA,CAAKi5C,CAAA,CAAQ3/C,CAAR,CAAA,CAmB4ByrB,CAnBjBsc,OAAX,CACL,IAAI,CACEvoC,CAAA,CAAWkH,CAAX,CAAJ,CACEolC,CAAAC,QAAA,CAAiBrlC,CAAA,CAgBY+kB,CAhBTtrB,MAAH,CAAjB,CADF,CAE4B,CAArB,GAewBsrB,CAfpBsc,OAAJ,CACL+D,CAAAC,QAAA,CAc6BtgB,CAdZtrB,MAAjB,CADK,CAGL2rC,CAAAzC,OAAA,CAY6B5d,CAZbtrB,MAAhB,CANA,CAQF,MAAOuI,CAAP,CAAU,CACVojC,CAAAzC,OAAA,CAAgB3gC,CAAhB,CACA,CAAA42C,CAAA,CAAiB52C,CAAjB,CAFU,CAXoC,CAqB9B,CAApB,CAFA,CADmC,CApFO;AA0F5Ck3C,QAASA,EAAQ,EAAG,CAClB,IAAAtV,QAAA,CAAe,IAAIiV,CADD,CAzFpB,IAAIM,EAAWrhD,CAAA,CAAO,IAAP,CAAashD,SAAb,CAyBfp+C,EAAA,CAAO69C,CAAAh7B,UAAP,CAA0B,CACxBma,KAAMA,QAAQ,CAACqhB,CAAD,CAAcC,CAAd,CAA0BC,CAA1B,CAAwC,CACpD,GAAIr9C,CAAA,CAAYm9C,CAAZ,CAAJ,EAAgCn9C,CAAA,CAAYo9C,CAAZ,CAAhC,EAA2Dp9C,CAAA,CAAYq9C,CAAZ,CAA3D,CACE,MAAO,KAET,KAAI16B,EAAS,IAAIq6B,CAEjB,KAAAnK,QAAAkK,QAAA,CAAuB,IAAAlK,QAAAkK,QAAvB,EAA+C,EAC/C,KAAAlK,QAAAkK,QAAAl7C,KAAA,CAA0B,CAAC8gB,CAAD,CAASw6B,CAAT,CAAsBC,CAAtB,CAAkCC,CAAlC,CAA1B,CAC0B,EAA1B,CAAI,IAAAxK,QAAA1N,OAAJ,EAA6B0X,CAAA,CAAqB,IAAAhK,QAArB,CAE7B,OAAOlwB,EAAA+kB,QAV6C,CAD9B,CAcxB,QAAS4V,QAAQ,CAAC50B,CAAD,CAAW,CAC1B,MAAO,KAAAoT,KAAA,CAAU,IAAV,CAAgBpT,CAAhB,CADmB,CAdJ,CAkBxB,UAAW60B,QAAQ,CAAC70B,CAAD,CAAW20B,CAAX,CAAyB,CAC1C,MAAO,KAAAvhB,KAAA,CAAU,QAAQ,CAACv+B,CAAD,CAAQ,CAC/B,MAAOigD,EAAA,CAAejgD,CAAf,CAAsB,CAAA,CAAtB,CAA4BmrB,CAA5B,CADwB,CAA1B,CAEJ,QAAQ,CAACtB,CAAD,CAAQ,CACjB,MAAOo2B,EAAA,CAAep2B,CAAf,CAAsB,CAAA,CAAtB,CAA6BsB,CAA7B,CADU,CAFZ,CAIJ20B,CAJI,CADmC,CAlBpB,CAA1B,CAoEAv+C,EAAA,CAAOk+C,CAAAr7B,UAAP,CAA2B,CACzBwnB,QAASA,QAAQ,CAAChlC,CAAD,CAAM,CACjB,IAAAujC,QAAAmL,QAAA1N,OAAJ,GACIhhC,CAAJ,GAAY,IAAAujC,QAAZ;AACE,IAAA+V,SAAA,CAAcR,CAAA,CACZ,QADY,CAGZ94C,CAHY,CAAd,CADF,CAME,IAAAu5C,UAAA,CAAev5C,CAAf,CAPF,CADqB,CADE,CAczBu5C,UAAWA,QAAQ,CAACv5C,CAAD,CAAM,CAmBvB8kC,QAASA,EAAc,CAAC9kC,CAAD,CAAM,CACvB0kC,CAAJ,GACAA,CACA,CADO,CAAA,CACP,CAAA8U,CAAAD,UAAA,CAAev5C,CAAf,CAFA,CAD2B,CAK7By5C,QAASA,EAAa,CAACz5C,CAAD,CAAM,CACtB0kC,CAAJ,GACAA,CACA,CADO,CAAA,CACP,CAAA8U,CAAAF,SAAA,CAAct5C,CAAd,CAFA,CAD0B,CAvB5B,IAAI23B,CAAJ,CACI6hB,EAAO,IADX,CAEI9U,EAAO,CAAA,CACX,IAAI,CACF,GAAK5qC,CAAA,CAASkG,CAAT,CAAL,EAAsBvH,CAAA,CAAWuH,CAAX,CAAtB,CAAwC23B,CAAA,CAAO33B,CAAP,EAAcA,CAAA23B,KAClDl/B,EAAA,CAAWk/B,CAAX,CAAJ,EACE,IAAA4L,QAAAmL,QAAA1N,OACA,CAD+B,EAC/B,CAAArJ,CAAAh/B,KAAA,CAAUqH,CAAV,CAAe8kC,CAAf,CAA+B2U,CAA/B,CAA8ChB,CAAA,CAAW,IAAX,CAAiB,IAAA/N,OAAjB,CAA9C,CAFF,GAIE,IAAAnH,QAAAmL,QAAAt1C,MAEA,CAF6B4G,CAE7B,CADA,IAAAujC,QAAAmL,QAAA1N,OACA,CAD8B,CAC9B,CAAA0X,CAAA,CAAqB,IAAAnV,QAAAmL,QAArB,CANF,CAFE,CAUF,MAAO/sC,CAAP,CAAU,CACV83C,CAAA,CAAc93C,CAAd,CACA,CAAA42C,CAAA,CAAiB52C,CAAjB,CAFU,CAdW,CAdA,CA6CzB2gC,OAAQA,QAAQ,CAAC/6B,CAAD,CAAS,CACnB,IAAAg8B,QAAAmL,QAAA1N,OAAJ,EACA,IAAAsY,SAAA,CAAc/xC,CAAd,CAFuB,CA7CA,CAkDzB+xC,SAAUA,QAAQ,CAAC/xC,CAAD,CAAS,CACzB,IAAAg8B,QAAAmL,QAAAt1C,MAAA,CAA6BmO,CAC7B,KAAAg8B,QAAAmL,QAAA1N,OAAA;AAA8B,CAC9B0X,EAAA,CAAqB,IAAAnV,QAAAmL,QAArB,CAHyB,CAlDF,CAwDzBhE,OAAQA,QAAQ,CAACgP,CAAD,CAAW,CACzB,IAAIvT,EAAY,IAAA5C,QAAAmL,QAAAkK,QAEoB,EAApC,EAAK,IAAArV,QAAAmL,QAAA1N,OAAL,EAA0CmF,CAA1C,EAAuDA,CAAAnuC,OAAvD,EACEsgD,CAAA,CAAS,QAAQ,EAAG,CAElB,IAFkB,IACd/zB,CADc,CACJ/F,CADI,CAETvlB,EAAI,CAFK,CAEFY,EAAKssC,CAAAnuC,OAArB,CAAuCiB,CAAvC,CAA2CY,CAA3C,CAA+CZ,CAAA,EAA/C,CAAoD,CAClDulB,CAAA,CAAS2nB,CAAA,CAAUltC,CAAV,CAAA,CAAa,CAAb,CACTsrB,EAAA,CAAW4hB,CAAA,CAAUltC,CAAV,CAAA,CAAa,CAAb,CACX,IAAI,CACFulB,CAAAksB,OAAA,CAAcjyC,CAAA,CAAW8rB,CAAX,CAAA,CAAuBA,CAAA,CAASm1B,CAAT,CAAvB,CAA4CA,CAA1D,CADE,CAEF,MAAO/3C,CAAP,CAAU,CACV42C,CAAA,CAAiB52C,CAAjB,CADU,CALsC,CAFlC,CAApB,CAJuB,CAxDF,CAA3B,CAsHA,KAAIg4C,EAAcA,QAAoB,CAACvgD,CAAD,CAAQwgD,CAAR,CAAkB,CACtD,IAAIp7B,EAAS,IAAIq6B,CACbe,EAAJ,CACEp7B,CAAAwmB,QAAA,CAAe5rC,CAAf,CADF,CAGEolB,CAAA8jB,OAAA,CAAclpC,CAAd,CAEF,OAAOolB,EAAA+kB,QAP+C,CAAxD,CAUI8V,EAAiBA,QAAuB,CAACjgD,CAAD,CAAQygD,CAAR,CAAoBt1B,CAApB,CAA8B,CACxE,IAAIu1B,EAAiB,IACrB,IAAI,CACErhD,CAAA,CAAW8rB,CAAX,CAAJ,GAA0Bu1B,CAA1B,CAA2Cv1B,CAAA,EAA3C,CADE,CAEF,MAAO5iB,CAAP,CAAU,CACV,MAAOg4C,EAAA,CAAYh4C,CAAZ,CAAe,CAAA,CAAf,CADG,CAGZ,MAAkBm4C,EAAlB,EAvueYrhD,CAAA,CAuueMqhD,CAvueKniB,KAAX,CAuueZ,CACSmiB,CAAAniB,KAAA,CAAoB,QAAQ,EAAG,CACpC,MAAOgiB,EAAA,CAAYvgD,CAAZ,CAAmBygD,CAAnB,CAD6B,CAA/B,CAEJ,QAAQ,CAAC52B,CAAD,CAAQ,CACjB,MAAO02B,EAAA,CAAY12B,CAAZ,CAAmB,CAAA,CAAnB,CADU,CAFZ,CADT,CAOS02B,CAAA,CAAYvgD,CAAZ,CAAmBygD,CAAnB,CAd+D,CAV1E,CA8CIrW,EAAOA,QAAQ,CAACpqC,CAAD,CAAQmrB,CAAR,CAAkBw1B,CAAlB,CAA2Bb,CAA3B,CAAyC,CAC1D,IAAI16B;AAAS,IAAIq6B,CACjBr6B,EAAAwmB,QAAA,CAAe5rC,CAAf,CACA,OAAOolB,EAAA+kB,QAAA5L,KAAA,CAAoBpT,CAApB,CAA8Bw1B,CAA9B,CAAuCb,CAAvC,CAHmD,CA9C5D,CA4GIc,EAAKA,QAAU,CAACC,CAAD,CAAW,CAC5B,GAAK,CAAAxhD,CAAA,CAAWwhD,CAAX,CAAL,CACE,KAAMnB,EAAA,CAAS,SAAT,CAAsDmB,CAAtD,CAAN,CAGF,IAAIlV,EAAW,IAAI8T,CAUnBoB,EAAA,CARAC,QAAkB,CAAC9gD,CAAD,CAAQ,CACxB2rC,CAAAC,QAAA,CAAiB5rC,CAAjB,CADwB,CAQ1B,CAJA2qC,QAAiB,CAACx8B,CAAD,CAAS,CACxBw9B,CAAAzC,OAAA,CAAgB/6B,CAAhB,CADwB,CAI1B,CAEA,OAAOw9B,EAAAxB,QAjBqB,CAsB9ByW,EAAAx8B,UAAA,CAAeg7B,CAAAh7B,UAEfw8B,EAAAt0B,MAAA,CA3UYA,QAAQ,EAAG,CACrB,IAAI2b,EAAI,IAAIwX,CAEZxX,EAAA2D,QAAA,CAAYyT,CAAA,CAAWpX,CAAX,CAAcA,CAAA2D,QAAd,CACZ3D,EAAAiB,OAAA,CAAWmW,CAAA,CAAWpX,CAAX,CAAcA,CAAAiB,OAAd,CACXjB,EAAAqJ,OAAA,CAAW+N,CAAA,CAAWpX,CAAX,CAAcA,CAAAqJ,OAAd,CACX,OAAOrJ,EANc,CA4UvB2Y,EAAA1X,OAAA,CA3IaA,QAAQ,CAAC/6B,CAAD,CAAS,CAC5B,IAAIiX,EAAS,IAAIq6B,CACjBr6B,EAAA8jB,OAAA,CAAc/6B,CAAd,CACA,OAAOiX,EAAA+kB,QAHqB,CA4I9ByW,EAAAxW,KAAA,CAAUA,CACVwW,EAAAhV,QAAA,CArEcxB,CAsEdwW,EAAAG,IAAA,CApDAA,QAAY,CAACC,CAAD,CAAW,CAAA,IACjBrV,EAAW,IAAI8T,CADE,CAEjBpuC,EAAU,CAFO,CAGjB4vC,EAAUxiD,CAAA,CAAQuiD,CAAR,CAAA,CAAoB,EAApB,CAAyB,EAEvC/hD,EAAA,CAAQ+hD,CAAR,CAAkB,QAAQ,CAAC7W,CAAD,CAAU/qC,CAAV,CAAe,CACvCiS,CAAA,EACA+4B,EAAA,CAAKD,CAAL,CAAA5L,KAAA,CAAmB,QAAQ,CAACv+B,CAAD,CAAQ,CAC7BihD,CAAA3hD,eAAA,CAAuBF,CAAvB,CAAJ;CACA6hD,CAAA,CAAQ7hD,CAAR,CACA,CADeY,CACf,CAAM,EAAEqR,CAAR,EAAkBs6B,CAAAC,QAAA,CAAiBqV,CAAjB,CAFlB,CADiC,CAAnC,CAIG,QAAQ,CAAC9yC,CAAD,CAAS,CACd8yC,CAAA3hD,eAAA,CAAuBF,CAAvB,CAAJ,EACAusC,CAAAzC,OAAA,CAAgB/6B,CAAhB,CAFkB,CAJpB,CAFuC,CAAzC,CAYgB,EAAhB,GAAIkD,CAAJ,EACEs6B,CAAAC,QAAA,CAAiBqV,CAAjB,CAGF,OAAOtV,EAAAxB,QArBc,CAsDvB,OAAOyW,EA9VqC,CAiW9CnlC,QAASA,GAAa,EAAG,CACvB,IAAA2H,KAAA,CAAY,CAAC,SAAD,CAAY,UAAZ,CAAwB,QAAQ,CAAC9H,CAAD,CAAUF,CAAV,CAAoB,CAC9D,IAAI8lC,EAAwB5lC,CAAA4lC,sBAAxBA,EACwB5lC,CAAA6lC,4BAD5B,CAGIC,EAAuB9lC,CAAA8lC,qBAAvBA,EACuB9lC,CAAA+lC,2BADvBD,EAEuB9lC,CAAAgmC,kCAL3B,CAOIC,EAAe,CAAEL,CAAAA,CAPrB,CAQIM,EAAMD,CAAA,CACN,QAAQ,CAACh7C,CAAD,CAAK,CACX,IAAIonB,EAAKuzB,CAAA,CAAsB36C,CAAtB,CACT,OAAO,SAAQ,EAAG,CAChB66C,CAAA,CAAqBzzB,CAArB,CADgB,CAFP,CADP,CAON,QAAQ,CAACpnB,CAAD,CAAK,CACX,IAAIk7C,EAAQrmC,CAAA,CAAS7U,CAAT,CAAa,KAAb,CAAoB,CAAA,CAApB,CACZ,OAAO,SAAQ,EAAG,CAChB6U,CAAAsR,OAAA,CAAgB+0B,CAAhB,CADgB,CAFP,CAOjBD,EAAAE,UAAA,CAAgBH,CAEhB,OAAOC,EAzBuD,CAApD,CADW,CAiGzBrnC,QAASA,GAAkB,EAAG,CAa5BwnC,QAASA,EAAqB,CAAC5/C,CAAD,CAAS,CACrC6/C,QAASA,EAAU,EAAG,CACpB,IAAAC,WAAA;AAAkB,IAAAC,cAAlB,CACI,IAAAC,YADJ,CACuB,IAAAC,YADvB,CAC0C,IAC1C,KAAAC,YAAA,CAAmB,EACnB,KAAAC,gBAAA,CAAuB,EACvB,KAAAC,gBAAA,CAAuB,CACvB,KAAAC,IAAA,CA9zfG,EAAEliD,EA+zfL,KAAAmiD,aAAA,CAAoB,IAPA,CAStBT,CAAAx9B,UAAA,CAAuBriB,CACvB,OAAO6/C,EAX8B,CAZvC,IAAInwB,EAAM,EAAV,CACI6wB,EAAmBjkD,CAAA,CAAO,YAAP,CADvB,CAEIkkD,EAAiB,IAFrB,CAGIC,EAAe,IAEnB,KAAAC,UAAA,CAAiBC,QAAQ,CAAC1iD,CAAD,CAAQ,CAC3ByB,SAAA7C,OAAJ,GACE6yB,CADF,CACQzxB,CADR,CAGA,OAAOyxB,EAJwB,CAqBjC,KAAArO,KAAA,CAAY,CAAC,mBAAD,CAAsB,QAAtB,CAAgC,UAAhC,CACR,QAAQ,CAAC5K,CAAD,CAAoBwB,CAApB,CAA4BhC,CAA5B,CAAsC,CAEhD2qC,QAASA,EAAiB,CAACC,CAAD,CAAS,CAC/BA,CAAAC,aAAAjkB,YAAA,CAAkC,CAAA,CADH,CAInCkkB,QAASA,EAAY,CAACvlB,CAAD,CAAS,CAEf,CAAb,GAAI5W,EAAJ,GAME4W,CAAAwkB,YACA,EADsBe,CAAA,CAAavlB,CAAAwkB,YAAb,CACtB,CAAAxkB,CAAAukB,cAAA,EAAwBgB,CAAA,CAAavlB,CAAAukB,cAAb,CAP1B,CAiBAvkB,EAAA7J,QAAA,CAAiB6J,CAAAukB,cAAjB;AAAwCvkB,CAAAwlB,cAAxC,CAA+DxlB,CAAAwkB,YAA/D,CACIxkB,CAAAykB,YADJ,CACyBzkB,CAAAylB,MADzB,CACwCzlB,CAAAskB,WADxC,CAC4D,IApBhC,CA+D9BoB,QAASA,EAAK,EAAG,CACf,IAAAb,IAAA,CA54fG,EAAEliD,EA64fL,KAAAmrC,QAAA,CAAe,IAAA3X,QAAf,CAA8B,IAAAmuB,WAA9B,CACe,IAAAC,cADf,CACoC,IAAAiB,cADpC,CAEe,IAAAhB,YAFf,CAEkC,IAAAC,YAFlC,CAEqD,IACrD,KAAAgB,MAAA,CAAa,IACb,KAAApkB,YAAA,CAAmB,CAAA,CACnB,KAAAqjB,YAAA,CAAmB,EACnB,KAAAC,gBAAA,CAAuB,EACvB,KAAAC,gBAAA,CAAuB,CACvB,KAAAzoB,kBAAA,CAAyB,IAVV,CAooCjBwpB,QAASA,EAAU,CAACC,CAAD,CAAQ,CACzB,GAAIjpC,CAAAmxB,QAAJ,CACE,KAAMiX,EAAA,CAAiB,QAAjB,CAAsDpoC,CAAAmxB,QAAtD,CAAN,CAGFnxB,CAAAmxB,QAAA,CAAqB8X,CALI,CAY3BC,QAASA,EAAsB,CAACxe,CAAD,CAAUiM,CAAV,CAAiB,CAC9C,EACEjM,EAAAud,gBAAA,EAA2BtR,CAD7B,OAEUjM,CAFV,CAEoBA,CAAAlR,QAFpB,CAD8C,CAMhD2vB,QAASA,EAAsB,CAACze,CAAD,CAAUiM,CAAV,CAAiBxmC,CAAjB,CAAuB,CACpD,EACEu6B,EAAAsd,gBAAA,CAAwB73C,CAAxB,CAEA;AAFiCwmC,CAEjC,CAAsC,CAAtC,GAAIjM,CAAAsd,gBAAA,CAAwB73C,CAAxB,CAAJ,EACE,OAAOu6B,CAAAsd,gBAAA,CAAwB73C,CAAxB,CAJX,OAMUu6B,CANV,CAMoBA,CAAAlR,QANpB,CADoD,CActD4vB,QAASA,EAAY,EAAG,EAExBC,QAASA,EAAe,EAAG,CACzB,IAAA,CAAOC,CAAA5kD,OAAP,CAAA,CACE,GAAI,CACF4kD,CAAAl9B,MAAA,EAAA,EADE,CAEF,MAAO/d,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAIdi6C,CAAA,CAAe,IARU,CAW3BiB,QAASA,EAAkB,EAAG,CACP,IAArB,GAAIjB,CAAJ,GACEA,CADF,CACiBxqC,CAAAsU,MAAA,CAAe,QAAQ,EAAG,CACvCpS,CAAA1O,OAAA,CAAkB+3C,CAAlB,CADuC,CAA1B,CADjB,CAD4B,CA5oC9BN,CAAA7+B,UAAA,CAAkB,CAChBtf,YAAam+C,CADG,CA+BhBtvB,KAAMA,QAAQ,CAAC+vB,CAAD,CAAU3hD,CAAV,CAAkB,CAC9B,IAAI4hD,CAEJ5hD,EAAA,CAASA,CAAT,EAAmB,IAEf2hD,EAAJ,EACEC,CACA,CADQ,IAAIV,CACZ,CAAAU,CAAAX,MAAA,CAAc,IAAAA,MAFhB,GAMO,IAAAX,aAGL,GAFE,IAAAA,aAEF,CAFsBV,CAAA,CAAsB,IAAtB,CAEtB,EAAAgC,CAAA,CAAQ,IAAI,IAAAtB,aATd,CAWAsB,EAAAjwB,QAAA,CAAgB3xB,CAChB4hD,EAAAZ,cAAA,CAAsBhhD,CAAAigD,YAClBjgD,EAAAggD,YAAJ,EACEhgD,CAAAigD,YAAAF,cACA,CADmC6B,CACnC,CAAA5hD,CAAAigD,YAAA,CAAqB2B,CAFvB,EAIE5hD,CAAAggD,YAJF,CAIuBhgD,CAAAigD,YAJvB;AAI4C2B,CAQ5C,EAAID,CAAJ,EAAe3hD,CAAf,EAAyB,IAAzB,GAA+B4hD,CAAA7pB,IAAA,CAAU,UAAV,CAAsB6oB,CAAtB,CAE/B,OAAOgB,EAhCuB,CA/BhB,CAsLhB7gD,OAAQA,QAAQ,CAAC8gD,CAAD,CAAWn5B,CAAX,CAAqBwkB,CAArB,CAAqCuO,CAArC,CAA4D,CAC1E,IAAIlxC,EAAM0N,CAAA,CAAO4pC,CAAP,CAEV,IAAIt3C,CAAAsjC,gBAAJ,CACE,MAAOtjC,EAAAsjC,gBAAA,CAAoB,IAApB,CAA0BnlB,CAA1B,CAAoCwkB,CAApC,CAAoD3iC,CAApD,CAAyDs3C,CAAzD,CAJiE,KAMtEt4C,EAAQ,IAN8D,CAOtExH,EAAQwH,CAAAu2C,WAP8D,CAQtEgC,EAAU,CACRt9C,GAAIkkB,CADI,CAERq5B,KAAMR,CAFE,CAGRh3C,IAAKA,CAHG,CAIRqjC,IAAK6N,CAAL7N,EAA8BiU,CAJtB,CAKRG,GAAI,CAAE9U,CAAAA,CALE,CAQdsT,EAAA,CAAiB,IAEZljD,EAAA,CAAWorB,CAAX,CAAL,GACEo5B,CAAAt9C,GADF,CACerE,CADf,CAIK4B,EAAL,GACEA,CADF,CACUwH,CAAAu2C,WADV,CAC6B,EAD7B,CAKA/9C,EAAAiH,QAAA,CAAc84C,CAAd,CACAT,EAAA,CAAuB,IAAvB,CAA6B,CAA7B,CAEA,OAAOY,SAAwB,EAAG,CACG,CAAnC,EAAIngD,EAAA,CAAYC,CAAZ,CAAmB+/C,CAAnB,CAAJ,EACET,CAAA,CAAuB93C,CAAvB,CAA+B,EAA/B,CAEFi3C,EAAA,CAAiB,IAJe,CA9BwC,CAtL5D,CAqPhBjS,YAAaA,QAAQ,CAAC2T,CAAD,CAAmBx5B,CAAnB,CAA6B,CAwChDy5B,QAASA,EAAgB,EAAG,CAC1BC,CAAA,CAA0B,CAAA,CAEtBC,EAAJ,EACEA,CACA,CADW,CAAA,CACX,CAAA35B,CAAA,CAAS45B,CAAT,CAAoBA,CAApB,CAA+B/9C,CAA/B,CAFF,EAIEmkB,CAAA,CAAS45B,CAAT,CAAoB7T,CAApB,CAA+BlqC,CAA/B,CAPwB,CAvC5B,IAAIkqC,EAAgBzxC,KAAJ,CAAUklD,CAAArlD,OAAV,CAAhB,CACIylD,EAAgBtlD,KAAJ,CAAUklD,CAAArlD,OAAV,CADhB,CAEI0lD,EAAgB,EAFpB,CAGIh+C,EAAO,IAHX,CAII69C,EAA0B,CAAA,CAJ9B,CAKIC,EAAW,CAAA,CAEf,IAAKxlD,CAAAqlD,CAAArlD,OAAL,CAA8B,CAE5B,IAAI2lD,EAAa,CAAA,CACjBj+C,EAAAzD,WAAA,CAAgB,QAAQ,EAAG,CACrB0hD,CAAJ;AAAgB95B,CAAA,CAAS45B,CAAT,CAAoBA,CAApB,CAA+B/9C,CAA/B,CADS,CAA3B,CAGA,OAAOk+C,SAA6B,EAAG,CACrCD,CAAA,CAAa,CAAA,CADwB,CANX,CAW9B,GAAgC,CAAhC,GAAIN,CAAArlD,OAAJ,CAEE,MAAO,KAAAkE,OAAA,CAAYmhD,CAAA,CAAiB,CAAjB,CAAZ,CAAiCC,QAAyB,CAAClkD,CAAD,CAAQ2gC,CAAR,CAAkBr1B,CAAlB,CAAyB,CACxF+4C,CAAA,CAAU,CAAV,CAAA,CAAerkD,CACfwwC,EAAA,CAAU,CAAV,CAAA,CAAe7P,CACflW,EAAA,CAAS45B,CAAT,CAAqBrkD,CAAD,GAAW2gC,CAAX,CAAuB0jB,CAAvB,CAAmC7T,CAAvD,CAAkEllC,CAAlE,CAHwF,CAAnF,CAOTrM,EAAA,CAAQglD,CAAR,CAA0B,QAAQ,CAAClL,CAAD,CAAOl5C,CAAP,CAAU,CAC1C,IAAI4kD,EAAYn+C,CAAAxD,OAAA,CAAYi2C,CAAZ,CAAkB2L,QAA4B,CAAC1kD,CAAD,CAAQ2gC,CAAR,CAAkB,CAC9E0jB,CAAA,CAAUxkD,CAAV,CAAA,CAAeG,CACfwwC,EAAA,CAAU3wC,CAAV,CAAA,CAAe8gC,CACVwjB,EAAL,GACEA,CACA,CAD0B,CAAA,CAC1B,CAAA79C,CAAAzD,WAAA,CAAgBqhD,CAAhB,CAFF,CAH8E,CAAhE,CAQhBI,EAAAhgD,KAAA,CAAmBmgD,CAAnB,CAT0C,CAA5C,CAuBA,OAAOD,SAA6B,EAAG,CACrC,IAAA,CAAOF,CAAA1lD,OAAP,CAAA,CACE0lD,CAAAh+B,MAAA,EAAA,EAFmC,CAnDS,CArPlC,CAuWhBmc,iBAAkBA,QAAQ,CAAClkC,CAAD,CAAMksB,CAAN,CAAgB,CAoBxCk6B,QAASA,EAA2B,CAACC,CAAD,CAAS,CAC3CpkB,CAAA,CAAWokB,CADgC,KAE5BxlD,CAF4B,CAEvBylD,CAFuB,CAEdC,CAFc,CAELC,CAGtC,IAAI,CAAAtiD,CAAA,CAAY+9B,CAAZ,CAAJ,CAAA,CAEA,GAAK9/B,CAAA,CAAS8/B,CAAT,CAAL,CAKO,GAAIliC,EAAA,CAAYkiC,CAAZ,CAAJ,CAgBL,IAfIG,CAeK9gC,GAfQmlD,CAeRnlD,GAbP8gC,CAEA,CAFWqkB,CAEX,CADAC,CACA,CADYtkB,CAAA/hC,OACZ,CAD8B,CAC9B,CAAAsmD,CAAA,EAWOrlD,EARTslD,CAQStlD,CARG2gC,CAAA5hC,OAQHiB,CANLolD,CAMKplD,GANSslD,CAMTtlD,GAJPqlD,CAAA,EACA,CAAAvkB,CAAA/hC,OAAA,CAAkBqmD,CAAlB,CAA8BE,CAGvBtlD,EAAAA,CAAAA,CAAI,CAAb,CAAgBA,CAAhB,CAAoBslD,CAApB,CAA+BtlD,CAAA,EAA/B,CACEklD,CAIA,CAJUpkB,CAAA,CAAS9gC,CAAT,CAIV,CAHAilD,CAGA,CAHUtkB,CAAA,CAAS3gC,CAAT,CAGV,CADAglD,CACA,CADWE,CACX,GADuBA,CACvB,EADoCD,CACpC,GADgDA,CAChD,CAAKD,CAAL,EAAiBE,CAAjB,GAA6BD,CAA7B,GACEI,CAAA,EACA,CAAAvkB,CAAA,CAAS9gC,CAAT,CAAA,CAAcilD,CAFhB,CArBG,KA0BA,CACDnkB,CAAJ;AAAiBykB,CAAjB,GAEEzkB,CAEA,CAFWykB,CAEX,CAF4B,EAE5B,CADAH,CACA,CADY,CACZ,CAAAC,CAAA,EAJF,CAOAC,EAAA,CAAY,CACZ,KAAK/lD,CAAL,GAAYohC,EAAZ,CACMlhC,EAAAC,KAAA,CAAoBihC,CAApB,CAA8BphC,CAA9B,CAAJ,GACE+lD,CAAA,EAIA,CAHAL,CAGA,CAHUtkB,CAAA,CAASphC,CAAT,CAGV,CAFA2lD,CAEA,CAFUpkB,CAAA,CAASvhC,CAAT,CAEV,CAAIA,CAAJ,GAAWuhC,EAAX,EACEkkB,CACA,CADWE,CACX,GADuBA,CACvB,EADoCD,CACpC,GADgDA,CAChD,CAAKD,CAAL,EAAiBE,CAAjB,GAA6BD,CAA7B,GACEI,CAAA,EACA,CAAAvkB,CAAA,CAASvhC,CAAT,CAAA,CAAgB0lD,CAFlB,CAFF,GAOEG,CAAA,EAEA,CADAtkB,CAAA,CAASvhC,CAAT,CACA,CADgB0lD,CAChB,CAAAI,CAAA,EATF,CALF,CAkBF,IAAID,CAAJ,CAAgBE,CAAhB,CAGE,IAAK/lD,CAAL,GADA8lD,EAAA,EACYvkB,CAAAA,CAAZ,CACOrhC,EAAAC,KAAA,CAAoBihC,CAApB,CAA8BphC,CAA9B,CAAL,GACE6lD,CAAA,EACA,CAAA,OAAOtkB,CAAA,CAASvhC,CAAT,CAFT,CAhCC,CA/BP,IACMuhC,EAAJ,GAAiBH,CAAjB,GACEG,CACA,CADWH,CACX,CAAA0kB,CAAA,EAFF,CAqEF,OAAOA,EAxEP,CAL2C,CAnB7CP,CAAApiB,UAAA,CAAwC,CAAA,CAExC,KAAIj8B,EAAO,IAAX,CAEIk6B,CAFJ,CAKIG,CALJ,CAOI0kB,CAPJ,CASIC,EAAuC,CAAvCA,CAAqB76B,CAAA7rB,OATzB,CAUIsmD,EAAiB,CAVrB,CAWIK,EAAiBvrC,CAAA,CAAOzb,CAAP,CAAYomD,CAAZ,CAXrB,CAYIK,EAAgB,EAZpB,CAaII,EAAiB,EAbrB,CAcII,EAAU,CAAA,CAdd,CAeIP,EAAY,CA+GhB,OAAO,KAAAniD,OAAA,CAAYyiD,CAAZ,CA7BPE,QAA+B,EAAG,CAC5BD,CAAJ,EACEA,CACA,CADU,CAAA,CACV,CAAA/6B,CAAA,CAAS+V,CAAT,CAAmBA,CAAnB,CAA6Bl6B,CAA7B,CAFF,EAIEmkB,CAAA,CAAS+V,CAAT,CAAmB6kB,CAAnB,CAAiC/+C,CAAjC,CAIF,IAAIg/C,CAAJ,CACE,GAAK5kD,CAAA,CAAS8/B,CAAT,CAAL,CAGO,GAAIliC,EAAA,CAAYkiC,CAAZ,CAAJ,CAA2B,CAChC6kB,CAAA,CAAmBtmD,KAAJ,CAAUyhC,CAAA5hC,OAAV,CACf,KAAS,IAAAiB,EAAI,CAAb,CAAgBA,CAAhB,CAAoB2gC,CAAA5hC,OAApB,CAAqCiB,CAAA,EAArC,CACEwlD,CAAA,CAAaxlD,CAAb,CAAA,CAAkB2gC,CAAA,CAAS3gC,CAAT,CAHY,CAA3B,IAOL,KAAST,CAAT,GADAimD,EACgB7kB,CADD,EACCA,CAAAA,CAAhB,CACMlhC,EAAAC,KAAA,CAAoBihC,CAApB,CAA8BphC,CAA9B,CAAJ,GACEimD,CAAA,CAAajmD,CAAb,CADF,CACsBohC,CAAA,CAASphC,CAAT,CADtB,CAXJ,KAEEimD,EAAA,CAAe7kB,CAZa,CA6B3B,CAjIiC,CAvW1B,CA8hBhB+V,QAASA,QAAQ,EAAG,CAAA,IACdmP,CADc;AACP1lD,CADO,CACA8jD,CADA,CACMv9C,CADN,CACU+F,CADV,CAEdq5C,CAFc,CAGd/mD,CAHc,CAIdgnD,CAJc,CAIPC,EAAMp0B,CAJC,CAKRmT,CALQ,CAMdkhB,EAAW,EANG,CAOdC,CAPc,CAONC,CAEZ9C,EAAA,CAAW,SAAX,CAEAlrC,EAAAmU,iBAAA,EAEI,KAAJ,GAAajS,CAAb,EAA4C,IAA5C,GAA2BsoC,CAA3B,GAGExqC,CAAAsU,MAAAI,OAAA,CAAsB81B,CAAtB,CACA,CAAAe,CAAA,EAJF,CAOAhB,EAAA,CAAiB,IAEjB,GAAG,CACDqD,CAAA,CAAQ,CAAA,CACRhhB,EAAA,CAnB0B5hB,IAwB1B,KAASijC,CAAT,CAA8B,CAA9B,CAAiCA,CAAjC,CAAsDC,CAAAtnD,OAAtD,CAAyEqnD,CAAA,EAAzE,CAA+F,CAC7F,GAAI,CACFD,CACA,CADYE,CAAA,CAAWD,CAAX,CACZ,CAAAD,CAAA16C,MAAA66C,MAAA,CAAsBH,CAAAngB,WAAtB,CAA4CmgB,CAAAx/B,OAA5C,CAFE,CAGF,MAAOje,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAGZg6C,CAAA,CAAiB,IAP4E,CAS/F2D,CAAAtnD,OAAA,CAAoB,CAEpB,EAAA,CACA,EAAG,CACD,GAAK+mD,CAAL,CAAgB/gB,CAAAid,WAAhB,CAGE,IADAjjD,CACA,CADS+mD,CAAA/mD,OACT,CAAOA,CAAA,EAAP,CAAA,CACE,GAAI,CAIF,GAHA8mD,CAGA,CAHQC,CAAA,CAAS/mD,CAAT,CAGR,CAEE,GADA0N,CACI,CADEo5C,CAAAp5C,IACF,EAACtM,CAAD,CAASsM,CAAA,CAAIs4B,CAAJ,CAAT,KAA4Bkf,CAA5B,CAAmC4B,CAAA5B,KAAnC,GACE,EAAA4B,CAAA3B,GAAA,CACIt+C,EAAA,CAAOzF,CAAP,CAAc8jD,CAAd,CADJ,CAEsB,QAFtB,GAEK,MAAO9jD,EAFZ,EAEkD,QAFlD,GAEkC,MAAO8jD,EAFzC,EAGQn8C,KAAA,CAAM3H,CAAN,CAHR,EAGwB2H,KAAA,CAAMm8C,CAAN,CAHxB,CADN,CAKE8B,CAKA,CALQ,CAAA,CAKR,CAJArD,CAIA,CAJiBmD,CAIjB,CAHAA,CAAA5B,KAGA,CAHa4B,CAAA3B,GAAA,CAAW7/C,CAAA,CAAKlE,CAAL,CAAY,IAAZ,CAAX,CAA+BA,CAG5C,CAFAuG,CAEA,CAFKm/C,CAAAn/C,GAEL,CADAA,CAAA,CAAGvG,CAAH,CAAY8jD,CAAD,GAAUR,CAAV,CAA0BtjD,CAA1B,CAAkC8jD,CAA7C,CAAoDlf,CAApD,CACA,CAAU,CAAV,CAAIihB,CAAJ,GACEE,CAEA,CAFS,CAET,CAFaF,CAEb,CADKC,CAAA,CAASC,CAAT,CACL,GADuBD,CAAA,CAASC,CAAT,CACvB,CAD0C,EAC1C,EAAAD,CAAA,CAASC,CAAT,CAAAzhD,KAAA,CAAsB,CACpB8hD,IAAK/mD,CAAA,CAAWqmD,CAAA/V,IAAX,CAAA;AAAwB,MAAxB,EAAkC+V,CAAA/V,IAAAtlC,KAAlC,EAAoDq7C,CAAA/V,IAAAntC,SAAA,EAApD,EAA4EkjD,CAAA/V,IAD7D,CAEpB3mB,OAAQhpB,CAFY,CAGpBipB,OAAQ66B,CAHY,CAAtB,CAHF,CAVF,KAmBO,IAAI4B,CAAJ,GAAcnD,CAAd,CAA8B,CAGnCqD,CAAA,CAAQ,CAAA,CACR,OAAM,CAJ6B,CAzBrC,CAgCF,MAAOr9C,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAShB,GAAM,EAAA89C,CAAA,CAASzhB,CAAAud,gBAAT,EAAoCvd,CAAAmd,YAApC,EACDnd,CADC,GAlFkB5hB,IAkFlB,EACqB4hB,CAAAkd,cADrB,CAAN,CAEE,IAAA,CAAOld,CAAP,GApFsB5hB,IAoFtB,EAA+B,EAAAqjC,CAAA,CAAOzhB,CAAAkd,cAAP,CAA/B,CAAA,CACEld,CAAA,CAAUA,CAAAlR,QAjDb,CAAH,MAoDUkR,CApDV,CAoDoByhB,CApDpB,CAwDA,KAAKT,CAAL,EAAcM,CAAAtnD,OAAd,GAAsC,CAAAinD,CAAA,EAAtC,CAEE,KAueN3rC,EAAAmxB,QAveY,CAueS,IAveT,CAAAiX,CAAA,CAAiB,QAAjB,CAGF7wB,CAHE,CAGGq0B,CAHH,CAAN,CA7ED,CAAH,MAmFSF,CAnFT,EAmFkBM,CAAAtnD,OAnFlB,CAwFA,KA4dFsb,CAAAmxB,QA5dE,CA4dmB,IA5dnB,CAAOib,CAAP,CAAiCC,CAAA3nD,OAAjC,CAAA,CACE,GAAI,CACF2nD,CAAA,CAAgBD,CAAA,EAAhB,CAAA,EADE,CAEF,MAAO/9C,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAIdg+C,CAAA3nD,OAAA,CAAyB0nD,CAAzB,CAAmD,CArHjC,CA9hBJ,CAyrBhBx4C,SAAUA,QAAQ,EAAG,CAEnB,GAAI8wB,CAAA,IAAAA,YAAJ,CAAA,CACA,IAAI78B,EAAS,IAAA2xB,QAEb,KAAA8hB,WAAA,CAAgB,UAAhB,CACA,KAAA5W,YAAA,CAAmB,CAAA,CAEf,KAAJ;AAAa1kB,CAAb,EAEElC,CAAAgU,uBAAA,EAGFo3B,EAAA,CAAuB,IAAvB,CAA6B,CAAC,IAAAjB,gBAA9B,CACA,KAASqE,IAAAA,CAAT,GAAsB,KAAAtE,gBAAtB,CACEmB,CAAA,CAAuB,IAAvB,CAA6B,IAAAnB,gBAAA,CAAqBsE,CAArB,CAA7B,CAA8DA,CAA9D,CAKEzkD,EAAJ,EAAcA,CAAAggD,YAAd,EAAoC,IAApC,GAA0ChgD,CAAAggD,YAA1C,CAA+D,IAAAD,cAA/D,CACI//C,EAAJ,EAAcA,CAAAigD,YAAd,EAAoC,IAApC,GAA0CjgD,CAAAigD,YAA1C,CAA+D,IAAAe,cAA/D,CACI,KAAAA,cAAJ,GAAwB,IAAAA,cAAAjB,cAAxB,CAA2D,IAAAA,cAA3D,CACI,KAAAA,cAAJ,GAAwB,IAAAA,cAAAiB,cAAxB,CAA2D,IAAAA,cAA3D,CAGA,KAAAj1C,SAAA,CAAgB,IAAAyoC,QAAhB,CAA+B,IAAA/qC,OAA/B,CAA6C,IAAA3I,WAA7C,CAA+D,IAAAuoC,YAA/D,CAAkFlpC,CAClF,KAAA43B,IAAA,CAAW,IAAAh3B,OAAX,CAAyB,IAAAwtC,YAAzB;AAA4CmW,QAAQ,EAAG,CAAE,MAAOvkD,EAAT,CACvD,KAAA+/C,YAAA,CAAmB,EAGnB,KAAAH,cAAA,CAAqB,IACrBgB,EAAA,CAAa,IAAb,CA9BA,CAFmB,CAzrBL,CAwvBhBqD,MAAOA,QAAQ,CAACpN,CAAD,CAAOvyB,CAAP,CAAe,CAC5B,MAAOxM,EAAA,CAAO++B,CAAP,CAAA,CAAa,IAAb,CAAmBvyB,CAAnB,CADqB,CAxvBd,CA0xBhB3jB,WAAYA,QAAQ,CAACk2C,CAAD,CAAOvyB,CAAP,CAAe,CAG5BtM,CAAAmxB,QAAL,EAA4B6a,CAAAtnD,OAA5B,EACEoZ,CAAAsU,MAAA,CAAe,QAAQ,EAAG,CACpB45B,CAAAtnD,OAAJ,EACEsb,CAAAq8B,QAAA,EAFsB,CAA1B,CAOF2P,EAAA5hD,KAAA,CAAgB,CAACgH,MAAO,IAAR,CAAcu6B,WAAY7rB,CAAA,CAAO++B,CAAP,CAA1B,CAAwCvyB,OAAQA,CAAhD,CAAhB,CAXiC,CA1xBnB,CAwyBhB+a,aAAcA,QAAQ,CAACh7B,CAAD,CAAK,CACzBggD,CAAAjiD,KAAA,CAAqBiC,CAArB,CADyB,CAxyBX,CAy1BhBiF,OAAQA,QAAQ,CAACutC,CAAD,CAAO,CACrB,GAAI,CACFmK,CAAA,CAAW,QAAX,CACA,IAAI,CACF,MAAO,KAAAiD,MAAA,CAAWpN,CAAX,CADL,CAAJ,OAEU,CA0Qd7+B,CAAAmxB,QAAA,CAAqB,IA1QP,CAJR,CAOF,MAAO9iC,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAPZ,OASU,CACR,GAAI,CACF2R,CAAAq8B,QAAA,EADE,CAEF,MAAOhuC,CAAP,CAAU,CAEV,KADAiQ,EAAA,CAAkBjQ,CAAlB,CACMA,CAAAA,CAAN,CAFU,CAHJ,CAVW,CAz1BP,CA83BhB6iC,YAAaA,QAAQ,CAAC2N,CAAD,CAAO,CAM1B2N,QAASA,EAAqB,EAAG,CAC/Bp7C,CAAA66C,MAAA,CAAYpN,CAAZ,CAD+B,CALjC,IAAIztC,EAAQ,IACZytC,EAAA,EAAQyK,CAAAl/C,KAAA,CAAqBoiD,CAArB,CACR3N;CAAA,CAAO/+B,CAAA,CAAO++B,CAAP,CACP0K,EAAA,EAJ0B,CA93BZ,CAo6BhB3pB,IAAKA,QAAQ,CAACzvB,CAAD,CAAOogB,CAAP,CAAiB,CAC5B,IAAIk8B,EAAiB,IAAA1E,YAAA,CAAiB53C,CAAjB,CAChBs8C,EAAL,GACE,IAAA1E,YAAA,CAAiB53C,CAAjB,CADF,CAC2Bs8C,CAD3B,CAC4C,EAD5C,CAGAA,EAAAriD,KAAA,CAAoBmmB,CAApB,CAEA,KAAIma,EAAU,IACd,GACOA,EAAAsd,gBAAA,CAAwB73C,CAAxB,CAGL,GAFEu6B,CAAAsd,gBAAA,CAAwB73C,CAAxB,CAEF,CAFkC,CAElC,EAAAu6B,CAAAsd,gBAAA,CAAwB73C,CAAxB,CAAA,EAJF,OAKUu6B,CALV,CAKoBA,CAAAlR,QALpB,CAOA,KAAIptB,EAAO,IACX,OAAO,SAAQ,EAAG,CAChB,IAAIsgD,EAAkBD,CAAA3iD,QAAA,CAAuBymB,CAAvB,CACG,GAAzB,GAAIm8B,CAAJ,GACED,CAAA,CAAeC,CAAf,CACA,CADkC,IAClC,CAAAvD,CAAA,CAAuB/8C,CAAvB,CAA6B,CAA7B,CAAgC+D,CAAhC,CAFF,CAFgB,CAhBU,CAp6Bd,CAo9BhBw8C,MAAOA,QAAQ,CAACx8C,CAAD,CAAOoa,CAAP,CAAa,CAAA,IACtBnc,EAAQ,EADc,CAEtBq+C,CAFsB,CAGtBr7C,EAAQ,IAHc,CAItBkX,EAAkB,CAAA,CAJI,CAKtBV,EAAQ,CACNzX,KAAMA,CADA,CAENy8C,YAAax7C,CAFP,CAGNkX,gBAAiBA,QAAQ,EAAG,CAACA,CAAA,CAAkB,CAAA,CAAnB,CAHtB,CAIN2zB,eAAgBA,QAAQ,EAAG,CACzBr0B,CAAAG,iBAAA,CAAyB,CAAA,CADA,CAJrB,CAONA,iBAAkB,CAAA,CAPZ,CALc,CActB8kC,EAAe7gD,EAAA,CAAO,CAAC4b,CAAD,CAAP,CAAgBrgB,SAAhB,CAA2B,CAA3B,CAdO,CAetB5B,CAfsB,CAenBjB,CAEP,GAAG,CACD+nD,CAAA,CAAiBr7C,CAAA22C,YAAA,CAAkB53C,CAAlB,CAAjB,EAA4C/B,CAC5CwZ,EAAA+gC,aAAA;AAAqBv3C,CAChBzL,EAAA,CAAI,CAAT,KAAYjB,CAAZ,CAAqB+nD,CAAA/nD,OAArB,CAA4CiB,CAA5C,CAAgDjB,CAAhD,CAAwDiB,CAAA,EAAxD,CAGE,GAAK8mD,CAAA,CAAe9mD,CAAf,CAAL,CAMA,GAAI,CAEF8mD,CAAA,CAAe9mD,CAAf,CAAA6G,MAAA,CAAwB,IAAxB,CAA8BqgD,CAA9B,CAFE,CAGF,MAAOx+C,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CATZ,IACEo+C,EAAA1iD,OAAA,CAAsBpE,CAAtB,CAAyB,CAAzB,CAEA,CADAA,CAAA,EACA,CAAAjB,CAAA,EAWJ,IAAI4jB,CAAJ,CAEE,MADAV,EAAA+gC,aACO/gC,CADc,IACdA,CAAAA,CAGTxW,EAAA,CAAQA,CAAAooB,QAzBP,CAAH,MA0BSpoB,CA1BT,CA4BAwW,EAAA+gC,aAAA,CAAqB,IAErB,OAAO/gC,EA/CmB,CAp9BZ,CA4hChB0zB,WAAYA,QAAQ,CAACnrC,CAAD,CAAOoa,CAAP,CAAa,CAAA,IAE3BmgB,EADS5hB,IADkB,CAG3BqjC,EAFSrjC,IADkB,CAI3BlB,EAAQ,CACNzX,KAAMA,CADA,CAENy8C,YALO9jC,IAGD,CAGNmzB,eAAgBA,QAAQ,EAAG,CACzBr0B,CAAAG,iBAAA,CAAyB,CAAA,CADA,CAHrB,CAMNA,iBAAkB,CAAA,CANZ,CASZ,IAAK,CAZQe,IAYRk/B,gBAAA,CAAuB73C,CAAvB,CAAL,CAAmC,MAAOyX,EAM1C,KAnB+B,IAe3BilC,EAAe7gD,EAAA,CAAO,CAAC4b,CAAD,CAAP,CAAgBrgB,SAAhB,CAA2B,CAA3B,CAfY,CAgBhB5B,CAhBgB,CAgBbjB,CAGlB,CAAQgmC,CAAR,CAAkByhB,CAAlB,CAAA,CAAyB,CACvBvkC,CAAA+gC,aAAA,CAAqBje,CACrBV,EAAA,CAAYU,CAAAqd,YAAA,CAAoB53C,CAApB,CAAZ,EAAyC,EACpCxK,EAAA,CAAI,CAAT,KAAYjB,CAAZ,CAAqBslC,CAAAtlC,OAArB,CAAuCiB,CAAvC,CAA2CjB,CAA3C,CAAmDiB,CAAA,EAAnD,CAEE,GAAKqkC,CAAA,CAAUrkC,CAAV,CAAL,CAOA,GAAI,CACFqkC,CAAA,CAAUrkC,CAAV,CAAA6G,MAAA,CAAmB,IAAnB,CAAyBqgD,CAAzB,CADE,CAEF,MAAOx+C,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CATZ,IACE27B,EAAAjgC,OAAA,CAAiBpE,CAAjB;AAAoB,CAApB,CAEA,CADAA,CAAA,EACA,CAAAjB,CAAA,EAeJ,IAAM,EAAAynD,CAAA,CAASzhB,CAAAsd,gBAAA,CAAwB73C,CAAxB,CAAT,EAA0Cu6B,CAAAmd,YAA1C,EACDnd,CADC,GAzCK5hB,IAyCL,EACqB4hB,CAAAkd,cADrB,CAAN,CAEE,IAAA,CAAOld,CAAP,GA3CS5hB,IA2CT,EAA+B,EAAAqjC,CAAA,CAAOzhB,CAAAkd,cAAP,CAA/B,CAAA,CACEld,CAAA,CAAUA,CAAAlR,QA1BS,CA+BzB5R,CAAA+gC,aAAA,CAAqB,IACrB,OAAO/gC,EAnDwB,CA5hCjB,CAmlClB,KAAI5H,EAAa,IAAI+oC,CAArB,CAGIiD,EAAahsC,CAAA8sC,aAAbd,CAAuC,EAH3C,CAIIK,EAAkBrsC,CAAA+sC,kBAAlBV,CAAiD,EAJrD,CAKI/C,EAAkBtpC,CAAAgtC,kBAAlB1D,CAAiD,EALrD,CAOI8C,EAA0B,CAE9B,OAAOpsC,EAtsCyC,CADtC,CA3BgB,CA+yC9BxI,QAASA,GAAqB,EAAG,CAAA,IAC3Bwf,EAA6B,mCADF,CAE7BG,EAA8B,4CAkBhC,KAAAH,2BAAA,CAAkCC,QAAQ,CAACC,CAAD,CAAS,CACjD,MAAI1uB,EAAA,CAAU0uB,CAAV,CAAJ,EACEF,CACO,CADsBE,CACtB,CAAA,IAFT,EAIOF,CAL0C,CAyBnD,KAAAG,4BAAA,CAAmCC,QAAQ,CAACF,CAAD,CAAS,CAClD,MAAI1uB,EAAA,CAAU0uB,CAAV,CAAJ,EACEC,CACO,CADuBD,CACvB,CAAA,IAFT,EAIOC,CAL2C,CAQpD;IAAAjO,KAAA,CAAYC,QAAQ,EAAG,CACrB,MAAO8jC,SAAoB,CAACC,CAAD,CAAMC,CAAN,CAAe,CACxC,IAAIC,EAAQD,CAAA,CAAUh2B,CAAV,CAAwCH,CAApD,CACIq2B,CACJA,EAAA,CAAgBrZ,EAAA,CAAWkZ,CAAX,CAAAh8B,KAChB,OAAsB,EAAtB,GAAIm8B,CAAJ,EAA6BA,CAAAjiD,MAAA,CAAoBgiD,CAApB,CAA7B,CAGOF,CAHP,CACS,SADT,CACqBG,CALmB,CADrB,CArDQ,CA2FjCC,QAASA,GAAa,CAACC,CAAD,CAAU,CAC9B,GAAgB,MAAhB,GAAIA,CAAJ,CACE,MAAOA,EACF,IAAI/oD,CAAA,CAAS+oD,CAAT,CAAJ,CAAuB,CAK5B,GAA8B,EAA9B,CAAIA,CAAAzjD,QAAA,CAAgB,KAAhB,CAAJ,CACE,KAAM0jD,GAAA,CAAW,QAAX,CACsDD,CADtD,CAAN,CAGFA,CAAA,CAAUE,EAAA,CAAgBF,CAAhB,CAAAjgD,QAAA,CACY,QADZ,CACsB,IADtB,CAAAA,QAAA,CAEY,KAFZ,CAEmB,YAFnB,CAGV,OAAO,KAAItG,MAAJ,CAAW,GAAX,CAAiBumD,CAAjB,CAA2B,GAA3B,CAZqB,CAavB,GAAIxmD,EAAA,CAASwmD,CAAT,CAAJ,CAIL,MAAO,KAAIvmD,MAAJ,CAAW,GAAX,CAAiBumD,CAAAtjD,OAAjB,CAAkC,GAAlC,CAEP,MAAMujD,GAAA,CAAW,UAAX,CAAN,CAtB4B,CA4BhCE,QAASA,GAAc,CAACC,CAAD,CAAW,CAChC,IAAIC,EAAmB,EACnBplD,EAAA,CAAUmlD,CAAV,CAAJ,EACE5oD,CAAA,CAAQ4oD,CAAR,CAAkB,QAAQ,CAACJ,CAAD,CAAU,CAClCK,CAAAxjD,KAAA,CAAsBkjD,EAAA,CAAcC,CAAd,CAAtB,CADkC,CAApC,CAIF,OAAOK,EAPyB,CA8ElCntC,QAASA,GAAoB,EAAG,CAC9B,IAAAotC,aAAA,CAAoBA,EADU,KAI1BC,EAAuB,CAAC,MAAD,CAJG,CAK1BC,EAAuB,EA0B3B,KAAAD,qBAAA;AAA4BE,QAAQ,CAACloD,CAAD,CAAQ,CACtCyB,SAAA7C,OAAJ,GACEopD,CADF,CACyBJ,EAAA,CAAe5nD,CAAf,CADzB,CAGA,OAAOgoD,EAJmC,CAkC5C,KAAAC,qBAAA,CAA4BE,QAAQ,CAACnoD,CAAD,CAAQ,CACtCyB,SAAA7C,OAAJ,GACEqpD,CADF,CACyBL,EAAA,CAAe5nD,CAAf,CADzB,CAGA,OAAOioD,EAJmC,CAO5C,KAAA7kC,KAAA,CAAY,CAAC,WAAD,CAAc,QAAQ,CAAC4D,CAAD,CAAY,CAW5CohC,QAASA,EAAQ,CAACX,CAAD,CAAU3V,CAAV,CAAqB,CACpC,MAAgB,MAAhB,GAAI2V,CAAJ,CACSrb,EAAA,CAAgB0F,CAAhB,CADT,CAIS,CAAE,CAAA2V,CAAAxqC,KAAA,CAAa60B,CAAA1mB,KAAb,CALyB,CA+BtCi9B,QAASA,EAAkB,CAACC,CAAD,CAAO,CAChC,IAAIC,EAAaA,QAA+B,CAACC,CAAD,CAAe,CAC7D,IAAAC,qBAAA,CAA4BC,QAAQ,EAAG,CACrC,MAAOF,EAD8B,CADsB,CAK3DF,EAAJ,GACEC,CAAAnkC,UADF,CACyB,IAAIkkC,CAD7B,CAGAC,EAAAnkC,UAAApjB,QAAA,CAA+B2nD,QAAmB,EAAG,CACnD,MAAO,KAAAF,qBAAA,EAD4C,CAGrDF,EAAAnkC,UAAA5hB,SAAA,CAAgComD,QAAoB,EAAG,CACrD,MAAO,KAAAH,qBAAA,EAAAjmD,SAAA,EAD8C,CAGvD,OAAO+lD,EAfyB,CAxClC,IAAIM,EAAgBA,QAAsB,CAACngD,CAAD,CAAO,CAC/C,KAAMg/C,GAAA,CAAW,QAAX,CAAN;AAD+C,CAI7C1gC,EAAAD,IAAA,CAAc,WAAd,CAAJ,GACE8hC,CADF,CACkB7hC,CAAA1a,IAAA,CAAc,WAAd,CADlB,CAN4C,KA4DxCw8C,EAAyBT,CAAA,EA5De,CA6DxCU,EAAS,EAEbA,EAAA,CAAOhB,EAAA7nB,KAAP,CAAA,CAA4BmoB,CAAA,CAAmBS,CAAnB,CAC5BC,EAAA,CAAOhB,EAAAiB,IAAP,CAAA,CAA2BX,CAAA,CAAmBS,CAAnB,CAC3BC,EAAA,CAAOhB,EAAAkB,IAAP,CAAA,CAA2BZ,CAAA,CAAmBS,CAAnB,CAC3BC,EAAA,CAAOhB,EAAAmB,GAAP,CAAA,CAA0Bb,CAAA,CAAmBS,CAAnB,CAC1BC,EAAA,CAAOhB,EAAA5nB,aAAP,CAAA,CAAoCkoB,CAAA,CAAmBU,CAAA,CAAOhB,EAAAkB,IAAP,CAAnB,CA8GpC,OAAO,CAAEE,QA3FTA,QAAgB,CAAC3jD,CAAD,CAAOgjD,CAAP,CAAqB,CACnC,IAAIY,EAAeL,CAAAzpD,eAAA,CAAsBkG,CAAtB,CAAA,CAA8BujD,CAAA,CAAOvjD,CAAP,CAA9B,CAA6C,IAChE,IAAK4jD,CAAAA,CAAL,CACE,KAAM1B,GAAA,CAAW,UAAX,CAEFliD,CAFE,CAEIgjD,CAFJ,CAAN,CAIF,GAAqB,IAArB,GAAIA,CAAJ,EAA6B/lD,CAAA,CAAY+lD,CAAZ,CAA7B,EAA2E,EAA3E,GAA0DA,CAA1D,CACE,MAAOA,EAIT,IAA4B,QAA5B,GAAI,MAAOA,EAAX,CACE,KAAMd,GAAA,CAAW,OAAX,CAEFliD,CAFE,CAAN,CAIF,MAAO,KAAI4jD,CAAJ,CAAgBZ,CAAhB,CAjB4B,CA2F9B,CACEjZ,WA1BTA,QAAmB,CAAC/pC,CAAD,CAAO6jD,CAAP,CAAqB,CACtC,GAAqB,IAArB,GAAIA,CAAJ,EAA6B5mD,CAAA,CAAY4mD,CAAZ,CAA7B,EAA2E,EAA3E,GAA0DA,CAA1D,CACE,MAAOA,EAET,KAAIvkD,EAAeikD,CAAAzpD,eAAA,CAAsBkG,CAAtB,CAAA,CAA8BujD,CAAA,CAAOvjD,CAAP,CAA9B,CAA6C,IAChE,IAAIV,CAAJ,EAAmBukD,CAAnB,WAA2CvkD,EAA3C,CACE,MAAOukD,EAAAZ,qBAAA,EAKT,IAAIjjD,CAAJ,GAAauiD,EAAA5nB,aAAb,CAAwC,CA9IpC2R,IAAAA;AAAY5D,EAAA,CA+ImBmb,CA/IR7mD,SAAA,EAAX,CAAZsvC,CACAjyC,CADAiyC,CACG3kB,CADH2kB,CACMwX,EAAU,CAAA,CAEfzpD,EAAA,CAAI,CAAT,KAAYstB,CAAZ,CAAgB66B,CAAAppD,OAAhB,CAA6CiB,CAA7C,CAAiDstB,CAAjD,CAAoDttB,CAAA,EAApD,CACE,GAAIuoD,CAAA,CAASJ,CAAA,CAAqBnoD,CAArB,CAAT,CAAkCiyC,CAAlC,CAAJ,CAAkD,CAChDwX,CAAA,CAAU,CAAA,CACV,MAFgD,CAKpD,GAAIA,CAAJ,CAEE,IAAKzpD,CAAO,CAAH,CAAG,CAAAstB,CAAA,CAAI86B,CAAArpD,OAAhB,CAA6CiB,CAA7C,CAAiDstB,CAAjD,CAAoDttB,CAAA,EAApD,CACE,GAAIuoD,CAAA,CAASH,CAAA,CAAqBpoD,CAArB,CAAT,CAAkCiyC,CAAlC,CAAJ,CAAkD,CAChDwX,CAAA,CAAU,CAAA,CACV,MAFgD,CAmIpD,GA7HKA,CA6HL,CACE,MAAOD,EAEP,MAAM3B,GAAA,CAAW,UAAX,CAEF2B,CAAA7mD,SAAA,EAFE,CAAN,CAJoC,CAQjC,GAAIgD,CAAJ,GAAauiD,EAAA7nB,KAAb,CACL,MAAO2oB,EAAA,CAAcQ,CAAd,CAET,MAAM3B,GAAA,CAAW,QAAX,CAAN,CAtBsC,CAyBjC,CAEE1mD,QAvDTA,QAAgB,CAACqoD,CAAD,CAAe,CAC7B,MAAIA,EAAJ,WAA4BP,EAA5B,CACSO,CAAAZ,qBAAA,EADT,CAGSY,CAJoB,CAqDxB,CAjLqC,CAAlC,CAxEkB,CAyhBhC5uC,QAASA,GAAY,EAAG,CACtB,IAAI+W,EAAU,CAAA,CAad,KAAAA,QAAA,CAAe+3B,QAAQ,CAACvpD,CAAD,CAAQ,CACzByB,SAAA7C,OAAJ,GACE4yB,CADF,CACY,CAAExxB,CAAAA,CADd,CAGA,OAAOwxB,EAJsB,CAsD/B,KAAApO,KAAA,CAAY,CAAC,QAAD,CAAW,cAAX,CAA2B,QAAQ,CACjCpJ,CADiC,CACvBU,CADuB,CACT,CAGpC,GAAI8W,CAAJ,EAAsB,CAAtB,CAAe7K,EAAf,CACE,KAAM+gC,GAAA,CAAW,UAAX,CAAN,CAMF,IAAI8B,EAAMv4C,EAAA,CAAY82C,EAAZ,CAaVyB,EAAAC,UAAA,CAAgBC,QAAQ,EAAG,CACzB,MAAOl4B,EADkB,CAG3Bg4B;CAAAL,QAAA,CAAczuC,CAAAyuC,QACdK,EAAAja,WAAA,CAAiB70B,CAAA60B,WACjBia,EAAAxoD,QAAA,CAAc0Z,CAAA1Z,QAETwwB,EAAL,GACEg4B,CAAAL,QACA,CADcK,CAAAja,WACd,CAD+Boa,QAAQ,CAACnkD,CAAD,CAAOxF,CAAP,CAAc,CAAE,MAAOA,EAAT,CACrD,CAAAwpD,CAAAxoD,QAAA,CAAcmB,EAFhB,CAwBAqnD,EAAAI,QAAA,CAAcC,QAAmB,CAACrkD,CAAD,CAAOuzC,CAAP,CAAa,CAC5C,IAAI56B,EAASnE,CAAA,CAAO++B,CAAP,CACb,OAAI56B,EAAAgkB,QAAJ,EAAsBhkB,CAAA1N,SAAtB,CACS0N,CADT,CAGSnE,CAAA,CAAO++B,CAAP,CAAa,QAAQ,CAAC/4C,CAAD,CAAQ,CAClC,MAAOwpD,EAAAja,WAAA,CAAe/pC,CAAf,CAAqBxF,CAArB,CAD2B,CAA7B,CALmC,CAtDV,KAoThCoH,EAAQoiD,CAAAI,QApTwB,CAqThCra,EAAaia,CAAAja,WArTmB,CAsThC4Z,EAAUK,CAAAL,QAEdlqD,EAAA,CAAQ8oD,EAAR,CAAsB,QAAQ,CAAC+B,CAAD,CAAYz/C,CAAZ,CAAkB,CAC9C,IAAI0/C,EAAQnmD,CAAA,CAAUyG,CAAV,CACZm/C,EAAA,CAAIxtC,EAAA,CAAU,WAAV,CAAwB+tC,CAAxB,CAAJ,CAAA,CAAsC,QAAQ,CAAChR,CAAD,CAAO,CACnD,MAAO3xC,EAAA,CAAM0iD,CAAN,CAAiB/Q,CAAjB,CAD4C,CAGrDyQ,EAAA,CAAIxtC,EAAA,CAAU,cAAV,CAA2B+tC,CAA3B,CAAJ,CAAA,CAAyC,QAAQ,CAAC/pD,CAAD,CAAQ,CACvD,MAAOuvC,EAAA,CAAWua,CAAX,CAAsB9pD,CAAtB,CADgD,CAGzDwpD,EAAA,CAAIxtC,EAAA,CAAU,WAAV,CAAwB+tC,CAAxB,CAAJ,CAAA,CAAsC,QAAQ,CAAC/pD,CAAD,CAAQ,CACpD,MAAOmpD,EAAA,CAAQW,CAAR,CAAmB9pD,CAAnB,CAD6C,CARR,CAAhD,CAaA,OAAOwpD,EArU6B,CAD1B,CApEU,CA4ZxB3uC,QAASA,GAAgB,EAAG,CAC1B,IAAAuI,KAAA,CAAY,CAAC,SAAD;AAAY,WAAZ,CAAyB,QAAQ,CAAC9H,CAAD,CAAUhD,CAAV,CAAqB,CAAA,IAC5D0xC,EAAe,EAD6C,CAK5DC,EAAsB,EADA3uC,CAAA4uC,OACA,EADkB5uC,CAAA4uC,OAAAC,IAClB,EADwC7uC,CAAA4uC,OAAAC,IAAAC,QACxC,CAAtBH,EAA8C3uC,CAAAoP,QAA9Cu/B,EAAiE3uC,CAAAoP,QAAA2/B,UALL,CAM5DC,EACE3oD,EAAA,CAAM,CAAC,eAAAsb,KAAA,CAAqBrZ,CAAA,CAAU2mD,CAACjvC,CAAAkvC,UAADD,EAAsB,EAAtBA,WAAV,CAArB,CAAD,EAAyE,EAAzE,EAA6E,CAA7E,CAAN,CAP0D,CAQ5DE,EAAQ,QAAAvnD,KAAA,CAAcqnD,CAACjvC,CAAAkvC,UAADD,EAAsB,EAAtBA,WAAd,CARoD,CAS5D1jD,EAAWyR,CAAA,CAAU,CAAV,CAAXzR,EAA2B,EATiC,CAU5D6jD,CAV4D,CAW5DC,EAAc,2BAX8C,CAY5DC,EAAY/jD,CAAAwmC,KAAZud,EAA6B/jD,CAAAwmC,KAAA96B,MAZ+B,CAa5Ds4C,EAAc,CAAA,CAb8C,CAc5DC,EAAa,CAAA,CAGjB,IAAIF,CAAJ,CAAe,CACb,IAASxnD,IAAAA,CAAT,GAAiBwnD,EAAjB,CACE,GAAItlD,CAAJ,CAAYqlD,CAAA1tC,KAAA,CAAiB7Z,CAAjB,CAAZ,CAAoC,CAClCsnD,CAAA,CAAeplD,CAAA,CAAM,CAAN,CACfolD,EAAA,CAAeA,CAAA,CAAa,CAAb,CAAAtuC,YAAA,EAAf,CAA+CsuC,CAAA/+B,OAAA,CAAoB,CAApB,CAC/C,MAHkC,CAOjC++B,CAAL,GACEA,CADF,CACkB,eADlB,EACqCE,EADrC,EACmD,QADnD,CAIAC,EAAA,CAAc,CAAG,EAAC,YAAD,EAAiBD,EAAjB,EAAgCF,CAAhC,CAA+C,YAA/C,EAA+DE,EAA/D,CACjBE,EAAA,CAAc,CAAG,EAAC,WAAD,EAAgBF,EAAhB,EAA+BF,CAA/B,CAA8C,WAA9C;AAA6DE,CAA7D,CAEbN,EAAAA,CAAJ,EAAiBO,CAAjB,EAAkCC,CAAlC,GACED,CACA,CADcnsD,CAAA,CAASksD,CAAAG,iBAAT,CACd,CAAAD,CAAA,CAAapsD,CAAA,CAASksD,CAAAI,gBAAT,CAFf,CAhBa,CAuBf,MAAO,CAULtgC,QAAS,EAAGu/B,CAAAA,CAAH,EAAsC,CAAtC,CAA4BK,CAA5B,EAA6CG,CAA7C,CAVJ,CAYLQ,SAAUA,QAAQ,CAACnpC,CAAD,CAAQ,CAMxB,GAAc,OAAd,GAAIA,CAAJ,EAAiC,EAAjC,EAAyB6E,EAAzB,CAAqC,MAAO,CAAA,CAE5C,IAAIlkB,CAAA,CAAYunD,CAAA,CAAaloC,CAAb,CAAZ,CAAJ,CAAsC,CACpC,IAAIopC,EAASrkD,CAAAkW,cAAA,CAAuB,KAAvB,CACbitC,EAAA,CAAaloC,CAAb,CAAA,CAAsB,IAAtB,CAA6BA,CAA7B,GAAsCopC,EAFF,CAKtC,MAAOlB,EAAA,CAAaloC,CAAb,CAbiB,CAZrB,CA2BLxQ,IAAKA,EAAA,EA3BA,CA4BLo5C,aAAcA,CA5BT,CA6BLG,YAAaA,CA7BR,CA8BLC,WAAYA,CA9BP,CA+BLR,QAASA,CA/BJ,CAxCyD,CAAtD,CADc,CAwF5BrvC,QAASA,GAAwB,EAAG,CAElC,IAAIkwC,CAeJ,KAAAA,YAAA,CAAmBC,QAAQ,CAACxkD,CAAD,CAAM,CAC/B,MAAIA,EAAJ,EACEukD,CACO,CADOvkD,CACP,CAAA,IAFT,EAIOukD,CALwB,CA8BjC,KAAA/nC,KAAA,CAAY,CAAC,gBAAD,CAAmB,OAAnB,CAA4B,IAA5B,CAAkC,MAAlC,CAA0C,QAAQ,CAACtI,CAAD,CAAiB5B,CAAjB,CAAwBkB,CAAxB,CAA4BI,CAA5B,CAAkC,CAE9F6wC,QAASA,EAAe,CAACC,CAAD,CAAMC,CAAN,CAA0B,CAChDF,CAAAG,qBAAA,EAOA,IAAK,CAAA9sD,CAAA,CAAS4sD,CAAT,CAAL,EAAsB7oD,CAAA,CAAYqY,CAAAxO,IAAA,CAAmBg/C,CAAnB,CAAZ,CAAtB,CACEA,CAAA,CAAM9wC,CAAAixC,sBAAA,CAA2BH,CAA3B,CAGR;IAAIvjB,EAAoB7uB,CAAA4uB,SAApBC,EAAsC7uB,CAAA4uB,SAAAC,kBAEtCtpC,EAAA,CAAQspC,CAAR,CAAJ,CACEA,CADF,CACsBA,CAAAn3B,OAAA,CAAyB,QAAQ,CAAC86C,CAAD,CAAc,CACjE,MAAOA,EAAP,GAAuB7kB,EAD0C,CAA/C,CADtB,CAIWkB,CAJX,GAIiClB,EAJjC,GAKEkB,CALF,CAKsB,IALtB,CAQA,OAAO7uB,EAAA5M,IAAA,CAAUg/C,CAAV,CAAe/pD,CAAA,CAAO,CACzBykB,MAAOlL,CADkB,CAEzBitB,kBAAmBA,CAFM,CAAP,CAGjBojB,CAHiB,CAAf,CAAA,CAIJ,SAJI,CAAA,CAIO,QAAQ,EAAG,CACrBE,CAAAG,qBAAA,EADqB,CAJlB,CAAAjtB,KAAA,CAOC,QAAQ,CAACyK,CAAD,CAAW,CACvBluB,CAAAkJ,IAAA,CAAmBsnC,CAAnB,CAAwBtiB,CAAAv9B,KAAxB,CACA,OAAOu9B,EAAAv9B,KAFgB,CAPpB,CAYPkgD,QAAoB,CAAC1iB,CAAD,CAAO,CACzB,GAAKsiB,CAAAA,CAAL,CACE,KAAMK,GAAA,CAAuB,QAAvB,CACJN,CADI,CACCriB,CAAArB,OADD,CACcqB,CAAAuC,WADd,CAAN,CAGF,MAAOpxB,EAAA8uB,OAAA,CAAUD,CAAV,CALkB,CAZpB,CAtByC,CA2ClDoiB,CAAAG,qBAAA,CAAuC,CAEvC,OAAOH,EA/CuF,CAApF,CA/CsB,CAkGpClwC,QAASA,GAAqB,EAAG,CAC/B,IAAAiI,KAAA,CAAY,CAAC,YAAD,CAAe,UAAf,CAA2B,WAA3B,CACP,QAAQ,CAAClJ,CAAD,CAAelC,CAAf,CAA2B4B,CAA3B,CAAsC,CA6GjD,MApGkBiyC,CAcN,aAAeC,QAAQ,CAACnoD,CAAD,CAAUkiC,CAAV,CAAsBkmB,CAAtB,CAAsC,CACnEn9B,CAAAA,CAAWjrB,CAAAqoD,uBAAA,CAA+B,YAA/B,CACf;IAAIC,EAAU,EACdhtD,EAAA,CAAQ2vB,CAAR,CAAkB,QAAQ,CAACyV,CAAD,CAAU,CAClC,IAAI6nB,EAActgD,EAAAjI,QAAA,CAAgB0gC,CAAhB,CAAA54B,KAAA,CAA8B,UAA9B,CACdygD,EAAJ,EACEjtD,CAAA,CAAQitD,CAAR,CAAqB,QAAQ,CAACC,CAAD,CAAc,CACrCJ,CAAJ,CAEM7oD,CADUukD,IAAIvmD,MAAJumD,CAAW,SAAXA,CAAuBE,EAAA,CAAgB9hB,CAAhB,CAAvB4hB,CAAqD,aAArDA,CACVvkD,MAAA,CAAaipD,CAAb,CAFN,EAGIF,CAAA3nD,KAAA,CAAa+/B,CAAb,CAHJ,CAM0C,EAN1C,EAMM8nB,CAAAnoD,QAAA,CAAoB6hC,CAApB,CANN,EAOIomB,CAAA3nD,KAAA,CAAa+/B,CAAb,CARqC,CAA3C,CAHgC,CAApC,CAiBA,OAAO4nB,EApBgE,CAdvDJ,CAiDN,WAAaO,QAAQ,CAACzoD,CAAD,CAAUkiC,CAAV,CAAsBkmB,CAAtB,CAAsC,CAErE,IADA,IAAIM,EAAW,CAAC,KAAD,CAAQ,UAAR,CAAoB,OAApB,CAAf,CACSh/B,EAAI,CAAb,CAAgBA,CAAhB,CAAoBg/B,CAAAztD,OAApB,CAAqC,EAAEyuB,CAAvC,CAA0C,CAGxC,IAAI7M,EAAW7c,CAAA+a,iBAAA,CADA,GACA,CADM2tC,CAAA,CAASh/B,CAAT,CACN,CADoB,OACpB,EAFO0+B,CAAAO,CAAiB,GAAjBA,CAAuB,IAE9B,EADgD,GAChD,CADsDzmB,CACtD,CADmE,IACnE,CACf,IAAIrlB,CAAA5hB,OAAJ,CACE,MAAO4hB,EAL+B,CAF2B,CAjDrDqrC,CAoEN,YAAcU,QAAQ,EAAG,CACnC,MAAO3yC,EAAA0Q,IAAA,EAD4B,CApEnBuhC,CAiFN,YAAcW,QAAQ,CAACliC,CAAD,CAAM,CAClCA,CAAJ,GAAY1Q,CAAA0Q,IAAA,EAAZ,GACE1Q,CAAA0Q,IAAA,CAAcA,CAAd,CACA,CAAApQ,CAAAq8B,QAAA,EAFF,CADsC,CAjFtBsV,CAgGN,WAAaY,QAAQ,CAACthC,CAAD,CAAW,CAC1CnT,CAAAiT,gCAAA,CAAyCE,CAAzC,CAD0C,CAhG1B0gC,CAT+B,CADvC,CADmB,CAlwlBf;AAq3lBlBxwC,QAASA,GAAgB,EAAG,CAC1B,IAAA+H,KAAA,CAAY,CAAC,YAAD,CAAe,UAAf,CAA2B,IAA3B,CAAiC,KAAjC,CAAwC,mBAAxC,CACP,QAAQ,CAAClJ,CAAD,CAAelC,CAAf,CAA2BoC,CAA3B,CAAiCE,CAAjC,CAAwC9B,CAAxC,CAA2D,CAkCtE6zB,QAASA,EAAO,CAAC9lC,CAAD,CAAKimB,CAAL,CAAYskB,CAAZ,CAAyB,CAClCzxC,CAAA,CAAWkH,CAAX,CAAL,GACEuqC,CAEA,CAFctkB,CAEd,CADAA,CACA,CADQjmB,CACR,CAAAA,CAAA,CAAKrE,CAHP,CADuC,KAOnCuiB,EAhvjBDjjB,EAAAjC,KAAA,CAgvjBkBkC,SAhvjBlB,CAgvjB6BgF,CAhvjB7B,CAyujBoC,CAQnC0qC,EAAazuC,CAAA,CAAUouC,CAAV,CAAbK,EAAuC,CAACL,CARL,CASnCnF,EAAWrf,CAAC6kB,CAAA,CAAY72B,CAAZ,CAAkBF,CAAnBkS,OAAA,EATwB,CAUnC6d,EAAUwB,CAAAxB,QAVyB,CAWnC1d,CAEJA,EAAA,CAAYzU,CAAAsU,MAAA,CAAe,QAAQ,EAAG,CACpC,GAAI,CACFqf,CAAAC,QAAA,CAAiBrlC,CAAAG,MAAA,CAAS,IAAT,CAAe+d,CAAf,CAAjB,CADE,CAEF,MAAOlc,CAAP,CAAU,CACVojC,CAAAzC,OAAA,CAAgB3gC,CAAhB,CACA,CAAAiQ,CAAA,CAAkBjQ,CAAlB,CAFU,CAFZ,OAMQ,CACN,OAAOmkD,CAAA,CAAUviB,CAAAwiB,YAAV,CADD,CAIHxb,CAAL,EAAgBj3B,CAAA1O,OAAA,EAXoB,CAA1B,CAYTghB,CAZS,CAcZ2d,EAAAwiB,YAAA,CAAsBlgC,CACtBigC,EAAA,CAAUjgC,CAAV,CAAA,CAAuBkf,CAEvB,OAAOxB,EA9BgC,CAhCzC,IAAIuiB,EAAY,EA8EhBrgB,EAAA3f,OAAA,CAAiBkgC,QAAQ,CAACziB,CAAD,CAAU,CACjC,MAAIA,EAAJ,EAAeA,CAAAwiB,YAAf,GAAsCD,EAAtC,EACEA,CAAA,CAAUviB,CAAAwiB,YAAV,CAAAzjB,OAAA,CAAsC,UAAtC,CAEO,CADP,OAAOwjB,CAAA,CAAUviB,CAAAwiB,YAAV,CACA,CAAA30C,CAAAsU,MAAAI,OAAA,CAAsByd,CAAAwiB,YAAtB,CAHT;AAKO,CAAA,CAN0B,CASnC,OAAOtgB,EAzF+D,CAD5D,CADc,CAuJ5B6B,QAASA,GAAU,CAAC5jB,CAAD,CAAM,CAGnB3D,EAAJ,GAGEkmC,CAAA1sC,aAAA,CAA4B,MAA5B,CAAoCiL,CAApC,CACA,CAAAA,CAAA,CAAOyhC,CAAAzhC,KAJT,CAOAyhC,EAAA1sC,aAAA,CAA4B,MAA5B,CAAoCiL,CAApC,CAGA,OAAO,CACLA,KAAMyhC,CAAAzhC,KADD,CAEL+iB,SAAU0e,CAAA1e,SAAA,CAA0B0e,CAAA1e,SAAA3mC,QAAA,CAAgC,IAAhC,CAAsC,EAAtC,CAA1B,CAAsE,EAF3E,CAGLsZ,KAAM+rC,CAAA/rC,KAHD,CAIL6xB,OAAQka,CAAAla,OAAA,CAAwBka,CAAAla,OAAAnrC,QAAA,CAA8B,KAA9B,CAAqC,EAArC,CAAxB,CAAmE,EAJtE,CAKLkhB,KAAMmkC,CAAAnkC,KAAA,CAAsBmkC,CAAAnkC,KAAAlhB,QAAA,CAA4B,IAA5B,CAAkC,EAAlC,CAAtB,CAA8D,EAL/D,CAMLyqC,SAAU4a,CAAA5a,SANL,CAOLE,KAAM0a,CAAA1a,KAPD,CAQLM,SAAiD,GAAvC,GAACoa,CAAApa,SAAAxsC,OAAA,CAA+B,CAA/B,CAAD,CACN4mD,CAAApa,SADM,CAEN,GAFM,CAEAoa,CAAApa,SAVL,CAbgB,CAkCzBrG,QAASA,GAAe,CAAC0gB,CAAD,CAAa,CAC/B3uC,CAAAA,CAAUzf,CAAA,CAASouD,CAAT,CAAD,CAAyB5e,EAAA,CAAW4e,CAAX,CAAzB,CAAkDA,CAC/D,OAAQ3uC,EAAAgwB,SAAR,GAA4B4e,EAAA5e,SAA5B,EACQhwB,CAAA2C,KADR,GACwBisC,EAAAjsC,KAHW,CA+CrCvF,QAASA,GAAe,EAAG,CACzB,IAAA6H,KAAA,CAAY/gB,EAAA,CAAQjE,CAAR,CADa,CAa3B4uD,QAASA,GAAc,CAAC10C,CAAD,CAAY,CAKjC20C,QAASA,EAAsB,CAACrrD,CAAD,CAAM,CACnC,GAAI,CACF,MAAOkH,mBAAA,CAAmBlH,CAAnB,CADL,CAEF,MAAO2G,CAAP,CAAU,CACV,MAAO3G,EADG,CAHuB,CALJ;AACjC,IAAIqrC,EAAc30B,CAAA,CAAU,CAAV,CAAd20B,EAA8B,EAAlC,CACIigB,EAAc,EADlB,CAEIC,EAAmB,EAUvB,OAAO,SAAQ,EAAG,CAAA,IACZC,CADY,CACCC,CADD,CACSxtD,CADT,CACYkE,CADZ,CACmBsG,CAC/BijD,EAAAA,CAAsBrgB,CAAAogB,OAAtBC,EAA4C,EAEhD,IAAIA,CAAJ,GAA4BH,CAA5B,CAKE,IAJAA,CAIK,CAJcG,CAId,CAHLF,CAGK,CAHSD,CAAA1pD,MAAA,CAAuB,IAAvB,CAGT,CAFLypD,CAEK,CAFS,EAET,CAAArtD,CAAA,CAAI,CAAT,CAAYA,CAAZ,CAAgButD,CAAAxuD,OAAhB,CAAoCiB,CAAA,EAApC,CACEwtD,CAEA,CAFSD,CAAA,CAAYvtD,CAAZ,CAET,CADAkE,CACA,CADQspD,CAAArpD,QAAA,CAAe,GAAf,CACR,CAAY,CAAZ,CAAID,CAAJ,GACEsG,CAIA,CAJO4iD,CAAA,CAAuBI,CAAAnkD,UAAA,CAAiB,CAAjB,CAAoBnF,CAApB,CAAvB,CAIP,CAAItB,CAAA,CAAYyqD,CAAA,CAAY7iD,CAAZ,CAAZ,CAAJ,GACE6iD,CAAA,CAAY7iD,CAAZ,CADF,CACsB4iD,CAAA,CAAuBI,CAAAnkD,UAAA,CAAiBnF,CAAjB,CAAyB,CAAzB,CAAvB,CADtB,CALF,CAWJ,OAAOmpD,EAvBS,CAbe,CA0CnCnxC,QAASA,GAAsB,EAAG,CAChC,IAAAqH,KAAA,CAAY4pC,EADoB,CAwGlCr0C,QAASA,GAAe,CAAC3N,CAAD,CAAW,CAmBjCw6B,QAASA,EAAQ,CAACn7B,CAAD,CAAO8E,CAAP,CAAgB,CAC/B,GAAIzO,CAAA,CAAS2J,CAAT,CAAJ,CAAoB,CAClB,IAAIkjD,EAAU,EACdtuD,EAAA,CAAQoL,CAAR,CAAc,QAAQ,CAACuG,CAAD,CAASxR,CAAT,CAAc,CAClCmuD,CAAA,CAAQnuD,CAAR,CAAA,CAAeomC,CAAA,CAASpmC,CAAT,CAAcwR,CAAd,CADmB,CAApC,CAGA,OAAO28C,EALW,CAOlB,MAAOviD,EAAAmE,QAAA,CAAiB9E,CAAjB,CA1BEmjD,QA0BF,CAAgCr+C,CAAhC,CARsB,CAWjC,IAAAq2B,SAAA,CAAgBA,CAEhB,KAAApiB,KAAA,CAAY,CAAC,WAAD,CAAc,QAAQ,CAAC4D,CAAD,CAAY,CAC5C,MAAO,SAAQ,CAAC3c,CAAD,CAAO,CACpB,MAAO2c,EAAA1a,IAAA,CAAcjC,CAAd,CAjCEmjD,QAiCF,CADa,CADsB,CAAlC,CAoBZhoB,EAAA,CAAS,UAAT,CAAqBioB,EAArB,CACAjoB,EAAA,CAAS,MAAT,CAAiBkoB,EAAjB,CACAloB;CAAA,CAAS,QAAT,CAAmBmoB,EAAnB,CACAnoB,EAAA,CAAS,MAAT,CAAiBooB,EAAjB,CACApoB,EAAA,CAAS,SAAT,CAAoBqoB,EAApB,CACAroB,EAAA,CAAS,WAAT,CAAsBsoB,EAAtB,CACAtoB,EAAA,CAAS,QAAT,CAAmBuoB,EAAnB,CACAvoB,EAAA,CAAS,SAAT,CAAoBwoB,EAApB,CACAxoB,EAAA,CAAS,WAAT,CAAsByoB,EAAtB,CA5DiC,CA8LnCN,QAASA,GAAY,EAAG,CACtB,MAAO,SAAQ,CAAC7pD,CAAD,CAAQ+hC,CAAR,CAAoBqoB,CAApB,CAAgC,CAC7C,GAAK,CAAA5vD,EAAA,CAAYwF,CAAZ,CAAL,CAAyB,CACvB,GAAa,IAAb,EAAIA,CAAJ,CACE,MAAOA,EAEP,MAAMzF,EAAA,CAAO,QAAP,CAAA,CAAiB,UAAjB,CAAiEyF,CAAjE,CAAN,CAJqB,CAUzB,IAAIqqD,CAEJ,QAJqBC,EAAAC,CAAiBxoB,CAAjBwoB,CAIrB,EACE,KAAK,UAAL,CAEE,KACF,MAAK,SAAL,CACA,KAAK,MAAL,CACA,KAAK,QAAL,CACA,KAAK,QAAL,CACEF,CAAA,CAAsB,CAAA,CAExB,MAAK,QAAL,CAEEG,CAAA,CAAcC,EAAA,CAAkB1oB,CAAlB,CAA8BqoB,CAA9B,CAA0CC,CAA1C,CACd,MACF,SACE,MAAOrqD,EAfX,CAkBA,MAAO/E,MAAAqlB,UAAAxT,OAAArR,KAAA,CAA4BuE,CAA5B,CAAmCwqD,CAAnC,CA/BsC,CADzB,CAqCxBC,QAASA,GAAiB,CAAC1oB,CAAD,CAAaqoB,CAAb,CAAyBC,CAAzB,CAA8C,CACtE,IAAIK,EAAwB9tD,CAAA,CAASmlC,CAAT,CAAxB2oB,EAAiD,GAAjDA,EAAwD3oB,EAGzC,EAAA,CAAnB,GAAIqoB,CAAJ,CACEA,CADF,CACezoD,EADf,CAEYpG,CAAA,CAAW6uD,CAAX,CAFZ,GAGEA,CAHF,CAGeA,QAAQ,CAACO,CAAD,CAASC,CAAT,CAAmB,CACtC,GAAIjsD,CAAA,CAAYgsD,CAAZ,CAAJ,CAEE,MAAO,CAAA,CAET,IAAgB,IAAhB;AAAKA,CAAL,EAAuC,IAAvC,GAA0BC,CAA1B,CAEE,MAAOD,EAAP,GAAkBC,CAEpB,IAAIhuD,CAAA,CAASguD,CAAT,CAAJ,EAA2BhuD,CAAA,CAAS+tD,CAAT,CAA3B,EAAgD,CAAAlsD,EAAA,CAAkBksD,CAAlB,CAAhD,CAEE,MAAO,CAAA,CAGTA,EAAA,CAAS7qD,CAAA,CAAU,EAAV,CAAe6qD,CAAf,CACTC,EAAA,CAAW9qD,CAAA,CAAU,EAAV,CAAe8qD,CAAf,CACX,OAAqC,EAArC,GAAOD,CAAAzqD,QAAA,CAAe0qD,CAAf,CAhB+B,CAH1C,CA8BA,OAPcJ,SAAQ,CAACtvD,CAAD,CAAO,CAC3B,MAAIwvD,EAAJ,EAA8B,CAAA9tD,CAAA,CAAS1B,CAAT,CAA9B,CACS2vD,EAAA,CAAY3vD,CAAZ,CAAkB6mC,CAAAzjC,EAAlB,CAAgC8rD,CAAhC,CAA4C,CAAA,CAA5C,CADT,CAGOS,EAAA,CAAY3vD,CAAZ,CAAkB6mC,CAAlB,CAA8BqoB,CAA9B,CAA0CC,CAA1C,CAJoB,CA3ByC,CAqCxEQ,QAASA,GAAW,CAACF,CAAD,CAASC,CAAT,CAAmBR,CAAnB,CAA+BC,CAA/B,CAAoDS,CAApD,CAA0E,CAC5F,IAAIC,EAAaT,EAAA,CAAiBK,CAAjB,CAAjB,CACIK,EAAeV,EAAA,CAAiBM,CAAjB,CAEnB,IAAsB,QAAtB,GAAKI,CAAL,EAA2D,GAA3D,GAAoCJ,CAAAzoD,OAAA,CAAgB,CAAhB,CAApC,CACE,MAAO,CAAC0oD,EAAA,CAAYF,CAAZ,CAAoBC,CAAAxlD,UAAA,CAAmB,CAAnB,CAApB,CAA2CglD,CAA3C,CAAuDC,CAAvD,CACH,IAAI1vD,CAAA,CAAQgwD,CAAR,CAAJ,CAGL,MAAOA,EAAA3mC,KAAA,CAAY,QAAQ,CAAC9oB,CAAD,CAAO,CAChC,MAAO2vD,GAAA,CAAY3vD,CAAZ,CAAkB0vD,CAAlB,CAA4BR,CAA5B,CAAwCC,CAAxC,CADyB,CAA3B,CAKT,QAAQU,CAAR,EACE,KAAK,QAAL,CACE,IAAIzvD,CACJ,IAAI+uD,CAAJ,CAAyB,CACvB,IAAK/uD,CAAL,GAAYqvD,EAAZ,CACE,GAAuB,GAAvB,GAAKrvD,CAAA6G,OAAA,CAAW,CAAX,CAAL,EAA+B0oD,EAAA,CAAYF,CAAA,CAAOrvD,CAAP,CAAZ,CAAyBsvD,CAAzB,CAAmCR,CAAnC,CAA+C,CAAA,CAA/C,CAA/B,CACE,MAAO,CAAA,CAGX,OAAOU,EAAA,CAAuB,CAAA,CAAvB,CAA+BD,EAAA,CAAYF,CAAZ,CAAoBC,CAApB,CAA8BR,CAA9B,CAA0C,CAAA,CAA1C,CANf,CAOlB,GAAqB,QAArB,GAAIY,CAAJ,CAA+B,CACpC,IAAK1vD,CAAL,GAAYsvD,EAAZ,CAEE,GADIK,CACA,CADcL,CAAA,CAAStvD,CAAT,CACd,CAAA,CAAAC,CAAA,CAAW0vD,CAAX,CAAA,EAA2B,CAAAtsD,CAAA,CAAYssD,CAAZ,CAA3B;CAIAC,CAEC,CAF0B,GAE1B,GAFkB5vD,CAElB,CAAA,CAAAuvD,EAAA,CADWK,CAAAC,CAAmBR,CAAnBQ,CAA4BR,CAAA,CAAOrvD,CAAP,CACvC,CAAuB2vD,CAAvB,CAAoCb,CAApC,CAAgDc,CAAhD,CAAkEA,CAAlE,CAND,CAAJ,CAOE,MAAO,CAAA,CAGX,OAAO,CAAA,CAb6B,CAepC,MAAOd,EAAA,CAAWO,CAAX,CAAmBC,CAAnB,CAGX,MAAK,UAAL,CACE,MAAO,CAAA,CACT,SACE,MAAOR,EAAA,CAAWO,CAAX,CAAmBC,CAAnB,CA/BX,CAd4F,CAkD9FN,QAASA,GAAgB,CAACxnD,CAAD,CAAM,CAC7B,MAAgB,KAAT,GAACA,CAAD,CAAiB,MAAjB,CAA0B,MAAOA,EADX,CA6D/B6mD,QAASA,GAAc,CAACyB,CAAD,CAAU,CAC/B,IAAIC,EAAUD,CAAAE,eACd,OAAO,SAAQ,CAACC,CAAD,CAASC,CAAT,CAAyBC,CAAzB,CAAuC,CAChD9sD,CAAA,CAAY6sD,CAAZ,CAAJ,GACEA,CADF,CACmBH,CAAAK,aADnB,CAII/sD,EAAA,CAAY8sD,CAAZ,CAAJ,GACEA,CADF,CACiBJ,CAAAM,SAAA,CAAiB,CAAjB,CAAAC,QADjB,CAKA,OAAkB,KAAX,EAACL,CAAD,CACDA,CADC,CAEDM,EAAA,CAAaN,CAAb,CAAqBF,CAAAM,SAAA,CAAiB,CAAjB,CAArB,CAA0CN,CAAAS,UAA1C,CAA6DT,CAAAU,YAA7D,CAAkFN,CAAlF,CAAA/nD,QAAA,CACU,SADV,CACqB8nD,CADrB,CAZ8C,CAFvB,CA0EjCvB,QAASA,GAAY,CAACmB,CAAD,CAAU,CAC7B,IAAIC,EAAUD,CAAAE,eACd,OAAO,SAAQ,CAACU,CAAD,CAASP,CAAT,CAAuB,CAGpC,MAAkB,KAAX,EAACO,CAAD,CACDA,CADC,CAEDH,EAAA,CAAaG,CAAb,CAAqBX,CAAAM,SAAA,CAAiB,CAAjB,CAArB,CAA0CN,CAAAS,UAA1C,CAA6DT,CAAAU,YAA7D,CACaN,CADb,CAL8B,CAFT,CAyB/BnoD,QAASA,GAAK,CAAC2oD,CAAD,CAAS,CAAA,IACjBC;AAAW,CADM,CACHC,CADG,CACKC,CADL,CAEjBrwD,CAFiB,CAEdc,CAFc,CAEXwvD,CAGmD,GAA7D,EAAKD,CAAL,CAA6BH,CAAA/rD,QAAA,CAAe6rD,EAAf,CAA7B,IACEE,CADF,CACWA,CAAAvoD,QAAA,CAAeqoD,EAAf,CAA4B,EAA5B,CADX,CAKgC,EAAhC,EAAKhwD,CAAL,CAASkwD,CAAApd,OAAA,CAAc,IAAd,CAAT,GAE8B,CAE5B,CAFIud,CAEJ,GAF+BA,CAE/B,CAFuDrwD,CAEvD,EADAqwD,CACA,EADyB,CAACH,CAAAvuD,MAAA,CAAa3B,CAAb,CAAiB,CAAjB,CAC1B,CAAAkwD,CAAA,CAASA,CAAA7mD,UAAA,CAAiB,CAAjB,CAAoBrJ,CAApB,CAJX,EAKmC,CALnC,CAKWqwD,CALX,GAOEA,CAPF,CAO0BH,CAAAnxD,OAP1B,CAWA,KAAKiB,CAAL,CAAS,CAAT,CAAYkwD,CAAA9pD,OAAA,CAAcpG,CAAd,CAAZ,EAAgCuwD,EAAhC,CAA2CvwD,CAAA,EAA3C,EAEA,GAAIA,CAAJ,GAAUswD,CAAV,CAAkBJ,CAAAnxD,OAAlB,EAEEqxD,CACA,CADS,CAAC,CAAD,CACT,CAAAC,CAAA,CAAwB,CAH1B,KAIO,CAGL,IADAC,CAAA,EACA,CAAOJ,CAAA9pD,OAAA,CAAckqD,CAAd,CAAP,EAA+BC,EAA/B,CAAA,CAA0CD,CAAA,EAG1CD,EAAA,EAAyBrwD,CACzBowD,EAAA,CAAS,EAET,KAAKtvD,CAAL,CAAS,CAAT,CAAYd,CAAZ,EAAiBswD,CAAjB,CAAwBtwD,CAAA,EAAA,CAAKc,CAAA,EAA7B,CACEsvD,CAAA,CAAOtvD,CAAP,CAAA,CAAY,CAACovD,CAAA9pD,OAAA,CAAcpG,CAAd,CAVV,CAeHqwD,CAAJ,CAA4BG,EAA5B,GACEJ,CAEA,CAFSA,CAAAhsD,OAAA,CAAc,CAAd,CAAiBosD,EAAjB,CAA8B,CAA9B,CAET,CADAL,CACA,CADWE,CACX,CADmC,CACnC,CAAAA,CAAA,CAAwB,CAH1B,CAMA,OAAO,CAAEjoB,EAAGgoB,CAAL,CAAa1nD,EAAGynD,CAAhB,CAA0BnwD,EAAGqwD,CAA7B,CAhDc,CAuDvBI,QAASA,GAAW,CAACC,CAAD,CAAehB,CAAf,CAA6BiB,CAA7B,CAAsCd,CAAtC,CAA+C,CAC/D,IAAIO,EAASM,CAAAtoB,EAAb,CACIwoB,EAAcR,CAAArxD,OAAd6xD,CAA8BF,CAAA1wD,EAGlC0vD,EAAA,CAAgB9sD,CAAA,CAAY8sD,CAAZ,CAAD,CAA8BtyB,IAAAyzB,IAAA,CAASzzB,IAAAC,IAAA,CAASszB,CAAT,CAAkBC,CAAlB,CAAT,CAAyCf,CAAzC,CAA9B,CAAkF,CAACH,CAG9FoB,EAAAA,CAAUpB,CAAVoB,CAAyBJ,CAAA1wD,EACzB+wD,EAAAA,CAAQX,CAAA,CAAOU,CAAP,CAEZ,IAAc,CAAd,CAAIA,CAAJ,CAAiB,CAEfV,CAAAhsD,OAAA,CAAcg5B,IAAAC,IAAA,CAASqzB,CAAA1wD,EAAT,CAAyB8wD,CAAzB,CAAd,CAGA,KAAS,IAAAhwD,EAAIgwD,CAAb,CAAsBhwD,CAAtB,CAA0BsvD,CAAArxD,OAA1B,CAAyC+B,CAAA,EAAzC,CACEsvD,CAAA,CAAOtvD,CAAP,CAAA;AAAY,CANC,CAAjB,IAcE,KAJA8vD,CAIS5wD,CAJKo9B,IAAAC,IAAA,CAAS,CAAT,CAAYuzB,CAAZ,CAIL5wD,CAHT0wD,CAAA1wD,EAGSA,CAHQ,CAGRA,CAFTowD,CAAArxD,OAESiB,CAFOo9B,IAAAC,IAAA,CAAS,CAAT,CAAYyzB,CAAZ,CAAsBpB,CAAtB,CAAqC,CAArC,CAEP1vD,CADTowD,CAAA,CAAO,CAAP,CACSpwD,CADG,CACHA,CAAAA,CAAAA,CAAI,CAAb,CAAgBA,CAAhB,CAAoB8wD,CAApB,CAA6B9wD,CAAA,EAA7B,CAAkCowD,CAAA,CAAOpwD,CAAP,CAAA,CAAY,CAGhD,IAAa,CAAb,EAAI+wD,CAAJ,CACE,GAAkB,CAAlB,CAAID,CAAJ,CAAc,CAAd,CAAqB,CACnB,IAASE,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBF,CAApB,CAA6BE,CAAA,EAA7B,CACEZ,CAAAllD,QAAA,CAAe,CAAf,CACA,CAAAwlD,CAAA1wD,EAAA,EAEFowD,EAAAllD,QAAA,CAAe,CAAf,CACAwlD,EAAA1wD,EAAA,EANmB,CAArB,IAQEowD,EAAA,CAAOU,CAAP,CAAiB,CAAjB,CAAA,EAKJ,KAAA,CAAOF,CAAP,CAAqBxzB,IAAAC,IAAA,CAAS,CAAT,CAAYqyB,CAAZ,CAArB,CAAgDkB,CAAA,EAAhD,CAA+DR,CAAA3rD,KAAA,CAAY,CAAZ,CAS/D,IALIwsD,CAKJ,CALYb,CAAAc,YAAA,CAAmB,QAAQ,CAACD,CAAD,CAAQ7oB,CAAR,CAAWpoC,CAAX,CAAcowD,CAAd,CAAsB,CAC3DhoB,CAAA,EAAQ6oB,CACRb,EAAA,CAAOpwD,CAAP,CAAA,CAAYooC,CAAZ,CAAgB,EAChB,OAAOhL,KAAA6G,MAAA,CAAWmE,CAAX,CAAe,EAAf,CAHoD,CAAjD,CAIT,CAJS,CAKZ,CACEgoB,CAAAllD,QAAA,CAAe+lD,CAAf,CACA,CAAAP,CAAA1wD,EAAA,EArD6D,CA2EnE8vD,QAASA,GAAY,CAACG,CAAD,CAAS/5C,CAAT,CAAkBi7C,CAAlB,CAA4BC,CAA5B,CAAwC1B,CAAxC,CAAsD,CAEzE,GAAM,CAAA7wD,CAAA,CAASoxD,CAAT,CAAN,EAA0B,CAAAhxD,CAAA,CAASgxD,CAAT,CAA1B,EAA+CnoD,KAAA,CAAMmoD,CAAN,CAA/C,CAA8D,MAAO,EAErE,KAAIoB,EAAa,CAACC,QAAA,CAASrB,CAAT,CAAlB,CACIsB,EAAS,CAAA,CADb,CAEIrB,EAAS9yB,IAAAo0B,IAAA,CAASvB,CAAT,CAATC,CAA4B,EAFhC,CAGIuB,EAAgB,EAGpB,IAAIJ,CAAJ,CACEI,CAAA,CAAgB,QADlB,KAEO,CACLf,CAAA,CAAenpD,EAAA,CAAM2oD,CAAN,CAEfO,GAAA,CAAYC,CAAZ,CAA0BhB,CAA1B,CAAwCx5C,CAAAy6C,QAAxC,CAAyDz6C,CAAA25C,QAAzD,CAEIO,EAAAA,CAASM,CAAAtoB,EACTspB,EAAAA,CAAahB,CAAA1wD,EACbmwD,EAAAA,CAAWO,CAAAhoD,EACXipD,EAAAA,CAAW,EAIf,KAHAJ,CAGA,CAHSnB,CAAAwB,OAAA,CAAc,QAAQ,CAACL,CAAD;AAASnpB,CAAT,CAAY,CAAE,MAAOmpB,EAAP,EAAiB,CAACnpB,CAApB,CAAlC,CAA4D,CAAA,CAA5D,CAGT,CAAoB,CAApB,CAAOspB,CAAP,CAAA,CACEtB,CAAAllD,QAAA,CAAe,CAAf,CACA,CAAAwmD,CAAA,EAIe,EAAjB,CAAIA,CAAJ,CACEC,CADF,CACavB,CAAAhsD,OAAA,CAAcstD,CAAd,CAA0BtB,CAAArxD,OAA1B,CADb,EAGE4yD,CACA,CADWvB,CACX,CAAAA,CAAA,CAAS,CAAC,CAAD,CAJX,CAQIyB,EAAAA,CAAS,EAIb,KAHIzB,CAAArxD,OAGJ,EAHqBmX,CAAA47C,OAGrB,EAFED,CAAA3mD,QAAA,CAAeklD,CAAAhsD,OAAA,CAAc,CAAC8R,CAAA47C,OAAf,CAA+B1B,CAAArxD,OAA/B,CAAA2K,KAAA,CAAmD,EAAnD,CAAf,CAEF,CAAO0mD,CAAArxD,OAAP,CAAuBmX,CAAA67C,MAAvB,CAAA,CACEF,CAAA3mD,QAAA,CAAeklD,CAAAhsD,OAAA,CAAc,CAAC8R,CAAA67C,MAAf,CAA8B3B,CAAArxD,OAA9B,CAAA2K,KAAA,CAAkD,EAAlD,CAAf,CAEE0mD,EAAArxD,OAAJ,EACE8yD,CAAA3mD,QAAA,CAAeklD,CAAA1mD,KAAA,CAAY,EAAZ,CAAf,CAEF+nD,EAAA,CAAgBI,CAAAnoD,KAAA,CAAYynD,CAAZ,CAGZQ,EAAA5yD,OAAJ,GACE0yD,CADF,EACmBL,CADnB,CACgCO,CAAAjoD,KAAA,CAAc,EAAd,CADhC,CAIIymD,EAAJ,GACEsB,CADF,EACmB,IADnB,CAC0BtB,CAD1B,CA3CK,CA+CP,MAAa,EAAb,CAAIF,CAAJ,EAAmBsB,CAAAA,CAAnB,CACSr7C,CAAA87C,OADT,CAC0BP,CAD1B,CAC0Cv7C,CAAA+7C,OAD1C,CAGS/7C,CAAAg8C,OAHT,CAG0BT,CAH1B,CAG0Cv7C,CAAAi8C,OA9D+B,CAkE3EC,QAASA,GAAS,CAACC,CAAD,CAAMjC,CAAN,CAAchyC,CAAd,CAAoBk0C,CAApB,CAA6B,CAC7C,IAAIC,EAAM,EACV,IAAU,CAAV,CAAIF,CAAJ,EAAgBC,CAAhB,EAAkC,CAAlC,EAA2BD,CAA3B,CACMC,CAAJ,CACED,CADF,CACQ,CAACA,CADT,CACe,CADf,EAGEA,CACA,CADM,CAACA,CACP,CAAAE,CAAA,CAAM,GAJR,CAQF,KADAF,CACA,CADM,EACN,CADWA,CACX,CAAOA,CAAAtzD,OAAP,CAAoBqxD,CAApB,CAAA,CAA4BiC,CAAA,CAAM9B,EAAN,CAAkB8B,CAC1Cj0C,EAAJ,GACEi0C,CADF,CACQA,CAAAvmC,OAAA,CAAWumC,CAAAtzD,OAAX,CAAwBqxD,CAAxB,CADR,CAGA,OAAOmC,EAAP;AAAaF,CAfgC,CAmB/CG,QAASA,EAAU,CAAChoD,CAAD,CAAOojB,CAAP,CAAatR,CAAb,CAAqB8B,CAArB,CAA2Bk0C,CAA3B,CAAoC,CACrDh2C,CAAA,CAASA,CAAT,EAAmB,CACnB,OAAO,SAAQ,CAACtU,CAAD,CAAO,CAChB7H,CAAAA,CAAQ6H,CAAA,CAAK,KAAL,CAAawC,CAAb,CAAA,EACZ,IAAa,CAAb,CAAI8R,CAAJ,EAAkBnc,CAAlB,CAA0B,CAACmc,CAA3B,CACEnc,CAAA,EAASmc,CAEG,EAAd,GAAInc,CAAJ,EAA8B,GAA9B,EAAmBmc,CAAnB,GAAkCnc,CAAlC,CAA0C,EAA1C,CACA,OAAOiyD,GAAA,CAAUjyD,CAAV,CAAiBytB,CAAjB,CAAuBxP,CAAvB,CAA6Bk0C,CAA7B,CANa,CAF+B,CAYvDG,QAASA,GAAa,CAACjoD,CAAD,CAAOkoD,CAAP,CAAkBC,CAAlB,CAA8B,CAClD,MAAO,SAAQ,CAAC3qD,CAAD,CAAOsnD,CAAP,CAAgB,CAC7B,IAAInvD,EAAQ6H,CAAA,CAAK,KAAL,CAAawC,CAAb,CAAA,EAAZ,CAEIiC,EAAM8E,EAAA,EADQohD,CAAA,CAAa,YAAb,CAA4B,EACpC,GAD2CD,CAAA,CAAY,OAAZ,CAAsB,EACjE,EAAuBloD,CAAvB,CAEV,OAAO8kD,EAAA,CAAQ7iD,CAAR,CAAA,CAAatM,CAAb,CALsB,CADmB,CAoBpDyyD,QAASA,GAAsB,CAACC,CAAD,CAAO,CAElC,IAAIC,EAAmBC,CAAC,IAAI7xD,IAAJ,CAAS2xD,CAAT,CAAe,CAAf,CAAkB,CAAlB,CAADE,QAAA,EAGvB,OAAO,KAAI7xD,IAAJ,CAAS2xD,CAAT,CAAe,CAAf,EAAwC,CAArB,EAACC,CAAD,CAA0B,CAA1B,CAA8B,EAAjD,EAAuDA,CAAvD,CAL2B,CActCE,QAASA,GAAU,CAACplC,CAAD,CAAO,CACvB,MAAO,SAAQ,CAAC5lB,CAAD,CAAO,CAAA,IACfirD,EAAaL,EAAA,CAAuB5qD,CAAAkrD,YAAA,EAAvB,CAGb/zB,EAAAA,CAAO,CAVNg0B,IAAIjyD,IAAJiyD,CAQ8BnrD,CARrBkrD,YAAA,EAATC,CAQ8BnrD,CARGorD,SAAA,EAAjCD,CAQ8BnrD,CANnCqrD,QAAA,EAFKF,EAEiB,CAFjBA,CAQ8BnrD,CANT+qD,OAAA,EAFrBI,EAUDh0B,CAAoB,CAAC8zB,CACtB1tC,EAAAA,CAAS,CAATA,CAAa6X,IAAAk2B,MAAA,CAAWn0B,CAAX,CAAkB,MAAlB,CAEhB,OAAOizB,GAAA,CAAU7sC,CAAV,CAAkBqI,CAAlB,CAPY,CADC,CAgB1B2lC,QAASA,GAAS,CAACvrD,CAAD;AAAOsnD,CAAP,CAAgB,CAChC,MAA6B,EAAtB,EAAAtnD,CAAAkrD,YAAA,EAAA,CAA0B5D,CAAAkE,KAAA,CAAa,CAAb,CAA1B,CAA4ClE,CAAAkE,KAAA,CAAa,CAAb,CADnB,CA4IlC3F,QAASA,GAAU,CAACwB,CAAD,CAAU,CAK3BoE,QAASA,EAAgB,CAACC,CAAD,CAAS,CAChC,IAAIjuD,CACJ,IAAIA,CAAJ,CAAYiuD,CAAAjuD,MAAA,CAAakuD,CAAb,CAAZ,CAAyC,CACnC3rD,CAAAA,CAAO,IAAI9G,IAAJ,CAAS,CAAT,CAD4B,KAEnC0yD,EAAS,CAF0B,CAGnCC,EAAS,CAH0B,CAInCC,EAAaruD,CAAA,CAAM,CAAN,CAAA,CAAWuC,CAAA+rD,eAAX,CAAiC/rD,CAAAgsD,YAJX,CAKnCC,EAAaxuD,CAAA,CAAM,CAAN,CAAA,CAAWuC,CAAAksD,YAAX,CAA8BlsD,CAAAmsD,SAE3C1uD,EAAA,CAAM,CAAN,CAAJ,GACEmuD,CACA,CADS9xD,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,CAAiBA,CAAA,CAAM,EAAN,CAAjB,CACT,CAAAouD,CAAA,CAAQ/xD,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,CAAiBA,CAAA,CAAM,EAAN,CAAjB,CAFV,CAIAquD,EAAAp0D,KAAA,CAAgBsI,CAAhB,CAAsBlG,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,CAAtB,CAAuC3D,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,CAAvC,CAAyD,CAAzD,CAA4D3D,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,CAA5D,CACI/E,EAAAA,CAAIoB,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,EAAkB,CAAlB,CAAJ/E,CAA2BkzD,CAC3BQ,EAAAA,CAAItyD,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,EAAkB,CAAlB,CAAJ2uD,CAA2BP,CAC3BQ,EAAAA,CAAIvyD,EAAA,CAAM2D,CAAA,CAAM,CAAN,CAAN,EAAkB,CAAlB,CACJ6uD,EAAAA,CAAKl3B,IAAAk2B,MAAA,CAAgD,GAAhD,CAAWiB,UAAA,CAAW,IAAX,EAAmB9uD,CAAA,CAAM,CAAN,CAAnB,EAA+B,CAA/B,EAAX,CACTwuD,EAAAv0D,KAAA,CAAgBsI,CAAhB,CAAsBtH,CAAtB,CAAyB0zD,CAAzB,CAA4BC,CAA5B,CAA+BC,CAA/B,CAhBuC,CAmBzC,MAAOZ,EArByB,CAFlC,IAAIC,EAAgB,sGA2BpB;MAAO,SAAQ,CAAC3rD,CAAD,CAAOwsD,CAAP,CAAe/sD,CAAf,CAAyB,CAAA,IAClC+3B,EAAO,EAD2B,CAElCj2B,EAAQ,EAF0B,CAGlC7C,CAHkC,CAG9BjB,CAER+uD,EAAA,CAASA,CAAT,EAAmB,YACnBA,EAAA,CAASnF,CAAAoF,iBAAA,CAAyBD,CAAzB,CAAT,EAA6CA,CACzC31D,EAAA,CAASmJ,CAAT,CAAJ,GACEA,CADF,CACS0sD,EAAArxD,KAAA,CAAmB2E,CAAnB,CAAA,CAA2BlG,EAAA,CAAMkG,CAAN,CAA3B,CAAyCyrD,CAAA,CAAiBzrD,CAAjB,CADlD,CAII/I,EAAA,CAAS+I,CAAT,CAAJ,GACEA,CADF,CACS,IAAI9G,IAAJ,CAAS8G,CAAT,CADT,CAIA,IAAK,CAAA/G,EAAA,CAAO+G,CAAP,CAAL,EAAsB,CAAAspD,QAAA,CAAStpD,CAAA/B,QAAA,EAAT,CAAtB,CACE,MAAO+B,EAGT,KAAA,CAAOwsD,CAAP,CAAA,CAEE,CADA/uD,CACA,CADQkvD,EAAAv3C,KAAA,CAAwBo3C,CAAxB,CACR,GACEjrD,CACA,CADQlD,EAAA,CAAOkD,CAAP,CAAc9D,CAAd,CAAqB,CAArB,CACR,CAAA+uD,CAAA,CAASjrD,CAAAwgB,IAAA,EAFX,GAIExgB,CAAA9E,KAAA,CAAW+vD,CAAX,CACA,CAAAA,CAAA,CAAS,IALX,CASF,KAAItsD,EAAqBF,CAAAG,kBAAA,EACrBV,EAAJ,GACES,CACA,CADqBV,EAAA,CAAiBC,CAAjB,CAA2BS,CAA3B,CACrB,CAAAF,CAAA,CAAOD,EAAA,CAAuBC,CAAvB,CAA6BP,CAA7B,CAAuC,CAAA,CAAvC,CAFT,CAIArI,EAAA,CAAQmK,CAAR,CAAe,QAAQ,CAACpJ,CAAD,CAAQ,CAC7BuG,CAAA,CAAKkuD,EAAA,CAAaz0D,CAAb,CACLq/B,EAAA,EAAQ94B,CAAA,CAAKA,CAAA,CAAGsB,CAAH,CAASqnD,CAAAoF,iBAAT,CAAmCvsD,CAAnC,CAAL,CACe,IAAV,GAAA/H,CAAA,CAAiB,GAAjB,CAAuBA,CAAAwH,QAAA,CAAc,UAAd,CAA0B,EAA1B,CAAAA,QAAA,CAAsC,KAAtC,CAA6C,GAA7C,CAHP,CAA/B,CAMA,OAAO63B,EAzC+B,CA9Bb,CA2G7BuuB,QAASA,GAAU,EAAG,CACpB,MAAO,SAAQ,CAAC/T,CAAD,CAAS6a,CAAT,CAAkB,CAC3BjyD,CAAA,CAAYiyD,CAAZ,CAAJ,GACIA,CADJ,CACc,CADd,CAGA,OAAO5tD,GAAA,CAAO+yC,CAAP,CAAe6a,CAAf,CAJwB,CADb,CAkItB7G,QAASA,GAAa,EAAG,CACvB,MAAO,SAAQ,CAAC/7C,CAAD;AAAQ6iD,CAAR,CAAeC,CAAf,CAAsB,CAEjCD,CAAA,CAD8BE,QAAhC,GAAI53B,IAAAo0B,IAAA,CAASxjC,MAAA,CAAO8mC,CAAP,CAAT,CAAJ,CACU9mC,MAAA,CAAO8mC,CAAP,CADV,CAGUhzD,EAAA,CAAMgzD,CAAN,CAEV,IAAIhtD,KAAA,CAAMgtD,CAAN,CAAJ,CAAkB,MAAO7iD,EAErBhT,EAAA,CAASgT,CAAT,CAAJ,GAAqBA,CAArB,CAA6BA,CAAAtP,SAAA,EAA7B,CACA,IAAK,CAAAlE,EAAA,CAAYwT,CAAZ,CAAL,CAAyB,MAAOA,EAEhC8iD,EAAA,CAAUA,CAAAA,CAAF,EAAWjtD,KAAA,CAAMitD,CAAN,CAAX,CAA2B,CAA3B,CAA+BjzD,EAAA,CAAMizD,CAAN,CACvCA,EAAA,CAAiB,CAAT,CAACA,CAAD,CAAc33B,IAAAC,IAAA,CAAS,CAAT,CAAYprB,CAAAlT,OAAZ,CAA2Bg2D,CAA3B,CAAd,CAAkDA,CAE1D,OAAa,EAAb,EAAID,CAAJ,CACSG,EAAA,CAAQhjD,CAAR,CAAe8iD,CAAf,CAAsBA,CAAtB,CAA8BD,CAA9B,CADT,CAGgB,CAAd,GAAIC,CAAJ,CACSE,EAAA,CAAQhjD,CAAR,CAAe6iD,CAAf,CAAsB7iD,CAAAlT,OAAtB,CADT,CAGSk2D,EAAA,CAAQhjD,CAAR,CAAemrB,IAAAC,IAAA,CAAS,CAAT,CAAY03B,CAAZ,CAAoBD,CAApB,CAAf,CAA2CC,CAA3C,CApBwB,CADd,CA2BzBE,QAASA,GAAO,CAAChjD,CAAD,CAAQ8iD,CAAR,CAAeG,CAAf,CAAoB,CAClC,MAAIr2D,EAAA,CAASoT,CAAT,CAAJ,CAA4BA,CAAAtQ,MAAA,CAAYozD,CAAZ,CAAmBG,CAAnB,CAA5B,CAEOvzD,EAAAjC,KAAA,CAAWuS,CAAX,CAAkB8iD,CAAlB,CAAyBG,CAAzB,CAH2B,CA0iBpC/G,QAASA,GAAa,CAACh0C,CAAD,CAAS,CAoD7Bg7C,QAASA,EAAiB,CAACC,CAAD,CAAiB,CACzC,MAAOA,EAAAC,IAAA,CAAmB,QAAQ,CAACC,CAAD,CAAY,CAAA,IACxCC,EAAa,CAD2B,CACxB9oD,EAAMnK,EAE1B,IAAI9C,CAAA,CAAW81D,CAAX,CAAJ,CACE7oD,CAAA,CAAM6oD,CADR,KAEO,IAAIz2D,CAAA,CAASy2D,CAAT,CAAJ,CAAyB,CAC9B,GAA4B,GAA5B,EAAKA,CAAAlvD,OAAA,CAAiB,CAAjB,CAAL,EAA0D,GAA1D,EAAmCkvD,CAAAlvD,OAAA,CAAiB,CAAjB,CAAnC,CACEmvD,CACA,CADoC,GAAvB,EAAAD,CAAAlvD,OAAA,CAAiB,CAAjB,CAAA,CAA8B,EAA9B,CAAkC,CAC/C,CAAAkvD,CAAA,CAAYA,CAAAjsD,UAAA,CAAoB,CAApB,CAEd,IAAkB,EAAlB,GAAIisD,CAAJ,GACE7oD,CACImE,CADEuJ,CAAA,CAAOm7C,CAAP,CACF1kD,CAAAnE,CAAAmE,SAFN,EAGI,IAAIrR;AAAMkN,CAAA,EAAV,CACAA,EAAMA,QAAQ,CAACtM,CAAD,CAAQ,CAAE,MAAOA,EAAA,CAAMZ,CAAN,CAAT,CATI,CAahC,MAAO,CAACkN,IAAKA,CAAN,CAAW8oD,WAAYA,CAAvB,CAlBqC,CAAvC,CADkC,CAuB3C51D,QAASA,EAAW,CAACQ,CAAD,CAAQ,CAC1B,OAAQ,MAAOA,EAAf,EACE,KAAK,QAAL,CACA,KAAK,SAAL,CACA,KAAK,QAAL,CACE,MAAO,CAAA,CACT,SACE,MAAO,CAAA,CANX,CAD0B,CAqC5Bq1D,QAASA,EAAc,CAACC,CAAD,CAAKC,CAAL,CAAS,CAC9B,IAAInwC,EAAS,CAAb,CACIowC,EAAQF,CAAA9vD,KADZ,CAEIiwD,EAAQF,CAAA/vD,KAEZ,IAAIgwD,CAAJ,GAAcC,CAAd,CAAqB,CACfC,IAAAA,EAASJ,CAAAt1D,MAAT01D,CACAC,EAASJ,CAAAv1D,MAEC,SAAd,GAAIw1D,CAAJ,EAEEE,CACA,CADSA,CAAA9oD,YAAA,EACT,CAAA+oD,CAAA,CAASA,CAAA/oD,YAAA,EAHX,EAIqB,QAJrB,GAIW4oD,CAJX,GAOM90D,CAAA,CAASg1D,CAAT,CACJ,GADsBA,CACtB,CAD+BJ,CAAAvxD,MAC/B,EAAIrD,CAAA,CAASi1D,CAAT,CAAJ,GAAsBA,CAAtB,CAA+BJ,CAAAxxD,MAA/B,CARF,CAWI2xD,EAAJ,GAAeC,CAAf,GACEvwC,CADF,CACWswC,CAAA,CAASC,CAAT,CAAmB,EAAnB,CAAuB,CADlC,CAfmB,CAArB,IAmBEvwC,EAAA,CAASowC,CAAA,CAAQC,CAAR,CAAiB,EAAjB,CAAqB,CAGhC,OAAOrwC,EA3BuB,CA/GhC,MAAO,SAAQ,CAACthB,CAAD,CAAQ8xD,CAAR,CAAuBC,CAAvB,CAAqCC,CAArC,CAAgD,CAE7D,GAAa,IAAb,EAAIhyD,CAAJ,CAAmB,MAAOA,EAC1B,IAAK,CAAAxF,EAAA,CAAYwF,CAAZ,CAAL,CACE,KAAMzF,EAAA,CAAO,SAAP,CAAA,CAAkB,UAAlB,CAAkEyF,CAAlE,CAAN,CAGGrF,CAAA,CAAQm3D,CAAR,CAAL,GAA+BA,CAA/B,CAA+C,CAACA,CAAD,CAA/C,CAC6B,EAA7B,GAAIA,CAAAh3D,OAAJ;CAAkCg3D,CAAlC,CAAkD,CAAC,GAAD,CAAlD,CAEA,KAAIG,EAAaf,CAAA,CAAkBY,CAAlB,CAAjB,CAEIR,EAAaS,CAAA,CAAgB,EAAhB,CAAoB,CAFrC,CAKI7zB,EAAU3iC,CAAA,CAAWy2D,CAAX,CAAA,CAAwBA,CAAxB,CAAoCT,CAK9CW,EAAAA,CAAgBj3D,KAAAqlB,UAAA8wC,IAAA31D,KAAA,CAAyBuE,CAAzB,CAMpBmyD,QAA4B,CAACj2D,CAAD,CAAQ+D,CAAR,CAAe,CAIzC,MAAO,CACL/D,MAAOA,CADF,CAELk2D,WAAY,CAACl2D,MAAO+D,CAAR,CAAeyB,KAAM,QAArB,CAA+BzB,MAAOA,CAAtC,CAFP,CAGLoyD,gBAAiBJ,CAAAb,IAAA,CAAe,QAAQ,CAACC,CAAD,CAAY,CACzB,IAAA,EAAAA,CAAA7oD,IAAA,CAActM,CAAd,CAmE3BwF,EAAAA,CAAO,MAAOxF,EAClB,IAAc,IAAd,GAAIA,CAAJ,CACEwF,CACA,CADO,QACP,CAAAxF,CAAA,CAAQ,MAFV,KAGO,IAAa,QAAb,GAAIwF,CAAJ,CApBmB,CAAA,CAAA,CAE1B,GAAInG,CAAA,CAAWW,CAAAgB,QAAX,CAAJ,GACEhB,CACI,CADIA,CAAAgB,QAAA,EACJ,CAAAxB,CAAA,CAAYQ,CAAZ,CAFN,EAE0B,MAAA,CAGtBuC,GAAA,CAAkBvC,CAAlB,CAAJ,GACEA,CACI,CADIA,CAAAwC,SAAA,EACJ,CAAAhD,CAAA,CAAYQ,CAAZ,CAFN,CAP0B,CAnDpB,MA0EC,CAACA,MAAOA,CAAR,CAAewF,KAAMA,CAArB,CAA2BzB,MA1EmBA,CA0E9C,CA3EiD,CAAnC,CAHZ,CAJkC,CANvB,CACpBiyD,EAAAp2D,KAAA,CAkBAw2D,QAAqB,CAACd,CAAD,CAAKC,CAAL,CAAS,CAC5B,IAD4B,IACnB11D,EAAI,CADe,CACZY,EAAKs1D,CAAAn3D,OAArB,CAAwCiB,CAAxC,CAA4CY,CAA5C,CAAgDZ,CAAA,EAAhD,CAAqD,CACnD,IAAIulB,EAAS4c,CAAA,CAAQszB,CAAAa,gBAAA,CAAmBt2D,CAAnB,CAAR,CAA+B01D,CAAAY,gBAAA,CAAmBt2D,CAAnB,CAA/B,CACb,IAAIulB,CAAJ,CACE,MAAOA,EAAP,CAAgB2wC,CAAA,CAAWl2D,CAAX,CAAAu1D,WAAhB;AAA2CA,CAHM,CAOrD,MAAOpzB,EAAA,CAAQszB,CAAAY,WAAR,CAAuBX,CAAAW,WAAvB,CAAP,CAA+Cd,CARnB,CAlB9B,CAGA,OAFAtxD,EAEA,CAFQkyD,CAAAd,IAAA,CAAkB,QAAQ,CAACl2D,CAAD,CAAO,CAAE,MAAOA,EAAAgB,MAAT,CAAjC,CAtBqD,CADlC,CA+I/Bq2D,QAASA,GAAW,CAACxlD,CAAD,CAAY,CAC1BxR,CAAA,CAAWwR,CAAX,CAAJ,GACEA,CADF,CACc,CACVuc,KAAMvc,CADI,CADd,CAKAA,EAAAuf,SAAA,CAAqBvf,CAAAuf,SAArB,EAA2C,IAC3C,OAAO/tB,GAAA,CAAQwO,CAAR,CAPuB,CAihBhCylD,QAASA,GAAc,CAAC3yD,CAAD,CAAUuxB,CAAV,CAAiBqI,CAAjB,CAAyBnmB,CAAzB,CAAmC0B,CAAnC,CAAiD,CAAA,IAClE7G,EAAO,IAD2D,CAElEskD,EAAW,EAGftkD,EAAAukD,OAAA,CAAc,EACdvkD,EAAAwkD,UAAA,CAAiB,EACjBxkD,EAAAykD,SAAA,CAAgB7xD,IAAAA,EAChBoN,EAAA0kD,MAAA,CAAa79C,CAAA,CAAaoc,CAAA7qB,KAAb,EAA2B6qB,CAAAvhB,OAA3B,EAA2C,EAA3C,CAAA,CAA+C4pB,CAA/C,CACbtrB,EAAA2kD,OAAA,CAAc,CAAA,CACd3kD,EAAA4kD,UAAA,CAAiB,CAAA,CACjB5kD,EAAA6kD,OAAA,CAAc,CAAA,CACd7kD,EAAA8kD,SAAA,CAAgB,CAAA,CAChB9kD,EAAA+kD,WAAA,CAAkB,CAAA,CAClB/kD,EAAAglD,aAAA,CAAoBC,EAapBjlD,EAAAklD,mBAAA,CAA0BC,QAAQ,EAAG,CACnCn4D,CAAA,CAAQs3D,CAAR,CAAkB,QAAQ,CAACc,CAAD,CAAU,CAClCA,CAAAF,mBAAA,EADkC,CAApC,CADmC,CAiBrCllD,EAAAqlD,iBAAA,CAAwBC,QAAQ,EAAG,CACjCt4D,CAAA,CAAQs3D,CAAR,CAAkB,QAAQ,CAACc,CAAD,CAAU,CAClCA,CAAAC,iBAAA,EADkC,CAApC,CADiC,CA2BnCrlD;CAAAulD,YAAA,CAAmBC,QAAQ,CAACJ,CAAD,CAAU,CAGnC/oD,EAAA,CAAwB+oD,CAAAV,MAAxB,CAAuC,OAAvC,CACAJ,EAAAjyD,KAAA,CAAc+yD,CAAd,CAEIA,EAAAV,MAAJ,GACE1kD,CAAA,CAAKolD,CAAAV,MAAL,CADF,CACwBU,CADxB,CAIAA,EAAAJ,aAAA,CAAuBhlD,CAVY,CAcrCA,EAAAylD,gBAAA,CAAuBC,QAAQ,CAACN,CAAD,CAAUO,CAAV,CAAmB,CAChD,IAAIC,EAAUR,CAAAV,MAEV1kD,EAAA,CAAK4lD,CAAL,CAAJ,GAAsBR,CAAtB,EACE,OAAOplD,CAAA,CAAK4lD,CAAL,CAET5lD,EAAA,CAAK2lD,CAAL,CAAA,CAAgBP,CAChBA,EAAAV,MAAA,CAAgBiB,CAPgC,CA0BlD3lD,EAAA6lD,eAAA,CAAsBC,QAAQ,CAACV,CAAD,CAAU,CAClCA,CAAAV,MAAJ,EAAqB1kD,CAAA,CAAKolD,CAAAV,MAAL,CAArB,GAA6CU,CAA7C,EACE,OAAOplD,CAAA,CAAKolD,CAAAV,MAAL,CAET13D,EAAA,CAAQgT,CAAAykD,SAAR,CAAuB,QAAQ,CAAC12D,CAAD,CAAQqK,CAAR,CAAc,CAC3C4H,CAAA+lD,aAAA,CAAkB3tD,CAAlB,CAAwB,IAAxB,CAA8BgtD,CAA9B,CAD2C,CAA7C,CAGAp4D,EAAA,CAAQgT,CAAAukD,OAAR,CAAqB,QAAQ,CAACx2D,CAAD,CAAQqK,CAAR,CAAc,CACzC4H,CAAA+lD,aAAA,CAAkB3tD,CAAlB,CAAwB,IAAxB,CAA8BgtD,CAA9B,CADyC,CAA3C,CAGAp4D,EAAA,CAAQgT,CAAAwkD,UAAR,CAAwB,QAAQ,CAACz2D,CAAD,CAAQqK,CAAR,CAAc,CAC5C4H,CAAA+lD,aAAA,CAAkB3tD,CAAlB,CAAwB,IAAxB,CAA8BgtD,CAA9B,CAD4C,CAA9C,CAIAxzD,GAAA,CAAY0yD,CAAZ,CAAsBc,CAAtB,CACAA,EAAAJ,aAAA,CAAuBC,EAfe,CA4BxCe,GAAA,CAAqB,CACnBC,KAAM,IADa,CAEnBznC,SAAU9sB,CAFS,CAGnBwB,IAAKA,QAAQ,CAAC00C,CAAD,CAASxc,CAAT,CAAmB/vB,CAAnB,CAA+B,CAC1C,IAAIua,EAAOgyB,CAAA,CAAOxc,CAAP,CACNxV,EAAL;AAIiB,EAJjB,GAGcA,CAAA7jB,QAAAD,CAAauJ,CAAbvJ,CAHd,EAKI8jB,CAAAvjB,KAAA,CAAUgJ,CAAV,CALJ,CACEusC,CAAA,CAAOxc,CAAP,CADF,CACqB,CAAC/vB,CAAD,CAHqB,CAHzB,CAcnB6qD,MAAOA,QAAQ,CAACte,CAAD,CAASxc,CAAT,CAAmB/vB,CAAnB,CAA+B,CAC5C,IAAIua,EAAOgyB,CAAA,CAAOxc,CAAP,CACNxV,EAAL,GAGAhkB,EAAA,CAAYgkB,CAAZ,CAAkBva,CAAlB,CACA,CAAoB,CAApB,GAAIua,CAAAjpB,OAAJ,EACE,OAAOi7C,CAAA,CAAOxc,CAAP,CALT,CAF4C,CAd3B,CAwBnBjmB,SAAUA,CAxBS,CAArB,CAqCAnF,EAAAmmD,UAAA,CAAiBC,QAAQ,EAAG,CAC1BjhD,CAAAqM,YAAA,CAAqB9f,CAArB,CAA8B20D,EAA9B,CACAlhD,EAAAoM,SAAA,CAAkB7f,CAAlB,CAA2B40D,EAA3B,CACAtmD,EAAA2kD,OAAA,CAAc,CAAA,CACd3kD,EAAA4kD,UAAA,CAAiB,CAAA,CACjB5kD,EAAAglD,aAAAmB,UAAA,EAL0B,CAsB5BnmD,EAAAumD,aAAA,CAAoBC,QAAQ,EAAG,CAC7BrhD,CAAAshD,SAAA,CAAkB/0D,CAAlB,CAA2B20D,EAA3B,CAA2CC,EAA3C,CAzPcI,eAyPd,CACA1mD,EAAA2kD,OAAA,CAAc,CAAA,CACd3kD,EAAA4kD,UAAA,CAAiB,CAAA,CACjB5kD,EAAA+kD,WAAA,CAAkB,CAAA,CAClB/3D,EAAA,CAAQs3D,CAAR,CAAkB,QAAQ,CAACc,CAAD,CAAU,CAClCA,CAAAmB,aAAA,EADkC,CAApC,CAL6B,CAuB/BvmD,EAAA2mD,cAAA,CAAqBC,QAAQ,EAAG,CAC9B55D,CAAA,CAAQs3D,CAAR,CAAkB,QAAQ,CAACc,CAAD,CAAU,CAClCA,CAAAuB,cAAA,EADkC,CAApC,CAD8B,CAahC3mD,EAAA6mD,cAAA,CAAqBC,QAAQ,EAAG,CAC9B3hD,CAAAoM,SAAA,CAAkB7f,CAAlB,CA7Rcg1D,cA6Rd,CACA1mD;CAAA+kD,WAAA,CAAkB,CAAA,CAClB/kD,EAAAglD,aAAA6B,cAAA,EAH8B,CA1OsC,CA+iDxEE,QAASA,GAAoB,CAACd,CAAD,CAAO,CAClCA,CAAAe,YAAA30D,KAAA,CAAsB,QAAQ,CAACtE,CAAD,CAAQ,CACpC,MAAOk4D,EAAAgB,SAAA,CAAcl5D,CAAd,CAAA,CAAuBA,CAAvB,CAA+BA,CAAAwC,SAAA,EADF,CAAtC,CADkC,CAWpC22D,QAASA,GAAa,CAAC7tD,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiD,CACrE,IAAIxS,EAAO5B,CAAA,CAAUD,CAAA,CAAQ,CAAR,CAAA6B,KAAV,CAKX,IAAK8kD,CAAA1vC,CAAA0vC,QAAL,CAAuB,CACrB,IAAI8O,EAAY,CAAA,CAEhBz1D,EAAAwJ,GAAA,CAAW,kBAAX,CAA+B,QAAQ,EAAG,CACxCisD,CAAA,CAAY,CAAA,CAD4B,CAA1C,CAIAz1D,EAAAwJ,GAAA,CAAW,gBAAX,CAA6B,QAAQ,EAAG,CACtCisD,CAAA,CAAY,CAAA,CACZ3uC,EAAA,EAFsC,CAAxC,CAPqB,CAavB,IAAI4hB,CAAJ,CAEI5hB,EAAWA,QAAQ,CAAC4uC,CAAD,CAAK,CACtBhtB,CAAJ,GACEr0B,CAAAsU,MAAAI,OAAA,CAAsB2f,CAAtB,CACA,CAAAA,CAAA,CAAU,IAFZ,CAIA,IAAI+sB,CAAAA,CAAJ,CAAA,CAL0B,IAMtBp5D,EAAQ2D,CAAAiD,IAAA,EACRkb,EAAAA,CAAQu3C,CAARv3C,EAAcu3C,CAAA7zD,KAKL,WAAb,GAAIA,CAAJ,EAA6BnC,CAAAi2D,OAA7B,EAA4D,OAA5D,GAA4Cj2D,CAAAi2D,OAA5C,GACEt5D,CADF,CACUie,CAAA,CAAKje,CAAL,CADV,CAOA,EAAIk4D,CAAAqB,WAAJ,GAAwBv5D,CAAxB,EAA4C,EAA5C,GAAkCA,CAAlC,EAAkDk4D,CAAAsB,sBAAlD,GACEtB,CAAAuB,cAAA,CAAmBz5D,CAAnB,CAA0B8hB,CAA1B,CAfF,CAL0B,CA0B5B,IAAIlH,CAAAqwC,SAAA,CAAkB,OAAlB,CAAJ,CACEtnD,CAAAwJ,GAAA,CAAW,OAAX;AAAoBsd,CAApB,CADF,KAEO,CACL,IAAIivC,EAAgBA,QAAQ,CAACL,CAAD,CAAKvnD,CAAL,CAAY6nD,CAAZ,CAAuB,CAC5CttB,CAAL,GACEA,CADF,CACYr0B,CAAAsU,MAAA,CAAe,QAAQ,EAAG,CAClC+f,CAAA,CAAU,IACLv6B,EAAL,EAAcA,CAAA9R,MAAd,GAA8B25D,CAA9B,EACElvC,CAAA,CAAS4uC,CAAT,CAHgC,CAA1B,CADZ,CADiD,CAWnD11D,EAAAwJ,GAAA,CAAW,SAAX,CAAsB,QAAQ,CAAC2U,CAAD,CAAQ,CACpC,IAAI1iB,EAAM0iB,CAAA83C,QAIE,GAAZ,GAAIx6D,CAAJ,EAAmB,EAAnB,CAAwBA,CAAxB,EAAqC,EAArC,CAA+BA,CAA/B,EAA6C,EAA7C,EAAmDA,CAAnD,EAAiE,EAAjE,EAA0DA,CAA1D,EAEAs6D,CAAA,CAAc53C,CAAd,CAAqB,IAArB,CAA2B,IAAA9hB,MAA3B,CAPoC,CAAtC,CAWA,IAAI4a,CAAAqwC,SAAA,CAAkB,OAAlB,CAAJ,CACEtnD,CAAAwJ,GAAA,CAAW,WAAX,CAAwBusD,CAAxB,CAxBG,CA8BP/1D,CAAAwJ,GAAA,CAAW,QAAX,CAAqBsd,CAArB,CAMA,IAAIovC,EAAA,CAAyBr0D,CAAzB,CAAJ,EAAsC0yD,CAAAsB,sBAAtC,EAAoEh0D,CAApE,GAA6EnC,CAAAmC,KAA7E,CACE7B,CAAAwJ,GAAA,CAvoC4B2sD,yBAuoC5B,CAAsC,QAAQ,CAACT,CAAD,CAAK,CACjD,GAAKhtB,CAAAA,CAAL,CAAc,CACZ,IAAI0tB,EAAW,IAAA,SAAf,CACIC,EAAeD,CAAAE,SADnB,CAEIC,EAAmBH,CAAAI,aACvB9tB,EAAA,CAAUr0B,CAAAsU,MAAA,CAAe,QAAQ,EAAG,CAClC+f,CAAA,CAAU,IACN0tB,EAAAE,SAAJ,GAA0BD,CAA1B,EAA0CD,CAAAI,aAA1C,GAAoED,CAApE,EACEzvC,CAAA,CAAS4uC,CAAT,CAHgC,CAA1B,CAJE,CADmC,CAAnD,CAeFnB,EAAAkC,QAAA,CAAeC,QAAQ,EAAG,CAExB,IAAIr6D,EAAQk4D,CAAAgB,SAAA,CAAchB,CAAAqB,WAAd,CAAA;AAAiC,EAAjC,CAAsCrB,CAAAqB,WAC9C51D,EAAAiD,IAAA,EAAJ,GAAsB5G,CAAtB,EACE2D,CAAAiD,IAAA,CAAY5G,CAAZ,CAJsB,CArG2C,CA8IvEs6D,QAASA,GAAgB,CAAClpC,CAAD,CAASmpC,CAAT,CAAkB,CACzC,MAAO,SAAQ,CAACC,CAAD,CAAM3yD,CAAN,CAAY,CAAA,IACrBuB,CADqB,CACd8rD,CAEX,IAAIp0D,EAAA,CAAO05D,CAAP,CAAJ,CACE,MAAOA,EAGT,IAAI97D,CAAA,CAAS87D,CAAT,CAAJ,CAAmB,CAII,GAArB,EAAIA,CAAAv0D,OAAA,CAAW,CAAX,CAAJ,EAA0D,GAA1D,EAA4Bu0D,CAAAv0D,OAAA,CAAWu0D,CAAA57D,OAAX,CAAwB,CAAxB,CAA5B,GACE47D,CADF,CACQA,CAAAtxD,UAAA,CAAc,CAAd,CAAiBsxD,CAAA57D,OAAjB,CAA8B,CAA9B,CADR,CAGA,IAAI67D,EAAAv3D,KAAA,CAAqBs3D,CAArB,CAAJ,CACE,MAAO,KAAIz5D,IAAJ,CAASy5D,CAAT,CAETppC,EAAA7rB,UAAA,CAAmB,CAGnB,IAFA6D,CAEA,CAFQgoB,CAAAnU,KAAA,CAAYu9C,CAAZ,CAER,CAqBE,MApBApxD,EAAAkd,MAAA,EAoBO,CAlBL4uC,CAkBK,CAnBHrtD,CAAJ,CACQ,CACJ6yD,KAAM7yD,CAAAkrD,YAAA,EADF,CAEJ4H,GAAI9yD,CAAAorD,SAAA,EAAJ0H,CAAsB,CAFlB,CAGJC,GAAI/yD,CAAAqrD,QAAA,EAHA,CAIJ2H,GAAIhzD,CAAAizD,SAAA,EAJA,CAKJC,GAAIlzD,CAAAM,WAAA,EALA,CAMJ6yD,GAAInzD,CAAAozD,WAAA,EANA,CAOJC,IAAKrzD,CAAAszD,gBAAA,EAALD,CAA8B,GAP1B,CADR,CAWQ,CAAER,KAAM,IAAR,CAAcC,GAAI,CAAlB,CAAqBC,GAAI,CAAzB,CAA4BC,GAAI,CAAhC,CAAmCE,GAAI,CAAvC,CAA0CC,GAAI,CAA9C,CAAiDE,IAAK,CAAtD,CAQD,CALPj8D,CAAA,CAAQmK,CAAR,CAAe,QAAQ,CAACgyD,CAAD,CAAOr3D,CAAP,CAAc,CAC/BA,CAAJ,CAAYw2D,CAAA37D,OAAZ,GACEs2D,CAAA,CAAIqF,CAAA,CAAQx2D,CAAR,CAAJ,CADF,CACwB,CAACq3D,CADzB,CADmC,CAArC,CAKO,CAAA,IAAIr6D,IAAJ,CAASm0D,CAAAwF,KAAT;AAAmBxF,CAAAyF,GAAnB,CAA4B,CAA5B,CAA+BzF,CAAA0F,GAA/B,CAAuC1F,CAAA2F,GAAvC,CAA+C3F,CAAA6F,GAA/C,CAAuD7F,CAAA8F,GAAvD,EAAiE,CAAjE,CAA8E,GAA9E,CAAoE9F,CAAAgG,IAApE,EAAsF,CAAtF,CAlCQ,CAsCnB,MAAOG,IA7CkB,CADc,CAkD3CC,QAASA,GAAmB,CAAC91D,CAAD,CAAO4rB,CAAP,CAAemqC,CAAf,CAA0BlH,CAA1B,CAAkC,CAC5D,MAAOmH,SAA6B,CAAClwD,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiDU,CAAjD,CAA0D,CA4D5F+iD,QAASA,EAAW,CAACz7D,CAAD,CAAQ,CAE1B,MAAOA,EAAP,EAAgB,EAAEA,CAAA8F,QAAF,EAAmB9F,CAAA8F,QAAA,EAAnB,GAAuC9F,CAAA8F,QAAA,EAAvC,CAFU,CAK5B41D,QAASA,EAAsB,CAAC90D,CAAD,CAAM,CACnC,MAAOlE,EAAA,CAAUkE,CAAV,CAAA,EAAmB,CAAA9F,EAAA,CAAO8F,CAAP,CAAnB,CAAiC20D,CAAA,CAAU30D,CAAV,CAAjC,EAAmD/B,IAAAA,EAAnD,CAA+D+B,CADnC,CAhErC+0D,EAAA,CAAgBrwD,CAAhB,CAAuB3H,CAAvB,CAAgCN,CAAhC,CAAsC60D,CAAtC,CACAiB,GAAA,CAAc7tD,CAAd,CAAqB3H,CAArB,CAA8BN,CAA9B,CAAoC60D,CAApC,CAA0Ct9C,CAA1C,CAAoD5C,CAApD,CACA,KAAI1Q,EAAW4wD,CAAX5wD,EAAmB4wD,CAAA0D,SAAnBt0D,EAAoC4wD,CAAA0D,SAAAt0D,SAAxC,CACIu0D,CAEJ3D,EAAA4D,aAAA,CAAoBt2D,CACpB0yD,EAAA6D,SAAAz3D,KAAA,CAAmB,QAAQ,CAACtE,CAAD,CAAQ,CACjC,GAAIk4D,CAAAgB,SAAA,CAAcl5D,CAAd,CAAJ,CAA0B,MAAO,KACjC,IAAIoxB,CAAAluB,KAAA,CAAYlD,CAAZ,CAAJ,CAQE,MAJIg8D,EAIGA,CAJUT,CAAA,CAAUv7D,CAAV,CAAiB67D,CAAjB,CAIVG,CAHH10D,CAGG00D,GAFLA,CAEKA,CAFQp0D,EAAA,CAAuBo0D,CAAvB,CAAmC10D,CAAnC,CAER00D,EAAAA,CAVwB,CAAnC,CAeA9D,EAAAe,YAAA30D,KAAA,CAAsB,QAAQ,CAACtE,CAAD,CAAQ,CACpC,GAAIA,CAAJ,EAAc,CAAAc,EAAA,CAAOd,CAAP,CAAd,CACE,KAAMi8D,GAAA,CAAc,SAAd,CAAwDj8D,CAAxD,CAAN,CAEF,GAAIy7D,CAAA,CAAYz7D,CAAZ,CAAJ,CAKE,MAAO,CAJP67D,CAIO,CAJQ77D,CAIR;AAHasH,CAGb,GAFLu0D,CAEK,CAFUj0D,EAAA,CAAuBi0D,CAAvB,CAAqCv0D,CAArC,CAA+C,CAAA,CAA/C,CAEV,EAAAoR,CAAA,CAAQ,MAAR,CAAA,CAAgB1Y,CAAhB,CAAuBq0D,CAAvB,CAA+B/sD,CAA/B,CAEPu0D,EAAA,CAAe,IACf,OAAO,EAZ2B,CAAtC,CAgBA,IAAIn5D,CAAA,CAAUW,CAAAqtD,IAAV,CAAJ,EAA2BrtD,CAAA64D,MAA3B,CAAuC,CACrC,IAAIC,CACJjE,EAAAkE,YAAA1L,IAAA,CAAuB2L,QAAQ,CAACr8D,CAAD,CAAQ,CACrC,MAAO,CAACy7D,CAAA,CAAYz7D,CAAZ,CAAR,EAA8ByC,CAAA,CAAY05D,CAAZ,CAA9B,EAAqDZ,CAAA,CAAUv7D,CAAV,CAArD,EAAyEm8D,CADpC,CAGvC94D,EAAA4+B,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACr7B,CAAD,CAAM,CACjCu1D,CAAA,CAAST,CAAA,CAAuB90D,CAAvB,CACTsxD,EAAAoE,UAAA,EAFiC,CAAnC,CALqC,CAWvC,GAAI55D,CAAA,CAAUW,CAAA65B,IAAV,CAAJ,EAA2B75B,CAAAk5D,MAA3B,CAAuC,CACrC,IAAIC,CACJtE,EAAAkE,YAAAl/B,IAAA,CAAuBu/B,QAAQ,CAACz8D,CAAD,CAAQ,CACrC,MAAO,CAACy7D,CAAA,CAAYz7D,CAAZ,CAAR,EAA8ByC,CAAA,CAAY+5D,CAAZ,CAA9B,EAAqDjB,CAAA,CAAUv7D,CAAV,CAArD,EAAyEw8D,CADpC,CAGvCn5D,EAAA4+B,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACr7B,CAAD,CAAM,CACjC41D,CAAA,CAASd,CAAA,CAAuB90D,CAAvB,CACTsxD,EAAAoE,UAAA,EAFiC,CAAnC,CALqC,CAjDqD,CADlC,CAwE9DX,QAASA,GAAe,CAACrwD,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6B,CAGnD,CADuBA,CAAAsB,sBACvB,CADoD94D,CAAA,CADzCiD,CAAAR,CAAQ,CAARA,CACkD42D,SAAT,CACpD,GACE7B,CAAA6D,SAAAz3D,KAAA,CAAmB,QAAQ,CAACtE,CAAD,CAAQ,CACjC,IAAI+5D,EAAWp2D,CAAAP,KAAA,CAztuBSs5D,UAytuBT,CAAX3C,EAAoD,EACxD,OAAOA,EAAAE,SAAA,EAAqBF,CAAAI,aAArB,CAA6Ct1D,IAAAA,EAA7C,CAAyD7E,CAF/B,CAAnC,CAJiD,CAiHrD28D,QAASA,GAAiB,CAAC3iD,CAAD;AAAS7a,CAAT,CAAkBkL,CAAlB,CAAwBw7B,CAAxB,CAAoCt+B,CAApC,CAA8C,CAEtE,GAAI7E,CAAA,CAAUmjC,CAAV,CAAJ,CAA2B,CACzB+2B,CAAA,CAAU5iD,CAAA,CAAO6rB,CAAP,CACV,IAAKp1B,CAAAmsD,CAAAnsD,SAAL,CACE,KAAMwrD,GAAA,CAAc,WAAd,CACiC5xD,CADjC,CACuCw7B,CADvC,CAAN,CAGF,MAAO+2B,EAAA,CAAQz9D,CAAR,CANkB,CAQ3B,MAAOoI,EAV+D,CAqlBxEs1D,QAASA,GAAc,CAACxyD,CAAD,CAAO2V,CAAP,CAAiB,CACtC3V,CAAA,CAAO,SAAP,CAAmBA,CACnB,OAAO,CAAC,UAAD,CAAa,QAAQ,CAAC+M,CAAD,CAAW,CAuFrC0lD,QAASA,EAAe,CAAC93B,CAAD,CAAUC,CAAV,CAAmB,CACzC,IAAIF,EAAS,EAAb,CAGSllC,EAAI,CADb,EAAA,CACA,IAAA,CAAgBA,CAAhB,CAAoBmlC,CAAApmC,OAApB,CAAoCiB,CAAA,EAApC,CAAyC,CAEvC,IADA,IAAIqlC,EAAQF,CAAA,CAAQnlC,CAAR,CAAZ,CACSc,EAAI,CAAb,CAAgBA,CAAhB,CAAoBskC,CAAArmC,OAApB,CAAoC+B,CAAA,EAApC,CACE,GAAIukC,CAAJ,EAAaD,CAAA,CAAQtkC,CAAR,CAAb,CAAyB,SAAS,CAEpCokC,EAAAzgC,KAAA,CAAY4gC,CAAZ,CALuC,CAOzC,MAAOH,EAXkC,CAc3Cg4B,QAASA,EAAY,CAACh6B,CAAD,CAAW,CAC9B,IAAIxf,EAAU,EACd,OAAI9kB,EAAA,CAAQskC,CAAR,CAAJ,EACE9jC,CAAA,CAAQ8jC,CAAR,CAAkB,QAAQ,CAACsD,CAAD,CAAI,CAC5B9iB,CAAA,CAAUA,CAAArd,OAAA,CAAe62D,CAAA,CAAa12B,CAAb,CAAf,CADkB,CAA9B,CAGO9iB,CAAAA,CAJT,EAKW7kB,CAAA,CAASqkC,CAAT,CAAJ,CACEA,CAAAt/B,MAAA,CAAe,GAAf,CADF,CAEI/C,CAAA,CAASqiC,CAAT,CAAJ,EACL9jC,CAAA,CAAQ8jC,CAAR,CAAkB,QAAQ,CAACsD,CAAD,CAAIwqB,CAAJ,CAAO,CAC3BxqB,CAAJ,GACE9iB,CADF,CACYA,CAAArd,OAAA,CAAe2qD,CAAAptD,MAAA,CAAQ,GAAR,CAAf,CADZ,CAD+B,CAAjC,CAKO8f,CAAAA,CANF,EAQAwf,CAjBuB,CApGhC,MAAO,CACL3S,SAAU,IADL,CAELhD,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAuBnC25D,QAASA,EAAU,CAACz5C,CAAD,CAAU,CACvB0f,CAAAA,CAAag6B,CAAA,CAAkB15C,CAAlB,CAA2B,CAA3B,CACjBlgB,EAAAy/B,UAAA,CAAeG,CAAf,CAF2B,CAvBM;AAiCnCg6B,QAASA,EAAiB,CAAC15C,CAAD,CAAUstB,CAAV,CAAiB,CAGzC,IAAIqsB,EAAcv5D,CAAA8H,KAAA,CAAa,cAAb,CAAdyxD,EAA8Cl3D,CAAA,EAAlD,CACIm3D,EAAkB,EACtBl+D,EAAA,CAAQskB,CAAR,CAAiB,QAAQ,CAACmP,CAAD,CAAY,CACnC,GAAY,CAAZ,CAAIme,CAAJ,EAAiBqsB,CAAA,CAAYxqC,CAAZ,CAAjB,CACEwqC,CAAA,CAAYxqC,CAAZ,CACA,EAD0BwqC,CAAA,CAAYxqC,CAAZ,CAC1B,EADoD,CACpD,EADyDme,CACzD,CAAIqsB,CAAA,CAAYxqC,CAAZ,CAAJ,GAA+B,EAAU,CAAV,CAAEme,CAAF,CAA/B,EACEssB,CAAA74D,KAAA,CAAqBouB,CAArB,CAJ+B,CAArC,CAQA/uB,EAAA8H,KAAA,CAAa,cAAb,CAA6ByxD,CAA7B,CACA,OAAOC,EAAA5zD,KAAA,CAAqB,GAArB,CAdkC,CAiB3C6zD,QAASA,EAAa,CAACv+B,CAAD,CAAaoE,CAAb,CAAyB,CAC7C,IAAIC,EAAQ45B,CAAA,CAAgB75B,CAAhB,CAA4BpE,CAA5B,CAAZ,CACIuE,EAAW05B,CAAA,CAAgBj+B,CAAhB,CAA4BoE,CAA5B,CADf,CAEAC,EAAQ+5B,CAAA,CAAkB/5B,CAAlB,CAAyB,CAAzB,CAFR,CAGAE,EAAW65B,CAAA,CAAkB75B,CAAlB,CAA6B,EAA7B,CACPF,EAAJ,EAAaA,CAAAtkC,OAAb,EACEwY,CAAAoM,SAAA,CAAkB7f,CAAlB,CAA2Bu/B,CAA3B,CAEEE,EAAJ,EAAgBA,CAAAxkC,OAAhB,EACEwY,CAAAqM,YAAA,CAAqB9f,CAArB,CAA8By/B,CAA9B,CAT2C,CAa/Ci6B,QAASA,EAAkB,CAACr0C,CAAD,CAAS,CAElC,GAAiB,CAAA,CAAjB,GAAIhJ,CAAJ,GAA0B1U,CAAAgyD,OAA1B,CAAyC,CAAzC,IAAgDt9C,CAAhD,CAA0D,CAExD,IAAIijB,EAAa85B,CAAA,CAAa/zC,CAAb,EAAuB,EAAvB,CACjB,IAAKC,CAAAA,CAAL,CACE+zC,CAAA,CAAW/5B,CAAX,CADF,KAEO,IAAK,CAAAx9B,EAAA,CAAOujB,CAAP,CAAcC,CAAd,CAAL,CAA4B,CACjC,IAAI4V,EAAak+B,CAAA,CAAa9zC,CAAb,CACjBm0C,EAAA,CAAcv+B,CAAd,CAA0BoE,CAA1B,CAFiC,CALqB,CAWxDha,CAAA,CADExqB,CAAA,CAAQuqB,CAAR,CAAJ,CACWA,CAAAksC,IAAA,CAAW,QAAQ,CAAC7uB,CAAD,CAAI,CAAE,MAAOp1B,GAAA,CAAYo1B,CAAZ,CAAT,CAAvB,CADX,CAGWp1B,EAAA,CAAY+X,CAAZ,CAfuB,CA9DpC,IAAIC,CAEJ3d,EAAAxI,OAAA,CAAaO,CAAA,CAAKgH,CAAL,CAAb,CAAyBgzD,CAAzB,CAA6C,CAAA,CAA7C,CAEAh6D,EAAA4+B,SAAA,CAAc,OAAd,CAAuB,QAAQ,CAACjiC,CAAD,CAAQ,CACrCq9D,CAAA,CAAmB/xD,CAAA66C,MAAA,CAAY9iD,CAAA,CAAKgH,CAAL,CAAZ,CAAnB,CADqC,CAAvC,CAKa;SAAb,GAAIA,CAAJ,EACEiB,CAAAxI,OAAA,CAAa,QAAb,CAAuB,QAAQ,CAACw6D,CAAD,CAASC,CAAT,CAAoB,CAEjD,IAAIC,EAAMF,CAANE,CAAe,CACnB,IAAIA,CAAJ,IAAaD,CAAb,CAAyB,CAAzB,EAA6B,CAC3B,IAAIh6C,EAAUw5C,CAAA,CAAazxD,CAAA66C,MAAA,CAAY9iD,CAAA,CAAKgH,CAAL,CAAZ,CAAb,CACdmzD,EAAA,GAAQx9C,CAAR,CACEg9C,CAAA,CAAWz5C,CAAX,CADF,EAaA0f,CACJ,CADiBg6B,CAAA,CAXG15C,CAWH,CAA4B,EAA5B,CACjB,CAAAlgB,CAAA2/B,aAAA,CAAkBC,CAAlB,CAdI,CAF2B,CAHoB,CAAnD,CAXiC,CAFhC,CAD8B,CAAhC,CAF+B,CAkwGxCg1B,QAASA,GAAoB,CAAC94D,CAAD,CAAU,CA4ErCs+D,QAASA,EAAiB,CAAC/qC,CAAD,CAAYgrC,CAAZ,CAAyB,CAC7CA,CAAJ,EAAoB,CAAAC,CAAA,CAAWjrC,CAAX,CAApB,EACEtb,CAAAoM,SAAA,CAAkBiN,CAAlB,CAA4BiC,CAA5B,CACA,CAAAirC,CAAA,CAAWjrC,CAAX,CAAA,CAAwB,CAAA,CAF1B,EAGYgrC,CAAAA,CAHZ,EAG2BC,CAAA,CAAWjrC,CAAX,CAH3B,GAIEtb,CAAAqM,YAAA,CAAqBgN,CAArB,CAA+BiC,CAA/B,CACA,CAAAirC,CAAA,CAAWjrC,CAAX,CAAA,CAAwB,CAAA,CAL1B,CADiD,CAUnDkrC,QAASA,EAAmB,CAACC,CAAD,CAAqBC,CAArB,CAA8B,CACxDD,CAAA,CAAqBA,CAAA,CAAqB,GAArB,CAA2BtxD,EAAA,CAAWsxD,CAAX,CAA+B,GAA/B,CAA3B,CAAiE,EAEtFJ,EAAA,CAAkBM,EAAlB,CAAgCF,CAAhC,CAAgE,CAAA,CAAhE,GAAoDC,CAApD,CACAL,EAAA,CAAkBO,EAAlB,CAAkCH,CAAlC,CAAkE,CAAA,CAAlE,GAAsDC,CAAtD,CAJwD,CAtFrB,IACjC5F,EAAO/4D,CAAA+4D,KAD0B,CAEjCznC,EAAWtxB,CAAAsxB,SAFsB,CAGjCktC,EAAa,EAHoB,CAIjCx4D,EAAMhG,CAAAgG,IAJ2B,CAKjCgzD,EAAQh5D,CAAAg5D,MALyB,CAMjC/gD,EAAWjY,CAAAiY,SAEfumD,EAAA,CAAWK,EAAX,CAAA,CAA4B,EAAEL,CAAA,CAAWI,EAAX,CAAF,CAA4BttC,CAAAnN,SAAA,CAAkBy6C,EAAlB,CAA5B,CAE5B7F,EAAAF,aAAA,CAEAiG,QAAoB,CAACJ,CAAD,CAAqBvyC,CAArB,CAA4Bhe,CAA5B,CAAwC,CACtD7K,CAAA,CAAY6oB,CAAZ,CAAJ,EAgDK4sC,CAAA,SAGL,GAFEA,CAAA,SAEF,CAFe,EAEf,EAAA/yD,CAAA,CAAI+yD,CAAA,SAAJ,CAlD2B2F,CAkD3B,CAlD+CvwD,CAkD/C,CAnDA,GAuDI4qD,CAAA,SAGJ;AAFEC,CAAA,CAAMD,CAAA,SAAN,CArD4B2F,CAqD5B,CArDgDvwD,CAqDhD,CAEF,CAAI4wD,EAAA,CAAchG,CAAA,SAAd,CAAJ,GACEA,CAAA,SADF,CACerzD,IAAAA,EADf,CA1DA,CAKK9B,GAAA,CAAUuoB,CAAV,CAAL,CAIMA,CAAJ,EACE6sC,CAAA,CAAMD,CAAA1B,OAAN,CAAmBqH,CAAnB,CAAuCvwD,CAAvC,CACA,CAAAnI,CAAA,CAAI+yD,CAAAzB,UAAJ,CAAoBoH,CAApB,CAAwCvwD,CAAxC,CAFF,GAIEnI,CAAA,CAAI+yD,CAAA1B,OAAJ,CAAiBqH,CAAjB,CAAqCvwD,CAArC,CACA,CAAA6qD,CAAA,CAAMD,CAAAzB,UAAN,CAAsBoH,CAAtB,CAA0CvwD,CAA1C,CALF,CAJF,EACE6qD,CAAA,CAAMD,CAAA1B,OAAN,CAAmBqH,CAAnB,CAAuCvwD,CAAvC,CACA,CAAA6qD,CAAA,CAAMD,CAAAzB,UAAN,CAAsBoH,CAAtB,CAA0CvwD,CAA1C,CAFF,CAYI4qD,EAAAxB,SAAJ,EACE+G,CAAA,CAAkBU,EAAlB,CAAiC,CAAA,CAAjC,CAEA,CADAjG,CAAApB,OACA,CADcoB,CAAAnB,SACd,CAD8BlyD,IAAAA,EAC9B,CAAA+4D,CAAA,CAAoB,EAApB,CAAwB,IAAxB,CAHF,GAKEH,CAAA,CAAkBU,EAAlB,CAAiC,CAAA,CAAjC,CAGA,CAFAjG,CAAApB,OAEA,CAFcoH,EAAA,CAAchG,CAAA1B,OAAd,CAEd,CADA0B,CAAAnB,SACA,CADgB,CAACmB,CAAApB,OACjB,CAAA8G,CAAA,CAAoB,EAApB,CAAwB1F,CAAApB,OAAxB,CARF,CAiBEsH,EAAA,CADElG,CAAAxB,SAAJ,EAAqBwB,CAAAxB,SAAA,CAAcmH,CAAd,CAArB,CACkBh5D,IAAAA,EADlB,CAEWqzD,CAAA1B,OAAA,CAAYqH,CAAZ,CAAJ,CACW,CAAA,CADX,CAEI3F,CAAAzB,UAAA,CAAeoH,CAAf,CAAJ,CACW,CAAA,CADX,CAGW,IAGlBD,EAAA,CAAoBC,CAApB,CAAwCO,CAAxC,CACAlG,EAAAjB,aAAAe,aAAA,CAA+B6F,CAA/B,CAAmDO,CAAnD,CAAkElG,CAAlE,CA7C0D,CAZvB,CA8FvCgG,QAASA,GAAa,CAAC3/D,CAAD,CAAM,CAC1B,GAAIA,CAAJ,CACE,IAAS6E,IAAAA,CAAT,GAAiB7E,EAAjB,CACE,GAAIA,CAAAe,eAAA,CAAmB8D,CAAnB,CAAJ,CACE,MAAO,CAAA,CAIb,OAAO,CAAA,CARmB,CA9v2B5B,IAAIi7D;AAAsB,oBAA1B,CAMI/+D,GAAiBT,MAAAulB,UAAA9kB,eANrB,CAQIsE,EAAYA,QAAQ,CAAC2vD,CAAD,CAAS,CAAC,MAAO70D,EAAA,CAAS60D,CAAT,CAAA,CAAmBA,CAAA3mD,YAAA,EAAnB,CAA0C2mD,CAAlD,CARjC,CASIniD,GAAYA,QAAQ,CAACmiD,CAAD,CAAS,CAAC,MAAO70D,EAAA,CAAS60D,CAAT,CAAA,CAAmBA,CAAAn3C,YAAA,EAAnB,CAA0Cm3C,CAAlD,CATjC,CAoCI5sC,EApCJ,CAqCIhoB,CArCJ,CAsCIuO,EAtCJ,CAuCI1L,GAAoB,EAAAA,MAvCxB,CAwCIyC,GAAoB,EAAAA,OAxCxB,CAyCIK,GAAoB,EAAAA,KAzCxB,CA0CI9B,GAAoB3D,MAAAulB,UAAA5hB,SA1CxB,CA2CIG,GAAoB9D,MAAA8D,eA3CxB,CA4CI+B,GAAoBrG,CAAA,CAAO,IAAP,CA5CxB,CA+CIuN,GAAoBxN,CAAAwN,QAApBA,GAAuCxN,CAAAwN,QAAvCA,CAAwD,EAAxDA,CA/CJ,CAgDI2F,EAhDJ,CAiDIrR,GAAoB,CAMxBymB,GAAA,CAAOvoB,CAAAyI,SAAAy3D,aAwQPp8D,EAAAukB,QAAA,CAAe,EAgCftkB,GAAAskB,QAAA,CAAmB,EAsInB,KAAIhoB,EAAUM,KAAAN,QAAd,CAuEIwE,GAAqB,yFAvEzB,CAiFIgb,EAAOA,QAAQ,CAACje,CAAD,CAAQ,CACzB,MAAOtB,EAAA,CAASsB,CAAT,CAAA,CAAkBA,CAAAie,KAAA,EAAlB,CAAiCje,CADf,CAjF3B,CAwFI2nD;AAAkBA,QAAQ,CAACuM,CAAD,CAAI,CAChC,MAAOA,EAAA1sD,QAAA,CAAU,+BAAV,CAA2C,MAA3C,CAAAA,QAAA,CACU,OADV,CACmB,OADnB,CADyB,CAxFlC,CA0bI8J,GAAMA,QAAQ,EAAG,CACnB,GAAK,CAAA5O,CAAA,CAAU4O,EAAAitD,MAAV,CAAL,CAA2B,CAGzB,IAAIC,EAAgBpgE,CAAAyI,SAAA2D,cAAA,CAA8B,UAA9B,CAAhBg0D,EACYpgE,CAAAyI,SAAA2D,cAAA,CAA8B,eAA9B,CAEhB,IAAIg0D,CAAJ,CAAkB,CAChB,IAAIC,EAAiBD,CAAA10D,aAAA,CAA0B,QAA1B,CAAjB20D,EACUD,CAAA10D,aAAA,CAA0B,aAA1B,CACdwH,GAAAitD,MAAA,CAAY,CACV3f,aAAc,CAAC6f,CAAf7f,EAAgF,EAAhFA,GAAkC6f,CAAAz6D,QAAA,CAAuB,gBAAvB,CADxB,CAEV06D,cAAe,CAACD,CAAhBC,EAAkF,EAAlFA,GAAmCD,CAAAz6D,QAAA,CAAuB,iBAAvB,CAFzB,CAHI,CAAlB,IAOO,CACLsN,CAAAA,CAAAA,EAUF,IAAI,CAEF,IAAI6S,QAAJ,CAAa,EAAb,CAEA,CAAA,CAAA,CAAO,CAAA,CAJL,CAKF,MAAO5b,CAAP,CAAU,CACV,CAAA,CAAO,CAAA,CADG,CAfV+I,CAAAitD,MAAA,CAAY,CACV3f,aAAc,CADJ,CAEV8f,cAAe,CAAA,CAFL,CADP,CAbkB,CAqB3B,MAAOptD,GAAAitD,MAtBY,CA1brB;AAogBItxD,GAAKA,QAAQ,EAAG,CAClB,GAAIvK,CAAA,CAAUuK,EAAA0xD,MAAV,CAAJ,CAAyB,MAAO1xD,GAAA0xD,MAChC,KAAIC,CAAJ,CACI/+D,CADJ,CACOY,EAAKoJ,EAAAjL,OADZ,CACmCwL,CADnC,CAC2CC,CAC3C,KAAKxK,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBY,CAAhB,CAAoB,EAAEZ,CAAtB,CAEE,GADAuK,CACI,CADKP,EAAA,CAAehK,CAAf,CACL,CAAA++D,CAAA,CAAKxgE,CAAAyI,SAAA2D,cAAA,CAA8B,GAA9B,CAAoCJ,CAAA5C,QAAA,CAAe,GAAf,CAAoB,KAApB,CAApC,CAAiE,KAAjE,CAAT,CAAkF,CAChF6C,CAAA,CAAOu0D,CAAA90D,aAAA,CAAgBM,CAAhB,CAAyB,IAAzB,CACP,MAFgF,CAMpF,MAAQ6C,GAAA0xD,MAAR,CAAmBt0D,CAZD,CApgBpB,CAqpBI5C,GAAa,IArpBjB,CA+yBIoC,GAAiB,CAAC,KAAD,CAAQ,UAAR,CAAoB,KAApB,CAA2B,OAA3B,CA/yBrB,CA8nCI4C,GAAoB,QA9nCxB,CAsoCIM,GAAkB,CAAA,CAtoCtB,CA6xCInE,GAAiB,CA7xCrB,CAmzDIuI,GAAU,CACZ0tD,KAAM,OADM,CAEZC,MAAO,CAFK,CAGZC,MAAO,CAHK,CAIZC,IAAK,CAJO,CAKZC,SAAU,0BALE,CA6QdjxD,EAAAkxD,QAAA,CAAiB,OAxtFC,KA0tFd1/C,GAAUxR,CAAAgY,MAAVxG,CAAyB,EA1tFX,CA2tFdE,GAAO,CAWX1R,EAAAH,MAAA,CAAesxD,QAAQ,CAACh8D,CAAD,CAAO,CAE5B,MAAO,KAAA6iB,MAAA,CAAW7iB,CAAA,CAAK,IAAA+7D,QAAL,CAAX,CAAP,EAAyC,EAFb,CAQ9B,KAAIjjD,GAAuB,iBAA3B,CACII,GAAkB,aADtB,CAEIgD,GAAiB,CAAE+/C,WAAY,UAAd;AAA0BC,WAAY,WAAtC,CAFrB,CAGInhD,GAAe7f,CAAA,CAAO,QAAP,CAHnB,CAkBI+f,GAAoB,+BAlBxB,CAmBIvB,GAAc,WAnBlB,CAoBIG,GAAkB,YApBtB,CAqBIM,GAAmB,0EArBvB,CAuBIH,GAAU,CACZ,OAAU,CAAC,CAAD,CAAI,8BAAJ,CAAoC,WAApC,CADE,CAGZ,MAAS,CAAC,CAAD,CAAI,SAAJ,CAAe,UAAf,CAHG,CAIZ,IAAO,CAAC,CAAD,CAAI,mBAAJ,CAAyB,qBAAzB,CAJK,CAKZ,GAAM,CAAC,CAAD,CAAI,gBAAJ,CAAsB,kBAAtB,CALM,CAMZ,GAAM,CAAC,CAAD,CAAI,oBAAJ,CAA0B,uBAA1B,CANM,CAOZ,SAAY,CAAC,CAAD,CAAI,EAAJ,CAAQ,EAAR,CAPA,CAUdA,GAAAmiD,SAAA,CAAmBniD,EAAA1K,OACnB0K,GAAAoiD,MAAA,CAAgBpiD,EAAAqiD,MAAhB,CAAgCriD,EAAAsiD,SAAhC,CAAmDtiD,EAAAuiD,QAAnD,CAAqEviD,EAAAwiD,MACrExiD;EAAAyiD,GAAA,CAAaziD,EAAA0iD,GA2Fb,KAAI18C,GAAiB/kB,CAAA0hE,KAAA17C,UAAA27C,SAAjB58C,EAAmD,QAAQ,CAACjV,CAAD,CAAM,CAEnE,MAAO,CAAG,EAAA,IAAA8xD,wBAAA,CAA6B9xD,CAA7B,CAAA,CAAoC,EAApC,CAFyD,CAArE,CAqQId,GAAkBY,CAAAoW,UAAlBhX,CAAqC,CACvC6yD,MAAOA,QAAQ,CAAC15D,CAAD,CAAK,CAGlB25D,QAASA,EAAO,EAAG,CACbC,CAAJ,GACAA,CACA,CADQ,CAAA,CACR,CAAA55D,CAAA,EAFA,CADiB,CAFnB,IAAI45D,EAAQ,CAAA,CASuB,WAAnC,GAAI/hE,CAAAyI,SAAAya,WAAJ,CACEljB,CAAAmjB,WAAA,CAAkB2+C,CAAlB,CADF,EAGE,IAAA/yD,GAAA,CAAQ,kBAAR,CAA4B+yD,CAA5B,CAGA,CAAAlyD,CAAA,CAAO5P,CAAP,CAAA+O,GAAA,CAAkB,MAAlB,CAA0B+yD,CAA1B,CANF,CAVkB,CADmB,CAqBvC19D,SAAUA,QAAQ,EAAG,CACnB,IAAIxC,EAAQ,EACZf,EAAA,CAAQ,IAAR,CAAc,QAAQ,CAACsJ,CAAD,CAAI,CAAEvI,CAAAsE,KAAA,CAAW,EAAX,CAAgBiE,CAAhB,CAAF,CAA1B,CACA,OAAO,GAAP,CAAavI,CAAAuJ,KAAA,CAAW,IAAX,CAAb,CAAgC,GAHb,CArBkB,CA2BvCw6C,GAAIA,QAAQ,CAAChgD,CAAD,CAAQ,CAChB,MAAiB,EAAV,EAACA,CAAD,CAAepF,CAAA,CAAO,IAAA,CAAKoF,CAAL,CAAP,CAAf,CAAqCpF,CAAA,CAAO,IAAA,CAAK,IAAAC,OAAL,CAAmBmF,CAAnB,CAAP,CAD5B,CA3BmB,CA+BvCnF,OAAQ,CA/B+B,CAgCvC0F,KAAMA,EAhCiC,CAiCvC1E,KAAM,EAAAA,KAjCiC,CAkCvCqE,OAAQ,EAAAA,OAlC+B,CArQzC,CA+SIyd,GAAe,EACnBziB,EAAA,CAAQ,2DAAA,MAAA,CAAA,GAAA,CAAR;AAAgF,QAAQ,CAACe,CAAD,CAAQ,CAC9F0hB,EAAA,CAAa9d,CAAA,CAAU5D,CAAV,CAAb,CAAA,CAAiCA,CAD6D,CAAhG,CAGA,KAAI2hB,GAAmB,EACvB1iB,EAAA,CAAQ,kDAAA,MAAA,CAAA,GAAA,CAAR,CAAuE,QAAQ,CAACe,CAAD,CAAQ,CACrF2hB,EAAA,CAAiB3hB,CAAjB,CAAA,CAA0B,CAAA,CAD2D,CAAvF,CAGA,KAAIwjC,GAAe,CACjB,YAAe,WADE,CAEjB,YAAe,WAFE,CAGjB,MAAS,KAHQ,CAIjB,MAAS,KAJQ,CAKjB,UAAa,SALI,CAoBnBvkC,EAAA,CAAQ,CACNwM,KAAMkU,EADA,CAENygD,WAAY3hD,EAFN,CAGNyiB,QA3ZFm/B,QAAsB,CAACl9D,CAAD,CAAO,CAC3B,IAAS/D,IAAAA,CAAT,GAAgBogB,GAAA,CAAQrc,CAAAoc,MAAR,CAAhB,CACE,MAAO,CAAA,CAET,OAAO,CAAA,CAJoB,CAwZrB,CAIN/R,UArZF8yD,QAAwB,CAACzxD,CAAD,CAAQ,CAC9B,IAD8B,IACrBhP,EAAI,CADiB,CACdY,EAAKoO,CAAAjQ,OAArB,CAAmCiB,CAAnC,CAAuCY,CAAvC,CAA2CZ,CAAA,EAA3C,CACE4e,EAAA,CAAiB5P,CAAA,CAAMhP,CAAN,CAAjB,CAF4B,CAiZxB,CAAR,CAKG,QAAQ,CAAC0G,CAAD,CAAK8D,CAAL,CAAW,CACpB2D,CAAA,CAAO3D,CAAP,CAAA,CAAe9D,CADK,CALtB,CASAtH,EAAA,CAAQ,CACNwM,KAAMkU,EADA,CAENpS,cAAemT,EAFT,CAINpV,MAAOA,QAAQ,CAAC3H,CAAD,CAAU,CAEvB,MAAOhF,EAAA8M,KAAA,CAAY9H,CAAZ,CAAqB,QAArB,CAAP,EAAyC+c,EAAA,CAAoB/c,CAAAma,WAApB,EAA0Cna,CAA1C,CAAmD,CAAC,eAAD;AAAkB,QAAlB,CAAnD,CAFlB,CAJnB,CASN0J,aAAcA,QAAQ,CAAC1J,CAAD,CAAU,CAE9B,MAAOhF,EAAA8M,KAAA,CAAY9H,CAAZ,CAAqB,eAArB,CAAP,EAAgDhF,CAAA8M,KAAA,CAAY9H,CAAZ,CAAqB,yBAArB,CAFlB,CAT1B,CAcN2J,WAAYmT,EAdN,CAgBN5V,SAAUA,QAAQ,CAAClH,CAAD,CAAU,CAC1B,MAAO+c,GAAA,CAAoB/c,CAApB,CAA6B,WAA7B,CADmB,CAhBtB,CAoBNsgC,WAAYA,QAAQ,CAACtgC,CAAD,CAAU0G,CAAV,CAAgB,CAClC1G,CAAA48D,gBAAA,CAAwBl2D,CAAxB,CADkC,CApB9B,CAwBNiZ,SAAUvD,EAxBJ,CA0BNygD,IAAKA,QAAQ,CAAC78D,CAAD,CAAU0G,CAAV,CAAgBrK,CAAhB,CAAuB,CAClCqK,CAAA,CAAO2R,EAAA,CAAU3R,CAAV,CAEP,IAAI3H,CAAA,CAAU1C,CAAV,CAAJ,CACE2D,CAAA4O,MAAA,CAAclI,CAAd,CAAA,CAAsBrK,CADxB,KAGE,OAAO2D,EAAA4O,MAAA,CAAclI,CAAd,CANyB,CA1B9B,CAoCNhH,KAAMA,QAAQ,CAACM,CAAD,CAAU0G,CAAV,CAAgBrK,CAAhB,CAAuB,CACnC,IAAI2I,EAAWhF,CAAAgF,SACf,IAAIA,CAAJ,GAAiBC,EAAjB,EAlzCsB63D,CAkzCtB,GAAmC93D,CAAnC,EAhzCoBuuB,CAgzCpB,GAAuEvuB,CAAvE,CAIA,GADI+3D,CACA,CADiB98D,CAAA,CAAUyG,CAAV,CACjB,CAAAqX,EAAA,CAAag/C,CAAb,CAAJ,CACE,GAAIh+D,CAAA,CAAU1C,CAAV,CAAJ,CACQA,CAAN,EACE2D,CAAA,CAAQ0G,CAAR,CACA,CADgB,CAAA,CAChB,CAAA1G,CAAAwc,aAAA,CAAqB9V,CAArB,CAA2Bq2D,CAA3B,CAFF,GAIE/8D,CAAA,CAAQ0G,CAAR,CACA,CADgB,CAAA,CAChB,CAAA1G,CAAA48D,gBAAA,CAAwBG,CAAxB,CALF,CADF,KASE,OAAQ/8D,EAAA,CAAQ0G,CAAR,CAAD,EACEs2D,CAACh9D,CAAA0uB,WAAAuuC,aAAA,CAAgCv2D,CAAhC,CAADs2D,EAA0Cz+D,CAA1Cy+D,WADF;AAEED,CAFF,CAGE77D,IAAAA,EAbb,KAeO,IAAInC,CAAA,CAAU1C,CAAV,CAAJ,CACL2D,CAAAwc,aAAA,CAAqB9V,CAArB,CAA2BrK,CAA3B,CADK,KAEA,IAAI2D,CAAAmG,aAAJ,CAKL,MAFI+2D,EAEG,CAFGl9D,CAAAmG,aAAA,CAAqBO,CAArB,CAA2B,CAA3B,CAEH,CAAQ,IAAR,GAAAw2D,CAAA,CAAeh8D,IAAAA,EAAf,CAA2Bg8D,CA5BD,CApC/B,CAoENz9D,KAAMA,QAAQ,CAACO,CAAD,CAAU0G,CAAV,CAAgBrK,CAAhB,CAAuB,CACnC,GAAI0C,CAAA,CAAU1C,CAAV,CAAJ,CACE2D,CAAA,CAAQ0G,CAAR,CAAA,CAAgBrK,CADlB,KAGE,OAAO2D,EAAA,CAAQ0G,CAAR,CAJ0B,CApE/B,CA4ENg1B,KAAO,QAAQ,EAAG,CAIhByhC,QAASA,EAAO,CAACn9D,CAAD,CAAU3D,CAAV,CAAiB,CAC/B,GAAIyC,CAAA,CAAYzC,CAAZ,CAAJ,CAAwB,CACtB,IAAI2I,EAAWhF,CAAAgF,SACf,OAh2CgB4T,EAg2CT,GAAC5T,CAAD,EAAmCA,CAAnC,GAAgDC,EAAhD,CAAkEjF,CAAA+Z,YAAlE,CAAwF,EAFzE,CAIxB/Z,CAAA+Z,YAAA,CAAsB1d,CALS,CAHjC8gE,CAAAC,IAAA,CAAc,EACd,OAAOD,EAFS,CAAZ,EA5EA,CAyFNl6D,IAAKA,QAAQ,CAACjD,CAAD,CAAU3D,CAAV,CAAiB,CAC5B,GAAIyC,CAAA,CAAYzC,CAAZ,CAAJ,CAAwB,CACtB,GAAI2D,CAAAq9D,SAAJ,EAA+C,QAA/C,GAAwBt9D,EAAA,CAAUC,CAAV,CAAxB,CAAyD,CACvD,IAAIyhB,EAAS,EACbnmB,EAAA,CAAQ0E,CAAA4lB,QAAR,CAAyB,QAAQ,CAAC9W,CAAD,CAAS,CACpCA,CAAAwuD,SAAJ,EACE77C,CAAA9gB,KAAA,CAAYmO,CAAAzS,MAAZ,EAA4ByS,CAAA4sB,KAA5B,CAFsC,CAA1C,CAKA,OAAyB,EAAlB,GAAAja,CAAAxmB,OAAA,CAAsB,IAAtB,CAA6BwmB,CAPmB,CASzD,MAAOzhB,EAAA3D,MAVe,CAYxB2D,CAAA3D,MAAA,CAAgBA,CAbY,CAzFxB,CAyGN0I,KAAMA,QAAQ,CAAC/E,CAAD,CAAU3D,CAAV,CAAiB,CAC7B,GAAIyC,CAAA,CAAYzC,CAAZ,CAAJ,CACE,MAAO2D,EAAA0Z,UAETkB;EAAA,CAAa5a,CAAb,CAAsB,CAAA,CAAtB,CACAA,EAAA0Z,UAAA,CAAoBrd,CALS,CAzGzB,CAiHNsI,MAAOyY,EAjHD,CAAR,CAkHG,QAAQ,CAACxa,CAAD,CAAK8D,CAAL,CAAW,CAIpB2D,CAAAoW,UAAA,CAAiB/Z,CAAjB,CAAA,CAAyB,QAAQ,CAACmtC,CAAD,CAAOC,CAAP,CAAa,CAAA,IACxC53C,CADwC,CACrCT,CADqC,CAExC8hE,EAAY,IAAAtiE,OAKhB,IAAI2H,CAAJ,GAAWwa,EAAX,EACKte,CAAA,CAA0B,CAAd,EAAC8D,CAAA3H,OAAD,EAAoB2H,CAApB,GAA2BwZ,EAA3B,EAA6CxZ,CAA7C,GAAoDka,EAApD,CAAyE+2B,CAAzE,CAAgFC,CAA5F,CADL,CACyG,CACvG,GAAI/2C,CAAA,CAAS82C,CAAT,CAAJ,CAAoB,CAGlB,IAAK33C,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBqhE,CAAhB,CAA2BrhE,CAAA,EAA3B,CACE,GAAI0G,CAAJ,GAAWoZ,EAAX,CAEEpZ,CAAA,CAAG,IAAA,CAAK1G,CAAL,CAAH,CAAY23C,CAAZ,CAFF,KAIE,KAAKp4C,CAAL,GAAYo4C,EAAZ,CACEjxC,CAAA,CAAG,IAAA,CAAK1G,CAAL,CAAH,CAAYT,CAAZ,CAAiBo4C,CAAA,CAAKp4C,CAAL,CAAjB,CAKN,OAAO,KAdW,CAkBdY,CAAAA,CAAQuG,CAAAw6D,IAERngE,EAAAA,CAAM6B,CAAA,CAAYzC,CAAZ,CAAD,CAAuBi9B,IAAAyzB,IAAA,CAASwQ,CAAT,CAAoB,CAApB,CAAvB,CAAgDA,CACzD,KAASvgE,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBC,CAApB,CAAwBD,CAAA,EAAxB,CAA6B,CAC3B,IAAIuyB,EAAY3sB,CAAA,CAAG,IAAA,CAAK5F,CAAL,CAAH,CAAY62C,CAAZ,CAAkBC,CAAlB,CAChBz3C,EAAA,CAAQA,CAAA,CAAQA,CAAR,CAAgBkzB,CAAhB,CAA4BA,CAFT,CAI7B,MAAOlzB,EA1B8F,CA8BvG,IAAKH,CAAL,CAAS,CAAT,CAAYA,CAAZ,CAAgBqhE,CAAhB,CAA2BrhE,CAAA,EAA3B,CACE0G,CAAA,CAAG,IAAA,CAAK1G,CAAL,CAAH,CAAY23C,CAAZ,CAAkBC,CAAlB,CAGF,OAAO,KA1CmC,CAJ1B,CAlHtB,CA8OAx4C,EAAA,CAAQ,CACNmhE,WAAY3hD,EADN,CAGNtR,GAAIg0D,QAAiB,CAACx9D,CAAD,CAAU6B,CAAV,CAAgBe,CAAhB,CAAoBuY,CAApB,CAAiC,CACpD,GAAIpc,CAAA,CAAUoc,CAAV,CAAJ,CAA4B,KAAMZ,GAAA,CAAa,QAAb,CAAN,CAG5B,GAAK5B,EAAA,CAAkB3Y,CAAlB,CAAL,CAAA,CAIIob,CAAAA,CAAeC,EAAA,CAAmBrb,CAAnB,CAA4B,CAAA,CAA5B,CACnB,KAAIgK,EAASoR,CAAApR,OAAb,CACIsR,EAASF,CAAAE,OAERA,EAAL,GACEA,CADF,CACWF,CAAAE,OADX;AACiC2C,EAAA,CAAmBje,CAAnB,CAA4BgK,CAA5B,CADjC,CAKIyzD,EAAAA,CAA6B,CAArB,EAAA57D,CAAAxB,QAAA,CAAa,GAAb,CAAA,CAAyBwB,CAAA/B,MAAA,CAAW,GAAX,CAAzB,CAA2C,CAAC+B,CAAD,CAiBvD,KAhBA,IAAI3F,EAAIuhE,CAAAxiE,OAAR,CAEIyiE,EAAaA,QAAQ,CAAC77D,CAAD,CAAOod,CAAP,CAA8B0+C,CAA9B,CAA+C,CACtE,IAAIp/C,EAAWvU,CAAA,CAAOnI,CAAP,CAEV0c,EAAL,GACEA,CAEA,CAFWvU,CAAA,CAAOnI,CAAP,CAEX,CAF0B,EAE1B,CADA0c,CAAAU,sBACA,CADiCA,CACjC,CAAa,UAAb,GAAIpd,CAAJ,EAA4B87D,CAA5B,EACqB39D,CA/uBvB4pC,iBAAA,CA+uBgC/nC,CA/uBhC,CA+uBsCyZ,CA/uBtC,CAAmC,CAAA,CAAnC,CA2uBA,CAQAiD,EAAA5d,KAAA,CAAciC,CAAd,CAXsE,CAcxE,CAAO1G,CAAA,EAAP,CAAA,CACE2F,CACA,CADO47D,CAAA,CAAMvhE,CAAN,CACP,CAAIwf,EAAA,CAAgB7Z,CAAhB,CAAJ,EACE67D,CAAA,CAAWhiD,EAAA,CAAgB7Z,CAAhB,CAAX,CAAkCud,EAAlC,CACA,CAAAs+C,CAAA,CAAW77D,CAAX,CAAiBX,IAAAA,EAAjB,CAA4B,CAAA,CAA5B,CAFF,EAIEw8D,CAAA,CAAW77D,CAAX,CApCJ,CAJoD,CAHhD,CAgDN0mB,IAAKrN,EAhDC,CAkDN0iD,IAAKA,QAAQ,CAAC59D,CAAD,CAAU6B,CAAV,CAAgBe,CAAhB,CAAoB,CAC/B5C,CAAA,CAAUhF,CAAA,CAAOgF,CAAP,CAKVA,EAAAwJ,GAAA,CAAW3H,CAAX,CAAiBg8D,QAASA,EAAI,EAAG,CAC/B79D,CAAAuoB,IAAA,CAAY1mB,CAAZ,CAAkBe,CAAlB,CACA5C,EAAAuoB,IAAA,CAAY1mB,CAAZ,CAAkBg8D,CAAlB,CAF+B,CAAjC,CAIA79D,EAAAwJ,GAAA,CAAW3H,CAAX,CAAiBe,CAAjB,CAV+B,CAlD3B,CA+DNu1B,YAAaA,QAAQ,CAACn4B,CAAD,CAAU89D,CAAV,CAAuB,CAAA,IACtC19D,CADsC,CAC/BhC,EAAS4B,CAAAma,WACpBS,GAAA,CAAa5a,CAAb,CACA1E,EAAA,CAAQ,IAAI+O,CAAJ,CAAWyzD,CAAX,CAAR,CAAiC,QAAQ,CAACt+D,CAAD,CAAO,CAC1CY,CAAJ,CACEhC,CAAA2/D,aAAA,CAAoBv+D,CAApB,CAA0BY,CAAAiL,YAA1B,CADF,CAGEjN,CAAAgc,aAAA,CAAoB5a,CAApB,CAA0BQ,CAA1B,CAEFI,EAAA,CAAQZ,CANsC,CAAhD,CAH0C,CA/DtC,CA4EN60C,SAAUA,QAAQ,CAACr0C,CAAD,CAAU,CAC1B,IAAIq0C,EAAW,EACf/4C;CAAA,CAAQ0E,CAAA6Z,WAAR,CAA4B,QAAQ,CAAC7Z,CAAD,CAAU,CAzkD1B4Y,CA0kDlB,GAAI5Y,CAAAgF,SAAJ,EACEqvC,CAAA1zC,KAAA,CAAcX,CAAd,CAF0C,CAA9C,CAKA,OAAOq0C,EAPmB,CA5EtB,CAsFN9b,SAAUA,QAAQ,CAACv4B,CAAD,CAAU,CAC1B,MAAOA,EAAAg+D,gBAAP,EAAkCh+D,CAAA6Z,WAAlC,EAAwD,EAD9B,CAtFtB,CA0FN/U,OAAQA,QAAQ,CAAC9E,CAAD,CAAUR,CAAV,CAAgB,CAC9B,IAAIwF,EAAWhF,CAAAgF,SACf,IAvlDoB4T,CAulDpB,GAAI5T,CAAJ,EAllD8BkY,EAklD9B,GAAsClY,CAAtC,CAAA,CAEAxF,CAAA,CAAO,IAAI6K,CAAJ,CAAW7K,CAAX,CAEP,KAAStD,IAAAA,EAAI,CAAJA,CAAOY,EAAK0C,CAAAvE,OAArB,CAAkCiB,CAAlC,CAAsCY,CAAtC,CAA0CZ,CAAA,EAA1C,CAEE8D,CAAAmZ,YAAA,CADY3Z,CAAAwgD,CAAK9jD,CAAL8jD,CACZ,CANF,CAF8B,CA1F1B,CAsGNie,QAASA,QAAQ,CAACj+D,CAAD,CAAUR,CAAV,CAAgB,CAC/B,GAlmDoBoZ,CAkmDpB,GAAI5Y,CAAAgF,SAAJ,CAA4C,CAC1C,IAAI5E,EAAQJ,CAAA8Z,WACZxe,EAAA,CAAQ,IAAI+O,CAAJ,CAAW7K,CAAX,CAAR,CAA0B,QAAQ,CAACwgD,CAAD,CAAQ,CACxChgD,CAAA+9D,aAAA,CAAqB/d,CAArB,CAA4B5/C,CAA5B,CADwC,CAA1C,CAF0C,CADb,CAtG3B,CA+GNmZ,KAAMA,QAAQ,CAACvZ,CAAD,CAAUk+D,CAAV,CAAoB,CAChCjkD,EAAA,CAAeja,CAAf,CAAwBhF,CAAA,CAAOkjE,CAAP,CAAA9d,GAAA,CAAoB,CAApB,CAAAziD,MAAA,EAAA,CAA+B,CAA/B,CAAxB,CADgC,CA/G5B,CAmHN2sB,OAAQhN,EAnHF,CAqHN6gD,OAAQA,QAAQ,CAACn+D,CAAD,CAAU,CACxBsd,EAAA,CAAatd,CAAb,CAAsB,CAAA,CAAtB,CADwB,CArHpB,CAyHNo+D,MAAOA,QAAQ,CAACp+D,CAAD,CAAUq+D,CAAV,CAAsB,CAAA,IAC/Bj+D,EAAQJ,CADuB,CACd5B,EAAS4B,CAAAma,WAC9BkkD,EAAA,CAAa,IAAIh0D,CAAJ,CAAWg0D,CAAX,CAEb,KAJmC,IAI1BniE;AAAI,CAJsB,CAInBY,EAAKuhE,CAAApjE,OAArB,CAAwCiB,CAAxC,CAA4CY,CAA5C,CAAgDZ,CAAA,EAAhD,CAAqD,CACnD,IAAIsD,EAAO6+D,CAAA,CAAWniE,CAAX,CACXkC,EAAA2/D,aAAA,CAAoBv+D,CAApB,CAA0BY,CAAAiL,YAA1B,CACAjL,EAAA,CAAQZ,CAH2C,CAJlB,CAzH/B,CAoINqgB,SAAUnD,EApIJ,CAqINoD,YAAaxD,EArIP,CAuINgiD,YAAaA,QAAQ,CAACt+D,CAAD,CAAUqc,CAAV,CAAoBkiD,CAApB,CAA+B,CAC9CliD,CAAJ,EACE/gB,CAAA,CAAQ+gB,CAAAvc,MAAA,CAAe,GAAf,CAAR,CAA6B,QAAQ,CAACivB,CAAD,CAAY,CAC/C,IAAIyvC,EAAiBD,CACjBz/D,EAAA,CAAY0/D,CAAZ,CAAJ,GACEA,CADF,CACmB,CAACpiD,EAAA,CAAepc,CAAf,CAAwB+uB,CAAxB,CADpB,CAGA,EAACyvC,CAAA,CAAiB9hD,EAAjB,CAAkCJ,EAAnC,EAAsDtc,CAAtD,CAA+D+uB,CAA/D,CAL+C,CAAjD,CAFgD,CAvI9C,CAmJN3wB,OAAQA,QAAQ,CAAC4B,CAAD,CAAU,CAExB,MAAO,CADH5B,CACG,CADM4B,CAAAma,WACN,GA3oDuB+C,EA2oDvB,GAAU9e,CAAA4G,SAAV,CAA4D5G,CAA5D,CAAqE,IAFpD,CAnJpB,CAwJNskD,KAAMA,QAAQ,CAAC1iD,CAAD,CAAU,CACtB,MAAOA,EAAAy+D,mBADe,CAxJlB,CA4JN9+D,KAAMA,QAAQ,CAACK,CAAD,CAAUqc,CAAV,CAAoB,CAChC,MAAIrc,EAAA0+D,qBAAJ,CACS1+D,CAAA0+D,qBAAA,CAA6BriD,CAA7B,CADT,CAGS,EAJuB,CA5J5B,CAoKN1e,MAAOgd,EApKD,CAsKNvQ,eAAgBA,QAAQ,CAACpK,CAAD,CAAUme,CAAV,CAAiBwgD,CAAjB,CAAkC,CAAA,IAEpDC,CAFoD,CAE1BC,CAF0B,CAGpDhc,EAAY1kC,CAAAtc,KAAZghD,EAA0B1kC,CAH0B,CAIpD/C,EAAeC,EAAA,CAAmBrb,CAAnB,CAInB,IAFIue,CAEJ,EAHIvU,CAGJ,CAHaoR,CAGb,EAH6BA,CAAApR,OAG7B,GAFyBA,CAAA,CAAO64C,CAAP,CAEzB,CAEE+b,CAmBA,CAnBa,CACXpsB,eAAgBA,QAAQ,EAAG,CAAE,IAAAl0B,iBAAA;AAAwB,CAAA,CAA1B,CADhB,CAEXF,mBAAoBA,QAAQ,EAAG,CAAE,MAAiC,CAAA,CAAjC,GAAO,IAAAE,iBAAT,CAFpB,CAGXK,yBAA0BA,QAAQ,EAAG,CAAE,IAAAF,4BAAA,CAAmC,CAAA,CAArC,CAH1B,CAIXK,8BAA+BA,QAAQ,EAAG,CAAE,MAA4C,CAAA,CAA5C,GAAO,IAAAL,4BAAT,CAJ/B,CAKXI,gBAAiBtgB,CALN,CAMXsD,KAAMghD,CANK,CAOXxjC,OAAQrf,CAPG,CAmBb,CARIme,CAAAtc,KAQJ,GAPE+8D,CAOF,CAPehhE,CAAA,CAAOghE,CAAP,CAAmBzgD,CAAnB,CAOf,EAHA2gD,CAGA,CAHexxD,EAAA,CAAYiR,CAAZ,CAGf,CAFAsgD,CAEA,CAFcF,CAAA,CAAkB,CAACC,CAAD,CAAAr8D,OAAA,CAAoBo8D,CAApB,CAAlB,CAAyD,CAACC,CAAD,CAEvE,CAAAtjE,CAAA,CAAQwjE,CAAR,CAAsB,QAAQ,CAACl8D,CAAD,CAAK,CAC5Bg8D,CAAA9/C,8BAAA,EAAL,EACElc,CAAAG,MAAA,CAAS/C,CAAT,CAAkB6+D,CAAlB,CAF+B,CAAnC,CA7BsD,CAtKpD,CAAR,CA0MG,QAAQ,CAACj8D,CAAD,CAAK8D,CAAL,CAAW,CAIpB2D,CAAAoW,UAAA,CAAiB/Z,CAAjB,CAAA,CAAyB,QAAQ,CAACmtC,CAAD,CAAOC,CAAP,CAAairB,CAAb,CAAmB,CAGlD,IAFA,IAAI1iE,CAAJ,CAESH,EAAI,CAFb,CAEgBY,EAAK,IAAA7B,OAArB,CAAkCiB,CAAlC,CAAsCY,CAAtC,CAA0CZ,CAAA,EAA1C,CACM4C,CAAA,CAAYzC,CAAZ,CAAJ,EACEA,CACA,CADQuG,CAAA,CAAG,IAAA,CAAK1G,CAAL,CAAH,CAAY23C,CAAZ,CAAkBC,CAAlB,CAAwBirB,CAAxB,CACR,CAAIhgE,CAAA,CAAU1C,CAAV,CAAJ,GAEEA,CAFF,CAEUrB,CAAA,CAAOqB,CAAP,CAFV,CAFF;AAOEqe,EAAA,CAAere,CAAf,CAAsBuG,CAAA,CAAG,IAAA,CAAK1G,CAAL,CAAH,CAAY23C,CAAZ,CAAkBC,CAAlB,CAAwBirB,CAAxB,CAAtB,CAGJ,OAAOhgE,EAAA,CAAU1C,CAAV,CAAA,CAAmBA,CAAnB,CAA2B,IAdgB,CAkBpDgO,EAAAoW,UAAA/d,KAAA,CAAwB2H,CAAAoW,UAAAjX,GACxBa,EAAAoW,UAAAu+C,OAAA,CAA0B30D,CAAAoW,UAAA8H,IAvBN,CA1MtB,CAqSArI,GAAAO,UAAA,CAAoB,CAMlBJ,IAAKA,QAAQ,CAAC5kB,CAAD,CAAMY,CAAN,CAAa,CACxB,IAAA,CAAK0jB,EAAA,CAAQtkB,CAAR,CAAa,IAAAa,QAAb,CAAL,CAAA,CAAmCD,CADX,CANR,CAclBsM,IAAKA,QAAQ,CAAClN,CAAD,CAAM,CACjB,MAAO,KAAA,CAAKskB,EAAA,CAAQtkB,CAAR,CAAa,IAAAa,QAAb,CAAL,CADU,CAdD,CAsBlBguB,OAAQA,QAAQ,CAAC7uB,CAAD,CAAM,CACpB,IAAIY,EAAQ,IAAA,CAAKZ,CAAL,CAAWskB,EAAA,CAAQtkB,CAAR,CAAa,IAAAa,QAAb,CAAX,CACZ,QAAO,IAAA,CAAKb,CAAL,CACP,OAAOY,EAHa,CAtBJ,CA6BpB,KAAI6b,GAAoB,CAAC,QAAQ,EAAG,CAClC,IAAAuH,KAAA,CAAY,CAAC,QAAQ,EAAG,CACtB,MAAOS,GADe,CAAZ,CADsB,CAAZ,CAAxB,CAqEIS,GAAY,cArEhB,CAsEIC,GAAU,yBAtEd,CAuEIq+C,GAAe,GAvEnB,CAwEIC,GAAS,sBAxEb,CAyEIx+C,GAAiB,kCAzErB,CA0EIjV,GAAkB/Q,CAAA,CAAO,WAAP,CAo0BtB8M,GAAAub,WAAA;AA1yBAI,QAAiB,CAACvgB,CAAD,CAAKkE,CAAL,CAAeJ,CAAf,CAAqB,CAAA,IAChCoc,CAIJ,IAAkB,UAAlB,GAAI,MAAOlgB,EAAX,CACE,IAAM,EAAAkgB,CAAA,CAAUlgB,CAAAkgB,QAAV,CAAN,CAA6B,CAC3BA,CAAA,CAAU,EACV,IAAIlgB,CAAA3H,OAAJ,CAAe,CACb,GAAI6L,CAAJ,CAIE,KAHK/L,EAAA,CAAS2L,CAAT,CAGC,EAHkBA,CAGlB,GAFJA,CAEI,CAFG9D,CAAA8D,KAEH,EAFcma,EAAA,CAAOje,CAAP,CAEd,EAAA6I,EAAA,CAAgB,UAAhB,CACyE/E,CADzE,CAAN,CAGFy4D,CAAA,CAAU7+C,EAAA,CAAY1d,CAAZ,CACVtH,EAAA,CAAQ6jE,CAAA,CAAQ,CAAR,CAAAr/D,MAAA,CAAiBm/D,EAAjB,CAAR,CAAwC,QAAQ,CAAC10D,CAAD,CAAM,CACpDA,CAAA1G,QAAA,CAAYq7D,EAAZ,CAAoB,QAAQ,CAAC9hB,CAAD,CAAMgiB,CAAN,CAAkB14D,CAAlB,CAAwB,CAClDoc,CAAAniB,KAAA,CAAa+F,CAAb,CADkD,CAApD,CADoD,CAAtD,CATa,CAef9D,CAAAkgB,QAAA,CAAaA,CAjBc,CAA7B,CADF,IAoBWhoB,EAAA,CAAQ8H,CAAR,CAAJ,EACLu9C,CAEA,CAFOv9C,CAAA3H,OAEP,CAFmB,CAEnB,CADAwP,EAAA,CAAY7H,CAAA,CAAGu9C,CAAH,CAAZ,CAAsB,IAAtB,CACA,CAAAr9B,CAAA,CAAUlgB,CAAA/E,MAAA,CAAS,CAAT,CAAYsiD,CAAZ,CAHL,EAKL11C,EAAA,CAAY7H,CAAZ,CAAgB,IAAhB,CAAsB,CAAA,CAAtB,CAEF,OAAOkgB,EAhC6B,CA2jCtC,KAAIu8C,GAAiB3kE,CAAA,CAAO,UAAP,CAArB,CAqDIoZ,GAA0BA,QAAQ,EAAG,CACvC,IAAA2L,KAAA,CAAYlhB,CAD2B,CArDzC,CA2DIyV,GAA6BA,QAAQ,EAAG,CAC1C,IAAI4uC,EAAkB,IAAI1iC,EAA1B,CACIo/C,EAAqB,EAEzB,KAAA7/C,KAAA,CAAY,CAAC,iBAAD,CAAoB,YAApB,CACP,QAAQ,CAACxL,CAAD,CAAoBsC,CAApB,CAAgC,CA4B3CgpD,QAASA,EAAU,CAACz3D,CAAD,CAAO8X,CAAP,CAAgBvjB,CAAhB,CAAuB,CACxC,IAAIi+C,EAAU,CAAA,CACV16B,EAAJ,GACEA,CAEA,CAFU7kB,CAAA,CAAS6kB,CAAT,CAAA,CAAoBA,CAAA9f,MAAA,CAAc,GAAd,CAApB,CACAhF,CAAA,CAAQ8kB,CAAR,CAAA;AAAmBA,CAAnB,CAA6B,EACvC,CAAAtkB,CAAA,CAAQskB,CAAR,CAAiB,QAAQ,CAACmP,CAAD,CAAY,CAC/BA,CAAJ,GACEurB,CACA,CADU,CAAA,CACV,CAAAxyC,CAAA,CAAKinB,CAAL,CAAA,CAAkB1yB,CAFpB,CADmC,CAArC,CAHF,CAUA,OAAOi+C,EAZiC,CAe1CklB,QAASA,EAAqB,EAAG,CAC/BlkE,CAAA,CAAQgkE,CAAR,CAA4B,QAAQ,CAACt/D,CAAD,CAAU,CAC5C,IAAI8H,EAAO86C,CAAAj6C,IAAA,CAAoB3I,CAApB,CACX,IAAI8H,CAAJ,CAAU,CACR,IAAI23D,EAAWh6C,EAAA,CAAazlB,CAAAN,KAAA,CAAa,OAAb,CAAb,CAAf,CACI6/B,EAAQ,EADZ,CAEIE,EAAW,EACfnkC,EAAA,CAAQwM,CAAR,CAAc,QAAQ,CAACm8B,CAAD,CAASlV,CAAT,CAAoB,CAEpCkV,CAAJ,GADetkB,CAAE,CAAA8/C,CAAA,CAAS1wC,CAAT,CACjB,GACMkV,CAAJ,CACE1E,CADF,GACYA,CAAAtkC,OAAA,CAAe,GAAf,CAAqB,EADjC,EACuC8zB,CADvC,CAGE0Q,CAHF,GAGeA,CAAAxkC,OAAA,CAAkB,GAAlB,CAAwB,EAHvC,EAG6C8zB,CAJ/C,CAFwC,CAA1C,CAWAzzB,EAAA,CAAQ0E,CAAR,CAAiB,QAAQ,CAACglB,CAAD,CAAM,CAC7Bua,CAAA,EAAY7iB,EAAA,CAAesI,CAAf,CAAoBua,CAApB,CACZE,EAAA,EAAYnjB,EAAA,CAAkB0I,CAAlB,CAAuBya,CAAvB,CAFiB,CAA/B,CAIAmjB,EAAAt4B,OAAA,CAAuBtqB,CAAvB,CAnBQ,CAFkC,CAA9C,CAwBAs/D,EAAArkE,OAAA,CAA4B,CAzBG,CA1CjC,MAAO,CACL4yB,QAAStvB,CADJ,CAELiL,GAAIjL,CAFC,CAGLgqB,IAAKhqB,CAHA,CAILmhE,IAAKnhE,CAJA,CAMLoC,KAAMA,QAAQ,CAACX,CAAD,CAAUme,CAAV,CAAiByH,CAAjB,CAA0B+5C,CAA1B,CAAwC,CACpDA,CAAA,EAAuBA,CAAA,EAEvB/5C,EAAA,CAAUA,CAAV,EAAqB,EACrBA,EAAAg6C,KAAA,EAAuB5/D,CAAA68D,IAAA,CAAYj3C,CAAAg6C,KAAZ,CACvBh6C,EAAAi6C,GAAA,EAAuB7/D,CAAA68D,IAAA,CAAYj3C,CAAAi6C,GAAZ,CAEvB,IAAIj6C,CAAA/F,SAAJ,EAAwB+F,CAAA9F,YAAxB,CAgEF,GA/DwCD,CA+DpC,CA/DoC+F,CAAA/F,SA+DpC,CA/DsDC,CA+DtD,CA/DsD8F,CAAA9F,YA+DtD,CALAhY,CAKA,CALO86C,CAAAj6C,IAAA,CA1DoB3I,CA0DpB,CAKP,EALuC,EAKvC,CAHA8/D,CAGA,CAHeP,CAAA,CAAWz3D,CAAX,CAAiBi4D,CAAjB,CAAsB,CAAA,CAAtB,CAGf,CAFAC,CAEA,CAFiBT,CAAA,CAAWz3D,CAAX,CAAiBwiB,CAAjB,CAAyB,CAAA,CAAzB,CAEjB,CAAAw1C,CAAA,EAAgBE,CAApB,CAEEpd,CAAAviC,IAAA,CAjE6BrgB,CAiE7B;AAA6B8H,CAA7B,CAGA,CAFAw3D,CAAA3+D,KAAA,CAlE6BX,CAkE7B,CAEA,CAAkC,CAAlC,GAAIs/D,CAAArkE,OAAJ,EACEsb,CAAAqnB,aAAA,CAAwB4hC,CAAxB,CAlEES,EAAAA,CAAS,IAAIhsD,CAIjBgsD,EAAAC,SAAA,EACA,OAAOD,EAhB6C,CANjD,CADoC,CADjC,CAJ8B,CA3D5C,CAuKIvsD,GAAmB,CAAC,UAAD,CAAa,QAAQ,CAACrM,CAAD,CAAW,CACrD,IAAIyE,EAAW,IAEf,KAAAq0D,uBAAA,CAA8BjlE,MAAAoD,OAAA,CAAc,IAAd,CAyC9B,KAAAujC,SAAA,CAAgBC,QAAQ,CAACp7B,CAAD,CAAO8E,CAAP,CAAgB,CACtC,GAAI9E,CAAJ,EAA+B,GAA/B,GAAYA,CAAApE,OAAA,CAAY,CAAZ,CAAZ,CACE,KAAM+8D,GAAA,CAAe,SAAf,CAAmF34D,CAAnF,CAAN,CAGF,IAAIjL,EAAMiL,CAANjL,CAAa,YACjBqQ,EAAAq0D,uBAAA,CAAgCz5D,CAAAshB,OAAA,CAAY,CAAZ,CAAhC,CAAA,CAAkDvsB,CAClD4L,EAAAmE,QAAA,CAAiB/P,CAAjB,CAAsB+P,CAAtB,CAPsC,CAwBxC,KAAA40D,gBAAA,CAAuBC,QAAQ,CAACn+B,CAAD,CAAa,CAC1C,GAAyB,CAAzB,GAAIpkC,SAAA7C,OAAJ,GACE,IAAAqlE,kBADF,CAC4Bp+B,CAAD,WAAuB3kC,OAAvB,CAAiC2kC,CAAjC,CAA8C,IADzE,GAGwBq+B,4BAChBhhE,KAAA,CAAmB,IAAA+gE,kBAAAzhE,SAAA,EAAnB,CAJR,CAKM,KAAMwgE,GAAA,CAAe,SAAf;AA/OWmB,YA+OX,CAAN,CAKN,MAAO,KAAAF,kBAXmC,CAc5C,KAAA7gD,KAAA,CAAY,CAAC,gBAAD,CAAmB,QAAQ,CAAC1L,CAAD,CAAiB,CACtD0sD,QAASA,EAAS,CAACzgE,CAAD,CAAU0gE,CAAV,CAAyBC,CAAzB,CAAuC,CAIvD,GAAIA,CAAJ,CAAkB,CAChB,IAAIC,CAlPyB,EAAA,CAAA,CACnC,IAAS1kE,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAiPyCykE,CAjPrB1lE,OAApB,CAAoCiB,CAAA,EAApC,CAAyC,CACvC,IAAI8oB,EAgPmC27C,CAhP7B,CAAQzkE,CAAR,CACV,IAfe2kE,CAef,GAAI77C,CAAAhgB,SAAJ,CAAmC,CACjC,CAAA,CAAOggB,CAAP,OAAA,CADiC,CAFI,CADN,CAAA,CAAA,IAAA,EAAA,CAmPzB47C,CAAAA,CAAJ,EAAkBA,CAAAzmD,WAAlB,EAA2CymD,CAAAE,uBAA3C,GACEH,CADF,CACiB,IADjB,CAFgB,CAMlBA,CAAA,CAAeA,CAAAvC,MAAA,CAAmBp+D,CAAnB,CAAf,CAA6C0gE,CAAAzC,QAAA,CAAsBj+D,CAAtB,CAVU,CAgCzD,MAAO,CA8BLwJ,GAAIuK,CAAAvK,GA9BC,CA6DL+e,IAAKxU,CAAAwU,IA7DA,CA+ELm3C,IAAK3rD,CAAA2rD,IA/EA,CA8GL7xC,QAAS9Z,CAAA8Z,QA9GJ,CAwHL9E,OAAQA,QAAQ,CAACk3C,CAAD,CAAS,CACvBA,CAAA7O,IAAA,EAAc6O,CAAA7O,IAAA,EADS,CAxHpB,CAoJL2P,MAAOA,QAAQ,CAAC/gE,CAAD,CAAU5B,CAAV,CAAkBggE,CAAlB,CAAyBx4C,CAAzB,CAAkC,CAC/CxnB,CAAA,CAASA,CAAT,EAAmBpD,CAAA,CAAOoD,CAAP,CACnBggE,EAAA,CAAQA,CAAR,EAAiBpjE,CAAA,CAAOojE,CAAP,CACjBhgE,EAAA,CAASA,CAAT,EAAmBggE,CAAAhgE,OAAA,EACnBqiE,EAAA,CAAUzgE,CAAV,CAAmB5B,CAAnB,CAA2BggE,CAA3B,CACA,OAAOrqD,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,OAA7B,CAAsC2lB,EAAA,CAAsBC,CAAtB,CAAtC,CALwC,CApJ5C,CAoLLo7C,KAAMA,QAAQ,CAAChhE,CAAD,CAAU5B,CAAV,CAAkBggE,CAAlB,CAAyBx4C,CAAzB,CAAkC,CAC9CxnB,CAAA,CAASA,CAAT,EAAmBpD,CAAA,CAAOoD,CAAP,CACnBggE,EAAA,CAAQA,CAAR,EAAiBpjE,CAAA,CAAOojE,CAAP,CACjBhgE;CAAA,CAASA,CAAT,EAAmBggE,CAAAhgE,OAAA,EACnBqiE,EAAA,CAAUzgE,CAAV,CAAmB5B,CAAnB,CAA2BggE,CAA3B,CACA,OAAOrqD,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,MAA7B,CAAqC2lB,EAAA,CAAsBC,CAAtB,CAArC,CALuC,CApL3C,CA+MLq7C,MAAOA,QAAQ,CAACjhE,CAAD,CAAU4lB,CAAV,CAAmB,CAChC,MAAO7R,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,OAA7B,CAAsC2lB,EAAA,CAAsBC,CAAtB,CAAtC,CAAsE,QAAQ,EAAG,CACtF5lB,CAAAsqB,OAAA,EADsF,CAAjF,CADyB,CA/M7B,CA6OLzK,SAAUA,QAAQ,CAAC7f,CAAD,CAAU+uB,CAAV,CAAqBnJ,CAArB,CAA8B,CAC9CA,CAAA,CAAUD,EAAA,CAAsBC,CAAtB,CACVA,EAAA/F,SAAA,CAAmB0F,EAAA,CAAaK,CAAAs7C,SAAb,CAA+BnyC,CAA/B,CACnB,OAAOhb,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,UAA7B,CAAyC4lB,CAAzC,CAHuC,CA7O3C,CA2QL9F,YAAaA,QAAQ,CAAC9f,CAAD,CAAU+uB,CAAV,CAAqBnJ,CAArB,CAA8B,CACjDA,CAAA,CAAUD,EAAA,CAAsBC,CAAtB,CACVA,EAAA9F,YAAA,CAAsByF,EAAA,CAAaK,CAAA9F,YAAb,CAAkCiP,CAAlC,CACtB,OAAOhb,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,aAA7B,CAA4C4lB,CAA5C,CAH0C,CA3Q9C,CA0SLmvC,SAAUA,QAAQ,CAAC/0D,CAAD,CAAU+/D,CAAV,CAAez1C,CAAf,CAAuB1E,CAAvB,CAAgC,CAChDA,CAAA,CAAUD,EAAA,CAAsBC,CAAtB,CACVA,EAAA/F,SAAA,CAAmB0F,EAAA,CAAaK,CAAA/F,SAAb,CAA+BkgD,CAA/B,CACnBn6C,EAAA9F,YAAA,CAAsByF,EAAA,CAAaK,CAAA9F,YAAb,CAAkCwK,CAAlC,CACtB,OAAOvW,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,UAA7B,CAAyC4lB,CAAzC,CAJyC,CA1S7C,CAyVLu7C,QAASA,QAAQ,CAACnhE,CAAD,CAAU4/D,CAAV,CAAgBC,CAAhB,CAAoB9wC,CAApB,CAA+BnJ,CAA/B,CAAwC,CACvDA,CAAA,CAAUD,EAAA,CAAsBC,CAAtB,CACVA,EAAAg6C,KAAA,CAAeh6C,CAAAg6C,KAAA;AAAehiE,CAAA,CAAOgoB,CAAAg6C,KAAP,CAAqBA,CAArB,CAAf,CAA4CA,CAC3Dh6C,EAAAi6C,GAAA,CAAej6C,CAAAi6C,GAAA,CAAejiE,CAAA,CAAOgoB,CAAAi6C,GAAP,CAAmBA,CAAnB,CAAf,CAA4CA,CAG3Dj6C,EAAAw7C,YAAA,CAAsB77C,EAAA,CAAaK,CAAAw7C,YAAb,CADVryC,CACU,EADG,mBACH,CACtB,OAAOhb,EAAApT,KAAA,CAAoBX,CAApB,CAA6B,SAA7B,CAAwC4lB,CAAxC,CAPgD,CAzVpD,CAjC+C,CAA5C,CAlFyC,CAAhC,CAvKvB,CAgoBIxR,GAAmCA,QAAQ,EAAG,CAChD,IAAAqL,KAAA,CAAY,CAAC,OAAD,CAAU,QAAQ,CAAC5H,CAAD,CAAQ,CAGpCwpD,QAASA,EAAW,CAACz+D,CAAD,CAAK,CACvB0+D,CAAA3gE,KAAA,CAAeiC,CAAf,CACuB,EAAvB,CAAI0+D,CAAArmE,OAAJ,EACA4c,CAAA,CAAM,QAAQ,EAAG,CACf,IAAS,IAAA3b,EAAI,CAAb,CAAgBA,CAAhB,CAAoBolE,CAAArmE,OAApB,CAAsCiB,CAAA,EAAtC,CACEolE,CAAA,CAAUplE,CAAV,CAAA,EAEFolE,EAAA,CAAY,EAJG,CAAjB,CAHuB,CAFzB,IAAIA,EAAY,EAahB,OAAO,SAAQ,EAAG,CAChB,IAAIC,EAAS,CAAA,CACbF,EAAA,CAAY,QAAQ,EAAG,CACrBE,CAAA,CAAS,CAAA,CADY,CAAvB,CAGA,OAAO,SAAQ,CAAC/5C,CAAD,CAAW,CACxB+5C,CAAA,CAAS/5C,CAAA,EAAT,CAAsB65C,CAAA,CAAY75C,CAAZ,CADE,CALV,CAdkB,CAA1B,CADoC,CAhoBlD,CA2pBItT,GAAiCA,QAAQ,EAAG,CAC9C,IAAAuL,KAAA,CAAY,CAAC,IAAD,CAAO,UAAP,CAAmB,mBAAnB,CAAwC,WAAxC,CAAqD,UAArD,CACP,QAAQ,CAAChJ,CAAD,CAAOQ,CAAP,CAAmB9C,CAAnB,CAAwCQ,CAAxC,CAAqD8C,CAArD,CAA+D,CA0C1E+pD,QAASA,EAAa,CAACrkD,CAAD,CAAO,CAC3B,IAAAskD,QAAA,CAAatkD,CAAb,CAEA,KAAIukD,EAAUvtD,CAAA,EAKd,KAAAwtD,eAAA;AAAsB,EACtB,KAAAC,MAAA,CAAaC,QAAQ,CAACj/D,CAAD,CAAK,CACxB,IAAIk/D,EAAMntD,CAAA,CAAU,CAAV,CAINmtD,EAAJ,EAAWA,CAAAC,OAAX,CATAtqD,CAAA,CAUc7U,CAVd,CAAa,CAAb,CAAgB,CAAA,CAAhB,CASA,CAGE8+D,CAAA,CAAQ9+D,CAAR,CARsB,CAW1B,KAAAo/D,OAAA,CAAc,CApBa,CApC7BR,CAAAr7B,MAAA,CAAsB87B,QAAQ,CAAC97B,CAAD,CAAQ3e,CAAR,CAAkB,CAI9Ck7B,QAASA,EAAI,EAAG,CACd,GAAItiD,CAAJ,GAAc+lC,CAAAlrC,OAAd,CACEusB,CAAA,CAAS,CAAA,CAAT,CADF,KAKA2e,EAAA,CAAM/lC,CAAN,CAAA,CAAa,QAAQ,CAACilC,CAAD,CAAW,CACb,CAAA,CAAjB,GAAIA,CAAJ,CACE7d,CAAA,CAAS,CAAA,CAAT,CADF,EAIApnB,CAAA,EACA,CAAAsiD,CAAA,EALA,CAD8B,CAAhC,CANc,CAHhB,IAAItiD,EAAQ,CAEZsiD,EAAA,EAH8C,CAqBhD8e,EAAApkB,IAAA,CAAoB8kB,QAAQ,CAACC,CAAD,CAAU36C,CAAV,CAAoB,CAO9C46C,QAASA,EAAU,CAAC/8B,CAAD,CAAW,CAC5BpB,CAAA,CAASA,CAAT,EAAmBoB,CACf,GAAE6H,CAAN,GAAgBi1B,CAAAlnE,OAAhB,EACEusB,CAAA,CAASyc,CAAT,CAH0B,CAN9B,IAAIiJ,EAAQ,CAAZ,CACIjJ,EAAS,CAAA,CACb3oC,EAAA,CAAQ6mE,CAAR,CAAiB,QAAQ,CAAClC,CAAD,CAAS,CAChCA,CAAAt4B,KAAA,CAAYy6B,CAAZ,CADgC,CAAlC,CAH8C,CAsChDZ,EAAA/gD,UAAA,CAA0B,CACxBghD,QAASA,QAAQ,CAACtkD,CAAD,CAAO,CACtB,IAAAA,KAAA,CAAYA,CAAZ,EAAoB,EADE,CADA,CAKxBwqB,KAAMA,QAAQ,CAAC/kC,CAAD,CAAK,CAlEKy/D,CAmEtB,GAAI,IAAAL,OAAJ,CACEp/D,CAAA,EADF,CAGE,IAAA++D,eAAAhhE,KAAA,CAAyBiC,CAAzB,CAJe,CALK,CAaxB+5C,SAAUp+C,CAbc,CAexB+jE,WAAYA,QAAQ,EAAG,CACrB,GAAK97B,CAAA,IAAAA,QAAL,CAAmB,CACjB,IAAI7jC,EAAO,IACX,KAAA6jC,QAAA,CAAe/vB,CAAA,CAAG,QAAQ,CAACwxB,CAAD;AAAU1C,CAAV,CAAkB,CAC1C5iC,CAAAglC,KAAA,CAAU,QAAQ,CAAC1D,CAAD,CAAS,CACd,CAAA,CAAX,GAAAA,CAAA,CAAmBsB,CAAA,EAAnB,CAA8B0C,CAAA,EADL,CAA3B,CAD0C,CAA7B,CAFE,CAQnB,MAAO,KAAAzB,QATc,CAfC,CA2BxB5L,KAAMA,QAAQ,CAAC2nC,CAAD,CAAiBC,CAAjB,CAAgC,CAC5C,MAAO,KAAAF,WAAA,EAAA1nC,KAAA,CAAuB2nC,CAAvB,CAAuCC,CAAvC,CADqC,CA3BtB,CA+BxB,QAASpmB,QAAQ,CAACj9B,CAAD,CAAU,CACzB,MAAO,KAAAmjD,WAAA,EAAA,CAAkB,OAAlB,CAAA,CAA2BnjD,CAA3B,CADkB,CA/BH,CAmCxB,UAAWk9B,QAAQ,CAACl9B,CAAD,CAAU,CAC3B,MAAO,KAAAmjD,WAAA,EAAA,CAAkB,SAAlB,CAAA,CAA6BnjD,CAA7B,CADoB,CAnCL,CAuCxBsjD,MAAOA,QAAQ,EAAG,CACZ,IAAAtlD,KAAAslD,MAAJ,EACE,IAAAtlD,KAAAslD,MAAA,EAFc,CAvCM,CA6CxBC,OAAQA,QAAQ,EAAG,CACb,IAAAvlD,KAAAulD,OAAJ,EACE,IAAAvlD,KAAAulD,OAAA,EAFe,CA7CK,CAmDxBtR,IAAKA,QAAQ,EAAG,CACV,IAAAj0C,KAAAi0C,IAAJ,EACE,IAAAj0C,KAAAi0C,IAAA,EAEF,KAAAuR,SAAA,CAAc,CAAA,CAAd,CAJc,CAnDQ,CA0DxB55C,OAAQA,QAAQ,EAAG,CACb,IAAA5L,KAAA4L,OAAJ,EACE,IAAA5L,KAAA4L,OAAA,EAEF,KAAA45C,SAAA,CAAc,CAAA,CAAd,CAJiB,CA1DK,CAiExBzC,SAAUA,QAAQ,CAAC76B,CAAD,CAAW,CAC3B,IAAI1iC;AAAO,IAjIKigE,EAkIhB,GAAIjgE,CAAAq/D,OAAJ,GACEr/D,CAAAq/D,OACA,CAnImBa,CAmInB,CAAAlgE,CAAAi/D,MAAA,CAAW,QAAQ,EAAG,CACpBj/D,CAAAggE,SAAA,CAAct9B,CAAd,CADoB,CAAtB,CAFF,CAF2B,CAjEL,CA2ExBs9B,SAAUA,QAAQ,CAACt9B,CAAD,CAAW,CAxILg9B,CAyItB,GAAI,IAAAL,OAAJ,GACE1mE,CAAA,CAAQ,IAAAqmE,eAAR,CAA6B,QAAQ,CAAC/+D,CAAD,CAAK,CACxCA,CAAA,CAAGyiC,CAAH,CADwC,CAA1C,CAIA,CADA,IAAAs8B,eAAA1mE,OACA,CAD6B,CAC7B,CAAA,IAAA+mE,OAAA,CA9IoBK,CAyItB,CAD2B,CA3EL,CAsF1B,OAAOb,EAvJmE,CADhE,CADkC,CA3pBhD,CAm0BI5tD,GAA0BA,QAAQ,EAAG,CACvC,IAAA6L,KAAA,CAAY,CAAC,OAAD,CAAU,IAAV,CAAgB,iBAAhB,CAAmC,QAAQ,CAAC5H,CAAD,CAAQpB,CAAR,CAAYxC,CAAZ,CAA6B,CAElF,MAAO,SAAQ,CAACjU,CAAD,CAAU8iE,CAAV,CAA0B,CA6BvC11D,QAASA,EAAG,EAAG,CACbyK,CAAA,CAAM,QAAQ,EAAG,CAWb+N,CAAA/F,SAAJ,GACE7f,CAAA6f,SAAA,CAAiB+F,CAAA/F,SAAjB,CACA,CAAA+F,CAAA/F,SAAA,CAAmB,IAFrB,CAII+F,EAAA9F,YAAJ,GACE9f,CAAA8f,YAAA,CAAoB8F,CAAA9F,YAApB,CACA,CAAA8F,CAAA9F,YAAA,CAAsB,IAFxB,CAII8F,EAAAi6C,GAAJ,GACE7/D,CAAA68D,IAAA,CAAYj3C,CAAAi6C,GAAZ,CACA,CAAAj6C,CAAAi6C,GAAA,CAAa,IAFf,CAjBOkD,EAAL,EACE9C,CAAAC,SAAA,EAEF6C,EAAA,CAAS,CAAA,CALM,CAAjB,CAOA,OAAO9C,EARM,CA7BwB;AAKvC,IAAIr6C,EAAUk9C,CAAVl9C,EAA4B,EAC3BA,EAAAo9C,WAAL,GACEp9C,CADF,CACYrlB,CAAA,CAAKqlB,CAAL,CADZ,CAOIA,EAAAq9C,cAAJ,GACEr9C,CAAAg6C,KADF,CACiBh6C,CAAAi6C,GADjB,CAC8B,IAD9B,CAIIj6C,EAAAg6C,KAAJ,GACE5/D,CAAA68D,IAAA,CAAYj3C,CAAAg6C,KAAZ,CACA,CAAAh6C,CAAAg6C,KAAA,CAAe,IAFjB,CAjBuC,KAuBnCmD,CAvBmC,CAuB3B9C,EAAS,IAAIhsD,CACzB,OAAO,CACLivD,MAAO91D,CADF,CAELgkD,IAAKhkD,CAFA,CAxBgC,CAFyC,CAAxE,CAD2B,CAn0BzC,CAw8EIie,GAAiB3wB,CAAA,CAAO,UAAP,CAx8ErB,CA28EI6jC,GAAuB,IAD3B4kC,QAA4B,EAAG,EAS/Bn1D,GAAA8U,QAAA,CAA2B,CAAC,UAAD,CAAa,uBAAb,CAy5E3Bib,GAAAtd,UAAA2iD,cAAA,CAAuCC,QAAQ,EAAG,CAAE,MAAO,KAAA1lC,cAAP,GAA8BY,EAAhC,CAGlD,KAAIxL,GAAgB,uBAApB,CAsGIqP,GAAoB1nC,CAAA,CAAO,aAAP,CAtGxB,CAyGIgnC,GAAY,4BAzGhB,CA4WIxsB,GAAwBA,QAAQ,EAAG,CACrC,IAAAuK,KAAA,CAAY,CAAC,WAAD,CAAc,QAAQ,CAAC9K,CAAD,CAAY,CAC5C,MAAO,SAAQ,CAAC2a,CAAD,CAAU,CASnBA,CAAJ,CACOtqB,CAAAsqB,CAAAtqB,SADP,EAC2BsqB,CAD3B,WAC8Ct0B,EAD9C,GAEIs0B,CAFJ,CAEcA,CAAA,CAAQ,CAAR,CAFd,EAKEA,CALF,CAKY3a,CAAA,CAAU,CAAV,CAAA+0B,KAEZ;MAAOpa,EAAAg0C,YAAP,CAA6B,CAhBN,CADmB,CAAlC,CADyB,CA5WvC,CAmYIC,GAAmB,kBAnYvB,CAoYI/+B,GAAgC,CAAC,eAAgB++B,EAAhB,CAAmC,gBAApC,CApYpC,CAqYI//B,GAAa,eArYjB,CAsYIC,GAAY,CACd,IAAK,IADS,CAEd,IAAK,IAFS,CAtYhB,CA0YIJ,GAAyB,cA1Y7B,CA2YImgC,GAAc9oE,CAAA,CAAO,OAAP,CA3YlB,CA4YI0sC,GAAsBA,QAAQ,CAACr7B,CAAD,CAAS,CACzC,MAAO,SAAQ,EAAG,CAChB,KAAMy3D,GAAA,CAAY,QAAZ,CAAkGz3D,CAAlG,CAAN,CADgB,CADuB,CA5Y3C,CAq6DI8/B,GAAqB5jC,EAAA4jC,mBAArBA,CAAkDnxC,CAAA,CAAO,cAAP,CACtDmxC,GAAAW,cAAA,CAAmCi3B,QAAQ,CAAC/nC,CAAD,CAAO,CAChD,KAAMmQ,GAAA,CAAmB,UAAnB,CAGsDnQ,CAHtD,CAAN,CADgD,CAOlDmQ,GAAAC,OAAA,CAA4B43B,QAAQ,CAAChoC,CAAD,CAAOhZ,CAAP,CAAY,CAC9C,MAAOmpB,GAAA,CAAmB,QAAnB,CAA4DnQ,CAA5D,CAAkEhZ,CAAA7jB,SAAA,EAAlE,CADuC,CA3qX9B,KAywYd8kE,GAAa,iCAzwYC,CA0wYdl1B,GAAgB,CAAC,KAAQ,EAAT,CAAa,MAAS,GAAtB,CAA2B,IAAO,EAAlC,CA1wYF,CA2wYdqB,GAAkBp1C,CAAA,CAAO,WAAP,CA3wYJ,CA+kZdkpE,GAAoB,CAMtB1zB,SAAS,EANa,CAYtBR,QAAS,CAAA,CAZa,CAkBtBqD,UAAW,CAAA,CAlBW;AAuCtBjB,OAAQd,EAAA,CAAe,UAAf,CAvCc,CA8DtBrqB,IAAKA,QAAQ,CAACA,CAAD,CAAM,CACjB,GAAI7nB,CAAA,CAAY6nB,CAAZ,CAAJ,CACE,MAAO,KAAAspB,MAGT,KAAItuC,EAAQgiE,EAAArqD,KAAA,CAAgBqN,CAAhB,CACZ,EAAIhlB,CAAA,CAAM,CAAN,CAAJ,EAAwB,EAAxB,GAAgBglB,CAAhB,GAA4B,IAAA9b,KAAA,CAAU1F,kBAAA,CAAmBxD,CAAA,CAAM,CAAN,CAAnB,CAAV,CAC5B,EAAIA,CAAA,CAAM,CAAN,CAAJ,EAAgBA,CAAA,CAAM,CAAN,CAAhB,EAAoC,EAApC,GAA4BglB,CAA5B,GAAwC,IAAAqoB,OAAA,CAAYrtC,CAAA,CAAM,CAAN,CAAZ,EAAwB,EAAxB,CACxC,KAAAojB,KAAA,CAAUpjB,CAAA,CAAM,CAAN,CAAV,EAAsB,EAAtB,CAEA,OAAO,KAVU,CA9DG,CA6FtB6oC,SAAUwG,EAAA,CAAe,YAAf,CA7FY,CAyHtB7zB,KAAM6zB,EAAA,CAAe,QAAf,CAzHgB,CA6ItBxC,KAAMwC,EAAA,CAAe,QAAf,CA7IgB,CAuKtBnmC,KAAMomC,EAAA,CAAqB,QAArB,CAA+B,QAAQ,CAACpmC,CAAD,CAAO,CAClDA,CAAA,CAAgB,IAAT,GAAAA,CAAA,CAAgBA,CAAAhM,SAAA,EAAhB,CAAkC,EACzC,OAAyB,GAAlB,EAAAgM,CAAAvI,OAAA,CAAY,CAAZ,CAAA,CAAwBuI,CAAxB,CAA+B,GAA/B,CAAqCA,CAFM,CAA9C,CAvKgB,CAyNtBmkC,OAAQA,QAAQ,CAACA,CAAD,CAAS60B,CAAT,CAAqB,CACnC,OAAQ/lE,SAAA7C,OAAR,EACE,KAAK,CAAL,CACE,MAAO,KAAA8zC,SACT,MAAK,CAAL,CACE,GAAIh0C,CAAA,CAASi0C,CAAT,CAAJ,EAAwB7zC,CAAA,CAAS6zC,CAAT,CAAxB,CACEA,CACA,CADSA,CAAAnwC,SAAA,EACT,CAAA,IAAAkwC,SAAA,CAAgB3pC,EAAA,CAAc4pC,CAAd,CAFlB,KAGO,IAAIjyC,CAAA,CAASiyC,CAAT,CAAJ,CACLA,CAMA;AANSzuC,CAAA,CAAKyuC,CAAL,CAAa,EAAb,CAMT,CAJA1zC,CAAA,CAAQ0zC,CAAR,CAAgB,QAAQ,CAAC3yC,CAAD,CAAQZ,CAAR,CAAa,CACtB,IAAb,EAAIY,CAAJ,EAAmB,OAAO2yC,CAAA,CAAOvzC,CAAP,CADS,CAArC,CAIA,CAAA,IAAAszC,SAAA,CAAgBC,CAPX,KASL,MAAMc,GAAA,CAAgB,UAAhB,CAAN,CAGF,KACF,SACMhxC,CAAA,CAAY+kE,CAAZ,CAAJ,EAA8C,IAA9C,GAA+BA,CAA/B,CACE,OAAO,IAAA90B,SAAA,CAAcC,CAAd,CADT,CAGE,IAAAD,SAAA,CAAcC,CAAd,CAHF,CAG0B60B,CAxB9B,CA4BA,IAAA9zB,UAAA,EACA,OAAO,KA9B4B,CAzNf,CA+QtBhrB,KAAMksB,EAAA,CAAqB,QAArB,CAA+B,QAAQ,CAAClsB,CAAD,CAAO,CAClD,MAAgB,KAAT,GAAAA,CAAA,CAAgBA,CAAAlmB,SAAA,EAAhB,CAAkC,EADS,CAA9C,CA/QgB,CA2RtBgF,QAASA,QAAQ,EAAG,CAClB,IAAAkvC,UAAA,CAAiB,CAAA,CACjB,OAAO,KAFW,CA3RE,CAiSxBz3C,EAAA,CAAQ,CAACy1C,EAAD,CAA6BN,EAA7B,CAAkDnB,EAAlD,CAAR,CAA6E,QAAQ,CAACw0B,CAAD,CAAW,CAC9FA,CAAArjD,UAAA,CAAqBvlB,MAAAoD,OAAA,CAAcslE,EAAd,CAqBrBE,EAAArjD,UAAAkH,MAAA,CAA2Bo8C,QAAQ,CAACp8C,CAAD,CAAQ,CACzC,GAAK1sB,CAAA6C,SAAA7C,OAAL,CACE,MAAO,KAAA02C,QAGT,IAAImyB,CAAJ,GAAiBx0B,EAAjB,EAAsCI,CAAA,IAAAA,QAAtC,CACE,KAAMI,GAAA,CAAgB,SAAhB,CAAN,CAMF,IAAA6B,QAAA,CAAe7yC,CAAA,CAAY6oB,CAAZ,CAAA,CAAqB,IAArB;AAA4BA,CAE3C,OAAO,KAdkC,CAtBmD,CAAhG,CA8iBA,KAAIusB,GAAex5C,CAAA,CAAO,QAAP,CAAnB,CAkFI65C,GAAO/zB,QAAAC,UAAA7kB,KAlFX,CAmFI44C,GAAQh0B,QAAAC,UAAA1d,MAnFZ,CAoFI0xC,GAAOj0B,QAAAC,UAAA/d,KApFX,CA8GIshE,GAAY3hE,CAAA,EAChB/G,EAAA,CAAQ,+CAAA,MAAA,CAAA,GAAA,CAAR,CAAoE,QAAQ,CAAC27C,CAAD,CAAW,CAAE+sB,EAAA,CAAU/sB,CAAV,CAAA,CAAsB,CAAA,CAAxB,CAAvF,CACA,KAAIgtB,GAAS,CAAC,EAAI,IAAL,CAAW,EAAI,IAAf,CAAqB,EAAI,IAAzB,CAA+B,EAAI,IAAnC,CAAyC,EAAI,IAA7C,CAAmD,IAAI,GAAvD,CAA4D,IAAI,GAAhE,CAAb,CASIjrB,GAAQA,QAAQ,CAACpzB,CAAD,CAAU,CAC5B,IAAAA,QAAA,CAAeA,CADa,CAI9BozB,GAAAv4B,UAAA,CAAkB,CAChBtf,YAAa63C,EADG,CAGhBkrB,IAAKA,QAAQ,CAACxoC,CAAD,CAAO,CAClB,IAAAA,KAAA,CAAYA,CACZ,KAAAt7B,MAAA,CAAa,CAGb,KAFA,IAAA+jE,OAEA,CAFc,EAEd,CAAO,IAAA/jE,MAAP,CAAoB,IAAAs7B,KAAAzgC,OAApB,CAAA,CAEE,GADIgwC,CACA,CADK,IAAAvP,KAAAp5B,OAAA,CAAiB,IAAAlC,MAAjB,CACL,CAAO,GAAP,GAAA6qC,CAAA,EAAqB,GAArB,GAAcA,CAAlB,CACE,IAAAm5B,WAAA,CAAgBn5B,CAAhB,CADF,KAEO,IAAI,IAAA9vC,SAAA,CAAc8vC,CAAd,CAAJ;AAAgC,GAAhC,GAAyBA,CAAzB,EAAuC,IAAA9vC,SAAA,CAAc,IAAAkpE,KAAA,EAAd,CAAvC,CACL,IAAAC,WAAA,EADK,KAEA,IAAI,IAAAppB,kBAAA,CAAuB,IAAAqpB,cAAA,EAAvB,CAAJ,CACL,IAAAC,UAAA,EADK,KAEA,IAAI,IAAAC,GAAA,CAAQx5B,CAAR,CAAY,aAAZ,CAAJ,CACL,IAAAk5B,OAAAxjE,KAAA,CAAiB,CAACP,MAAO,IAAAA,MAAR,CAAoBs7B,KAAMuP,CAA1B,CAAjB,CACA,CAAA,IAAA7qC,MAAA,EAFK,KAGA,IAAI,IAAAskE,aAAA,CAAkBz5B,CAAlB,CAAJ,CACL,IAAA7qC,MAAA,EADK,KAEA,CACL,IAAIukE,EAAM15B,CAAN05B,CAAW,IAAAN,KAAA,EAAf,CACIO,EAAMD,CAANC,CAAY,IAAAP,KAAA,CAAU,CAAV,CADhB,CAGIQ,EAAMb,EAAA,CAAUW,CAAV,CAHV,CAIIG,EAAMd,EAAA,CAAUY,CAAV,CAFAZ,GAAAe,CAAU95B,CAAV85B,CAGV,EAAWF,CAAX,EAAkBC,CAAlB,EACMvjC,CAEJ,CAFYujC,CAAA,CAAMF,CAAN,CAAaC,CAAA,CAAMF,CAAN,CAAY15B,CAErC,CADA,IAAAk5B,OAAAxjE,KAAA,CAAiB,CAACP,MAAO,IAAAA,MAAR,CAAoBs7B,KAAM6F,CAA1B,CAAiC0V,SAAU,CAAA,CAA3C,CAAjB,CACA,CAAA,IAAA72C,MAAA,EAAcmhC,CAAAtmC,OAHhB,EAKE,IAAA+pE,WAAA,CAAgB,4BAAhB,CAA8C,IAAA5kE,MAA9C,CAA0D,IAAAA,MAA1D,CAAuE,CAAvE,CAXG,CAeT,MAAO,KAAA+jE,OAjCW,CAHJ;AAuChBM,GAAIA,QAAQ,CAACx5B,CAAD,CAAKg6B,CAAL,CAAY,CACtB,MAA8B,EAA9B,GAAOA,CAAA5kE,QAAA,CAAc4qC,CAAd,CADe,CAvCR,CA2ChBo5B,KAAMA,QAAQ,CAACnoE,CAAD,CAAI,CACZqyD,CAAAA,CAAMryD,CAANqyD,EAAW,CACf,OAAQ,KAAAnuD,MAAD,CAAcmuD,CAAd,CAAoB,IAAA7yB,KAAAzgC,OAApB,CAAwC,IAAAygC,KAAAp5B,OAAA,CAAiB,IAAAlC,MAAjB,CAA8BmuD,CAA9B,CAAxC,CAA6E,CAAA,CAFpE,CA3CF,CAgDhBpzD,SAAUA,QAAQ,CAAC8vC,CAAD,CAAK,CACrB,MAAQ,GAAR,EAAeA,CAAf,EAA2B,GAA3B,EAAqBA,CAArB,EAAiD,QAAjD,GAAmC,MAAOA,EADrB,CAhDP,CAoDhBy5B,aAAcA,QAAQ,CAACz5B,CAAD,CAAK,CAEzB,MAAe,GAAf,GAAQA,CAAR,EAA6B,IAA7B,GAAsBA,CAAtB,EAA4C,IAA5C,GAAqCA,CAArC,EACe,IADf,GACQA,CADR,EAC8B,IAD9B,GACuBA,CADvB,EAC6C,QAD7C,GACsCA,CAHb,CApDX,CA0DhBiQ,kBAAmBA,QAAQ,CAACjQ,CAAD,CAAK,CAC9B,MAAO,KAAArlB,QAAAs1B,kBAAA,CACH,IAAAt1B,QAAAs1B,kBAAA,CAA+BjQ,CAA/B,CAAmC,IAAAi6B,YAAA,CAAiBj6B,CAAjB,CAAnC,CADG,CAEH,IAAAk6B,uBAAA,CAA4Bl6B,CAA5B,CAH0B,CA1DhB,CAgEhBk6B,uBAAwBA,QAAQ,CAACl6B,CAAD,CAAK,CACnC,MAAQ,GAAR,EAAeA,CAAf,EAA2B,GAA3B;AAAqBA,CAArB,EACQ,GADR,EACeA,CADf,EAC2B,GAD3B,EACqBA,CADrB,EAEQ,GAFR,GAEgBA,CAFhB,EAE6B,GAF7B,GAEsBA,CAHa,CAhErB,CAsEhBkQ,qBAAsBA,QAAQ,CAAClQ,CAAD,CAAK,CACjC,MAAO,KAAArlB,QAAAu1B,qBAAA,CACH,IAAAv1B,QAAAu1B,qBAAA,CAAkClQ,CAAlC,CAAsC,IAAAi6B,YAAA,CAAiBj6B,CAAjB,CAAtC,CADG,CAEH,IAAAm6B,0BAAA,CAA+Bn6B,CAA/B,CAH6B,CAtEnB,CA4EhBm6B,0BAA2BA,QAAQ,CAACn6B,CAAD,CAAKo6B,CAAL,CAAS,CAC1C,MAAO,KAAAF,uBAAA,CAA4Bl6B,CAA5B,CAAgCo6B,CAAhC,CAAP,EAA8C,IAAAlqE,SAAA,CAAc8vC,CAAd,CADJ,CA5E5B,CAgFhBi6B,YAAaA,QAAQ,CAACj6B,CAAD,CAAK,CACxB,MAAkB,EAAlB,GAAIA,CAAAhwC,OAAJ,CAA4BgwC,CAAAq6B,WAAA,CAAc,CAAd,CAA5B,EAEQr6B,CAAAq6B,WAAA,CAAc,CAAd,CAFR,EAE4B,EAF5B,EAEkCr6B,CAAAq6B,WAAA,CAAc,CAAd,CAFlC,CAEqD,QAH7B,CAhFV,CAuFhBf,cAAeA,QAAQ,EAAG,CACxB,IAAIt5B,EAAK,IAAAvP,KAAAp5B,OAAA,CAAiB,IAAAlC,MAAjB,CAAT,CACIikE,EAAO,IAAAA,KAAA,EACX,IAAKA,CAAAA,CAAL,CACE,MAAOp5B,EAET,KAAIs6B;AAAMt6B,CAAAq6B,WAAA,CAAc,CAAd,CAAV,CACIE,EAAMnB,CAAAiB,WAAA,CAAgB,CAAhB,CACV,OAAW,MAAX,EAAIC,CAAJ,EAA4B,KAA5B,EAAqBA,CAArB,EAA6C,KAA7C,EAAsCC,CAAtC,EAA8D,KAA9D,EAAuDA,CAAvD,CACSv6B,CADT,CACco5B,CADd,CAGOp5B,CAXiB,CAvFV,CAqGhBw6B,cAAeA,QAAQ,CAACx6B,CAAD,CAAK,CAC1B,MAAe,GAAf,GAAQA,CAAR,EAA6B,GAA7B,GAAsBA,CAAtB,EAAoC,IAAA9vC,SAAA,CAAc8vC,CAAd,CADV,CArGZ,CAyGhB+5B,WAAYA,QAAQ,CAAC9+C,CAAD,CAAQg9C,CAAR,CAAe9R,CAAf,CAAoB,CACtCA,CAAA,CAAMA,CAAN,EAAa,IAAAhxD,MACTslE,EAAAA,CAAU3mE,CAAA,CAAUmkE,CAAV,CAAA,CACJ,IADI,CACGA,CADH,CACY,GADZ,CACkB,IAAA9iE,MADlB,CAC+B,IAD/B,CACsC,IAAAs7B,KAAAn2B,UAAA,CAAoB29D,CAApB,CAA2B9R,CAA3B,CADtC,CACwE,GADxE,CAEJ,GAFI,CAEEA,CAChB,MAAMld,GAAA,CAAa,QAAb,CACFhuB,CADE,CACKw/C,CADL,CACa,IAAAhqC,KADb,CAAN,CALsC,CAzGxB,CAkHhB4oC,WAAYA,QAAQ,EAAG,CAGrB,IAFA,IAAInY,EAAS,EAAb,CACI+W,EAAQ,IAAA9iE,MACZ,CAAO,IAAAA,MAAP,CAAoB,IAAAs7B,KAAAzgC,OAApB,CAAA,CAAsC,CACpC,IAAIgwC,EAAKhrC,CAAA,CAAU,IAAAy7B,KAAAp5B,OAAA,CAAiB,IAAAlC,MAAjB,CAAV,CACT,IAAU,GAAV,EAAI6qC,CAAJ,EAAiB,IAAA9vC,SAAA,CAAc8vC,CAAd,CAAjB,CACEkhB,CAAA,EAAUlhB,CADZ,KAEO,CACL,IAAI06B,EAAS,IAAAtB,KAAA,EACb,IAAU,GAAV,EAAIp5B,CAAJ,EAAiB,IAAAw6B,cAAA,CAAmBE,CAAnB,CAAjB,CACExZ,CAAA;AAAUlhB,CADZ,KAEO,IAAI,IAAAw6B,cAAA,CAAmBx6B,CAAnB,CAAJ,EACH06B,CADG,EACO,IAAAxqE,SAAA,CAAcwqE,CAAd,CADP,EAEiC,GAFjC,EAEHxZ,CAAA7pD,OAAA,CAAc6pD,CAAAlxD,OAAd,CAA8B,CAA9B,CAFG,CAGLkxD,CAAA,EAAUlhB,CAHL,KAIA,IAAI,CAAA,IAAAw6B,cAAA,CAAmBx6B,CAAnB,CAAJ,EACD06B,CADC,EACU,IAAAxqE,SAAA,CAAcwqE,CAAd,CADV,EAEiC,GAFjC,EAEHxZ,CAAA7pD,OAAA,CAAc6pD,CAAAlxD,OAAd,CAA8B,CAA9B,CAFG,CAKL,KALK,KAGL,KAAA+pE,WAAA,CAAgB,kBAAhB,CAXG,CAgBP,IAAA5kE,MAAA,EApBoC,CAsBtC,IAAA+jE,OAAAxjE,KAAA,CAAiB,CACfP,MAAO8iE,CADQ,CAEfxnC,KAAMywB,CAFS,CAGfr/C,SAAU,CAAA,CAHK,CAIfzQ,MAAO6tB,MAAA,CAAOiiC,CAAP,CAJQ,CAAjB,CAzBqB,CAlHP,CAmJhBqY,UAAWA,QAAQ,EAAG,CACpB,IAAItB,EAAQ,IAAA9iE,MAEZ,KADA,IAAAA,MACA,EADc,IAAAmkE,cAAA,EAAAtpE,OACd,CAAO,IAAAmF,MAAP,CAAoB,IAAAs7B,KAAAzgC,OAApB,CAAA,CAAsC,CACpC,IAAIgwC,EAAK,IAAAs5B,cAAA,EACT,IAAK,CAAA,IAAAppB,qBAAA,CAA0BlQ,CAA1B,CAAL,CACE,KAEF,KAAA7qC,MAAA,EAAc6qC,CAAAhwC,OALsB,CAOtC,IAAAkpE,OAAAxjE,KAAA,CAAiB,CACfP,MAAO8iE,CADQ;AAEfxnC,KAAM,IAAAA,KAAA79B,MAAA,CAAgBqlE,CAAhB,CAAuB,IAAA9iE,MAAvB,CAFS,CAGfm2B,WAAY,CAAA,CAHG,CAAjB,CAVoB,CAnJN,CAoKhB6tC,WAAYA,QAAQ,CAACwB,CAAD,CAAQ,CAC1B,IAAI1C,EAAQ,IAAA9iE,MACZ,KAAAA,MAAA,EAIA,KAHA,IAAIwvD,EAAS,EAAb,CACIiW,EAAYD,CADhB,CAEI56B,EAAS,CAAA,CACb,CAAO,IAAA5qC,MAAP,CAAoB,IAAAs7B,KAAAzgC,OAApB,CAAA,CAAsC,CACpC,IAAIgwC,EAAK,IAAAvP,KAAAp5B,OAAA,CAAiB,IAAAlC,MAAjB,CAAT,CACAylE,EAAAA,CAAAA,CAAa56B,CACb,IAAID,CAAJ,CACa,GAAX,GAAIC,CAAJ,EACM66B,CAKJ,CALU,IAAApqC,KAAAn2B,UAAA,CAAoB,IAAAnF,MAApB,CAAiC,CAAjC,CAAoC,IAAAA,MAApC,CAAiD,CAAjD,CAKV,CAJK0lE,CAAAnkE,MAAA,CAAU,aAAV,CAIL,EAHE,IAAAqjE,WAAA,CAAgB,6BAAhB,CAAgDc,CAAhD,CAAsD,GAAtD,CAGF,CADA,IAAA1lE,MACA,EADc,CACd,CAAAwvD,CAAA,EAAUmW,MAAAC,aAAA,CAAoB9nE,QAAA,CAAS4nE,CAAT,CAAc,EAAd,CAApB,CANZ,EASElW,CATF,EAQYqU,EAAAgC,CAAOh7B,CAAPg7B,CARZ,EAS4Bh7B,CAE5B,CAAAD,CAAA,CAAS,CAAA,CAZX,KAaO,IAAW,IAAX,GAAIC,CAAJ,CACLD,CAAA,CAAS,CAAA,CADJ,KAEA,CAAA,GAAIC,CAAJ,GAAW26B,CAAX,CAAkB,CACvB,IAAAxlE,MAAA,EACA,KAAA+jE,OAAAxjE,KAAA,CAAiB,CACfP,MAAO8iE,CADQ,CAEfxnC,KAAMmqC,CAFS,CAGf/4D,SAAU,CAAA,CAHK;AAIfzQ,MAAOuzD,CAJQ,CAAjB,CAMA,OARuB,CAUvBA,CAAA,EAAU3kB,CAVL,CAYP,IAAA7qC,MAAA,EA9BoC,CAgCtC,IAAA4kE,WAAA,CAAgB,oBAAhB,CAAsC9B,CAAtC,CAtC0B,CApKZ,CA8MlB,KAAIhuB,EAAMA,QAAQ,CAAC6D,CAAD,CAAQnzB,CAAR,CAAiB,CACjC,IAAAmzB,MAAA,CAAaA,CACb,KAAAnzB,QAAA,CAAeA,CAFkB,CAKnCsvB,EAAAC,QAAA,CAAc,SACdD,EAAAgxB,oBAAA,CAA0B,qBAC1BhxB,EAAAoB,qBAAA,CAA2B,sBAC3BpB,EAAAW,sBAAA,CAA4B,uBAC5BX,EAAAU,kBAAA,CAAwB,mBACxBV,EAAAO,iBAAA,CAAuB,kBACvBP,EAAAK,gBAAA,CAAsB,iBACtBL,EAAAkB,eAAA,CAAqB,gBACrBlB,EAAAe,iBAAA,CAAuB,kBACvBf,EAAAc,WAAA,CAAiB,YACjBd,EAAAG,QAAA;AAAc,SACdH,EAAAqB,gBAAA,CAAsB,iBACtBrB,EAAAixB,SAAA,CAAe,UACfjxB,EAAAsB,iBAAA,CAAuB,kBACvBtB,EAAAwB,eAAA,CAAqB,gBACrBxB,EAAAyB,iBAAA,CAAuB,kBAGvBzB,EAAA8B,iBAAA,CAAuB,kBAEvB9B,EAAAz0B,UAAA,CAAgB,CACds0B,IAAKA,QAAQ,CAACrZ,CAAD,CAAO,CAClB,IAAAA,KAAA,CAAYA,CACZ,KAAAyoC,OAAA,CAAc,IAAAprB,MAAAmrB,IAAA,CAAexoC,CAAf,CAEVr/B,EAAAA,CAAQ,IAAA+pE,QAAA,EAEe,EAA3B,GAAI,IAAAjC,OAAAlpE,OAAJ,EACE,IAAA+pE,WAAA,CAAgB,wBAAhB,CAA0C,IAAAb,OAAA,CAAY,CAAZ,CAA1C,CAGF,OAAO9nE,EAVW,CADN,CAcd+pE,QAASA,QAAQ,EAAG,CAElB,IADA,IAAI18B,EAAO,EACX,CAAA,CAAA,CAGE,GAFyB,CAEpB,CAFD,IAAAy6B,OAAAlpE,OAEC,EAF0B,CAAA,IAAAopE,KAAA,CAAU,GAAV,CAAe,GAAf,CAAoB,GAApB,CAAyB,GAAzB,CAE1B,EADH36B,CAAA/oC,KAAA,CAAU,IAAA0lE,oBAAA,EAAV,CACG;AAAA,CAAA,IAAAC,OAAA,CAAY,GAAZ,CAAL,CACE,MAAO,CAAEzkE,KAAMqzC,CAAAC,QAAR,CAAqBzL,KAAMA,CAA3B,CANO,CAdN,CAyBd28B,oBAAqBA,QAAQ,EAAG,CAC9B,MAAO,CAAExkE,KAAMqzC,CAAAgxB,oBAAR,CAAiChkC,WAAY,IAAAqkC,YAAA,EAA7C,CADuB,CAzBlB,CA6BdA,YAAaA,QAAQ,EAAG,CAGtB,IAFA,IAAI7wB,EAAO,IAAAxT,WAAA,EAEX,CAAgB,IAAAokC,OAAA,CAAY,GAAZ,CAAhB,CAAA,CACE5wB,CAAA,CAAO,IAAAzoC,OAAA,CAAYyoC,CAAZ,CAET,OAAOA,EANe,CA7BV,CAsCdxT,WAAYA,QAAQ,EAAG,CACrB,MAAO,KAAAskC,WAAA,EADc,CAtCT,CA0CdA,WAAYA,QAAQ,EAAG,CACrB,IAAI/kD,EAAS,IAAAglD,QAAA,EACT,KAAAH,OAAA,CAAY,GAAZ,CAAJ,GACE7kD,CADF,CACW,CAAE5f,KAAMqzC,CAAAoB,qBAAR,CAAkCZ,KAAMj0B,CAAxC,CAAgDk0B,MAAO,IAAA6wB,WAAA,EAAvD,CAA0EvvB,SAAU,GAApF,CADX,CAGA,OAAOx1B,EALc,CA1CT,CAkDdglD,QAASA,QAAQ,EAAG,CAClB,IAAIlnE,EAAO,IAAAmnE,UAAA,EAAX,CACI5wB,CADJ,CAEIC,CACJ,OAAI,KAAAuwB,OAAA,CAAY,GAAZ,CAAJ;CACExwB,CACI,CADQ,IAAA5T,WAAA,EACR,CAAA,IAAAykC,QAAA,CAAa,GAAb,CAFN,GAGI5wB,CACO,CADM,IAAA7T,WAAA,EACN,CAAA,CAAErgC,KAAMqzC,CAAAW,sBAAR,CAAmCt2C,KAAMA,CAAzC,CAA+Cu2C,UAAWA,CAA1D,CAAqEC,WAAYA,CAAjF,CAJX,EAOOx2C,CAXW,CAlDN,CAgEdmnE,UAAWA,QAAQ,EAAG,CAEpB,IADA,IAAIhxB,EAAO,IAAAkxB,WAAA,EACX,CAAO,IAAAN,OAAA,CAAY,IAAZ,CAAP,CAAA,CACE5wB,CAAA,CAAO,CAAE7zC,KAAMqzC,CAAAU,kBAAR,CAA+BqB,SAAU,IAAzC,CAA+CvB,KAAMA,CAArD,CAA2DC,MAAO,IAAAixB,WAAA,EAAlE,CAET,OAAOlxB,EALa,CAhER,CAwEdkxB,WAAYA,QAAQ,EAAG,CAErB,IADA,IAAIlxB,EAAO,IAAAmxB,SAAA,EACX,CAAO,IAAAP,OAAA,CAAY,IAAZ,CAAP,CAAA,CACE5wB,CAAA,CAAO,CAAE7zC,KAAMqzC,CAAAU,kBAAR,CAA+BqB,SAAU,IAAzC,CAA+CvB,KAAMA,CAArD,CAA2DC,MAAO,IAAAkxB,SAAA,EAAlE,CAET,OAAOnxB,EALc,CAxET,CAgFdmxB,SAAUA,QAAQ,EAAG,CAGnB,IAFA,IAAInxB,EAAO,IAAAoxB,WAAA,EAAX,CACIvlC,CACJ,CAAQA,CAAR,CAAgB,IAAA+kC,OAAA,CAAY,IAAZ,CAAiB,IAAjB;AAAsB,KAAtB,CAA4B,KAA5B,CAAhB,CAAA,CACE5wB,CAAA,CAAO,CAAE7zC,KAAMqzC,CAAAO,iBAAR,CAA8BwB,SAAU1V,CAAA7F,KAAxC,CAAoDga,KAAMA,CAA1D,CAAgEC,MAAO,IAAAmxB,WAAA,EAAvE,CAET,OAAOpxB,EANY,CAhFP,CAyFdoxB,WAAYA,QAAQ,EAAG,CAGrB,IAFA,IAAIpxB,EAAO,IAAAqxB,SAAA,EAAX,CACIxlC,CACJ,CAAQA,CAAR,CAAgB,IAAA+kC,OAAA,CAAY,GAAZ,CAAiB,GAAjB,CAAsB,IAAtB,CAA4B,IAA5B,CAAhB,CAAA,CACE5wB,CAAA,CAAO,CAAE7zC,KAAMqzC,CAAAO,iBAAR,CAA8BwB,SAAU1V,CAAA7F,KAAxC,CAAoDga,KAAMA,CAA1D,CAAgEC,MAAO,IAAAoxB,SAAA,EAAvE,CAET,OAAOrxB,EANc,CAzFT,CAkGdqxB,SAAUA,QAAQ,EAAG,CAGnB,IAFA,IAAIrxB,EAAO,IAAAsxB,eAAA,EAAX,CACIzlC,CACJ,CAAQA,CAAR,CAAgB,IAAA+kC,OAAA,CAAY,GAAZ,CAAgB,GAAhB,CAAhB,CAAA,CACE5wB,CAAA,CAAO,CAAE7zC,KAAMqzC,CAAAO,iBAAR,CAA8BwB,SAAU1V,CAAA7F,KAAxC,CAAoDga,KAAMA,CAA1D,CAAgEC,MAAO,IAAAqxB,eAAA,EAAvE,CAET,OAAOtxB,EANY,CAlGP,CA2GdsxB,eAAgBA,QAAQ,EAAG,CAGzB,IAFA,IAAItxB,EAAO,IAAAuxB,MAAA,EAAX,CACI1lC,CACJ,CAAQA,CAAR,CAAgB,IAAA+kC,OAAA,CAAY,GAAZ;AAAgB,GAAhB,CAAoB,GAApB,CAAhB,CAAA,CACE5wB,CAAA,CAAO,CAAE7zC,KAAMqzC,CAAAO,iBAAR,CAA8BwB,SAAU1V,CAAA7F,KAAxC,CAAoDga,KAAMA,CAA1D,CAAgEC,MAAO,IAAAsxB,MAAA,EAAvE,CAET,OAAOvxB,EANkB,CA3Gb,CAoHduxB,MAAOA,QAAQ,EAAG,CAChB,IAAI1lC,CACJ,OAAA,CAAKA,CAAL,CAAa,IAAA+kC,OAAA,CAAY,GAAZ,CAAiB,GAAjB,CAAsB,GAAtB,CAAb,EACS,CAAEzkE,KAAMqzC,CAAAK,gBAAR,CAA6B0B,SAAU1V,CAAA7F,KAAvC,CAAmDj1B,OAAQ,CAAA,CAA3D,CAAiE+uC,SAAU,IAAAyxB,MAAA,EAA3E,CADT,CAGS,IAAAC,QAAA,EALO,CApHJ,CA6HdA,QAASA,QAAQ,EAAG,CAClB,IAAIA,CACA,KAAAZ,OAAA,CAAY,GAAZ,CAAJ,EACEY,CACA,CADU,IAAAX,YAAA,EACV,CAAA,IAAAI,QAAA,CAAa,GAAb,CAFF,EAGW,IAAAL,OAAA,CAAY,GAAZ,CAAJ,CACLY,CADK,CACK,IAAAC,iBAAA,EADL,CAEI,IAAAb,OAAA,CAAY,GAAZ,CAAJ,CACLY,CADK,CACK,IAAAhxB,OAAA,EADL,CAEI,IAAAkxB,gBAAAzrE,eAAA,CAAoC,IAAA0oE,KAAA,EAAA3oC,KAApC,CAAJ,CACLwrC,CADK,CACK3mE,CAAA,CAAK,IAAA6mE,gBAAA,CAAqB,IAAAT,QAAA,EAAAjrC,KAArB,CAAL,CADL,CAEI,IAAA9V,QAAA+xB,SAAAh8C,eAAA,CAAqC,IAAA0oE,KAAA,EAAA3oC,KAArC,CAAJ;AACLwrC,CADK,CACK,CAAErlE,KAAMqzC,CAAAG,QAAR,CAAqBh5C,MAAO,IAAAupB,QAAA+xB,SAAA,CAAsB,IAAAgvB,QAAA,EAAAjrC,KAAtB,CAA5B,CADL,CAEI,IAAA2oC,KAAA,EAAA9tC,WAAJ,CACL2wC,CADK,CACK,IAAA3wC,WAAA,EADL,CAEI,IAAA8tC,KAAA,EAAAv3D,SAAJ,CACLo6D,CADK,CACK,IAAAp6D,SAAA,EADL,CAGL,IAAAk4D,WAAA,CAAgB,0BAAhB,CAA4C,IAAAX,KAAA,EAA5C,CAIF,KADA,IAAI3hB,CACJ,CAAQA,CAAR,CAAe,IAAA4jB,OAAA,CAAY,GAAZ,CAAiB,GAAjB,CAAsB,GAAtB,CAAf,CAAA,CACoB,GAAlB,GAAI5jB,CAAAhnB,KAAJ,EACEwrC,CACA,CADU,CAACrlE,KAAMqzC,CAAAkB,eAAP,CAA2BC,OAAQ6wB,CAAnC,CAA4CppE,UAAW,IAAAupE,eAAA,EAAvD,CACV,CAAA,IAAAV,QAAA,CAAa,GAAb,CAFF,EAGyB,GAAlB,GAAIjkB,CAAAhnB,KAAJ,EACLwrC,CACA,CADU,CAAErlE,KAAMqzC,CAAAe,iBAAR,CAA8BC,OAAQgxB,CAAtC,CAA+CxtC,SAAU,IAAAwI,WAAA,EAAzD,CAA4EiU,SAAU,CAAA,CAAtF,CACV,CAAA,IAAAwwB,QAAA,CAAa,GAAb,CAFK,EAGkB,GAAlB,GAAIjkB,CAAAhnB,KAAJ,CACLwrC,CADK,CACK,CAAErlE,KAAMqzC,CAAAe,iBAAR,CAA8BC,OAAQgxB,CAAtC;AAA+CxtC,SAAU,IAAAnD,WAAA,EAAzD,CAA4E4f,SAAU,CAAA,CAAtF,CADL,CAGL,IAAA6uB,WAAA,CAAgB,YAAhB,CAGJ,OAAOkC,EAnCW,CA7HN,CAmKdj6D,OAAQA,QAAQ,CAACq6D,CAAD,CAAiB,CAC3BxmD,CAAAA,CAAO,CAACwmD,CAAD,CAGX,KAFA,IAAI7lD,EAAS,CAAC5f,KAAMqzC,CAAAkB,eAAP,CAA2BC,OAAQ,IAAA9f,WAAA,EAAnC,CAAsDz4B,UAAWgjB,CAAjE,CAAuE7T,OAAQ,CAAA,CAA/E,CAEb,CAAO,IAAAq5D,OAAA,CAAY,GAAZ,CAAP,CAAA,CACExlD,CAAAngB,KAAA,CAAU,IAAAuhC,WAAA,EAAV,CAGF,OAAOzgB,EARwB,CAnKnB,CA8Kd4lD,eAAgBA,QAAQ,EAAG,CACzB,IAAIvmD,EAAO,EACX,IAA8B,GAA9B,GAAI,IAAAymD,UAAA,EAAA7rC,KAAJ,EACE,EACE5a,EAAAngB,KAAA,CAAU,IAAA4lE,YAAA,EAAV,CADF,OAES,IAAAD,OAAA,CAAY,GAAZ,CAFT,CADF,CAKA,MAAOxlD,EAPkB,CA9Kb,CAwLdyV,WAAYA,QAAQ,EAAG,CACrB,IAAIgL,EAAQ,IAAAolC,QAAA,EACPplC,EAAAhL,WAAL,EACE,IAAAyuC,WAAA,CAAgB,2BAAhB,CAA6CzjC,CAA7C,CAEF,OAAO,CAAE1/B,KAAMqzC,CAAAc,WAAR,CAAwBtvC,KAAM66B,CAAA7F,KAA9B,CALc,CAxLT;AAgMd5uB,SAAUA,QAAQ,EAAG,CAEnB,MAAO,CAAEjL,KAAMqzC,CAAAG,QAAR,CAAqBh5C,MAAO,IAAAsqE,QAAA,EAAAtqE,MAA5B,CAFY,CAhMP,CAqMd8qE,iBAAkBA,QAAQ,EAAG,CAC3B,IAAItqD,EAAW,EACf,IAA8B,GAA9B,GAAI,IAAA0qD,UAAA,EAAA7rC,KAAJ,EACE,EAAG,CACD,GAAI,IAAA2oC,KAAA,CAAU,GAAV,CAAJ,CAEE,KAEFxnD,EAAAlc,KAAA,CAAc,IAAAuhC,WAAA,EAAd,CALC,CAAH,MAMS,IAAAokC,OAAA,CAAY,GAAZ,CANT,CADF,CASA,IAAAK,QAAA,CAAa,GAAb,CAEA,OAAO,CAAE9kE,KAAMqzC,CAAAqB,gBAAR,CAA6B15B,SAAUA,CAAvC,CAboB,CArMf,CAqNdq5B,OAAQA,QAAQ,EAAG,CAAA,IACbO,EAAa,EADA,CACI/c,CACrB,IAA8B,GAA9B,GAAI,IAAA6tC,UAAA,EAAA7rC,KAAJ,EACE,EAAG,CACD,GAAI,IAAA2oC,KAAA,CAAU,GAAV,CAAJ,CAEE,KAEF3qC,EAAA,CAAW,CAAC73B,KAAMqzC,CAAAixB,SAAP,CAAqBqB,KAAM,MAA3B,CACP,KAAAnD,KAAA,EAAAv3D,SAAJ,EACE4sB,CAAAj+B,IAGA,CAHe,IAAAqR,SAAA,EAGf,CAFA4sB,CAAAyc,SAEA,CAFoB,CAAA,CAEpB,CADA,IAAAwwB,QAAA,CAAa,GAAb,CACA,CAAAjtC,CAAAr9B,MAAA,CAAiB,IAAA6lC,WAAA,EAJnB;AAKW,IAAAmiC,KAAA,EAAA9tC,WAAJ,EACLmD,CAAAj+B,IAEA,CAFe,IAAA86B,WAAA,EAEf,CADAmD,CAAAyc,SACA,CADoB,CAAA,CACpB,CAAI,IAAAkuB,KAAA,CAAU,GAAV,CAAJ,EACE,IAAAsC,QAAA,CAAa,GAAb,CACA,CAAAjtC,CAAAr9B,MAAA,CAAiB,IAAA6lC,WAAA,EAFnB,EAIExI,CAAAr9B,MAJF,CAImBq9B,CAAAj+B,IAPd,EASI,IAAA4oE,KAAA,CAAU,GAAV,CAAJ,EACL,IAAAsC,QAAA,CAAa,GAAb,CAKA,CAJAjtC,CAAAj+B,IAIA,CAJe,IAAAymC,WAAA,EAIf,CAHA,IAAAykC,QAAA,CAAa,GAAb,CAGA,CAFAjtC,CAAAyc,SAEA,CAFoB,CAAA,CAEpB,CADA,IAAAwwB,QAAA,CAAa,GAAb,CACA,CAAAjtC,CAAAr9B,MAAA,CAAiB,IAAA6lC,WAAA,EANZ,EAQL,IAAA8iC,WAAA,CAAgB,aAAhB,CAA+B,IAAAX,KAAA,EAA/B,CAEF5tB,EAAA91C,KAAA,CAAgB+4B,CAAhB,CA9BC,CAAH,MA+BS,IAAA4sC,OAAA,CAAY,GAAZ,CA/BT,CADF,CAkCA,IAAAK,QAAA,CAAa,GAAb,CAEA,OAAO,CAAC9kE,KAAMqzC,CAAAsB,iBAAP,CAA6BC,WAAYA,CAAzC,CAtCU,CArNL,CA8PduuB,WAAYA,QAAQ,CAACviB,CAAD,CAAMlhB,CAAN,CAAa,CAC/B,KAAM2S,GAAA,CAAa,QAAb,CAEA3S,CAAA7F,KAFA,CAEY+mB,CAFZ,CAEkBlhB,CAAAnhC,MAFlB,CAEgC,CAFhC,CAEoC,IAAAs7B,KAFpC,CAE+C,IAAAA,KAAAn2B,UAAA,CAAoBg8B,CAAAnhC,MAApB,CAF/C,CAAN;AAD+B,CA9PnB,CAoQdumE,QAASA,QAAQ,CAACc,CAAD,CAAK,CACpB,GAA2B,CAA3B,GAAI,IAAAtD,OAAAlpE,OAAJ,CACE,KAAMi5C,GAAA,CAAa,MAAb,CAA0D,IAAAxY,KAA1D,CAAN,CAGF,IAAI6F,EAAQ,IAAA+kC,OAAA,CAAYmB,CAAZ,CACPlmC,EAAL,EACE,IAAAyjC,WAAA,CAAgB,4BAAhB,CAA+CyC,CAA/C,CAAoD,GAApD,CAAyD,IAAApD,KAAA,EAAzD,CAEF,OAAO9iC,EATa,CApQR,CAgRdgmC,UAAWA,QAAQ,EAAG,CACpB,GAA2B,CAA3B,GAAI,IAAApD,OAAAlpE,OAAJ,CACE,KAAMi5C,GAAA,CAAa,MAAb,CAA0D,IAAAxY,KAA1D,CAAN,CAEF,MAAO,KAAAyoC,OAAA,CAAY,CAAZ,CAJa,CAhRR,CAuRdE,KAAMA,QAAQ,CAACoD,CAAD,CAAKC,CAAL,CAASC,CAAT,CAAaC,CAAb,CAAiB,CAC7B,MAAO,KAAAC,UAAA,CAAe,CAAf,CAAkBJ,CAAlB,CAAsBC,CAAtB,CAA0BC,CAA1B,CAA8BC,CAA9B,CADsB,CAvRjB,CA2RdC,UAAWA,QAAQ,CAAC3rE,CAAD,CAAIurE,CAAJ,CAAQC,CAAR,CAAYC,CAAZ,CAAgBC,CAAhB,CAAoB,CACrC,GAAI,IAAAzD,OAAAlpE,OAAJ,CAAyBiB,CAAzB,CAA4B,CACtBqlC,CAAAA,CAAQ,IAAA4iC,OAAA,CAAYjoE,CAAZ,CACZ,KAAI4rE,EAAIvmC,CAAA7F,KACR,IAAIosC,CAAJ,GAAUL,CAAV,EAAgBK,CAAhB,GAAsBJ,CAAtB,EAA4BI,CAA5B,GAAkCH,CAAlC,EAAwCG,CAAxC,GAA8CF,CAA9C,EACK,EAACH,CAAD,EAAQC,CAAR,EAAeC,CAAf,EAAsBC,CAAtB,CADL,CAEE,MAAOrmC,EALiB,CAQ5B,MAAO,CAAA,CAT8B,CA3RzB,CAuSd+kC,OAAQA,QAAQ,CAACmB,CAAD,CAAKC,CAAL,CAASC,CAAT,CAAaC,CAAb,CAAiB,CAE/B,MAAA,CADIrmC,CACJ;AADY,IAAA8iC,KAAA,CAAUoD,CAAV,CAAcC,CAAd,CAAkBC,CAAlB,CAAsBC,CAAtB,CACZ,GACE,IAAAzD,OAAAxhD,MAAA,EACO4e,CAAAA,CAFT,EAIO,CAAA,CANwB,CAvSnB,CAgTd6lC,gBAAiB,CACf,OAAQ,CAACvlE,KAAMqzC,CAAAwB,eAAP,CADO,CAEf,QAAW,CAAC70C,KAAMqzC,CAAAyB,iBAAP,CAFI,CAhTH,CAodhBQ,GAAA12B,UAAA,CAAwB,CACtB7Y,QAASA,QAAQ,CAACs6B,CAAD,CAAaqW,CAAb,CAA8B,CAC7C,IAAI51C,EAAO,IAAX,CACIoyC,EAAM,IAAAqC,WAAArC,IAAA,CAAoB7S,CAApB,CACV,KAAAva,MAAA,CAAa,CACXogD,OAAQ,CADG,CAEXne,QAAS,EAFE,CAGXrR,gBAAiBA,CAHN,CAIX31C,GAAI,CAAColE,KAAM,EAAP,CAAWt+B,KAAM,EAAjB,CAAqBu+B,IAAK,EAA1B,CAJO,CAKXxpC,OAAQ,CAACupC,KAAM,EAAP,CAAWt+B,KAAM,EAAjB,CAAqBu+B,IAAK,EAA1B,CALG,CAMX5uB,OAAQ,EANG,CAQbvE,EAAA,CAAgCC,CAAhC,CAAqCpyC,CAAAoS,QAArC,CACA,KAAI1W,EAAQ,EAAZ,CACI6pE,CACJ,KAAAC,MAAA,CAAa,QACb,IAAKD,CAAL,CAAkBnxB,EAAA,CAAchC,CAAd,CAAlB,CACE,IAAAptB,MAAAygD,UAIA,CAJuB,QAIvB,CAHI3mD,CAGJ,CAHa,IAAAsmD,OAAA,EAGb,CAFA,IAAAM,QAAA,CAAaH,CAAb,CAAyBzmD,CAAzB,CAEA,CADA,IAAA6mD,QAAA,CAAa7mD,CAAb,CACA,CAAApjB,CAAA,CAAQ,YAAR,CAAuB,IAAAkqE,iBAAA,CAAsB,QAAtB;AAAgC,OAAhC,CAErBjzB,EAAAA,CAAUsB,EAAA,CAAU7B,CAAArL,KAAV,CACd/mC,EAAAwlE,MAAA,CAAa,QACb7sE,EAAA,CAAQg6C,CAAR,CAAiB,QAAQ,CAACyM,CAAD,CAAQtmD,CAAR,CAAa,CACpC,IAAI+sE,EAAQ,IAARA,CAAe/sE,CACnBkH,EAAAglB,MAAA,CAAW6gD,CAAX,CAAA,CAAoB,CAACR,KAAM,EAAP,CAAWt+B,KAAM,EAAjB,CAAqBu+B,IAAK,EAA1B,CACpBtlE,EAAAglB,MAAAygD,UAAA,CAAuBI,CACvB,KAAIC,EAAS9lE,CAAAolE,OAAA,EACbplE,EAAA0lE,QAAA,CAAatmB,CAAb,CAAoB0mB,CAApB,CACA9lE,EAAA2lE,QAAA,CAAaG,CAAb,CACA9lE,EAAAglB,MAAA0xB,OAAA14C,KAAA,CAAuB6nE,CAAvB,CACAzmB,EAAA2mB,QAAA,CAAgBjtE,CARoB,CAAtC,CAUA,KAAAksB,MAAAygD,UAAA,CAAuB,IACvB,KAAAD,MAAA,CAAa,MACb,KAAAE,QAAA,CAAatzB,CAAb,CACI4zB,EAAAA,CAGF,GAHEA,CAGI,IAAAC,IAHJD,CAGe,GAHfA,CAGqB,IAAAE,OAHrBF,CAGmC,MAHnCA,CAIF,IAAAG,aAAA,EAJEH,CAKF,SALEA,CAKU,IAAAJ,iBAAA,CAAsB,IAAtB,CAA4B,SAA5B,CALVI,CAMFtqE,CANEsqE,CAOF,IAAAI,SAAA,EAPEJ,CAQF,YAGE/lE,EAAAA,CAAK,CAAC,IAAI4d,QAAJ,CAAa,SAAb,CACN,sBADM,CAEN,kBAFM,CAGN,oBAHM,CAIN,gBAJM;AAKN,yBALM,CAMN,WANM,CAON,MAPM,CAQN,MARM,CASNmoD,CATM,CAAD,EAUH,IAAA5zD,QAVG,CAWHi/B,EAXG,CAYHI,EAZG,CAaHE,EAbG,CAcHH,EAdG,CAeHO,EAfG,CAgBHC,EAhBG,CAiBHC,EAjBG,CAkBH1S,CAlBG,CAoBT,KAAAva,MAAA,CAAa,IAAAwgD,MAAb,CAA0BjnE,IAAAA,EAC1B0B,EAAA47B,QAAA,CAAa0Y,EAAA,CAAUnC,CAAV,CACbnyC,EAAAkK,SAAA,CAAyBioC,CA/EpBjoC,SAgFL,OAAOlK,EAvEsC,CADzB,CA2EtBgmE,IAAK,KA3EiB,CA6EtBC,OAAQ,QA7Ec,CA+EtBE,SAAUA,QAAQ,EAAG,CACnB,IAAItnD,EAAS,EAAb,CACIyiB,EAAM,IAAAvc,MAAA0xB,OADV,CAEI12C,EAAO,IACXrH,EAAA,CAAQ4oC,CAAR,CAAa,QAAQ,CAACx9B,CAAD,CAAO,CAC1B+a,CAAA9gB,KAAA,CAAY,MAAZ,CAAqB+F,CAArB,CAA4B,GAA5B,CAAkC/D,CAAA4lE,iBAAA,CAAsB7hE,CAAtB,CAA4B,GAA5B,CAAlC,CAD0B,CAA5B,CAGIw9B,EAAAjpC,OAAJ,EACEwmB,CAAA9gB,KAAA,CAAY,aAAZ,CAA4BujC,CAAAt+B,KAAA,CAAS,GAAT,CAA5B,CAA4C,IAA5C,CAEF,OAAO6b,EAAA7b,KAAA,CAAY,EAAZ,CAVY,CA/EC,CA4FtB2iE,iBAAkBA,QAAQ,CAAC7hE,CAAD,CAAOm8B,CAAP,CAAe,CACvC,MAAO,WAAP,CAAqBA,CAArB,CAA8B,IAA9B,CACI,IAAAmmC,WAAA,CAAgBtiE,CAAhB,CADJ,CAEI,IAAAgjC,KAAA,CAAUhjC,CAAV,CAFJ,CAGI,IAJmC,CA5FnB,CAmGtBoiE,aAAcA,QAAQ,EAAG,CACvB,IAAIrjE;AAAQ,EAAZ,CACI9C,EAAO,IACXrH,EAAA,CAAQ,IAAAqsB,MAAAiiC,QAAR,CAA4B,QAAQ,CAAC5/B,CAAD,CAAK/c,CAAL,CAAa,CAC/CxH,CAAA9E,KAAA,CAAWqpB,CAAX,CAAgB,WAAhB,CAA8BrnB,CAAAqoC,OAAA,CAAY/9B,CAAZ,CAA9B,CAAoD,GAApD,CAD+C,CAAjD,CAGA,OAAIxH,EAAAxK,OAAJ,CAAyB,MAAzB,CAAkCwK,CAAAG,KAAA,CAAW,GAAX,CAAlC,CAAoD,GAApD,CACO,EAPgB,CAnGH,CA6GtBojE,WAAYA,QAAQ,CAACC,CAAD,CAAU,CAC5B,MAAO,KAAAthD,MAAA,CAAWshD,CAAX,CAAAjB,KAAA/sE,OAAA,CAAkC,MAAlC,CAA2C,IAAA0sB,MAAA,CAAWshD,CAAX,CAAAjB,KAAApiE,KAAA,CAA8B,GAA9B,CAA3C,CAAgF,GAAhF,CAAsF,EADjE,CA7GR,CAiHtB8jC,KAAMA,QAAQ,CAACu/B,CAAD,CAAU,CACtB,MAAO,KAAAthD,MAAA,CAAWshD,CAAX,CAAAv/B,KAAA9jC,KAAA,CAA8B,EAA9B,CADe,CAjHF,CAqHtByiE,QAASA,QAAQ,CAACtzB,CAAD,CAAM0zB,CAAN,CAAcS,CAAd,CAAsBC,CAAtB,CAAmC7qE,CAAnC,CAA2C8qE,CAA3C,CAA6D,CAAA,IACxE1zB,CADwE,CAClEC,CADkE,CAC3DhzC,EAAO,IADoD,CAC9Cme,CAD8C,CACxCohB,CADwC,CAC5BiU,CAChDgzB,EAAA,CAAcA,CAAd,EAA6B5qE,CAC7B,IAAK6qE,CAAAA,CAAL,EAAyBrqE,CAAA,CAAUg2C,CAAA2zB,QAAV,CAAzB,CACED,CACA,CADSA,CACT,EADmB,IAAAV,OAAA,EACnB,CAAA,IAAAsB,IAAA,CAAS,GAAT,CACE,IAAAC,WAAA,CAAgBb,CAAhB,CAAwB,IAAAc,eAAA,CAAoB,GAApB,CAAyBx0B,CAAA2zB,QAAzB,CAAxB,CADF,CAEE,IAAAc,YAAA,CAAiBz0B,CAAjB,CAAsB0zB,CAAtB,CAA8BS,CAA9B,CAAsCC,CAAtC,CAAmD7qE,CAAnD,CAA2D,CAAA,CAA3D,CAFF,CAFF,KAQA,QAAQy2C,CAAAlzC,KAAR,EACA,KAAKqzC,CAAAC,QAAL,CACE75C,CAAA,CAAQy5C,CAAArL,KAAR;AAAkB,QAAQ,CAACxH,CAAD,CAAal5B,CAAb,CAAkB,CAC1CrG,CAAA0lE,QAAA,CAAanmC,CAAAA,WAAb,CAAoChhC,IAAAA,EAApC,CAA+CA,IAAAA,EAA/C,CAA0D,QAAQ,CAACk0C,CAAD,CAAO,CAAEO,CAAA,CAAQP,CAAV,CAAzE,CACIpsC,EAAJ,GAAY+rC,CAAArL,KAAAzuC,OAAZ,CAA8B,CAA9B,CACE0H,CAAAs+B,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyBg1C,CAAzB,CAAgC,GAAhC,CADF,CAGEhzC,CAAA2lE,QAAA,CAAa3yB,CAAb,CALwC,CAA5C,CAQA,MACF,MAAKT,CAAAG,QAAL,CACEnT,CAAA,CAAa,IAAA8I,OAAA,CAAY+J,CAAA14C,MAAZ,CACb,KAAAoiC,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACAinC,EAAA,CAAYjnC,CAAZ,CACA,MACF,MAAKgT,CAAAK,gBAAL,CACE,IAAA8yB,QAAA,CAAatzB,CAAAS,SAAb,CAA2Bt0C,IAAAA,EAA3B,CAAsCA,IAAAA,EAAtC,CAAiD,QAAQ,CAACk0C,CAAD,CAAO,CAAEO,CAAA,CAAQP,CAAV,CAAhE,CACAlT,EAAA,CAAa6S,CAAAkC,SAAb,CAA4B,GAA5B,CAAkC,IAAAtC,UAAA,CAAegB,CAAf,CAAsB,CAAtB,CAAlC,CAA6D,GAC7D,KAAAlX,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACAinC,EAAA,CAAYjnC,CAAZ,CACA,MACF,MAAKgT,CAAAO,iBAAL,CACE,IAAA4yB,QAAA,CAAatzB,CAAAW,KAAb,CAAuBx0C,IAAAA,EAAvB,CAAkCA,IAAAA,EAAlC,CAA6C,QAAQ,CAACk0C,CAAD,CAAO,CAAEM,CAAA,CAAON,CAAT,CAA5D,CACA,KAAAizB,QAAA,CAAatzB,CAAAY,MAAb,CAAwBz0C,IAAAA,EAAxB,CAAmCA,IAAAA,EAAnC,CAA8C,QAAQ,CAACk0C,CAAD,CAAO,CAAEO,CAAA,CAAQP,CAAV,CAA7D,CAEElT,EAAA,CADmB,GAArB,GAAI6S,CAAAkC,SAAJ;AACe,IAAAwyB,KAAA,CAAU/zB,CAAV,CAAgBC,CAAhB,CADf,CAE4B,GAArB,GAAIZ,CAAAkC,SAAJ,CACQ,IAAAtC,UAAA,CAAee,CAAf,CAAqB,CAArB,CADR,CACkCX,CAAAkC,SADlC,CACiD,IAAAtC,UAAA,CAAegB,CAAf,CAAsB,CAAtB,CADjD,CAGQ,GAHR,CAGcD,CAHd,CAGqB,GAHrB,CAG2BX,CAAAkC,SAH3B,CAG0C,GAH1C,CAGgDtB,CAHhD,CAGwD,GAE/D,KAAAlX,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACAinC,EAAA,CAAYjnC,CAAZ,CACA,MACF,MAAKgT,CAAAU,kBAAL,CACE6yB,CAAA,CAASA,CAAT,EAAmB,IAAAV,OAAA,EACnBplE,EAAA0lE,QAAA,CAAatzB,CAAAW,KAAb,CAAuB+yB,CAAvB,CACA9lE,EAAA0mE,IAAA,CAA0B,IAAjB,GAAAt0B,CAAAkC,SAAA,CAAwBwxB,CAAxB,CAAiC9lE,CAAA+mE,IAAA,CAASjB,CAAT,CAA1C,CAA4D9lE,CAAA6mE,YAAA,CAAiBz0B,CAAAY,MAAjB,CAA4B8yB,CAA5B,CAA5D,CACAU,EAAA,CAAYV,CAAZ,CACA,MACF,MAAKvzB,CAAAW,sBAAL,CACE4yB,CAAA,CAASA,CAAT,EAAmB,IAAAV,OAAA,EACnBplE,EAAA0lE,QAAA,CAAatzB,CAAAx1C,KAAb,CAAuBkpE,CAAvB,CACA9lE,EAAA0mE,IAAA,CAASZ,CAAT,CAAiB9lE,CAAA6mE,YAAA,CAAiBz0B,CAAAe,UAAjB,CAAgC2yB,CAAhC,CAAjB,CAA0D9lE,CAAA6mE,YAAA,CAAiBz0B,CAAAgB,WAAjB,CAAiC0yB,CAAjC,CAA1D,CACAU,EAAA,CAAYV,CAAZ,CACA,MACF,MAAKvzB,CAAAc,WAAL,CACEyyB,CAAA,CAASA,CAAT,EAAmB,IAAAV,OAAA,EACfmB,EAAJ,GACEA,CAAA1tE,QAEA,CAFgC,QAAf,GAAAmH,CAAAwlE,MAAA,CAA0B,GAA1B,CAAgC,IAAA1pC,OAAA,CAAY,IAAAspC,OAAA,EAAZ;AAA2B,IAAA4B,kBAAA,CAAuB,GAAvB,CAA4B50B,CAAAruC,KAA5B,CAA3B,CAAmE,MAAnE,CAEjD,CADAwiE,CAAA/yB,SACA,CADkB,CAAA,CAClB,CAAA+yB,CAAAxiE,KAAA,CAAcquC,CAAAruC,KAHhB,CAKAstC,GAAA,CAAqBe,CAAAruC,KAArB,CACA/D,EAAA0mE,IAAA,CAAwB,QAAxB,GAAS1mE,CAAAwlE,MAAT,EAAoCxlE,CAAA+mE,IAAA,CAAS/mE,CAAAgnE,kBAAA,CAAuB,GAAvB,CAA4B50B,CAAAruC,KAA5B,CAAT,CAApC,CACE,QAAQ,EAAG,CACT/D,CAAA0mE,IAAA,CAAwB,QAAxB,GAAS1mE,CAAAwlE,MAAT,EAAoC,GAApC,CAAyC,QAAQ,EAAG,CAC9C7pE,CAAJ,EAAyB,CAAzB,GAAcA,CAAd,EACEqE,CAAA0mE,IAAA,CACE1mE,CAAA+mE,IAAA,CAAS/mE,CAAAinE,kBAAA,CAAuB,GAAvB,CAA4B70B,CAAAruC,KAA5B,CAAT,CADF,CAEE/D,CAAA2mE,WAAA,CAAgB3mE,CAAAinE,kBAAA,CAAuB,GAAvB,CAA4B70B,CAAAruC,KAA5B,CAAhB,CAAuD,IAAvD,CAFF,CAIF/D,EAAA87B,OAAA,CAAYgqC,CAAZ,CAAoB9lE,CAAAinE,kBAAA,CAAuB,GAAvB,CAA4B70B,CAAAruC,KAA5B,CAApB,CANkD,CAApD,CADS,CADb,CAUK+hE,CAVL,EAUe9lE,CAAA2mE,WAAA,CAAgBb,CAAhB,CAAwB9lE,CAAAinE,kBAAA,CAAuB,GAAvB,CAA4B70B,CAAAruC,KAA5B,CAAxB,CAVf,CAYA,EAAI/D,CAAAglB,MAAA4wB,gBAAJ,EAAkCjB,EAAA,CAA8BvC,CAAAruC,KAA9B,CAAlC,GACE/D,CAAAknE,oBAAA,CAAyBpB,CAAzB,CAEFU,EAAA,CAAYV,CAAZ,CACA,MACF,MAAKvzB,CAAAe,iBAAL,CACEP,CAAA;AAAOwzB,CAAP,GAAkBA,CAAA1tE,QAAlB,CAAmC,IAAAusE,OAAA,EAAnC,GAAqD,IAAAA,OAAA,EACrDU,EAAA,CAASA,CAAT,EAAmB,IAAAV,OAAA,EACnBplE,EAAA0lE,QAAA,CAAatzB,CAAAmB,OAAb,CAAyBR,CAAzB,CAA+Bx0C,IAAAA,EAA/B,CAA0C,QAAQ,EAAG,CACnDyB,CAAA0mE,IAAA,CAAS1mE,CAAAmnE,QAAA,CAAap0B,CAAb,CAAT,CAA6B,QAAQ,EAAG,CAClCp3C,CAAJ,EAAyB,CAAzB,GAAcA,CAAd,EACEqE,CAAAonE,2BAAA,CAAgCr0B,CAAhC,CAEF,IAAIX,CAAAoB,SAAJ,CACER,CASA,CATQhzC,CAAAolE,OAAA,EASR,CARAplE,CAAA0lE,QAAA,CAAatzB,CAAArb,SAAb,CAA2Bic,CAA3B,CAQA,CAPAhzC,CAAAwxC,eAAA,CAAoBwB,CAApB,CAOA,CANAhzC,CAAAqnE,wBAAA,CAA6Br0B,CAA7B,CAMA,CALIr3C,CAKJ,EALyB,CAKzB,GALcA,CAKd,EAJEqE,CAAA0mE,IAAA,CAAS1mE,CAAA+mE,IAAA,CAAS/mE,CAAA4mE,eAAA,CAAoB7zB,CAApB,CAA0BC,CAA1B,CAAT,CAAT,CAAqDhzC,CAAA2mE,WAAA,CAAgB3mE,CAAA4mE,eAAA,CAAoB7zB,CAApB,CAA0BC,CAA1B,CAAhB,CAAkD,IAAlD,CAArD,CAIF,CAFAzT,CAEA,CAFav/B,CAAAyxC,iBAAA,CAAsBzxC,CAAA4mE,eAAA,CAAoB7zB,CAApB,CAA0BC,CAA1B,CAAtB,CAEb,CADAhzC,CAAA87B,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACA,CAAIgnC,CAAJ,GACEA,CAAA/yB,SACA,CADkB,CAAA,CAClB,CAAA+yB,CAAAxiE,KAAA,CAAcivC,CAFhB,CAVF,KAcO,CACL3B,EAAA,CAAqBe,CAAArb,SAAAhzB,KAArB,CACIpI,EAAJ,EAAyB,CAAzB,GAAcA,CAAd,EACEqE,CAAA0mE,IAAA,CAAS1mE,CAAA+mE,IAAA,CAAS/mE,CAAAinE,kBAAA,CAAuBl0B,CAAvB;AAA6BX,CAAArb,SAAAhzB,KAA7B,CAAT,CAAT,CAAoE/D,CAAA2mE,WAAA,CAAgB3mE,CAAAinE,kBAAA,CAAuBl0B,CAAvB,CAA6BX,CAAArb,SAAAhzB,KAA7B,CAAhB,CAAiE,IAAjE,CAApE,CAEFw7B,EAAA,CAAav/B,CAAAinE,kBAAA,CAAuBl0B,CAAvB,CAA6BX,CAAArb,SAAAhzB,KAA7B,CACb,IAAI/D,CAAAglB,MAAA4wB,gBAAJ,EAAkCjB,EAAA,CAA8BvC,CAAArb,SAAAhzB,KAA9B,CAAlC,CACEw7B,CAAA,CAAav/B,CAAAyxC,iBAAA,CAAsBlS,CAAtB,CAEfv/B,EAAA87B,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACIgnC,EAAJ,GACEA,CAAA/yB,SACA,CADkB,CAAA,CAClB,CAAA+yB,CAAAxiE,KAAA,CAAcquC,CAAArb,SAAAhzB,KAFhB,CAVK,CAlB+B,CAAxC,CAiCG,QAAQ,EAAG,CACZ/D,CAAA87B,OAAA,CAAYgqC,CAAZ,CAAoB,WAApB,CADY,CAjCd,CAoCAU,EAAA,CAAYV,CAAZ,CArCmD,CAArD,CAsCG,CAAEnqE,CAAAA,CAtCL,CAuCA,MACF,MAAK42C,CAAAkB,eAAL,CACEqyB,CAAA,CAASA,CAAT,EAAmB,IAAAV,OAAA,EACfhzB,EAAA9nC,OAAJ,EACE0oC,CASA,CATQhzC,CAAAsK,OAAA,CAAY8nC,CAAAsB,OAAA3vC,KAAZ,CASR,CARAoa,CAQA,CARO,EAQP,CAPAxlB,CAAA,CAAQy5C,CAAAj3C,UAAR,CAAuB,QAAQ,CAACs3C,CAAD,CAAO,CACpC,IAAII,EAAW7yC,CAAAolE,OAAA,EACfplE,EAAA0lE,QAAA,CAAajzB,CAAb,CAAmBI,CAAnB,CACA10B,EAAAngB,KAAA,CAAU60C,CAAV,CAHoC,CAAtC,CAOA,CAFAtT,CAEA,CAFayT,CAEb,CAFqB,GAErB,CAF2B70B,CAAAlb,KAAA,CAAU,GAAV,CAE3B,CAF4C,GAE5C,CADAjD,CAAA87B,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACA,CAAAinC,CAAA,CAAYV,CAAZ,CAVF,GAYE9yB,CAGA;AAHQhzC,CAAAolE,OAAA,EAGR,CAFAryB,CAEA,CAFO,EAEP,CADA50B,CACA,CADO,EACP,CAAAne,CAAA0lE,QAAA,CAAatzB,CAAAsB,OAAb,CAAyBV,CAAzB,CAAgCD,CAAhC,CAAsC,QAAQ,EAAG,CAC/C/yC,CAAA0mE,IAAA,CAAS1mE,CAAAmnE,QAAA,CAAan0B,CAAb,CAAT,CAA8B,QAAQ,EAAG,CACvChzC,CAAAsnE,sBAAA,CAA2Bt0B,CAA3B,CACAr6C,EAAA,CAAQy5C,CAAAj3C,UAAR,CAAuB,QAAQ,CAACs3C,CAAD,CAAO,CACpCzyC,CAAA0lE,QAAA,CAAajzB,CAAb,CAAmBzyC,CAAAolE,OAAA,EAAnB,CAAkC7mE,IAAAA,EAAlC,CAA6C,QAAQ,CAACs0C,CAAD,CAAW,CAC9D10B,CAAAngB,KAAA,CAAUgC,CAAAyxC,iBAAA,CAAsBoB,CAAtB,CAAV,CAD8D,CAAhE,CADoC,CAAtC,CAKIE,EAAAhvC,KAAJ,EACO/D,CAAAglB,MAAA4wB,gBAGL,EAFE51C,CAAAknE,oBAAA,CAAyBn0B,CAAAl6C,QAAzB,CAEF,CAAA0mC,CAAA,CAAav/B,CAAAunE,OAAA,CAAYx0B,CAAAl6C,QAAZ,CAA0Bk6C,CAAAhvC,KAA1B,CAAqCgvC,CAAAS,SAArC,CAAb,CAAmE,GAAnE,CAAyEr1B,CAAAlb,KAAA,CAAU,GAAV,CAAzE,CAA0F,GAJ5F,EAMEs8B,CANF,CAMeyT,CANf,CAMuB,GANvB,CAM6B70B,CAAAlb,KAAA,CAAU,GAAV,CAN7B,CAM8C,GAE9Cs8B,EAAA,CAAav/B,CAAAyxC,iBAAA,CAAsBlS,CAAtB,CACbv/B,EAAA87B,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CAhBuC,CAAzC,CAiBG,QAAQ,EAAG,CACZv/B,CAAA87B,OAAA,CAAYgqC,CAAZ,CAAoB,WAApB,CADY,CAjBd,CAoBAU,EAAA,CAAYV,CAAZ,CArB+C,CAAjD,CAfF,CAuCA,MACF,MAAKvzB,CAAAoB,qBAAL,CACEX,CAAA,CAAQ,IAAAoyB,OAAA,EACRryB,EAAA;AAAO,EACP,IAAK,CAAAoB,EAAA,CAAa/B,CAAAW,KAAb,CAAL,CACE,KAAMxB,GAAA,CAAa,MAAb,CAAN,CAEF,IAAAm0B,QAAA,CAAatzB,CAAAW,KAAb,CAAuBx0C,IAAAA,EAAvB,CAAkCw0C,CAAlC,CAAwC,QAAQ,EAAG,CACjD/yC,CAAA0mE,IAAA,CAAS1mE,CAAAmnE,QAAA,CAAap0B,CAAAl6C,QAAb,CAAT,CAAqC,QAAQ,EAAG,CAC9CmH,CAAA0lE,QAAA,CAAatzB,CAAAY,MAAb,CAAwBA,CAAxB,CACAhzC,EAAAknE,oBAAA,CAAyBlnE,CAAAunE,OAAA,CAAYx0B,CAAAl6C,QAAZ,CAA0Bk6C,CAAAhvC,KAA1B,CAAqCgvC,CAAAS,SAArC,CAAzB,CACAxzC,EAAAonE,2BAAA,CAAgCr0B,CAAAl6C,QAAhC,CACA0mC,EAAA,CAAav/B,CAAAunE,OAAA,CAAYx0B,CAAAl6C,QAAZ,CAA0Bk6C,CAAAhvC,KAA1B,CAAqCgvC,CAAAS,SAArC,CAAb,CAAmEpB,CAAAkC,SAAnE,CAAkFtB,CAClFhzC,EAAA87B,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACAinC,EAAA,CAAYV,CAAZ,EAAsBvmC,CAAtB,CAN8C,CAAhD,CADiD,CAAnD,CASG,CATH,CAUA,MACF,MAAKgT,CAAAqB,gBAAL,CACEz1B,CAAA,CAAO,EACPxlB,EAAA,CAAQy5C,CAAAl4B,SAAR,CAAsB,QAAQ,CAACu4B,CAAD,CAAO,CACnCzyC,CAAA0lE,QAAA,CAAajzB,CAAb,CAAmBzyC,CAAAolE,OAAA,EAAnB,CAAkC7mE,IAAAA,EAAlC,CAA6C,QAAQ,CAACs0C,CAAD,CAAW,CAC9D10B,CAAAngB,KAAA,CAAU60C,CAAV,CAD8D,CAAhE,CADmC,CAArC,CAKAtT,EAAA,CAAa,GAAb,CAAmBphB,CAAAlb,KAAA,CAAU,GAAV,CAAnB,CAAoC,GACpC,KAAA64B,OAAA,CAAYgqC,CAAZ,CAAoBvmC,CAApB,CACAinC,EAAA,CAAYjnC,CAAZ,CACA,MACF,MAAKgT,CAAAsB,iBAAL,CACE11B,CAAA;AAAO,EACPq1B,EAAA,CAAW,CAAA,CACX76C,EAAA,CAAQy5C,CAAA0B,WAAR,CAAwB,QAAQ,CAAC/c,CAAD,CAAW,CACrCA,CAAAyc,SAAJ,GACEA,CADF,CACa,CAAA,CADb,CADyC,CAA3C,CAKIA,EAAJ,EACEsyB,CAEA,CAFSA,CAET,EAFmB,IAAAV,OAAA,EAEnB,CADA,IAAAtpC,OAAA,CAAYgqC,CAAZ,CAAoB,IAApB,CACA,CAAAntE,CAAA,CAAQy5C,CAAA0B,WAAR,CAAwB,QAAQ,CAAC/c,CAAD,CAAW,CACrCA,CAAAyc,SAAJ,EACET,CACA,CADO/yC,CAAAolE,OAAA,EACP,CAAAplE,CAAA0lE,QAAA,CAAa3uC,CAAAj+B,IAAb,CAA2Bi6C,CAA3B,CAFF,EAIEA,CAJF,CAIShc,CAAAj+B,IAAAoG,KAAA,GAAsBqzC,CAAAc,WAAtB,CACItc,CAAAj+B,IAAAiL,KADJ,CAEK,EAFL,CAEUgzB,CAAAj+B,IAAAY,MAEnBs5C,EAAA,CAAQhzC,CAAAolE,OAAA,EACRplE,EAAA0lE,QAAA,CAAa3uC,CAAAr9B,MAAb,CAA6Bs5C,CAA7B,CACAhzC,EAAA87B,OAAA,CAAY97B,CAAAunE,OAAA,CAAYzB,CAAZ,CAAoB/yB,CAApB,CAA0Bhc,CAAAyc,SAA1B,CAAZ,CAA0DR,CAA1D,CAXyC,CAA3C,CAHF,GAiBEr6C,CAAA,CAAQy5C,CAAA0B,WAAR,CAAwB,QAAQ,CAAC/c,CAAD,CAAW,CACzC/2B,CAAA0lE,QAAA,CAAa3uC,CAAAr9B,MAAb,CAA6B04C,CAAAjoC,SAAA,CAAe5L,IAAAA,EAAf,CAA2ByB,CAAAolE,OAAA,EAAxD,CAAuE7mE,IAAAA,EAAvE,CAAkF,QAAQ,CAACk0C,CAAD,CAAO,CAC/Ft0B,CAAAngB,KAAA,CAAUgC,CAAAqoC,OAAA,CACNtR,CAAAj+B,IAAAoG,KAAA,GAAsBqzC,CAAAc,WAAtB,CAAuCtc,CAAAj+B,IAAAiL,KAAvC,CACG,EADH,CACQgzB,CAAAj+B,IAAAY,MAFF,CAAV,CAGI,GAHJ,CAGU+4C,CAHV,CAD+F,CAAjG,CADyC,CAA3C,CASA,CADAlT,CACA,CADa,GACb,CADmBphB,CAAAlb,KAAA,CAAU,GAAV,CACnB,CADoC,GACpC,CAAA,IAAA64B,OAAA,CAAYgqC,CAAZ;AAAoBvmC,CAApB,CA1BF,CA4BAinC,EAAA,CAAYV,CAAZ,EAAsBvmC,CAAtB,CACA,MACF,MAAKgT,CAAAwB,eAAL,CACE,IAAAjY,OAAA,CAAYgqC,CAAZ,CAAoB,GAApB,CACAU,EAAA,CAAY,GAAZ,CACA,MACF,MAAKj0B,CAAAyB,iBAAL,CACE,IAAAlY,OAAA,CAAYgqC,CAAZ,CAAoB,GAApB,CACAU,EAAA,CAAY,GAAZ,CACA,MACF,MAAKj0B,CAAA8B,iBAAL,CACE,IAAAvY,OAAA,CAAYgqC,CAAZ,CAAoB,GAApB,CACA,CAAAU,CAAA,CAAY,GAAZ,CAzOF,CAX4E,CArHxD,CA8WtBQ,kBAAmBA,QAAQ,CAAC3pE,CAAD,CAAU05B,CAAV,CAAoB,CAC7C,IAAIj+B,EAAMuE,CAANvE,CAAgB,GAAhBA,CAAsBi+B,CAA1B,CACIuuC,EAAM,IAAAhnC,QAAA,EAAAgnC,IACLA,EAAAtsE,eAAA,CAAmBF,CAAnB,CAAL,GACEwsE,CAAA,CAAIxsE,CAAJ,CADF,CACa,IAAAssE,OAAA,CAAY,CAAA,CAAZ,CAAmB/nE,CAAnB,CAA6B,KAA7B,CAAqC,IAAAgrC,OAAA,CAAYtR,CAAZ,CAArC,CAA6D,MAA7D,CAAsE15B,CAAtE,CAAgF,GAAhF,CADb,CAGA,OAAOioE,EAAA,CAAIxsE,CAAJ,CANsC,CA9WzB,CAuXtBgjC,OAAQA,QAAQ,CAACzU,CAAD,CAAK3tB,CAAL,CAAY,CAC1B,GAAK2tB,CAAL,CAEA,MADA,KAAAiX,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyBqpB,CAAzB,CAA6B,GAA7B,CAAkC3tB,CAAlC,CAAyC,GAAzC,CACO2tB,CAAAA,CAHmB,CAvXN,CA6XtB/c,OAAQA,QAAQ,CAACk9D,CAAD,CAAa,CACtB,IAAAxiD,MAAAiiC,QAAAjuD,eAAA,CAAkCwuE,CAAlC,CAAL,GACE,IAAAxiD,MAAAiiC,QAAA,CAAmBugB,CAAnB,CADF,CACmC,IAAApC,OAAA,CAAY,CAAA,CAAZ,CADnC,CAGA;MAAO,KAAApgD,MAAAiiC,QAAA,CAAmBugB,CAAnB,CAJoB,CA7XP,CAoYtBx1B,UAAWA,QAAQ,CAAC3qB,CAAD,CAAKogD,CAAL,CAAmB,CACpC,MAAO,YAAP,CAAsBpgD,CAAtB,CAA2B,GAA3B,CAAiC,IAAAghB,OAAA,CAAYo/B,CAAZ,CAAjC,CAA6D,GADzB,CApYhB,CAwYtBX,KAAMA,QAAQ,CAAC/zB,CAAD,CAAOC,CAAP,CAAc,CAC1B,MAAO,OAAP,CAAiBD,CAAjB,CAAwB,GAAxB,CAA8BC,CAA9B,CAAsC,GADZ,CAxYN,CA4YtB2yB,QAASA,QAAQ,CAACt+C,CAAD,CAAK,CACpB,IAAAiX,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyB,SAAzB,CAAoCqpB,CAApC,CAAwC,GAAxC,CADoB,CA5YA,CAgZtBq/C,IAAKA,QAAQ,CAAC9pE,CAAD,CAAOu2C,CAAP,CAAkBC,CAAlB,CAA8B,CACzC,GAAa,CAAA,CAAb,GAAIx2C,CAAJ,CACEu2C,CAAA,EADF,KAEO,CACL,IAAIpM,EAAO,IAAAzI,QAAA,EAAAyI,KACXA,EAAA/oC,KAAA,CAAU,KAAV,CAAiBpB,CAAjB,CAAuB,IAAvB,CACAu2C,EAAA,EACApM,EAAA/oC,KAAA,CAAU,GAAV,CACIo1C,EAAJ,GACErM,CAAA/oC,KAAA,CAAU,OAAV,CAEA,CADAo1C,CAAA,EACA,CAAArM,CAAA/oC,KAAA,CAAU,GAAV,CAHF,CALK,CAHkC,CAhZrB,CAgatB+oE,IAAKA,QAAQ,CAACxnC,CAAD,CAAa,CACxB,MAAO,IAAP,CAAcA,CAAd,CAA2B,GADH,CAhaJ,CAoatB4nC,QAASA,QAAQ,CAAC5nC,CAAD,CAAa,CAC5B,MAAOA,EAAP,CAAoB,QADQ,CApaR,CAwatB0nC,kBAAmBA,QAAQ,CAACl0B,CAAD,CAAOC,CAAP,CAAc,CAEvC,IAAI00B,EAAoB,iBACxB,OAFsBC,0BAElB/qE,KAAA,CAAqBo2C,CAArB,CAAJ;AACSD,CADT,CACgB,GADhB,CACsBC,CADtB,CAGSD,CAHT,CAGiB,IAHjB,CAGwBC,CAAA9xC,QAAA,CAAcwmE,CAAd,CAAiC,IAAAE,eAAjC,CAHxB,CAGgF,IANzC,CAxanB,CAkbtBhB,eAAgBA,QAAQ,CAAC7zB,CAAD,CAAOC,CAAP,CAAc,CACpC,MAAOD,EAAP,CAAc,GAAd,CAAoBC,CAApB,CAA4B,GADQ,CAlbhB,CAsbtBu0B,OAAQA,QAAQ,CAACx0B,CAAD,CAAOC,CAAP,CAAcQ,CAAd,CAAwB,CACtC,MAAIA,EAAJ,CAAqB,IAAAozB,eAAA,CAAoB7zB,CAApB,CAA0BC,CAA1B,CAArB,CACO,IAAAi0B,kBAAA,CAAuBl0B,CAAvB,CAA6BC,CAA7B,CAF+B,CAtblB,CA2btBk0B,oBAAqBA,QAAQ,CAACxuE,CAAD,CAAO,CAClC,IAAA4lC,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyB,IAAAyzC,iBAAA,CAAsB/4C,CAAtB,CAAzB,CAAsD,GAAtD,CADkC,CA3bd,CA+btB2uE,wBAAyBA,QAAQ,CAAC3uE,CAAD,CAAO,CACtC,IAAA4lC,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyB,IAAAqzC,qBAAA,CAA0B34C,CAA1B,CAAzB,CAA0D,GAA1D,CADsC,CA/blB,CAmctB4uE,sBAAuBA,QAAQ,CAAC5uE,CAAD,CAAO,CACpC,IAAA4lC,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyB,IAAA2zC,mBAAA,CAAwBj5C,CAAxB,CAAzB,CAAwD,GAAxD,CADoC,CAnchB,CAuctB0uE,2BAA4BA,QAAQ,CAAC1uE,CAAD,CAAO,CACzC,IAAA4lC,QAAA,EAAAyI,KAAA/oC,KAAA,CAAyB,IAAA+zC,wBAAA,CAA6Br5C,CAA7B,CAAzB;AAA6D,GAA7D,CADyC,CAvcrB,CA2ctB+4C,iBAAkBA,QAAQ,CAAC/4C,CAAD,CAAO,CAC/B,MAAO,mBAAP,CAA6BA,CAA7B,CAAoC,QADL,CA3cX,CA+ctB24C,qBAAsBA,QAAQ,CAAC34C,CAAD,CAAO,CACnC,MAAO,uBAAP,CAAiCA,CAAjC,CAAwC,QADL,CA/cf,CAmdtBi5C,mBAAoBA,QAAQ,CAACj5C,CAAD,CAAO,CACjC,MAAO,qBAAP,CAA+BA,CAA/B,CAAsC,QADL,CAndb,CAudtB84C,eAAgBA,QAAQ,CAAC94C,CAAD,CAAO,CAC7B,IAAAojC,OAAA,CAAYpjC,CAAZ,CAAkB,iBAAlB,CAAsCA,CAAtC,CAA6C,GAA7C,CAD6B,CAvdT,CA2dtBq5C,wBAAyBA,QAAQ,CAACr5C,CAAD,CAAO,CACtC,MAAO,0BAAP,CAAoCA,CAApC,CAA2C,QADL,CA3dlB,CA+dtBmuE,YAAaA,QAAQ,CAACz0B,CAAD,CAAM0zB,CAAN,CAAcS,CAAd,CAAsBC,CAAtB,CAAmC7qE,CAAnC,CAA2C8qE,CAA3C,CAA6D,CAChF,IAAIzmE,EAAO,IACX,OAAO,SAAQ,EAAG,CAChBA,CAAA0lE,QAAA,CAAatzB,CAAb,CAAkB0zB,CAAlB,CAA0BS,CAA1B,CAAkCC,CAAlC,CAA+C7qE,CAA/C,CAAuD8qE,CAAvD,CADgB,CAF8D,CA/d5D,CAsetBE,WAAYA,QAAQ,CAACt/C,CAAD,CAAK3tB,CAAL,CAAY,CAC9B,IAAIsG,EAAO,IACX,OAAO,SAAQ,EAAG,CAChBA,CAAA87B,OAAA,CAAYzU,CAAZ;AAAgB3tB,CAAhB,CADgB,CAFY,CAteV,CA6etBmuE,kBAAmB,gBA7eG,CA+etBD,eAAgBA,QAAQ,CAACE,CAAD,CAAI,CAC1B,MAAO,KAAP,CAAe5sE,CAAC,MAADA,CAAU4sE,CAAAnF,WAAA,CAAa,CAAb,CAAAzmE,SAAA,CAAyB,EAAzB,CAAVhB,OAAA,CAA+C,EAA/C,CADW,CA/eN,CAmftBmtC,OAAQA,QAAQ,CAAC3uC,CAAD,CAAQ,CACtB,GAAItB,CAAA,CAASsB,CAAT,CAAJ,CAAqB,MAAO,GAAP,CAAaA,CAAAwH,QAAA,CAAc,IAAA2mE,kBAAd,CAAsC,IAAAD,eAAtC,CAAb,CAA0E,GAC/F,IAAIpvE,CAAA,CAASkB,CAAT,CAAJ,CAAqB,MAAOA,EAAAwC,SAAA,EAC5B,IAAc,CAAA,CAAd,GAAIxC,CAAJ,CAAoB,MAAO,MAC3B,IAAc,CAAA,CAAd,GAAIA,CAAJ,CAAqB,MAAO,OAC5B,IAAc,IAAd,GAAIA,CAAJ,CAAoB,MAAO,MAC3B,IAAqB,WAArB,GAAI,MAAOA,EAAX,CAAkC,MAAO,WAEzC,MAAM63C,GAAA,CAAa,KAAb,CAAN,CARsB,CAnfF,CA8ftB6zB,OAAQA,QAAQ,CAAC2C,CAAD,CAAOC,CAAP,CAAa,CAC3B,IAAI3gD,EAAK,GAALA,CAAY,IAAArC,MAAAogD,OAAA,EACX2C,EAAL,EACE,IAAAzpC,QAAA,EAAA+mC,KAAArnE,KAAA,CAAyBqpB,CAAzB,EAA+B2gD,CAAA,CAAO,GAAP,CAAaA,CAAb,CAAoB,EAAnD,EAEF,OAAO3gD,EALoB,CA9fP,CAsgBtBiX,QAASA,QAAQ,EAAG,CAClB,MAAO,KAAAtZ,MAAA,CAAW,IAAAA,MAAAygD,UAAX,CADW,CAtgBE,CAihBxB/wB;EAAA52B,UAAA,CAA2B,CACzB7Y,QAASA,QAAQ,CAACs6B,CAAD,CAAaqW,CAAb,CAA8B,CAC7C,IAAI51C,EAAO,IAAX,CACIoyC,EAAM,IAAAqC,WAAArC,IAAA,CAAoB7S,CAApB,CACV,KAAAA,WAAA,CAAkBA,CAClB,KAAAqW,gBAAA,CAAuBA,CACvBzD,EAAA,CAAgCC,CAAhC,CAAqCpyC,CAAAoS,QAArC,CACA,KAAImzD,CAAJ,CACIzpC,CACJ,IAAKypC,CAAL,CAAkBnxB,EAAA,CAAchC,CAAd,CAAlB,CACEtW,CAAA,CAAS,IAAA4pC,QAAA,CAAaH,CAAb,CAEP5yB,EAAAA,CAAUsB,EAAA,CAAU7B,CAAArL,KAAV,CACd,KAAI2P,CACA/D,EAAJ,GACE+D,CACA,CADS,EACT,CAAA/9C,CAAA,CAAQg6C,CAAR,CAAiB,QAAQ,CAACyM,CAAD,CAAQtmD,CAAR,CAAa,CACpC,IAAI0S,EAAQxL,CAAA0lE,QAAA,CAAatmB,CAAb,CACZA,EAAA5zC,MAAA,CAAcA,CACdkrC,EAAA14C,KAAA,CAAYwN,CAAZ,CACA4zC,EAAA2mB,QAAA,CAAgBjtE,CAJoB,CAAtC,CAFF,CASA,KAAI0gC,EAAc,EAClB7gC,EAAA,CAAQy5C,CAAArL,KAAR,CAAkB,QAAQ,CAACxH,CAAD,CAAa,CACrC/F,CAAAx7B,KAAA,CAAiBgC,CAAA0lE,QAAA,CAAanmC,CAAAA,WAAb,CAAjB,CADqC,CAAvC,CAGIt/B,EAAAA,CAAyB,CAApB,GAAAmyC,CAAArL,KAAAzuC,OAAA,CAAwBsD,CAAxB,CACoB,CAApB,GAAAw2C,CAAArL,KAAAzuC,OAAA,CAAwBkhC,CAAA,CAAY,CAAZ,CAAxB,CACA,QAAQ,CAACx0B,CAAD,CAAQkb,CAAR,CAAgB,CACtB,IAAIqb,CACJ5iC,EAAA,CAAQ6gC,CAAR,CAAqB,QAAQ,CAAC6P,CAAD,CAAM,CACjC9N,CAAA,CAAY8N,CAAA,CAAIrkC,CAAJ,CAAWkb,CAAX,CADqB,CAAnC,CAGA,OAAOqb,EALe,CAO7BO,EAAJ,GACE77B,CAAA67B,OADF,CACcmsC,QAAQ,CAACjjE,CAAD,CAAQtL,CAAR,CAAewmB,CAAf,CAAuB,CACzC,MAAO4b,EAAA,CAAO92B,CAAP,CAAckb,CAAd,CAAsBxmB,CAAtB,CADkC,CAD7C,CAKIg9C,EAAJ,GACEz2C,CAAAy2C,OADF,CACcA,CADd,CAGAz2C,EAAA47B,QAAA;AAAa0Y,EAAA,CAAUnC,CAAV,CACbnyC,EAAAkK,SAAA,CAAyBioC,CAtkBpBjoC,SAukBL,OAAOlK,EA7CsC,CADtB,CAiDzBylE,QAASA,QAAQ,CAACtzB,CAAD,CAAMv5C,CAAN,CAAe8C,CAAf,CAAuB,CAAA,IAClCo3C,CADkC,CAC5BC,CAD4B,CACrBhzC,EAAO,IADc,CACRme,CAC9B,IAAIi0B,CAAA5mC,MAAJ,CACE,MAAO,KAAAkrC,OAAA,CAAYtE,CAAA5mC,MAAZ,CAAuB4mC,CAAA2zB,QAAvB,CAET,QAAQ3zB,CAAAlzC,KAAR,EACA,KAAKqzC,CAAAG,QAAL,CACE,MAAO,KAAAh5C,MAAA,CAAW04C,CAAA14C,MAAX,CAAsBb,CAAtB,CACT,MAAK05C,CAAAK,gBAAL,CAEE,MADAI,EACO,CADC,IAAA0yB,QAAA,CAAatzB,CAAAS,SAAb,CACD,CAAA,IAAA,CAAK,OAAL,CAAeT,CAAAkC,SAAf,CAAA,CAA6BtB,CAA7B,CAAoCn6C,CAApC,CACT,MAAK05C,CAAAO,iBAAL,CAGE,MAFAC,EAEO,CAFA,IAAA2yB,QAAA,CAAatzB,CAAAW,KAAb,CAEA,CADPC,CACO,CADC,IAAA0yB,QAAA,CAAatzB,CAAAY,MAAb,CACD,CAAA,IAAA,CAAK,QAAL,CAAgBZ,CAAAkC,SAAhB,CAAA,CAA8BvB,CAA9B,CAAoCC,CAApC,CAA2Cn6C,CAA3C,CACT,MAAK05C,CAAAU,kBAAL,CAGE,MAFAF,EAEO,CAFA,IAAA2yB,QAAA,CAAatzB,CAAAW,KAAb,CAEA,CADPC,CACO,CADC,IAAA0yB,QAAA,CAAatzB,CAAAY,MAAb,CACD,CAAA,IAAA,CAAK,QAAL,CAAgBZ,CAAAkC,SAAhB,CAAA,CAA8BvB,CAA9B,CAAoCC,CAApC,CAA2Cn6C,CAA3C,CACT,MAAK05C,CAAAW,sBAAL,CACE,MAAO,KAAA,CAAK,WAAL,CAAA,CACL,IAAAwyB,QAAA,CAAatzB,CAAAx1C,KAAb,CADK;AAEL,IAAA8oE,QAAA,CAAatzB,CAAAe,UAAb,CAFK,CAGL,IAAAuyB,QAAA,CAAatzB,CAAAgB,WAAb,CAHK,CAILv6C,CAJK,CAMT,MAAK05C,CAAAc,WAAL,CAEE,MADAhC,GAAA,CAAqBe,CAAAruC,KAArB,CAA+B/D,CAAAu/B,WAA/B,CACO,CAAAv/B,CAAA4zB,WAAA,CAAgBwe,CAAAruC,KAAhB,CACgB/D,CAAA41C,gBADhB,EACwCjB,EAAA,CAA8BvC,CAAAruC,KAA9B,CADxC,CAEgBlL,CAFhB,CAEyB8C,CAFzB,CAEiCqE,CAAAu/B,WAFjC,CAGT,MAAKgT,CAAAe,iBAAL,CAOE,MANAP,EAMO,CANA,IAAA2yB,QAAA,CAAatzB,CAAAmB,OAAb,CAAyB,CAAA,CAAzB,CAAgC,CAAE53C,CAAAA,CAAlC,CAMA,CALFy2C,CAAAoB,SAKE,GAJLnC,EAAA,CAAqBe,CAAArb,SAAAhzB,KAArB,CAAwC/D,CAAAu/B,WAAxC,CACA,CAAAyT,CAAA,CAAQZ,CAAArb,SAAAhzB,KAGH,EADHquC,CAAAoB,SACG,GADWR,CACX,CADmB,IAAA0yB,QAAA,CAAatzB,CAAArb,SAAb,CACnB,EAAAqb,CAAAoB,SAAA,CACL,IAAAozB,eAAA,CAAoB7zB,CAApB,CAA0BC,CAA1B,CAAiCn6C,CAAjC,CAA0C8C,CAA1C,CAAkDqE,CAAAu/B,WAAlD,CADK,CAEL,IAAA0nC,kBAAA,CAAuBl0B,CAAvB,CAA6BC,CAA7B,CAAoChzC,CAAA41C,gBAApC,CAA0D/8C,CAA1D,CAAmE8C,CAAnE,CAA2EqE,CAAAu/B,WAA3E,CACJ,MAAKgT,CAAAkB,eAAL,CAOE,MANAt1B,EAMO,CANA,EAMA,CALPxlB,CAAA,CAAQy5C,CAAAj3C,UAAR;AAAuB,QAAQ,CAACs3C,CAAD,CAAO,CACpCt0B,CAAAngB,KAAA,CAAUgC,CAAA0lE,QAAA,CAAajzB,CAAb,CAAV,CADoC,CAAtC,CAKO,CAFHL,CAAA9nC,OAEG,GAFS0oC,CAET,CAFiB,IAAA5gC,QAAA,CAAaggC,CAAAsB,OAAA3vC,KAAb,CAEjB,EADFquC,CAAA9nC,OACE,GADU0oC,CACV,CADkB,IAAA0yB,QAAA,CAAatzB,CAAAsB,OAAb,CAAyB,CAAA,CAAzB,CAClB,EAAAtB,CAAA9nC,OAAA,CACL,QAAQ,CAACtF,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAEtC,IADA,IAAIjY,EAAS,EAAb,CACSllC,EAAI,CAAb,CAAgBA,CAAhB,CAAoB4kB,CAAA7lB,OAApB,CAAiC,EAAEiB,CAAnC,CACEklC,CAAAzgC,KAAA,CAAYmgB,CAAA,CAAK5kB,CAAL,CAAA,CAAQyL,CAAR,CAAekb,CAAf,CAAuB4b,CAAvB,CAA+B4a,CAA/B,CAAZ,CAEEh9C,EAAAA,CAAQs5C,CAAA5yC,MAAA,CAAY7B,IAAAA,EAAZ,CAAuBkgC,CAAvB,CAA+BiY,CAA/B,CACZ,OAAO79C,EAAA,CAAU,CAACA,QAAS0F,IAAAA,EAAV,CAAqBwF,KAAMxF,IAAAA,EAA3B,CAAsC7E,MAAOA,CAA7C,CAAV,CAAgEA,CANjC,CADnC,CASL,QAAQ,CAACsL,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACtC,IAAIwxB,EAAMl1B,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAAV,CACIh9C,CACJ,IAAiB,IAAjB,EAAIwuE,CAAAxuE,MAAJ,CAAuB,CACrB+3C,EAAA,CAAiBy2B,CAAArvE,QAAjB,CAA8BmH,CAAAu/B,WAA9B,CACAoS,GAAA,CAAmBu2B,CAAAxuE,MAAnB,CAA8BsG,CAAAu/B,WAA9B,CACId,EAAAA,CAAS,EACb,KAAS,IAAAllC,EAAI,CAAb,CAAgBA,CAAhB,CAAoB4kB,CAAA7lB,OAApB,CAAiC,EAAEiB,CAAnC,CACEklC,CAAAzgC,KAAA,CAAYyzC,EAAA,CAAiBtzB,CAAA,CAAK5kB,CAAL,CAAA,CAAQyL,CAAR,CAAekb,CAAf,CAAuB4b,CAAvB,CAA+B4a,CAA/B,CAAjB,CAAyD12C,CAAAu/B,WAAzD,CAAZ,CAEF7lC,EAAA,CAAQ+3C,EAAA,CAAiBy2B,CAAAxuE,MAAA0G,MAAA,CAAgB8nE,CAAArvE,QAAhB,CAA6B4lC,CAA7B,CAAjB,CAAuDz+B,CAAAu/B,WAAvD,CAPa,CASvB,MAAO1mC,EAAA;AAAU,CAACa,MAAOA,CAAR,CAAV,CAA2BA,CAZI,CAc5C,MAAK64C,CAAAoB,qBAAL,CAGE,MAFAZ,EAEO,CAFA,IAAA2yB,QAAA,CAAatzB,CAAAW,KAAb,CAAuB,CAAA,CAAvB,CAA6B,CAA7B,CAEA,CADPC,CACO,CADC,IAAA0yB,QAAA,CAAatzB,CAAAY,MAAb,CACD,CAAA,QAAQ,CAAChuC,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAC7C,IAAIyxB,EAAMp1B,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CACNwxB,EAAAA,CAAMl1B,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACVjF,GAAA,CAAiB02B,CAAAzuE,MAAjB,CAA4BsG,CAAAu/B,WAA5B,CACAwS,GAAA,CAAwBo2B,CAAAtvE,QAAxB,CACAsvE,EAAAtvE,QAAA,CAAYsvE,CAAApkE,KAAZ,CAAA,CAAwBmkE,CACxB,OAAOrvE,EAAA,CAAU,CAACa,MAAOwuE,CAAR,CAAV,CAAyBA,CANa,CAQjD,MAAK31B,CAAAqB,gBAAL,CAKE,MAJAz1B,EAIO,CAJA,EAIA,CAHPxlB,CAAA,CAAQy5C,CAAAl4B,SAAR,CAAsB,QAAQ,CAACu4B,CAAD,CAAO,CACnCt0B,CAAAngB,KAAA,CAAUgC,CAAA0lE,QAAA,CAAajzB,CAAb,CAAV,CADmC,CAArC,CAGO,CAAA,QAAQ,CAACztC,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAE7C,IADA,IAAIh9C,EAAQ,EAAZ,CACSH,EAAI,CAAb,CAAgBA,CAAhB,CAAoB4kB,CAAA7lB,OAApB,CAAiC,EAAEiB,CAAnC,CACEG,CAAAsE,KAAA,CAAWmgB,CAAA,CAAK5kB,CAAL,CAAA,CAAQyL,CAAR,CAAekb,CAAf,CAAuB4b,CAAvB,CAA+B4a,CAA/B,CAAX,CAEF,OAAO79C,EAAA,CAAU,CAACa,MAAOA,CAAR,CAAV,CAA2BA,CALW,CAOjD,MAAK64C,CAAAsB,iBAAL,CAiBE,MAhBA11B,EAgBO,CAhBA,EAgBA,CAfPxlB,CAAA,CAAQy5C,CAAA0B,WAAR,CAAwB,QAAQ,CAAC/c,CAAD,CAAW,CACrCA,CAAAyc,SAAJ,CACEr1B,CAAAngB,KAAA,CAAU,CAAClF,IAAKkH,CAAA0lE,QAAA,CAAa3uC,CAAAj+B,IAAb,CAAN;AACC06C,SAAU,CAAA,CADX,CAEC95C,MAAOsG,CAAA0lE,QAAA,CAAa3uC,CAAAr9B,MAAb,CAFR,CAAV,CADF,CAMEykB,CAAAngB,KAAA,CAAU,CAAClF,IAAKi+B,CAAAj+B,IAAAoG,KAAA,GAAsBqzC,CAAAc,WAAtB,CACAtc,CAAAj+B,IAAAiL,KADA,CAEC,EAFD,CAEMgzB,CAAAj+B,IAAAY,MAFZ,CAGC85C,SAAU,CAAA,CAHX,CAIC95C,MAAOsG,CAAA0lE,QAAA,CAAa3uC,CAAAr9B,MAAb,CAJR,CAAV,CAPuC,CAA3C,CAeO,CAAA,QAAQ,CAACsL,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAE7C,IADA,IAAIh9C,EAAQ,EAAZ,CACSH,EAAI,CAAb,CAAgBA,CAAhB,CAAoB4kB,CAAA7lB,OAApB,CAAiC,EAAEiB,CAAnC,CACM4kB,CAAA,CAAK5kB,CAAL,CAAAi6C,SAAJ,CACE95C,CAAA,CAAMykB,CAAA,CAAK5kB,CAAL,CAAAT,IAAA,CAAYkM,CAAZ,CAAmBkb,CAAnB,CAA2B4b,CAA3B,CAAmC4a,CAAnC,CAAN,CADF,CACsDv4B,CAAA,CAAK5kB,CAAL,CAAAG,MAAA,CAAcsL,CAAd,CAAqBkb,CAArB,CAA6B4b,CAA7B,CAAqC4a,CAArC,CADtD,CAGEh9C,CAAA,CAAMykB,CAAA,CAAK5kB,CAAL,CAAAT,IAAN,CAHF,CAGuBqlB,CAAA,CAAK5kB,CAAL,CAAAG,MAAA,CAAcsL,CAAd,CAAqBkb,CAArB,CAA6B4b,CAA7B,CAAqC4a,CAArC,CAGzB,OAAO79C,EAAA,CAAU,CAACa,MAAOA,CAAR,CAAV,CAA2BA,CATW,CAWjD,MAAK64C,CAAAwB,eAAL,CACE,MAAO,SAAQ,CAAC/uC,CAAD,CAAQ,CACrB,MAAOnM,EAAA,CAAU,CAACa,MAAOsL,CAAR,CAAV,CAA2BA,CADb,CAGzB,MAAKutC,CAAAyB,iBAAL,CACE,MAAO,SAAQ,CAAChvC,CAAD,CAAQkb,CAAR,CAAgB,CAC7B,MAAOrnB,EAAA,CAAU,CAACa,MAAOwmB,CAAR,CAAV,CAA4BA,CADN,CAGjC,MAAKqyB,CAAA8B,iBAAL,CACE,MAAO,SAAQ,CAACrvC,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB,CACrC,MAAOjjC,EAAA,CAAU,CAACa,MAAOoiC,CAAR,CAAV,CAA4BA,CADE,CA9HzC,CALsC,CAjDf;AA0LzB,SAAUssC,QAAQ,CAACv1B,CAAD,CAAWh6C,CAAX,CAAoB,CACpC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMirC,CAAA,CAAS7tC,CAAT,CAAgBkb,CAAhB,CAAwB4b,CAAxB,CAAgC4a,CAAhC,CAER9uC,EAAA,CADExL,CAAA,CAAUwL,CAAV,CAAJ,CACQ,CAACA,CADT,CAGQ,CAER,OAAO/O,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAPa,CADX,CA1Lb,CAqMzB,SAAUygE,QAAQ,CAACx1B,CAAD,CAAWh6C,CAAX,CAAoB,CACpC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMirC,CAAA,CAAS7tC,CAAT,CAAgBkb,CAAhB,CAAwB4b,CAAxB,CAAgC4a,CAAhC,CAER9uC,EAAA,CADExL,CAAA,CAAUwL,CAAV,CAAJ,CACQ,CAACA,CADT,CAGQ,CAER,OAAO/O,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAPa,CADX,CArMb,CAgNzB,SAAU0gE,QAAQ,CAACz1B,CAAD,CAAWh6C,CAAX,CAAoB,CACpC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAM,CAACirC,CAAA,CAAS7tC,CAAT,CAAgBkb,CAAhB,CAAwB4b,CAAxB,CAAgC4a,CAAhC,CACX,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADX,CAhNb,CAsNzB,UAAW2gE,QAAQ,CAACx1B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAC7C,IAAIyxB,EAAMp1B,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CACNwxB,EAAAA,CAAMl1B,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACN9uC,EAAAA,CAAMqqC,EAAA,CAAOk2B,CAAP,CAAYD,CAAZ,CACV,OAAOrvE,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAJa,CADP,CAtNjB,CA8NzB,UAAW4gE,QAAQ,CAACz1B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAC7C,IAAIyxB,EAAMp1B,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CACNwxB,EAAAA,CAAMl1B,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACN9uC,EAAAA,EAAOxL,CAAA,CAAU+rE,CAAV,CAAA,CAAiBA,CAAjB,CAAuB,CAA9BvgE,GAAoCxL,CAAA,CAAU8rE,CAAV,CAAA,CAAiBA,CAAjB,CAAuB,CAA3DtgE,CACJ,OAAO/O,EAAA;AAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAJa,CADP,CA9NjB,CAsOzB,UAAW6gE,QAAQ,CAAC11B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,CAA4CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAChD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADP,CAtOjB,CA4OzB,UAAW8gE,QAAQ,CAAC31B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,CAA4CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAChD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADP,CA5OjB,CAkPzB,UAAW+gE,QAAQ,CAAC51B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,CAA4CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAChD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADP,CAlPjB,CAwPzB,YAAaghE,QAAQ,CAAC71B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CAC1C,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,GAA8CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAClD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADL,CAxPnB,CA8PzB,YAAaihE,QAAQ,CAAC91B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CAC1C,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,GAA8CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAClD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV;AAAyBA,CAFa,CADL,CA9PnB,CAoQzB,WAAYkhE,QAAQ,CAAC/1B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACzC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,EAA6CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACjD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADN,CApQlB,CA0QzB,WAAYmhE,QAAQ,CAACh2B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACzC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,EAA6CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACjD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADN,CA1QlB,CAgRzB,UAAWohE,QAAQ,CAACj2B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,CAA4CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAChD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADP,CAhRjB,CAsRzB,UAAWqhE,QAAQ,CAACl2B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACxC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,CAA4CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAChD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADP,CAtRjB,CA4RzB,WAAYshE,QAAQ,CAACn2B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACzC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,EAA6CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACjD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADN,CA5RlB,CAkSzB,WAAYuhE,QAAQ,CAACp2B,CAAD;AAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACzC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,EAA6CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACjD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADN,CAlSlB,CAwSzB,WAAYwhE,QAAQ,CAACr2B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACzC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,EAA6CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACjD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADN,CAxSlB,CA8SzB,WAAYyhE,QAAQ,CAACt2B,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB,CACzC,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMmrC,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAN9uC,EAA6CorC,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CACjD,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADN,CA9SlB,CAoTzB,YAAa0hE,QAAQ,CAAC1sE,CAAD,CAAOu2C,CAAP,CAAkBC,CAAlB,CAA8Bv6C,CAA9B,CAAuC,CAC1D,MAAO,SAAQ,CAACmM,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzC9uC,CAAAA,CAAMhL,CAAA,CAAKoI,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAA,CAAsCvD,CAAA,CAAUnuC,CAAV,CAAiBkb,CAAjB,CAAyB4b,CAAzB,CAAiC4a,CAAjC,CAAtC,CAAiFtD,CAAA,CAAWpuC,CAAX,CAAkBkb,CAAlB,CAA0B4b,CAA1B,CAAkC4a,CAAlC,CAC3F,OAAO79C,EAAA,CAAU,CAACa,MAAOkO,CAAR,CAAV,CAAyBA,CAFa,CADW,CApTnC,CA0TzBlO,MAAOA,QAAQ,CAACA,CAAD,CAAQb,CAAR,CAAiB,CAC9B,MAAO,SAAQ,EAAG,CAAE,MAAOA,EAAA,CAAU,CAACA,QAAS0F,IAAAA,EAAV,CAAqBwF,KAAMxF,IAAAA,EAA3B,CAAsC7E,MAAOA,CAA7C,CAAV,CAAgEA,CAAzE,CADY,CA1TP,CA6TzBk6B,WAAYA,QAAQ,CAAC7vB,CAAD;AAAO6xC,CAAP,CAAwB/8C,CAAxB,CAAiC8C,CAAjC,CAAyC4jC,CAAzC,CAAqD,CACvE,MAAO,SAAQ,CAACv6B,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzClK,CAAAA,CAAOtsB,CAAA,EAAWnc,CAAX,GAAmBmc,EAAnB,CAA6BA,CAA7B,CAAsClb,CAC7CrJ,EAAJ,EAAyB,CAAzB,GAAcA,CAAd,EAA8B6wC,CAA9B,EAAwC,CAAAA,CAAA,CAAKzoC,CAAL,CAAxC,GACEyoC,CAAA,CAAKzoC,CAAL,CADF,CACe,EADf,CAGIrK,EAAAA,CAAQ8yC,CAAA,CAAOA,CAAA,CAAKzoC,CAAL,CAAP,CAAoBxF,IAAAA,EAC5Bq3C,EAAJ,EACEnE,EAAA,CAAiB/3C,CAAjB,CAAwB6lC,CAAxB,CAEF,OAAI1mC,EAAJ,CACS,CAACA,QAAS2zC,CAAV,CAAgBzoC,KAAMA,CAAtB,CAA4BrK,MAAOA,CAAnC,CADT,CAGSA,CAZoC,CADwB,CA7ThD,CA8UzBktE,eAAgBA,QAAQ,CAAC7zB,CAAD,CAAOC,CAAP,CAAcn6C,CAAd,CAAuB8C,CAAvB,CAA+B4jC,CAA/B,CAA2C,CACjE,MAAO,SAAQ,CAACv6B,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CAC7C,IAAIyxB,EAAMp1B,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CAAV,CACIwxB,CADJ,CAEIxuE,CACO,KAAX,EAAIyuE,CAAJ,GACED,CAUA,CAVMl1B,CAAA,CAAMhuC,CAAN,CAAakb,CAAb,CAAqB4b,CAArB,CAA6B4a,CAA7B,CAUN,CATAwxB,CASA,EAnnDQ,EAmnDR,CARA72B,EAAA,CAAqB62B,CAArB,CAA0B3oC,CAA1B,CAQA,CAPI5jC,CAOJ,EAPyB,CAOzB,GAPcA,CAOd,GANEo2C,EAAA,CAAwBo2B,CAAxB,CACA,CAAIA,CAAJ,EAAa,CAAAA,CAAA,CAAID,CAAJ,CAAb,GACEC,CAAA,CAAID,CAAJ,CADF,CACa,EADb,CAKF,EADAxuE,CACA,CADQyuE,CAAA,CAAID,CAAJ,CACR,CAAAz2B,EAAA,CAAiB/3C,CAAjB,CAAwB6lC,CAAxB,CAXF,CAaA,OAAI1mC,EAAJ,CACS,CAACA,QAASsvE,CAAV,CAAepkE,KAAMmkE,CAArB,CAA0BxuE,MAAOA,CAAjC,CADT,CAGSA,CApBoC,CADkB,CA9U1C,CAuWzButE,kBAAmBA,QAAQ,CAACl0B,CAAD,CAAOC,CAAP,CAAc4C,CAAd,CAA+B/8C,CAA/B,CAAwC8C,CAAxC,CAAgD4jC,CAAhD,CAA4D,CACrF,MAAO,SAAQ,CAACv6B,CAAD,CAAQkb,CAAR,CAAgB4b,CAAhB,CAAwB4a,CAAxB,CAAgC,CACzCyxB,CAAAA,CAAMp1B,CAAA,CAAK/tC,CAAL,CAAYkb,CAAZ,CAAoB4b,CAApB,CAA4B4a,CAA5B,CACN/6C,EAAJ,EAAyB,CAAzB,GAAcA,CAAd,GACEo2C,EAAA,CAAwBo2B,CAAxB,CACA,CAAIA,CAAJ,EAAa,CAAAA,CAAA,CAAIn1B,CAAJ,CAAb,GACEm1B,CAAA,CAAIn1B,CAAJ,CADF,CACe,EADf,CAFF,CAMIt5C,EAAAA,CAAe,IAAP,EAAAyuE,CAAA,CAAcA,CAAA,CAAIn1B,CAAJ,CAAd,CAA2Bz0C,IAAAA,EACvC,EAAIq3C,CAAJ;AAAuBjB,EAAA,CAA8B3B,CAA9B,CAAvB,GACEvB,EAAA,CAAiB/3C,CAAjB,CAAwB6lC,CAAxB,CAEF,OAAI1mC,EAAJ,CACS,CAACA,QAASsvE,CAAV,CAAepkE,KAAMivC,CAArB,CAA4Bt5C,MAAOA,CAAnC,CADT,CAGSA,CAfoC,CADsC,CAvW9D,CA2XzBg9C,OAAQA,QAAQ,CAAClrC,CAAD,CAAQu6D,CAAR,CAAiB,CAC/B,MAAO,SAAQ,CAAC/gE,CAAD,CAAQtL,CAAR,CAAewmB,CAAf,CAAuBw2B,CAAvB,CAA+B,CAC5C,MAAIA,EAAJ,CAAmBA,CAAA,CAAOqvB,CAAP,CAAnB,CACOv6D,CAAA,CAAMxG,CAAN,CAAatL,CAAb,CAAoBwmB,CAApB,CAFqC,CADf,CA3XR,CAsY3B,KAAIq2B,GAASA,QAAQ,CAACH,CAAD,CAAQhkC,CAAR,CAAiB6Q,CAAjB,CAA0B,CAC7C,IAAAmzB,MAAA,CAAaA,CACb,KAAAhkC,QAAA,CAAeA,CACf,KAAA6Q,QAAA,CAAeA,CACf,KAAAmvB,IAAA,CAAW,IAAIG,CAAJ,CAAQ6D,CAAR,CAAenzB,CAAf,CACX,KAAAsmD,YAAA,CAAmBtmD,CAAAjY,IAAA,CAAc,IAAI0pC,EAAJ,CAAmB,IAAAtC,IAAnB,CAA6BhgC,CAA7B,CAAd,CACc,IAAIoiC,EAAJ,CAAgB,IAAApC,IAAhB,CAA0BhgC,CAA1B,CANY,CAS/CmkC,GAAAz4B,UAAA,CAAmB,CACjBtf,YAAa+3C,EADI,CAGjBz1C,MAAOA,QAAQ,CAACi4B,CAAD,CAAO,CACpB,MAAO,KAAAwwC,YAAAtkE,QAAA,CAAyB8zB,CAAzB,CAA+B,IAAA9V,QAAA2yB,gBAA/B,CADa,CAHL,CAYnB,KAAIf,GAAgBt8C,MAAAulB,UAAApjB,QAApB,CAy5EI0mD,GAAarpD,CAAA,CAAO,MAAP,CAz5EjB,CA25EI0pD,GAAe,CACjB7nB,KAAM,MADW,CAEjB8oB,IAAK,KAFY,CAGjBC,IAAK,KAHY,CAMjB9oB,aAAc,aANG,CAOjB+oB,GAAI,IAPa,CA35EnB;AAmhHI0C,GAAyBvtD,CAAA,CAAO,UAAP,CAnhH7B,CAy1HIwuD,EAAiBzuD,CAAAyI,SAAAkW,cAAA,CAA8B,GAA9B,CAz1HrB,CA01HIgwC,GAAY7e,EAAA,CAAW9vC,CAAA8N,SAAAkf,KAAX,CAsLhB4hC,GAAAvmC,QAAA,CAAyB,CAAC,WAAD,CAyGzB9N,GAAA8N,QAAA,CAA0B,CAAC,UAAD,CA+T1B,KAAI4pC,GAAa,EAAjB,CACIR,GAAc,GADlB,CAEIO,GAAY,GAsDhB3C,GAAAhnC,QAAA,CAAyB,CAAC,SAAD,CA0EzBsnC,GAAAtnC,QAAA,CAAuB,CAAC,SAAD,CAuTvB,KAAIguC,GAAe,CACjBiG,KAAMrI,CAAA,CAAW,UAAX,CAAuB,CAAvB,CAA0B,CAA1B,CAA6B,CAAA,CAA7B,CAAoC,CAAA,CAApC,CADW,CAEfyd,GAAIzd,CAAA,CAAW,UAAX,CAAuB,CAAvB,CAA0B,CAA1B,CAA6B,CAAA,CAA7B,CAAmC,CAAA,CAAnC,CAFW,CAGd0d,EAAG1d,CAAA,CAAW,UAAX,CAAuB,CAAvB,CAA0B,CAA1B,CAA6B,CAAA,CAA7B,CAAoC,CAAA,CAApC,CAHW,CAIjB2d,KAAM1d,EAAA,CAAc,OAAd,CAJW,CAKhB2d,IAAK3d,EAAA,CAAc,OAAd,CAAuB,CAAA,CAAvB,CALW,CAMfqI,GAAItI,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAuB,CAAvB,CANW,CAOd6d,EAAG7d,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAuB,CAAvB,CAPW,CAQjB8d,KAAM7d,EAAA,CAAc,OAAd,CAAuB,CAAA,CAAvB,CAA8B,CAAA,CAA9B,CARW,CASfsI,GAAIvI,CAAA,CAAW,MAAX,CAAmB,CAAnB,CATW,CAUdpqB,EAAGoqB,CAAA,CAAW,MAAX,CAAmB,CAAnB,CAVW,CAWfwI,GAAIxI,CAAA,CAAW,OAAX,CAAoB,CAApB,CAXW,CAYd+d,EAAG/d,CAAA,CAAW,OAAX,CAAoB,CAApB,CAZW,CAafge,GAAIhe,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAwB,GAAxB,CAbW,CAcd9xD,EAAG8xD,CAAA,CAAW,OAAX,CAAoB,CAApB,CAAwB,GAAxB,CAdW,CAef0I,GAAI1I,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAfW,CAgBd4B,EAAG5B,CAAA,CAAW,SAAX;AAAsB,CAAtB,CAhBW,CAiBf2I,GAAI3I,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAjBW,CAkBd6B,EAAG7B,CAAA,CAAW,SAAX,CAAsB,CAAtB,CAlBW,CAqBhB6I,IAAK7I,CAAA,CAAW,cAAX,CAA2B,CAA3B,CArBW,CAsBjBie,KAAMhe,EAAA,CAAc,KAAd,CAtBW,CAuBhBie,IAAKje,EAAA,CAAc,KAAd,CAAqB,CAAA,CAArB,CAvBW,CAwBd1gD,EApCL4+D,QAAmB,CAAC3oE,CAAD,CAAOsnD,CAAP,CAAgB,CACjC,MAAyB,GAAlB,CAAAtnD,CAAAizD,SAAA,EAAA,CAAuB3L,CAAAshB,MAAA,CAAc,CAAd,CAAvB,CAA0CthB,CAAAshB,MAAA,CAAc,CAAd,CADhB,CAYhB,CAyBdC,EAzELC,QAAuB,CAAC9oE,CAAD,CAAOsnD,CAAP,CAAgBhzC,CAAhB,CAAwB,CACzCy0D,CAAAA,CAAQ,EAARA,CAAYz0D,CAMhB,OAHA00D,EAGA,EAL0B,CAATA,EAACD,CAADC,CAAc,GAAdA,CAAoB,EAKrC,GAHc5e,EAAA,CAAUh1B,IAAA,CAAY,CAAP,CAAA2zC,CAAA,CAAW,OAAX,CAAqB,MAA1B,CAAA,CAAkCA,CAAlC,CAAyC,EAAzC,CAAV,CAAwD,CAAxD,CAGd,CAFc3e,EAAA,CAAUh1B,IAAAo0B,IAAA,CAASuf,CAAT,CAAgB,EAAhB,CAAV,CAA+B,CAA/B,CAEd,CAP6C,CAgD5B,CA0BfE,GAAIje,EAAA,CAAW,CAAX,CA1BW,CA2Bdke,EAAGle,EAAA,CAAW,CAAX,CA3BW,CA4Bdme,EAAG5d,EA5BW,CA6Bd6d,GAAI7d,EA7BU,CA8Bd8d,IAAK9d,EA9BS,CA+Bd+d,KAnCLC,QAAsB,CAACvpE,CAAD,CAAOsnD,CAAP,CAAgB,CACpC,MAA6B,EAAtB,EAAAtnD,CAAAkrD,YAAA,EAAA,CAA0B5D,CAAAkiB,SAAA,CAAiB,CAAjB,CAA1B,CAAgDliB,CAAAkiB,SAAA,CAAiB,CAAjB,CADnB,CAInB,CAAnB,CAkCI7c,GAAqB,0FAlCzB,CAmCID,GAAgB,UAgGpB7G,GAAAjnC,QAAA,CAAqB,CAAC,SAAD,CA8HrB;IAAIqnC,GAAkBzrD,EAAA,CAAQuB,CAAR,CAAtB,CAWIqqD,GAAkB5rD,EAAA,CAAQ+O,EAAR,CAyqBtB48C,GAAAvnC,QAAA,CAAwB,CAAC,QAAD,CAuKxB,KAAI5U,GAAsBxP,EAAA,CAAQ,CAChC+tB,SAAU,GADsB,CAEhC7kB,QAASA,QAAQ,CAAC5H,CAAD,CAAUN,CAAV,CAAgB,CAC/B,GAAK+nB,CAAA/nB,CAAA+nB,KAAL,EAAmBkmD,CAAAjuE,CAAAiuE,UAAnB,CACE,MAAO,SAAQ,CAAChmE,CAAD,CAAQ3H,CAAR,CAAiB,CAE9B,GAA0C,GAA1C,GAAIA,CAAA,CAAQ,CAAR,CAAAxC,SAAAyL,YAAA,EAAJ,CAAA,CAGA,IAAIwe,EAA+C,4BAAxC,GAAA5oB,EAAAjD,KAAA,CAAcoE,CAAAP,KAAA,CAAa,MAAb,CAAd,CAAA,CACA,YADA,CACe,MAC1BO,EAAAwJ,GAAA,CAAW,OAAX,CAAoB,QAAQ,CAAC2U,CAAD,CAAQ,CAE7Bne,CAAAN,KAAA,CAAa+nB,CAAb,CAAL,EACEtJ,CAAAq0B,eAAA,EAHgC,CAApC,CALA,CAF8B,CAFH,CAFD,CAAR,CAA1B,CA6VIn/B,GAA6B,EAGjC/X,EAAA,CAAQyiB,EAAR,CAAsB,QAAQ,CAAC6vD,CAAD,CAAWniD,CAAX,CAAqB,CAIjDoiD,QAASA,EAAa,CAAClmE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAC3CiI,CAAAxI,OAAA,CAAaO,CAAA,CAAKouE,CAAL,CAAb,CAA+BC,QAAiC,CAAC1xE,CAAD,CAAQ,CACtEqD,CAAA26B,KAAA,CAAU5O,CAAV,CAAoB,CAAEpvB,CAAAA,CAAtB,CADsE,CAAxE,CAD2C,CAF7C,GAAgB,UAAhB,EAAIuxE,CAAJ,CAAA,CAQA,IAAIE,EAAat7C,EAAA,CAAmB,KAAnB,CAA2B/G,CAA3B,CAAjB,CACIqI,EAAS+5C,CAEI,UAAjB,GAAID,CAAJ,GACE95C,CADF,CACWA,QAAQ,CAACnsB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAElCA,CAAAoS,QAAJ,GAAqBpS,CAAA,CAAKouE,CAAL,CAArB,EACED,CAAA,CAAclmE,CAAd,CAAqB3H,CAArB;AAA8BN,CAA9B,CAHoC,CAD1C,CASA2T,GAAA,CAA2By6D,CAA3B,CAAA,CAAyC,QAAQ,EAAG,CAClD,MAAO,CACLrhD,SAAU,GADL,CAELD,SAAU,GAFL,CAGL/C,KAAMqK,CAHD,CAD2C,CApBpD,CAFiD,CAAnD,CAgCAx4B,EAAA,CAAQukC,EAAR,CAAsB,QAAQ,CAACmuC,CAAD,CAAW/nE,CAAX,CAAmB,CAC/CoN,EAAA,CAA2BpN,CAA3B,CAAA,CAAqC,QAAQ,EAAG,CAC9C,MAAO,CACLumB,SAAU,GADL,CAEL/C,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAGnC,GAAe,WAAf,GAAIuG,CAAJ,EAA0D,GAA1D,EAA8BvG,CAAA4S,UAAAhQ,OAAA,CAAsB,CAAtB,CAA9B,GACMX,CADN,CACcjC,CAAA4S,UAAA3Q,MAAA,CAAqB+4D,EAArB,CADd,EAEa,CACTh7D,CAAA26B,KAAA,CAAU,WAAV,CAAuB,IAAI98B,MAAJ,CAAWoE,CAAA,CAAM,CAAN,CAAX,CAAqBA,CAAA,CAAM,CAAN,CAArB,CAAvB,CACA,OAFS,CAMbgG,CAAAxI,OAAA,CAAaO,CAAA,CAAKuG,CAAL,CAAb,CAA2BgoE,QAA+B,CAAC5xE,CAAD,CAAQ,CAChEqD,CAAA26B,KAAA,CAAUp0B,CAAV,CAAkB5J,CAAlB,CADgE,CAAlE,CAXmC,CAFhC,CADuC,CADD,CAAjD,CAwBAf,EAAA,CAAQ,CAAC,KAAD,CAAQ,QAAR,CAAkB,MAAlB,CAAR,CAAmC,QAAQ,CAACmwB,CAAD,CAAW,CACpD,IAAIqiD,EAAat7C,EAAA,CAAmB,KAAnB,CAA2B/G,CAA3B,CACjBpY,GAAA,CAA2By6D,CAA3B,CAAA,CAAyC,QAAQ,EAAG,CAClD,MAAO,CACLthD,SAAU,EADL,CAEL/C,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAAA,IAC/BkuE,EAAWniD,CADoB,CAE/B/kB,EAAO+kB,CAEM,OAAjB,GAAIA,CAAJ,EAC4C,4BAD5C,GACI5sB,EAAAjD,KAAA,CAAcoE,CAAAP,KAAA,CAAa,MAAb,CAAd,CADJ;CAEEiH,CAEA,CAFO,WAEP,CADAhH,CAAA4uB,MAAA,CAAW5nB,CAAX,CACA,CADmB,YACnB,CAAAknE,CAAA,CAAW,IAJb,CAOAluE,EAAA4+B,SAAA,CAAcwvC,CAAd,CAA0B,QAAQ,CAACzxE,CAAD,CAAQ,CACnCA,CAAL,EAOAqD,CAAA26B,KAAA,CAAU3zB,CAAV,CAAgBrK,CAAhB,CAMA,CAAI2mB,EAAJ,EAAY4qD,CAAZ,EAAsB5tE,CAAAP,KAAA,CAAamuE,CAAb,CAAuBluE,CAAA,CAAKgH,CAAL,CAAvB,CAbtB,EACmB,MADnB,GACM+kB,CADN,EAEI/rB,CAAA26B,KAAA,CAAU3zB,CAAV,CAAgB,IAAhB,CAHoC,CAA1C,CAXmC,CAFhC,CAD2C,CAFA,CAAtD,CAv+qBkB,KA8grBd6sD,GAAe,CACjBM,YAAat1D,CADI,CAEjBw1D,gBASFma,QAA8B,CAACxa,CAAD,CAAUhtD,CAAV,CAAgB,CAC5CgtD,CAAAV,MAAA,CAAgBtsD,CAD4B,CAX3B,CAGjBytD,eAAgB51D,CAHC,CAIjB81D,aAAc91D,CAJG,CAKjBk2D,UAAWl2D,CALM,CAMjBs2D,aAAct2D,CANG,CAOjB42D,cAAe52D,CAPE,CA0DnBo0D,GAAA7vC,QAAA,CAAyB,CAAC,UAAD,CAAa,QAAb,CAAuB,QAAvB,CAAiC,UAAjC,CAA6C,cAA7C,CAmZzB,KAAIqrD,GAAuBA,QAAQ,CAACC,CAAD,CAAW,CAC5C,MAAO,CAAC,UAAD,CAAa,QAAb,CAAuB,QAAQ,CAAC32D,CAAD,CAAWpB,CAAX,CAAmB,CAuEvDg4D,QAASA,EAAS,CAACnsC,CAAD,CAAa,CAC7B,MAAmB,EAAnB,GAAIA,CAAJ,CAES7rB,CAAA,CAAO,UAAP,CAAAooB,OAFT,CAIOpoB,CAAA,CAAO6rB,CAAP,CAAAzD,OAJP,EAIoClgC,CALP,CAF/B,MApEoBgQ,CAClB7H,KAAM,MADY6H,CAElBke,SAAU2hD,CAAA;AAAW,KAAX,CAAmB,GAFX7/D,CAGlBqd,QAAS,CAAC,MAAD,CAAS,SAAT,CAHSrd,CAIlB5E,WAAYgpD,EAJMpkD,CAKlB3G,QAAS0mE,QAAsB,CAACC,CAAD,CAAc7uE,CAAd,CAAoB,CAEjD6uE,CAAA1uD,SAAA,CAAqB80C,EAArB,CAAA90C,SAAA,CAA8Cu6C,EAA9C,CAEA,KAAIoU,EAAW9uE,CAAAgH,KAAA,CAAY,MAAZ,CAAsB0nE,CAAA,EAAY1uE,CAAAsQ,OAAZ,CAA0B,QAA1B,CAAqC,CAAA,CAE1E,OAAO,CACL2kB,IAAK85C,QAAsB,CAAC9mE,CAAD,CAAQ4mE,CAAR,CAAqB7uE,CAArB,CAA2BgvE,CAA3B,CAAkC,CAC3D,IAAI/kE,EAAa+kE,CAAA,CAAM,CAAN,CAGjB,IAAM,EAAA,QAAA,EAAYhvE,EAAZ,CAAN,CAAyB,CAOvB,IAAIivE,EAAuBA,QAAQ,CAACxwD,CAAD,CAAQ,CACzCxW,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtB8B,CAAAgqD,iBAAA,EACAhqD,EAAAwrD,cAAA,EAFsB,CAAxB,CAKAh3C,EAAAq0B,eAAA,EANyC,CASxB+7B,EAAAvuE,CAAY,CAAZA,CAhymB3B4pC,iBAAA,CAgymB2C/nC,QAhymB3C,CAgymBqD8sE,CAhymBrD,CAAmC,CAAA,CAAnC,CAoymBQJ,EAAA/kE,GAAA,CAAe,UAAf,CAA2B,QAAQ,EAAG,CACpCiO,CAAA,CAAS,QAAQ,EAAG,CACI82D,CAAAvuE,CAAY,CAAZA,CAnymBlCyb,oBAAA,CAmymBkD5Z,QAnymBlD,CAmymB4D8sE,CAnymB5D,CAAsC,CAAA,CAAtC,CAkymB8B,CAApB,CAEG,CAFH,CAEM,CAAA,CAFN,CADoC,CAAtC,CApBuB,CA4BzB9a,CADqB6a,CAAA,CAAM,CAAN,CACrB7a,EADiClqD,CAAA2pD,aACjCO,aAAA,CAA2BlqD,CAA3B,CAEA,KAAIilE,EAASJ,CAAA,CAAWH,CAAA,CAAU1kE,CAAAqpD,MAAV,CAAX,CAAyCz0D,CAElDiwE,EAAJ,GACEI,CAAA,CAAOjnE,CAAP,CAAcgC,CAAd,CACA,CAAAjK,CAAA4+B,SAAA,CAAckwC,CAAd;AAAwB,QAAQ,CAAC3xC,CAAD,CAAW,CACrClzB,CAAAqpD,MAAJ,GAAyBn2B,CAAzB,GACA+xC,CAAA,CAAOjnE,CAAP,CAAczG,IAAAA,EAAd,CAGA,CAFAyI,CAAA2pD,aAAAS,gBAAA,CAAwCpqD,CAAxC,CAAoDkzB,CAApD,CAEA,CADA+xC,CACA,CADSP,CAAA,CAAU1kE,CAAAqpD,MAAV,CACT,CAAA4b,CAAA,CAAOjnE,CAAP,CAAcgC,CAAd,CAJA,CADyC,CAA3C,CAFF,CAUA4kE,EAAA/kE,GAAA,CAAe,UAAf,CAA2B,QAAQ,EAAG,CACpCG,CAAA2pD,aAAAa,eAAA,CAAuCxqD,CAAvC,CACAilE,EAAA,CAAOjnE,CAAP,CAAczG,IAAAA,EAAd,CACAtD,EAAA,CAAO+L,CAAP,CAAmB4pD,EAAnB,CAHoC,CAAtC,CA9C2D,CADxD,CAN0C,CALjChlD,CADmC,CAAlD,CADqC,CAA9C,CAkFIA,GAAgB4/D,EAAA,EAlFpB,CAmFIl+D,GAAkBk+D,EAAA,CAAqB,CAAA,CAArB,CAnFtB,CA+FIrX,GAAkB,+EA/FtB,CA4GI+X,GAAa,sHA5GjB,CA8GIC,GAAe,8LA9GnB;AAgHIC,GAAgB,mDAhHpB,CAiHIC,GAAc,4BAjHlB,CAkHIC,GAAuB,gEAlH3B,CAmHIC,GAAc,oBAnHlB,CAoHIC,GAAe,mBApHnB,CAqHIC,GAAc,yCArHlB,CAwHIlZ,GAA2B7zD,CAAA,EAC/B/G,EAAA,CAAQ,CAAA,MAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,MAAA,CAAA,MAAA,CAAR,CAA0D,QAAQ,CAACuG,CAAD,CAAO,CACvEq0D,EAAA,CAAyBr0D,CAAzB,CAAA,CAAiC,CAAA,CADsC,CAAzE,CAIA,KAAIwtE,GAAY,CAgGd,KAs8BFC,QAAsB,CAAC3nE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiD,CACrEmhD,EAAA,CAAc7tD,CAAd,CAAqB3H,CAArB,CAA8BN,CAA9B,CAAoC60D,CAApC,CAA0Ct9C,CAA1C,CAAoD5C,CAApD,CACAghD,GAAA,CAAqBd,CAArB,CAFqE,CAtiCvD,CAuMd,KAAQoD,EAAA,CAAoB,MAApB,CAA4BqX,EAA5B,CACDrY,EAAA,CAAiBqY,EAAjB,CAA8B,CAAC,MAAD,CAAS,IAAT,CAAe,IAAf,CAA9B,CADC,CAED,YAFC,CAvMM,CA8Sd,iBAAkBrX,EAAA,CAAoB,eAApB,CAAqCsX,EAArC,CACdtY,EAAA,CAAiBsY,EAAjB,CAAuC,yBAAA,MAAA,CAAA,GAAA,CAAvC,CADc;AAEd,yBAFc,CA9SJ,CAsZd,KAAQtX,EAAA,CAAoB,MAApB,CAA4ByX,EAA5B,CACJzY,EAAA,CAAiByY,EAAjB,CAA8B,CAAC,IAAD,CAAO,IAAP,CAAa,IAAb,CAAmB,KAAnB,CAA9B,CADI,CAEL,cAFK,CAtZM,CA+fd,KAAQzX,EAAA,CAAoB,MAApB,CAA4BuX,EAA5B,CA0pBVK,QAAmB,CAACC,CAAD,CAAUC,CAAV,CAAwB,CACzC,GAAItyE,EAAA,CAAOqyE,CAAP,CAAJ,CACE,MAAOA,EAGT,IAAIz0E,CAAA,CAASy0E,CAAT,CAAJ,CAAuB,CACrBN,EAAAttE,UAAA,CAAwB,CACxB,KAAI6D,EAAQypE,EAAA51D,KAAA,CAAiBk2D,CAAjB,CACZ,IAAI/pE,CAAJ,CAAW,CAAA,IACLspD,EAAO,CAACtpD,CAAA,CAAM,CAAN,CADH,CAELiqE,EAAO,CAACjqE,CAAA,CAAM,CAAN,CAFH,CAILhB,EADAkrE,CACAlrE,CADQ,CAHH,CAKLmrE,EAAU,CALL,CAMLC,EAAe,CANV,CAOL1gB,EAAaL,EAAA,CAAuBC,CAAvB,CAPR,CAQL+gB,EAAuB,CAAvBA,EAAWJ,CAAXI,CAAkB,CAAlBA,CAEAL,EAAJ,GACEE,CAGA,CAHQF,CAAAtY,SAAA,EAGR,CAFA1yD,CAEA,CAFUgrE,CAAAjrE,WAAA,EAEV,CADAorE,CACA,CADUH,CAAAnY,WAAA,EACV,CAAAuY,CAAA,CAAeJ,CAAAjY,gBAAA,EAJjB,CAOA,OAAO,KAAIp6D,IAAJ,CAAS2xD,CAAT,CAAe,CAAf,CAAkBI,CAAAI,QAAA,EAAlB,CAAyCugB,CAAzC,CAAkDH,CAAlD,CAAyDlrE,CAAzD,CAAkEmrE,CAAlE,CAA2EC,CAA3E,CAjBE,CAHU,CAwBvB,MAAOnY,IA7BkC,CA1pBjC,CAAqD,UAArD,CA/fM,CAumBd,MAASC,EAAA,CAAoB,OAApB,CAA6BwX,EAA7B,CACNxY,EAAA,CAAiBwY,EAAjB,CAA+B,CAAC,MAAD,CAAS,IAAT,CAA/B,CADM,CAEN,SAFM,CAvmBK,CAstBd,OAwmBFY,QAAwB,CAACpoE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiD,CACvE2jD,EAAA,CAAgBrwD,CAAhB,CAAuB3H,CAAvB,CAAgCN,CAAhC,CAAsC60D,CAAtC,CACAiB,GAAA,CAAc7tD,CAAd,CAAqB3H,CAArB,CAA8BN,CAA9B,CAAoC60D,CAApC,CAA0Ct9C,CAA1C,CAAoD5C,CAApD,CAEAkgD,EAAA4D,aAAA;AAAoB,QACpB5D,EAAA6D,SAAAz3D,KAAA,CAAmB,QAAQ,CAACtE,CAAD,CAAQ,CACjC,GAAIk4D,CAAAgB,SAAA,CAAcl5D,CAAd,CAAJ,CAA+B,MAAO,KACtC,IAAI0yE,EAAAxvE,KAAA,CAAmBlD,CAAnB,CAAJ,CAA+B,MAAOo0D,WAAA,CAAWp0D,CAAX,CAFL,CAAnC,CAMAk4D,EAAAe,YAAA30D,KAAA,CAAsB,QAAQ,CAACtE,CAAD,CAAQ,CACpC,GAAK,CAAAk4D,CAAAgB,SAAA,CAAcl5D,CAAd,CAAL,CAA2B,CACzB,GAAK,CAAAlB,CAAA,CAASkB,CAAT,CAAL,CACE,KAAMi8D,GAAA,CAAc,QAAd,CAAyDj8D,CAAzD,CAAN,CAEFA,CAAA,CAAQA,CAAAwC,SAAA,EAJiB,CAM3B,MAAOxC,EAP6B,CAAtC,CAUA,IAAI0C,CAAA,CAAUW,CAAAqtD,IAAV,CAAJ,EAA2BrtD,CAAA64D,MAA3B,CAAuC,CACrC,IAAIC,CACJjE,EAAAkE,YAAA1L,IAAA,CAAuB2L,QAAQ,CAACr8D,CAAD,CAAQ,CACrC,MAAOk4D,EAAAgB,SAAA,CAAcl5D,CAAd,CAAP,EAA+ByC,CAAA,CAAY05D,CAAZ,CAA/B,EAAsDn8D,CAAtD,EAA+Dm8D,CAD1B,CAIvC94D,EAAA4+B,SAAA,CAAc,KAAd,CAAqB,QAAQ,CAACr7B,CAAD,CAAM,CAC7BlE,CAAA,CAAUkE,CAAV,CAAJ,EAAuB,CAAA9H,CAAA,CAAS8H,CAAT,CAAvB,GACEA,CADF,CACQwtD,UAAA,CAAWxtD,CAAX,CAAgB,EAAhB,CADR,CAGAu1D,EAAA,CAASr9D,CAAA,CAAS8H,CAAT,CAAA,EAAkB,CAAAe,KAAA,CAAMf,CAAN,CAAlB,CAA+BA,CAA/B,CAAqC/B,IAAAA,EAE9CqzD,EAAAoE,UAAA,EANiC,CAAnC,CANqC,CAgBvC,GAAI55D,CAAA,CAAUW,CAAA65B,IAAV,CAAJ,EAA2B75B,CAAAk5D,MAA3B,CAAuC,CACrC,IAAIC,CACJtE,EAAAkE,YAAAl/B,IAAA,CAAuBu/B,QAAQ,CAACz8D,CAAD,CAAQ,CACrC,MAAOk4D,EAAAgB,SAAA,CAAcl5D,CAAd,CAAP,EAA+ByC,CAAA,CAAY+5D,CAAZ,CAA/B,EAAsDx8D,CAAtD,EAA+Dw8D,CAD1B,CAIvCn5D,EAAA4+B,SAAA,CAAc,KAAd;AAAqB,QAAQ,CAACr7B,CAAD,CAAM,CAC7BlE,CAAA,CAAUkE,CAAV,CAAJ,EAAuB,CAAA9H,CAAA,CAAS8H,CAAT,CAAvB,GACEA,CADF,CACQwtD,UAAA,CAAWxtD,CAAX,CAAgB,EAAhB,CADR,CAGA41D,EAAA,CAAS19D,CAAA,CAAS8H,CAAT,CAAA,EAAkB,CAAAe,KAAA,CAAMf,CAAN,CAAlB,CAA+BA,CAA/B,CAAqC/B,IAAAA,EAE9CqzD,EAAAoE,UAAA,EANiC,CAAnC,CANqC,CArCgC,CA9zCzD,CAyzBd,IA2jBFqX,QAAqB,CAACroE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiD,CAGpEmhD,EAAA,CAAc7tD,CAAd,CAAqB3H,CAArB,CAA8BN,CAA9B,CAAoC60D,CAApC,CAA0Ct9C,CAA1C,CAAoD5C,CAApD,CACAghD,GAAA,CAAqBd,CAArB,CAEAA,EAAA4D,aAAA,CAAoB,KACpB5D,EAAAkE,YAAA9xC,IAAA,CAAuBspD,QAAQ,CAACC,CAAD,CAAaC,CAAb,CAAwB,CACrD,IAAI9zE,EAAQ6zE,CAAR7zE,EAAsB8zE,CAC1B,OAAO5b,EAAAgB,SAAA,CAAcl5D,CAAd,CAAP,EAA+BwyE,EAAAtvE,KAAA,CAAgBlD,CAAhB,CAFsB,CAPa,CAp3CtD,CA25Bd,MAseF+zE,QAAuB,CAACzoE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiD,CAGtEmhD,EAAA,CAAc7tD,CAAd,CAAqB3H,CAArB,CAA8BN,CAA9B,CAAoC60D,CAApC,CAA0Ct9C,CAA1C,CAAoD5C,CAApD,CACAghD,GAAA,CAAqBd,CAArB,CAEAA,EAAA4D,aAAA,CAAoB,OACpB5D,EAAAkE,YAAA4X,MAAA,CAAyBC,QAAQ,CAACJ,CAAD,CAAaC,CAAb,CAAwB,CACvD,IAAI9zE,EAAQ6zE,CAAR7zE,EAAsB8zE,CAC1B,OAAO5b,EAAAgB,SAAA,CAAcl5D,CAAd,CAAP,EAA+ByyE,EAAAvvE,KAAA,CAAkBlD,CAAlB,CAFwB,CAPa,CAj4CxD,CA69Bd,MAibFk0E,QAAuB,CAAC5oE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6B,CAE9Cz1D,CAAA,CAAYY,CAAAgH,KAAZ,CAAJ,EACE1G,CAAAN,KAAA,CAAa,MAAb,CApnuBK,EAAEnD,EAonuBP,CASFyD,EAAAwJ,GAAA,CAAW,OAAX,CANesd,QAAQ,CAAC4uC,CAAD,CAAK,CACtB11D,CAAA,CAAQ,CAAR,CAAAwwE,QAAJ,EACEjc,CAAAuB,cAAA,CAAmBp2D,CAAArD,MAAnB;AAA+Bq5D,CAA/B,EAAqCA,CAAA7zD,KAArC,CAFwB,CAM5B,CAEA0yD,EAAAkC,QAAA,CAAeC,QAAQ,EAAG,CAExB12D,CAAA,CAAQ,CAAR,CAAAwwE,QAAA,CADY9wE,CAAArD,MACZ,EAA+Bk4D,CAAAqB,WAFP,CAK1Bl2D,EAAA4+B,SAAA,CAAc,OAAd,CAAuBi2B,CAAAkC,QAAvB,CAnBkD,CA94CpC,CAuhCd,SA0ZFga,QAA0B,CAAC9oE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6Bt9C,CAA7B,CAAuC5C,CAAvC,CAAiDU,CAAjD,CAA0DsB,CAA1D,CAAkE,CAC1F,IAAIq6D,EAAY1X,EAAA,CAAkB3iD,CAAlB,CAA0B1O,CAA1B,CAAiC,aAAjC,CAAgDjI,CAAAixE,YAAhD,CAAkE,CAAA,CAAlE,CAAhB,CACIC,EAAa5X,EAAA,CAAkB3iD,CAAlB,CAA0B1O,CAA1B,CAAiC,cAAjC,CAAiDjI,CAAAmxE,aAAjD,CAAoE,CAAA,CAApE,CAMjB7wE,EAAAwJ,GAAA,CAAW,OAAX,CAJesd,QAAQ,CAAC4uC,CAAD,CAAK,CAC1BnB,CAAAuB,cAAA,CAAmB91D,CAAA,CAAQ,CAAR,CAAAwwE,QAAnB,CAAuC9a,CAAvC,EAA6CA,CAAA7zD,KAA7C,CAD0B,CAI5B,CAEA0yD,EAAAkC,QAAA,CAAeC,QAAQ,EAAG,CACxB12D,CAAA,CAAQ,CAAR,CAAAwwE,QAAA,CAAqBjc,CAAAqB,WADG,CAO1BrB,EAAAgB,SAAA,CAAgBub,QAAQ,CAACz0E,CAAD,CAAQ,CAC9B,MAAiB,CAAA,CAAjB,GAAOA,CADuB,CAIhCk4D,EAAAe,YAAA30D,KAAA,CAAsB,QAAQ,CAACtE,CAAD,CAAQ,CACpC,MAAOyF,GAAA,CAAOzF,CAAP,CAAcq0E,CAAd,CAD6B,CAAtC,CAIAnc,EAAA6D,SAAAz3D,KAAA,CAAmB,QAAQ,CAACtE,CAAD,CAAQ,CACjC,MAAOA,EAAA,CAAQq0E,CAAR,CAAoBE,CADM,CAAnC,CAzB0F,CAj7C5E,CAyhCd,OAAUryE,CAzhCI,CA0hCd,OAAUA,CA1hCI,CA2hCd,OAAUA,CA3hCI,CA4hCd,MAASA,CA5hCK;AA6hCd,KAAQA,CA7hCM,CAAhB,CA6nDI6P,GAAiB,CAAC,UAAD,CAAa,UAAb,CAAyB,SAAzB,CAAoC,QAApC,CACjB,QAAQ,CAACiG,CAAD,CAAW4C,CAAX,CAAqBlC,CAArB,CAA8BsB,CAA9B,CAAsC,CAChD,MAAO,CACLoW,SAAU,GADL,CAELb,QAAS,CAAC,UAAD,CAFJ,CAGLnC,KAAM,CACJkL,IAAKA,QAAQ,CAAChtB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuBgvE,CAAvB,CAA8B,CACrCA,CAAA,CAAM,CAAN,CAAJ,EACE,CAACW,EAAA,CAAUpvE,CAAA,CAAUP,CAAAmC,KAAV,CAAV,CAAD,EAAoCwtE,EAAA3zC,KAApC,EAAoD/zB,CAApD,CAA2D3H,CAA3D,CAAoEN,CAApE,CAA0EgvE,CAAA,CAAM,CAAN,CAA1E,CAAoFz3D,CAApF,CACoD5C,CADpD,CAC8DU,CAD9D,CACuEsB,CADvE,CAFuC,CADvC,CAHD,CADyC,CAD7B,CA7nDrB,CA+oDI06D,GAAwB,oBA/oD5B,CAysDI99D,GAAmBA,QAAQ,EAAG,CAChC,MAAO,CACLwZ,SAAU,GADL,CAELD,SAAU,GAFL,CAGL5kB,QAASA,QAAQ,CAAC+/C,CAAD,CAAMqpB,CAAN,CAAe,CAC9B,MAAID,GAAAxxE,KAAA,CAA2ByxE,CAAAh+D,QAA3B,CAAJ,CACSi+D,QAA4B,CAACtpE,CAAD,CAAQqd,CAAR,CAAatlB,CAAb,CAAmB,CACpDA,CAAA26B,KAAA,CAAU,OAAV,CAAmB1yB,CAAA66C,MAAA,CAAY9iD,CAAAsT,QAAZ,CAAnB,CADoD,CADxD,CAKSk+D,QAAoB,CAACvpE,CAAD,CAAQqd,CAAR,CAAatlB,CAAb,CAAmB,CAC5CiI,CAAAxI,OAAA,CAAaO,CAAAsT,QAAb,CAA2Bm+D,QAAyB,CAAC90E,CAAD,CAAQ,CAC1DqD,CAAA26B,KAAA,CAAU,OAAV,CAAmBh+B,CAAnB,CAD0D,CAA5D,CAD4C,CANlB,CAH3B,CADyB,CAzsDlC,CAgxDI4S,GAAkB,CAAC,UAAD,CAAa,QAAQ,CAACmiE,CAAD,CAAW,CACpD,MAAO,CACL3kD,SAAU,IADL,CAEL7kB,QAASypE,QAAsB,CAACC,CAAD,CAAkB,CAC/CF,CAAAp1C,kBAAA,CAA2Bs1C,CAA3B,CACA;MAAOC,SAAmB,CAAC5pE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAC/C0xE,CAAAl1C,iBAAA,CAA0Bl8B,CAA1B,CAAmCN,CAAAsP,OAAnC,CACAhP,EAAA,CAAUA,CAAA,CAAQ,CAAR,CACV2H,EAAAxI,OAAA,CAAaO,CAAAsP,OAAb,CAA0BwiE,QAA0B,CAACn1E,CAAD,CAAQ,CAC1D2D,CAAA+Z,YAAA,CAAsBjb,CAAA,CAAYzC,CAAZ,CAAA,CAAqB,EAArB,CAA0BA,CADU,CAA5D,CAH+C,CAFF,CAF5C,CAD6C,CAAhC,CAhxDtB,CAo1DIgT,GAA0B,CAAC,cAAD,CAAiB,UAAjB,CAA6B,QAAQ,CAAC8F,CAAD,CAAei8D,CAAf,CAAyB,CAC1F,MAAO,CACLxpE,QAAS6pE,QAA8B,CAACH,CAAD,CAAkB,CACvDF,CAAAp1C,kBAAA,CAA2Bs1C,CAA3B,CACA,OAAOI,SAA2B,CAAC/pE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CACnDi8B,CAAAA,CAAgBxmB,CAAA,CAAanV,CAAAN,KAAA,CAAaA,CAAA4uB,MAAAlf,eAAb,CAAb,CACpBgiE,EAAAl1C,iBAAA,CAA0Bl8B,CAA1B,CAAmC27B,CAAAQ,YAAnC,CACAn8B,EAAA,CAAUA,CAAA,CAAQ,CAAR,CACVN,EAAA4+B,SAAA,CAAc,gBAAd,CAAgC,QAAQ,CAACjiC,CAAD,CAAQ,CAC9C2D,CAAA+Z,YAAA,CAAsBjb,CAAA,CAAYzC,CAAZ,CAAA,CAAqB,EAArB,CAA0BA,CADF,CAAhD,CAJuD,CAFF,CADpD,CADmF,CAA9D,CAp1D9B,CAo5DI8S,GAAsB,CAAC,MAAD,CAAS,QAAT,CAAmB,UAAnB,CAA+B,QAAQ,CAAC0H,CAAD,CAAOR,CAAP,CAAe+6D,CAAf,CAAyB,CACxF,MAAO,CACL3kD,SAAU,GADL,CAEL7kB,QAAS+pE,QAA0B,CAAC/kD,CAAD,CAAWC,CAAX,CAAmB,CACpD,IAAI+kD,EAAmBv7D,CAAA,CAAOwW,CAAA3d,WAAP,CAAvB,CACI2iE;AAAkBx7D,CAAA,CAAOwW,CAAA3d,WAAP,CAA0B4iE,QAAmB,CAAC7uE,CAAD,CAAM,CAEvE,MAAO4T,EAAAxZ,QAAA,CAAa4F,CAAb,CAFgE,CAAnD,CAItBmuE,EAAAp1C,kBAAA,CAA2BpP,CAA3B,CAEA,OAAOmlD,SAAuB,CAACpqE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CACnD0xE,CAAAl1C,iBAAA,CAA0Bl8B,CAA1B,CAAmCN,CAAAwP,WAAnC,CAEAvH,EAAAxI,OAAA,CAAa0yE,CAAb,CAA8BG,QAA8B,EAAG,CAE7D,IAAI31E,EAAQu1E,CAAA,CAAiBjqE,CAAjB,CACZ3H,EAAA+E,KAAA,CAAa8R,CAAAo7D,eAAA,CAAoB51E,CAApB,CAAb,EAA2C,EAA3C,CAH6D,CAA/D,CAHmD,CARD,CAFjD,CADiF,CAAhE,CAp5D1B,CA++DI8V,GAAoBzT,EAAA,CAAQ,CAC9B+tB,SAAU,GADoB,CAE9Bb,QAAS,SAFqB,CAG9BnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6B,CACzCA,CAAA2d,qBAAAvxE,KAAA,CAA+B,QAAQ,EAAG,CACxCgH,CAAA66C,MAAA,CAAY9iD,CAAAwS,SAAZ,CADwC,CAA1C,CADyC,CAHb,CAAR,CA/+DxB,CAwyEI3C,GAAmB2pD,EAAA,CAAe,EAAf,CAAmB,CAAA,CAAnB,CAxyEvB,CAw1EIvpD,GAAsBupD,EAAA,CAAe,KAAf,CAAsB,CAAtB,CAx1E1B,CAw4EIzpD,GAAuBypD,EAAA,CAAe,MAAf,CAAuB,CAAvB,CAx4E3B,CA87EIrpD,GAAmB6iD,EAAA,CAAY,CACjC9qD,QAASA,QAAQ,CAAC5H,CAAD,CAAUN,CAAV,CAAgB,CAC/BA,CAAA26B,KAAA,CAAU,SAAV,CAAqBn5B,IAAAA,EAArB,CACAlB,EAAA8f,YAAA,CAAoB,UAApB,CAF+B,CADA,CAAZ,CA97EvB,CAuqFI/P,GAAwB,CAAC,QAAQ,EAAG,CACtC,MAAO,CACL0c,SAAU,GADL,CAEL9kB,MAAO,CAAA,CAFF,CAGLgC,WAAY,GAHP;AAIL6iB,SAAU,GAJL,CAD+B,CAAZ,CAvqF5B,CA+5FIlZ,GAAoB,EA/5FxB,CAo6FI6+D,GAAmB,CACrB,KAAQ,CAAA,CADa,CAErB,MAAS,CAAA,CAFY,CAIvB72E,EAAA,CACE,6IAAA,MAAA,CAAA,GAAA,CADF,CAEE,QAAQ,CAACunD,CAAD,CAAY,CAClB,IAAI/3B,EAAgB0H,EAAA,CAAmB,KAAnB,CAA2BqwB,CAA3B,CACpBvvC,GAAA,CAAkBwX,CAAlB,CAAA,CAAmC,CAAC,QAAD,CAAW,YAAX,CAAyB,QAAQ,CAACzU,CAAD,CAASE,CAAT,CAAqB,CACvF,MAAO,CACLkW,SAAU,GADL,CAEL7kB,QAASA,QAAQ,CAACklB,CAAD,CAAWptB,CAAX,CAAiB,CAKhC,IAAIkD,EAAKyT,CAAA,CAAO3W,CAAA,CAAKorB,CAAL,CAAP,CAAgD,IAAhD,CAA4E,CAAA,CAA5E,CACT,OAAOsnD,SAAuB,CAACzqE,CAAD,CAAQ3H,CAAR,CAAiB,CAC7CA,CAAAwJ,GAAA,CAAWq5C,CAAX,CAAsB,QAAQ,CAAC1kC,CAAD,CAAQ,CACpC,IAAIqJ,EAAWA,QAAQ,EAAG,CACxB5kB,CAAA,CAAG+E,CAAH,CAAU,CAACs3C,OAAO9gC,CAAR,CAAV,CADwB,CAGtBg0D,GAAA,CAAiBtvB,CAAjB,CAAJ,EAAmCtsC,CAAAmxB,QAAnC,CACE//B,CAAAzI,WAAA,CAAiBsoB,CAAjB,CADF,CAGE7f,CAAAE,OAAA,CAAa2f,CAAb,CAPkC,CAAtC,CAD6C,CANf,CAF7B,CADgF,CAAtD,CAFjB,CAFtB,CAqgBA,KAAInX,GAAgB,CAAC,UAAD,CAAa,UAAb,CAAyB,QAAQ,CAACoD,CAAD;AAAW29D,CAAX,CAAqB,CACxE,MAAO,CACLl3C,aAAc,CAAA,CADT,CAEL7M,WAAY,SAFP,CAGLb,SAAU,GAHL,CAILmF,SAAU,CAAA,CAJL,CAKLlF,SAAU,GALL,CAMLsL,MAAO,CAAA,CANF,CAOLtO,KAAMA,QAAQ,CAACmQ,CAAD,CAAS9M,CAAT,CAAmBwB,CAAnB,CAA0BimC,CAA1B,CAAgC16B,CAAhC,CAA6C,CAAA,IACnDxsB,CADmD,CAC5CwjB,CAD4C,CAChCwhD,CACvBz4C,EAAAz6B,OAAA,CAAcmvB,CAAAle,KAAd,CAA0BkiE,QAAwB,CAACj2E,CAAD,CAAQ,CAEpDA,CAAJ,CACOw0B,CADP,EAEIgJ,CAAA,CAAY,QAAQ,CAACl8B,CAAD,CAAQm8B,CAAR,CAAkB,CACpCjJ,CAAA,CAAaiJ,CACbn8B,EAAA,CAAMA,CAAA1C,OAAA,EAAN,CAAA,CAAwBm2E,CAAAl5C,gBAAA,CAAyB,UAAzB,CAAqC5J,CAAAle,KAArC,CAIxB/C,EAAA,CAAQ,CACN1P,MAAOA,CADD,CAGR8V,EAAAstD,MAAA,CAAepjE,CAAf,CAAsBmvB,CAAA1uB,OAAA,EAAtB,CAAyC0uB,CAAzC,CAToC,CAAtC,CAFJ,EAeMulD,CAQJ,GAPEA,CAAA/nD,OAAA,EACA,CAAA+nD,CAAA,CAAmB,IAMrB,EAJIxhD,CAIJ,GAHEA,CAAA1mB,SAAA,EACA,CAAA0mB,CAAA,CAAa,IAEf,EAAIxjB,CAAJ,GACEglE,CAIA,CAJmBpnE,EAAA,CAAcoC,CAAA1P,MAAd,CAInB,CAHA8V,CAAAwtD,MAAA,CAAeoR,CAAf,CAAAz3C,KAAA,CAAsC,QAAQ,EAAG,CAC/Cy3C,CAAA,CAAmB,IAD4B,CAAjD,CAGA,CAAAhlE,CAAA,CAAQ,IALV,CAvBF,CAFwD,CAA1D,CAFuD,CAPtD,CADiE,CAAtD,CAApB,CAyOIkD,GAAqB,CAAC,kBAAD,CAAqB,eAArB,CAAsC,UAAtC,CACP,QAAQ,CAAC8G,CAAD,CAAqB9D,CAArB,CAAsCE,CAAtC,CAAgD,CACxE,MAAO,CACLgZ,SAAU,KADL,CAELD,SAAU,GAFL,CAGLmF,SAAU,CAAA,CAHL;AAILtE,WAAY,SAJP,CAKL1jB,WAAY1B,EAAA1J,KALP,CAMLqJ,QAASA,QAAQ,CAAC5H,CAAD,CAAUN,CAAV,CAAgB,CAAA,IAC3B6yE,EAAS7yE,CAAA4Q,UAATiiE,EAA2B7yE,CAAAxC,IADA,CAE3Bs1E,EAAY9yE,CAAA0qC,OAAZooC,EAA2B,EAFA,CAG3BC,EAAgB/yE,CAAAgzE,WAEpB,OAAO,SAAQ,CAAC/qE,CAAD,CAAQmlB,CAAR,CAAkBwB,CAAlB,CAAyBimC,CAAzB,CAA+B16B,CAA/B,CAA4C,CAAA,IACrD84C,EAAgB,CADqC,CAErDzzB,CAFqD,CAGrD0zB,CAHqD,CAIrDC,CAJqD,CAMrDC,EAA4BA,QAAQ,EAAG,CACrCF,CAAJ,GACEA,CAAAtoD,OAAA,EACA,CAAAsoD,CAAA,CAAkB,IAFpB,CAII1zB,EAAJ,GACEA,CAAA/0C,SAAA,EACA,CAAA+0C,CAAA,CAAe,IAFjB,CAII2zB,EAAJ,GACEp/D,CAAAwtD,MAAA,CAAe4R,CAAf,CAAAj4C,KAAA,CAAoC,QAAQ,EAAG,CAC7Cg4C,CAAA,CAAkB,IAD2B,CAA/C,CAIA,CADAA,CACA,CADkBC,CAClB,CAAAA,CAAA,CAAiB,IALnB,CATyC,CAkB3ClrE,EAAAxI,OAAA,CAAaozE,CAAb,CAAqBQ,QAA6B,CAAC71E,CAAD,CAAM,CACtD,IAAI81E,EAAiBA,QAAQ,EAAG,CAC1B,CAAAj0E,CAAA,CAAU0zE,CAAV,CAAJ,EAAkCA,CAAlC,EAAmD,CAAA9qE,CAAA66C,MAAA,CAAYiwB,CAAZ,CAAnD,EACEl/D,CAAA,EAF4B,CAAhC,CAKI0/D,EAAe,EAAEN,CAEjBz1E,EAAJ,EAGEma,CAAA,CAAiBna,CAAjB,CAAsB,CAAA,CAAtB,CAAA09B,KAAA,CAAiC,QAAQ,CAACyK,CAAD,CAAW,CAClD,GAAIpK,CAAAtzB,CAAAszB,YAAJ,EAEIg4C,CAFJ,GAEqBN,CAFrB,CAEA,CACA,IAAI74C,EAAWnyB,CAAAqoB,KAAA,EACfukC,EAAAvnC,SAAA,CAAgBqY,CAQZ1nC,EAAAA,CAAQk8B,CAAA,CAAYC,CAAZ,CAAsB,QAAQ,CAACn8B,CAAD,CAAQ,CAChDm1E,CAAA,EACAr/D,EAAAstD,MAAA,CAAepjE,CAAf,CAAsB,IAAtB,CAA4BmvB,CAA5B,CAAA8N,KAAA,CAA2Co4C,CAA3C,CAFgD,CAAtC,CAKZ9zB,EAAA,CAAeplB,CACf+4C,EAAA,CAAiBl1E,CAEjBuhD,EAAAgE,MAAA,CAAmB,uBAAnB;AAA4ChmD,CAA5C,CACAyK,EAAA66C,MAAA,CAAYgwB,CAAZ,CAnBA,CAHkD,CAApD,CAuBG,QAAQ,EAAG,CACR7qE,CAAAszB,YAAJ,EAEIg4C,CAFJ,GAEqBN,CAFrB,GAGEG,CAAA,EACA,CAAAnrE,CAAAu7C,MAAA,CAAY,sBAAZ,CAAoChmD,CAApC,CAJF,CADY,CAvBd,CA+BA,CAAAyK,CAAAu7C,MAAA,CAAY,0BAAZ,CAAwChmD,CAAxC,CAlCF,GAoCE41E,CAAA,EACA,CAAAve,CAAAvnC,SAAA,CAAgB,IArClB,CARsD,CAAxD,CAxByD,CAL5B,CAN5B,CADiE,CADjD,CAzOzB,CAwUI5Z,GAAgC,CAAC,UAAD,CAClC,QAAQ,CAACg+D,CAAD,CAAW,CACjB,MAAO,CACL3kD,SAAU,KADL,CAELD,SAAW,IAFN,CAGLZ,QAAS,WAHJ,CAILnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQmlB,CAAR,CAAkBwB,CAAlB,CAAyBimC,CAAzB,CAA+B,CACvC11D,EAAAjD,KAAA,CAAckxB,CAAA,CAAS,CAAT,CAAd,CAAAnrB,MAAA,CAAiC,KAAjC,CAAJ,EAIEmrB,CAAAnoB,MAAA,EACA,CAAAysE,CAAA,CAASt4D,EAAA,CAAoBy7C,CAAAvnC,SAApB,CAAmCvyB,CAAAyI,SAAnC,CAAA2W,WAAT,CAAA,CAAyElS,CAAzE,CACIurE,QAA8B,CAACv1E,CAAD,CAAQ,CACxCmvB,CAAAhoB,OAAA,CAAgBnH,CAAhB,CADwC,CAD1C,CAGG,CAACwyB,oBAAqBrD,CAAtB,CAHH,CALF,GAYAA,CAAA/nB,KAAA,CAAcwvD,CAAAvnC,SAAd,CACA,CAAAokD,CAAA,CAAStkD,CAAAyL,SAAA,EAAT,CAAA,CAA8B5wB,CAA9B,CAbA,CAD2C,CAJxC,CADU,CADe,CAxUpC,CA2ZI8I,GAAkBiiD,EAAA,CAAY,CAChClmC,SAAU,GADsB,CAEhC5kB,QAASA,QAAQ,EAAG,CAClB,MAAO,CACL+sB,IAAKA,QAAQ,CAAChtB,CAAD;AAAQ3H,CAAR,CAAiBuxB,CAAjB,CAAwB,CACnC5pB,CAAA66C,MAAA,CAAYjxB,CAAA/gB,OAAZ,CADmC,CADhC,CADW,CAFY,CAAZ,CA3ZtB,CA0fIyB,GAAkBA,QAAQ,EAAG,CAC/B,MAAO,CACLwa,SAAU,GADL,CAELD,SAAU,GAFL,CAGLZ,QAAS,SAHJ,CAILnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6B,CAGzC,IAAIviD,EAAShS,CAAAN,KAAA,CAAaA,CAAA4uB,MAAAtc,OAAb,CAATA,EAA4C,IAAhD,CACImhE,EAA6B,OAA7BA,GAAazzE,CAAAi2D,OADjB,CAEI9sD,EAAYsqE,CAAA,CAAa74D,CAAA,CAAKtI,CAAL,CAAb,CAA4BA,CAiB5CuiD,EAAA6D,SAAAz3D,KAAA,CAfY8C,QAAQ,CAAC0sE,CAAD,CAAY,CAE9B,GAAI,CAAArxE,CAAA,CAAYqxE,CAAZ,CAAJ,CAAA,CAEA,IAAIjsD,EAAO,EAEPisD,EAAJ,EACE70E,CAAA,CAAQ60E,CAAArwE,MAAA,CAAgB+I,CAAhB,CAAR,CAAoC,QAAQ,CAACxM,CAAD,CAAQ,CAC9CA,CAAJ,EAAW6nB,CAAAvjB,KAAA,CAAUwyE,CAAA,CAAa74D,CAAA,CAAKje,CAAL,CAAb,CAA2BA,CAArC,CADuC,CAApD,CAKF,OAAO6nB,EAVP,CAF8B,CAehC,CACAqwC,EAAAe,YAAA30D,KAAA,CAAsB,QAAQ,CAACtE,CAAD,CAAQ,CACpC,GAAIvB,CAAA,CAAQuB,CAAR,CAAJ,CACE,MAAOA,EAAAuJ,KAAA,CAAWoM,CAAX,CAF2B,CAAtC,CASAuiD,EAAAgB,SAAA,CAAgBub,QAAQ,CAACz0E,CAAD,CAAQ,CAC9B,MAAO,CAACA,CAAR,EAAiB,CAACA,CAAApB,OADY,CAhCS,CAJtC,CADwB,CA1fjC,CA8iBIm/D,GAAc,UA9iBlB,CA+iBIC,GAAgB,YA/iBpB,CAgjBI1F,GAAiB,aAhjBrB,CAijBIC,GAAc,UAjjBlB,CAojBI4F,GAAgB,YApjBpB,CAwjBIlC,GAAgB59D,CAAA,CAAO,SAAP,CAxjBpB,CAkwBI04E,GAAoB,CAAC,QAAD;AAAW,mBAAX,CAAgC,QAAhC,CAA0C,UAA1C,CAAsD,QAAtD,CAAgE,UAAhE,CAA4E,UAA5E,CAAwF,YAAxF,CAAsG,IAAtG,CAA4G,cAA5G,CACpB,QAAQ,CAACx5C,CAAD,CAAS/kB,CAAT,CAA4ByZ,CAA5B,CAAmCxB,CAAnC,CAA6CzW,CAA7C,CAAqD5C,CAArD,CAA+DgE,CAA/D,CAAyElB,CAAzE,CAAqFE,CAArF,CAAyFtB,CAAzF,CAAuG,CAEjH,IAAAk+D,YAAA,CADA,IAAAzd,WACA,CADkB1rC,MAAAwtC,IAElB,KAAA4b,gBAAA,CAAuBpyE,IAAAA,EACvB,KAAAu3D,YAAA,CAAmB,EACnB,KAAA8a,iBAAA,CAAwB,EACxB,KAAAnb,SAAA,CAAgB,EAChB,KAAA9C,YAAA,CAAmB,EACnB,KAAA4c,qBAAA,CAA4B,EAC5B,KAAAsB,WAAA,CAAkB,CAAA,CAClB,KAAAC,SAAA,CAAgB,CAAA,CAChB,KAAAvgB,UAAA,CAAiB,CAAA,CACjB,KAAAD,OAAA,CAAc,CAAA,CACd,KAAAE,OAAA,CAAc,CAAA,CACd,KAAAC,SAAA,CAAgB,CAAA,CAChB,KAAAP,OAAA,CAAc,EACd,KAAAC,UAAA,CAAiB,EACjB,KAAAC,SAAA,CAAgB7xD,IAAAA,EAChB,KAAA8xD,MAAA,CAAa79C,CAAA,CAAamZ,CAAA5nB,KAAb,EAA2B,EAA3B,CAA+B,CAAA,CAA/B,CAAA,CAAsCkzB,CAAtC,CACb;IAAA05B,aAAA,CAAoBC,EAnB6F,KAqB7GmgB,EAAgBr9D,CAAA,CAAOiY,CAAAxc,QAAP,CArB6F,CAsB7G6hE,EAAsBD,CAAAj1C,OAtBuF,CAuB7Gm1C,EAAaF,CAvBgG,CAwB7GG,EAAaF,CAxBgG,CAyB7GG,EAAkB,IAzB2F,CA0B7GC,CA1B6G,CA2B7Gxf,EAAO,IAEX,KAAAyf,aAAA,CAAoBC,QAAQ,CAACruD,CAAD,CAAU,CAEpC,IADA2uC,CAAA0D,SACA,CADgBryC,CAChB,GAAeA,CAAAsuD,aAAf,CAAqC,CAAA,IAC/BC,EAAoB99D,CAAA,CAAOiY,CAAAxc,QAAP,CAAuB,IAAvB,CADW,CAE/BsiE,EAAoB/9D,CAAA,CAAOiY,CAAAxc,QAAP,CAAuB,QAAvB,CAExB8hE,EAAA,CAAaA,QAAQ,CAACh6C,CAAD,CAAS,CAC5B,IAAIs2C,EAAawD,CAAA,CAAc95C,CAAd,CACbl+B,EAAA,CAAWw0E,CAAX,CAAJ,GACEA,CADF,CACeiE,CAAA,CAAkBv6C,CAAlB,CADf,CAGA,OAAOs2C,EALqB,CAO9B2D,EAAA,CAAaA,QAAQ,CAACj6C,CAAD,CAASiD,CAAT,CAAmB,CAClCnhC,CAAA,CAAWg4E,CAAA,CAAc95C,CAAd,CAAX,CAAJ,CACEw6C,CAAA,CAAkBx6C,CAAlB,CAA0B,CAACy6C,KAAMx3C,CAAP,CAA1B,CADF,CAGE82C,CAAA,CAAoB/5C,CAApB,CAA4BiD,CAA5B,CAJoC,CAXL,CAArC,IAkBO,IAAK4B,CAAAi1C,CAAAj1C,OAAL,CACL,KAAM65B,GAAA,CAAc,WAAd,CACFhqC,CAAAxc,QADE,CACapN,EAAA,CAAYooB,CAAZ,CADb,CAAN,CArBkC,CA8CtC,KAAA2pC,QAAA,CAAel4D,CAoBf,KAAAg3D,SAAA,CAAgB+e,QAAQ,CAACj4E,CAAD,CAAQ,CAC9B,MAAOyC,EAAA,CAAYzC,CAAZ,CAAP,EAAuC,EAAvC,GAA6BA,CAA7B,EAAuD,IAAvD,GAA6CA,CAA7C,EAA+DA,CAA/D,GAAyEA,CAD3C,CAIhC,KAAAk4E,qBAAA,CAA4BC,QAAQ,CAACn4E,CAAD,CAAQ,CACtCk4D,CAAAgB,SAAA,CAAcl5D,CAAd,CAAJ,EACEoX,CAAAqM,YAAA,CAAqBgN,CAArB,CAlTgB2nD,cAkThB,CACA;AAAAhhE,CAAAoM,SAAA,CAAkBiN,CAAlB,CApTY4nD,UAoTZ,CAFF,GAIEjhE,CAAAqM,YAAA,CAAqBgN,CAArB,CAtTY4nD,UAsTZ,CACA,CAAAjhE,CAAAoM,SAAA,CAAkBiN,CAAlB,CAtTgB2nD,cAsThB,CALF,CAD0C,CAW5C,KAAIE,EAAyB,CAwB7BrgB,GAAA,CAAqB,CACnBC,KAAM,IADa,CAEnBznC,SAAUA,CAFS,CAGnBtrB,IAAKA,QAAQ,CAAC00C,CAAD,CAASxc,CAAT,CAAmB,CAC9Bwc,CAAA,CAAOxc,CAAP,CAAA,CAAmB,CAAA,CADW,CAHb,CAMnB86B,MAAOA,QAAQ,CAACte,CAAD,CAASxc,CAAT,CAAmB,CAChC,OAAOwc,CAAA,CAAOxc,CAAP,CADyB,CANf,CASnBjmB,SAAUA,CATS,CAArB,CAuBA,KAAAohD,aAAA,CAAoB+f,QAAQ,EAAG,CAC7BrgB,CAAAtB,OAAA,CAAc,CAAA,CACdsB,EAAArB,UAAA,CAAiB,CAAA,CACjBz/C,EAAAqM,YAAA,CAAqBgN,CAArB,CAA+B8nC,EAA/B,CACAnhD,EAAAoM,SAAA,CAAkBiN,CAAlB,CAA4B6nC,EAA5B,CAJ6B,CAkB/B,KAAAF,UAAA,CAAiBogB,QAAQ,EAAG,CAC1BtgB,CAAAtB,OAAA,CAAc,CAAA,CACdsB,EAAArB,UAAA,CAAiB,CAAA,CACjBz/C,EAAAqM,YAAA,CAAqBgN,CAArB,CAA+B6nC,EAA/B,CACAlhD,EAAAoM,SAAA,CAAkBiN,CAAlB,CAA4B8nC,EAA5B,CACAL,EAAAjB,aAAAmB,UAAA,EAL0B,CAoB5B,KAAAQ,cAAA,CAAqB6f,QAAQ,EAAG,CAC9BvgB,CAAAkf,SAAA,CAAgB,CAAA,CAChBlf,EAAAif,WAAA,CAAkB,CAAA,CAClB//D,EAAAshD,SAAA,CAAkBjoC,CAAlB,CAvZkBioD,cAuZlB,CAtZgBC,YAsZhB,CAH8B,CAiBhC;IAAAC,YAAA,CAAmBC,QAAQ,EAAG,CAC5B3gB,CAAAkf,SAAA,CAAgB,CAAA,CAChBlf,EAAAif,WAAA,CAAkB,CAAA,CAClB//D,EAAAshD,SAAA,CAAkBjoC,CAAlB,CAvagBkoD,YAuahB,CAxakBD,cAwalB,CAH4B,CA8F9B,KAAAvhB,mBAAA,CAA0B2hB,QAAQ,EAAG,CACnC19D,CAAAsR,OAAA,CAAgB+qD,CAAhB,CACAvf,EAAAqB,WAAA,CAAkBrB,CAAA6gB,yBAClB7gB,EAAAkC,QAAA,EAHmC,CAkBrC,KAAAkC,UAAA,CAAiB0c,QAAQ,EAAG,CAE1B,GAAI,CAAAl6E,CAAA,CAASo5D,CAAA8e,YAAT,CAAJ,EAAkC,CAAArvE,KAAA,CAAMuwD,CAAA8e,YAAN,CAAlC,CAAA,CASA,IAAInD,EAAa3b,CAAA+e,gBAAjB,CAEIgC,EAAY/gB,CAAApB,OAFhB,CAGIoiB,EAAiBhhB,CAAA8e,YAHrB,CAKImC,EAAejhB,CAAA0D,SAAfud,EAAgCjhB,CAAA0D,SAAAud,aAEpCjhB,EAAAkhB,gBAAA,CAAqBvF,CAArB,CAZgB3b,CAAA6gB,yBAYhB,CAA4C,QAAQ,CAACM,CAAD,CAAW,CAGxDF,CAAL,EAAqBF,CAArB,GAAmCI,CAAnC,GAKEnhB,CAAA8e,YAEA,CAFmBqC,CAAA,CAAWxF,CAAX,CAAwBhvE,IAAAA,EAE3C,CAAIqzD,CAAA8e,YAAJ,GAAyBkC,CAAzB,EACEhhB,CAAAohB,oBAAA,EARJ,CAH6D,CAA/D,CAhBA,CAF0B,CAoC5B;IAAAF,gBAAA,CAAuBG,QAAQ,CAAC1F,CAAD,CAAaC,CAAb,CAAwB0F,CAAxB,CAAsC,CAmCnEC,QAASA,EAAqB,EAAG,CAC/B,IAAIC,EAAsB,CAAA,CAC1Bz6E,EAAA,CAAQi5D,CAAAkE,YAAR,CAA0B,QAAQ,CAACud,CAAD,CAAYtvE,CAAZ,CAAkB,CAClD,IAAI+a,EAASu0D,CAAA,CAAU9F,CAAV,CAAsBC,CAAtB,CACb4F,EAAA,CAAsBA,CAAtB,EAA6Ct0D,CAC7C64C,EAAA,CAAY5zD,CAAZ,CAAkB+a,CAAlB,CAHkD,CAApD,CAKA,OAAKs0D,EAAL,CAMO,CAAA,CANP,EACEz6E,CAAA,CAAQi5D,CAAAgf,iBAAR,CAA+B,QAAQ,CAAC7wC,CAAD,CAAIh8B,CAAJ,CAAU,CAC/C4zD,CAAA,CAAY5zD,CAAZ,CAAkB,IAAlB,CAD+C,CAAjD,CAGO,CAAA,CAAA,CAJT,CAP+B,CAgBjCuvE,QAASA,EAAsB,EAAG,CAChC,IAAIC,EAAoB,EAAxB,CACIR,EAAW,CAAA,CACfp6E,EAAA,CAAQi5D,CAAAgf,iBAAR,CAA+B,QAAQ,CAACyC,CAAD,CAAYtvE,CAAZ,CAAkB,CACvD,IAAI8/B,EAAUwvC,CAAA,CAAU9F,CAAV,CAAsBC,CAAtB,CACd,IAAmB3pC,CAAAA,CAAnB,EA78zBQ,CAAA9qC,CAAA,CA68zBW8qC,CA78zBA5L,KAAX,CA68zBR,CACE,KAAM09B,GAAA,CAAc,WAAd,CAC0E9xB,CAD1E,CAAN,CAGF8zB,CAAA,CAAY5zD,CAAZ,CAAkBxF,IAAAA,EAAlB,CACAg1E,EAAAv1E,KAAA,CAAuB6lC,CAAA5L,KAAA,CAAa,QAAQ,EAAG,CAC7C0/B,CAAA,CAAY5zD,CAAZ,CAAkB,CAAA,CAAlB,CAD6C,CAAxB,CAEpB,QAAQ,EAAG,CACZgvE,CAAA,CAAW,CAAA,CACXpb,EAAA,CAAY5zD,CAAZ,CAAkB,CAAA,CAAlB,CAFY,CAFS,CAAvB,CAPuD,CAAzD,CAcKwvE,EAAAj7E,OAAL,CAGEwb,CAAA2mC,IAAA,CAAO84B,CAAP,CAAAt7C,KAAA,CAA+B,QAAQ,EAAG,CACxCu7C,CAAA,CAAeT,CAAf,CADwC,CAA1C,CAEGn3E,CAFH,CAHF,CACE43E,CAAA,CAAe,CAAA,CAAf,CAlB8B,CA0BlC7b,QAASA,EAAW,CAAC5zD,CAAD,CAAOyzD,CAAP,CAAgB,CAC9Bic,CAAJ,GAA6BzB,CAA7B,EACEpgB,CAAAF,aAAA,CAAkB3tD,CAAlB,CAAwByzD,CAAxB,CAFgC,CAMpCgc,QAASA,EAAc,CAACT,CAAD,CAAW,CAC5BU,CAAJ,GAA6BzB,CAA7B,EAEEkB,CAAA,CAAaH,CAAb,CAH8B,CAlFlCf,CAAA,EACA,KAAIyB;AAAuBzB,CAa3B0B,UAA2B,EAAG,CAC5B,IAAIC,EAAW/hB,CAAA4D,aAAXme,EAAgC,OACpC,IAAIx3E,CAAA,CAAYi1E,CAAZ,CAAJ,CACEzZ,CAAA,CAAYgc,CAAZ,CAAsB,IAAtB,CADF,KAaE,OAVKvC,EAUEA,GATLz4E,CAAA,CAAQi5D,CAAAkE,YAAR,CAA0B,QAAQ,CAAC/1B,CAAD,CAAIh8B,CAAJ,CAAU,CAC1C4zD,CAAA,CAAY5zD,CAAZ,CAAkB,IAAlB,CAD0C,CAA5C,CAGA,CAAApL,CAAA,CAAQi5D,CAAAgf,iBAAR,CAA+B,QAAQ,CAAC7wC,CAAD,CAAIh8B,CAAJ,CAAU,CAC/C4zD,CAAA,CAAY5zD,CAAZ,CAAkB,IAAlB,CAD+C,CAAjD,CAMKqtE,EADPzZ,CAAA,CAAYgc,CAAZ,CAAsBvC,CAAtB,CACOA,CAAAA,CAET,OAAO,CAAA,CAjBqB,CAA9BsC,CAVK,EAAL,CAIKP,CAAA,EAAL,CAIAG,CAAA,EAJA,CACEE,CAAA,CAAe,CAAA,CAAf,CALF,CACEA,CAAA,CAAe,CAAA,CAAf,CANiE,CAsGrE,KAAAxiB,iBAAA,CAAwB4iB,QAAQ,EAAG,CACjC,IAAIpG,EAAY5b,CAAAqB,WAEhBn+C,EAAAsR,OAAA,CAAgB+qD,CAAhB,CAKA,IAAIvf,CAAA6gB,yBAAJ,GAAsCjF,CAAtC,EAAkE,EAAlE,GAAoDA,CAApD,EAAyE5b,CAAAsB,sBAAzE,CAGAtB,CAAAggB,qBAAA,CAA0BpE,CAA1B,CAOA,CANA5b,CAAA6gB,yBAMA,CANgCjF,CAMhC,CAHI5b,CAAArB,UAGJ,EAFE,IAAAuB,UAAA,EAEF,CAAA,IAAA+hB,mBAAA,EAlBiC,CAqBnC,KAAAA,mBAAA,CAA0BC,QAAQ,EAAG,CAEnC,IAAIvG,EADY3b,CAAA6gB,yBAIhB;GAFArB,CAEA,CAFcj1E,CAAA,CAAYoxE,CAAZ,CAAA,CAA0BhvE,IAAAA,EAA1B,CAAsC,CAAA,CAEpD,CACE,IAAS,IAAAhF,EAAI,CAAb,CAAgBA,CAAhB,CAAoBq4D,CAAA6D,SAAAn9D,OAApB,CAA0CiB,CAAA,EAA1C,CAEE,GADAg0E,CACI,CADS3b,CAAA6D,SAAA,CAAcl8D,CAAd,CAAA,CAAiBg0E,CAAjB,CACT,CAAApxE,CAAA,CAAYoxE,CAAZ,CAAJ,CAA6B,CAC3B6D,CAAA,CAAc,CAAA,CACd,MAF2B,CAM7B54E,CAAA,CAASo5D,CAAA8e,YAAT,CAAJ,EAAkCrvE,KAAA,CAAMuwD,CAAA8e,YAAN,CAAlC,GAEE9e,CAAA8e,YAFF,CAEqBO,CAAA,CAAWh6C,CAAX,CAFrB,CAIA,KAAI27C,EAAiBhhB,CAAA8e,YAArB,CACImC,EAAejhB,CAAA0D,SAAfud,EAAgCjhB,CAAA0D,SAAAud,aACpCjhB,EAAA+e,gBAAA,CAAuBpD,CAEnBsF,EAAJ,GACEjhB,CAAA8e,YAkBA,CAlBmBnD,CAkBnB,CAAI3b,CAAA8e,YAAJ,GAAyBkC,CAAzB,EACEhhB,CAAAohB,oBAAA,EApBJ,CAOAphB,EAAAkhB,gBAAA,CAAqBvF,CAArB,CAAiC3b,CAAA6gB,yBAAjC,CAAgE,QAAQ,CAACM,CAAD,CAAW,CAC5EF,CAAL,GAKEjhB,CAAA8e,YAMF,CANqBqC,CAAA,CAAWxF,CAAX,CAAwBhvE,IAAAA,EAM7C,CAAIqzD,CAAA8e,YAAJ,GAAyBkC,CAAzB,EACEhhB,CAAAohB,oBAAA,EAZF,CADiF,CAAnF,CA7BmC,CA+CrC,KAAAA,oBAAA,CAA2Be,QAAQ,EAAG,CACpC7C,CAAA,CAAWj6C,CAAX,CAAmB26B,CAAA8e,YAAnB,CACA/3E,EAAA,CAAQi5D,CAAA2d,qBAAR;AAAmC,QAAQ,CAACprD,CAAD,CAAW,CACpD,GAAI,CACFA,CAAA,EADE,CAEF,MAAOliB,CAAP,CAAU,CACViQ,CAAA,CAAkBjQ,CAAlB,CADU,CAHwC,CAAtD,CAFoC,CA6DtC,KAAAkxD,cAAA,CAAqB6gB,QAAQ,CAACt6E,CAAD,CAAQkgE,CAAR,CAAiB,CAC5ChI,CAAAqB,WAAA,CAAkBv5D,CACbk4D,EAAA0D,SAAL,EAAsB2e,CAAAriB,CAAA0D,SAAA2e,gBAAtB,EACEriB,CAAAsiB,0BAAA,CAA+Bta,CAA/B,CAH0C,CAO9C,KAAAsa,0BAAA,CAAiCC,QAAQ,CAACva,CAAD,CAAU,CAAA,IAC7Cwa,EAAgB,CAD6B,CAE7CnxD,EAAU2uC,CAAA0D,SAGVryC,EAAJ,EAAe7mB,CAAA,CAAU6mB,CAAAoxD,SAAV,CAAf,GACEA,CACA,CADWpxD,CAAAoxD,SACX,CAAI77E,CAAA,CAAS67E,CAAT,CAAJ,CACED,CADF,CACkBC,CADlB,CAEW77E,CAAA,CAAS67E,CAAA,CAASza,CAAT,CAAT,CAAJ,CACLwa,CADK,CACWC,CAAA,CAASza,CAAT,CADX,CAEIphE,CAAA,CAAS67E,CAAA,CAAS,SAAT,CAAT,CAFJ,GAGLD,CAHK,CAGWC,CAAA,CAAS,SAAT,CAHX,CAJT,CAWAv/D,EAAAsR,OAAA,CAAgB+qD,CAAhB,CACIiD,EAAJ,CACEjD,CADF,CACoBr8D,CAAA,CAAS,QAAQ,EAAG,CACpC88C,CAAAZ,iBAAA,EADoC,CAApB,CAEfojB,CAFe,CADpB,CAIWxgE,CAAAmxB,QAAJ,CACL6sB,CAAAZ,iBAAA,EADK,CAGL/5B,CAAA/xB,OAAA,CAAc,QAAQ,EAAG,CACvB0sD,CAAAZ,iBAAA,EADuB,CAAzB,CAxB+C,CAsCnD/5B,EAAAz6B,OAAA,CAAc83E,QAAqB,EAAG,CACpC,IAAI/G,EAAa0D,CAAA,CAAWh6C,CAAX,CAIjB,IAAIs2C,CAAJ,GAAmB3b,CAAA8e,YAAnB,GAEI9e,CAAA8e,YAFJ;AAEyB9e,CAAA8e,YAFzB,EAE6CnD,CAF7C,GAE4DA,CAF5D,EAGE,CACA3b,CAAA8e,YAAA,CAAmB9e,CAAA+e,gBAAnB,CAA0CpD,CAC1C6D,EAAA,CAAc7yE,IAAAA,EAMd,KARA,IAIIg2E,EAAa3iB,CAAAe,YAJjB,CAKIpkC,EAAMgmD,CAAAj8E,OALV,CAOIk1E,EAAYD,CAChB,CAAOh/C,CAAA,EAAP,CAAA,CACEi/C,CAAA,CAAY+G,CAAA,CAAWhmD,CAAX,CAAA,CAAgBi/C,CAAhB,CAEV5b,EAAAqB,WAAJ,GAAwBua,CAAxB,GACE5b,CAAAggB,qBAAA,CAA0BpE,CAA1B,CAIA,CAHA5b,CAAAqB,WAGA,CAHkBrB,CAAA6gB,yBAGlB,CAHkDjF,CAGlD,CAFA5b,CAAAkC,QAAA,EAEA,CAAAlC,CAAAkhB,gBAAA,CAAqBvF,CAArB,CAAiCC,CAAjC,CAA4C5xE,CAA5C,CALF,CAXA,CAoBF,MAAO2xE,EA5B6B,CAAtC,CA5nBiH,CAD3F,CAlwBxB,CA2lDIn+D,GAAmB,CAAC,YAAD,CAAe,QAAQ,CAACwE,CAAD,CAAa,CACzD,MAAO,CACLkW,SAAU,GADL,CAELb,QAAS,CAAC,SAAD,CAAY,QAAZ,CAAsB,kBAAtB,CAFJ,CAGLjiB,WAAYypE,EAHP,CAOL5mD,SAAU,CAPL,CAQL5kB,QAASuvE,QAAuB,CAACn3E,CAAD,CAAU,CAExCA,CAAA6f,SAAA,CAAiB80C,EAAjB,CAAA90C,SAAA,CApjCgBk1D,cAojChB,CAAAl1D,SAAA,CAAoEu6C,EAApE,CAEA,OAAO,CACLzlC,IAAKyiD,QAAuB,CAACzvE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuBgvE,CAAvB,CAA8B,CAAA,IACpD2I,EAAY3I,CAAA,CAAM,CAAN,CACZ4I,EAAAA,CAAW5I,CAAA,CAAM,CAAN,CAAX4I;AAAuBD,CAAA/jB,aAE3B+jB,EAAArD,aAAA,CAAuBtF,CAAA,CAAM,CAAN,CAAvB,EAAmCA,CAAA,CAAM,CAAN,CAAAzW,SAAnC,CAGAqf,EAAAzjB,YAAA,CAAqBwjB,CAArB,CAEA33E,EAAA4+B,SAAA,CAAc,MAAd,CAAsB,QAAQ,CAACzB,CAAD,CAAW,CACnCw6C,CAAArkB,MAAJ,GAAwBn2B,CAAxB,EACEw6C,CAAA/jB,aAAAS,gBAAA,CAAuCsjB,CAAvC,CAAkDx6C,CAAlD,CAFqC,CAAzC,CAMAl1B,EAAAwuB,IAAA,CAAU,UAAV,CAAsB,QAAQ,EAAG,CAC/BkhD,CAAA/jB,aAAAa,eAAA,CAAsCkjB,CAAtC,CAD+B,CAAjC,CAfwD,CADrD,CAoBLziD,KAAM2iD,QAAwB,CAAC5vE,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuBgvE,CAAvB,CAA8B,CAC1D,IAAI2I,EAAY3I,CAAA,CAAM,CAAN,CAChB,IAAI2I,CAAApf,SAAJ,EAA0Bof,CAAApf,SAAAuf,SAA1B,CACEx3E,CAAAwJ,GAAA,CAAW6tE,CAAApf,SAAAuf,SAAX,CAAwC,QAAQ,CAAC9hB,CAAD,CAAK,CACnD2hB,CAAAR,0BAAA,CAAoCnhB,CAApC,EAA0CA,CAAA7zD,KAA1C,CADmD,CAArD,CAKF7B,EAAAwJ,GAAA,CAAW,MAAX,CAAmB,QAAQ,EAAG,CACxB6tE,CAAA5D,SAAJ,GAEIl9D,CAAAmxB,QAAJ,CACE//B,CAAAzI,WAAA,CAAiBm4E,CAAApC,YAAjB,CADF,CAGEttE,CAAAE,OAAA,CAAawvE,CAAApC,YAAb,CALF,CAD4B,CAA9B,CAR0D,CApBvD,CAJiC,CARrC,CADkD,CAApC,CA3lDvB,CAmpDIwC,GAAiB,uBAnpDrB,CAszDItkE,GAA0BA,QAAQ,EAAG,CACvC,MAAO,CACLsZ,SAAU,GADL;AAEL9iB,WAAY,CAAC,QAAD,CAAW,QAAX,CAAqB,QAAQ,CAACiwB,CAAD,CAAS7M,CAAT,CAAiB,CACxD,IAAI0vB,EAAO,IACX,KAAAwb,SAAA,CAAgB13D,CAAA,CAAKq5B,CAAA4oB,MAAA,CAAaz1B,CAAA7Z,eAAb,CAAL,CAEZnU,EAAA,CAAU,IAAAk5D,SAAAuf,SAAV,CAAJ,EACE,IAAAvf,SAAA2e,gBAEA,CAFgC,CAAA,CAEhC,CAAA,IAAA3e,SAAAuf,SAAA,CAAyBl9D,CAAA,CAAK,IAAA29C,SAAAuf,SAAA3zE,QAAA,CAA+B4zE,EAA/B,CAA+C,QAAQ,EAAG,CACtFh7B,CAAAwb,SAAA2e,gBAAA,CAAgC,CAAA,CAChC,OAAO,GAF+E,CAA1D,CAAL,CAH3B,EAQE,IAAA3e,SAAA2e,gBARF,CAQkC,CAAA,CAZsB,CAA9C,CAFP,CADgC,CAtzDzC,CAu9DIjmE,GAAyB+hD,EAAA,CAAY,CAAE/gC,SAAU,CAAA,CAAZ,CAAkBnF,SAAU,GAA5B,CAAZ,CAv9D7B,CA29DIkrD,GAAkBh9E,CAAA,CAAO,WAAP,CA39DtB,CAisEIi9E,GAAoB,2OAjsExB;AA8sEIhmE,GAAqB,CAAC,UAAD,CAAa,WAAb,CAA0B,QAA1B,CAAoC,QAAQ,CAACy/D,CAAD,CAAWz8D,CAAX,CAAsB0B,CAAtB,CAA8B,CAEjGuhE,QAASA,EAAsB,CAACC,CAAD,CAAaC,CAAb,CAA4BnwE,CAA5B,CAAmC,CAsDhEowE,QAASA,EAAM,CAACC,CAAD,CAAc7H,CAAd,CAAyB8H,CAAzB,CAAgCC,CAAhC,CAAuCC,CAAvC,CAAiD,CAC9D,IAAAH,YAAA,CAAmBA,CACnB,KAAA7H,UAAA,CAAiBA,CACjB,KAAA8H,MAAA,CAAaA,CACb,KAAAC,MAAA,CAAaA,CACb,KAAAC,SAAA,CAAgBA,CAL8C,CAQhEC,QAASA,EAAmB,CAACC,CAAD,CAAe,CACzC,IAAIC,CAEJ,IAAKC,CAAAA,CAAL,EAAgB59E,EAAA,CAAY09E,CAAZ,CAAhB,CACEC,CAAA,CAAmBD,CADrB,KAEO,CAELC,CAAA,CAAmB,EACnB,KAASE,IAAAA,CAAT,GAAoBH,EAApB,CACMA,CAAA18E,eAAA,CAA4B68E,CAA5B,CAAJ,EAAkE,GAAlE,GAA4CA,CAAAl2E,OAAA,CAAe,CAAf,CAA5C,EACEg2E,CAAA33E,KAAA,CAAsB63E,CAAtB,CALC,CASP,MAAOF,EAdkC,CA5D3C,IAAI32E,EAAQk2E,CAAAl2E,MAAA,CAAiBg2E,EAAjB,CACZ,IAAMh2E,CAAAA,CAAN,CACE,KAAM+1E,GAAA,CAAgB,MAAhB,CAIJG,CAJI,CAIQnzE,EAAA,CAAYozE,CAAZ,CAJR,CAAN,CAUF,IAAIW,EAAY92E,CAAA,CAAM,CAAN,CAAZ82E,EAAwB92E,CAAA,CAAM,CAAN,CAA5B,CAEI42E,EAAU52E,CAAA,CAAM,CAAN,CAGV+2E,EAAAA,CAAW,MAAAn5E,KAAA,CAAYoC,CAAA,CAAM,CAAN,CAAZ,CAAX+2E,EAAoC/2E,CAAA,CAAM,CAAN,CAExC,KAAIg3E,EAAUh3E,CAAA,CAAM,CAAN,CAEVjD,EAAAA,CAAU2X,CAAA,CAAO1U,CAAA,CAAM,CAAN,CAAA,CAAWA,CAAA,CAAM,CAAN,CAAX,CAAsB82E,CAA7B,CAEd,KAAIG,EADaF,CACbE,EADyBviE,CAAA,CAAOqiE,CAAP,CACzBE,EAA4Bl6E,CAAhC,CACIm6E,EAAYF,CAAZE,EAAuBxiE,CAAA,CAAOsiE,CAAP,CAD3B,CAMIG,EAAoBH,CAAA,CACE,QAAQ,CAACt8E,CAAD,CAAQwmB,CAAR,CAAgB,CAAE,MAAOg2D,EAAA,CAAUlxE,CAAV,CAAiBkb,CAAjB,CAAT,CAD1B,CAEEk2D,QAAuB,CAAC18E,CAAD,CAAQ,CAAE,MAAO0jB,GAAA,CAAQ1jB,CAAR,CAAT,CARzD;AASI28E,EAAkBA,QAAQ,CAAC38E,CAAD,CAAQZ,CAAR,CAAa,CACzC,MAAOq9E,EAAA,CAAkBz8E,CAAlB,CAAyB48E,CAAA,CAAU58E,CAAV,CAAiBZ,CAAjB,CAAzB,CADkC,CAT3C,CAaIy9E,EAAY7iE,CAAA,CAAO1U,CAAA,CAAM,CAAN,CAAP,EAAmBA,CAAA,CAAM,CAAN,CAAnB,CAbhB,CAcIw3E,EAAY9iE,CAAA,CAAO1U,CAAA,CAAM,CAAN,CAAP,EAAmB,EAAnB,CAdhB,CAeIy3E,EAAgB/iE,CAAA,CAAO1U,CAAA,CAAM,CAAN,CAAP,EAAmB,EAAnB,CAfpB,CAgBI03E,EAAWhjE,CAAA,CAAO1U,CAAA,CAAM,CAAN,CAAP,CAhBf,CAkBIkhB,EAAS,EAlBb,CAmBIo2D,EAAYV,CAAA,CAAU,QAAQ,CAACl8E,CAAD,CAAQZ,CAAR,CAAa,CAC7ConB,CAAA,CAAO01D,CAAP,CAAA,CAAkB98E,CAClBonB,EAAA,CAAO41D,CAAP,CAAA,CAAoBp8E,CACpB,OAAOwmB,EAHsC,CAA/B,CAIZ,QAAQ,CAACxmB,CAAD,CAAQ,CAClBwmB,CAAA,CAAO41D,CAAP,CAAA,CAAoBp8E,CACpB,OAAOwmB,EAFW,CA+BpB,OAAO,CACL81D,QAASA,CADJ,CAELK,gBAAiBA,CAFZ,CAGLM,cAAejjE,CAAA,CAAOgjE,CAAP,CAAiB,QAAQ,CAAChB,CAAD,CAAe,CAIrD,IAAIkB,EAAe,EACnBlB,EAAA,CAAeA,CAAf,EAA+B,EAI/B,KAFA,IAAIC,EAAmBF,CAAA,CAAoBC,CAApB,CAAvB,CACImB,EAAqBlB,CAAAr9E,OADzB,CAESmF,EAAQ,CAAjB,CAAoBA,CAApB,CAA4Bo5E,CAA5B,CAAgDp5E,CAAA,EAAhD,CAAyD,CACvD,IAAI3E,EAAO48E,CAAD,GAAkBC,CAAlB,CAAsCl4E,CAAtC,CAA8Ck4E,CAAA,CAAiBl4E,CAAjB,CAAxD,CACI/D,EAAQg8E,CAAA,CAAa58E,CAAb,CADZ,CAGIonB,EAASo2D,CAAA,CAAU58E,CAAV,CAAiBZ,CAAjB,CAHb,CAIIu8E,EAAcc,CAAA,CAAkBz8E,CAAlB,CAAyBwmB,CAAzB,CAClB02D,EAAA54E,KAAA,CAAkBq3E,CAAlB,CAGA,IAAIr2E,CAAA,CAAM,CAAN,CAAJ,EAAgBA,CAAA,CAAM,CAAN,CAAhB,CACMs2E,CACJ,CADYiB,CAAA,CAAUvxE,CAAV,CAAiBkb,CAAjB,CACZ,CAAA02D,CAAA54E,KAAA,CAAkBs3E,CAAlB,CAIEt2E,EAAA,CAAM,CAAN,CAAJ,GACM83E,CACJ,CADkBL,CAAA,CAAczxE,CAAd,CAAqBkb,CAArB,CAClB,CAAA02D,CAAA54E,KAAA,CAAkB84E,CAAlB,CAFF,CAfuD,CAoBzD,MAAOF,EA7B8C,CAAxC,CAHV,CAmCLG,WAAYA,QAAQ,EAAG,CAWrB,IATA,IAAIC,EAAc,EAAlB,CACIC,EAAiB,EADrB,CAKIvB,EAAegB,CAAA,CAAS1xE,CAAT,CAAf0wE,EAAkC,EALtC,CAMIC,EAAmBF,CAAA,CAAoBC,CAApB,CANvB,CAOImB,EAAqBlB,CAAAr9E,OAPzB,CASSmF,EAAQ,CAAjB,CAAoBA,CAApB,CAA4Bo5E,CAA5B,CAAgDp5E,CAAA,EAAhD,CAAyD,CACvD,IAAI3E,EAAO48E,CAAD;AAAkBC,CAAlB,CAAsCl4E,CAAtC,CAA8Ck4E,CAAA,CAAiBl4E,CAAjB,CAAxD,CAEIyiB,EAASo2D,CAAA,CADDZ,CAAAh8E,CAAaZ,CAAbY,CACC,CAAiBZ,CAAjB,CAFb,CAGI00E,EAAYyI,CAAA,CAAYjxE,CAAZ,CAAmBkb,CAAnB,CAHhB,CAIIm1D,EAAcc,CAAA,CAAkB3I,CAAlB,CAA6BttD,CAA7B,CAJlB,CAKIo1D,EAAQiB,CAAA,CAAUvxE,CAAV,CAAiBkb,CAAjB,CALZ,CAMIq1D,EAAQiB,CAAA,CAAUxxE,CAAV,CAAiBkb,CAAjB,CANZ,CAOIs1D,EAAWiB,CAAA,CAAczxE,CAAd,CAAqBkb,CAArB,CAPf,CAQIg3D,EAAa,IAAI9B,CAAJ,CAAWC,CAAX,CAAwB7H,CAAxB,CAAmC8H,CAAnC,CAA0CC,CAA1C,CAAiDC,CAAjD,CAEjBwB,EAAAh5E,KAAA,CAAiBk5E,CAAjB,CACAD,EAAA,CAAe5B,CAAf,CAAA,CAA8B6B,CAZyB,CAezD,MAAO,CACLh6E,MAAO85E,CADF,CAELC,eAAgBA,CAFX,CAGLE,uBAAwBA,QAAQ,CAACz9E,CAAD,CAAQ,CACtC,MAAOu9E,EAAA,CAAeZ,CAAA,CAAgB38E,CAAhB,CAAf,CAD+B,CAHnC,CAML09E,uBAAwBA,QAAQ,CAACjrE,CAAD,CAAS,CAGvC,MAAO6pE,EAAA,CAAU1wE,EAAA1H,KAAA,CAAauO,CAAAqhE,UAAb,CAAV,CAA2CrhE,CAAAqhE,UAHX,CANpC,CA1Bc,CAnClB,CA/EyD,CAF+B,IAiK7F6J,EAAiBv/E,CAAAyI,SAAAkW,cAAA,CAA8B,QAA9B,CAjK4E,CAkK7F6gE,EAAmBx/E,CAAAyI,SAAAkW,cAAA,CAA8B,UAA9B,CA8RvB,OAAO,CACLqT,SAAU,GADL,CAELkF,SAAU,CAAA,CAFL,CAGL/F,QAAS,CAAC,QAAD,CAAW,SAAX,CAHJ,CAILnC,KAAM,CACJkL,IAAKulD,QAAyB,CAACvyE,CAAD,CAAQmwE,CAAR,CAAuBp4E,CAAvB,CAA6BgvE,CAA7B,CAAoC,CAIhEA,CAAA,CAAM,CAAN,CAAAyL,eAAA,CAA0B57E,CAJsC,CAD9D,CAOJq2B,KAvSFwlD,QAA0B,CAACzyE,CAAD,CAAQmwE,CAAR,CAAuBp4E,CAAvB,CAA6BgvE,CAA7B,CAAoC,CAiM5D2L,QAASA,EAAmB,CAACvrE,CAAD,CAAS9O,CAAT,CAAkB,CAC5C8O,CAAA9O,QAAA;AAAiBA,CACjBA,EAAAm4E,SAAA,CAAmBrpE,CAAAqpE,SAMfrpE,EAAAmpE,MAAJ,GAAqBj4E,CAAAi4E,MAArB,GACEj4E,CAAAi4E,MACA,CADgBnpE,CAAAmpE,MAChB,CAAAj4E,CAAA+Z,YAAA,CAAsBjL,CAAAmpE,MAFxB,CAIInpE,EAAAzS,MAAJ,GAAqB2D,CAAA3D,MAArB,GAAoC2D,CAAA3D,MAApC,CAAoDyS,CAAAkpE,YAApD,CAZ4C,CAe9CsC,QAASA,EAAa,EAAG,CACvB,IAAI38C,EAAgB/X,CAAhB+X,EAA2B48C,CAAAC,UAAA,EAO/B,IAAI50D,CAAJ,CAEE,IAAS,IAAA1pB,EAAI0pB,CAAA/lB,MAAA5E,OAAJiB,CAA2B,CAApC,CAA4C,CAA5C,EAAuCA,CAAvC,CAA+CA,CAAA,EAA/C,CAAoD,CAClD,IAAI4S,EAAS8W,CAAA/lB,MAAA,CAAc3D,CAAd,CACT4S,EAAAopE,MAAJ,CACE56D,EAAA,CAAaxO,CAAA9O,QAAAma,WAAb,CADF,CAGEmD,EAAA,CAAaxO,CAAA9O,QAAb,CALgD,CAUtD4lB,CAAA,CAAUlU,CAAAgoE,WAAA,EAEV,KAAIe,EAAkB,EAGlBC,EAAJ,EACE5C,CAAA7Z,QAAA,CAAsB0c,CAAtB,CAGF/0D,EAAA/lB,MAAAvE,QAAA,CAAsBs/E,QAAkB,CAAC9rE,CAAD,CAAS,CAC/C,IAAI+rE,CAEJ,IAAI97E,CAAA,CAAU+P,CAAAopE,MAAV,CAAJ,CAA6B,CAI3B2C,CAAA,CAAeJ,CAAA,CAAgB3rE,CAAAopE,MAAhB,CAEV2C,EAAL,GAEEA,CAOA,CAPeZ,CAAAx8E,UAAA,CAA2B,CAAA,CAA3B,CAOf,CANAq9E,CAAA3hE,YAAA,CAAyB0hE,CAAzB,CAMA,CAHAA,CAAA5C,MAGA,CAHqBnpE,CAAAopE,MAGrB,CAAAuC,CAAA,CAAgB3rE,CAAAopE,MAAhB,CAAA,CAAgC2C,CATlC,CA3DJ,KAAIE,EAAgBf,CAAAv8E,UAAA,CAAyB,CAAA,CAAzB,CAqDW,CAA7B,IAuB2Bq9E,EA5EzBC,CA4EyBD,CA5EzBC,CAAAA,CAAAA,CAAgBf,CAAAv8E,UAAA,CAAyB,CAAA,CAAzB,CACpBW,EAAA+a,YAAA,CAAmB4hE,CAAnB,CACAV;CAAA,CAqEqBvrE,CArErB,CAA4BisE,CAA5B,CAgDiD,CAAjD,CA8BAjD,EAAA,CAAc,CAAd,CAAA3+D,YAAA,CAA6B2hE,CAA7B,CAEAE,EAAAvkB,QAAA,EAGKukB,EAAAzlB,SAAA,CAAqB53B,CAArB,CAAL,GACMs9C,CAEJ,CAFgBV,CAAAC,UAAA,EAEhB,EADqB9oE,CAAAinE,QACjB,EADsCtb,CACtC,CAAkBv7D,EAAA,CAAO67B,CAAP,CAAsBs9C,CAAtB,CAAlB,CAAqDt9C,CAArD,GAAuEs9C,CAA3E,IACED,CAAAllB,cAAA,CAA0BmlB,CAA1B,CACA,CAAAD,CAAAvkB,QAAA,EAFF,CAHF,CAhEuB,CA9MzB,IAAI8jB,EAAa7L,CAAA,CAAM,CAAN,CAAjB,CACIsM,EAActM,CAAA,CAAM,CAAN,CADlB,CAEIrR,EAAW39D,CAAA29D,SAFf,CAMIsd,CACKz+E,EAAAA,CAAI,CAAb,KAT4D,IAS5Cm4C,EAAWyjC,CAAAzjC,SAAA,EATiC,CASPv3C,EAAKu3C,CAAAp5C,OAA1D,CAA2EiB,CAA3E,CAA+EY,CAA/E,CAAmFZ,CAAA,EAAnF,CACE,GAA0B,EAA1B,GAAIm4C,CAAA,CAASn4C,CAAT,CAAAG,MAAJ,CAA8B,CAC5Bs+E,CAAA,CAActmC,CAAA+L,GAAA,CAAYlkD,CAAZ,CACd,MAF4B,CAMhC,IAAIw+E,EAAsB,CAAEC,CAAAA,CAA5B,CAEIO,EAAgBlgF,CAAA,CAAOg/E,CAAAv8E,UAAA,CAAyB,CAAA,CAAzB,CAAP,CACpBy9E,EAAAj4E,IAAA,CAAkB,GAAlB,CAEA,KAAI2iB,CAAJ,CACIlU,EAAYkmE,CAAA,CAAuBl4E,CAAAgS,UAAvB,CAAuComE,CAAvC,CAAsDnwE,CAAtD,CADhB,CAKImzE,EAAenmE,CAAA,CAAU,CAAV,CAAAsE,uBAAA,EA8BdokD,EAAL,EAsDE2d,CAAAzlB,SAiCA,CAjCuB4lB,QAAQ,CAAC9+E,CAAD,CAAQ,CACrC,MAAO,CAACA,CAAR,EAAkC,CAAlC,GAAiBA,CAAApB,OADoB,CAiCvC,CA5BAs/E,CAAAa,WA4BA,CA5BwBC,QAA+B,CAACh/E,CAAD,CAAQ,CAC7DupB,CAAA/lB,MAAAvE,QAAA,CAAsB,QAAQ,CAACwT,CAAD,CAAS,CACrCA,CAAA9O,QAAAs9D,SAAA,CAA0B,CAAA,CADW,CAAvC,CAIIjhE,EAAJ,EACEA,CAAAf,QAAA,CAAc,QAAQ,CAACD,CAAD,CAAO,CAE3B,GADIyT,CACJ;AADa8W,CAAAk0D,uBAAA,CAA+Bz+E,CAA/B,CACb,CAAYyT,CAAA9O,QAAAs9D,SAAA,CAA0B,CAAA,CAFX,CAA7B,CAN2D,CA4B/D,CAdAid,CAAAC,UAcA,CAduBc,QAA8B,EAAG,CAAA,IAClDC,EAAiBzD,CAAA70E,IAAA,EAAjBs4E,EAAwC,EADU,CAElDC,EAAa,EAEjBlgF,EAAA,CAAQigF,CAAR,CAAwB,QAAQ,CAACl/E,CAAD,CAAQ,CAEtC,CADIyS,CACJ,CADa8W,CAAAg0D,eAAA,CAAuBv9E,CAAvB,CACb,GAAe87E,CAAArpE,CAAAqpE,SAAf,EAAgCqD,CAAA76E,KAAA,CAAgBilB,CAAAm0D,uBAAA,CAA+BjrE,CAA/B,CAAhB,CAFM,CAAxC,CAKA,OAAO0sE,EAT+C,CAcxD,CAAI9pE,CAAAinE,QAAJ,EAEEhxE,CAAAm3B,iBAAA,CAAuB,QAAQ,EAAG,CAChC,GAAIhkC,CAAA,CAAQkgF,CAAAplB,WAAR,CAAJ,CACE,MAAOolB,EAAAplB,WAAArE,IAAA,CAA2B,QAAQ,CAACl1D,CAAD,CAAQ,CAChD,MAAOqV,EAAAsnE,gBAAA,CAA0B38E,CAA1B,CADyC,CAA3C,CAFuB,CAAlC,CAMG,QAAQ,EAAG,CACZ2+E,CAAAvkB,QAAA,EADY,CANd,CAzFJ,GAEE8jB,CAAAa,WA2CA,CA3CwBC,QAA4B,CAACh/E,CAAD,CAAQ,CAC1D,IAAIyS,EAAS8W,CAAAk0D,uBAAA,CAA+Bz9E,CAA/B,CAETyS,EAAJ,EAMMgpE,CAAA,CAAc,CAAd,CAAAz7E,MAQJ,GAR+ByS,CAAAkpE,YAQ/B,GAvBJkD,CAAA5wD,OAAA,EAoBM,CAlCDowD,CAkCC,EAjCJC,CAAArwD,OAAA,EAiCI,CADAwtD,CAAA,CAAc,CAAd,CAAAz7E,MACA,CADyByS,CAAAkpE,YACzB,CAAAlpE,CAAA9O,QAAAs9D,SAAA;AAA0B,CAAA,CAG5B,EAAAxuD,CAAA9O,QAAAwc,aAAA,CAA4B,UAA5B,CAAwC,UAAxC,CAdF,EAgBgB,IAAd,GAAIngB,CAAJ,EAAsBq+E,CAAtB,EAzBJQ,CAAA5wD,OAAA,EAlBA,CALKowD,CAKL,EAJE5C,CAAA7Z,QAAA,CAAsB0c,CAAtB,CAIF,CAFA7C,CAAA70E,IAAA,CAAkB,EAAlB,CAEA,CADA03E,CAAAl7E,KAAA,CAAiB,UAAjB,CAA6B,CAAA,CAA7B,CACA,CAAAk7E,CAAAj7E,KAAA,CAAiB,UAAjB,CAA6B,CAAA,CAA7B,CA2CI,GAvCCg7E,CAUL,EATEC,CAAArwD,OAAA,EASF,CAHAwtD,CAAA7Z,QAAA,CAAsBid,CAAtB,CAGA,CAFApD,CAAA70E,IAAA,CAAkB,GAAlB,CAEA,CADAi4E,CAAAz7E,KAAA,CAAmB,UAAnB,CAA+B,CAAA,CAA/B,CACA,CAAAy7E,CAAAx7E,KAAA,CAAmB,UAAnB,CAA+B,CAAA,CAA/B,CA6BI,CAnBwD,CA2C5D,CAdA66E,CAAAC,UAcA,CAduBc,QAA2B,EAAG,CAEnD,IAAIG,EAAiB71D,CAAAg0D,eAAA,CAAuB9B,CAAA70E,IAAA,EAAvB,CAErB,OAAIw4E,EAAJ,EAAuBtD,CAAAsD,CAAAtD,SAAvB,EArDGuC,CAwDM,EAvDTC,CAAArwD,OAAA,EAuDS,CA1CX4wD,CAAA5wD,OAAA,EA0CW,CAAA1E,CAAAm0D,uBAAA,CAA+B0B,CAA/B,CAHT,EAKO,IAT4C,CAcrD,CAAI/pE,CAAAinE,QAAJ,EACEhxE,CAAAxI,OAAA,CACE,QAAQ,EAAG,CAAE,MAAOuS,EAAAsnE,gBAAA,CAA0BgC,CAAAplB,WAA1B,CAAT,CADb,CAEE,QAAQ,EAAG,CAAEolB,CAAAvkB,QAAA,EAAF,CAFb,CA9CJ,CAuGIikB,EAAJ,EAIEC,CAAArwD,OAAA,EAOA,CAJA8mD,CAAA,CAASuJ,CAAT,CAAA,CAAsBhzE,CAAtB,CAIA,CAAAgzE,CAAA76D,YAAA,CAAwB,UAAxB,CAXF;AAaE66D,CAbF,CAagB3/E,CAAA,CAAOg/E,CAAAv8E,UAAA,CAAyB,CAAA,CAAzB,CAAP,CAGhBq6E,EAAAnzE,MAAA,EAIA21E,EAAA,EAGA3yE,EAAAm3B,iBAAA,CAAuBptB,CAAA4nE,cAAvB,CAAgDgB,CAAhD,CAtL4D,CAgSxD,CAJD,CAhc0F,CAA1E,CA9sEzB,CA60FIzpE,GAAuB,CAAC,SAAD,CAAY,cAAZ,CAA4B,MAA5B,CAAoC,QAAQ,CAAC06C,CAAD,CAAUp2C,CAAV,CAAwBgB,CAAxB,CAA8B,CAAA,IAC/FulE,EAAQ,KADuF,CAE/FC,EAAU,oBAEd,OAAO,CACLlyD,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAoDnCk8E,QAASA,EAAiB,CAACC,CAAD,CAAU,CAClC77E,CAAA07B,KAAA,CAAamgD,CAAb,EAAwB,EAAxB,CADkC,CApDD,IAC/BC,EAAYp8E,CAAAwtC,MADmB,CAE/B6uC,EAAUr8E,CAAA4uB,MAAAmY,KAAVs1C,EAA6B/7E,CAAAN,KAAA,CAAaA,CAAA4uB,MAAAmY,KAAb,CAFE,CAG/BjuB,EAAS9Y,CAAA8Y,OAATA,EAAwB,CAHO,CAI/BwjE,EAAQr0E,CAAA66C,MAAA,CAAYu5B,CAAZ,CAARC,EAAgC,EAJD,CAK/BC,EAAc,EALiB,CAM/Bz7C,EAAcrrB,CAAAqrB,YAAA,EANiB,CAO/BC,EAAYtrB,CAAAsrB,UAAA,EAPmB,CAQ/By7C,EAAmB17C,CAAnB07C,CAAiCJ,CAAjCI,CAA6C,GAA7CA,CAAmD1jE,CAAnD0jE,CAA4Dz7C,CAR7B,CAS/B07C,EAAel0E,EAAA1J,KATgB,CAU/B69E,CAEJ9gF,EAAA,CAAQoE,CAAR,CAAc,QAAQ,CAACwiC,CAAD,CAAam6C,CAAb,CAA4B,CAChD,IAAIC,EAAWX,CAAAriE,KAAA,CAAa+iE,CAAb,CACXC,EAAJ,GACMC,CACJ,EADeD,CAAA,CAAS,CAAT,CAAA,CAAc,GAAd,CAAoB,EACnC,EADyCr8E,CAAA,CAAUq8E,CAAA,CAAS,CAAT,CAAV,CACzC,CAAAN,CAAA,CAAMO,CAAN,CAAA,CAAiBv8E,CAAAN,KAAA,CAAaA,CAAA4uB,MAAA,CAAW+tD,CAAX,CAAb,CAFnB,CAFgD,CAAlD,CAOA/gF,EAAA,CAAQ0gF,CAAR,CAAe,QAAQ,CAAC95C,CAAD,CAAazmC,CAAb,CAAkB,CACvCwgF,CAAA,CAAYxgF,CAAZ,CAAA,CAAmB0Z,CAAA,CAAa+sB,CAAAr+B,QAAA,CAAmB63E,CAAnB,CAA0BQ,CAA1B,CAAb,CADoB,CAAzC,CAKAv0E,EAAAxI,OAAA,CAAa28E,CAAb;AAAwBU,QAA+B,CAACn3D,CAAD,CAAS,CAC9D,IAAI6nB,EAAQujB,UAAA,CAAWprC,CAAX,CAAZ,CACIo3D,EAAaz4E,KAAA,CAAMkpC,CAAN,CAEZuvC,EAAL,EAAqBvvC,CAArB,GAA8B8uC,EAA9B,GAGE9uC,CAHF,CAGUqe,CAAAmxB,UAAA,CAAkBxvC,CAAlB,CAA0B10B,CAA1B,CAHV,CAQK00B,EAAL,GAAekvC,CAAf,EAA+BK,CAA/B,EAA6CthF,CAAA,CAASihF,CAAT,CAA7C,EAAoEp4E,KAAA,CAAMo4E,CAAN,CAApE,GACED,CAAA,EAWA,CAVIQ,CAUJ,CAVgBV,CAAA,CAAY/uC,CAAZ,CAUhB,CATIpuC,CAAA,CAAY69E,CAAZ,CAAJ,EACgB,IAId,EAJIt3D,CAIJ,EAHElP,CAAA88B,MAAA,CAAW,oCAAX,CAAkD/F,CAAlD,CAA0D,OAA1D,CAAoE6uC,CAApE,CAGF,CADAI,CACA,CADe59E,CACf,CAAAq9E,CAAA,EALF,EAOEO,CAPF,CAOiBx0E,CAAAxI,OAAA,CAAaw9E,CAAb,CAAwBf,CAAxB,CAEjB,CAAAQ,CAAA,CAAYlvC,CAZd,CAZ8D,CAAhE,CAxBmC,CADhC,CAJ4F,CAA1E,CA70F3B,CA+sGIn8B,GAAoB,CAAC,QAAD,CAAW,UAAX,CAAuB,UAAvB,CAAmC,QAAQ,CAACsF,CAAD,CAAS5C,CAAT,CAAmB29D,CAAnB,CAA6B,CAE9F,IAAIwL,EAAiBliF,CAAA,CAAO,UAAP,CAArB,CAEImiF,EAAcA,QAAQ,CAACl1E,CAAD,CAAQvH,CAAR,CAAe08E,CAAf,CAAgCzgF,CAAhC,CAAuC0gF,CAAvC,CAAsDthF,CAAtD,CAA2DuhF,CAA3D,CAAwE,CAEhGr1E,CAAA,CAAMm1E,CAAN,CAAA,CAAyBzgF,CACrB0gF,EAAJ,GAAmBp1E,CAAA,CAAMo1E,CAAN,CAAnB,CAA0CthF,CAA1C,CACAkM,EAAAgyD,OAAA,CAAev5D,CACfuH,EAAAs1E,OAAA,CAA0B,CAA1B,GAAgB78E,CAChBuH,EAAAu1E,MAAA,CAAe98E,CAAf,GAA0B48E,CAA1B,CAAwC,CACxCr1E,EAAAw1E,QAAA,CAAgB,EAAEx1E,CAAAs1E,OAAF,EAAkBt1E,CAAAu1E,MAAlB,CAEhBv1E,EAAAy1E,KAAA,CAAa,EAAEz1E,CAAA01E,MAAF,CAA8B,CAA9B,IAAiBj9E,CAAjB,CAAuB,CAAvB,EATmF,CAsBlG,OAAO,CACLqsB,SAAU,GADL,CAELyN,aAAc,CAAA,CAFT,CAGL7M,WAAY,SAHP,CAILb,SAAU,GAJL;AAKLmF,SAAU,CAAA,CALL,CAMLoG,MAAO,CAAA,CANF,CAOLnwB,QAAS01E,QAAwB,CAACxwD,CAAD,CAAWwB,CAAX,CAAkB,CACjD,IAAI4T,EAAa5T,CAAAxd,SAAjB,CACIysE,EAAqBnM,CAAAl5C,gBAAA,CAAyB,cAAzB,CAAyCgK,CAAzC,CADzB,CAGIvgC,EAAQugC,CAAAvgC,MAAA,CAAiB,4FAAjB,CAEZ,IAAKA,CAAAA,CAAL,CACE,KAAMi7E,EAAA,CAAe,MAAf,CACF16C,CADE,CAAN,CAIF,IAAI4oC,EAAMnpE,CAAA,CAAM,CAAN,CAAV,CACIkpE,EAAMlpE,CAAA,CAAM,CAAN,CADV,CAEI67E,EAAU77E,CAAA,CAAM,CAAN,CAFd,CAGI87E,EAAa97E,CAAA,CAAM,CAAN,CAHjB,CAKAA,EAAQmpE,CAAAnpE,MAAA,CAAU,wDAAV,CAER,IAAKA,CAAAA,CAAL,CACE,KAAMi7E,EAAA,CAAe,QAAf,CACF9R,CADE,CAAN,CAGF,IAAIgS,EAAkBn7E,CAAA,CAAM,CAAN,CAAlBm7E,EAA8Bn7E,CAAA,CAAM,CAAN,CAAlC,CACIo7E,EAAgBp7E,CAAA,CAAM,CAAN,CAEpB,IAAI67E,CAAJ,GAAiB,CAAA,4BAAAj+E,KAAA,CAAkCi+E,CAAlC,CAAjB,EACI,2FAAAj+E,KAAA,CAAiGi+E,CAAjG,CADJ,EAEE,KAAMZ,EAAA,CAAe,UAAf;AACJY,CADI,CAAN,CA3B+C,IA+B7CE,CA/B6C,CA+B3BC,CA/B2B,CA+BXC,CA/BW,CA+BOC,CA/BP,CAgC7CC,EAAe,CAACr/B,IAAK1+B,EAAN,CAEf09D,EAAJ,CACEC,CADF,CACqBrnE,CAAA,CAAOonE,CAAP,CADrB,EAGEG,CAGA,CAHmBA,QAAQ,CAACniF,CAAD,CAAMY,CAAN,CAAa,CACtC,MAAO0jB,GAAA,CAAQ1jB,CAAR,CAD+B,CAGxC,CAAAwhF,CAAA,CAAiBA,QAAQ,CAACpiF,CAAD,CAAM,CAC7B,MAAOA,EADsB,CANjC,CAWA,OAAOsiF,SAAqB,CAACnkD,CAAD,CAAS9M,CAAT,CAAmBwB,CAAnB,CAA0BimC,CAA1B,CAAgC16B,CAAhC,CAA6C,CAEnE6jD,CAAJ,GACEC,CADF,CACmBA,QAAQ,CAACliF,CAAD,CAAMY,CAAN,CAAa+D,CAAb,CAAoB,CAEvC28E,CAAJ,GAAmBe,CAAA,CAAaf,CAAb,CAAnB,CAAiDthF,CAAjD,CACAqiF,EAAA,CAAahB,CAAb,CAAA,CAAgCzgF,CAChCyhF,EAAAnkB,OAAA,CAAsBv5D,CACtB,OAAOs9E,EAAA,CAAiB9jD,CAAjB,CAAyBkkD,CAAzB,CALoC,CAD/C,CAkBA,KAAIE,EAAe37E,CAAA,EAGnBu3B,EAAAkF,iBAAA,CAAwB+rC,CAAxB,CAA6BoT,QAAuB,CAAC1yD,CAAD,CAAa,CAAA,IAC3DnrB,CAD2D,CACpDnF,CADoD,CAE3DijF,EAAepxD,CAAA,CAAS,CAAT,CAF4C,CAI3DqxD,CAJ2D,CAO3DC,EAAe/7E,CAAA,EAP4C,CAQ3Dg8E,CAR2D,CAS3D5iF,CAT2D,CAStDY,CATsD,CAU3DiiF,CAV2D,CAY3DC,CAZ2D,CAa3DlxE,CAb2D,CAc3DmxE,CAGAhB,EAAJ,GACE5jD,CAAA,CAAO4jD,CAAP,CADF,CACoBjyD,CADpB,CAIA,IAAI5wB,EAAA,CAAY4wB,CAAZ,CAAJ,CACEgzD,CACA,CADiBhzD,CACjB,CAAAkzD,CAAA,CAAcd,CAAd,EAAgCC,CAFlC,KAOE,KAASpF,CAAT,GAHAiG,EAGoBlzD,CAHNoyD,CAGMpyD,EAHYsyD,CAGZtyD,CADpBgzD,CACoBhzD,CADH,EACGA,CAAAA,CAApB,CACM5vB,EAAAC,KAAA,CAAoB2vB,CAApB,CAAgCitD,CAAhC,CAAJ,EAAsE,GAAtE,GAAgDA,CAAAl2E,OAAA,CAAe,CAAf,CAAhD,EACEi8E,CAAA59E,KAAA,CAAoB63E,CAApB,CAKN6F,EAAA,CAAmBE,CAAAtjF,OACnBujF,EAAA,CAAqBpjF,KAAJ,CAAUijF,CAAV,CAGjB,KAAKj+E,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwBi+E,CAAxB,CAA0Cj+E,CAAA,EAA1C,CAIE,GAHA3E,CAGI,CAHG8vB,CAAD,GAAgBgzD,CAAhB,CAAkCn+E,CAAlC,CAA0Cm+E,CAAA,CAAen+E,CAAf,CAG5C,CAFJ/D,CAEI,CAFIkvB,CAAA,CAAW9vB,CAAX,CAEJ,CADJ6iF,CACI,CADQG,CAAA,CAAYhjF,CAAZ,CAAiBY,CAAjB,CAAwB+D,CAAxB,CACR,CAAA49E,CAAA,CAAaM,CAAb,CAAJ,CAEEjxE,CAGA,CAHQ2wE,CAAA,CAAaM,CAAb,CAGR,CAFA,OAAON,CAAA,CAAaM,CAAb,CAEP,CADAF,CAAA,CAAaE,CAAb,CACA,CAD0BjxE,CAC1B,CAAAmxE,CAAA,CAAep+E,CAAf,CAAA,CAAwBiN,CAL1B,KAMO,CAAA,GAAI+wE,CAAA,CAAaE,CAAb,CAAJ,CAKL,KAHAhjF,EAAA,CAAQkjF,CAAR;AAAwB,QAAQ,CAACnxE,CAAD,CAAQ,CAClCA,CAAJ,EAAaA,CAAA1F,MAAb,GAA0Bq2E,CAAA,CAAa3wE,CAAA2c,GAAb,CAA1B,CAAmD3c,CAAnD,CADsC,CAAxC,CAGM,CAAAuvE,CAAA,CAAe,OAAf,CAEF16C,CAFE,CAEUo8C,CAFV,CAEqBjiF,CAFrB,CAAN,CAKAmiF,CAAA,CAAep+E,CAAf,CAAA,CAAwB,CAAC4pB,GAAIs0D,CAAL,CAAgB32E,MAAOzG,IAAAA,EAAvB,CAAkCvD,MAAOuD,IAAAA,EAAzC,CACxBk9E,EAAA,CAAaE,CAAb,CAAA,CAA0B,CAAA,CAXrB,CAgBT,IAASI,CAAT,GAAqBV,EAArB,CAAmC,CACjC3wE,CAAA,CAAQ2wE,CAAA,CAAaU,CAAb,CACRxhD,EAAA,CAAmBjyB,EAAA,CAAcoC,CAAA1P,MAAd,CACnB8V,EAAAwtD,MAAA,CAAe/jC,CAAf,CACA,IAAIA,CAAA,CAAiB,CAAjB,CAAA/iB,WAAJ,CAGE,IAAK/Z,CAAW,CAAH,CAAG,CAAAnF,CAAA,CAASiiC,CAAAjiC,OAAzB,CAAkDmF,CAAlD,CAA0DnF,CAA1D,CAAkEmF,CAAA,EAAlE,CACE88B,CAAA,CAAiB98B,CAAjB,CAAA,aAAA,CAAsC,CAAA,CAG1CiN,EAAA1F,MAAAwC,SAAA,EAXiC,CAenC,IAAK/J,CAAL,CAAa,CAAb,CAAgBA,CAAhB,CAAwBi+E,CAAxB,CAA0Cj+E,CAAA,EAA1C,CAKE,GAJA3E,CAIIkM,CAJG4jB,CAAD,GAAgBgzD,CAAhB,CAAkCn+E,CAAlC,CAA0Cm+E,CAAA,CAAen+E,CAAf,CAI5CuH,CAHJtL,CAGIsL,CAHI4jB,CAAA,CAAW9vB,CAAX,CAGJkM,CAFJ0F,CAEI1F,CAFI62E,CAAA,CAAep+E,CAAf,CAEJuH,CAAA0F,CAAA1F,MAAJ,CAAiB,CAIfw2E,CAAA,CAAWD,CAGX,GACEC,EAAA,CAAWA,CAAA9yE,YADb,OAES8yE,CAFT,EAEqBA,CAAA,aAFrB,CAIkB9wE,EAnLrB1P,MAAA,CAAY,CAAZ,CAmLG,EAA4BwgF,CAA5B,EAEE1qE,CAAAutD,KAAA,CAAc/1D,EAAA,CAAcoC,CAAA1P,MAAd,CAAd,CAA0C,IAA1C,CAAgDugF,CAAhD,CAEFA,EAAA,CAA2B7wE,CAnL9B1P,MAAA,CAmL8B0P,CAnLlB1P,MAAA1C,OAAZ,CAAiC,CAAjC,CAoLG4hF,EAAA,CAAYxvE,CAAA1F,MAAZ,CAAyBvH,CAAzB,CAAgC08E,CAAhC,CAAiDzgF,CAAjD,CAAwD0gF,CAAxD,CAAuEthF,CAAvE,CAA4E4iF,CAA5E,CAhBe,CAAjB,IAmBExkD,EAAA,CAAY8kD,QAA2B,CAAChhF,CAAD,CAAQgK,CAAR,CAAe,CACpD0F,CAAA1F,MAAA,CAAcA,CAEd,KAAIwD,EAAUoyE,CAAA9/E,UAAA,CAA6B,CAAA,CAA7B,CACdE,EAAA,CAAMA,CAAA1C,OAAA,EAAN,CAAA,CAAwBkQ,CAExBsI,EAAAstD,MAAA,CAAepjE,CAAf;AAAsB,IAAtB,CAA4BugF,CAA5B,CACAA,EAAA,CAAe/yE,CAIfkC,EAAA1P,MAAA,CAAcA,CACdygF,EAAA,CAAa/wE,CAAA2c,GAAb,CAAA,CAAyB3c,CACzBwvE,EAAA,CAAYxvE,CAAA1F,MAAZ,CAAyBvH,CAAzB,CAAgC08E,CAAhC,CAAiDzgF,CAAjD,CAAwD0gF,CAAxD,CAAuEthF,CAAvE,CAA4E4iF,CAA5E,CAboD,CAAtD,CAiBJL,EAAA,CAAeI,CAzHgD,CAAjE,CAvBuE,CA7CxB,CAP9C,CA1BuF,CAAxE,CA/sGxB,CAmlHIntE,GAAkB,CAAC,UAAD,CAAa,QAAQ,CAACwC,CAAD,CAAW,CACpD,MAAO,CACLgZ,SAAU,GADL,CAELyN,aAAc,CAAA,CAFT,CAGLzQ,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CACnCiI,CAAAxI,OAAA,CAAaO,CAAAsR,OAAb,CAA0B4tE,QAA0B,CAACviF,CAAD,CAAQ,CAK1DoX,CAAA,CAASpX,CAAA,CAAQ,aAAR,CAAwB,UAAjC,CAAA,CAA6C2D,CAA7C,CAzKY6+E,SAyKZ,CAAqE,CACnEzd,YAzKsB0d,iBAwK6C,CAArE,CAL0D,CAA5D,CADmC,CAHhC,CAD6C,CAAhC,CAnlHtB,CAuvHI3uE,GAAkB,CAAC,UAAD,CAAa,QAAQ,CAACsD,CAAD,CAAW,CACpD,MAAO,CACLgZ,SAAU,GADL,CAELyN,aAAc,CAAA,CAFT,CAGLzQ,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CACnCiI,CAAAxI,OAAA,CAAaO,CAAAwQ,OAAb,CAA0B6uE,QAA0B,CAAC1iF,CAAD,CAAQ,CAG1DoX,CAAA,CAASpX,CAAA,CAAQ,UAAR,CAAqB,aAA9B,CAAA,CAA6C2D,CAA7C,CA3UY6+E,SA2UZ,CAAoE,CAClEzd,YA3UsB0d,iBA0U4C,CAApE,CAH0D,CAA5D,CADmC,CAHhC,CAD6C,CAAhC,CAvvHtB,CAqzHI3tE,GAAmBuhD,EAAA,CAAY,QAAQ,CAAC/qD,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAChEiI,CAAAxI,OAAA,CAAaO,CAAAwR,QAAb,CAA2B8tE,QAA2B,CAACC,CAAD;AAAYC,CAAZ,CAAuB,CACvEA,CAAJ,EAAkBD,CAAlB,GAAgCC,CAAhC,EACE5jF,CAAA,CAAQ4jF,CAAR,CAAmB,QAAQ,CAACj8E,CAAD,CAAM2L,CAAN,CAAa,CAAE5O,CAAA68D,IAAA,CAAYjuD,CAAZ,CAAmB,EAAnB,CAAF,CAAxC,CAEEqwE,EAAJ,EAAej/E,CAAA68D,IAAA,CAAYoiB,CAAZ,CAJ4D,CAA7E,CAKG,CAAA,CALH,CADgE,CAA3C,CArzHvB,CA+7HI5tE,GAAoB,CAAC,UAAD,CAAa,UAAb,CAAyB,QAAQ,CAACoC,CAAD,CAAW29D,CAAX,CAAqB,CAC5E,MAAO,CACLxlD,QAAS,UADJ,CAILjiB,WAAY,CAAC,QAAD,CAAWw1E,QAA2B,EAAG,CACpD,IAAAC,MAAA,CAAa,EADuC,CAAzC,CAJP,CAOL31D,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuBy/E,CAAvB,CAA2C,CAAA,IAEnDE,EAAsB,EAF6B,CAGnDC,EAAmB,EAHgC,CAInDC,EAA0B,EAJyB,CAKnDC,EAAiB,EALkC,CAOnDC,EAAgBA,QAAQ,CAACt/E,CAAD,CAAQC,CAAR,CAAe,CACvC,MAAO,SAAQ,EAAG,CAAED,CAAAG,OAAA,CAAaF,CAAb,CAAoB,CAApB,CAAF,CADqB,CAI3CuH,EAAAxI,OAAA,CAVgBO,CAAA0R,SAUhB,EAViC1R,CAAA8J,GAUjC,CAAwBk2E,QAA4B,CAACrjF,CAAD,CAAQ,CAAA,IACtDH,CADsD,CACnDY,CACFZ,EAAA,CAAI,CAAT,KAAYY,CAAZ,CAAiByiF,CAAAtkF,OAAjB,CAAiDiB,CAAjD,CAAqDY,CAArD,CAAyD,EAAEZ,CAA3D,CACEuX,CAAAsV,OAAA,CAAgBw2D,CAAA,CAAwBrjF,CAAxB,CAAhB,CAIGA,EAAA,CAFLqjF,CAAAtkF,OAEK,CAF4B,CAEjC,KAAY6B,CAAZ,CAAiB0iF,CAAAvkF,OAAjB,CAAwCiB,CAAxC,CAA4CY,CAA5C,CAAgD,EAAEZ,CAAlD,CAAqD,CACnD,IAAIohE,EAAWryD,EAAA,CAAcq0E,CAAA,CAAiBpjF,CAAjB,CAAAyB,MAAd,CACf6hF,EAAA,CAAetjF,CAAf,CAAAiO,SAAA,EAEAywB,EADc2kD,CAAA,CAAwBrjF,CAAxB,CACd0+B,CAD2CnnB,CAAAwtD,MAAA,CAAe3D,CAAf,CAC3C1iC,MAAA,CAAa6kD,CAAA,CAAcF,CAAd,CAAuCrjF,CAAvC,CAAb,CAJmD,CAOrDojF,CAAArkF,OAAA,CAA0B,CAC1BukF,EAAAvkF,OAAA,CAAwB,CAExB,EAAKokF,CAAL,CAA2BF,CAAAC,MAAA,CAAyB,GAAzB;AAA+B/iF,CAA/B,CAA3B,EAAoE8iF,CAAAC,MAAA,CAAyB,GAAzB,CAApE,GACE9jF,CAAA,CAAQ+jF,CAAR,CAA6B,QAAQ,CAACM,CAAD,CAAqB,CACxDA,CAAAtyD,WAAA,CAA8B,QAAQ,CAACuyD,CAAD,CAAcC,CAAd,CAA6B,CACjEL,CAAA7+E,KAAA,CAAoBk/E,CAApB,CACA,KAAIC,EAASH,CAAA3/E,QACb4/E,EAAA,CAAYA,CAAA3kF,OAAA,EAAZ,CAAA,CAAoCm2E,CAAAl5C,gBAAA,CAAyB,kBAAzB,CAGpConD,EAAA3+E,KAAA,CAFY0M,CAAE1P,MAAOiiF,CAATvyE,CAEZ,CACAoG,EAAAstD,MAAA,CAAe6e,CAAf,CAA4BE,CAAA1hF,OAAA,EAA5B,CAA6C0hF,CAA7C,CAPiE,CAAnE,CADwD,CAA1D,CAlBwD,CAA5D,CAXuD,CAPpD,CADqE,CAAtD,CA/7HxB,CAq/HIvuE,GAAwBmhD,EAAA,CAAY,CACtCrlC,WAAY,SAD0B,CAEtCb,SAAU,IAF4B,CAGtCZ,QAAS,WAH6B,CAItCsO,aAAc,CAAA,CAJwB,CAKtCzQ,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQ3H,CAAR,CAAiBuxB,CAAjB,CAAwBgjC,CAAxB,CAA8B16B,CAA9B,CAA2C,CACvD06B,CAAA6qB,MAAA,CAAW,GAAX,CAAiB7tD,CAAAjgB,aAAjB,CAAA,CAAwCijD,CAAA6qB,MAAA,CAAW,GAAX,CAAiB7tD,CAAAjgB,aAAjB,CAAxC,EAAgF,EAChFijD,EAAA6qB,MAAA,CAAW,GAAX,CAAiB7tD,CAAAjgB,aAAjB,CAAA3Q,KAAA,CAA0C,CAAE0sB,WAAYwM,CAAd,CAA2B75B,QAASA,CAApC,CAA1C,CAFuD,CALnB,CAAZ,CAr/H5B,CAggIIyR,GAA2BihD,EAAA,CAAY,CACzCrlC,WAAY,SAD6B,CAEzCb,SAAU,IAF+B,CAGzCZ,QAAS,WAHgC,CAIzCsO,aAAc,CAAA,CAJ2B,CAKzCzQ,KAAMA,QAAQ,CAAC9hB,CAAD;AAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB60D,CAAvB,CAA6B16B,CAA7B,CAA0C,CACtD06B,CAAA6qB,MAAA,CAAW,GAAX,CAAA,CAAmB7qB,CAAA6qB,MAAA,CAAW,GAAX,CAAnB,EAAsC,EACtC7qB,EAAA6qB,MAAA,CAAW,GAAX,CAAAz+E,KAAA,CAAqB,CAAE0sB,WAAYwM,CAAd,CAA2B75B,QAASA,CAApC,CAArB,CAFsD,CALf,CAAZ,CAhgI/B,CAyqII+/E,GAAqBrlF,CAAA,CAAO,cAAP,CAzqIzB,CA0qIImX,GAAwB6gD,EAAA,CAAY,CACtCjmC,SAAU,KAD4B,CAEtChD,KAAMA,QAAQ,CAACmQ,CAAD,CAAS9M,CAAT,CAAmBC,CAAnB,CAA2BpjB,CAA3B,CAAuCkwB,CAAvC,CAAoD,CAE5D9M,CAAAnb,aAAJ,GAA4Bmb,CAAAuB,MAAA1c,aAA5B,GAGEmb,CAAAnb,aAHF,CAGwB,EAHxB,CAaA,IAAKioB,CAAAA,CAAL,CACE,KAAMkmD,GAAA,CAAmB,QAAnB,CAILr7E,EAAA,CAAYooB,CAAZ,CAJK,CAAN,CAUF+M,CAAA,CAlBAmmD,QAAkC,CAACriF,CAAD,CAAQ,CACpCA,CAAA1C,OAAJ,GACE6xB,CAAAnoB,MAAA,EACA,CAAAmoB,CAAAhoB,OAAA,CAAgBnH,CAAhB,CAFF,CADwC,CAkB1C,CAAuC,IAAvC,CADeovB,CAAAnb,aACf,EADsCmb,CAAAkzD,iBACtC,CA1BgE,CAF5B,CAAZ,CA1qI5B,CA2uIIxxE,GAAkB,CAAC,gBAAD,CAAmB,QAAQ,CAAC0I,CAAD,CAAiB,CAChE,MAAO,CACLsV,SAAU,GADL,CAELkF,SAAU,CAAA,CAFL,CAGL/pB,QAASA,QAAQ,CAAC5H,CAAD,CAAUN,CAAV,CAAgB,CACd,kBAAjB,EAAIA,CAAAmC,KAAJ,EAIEsV,CAAAkJ,IAAA,CAHkB3gB,CAAAsqB,GAGlB,CAFWhqB,CAAA,CAAQ,CAAR,CAAA07B,KAEX,CAL6B,CAH5B,CADyD,CAA5C,CA3uItB,CA0vIIwkD,GAAwB,CAAEpqB,cAAev3D,CAAjB,CAAuBk4D,QAASl4D,CAAhC,CA1vI5B;AA6wII4hF,GACI,CAAC,UAAD,CAAa,QAAb,CAAuB,QAAQ,CAACrzD,CAAD,CAAW8M,CAAX,CAAmB,CAAA,IAEpDj3B,EAAO,IAF6C,CAGpDy9E,EAAa,IAAIlgE,EAGrBvd,EAAAq4E,YAAA,CAAmBkF,EAQnBv9E,EAAAu4E,cAAA,CAAqBlgF,CAAA,CAAOP,CAAAyI,SAAAkW,cAAA,CAA8B,QAA9B,CAAP,CACrBzW,EAAA09E,oBAAA,CAA2BC,QAAQ,CAACr9E,CAAD,CAAM,CACnCs9E,CAAAA,CAAa,IAAbA,CAAoBxgE,EAAA,CAAQ9c,CAAR,CAApBs9E,CAAmC,IACvC59E,EAAAu4E,cAAAj4E,IAAA,CAAuBs9E,CAAvB,CACAzzD,EAAAmxC,QAAA,CAAiBt7D,CAAAu4E,cAAjB,CACApuD,EAAA7pB,IAAA,CAAas9E,CAAb,CAJuC,CAOzC3mD,EAAAzD,IAAA,CAAW,UAAX,CAAuB,QAAQ,EAAG,CAEhCxzB,CAAA09E,oBAAA,CAA2B9hF,CAFK,CAAlC,CAKAoE,EAAA69E,oBAAA,CAA2BC,QAAQ,EAAG,CAChC99E,CAAAu4E,cAAA98E,OAAA,EAAJ,EAAiCuE,CAAAu4E,cAAA5wD,OAAA,EADG,CAOtC3nB,EAAA63E,UAAA,CAAiBkG,QAAwB,EAAG,CAC1C/9E,CAAA69E,oBAAA,EACA,OAAO1zD,EAAA7pB,IAAA,EAFmC,CAQ5CN,EAAAy4E,WAAA,CAAkBuF,QAAyB,CAACtkF,CAAD,CAAQ,CAC7CsG,CAAAi+E,UAAA,CAAevkF,CAAf,CAAJ,EACEsG,CAAA69E,oBAAA,EAEA;AADA1zD,CAAA7pB,IAAA,CAAa5G,CAAb,CACA,CAAc,EAAd,GAAIA,CAAJ,EAAkBsG,CAAAg4E,YAAAl7E,KAAA,CAAsB,UAAtB,CAAkC,CAAA,CAAlC,CAHpB,EAKe,IAAb,EAAIpD,CAAJ,EAAqBsG,CAAAg4E,YAArB,EACEh4E,CAAA69E,oBAAA,EACA,CAAA1zD,CAAA7pB,IAAA,CAAa,EAAb,CAFF,EAIEN,CAAA09E,oBAAA,CAAyBhkF,CAAzB,CAV6C,CAiBnDsG,EAAAi4E,UAAA,CAAiBiG,QAAQ,CAACxkF,CAAD,CAAQ2D,CAAR,CAAiB,CAExC,GA153BoBuzB,CA053BpB,GAAIvzB,CAAA,CAAQ,CAAR,CAAAgF,SAAJ,CAAA,CAEA2F,EAAA,CAAwBtO,CAAxB,CAA+B,gBAA/B,CACc,GAAd,GAAIA,CAAJ,GACEsG,CAAAg4E,YADF,CACqB36E,CADrB,CAGA,KAAIktC,EAAQkzC,CAAAz3E,IAAA,CAAetM,CAAf,CAAR6wC,EAAiC,CACrCkzC,EAAA//D,IAAA,CAAehkB,CAAf,CAAsB6wC,CAAtB,CAA8B,CAA9B,CACAvqC,EAAAq4E,YAAAvkB,QAAA,EACWz2D,EApFT,CAAc,CAAd,CAAA2G,aAAA,CAA8B,UAA9B,CAAJ,GAoFa3G,CAnFX,CAAc,CAAd,CAAAs9D,SADF,CAC8B,CAAA,CAD9B,CA2EE,CAFwC,CAe1C36D,EAAAm+E,aAAA,CAAoBC,QAAQ,CAAC1kF,CAAD,CAAQ,CAClC,IAAI6wC,EAAQkzC,CAAAz3E,IAAA,CAAetM,CAAf,CACR6wC,EAAJ,GACgB,CAAd,GAAIA,CAAJ,EACEkzC,CAAA91D,OAAA,CAAkBjuB,CAAlB,CACA,CAAc,EAAd,GAAIA,CAAJ,GACEsG,CAAAg4E,YADF,CACqBz5E,IAAAA,EADrB,CAFF,EAMEk/E,CAAA//D,IAAA,CAAehkB,CAAf,CAAsB6wC,CAAtB,CAA8B,CAA9B,CAPJ,CAFkC,CAepCvqC,EAAAi+E,UAAA,CAAiBI,QAAQ,CAAC3kF,CAAD,CAAQ,CAC/B,MAAO,CAAE,CAAA+jF,CAAAz3E,IAAA,CAAetM,CAAf,CADsB,CAKjCsG,EAAAw3E,eAAA;AAAsB8G,QAAQ,CAACC,CAAD,CAAcnG,CAAd,CAA6BoG,CAA7B,CAA0CC,CAA1C,CAA8DC,CAA9D,CAAiF,CAE7G,GAAID,CAAJ,CAAwB,CAEtB,IAAI97D,CACJ67D,EAAA7iD,SAAA,CAAqB,OAArB,CAA8BgjD,QAAoC,CAACj8D,CAAD,CAAS,CACrEtmB,CAAA,CAAUumB,CAAV,CAAJ,EACE3iB,CAAAm+E,aAAA,CAAkBx7D,CAAlB,CAEFA,EAAA,CAASD,CACT1iB,EAAAi4E,UAAA,CAAev1D,CAAf,CAAuB01D,CAAvB,CALyE,CAA3E,CAHsB,CAAxB,IAUWsG,EAAJ,CAELH,CAAA/hF,OAAA,CAAmBkiF,CAAnB,CAAsCE,QAA+B,CAACl8D,CAAD,CAASC,CAAT,CAAiB,CACpF67D,CAAA9mD,KAAA,CAAiB,OAAjB,CAA0BhV,CAA1B,CACIC,EAAJ,GAAeD,CAAf,EACE1iB,CAAAm+E,aAAA,CAAkBx7D,CAAlB,CAEF3iB,EAAAi4E,UAAA,CAAev1D,CAAf,CAAuB01D,CAAvB,CALoF,CAAtF,CAFK,CAWLp4E,CAAAi4E,UAAA,CAAeuG,CAAA9kF,MAAf,CAAkC0+E,CAAlC,CAGFA,EAAAvxE,GAAA,CAAiB,UAAjB,CAA6B,QAAQ,EAAG,CACtC7G,CAAAm+E,aAAA,CAAkBK,CAAA9kF,MAAlB,CACAsG,EAAAq4E,YAAAvkB,QAAA,EAFsC,CAAxC,CA1B6G,CA9FvD,CAAlD,CA9wIR,CAylJI9nD,GAAkBA,QAAQ,EAAG,CAE/B,MAAO,CACL8d,SAAU,GADL,CAELb,QAAS,CAAC,QAAD,CAAW,UAAX,CAFJ,CAGLjiB,WAAYw2E,EAHP,CAIL3zD,SAAU,CAJL,CAKL/C,KAAM,CACJkL,IAKJ6sD,QAAsB,CAAC75E,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuBgvE,CAAvB,CAA8B,CAGhD,IAAIsM,EAActM,CAAA,CAAM,CAAN,CAClB,IAAKsM,CAAL,CAAA,CAEA,IAAIT,EAAa7L,CAAA,CAAM,CAAN,CAEjB6L,EAAAS,YAAA,CAAyBA,CAKzBh7E,EAAAwJ,GAAA,CAAW,QAAX,CAAqB,QAAQ,EAAG,CAC9B7B,CAAAE,OAAA,CAAa,QAAQ,EAAG,CACtBmzE,CAAAllB,cAAA,CAA0BykB,CAAAC,UAAA,EAA1B,CADsB,CAAxB,CAD8B,CAAhC,CAUA;GAAI96E,CAAA29D,SAAJ,CAAmB,CAGjBkd,CAAAC,UAAA,CAAuBc,QAA0B,EAAG,CAClD,IAAIn7E,EAAQ,EACZ7E,EAAA,CAAQ0E,CAAAL,KAAA,CAAa,QAAb,CAAR,CAAgC,QAAQ,CAACmP,CAAD,CAAS,CAC3CA,CAAAwuD,SAAJ,EACEn9D,CAAAQ,KAAA,CAAWmO,CAAAzS,MAAX,CAF6C,CAAjD,CAKA,OAAO8D,EAP2C,CAWpDo6E,EAAAa,WAAA,CAAwBC,QAA2B,CAACh/E,CAAD,CAAQ,CACzD,IAAIwD,EAAQ,IAAIqgB,EAAJ,CAAY7jB,CAAZ,CACZf,EAAA,CAAQ0E,CAAAL,KAAA,CAAa,QAAb,CAAR,CAAgC,QAAQ,CAACmP,CAAD,CAAS,CAC/CA,CAAAwuD,SAAA,CAAkBv+D,CAAA,CAAUc,CAAA8I,IAAA,CAAUmG,CAAAzS,MAAV,CAAV,CAD6B,CAAjD,CAFyD,CAd1C,KAuBbolF,CAvBa,CAuBHC,EAAchqB,GAC5B/vD,EAAAxI,OAAA,CAAawiF,QAA4B,EAAG,CACtCD,CAAJ,GAAoB1G,CAAAplB,WAApB,EAA+C9zD,EAAA,CAAO2/E,CAAP,CAAiBzG,CAAAplB,WAAjB,CAA/C,GACE6rB,CACA,CADWn0E,EAAA,CAAY0tE,CAAAplB,WAAZ,CACX,CAAAolB,CAAAvkB,QAAA,EAFF,CAIAirB,EAAA,CAAc1G,CAAAplB,WAL4B,CAA5C,CAUAolB,EAAAzlB,SAAA,CAAuB4lB,QAAQ,CAAC9+E,CAAD,CAAQ,CACrC,MAAO,CAACA,CAAR,EAAkC,CAAlC,GAAiBA,CAAApB,OADoB,CAlCtB,CAnBnB,CAJgD,CAN5C,CAEJ25B,KAoEFgtD,QAAuB,CAACj6E,CAAD,CAAQ3H,CAAR,CAAiBuxB,CAAjB,CAAwBm9C,CAAxB,CAA+B,CAEpD,IAAIsM,EAActM,CAAA,CAAM,CAAN,CAClB,IAAKsM,CAAL,CAAA,CAEA,IAAIT,EAAa7L,CAAA,CAAM,CAAN,CAOjBsM,EAAAvkB,QAAA,CAAsBorB,QAAQ,EAAG,CAC/BtH,CAAAa,WAAA,CAAsBJ,CAAAplB,WAAtB,CAD+B,CATjC,CAHoD,CAtEhD,CALD,CAFwB,CAzlJjC,CA4rJI7mD,GAAkB,CAAC,cAAD;AAAiB,QAAQ,CAACoG,CAAD,CAAe,CAC5D,MAAO,CACLsX,SAAU,GADL,CAELD,SAAU,GAFL,CAGL5kB,QAASA,QAAQ,CAAC5H,CAAD,CAAUN,CAAV,CAAgB,CAC/B,GAAIX,CAAA,CAAUW,CAAArD,MAAV,CAAJ,CAEE,IAAI+kF,EAAqBjsE,CAAA,CAAazV,CAAArD,MAAb,CAAyB,CAAA,CAAzB,CAF3B,KAGO,CAGL,IAAIglF,EAAoBlsE,CAAA,CAAanV,CAAA07B,KAAA,EAAb,CAA6B,CAAA,CAA7B,CACnB2lD,EAAL,EACE3hF,CAAA26B,KAAA,CAAU,OAAV,CAAmBr6B,CAAA07B,KAAA,EAAnB,CALG,CASP,MAAO,SAAQ,CAAC/zB,CAAD,CAAQ3H,CAAR,CAAiBN,CAAjB,CAAuB,CAAA,IAIhCtB,EAAS4B,CAAA5B,OAAA,EAIb,EAHIm8E,CAGJ,CAHiBn8E,CAAA0J,KAAA,CAFIg6E,mBAEJ,CAGjB,EAFM1jF,CAAAA,OAAA,EAAA0J,KAAA,CAHeg6E,mBAGf,CAEN,GACEvH,CAAAJ,eAAA,CAA0BxyE,CAA1B,CAAiC3H,CAAjC,CAA0CN,CAA1C,CAAgD0hF,CAAhD,CAAoEC,CAApE,CATkC,CAbP,CAH5B,CADqD,CAAxC,CA5rJtB,CA6tJIxyE,GAAiBnQ,EAAA,CAAQ,CAC3B+tB,SAAU,GADiB,CAE3BkF,SAAU,CAAA,CAFiB,CAAR,CA7tJrB,CA6xJInf,GAAoBA,QAAQ,EAAG,CACjC,MAAO,CACLia,SAAU,GADL,CAELb,QAAS,UAFJ,CAGLnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQqd,CAAR,CAAatlB,CAAb,CAAmB60D,CAAnB,CAAyB,CAChCA,CAAL,GACA70D,CAAA6S,SAMA,CANgB,CAAA,CAMhB,CAJAgiD,CAAAkE,YAAAlmD,SAIA,CAJ4BwvE,QAAQ,CAAC7R,CAAD,CAAaC,CAAb,CAAwB,CAC1D,MAAO,CAACzwE,CAAA6S,SAAR,EAAyB,CAACgiD,CAAAgB,SAAA,CAAc4a,CAAd,CADgC,CAI5D,CAAAzwE,CAAA4+B,SAAA,CAAc,UAAd;AAA0B,QAAQ,EAAG,CACnCi2B,CAAAoE,UAAA,EADmC,CAArC,CAPA,CADqC,CAHlC,CAD0B,CA7xJnC,CA23JItmD,GAAmBA,QAAQ,EAAG,CAChC,MAAO,CACLoa,SAAU,GADL,CAELb,QAAS,UAFJ,CAGLnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQqd,CAAR,CAAatlB,CAAb,CAAmB60D,CAAnB,CAAyB,CACrC,GAAKA,CAAL,CAAA,CADqC,IAGjC9mC,CAHiC,CAGzBu0D,EAAatiF,CAAA4S,UAAb0vE,EAA+BtiF,CAAA0S,QAC3C1S,EAAA4+B,SAAA,CAAc,SAAd,CAAyB,QAAQ,CAACqlB,CAAD,CAAQ,CACnC5oD,CAAA,CAAS4oD,CAAT,CAAJ,EAAsC,CAAtC,CAAuBA,CAAA1oD,OAAvB,GACE0oD,CADF,CACU,IAAIpmD,MAAJ,CAAW,GAAX,CAAiBomD,CAAjB,CAAyB,GAAzB,CADV,CAIA,IAAIA,CAAJ,EAAcpkD,CAAAokD,CAAApkD,KAAd,CACE,KAAM7E,EAAA,CAAO,WAAP,CAAA,CAAoB,UAApB,CACqDsnF,CADrD,CAEJr+B,CAFI,CAEGj/C,EAAA,CAAYsgB,CAAZ,CAFH,CAAN,CAKFyI,CAAA,CAASk2B,CAAT,EAAkBziD,IAAAA,EAClBqzD,EAAAoE,UAAA,EAZuC,CAAzC,CAeApE,EAAAkE,YAAArmD,QAAA,CAA2B6vE,QAAQ,CAAC/R,CAAD,CAAaC,CAAb,CAAwB,CAEzD,MAAO5b,EAAAgB,SAAA,CAAc4a,CAAd,CAAP,EAAmCrxE,CAAA,CAAY2uB,CAAZ,CAAnC,EAA0DA,CAAAluB,KAAA,CAAY4wE,CAAZ,CAFD,CAlB3D,CADqC,CAHlC,CADyB,CA33JlC,CA49JIr9D,GAAqBA,QAAQ,EAAG,CAClC,MAAO,CACL2Z,SAAU,GADL,CAELb,QAAS,UAFJ,CAGLnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQqd,CAAR,CAAatlB,CAAb,CAAmB60D,CAAnB,CAAyB,CACrC,GAAKA,CAAL,CAAA,CAEA,IAAI1hD,EAAa,EACjBnT,EAAA4+B,SAAA,CAAc,WAAd,CAA2B,QAAQ,CAACjiC,CAAD,CAAQ,CACrC6lF,CAAAA;AAASlkF,EAAA,CAAM3B,CAAN,CACbwW,EAAA,CAAY7O,KAAA,CAAMk+E,CAAN,CAAA,CAAiB,EAAjB,CAAqBA,CACjC3tB,EAAAoE,UAAA,EAHyC,CAA3C,CAKApE,EAAAkE,YAAA5lD,UAAA,CAA6BsvE,QAAQ,CAACjS,CAAD,CAAaC,CAAb,CAAwB,CAC3D,MAAoB,EAApB,CAAQt9D,CAAR,EAA0B0hD,CAAAgB,SAAA,CAAc4a,CAAd,CAA1B,EAAuDA,CAAAl1E,OAAvD,EAA2E4X,CADhB,CAR7D,CADqC,CAHlC,CAD2B,CA59JpC,CAgjKIF,GAAqBA,QAAQ,EAAG,CAClC,MAAO,CACL8Z,SAAU,GADL,CAELb,QAAS,UAFJ,CAGLnC,KAAMA,QAAQ,CAAC9hB,CAAD,CAAQqd,CAAR,CAAatlB,CAAb,CAAmB60D,CAAnB,CAAyB,CACrC,GAAKA,CAAL,CAAA,CAEA,IAAI7hD,EAAY,CAChBhT,EAAA4+B,SAAA,CAAc,WAAd,CAA2B,QAAQ,CAACjiC,CAAD,CAAQ,CACzCqW,CAAA,CAAY1U,EAAA,CAAM3B,CAAN,CAAZ,EAA4B,CAC5Bk4D,EAAAoE,UAAA,EAFyC,CAA3C,CAIApE,EAAAkE,YAAA/lD,UAAA,CAA6B0vE,QAAQ,CAAClS,CAAD,CAAaC,CAAb,CAAwB,CAC3D,MAAO5b,EAAAgB,SAAA,CAAc4a,CAAd,CAAP,EAAmCA,CAAAl1E,OAAnC,EAAuDyX,CADI,CAP7D,CADqC,CAHlC,CAD2B,CAmBhCjY,EAAAwN,QAAA5B,UAAJ,CAEM5L,CAAAg5C,QAFN,EAGIA,OAAAE,IAAA,CAAY,gDAAZ,CAHJ,EAUAzqC,EAAA,EAmJE,CAjJFqE,EAAA,CAAmBtF,EAAnB,CAiJE,CA/IFA,EAAA1B,OAAA,CAAe,UAAf,CAA2B,EAA3B,CAA+B,CAAC,UAAD,CAAa,QAAQ,CAACc,CAAD,CAAW,CAE/Dg7E,QAASA,EAAW,CAAC74D,CAAD,CAAI,CACtBA,CAAA;AAAQ,EACR,KAAIttB,EAAIstB,CAAAnpB,QAAA,CAAU,GAAV,CACR,OAAc,EAAP,EAACnE,CAAD,CAAY,CAAZ,CAAgBstB,CAAAvuB,OAAhB,CAA2BiB,CAA3B,CAA+B,CAHhB,CAkBxBmL,CAAAhL,MAAA,CAAe,SAAf,CAA0B,CACxB,iBAAoB,CAClB,MAAS,CACP,IADO,CAEP,IAFO,CADS,CAKlB,IAAO,0DAAA,MAAA,CAAA,GAAA,CALW,CAclB,SAAY,CACV,eADU,CAEV,aAFU,CAdM,CAkBlB,KAAQ,CACN,IADM,CAEN,IAFM,CAlBU,CAsBlB,eAAkB,CAtBA,CAuBlB,MAAS,uFAAA,MAAA,CAAA,GAAA,CAvBS,CAqClB,SAAY,6BAAA,MAAA,CAAA,GAAA,CArCM,CA8ClB,WAAc,iDAAA,MAAA,CAAA,GAAA,CA9CI,CA4DlB,gBAAmB,uFAAA,MAAA,CAAA,GAAA,CA5DD;AA0ElB,aAAgB,CACd,CADc,CAEd,CAFc,CA1EE,CA8ElB,SAAY,iBA9EM,CA+ElB,SAAY,WA/EM,CAgFlB,OAAU,oBAhFQ,CAiFlB,WAAc,UAjFI,CAkFlB,WAAc,WAlFI,CAmFlB,QAAS,eAnFS,CAoFlB,UAAa,QApFK,CAqFlB,UAAa,QArFK,CADI,CAwFxB,eAAkB,CAChB,aAAgB,GADA,CAEhB,YAAe,GAFC,CAGhB,UAAa,GAHG,CAIhB,SAAY,CACV,CACE,MAAS,CADX,CAEE,OAAU,CAFZ,CAGE,QAAW,CAHb,CAIE,QAAW,CAJb,CAKE,OAAU,CALZ,CAME,OAAU,GANZ,CAOE,OAAU,EAPZ,CAQE,OAAU,EARZ,CASE,OAAU,EATZ,CADU,CAYV,CACE,MAAS,CADX,CAEE,OAAU,CAFZ,CAGE,QAAW,CAHb,CAIE,QAAW,CAJb,CAKE,OAAU,CALZ,CAME,OAAU,SANZ,CAOE,OAAU,EAPZ,CAQE,OAAU,QARZ,CASE,OAAU,EATZ,CAZU,CAJI,CAxFM,CAqHxB,GAAM,OArHkB,CAsHxB,SAAY,OAtHY,CAuHxB,UAAaqgF,QAAQ,CAAClzD,CAAD;AAAI84D,CAAJ,CAAmB,CAAG,IAAIpmF,EAAIstB,CAAJttB,CAAQ,CAAZ,CAlIvCwmC,EAkIyE4/C,CAhIzEphF,KAAAA,EAAJ,GAAkBwhC,CAAlB,GACEA,CADF,CACMpJ,IAAAyzB,IAAA,CAASs1B,CAAA,CA+H2D74D,CA/H3D,CAAT,CAAyB,CAAzB,CADN,CAIW8P,KAAAipD,IAAA,CAAS,EAAT,CAAa7/C,CAAb,CA4HmF,OAAS,EAAT,EAAIxmC,CAAJ,EAAsB,CAAtB,EA1HnFwmC,CA0HmF,CA1ItD8/C,KA0IsD,CA1IFC,OA0IpD,CAvHhB,CAA1B,CApB+D,CAAhC,CAA/B,CA+IE,CAAAznF,CAAA,CAAOP,CAAAyI,SAAP,CAAAo5D,MAAA,CAA8B,QAAQ,EAAG,CACvCl2D,EAAA,CAAY3L,CAAAyI,SAAZ,CAA6BmD,EAA7B,CADuC,CAAzC,CA7JF,CAxk9BkB,CAAjB,CAAD,CAyu9BG5L,MAzu9BH,CA2u9BCsgE,EAAAtgE,MAAAwN,QAAAy6E,MAAA,EAAA3nB,cAAD,EAAyCtgE,MAAAwN,QAAAjI,QAAA,CAAuBkD,QAAAy/E,KAAvB,CAAA1kB,QAAA,CAA8C,gRAA9C;", +"sources":["angular.js"], +"names":["window","minErr","isArrayLike","obj","isWindow","isArray","isString","jqLite","length","Object","isNumber","Array","item","forEach","iterator","context","key","isFunction","hasOwnProperty","call","isPrimitive","isBlankObject","forEachSorted","keys","sort","i","reverseParams","iteratorFn","value","nextUid","uid","baseExtend","dst","objs","deep","h","$$hashKey","ii","isObject","j","jj","src","isDate","Date","valueOf","isRegExp","RegExp","nodeName","cloneNode","isElement","clone","extend","slice","arguments","merge","toInt","str","parseInt","inherit","parent","extra","create","noop","identity","$","valueFn","valueRef","hasCustomToString","toString","isUndefined","isDefined","getPrototypeOf","isScope","$evalAsync","$watch","isBoolean","isTypedArray","TYPED_ARRAY_REGEXP","test","node","prop","attr","find","makeMap","items","split","nodeName_","element","lowercase","arrayRemove","array","index","indexOf","splice","copy","source","destination","copyRecurse","push","copyElement","stackSource","stackDest","ngMinErr","needsRecurse","copyType","undefined","constructor","buffer","copied","ArrayBuffer","byteLength","set","Uint8Array","re","match","lastIndex","type","equals","o1","o2","t1","t2","getTime","keySet","createMap","charAt","concat","array1","array2","bind","self","fn","curryArgs","startIndex","apply","toJsonReplacer","val","document","toJson","pretty","JSON","stringify","fromJson","json","parse","timezoneToOffset","timezone","fallback","replace","ALL_COLONS","requestedTimezoneOffset","isNaN","convertTimezoneToLocal","date","reverse","dateTimezoneOffset","getTimezoneOffset","timezoneOffset","setMinutes","getMinutes","minutes","startingTag","empty","e","elemHtml","append","html","nodeType","NODE_TYPE_TEXT","tryDecodeURIComponent","decodeURIComponent","parseKeyValue","keyValue","splitPoint","substring","toKeyValue","parts","arrayValue","encodeUriQuery","join","encodeUriSegment","pctEncodeSpaces","encodeURIComponent","getNgAttribute","ngAttr","ngAttrPrefixes","getAttribute","angularInit","bootstrap","appElement","module","config","prefix","name","hasAttribute","candidate","querySelector","strictDi","modules","defaultConfig","doBootstrap","injector","tag","unshift","$provide","debugInfoEnabled","$compileProvider","createInjector","invoke","bootstrapApply","scope","compile","$apply","data","NG_ENABLE_DEBUG_INFO","NG_DEFER_BOOTSTRAP","angular","resumeBootstrap","angular.resumeBootstrap","extraModules","resumeDeferredBootstrap","reloadWithDebugInfo","location","reload","getTestability","rootElement","get","snake_case","separator","SNAKE_CASE_REGEXP","letter","pos","toLowerCase","bindJQuery","originalCleanData","bindJQueryFired","jqName","jq","jQuery","on","JQLitePrototype","isolateScope","controller","inheritedData","cleanData","jQuery.cleanData","elems","events","elem","_data","$destroy","triggerHandler","JQLite","assertArg","arg","reason","assertArgFn","acceptArrayAnnotation","assertNotHasOwnProperty","getter","path","bindFnToScope","lastInstance","len","getBlockNodes","nodes","endNode","blockNodes","nextSibling","setupModuleLoader","ensure","factory","$injectorMinErr","$$minErr","requires","configFn","invokeLater","provider","method","insertMethod","queue","invokeQueue","moduleInstance","invokeLaterAndSetModuleName","recipeName","factoryFunction","$$moduleName","configBlocks","runBlocks","_invokeQueue","_configBlocks","_runBlocks","service","constant","decorator","animation","filter","directive","component","run","block","shallowCopy","publishExternalAPI","version","uppercase","counter","csp","angularModule","ngModule","$$sanitizeUri","$$SanitizeUriProvider","$CompileProvider","a","htmlAnchorDirective","input","inputDirective","textarea","form","formDirective","script","scriptDirective","select","selectDirective","style","styleDirective","option","optionDirective","ngBind","ngBindDirective","ngBindHtml","ngBindHtmlDirective","ngBindTemplate","ngBindTemplateDirective","ngClass","ngClassDirective","ngClassEven","ngClassEvenDirective","ngClassOdd","ngClassOddDirective","ngCloak","ngCloakDirective","ngController","ngControllerDirective","ngForm","ngFormDirective","ngHide","ngHideDirective","ngIf","ngIfDirective","ngInclude","ngIncludeDirective","ngInit","ngInitDirective","ngNonBindable","ngNonBindableDirective","ngPluralize","ngPluralizeDirective","ngRepeat","ngRepeatDirective","ngShow","ngShowDirective","ngStyle","ngStyleDirective","ngSwitch","ngSwitchDirective","ngSwitchWhen","ngSwitchWhenDirective","ngSwitchDefault","ngSwitchDefaultDirective","ngOptions","ngOptionsDirective","ngTransclude","ngTranscludeDirective","ngModel","ngModelDirective","ngList","ngListDirective","ngChange","ngChangeDirective","pattern","patternDirective","ngPattern","required","requiredDirective","ngRequired","minlength","minlengthDirective","ngMinlength","maxlength","maxlengthDirective","ngMaxlength","ngValue","ngValueDirective","ngModelOptions","ngModelOptionsDirective","ngIncludeFillContentDirective","ngAttributeAliasDirectives","ngEventDirectives","$anchorScroll","$AnchorScrollProvider","$animate","$AnimateProvider","$animateCss","$CoreAnimateCssProvider","$$animateJs","$$CoreAnimateJsProvider","$$animateQueue","$$CoreAnimateQueueProvider","$$AnimateRunner","$$AnimateRunnerFactoryProvider","$$animateAsyncRun","$$AnimateAsyncRunFactoryProvider","$browser","$BrowserProvider","$cacheFactory","$CacheFactoryProvider","$controller","$ControllerProvider","$document","$DocumentProvider","$exceptionHandler","$ExceptionHandlerProvider","$filter","$FilterProvider","$$forceReflow","$$ForceReflowProvider","$interpolate","$InterpolateProvider","$interval","$IntervalProvider","$http","$HttpProvider","$httpParamSerializer","$HttpParamSerializerProvider","$httpParamSerializerJQLike","$HttpParamSerializerJQLikeProvider","$httpBackend","$HttpBackendProvider","$xhrFactory","$xhrFactoryProvider","$location","$LocationProvider","$log","$LogProvider","$parse","$ParseProvider","$rootScope","$RootScopeProvider","$q","$QProvider","$$q","$$QProvider","$sce","$SceProvider","$sceDelegate","$SceDelegateProvider","$sniffer","$SnifferProvider","$templateCache","$TemplateCacheProvider","$templateRequest","$TemplateRequestProvider","$$testability","$$TestabilityProvider","$timeout","$TimeoutProvider","$window","$WindowProvider","$$rAF","$$RAFProvider","$$jqLite","$$jqLiteProvider","$$HashMap","$$HashMapProvider","$$cookieReader","$$CookieReaderProvider","camelCase","SPECIAL_CHARS_REGEXP","_","offset","toUpperCase","MOZ_HACK_REGEXP","jqLiteAcceptsData","NODE_TYPE_ELEMENT","NODE_TYPE_DOCUMENT","jqLiteBuildFragment","tmp","fragment","createDocumentFragment","HTML_REGEXP","appendChild","createElement","TAG_NAME_REGEXP","exec","wrap","wrapMap","_default","innerHTML","XHTML_TAG_REGEXP","lastChild","childNodes","firstChild","textContent","createTextNode","jqLiteWrapNode","wrapper","parentNode","replaceChild","argIsString","trim","jqLiteMinErr","parsed","SINGLE_TAG_REGEXP","jqLiteAddNodes","jqLiteClone","jqLiteDealoc","onlyDescendants","jqLiteRemoveData","querySelectorAll","descendants","l","jqLiteOff","unsupported","expandoStore","jqLiteExpandoStore","handle","removeHandler","listenerFns","removeEventListener","MOUSE_EVENT_MAP","expandoId","ng339","jqCache","createIfNecessary","jqId","jqLiteData","isSimpleSetter","isSimpleGetter","massGetter","jqLiteHasClass","selector","jqLiteRemoveClass","cssClasses","setAttribute","cssClass","jqLiteAddClass","existingClasses","root","elements","jqLiteController","jqLiteInheritedData","documentElement","names","NODE_TYPE_DOCUMENT_FRAGMENT","host","jqLiteEmpty","removeChild","jqLiteRemove","keepData","jqLiteDocumentLoaded","action","win","readyState","setTimeout","getBooleanAttrName","booleanAttr","BOOLEAN_ATTR","BOOLEAN_ELEMENTS","createEventHandler","eventHandler","event","isDefaultPrevented","event.isDefaultPrevented","defaultPrevented","eventFns","eventFnsLength","immediatePropagationStopped","originalStopImmediatePropagation","stopImmediatePropagation","event.stopImmediatePropagation","stopPropagation","isImmediatePropagationStopped","event.isImmediatePropagationStopped","handlerWrapper","specialHandlerWrapper","defaultHandlerWrapper","handler","specialMouseHandlerWrapper","target","related","relatedTarget","jqLiteContains","$get","this.$get","hasClass","classes","addClass","removeClass","hashKey","nextUidFn","objType","HashMap","isolatedUid","this.nextUid","put","extractArgs","fnText","Function","prototype","STRIP_COMMENTS","ARROW_ARG","FN_ARGS","anonFn","args","modulesToLoad","supportObject","delegate","provider_","providerInjector","instantiate","providerCache","providerSuffix","enforceReturnValue","enforcedReturnValue","result","instanceInjector","factoryFn","enforce","loadModules","moduleFn","runInvokeQueue","invokeArgs","loadedModules","message","stack","createInternalInjector","cache","getService","serviceName","caller","INSTANTIATING","err","shift","injectionArgs","locals","$inject","$$annotate","msie","Type","ctor","annotate","has","$injector","instanceCache","decorFn","origProvider","orig$get","origProvider.$get","origInstance","$delegate","protoInstanceInjector","autoScrollingEnabled","disableAutoScrolling","this.disableAutoScrolling","getFirstAnchor","list","some","scrollTo","scrollIntoView","scroll","yOffset","getComputedStyle","position","getBoundingClientRect","bottom","elemTop","top","scrollBy","hash","elm","getElementById","getElementsByName","autoScrollWatch","autoScrollWatchAction","newVal","oldVal","mergeClasses","b","splitClasses","klass","prepareAnimateOptions","options","Browser","completeOutstandingRequest","outstandingRequestCount","outstandingRequestCallbacks","pop","error","cacheStateAndFireUrlChange","pendingLocation","cacheState","fireUrlChange","cachedState","getCurrentState","lastCachedState","lastBrowserUrl","url","lastHistoryState","urlChangeListeners","listener","history","clearTimeout","pendingDeferIds","isMock","$$completeOutstandingRequest","$$incOutstandingRequestCount","self.$$incOutstandingRequestCount","notifyWhenNoOutstandingRequests","self.notifyWhenNoOutstandingRequests","callback","href","baseElement","state","self.url","sameState","sameBase","stripHash","substr","self.state","urlChangeInit","onUrlChange","self.onUrlChange","$$applicationDestroyed","self.$$applicationDestroyed","off","$$checkUrlChange","baseHref","self.baseHref","defer","self.defer","delay","timeoutId","cancel","self.defer.cancel","deferId","cacheFactory","cacheId","refresh","entry","freshEnd","staleEnd","n","link","p","nextEntry","prevEntry","caches","size","stats","id","capacity","Number","MAX_VALUE","lruHash","lruEntry","remove","removeAll","destroy","info","cacheFactory.info","cacheFactory.get","$$sanitizeUriProvider","parseIsolateBindings","directiveName","isController","LOCAL_REGEXP","bindings","definition","scopeName","bindingCache","$compileMinErr","mode","collection","optional","attrName","assertValidDirectiveName","getDirectiveRequire","require","REQUIRE_PREFIX_REGEXP","hasDirectives","COMMENT_DIRECTIVE_REGEXP","CLASS_DIRECTIVE_REGEXP","ALL_OR_NOTHING_ATTRS","EVENT_HANDLER_ATTR_REGEXP","this.directive","registerDirective","directiveFactory","Suffix","directives","priority","restrict","this.component","makeInjectable","tElement","tAttrs","$element","$attrs","template","templateUrl","ddo","controllerAs","identifierForController","transclude","bindToController","aHrefSanitizationWhitelist","this.aHrefSanitizationWhitelist","regexp","imgSrcSanitizationWhitelist","this.imgSrcSanitizationWhitelist","this.debugInfoEnabled","enabled","TTL","onChangesTtl","this.onChangesTtl","flushOnChangesQueue","onChangesQueue","errors","Attributes","attributesToCopy","$attr","$$element","setSpecialAttr","specialAttrHolder","attributes","attribute","removeNamedItem","setNamedItem","safeAddClass","className","$compileNodes","transcludeFn","maxPriority","ignoreDirective","previousCompileContext","NOT_EMPTY","domNode","nodeValue","compositeLinkFn","compileNodes","$$addScopeClass","namespace","publicLinkFn","cloneConnectFn","needsNewScope","$parent","$new","parentBoundTranscludeFn","transcludeControllers","futureParentElement","$$boundTransclude","$linkNode","wrapTemplate","controllerName","instance","$$addScopeInfo","nodeList","$rootElement","childLinkFn","childScope","childBoundTranscludeFn","stableNodeList","nodeLinkFnFound","linkFns","idx","nodeLinkFn","transcludeOnThisElement","createBoundTranscludeFn","templateOnThisElement","attrs","linkFnFound","collectDirectives","applyDirectivesToNode","terminal","previousBoundTranscludeFn","boundTranscludeFn","transcludedScope","cloneFn","controllers","containingScope","$$transcluded","boundSlots","$$slots","slotName","attrsMap","addDirective","directiveNormalize","isNgAttr","nAttrs","attrStartName","attrEndName","ngAttrName","NG_ATTR_BINDING","PREFIX_REGEXP","multiElementMatch","MULTI_ELEMENT_DIR_RE","directiveIsMultiElement","nName","addAttrInterpolateDirective","animVal","addTextInterpolateDirective","NODE_TYPE_COMMENT","byPriority","groupScan","attrStart","attrEnd","depth","groupElementsLinkFnWrapper","linkFn","groupedElementsLink","compilationGenerator","eager","compiled","lazyCompilation","compileNode","templateAttrs","jqCollection","originalReplaceDirective","preLinkFns","postLinkFns","addLinkFns","pre","post","newIsolateScopeDirective","$$isolateScope","cloneAndAnnotateFn","linkNode","controllersBoundTransclude","cloneAttachFn","hasElementTranscludeDirective","elementControllers","slotTranscludeFn","scopeToChild","controllerScope","newScopeDirective","isSlotFilled","transcludeFn.isSlotFilled","controllerDirectives","setupControllers","templateDirective","$$originalDirective","$$isolateBindings","scopeBindingInfo","initializeDirectiveBindings","removeWatches","$on","controllerDirective","$$bindings","bindingInfo","identifier","controllerResult","getControllers","controllerInstance","$onChanges","initialChanges","$onInit","$onDestroy","callOnDestroyHook","invokeLinkFn","$postLink","terminalPriority","nonTlbTranscludeDirective","hasTranscludeDirective","hasTemplate","$compileNode","$template","childTranscludeFn","didScanForMultipleTransclusion","mightHaveMultipleTransclusionError","directiveValue","$$start","$$end","assertNoDuplicate","$$tlb","scanningIndex","candidateDirective","$$createComment","replaceWith","$$parentNode","replaceDirective","slots","contents","slotMap","filledSlots","elementSelector","filled","$$newScope","denormalizeTemplate","removeComments","templateNamespace","newTemplateAttrs","templateDirectives","unprocessedDirectives","markDirectiveScope","mergeTemplateAttributes","compileTemplateUrl","Math","max","inheritType","dataName","property","controllerKey","$scope","$transclude","newScope","tDirectives","startAttrName","endAttrName","multiElement","srcAttr","dstAttr","$set","linkQueue","afterTemplateNodeLinkFn","afterTemplateChildLinkFn","beforeTemplateCompileNode","origAsyncDirective","derivedSyncDirective","then","content","tempTemplateAttrs","beforeTemplateLinkNode","linkRootElement","$$destroyed","oldClasses","delayedNodeLinkFn","ignoreChildLinkFn","diff","what","previousDirective","wrapModuleNameIfDefined","moduleName","text","interpolateFn","textInterpolateCompileFn","templateNode","templateNodeParent","hasCompileParent","$$addBindingClass","textInterpolateLinkFn","$$addBindingInfo","expressions","interpolateFnWatchAction","getTrustedContext","attrNormalizedName","HTML","RESOURCE_URL","allOrNothing","trustedContext","attrInterpolatePreLinkFn","$$observers","newValue","$$inter","$$scope","oldValue","$updateClass","elementsToRemove","newNode","firstElementToRemove","removeCount","j2","hasData","annotation","recordChanges","currentValue","previousValue","$$postDigest","changes","triggerOnChangesHook","SimpleChange","removeWatchCollection","initializeBinding","lastValue","parentGet","parentSet","compare","$observe","_UNINITIALIZED_VALUE","literal","assign","parentValueWatch","parentValue","$stateful","removeWatch","$watchCollection","initialValue","parentValueWatchAction","SIMPLE_ATTR_NAME","$normalize","$addClass","classVal","$removeClass","newClasses","toAdd","tokenDifference","toRemove","writeAttr","booleanKey","aliasedKey","ALIASED_ATTR","observer","trimmedSrcset","srcPattern","rawUris","nbrUrisWith2parts","floor","innerIdx","lastTuple","removeAttr","listeners","startSymbol","endSymbol","binding","isolated","noTemplate","compile.$$createComment","comment","createComment","previous","current","str1","str2","values","tokens1","tokens2","token","jqNodes","ident","CNTRL_REG","globals","this.has","register","this.register","allowGlobals","this.allowGlobals","addIdentifier","expression","later","$controllerMinErr","controllerPrototype","$controllerInit","exception","cause","serializeValue","v","toISOString","ngParamSerializer","params","jQueryLikeParamSerializer","serialize","toSerialize","topLevel","defaultHttpResponseTransform","headers","tempData","JSON_PROTECTION_PREFIX","contentType","jsonStart","JSON_START","JSON_ENDS","parseHeaders","line","headerVal","headerKey","headersGetter","headersObj","transformData","status","fns","defaults","transformResponse","transformRequest","d","common","CONTENT_TYPE_APPLICATION_JSON","patch","xsrfCookieName","xsrfHeaderName","paramSerializer","useApplyAsync","this.useApplyAsync","useLegacyPromise","useLegacyPromiseExtensions","this.useLegacyPromiseExtensions","interceptorFactories","interceptors","requestConfig","response","resp","reject","executeHeaderFns","headerContent","processedHeaders","headerFn","header","mergeHeaders","defHeaders","reqHeaders","defHeaderName","lowercaseDefHeaderName","reqHeaderName","chain","serverRequest","reqData","withCredentials","sendReq","promise","when","reversedInterceptors","interceptor","request","requestError","responseError","thenFn","rejectFn","success","promise.success","promise.error","$httpMinErrLegacyFn","createApplyHandlers","eventHandlers","applyHandlers","callEventHandler","$applyAsync","$$phase","done","headersString","statusText","resolveHttpPromise","resolvePromise","deferred","resolve","resolvePromiseWithResult","removePendingReq","pendingRequests","cachedResp","buildUrl","defaultCache","xsrfValue","urlIsSameOrigin","timeout","responseType","uploadEventHandlers","serializedParams","interceptorFactory","createShortMethods","createShortMethodsWithData","createXhr","XMLHttpRequest","createHttpBackend","callbacks","$browserDefer","rawDocument","jsonpReq","callbackId","async","body","called","addEventListener","timeoutRequest","jsonpDone","xhr","abort","completeRequest","open","setRequestHeader","onload","xhr.onload","responseText","urlResolve","protocol","getAllResponseHeaders","onerror","onabort","upload","send","this.startSymbol","this.endSymbol","escape","ch","unescapeText","escapedStartRegexp","escapedEndRegexp","constantWatchDelegate","objectEquality","constantInterp","unwatch","constantInterpolateWatch","mustHaveExpression","parseStringifyInterceptor","getTrusted","$interpolateMinErr","interr","unescapedText","exp","$$watchDelegate","endIndex","parseFns","textLength","expressionPositions","startSymbolLength","endSymbolLength","throwNoconcat","compute","interpolationFn","$watchGroup","interpolateFnWatcher","oldValues","currValue","$interpolate.startSymbol","$interpolate.endSymbol","interval","count","invokeApply","hasParams","iteration","setInterval","clearInterval","skipApply","$$intervalId","tick","notify","intervals","interval.cancel","encodePath","segments","parseAbsoluteUrl","absoluteUrl","locationObj","parsedUrl","$$protocol","$$host","hostname","$$port","port","DEFAULT_PORTS","parseAppUrl","relativeUrl","prefixed","$$path","pathname","$$search","search","$$hash","stripBaseUrl","base","lastIndexOf","trimEmptyHash","LocationHtml5Url","appBase","appBaseNoFile","basePrefix","$$html5","$$parse","this.$$parse","pathUrl","$locationMinErr","$$compose","this.$$compose","$$url","$$absUrl","$$parseLinkUrl","this.$$parseLinkUrl","relHref","appUrl","prevAppUrl","rewrittenUrl","LocationHashbangUrl","hashPrefix","withoutBaseUrl","withoutHashUrl","windowsFilePathExp","firstPathSegmentMatch","LocationHashbangInHtml5Url","locationGetter","locationGetterSetter","preprocess","html5Mode","requireBase","rewriteLinks","this.hashPrefix","this.html5Mode","setBrowserUrlWithFallback","oldUrl","oldState","$$state","afterLocationChange","$broadcast","absUrl","LocationMode","initialUrl","IGNORE_URI_REGEXP","ctrlKey","metaKey","shiftKey","which","button","absHref","preventDefault","initializing","newUrl","newState","$digest","$locationWatch","currentReplace","$$replace","urlOrStateChanged","debug","debugEnabled","this.debugEnabled","flag","formatError","Error","sourceURL","consoleLog","console","logFn","log","hasApply","arg1","arg2","warn","ensureSafeMemberName","fullExpression","$parseMinErr","getStringValue","ensureSafeObject","children","ensureSafeFunction","CALL","APPLY","BIND","ensureSafeAssignContext","ifDefined","plusFn","r","findConstantAndWatchExpressions","ast","allConstants","argsToWatch","AST","Program","expr","Literal","toWatch","UnaryExpression","argument","BinaryExpression","left","right","LogicalExpression","ConditionalExpression","alternate","consequent","Identifier","MemberExpression","object","computed","CallExpression","callee","AssignmentExpression","ArrayExpression","ObjectExpression","properties","ThisExpression","LocalsExpression","getInputs","lastExpression","isAssignable","assignableAST","NGValueParameter","operator","isLiteral","ASTCompiler","astBuilder","ASTInterpreter","isPossiblyDangerousMemberName","getValueOf","objectValueOf","cacheDefault","cacheExpensive","literals","identStart","identContinue","addLiteral","this.addLiteral","literalName","literalValue","setIdentifierFns","this.setIdentifierFns","identifierStart","identifierContinue","interceptorFn","expensiveChecks","parsedExpression","oneTime","cacheKey","runningChecksEnabled","parseOptions","$parseOptionsExpensive","$parseOptions","lexer","Lexer","parser","Parser","oneTimeLiteralWatchDelegate","oneTimeWatchDelegate","inputs","inputsWatchDelegate","expensiveChecksInterceptor","addInterceptor","expensiveCheckFn","expensiveCheckOldValue","expressionInputDirtyCheck","oldValueOfValue","prettyPrintExpression","inputExpressions","lastResult","oldInputValueOf","expressionInputWatch","newInputValue","oldInputValueOfValues","oldInputValues","expressionInputsWatch","changed","oneTimeWatch","oneTimeListener","old","isAllDefined","allDefined","constantWatch","watchDelegate","useInputs","regularInterceptedExpression","oneTimeInterceptedExpression","noUnsafeEval","isIdentifierStart","isIdentifierContinue","$$runningExpensiveChecks","$parse.$$runningExpensiveChecks","qFactory","nextTick","exceptionHandler","Promise","simpleBind","scheduleProcessQueue","processScheduled","pending","Deferred","$qMinErr","TypeError","onFulfilled","onRejected","progressBack","catch","finally","handleCallback","$$reject","$$resolve","that","rejectPromise","progress","makePromise","resolved","isResolved","callbackOutput","errback","$Q","resolver","resolveFn","all","promises","results","requestAnimationFrame","webkitRequestAnimationFrame","cancelAnimationFrame","webkitCancelAnimationFrame","webkitCancelRequestAnimationFrame","rafSupported","raf","timer","supported","createChildScopeClass","ChildScope","$$watchers","$$nextSibling","$$childHead","$$childTail","$$listeners","$$listenerCount","$$watchersCount","$id","$$ChildScope","$rootScopeMinErr","lastDirtyWatch","applyAsyncId","digestTtl","this.digestTtl","destroyChildScope","$event","currentScope","cleanUpScope","$$prevSibling","$root","Scope","beginPhase","phase","incrementWatchersCount","decrementListenerCount","initWatchVal","flushApplyAsync","applyAsyncQueue","scheduleApplyAsync","isolate","child","watchExp","watcher","last","eq","deregisterWatch","watchExpressions","watchGroupAction","changeReactionScheduled","firstRun","newValues","deregisterFns","shouldCall","deregisterWatchGroup","unwatchFn","watchGroupSubAction","$watchCollectionInterceptor","_value","bothNaN","newItem","oldItem","internalArray","oldLength","changeDetected","newLength","internalObject","veryOldValue","trackVeryOldValue","changeDetector","initRun","$watchCollectionAction","watch","watchers","dirty","ttl","watchLog","logIdx","asyncTask","asyncQueuePosition","asyncQueue","$eval","msg","next","postDigestQueuePosition","postDigestQueue","eventName","this.$watchGroup","$applyAsyncExpression","namedListeners","indexOfListener","$emit","targetScope","listenerArgs","$$asyncQueue","$$postDigestQueue","$$applyAsyncQueue","sanitizeUri","uri","isImage","regex","normalizedVal","adjustMatcher","matcher","$sceMinErr","escapeForRegexp","adjustMatchers","matchers","adjustedMatchers","SCE_CONTEXTS","resourceUrlWhitelist","resourceUrlBlacklist","this.resourceUrlWhitelist","this.resourceUrlBlacklist","matchUrl","generateHolderType","Base","holderType","trustedValue","$$unwrapTrustedValue","this.$$unwrapTrustedValue","holderType.prototype.valueOf","holderType.prototype.toString","htmlSanitizer","trustedValueHolderBase","byType","CSS","URL","JS","trustAs","Constructor","maybeTrusted","allowed","this.enabled","sce","isEnabled","sce.isEnabled","sce.getTrusted","parseAs","sce.parseAs","enumValue","lName","eventSupport","hasHistoryPushState","chrome","app","runtime","pushState","android","userAgent","navigator","boxee","vendorPrefix","vendorRegex","bodyStyle","transitions","animations","webkitTransition","webkitAnimation","hasEvent","divElm","httpOptions","this.httpOptions","handleRequestFn","tpl","ignoreRequestError","totalPendingRequests","getTrustedResourceUrl","transformer","handleError","$templateRequestMinErr","testability","testability.findBindings","opt_exactMatch","getElementsByClassName","matches","dataBinding","bindingName","testability.findModels","prefixes","attributeEquals","testability.getLocation","testability.setLocation","testability.whenStable","deferreds","$$timeoutId","timeout.cancel","urlParsingNode","requestUrl","originUrl","$$CookieReader","safeDecodeURIComponent","lastCookies","lastCookieString","cookieArray","cookie","currentCookieString","filters","suffix","currencyFilter","dateFilter","filterFilter","jsonFilter","limitToFilter","lowercaseFilter","numberFilter","orderByFilter","uppercaseFilter","comparator","matchAgainstAnyProp","getTypeForFilter","expressionType","predicateFn","createPredicateFn","shouldMatchPrimitives","actual","expected","deepCompare","dontMatchWholeObject","actualType","expectedType","expectedVal","matchAnyProperty","actualVal","$locale","formats","NUMBER_FORMATS","amount","currencySymbol","fractionSize","CURRENCY_SYM","PATTERNS","maxFrac","formatNumber","GROUP_SEP","DECIMAL_SEP","number","numStr","exponent","digits","numberOfIntegerDigits","zeros","ZERO_CHAR","MAX_DIGITS","roundNumber","parsedNumber","minFrac","fractionLen","min","roundAt","digit","k","carry","reduceRight","groupSep","decimalSep","isInfinity","isFinite","isZero","abs","formattedText","integerLen","decimals","reduce","groups","lgSize","gSize","negPre","negSuf","posPre","posSuf","padNumber","num","negWrap","neg","dateGetter","dateStrGetter","shortForm","standAlone","getFirstThursdayOfYear","year","dayOfWeekOnFirst","getDay","weekGetter","firstThurs","getFullYear","thisThurs","getMonth","getDate","round","eraGetter","ERAS","jsonStringToDate","string","R_ISO8601_STR","tzHour","tzMin","dateSetter","setUTCFullYear","setFullYear","timeSetter","setUTCHours","setHours","m","s","ms","parseFloat","format","DATETIME_FORMATS","NUMBER_STRING","DATE_FORMATS_SPLIT","DATE_FORMATS","spacing","limit","begin","Infinity","sliceFn","end","processPredicates","sortPredicates","map","predicate","descending","defaultCompare","v1","v2","type1","type2","value1","value2","sortPredicate","reverseOrder","compareFn","predicates","compareValues","getComparisonObject","tieBreaker","predicateValues","doComparison","ngDirective","FormController","controls","$error","$$success","$pending","$name","$dirty","$pristine","$valid","$invalid","$submitted","$$parentForm","nullFormCtrl","$rollbackViewValue","form.$rollbackViewValue","control","$commitViewValue","form.$commitViewValue","$addControl","form.$addControl","$$renameControl","form.$$renameControl","newName","oldName","$removeControl","form.$removeControl","$setValidity","addSetValidityMethod","ctrl","unset","$setDirty","form.$setDirty","PRISTINE_CLASS","DIRTY_CLASS","$setPristine","form.$setPristine","setClass","SUBMITTED_CLASS","$setUntouched","form.$setUntouched","$setSubmitted","form.$setSubmitted","stringBasedInputType","$formatters","$isEmpty","baseInputType","composing","ev","ngTrim","$viewValue","$$hasNativeValidators","$setViewValue","deferListener","origValue","keyCode","PARTIAL_VALIDATION_TYPES","PARTIAL_VALIDATION_EVENTS","validity","origBadInput","badInput","origTypeMismatch","typeMismatch","$render","ctrl.$render","createDateParser","mapping","iso","ISO_DATE_REGEXP","yyyy","MM","dd","HH","getHours","mm","ss","getSeconds","sss","getMilliseconds","part","NaN","createDateInputType","parseDate","dynamicDateInputType","isValidDate","parseObservedDateValue","badInputChecker","$options","previousDate","$$parserName","$parsers","parsedDate","ngModelMinErr","ngMin","minVal","$validators","ctrl.$validators.min","$validate","ngMax","maxVal","ctrl.$validators.max","VALIDITY_STATE_PROPERTY","parseConstantExpr","parseFn","classDirective","arrayDifference","arrayClasses","addClasses","digestClassCounts","classCounts","classesToUpdate","updateClasses","ngClassWatchAction","$index","old$index","mod","cachedToggleClass","switchValue","classCache","toggleValidationCss","validationErrorKey","isValid","VALID_CLASS","INVALID_CLASS","setValidity","isObjectEmpty","PENDING_CLASS","combinedState","REGEX_STRING_REGEXP","documentMode","rules","ngCspElement","ngCspAttribute","noInlineStyle","name_","el","full","major","minor","dot","codeName","expando","JQLite._data","mouseleave","mouseenter","optgroup","tbody","tfoot","colgroup","caption","thead","th","td","Node","contains","compareDocumentPosition","ready","trigger","fired","removeData","jqLiteHasData","jqLiteCleanData","removeAttribute","css","NODE_TYPE_ATTRIBUTE","lowercasedName","specified","getNamedItem","ret","getText","$dv","multiple","selected","nodeCount","jqLiteOn","types","addHandler","noEventListener","one","onFn","replaceNode","insertBefore","contentDocument","prepend","wrapNode","detach","after","newElement","toggleClass","condition","classCondition","nextElementSibling","getElementsByTagName","extraParameters","dummyEvent","handlerArgs","eventFnsCopy","arg3","unbind","FN_ARG_SPLIT","FN_ARG","argDecl","underscore","$animateMinErr","postDigestElements","updateData","handleCSSClassChanges","existing","pin","domOperation","from","to","classesAdded","add","classesRemoved","runner","complete","$$registeredAnimations","classNameFilter","this.classNameFilter","$$classNameFilter","reservedRegex","NG_ANIMATE_CLASSNAME","domInsert","parentElement","afterElement","afterNode","ELEMENT_NODE","previousElementSibling","enter","move","leave","addclass","animate","tempClasses","waitForTick","waitQueue","passed","AnimateRunner","setHost","rafTick","_doneCallbacks","_tick","this._tick","doc","hidden","_state","AnimateRunner.chain","AnimateRunner.all","runners","onProgress","DONE_COMPLETE_STATE","getPromise","resolveHandler","rejectHandler","pause","resume","_resolve","INITIAL_STATE","DONE_PENDING_STATE","initialOptions","closed","$$prepared","cleanupStyles","start","UNINITIALIZED_VALUE","isFirstChange","SimpleChange.prototype.isFirstChange","offsetWidth","APPLICATION_JSON","$httpMinErr","$interpolateMinErr.throwNoconcat","$interpolateMinErr.interr","PATH_MATCH","locationPrototype","paramValue","Location","Location.prototype.state","OPERATORS","ESCAPE","lex","tokens","readString","peek","readNumber","peekMultichar","readIdent","is","isWhitespace","ch2","ch3","op2","op3","op1","throwError","chars","codePointAt","isValidIdentifierStart","isValidIdentifierContinue","cp","charCodeAt","cp1","cp2","isExpOperator","colStr","peekCh","quote","rawString","hex","String","fromCharCode","rep","ExpressionStatement","Property","program","expressionStatement","expect","filterChain","assignment","ternary","logicalOR","consume","logicalAND","equality","relational","additive","multiplicative","unary","primary","arrayDeclaration","selfReferential","parseArguments","baseExpression","peekToken","kind","e1","e2","e3","e4","peekAhead","t","nextId","vars","own","assignable","stage","computing","recurse","return_","generateFunction","fnKey","intoId","watchId","fnString","USE","STRICT","filterPrefix","watchFns","varsPrefix","section","nameId","recursionFn","skipWatchIdCheck","if_","lazyAssign","computedMember","lazyRecurse","plus","not","getHasOwnProperty","nonComputedMember","addEnsureSafeObject","notNull","addEnsureSafeAssignContext","addEnsureSafeMemberName","addEnsureSafeFunction","member","filterName","defaultValue","UNSAFE_CHARACTERS","SAFE_IDENTIFIER","stringEscapeFn","stringEscapeRegex","c","skip","init","fn.assign","rhs","lhs","unary+","unary-","unary!","binary+","binary-","binary*","binary/","binary%","binary===","binary!==","binary==","binary!=","binary<","binary>","binary<=","binary>=","binary&&","binary||","ternary?:","astCompiler","yy","y","MMMM","MMM","M","LLLL","H","hh","EEEE","EEE","ampmGetter","AMPMS","Z","timeZoneGetter","zone","paddedZone","ww","w","G","GG","GGG","GGGG","longEraGetter","ERANAMES","xlinkHref","propName","defaultLinkFn","normalized","ngBooleanAttrWatchAction","htmlAttr","ngAttrAliasWatchAction","nullFormRenameControl","formDirectiveFactory","isNgForm","getSetter","ngFormCompile","formElement","nameAttr","ngFormPreLink","ctrls","handleFormSubmission","setter","URL_REGEXP","EMAIL_REGEXP","NUMBER_REGEXP","DATE_REGEXP","DATETIMELOCAL_REGEXP","WEEK_REGEXP","MONTH_REGEXP","TIME_REGEXP","inputType","textInputType","weekParser","isoWeek","existingDate","week","hours","seconds","milliseconds","addDays","numberInputType","urlInputType","ctrl.$validators.url","modelValue","viewValue","emailInputType","email","ctrl.$validators.email","radioInputType","checked","checkboxInputType","trueValue","ngTrueValue","falseValue","ngFalseValue","ctrl.$isEmpty","CONSTANT_VALUE_REGEXP","tplAttr","ngValueConstantLink","ngValueLink","valueWatchAction","$compile","ngBindCompile","templateElement","ngBindLink","ngBindWatchAction","ngBindTemplateCompile","ngBindTemplateLink","ngBindHtmlCompile","ngBindHtmlGetter","ngBindHtmlWatch","sceValueOf","ngBindHtmlLink","ngBindHtmlWatchAction","getTrustedHtml","$viewChangeListeners","forceAsyncEvents","ngEventHandler","previousElements","ngIfWatchAction","srcExp","onloadExp","autoScrollExp","autoscroll","changeCounter","previousElement","currentElement","cleanupLastIncludeContent","ngIncludeWatchAction","afterAnimation","thisChangeId","namespaceAdaptedClone","trimValues","NgModelController","$modelValue","$$rawModelValue","$asyncValidators","$untouched","$touched","parsedNgModel","parsedNgModelAssign","ngModelGet","ngModelSet","pendingDebounce","parserValid","$$setOptions","this.$$setOptions","getterSetter","invokeModelGetter","invokeModelSetter","$$$p","this.$isEmpty","$$updateEmptyClasses","this.$$updateEmptyClasses","NOT_EMPTY_CLASS","EMPTY_CLASS","currentValidationRunId","this.$setPristine","this.$setDirty","this.$setUntouched","UNTOUCHED_CLASS","TOUCHED_CLASS","$setTouched","this.$setTouched","this.$rollbackViewValue","$$lastCommittedViewValue","this.$validate","prevValid","prevModelValue","allowInvalid","$$runValidators","allValid","$$writeModelToScope","this.$$runValidators","doneCallback","processSyncValidators","syncValidatorsValid","validator","processAsyncValidators","validatorPromises","validationDone","localValidationRunId","processParseErrors","errorKey","this.$commitViewValue","$$parseAndValidate","this.$$parseAndValidate","this.$$writeModelToScope","this.$setViewValue","updateOnDefault","$$debounceViewValueCommit","this.$$debounceViewValueCommit","debounceDelay","debounce","ngModelWatch","formatters","ngModelCompile","ngModelPreLink","modelCtrl","formCtrl","ngModelPostLink","updateOn","DEFAULT_REGEXP","ngOptionsMinErr","NG_OPTIONS_REGEXP","parseOptionsExpression","optionsExp","selectElement","Option","selectValue","label","group","disabled","getOptionValuesKeys","optionValues","optionValuesKeys","keyName","itemKey","valueName","selectAs","trackBy","viewValueFn","trackByFn","getTrackByValueFn","getHashOfValue","getTrackByValue","getLocals","displayFn","groupByFn","disableWhenFn","valuesFn","getWatchables","watchedArray","optionValuesLength","disableWhen","getOptions","optionItems","selectValueMap","optionItem","getOptionFromViewValue","getViewValueFromOption","optionTemplate","optGroupTemplate","ngOptionsPreLink","registerOption","ngOptionsPostLink","updateOptionElement","updateOptions","selectCtrl","readValue","groupElementMap","providedEmptyOption","emptyOption","addOption","groupElement","listFragment","optionElement","ngModelCtrl","nextValue","unknownOption","ngModelCtrl.$isEmpty","writeValue","selectCtrl.writeValue","selectCtrl.readValue","selectedValues","selections","selectedOption","BRACE","IS_WHEN","updateElementText","newText","numberExp","whenExp","whens","whensExpFns","braceReplacement","watchRemover","lastCount","attributeName","tmpMatch","whenKey","ngPluralizeWatchAction","countIsNaN","pluralCat","whenExpFn","ngRepeatMinErr","updateScope","valueIdentifier","keyIdentifier","arrayLength","$first","$last","$middle","$odd","$even","ngRepeatCompile","ngRepeatEndComment","aliasAs","trackByExp","trackByExpGetter","trackByIdExpFn","trackByIdArrayFn","trackByIdObjFn","hashFnLocals","ngRepeatLink","lastBlockMap","ngRepeatAction","previousNode","nextNode","nextBlockMap","collectionLength","trackById","collectionKeys","nextBlockOrder","trackByIdFn","blockKey","ngRepeatTransclude","ngShowWatchAction","NG_HIDE_CLASS","NG_HIDE_IN_PROGRESS_CLASS","ngHideWatchAction","ngStyleWatchAction","newStyles","oldStyles","ngSwitchController","cases","selectedTranscludes","selectedElements","previousLeaveAnimations","selectedScopes","spliceFactory","ngSwitchWatchAction","selectedTransclude","caseElement","selectedScope","anchor","ngTranscludeMinErr","ngTranscludeCloneAttachFn","ngTranscludeSlot","noopNgModelController","SelectController","optionsMap","renderUnknownOption","self.renderUnknownOption","unknownVal","removeUnknownOption","self.removeUnknownOption","self.readValue","self.writeValue","hasOption","self.addOption","removeOption","self.removeOption","self.hasOption","self.registerOption","optionScope","optionAttrs","interpolateValueFn","interpolateTextFn","valueAttributeObserveAction","interpolateWatchAction","selectPreLink","lastView","lastViewRef","selectMultipleWatch","selectPostLink","ngModelCtrl.$render","selectCtrlName","ctrl.$validators.required","patternExp","ctrl.$validators.pattern","intVal","ctrl.$validators.maxlength","ctrl.$validators.minlength","getDecimals","opt_precision","pow","ONE","OTHER","$$csp","head"] +} diff --git a/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js b/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js new file mode 100644 index 0000000000..88ed04cce7 --- /dev/null +++ b/spring-security-mvc-socket/src/main/webapp/resources/vendor/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.0.0 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.0.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return a&&"[object Object]"===k.call(a)?(b=e(a))?(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n):!0:!1},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;d>f;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;return"string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a)?(d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e):void 0},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"===c||r.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\x00-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\x00"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[0>c?c+b:c]}),even:pa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e)}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,e>i&&ya(a.slice(i,e)),f>e&&ya(a=a.slice(e)),f>e&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;d>b;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;d>b;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(f>b)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(1>=b&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){ + return j.call(r(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:X.test(c)?JSON.parse(c):c}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),Z(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=Z(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthf;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ba(d)&&(e[f]=fa(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;g>f;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ga(this,!0)},hide:function(){return ga(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ba(this)?r(this).show():r(this).hide()})}});var ha=/^(?:checkbox|radio)$/i,ia=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;d>c;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var na=/<|&#?\w+;/;function oa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;o>n;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(na.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ia.exec(f)||["",""])[1].toLowerCase(),i=ka[h]||ka._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;cc;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?r(e,this).index(i)>-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ga(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ha.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ha(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;m>l;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,la(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ea),l=0;i>l;l++)j=h[l],ja.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ba,""),k))}return a}function Ia(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(la(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&ma(la(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(xa,"<$1>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;e>d;d++)Ga(f[d],g[d]);if(b)if(c)for(f=f||la(a),g=g||la(h),d=0,e=f.length;e>d;d++)Fa(f[d],g[d]);else Fa(a,h);return g=la(h,"script"),g.length>0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(la(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(la(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;f>=g;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ja=/^margin/,Ka=new RegExp("^("+$+")(?!px)[a-z%]+$","i"),La=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",pa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,pa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Ma(a,b,c){var d,e,f,g,h=a.style;return c=c||La(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ka.test(g)&&Ja.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Na(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Oa=/^(none|table(?!-c[ea]).+)/,Pa={position:"absolute",visibility:"hidden",display:"block"},Qa={letterSpacing:"0",fontWeight:"400"},Ra=["Webkit","Moz","ms"],Sa=d.createElement("div").style;function Ta(a){if(a in Sa)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ra.length;while(c--)if(a=Ra[c]+b,a in Sa)return a}function Ua(a,b,c){var d=_.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Va(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=r.css(a,c+aa[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+aa[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+aa[f]+"Width",!0,e))):(g+=r.css(a,"padding"+aa[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+aa[f]+"Width",!0,e)));return g}function Wa(a,b,c){var d,e=!0,f=La(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),0>=d||null==d){if(d=Ma(a,b,f),(0>d||null==d)&&(d=a.style[b]),Ka.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Va(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ma(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=_.exec(c))&&e[1]&&(c=da(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ta(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Ma(a,b,d)),"normal"===e&&b in Qa&&(e=Qa[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){return c?!Oa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Wa(a,b,d):ca(a,Pa,function(){return Wa(a,b,d)}):void 0},set:function(a,c,d){var e,f=d&&La(a),g=d&&Va(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=_.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ua(a,c,g)}}}),r.cssHooks.marginLeft=Na(o.reliableMarginLeft,function(a,b){return b?(parseFloat(Ma(a,"marginLeft"))||a.getBoundingClientRect().left-ca(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px":void 0}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+aa[d]+b]=f[d]||f[d-2]||f[0];return e}},Ja.test(a)||(r.cssHooks[a+b].set=Ua)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=La(a),e=b.length;e>g;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function eb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ba(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],$a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ga([a],!0),j=a.style.display||j,k=r.css(a,"display"),ga([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ga([a],!0),m.done(function(){p||ga([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=db(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function fb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function gb(a,b,c){var d,e,f=0,g=gb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Ya||bb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Ya||bb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(fb(k,j.opts.specialEasing);g>f;f++)if(d=gb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,db,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(gb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return da(c.elem,a,_.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;e>d;d++)c=a[d],gb.tweeners[c]=gb.tweeners[c]||[],gb.tweeners[c].unshift(b)},prefilters:[eb],prefilter:function(a,b){b?gb.prefilters.unshift(a):gb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:e.duration="number"==typeof e.duration?e.duration:e.duration in r.fx.speeds?r.fx.speeds[e.duration]:r.fx.speeds._default,null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ba).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=gb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&_a.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(cb(b,!0),a,d,e)}}),r.each({slideDown:cb("show"),slideUp:cb("hide"),slideToggle:cb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Ya=r.now();b1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c); +}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){return r.isArray(b)?a.checked=r.inArray(r(a).val(),b)>-1:void 0}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?r.event.trigger(a,b,c,!0):void 0}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&300>b||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",0>b&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;return o.cors||Pb&&!b.crossDomain?{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}:void 0}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("