diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..efbd844e --- /dev/null +++ b/404.html @@ -0,0 +1 @@ + Awesome GameDev Resources

404 - Not found

\ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..e4231c1d --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +courses.tolstenko.net \ No newline at end of file diff --git a/advanced/01-introduction/CMakeLists.txt b/advanced/01-introduction/CMakeLists.txt new file mode 100644 index 00000000..d84ce9a6 --- /dev/null +++ b/advanced/01-introduction/CMakeLists.txt @@ -0,0 +1,7 @@ +subdirlist(activity_dir ${CMAKE_CURRENT_SOURCE_DIR}) + +foreach(subdir ${activity_dir}) + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt") + add_subdirectory(${subdir}) + endif() +endforeach() \ No newline at end of file diff --git a/advanced/01-introduction/actvities/CMakeLists.txt b/advanced/01-introduction/actvities/CMakeLists.txt new file mode 100644 index 00000000..e2dfa5b6 --- /dev/null +++ b/advanced/01-introduction/actvities/CMakeLists.txt @@ -0,0 +1,14 @@ +file(GLOB adv_intro_src CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp) + +enable_testing() + +add_executable(adv-01-intro ${adv_intro_src}) +include(${doctest_SOURCE_DIR}/scripts/cmake/doctest.cmake) +target_include_directories(adv-01-intro PUBLIC ${DOCTEST_INCLUDE_DIR}) +target_link_libraries(adv-01-intro doctest::doctest) +doctest_discover_tests(adv-01-intro) + +if(ENABLE_TEST_COVERAGE) + target_compile_options(adv-01-intro PUBLIC -O0 -g -fprofile-arcs -ftest-coverage) + target_link_options(adv-01-intro PUBLIC -fprofile-arcs -ftest-coverage) +endif() \ No newline at end of file diff --git a/advanced/01-introduction/actvities/main.cpp b/advanced/01-introduction/actvities/main.cpp new file mode 100644 index 00000000..b0dd5057 --- /dev/null +++ b/advanced/01-introduction/actvities/main.cpp @@ -0,0 +1,25 @@ +#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN +#include +using namespace std; + +// create a function that allocates memory on the heap and returns a raw pointer to it +char* allocateMemoryAndClear(int numBytes, char value) { + // implement this function +} + +// create a function that deallocates memory on the heap +void deallocateMemory(char*& ptr) { + // implement this function +} + + +// DO NOT CHANGE THE CODE BELOW THIS LINE +TEST_CASE("allocateMemory") { + char* ptr = allocateMemoryAndClear(3, 'u'); + CHECK(ptr != nullptr); + CHECK(ptr[0] == 'u'); + CHECK(ptr[1] == 'u'); + CHECK(ptr[2] == 'u'); + deallocateMemory(ptr); + CHECK(ptr == nullptr); +} \ No newline at end of file diff --git a/advanced/01-introduction/index.html b/advanced/01-introduction/index.html new file mode 100644 index 00000000..07333ccb --- /dev/null +++ b/advanced/01-introduction/index.html @@ -0,0 +1,74 @@ + Advanced Programming with C++ - Awesome GameDev Resources
Skip to content

Advanced Programming with C++

Estimated time to read: 9 minutes

Recapitulation

Before we start, let's recapitulate what we have learned in the previous course. Use the links below to refresh your memory. Or go straigth to the Introduction to Programming Course.

Structs

Structs in C++ are a way to represent a collection of data packed sequentially into a single data structure.

struct Enemy
+{
+    double health; 
+    float x, y, z;
+    int score;
+};
+

The code above defines a type named as Enemy. This type has members(fields) named health, score with different types, and x, y and z with the same type.

struct Enemy
+{
+    double health; // 8 bytes
+    float x, y, z; // 4 bytes each. 12 bytes total
+    int score; // 4 bytes
+};
+

The memory usage of a struct is defined roughly by the sum of the memory usage of its members. Assuming the default sizing of common data types in C++, in the example above, the struct will use 8 bytes for the double, 3 times 4 bytes for the floats and 4 bytes for the int. The total memory usage for the struct will be 20 bytes.

Data Alignment

The memory usage of a struct is not always exactly the sum of the memory usage of its members. The compiler may add padding bytes between the members of a struct to align the data in memory. This is done to improve the performance of the program. If you are programming in a multi-platform, cross-platform or even using different compilers, the size of the struct may vary even if it is the same.

struct InneficientMemoryLayoutExample
+{
+    char a;
+    int b;
+    char c;
+    char d;
+    char e;
+};
+

The struct above stores a total of 8 bytes of data, but the compiler allocates more. It will add 3 padding bytes between the int and the last char to align the data with biggest field in the struct. In this case, the total memory usage of the struct will be 12 bytes instead of the expected 8.

struct InneficientMemoryLayoutExample
+{
+    char a; // 1 byte
+    // compiler will add 3 padding bytes here
+    int b; // 4 bytes
+    char c; // 1 byte
+    char d; // 1 bytes
+    char e; // 1 byte
+    // compiler will add 1 padding byte here
+}; // total of 12 bytes allocated for this layout
+

You might think C++ compilers are smart and reorder the fields for us, but in order to maintain compatibility to C, the standard forbids it. So if you want to pack more data you will have to reorder the layout manually to something like this:

struct EfficientMemoryLayoutExample
+{
+    int b; // 4 bytes
+    char a; // 1 byte
+    char c; // 1 byte
+    char d; // 1 bytes
+    char e; // 1 byte
+}; // total of 8 bytes allocated for this layout
+

Alternatively you can use the #pragma pack directive to tell the compiler to pack the data in memory without padding bytes. But be aware that it will force the compiler to do more memory operations to get the data, thus it will slow your software. Besides that, pragma pack may not work in all compilers.

#pragma pack(push, 1) // push current alignment to stack and set alignment to 1 byte boundary
+struct EfficientMemoryLayoutExample
+{
+    char a; // 1 byte
+    int b; // 4 bytes
+    char c; // 1 byte
+    char d; // 1 bytes
+    char e; // 1 byte
+};
+#pragma pack(pop)
+

Bitfields

If you really want to specify the layout location for each field and want to be sure that in will work on every compiler/platform, you will have to specify the number of bits each field will be able to use. This is called bitfields. But if you follow this path, you will have to be aware of the endianness of the platform you are working on.

struct BitfieldExample
+{
+    char a : 8; // 8 bits = 1 byte
+    int b : 32; // 32 bits = 4 bytes
+    char c : 8; // 8 bits = 1 byte
+    char d : 8; // 8 bits = 1 byte
+    char e : 8; // 8 bits = 1 byte
+}; // total of 8 bytes allocated for this layout
+

Another nice application of bitfields is when you do not want to use the full range of a data type. For example, if you want to store a number between 0 and 7, as in a chess game or other board games, you can use a char and waste 5 bits or you can use a bitfield and use only 3 bits.

struct BitfieldExample
+{
+    char row : 3; // 3 bits
+    char column : 3; // 3 bits
+    unsigned int state : 2; // 2 bit. will store 0, 1, 2 or 3
+}; // total of 1 byte allocated for this layout
+
\ No newline at end of file diff --git a/advanced/01-introduction/setup/index.html b/advanced/01-introduction/setup/index.html new file mode 100644 index 00000000..9ef85615 --- /dev/null +++ b/advanced/01-introduction/setup/index.html @@ -0,0 +1,12 @@ + Setup - Awesome GameDev Resources
Skip to content

Advanced Programming

Estimated time to read: 11 minutes

Table of Contents

Safe and welcoming space

TLDR: Be nice to each other, and don't copy code from the internet.

Some assignments can be hard, and you may feel tempted to copy code from the internet. Don't do it. You will only hurt yourself. You will learn nothing, and you will be caught. Once you get caught, you will be reported to the Dean of Students for academic dishonesty.

If you are struggling with an assignment, please contact me in my office-hours, or via discord. I am really slow at answering emails, so do it so only if something needs to be official. Quick questions are better asked in discord by me or your peers.

Privacy and FERPA Compliance

FERPA WAIVER

If you are willing to share your final project publicly, you MUST SIGN this FERPA waiver.

via GIPHY

This class will use github extensively, in order to keep you safe, we will use private repositories. This means that only you and me will be able to see your code. In your final project, you must share it with your pair partner, and with me.

Activities

TLDR: there is no TLDR, read the whole thing.

via GIPHY

Setup Github repository

Gitkraken

Optionally you might want to use GitKraken as your git user interface. Once you open it for the first time, signup using your github account with student pack associated. Install Gitkraken

  1. Signup on github and apply for Github Student Pack. Apply for Student Pack
  2. Send me your github username in class, so I will share the assignment repository with you;
  3. Create a private repository by clicking "use as template" the repository InfiniBrains/csi240 or Create CSI240 repository
  4. Share your repository with me. Click on settings, then collaborators, and add me as a collaborator. My username: @tolstenko
  5. Clone your repository to your computer. You can use the command line, or any Git GUI tool. I recommend GitKraken

Setup your IDE

Other IDEs

Optionally you might want to use any other IDE, such as Visual Studio, VSCode, XCode, NeoVim or any other, but I will not be able to help you with that.

I will use CLion in class, and I recommend you to use it as well so you can follow the same steps as me. It is free for students. And it works on Windows, Mac and Linux.

  1. Apply for student license for JetBrains or Apply Form
  2. You can install CLion only or install CLion via their Install Toolbox
  3. Open CLion for the first time, and login with your JetBrains account you created earlier;

Setup your Assignments project

Common problems

Your machine might not have git on your path. If so, install it from git-scm.com and make sure you tick the option to add git to your PATH.

  1. Open your IDE, and click on "Open Project";
  2. Select the folder where you cloned your repository;
  3. Click on "Open as Project" or "Open as CMake Project";
  4. Wait for CMake to finish generating the project;
  5. On the top right corner, select the target you want to run/debug;

Check Github Actions

Github Actions

Github Actions is a CI/CD tool that will run your tests automatically when you push your code to github. It will also run your tests when you create a pull request. It is a great tool to make sure your code is always working.

You might want to explore the folder .github/workflows to see how it works, but you don't need to change anything there.

tests-meme.png

Every commit you push to your repository will be automatically tested through Github Actions. You can see the results of the tests by clicking on the "Actions" tab on your repository.

  1. Go to your repository on github;
  2. Click on the "Actions" tab;
  3. Click on the "Build and Test" action;
  4. Click on the latest commit;
  5. On the jobs panel, Click on the assignment you want to see the results;
  6. Read the logs to see if your tests passed or failed;
  7. It is your job to read the README.md from every assignment and fulfill the requirements;
  8. You can run/debug the tests locally by targeting the assignmentXX_tests;

Homework

via GIPHY

  1. Read the Syllabus fully. Pay attention to the schedule, outcomes and grading;
  2. Do all assignments on Canvas, specially the git training;
\ No newline at end of file diff --git a/advanced/02-oop/img.png b/advanced/02-oop/img.png new file mode 100644 index 00000000..2586f10c Binary files /dev/null and b/advanced/02-oop/img.png differ diff --git a/advanced/02-oop/img_1.png b/advanced/02-oop/img_1.png new file mode 100644 index 00000000..a3c05740 Binary files /dev/null and b/advanced/02-oop/img_1.png differ diff --git a/advanced/02-oop/img_2.png b/advanced/02-oop/img_2.png new file mode 100644 index 00000000..d7928a9f Binary files /dev/null and b/advanced/02-oop/img_2.png differ diff --git a/advanced/02-oop/index.html b/advanced/02-oop/index.html new file mode 100644 index 00000000..0675d7fd --- /dev/null +++ b/advanced/02-oop/index.html @@ -0,0 +1,190 @@ + OOP - Awesome GameDev Resources
Skip to content

Introduction to Object-Oriented Programming

Estimated time to read: 14 minutes

C++ in a language that keeps evolving and adding new features. The language is now a multi-paradigm language, which means that it supports different programming styles, and we are going to cover the Object-Oriented Programming (OOP) paradigm in this course.

img.png

What is OOP?

Object-Oriented Programming is a paradigm that encapsulate data and their interactions into a single entity called object. The object is an instance of a class, which is a blueprint for the object. The class defines the data and the operations that can be performed on the data.

Class declaration

Here goes a simple declaration of a class Greeter:

Greeter.h
#include <string>
+class Greeter {
+    std::string name; // this is a private attribute
+public:
+    Greeter(std::string username) {
+        name = username;
+    }
+    void Greet(){
+        std::cout << "Hello, " << name << "!" << std::endl;
+    }
+};
+
main.cpp
#include "Greeter.h"
+int main() {
+    Greeter greeter("Stranger");
+    greeter.Greet();
+}
+

If you run this code, the output will be:

Hello, Stranger!
+

Here goes a rework of the previous example using more robust concepts and multiple files:

Greeter.h
#include <string>
+class Greeter {
+    // class members are private by default
+    std::string name;
+public:
+    // public constructor
+    // explicit to avoid implicit conversions
+    // const to avoid modification
+    // ref to avoid copying
+    explicit Greeter(const std::string& name);
+    ~Greeter(); // public destructor
+    void Greet(); // public method
+};
+
Greeter.cpp
#include "Greeter.h"
+#include <iostream>
+// :: is the scope resolution operator
+Greeter::Greeter(const std::string& name): name(name) {
+    std::cout << "I exist and I received " << name << std::endl;
+}
+Greeter::~Greeter() {
+    std::cout << "Goodbye, " << name << "!" << std::endl;
+}
+void Greeter::Greet() {
+    std::cout << "Hello, " << name << "!" << std::endl;
+}
+
main.cpp
#include "Greeter.h"
+int main() {
+    Greeter greeter("Stranger");
+    greeter.Greet();
+    // cannot use greeter.name because it is private
+}
+

Advantages of OOP

img_2.png

Modularity

Classes can be used it in different parts of your code. You can even create libraries and share it with other people.

Encapsulation

Classes can hide their implementation details from the developer. The developer only needs the header file to use the class which acts as an interface.

Inheritance

Classes can inherit from other classes. This allows you to reuse code and extend the functionality of existing classes expanding the original behavior.

We will cover details about inheritance in another moment.

Polymorphism

By its roots, the word polymorphism means "many forms". It can be applied to classes in many different aspects:

  • Function overload: Class can have multiple definitions of the same member function, and the compiler will choose the correct one based on the type of the object.
  • Casting: Classes can be casted to other classes. This allows you to treat an object of a derived class as an object of its base class, or more complex behaviors;

We will cover details about polymorphism in another moment.

Class internals

img_1.png

Constructors

Constructors are special methods, they are called when an object is created, and don't return anything. They are used to initialize the object. If you don't define a constructor, the compiler will generate a default constructor for you.

class Greeter {
+    std::string name;
+public:
+    Greeter(const std::string& name) {
+        this->name = name;
+    }
+};
+

Default constructor

A default constructor should be one of the following: - A constructor that can be called with no arguments; - A constructor that can be called with default arguments;

class Greeter {
+    std::string name;
+public:
+    // Default constructor
+    Greeter() {
+        this->name = "Stranger";
+    }
+};
+

or

class Greeter {
+    std::string name;
+public:
+    Greeter(const std::string& name = "Stranger") {
+        this->name = name;
+    }
+};
+

If no constructor is defined, the compiler will generate a default constructor for you.

Copy constructor

A copy constructor is a constructor that takes a reference to an object of the same type as the class. It is used to initialize an object with another object of the same type.

class Greeter {
+    std::string name;
+public:
+    Greeter(const Greeter& other) {
+        this->name = other.name;
+    }
+};
+

Move constructor

A move constructor is a constructor that takes a reference to an object of the same type as the class. It is used to initialize an object with another object of the same type. The difference between a copy constructor and a move constructor is that the move constructor takes ownership of the data from the other object, while the copy constructor copies the data from the other object.

class Greeter {
+    std::string name;
+public:
+    Greeter(Greeter&& other) {
+        this->name = std::move(other.name);
+    }
+};
+

Explicit constructor

A constructor that can be called with only one argument is called an explicit constructor. This means that the compiler will not allow implicit conversions to happen.

Explicit constructors are useful to avoid unexpected behavior when calling the constructor.

class Greeter {
+    std::string name;
+public:
+    explicit Greeter(const std::string& name) {
+        this->name = name;
+    }
+};
+

Destructors

Destructors are special methods, they are called when an object is destroyed.

Following the single responsibility principle, the destructor should be responsible for cleaning up the dynamically allocated data the object is holding.

If no destructor is defined, the compiler will generate a default destructor for you that might not be enough to clean up the data.

class IntContainer {
+    int* data;
+    // other members / methods
+public:
+    // other members / methods
+    ~IntContainer() {
+        // deallocate data
+        delete[] data;
+    }
+};
+

Private and Public

By default, all members of a class are private. This means that they can only be accessed by the class itself. If you want to expose a member to the outside world, you have to declare it as public.

class Greeter {
+    std::string name; // private by default
+public:
+    Greeter(const std::string& name) {
+        this->name = name;
+    }
+};
+

Dealing with private members

If your data is private, but you need to provide access or modify it, you can create public methods to do that.

  • Accessors: are the type of public methods that provides readability of the specific content;
  • Mutators: are the type of public methods that provides writability of the specific content;
class User {
+    std::string name; // private by default
+public:
+    explicit User(const std::string& name) {
+        this->name = name;
+    }
+    // Accessor that returns a copy
+    // const at the end means that this function does not modify the object
+    std::string GetName() const {
+        return name;
+    }
+
+    // Accessor that returns a const reference
+    // returning ref does not use extra memory
+    // returning const the caller cannot modify the object
+    const std::string& GetNameRef() const {
+        return name;
+    }
+
+    // Mutator
+    void SetName(const std::string& name) {
+        this->name = name;
+    }
+};
+

Operator "." and "->"

When you have an object, you can access its members using the dot operator .. If you have a pointer to an object, you can access its members using the arrow operator ->.

int main(){
+    Greeter greeter("Stranger");
+    greeter.Greet(); // dot operator
+    Greeter* greeterPtr = &greeter;
+    greeterPtr->Greet(); // arrow operator
+}
+

Scope resolution operator "::"

It can be used to access members of a class that are not part of an object. It can also be used to access members of a namespace.

namespace MyNamespace {
+    int myInt = 0;
+    class MyClass {
+    public:
+        // static vars are allocated in the data segment instead of the stack
+        static inline const int myInt = 1;
+        int myOtherInt = 2;
+    };
+    void MyFunction() {
+        int myInt = 3;
+        std::cout << myInt << std::endl; // 3
+        std::cout << MyNamespace::myInt << std::endl; // 0
+        std::cout << MyNamespace::MyClass::myInt << std::endl; // 1
+        std::cout << MyClass::myInt << std::endl; // 1
+        std::cout << MyNamespace::MyClass().myOtherInt << std::endl; // 2
+    }
+}
+

Differences between class and struct

In C++, the only difference between a class and a struct is the default access level. In a class, the default access level is private, while in a struct, the default access level is public.

class MyClass {
+    int myInt; // private by default
+public:
+    MyClass(int myInt) {
+        this->myInt = myInt;
+    }
+    int GetMyInt() const {
+        return myInt;
+    }
+};
+
+struct MyStruct {
+    // to achieve the same behavior as the class above
+private:
+    int myInt; 
+public:
+    MyStruct(int myInt) {
+        this->myInt = myInt;
+    }
+    int GetMyInt() const {
+        return myInt;
+    }
+};
+
\ No newline at end of file diff --git a/advanced/03-pointers/index.html b/advanced/03-pointers/index.html new file mode 100644 index 00000000..b7ea4ddb --- /dev/null +++ b/advanced/03-pointers/index.html @@ -0,0 +1,251 @@ + Pointers - Awesome GameDev Resources
Skip to content

Pointers

Estimated time to read: 15 minutes

Pointer arithmetic

Pointer arithmetic is the arithmetic of pointers. You can call operators +, -, ++, --, +=, and -= on pointers passing an integer as the right operand.

#include <iostream>
+
+int main() {
+  int arr[] = {1, 2, 3, 4, 5};
+  int* ptr = arr; // ptr points to the first element of the array
+  std::cout << *ptr << std::endl; // prints 1
+  ptr++; // ptr points to the second element of the array
+  std::cout << *ptr << std::endl; // prints 2
+  ptr += 2; // ptr points to the fourth element of the array
+  std::cout << *ptr << std::endl; // prints 4
+  ptr--; // ptr points to the third element of the array
+  std::cout << *ptr << std::endl; // prints 3
+  std::cout << *(ptr + 1) << std::endl; // prints 4
+  std::cout << *(arr + 1) << std::endl; // prints 2
+  return 0;
+}
+

Dynamic arrays

Dynamic arrays are arrays that can be allocated and deallocated at runtime. They are useful when the size of the array is not known at compile time.

#include <iostream>
+
+int main() {
+  int n;
+  std::cin >> n; // read the size of the array
+  int* arr = new int[n]; // dynamic arry allocation
+  for (int i = 0; i < n; i++) {
+    arr[i] = i; // fill the array with values
+  }
+  for (int i = 0; i < n; i++) {
+    std::cout << arr[i] << " ";
+  }
+  std::cout << std::endl;
+  delete[] arr; // return the memory to the system
+  return 0;
+}
+

In the example above, we read the size of the array from the standard input, allocate the array, fill it with values, print the values, and then deallocate the array.

Array decay

When an array is passed to a function, it decays into a pointer to its first element. This means that the size of the array is lost, and the function cannot know the size of the array.

#include <iostream>
+
+// another possible declaration: void print_array(int* arr, int n) {
+void print_array(int arr[], int n) {
+  for (int i = 0; i < n; i++) {
+    std::cout << arr[i] << " ";
+  }
+  std::cout << std::endl;
+}
+
+int main() {
+  int arr[] = {1, 2, 3, 4, 5};
+  print_array(arr, 5);
+  return 0;
+}
+

So every time you pass an array to a function, you should also pass the size of the array.

Matrix

A matrix is a two-dimensional array. It can be represented as an array of arrays;

#include <iostream>
+
+int main() {
+  int n, m;
+  std::cin >> n >> m; // read the size of the matrix
+  int** matrix = new int*[n]; // allocate the rows
+  // allocate the columns
+  for (int i = 0; i < n; i++) {
+    matrix[i] = new int[m]; 
+  }
+  // fill the matrix with values
+  for (int i = 0; i < n; i++) {
+    for (int j = 0; j < m; j++) {
+      matrix[i][j] = i * m + j; 
+    }
+  }
+  // print the matrix
+  for (int i = 0; i < n; i++) { 
+    for (int j = 0; j < m; j++) {
+      std::cout << matrix[i][j] << " ";
+    }
+    std::cout << std::endl;
+  }
+  for (int i = 0; i < n; i++) {
+    delete[] matrix[i]; // deallocate the columns
+  }
+  delete[] matrix; // deallocate the rows
+  return 0;
+}
+

In the example above, we read the size of the matrix from the standard input, allocate the rows, allocate the columns, fill the matrix with values, print the matrix, and then deallocate the matrix.

You can extend the concept of a matrix to a three-dimensional array, and so on.

Matrix linearization

A matrix can be linearized into a one-dimensional array. This is useful when you want to be cache friendly.

#include <iostream>
+
+int main() {
+  int n, m;
+  std::cin >> n >> m; // read the size of the matrix
+  int* matrix = new int[n * m]; // allocate the matrix
+  // fill the matrix with values
+  for (int i = 0; i < n; i++) {
+    for (int j = 0; j < m; j++) {
+      matrix[i * m + j] = i * m + j; 
+    }
+  }
+  // print the matrix
+  for (int i = 0; i < n; i++) {
+    for (int j = 0; j < m; j++) {
+      std::cout << matrix[i * m + j] << " ";
+    }
+    std::cout << std::endl;
+  }
+  delete[] matrix; // deallocate the matrix
+  return 0;
+}
+

Passing parameters

The common way of passing parameter is a copy of the value. This is not efficient for large objects ex.: the contents of a huge text file.

#include <iostream>
+
+void printAndIncrease(int x) { // x is a copy of the value
+  std::cout << x << std::endl; 
+  x++; // the copy is increased but the outer variable is not
+}
+
+int main() {
+  int x = 42;
+  printAndIncrease(x); // prints 42
+  printAndIncrease(x); // prints 42
+  return 0;
+}
+

You can pass a reference to the variable, so the function can modify the outer variable.

#include <iostream>
+
+void swap(int& a, int& b) { // a and b are references to the variables
+  int temp = a;
+  a = b;
+  b = temp;
+}
+
+int main() {
+  int x = 42, y = 24;
+  swap(x, y);
+  std::cout << x << " " << y << std::endl; // prints 24 42
+  return 0;
+}
+

You can also pass a pointer to the variable, so the function can modify the outer variable.

#include <iostream>
+
+void swap(int* a, int* b) { // a and b are pointers to the variables
+  int temp = *a;
+  *a = *b;
+  *b = temp;
+}
+
+int main() {
+  int x = 42, y = 24;
+  swap(&x, &y);
+  std::cout << x << " " << y << std::endl; // prints 24 42
+  return 0;
+}
+

As you can see passing as reference is more readable and less error-prone than passing as pointer. But both are valid, and you should be aware of both.

Smart pointers

Smart pointers are wrappers to raw pointers that manage the memory automatically. They are useful to avoid memory leaks and dangling pointers.

You can implement a naive smart pointer using a struct that will deallocate when it goes out of scope.

#include <iostream>
+
+template <typename T>
+struct SmartPointer {
+  T* ptr;
+  SmartPointer(T* ptr) : ptr(ptr) {}
+  ~SmartPointer() {
+    delete ptr;
+  }
+};
+
+int main() {
+  SmartPointer<int> sp(new int(42));
+  std::cout << *sp.ptr << std::endl; // prints 42
+  return 0;
+} // when sp goes out of scope, the destructor is called and the memory is deallocated
+

Note

The Standard Library implements 3 types of smart pointers: std::unique_ptr, std::shared_ptr, and std::weak_ptr.

std::unique_ptr

The std::unique_ptr is a smart pointer that owns the object exclusively. It is useful when you want to transfer the ownership of the object to another smart pointer.

#include <iostream>
+#include <memory>
+
+int main() {
+  // make_unique is a C++14 feature
+  std::unique_ptr<int> up = std::make_unique<int>(42);
+  // or you can just use:
+  // std::unique_ptr<int> up(new int(42));
+  std::cout << *up << std::endl; // prints 42
+  return 0;
+} // when up goes out of scope, the destructor is called and the memory is deallocated
+

std::shared_ptr

The std::shared_ptr is a smart pointer that owns the object with shared ownership. It is useful when you want to share the ownership of the object with another smart pointer. It is deallocated when the last std::shared_ptr goes out of scope.

#include <iostream>
+#include <memory>
+
+int main() {
+  std::shared_ptr<int> sp1 = std::make_shared<int>(42);
+  std::shared_ptr<int> sp2 = sp1;
+  std::cout << *sp1 << " " << *sp2 << std::endl; // prints 42 42
+  return 0;
+} // when sp1 and sp2 goes out of scope, the destructor is called and the memory is deallocated
+

std::weak_ptr

The std::weak_ptr is a smart pointer that owns the object with weak ownership. It is useful when you want to observe the object without owning it. It is deallocated when the last std::shared_ptr goes out of scope.

Note

std::weak_ptr will help solve the circular reference problem.

#include <iostream>
+#include <memory>
+
+int main() {
+  std::shared_ptr<int> sp1 = std::make_shared<int>(42);
+  std::weak_ptr<int> wp = sp1;
+  // in order to use a weak pointer, you have to lock it to tell others that you are using it
+  std::cout << *sp1 << " " << *wp.lock() << std::endl; // prints 42 42
+  return 0;
+} // when sp1 goes out of scope, the destructor is called and the memory is deallocated
+

Exaple of a circular reference:

#include <iostream>
+#include <memory>
+
+struct A;
+struct B;
+
+struct A {
+  std::shared_ptr<B> b;
+  ~A() {
+    std::cout << "A destructor" << std::endl;
+  }
+};
+
+struct B {
+  std::shared_ptr<A> a;
+  ~B() {
+    std::cout << "B destructor" << std::endl;
+  }
+};
+
+int main() {
+  std::shared_ptr<A> a = std::make_shared<A>();
+  std::shared_ptr<B> b = std::make_shared<B>();
+  a->b = b;
+  b->a = a;
+  return 0;
+} // memory is leaked: the destructors are not called, and the memory is not deallocated
+

You can solve the circular reference problem using std::weak_ptr.

#include <iostream>
+#include <memory>
+
+struct A;
+struct B;
+
+struct A {
+  std::shared_ptr<B> b;
+  ~A() {
+    std::cout << "A destructor" << std::endl;
+  }
+};
+
+struct B {
+  std::weak_ptr<A> a;
+  ~B() {
+    std::cout << "B destructor" << std::endl;
+  }
+};
+
+int main() {
+  std::shared_ptr<A> a = std::make_shared<A>();
+  std::shared_ptr<B> b = std::make_shared<B>();
+  a->b = b;
+  b->a = a;
+  return 0;
+} // when a and b goes out of scope, the destructors are called and the memory is deallocated
+
\ No newline at end of file diff --git a/advanced/04-operators/img.png b/advanced/04-operators/img.png new file mode 100644 index 00000000..9a48807f Binary files /dev/null and b/advanced/04-operators/img.png differ diff --git a/advanced/04-operators/index.html b/advanced/04-operators/index.html new file mode 100644 index 00000000..240b5400 --- /dev/null +++ b/advanced/04-operators/index.html @@ -0,0 +1,164 @@ + Operators - Awesome GameDev Resources
Skip to content

C++ custom Operators

Estimated time to read: 7 minutes

In C++ you can define custom operators for your class using operator overloading. This allows you to define the behavior of operators when applied to objects of your class.

You might want to implement some of the following operators for your class:

  • arithmetic operators: +, -, *, /, %
  • comparison operators: ==, !=, <, >, <=, >=
  • spaceship operator: <=> (C++20)
  • unary operators: +, -, *, &, !, ~, ++, --
  • compound assignment operators: +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=
  • prefix increment and decrement operators: ++, --
  • postfix increment and decrement operators: ++, --
  • subscript operator: []
  • stream insertion and extraction operators: <<, >>
#include <iostream>
+
+struct Vector2i {
+  int x, y;
+  Vector2i() : x(0), y(0) {}
+  Vector2i(int x, int y) : x(x), y(y) {}
+  // arithmetic operators
+  Vector2i operator+(const Vector2i& other) const {
+    return {x + other.x, y + other.y};
+  }
+  Vector2i operator-(const Vector2i& other) const {
+    return {x - other.x, y - other.y};
+  }
+  Vector2i operator*(int scalar) const {
+    return {x * scalar, y * scalar};
+  }
+  Vector2i operator/(int scalar) const {
+    return {x / scalar, y / scalar};
+  }
+  Vector2i operator*(const Vector2i& other) const {
+    return {x * other.x, y * other.y};
+  }
+  Vector2i operator/(const Vector2i& other) const {
+    return {x / other.x, y / other.y};
+  }
+  // comparison operators
+  bool operator==(const Vector2i& other) const {
+    return x == other.x && y == other.y;
+  }
+  bool operator!=(const Vector2i& other) const {
+    return !(*this == other);
+  }
+  // spaceship operator C++20
+  // useful when you want to compare two objects or
+  //   use it in std::map or std::set
+  auto operator<=>(const Vector2i& other) const {
+    if (x < other.x && y < other.y) return -1;
+    if (x == other.x && y == other.y) return 0;
+    return 1;
+  }
+
+  // unary operators
+  Vector2i operator-() const {
+    return Vector2i(-x, -y);
+  }
+  // compound assignment operators
+  Vector2i& operator+=(const Vector2i& other) {
+    x += other.x;
+    y += other.y;
+    return *this;
+  }
+  Vector2i& operator-=(const Vector2i& other) {
+    x -= other.x;
+    y -= other.y;
+    return *this;
+  }
+  Vector2i& operator*=(int scalar) {
+    x *= scalar;
+    y *= scalar;
+    return *this;
+  }
+  Vector2i& operator/=(int scalar) {
+    x /= scalar;
+    y /= scalar;
+    return *this;
+  }
+  // prefix increment and decrement operators
+  Vector2i& operator++() {
+    x++;
+    y++;
+    return *this;
+  }
+  Vector2i& operator--() {
+    x--;
+    y--;
+    return *this;
+  }
+  // postfix increment and decrement operators
+  Vector2i operator++(int) {
+    Vector2i temp = *this;
+    ++*this;
+    return temp;
+  }
+  Vector2i operator--(int) {
+    Vector2i temp = *this;
+    --*this;
+    return temp;
+  }
+  // subscript operator
+  int& operator[](int index) {
+    return index == 0 ? x : y;
+  }
+  // stream insertion operator
+  friend std::ostream& operator<<(std::ostream& stream, const Vector2i& vector) {
+    return stream << vector.x << ", " << vector.y;
+  }
+  // stream extraction operator
+  friend std::istream& operator>>(std::istream& stream, Vector2i& vector) {
+    return stream >> vector.x >> vector.y;
+  }
+};
+

img.png

Special operators

You can create special operators for your class such as:

  • () operator: function call operator
  • -> operator: member access operator
  • 'new' and 'delete' operators: memory allocation and deallocation operators

A nice usecase for function call operator is to create a functor, a class that acts like a function.

#include <iostream>
+
+struct Adder {
+  int operator()(int a, int b) const {
+    return a + b;
+  }
+};
+
+int main() {
+  Adder adder;
+  std::cout << adder(1, 2) << std::endl; // 3
+  return 0;
+}
+

The -> operator is used to overload the member access operator. It is used to define the behavior of the arrow operator -> when applied to objects of your class.

#include <iostream>
+
+struct Pointer {
+  int value;
+  int* operator->() {
+    return &value;
+  }
+};
+
+int main() {
+  Pointer pointer;
+  pointer.value = 42;
+  std::cout << *pointer << std::endl; // 42
+  return 0;
+}
+

You might want to overload the new and delete operators to define the behavior of memory allocation and deallocation for your class. Specially to track memory usage or to implement a custom memory pool. Or even overload it globally to track memory usage for the whole program.

#include <iostream>
+#include <cstdlib>
+
+// declare the alloc counter
+int alloc_counter = 0;
+
+void* operator new(std::size_t size) {
+  alloc_counter ++;
+  return std::malloc(size);
+}
+
+void operator delete(void* ptr) noexcept {
+  std::free(ptr);
+  alloc_counter--;
+}
+
+int main() {
+  int* ptr = new int;
+  std::cout << "alloc_counter: " << alloc_counter << std::endl; // 1
+  delete ptr;
+  std::cout << "alloc_counter: " << alloc_counter << std::endl; // 0
+  return 0;
+}
+
\ No newline at end of file diff --git a/advanced/CMakeLists.txt b/advanced/CMakeLists.txt new file mode 100644 index 00000000..632aa2fb --- /dev/null +++ b/advanced/CMakeLists.txt @@ -0,0 +1,7 @@ +subdirlist(advcpp_chapters ${CMAKE_CURRENT_SOURCE_DIR}) + +foreach(subdir ${advcpp_chapters}) + if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${subdir}/CMakeLists.txt") + add_subdirectory(${subdir}) + endif() +endforeach() \ No newline at end of file diff --git a/advanced/index.html b/advanced/index.html new file mode 100644 index 00000000..14a0a28f --- /dev/null +++ b/advanced/index.html @@ -0,0 +1,12 @@ + Advanced Programming - Awesome GameDev Resources
Skip to content

Advanced Programming

Estimated time to read: 9 minutes

This course builds on the content from Introduction to Programming. Students study the Object Oriented Programming (OOP) Paradigm with topics such as objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism. Students examine and use structures such as arrays, structs, classes, and linked lists to model complex information. Pointers and dynamic memory allocation are covered, as well as principles such as overloading and overriding. Students work to solve problems by selecting implementation options from competing alternatives.

Requirements

Textbook

  • C++ Early Objects, 10th Edition, Gaddis, Walters, Muganda, Pearson, 2019. ISBN 978-0135235003

Student-centered Learning Outcomes

Bloom's Taxonomy

Bloom's Taxonomy on Learning Outcomes

Upon completion of the Advanced Programming course in C++, students should be able to:

  • Articulate key concepts of Object-Oriented Programming (OOP), including objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism.
  • Exhibit a comprehensive understanding of the OOP paradigm and its fundamental principles.
  • Differentiate between various structures (arrays, structs, classes, and linked lists) and proficiently apply them in modeling complex information.
  • Apply OOP principles effectively to design and implement solutions for real-world problems.
  • Utilize Pointers and Dynamic Memory Allocation.
  • Effectively employ pointers and dynamic memory allocation in C++ programming.
  • Analyze and evaluate competing alternatives for implementation options when solving programming problems. Break down complex problems into manageable components using OOP concepts.
  • Evaluate the effectiveness of different implementation strategies in addressing programming challenges.
  • Critically assess the advantages and disadvantages of using structures like arrays, structs, classes, and linked lists in specific scenarios.
  • Develop solutions for programming challenges by integrating and synthesizing various OOP principles.
  • Implement advanced programming concepts, such as overloading and overriding, to enhance code functionality.

Schedule

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Date Event
Jan 16 Classes Begin
Jan 16 - 22 Add/Drop
Feb 26 - March 1 Midterms
March 11 - March 15 Spring Break
March 25 - April 5 Registration for Fall Classes
April 5 Last Day to Withdraw
April 8 - 19 Idea Evaluation
April 12 No Classes - College remains open
April 26 Last Day of Classes
April 29 - May 3 Finals
May 11 Commencement
  • 🔰 Review


    • Week 1. 2024/01/15
    • Topic:
      • Review: variables, decision making, iteration, functions, strings, and arrays. Structs and 2D arrays
      • Setup: Github, CLion, Github Actions
  • 📊 Introduction to OOP


  • More about OOP


    • Week 3. 2024/01/29
    • Topic: Private member functions, object passing, object composition, structs and unions
  • Pointers


    • Week 4. 2024/02/05
    • Topic: Address operator, pointer variables, arrays and pointers, pointer math, pointers as function parameters and return types, dynamic memory allocation
  • Pointers continued


    • Week 5. 2024/02/12
    • Topic: this pointer, constant member functions, static members, friends, member-wise assignment, copy constructors
  • #⃣ Operators and more


    • Week 6. 2024/02/19
    • Topic: Operator overloading, type conversion operators, convert constructors, aggregation and composition, namespaces
  • ⚠ Midterms


    • Week 7. 2024/02/26
    • Topic: Midterms
  • Vectors, Arrays & Linked Lists_


    • Week 8. 2024/03/04
    • Topic: Vectors and arrays of objects: Linked lists, linked list operations
  • Break


    • Week 09. 2024/03/11
    • Topic: Spring BREAK. No classes this week.
  • Inheritance


    • Week 10. 2024/03/18
    • Topic: inheritance, protected members, constructors/destructors
  • Override


    • Week 11. 2024/03/25
    • Topic: inheritance, overriding base class functions
  • Polymorphism


    • Week 12. 2024/04/01
    • Topic: inheritance hierarchies, polymorphism and virtual member functions, abstract base classes and pure virtual functions
  • Exceptions, Templates and STL


    • Week 13. 2024/04/08
    • Topic: Exceptions, function and class templates, STL and STL containers, iterators
  • Stack and queue


    • Week 14. 2024/04/15
    • Topic: Stack and queue
  • 🧑‍🏭 Project Presentation


    • Week 15. 2024/04/22
    • Topic: Work sessions for final project
  • ⚠ Finals


    • Week 16. 2024/04/29
    • Topic: Finals Week
\ No newline at end of file diff --git a/algorithms/01-introduction/index.html b/algorithms/01-introduction/index.html new file mode 100644 index 00000000..83df60f1 --- /dev/null +++ b/algorithms/01-introduction/index.html @@ -0,0 +1,12 @@ + Introduction to Algorithms - Awesome GameDev Resources
Skip to content

Data-Structures & Algorithms

Estimated time to read: 11 minutes

Table of Contents

Safe and welcoming space

TLDR: Be nice to each other, and don't copy code from the internet.

Some assignments can be hard, and you may feel tempted to copy code from the internet. Don't do it. You will only hurt yourself. You will learn nothing, and you will be caught. Once you get caught, you will be reported to the Dean of Students for academic dishonesty.

If you are struggling with an assignment, please contact me in my office-hours, or via discord. I am really slow at answering emails, so do it so only if something needs to be official. Quick questions are better asked in discord by me or your peers.

Privacy and FERPA Compliance

FERPA WAIVER

If you are willing to share your final project publicly, you MUST SIGN this FERPA waiver.

via GIPHY

This class will use github extensively, in order to keep you safe, we will use private repositories. This means that only you and me will be able to see your code. In your final project, you must share it with your pair partner, and with me.

Activities

TLDR: there is no TLDR, read the whole thing.

via GIPHY

Setup Github repository

Gitkraken

Optionally you might want to use GitKraken as your git user interface. Once you open it for the first time, signup using your github account with student pack associated. Install Gitkraken

  1. Signup on github and apply for Github Student Pack. Apply for Student Pack
  2. Send me your github username in class, so I will share the assignment repository with you;
  3. Create a private repository by clicking "use as template" the repository InfiniBrains/csi281 or Create CSI281 repository
  4. Share your repository with me. Click on settings, then collaborators, and add me as a collaborator. My username: @tolstenko
  5. Clone your repository to your computer. You can use the command line, or any Git GUI tool. I recommend GitKraken

Setup your IDE

Other IDEs

Optionally you might want to use any other IDE, such as Visual Studio, VSCode, XCode, NeoVim or any other, but I will not be able to help you with that.

I will use CLion in class, and I recommend you to use it as well so you can follow the same steps as me. It is free for students. And it works on Windows, Mac and Linux.

  1. Apply for student license for JetBrains or Apply Form
  2. You can install CLion only or install CLion via their Install Toolbox
  3. Open CLion for the first time, and login with your JetBrains account you created earlier;

Setup your Assignments project

Common problems

Your machine might not have git on your path. If so, install it from git-scm.com and make sure you tick the option to add git to your PATH.

  1. Open your IDE, and click on "Open Project";
  2. Select the folder where you cloned your repository;
  3. Click on "Open as Project" or "Open as CMake Project";
  4. Wait for CMake to finish generating the project;
  5. On the top right corner, select the target you want to run/debug;

Check Github Actions

Github Actions

Github Actions is a CI/CD tool that will run your tests automatically when you push your code to github. It will also run your tests when you create a pull request. It is a great tool to make sure your code is always working.

You might want to explore the folder .github/workflows to see how it works, but you don't need to change anything there.

tests-meme.png

Every commit you push to your repository will be automatically tested through Github Actions. You can see the results of the tests by clicking on the "Actions" tab on your repository.

  1. Go to your repository on github;
  2. Click on the "Actions" tab;
  3. Click on the "Build and Test" action;
  4. Click on the latest commit;
  5. On the jobs panel, Click on the assignment you want to see the results;
  6. Read the logs to see if your tests passed or failed;
  7. It is your job to read the README.md from every assignment and fulfill the requirements;
  8. You can run/debug the tests locally by targeting the assignmentXX_tests;

Homework

via GIPHY

  1. Read the Syllabus fully. Pay attention to the schedule, outcomes and grading;
  2. Do all assignments on Canvas, specially the git training;
\ No newline at end of file diff --git a/algorithms/02-analysis/img.png b/algorithms/02-analysis/img.png new file mode 100644 index 00000000..b56c57b3 Binary files /dev/null and b/algorithms/02-analysis/img.png differ diff --git a/algorithms/02-analysis/img_1.png b/algorithms/02-analysis/img_1.png new file mode 100644 index 00000000..dc5c5f26 Binary files /dev/null and b/algorithms/02-analysis/img_1.png differ diff --git a/algorithms/02-analysis/img_2.png b/algorithms/02-analysis/img_2.png new file mode 100644 index 00000000..e78c5729 Binary files /dev/null and b/algorithms/02-analysis/img_2.png differ diff --git a/algorithms/02-analysis/img_3.png b/algorithms/02-analysis/img_3.png new file mode 100644 index 00000000..c7b2f0e0 Binary files /dev/null and b/algorithms/02-analysis/img_3.png differ diff --git a/algorithms/02-analysis/index.html b/algorithms/02-analysis/index.html new file mode 100644 index 00000000..1ce1507a --- /dev/null +++ b/algorithms/02-analysis/index.html @@ -0,0 +1,58 @@ + Algorithm Analysis - Awesome GameDev Resources
Skip to content

Algorthm Analysis

Estimated time to read: 8 minutes

Before starting, lets thin about 3 problems:

For an array of size \(N\), dont overthink. Just answer:

  1. How many iterations a loop run to find a specific number inside an array? (naively)
  2. How many comparisons should I make to find two numbers in an array that sum a specific target? (naively)
  3. List all different shuffled arrays we can make? (naively) ex for n==3 123, 132, 213, 231, 312, 321

How to measure an algorithm mathematically?

find a number in a vector
int find(vector<int> v, int target) {
+    // how many iterations?
+    for (int i = 0; i < v.size(); i++) {
+        // how many comparisons?
+        if (v[i] == target) { 
+        return i;
+        }
+    }
+    return -1;
+}
+
find two numbers sum in an array

vector<int> findsum2(vector<int> v, int target) {
+    // how many outer loop iterations?
+    for (int i = 0; i < v.size(); i++) {
+        // how many inner loop iterations?
+        for (int j = i+1; j < v.size(); j++) {
+            // how many comparisons?
+            if (v[i] + v[j] == target) {
+                return {i, j};
+            }
+        }
+    }
+    return {-1, -1};
+}
+
Check it out on leetcode. Can you solve it better?

Print all pormutations of an array
void generatePermutations(std::vector<int>& vec, int index) {
+    if (index == vec.size() - 1) {
+        // Print the current permutation
+        for (int num : vec) {
+            std::cout << num << " ";
+        }
+        std::cout << std::endl;
+        return;
+    }
+
+    // how many swaps for every recursive call?
+    for (int i = index; i < vec.size(); ++i) { 
+        // Swap the elements at indices index and i
+        std::swap(vec[index], vec[i]);
+
+        // Recursively generate permutations for the rest of the vector
+        // How deep this can go?
+        generatePermutations(vec, index + 1);
+
+        // Backtrack: undo the swap to explore other possibilities
+        std::swap(vec[index], vec[i]);
+    }
+}
+

Trying to be mathematicaly correct, the number of instructions the first one should be a function similar to this:

  1. \(f(n) = a*n + b\) : Where \(b\) is the cost of what runs before and after the main loop and \(a\) is the cost of the loop.
  2. \(f(n) = a*n^2 + b*n + c\) : Where \(c\) is the cost of what runs before and after the oter loop; \(b\) is the cost of the outer loop; and \(a\) is the cost of the inner loop;
  3. \(f(n) = a*n!\) : Where \(a\) is the cost of what runs before and after the outer loop;

To simplify, we remove the constants and the lower order terms:

  1. \(f(n) = n\)
  2. \(f(n) = n^2\)
  3. \(f(n) = n!\)

Difference between Big O vs Big Theta Θ vs Big Omega Ω Notations

img.png

Source: bigocheatsheet.com

Big O

  • Most used notation;
  • Upper bound;
  • "never worse than";
  • A real case cannot be faster than it;
  • \(0 <= func <= O\)

Big Theta Θ

  • Wrongly stated as average;
  • Theta is two-sided;
  • Tight bound between 2 constants of the same function
  • \(k1*Θ <= func <= k2*Θ\)
  • When \(N\) goes to infinite, it cannot be faster or slower than it;

Honorable mentions

  • Big Omega Ω: roughly the oposite of Big O;
  • Little o and Little Omega (ω). The same concept from the big, but exclude the exact bound;

img_1.png

Source: freecodecamp.com

Common Big Os

Logarithm

In computer science, when we say log, assume base 2, unless expressely stated;

Big O Name Example
O(1) Constant sum two numbers
O(lg(n)) Logarithmic binary search
O(n) Linear search in an array
O(n*lg(n)) Linearithmic Merge Sort
O(n^c) Polinomial match 2 sum
O(c^n) Exponential brute force password of size n
O(n!) factorial list all combinations

What is logarithm?

Log is the inverse of exponentiation. It is the number of times you have to multiply a number by itself to get another number.

\[ log_b(b^x) = x \]

In a binary search, we commonly divide the array in half (base 2), and check if the target is in the left or right half. Then we repeat the process until we find the target or we run out of elements.

linear-vs-binary-search-worst-case.gif

Source: mathwarehouse.com

Common data structures and algorithms

img_2.png

Source: bigocheatsheet.com

img_3.png

Source: bigocheatsheet.com

Common Issues and misconceptions

  • Big O and Theta are commonly mixed;
  • Hashtables: it is commonly assumed that queries on <map> or <set> being O(1); std:: <map> and <set> are not the ideal implementation! Watch this CppCon video for some deep level insights;
\ No newline at end of file diff --git a/algorithms/02-analysis/linear-vs-binary-search-worst-case.gif b/algorithms/02-analysis/linear-vs-binary-search-worst-case.gif new file mode 100644 index 00000000..40597199 Binary files /dev/null and b/algorithms/02-analysis/linear-vs-binary-search-worst-case.gif differ diff --git a/algorithms/03-dynamic-data/index.html b/algorithms/03-dynamic-data/index.html new file mode 100644 index 00000000..46a4eb28 --- /dev/null +++ b/algorithms/03-dynamic-data/index.html @@ -0,0 +1,107 @@ + Dynamic Data - Awesome GameDev Resources
Skip to content

Dynamic data

Estimated time to read: 7 minutes

In C++'s Standard Library, we have a bunch of data structures already implemented for us. But you need to understand what is inside it in order do ponder the best tool for your job. In this week we are going to cover Dynamic Arrays (equivalent of std::vector) and Linked Lists(equivalent of std::list) .

Dynamic Arrays

A dynamic array is a random access, variable-size list data structure that allows elements to be added or removed. It is supplied with standard libraries in many modern mainstream programming languages. Let's try to implement one here for the sake of teaching purposes;

template<typename T>
+struct Vector {
+private:
+  size_t _size;
+  size_t _capacity;
+  T* _data;
+public:
+  // constructors
+  Vector() : _size(0), _capacity(1), _data(new T[1]) {}
+  explicit Vector(size_t size) : _size(size), _capacity(size), _data(new T[size]) {}
+
+  // destructor
+  ~Vector() { delete[] _data;}
+
+  // accessors
+  size_t size() const { return _size; }
+  size_t capacity() const { return _capacity;}
+
+  // push_back takes care of resizing the array if necessary
+  // this insertion will amortize the cost of resizing
+  void push_back(const T& value) {
+    if (_size == _capacity) {
+      // growth factor of 2
+      _capacity = _capacity == 0 ? 1 : _capacity * 2;
+      // allocate new memory
+      T* new_data = new T[_capacity];
+      // copy the old data into the new memory
+      for (size_t i = 0; i < _size; ++i)
+          new_data[i] = _data[i];
+      // release the old memory
+      delete[] _data;
+      // update the data pointer
+      _data = new_data;
+    }
+    _data[_size++] = value;
+  }
+
+  // operator[] for read-write access
+  T& operator[](size_t index) { return _data[index]; }
+
+  // other functions
+  // ...
+};
+

With this boilerplate you should be able to implement the rest of the functions for the Vector class.

Linked Lists

A linked list is a linear access, variable-size list data structure that allows elements to be added or removed without the need of resizing. It is supplied with standard libraries in many modern mainstream programming languages. Let's try to build one here for the sake of teaching purposes;

// linkedlist
+template <typename T>
+struct LinkedList {
+private:
+    // linkedlist node
+    struct LinkedListNode {
+        T data;
+        LinkedListNode *next;
+        LinkedListNode(T data) : data(data), next(nullptr) {}
+    };
+
+    LinkedListNode *_head;
+    size_t _size;
+public:
+    LinkedList() : _head(nullptr), _size(0) {}
+
+    // delete all nodes in the linkedlist
+    ~LinkedList() {
+        while (_head) {
+            LinkedListNode *temp = _head;
+            _head = _head->next;
+            delete temp;
+        }
+    }
+
+    // _size
+    size_t size() const { return _size; }
+
+    // is it possible to make it O(1) instead of O(n)?
+    void push_back(T data) {
+        if (!_head) {
+            _head = new LinkedListNode(data);
+            _size++;
+            return;
+        }
+        auto* temp = _head;
+        while (temp->next)
+            temp = temp->next;
+        temp->next = new LinkedListNode(data);
+        _size++;
+    }
+
+    // operator[] for read-write access
+    T &operator[](size_t index) {
+        auto* temp = _head;
+        for (size_t i = 0; i < index; i++)
+            temp = temp->next;
+        return temp->data;
+    };
+
+    // other functions
+};
+

Homework

For both, implement the following functions:

  • T* find(const T& value): returns a pointer to the first occurrence of the value in the collection, or nullptr if the value is not found.
  • bool contains(const T& value): returns true if the value is found in the collection, false otherwise.
  • T& at(size_t index): returns a reference to the element at the specified index. If the index is out of bounds, throw an std::out_of_range exception.
  • void push_front(const T& value): adds a new element to the beginning of the collection.
  • improve push_back of the linkedlist to be O(1) instead of O(n);
  • void insert_at(size_t index, const T& value): inserts a new element at the specified index. If the index is out of bounds, throw an std::out_of_range exception.
  • void pop_front(): removes the first element of the collection.
  • void pop_back(): removes the last element of the collection. Is it possible to make it O(1) instead of O(n)?
  • void remove_all(const T& value): removes all occurrences of the value from the collection.
  • void remove_at(size_t index): removes the element at the specified index. If the index is out of bounds, throw an std::out_of_range exception.

Now compare the complexity of linked list and dynamic array for each of the functions you implemented and create a table. What is the best data structure for each use case? Why?

\ No newline at end of file diff --git a/algorithms/04-sorting/index.html b/algorithms/04-sorting/index.html new file mode 100644 index 00000000..0d164a59 --- /dev/null +++ b/algorithms/04-sorting/index.html @@ -0,0 +1,48 @@ + Sorting - Awesome GameDev Resources
Skip to content

Sorting algorithms

Estimated time to read: 6 minutes

Swap function

void swap(int &a, int &b) {
+  int temp = a;
+  a = b;
+  b = temp;
+}
+

Bubble sort

void bubble_sort(int arr[], int n) {
+  for (int i = 0; i < n; i++) { // n passes
+    for (int j = 0; j < n - 1; j++) { // linear pass
+      if (arr[j] > arr[j + 1]) { // swap if the element is greater than the next
+        swap(arr[j], arr[j + 1]);
+      }
+    }
+  }
+}
+

Is it possible to optimize the bubble sort algorithm? - The example above always pass from the beginning to the end of the array, but it is possible to stop the inner loop earlier if the right side of the array is already sorted. - You can count how many swaps you did in the inner loop, and if you did 0 swaps, you can stop the outer loop.

Questions:

  • What is the best case scenario for the bubble sort?
  • What is the worst case scenario for the bubble sort?
  • How many writes does the bubble sort do?
  • How many reads does the bubble sort do?
  • What is the time complexity of the bubble sort?
  • What is the space complexity of the bubble sort?

Selection sort

void selection_sort(int arr[], int n) {
+  for (int i = 0; i < n - 1; i++) { // n - 1 passes
+    int min_index = i; // the minimum element in the unsorted part of the array
+    for (int j = i + 1; j < n; j++) { // linear search
+      if (arr[j] < arr[min_index]) { // find the minimum element
+        min_index = j;
+      }
+    }
+    swap(arr[i], arr[min_index]); // swap the minimum element with the first element of the unsorted part
+  }
+}
+

Questions:

  • What is the best case scenario for the selection sort?
  • What is the worst case scenario for the selection sort?
  • How many writes does the selection sort do?
  • How many reads does the selection sort do?
  • What is the time complexity of the selection sort?
  • What is the space complexity of the selection sort?
  • What is the difference between the bubble sort and the selection sort?

Insertion sort

void insertion_sort(int arr[], int n) {
+  for (int i = 1; i < n; i++) { // n - 1 passes
+    int key = arr[i]; // the key element to be inserted in the sorted part of the array
+    int j = i - 1; // the last element of the sorted part of the array
+    while (j >= 0 && arr[j] > key) { // shift the elements to the right to make space for the key
+      arr[j + 1] = arr[j];
+      j--;
+    }
+    arr[j + 1] = key; // insert the key in the right position
+  }
+}
+

Questions:

  • What is the best case scenario for the insertion sort?
  • What is the worst case scenario for the insertion sort?
  • How many writes does the insertion sort do?
  • How many reads does the insertion sort do?
  • What is the time complexity of the insertion sort?
  • What is the space complexity of the insertion sort?
  • What is the difference between the bubble sort, the selection sort, and the insertion sort?

Discussion

  • Why is sorting typically taught towards the beginning of an algorithms course?
  • Why do we study algorithms like bubble sort that are almost never used in practice?
  • Can you describe a non-comparative sorting algorithm?
  • Which of these sorting algorithms is the best: bubble sort, selection sort, or insertion sort?

Table of differences between the sorting algorithms:

Algorithm Best case Worst case Time complexity Space complexity Swaps
Bubble O(n) O(n^2) O(N^2) O(1) O(n^2)
Selection O(n^2) O(n^2) O(N^2) O(1) O(n)
Insertion O(n) O(n^2) O(N^2) O(1) O(n^2)
\ No newline at end of file diff --git a/algorithms/05-divide-and-conquer/Merge-sort-example-300px.gif b/algorithms/05-divide-and-conquer/Merge-sort-example-300px.gif new file mode 100644 index 00000000..daa0c86b Binary files /dev/null and b/algorithms/05-divide-and-conquer/Merge-sort-example-300px.gif differ diff --git a/algorithms/05-divide-and-conquer/Sorting_quicksort_anim.gif b/algorithms/05-divide-and-conquer/Sorting_quicksort_anim.gif new file mode 100644 index 00000000..c1071051 Binary files /dev/null and b/algorithms/05-divide-and-conquer/Sorting_quicksort_anim.gif differ diff --git a/algorithms/05-divide-and-conquer/img.png b/algorithms/05-divide-and-conquer/img.png new file mode 100644 index 00000000..57d0c964 Binary files /dev/null and b/algorithms/05-divide-and-conquer/img.png differ diff --git a/algorithms/05-divide-and-conquer/img_1.png b/algorithms/05-divide-and-conquer/img_1.png new file mode 100644 index 00000000..1977a322 Binary files /dev/null and b/algorithms/05-divide-and-conquer/img_1.png differ diff --git a/algorithms/05-divide-and-conquer/img_2.png b/algorithms/05-divide-and-conquer/img_2.png new file mode 100644 index 00000000..83b78eae Binary files /dev/null and b/algorithms/05-divide-and-conquer/img_2.png differ diff --git a/algorithms/05-divide-and-conquer/img_3.png b/algorithms/05-divide-and-conquer/img_3.png new file mode 100644 index 00000000..49da999e Binary files /dev/null and b/algorithms/05-divide-and-conquer/img_3.png differ diff --git a/algorithms/05-divide-and-conquer/img_4.png b/algorithms/05-divide-and-conquer/img_4.png new file mode 100644 index 00000000..e1762a98 Binary files /dev/null and b/algorithms/05-divide-and-conquer/img_4.png differ diff --git a/algorithms/05-divide-and-conquer/index.html b/algorithms/05-divide-and-conquer/index.html new file mode 100644 index 00000000..014df817 --- /dev/null +++ b/algorithms/05-divide-and-conquer/index.html @@ -0,0 +1,233 @@ + Divide and Conquer - Awesome GameDev Resources
Skip to content

Mergesort and QuickSort

Estimated time to read: 16 minutes

Both algorithms are based on recursion and divide-and-conquer strategy. Both are efficient for large datasets, but they have different performance characteristics.

Recursion

img.png

Recursion is a programming technique where a function calls itself. It is a powerful tool to solve problems that can be divided into smaller problems of the same type.

The recursion has two main parts:

  • Base case: the condition that stops the recursion;
  • Recursive case: the condition that calls the function again.

Let's see an example of a recursive function to calculate the factorial of a number:

#include <iostream>
+
+int factorial(int n) {
+  if (n == 0) {
+    return 1;
+  }
+  return n * factorial(n - 1);
+}
+

Mergesort

img_2.png

Mergesort divides the input array into two halves, calls itself for the two halves, and then merges the two sorted halves.

You can split the algorithm into two main parts:

  • Mergesort: the function that calls itself for the two halves;
  • Merge: the function that merges the two sorted halves.

img_4.png image source

The algorthims will keep dividing the array (in red) until it reaches the base case, where the array has only one element(in gray). Then it will merge the two sorted subarrays (in green).

Merge-sort-example-300px.gif image source

Mergesort time complexity

  • Mergesort is time O(n*lg(n)) in the worst case scenario. It is the best time complexity for a comparison-based sorting algorithm.
  • The algorithm is stable. It maintain the relative order of elements with the same keys during the sorting process.

Mergesort implementation

#include <iostream>
+#include <vector>
+#include <queue>
+
+// inplace merge without extra space
+template <typename T>
+requires std::is_arithmetic<T>::value // C++20
+void mergeInplace(std::vector<T>& arr, const size_t start, size_t mid,  const size_t end) {
+  size_t left = start;
+  size_t right = mid + 1;
+
+  while (left <= mid && right <= end) {
+    if (arr[left] <= arr[right]) {
+      left++;
+    } else {
+      T temp = arr[right];
+      for (size_t i = right; i > left; i--) {
+        arr[i] = arr[i - 1];
+      }
+      arr[left] = temp;
+      left++;
+      mid++;
+      right++;
+    }
+  }
+}
+
+// Merge two sorted halves
+template <typename T>
+requires std::is_arithmetic<T>::value // C++20
+void merge(std::vector<T>& arr, const size_t start, const size_t mid,  const size_t end) {
+  // create a temporary array to store the merged array
+  std::vector<T> temp(end - start + 1);
+
+  // indexes for the subarrays:
+  const size_t leftStart = start;
+  const size_t leftEnd = mid;
+  const size_t rightStart = mid + 1;
+  const size_t rightEnd = end;
+
+  // indexes for
+  size_t tempIdx = 0;
+  size_t leftIdx = leftStart;
+  size_t rightIdx = rightStart;
+
+  // merge the subarrays
+  while (leftIdx <= leftEnd && rightIdx <= rightEnd) {
+    if (arr[leftIdx] < arr[rightIdx])
+      temp[tempIdx++] = arr[leftIdx++];
+    else
+      temp[tempIdx++] = arr[rightIdx++];
+  }
+
+  // copy the remaining elements of the left subarray
+  while (leftIdx <= leftEnd)
+    temp[tempIdx++] = arr[leftIdx++];
+
+  // copy the remaining elements of the right subarray
+  while (rightIdx <= rightEnd)
+    temp[tempIdx++] = arr[rightIdx++];
+
+  // copy the merged array back to the original array
+  std::copy(temp.begin(), temp.end(), arr.begin() + start);
+}
+
+// recursive mergesort
+template <typename T>
+requires std::is_arithmetic<T>::value // C++20
+void mergesortRecursive(std::vector<T>& arr,
+                        size_t left,
+                        size_t right) {
+  if (right - left > 0) {
+    size_t mid = (left + right) / 2;
+    mergesortRecursive(arr, left, mid);
+    mergesortRecursive(arr, mid+1, right);
+    merge(arr, left, mid, right);
+    // if the memory is limited, use the inplace merge at the cost of performance
+    // mergeInplace(arr, left, mid - 1, right - 1);
+  }
+}
+
+// interactive mergesort
+template <typename T>
+requires std::is_arithmetic<T>::value // C++20
+void mergesortInteractive(std::vector<T>& arr) {
+  for(size_t width = 1; width < arr.size(); width *= 2) {
+    for(size_t left = 0; left < arr.size(); left += 2 * width) {
+      size_t mid = std::min(left + width, arr.size());
+      size_t right = std::min(left + 2 * width, arr.size());
+      merge(arr, left, mid - 1, right - 1);
+      // if the memory is limited, use the inplace merge at the cost of performance
+      // mergeInplace(arr, left, mid - 1, right - 1);
+    }
+  }
+}
+
+
+int main() {
+  std::vector<int> arr1;
+  for(int i = 1000; i > 0; i--)
+    arr1.push_back(rand()%1000);
+  std::vector<int> arr2 = arr1;
+
+  for(auto i: arr1) std::cout << i << " ";
+  std::cout << std::endl;
+
+  mergesortRecursive(arr1, 0, arr1.size() - 1);
+  for(auto i: arr1) std::cout << i << " ";
+  std::cout << std::endl;
+
+  mergesortInteractive(arr2);
+  for(auto i: arr2) std::cout << i << " ";
+  std::cout << std::endl;
+
+  return 0;
+}
+

Mergesort space complexity

You can implement Mergesort in two ways:

  • Recursive: the function calls itself for the two halves;
  • Iterative: the function uses a loop to merge the two sorted halves.

The interactive version is more efficient than the recursive version, but it is more complex to understand. But both uses the same core algorithm to merge the two sorted halves.

The main issue with Mergesort is that it requires extra space O(n) to merge the subarrays, which can be problem for large datasets.

  • The recursive version will increase the call stack by O(lg(n) and can potentially cause a stack overflow;
  • The iterative version does not add pressure to the stack;

QuickSort

img_1.png

Quicksort is prtetty similar to mergesort, but it solves the extra memory allocation at expense of stability. So quicksort is an in-place and unstable sorting algorithm.

One of the core strategy of quicksort is pivoting. It will be selected and the array will be partitioned in two subarrays: one with elements smaller than the pivot (left) and the other with elements greater than the pivot (right).

The partitioning process consists of the following steps:

  • Select a pivotIndex (left, right, random or median);
  • Swap the pivot with the leftmost element (this can be delayed to the end of the step);
  • Set the pivot to the leftmost element (assuming you swapped);
  • Set the left and right indexes;
  • While the left index is less than or equal to the right index:
    • If the left element is less than or equal to the pivot, increment the left index;
    • If the right element is greater than the pivot, decrement the right index;
    • If the left element is greater than the pivot and the right element is less than or equal to the pivot, swap the left and right elements;

source

Sorting_quicksort_anim.gif

Quicksort time complexity

The main issue with quicksort is that it can degrade to O(n^2) in an already sorted array. To solve this issue, we can select a random pivot, or the median of the first, middle and last element of the array. This can increase the stability of the algorithm at the expense of performance. The best case scenario is O(n*lg(n)) and the average case is O(n*lg(n)).

QuickSort implementation

#include <iostream>
+#include <vector>
+#include <utility>
+#include <stack>
+#include <random>
+
+using std::stack;
+using std::swap;
+using std::pair;
+using std::vector;
+using std::cout;
+
+// Function to generate a random pivot index within the range [left, right]
+template<typename T>
+requires std::integral<T> // c++20
+T randomRange(T left, T right) {
+    static std::random_device rd;
+    static std::mt19937 gen(rd());
+    std::uniform_int_distribution<T> dist(left, right);
+    return dist(gen);
+}
+
+// partition
+template<typename T>
+requires std::is_arithmetic_v<T>
+size_t partition(std::vector<T>& arr, size_t left, size_t right) {
+    // random pivot to increase stability at the cost of performance by random call
+    size_t pivotIndex = randomRange(left, right);
+    swap(arr[left], arr[pivotIndex]);
+
+    size_t pivot = left;
+    size_t l = left + 1;
+    size_t r = right;
+
+    while (l <= r) {
+        if (arr[l] <= arr[pivot]) l++;
+        else if (arr[r] > arr[pivot]) r--;
+        else swap(arr[l], arr[r]);
+    }
+    swap(arr[pivot], arr[r]);
+    return r;
+}
+
+// quicksort recursive
+template<typename T>
+requires std::is_arithmetic_v<T>
+void quicksortRecursive(std::vector<T>& arr, size_t left, size_t right) {
+    if (left < right) {
+        // partition the array
+        size_t pivot = partition(arr, left, right);
+        // recursive call to left and right subarray
+        quicksortRecursive(arr, left, pivot - 1);
+        quicksortRecursive(arr, pivot + 1, right);
+    }
+}
+
+// quicksort interactive
+template<typename T>
+requires std::is_arithmetic_v<T>
+void quicksortInteractive(std::vector<T>& arr, size_t left, size_t right) {
+    // simulate recursive call and avoid potential stack overflow
+    // std::stack allocate memory to hold data content on heap.
+    stack<pair<size_t, size_t>> stack;
+    // produce the initial state
+    stack.emplace(left, right);
+    // iterate
+    while (!stack.empty()) {
+        // consume
+        auto [left, right] = stack.top(); // C++17
+        stack.pop();
+        if (left < right) {
+            auto pivot = partition(arr, left, right);
+            // produce
+            stack.emplace(left, pivot - 1);
+            stack.emplace(pivot + 1, right);
+        }
+    }
+}
+
+int main() {
+    std::vector<int> arr1;
+    for (int i = 0; i < 100; i++) arr1.push_back(rand() % 100);
+    vector<int> arr2 = arr1;
+
+    for (auto& i : arr1) cout << i << " ";
+    cout << std::endl;
+
+    quicksortRecursive(arr1, 0, arr1.size() - 1);
+    for (auto& i : arr1) cout << i << " ";
+    cout << std::endl;
+
+    quicksortInteractive(arr2, 0, arr2.size() - 1);
+    for (auto& i : arr2) cout << i << " ";
+    cout << std::endl;
+
+    return 0;
+}
+

Quicksort space consumption

  • The recursive version of quicksort can increase the function call stack by O(lg(n)) on average, but it can degrade to O(n) in the worst case scenario. Potentially causing a stack overflow;
  • The interactive version of quicksort avoids the function call stack issue, avoiding stack overflow. But the memory required for the replacement is still O(lg(n)) on average and O(n) for the indexes in the worst case scenario.

img_3.png

\ No newline at end of file diff --git a/algorithms/06-hashtables/img.png b/algorithms/06-hashtables/img.png new file mode 100644 index 00000000..bb3e4253 Binary files /dev/null and b/algorithms/06-hashtables/img.png differ diff --git a/algorithms/06-hashtables/img_1.png b/algorithms/06-hashtables/img_1.png new file mode 100644 index 00000000..4e99a111 Binary files /dev/null and b/algorithms/06-hashtables/img_1.png differ diff --git a/algorithms/06-hashtables/img_2.png b/algorithms/06-hashtables/img_2.png new file mode 100644 index 00000000..04e7ecc0 Binary files /dev/null and b/algorithms/06-hashtables/img_2.png differ diff --git a/algorithms/06-hashtables/img_3.png b/algorithms/06-hashtables/img_3.png new file mode 100644 index 00000000..3bc94f68 Binary files /dev/null and b/algorithms/06-hashtables/img_3.png differ diff --git a/algorithms/06-hashtables/img_4.png b/algorithms/06-hashtables/img_4.png new file mode 100644 index 00000000..fa85a315 Binary files /dev/null and b/algorithms/06-hashtables/img_4.png differ diff --git a/algorithms/06-hashtables/img_5.png b/algorithms/06-hashtables/img_5.png new file mode 100644 index 00000000..284b843f Binary files /dev/null and b/algorithms/06-hashtables/img_5.png differ diff --git a/algorithms/06-hashtables/index.html b/algorithms/06-hashtables/index.html new file mode 100644 index 00000000..38b4018d --- /dev/null +++ b/algorithms/06-hashtables/index.html @@ -0,0 +1,419 @@ + Hashtables - Awesome GameDev Resources
Skip to content

Hastables

Estimated time to read: 24 minutes

img.png

Hashtables ane associative datastructures that stores key-value pairs. It uses a hash function to compute an index into an array of buckets or slots, from which the desired value can be found.

The core of the generic associative container is to implement ways to get and set values by keys such as:

  • void insert(K key, V value): Add a new key-value pair to the hashtable. If the key already exists, update the value.
  • V at(K key): Get the value of a given key. If the key does not exist, return a default value.
  • void remove(K key): Remove a key-value pair from the hashtable.
  • bool contains(K key): Check if a key exists in the hashtable.
  • int size(): Get the number of key-value pairs in the hashtable.
  • bool isEmpty(): Check if the hashtable is empty.
  • void clear(): Remove all key-value pairs from the hashtable.
  • V& operator[](K key): Get the value of a given key. If the key does not exist, insert a new key-value pair with a default value.

Key-value pairs

In C++ you could use std::pair from the utility library to store key-value pairs.

#include <utility>
+#include <iostream>
+
+int main() {
+  std::pair<int, int> pair = std::make_pair(1, 2);
+  std::cout << pair.first << " " << pair.second << std::endl;
+  // prints 1 2
+  return 0;
+}
+

Or you could create your own key-value pair class.

#include <iostream>
+
+template <typename K, typename V>
+struct KeyValuePair {
+  K key;
+  V value;
+  KeyValuePair(K key, V value) : key(key), value(value) {}
+};
+
+int main() {
+  KeyValuePair<int, int> pair(1, 2);
+  std::cout << pair.key << " " << pair.value << std::endl;
+  // prints 1 2
+  return 0;
+}
+

Hash function

img_3.png

The hash function will process the key data and return an index. Usually in C++, the index is of type size_t which is biggest unsigned integer the platform can handle.

The hash function should be fast and should distribute the keys uniformly across the array of buckets. The hash function should be deterministic, meaning that the same key should always produce the same hash.

If the size of your key is less than the size_t you could just use the key casted to size_t as the hash function. If it is not, you will have to implement your own hash function. You probably should use bitwise operations to do so.

struct MyCustomDataWith128Bits {
+  uint32_t a;
+  uint32_t b;
+  uint32_t c;
+  uint32_t d;
+  size_t hash() const {
+    return (a << 32) ^ (b << 24) ^ (c << 16) ^ d;
+  }
+};
+

Think a bit and try to come up with a nice answer: what is the ideal hash function for a given type? What are the requirements for a good hash function?

Special case: String or arrays

In order to use strings as keys, you will have to create a way to convert the string's underlying data structure into a size_t. You could use the std::hash function from the functional library. Or create your own hash function.

#include <iostream>
+#include <functional>
+
+size_t hash(const std::string& key) {
+  size_t hash=0; // accumulator pattern
+  // the cost of this operation is O(n)
+  for (char c : key)
+    hash = (hash << 5) ^ c;
+  return hash;
+}
+
+int main() {
+  std::hash<std::string> hash;
+  std::string key = "hello";
+  std::cout << hash(key) << std::endl;
+  // prints number
+  return 0;
+}
+

You can hide and amortize the cost of the hash function by cashing it. There are plenty of ideas for that. Try to come up with your own.

Hash tables

Now that you have the hash function for you type and the key-value data structure, you can implement the hash table.

There are plenty of algorithms to do so, and even the std::unordered_map is not the best, please watch those videos to understand the trade-offs and the best way to implement a hash table.

For the sake of simplicity I will use the operator modulo to convert the hash into an index array. This is not the best way to do so, but it is the easiest way to implement a hash table.

Collision resolution

Linked lists

img_2.png

Assuming that your hash function is not perfect, you will have to deal with collisions. Two or more different keys could produce the same hash. There are plenty of ways to deal with that, but the easiest way is to use a linked list to store the key-value pairs that have the same hash.

Try to come up with your own strategy to deal with collisions.

img_1.png source

Key restrictions

In order for the hash table to work, the key should be:

  • not modifiable
  • implement a hash function
  • implement the == operator

In C++20 you can use the concept feature to enforce those restrictions.

// concept for a hash table
+template <typename T>
+concept HasHashFunction =
+requires(T t, T u) {
+  { t.hash() } -> std::convertible_to<std::size_t>;
+  { t == u } -> std::convertible_to<bool>;
+  std::is_const_v<T>;
+} || requires(T t, T u) {
+  { std::hash<T>{}(t) } -> std::convertible_to<std::size_t>;
+  { t == u } -> std::convertible_to<bool>;
+};
+
+
+int main() {
+  struct MyHashableType {
+    int value;
+    size_t hash() const {
+      return value;
+    }
+    bool operator==(const MyHashableType& other) const {
+      return value == other.value;
+    }
+  };
+  static_assert(HasHashFunction<const MyHashableType>);
+  static_assert(HasHashFunction<int>);
+  return 0;
+}
+

But you can require more from the key if you are going to implement a more complex collision resolution strategy.

Hash table implementation with linked lists (chaining)

kitten-cat.gif

This implementation is naive and not efficient. It is just to give you an idea of how to implement a hash table.

#include <iostream>
+
+// key should not be modifiable
+// implements hash function and implements == operator
+template <typename T>
+concept HasHashFunction =
+requires(T t, T u) {
+  { t.hash() } -> std::convertible_to<std::size_t>;
+  { t == u } -> std::convertible_to<bool>;
+  std::is_const_v<T>;
+} || requires(T t, T u) {
+  { std::hash<T>{}(t) } -> std::convertible_to<std::size_t>;
+  { t == u } -> std::convertible_to<bool>;
+};
+
+// hash table
+template <HasHashFunction K, typename V>
+struct Hashtable {
+private:
+    // key pair
+    struct KeyValuePair {
+        K key;
+        V value;
+        KeyValuePair(K key, V value) : key(key), value(value) {}
+    };
+
+    // node of the linked list
+    struct HashtableNode {
+        KeyValuePair data;
+        HashtableNode* next;
+        HashtableNode(K key, V value) : data(key, value), next(nullptr) {}
+    };
+
+    // array of linked lists
+    HashtableNode** table;
+    int size;
+public:
+    // the hashtable will start with a constant size. You can resize it if you want or use any other strategy
+    // a good size is something similar to the number of elements you are going to store
+    explicit Hashtable(size_t size) {
+        // you colud make it automatically resize and increase the complexity of the implementation 
+        // for the sake of simplicity I will not do that
+        this->size = size;
+        table = new HashtableNode*[size];
+        for (size_t i = 0; i < size; i++) {
+            table[i] = nullptr;
+        }
+    }
+private:
+    inline size_t convertKeyToIndex(K t) {
+            return t.hash() % size;
+    }
+public:
+    // inserts a new key value pair
+    void insert(K key, V value) {
+        // you can optionally resize the table and rearrange the elements if the table is too full
+        size_t index = convertKeyToIndex(key);
+        auto* node = new HashtableNode(key, value);
+        if (table[index] == nullptr) {
+            table[index] = node;
+        } else {
+            HashtableNode* current = table[index];
+            while (current->next != nullptr)
+                current = current->next;
+            current->next = node;
+        }
+    }
+
+    // contains the key
+    bool contains(K key) {
+        size_t index = convertKeyToIndex(key);
+        HashtableNode* current = table[index];
+        while (current != nullptr) {
+            if (current->data.key == key) {
+                return true;
+            }
+            current = current->next;
+        }
+        return false;
+    }
+
+    // subscript operator
+    // creates a new element if the key does not exist
+    // fails if the key is not found
+    V& operator[](K key) {
+        size_t index = convertKeyToIndex(key);
+        HashtableNode* current = table[index];
+        while (current != nullptr) {
+            if (current->data.key == key) {
+                return current->data.value;
+            }
+            current = current->next;
+        }
+        throw std::out_of_range("Key not found");
+    }
+
+    // deletes the key
+    // fails if the key is not found
+    void remove(K key) {
+        size_t index = convertKeyToIndex(key);
+        HashtableNode* current = table[index];
+        HashtableNode* previous = nullptr;
+        while (current != nullptr) {
+            if (current->data.key == key) {
+                if (previous == nullptr) {
+                    table[index] = current->next;
+                } else {
+                    previous->next = current->next;
+                }
+                delete current;
+                return;
+            }
+            previous = current;
+            current = current->next;
+        }
+        throw std::out_of_range("Key not found");
+    }
+
+    ~Hashtable() {
+        for (size_t i = 0; i < size; i++) {
+            HashtableNode* current = table[i];
+            while (current != nullptr) {
+                HashtableNode* next = current->next;
+                delete current;
+                current = next;
+            }
+        }
+    }
+};
+
+struct MyHashableType {
+    int value;
+    size_t hash() const {
+        return value;
+    }
+    bool operator==(const MyHashableType& other) const {
+        return value == other.value;
+    }
+};
+
+int main() {
+    // keys shouldn't be modifiable, implement hash function and == operator
+    Hashtable<const MyHashableType, int> hashtable(5);
+    hashtable.insert(MyHashableType{1}, 1);
+    hashtable.insert(MyHashableType{2}, 2);
+    hashtable.insert(MyHashableType{3}, 3);
+    hashtable.insert(MyHashableType{6}, 6); // should add to the same index as 1
+
+    std::cout << hashtable[MyHashableType{1}] << std::endl;
+    std::cout << hashtable[MyHashableType{2}] << std::endl;
+    std::cout << hashtable[MyHashableType{3}] << std::endl;
+    std::cout << hashtable[MyHashableType{6}] << std::endl;
+    return 0;
+}
+

Open addressing with linear probing

Open addressing is a method of collision resolution in hash tables. In this approach, each cell is not a pointer to the linked list of contents of that bucket, but instead contains a single key-value pair. In linear probing, when a collision occurs, the next cell is checked. If it is occupied, the next cell is checked, and so on, until an empty cell is found.

img_5.png source

The main advantage of open addressing is cache-friendliness. The main disadvantage is that it is more complex to implement, and it is not as efficient as linked lists when the table is too full. That's why we have to resize the table earlier, usually at 50% full, but at least 70% full.

img_4.png source

In this implementation below, I have implemented a strategy to resize the table when it is half full. This is a common strategy to mitigate the O(n) search time when we have a lot of collisions. But on each resize, we have to rehash all elements: O(n) when it grows. This growth will occur rarely so this O(n) is amortized.

Implementation with open addressing and linear probing

#include <iostream>
+
+// key should not be modifiable
+// implements hash function and implements == operator
+template <typename T>
+concept HasHashFunction =
+requires(T t, T u) {
+  { t.hash() } -> std::convertible_to<std::size_t>;
+  { t == u } -> std::convertible_to<bool>;
+  std::is_const_v<T>;
+} || requires(T t, T u) {
+  { std::hash<T>{}(t) } -> std::convertible_to<std::size_t>;
+  { t == u } -> std::convertible_to<bool>;
+};
+
+// hash table
+template <HasHashFunction K, typename V>
+struct Hashtable {
+private:
+  // key pair
+  struct KeyValuePair {
+    K key;
+    V value;
+    KeyValuePair(K key, V value) : key(key), value(value) {}
+  };
+
+  // array of linked lists
+  KeyValuePair** table;
+  int size;
+  int capacity;
+public:
+  // a good size is something 2x bigger than the number of elements you are going to store
+  explicit Hashtable(size_t capacity=1) {
+    if(capacity == 0)
+      throw std::invalid_argument("Capacity must be greater than 0");
+    // you could make it automatically resize and increase the complexity of the implementation
+    // for the sake of simplicity I will not do that
+    this->size = 0;
+    this->capacity = capacity;
+    table = new KeyValuePair*[capacity];
+    for (size_t i = 0; i < capacity; i++)
+      table[i] = nullptr;
+  }
+private:
+  inline size_t convertKeyToIndex(K t) {
+    return t.hash() % capacity;
+  }
+public:
+  // inserts a new key value pair
+  // this implementation uses open addressing and resize the table when it is half full
+  void insert(K key, V value) {
+    size_t index = convertKeyToIndex(key);
+    // resize if necessary
+    // in open addressing, it is common to resize when the table is half full
+    // this help mitigate O(n) search time when we have a lot of collisions
+    // but on each resize, we have to rehash all elements: O(n)
+    if (size >= capacity/2) {
+      auto oldTable = table;
+      table = new KeyValuePair*[capacity*2];
+      capacity *= 2;
+      for (size_t i = 0; i < capacity; i++)
+        table[i] = nullptr;
+      size_t oldSize = size;
+      size = 0;
+      // insert all elements again
+      for (size_t i = 0; i < oldSize; i++) {
+        if (oldTable[i] != nullptr) {
+          insert(oldTable[i]->key, oldTable[i]->value);
+          delete oldTable[i];
+        }
+      }
+      delete[] oldTable;
+    }
+    // insert the new element
+    KeyValuePair* newElement = new KeyValuePair(key, value);
+    while (table[index] != nullptr) // find the next open index
+      index = (index + 1) % capacity;
+    table[index] = newElement;
+    size++;
+  }
+
+  // contains the key
+  bool contains(K key) {
+    size_t index = convertKeyToIndex(key);
+    KeyValuePair* current = table[index];
+    while (current != nullptr) {
+      if (current->key == key) {
+        return true;
+      }
+      index = (index + 1) % capacity;
+      current = table[index];
+    }
+
+    return false;
+  }
+
+  // subscript operator
+  // fails if the key is not found
+  V& operator[](K key) {
+    size_t index = convertKeyToIndex(key);
+    KeyValuePair* current = table[index];
+    while (current != nullptr) {
+      if (current->key == key) {
+        return current->value;
+      }
+      index = (index + 1) % capacity;
+      current = table[index];
+    }
+    throw std::out_of_range("Key not found");
+  }
+
+  // deletes the key
+  // fails if the key is not found
+  void remove(K key) {
+    // ideal index
+    const size_t idealIndex = convertKeyToIndex(key);
+    size_t currentIndex = idealIndex;
+    // store the last index with the same hash so we move it to the position of the removed element
+    size_t lastIndexWithSameIdealIndex = idealIndex;
+    size_t indexOfTheRemovedElement = idealIndex;
+    // iterate until we find the element, or we find an empty slot
+    while (table[currentIndex] != nullptr) {
+      if (table[currentIndex]->key == key)
+        indexOfTheRemovedElement = currentIndex;
+      if (convertKeyToIndex(table[currentIndex]->key) == idealIndex)
+        lastIndexWithSameIdealIndex = currentIndex;
+      currentIndex = (currentIndex + 1) % capacity;
+    }
+    if(table[indexOfTheRemovedElement] == nullptr || table[indexOfTheRemovedElement]->key != key)
+      throw std::out_of_range("Key not found");
+    // mave the last element with the same key to the position of the removed element
+    delete table[indexOfTheRemovedElement];
+    table[indexOfTheRemovedElement] = table[lastIndexWithSameIdealIndex];
+    table[lastIndexWithSameIdealIndex] = nullptr;
+
+    // todo: shrink the table if it is too empty
+  }
+
+  ~Hashtable() {
+    for (size_t i = 0; i < capacity; i++) {
+      if (table[i] != nullptr)
+        delete table[i];
+    }
+    delete[] table;
+  }
+};
+
+struct MyHashableType {
+  int value;
+  size_t hash() const {
+    return value;
+  }
+  bool operator==(const MyHashableType& other) const {
+    return value == other.value;
+  }
+};
+
+int main() {
+  // keys shouldn't be modifiable, implement hash function and == operator
+  Hashtable<const MyHashableType, int> hashtable(5);
+  hashtable.insert(MyHashableType{0}, 0);
+  hashtable.insert(MyHashableType{1}, 1);
+  hashtable.insert(MyHashableType{2}, 2); // triggers resize
+  hashtable.insert(MyHashableType{10}, 10); // should be inserted in the same index as 1
+
+  std::cout << hashtable[MyHashableType{0}] << std::endl;
+  std::cout << hashtable[MyHashableType{1}] << std::endl;
+  std::cout << hashtable[MyHashableType{2}] << std::endl;
+  std::cout << hashtable[MyHashableType{10}] << std::endl; // should trigger linear search
+
+  hashtable.remove(MyHashableType{0}); // should trigger swap
+
+  std::cout << hashtable[MyHashableType{10}] << std::endl; // shauld not trigger linear search
+  return 0;
+}
+
\ No newline at end of file diff --git a/algorithms/06-hashtables/kitten-cat.gif b/algorithms/06-hashtables/kitten-cat.gif new file mode 100644 index 00000000..c63881c4 Binary files /dev/null and b/algorithms/06-hashtables/kitten-cat.gif differ diff --git a/algorithms/07-midterm/index.html b/algorithms/07-midterm/index.html new file mode 100644 index 00000000..b76b1805 --- /dev/null +++ b/algorithms/07-midterm/index.html @@ -0,0 +1,12 @@ + Midterm - Awesome GameDev Resources
\ No newline at end of file diff --git a/algorithms/08-stack-and-queue/Queue.gif b/algorithms/08-stack-and-queue/Queue.gif new file mode 100644 index 00000000..a607283e Binary files /dev/null and b/algorithms/08-stack-and-queue/Queue.gif differ diff --git a/algorithms/08-stack-and-queue/img_1.png b/algorithms/08-stack-and-queue/img_1.png new file mode 100644 index 00000000..8bf841c1 Binary files /dev/null and b/algorithms/08-stack-and-queue/img_1.png differ diff --git a/algorithms/08-stack-and-queue/index.html b/algorithms/08-stack-and-queue/index.html new file mode 100644 index 00000000..9bf4b3c1 --- /dev/null +++ b/algorithms/08-stack-and-queue/index.html @@ -0,0 +1,120 @@ + Stack and Queue - Awesome GameDev Resources
Skip to content

Stack and queue

Estimated time to read: 7 minutes

Warning

This section is a continuation of the Dynamic Data section. Please make sure to read it before continuing.

Stack

img_1.pngsource

Stacks are a type of dynamic data where the last element added is the first one to be removed. This is known as LIFO (Last In First Out) or FILO (First In Last Out). Stacks are used in many algorithms and data structures, such as the depth-first search algorithm, back-track and the call stack.

Stack Basic Operations

  • push - Add an element to the top of the stack.
  • pop - Remove the top element from the stack.
  • top - Return the top element of the stack.

stack.gif source

Stack Implementation

You can either implement it using a dynamic array or a linked list. But the dynamic array implementation is more efficient in terms of memory and speed. So let's use it.

#include <iostream>
+
+// stack
+template <typename T>
+class Stack {
+  T* data; // dynamic array
+  size_t size; // number of elements in the stack
+  size_t capacity; // capacity of the stack
+public:
+  Stack() : data(nullptr), size(0), capacity(0) {}
+  ~Stack() {
+    delete[] data;
+  }
+  void push(const T& value) {
+    // if it needs to be resized
+    // amortized cost of push is O(1)
+    if (size == capacity) {
+      capacity = capacity == 0 ? 1 : capacity * 2;
+      T* new_data = new T[capacity];
+      std::copy(data, data + size, new_data);
+      delete[] data;
+      data = new_data;
+    }
+    // stores the value and then increments the size
+    data[size++] = value; 
+  }
+  T pop() {
+    if (size == 0)
+      throw std::out_of_range("Stack is empty");
+
+    // shrink the array if necessary
+    // ammortized cost of pop is O(1)
+    if (size <= capacity / 4) {
+      capacity /= 2;
+      T* new_data = new T[capacity];
+      std::copy(data, data + size, new_data);
+      delete[] data;
+      data = new_data;
+    }
+    return data[--size];
+  }
+  T& top() const {
+    if (size == 0)
+      throw std::out_of_range("Stack is empty");
+    // cost of top is O(1)
+    return data[size - 1];
+  }
+  size_t get_size() const {
+    return size;
+  }
+  bool is_empty() const {
+    return size == 0;
+  }
+};
+

Queue

Queue.gif source

A queue is a type of dynamic data where the first element added is the first one to be removed. This is known as FIFO (First In First Out). Queues are used in many algorithms and data structures, such as the breadth-first search algorithm. Usually it is implemented as a linked list, in order to provide O(1) time complexity for the enqueue and dequeue operations. But it can be implemented using a dynamic array as well and amortize the cost for resizing. The dynamic array implementation is more efficient in terms of memory and speed(if not resized frequently).

Queue Basic Operations

  • enqueue - Add an element to the end of the queue.
  • dequeue - Remove the first element from the queue.
  • front - Return the first element of the queue.

queue-operations.gifsource

Queue Implementation

// queue
+template <typename T>
+class Queue {
+  // dynamic array approach instead of linked list
+  T* data;
+  size_t front; // index of the first valid element
+  size_t back; // index of the next free slot
+  size_t capacity; // current capacity of the array
+  size_t size; // number of elements in the queue
+
+  explicit Queue() : data(nullptr), front(0), back(0), capacity(capacity), size(0) {};
+
+  void enqueue(T value) {
+    // resize if necessary
+    // amortized O(1) time complexity
+    if (size == capacity) {
+      auto old_capacity = capacity;
+      capacity = capacity ? capacity * 2 : 1;
+      T* new_data = new T[capacity];
+      for (size_t i = 0; i < size; i++)
+        new_data[i] = data[(front + i) % old_capacity];
+      delete[] data;
+      data = new_data;
+      front = 0;
+      back = size;
+    }
+    data[back] = value;
+    back = (back + 1) % capacity;
+    size++;
+  }
+
+  void dequeue() {
+    if (size) {
+      front = (front + 1) % capacity;
+      size--;
+    }
+    // shrink if necessary
+    if(size <= capacity / 4) {
+      auto old_capacity = capacity;
+      capacity /= 2;
+      T* new_data = new T[capacity];
+      for (size_t i = 0; i < size; i++)
+        new_data[i] = data[(front + i) % old_capacity];
+      delete[] data;
+      data = new_data;
+      front = 0;
+      back = size;
+    }
+  }
+
+  T& head() {
+    return data[front];
+  }
+};
+
\ No newline at end of file diff --git a/algorithms/08-stack-and-queue/queue-operations.gif b/algorithms/08-stack-and-queue/queue-operations.gif new file mode 100644 index 00000000..cc196ab1 Binary files /dev/null and b/algorithms/08-stack-and-queue/queue-operations.gif differ diff --git a/algorithms/08-stack-and-queue/stack.gif b/algorithms/08-stack-and-queue/stack.gif new file mode 100644 index 00000000..3d765f5c Binary files /dev/null and b/algorithms/08-stack-and-queue/stack.gif differ diff --git a/algorithms/09-break/index.html b/algorithms/09-break/index.html new file mode 100644 index 00000000..e8bf2274 --- /dev/null +++ b/algorithms/09-break/index.html @@ -0,0 +1,12 @@ + Break - Awesome GameDev Resources
\ No newline at end of file diff --git a/algorithms/10-graphs/img.png b/algorithms/10-graphs/img.png new file mode 100644 index 00000000..47177f4d Binary files /dev/null and b/algorithms/10-graphs/img.png differ diff --git a/algorithms/10-graphs/img_1.png b/algorithms/10-graphs/img_1.png new file mode 100644 index 00000000..c4c8504e Binary files /dev/null and b/algorithms/10-graphs/img_1.png differ diff --git a/algorithms/10-graphs/img_2.png b/algorithms/10-graphs/img_2.png new file mode 100644 index 00000000..6d6270aa Binary files /dev/null and b/algorithms/10-graphs/img_2.png differ diff --git a/algorithms/10-graphs/img_3.png b/algorithms/10-graphs/img_3.png new file mode 100644 index 00000000..45eb6498 Binary files /dev/null and b/algorithms/10-graphs/img_3.png differ diff --git a/algorithms/10-graphs/index.html b/algorithms/10-graphs/index.html new file mode 100644 index 00000000..cdeca9da --- /dev/null +++ b/algorithms/10-graphs/index.html @@ -0,0 +1,185 @@ + Graphs - Awesome GameDev Resources
Skip to content

Graph

Estimated time to read: 15 minutes

Graphs are a type of data structures that interconnects nodes (or vertices) with edges. They are used to model relationships between objects. This is the basics for most AI algorithms, such as pathfinding, decision making, neuron networks, and others.

img_1.png

Basic Definitions

  • Nodes or vertices are the basic entities in a graph and hold the data.
  • Edges are the connections and relation between the nodes. The relationship can be enriched in multiple ways such as direction, weight, and others.
  • Neighbours are the nodes that are connected to a specific node.
  • Path is the sequence of edges and nodes that allows you to go from one node to another.
  • Degree of a node is the number of edges connected to it.

img_2.png

Representation

A graph is composed by a set of vertices(nodes) and edges. There are multiple ways to represent a graph, and every style has its own advantages and disadvantages.

Adjacency matrix

Assuming every node is labeled with a number from 0 to n-1, an adjacency matrix is a 2D array of size n x n. The entry a[i][j] is 1 if there is an edge from node i to node j, and 0 otherwise. The adjacency matrix for a graph is always a square matrix.

// adjacency matrix
+// NUMBER_OF_NODES is the number of nodes
+// bool marks if there is an edge between the nodes.
+// switch bool to float if you want to store the weight of the edge.
+// switch bool to a data structure if you want to store more information about the edge.
+bool adj_matrix[NUMBER_OF_NODES][NUMBER_OF_NODES];
+vector<Node> nodes;
+
  • Pros: it is simple and easy to implement and blazing fast for checking if there is an edge between two nodes.
  • Cons: it consumes a lot of space, especially for sparse graphs.

Adjacency list

It can be implemented in multiple ways, but a common one is to use an array of lists(or vectors). The index(key) of the array is the node id, and the value is a list of nodes that are connected to the key node.

// adjacency list
+// NUMBER_OF_NODES is the number of nodes
+// vector for storing the connected nodes ids as integers
+// switch vector<int> to map<int, float> if you want to store the weight of the edge.
+// switch map<int, float> to map<int, data_structure> if you want to store more information about the edge.
+vector<int> adj_list[NUMBER_OF_NODES];
+vector<Node> nodes;
+
  • Pros: it is more memory efficient for sparse graphs.
  • Cons: it can be slower to check if there is an edge between two nodes.

Edge list

It is a collection of edges, where each egge can be represented as a pair of nodes, a pair of node ids, or a pair of references to nodes.

// edge list
+vector<pair<int, int>> edges;
+vector<Node> nodes;
+
  • Pros: it is the most memory efficient representation for sparse graphs.
  • Cons: it can be slower to check if there is an edge between two nodes.

Graph Types

  • Null graph: A graph with no edges.
  • Trivial graph: A graph with only one vertex.
  • Directed graph: A graph where the edges have direction.
  • Weighted graph: A graph where the edges have a weight.
  • Undirected graph: A graph where the edges have no direction or are bidirectional. If weighted, the weights are the same in both directions.
  • Connected graph: A graph where all nodes can be reached from any other node.
  • Disconnected graph: A graph where some nodes cannot be reached from other nodes.
  • Cyclic graph: A graph that has at least one cycle, a path that starts and ends at the same node.
  • Acyclic graph: A graph that has no cycles.
  • Complete graph: A graph where every pair of nodes is connected by a unique edge.
  • Regular graph: A graph where every node has the same degree.

img.png

Graph Algorithms

Depth-First Search (DFS)

DFS is a graph traversal algorithm based on a stack data structure. Basically, the algorithm starts at a node and explores as far as possible along each branch before backtracking. It is used to find connected components, determine the connectivity of the graph, and solve many other problems.

DFS visualization

#include <iostream>
+#include <vector>
+#include <unordered_set>
+#include <unordered_map>
+#include <string>
+
+// graph is represented as an adjacency list
+std::unordered_map<std::string, std::unordered_set<std::string>> graph;
+std::unordered_set<std::string> visited;
+
+// dfs recursive version
+// it exploits the call stack to store the nodes to visit
+// you might want to use the iterative version if you have a large graph
+// for that, use std::stack data structure and producer-consumer pattern
+void dfs(const std::string& node) {
+  std::cout << node << std::endl;
+  visited.insert(node);
+  for (const auto& neighbor : graph[node])
+    if (!visited.contains(neighbor))
+      dfs(neighbor);
+}
+
+void dfs_interactive(const std::string& node) {
+  std::stack<std::string> stack;
+  // produce the first node
+  stack.push(node);
+  while (!stack.empty()) {
+    // consume the node
+    std::string current = stack.top();
+    stack.pop();
+    // avoid visiting the same node twice
+    if (visited.contains(current))
+      continue;
+    // mark as visited
+    visited.insert(current);
+
+    // visit the node
+    std::cout << current << std::endl;
+
+    // produce the next node to visit
+    for (const auto& neighbor : graph[current]) {
+      if (!visited.contains(neighbor)) {
+        stack.push(neighbor);
+        break; // is this break necessary?
+      }
+    }
+  }
+}
+
+int main() {
+  std::cout << "Write one node string per line. When you are done, add an empty line." << std::endl;
+  std::string node;
+  while (std::getline(std::cin, node) && !node.empty())
+    graph[node] = {};
+  std::cout << "Write the edges as 'node1;node2'. When you are done, add an empty line." << std::endl;
+  std::string edge;
+  while (std::getline(std::cin, edge) && !edge.empty()) {
+    auto pos = edge.find(';');
+    // Bidirectional
+    std::string source = edge.substr(0, pos);
+    std::string destination = edge.substr(pos + 1);
+    graph[source].insert(destination);
+    graph[destination].insert(source);
+  }
+  std::cout << "Write the starting node." << std::endl;
+  std::string start;
+  std::cin >> start;
+  dfs(start);
+  return 0;
+}
+

Breadth-First Search (BFS)

BFS is a graph traversal algorithm based on a queue data structure. It starts at a node and explores all of its neighbours before moving on to the next level of neighbours by enqueing them. It is used to find the shortest path, determine the connectivity of the graph, and others.

BFS visualization

#include <iostream>
+#include <vector>
+#include <unordered_set>
+#include <unordered_map>
+#include <string>
+#include <queue>
+
+// graph is represented as an adjacency list
+std::unordered_map<std::string, std::unordered_set<std::string>> graph;
+std::unordered_set<std::string> visited;
+
+// bfs
+void bfs(const std::string& node) {
+  std::queue<std::string> queue;
+  // produce the first node
+  queue.push(node);
+  while (!queue.empty()) {
+    // consume the node
+    std::string current = queue.front();
+    queue.pop();
+    // avoid visiting the same node twice
+    if (visited.contains(current))
+      continue;
+    // mark as visited
+    visited.insert(current);
+
+    // visit the node
+    std::cout << current << std::endl;
+
+    // produce the next node to visit
+    for (const auto& neighbor : graph[current]) {
+      if (!visited.contains(neighbor))
+        queue.push(neighbor);
+    }
+  }
+}
+
+void dfs_interactive(const std::string& node) {
+  std::stack<std::string> stack;
+  // produce the first node
+  stack.push(node);
+  while (!stack.empty()) {
+    // consume the node
+    std::string current = stack.top();
+    stack.pop();
+    // avoid visiting the same node twice
+    if (visited.contains(current))
+      continue;
+    // mark as visited
+    visited.insert(current);
+
+    // visit the node
+    std::cout << current << std::endl;
+
+    // produce the next node to visit
+    for (const auto& neighbor : graph[current]) {
+      if (!visited.contains(neighbor)) {
+        stack.push(neighbor);
+        break; // is this break necessary?
+      }
+    }
+  }
+}
+
+int main() {
+  std::cout << "Write one node string per line. When you are done, add an empty line." << std::endl;
+  std::string node;
+  while (std::getline(std::cin, node) && !node.empty())
+    graph[node] = {};
+  std::cout << "Write the edges as 'node1;node2'. When you are done, add an empty line." << std::endl;
+  std::string edge;
+  while (std::getline(std::cin, edge) && !edge.empty()) {
+    auto pos = edge.find(';');
+    // Bidirectional
+    std::string source = edge.substr(0, pos);
+    std::string destination = edge.substr(pos + 1);
+    graph[source].insert(destination);
+    graph[destination].insert(source);
+  }
+  std::cout << "Write the starting node." << std::endl;
+  std::string start;
+  std::cin >> start;
+  // dfs(start);
+  dfs_interactive(start);
+  return 0;
+}
+

img_3.png source

https://www.redblobgames.com/pathfinding/grids/graphs.html

https://www.redblobgames.com/pathfinding/a-star/introduction.html

https://qiao.github.io/PathFinding.js/visual/

\ No newline at end of file diff --git a/algorithms/11-dijkstra/img.png b/algorithms/11-dijkstra/img.png new file mode 100644 index 00000000..ecbbec3e Binary files /dev/null and b/algorithms/11-dijkstra/img.png differ diff --git a/algorithms/11-dijkstra/img_1.png b/algorithms/11-dijkstra/img_1.png new file mode 100644 index 00000000..d148d69c Binary files /dev/null and b/algorithms/11-dijkstra/img_1.png differ diff --git a/algorithms/11-dijkstra/img_2.png b/algorithms/11-dijkstra/img_2.png new file mode 100644 index 00000000..6643cece Binary files /dev/null and b/algorithms/11-dijkstra/img_2.png differ diff --git a/algorithms/11-dijkstra/index.html b/algorithms/11-dijkstra/index.html new file mode 100644 index 00000000..a335822c --- /dev/null +++ b/algorithms/11-dijkstra/index.html @@ -0,0 +1,130 @@ + Dijkstra - Awesome GameDev Resources
Skip to content

Djikstra's algorithm

Estimated time to read: 9 minutes

img.png source

Dijkstra's algorithm is a graph traversal algorithm similar to BFS, but it takes into account the weight of the edges. It uses a priority list to visit the nodes with the smallest cost first and a set to keep track of the visited nodes. A came_from map can be used to store the parent node of each node to create a pathfinding algorithm.

It uses the producer-consumer pattern, where the producer is the algorithm that adds the nodes to the priority queue and the consumer is the algorithm that removes the nodes from the priority queue and do the work.

The algorithm is greedy and works well with positive weights. It is not optimal for negative weights, for that you should use the Bellman-Ford algorithm.

img_2.png

Data Structure

For the graph, we will use an adjacency list:

// node registry
+// K is the key type for indexing the nodes, usually it can be a string or an integer
+// Node is the Node type to store node related data 
+unordered_map<K, N> nodes;
+
+// K is the key type of the index
+// W is the weight type of the edge, usually it can be an integer or a float
+// W can be more robust and become a struct, for example, to store the weight and the edge name
+// if W is a struct, remember no implement the < operator for the priority queue work
+// unordered_map is used to exploit the O(1) access time and be tolerant to sparse keys
+unordered_map<K, unordered_map<K, W>> edges;
+
+// usage
+// the cost from node A to node B is 5
+edges["A"]["B"] = 5;
+// if you want to make it bidirectional set the opposite edge too
+// edges["B"]["A"] = 5;
+

For the algoritm to work we will need a priority queue to store the nodes to be visited:

// priority queue to store the nodes to be visited
+// C is the W type and stores the accumulated cost to reach the node
+// K is the key type of the index of the node
+priority_queue<pair<C, K>> frontier;
+

For the visited nodes we will use a set:

// set to store the visited nodes
+// K is the key type of the index of the node
+unordered_set<K> visited;
+

Algorithm

List of visualizations:

img_1.png

Example of Dijkstra's algorithm in C++ to build a path from the start node to the end node:

#include <iostream>
+#include <unordered_map>
+#include <unordered_set>
+#include <string>
+#include <queue>
+using namespace std;
+
+// Dijikstra
+struct Node {
+  // add your custom data here
+  string name;
+};
+
+// nodes indexed by id
+unordered_map<uint64_t, Node> nodes;
+// edges indexed by source id and destination id, the value is the
+unordered_map<uint64_t, unordered_map<uint64_t, double>> edges;
+// priority queue for the frontier
+// this could be declared inside the Dijkstra function
+priority_queue<pair<double, uint64_t>> frontier;
+
+// optionally, in order to create a pathfinding, use came_from map to store the parent node
+unordered_map<uint64_t, uint64_t> came_from;
+// cost to reach the node so far
+unordered_map<uint64_t, double> cost_so_far;
+
+void Visit(Node* node){
+  // add your custom code here
+  cout << node->name << endl;
+}
+
+void Dijkstra(uint64_t start_id) {
+  cout << "Visiting nodes:" << endl;
+  // clear the costs so far
+  cost_so_far.clear();
+  // boostrap the frontier
+  // 0 means the cost to reach the start node is 0
+  frontier.emplace(0, start_id);
+  cost_so_far[start_id] = 0;
+  // while there are nodes to visit
+  while (!frontier.empty()) {
+    // get the node with the lowest cost
+    auto [cost, current_id] = frontier.top();
+    frontier.pop();
+    // get the node
+    Node* current = &nodes[current_id];
+    // visit the node
+    Visit(current);
+    // for each neighbor
+    for (const auto& [neighbor_id, edge_cost] : edges[current_id]) {
+      // calculate the new cost to reach the neighbor
+      double new_cost = cost_so_far[current_id] + edge_cost;
+      // if the neighbor is not visited yet or the new cost is less than the previous cost
+      if (!cost_so_far.contains(neighbor_id) || new_cost < cost_so_far[neighbor_id]) {
+        // update the cost
+        cost_so_far[neighbor_id] = new_cost;
+        // add the neighbor to the frontier
+        frontier.emplace(new_cost, neighbor_id);
+        // update the parent node
+        came_from[neighbor_id] = current_id;
+      }
+    }
+  }
+}
+
+int main() {
+  // build the graph
+  nodes[0] = {"A"}; // this will be our start
+  nodes[1] = {"B"};
+  nodes[2] = {"C"};
+  nodes[3] = {"D"}; // this will be our end
+  // store the edges costs
+  edges[0][1] = 1;
+  edges[0][2] = 2;
+  edges[0][3] = 100; // this is a very expensive edge
+  edges[1][3] = 3;
+  edges[2][3] = 1;
+  // the path from 0 to 3 is A -> C -> D even though the edge A -> D have less steps
+  Dijkstra(0);
+  // print the path from the end to the start
+  cout << "Path:" << endl;
+  uint64_t index = 3;
+  // prevents infinite loop if the end is unreachable
+  if(!came_from.contains(index)) {
+    cout << "No path found" << endl;
+    return 0;
+  }
+  while (index != 0) {
+    cout << nodes[index].name << endl;
+    index = came_from[index];
+  }
+  cout << nodes[0].name << endl;
+  return 0;
+}
+
\ No newline at end of file diff --git a/algorithms/12-mst/index.html b/algorithms/12-mst/index.html new file mode 100644 index 00000000..01017908 --- /dev/null +++ b/algorithms/12-mst/index.html @@ -0,0 +1,465 @@ + Minimum Spanning Tree - Awesome GameDev Resources
Skip to content

Minimum Spanning Tree

Estimated time to read: 22 minutes

Jarnik's(and Prim's) developed the Minimum Spanning Tree, it is an algorithm to find a tree in a graph that connects all the vertices with the minimum possible accumulated weight.

The output of the algorithm is a set of edges that the sum of the weighs is the minimum possible and connects all reachable vertices.

Minimum Spanning Tree Algorithm

  • Add a vertex to the minimum spanning tree;
  • While all nodes are not in the minimum spanning tree:
    • Find the edge with the minimum weight that connects a vertex in the MST to a vertex not in the MST;
    • Add the vertex from that edge to the MST;

PrimAlgDemo.gif By Shiyu Ji - Own work, CC BY-SA 4.0, Link

Example

Let's consider the following graph:

graph LR
+v0((0))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7((7))
+v8((8))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-. 4 .-> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-. 8 .-> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-. 6 .-> v8
+v7 <-. 11 .-> v6
+v1 <-. 2 .-> v7
+v0 <-. 4 .-> v7
+v0 <-. 8 .-> v1

In order to bootstrap the algorithm we need to:

  • Select a random vertex;
    • let's choose the vertex 0;
  • Add the vertex 0 to minimum spanning tree;
    • Add all edges that connect the vertex 0 to the priority queue, we add 1 with the weight of 8 and 7 with the weight of 4;

Current state of data:

  • Minimum Spanning Tree: {0}
graph LR
+v0(((0)))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7((7))
+v8((8))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-. 4 .-> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-. 8 .-> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-. 6 .-> v8
+v7 <-. 11 .-> v6
+v1 <-. 2 .-> v7
+v0 <-. 4 .-> v7
+v0 <-. 8 .-> v1

After the initial setup, we will start running the producer-consumer loop:

  1. List all edges from all vertices in the minimum spanning tree where the other vertex is not in the minimum spanning tree;
    • The edges are:
      • {0, 1} with the weight of 8;
      • {0, 7} with the weight of 4;
graph LR
+v0(((0)))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7((7))
+v8((8))
+v3 ~~~ v4
+v5 ~~~ v4
+v3 ~~~ v5
+v2 ~~~ v3
+v2 ~~~ v5
+v6 ~~~ v5
+v2 ~~~ v8
+v8 ~~~ v6
+v1 ~~~ v2
+v7 ~~~ v8
+v7 ~~~ v6
+v1 ~~~ v7
+v0 <-. 4 .-> v7
+v0 <-. 8 .-> v1
  1. Select the edge with the minimum weight;
    • The edge {0, 7} with the weight of 4;
graph LR
+v0(((0)))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7((7))
+v8((8))
+v3 ~~~ v4
+v5 ~~~ v4
+v3 ~~~ v5
+v2 ~~~ v3
+v2 ~~~ v5
+v6 ~~~ v5
+v2 ~~~ v8
+v8 ~~~ v6
+v1 ~~~ v2
+v7 ~~~ v8
+v7 ~~~ v6
+v1 ~~~ v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1
  1. From the selected edge, add the other vertex to the minimum spanning tree
    • Add the vertex 7 to the minimum spanning tree;

The current state of the minimum spanning three is [{0, 7}].;

graph LR
+v0(((0)))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8((8))
+v3 ~~~ v4
+v5 ~~~ v4
+v3 ~~~ v5
+v2 ~~~ v3
+v2 ~~~ v5
+v6 ~~~ v5
+v2 ~~~ v8
+v8 ~~~ v6
+v1 ~~~ v2
+v7 ~~~ v8
+v7 ~~~ v6
+v1 ~~~ v7
+v0 <-- 4 --> v7
+v0 ~~~ v1

Let's repeat the process once more to illustrate the algorithm:

graph LR
+v0(((0)))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8((8))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-. 4 .-> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-. 8 .-> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-. 6 .-> v8
+v7 <-. 11 .-> v6
+v1 <-. 2 .-> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1
  1. List all edges from all vertices in the minimum spanning tree where the other vertex is not in the minimum spanning tree;
    • The edges are:
      • {0, 1} with the weight of 8;
      • {7, 1} with the weight of 2;
      • {7, 8} with the weight of 6;
      • {7, 6} with the weight of 11;
graph LR
+v0(((0)))
+v1((1))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8((8))
+v3 ~~~ v4
+v5 ~~~ v4
+v3 ~~~ v5
+v2 ~~~ v3
+v2 ~~~ v5
+v6 ~~~ v5
+v2 ~~~ v8
+v8 ~~~ v6
+v1 ~~~ v2
+v7 <-. 6 .-> v8
+v7 <-. 11 .-> v6
+v1 <-. 2 .-> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1
  1. Select the edge with the minimum weight;
    • The edge {7, 1} with the weight of 2;
  2. From the selected edge, add the other vertex to the minimum spanning tree
    • Add the vertex 1 to the minimum spanning tree;

The current state of the minimum spanning three is [{0, 7}, {1, 7}].

graph LR
+v0(((0)))
+v1(((1)))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8((8))
+v3 ~~~ v4
+v5 ~~~ v4
+v3 ~~~ v5
+v2 ~~~ v3
+v2 ~~~ v5
+v6 ~~~ v5
+v2 ~~~ v8
+v8 ~~~ v6
+v1 ~~~ v2
+v7 ~~~ v8
+v7 ~~~ v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 ~~~ v1

Now the current exploration state is:

graph LR
+v0(((0)))
+v1(((1)))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8((8))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-. 4 .-> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-. 8 .-> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-. 6 .-> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

The edges candidates are:

  • {0, 1}: 12;
  • {7, 8}: 6;
  • {7, 6}: 11;

The edge with the minimum weight is {7, 8}: 6. So we will add 8 to the minimum spanning tree.

The current state of the minimum spanning three is [{0, 7}, {1, 7}, {8, 7}].

graph LR
+v0(((0)))
+v1(((1)))
+v2((2))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8(((8)))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-. 4 .-> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-. 8 .-> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-- 6 --> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

The edges candidates are:

  • {1, 2}: 12;
  • {8, 2}: 8;
  • {8, 6}: 10;
  • {7, 6}: 11;

The edge with the minimum weight is {8, 2}: 8. So we will add 2 to the minimum spanning tree.

The current state of the minimum spanning three is [{0, 7}, {1, 7}, {8, 7}, {2, 8}].

graph LR
+v0(((0)))
+v1(((1)))
+v2(((2)))
+v3((3))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8(((8)))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-. 4 .-> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-- 8 --> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-- 6 --> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

The edges candidates are:

  • {2, 3}: 4;
  • {2, 5}: 6;
  • {8, 6}: 10;
  • {7, 6}: 11;

We will add the edge {2, 3}: 4 to the minimum spanning tree.

The minimum spanning three is [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}].

graph LR
+v0(((0)))
+v1(((1)))
+v2(((2)))
+v3(((3)))
+v4((4))
+v5((5))
+v6((6))
+v7(((7)))
+v8(((8)))
+v3 <-. 3 .-> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-- 4 --> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-- 8 --> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-- 6 --> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

Candidates:

  • {3, 4}: 3;
  • {3, 5}: 12;
  • {2, 5}: 6;
  • {8, 6}: 10;
  • {7, 6}: 11;

The edge with the minimum weight is {3, 4}: 3. So we will add 4 to the minimum spanning tree.

The minimum spanning three is now [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}].

graph LR
+v0(((0)))
+v1(((1)))
+v2(((2)))
+v3(((3)))
+v4(((4)))
+v5((5))
+v6((6))
+v7(((7)))
+v8(((8)))
+v3 <-- 3 --> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-- 4 --> v3
+v2 <-. 6 .-> v5
+v6 <-. 1 .-> v5
+v2 <-- 8 --> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-- 6 --> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

The egdes candidates are:

  • {3, 5}: 12;
  • {2, 5}: 6;
  • {4, 5}: 15;
  • {8, 6}: 10;
  • {7, 6}: 11;

Select {2, 5}: 6; Add 5 to MST. [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}].

graph LR
+v0(((0)))
+v1(((1)))
+v2(((2)))
+v3(((3)))
+v4(((4)))
+v5(((5)))
+v6((6))
+v7(((7)))
+v8(((8)))
+v3 <-- 3 --> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-- 4 --> v3
+v2 <-- 6 --> v5
+v6 <-. 1 .-> v5
+v2 <-- 8 --> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-- 6 --> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

Candidates are:

  • {5, 6}: 1;
  • {8, 6}: 10;
  • {7, 6}: 11;

Select {5, 6}: 1; Add 6 to MST. [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}, {6, 5}].

graph LR
+v0(((0)))
+v1(((1)))
+v2(((2)))
+v3(((3)))
+v4(((4)))
+v5(((5)))
+v6(((6)))
+v7(((7)))
+v8(((8)))
+v3 <-- 3 --> v4
+v5 <-. 15 .-> v4
+v3 <-. 12 .-> v5
+v2 <-- 4 --> v3
+v2 <-- 6 --> v5
+v6 <-- 1 --> v5
+v2 <-- 8 --> v8
+v8 <-. 10 .-> v6
+v1 <-. 12 .-> v2
+v7 <-- 6 --> v8
+v7 <-. 11 .-> v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 <-. 8 .-> v1

Now, our current MST does not any candidates to explore, so the algorithm is finished. The minimum spanning tree is [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}, {6, 5}].

graph LR
+v0(((0)))
+v1(((1)))
+v2(((2)))
+v3(((3)))
+v4(((4)))
+v5(((5)))
+v6(((6)))
+v7(((7)))
+v8(((8)))
+v3 <-- 3 --> v4
+v5 ~~~ v4
+v3 ~~~ v5
+v2 <-- 4 --> v3
+v2 <-- 6 --> v5
+v6 <-- 1 --> v5
+v2 <-- 8 --> v8
+v8 ~~~ v6
+v1 ~~~ v2
+v7 <-- 6 --> v8
+v7 ~~~ v6
+v1 <-- 2 --> v7
+v0 <-- 4 --> v7
+v0 ~~~ v1

The total weight of the minimum spanning tree from {0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}, {6, 5} is 4 + 2 + 6 + 8 + 4 + 3 + 6 + 1 = 34.

Implementation

There are many implementations for the Minimum Spanning Tree algorithm, here goes one possible implementation int as key, int as value and int as weight:

#include <iostream>
+#include <unordered_set>
+#include <unordered_map>
+#include <optional>
+#include <tuple>
+#include <vector>
+#include <utility>
+using namespace std;
+
+// rename optional<tuple<int, int, int>> to edge
+typedef optional<tuple<int, int, int>> Edge;
+
+// rename unordered_map<int, unordered_map<int, int>> to Graph
+typedef unordered_map<int, unordered_map<int, int>> Graph;
+
+// source, destination, weight
+Edge findMinEdge(const Graph& graph, const Graph& mst){
+  if(graph.empty())
+    return nullopt;
+  if(mst.empty()){
+    // select a random node to start, we will get the first vertex
+    int source = graph.begin()->first;
+    // candidates to be destination
+    auto candidates = graph.at(source);
+    // iterator
+    auto it = candidates.begin();
+    // best destination and weight
+    int bestDestination = it->first;
+    int bestWeight = it->second;
+    // iterate over the candidates
+    for(; it != candidates.end(); it++){
+      if(it->second < bestWeight){
+        bestDestination = it->first;
+        bestWeight = it->second;
+      }
+    }
+    return make_tuple(source, bestDestination, bestWeight);
+  }
+  // list all vertices from the minimum spanning tree
+  std::unordered_set<int> mstVertices;
+  for(auto& [source, destinations] : mst){
+    mstVertices.insert(source);
+    for(auto& [destination, weight] : destinations){
+      mstVertices.insert(destination);
+    }
+  }
+  // iterate over the vertices from the minimum spanning tree to find the minimum edge
+  int bestWeight = INT_MAX;
+  int bestSource = -1;
+  int bestDestination = -1;
+  for(auto& source : mstVertices){
+    for(auto& [destination, weight] : graph.at(source)){
+      if(!mstVertices.contains(destination) && weight < bestWeight){
+        bestSource = source;
+        bestDestination = destination;
+        bestWeight = weight;
+      }
+    }
+  }
+  if(bestSource == -1)
+    return nullopt;
+  return make_tuple(bestSource, bestDestination, bestWeight);
+}
+
+// returns the accumulated weight of the minimum spanning tree
+// the graph is represented as [source, destination] -> weight
+int MSP(const Graph& graph){
+  Graph mst;
+  int accumulatedWeight = 0;
+  while(true){
+    auto edge = findMinEdge(graph, mst);
+    if(!edge.has_value())
+      break;
+    auto [source, destination, weight] = edge.value();
+    mst[source][destination] = weight;
+    mst[destination][source] = weight;
+    accumulatedWeight += weight;
+  }
+  return accumulatedWeight;
+}
+
+// minimum spanning tree
+int main() {
+  return 0;
+}
+
\ No newline at end of file diff --git a/algorithms/13-bst/img.png b/algorithms/13-bst/img.png new file mode 100644 index 00000000..0a2410e9 Binary files /dev/null and b/algorithms/13-bst/img.png differ diff --git a/algorithms/13-bst/index.html b/algorithms/13-bst/index.html new file mode 100644 index 00000000..d80110cc --- /dev/null +++ b/algorithms/13-bst/index.html @@ -0,0 +1,12 @@ + Trees - Awesome GameDev Resources
Skip to content

Trees

Estimated time to read: 2 minutes

  • It is a connected graph what have no cycles;
  • Has a single path between any two vertices;
  • A tree with N vertices has N-1 edges;

img.png

Traversing a Binary Tree

There are mostly three ways to explore a binary search tree, they generate different outputs:

  • In-order: Left, Root, Right;
  • Pre-order: Root, Left, Right;
  • Post-order: Left, Right, Root;

Binary Search Trees

A binary search tree is a binary tree:

  • Each node has at most two children;
  • The left child is less than the parent;
  • The right child is greater than the parent;
  • The left and right subtrees are also binary search trees;

In a binary search tree, the search complexity is O(log(n)) in a balanced tree. But it can be O(n) if not balanced.

Check the animations on https://visualgo.net/en/bst.

AVL Trees

WiP.

\ No newline at end of file diff --git a/algorithms/14-heap/index.html b/algorithms/14-heap/index.html new file mode 100644 index 00000000..987637ea --- /dev/null +++ b/algorithms/14-heap/index.html @@ -0,0 +1,12 @@ + Heap - Awesome GameDev Resources
Skip to content

Heap

Estimated time to read: 5 minutes

Heap is a data structure and algorithm that always keep the highest or lowest element at the top. You can implement it in many ways, such as a tree or a priority queue.

Heap in a tree

In a tree implementation, the most common is a binary tree. In this the max heap scenario, the parent is always greater than the both children. The binary tree should be complete, which means all levels are filled except possibly for the last one, which is filled from left to right.

The complexity of a heap is O(log(n)) for insert and remove operations, for peeking or popping the top element is O(1).

Heap in an array

The most common implementation of a heap is in an array(vector). Assuming the current element is at index i, the parent is at (i-1)/2, the left child is at 2*i+1 and the right child is at 2*i+2. This approach is called tree linearization. It is more memory efficient and cache friendly.

The complexity of a heap in a priority queue in array is the same as in a tree, but with lower overhead.

Heap

Heapfy

Heapfy is an operation that for a given array, it will transform it into a heap. The complexity is O(n) if done bottom-up. That's one of the reasons heaps are so efficient. After that, all calls to get the top element will be O(1).

If the heapfy is done top-down, the complexity is O(n log(n)).

Heap

The algorithm is simple,

  • For each element in the array, it will compare with the parent and swap if necessary;
  • If the swap causes imbalance on the children, it will repeat the process until the element is in the right place.

See animation here https://www.cs.usfca.edu/~galles/JavascriptVisual/Heap.html

Insert

In the insertion operation, the element is added to the end of the array, and then it is compared with the parent and swapped if necessary. The parent comparison goes up to the top of the heap. The complexity is O(log(n)).

Operation Peek and Pop

Peek will return the top element of the heap, but not remove it. Pop is similar to peek, but it will remove the top.

When you remove the top element, you will need to reorganize it. The steps are:

  1. Get the top element and store to return later;
  2. Swap the top element with the last element;
  3. Remove the last element;
  4. Put the last element in the top;
  5. Compare the top element with the children and swap if necessary;
  6. Repeat until the element is in the right place.

The complexity of the pop operation is O(log(n)).

\ No newline at end of file diff --git a/algorithms/15-project/index.html b/algorithms/15-project/index.html new file mode 100644 index 00000000..200edfff --- /dev/null +++ b/algorithms/15-project/index.html @@ -0,0 +1,12 @@ + Project - Awesome GameDev Resources
\ No newline at end of file diff --git a/algorithms/16-finals/index.html b/algorithms/16-finals/index.html new file mode 100644 index 00000000..5505e1a4 --- /dev/null +++ b/algorithms/16-finals/index.html @@ -0,0 +1,12 @@ + Index - Awesome GameDev Resources

Index

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/algorithms/index.html b/algorithms/index.html new file mode 100644 index 00000000..57e0e6bf --- /dev/null +++ b/algorithms/index.html @@ -0,0 +1,12 @@ + Data Structures and Algorithms - Awesome GameDev Resources
Skip to content

Data Structures and Algorithms

Estimated time to read: 12 minutes

Students compare and contrast a variety of data structures. Students compare algorithms for tasks such as searching and sorting, while articulating efficiency in terms of time complexity. Students implement data structures and algorithms to support solution designs. Course Catalog

Requirements

Textbook

  • Grokking Algorithms, Aditya Bhargava, Manning Publications, 2016. ISBN 978-1617292231

Student-centered Learning Outcomes

Bloom's Taxonomy

Bloom's Taxonomy on Learning Outcomes

Upon completion of the Data Structures and Algorithms course in C++, students should be able to:

Objective Outcomes

  • Analyze and contrast diverse data structures
  • Evaluate algorithmic efficiency using time complexity analysis
  • Implement, create and apply data structures and algorithms
  • Critically assess sorting algorithms
  • Analyze and contrast search algorithms

Assessment Outcomes

  • Demonstrate the ability to evaluate and differentiate between various data structures, including arrays, linked lists, stacks, queues, trees, and graphs, based on their characteristics and use cases.
  • Evaluate algorithms by analyzing their time complexity, enabling the comparison of different algorithms and making informed decisions about their suitability for specific problem-solving scenarios.
  • Develop and implement solutions using appropriate data structures and algorithms to address real-world problems, demonstrating proficiency in translating solution designs into C++ code.
  • Investigate and compare the merits and drawbacks of brute-force and divide-and-conquer sorting algorithms, including quicksort, mergesort, and insertion sort, in order to make informed choices when selecting sorting techniques for specific scenarios.
  • Examine and compare the characteristics, advantages, and limitations of sequential, binary, depth-first, and breadth-first search algorithms, demonstrating the ability to choose the most suitable search strategy based on problem requirements.

Schedule for Fall 2024

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Event Date
Classes Begin Aug. 26
Add/Drop Aug. 26 - 30
No Classes - College remains open Sept. 20
Indigenous Peoples Day Holiday Observance Oct. 14
Registration for Spring Classes Oct. 28 - Nov. 8
Last Day to Withdraw Nov. 8
Thanksgiving Break Nov. 25 - Nov. 29
Last Day of Classes Dec. 6
Finals Dec. 9 - Dec. 13
Winter Break Dec. 16 - Jan. 10
  • 🔰 Introduction


    • Week 1. 2024/08/26
    • Topic: Introduction to Data Structures and Algorithms
    • Activities:
      • Introduction
      • Read all materials shared on Canvas;
      • Do all assignments on Canvas;
  • 📊 Algorithm Analysis


  • Dynamic Data


    • Week 3. 2024/09/09
    • Topic: Array, Linked Lists, Dynamic Arrays
  • Sorting


    • Week 4. Date: 2024/09/16
    • Topic: Bubble Sort, Selection Sort and Insertion Sort
  • Divide & Conquer


    • Week 5. 2024/09/23
    • Topic: Merge Sort and Quick Sort
  • #⃣ Hashtables


    • Week 6. 2024/09/30
    • Topic: Hashtables
  • ⚠ Midterms


    • Week 7. 2024/10/07
    • Topic: Midterms
  • Stacks & Queues


    • Week 8. 2024/10/14
    • Topic: Stacks and Queues
  • Graphs


    • Week 9. 2024/10/21
    • Topic: Graphs
  • Dijkstra


    • Week 10. 2024/10/28
    • Topic: Dijkstra
  • Prim & Jarnik


    • Week 11. 2024/11/04
    • Topic: Prim's and Jarnik's Algorithm
  • BST


    • Week 12. 2024/11/11
    • Topic: Binary Search Trees
  • Heap and Priority queue


    • Week 13. 2024/11/18
    • Topic: Heap and Priority Queues
  • Break


    • Week 14. 2024/11/25
    • Topic: BREAK. No classes this week.
  • 🧑‍🏭 Project Presentation


    • Week 15. 2024/12/02
    • Topic: Work sessions for final project and presentations
  • ⚠ Finals


    • Week 16. 2024/12/09
    • Topic: Finals Week

Schedule for Spring 2024

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the materials and Canvas for the assignment deadlines.

College dates for the Spring 2024 semester:

Date Event
Jan 16 Classes Begin
Jan 16 - 22 Add/Drop
Feb 26 - March 1 Midterms
March 11 - March 15 Spring Break
March 25 - April 5 Registration for Fall Classes
April 5 Last Day to Withdraw
April 8 - 19 Idea Evaluation
April 12 No Classes - College remains open
April 26 Last Day of Classes
April 29 - May 3 Finals
May 11 Commencement
  • 🔰 Introduction


    • Week 1. 2024/01/15
    • Topic: Introduction to Data Structures and Algorithms
    • Activities:
      • Introduction
      • Read all materials shared on Canvas;
      • Do all assignments on Canvas;
  • 📊 Algorithm Analysis


  • Dynamic Data


    • Week 3. 2024/01/29
    • Topic: Array, Linked Lists, Dynamic Arrays
  • Sorting


    • Week 4. Date: 2024/02/05
    • Topic: Bubble Sort, Selection Sort and Insertion Sort
  • Divide & Conquer


    • Week 5. 2024/02/12
    • Topic: Merge Sort and Quick Sort
  • #⃣ Hashtables


    • Week 6. 2024/02/19
    • Topic: Hashtables
  • ⚠ Midterms


    • Week 7. Date: 2024/02/26
    • Topic: Midterms
  • Stacks & Queues


    • Week 8. 2024/03/04
    • Topic: Stacks and Queues
  • Break


    • Week 09. 2024/03/11
    • Topic: Spring BREAK. No classes this week.
  • Graphs


    • Week 10. 2024/03/18
    • Topic: Graphs
  • Dijkstra


    • Week 11. 2024/03/25
    • Topic: Dijkstra
  • Prim & Jarnik


    • Week 12. 2024/04/01
    • Topic: Prim's and Jarnik's Algorithm
  • BST


    • Week 13. 2024/04/01
    • Topic: Binary Search Trees
  • Heap and Priority queue


    • Week 14. 2024/04/08
    • Topic: Heap and Priority Queues
  • 🧑‍🏭 Project Presentation


    • Week 15. 2024/04/15
    • Topic: Work sessions for final project
  • ⚠ Finals


    • Week 16. 2024/04/22
    • Topic: Finals Week
\ No newline at end of file diff --git a/artificialintelligence/00-introduction/index.html b/artificialintelligence/00-introduction/index.html new file mode 100644 index 00000000..86fca8e2 --- /dev/null +++ b/artificialintelligence/00-introduction/index.html @@ -0,0 +1,12 @@ + Introduction to AI - Awesome GameDev Resources
Skip to content

Introduction to AI

Estimated time to read: 4 minutes

Note

Please refer to this repository in order follow the previous assignments for the first course of AI. https://github.com/InfiniBrains/mobagen

Topics suggested in the survey, and some of my considerations.

  • Procedural Content Generation. Advanced terrain generation - It was previously covered in the last class, I am going to focus other topics
  • AI applied to improve 3D Animation Movement. Follow this https://github.com/sebastianstarke/AI4Animation
  • Topics relating to an AI Fighting game - Mostly Agents, State Machines and latency simulation (reflex)
  • Tactical AI - Linear programming, Restriction and Satisfiability problem
  • Neuron networks / Machine learning - This can be real hard to cover all topics in this class
  • Genetic algorithms and Reinforced learning - Find the best parameters for agent behaviors
  • Chess AI - In a broader sense it is a table game, and it is mostly heuristics and state exploration, chess is awesome to learn optimization techniques to reduce memory usage, space exploration, branch and cut, minmax, planning and satisfaction
  • Prediction algorithms for multiplayer - We can cover some techniques to extrapolate data to compensate lag instead of just mathematically extrapolate position, this is mostly an application of agent theory.
  • Stable diffusion/chatbot - This is a hot topic, I didn't went too deep on that, but I can help you at least surf this wave to create fun stuff for games, such as dialog creation.
  • Procedural audio generation - Most of them use convolutional networks mixed with recurrent neuron network. It can be real hard, so if we cover that, we are just goint to understand the overall idea, and learn how to use pre-determined models available for free.
  • Behavior trees - I have to be honest this is a topic that I don't like, but it is a good tool to have in your toolbox, so I can cover it.
  • ChatGPT and its siblings to generate text - I can cover at least how to modify small scoped model and use for your own intent.
  • Stable Diffusion and its siblings to generate images - I can cover at least how to modify small scoped model and use for your own intent.
  • AI subsystems and how to debug it.
  • Spatial quantization optimized for AI queries - I really enjoy this, but it can be hard to understand, because it uses lots of data structures

Note for myself: game worldbox

\ No newline at end of file diff --git a/artificialintelligence/01-pcg/index.html b/artificialintelligence/01-pcg/index.html new file mode 100644 index 00000000..673ee72b --- /dev/null +++ b/artificialintelligence/01-pcg/index.html @@ -0,0 +1,24 @@ + Procedural Content Generation - Awesome GameDev Resources
Skip to content

Procedural Content Generation

Estimated time to read: 10 minutes

PCG is a technique to algorithmically generate game content and assets, such as levels, textures, sound, enemies, quests, and more. The goal of PCG is to create unique and varied content without the need for manual labor. This can save time and money during development, and also allow for a more dynamic and replayable experience for the player. There are many different algorithms and techniques used in PCG, such as random generation, evolutionary algorithms, and rule-based systems.

PCG can also be used in other areas of game development such as textures, terrain, narrative, quests, and sound effects. With PCG, the possibilities are endless. It's important to note that PCG is not a replacement for human creativity, but rather a tool that can help create new and unique content. It is often used in conjunction with manual design and artistic direction.

Procedural Scenario Generation

Procedural scenario generation is a specific application of procedural content generation that is used to create unique and varied scenarios or missions in a game. These scenarios can include objectives, enemies, and environmental elements such as terrain and buildings.

Two common techniques are rule and noise based algorithms, and you can combine both. But first let's cover Pseudo Random Number Generation.

Random Number Generation

There are a plethora of algorithms to generate random numbers. The expected interface for a random number function is to just call it, (i.e. random()) and receive, ideally, a high quality and non-deterministic random number.

In the best scenario, some systems possess a random device (i.e. an antenna capturing electrical noise from the environment), and the random function will be a system call to it. Natural noise are stateless and subject only to the environmental influence that are (arguably) impossible to tamper. It is an awesome source of noise, but the problem is that device call is slow and not portable. So we need to use pseudo random number generators.

Pseudo Random Number Generation

In this field, the main challenge is to create a function capable to generate a sequence of numbers that are statistically random or, at least, can pass some tests of randomness at some degree of quality. The function must be fast, portable and deterministic, so it can be reproduced in different machines and platforms The function must be able to generate the same sequence of numbers given the same seed.

A common PRNG is XORShift. It is fast, portable and deterministic, but do not deliver a high quality of randomness. It is a good choice for games, but not for cryptography.

uint32_t xorshift32()
+{
+    // seed and state 'x' must be non-zero
+    // you should implement the state initialization differently
+    static uint32_t x = 123456789;
+    // XOR the state with itself shifted by 13, 17 and 5.
+    // you can use other shifts, but these are the most common
+    x ^= x << 13;
+    x ^= x >> 17;
+    x ^= x << 5;
+    return x;
+}
+

As you might notice, the function is not stateless, so you have to initialize the state with a seed. It uses the previous state to generate the next one. A common practice is to use the system time as seed, or a random device call, but you can use any number you want. The seed is the only way to reproduce the sequence of numbers.

Another one is the Mersenne Twister. It is a high quality PRNG, but it is a bit slower.

Noise Generation

Noise based Procedural Terrain Generation

Wave function collapse

Homework

You can either use your favorite game engine or use this repository as an entry point. 1. Use a noise function to generate a heightmap. Optional: Use octaves and fractals to make it feels nicer; 2. Implement islands reference or any other meaningful way to make hydraulically erosion apparent; 3. Implement Hydraulic Erosion to make the scenario feels more realistic. See the section 'HYDRAULIC EROSION' from book AI for Games Third ed. IanMillington; 4. Render the heightmap with biomes colors to make more understandable(ocean, sand, forest, mountains, snow...). Optionally use gradient / ramp functions instead of conditionals.

References

Procedural content generation is a broad topic, and we need to narrow down some applications and algorithms to cover. I carefully covered Maze generation and Scenario Generation here https://github.com/InfiniBrains/mobagen and I invite you to check the examples named maze and scenario. Besides that, Amit Patel have a really nice website focused in many game algorithms, check it out and support his work https://www.redblobgames.com/

Please refer to the book below. We are going to follow the contents mostly from it.

Book: https://amzn.to/3kvtNDS

\ No newline at end of file diff --git a/artificialintelligence/02-sm/index.html b/artificialintelligence/02-sm/index.html new file mode 100644 index 00000000..b54e2702 --- /dev/null +++ b/artificialintelligence/02-sm/index.html @@ -0,0 +1,12 @@ + State machines - Awesome GameDev Resources
Skip to content

State machines

Estimated time to read: 1 minute

Some raw thoughts: - Probably a game of life is a good game to implement to showcase automata, state machines and decision making

\ No newline at end of file diff --git a/artificialintelligence/03-boardgames/index.html b/artificialintelligence/03-boardgames/index.html new file mode 100644 index 00000000..d79f9686 --- /dev/null +++ b/artificialintelligence/03-boardgames/index.html @@ -0,0 +1,12 @@ + Board Games - Awesome GameDev Resources
Skip to content

Board Games

Estimated time to read: 1 minute

Here we are going to cover - Space exploration; - Memory optimization; - MinMax; - Branch and cut; - Rule and goal based decision-making

The game we are going to cover here can be chess, rubbik cube or any card game.

\ No newline at end of file diff --git a/artificialintelligence/04-spatialhashing/index.html b/artificialintelligence/04-spatialhashing/index.html new file mode 100644 index 00000000..69b204e1 --- /dev/null +++ b/artificialintelligence/04-spatialhashing/index.html @@ -0,0 +1,257 @@ + Spatial Hashing - Awesome GameDev Resources
Skip to content

Spatial Hashing

Estimated time to read: 20 minutes

A Spatial Hashing is a common technique to speed up queries in a multidimensional space. It is a data structure that allows you to quickly find all objects within a certain area of space. It is commonly used in games and simulations to speed up, artificial intelligence world queries, collision detection, visibility testing and other spatial queries.

Advantages of the spatial hashing:

  • simple to implement;
  • very fast: as fast as your key hashing function;
  • easy to parallelize;
  • a good choice for big worlds;

Problem with spatial hashing:

  • it is not precise;
  • it is not good for small worlds;
  • needs fine tune to find the right cell size;
  • have to update the bucket when the object moves;
  • find the nearest objects is not trivial, you will have to query the adjacent cells;

Buckets

The core of the spatial hashing is the bucket. It is a container that holds all the objects that are within a certain area of space contained in the cell area or volume. The terms cell and bucket can be interchangeable in this context.

In order to find buckets, you will have to create ways to quantize the world space into a grid of cells. It is hard to define the best cell size, but it is a good practice to make it be a couple of times bigger than the biggest object you have in the world. The cell size will define the precision of the spatial hashing, and the bigger it is, the less precise it will be.

Spatial quantization

The spatial quantization is the process of converting a continuous space into a discrete space. This is the core process of finding the right bucket for an object. Let's assume that we have a 2D space, and we want to find the bucket for a given object.

// assuming Vector2f is a 2D vector with float components;
+// and Vector2i is a 2D vector with integer components;
+// the quantizations function will be:
+Vector2<int32_t> quantized(float_t cellSize=1.0f) const {
+  return Vector2<int32_t>{
+    static_cast<int32_t>(std::floor(x + cellSize/2) / cellSize),
+    static_cast<int32_t>(std::floor(y + cellSize/2) / cellSize)
+  };
+}
+

Data structures

Data structure for the bucket

First, we have to decide the data structure your bucket will use to store the objects. The common choices are:

  • vector<GameObject*> - a vector of pointers to game objects;
  • set<GameObject*> - a set of pointers to game objects;
  • unordered_set<GameObject*> - an unordered_set of pointers to game objects;

  • The problem of using a vector is that it is not efficient to remove, and find an object in it: O(n); but it is efficient to add (amortized O(1)) and iterate over it (random access is O(1)).

  • The underlying data structure of a set and map is a binary search tree, so it is efficient to find, add and remove objects: O(lg(n)), but it is not efficient to iterate over it.
  • Now, the unordered_set and unordered_map is a hash table, so it is efficient to find, add and remove objects: O(1), and it is efficient to iterate over it. The overhead of using a hash table is the memory usage and the hashing function. It will be as fast as your hashing function.

In our use case, we will frequently list all elements in a bucket, we will add and remove elements from it, while they move in the world. So, the best choice is to use an unordered_set of pointers to game objects.

So lets define the bucket:

using std::unordered_set<GameObject*> = bucket_t;
+

Data structure for indexing buckets

Ideally, we are looking for a data structure that will give us a bucket for a given position. We have some candidates for this job:

  • bucket_t[width][height] - a 2D array of buckets;
  • vector<vector<bucket_t>> - a 2D vector of buckets;
  • map<Vector2i, bucket_t> - a map of buckets;
  • unordered_map<Vector2i, bucket_t> - a map of buckets;

  • arrays and vectors are the fastest data structures to use, but they are not good choices if you have a sparse world;

  • map is a binary search tree;
  • unordered_map is a hash table.

The unordered_map is the best choice for this use case.

// quantized world
+unordered_map<Vector2i, go_bucket_t> world;
+

Iterating over the whole world at once

Sometimes we just want to iterate over all objects in the world, add and remove elements. In this case, we can use a unordered_set to store all game objects.

// all game objects for faster global world iteration and cleanup
+go_bucket_t worldObjects;
+

Neighbor cells

When you need to query the neighbors of an object, most of the time you will need to check the current cell and the adjacent cells. You can create a function for that or include the content of it in your logic.

// neighbor buckets. not memory intensive
+// returns the reference to the 9 buckets surrounding the given bucket, including itself
+// but on the usage, you will have to check 
+vector<go_bucket_t*> neighborBuckets(const Vector2i& bucket) {
+    vector<go_bucket_t*> neighbors;
+    neighbors.reserve(9); // to avoid reallocations
+    for (int i = -1; i <= 1; i++)
+        for (int j = -1; j <= 1; j++){
+            neighbors.push_back(&world()[Vector2i{bucket.x + i, bucket.y + j}]);
+        }
+    return neighbors;
+}
+
+// neighbors objects inside the 9 buckets surroundings the given bucket
+// memory intensive.
+go_bucket_t neighborObjects(const Vector2i& bucket) {
+    go_bucket_t neighbors;
+    for (auto& b: neighborBuckets(bucket))
+        neighbors.insert(b->begin(), b->end());
+    return neighbors;
+}
+

Implementation

This sample bellow a bit complex, but I added a bunch of support code to make it more complete, feel free to simplify it to your needs and split into multiple files.

#include <iostream> // for cout
+#include <unordered_map> // for unordered_map
+#include <unordered_set> // for unordered_set
+#include <random> // for random_device and default_random_engine
+#include <cmath> // for floor
+#include <cstdint> // for int32_t
+#include <vector> // for vector
+
+// to allow derivated structs to be used as keys in sorted containers and binary search algorithms
+template<typename T>
+struct IComparable { virtual bool operator<(const T& other) const = 0; };
+// to allow derivated structs to be used as keys in hash based containers and linear search algorithms
+template<typename T>
+struct IEquatable { virtual bool operator==(const T& other) const = 0; };
+
+// generic Vector2
+// requires that T is a int32_t or float_t
+template<typename T>
+#ifdef __cpp_concepts
+requires std::is_same_v<T, int32_t> || std::is_same_v<T, float_t>
+#endif
+struct Vector2:
+        public IComparable<Vector2<T>>,
+        public IEquatable<Vector2<T>> {
+    T x, y;
+    Vector2(): x(0), y(0) {}
+    Vector2(T x, T y): x(x), y(y) {}
+    // operator equals
+    bool operator==(const Vector2& other) const override {
+        return this == &other || (x == other.x && y == other.y);
+    }
+    // operator < for being able to use it as a key in a map or set
+    bool operator<(const Vector2& other) const override {
+        return x < other.x || (x == other.x && y < other.y);
+    }
+
+    // quantize the vector to a 2d index
+    // to nearest integer
+    Vector2<int32_t> quantized(float_t cellSize=1.0f) const {
+        return Vector2<int32_t>{
+                static_cast<int32_t>(std::floor(x + cellSize/2) / cellSize),
+                static_cast<int32_t>(std::floor(y + cellSize/2) / cellSize)
+        };
+    }
+};
+
+// specialized Vector2 for int and float
+using Vector2i = Vector2<int32_t>;
+// float32_t is only available in c++23, so we use float_t instead
+using Vector2f = Vector2<float_t>;
+
+// helper struct to generate unique id for game objects
+// mostly debug purposes
+struct uid_type {
+private:
+    static inline size_t nextId = 0; // to be used as a counter
+    size_t uid; // to be used as a unique identifier
+public:
+    // not thread safe, but it is not a problem for this example
+    uid_type(): uid(nextId++) {}
+    inline size_t getUid() const { return uid; }
+};
+
+// generic game object implementation
+// replace this with your own data that you want to store in the world
+class GameObject: public uid_type {
+    Vector2f position;
+public:
+    GameObject();
+    GameObject(const GameObject& other);
+    // todo: add your other custom data here
+    // when the it moves, it should check if it needs to update its bucket in the world
+    void setPosition(const Vector2f& newPosition);
+    Vector2f getPosition() const { return position; }
+};
+
+// hashing
+namespace std {
+    // Hash specialization for Vector2i
+    template<>
+    struct hash<Vector2i> {
+        size_t operator()(const Vector2i& v) const {
+            // shift and xor operator the other to get a unique hash
+            // the problem of this approach is that it will generate neighboring cells with similar hashes
+            // to fix that, you might want to use a more complex hashing function from std::hash<T>
+            // copy to avoid const cast
+            auto x = v.x, y = v.y;
+            return (*reinterpret_cast<size_t*>(&x) << 32) ^ (*reinterpret_cast<size_t*>(&y));
+        }
+    };
+}
+
+// game object pointer
+using GameObjectPtr = GameObject*;
+// alias for the game object bucket
+using go_bucket_t = std::unordered_set<GameObjectPtr>;
+// alias for the world type
+using world_t = std::unordered_map<Vector2i, go_bucket_t>;
+
+// singletons here are being used to avoid global variables and to allow the world to be used in a visible scope
+// you should use a better wrappers and abstractions in a real project
+// singleton world
+world_t& world() {
+    static world_t world;
+    return world;
+}
+// singleton world objects
+go_bucket_t& worldObjects(){
+    static go_bucket_t worldObjects;
+    return worldObjects;
+}
+
+// Constructor
+GameObject::GameObject(): uid_type(), position({0,0}) {
+    // insert in the world
+    worldObjects().insert(this);
+    world()[position.quantized()].insert(this);
+}
+
+// Copy constructor
+GameObject::GameObject(const GameObject& other): uid_type(other), position(other.position) {
+    // insert in the world
+    worldObjects().insert(this);
+    world()[position.quantized()].insert(this);
+}
+
+// this function requires the world to be in a visible scope like this or change it to access through a singleton
+// if in the movement, it changes its quantized position, we should remove it from the old bucket and insert it in the new one
+void GameObject::setPosition(const Vector2f& newPosition) {
+    world_t& w = world();
+    // bucket ids
+    auto oldId = position.quantized();
+    auto newId = newPosition.quantized();
+    // update position
+    position = newPosition;
+    // check if it needs to update its bucket in the world
+    if (newId == oldId)
+        return;
+    // remove from the old bucket
+    w[oldId].erase(this);
+    if(w[oldId].empty()) [[unlikely]] // c++20
+        w.erase(oldId);
+    // insert in the new bucket
+    w[newId].insert(this);
+}
+
+// random vector2f
+Vector2f randomVector2f(float_t min, float_t max) {
+    static std::random_device rd;
+    static std::default_random_engine re(rd());
+    static std::uniform_real_distribution<float_t> dist(min, max);
+    return Vector2f{dist(re), dist(re)};
+}
+
+// neighbor buckets. not memory intensive
+// returns potentially all 9 buckets surroundings the given bucket, including itself
+std::vector<go_bucket_t*> neighborBuckets(const Vector2i& bucket) {
+    std::vector<go_bucket_t*> neighbors;
+    for (int i = -1; i <= 1; i++){
+        for (int j = -1; j <= 1; j++){
+            auto id = Vector2i{bucket.x + i, bucket.y + j};
+            if(world().contains(id) && !world()[id].empty()) // contains is c++20
+                neighbors.push_back(&world()[id]);
+        }
+    }
+    return neighbors;
+}
+
+// neighbors objects inside the 9 buckets surroundings the given bucket
+// memory intensive. use with caution
+go_bucket_t neighborObjects(const Vector2i& bucket) {
+    go_bucket_t neighbors;
+    for (auto& b: neighborBuckets(bucket))
+        neighbors.insert(b->begin(), b->end());
+    return neighbors;
+}
+
+// dump world
+void dumpWorld() {
+    for (auto& bucket: world()) {
+        std::cout << "bucket: [" << bucket.first.x << "," << bucket.first.y << "]:" << std::endl;
+        for (auto& obj: bucket.second)
+             std::cout <<" - "<< obj->getUid() << ": at (" << obj->getPosition().x << ", " << obj->getPosition().y << ")" << std::endl;
+    }
+    std::cout << std::endl;
+}
+
+int main() {
+    // fill the world with some game objects
+    for (int i = 0; i < 121; i++) {
+        // the constructor will insert it in the world
+        auto obj = new GameObject();
+        // randomly move the game objects
+        // this will update their position and their bucket in the world
+        obj -> setPosition(randomVector2f(-5, 5));
+    }
+
+    // dump the world
+    dumpWorld();
+
+    // remove all game objects
+    for (auto& obj: worldObjects())
+        delete obj;
+
+    // clear refs
+    worldObjects().clear();
+    world().clear();
+
+    return 0;
+}
+

Homework

  1. Implement a spatial hashing for a 3D world;
  2. Implement another space partition technique, such as a quadtree/octree/kdtree and compare:
    1. the performance of both in scenarios of moving objects, searching for objects and adding / removing objects;
    2. memory consumption;
    3. which one will be slow down faster the bigger the world becomes;
\ No newline at end of file diff --git a/artificialintelligence/05-kdtree/index.html b/artificialintelligence/05-kdtree/index.html new file mode 100644 index 00000000..2c74d33c --- /dev/null +++ b/artificialintelligence/05-kdtree/index.html @@ -0,0 +1,198 @@ + KD-Tree - Awesome GameDev Resources
Skip to content

KD-Trees

Estimated time to read: 16 minutes

KD-Trees are a special type of binary trees that are used to partition a k-dimensional space. They are used to solve the problem of finding the nearest neighbor of a point in a k-dimensional space. The name KD-Tree comes from the method of partitioning the space, the K stands for the number of dimensions in the space.

KD-tree are costly to mantain and balance. So use it only if you have a lot of queries to do, and the space is not changing. If you have a lot of queries, but the space is changing a lot, you should use a different data structure, such as a quadtree or a hash table.

Methodology

  • On the binary tree KD-Tree, each node represents a k-dimensional point;
  • The tree is constructed by recursively partitioning the space into two half-spaces.
  • The partitioning is done by selecting a dimension and a value, and then splitting the space into two half-spaces.
  • The dimension and value are selected in such a way that the space is divided into two equal parts.
  • The left child of a node contains all the points for that dimension that are less than the value, and the right child contains all the points that are greater than or equal to the value.

Example

Let's consider the following 2D points:

(3, 1), (7, 15), (2, 14), (16, 2), (19, 13), (12, 17), (1, 9)
+

{ "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "description": "A scatter plot of the points", "data": { "values": [ {"x": 3, "y": 1}, {"x": 7, "y": 15}, {"x": 2, "y": 14}, {"x": 16, "y": 2}, {"x": 19, "y": 13}, {"x": 12, "y": 17}, {"x": 1, "y": 9} ] }, "mark": "point", "encoding": { "x": {"field": "x", "type": "quantitative"}, "y": {"field": "y", "type": "quantitative"} } }

The first step is to define the root. For that we need do define two things: the dimension and the value:

  • For the dimension we need to select the one that has the largest range.
  • For the value we need to select the median of that dimension.

So if we sort the points by the axis, we will have:

SortedByX = (1, 9), (3, 1), (2, 14), (7, 15), (12, 17), (16, 2), (19, 13)
+SortedByY = (3, 1), (16, 2), (1, 9), (19, 13), (7, 15), (3, 15), (12, 17)
+

The largest range is on the X axis, so we will select the median of the X axis as the root. The median of the X axis is (7, 15), and the starting dimension will be X.

For the next level, the left side candidates will be the ones with X less than (7, 15), and the right side, the ones that are greater or equal to (7, 15). But now this level will be governed sorted by Y:

LeftSortedByY  = (3, 1), (1, 9), (2, 14)
+RightSortedByY = (16, 2), (19, 13), (12, 17)
+

Graph showing the first split on X at (7, 15):

The median for the left side is (1, 9), and for the right side is (19, 13).

The current state of the tree is:

{ "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "description": "A scatter plot of the points", "encoding": { "x": {"field": "x", "type": "quantitative"}, "y": {"field": "y", "type": "quantitative"} }, "layer": [ { "data": { "values": [ {"x": 3, "y": 1}, {"x": 7, "y": 15}, {"x": 2, "y": 14}, {"x": 16, "y": 2}, {"x": 19, "y": 13}, {"x": 12, "y": 17}, {"x": 1, "y": 9} ] }, "mark": "point" }, { "data": { "values": [ {"x": 7, "y": 0}, {"x": 7, "y": 20} ] }, "mark": "line", "encoding": { "color": { "value": "#DB745B" } } } ] }

Now we apply the same rules for the children of the left and right nodes.

graph TD
+    Root(07,15)
+    Left(01,09)
+    Right(19,13)
+    LeftLeft(03,01)
+    LeftRight(02,14)
+    RightLeft(16,02)
+    RightRight(12,17)
+    Root --> |x<7| Left
+    Root --> |x>7| Right
+    Left --> |y<9| LeftLeft
+    Left --> |y>9| LeftRight
+    Right --> |y<13| RightLeft
+    Right --> |y>13| RightRight

The tree will be:

{ "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "description": "A scatter plot of the points", "encoding": { "x": {"field": "x", "type": "quantitative"}, "y": {"field": "y", "type": "quantitative"} }, "layer": [ { "data": { "values": [ {"x": 3, "y": 1}, {"x": 7, "y": 15}, {"x": 2, "y": 14}, {"x": 16, "y": 2}, {"x": 19, "y": 13}, {"x": 12, "y": 17}, {"x": 1, "y": 9} ] }, "mark": "point" }, { "data": { "values": [ {"x": 7, "y": 0}, {"x": 7, "y": 20} ] }, "mark": "line", "encoding": { "color": { "value": "#DB745B" } } }, { "data": { "values": [ {"x": 0, "y": 9}, {"x": 7, "y": 9} ] }, "mark": "line", "encoding": { "color": { "value": "#4F72DB" } } }, { "data": { "values": [ {"x": 7, "y": 13}, {"x": 20, "y": 13} ] }, "mark": "line", "encoding": { "color": { "value": "#4F72DB" } } } ] }

And lastly, we will have:

{ "$schema": "https://vega.github.io/schema/vega-lite/v4.json", "description": "A scatter plot of the points", "encoding": { "x": {"field": "x", "type": "quantitative"}, "y": {"field": "y", "type": "quantitative"} }, "layer": [ { "data": { "values": [ {"x": 3, "y": 1}, {"x": 7, "y": 15}, {"x": 2, "y": 14}, {"x": 16, "y": 2}, {"x": 19, "y": 13}, {"x": 12, "y": 17}, {"x": 1, "y": 9} ] }, "mark": "point" }, { "data": { "values": [ {"x": 7, "y": 0}, {"x": 7, "y": 20} ] }, "mark": "line", "encoding": { "color": { "value": "#DB745B" } } }, { "data": { "values": [ {"x": 0, "y": 9}, {"x": 7, "y": 9} ] }, "mark": "line", "encoding": { "color": { "value": "#4F72DB" } } }, { "data": { "values": [ {"x": 7, "y": 13}, {"x": 20, "y": 13} ] }, "mark": "line", "encoding": { "color": { "value": "#4F72DB" } } }, { "data": { "values": [ {"x": 3, "y": 0}, {"x": 3, "y": 9} ] }, "mark": "line", "encoding": { "color": { "value": "#93DB35" } } }, { "data": { "values": [ {"x": 2, "y": 9}, {"x": 2, "y": 20} ] }, "mark": "line", "encoding": { "color": { "value": "#93DB35" } } }, { "data": { "values": [ {"x": 12, "y": 13}, {"x": 12, "y": 20} ] }, "mark": "line", "encoding": { "color": { "value": "#93DB35" } } }, { "data": { "values": [ {"x": 16, "y": 13}, {"x": 16, "y": 0} ] }, "mark": "line", "encoding": { "color": { "value": "#93DB35" } } } ] }

Implementation

#include <iostream>
+#include <vector>
+#include <algorithm>
+
+// vector
+struct Vector2f {
+    float x, y;
+    Vector2f(float x, float y) : x(x), y(y) {}
+    // subscript operator to be used in the KDTree
+    float& operator[](size_t index) {
+        return index%2 == 0 ? x : y;
+    }
+    // distanceSqrd between two vectors
+    float distanceSqrd(const Vector2f& other) const {
+        return (x - other.x)*(x - other.x) + (y - other.y)*(y - other.y);
+    }
+};
+
+// your object data structure
+class GameObject {
+    // your other data
+public:
+    Vector2f position;
+    explicit GameObject(Vector2f position={0,0}) : position(position) {}
+};
+
+// KDNode
+struct KDNode {
+    GameObject* object;
+    KDNode* left;
+    KDNode* right;
+    KDNode(GameObject* object, KDNode* left = nullptr, KDNode* right= nullptr) :
+        object(object),
+        left(left),
+        right(right)
+      {}
+};
+
+// KDTree manager
+class KDTree {
+public:
+    KDNode* root;
+    KDTree() : root(nullptr) {}
+
+    ~KDTree() {
+        // interactively delete the nodes
+        std::vector<KDNode*> nodes;
+        nodes.push_back(root);
+        while (!nodes.empty()) {
+            KDNode* current = nodes.back();
+            nodes.pop_back();
+            if (current->left != nullptr) nodes.push_back(current->left);
+            if (current->right != nullptr) nodes.push_back(current->right);
+            delete current;
+        }
+    }
+
+    void insert(GameObject* object) {
+        if (root == nullptr) {
+            root = new KDNode(object);
+        } else {
+            KDNode* current = root;
+            size_t dimensionId = 0;
+            while (true) {
+                if (object->position[dimensionId] < current->object->position[dimensionId]) {
+                    if (current->left == nullptr) {
+                        current->left = new KDNode(object);
+                        break;
+                    } else {
+                        current = current->left;
+                    }
+                } else {
+                    if (current->right == nullptr) {
+                        current->right = new KDNode(object);
+                        break;
+                    } else {
+                        current = current->right;
+                    }
+                }
+                dimensionId++;
+            }
+        }
+    }
+
+    void insert(std::vector<GameObject*> objects, int dimensionId=0 ) {
+        if(objects.empty()) return;
+        if(objects.size() == 1) {
+            insert(objects[0]);
+            return;
+        }
+        // find the median for the current dimension
+        std::sort(objects.begin(), objects.end(), [dimensionId](GameObject* a, GameObject* b) {
+            return a->position[dimensionId] < b->position[dimensionId];
+        });
+        // insert the median
+        auto medianIndex = objects.size() / 2;
+        insert(objects[medianIndex]);
+
+        // insert the left and right exluding the median
+        insert(std::vector<GameObject*>(objects.begin(), objects.begin() + medianIndex), (dimensionId + 1) % 2);
+        insert(std::vector<GameObject*>(objects.begin() + medianIndex + 1, objects.end()), (dimensionId + 1) % 2);
+    }
+
+    // get the nearest neighbor
+    GameObject* nearestNeighbor(Vector2f position) {
+        return NearestNeighbor(root, position, root->object, root->object->position.distanceSqrd(position), 0);
+    }
+
+    GameObject* NearestNeighbor(KDNode* node, Vector2f position, GameObject* best, float bestDistance, int dimensionId) {
+        // create your own Nearest Neighbor algorithm. That's not hard, just follow the rules
+        // 1. If the current node is null, return the best
+        // 2. If the current node is closer to the position, update the best
+        // 3. If the current node is closer to the position than the best, search the children
+        // 4. If the current node is not closer to the position than the best, search the children
+        // 5. Return the best
+    }
+
+    // draw the tree
+    void draw() {
+        std::vector<KDNode*> nodes;
+        // uses space to shaw the level of the node
+        std::vector<std::string> spaces;
+        nodes.push_back(root);
+        spaces.push_back("");
+        while (!nodes.empty()) {
+            KDNode* current = nodes.back();
+            std::string space = spaces.back();
+            nodes.pop_back();
+            spaces.pop_back();
+            if (current->right != nullptr) {
+                nodes.push_back(current->right);
+                spaces.push_back(space + "  ");
+            }
+            std::cout << space << ":> " << current->object->position.x << ", " << current->object->position.y << std::endl;
+            if (current->left != nullptr) {
+                nodes.push_back(current->left);
+                spaces.push_back(space + "  ");
+            }
+        }
+    }
+};
+
+int main(){
+    // nodes: (3, 1), (7, 15), (2, 14), (16, 2), (19, 13), (12, 17), (1, 9)
+    KDTree tree;
+    std::vector<GameObject*> objects = {
+        new GameObject(Vector2f(3, 1)),
+        new GameObject(Vector2f(7, 15)),
+        new GameObject(Vector2f(2, 14)),
+        new GameObject(Vector2f(16, 2)),
+        new GameObject(Vector2f(19, 13)),
+        new GameObject(Vector2f(12, 17)),
+        new GameObject(Vector2f(1, 9))
+    };
+    // insert the objects
+    tree.insert(objects);
+    // draw the tree
+    tree.draw();
+    // get the nearest neighbor to (10, 10)
+    GameObject* nearest = tree.nearestNeighbor(Vector2f(3, 15));
+    std::cout << "Nearest neighbor to (3, 15): " << nearest->position.x << ", " << nearest->position.y << std::endl;
+    // will print 2, 14
+    return 0;
+}
+

Homework

  1. Implement the KDTree in your favorite language;
  2. Improve the KDTree to support 3D;
  3. Implement more methods to make it dynamic: insert, remove, update;
  4. Modify the KDTree to be balanced on insertion;
+ + \ No newline at end of file diff --git a/artificialintelligence/06-pathfinding/index.html b/artificialintelligence/06-pathfinding/index.html new file mode 100644 index 00000000..36276cd8 --- /dev/null +++ b/artificialintelligence/06-pathfinding/index.html @@ -0,0 +1,301 @@ + Pathfinding - Awesome GameDev Resources
Skip to content

Pathfinding on a 2D grid

Estimated time to read: 15 minutes

Data structures

In order to build an A-star pathfinding algorithm, we need to define some data structures. We need:

  • Index for the quantized map;
  • Position for the game objects;
  • Bucket to query in O(1) if the elements are there;
  • Map from Index to Buckets;
  • Priority Queue to store the frontier of visitable buckets;
  • Vector of Indexes to store the path;

Index and Position

In order to A-star to work in a continuous space, we should quantize the space position into indexes.

// generic vector2 struct to work with floats and ints
+template <typename T>
+// requires T to be int32_t or float_t
+requires std::is_same<T, int32_t>::value || std::is_same<T, float_t>::value // C++20
+struct Vector2 {
+    // data
+    T x, y;
+    // constructors
+    Vector2() : x(0), y(0) {}
+    Vector2(T x, T y) : x(x), y(y) {}
+    // copy constructor
+    Vector2(const Vector2& v) : x(v.x), y(v.y) {}
+    // assignment operator
+    Vector2& operator=(const Vector2& v) {
+        x = v.x;
+        y = v.y;
+        return *this;
+    }
+    // operators
+    Vector2 operator+(const Vector2& v) const {
+        return Vector2(x + v.x, y + v.y);
+    }
+    Vector2 operator-(const Vector2& v) const {
+        return Vector2(x - v.x, y - v.y);
+    }
+    // distance
+    float distance(const Vector2& v) const {
+        return sqrt((x - v.x) * (x - v.x) + (y - v.y) * (y - v.y));
+    }
+    // distance squared
+    float distanceSquared(const Vector2& v) const {
+        return (x - v.x) * (x - v.x) + (y - v.y) * (y - v.y);
+    }
+    // quantize to index2
+    Vector2<int32_t> quantized(float scale=1) const {
+        return {(int32_t)std::round(x / scale), (int32_t)std::round(y / scale)};
+    }
+    // operator < for std::map
+    bool operator<(const Vector2& v) const {
+        return x < v.x || (x == v.x && y < v.y);
+    }
+    // operator == for std::map
+    bool operator==(const Vector2& v) const {
+        return x == v.x && y == v.y;
+    }
+};
+
  • The operators < and == are required to use the Vector2 as a key in a std::map.
  • The quantized method is used to convert a position into an index.
  • The distance and distanceSquared methods are used to calculate the distance between two positions. Is used on A-star to calculate the cost to reach a neighbor or the distance to the goal.
using Index2 = Vector2<int32_t>;
+using Position2 = Vector2<float_t>;
+

I am going to use Index2 to store the quantized index in the grid and Position2 to store the continuous position.

// hash function for std::unordered_map
+template <>
+struct std::hash<Index2> {
+    size_t operator()(const Index2 &v) const {
+        return (((size_t)v.x) << 32) ^ (size_t)v.y;
+    }
+};
+

This hash function is for the std::unordered_map and std::unordered_set to work with Index2.

Bucket

In order to have an easy way to query if a game object is in a bucket, we need to use an std::unordered_set of pointers to the game objects. In order to index them, we will use an std::unordered_map from Index2 to std::unordered_set.

std::unordered_map<Index2, std::unordered_set<GameObject*>> quantizedMap;
+

Costs

Your scenario might have different costs to reach a bucket. You can use an std::unordered_map to store the cost of each bucket.

std::unordered_map<Index2, float> costMap;
+

Walls

You might want to avoid some buckets. You can use an std::unordered_map to store the walls.

std::unordered_map<Index2, bool> isWall;
+

Priority Queue

In order to store the frontier of visitable buckets, we need to use a std::priority_queue of pairs of float and Index2.

std::priority_queue<std::pair<float, Index2>> frontier;
+

Implementation

/**
+In order to build an A-star pathfinding algorithm, we need to define some data structures. We need:
+- Index for the quantized map;
+- Position2 for the game objects;
+- Bucket to query in O(1) if the elements are there;
+- Map from Index to Buckets;
+- Priority Queue to store the frontier of visitable buckets;
+- Vector of Indexes to store the path;
+*/
+
+#include <iostream>
+#include <unordered_map>
+#include <unordered_set>
+#include <cmath>
+#include <vector>
+#include <queue>
+
+using std::pair;
+
+template<typename K, typename V>
+using umap = std::unordered_map<K, V>;
+
+template<typename T>
+using uset = std::unordered_set<T>;
+
+template<typename T>
+using pqueue = std::priority_queue<T>;
+
+// generic vector2 struct to work with floats and ints
+template <typename T>
+// requires T to be int32_t or float_t
+requires std::is_same<T, int32_t>::value || std::is_same<T, float_t>::value // C++20
+struct Vector2 {
+    // data
+    T x, y;
+    // constructors
+    Vector2() : x(0), y(0) {}
+    Vector2(T x, T y) : x(x), y(y) {}
+    // copy constructor
+    Vector2(const Vector2& v) : x(v.x), y(v.y) {}
+    // assignment operator
+    Vector2& operator=(const Vector2& v) {
+        x = v.x;
+        y = v.y;
+        return *this;
+    }
+    // operators
+    Vector2 operator+(const Vector2& v) const {
+        return Vector2(x + v.x, y + v.y);
+    }
+    Vector2 operator-(const Vector2& v) const {
+        return Vector2(x - v.x, y - v.y);
+    }
+    // distance
+    float distance(const Vector2& v) const {
+        return sqrt((x - v.x) * (x - v.x) + (y - v.y) * (y - v.y));
+    }
+    // distance squared
+    float distanceSquared(const Vector2& v) const {
+        return (float)(x - v.x) * (x - v.x) + (float)(y - v.y) * (y - v.y);
+    }
+    // quantize to index2
+    Vector2<int32_t> quantized(float scale=1) const {
+        return {(int32_t)std::round(x / scale), (int32_t)std::round(y / scale)};
+    }
+    // operator < for std::map
+    bool operator<(const Vector2& v) const {
+        return x < v.x || (x == v.x && y < v.y);
+    }
+    // operator == for std::map
+    bool operator==(const Vector2& v) const {
+        return x == v.x && y == v.y;
+    }
+};
+
+using Index2 = Vector2<int32_t>;
+using Position2 = Vector2<float_t>;
+
+// implement this struct to store game objects by yourself
+struct GameObject {
+    Position2 position;
+    // add here your other data
+
+    GameObject(const Position2& position) : position(position) {}
+    GameObject() : position(Position2()) {}
+};
+
+// hash function for std::unordered_map
+template <>
+struct std::hash<Index2> {
+    size_t operator()(const Index2 &v) const {
+        return (((size_t)v.x) << 32) | (size_t)v.y;
+    }
+};
+
+// The game objects organized into buckets
+umap<Index2, uset<GameObject*>> quantizedMap;
+// all game objects
+uset<GameObject*> gameObjects;
+// The cost of each bucket
+umap<Index2, float> costMap;
+// The walls
+umap<Index2, bool> isWall;
+
+// Pathfinding algorithm from position A to position B
+std::vector<Index2> findPath(const Position2& startPos, const Position2& endPos) {
+    // quantize
+    Index2 start = startPos.quantized();
+    Index2 end = endPos.quantized();
+
+    // datastructures
+    pqueue<pair<float, Index2>> frontier; // to store the frontier of visitable buckets
+    umap<Index2, float> accumulatedCosts; // to store the cost to reach a bucket
+
+    // initialize
+    accumulatedCosts[start] = 0;
+    frontier.emplace(0, start);
+
+    // main loop
+    while (!frontier.empty()) {
+        // consume first element from the frontier
+        auto current = frontier.top().second;
+        frontier.pop();
+
+        // quit early
+        if (current == end)
+            break;
+
+        // iterate over neighbors
+        auto candidates = {
+                current + Index2(1, 0),
+                current + Index2(-1, 0),
+                current + Index2(0, 1),
+                current + Index2(0, -1)
+        };
+        for (const auto& next : candidates) {
+            // skip walls
+            if(isWall.contains(current))
+                continue;
+            // if the neighbor has not been visited and is not on frontier
+            // calculate the cost to reach the neighbor
+            float newCost =
+                    accumulatedCosts[current] + // cost so far
+                    current.distance(next) + // cost to reach the neighbor
+                    (costMap.contains(next) ? costMap[next] : 0); // cost of the neighbor
+            // if the cost is lower than the previous cost
+            if (!accumulatedCosts.contains(next) || newCost < accumulatedCosts[next]) {
+                // update the cost
+                accumulatedCosts[next] = newCost;
+                // calculate the priority
+                float priority = newCost + next.distance(end);
+                // push the neighbor to the frontier
+                frontier.emplace(-priority, next);
+            }
+        }
+    }
+
+    // reconstruct path
+    std::vector<Index2> path;
+    Index2 current = end;
+    while (current != start) {
+        path.push_back(current);
+        auto candidates = {
+                current + Index2(1, 0),
+                current + Index2(-1, 0),
+                current + Index2(0, 1),
+                current + Index2(0, -1)
+        };
+        for (const auto& next : candidates) {
+            if (accumulatedCosts.contains(next) && accumulatedCosts[next] < accumulatedCosts[current]) {
+                current = next;
+                break;
+            }
+        }
+    }
+    path.push_back(start);
+    std::reverse(path.begin(), path.end());
+    return path;
+}
+
+int main() {
+/*
+map. numbers are bucket cost, letters are objects, x is wall
+A 0 5 0 0 0
+0 X X 0 0 0
+5 X 0 0 5 0
+0 0 0 5 B 5
+0 0 0 0 5 0
+ */
+
+    // Create 2 Game Objects
+    GameObject a(Position2(0.1, 0.1));
+    GameObject b(Position2(3.9, 4.1));
+
+    // place walls
+    isWall[Index2(1, 1)] = true;
+    isWall[Index2(1, 2)] = true;
+    isWall[Index2(2, 1)] = true;
+
+    // add cost to some buckets
+    // should avoid these:
+    costMap[Index2(2, 0)] = 5;
+    costMap[Index2(0, 2)] = 5;
+    // should pass-through these:
+    costMap[Index2(5, 4)] = 5;
+    costMap[Index2(3, 4)] = 5;
+    costMap[Index2(4, 3)] = 5;
+    costMap[Index2(4, 5)] = 5;
+
+    // add game objects to the set
+    gameObjects.insert(&a);
+    gameObjects.insert(&b);
+
+    // add game objects to the quantized map
+    for (auto& g : gameObjects)
+        quantizedMap[g->position.quantized()].insert(g);
+
+    // find path
+    auto path = findPath(a.position, b.position);
+
+    // todo: smooth the path between the points
+
+    // print path
+    for (auto& p : path)
+        std::cout << "(" << p.x << ", " << p.y << ") ";
+    std::cout << std::endl;
+    // will print (0, 0) (1, 0) (1, -1) (2, -1) (3, -1) (3, 0) (3, 1) (3, 2) (3, 3) (4, 3) (4, 4)
+
+    return 0;
+}
+
\ No newline at end of file diff --git a/artificialintelligence/07-automatedtesting/index.html b/artificialintelligence/07-automatedtesting/index.html new file mode 100644 index 00000000..f5db50ee --- /dev/null +++ b/artificialintelligence/07-automatedtesting/index.html @@ -0,0 +1,12 @@ + AI for Testing - Awesome GameDev Resources
Skip to content

AI as a testing tool

Estimated time to read: 10 minutes

There are several ways to use AI as a testing tool.

  • Analytics
  • Predicting behavior;
  • A/B Testing;
  • Game Environment Automated Testing via AI agents;
  • Test Case Generation;
  • Anti-cheat systems;

Analytics

Analytics is the most common way to use AI as a testing tool. You can use AI to track the user behavior and use the data to improve the game. But with that you can only analyze the past.

You might want to track all user interactions, and use AI to analyze the data and give you insights on how to improve the game. This will be the core of many other AI testing tools.

The common ways to track the user interactions are:

  • Send events to a server;
  • Use a third-party service to track the user interactions;
  • Progression funnels;
  • Heatmaps;
  • User paths;
  • Map all deaths / kills / wins / losses;
  • Store the replay of the user interactions;

Predicting behavior

You can train an AI model to predict the behavior of the user to abandon the game, and intervene before it happens.

In order to achieve this, you can track the user interactions and the consequences of those interactions. You can use a supervised learning algorithm to predict the behavior of the user. Once you discover the pattern, you can intervene and try to change the user behavior.

Example: If the player is loosing too much, you can give him a boost to keep him playing. Or automatically change the difficulty of the game. Another good example is when you predict the user is going to abandon the game, you can give him a reward to keep him playing, or allow him to ask for more lives on social media friends.

Forcing the user to take a break

Sometimes you want to avoid the user to get burned out and force him to take a break. This is a common practice in mobile games.

If your game gives rewards for plaing every day, or every session. You can use AI to predict when the user is going to play again and send him a notification to play again.

This can be a bit shady, but, another use case is to force the game to get harder if the user is playing too much. And when it loses, add a timer to unlock the game again. You can even use this moment to show ads, or ask for money to unlock the game again. Can you think in a game like this?

A/B Testing

A/B testing is a way to compare two versions of a configuration setting or a feature to determine which one is better. It relies on remote configuration and the statistical analysis to determine which one is better.

The process is simple:

  • A developer create 2 scenarios to test. Ex.: the color of a button to buy a product (Red or Blue);
  • The system will randomly select one of the scenarios to show to the user;
  • The system will collect data from the user interaction;
  • The system will compare the data from the two scenarios and determine which one is better;
  • The system will select the best scenario to be the default one;

Game Environment Automated Testing via AI agents

This can be really hard to implement, but in summary is to create AIs that can play as humans and test the game. This can be used to test the game balance, the game difficulty, the game mechanics and the game performance.

If you are just trying to test game rules, or economy, you might wanna try to use a genetic algorithm to evolve the best strategy for a given game.

If you are looking for creating a bot to find hardlocks where the player might fall and not recover, or detect bugs, you might try to use a reinforcement learning algorithm.

This field is so vast that is hard to cover in a single section. I will use this in class just to see how it works.

Test Case Generation

You can use AI to generate test cases for your game. There are plenty of LLMs online that can can read your code and generate test cases for you.

Anti-cheat systems

You can detect cheaters using AI. But you will have to be careful to not ban innocent players. You can use AI to detect patterns of cheating and intervene before it happens.

Possible patterns to detect: Speed hacks; Aim bots; Wall hacks, ESP hacks, Macros; Auto-clickers; Memory hacks. and much more.

Shadow banning

It is a common technique to ban cheaters. You can shadow-ban a cheater by making him play with other cheaters only. This way, the cheater will not know he is banned, but he will only play with other cheaters. This can be done using AI to detect the cheaters and put them in the same match.

Serious Sam 3: BFE (Serious Digital Edition):

The protagonist encounters an invincible, extremely fast and screaming scorpion-like enemy, making the game nearly impossible to progress.

Game Dev Tycoon:

In the pirated versions, players find themselves struggling to make a profit as their virtual game studio is plagued by piracy.

Batman: Arkham Asylum:

Batman's cape doesn't work properly, leading to a rather comical and dysfunctional experience.

Mirror's Edge:

Faith is unable to progress past a certain point due to an inability to grab a ledge, hindering the player's ability to complete the level.

Earthbound (Mother 2):

In pirated copies, the game triggers a constant stream of inescapable enemy encounters.

Can you think in other examples?

\ No newline at end of file diff --git a/artificialintelligence/09-minmax/index.html b/artificialintelligence/09-minmax/index.html new file mode 100644 index 00000000..5688dd4b --- /dev/null +++ b/artificialintelligence/09-minmax/index.html @@ -0,0 +1,12 @@ + MinMax - Awesome GameDev Resources
Skip to content

Min-Max Algorithm

Estimated time to read: 2 minutes

Commonly while you build a tree of options, (say path, decisions, states or anything else), you will have to make a decision at each node of the tree to deepen the search. The min-max algorithm is a nice and easy approach to solve this problem. It might be used in games, decision making, and other fields.

Use cases

Min-Max algorithms shines in places where you will have to maximize the gain and minimize the loss.

Algorithm

Alpha beta prunning

Alpha

  • Alpha is the best value that the maximizer currently can guarantee at that level or above.
  • It is the lower bound that a MAX node can be assigned.
  • MAX node will only update the value of alpha if it finds a value greater than alpha.
  • Starts at -∞.

Beta

  • Beta is the best value that the minimizer currently can guarantee at that level or above.
  • It is the upper bound that a MIN node can be assigned.
  • MIN node will only update the value of beta if it finds a value less than beta.
  • Starts at +∞.
\ No newline at end of file diff --git a/artificialintelligence/CMakeLists.txt b/artificialintelligence/CMakeLists.txt new file mode 100644 index 00000000..dec32f95 --- /dev/null +++ b/artificialintelligence/CMakeLists.txt @@ -0,0 +1,38 @@ +function(add_custom_test TEST_NAME TEST_EXECUTABLE TEST_INPUT_LIST TEST_EXPECTED_OUTPUT_LIST) + list(LENGTH TEST_INPUT_LIST num_tests) + + MATH(EXPR num_tests "${num_tests} - 1") + message(STATUS "Adding ${num_tests} tests for ${TEST_NAME}.") + + set(TEST_COMMANDS "") + foreach(index RANGE 0 ${num_tests}) + list(GET TEST_INPUT_LIST ${index} TEST_INPUT) + list(GET TEST_EXPECTED_OUTPUT_LIST ${index} TEST_EXPECTED_OUTPUT) + + list(APPEND TEST_COMMANDS + COMMAND ${CMAKE_COMMAND} -E echo "Running test: ${TEST_NAME}_${index}. Using input file: ${TEST_INPUT}" + COMMAND ${CMAKE_COMMAND} -E cat ${TEST_INPUT} + COMMAND ${CMAKE_COMMAND} -E echo "==================================" + COMMAND ${CMAKE_COMMAND} -E echo "Expected Output from ${TEST_NAME}_${index}:" + COMMAND ${CMAKE_COMMAND} -E cat ${TEST_EXPECTED_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E echo "==================================" + COMMAND ${TEST_EXECUTABLE} < ${TEST_INPUT} > test_output_${index}.txt + COMMAND ${CMAKE_COMMAND} -E echo "Actual Output from ${TEST_NAME}_${index}:" + COMMAND ${CMAKE_COMMAND} -E cat test_output_${index}.txt + COMMAND ${CMAKE_COMMAND} -E echo "==================================" + COMMAND ${CMAKE_COMMAND} -E compare_files ${TEST_EXPECTED_OUTPUT} test_output_${index}.txt + COMMAND ${CMAKE_COMMAND} -E echo "Test ${TEST_NAME}_${index} passed." + ) + endforeach() + + add_custom_target(${TEST_NAME} + ${TEST_COMMANDS} + DEPENDS ${TEST_EXECUTABLE} + ) +endfunction() + +add_subdirectory(assignments/flocking) +add_subdirectory(assignments/maze) +add_subdirectory(assignments/life) +add_subdirectory(assignments/rng) +#add_subdirectory(assignments/catchthecat) \ No newline at end of file diff --git a/artificialintelligence/animation/index.html b/artificialintelligence/animation/index.html new file mode 100644 index 00000000..1d5b802e --- /dev/null +++ b/artificialintelligence/animation/index.html @@ -0,0 +1,12 @@ + Deep learning - Awesome GameDev Resources
Skip to content
\ No newline at end of file diff --git a/artificialintelligence/assignments/catchthecat/Cat.h b/artificialintelligence/assignments/catchthecat/Cat.h new file mode 100644 index 00000000..e1662b8f --- /dev/null +++ b/artificialintelligence/assignments/catchthecat/Cat.h @@ -0,0 +1,10 @@ +#ifndef CAT_h +#define CAT_h +#include "IAgent.h" + +struct Cat : public IAgent { + std::pair move(const std::vector& world, std::pair catPos, int sideSize ) override{ + return {0,0}; // todo: change this + } +}; +#endif \ No newline at end of file diff --git a/artificialintelligence/assignments/catchthecat/Catcher.h b/artificialintelligence/assignments/catchthecat/Catcher.h new file mode 100644 index 00000000..d5c8208e --- /dev/null +++ b/artificialintelligence/assignments/catchthecat/Catcher.h @@ -0,0 +1,10 @@ +#ifndef CATCHER_H +#define CATCHER_H +#include "IAgent.h" + +struct Catcher : public IAgent { + std::pair move(const std::vector& world, std::pair catPos, int sideSize ) override{ + return {0,0}; // todo: change this + } +}; +#endif \ No newline at end of file diff --git a/artificialintelligence/assignments/flocking/CMakeLists.txt b/artificialintelligence/assignments/flocking/CMakeLists.txt new file mode 100644 index 00000000..0409c64e --- /dev/null +++ b/artificialintelligence/assignments/flocking/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(ai-flocking flocking.cpp) + +file(GLOB TEST_INPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.in) +file(GLOB TEST_OUTPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.out) + +add_custom_test(ai-flocking-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/flocking "${TEST_INPUT_FILES}" "${TEST_OUTPUT_FILES}") + diff --git a/artificialintelligence/assignments/flocking/alignment.gif b/artificialintelligence/assignments/flocking/alignment.gif new file mode 100644 index 00000000..b3f6b392 Binary files /dev/null and b/artificialintelligence/assignments/flocking/alignment.gif differ diff --git a/artificialintelligence/assignments/flocking/alignment.png b/artificialintelligence/assignments/flocking/alignment.png new file mode 100644 index 00000000..48b9256d Binary files /dev/null and b/artificialintelligence/assignments/flocking/alignment.png differ diff --git a/artificialintelligence/assignments/flocking/alignment_cohesion.gif b/artificialintelligence/assignments/flocking/alignment_cohesion.gif new file mode 100644 index 00000000..53ced0a3 Binary files /dev/null and b/artificialintelligence/assignments/flocking/alignment_cohesion.gif differ diff --git a/artificialintelligence/assignments/flocking/all3.gif b/artificialintelligence/assignments/flocking/all3.gif new file mode 100644 index 00000000..415cc12f Binary files /dev/null and b/artificialintelligence/assignments/flocking/all3.gif differ diff --git a/artificialintelligence/assignments/flocking/cohesion.gif b/artificialintelligence/assignments/flocking/cohesion.gif new file mode 100644 index 00000000..159f0c4a Binary files /dev/null and b/artificialintelligence/assignments/flocking/cohesion.gif differ diff --git a/artificialintelligence/assignments/flocking/cohesion.png b/artificialintelligence/assignments/flocking/cohesion.png new file mode 100644 index 00000000..f1214c34 Binary files /dev/null and b/artificialintelligence/assignments/flocking/cohesion.png differ diff --git a/artificialintelligence/assignments/flocking/combined.gif b/artificialintelligence/assignments/flocking/combined.gif new file mode 100644 index 00000000..415cc12f Binary files /dev/null and b/artificialintelligence/assignments/flocking/combined.gif differ diff --git a/artificialintelligence/assignments/flocking/flocking.cpp b/artificialintelligence/assignments/flocking/flocking.cpp new file mode 100644 index 00000000..4e0f283e --- /dev/null +++ b/artificialintelligence/assignments/flocking/flocking.cpp @@ -0,0 +1,191 @@ +#include +#include +#include +#include +#include + +using namespace std; + +struct Vector2 { + double x=0, y=0; + Vector2() : x(0), y(0){}; + Vector2(double x, double y) : x(x), y(y){}; + Vector2(const Vector2& v) = default; + + // unary operations + Vector2 operator-() const { return {-x, -y}; } + Vector2 operator+() const { return {x, y}; } + + // binary operations + Vector2 operator-(const Vector2& rhs) const { return {x - rhs.x, y - rhs.y}; } + Vector2 operator+(const Vector2& rhs) const { return {x + rhs.x, y + rhs.y}; } + Vector2 operator*(const double& rhs) const { return {x * rhs, y * rhs}; } + friend Vector2 operator*(const double& lhs, const Vector2& rhs) { return {lhs * rhs.x, lhs * rhs.y}; } + Vector2 operator/(const double& rhs) const { return {x / rhs, y / rhs}; } + Vector2 operator/(const Vector2& rhs) const { return {x / rhs.x, y / rhs.y}; } + bool operator!=(const Vector2& rhs) const { return (*this - rhs).sqrMagnitude() >= 1.0e-6; }; + bool operator==(const Vector2& rhs) const { return (*this - rhs).sqrMagnitude() < 1.0e-6; }; + + // assignment operation + Vector2& operator=(Vector2 const& rhs) = default; + Vector2& operator=(Vector2&& rhs) = default; + + // compound assignment operations + Vector2& operator+=(const Vector2& rhs) { + x += rhs.x; + y += rhs.y; + return *this; + } + Vector2& operator-=(const Vector2& rhs) { + x -= rhs.x; + y -= rhs.y; + return *this; + } + Vector2& operator*=(const double& rhs) { + x *= rhs; + y *= rhs; + return *this; + } + Vector2& operator/=(const double& rhs) { + x /= rhs; + y /= rhs; + return *this; + } + Vector2& operator*=(const Vector2& rhs) { + x *= rhs.x; + y *= rhs.y; + return *this; + } + Vector2& operator/=(const Vector2& rhs) { + x /= rhs.x; + y /= rhs.y; + return *this; + } + + double sqrMagnitude() const { return x * x + y * y; } + double getMagnitude() const { return sqrt(sqrMagnitude()); } + static double getMagnitude(const Vector2& vector) { return vector.getMagnitude(); } + + static double Distance(const Vector2& a, const Vector2& b) { return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y)); }; + double Distance(const Vector2& b) const { return sqrt((x - b.x) * (x - b.x) + (y - b.y) * (y - b.y)); }; + static double DistanceSquared(const Vector2& a, const Vector2& b) { return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y); }; + double DistanceSquared(const Vector2& b) const { return (x - b.x) * (x - b.x) + (y - b.y) * (y - b.y); }; + + static Vector2 normalized(const Vector2& v) { return v.normalized(); }; + Vector2 normalized() const { + auto magnitude = getMagnitude(); + + // If the magnitude is not null + if (magnitude > 0.) + return Vector2(x, y) / magnitude; + else + return {x, y}; + }; + + static const Vector2 zero; +}; + +const Vector2 Vector2::zero = {0, 0}; + +struct Boid { + Boid(const Vector2& pos, const Vector2& vel): position(pos), velocity(vel){}; + Boid():position({0,0}), velocity({0,0}){}; + Vector2 position; + Vector2 velocity; +}; + +struct Cohesion { + double radius; + double k; + + Cohesion() = default; + + Vector2 ComputeForce(const vector& boids, int boidAgentIndex) { + return {}; + } +}; + +struct Alignment { + double radius; + double k; + + Alignment() = default; + + Vector2 ComputeForce(const vector& boids, int boidAgentIndex) { + return {}; + } +}; + +struct Separation { + double radius; + double k; + double maxForce; + + Separation() = default; + + Vector2 ComputeForce(const vector& boids, int boidAgentIndex) { + return {}; + } +}; + +// feel free to edit this main function to meet your needs +int main() { + // Variable declaration + Separation separation{}; + Alignment alignment{}; + Cohesion cohesion{}; + int numberOfBoids; + string line; // for reading until EOF + vector currentState, newState; + // Input Reading + cin >> cohesion.radius >> separation.radius >> separation.maxForce >> alignment.radius >> cohesion.k >> separation.k >> alignment.k >> numberOfBoids; + for (int i = 0; i < numberOfBoids; i++) { + Boid b; + cin >> b.position.x >> b.position.y >> b.velocity.x >> b.velocity.y; + //cout << "b.y: " << b.y << endl; + currentState.push_back(b); + newState.push_back(b); + } + cin.ignore(256, '\n'); + // Final input reading and processing + // todo: edit this. probably my code will be different than yours. + while (getline(cin, line)) { // game loop + // Use double buffer! you should read from the current and store changes in the new state. + currentState = newState; + double deltaT = stod(line); + // a vector of the sum of forces for each boid. + vector allForces = vector(numberOfBoids, {0, 0}); + // Compute Forces + for (int i = 0; i < numberOfBoids; i++) // for every boid + { + for (int j = 0; j < numberOfBoids; j++) // for every boid combination. Pre-processing loop. + { + // Process Cohesion Forces + auto dist = (currentState[i].position-currentState[j].position).getMagnitude(); + if (i != j && dist <= cohesion.radius) { + allForces[i] += cohesion.ComputeForce(currentState, i); + } + // Process Separation Forces + if (i != j && dist <= separation.radius) { + allForces[i] += separation.ComputeForce(currentState, i); + } + // Process Alignment Forces + if (i != j && dist <= alignment.radius) { + allForces[i] += alignment.ComputeForce(currentState, i); + } + } + } + // Tick Time and Output + // todo: edit this. probably my code will be different than yours. + cout << fixed << setprecision(3); // set 3 decimal places precision for output + for (int i = 0; i < numberOfBoids; i++) // for every boid + { + newState[i].velocity += allForces[i] * deltaT; + newState[i].position += currentState[i].velocity * deltaT; + cout << newState[i].position.x << " " << newState[i].position.y << " " + << newState[i].velocity.x << " " << newState[i].velocity.y << endl; + } + } + + return 0; +} diff --git a/artificialintelligence/assignments/flocking/index.html b/artificialintelligence/assignments/flocking/index.html new file mode 100644 index 00000000..453b3cf1 --- /dev/null +++ b/artificialintelligence/assignments/flocking/index.html @@ -0,0 +1,18 @@ + Flocking - Awesome GameDev Resources

Flocking agents behavior formal assignment

Estimated time to read: 19 minutes

You are in charge of implementing some functions to make some AI agents flock together in a game. After finishing it, you will be one step further to render it in a game engine, and start making reactive NPCs and enemies. You will learn all the basic concepts needed to code and customize your own AI behaviors.

You can code this assignment in any language and/or game engine you want. But I already crafted some boilerplates to maximize your efficiency.

  • (Preferred) Formal and automatically tested: This current repo
  • (Funnier) Interactive with SDL2: MoBaGEn
  • (Hard-core) C++ with CMake: SDL2-CPM-CMake-Example or create your own project from scratch by yourself or follow my Naked SDL + CPM project.
  • I don't recommend using Game Engines for this specific assignment. Historically, students fail on the implementation of the double buffering and the math operations. But if you are confident, go ahead.

Notes on imprecision

The automated tests of the formal assignment may differ somehow because of floating point imprecison, so don't worry much. If you cannot make it pass 100% of the tests, explain how you tried to solve it and what you think is wrong. I will evaluate your code based on your explanation. If you find an issue on my formal description or on the tests, send a PR and I will give you extra points.

What is flocking?

Flocking is a behavior that is observed in birds, fish and other animals that move in groups. It is a very simple behavior that can be implemented with a few lines of code. The idea is that each agent will try to move towards the center of mass of the group (cohesion), and will try to align its velocity with the average velocity of the group (AKA alignment). In addition, each agent will try to avoid collisions with other agents (AKA avoidance).

Formal Notation Review

  • \( \vec{F} \) means a vector \( F \) that has components. In a 2 dimensional vector it will hold \( F_x \) and \( F_y \). For example, if \( F_x = 1 \) and \( F_y = 3 \), then \( \vec{F} = (1,3) \)
  • Simple math operations between vectors are done component-wise. For example, if \( \vec{F} = (1,1) \) and \( \vec{G} = (2,2) \), then \( \vec{F} + \vec{G} = (3,3) \)
  • The notation \( \overrightarrow{P_{1}P_{2}} \) means the vector that goes from \( P_1 \) to \( P_2 \). It is the same as \( P_2-P_1 \)
  • The modulus notation means the length (magnitude) of the vector. \( |\vec{F}| = \sqrt{F_x^2+F_y^2} \) For example, if \( \vec{F} = (1,1) \), then \( |\vec{F}| = \sqrt{2} \)
  • The hat ^ notation means the normalized vector(magnitude is 1) of the vector. \( \hat{F} = \frac{\vec{F}}{|\vec{F}|} \) For example, if \( \vec{F} = (1,1) \), then \( \hat{F} = (\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}) \)
  • The hat notation over 2 points means the normalized vector that goes from the first point to the second point. \( \widehat{P_1P_2} = \frac{\overrightarrow{P_1P_2}}{|\overrightarrow{P_1P_2}|} \) For example, if \( P_1 = (0,0) \) and \( P_2 = (1,1) \), then \( \widehat{P_1P_2} = (\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}}) \)
  • The sum \( \sum \) notation means the sum of all elements in the list going from 0 to n-1. Ex. \( \sum_{i=0}^{n-1} \vec{V_i} = \vec{V_0} + \vec{V_1} + \vec{V_2} + ... + \vec{V_{n-1}} \)

It is your job to implement those 3 behaviors following the ruleset below:

Cohesion

Apply a force towards the center of mass of the group.

  1. The \( n \) neighbors of an agent are all the other agents that are within a certain radius \( r_c \)( < operation ) of the agent. It doesn't include the agent itself;
  2. Compute the location of the center of mass of the group (\( P_{CM} \));
  3. Compute the force that will move the agent towards the center of mass(\( \overrightarrow{F_c} \)); The farther the agent is from the center of mass, the force increases linearly up to the limit of the cohesion radius \( r_c \).

cohesion

\[ P_{CM} = \frac{\sum_{i=0}^{n-1} P_i}{n} \]
\[ \overrightarrow{F_{c}} = \begin{cases} \frac{ \overrightarrow{P_{agent}P_{CM}} }{r_c} & \text{if } |\overrightarrow{P_{agent}P_{CM}}| \leq r_c \\ 0 & \text{if } |\overrightarrow{P_{agent}P_{CM}}| > r_c \end{cases} \]

Tip

Note that the maximum magnitude of \( \overrightarrow{F_c} \) is 1. Inclusive. This value can be multiplied by a constant \( K_c \) to increase or decrease the cohesion force to looks more appealing.

Cohesion Example

cohesion

Separation

It will move the agent away from other agents when they get too close.

  1. The \( n \) neighbors of an agent are all the other agents that are within the separation radius \( r_s \) of the agent;
  2. If the distance to a neighbor is less than the separation radius, then the agent will move away from it inversely proportionally to the distance between them.
  3. Accumulate the forces that will move the agent away from each neighbor (\( \overrightarrow{F_{s}} \)). And then, clamp the force to a maximum value of \( F_{Smax} \).

separation

\[ \overrightarrow{F_s} = \sum_{i=0}^{n-1} \begin{cases} \frac{\widehat{P_aP_i}}{|\overrightarrow{P_aP_i}|} & \text{if } 0 < |\overrightarrow{P_aP_i}| \leq r_s \\ 0 & \text{if } |\overrightarrow{P_aP_i}| = 0 \lor |\overrightarrow{P_aP_i}| > r_s \end{cases} \]

Tip

Here you can see that if we have more than one neighbor and one of them is way too close, the force will be very high and make the influence of the other neighbors irrelevant. This is the expected behavior.

The force will go near infinite when the distance between the agent and the \( n \) neighbor is 0. To avoid this, after accumulating all the influences from every neighbor, the force will be clamped to a maximum magnitude of \( F_{Smax} \).

\[ \overrightarrow{F_{s}} = \begin{cases} \overrightarrow{F_s} & \text{if } |\overrightarrow{F_s}| \leq F_{Smax} \\ \widehat{F_s} \cdot F_{Smax} & \text{if } |\overrightarrow{F_s}| > F_{Smax} \end{cases} \]

Tip

  • You can implement those two math together, but it is better to isolate in two steps to make it easier to understand and debug.
  • This is not an averaged force like the cohesion force, it is a sum of forces. So, the maximum magnitude of the force can be higher than 1.
Separation Example

separation

Alignment

It is the force that will align the velocity of the agent with the average velocity of the group.

  1. The \( n \) neighbors of an agent are all the agents that are within the alignment radius \( r_a \) of the agent, including itself;
  2. Compute the average velocity of the group (\( \overrightarrow{V_{avg}} \));
  3. Compute the force that will move the agent towards the average velocity (\( \overrightarrow{F_{a}} \));

alignment

\[ \overrightarrow{V_{avg}} = \frac{\sum_{i=0}^{n-1} \vec{V_i}}{n} \]
Alignment Example

alignment

Behavior composition

The force composition is made by a weighted sum of the influences of those 3 behaviors. This is the way we are going to work, this is not the only way to do it, nor the more correct. It is just a way to do it.

  • \( \vec{F} = K_c \cdot \overrightarrow{F_c} + K_s \cdot \overrightarrow{F_s} + K_a \cdot \overrightarrow{F_a} \) This is a weighted sum!
  • \( \overrightarrow{V_{new}} = \overrightarrow{V_{cur}} + \vec{F} \cdot \Delta t \) This is a simplification!
  • \( P_{new} = P_{cur}+\overrightarrow{V_{new}} \cdot \Delta t \) This is an approximation!

Warning

A more precise way for representing the new position would be to use full equations of motion. But given timestep is usually very small and it even squared, it is acceptable to ignore it. But here they are anyway, just dont use them in this assignment:

  • \( \overrightarrow{V_{new}} = \overrightarrow{V_{cur}}+\frac{\overrightarrow{F}}{m} \cdot \Delta t \)
  • \( P_{new} = P_{cur}+\overrightarrow{V_{cur}} \cdot \Delta t + \frac{\vec{F}}{m} \cdot \frac{\Delta t^2}{2} \)

Where:

  • \( \overrightarrow{F} \) is the force applied to the agent;
  • \( \overrightarrow{V} \) is the velocity of the agent;
  • \( P \) is the position of the agent;
  • \( m \) is the mass of the agent, here it is always 1;
  • \( \Delta t \) is the time frame (1/FPS);
  • \( cur \) is the current value of the variable;
  • \( new \) is the new value of the variable to be used in the next frame.

The \( \overrightarrow{V_{new}} \) and \( P_{new} \) are the ones that will be used in the next frame and you will have to print to the console at the end of every single frame.

Note

  • For simplicity, we are going to assume that the mass of all agents is 1.
  • In a real game simulation, it would be nice to apply some friction to the velocity of the agent to make it stop eventually or just clamp it to prevent the velocity get too high. But, for simplicity, we are going to ignore it.
Combined behavior examples

Alignment + Cohesion:

alignment+cohesion

Separation + Cohesion:

separation+cohesion

Separation + Alignment:

separation+alignment

All 3:

alignment+cohesion+separation

Input

The input consists in a list of parameters followed by a list of agents. The parameters are:

  • \( r_c \) - Cohesion radius
  • \( r_s \) - Separation radius
  • \( F_{Smax} \) - Maximum separation force
  • \( r_a \) - Alignment radius
  • \( K_c \) - Cohesion constant
  • \( K_s \) - Separation constant
  • \( K_a \) - Alignment constant
  • \( N \) - Number of agents

Every agent is represented by 4 values in the same line, separated by a space:

  • \( x \) - X coordinate
  • \( y \) - Y coordinate
  • \( vx \) - X velocity
  • \( vy \) - Y velocity

After reading the agent's data, the program should read the time frame (\( \Delta t \)), simulate the agents and then output the new position of the agents in the same sequence and format it was read. The program should keep reading the time frame and simulating the agents until the end of the input.

Data Types

All values are double precision floating point numbers to improve consistency between different languages.

Input Example

In this example we are going to test only the cohesion behavior. The input is composed by the parameters and 2 agents.

1.000 0.000 0.000 0.000 1.000 0.000 0.000 2
+0.000 0.500 0.000 0.000
+0.000 -0.500 0.000 0.000
+0.125
+

Output

The expected output is the position and velocity for each agent after the simulation step using the time frame. After printing each simulation step, the program should wait for the next time frame and then simulate the next step. All values should have exactly 3 decimal places and should be rounded to the nearest.

0.000 0.484 0.000 -0.125
+0.000 -0.484 0.000 0.125
+

Grading

10 points total:

  • 3 Points – by following standards;
  • 2 Points – properly submitted in Canvas;
  • 5 Points – passed on test cases;
\ No newline at end of file diff --git a/artificialintelligence/assignments/flocking/norule_neighbohood.gif b/artificialintelligence/assignments/flocking/norule_neighbohood.gif new file mode 100644 index 00000000..68aef73d Binary files /dev/null and b/artificialintelligence/assignments/flocking/norule_neighbohood.gif differ diff --git a/artificialintelligence/assignments/flocking/separation.gif b/artificialintelligence/assignments/flocking/separation.gif new file mode 100644 index 00000000..a9c853f5 Binary files /dev/null and b/artificialintelligence/assignments/flocking/separation.gif differ diff --git a/artificialintelligence/assignments/flocking/separation.png b/artificialintelligence/assignments/flocking/separation.png new file mode 100644 index 00000000..1b265443 Binary files /dev/null and b/artificialintelligence/assignments/flocking/separation.png differ diff --git a/artificialintelligence/assignments/flocking/separation_alignment.gif b/artificialintelligence/assignments/flocking/separation_alignment.gif new file mode 100644 index 00000000..fec86120 Binary files /dev/null and b/artificialintelligence/assignments/flocking/separation_alignment.gif differ diff --git a/artificialintelligence/assignments/flocking/separation_cohesion.gif b/artificialintelligence/assignments/flocking/separation_cohesion.gif new file mode 100644 index 00000000..64b1959e Binary files /dev/null and b/artificialintelligence/assignments/flocking/separation_cohesion.gif differ diff --git a/artificialintelligence/assignments/flocking/separation_math.png b/artificialintelligence/assignments/flocking/separation_math.png new file mode 100644 index 00000000..d5f7411a Binary files /dev/null and b/artificialintelligence/assignments/flocking/separation_math.png differ diff --git a/artificialintelligence/assignments/flocking/tests/test-a.in b/artificialintelligence/assignments/flocking/tests/test-a.in new file mode 100644 index 00000000..c79a0967 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-a.in @@ -0,0 +1,4 @@ +1.000 0.000 0.000 0.000 1.000 0.000 0.000 2 +0.000 0.500 0.000 0.000 +0.000 -0.500 0.000 0.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-a.out b/artificialintelligence/assignments/flocking/tests/test-a.out new file mode 100644 index 00000000..9a72b593 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-a.out @@ -0,0 +1,2 @@ +0.000 0.484 0.000 -0.125 +0.000 -0.484 0.000 0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-b.in b/artificialintelligence/assignments/flocking/tests/test-b.in new file mode 100644 index 00000000..9881ad43 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-b.in @@ -0,0 +1,4 @@ +0.000 1.000 1.000 0.000 0.000 2.000 0.000 2 +0.000 0.500 0.000 0.000 +0.000 -0.500 0.000 0.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-b.out b/artificialintelligence/assignments/flocking/tests/test-b.out new file mode 100644 index 00000000..89726a23 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-b.out @@ -0,0 +1,2 @@ +0.000 0.531 0.000 0.250 +0.000 -0.531 0.000 -0.250 diff --git a/artificialintelligence/assignments/flocking/tests/test-c.in b/artificialintelligence/assignments/flocking/tests/test-c.in new file mode 100644 index 00000000..76062422 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-c.in @@ -0,0 +1,4 @@ +0.000 0.000 0.000 2.000 0.000 0.000 2.000 2 +0.000 0.500 3.000 0.000 +0.000 -0.500 -2.000 0.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-c.out b/artificialintelligence/assignments/flocking/tests/test-c.out new file mode 100644 index 00000000..895d8c54 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-c.out @@ -0,0 +1,2 @@ +0.391 0.500 3.125 0.000 +-0.234 -0.500 -1.875 0.000 diff --git a/artificialintelligence/assignments/flocking/tests/test-d.in b/artificialintelligence/assignments/flocking/tests/test-d.in new file mode 100644 index 00000000..d0e64e5d --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-d.in @@ -0,0 +1,4 @@ +1.000 1.000 1.000 0.000 3.000 2.000 0.000 2 +0.000 0.500 0.000 0.000 +0.000 -0.500 0.000 0.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-d.out b/artificialintelligence/assignments/flocking/tests/test-d.out new file mode 100644 index 00000000..9a72b593 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-d.out @@ -0,0 +1,2 @@ +0.000 0.484 0.000 -0.125 +0.000 -0.484 0.000 0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-e.in b/artificialintelligence/assignments/flocking/tests/test-e.in new file mode 100644 index 00000000..def6c159 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-e.in @@ -0,0 +1,4 @@ +0.000 2.000 1.000 1.000 0.000 2.000 3.000 2 +0.000 0.500 -2.000 -1.000 +0.000 -0.500 2.000 3.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-e.out b/artificialintelligence/assignments/flocking/tests/test-e.out new file mode 100644 index 00000000..ee72bb3c --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-e.out @@ -0,0 +1,2 @@ +-0.250 0.453 -2.000 -0.375 +0.250 -0.109 2.000 3.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-f.in b/artificialintelligence/assignments/flocking/tests/test-f.in new file mode 100644 index 00000000..ecf6ad44 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-f.in @@ -0,0 +1,4 @@ +1.000 0.000 0.000 1.000 1.000 0.000 2.000 2 +0.000 0.500 -1.000 2.000 +0.000 -0.500 3.000 1.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-f.out b/artificialintelligence/assignments/flocking/tests/test-f.out new file mode 100644 index 00000000..62104a06 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-f.out @@ -0,0 +1,2 @@ +-0.094 0.781 -0.750 2.250 +0.406 -0.312 3.250 1.500 diff --git a/artificialintelligence/assignments/flocking/tests/test-g.in b/artificialintelligence/assignments/flocking/tests/test-g.in new file mode 100644 index 00000000..541f6d46 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-g.in @@ -0,0 +1,4 @@ +1.000 2.000 1.000 1.000 1.000 2.000 3.000 2 +0.000 0.500 -2.000 -1.000 +0.000 -0.500 2.000 3.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-g.out b/artificialintelligence/assignments/flocking/tests/test-g.out new file mode 100644 index 00000000..440e7fd1 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-g.out @@ -0,0 +1,2 @@ +-0.250 0.438 -2.000 -0.500 +0.250 -0.094 2.000 3.250 diff --git a/artificialintelligence/assignments/flocking/tests/test-h.in b/artificialintelligence/assignments/flocking/tests/test-h.in new file mode 100644 index 00000000..eadfaa61 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-h.in @@ -0,0 +1,5 @@ +1.000 2.000 1.000 0.000 1.000 2.000 0.000 2 +0.000 0.500 -2.000 -1.000 +0.000 -0.500 2.000 3.000 +0.125 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-h.out b/artificialintelligence/assignments/flocking/tests/test-h.out new file mode 100644 index 00000000..48754d7b --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-h.out @@ -0,0 +1,4 @@ +-0.250 0.391 -2.000 -0.875 +0.250 -0.141 2.000 2.875 +-0.514 0.295 -2.114 -0.765 +0.514 0.205 2.114 2.765 diff --git a/artificialintelligence/assignments/flocking/tests/test-i.in b/artificialintelligence/assignments/flocking/tests/test-i.in new file mode 100644 index 00000000..b74fc071 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-i.in @@ -0,0 +1,5 @@ +3.000 3.000 3.000 1.000 1.000 2.000 3.000 2 +1.000 -0.500 -1.500 1.500 +-1.000 0.500 -1.000 1.000 +0.125 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-i.out b/artificialintelligence/assignments/flocking/tests/test-i.out new file mode 100644 index 00000000..92934cb4 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-i.out @@ -0,0 +1,4 @@ +0.746 -0.251 -2.034 1.992 +-1.175 0.681 -1.403 1.445 +0.401 0.082 -2.760 2.661 +-1.421 0.939 -1.967 2.065 diff --git a/artificialintelligence/assignments/flocking/tests/test-j.in b/artificialintelligence/assignments/flocking/tests/test-j.in new file mode 100644 index 00000000..2648a6d6 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-j.in @@ -0,0 +1,7 @@ +0.000 10.000 1.000 0.000 0.000 1.000 0.000 2 +0.010 0.000 0.000 0.000 +-0.010 0.000 0.000 0.000 +0.125 +0.125 +0.125 +0.25 diff --git a/artificialintelligence/assignments/flocking/tests/test-j.out b/artificialintelligence/assignments/flocking/tests/test-j.out new file mode 100644 index 00000000..5557166e --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-j.out @@ -0,0 +1,8 @@ +0.791 0.000 6.250 0.000 +-0.791 0.000 -6.250 0.000 +1.582 0.000 6.329 0.000 +-1.582 0.000 -6.329 0.000 +2.378 0.000 6.368 0.000 +-2.378 0.000 -6.368 0.000 +3.984 0.000 6.421 0.000 +-3.984 0.000 -6.421 0.000 diff --git a/artificialintelligence/assignments/flocking/tests/test-k.in b/artificialintelligence/assignments/flocking/tests/test-k.in new file mode 100644 index 00000000..fff8d1c4 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-k.in @@ -0,0 +1,3 @@ +1.000 1.000 1.000 1.000 1.000 2.000 0.500 1 +0.000 0.500 1.000 0.000 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-k.out b/artificialintelligence/assignments/flocking/tests/test-k.out new file mode 100644 index 00000000..b662203c --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-k.out @@ -0,0 +1 @@ +0.133 0.500 1.062 0.000 diff --git a/artificialintelligence/assignments/flocking/tests/test-l.in b/artificialintelligence/assignments/flocking/tests/test-l.in new file mode 100644 index 00000000..2bb09cff --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-l.in @@ -0,0 +1,6 @@ +1.000 0.000 0.000 0.000 1.000 0.000 0.000 3 +0.000 0.500 0.000 0.000 +0.000 0.000 1.100 0.000 +0.000 -0.500 0.000 0.000 +0.125 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-l.out b/artificialintelligence/assignments/flocking/tests/test-l.out new file mode 100644 index 00000000..6167e9c1 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-l.out @@ -0,0 +1,6 @@ +0.000 0.488 0.000 -0.094 +0.138 0.000 1.100 0.000 +0.000 -0.488 0.000 0.094 +0.001 0.465 0.009 -0.185 +0.273 0.000 1.083 0.000 +0.001 -0.465 0.009 0.185 diff --git a/artificialintelligence/assignments/flocking/tests/test-m.in b/artificialintelligence/assignments/flocking/tests/test-m.in new file mode 100644 index 00000000..3943005f --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-m.in @@ -0,0 +1,9 @@ +0.000 3.000 1.000 0.000 1.000 2.000 1.100 5 +0.500 0.500 0.000 0.000 +-0.500 -0.500 0.000 0.000 +-0.500 0.500 0.000 0.000 +0.500 -0.500 0.000 0.000 +0.000 0.000 0.000 0.000 +0.125 +0.125 +0.125 diff --git a/artificialintelligence/assignments/flocking/tests/test-m.out b/artificialintelligence/assignments/flocking/tests/test-m.out new file mode 100644 index 00000000..78641d0f --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-m.out @@ -0,0 +1,15 @@ +0.522 0.522 0.177 0.177 +-0.522 -0.522 -0.177 -0.177 +-0.522 0.522 -0.177 0.177 +0.522 -0.522 0.177 -0.177 +0.000 0.000 0.000 0.000 +0.569 0.569 0.378 0.378 +-0.569 -0.569 -0.378 -0.378 +-0.569 0.569 -0.378 0.378 +0.569 -0.569 0.378 -0.378 +0.000 0.000 0.000 0.000 +0.645 0.645 0.607 0.607 +-0.645 -0.645 -0.607 -0.607 +-0.645 0.645 -0.607 0.607 +0.645 -0.645 0.607 -0.607 +0.000 0.000 0.000 0.000 diff --git a/artificialintelligence/assignments/flocking/tests/test-n.in b/artificialintelligence/assignments/flocking/tests/test-n.in new file mode 100644 index 00000000..bbf368a6 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-n.in @@ -0,0 +1,11 @@ +100.000 100.000 100.000 100.000 0.000 0.000 0.000 5 +1.234 5.678 0.000 0.000 +4.321 8.765 0.000 0.000 +5.678 1.234 0.000 0.000 +8.765 4.321 0.000 0.000 +1.234 4.321 0.000 0.000 +0.010 +0.100 +0.001 +1.000 +321.123 diff --git a/artificialintelligence/assignments/flocking/tests/test-n.out b/artificialintelligence/assignments/flocking/tests/test-n.out new file mode 100644 index 00000000..faaabc4e --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-n.out @@ -0,0 +1,25 @@ +1.234 5.678 0.000 0.000 +4.321 8.765 0.000 0.000 +5.678 1.234 0.000 0.000 +8.765 4.321 0.000 0.000 +1.234 4.321 0.000 0.000 +1.234 5.678 0.000 0.000 +4.321 8.765 0.000 0.000 +5.678 1.234 0.000 0.000 +8.765 4.321 0.000 0.000 +1.234 4.321 0.000 0.000 +1.234 5.678 0.000 0.000 +4.321 8.765 0.000 0.000 +5.678 1.234 0.000 0.000 +8.765 4.321 0.000 0.000 +1.234 4.321 0.000 0.000 +1.234 5.678 0.000 0.000 +4.321 8.765 0.000 0.000 +5.678 1.234 0.000 0.000 +8.765 4.321 0.000 0.000 +1.234 4.321 0.000 0.000 +1.234 5.678 0.000 0.000 +4.321 8.765 0.000 0.000 +5.678 1.234 0.000 0.000 +8.765 4.321 0.000 0.000 +1.234 4.321 0.000 0.000 diff --git a/artificialintelligence/assignments/flocking/tests/test-o.in b/artificialintelligence/assignments/flocking/tests/test-o.in new file mode 100644 index 00000000..0be46a24 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-o.in @@ -0,0 +1,9 @@ +2.000 1.000 1.000 1.000 2.000 2.000 2.000 7 +0.500 0.500 0.000 0.000 +-0.500 -0.500 0.000 0.000 +-0.500 0.500 0.000 0.000 +0.500 -0.500 0.000 0.000 +0.000 0.000 0.000 0.000 +1.000 0.000 0.000 0.000 +-1.000 0.000 0.000 0.000 +256.000 diff --git a/artificialintelligence/assignments/flocking/tests/test-o.out b/artificialintelligence/assignments/flocking/tests/test-o.out new file mode 100644 index 00000000..d83be3d1 --- /dev/null +++ b/artificialintelligence/assignments/flocking/tests/test-o.out @@ -0,0 +1,7 @@ +-5103.697 88588.336 -19.938 346.046 +5103.697 -88588.336 19.938 -346.046 +5103.697 88588.336 19.938 346.046 +-5103.697 -88588.336 -19.938 -346.046 +0.000 0.000 0.000 0.000 +425341.933 0.000 1661.488 0.000 +-425341.933 0.000 -1661.488 0.000 diff --git a/artificialintelligence/assignments/genai/index.html b/artificialintelligence/assignments/genai/index.html new file mode 100644 index 00000000..d43c4090 --- /dev/null +++ b/artificialintelligence/assignments/genai/index.html @@ -0,0 +1,31 @@ + GenAI - Awesome GameDev Resources

Stable Diffusion

Estimated time to read: 6 minutes

Introduction

The steps to understand GenAI are as follows:

  1. Artificial Neurons, types of neurons, and activation functions
  2. Networks of Neurons, topology, and training
  3. Stable Diffusion

TLDR;

  1. Install the latest Python. Add it to the environment PATH. [Windows:] Install directly to C drive and select the 3.10.6 version of python, install for all users;
  2. Download latest release from Automatic1111 or clone the repository. Clone/Download it to a subfolder on C drive. Dont use your personal folder.;
  3. Unzip the release. Run the webui bash file [Windows:] webui.bat;
  4. Select a bunch of the images that you are willing to train the network with;
  5. Go to train tab and create a tag for your embeddings;
  6. Use your tag to generate a new image;

Extras:

  1. Go to Hugging face and download 2 Stable Diffusion models. They should be compatible (ex. both should be v2.1 or 1.5).;
  2. Go to checkpoin merger, and merge two or more models.

Artificial Neurons

graph LR
+    I1[Input1] --> |Weight1| N[Neuron]
+    I2[Input2] --> |Weight2| N[Neuron]
+    N --> |Activation| O[Output]

Artificial neurons are the basic building blocks of neural networks and all the other Generative AI algorithms. Neuron networks are composed by:

  • Inputs: The inputs are the data that the network will process. They are the data that the network will use to make decisions. In the case of the neural networks, the inputs are the data that will be processed by the neurons.
  • Weights: The weights are the parameters that the network will learn. They are the parameters that the network will use to make decisions. In the case of the neural networks, the weights are the parameters that will be learned by the neurons.
  • Functions: summing, activation and bias.
    • Summing: The summing function is the function that will sum the inputs and the weights.
    • Activation: The activation function is the function that will decide if the neuron will fire or not or how it will fire or propagate.
    • Bias: The bias is a weight that will be added to the summing function.
  • Output: The output is the result of the neuron. It can be used to feed another neuron or to be the final result of the network.

Depending on how the neuron activates, which math operator it uses to sum the inputs and the weights, and how it propagates the output, the neuron can be classified as: Linear, Binary, Sigmoid, Tanh, and many others that follow math functions to combine data and propagate the output.

Topologies

Material

Generative AI

Generative AI is the new trend in AI. It is the field of AI that is focused on creating new data from existing data using neural networks and other algorithms. Here we will focus on the Stable Diffusion ones.

Stable diffusion pipeline:

graph TD
+  Start --> GausiannNoise
+  Start --> prompt
+  subgraph CLIP
+    direction LR
+    tokenizer --> TokenToEmbedding[Token to Embeddings]
+  end
+  prompt[Prompt] --> CLIP
+  CLIP --> embeddings[Text Embeddings]
+  embeddings --> unet[Text Conditioned 'U-Net']
+  Latents --> |Loop N times| unet
+  unet --> CoditionedLatents[Conditioned Latents]
+  CoditionedLatents --> Scheduler[Scheduler 'Reconstruct'\nto add noise]
+  Scheduler --> Latents
+  GausiannNoise[Gaussian Noise] --> Latents
+  CoditionedLatents --> VAE[Variational\nAutoencoder\nDecoder]
+  VAE --> |Image|Output
\ No newline at end of file diff --git a/artificialintelligence/assignments/index.html b/artificialintelligence/assignments/index.html new file mode 100644 index 00000000..d199e8d1 --- /dev/null +++ b/artificialintelligence/assignments/index.html @@ -0,0 +1,12 @@ + Setup the repos - Awesome GameDev Resources

Setup the repos

Estimated time to read: 12 minutes

  1. Read about Privacy and FERPA compliance here
  2. This one, for in class coding assignments. https://github.com/InfiniBrains/Awesome-GameDev-Resources
  3. MoBaGEn, for interactive assignments. https://github.com/InfiniBrains/mobagen
  4. Install CLion (has CMake embedded) or see #development-tools
  5. Install git and add the binaries to your PATH;
  6. Those repositories are updated constantly. Pay attention to syncing your repo frequently.

Types of coding assignments

There are two types of coding assignments:

  1. Formal: Automatic grading system with automated tests. Some tests might not be fully working for you, talk with me if it doesnt work for you. Or just submit the code on canvas and I will grade it manually. Those should solved using C++ ; It is done following this repo;
  2. Interactive: For the interactive assignments you can choose whatever Game Engine you like, but I recommend you to use the framework I created for you: MoBaGEn. If you use a Game Engine or custom solution for that, you will have to create all debug interfaces to showcase and debug AI which includes, but it is not limited to:

    • Draw vectors to show forces applied by the AI;
    • Menus to change AI parameters;

Danger

Under no circunstaces, you should make your algorithm solutions public. Be aware that I spend so much time creating them and it is hard to me to always create new assignments.

Code assignments

Warning

If you are a enrolled in a class that uses this material, you SHOULD use the institutional and internal git server to be FERPA compliant. If you want to use part of this assignments to build your portfolio I recommend you to use github and make only the webgl build public. If you are just worried about privacy concerns, you can use a private repo on github.

  1. Create an account on github.com or any git hosting on your preference;
  2. Fork repos or duplicate the target repo on your account;

    1. If you want to make it count as part of your portfolio, fork the repo follow this;
    2. If you want to keep it private or be FERPA compliant, duplicate the repo following this.
  3. Add my user to your repo to it with read role. My userid is tolstenko(or your professor) on github, for other options, talk with me in class. Follow this;

  4. Send me a message on canvas with the link to your repo;

Private repo

GitHub doesnt allow private fork of a public repo. If you want to receive my updates into your private repo you can do in 2 different ways:

  1. Create an empty repo. Clone it to your machine. In your GitKraken or any other git tool, add my repo as another origin. Merge from from mine to yours with flag --allow-unrelated-histories (search it)
  2. Create an empty repo and clone it to your machine. From time to time, download the files from my repo and replace the ones I might have updated/fixed.

Recordings

In all interactive assignments, you will have to record a 5 minute video explaining your code. Use OBS or any software you prefer to record your screen while you explain your code. But for this one, just send me the video showing the repo and the repo invites sent to me.

Development tools

I will be using CMake for the classes, but you can use whatever you want. Please read this to understand the C++ toolset.

In this class, I am going to use CLion as the IDE, because it has nice support for CMake and automated tests.

  • Download it here.
  • If you are a student, you can get a free license here.

If you want to use Visual Studio :simple-visualstudio:, be assured that you have the C++ Desktop Development workload installed, more info this. And then go to Individual Components and install CMake Tools for Windows .

Note

If you use Visual Studio :simple-visualstudio:, you won't be able to use the automated testing system that comes with the assignments.

[OPINION]: If you want to use a lightweight environment, don't use VS Code for C++ development. Period. It is not a good IDE for that. It is preferred to code via sublime, notepad, vim, or any other text editor and then compile your code via terminal, and debug via gdb, than using VS Code for C++ development.

Opening the Repos

  1. Fork and clone the repos. Make it private if you can;
  2. Open CLion or yor preferred IDE with CMake support;
  3. Open the CMakeLists.txt as project from the root of the repo;
  4. Wait for the setup to finish (it will download the dependencies automatically, such as SDL);

For the interactive assignments, use this repo and the assignments are located in the examples folder.

For the algorithmic assignments, use this repo and the assignments are located in the docs/artificialintelligence/assignments folder. I created some automated tests to help you debug your code and ensure 100% of correctness. To run them, follow the steps (only available though CLion or terminal, not Visual Studio :simple-visualstudio:):

  1. Go to the executable drop down selection (top right, near the green run or debug button) and select the assignment you want to run. It will be something like ai-XXX where XXX is the name of the assignment;
  2. If you want to test your assignment against the automated inputs/outputs, select the ai-XXX-test build target. Here you should use the build button, not the run or debug button. It will run the tests and show the results in the Console tab;
\ No newline at end of file diff --git a/artificialintelligence/assignments/life/CMakeLists.txt b/artificialintelligence/assignments/life/CMakeLists.txt new file mode 100644 index 00000000..0fa289b8 --- /dev/null +++ b/artificialintelligence/assignments/life/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(ai-life life.cpp) + +file(GLOB TEST_INPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.in) +file(GLOB TEST_OUTPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.out) + +add_custom_test(ai-life-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ai-life "${TEST_INPUT_FILES}" "${TEST_OUTPUT_FILES}") + diff --git a/artificialintelligence/assignments/life/glider.gif b/artificialintelligence/assignments/life/glider.gif new file mode 100644 index 00000000..2029733e Binary files /dev/null and b/artificialintelligence/assignments/life/glider.gif differ diff --git a/artificialintelligence/assignments/life/index.html b/artificialintelligence/assignments/life/index.html new file mode 100644 index 00000000..3311e513 --- /dev/null +++ b/artificialintelligence/assignments/life/index.html @@ -0,0 +1,23 @@ + Game of Life - Awesome GameDev Resources

Game of Life

Estimated time to read: 3 minutes

You are applying for an internship position at Valvule Corp, and they want to test your abilities to manage states. You were tasked to code the Conway's Game of Life.

The game consists in a C x L matrix of cells (Columns and Lines), where each cell can be either alive or dead. The game is played in turns, where each turn the state of the cells are updated according to the following rules:

  1. Any live cell with fewer than two live neighbours dies, as if by underpopulation.
  2. Any live cell with two or three live neighbours lives on to the next generation.
  3. Any live cell with more than three live neighbours dies, as if by overpopulation.
  4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.

glider

The map is continuous on every direction, so the cells on the edges have the cells on the opposite edge as neighbors. It is effectively a toroidal surface.

toroidal

Input

The first line of the input are three numbers, C, L and T, the number of columns, lines and turns, respectively. The next L lines are the initial state of the cells, where each line has C characters, either . for dead cells or # for alive cells.

5 5 4
+.#...
+..#..
+###..
+.....
+.....
+

Output

The output should be the state of the cells after T turns, in the same format as the input.

.....
+..#..
+...#.
+.###.
+.....
+

References

\ No newline at end of file diff --git a/artificialintelligence/assignments/life/life.cpp b/artificialintelligence/assignments/life/life.cpp new file mode 100644 index 00000000..e69de29b diff --git a/artificialintelligence/assignments/life/tests/test-a.in b/artificialintelligence/assignments/life/tests/test-a.in new file mode 100644 index 00000000..ab0ca22b --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-a.in @@ -0,0 +1,4 @@ +3 3 2 +.#. +.#. +... diff --git a/artificialintelligence/assignments/life/tests/test-a.out b/artificialintelligence/assignments/life/tests/test-a.out new file mode 100644 index 00000000..fd22077f --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-a.out @@ -0,0 +1,3 @@ +... +... +... diff --git a/artificialintelligence/assignments/life/tests/test-b.in b/artificialintelligence/assignments/life/tests/test-b.in new file mode 100644 index 00000000..4e471db5 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-b.in @@ -0,0 +1,6 @@ +5 5 16 +..... +..#.. +...#. +.###. +..... diff --git a/artificialintelligence/assignments/life/tests/test-b.out b/artificialintelligence/assignments/life/tests/test-b.out new file mode 100644 index 00000000..7ac715ab --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-b.out @@ -0,0 +1,5 @@ +.#... +..#.. +###.. +..... +..... diff --git a/artificialintelligence/assignments/life/tests/test-c.in b/artificialintelligence/assignments/life/tests/test-c.in new file mode 100644 index 00000000..8151242a --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-c.in @@ -0,0 +1,5 @@ +4 4 9 +.... +.##. +.##. +.... diff --git a/artificialintelligence/assignments/life/tests/test-c.out b/artificialintelligence/assignments/life/tests/test-c.out new file mode 100644 index 00000000..0f954cb4 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-c.out @@ -0,0 +1,4 @@ +.... +.##. +.##. +.... diff --git a/artificialintelligence/assignments/life/tests/test-d.in b/artificialintelligence/assignments/life/tests/test-d.in new file mode 100644 index 00000000..715c8d8e --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-d.in @@ -0,0 +1,6 @@ +5 5 5 +..... +..#.. +..#.. +..#.. +..... diff --git a/artificialintelligence/assignments/life/tests/test-d.out b/artificialintelligence/assignments/life/tests/test-d.out new file mode 100644 index 00000000..e2af25f4 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-d.out @@ -0,0 +1,5 @@ +..... +..... +.###. +..... +..... diff --git a/artificialintelligence/assignments/life/tests/test-e.in b/artificialintelligence/assignments/life/tests/test-e.in new file mode 100644 index 00000000..45d2026e --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-e.in @@ -0,0 +1,6 @@ +6 5 4 +...... +...... +.###.. +...#.. +...... diff --git a/artificialintelligence/assignments/life/tests/test-e.out b/artificialintelligence/assignments/life/tests/test-e.out new file mode 100644 index 00000000..0f94745d --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-e.out @@ -0,0 +1,5 @@ +...... +..##.. +.#..#. +..##.. +...... diff --git a/artificialintelligence/assignments/life/tests/test-f.in b/artificialintelligence/assignments/life/tests/test-f.in new file mode 100644 index 00000000..0c4aabeb --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-f.in @@ -0,0 +1,8 @@ +9 7 4 +......... +..##..... +.####.... +.##.##... +...##.... +......... +......... diff --git a/artificialintelligence/assignments/life/tests/test-f.out b/artificialintelligence/assignments/life/tests/test-f.out new file mode 100644 index 00000000..ac8a50ac --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-f.out @@ -0,0 +1,7 @@ +......... +....##... +...####.. +...##.##. +.....##.. +......... +......... diff --git a/artificialintelligence/assignments/life/tests/test-g.in b/artificialintelligence/assignments/life/tests/test-g.in new file mode 100644 index 00000000..4ffe205e --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-g.in @@ -0,0 +1,12 @@ +11 11 9 +........... +........... +........... +........... +.....#..... +....###.... +.....#..... +........... +........... +........... +........... diff --git a/artificialintelligence/assignments/life/tests/test-g.out b/artificialintelligence/assignments/life/tests/test-g.out new file mode 100644 index 00000000..094968f0 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-g.out @@ -0,0 +1,11 @@ +........... +.....#..... +.....#..... +.....#..... +........... +.###...###. +........... +.....#..... +.....#..... +.....#..... +........... diff --git a/artificialintelligence/assignments/life/tests/test-h.in b/artificialintelligence/assignments/life/tests/test-h.in new file mode 100644 index 00000000..29e5f0ec --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-h.in @@ -0,0 +1,10 @@ +9 9 9 +......... +.##...... +.#....... +..#.#.... +......... +....#.#.. +.......#. +......##. +......... diff --git a/artificialintelligence/assignments/life/tests/test-h.out b/artificialintelligence/assignments/life/tests/test-h.out new file mode 100644 index 00000000..d727674e --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-h.out @@ -0,0 +1,9 @@ +......... +.##...... +.#.#..... +......... +...#.#... +......... +.....#.#. +......##. +......... diff --git a/artificialintelligence/assignments/life/tests/test-i.in b/artificialintelligence/assignments/life/tests/test-i.in new file mode 100644 index 00000000..c49297c2 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-i.in @@ -0,0 +1,14 @@ +13 13 13 +............. +.....#.#..... +...#..#..#... +....#.#.#.... +..###.#.###.. +......#...... +.#####.#####. +......#...... +..###.#.###.. +....#.#.#.... +...#..#..#... +.....#.#..... +............. diff --git a/artificialintelligence/assignments/life/tests/test-i.out b/artificialintelligence/assignments/life/tests/test-i.out new file mode 100644 index 00000000..ed2ea34b --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-i.out @@ -0,0 +1,13 @@ +............. +......#...... +....#.#.#.... +..#.#.#.#.#.. +...##.#.##... +.#....#....#. +..####.####.. +.#....#....#. +...##.#.##... +..#.#.#.#.#.. +....#.#.#.... +......#...... +............. diff --git a/artificialintelligence/assignments/life/tests/test-j.in b/artificialintelligence/assignments/life/tests/test-j.in new file mode 100644 index 00000000..bb4c47c7 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-j.in @@ -0,0 +1,18 @@ +17 17 7 +................. +................. +....###...###.... +................. +..#....#.#....#.. +..#....#.#....#.. +..#....#.#....#.. +....###...###.... +................. +....###...###.... +..#....#.#....#.. +..#....#.#....#.. +..#....#.#....#.. +................. +....###...###.... +................. +................. diff --git a/artificialintelligence/assignments/life/tests/test-j.out b/artificialintelligence/assignments/life/tests/test-j.out new file mode 100644 index 00000000..a3b55fdc --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-j.out @@ -0,0 +1,17 @@ +................. +.....#.....#..... +.....#.....#..... +.....##...##..... +................. +.###..##.##..###. +...#.#.#.#.#.#... +.....##...##..... +................. +.....##...##..... +...#.#.#.#.#.#... +.###..##.##..###. +................. +.....##...##..... +.....#.....#..... +.....#.....#..... +................. diff --git a/artificialintelligence/assignments/life/tests/test-k.in b/artificialintelligence/assignments/life/tests/test-k.in new file mode 100644 index 00000000..6ac5e60c --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-k.in @@ -0,0 +1,18 @@ +17 17 992 +................. +.....#.....#..... +.....#.....#..... +.....##...##..... +................. +.###..##.##..###. +...#.#.#.#.#.#... +.....##...##..... +................. +.....##...##..... +...#.#.#.#.#.#... +.###..##.##..###. +................. +.....##...##..... +.....#.....#..... +.....#.....#..... +................. diff --git a/artificialintelligence/assignments/life/tests/test-k.out b/artificialintelligence/assignments/life/tests/test-k.out new file mode 100644 index 00000000..17f105b7 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-k.out @@ -0,0 +1,17 @@ +................. +................. +....###...###.... +................. +..#....#.#....#.. +..#....#.#....#.. +..#....#.#....#.. +....###...###.... +................. +....###...###.... +..#....#.#....#.. +..#....#.#....#.. +..#....#.#....#.. +................. +....###...###.... +................. +................. diff --git a/artificialintelligence/assignments/life/tests/test-l.in b/artificialintelligence/assignments/life/tests/test-l.in new file mode 100644 index 00000000..15bd73d2 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-l.in @@ -0,0 +1,18 @@ +12 17 100 +............ +.....##..... +....####.... +............ +...######... +....####.... +............ +...##..##... +.##.#..#.##. +....#..#.... +............ +............ +.....##..... +.....##..... +............ +............ +............ diff --git a/artificialintelligence/assignments/life/tests/test-l.out b/artificialintelligence/assignments/life/tests/test-l.out new file mode 100644 index 00000000..c1c114a8 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-l.out @@ -0,0 +1,17 @@ +............ +............ +.....##..... +.....##..... +............ +............ +............ +............ +.....##..... +....####.... +............ +...######... +....####.... +............ +...##..##... +.##.#..#.##. +....#..#.... diff --git a/artificialintelligence/assignments/life/tests/test-m.in b/artificialintelligence/assignments/life/tests/test-m.in new file mode 100644 index 00000000..0b587491 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-m.in @@ -0,0 +1,13 @@ +17 12 180 +................. +.......#......... +.......#......... +........#..#..... +......###.##.#... +..##......##.##.. +..##......##.##.. +......###.##.#... +........#..#..... +.......#......... +.......#......... +................. diff --git a/artificialintelligence/assignments/life/tests/test-m.out b/artificialintelligence/assignments/life/tests/test-m.out new file mode 100644 index 00000000..bfb0b2e9 --- /dev/null +++ b/artificialintelligence/assignments/life/tests/test-m.out @@ -0,0 +1,12 @@ +................. +........#........ +........#........ +.........#..#.... +.......###.##.#.. +...##......##.##. +...##......##.##. +.......###.##.#.. +.........#..#.... +........#........ +........#........ +................. diff --git a/artificialintelligence/assignments/life/toroidal.gif b/artificialintelligence/assignments/life/toroidal.gif new file mode 100644 index 00000000..ba7133b5 Binary files /dev/null and b/artificialintelligence/assignments/life/toroidal.gif differ diff --git a/artificialintelligence/assignments/maze/CMakeLists.txt b/artificialintelligence/assignments/maze/CMakeLists.txt new file mode 100644 index 00000000..0addf998 --- /dev/null +++ b/artificialintelligence/assignments/maze/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(ai-maze maze.cpp) + +file(GLOB TEST_INPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.in) +file(GLOB TEST_OUTPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.out) + +add_custom_test(ai-maze-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ai-maze "${TEST_INPUT_FILES}" "${TEST_OUTPUT_FILES}") + diff --git a/artificialintelligence/assignments/maze/index.html b/artificialintelligence/assignments/maze/index.html new file mode 100644 index 00000000..39c512a3 --- /dev/null +++ b/artificialintelligence/assignments/maze/index.html @@ -0,0 +1,39 @@ + Maze - Awesome GameDev Resources

Maze generation via Depth First Search

Estimated time to read: 11 minutes

You are in charge of implementing a new maze generator for a procedurally generated game. The game is a 2D top-down game, where every level is composed by squared rooms blocked by walls. The rooms are generated by a maze generator, and the walls can be removed to create paths.

There are many ways to implement a maze generation and one of the most common is the Depth First Search algorithm combined with a Random Walk. The algorithm is simple and can be implemented in a recursive or interactive way. The suggested algorithm is as follows:

  1. All walls are up;
  2. Add the top left cell to the stack;
  3. While the stack is not empty:
    1. If the stack top cell has visitable neighbor(s):
      1. Mark the top cell as visited;
      2. List visitable neighbors;
      3. Choose a neighbor (see below);
      4. Remove the wall between the cell and the neighbor;
      5. Add the neighbor to the stack;
    2. Else:
      1. Remove the top cell from the stack, backtracking;
Simulation

If you simulate the algorithm visually, the result would be something similar to the following

Maze generation

Random Number Generation

In order to be consistent with all languages and random functions the pseudo random number generation should follow the following sequence of 100 numbers:

[72, 99, 56, 34, 43, 62, 31, 4, 70, 22, 6, 65, 96, 71, 29, 9, 98, 41, 90, 7, 30, 3, 97, 49, 63, 88, 47, 82, 91, 54, 74, 2, 86, 14, 58, 35, 89, 11, 10, 60, 28, 21, 52, 50, 55, 69, 76, 94, 23, 66, 15, 57, 44, 18, 67, 5, 24, 33, 77, 53, 51, 59, 20, 42, 80, 61, 1, 0, 38, 64, 45, 92, 46, 79, 93, 95, 37, 40, 83, 13, 12, 78, 75, 73, 84, 81, 8, 32, 27, 19, 87, 85, 16, 25, 17, 68, 26, 39, 48, 36];
+

Every call to the random function should return the current number the index is pointing to, and then increment the index. If the index is greater than 99, it should be reset to 0.

Direction decision making

In order to give consistency on how to decide the direction of the next cell, the following procedure should be followed:

  1. List all visitable neighbors of the current cell;
  2. Sort the list of visitable neighbors by clockwise order, starting from the top neighbor: UP, RIGHT, DOWN, LEFT;
  3. If there is one visitable, do not call random, just return the first neighbor found;
  4. If there are two or more visitable neighbors, call random and return the neighbor at the index of the random number modulo the number of visitable neighbors. vec[i]%visitableCount

Input

The input is a single line with three 32 bits unsigned integer numbers, C, L and I, where C and L are the number of columns and lines of the maze, respectively, and I is the index of the first random number to be used> I can varies from 0 to 99.

2 2 0
+

In this case, our map will have 2 columns, 2 lines and the first random number to be used is the first one, 72 because it is pointed by the index 0.

Output

Every line is a combination of underscore _, pipe | and empty characters. The _ character represents a horizontal wall and the | character represents a vertical wall.

The initial state of the 2 x 2 map is:

 _ _  
+|_|_| 
+|_|_| 
+

In order to interactively solve this, we will add (0,0) to the queue.

The neighbors of the current top (0,0) are RIGHT and DOWN, (0,1) and (1,0) respectively.

Following the clockwise order, the sorted neighbor list will be [(0,1), (1,0)].

We have more than one neighbor, so we call random. The current random index is 0, so the random number is 72 and we increment the index.

The random number is 72 and the number of neighbors is 2, so the index of the neighbor to be chosen is 72 % 2 = 0, so we choose the neighbor (0,1), the RIGHT one.

The wall between (0,0) and (0,1) is removed, and (0,1) is added to the queue. Now it holds [(0,0), (0,1)]. The map is now:

 _ _  
+|_ _| 
+|_|_| 
+

Now the only neighbor of (0,1) is DOWN, (1,1). So no need to call random, we just choose the only neighbor.

The wall between (0,1) and (1,1) is removed, and (1,1) is added to the queue. Now it holds [(0,0), (0,1), (1,1)]. The map is now:

 _ _  
+|_  | 
+|_|_| 
+

Now the only neighbor of (1,1) is LEFT, (1,0). So no need to call random, we just choose the only neighbor.

The wall between (1,1) and (1,0) is removed, and (1,0) is added to the queue. Now it holds [(0,0), (0,1), (1,1), (1,0)]. The map is now:

 _ _  
+|_  | 
+|_ _| 
+

Now, the current top of the queue is (1,0) and there isn't any neighbor to be visited, so we remove the current top (1,0) from the queue and backtrack. The queue is now [(0,0), (0,1), (1,1)].

The current top is (1,1) and there isn't any neighbor to be visited, so we remove (1,1) from the queue and backtrack. The queue is now [(0,0), (0,1)].

The current top is (0,1) and there isn't any neighbor to be visited, so we remove (0,1) from the queue and backtrack. The queue is now [(0,0)].

The current top is (0,0) and there isn't any neighbor to be visited, so we remove (0,0) from the queue and backtrack. The queue is now empty and we finish priting the map state. The final map is:

 _ _  
+|_  | 
+|_ _| 
+

And this the only one that should be printed. No intermediary maps should be printed.

Example 1

Input 1

3 3 0
+

Output 1

 _ _ _  
+|_  | | 
+|  _| | 
+|_ _ _| 
+

Example 2

Input 2

3 3 1
+

Output2

 _ _ _  
+| |_  | 
+|_ _  | 
+|_ _ _| 
+
\ No newline at end of file diff --git a/artificialintelligence/assignments/maze/maze.cpp b/artificialintelligence/assignments/maze/maze.cpp new file mode 100644 index 00000000..725a2423 --- /dev/null +++ b/artificialintelligence/assignments/maze/maze.cpp @@ -0,0 +1,11 @@ +#include +#include +#include +using namespace std; + +int main() +{ + +} + + diff --git a/artificialintelligence/assignments/maze/maze.gif b/artificialintelligence/assignments/maze/maze.gif new file mode 100644 index 00000000..a942e802 Binary files /dev/null and b/artificialintelligence/assignments/maze/maze.gif differ diff --git a/artificialintelligence/assignments/maze/tests/maze-a.in b/artificialintelligence/assignments/maze/tests/maze-a.in new file mode 100644 index 00000000..936f0031 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-a.in @@ -0,0 +1 @@ +1 1 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-a.out b/artificialintelligence/assignments/maze/tests/maze-a.out new file mode 100644 index 00000000..944ae382 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-a.out @@ -0,0 +1,2 @@ + _ +|_| diff --git a/artificialintelligence/assignments/maze/tests/maze-b.in b/artificialintelligence/assignments/maze/tests/maze-b.in new file mode 100644 index 00000000..8fab5644 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-b.in @@ -0,0 +1 @@ +2 2 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-b.out b/artificialintelligence/assignments/maze/tests/maze-b.out new file mode 100644 index 00000000..eea1782f --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-b.out @@ -0,0 +1,3 @@ + _ _ +|_ | +|_ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-c.in b/artificialintelligence/assignments/maze/tests/maze-c.in new file mode 100644 index 00000000..3609812d --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-c.in @@ -0,0 +1 @@ +5 5 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-c.out b/artificialintelligence/assignments/maze/tests/maze-c.out new file mode 100644 index 00000000..b1e1c79d --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-c.out @@ -0,0 +1,6 @@ + _ _ _ _ _ +|_ | _| +| _| |_ | +|_ | _| | +| _|_| | +|_ _ _ _|_| diff --git a/artificialintelligence/assignments/maze/tests/maze-d.in b/artificialintelligence/assignments/maze/tests/maze-d.in new file mode 100644 index 00000000..a522bf9a --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-d.in @@ -0,0 +1 @@ +5 5 1 diff --git a/artificialintelligence/assignments/maze/tests/maze-d.out b/artificialintelligence/assignments/maze/tests/maze-d.out new file mode 100644 index 00000000..5e6ab174 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-d.out @@ -0,0 +1,6 @@ + _ _ _ _ _ +| |_ _ _ | +|_ _ _ | | +| _ | | | +|_ | | | | +|_ _|_ _ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-e.in b/artificialintelligence/assignments/maze/tests/maze-e.in new file mode 100644 index 00000000..485ac4e3 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-e.in @@ -0,0 +1 @@ +10 1 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-e.out b/artificialintelligence/assignments/maze/tests/maze-e.out new file mode 100644 index 00000000..a34e3c3b --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-e.out @@ -0,0 +1,2 @@ + _ _ _ _ _ _ _ _ _ _ +|_ _ _ _ _ _ _ _ _ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-f.in b/artificialintelligence/assignments/maze/tests/maze-f.in new file mode 100644 index 00000000..5cc5cc37 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-f.in @@ -0,0 +1 @@ +1 10 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-f.out b/artificialintelligence/assignments/maze/tests/maze-f.out new file mode 100644 index 00000000..90bb8433 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-f.out @@ -0,0 +1,11 @@ + _ +| | +| | +| | +| | +| | +| | +| | +| | +| | +|_| diff --git a/artificialintelligence/assignments/maze/tests/maze-g.in b/artificialintelligence/assignments/maze/tests/maze-g.in new file mode 100644 index 00000000..9c1db636 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-g.in @@ -0,0 +1 @@ +20 2 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-g.out b/artificialintelligence/assignments/maze/tests/maze-g.out new file mode 100644 index 00000000..8a3c2776 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-g.out @@ -0,0 +1,3 @@ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +|_ | | | _ _ _ |_ _ _ _ |_ _ | +|_ _ _|_ _|_ _|_ _ _ _ _ _ _ _|_ _ _ _ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-h.in b/artificialintelligence/assignments/maze/tests/maze-h.in new file mode 100644 index 00000000..8349813f --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-h.in @@ -0,0 +1 @@ +2 20 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-h.out b/artificialintelligence/assignments/maze/tests/maze-h.out new file mode 100644 index 00000000..6d7b54d2 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-h.out @@ -0,0 +1,21 @@ + _ _ +|_ | +| _| +|_ | +| | | +| _| +| | | +|_ | +| | | +| | | +| _| +| | | +| | | +| | | +|_ | +| | | +| _| +| | | +| | | +| | | +|_ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-i.in b/artificialintelligence/assignments/maze/tests/maze-i.in new file mode 100644 index 00000000..9c1db636 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-i.in @@ -0,0 +1 @@ +20 2 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-i.out b/artificialintelligence/assignments/maze/tests/maze-i.out new file mode 100644 index 00000000..8a3c2776 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-i.out @@ -0,0 +1,3 @@ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +|_ | | | _ _ _ |_ _ _ _ |_ _ | +|_ _ _|_ _|_ _|_ _ _ _ _ _ _ _|_ _ _ _ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-j.in b/artificialintelligence/assignments/maze/tests/maze-j.in new file mode 100644 index 00000000..e9f12c7f --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-j.in @@ -0,0 +1 @@ +100 100 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-j.out b/artificialintelligence/assignments/maze/tests/maze-j.out new file mode 100644 index 00000000..2c3a30d2 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-j.out @@ -0,0 +1,101 @@ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +|_ | | | _| _| _ _ | _ _ _ | |_ _ _ _ _ | _ _ _ |_ _ _ _ _ | | |_ | _ |_ _ | _ _| _ | _ _ _ _ _ _ | _ _ _ | | | _ | _ _ _ _ _ _| _ _ | +| _| |_ _| | _ _|_ | | _| | |_ _ | _ _|_ _ _ _ _ _| _|_ | _ _|_ _ _| | _ _| _| |_ _| | _|_ | _| |_ _ |_ |_ _| |_| | _| _|_| |_ _ | |_| | |_ _| | | |_ _|_ _ _ _ | _|_ | | | +|_ |_ _ | | | _|_ _|_ | | | _ _|_| |_ _ _ _ _|_ _ |_| | | | _ _| |_ _ |_ | |_ | _| |_ _ _ _| _|_ |_ | | | _| _ _|_ _| |_ _ _| | |_ | | | | _| |_ _ _ _ | |_ _| _ _| _| +| _| _ _| | |_|_ _ _ _ |_ _|_ | | |_ _ | | | |_ _ _| _|_ _| |_ _| | | |_ |_|_ | | | | | _ _ |_ _| | |_ _| _ _ |_ _ | _ _| |_ | |_ _ | | _ _ _| _| |_ _ | | _|_ | +| |_ _ | | | | _ _| | _ _| | _ _| |_ _| _ _| |_ _|_ _| _ | _| | _ _|_ _ | _|_ _ _|_ | _|_ _|_ _| _ _|_ _ _ _ _ _|_ _ _| _| | |_| |_ | | _|_ |_ _| |_ |_ _ |_ _ _|_ | | |_ | _| +|_ _ _ _| _| | | _| _| | |_ _ _ _| _ _| | _| | _ | | |_ _| | _ _| _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ |_ _|_ | | _| |_ _ | | _ _| _ _ _|_ | _ | | |_ _ _| +|_ _ _ | |_ _ _| |_ _ _|_ _ _ | | | |_ _ | |_ | |_| |_| _| _|_ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | | | |_ |_ _ | _ _| | _| _ _ _ _| | | _| | |_ _ _ | +| _ | |_ | _ _|_ _ _ |_ | |_| |_ _|_ _ |_ _| _|_ | | _| |_ _ |_|_ |_|_ | | | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_| | |_|_ | | _ _|_| |_ _| _| _| | _|_ _| |_ | | | +| | | _| _|_ | _|_ _ |_ _ |_ _ _ | | |_ _ | | _| | |_ _ _ | |_ _ |_ _ _ _| |_ _| | | | _|_|_ | | | _ _| _| _| | | _|_ _ |_ | _ _|_ | | |_ _ | | | _|_ _| _ |_ |_| |_ | +| |_ _| _| | | | |_ _ |_| | _|_ _| _ _| | |_ |_ _ _ _ |_ | |_ | | _ _| _ _|_ _|_ _ _ _ _| |_ _| _ _ _ _| | _| | | | | |_ _| | _ _| |_ _| _ _| | | | | _| _| _ _|_ |_ | | +| _ _ _| | | | |_| |_ | |_ | |_ _|_ _ | _ _| |_ _ _ _ _ _| _| |_| _| | | | | _ _ _| _ _ _ | _ _|_ _| _|_ _| |_ | |_| |_ _ _|_ _ _ _| _ _| | _| | |_ | _| |_ _ _ _ _| _| | +| |_ _ _ _ | |_ _|_ _ _| _|_ _ _ _ _ _|_ |_ | _|_ _ _ _ _ | | _| _|_ |_ _| |_ _ _ | | _ _ _ _|_ _ _ _ _| _| _ |_ |_|_ |_ | _ _| | | |_ _ | |_ _ | |_ _| _ _ _| _| +|_ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| |_ _ _ _ _| |_| _| | _| | |_ _ | _|_ _| _ _ _ _ | |_| _| _| _ _|_ | _| _| | | |_| _| |_ _|_ _ |_|_ _ | |_ | | _|_ _ |_ _ | +| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ _|_ _ _| |_| | | | | |_ _ |_ _ | | _| |_ _ | _| |_ _ _ _ _| | _| _| |_ _ _| |_ _ |_ _ | |_| _| | |_ _ |_ _ |_| +| |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ |_| _ _ | | _|_ _|_| |_ _ _ | _| | |_ _ _| _ _| |_ | _| _ _ _| |_ _ _ | _ _|_ _ _| _ _ _| | |_| _| |_ _ | | |_ | +| _ _ _| | | _|_|_ | | | _ _|_ _ _ |_| | |_| _| _ _|_ _ _| _| | _ _|_ | _ |_ | |_ | _| _ | _|_ |_ | _|_ |_ _ | _| _ _| | _ _ _| _| | _ _| _ _|_ |_ _ | | |_ | | | +| | | _ _|_ |_ _ _ _ _| |_ _|_ _ |_ _|_ | | | _ _| | | _ |_ _ _ _| |_ | _| _|_|_ _| | | |_|_ _ _| _| | _|_ _| | | | _| | _| | _ _ _|_ |_ | | |_ | | |_| |_ |_ | | +| _| | | |_ _ _ _ _ _ | _ |_ |_ _ _ _| |_ _ | _|_| | _| | | _ _ _ _|_ |_| | _| _ |_ _| | _|_ _ _ _ _| _|_ _ _| _ _| _|_|_ _ _ |_ |_ _ _ _ | | | | |_ _ _| |_ _|_ _ _ | | | | | +|_| _| |_ _| _ | _ _| |_ _ _ _| _| _ |_ |_ |_ _ |_ _| _| |_ _ _| |_ | _| | | | _|_| _ | _ _ _| _ _ _ | |_ _ _ | |_ _|_ _ _ | | | |_ _| | _ _ _ _ _ _ | |_ _|_ _| | +| _|_ _ | | | _|_ _ | _ | _ _| _| _ _|_ |_ _ |_ _ |_ |_| _| _ _|_ _ _| | _ _| |_ _| | _ _| |_ _ | _ _ | _| |_ _ _|_ _|_ _ | | _| _ _| _ _|_| _ |_ _|_ _|_ _ | | | +| _ |_ |_ _| |_ | _| | | | |_ _| _| |_ _ _ _ _| |_ _ _|_ | | _ _| | _ _ | |_| | | | | | _ _| | _| |_ _ | |_| _| | _| _| |_ _| | | |_ | _| _ _ _| |_ | _ _ _ |_ _| | | +| _|_ | | | | | | | _|_ _|_ _ | |_ _ | | |_ _ _ _ _ _| |_ | _|_| _ |_|_ _ _| |_ _| |_| | | |_ _| _|_ _ _|_ |_ _ |_ _ _| _ _|_ _ _ _ _|_ _ |_ |_ _ _ _| _| | _ _ _|_ _| _| | +|_| _ _|_ _| | |_ _ _|_ _ _ | | |_ |_| | | _| |_ _ | _| _| |_ _ |_ _| _ _ _ |_ _ _ | _|_ _|_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _ _| _ _| _|_ _ _ | |_ _ | +| _|_ _ _ _|_ _ _ _ _ _|_ _| _| _| _| _| _ _ _| | |_ _ _|_ | | _|_ _ |_ |_ |_ _ | |_ | _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ _ _ | |_ _| _| _| +| | | |_ _ _ _ _|_ | _ _ _| _| _| | | | | | _ _| | _ | |_ _|_ | |_ |_ _ _| | |_ _| _| |_ |_ _ _| |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_| | | _ _| | _| _ _| | | _| | +| _| |_ _ _| _ _ _| _ _| | _ _ _| _| _| | |_ |_ | _|_ | | _ _ _|_ | | | _ _ _| |_ _|_ |_ _|_ | _ _| | _|_ | _|_|_ | | | _ _| | _ _ _ | | _| | | _| | _ _| _ _| | |_ _ | +|_ | | | | |_ |_ _ _ _|_ _ | _|_ _ _| | | | | _ _ |_ _|_| _ _ |_ _| _ _| | | _| _ _ _ _ _|_ | _| |_ _| |_ _ _ _ _| |_ _| _ _| | _ | | | |_ | | | |_ _ | |_ | | _ _ _| +| | | |_ _| |_ _ _|_ |_ _ _ _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | |_| _ _| | |_ _| _| |_| | _| | _| _|_ _ | | | _ _ _ _ _ _ _| |_ _ _| |_ |_| |_| |_ _ | | | _| |_ | | +| _|_ _ | _ _ _|_ _ _ | | _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | _ _ _| _| _ _|_ _| | _ _| | |_ _| |_ _ _ | _ _| _| _ |_ |_ _ _ _| _ _|_| |_ | |_ _ _|_| +|_ | _ _|_| |_ _ _ _|_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _ _ | |_ _| _ _ |_|_ | _ _| | _|_ _ | | |_ _ | |_| _| _ _|_ |_ _| _| _ |_ | |_ _ _ _ | +| _|_ | | |_ _ | _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | _|_ _ _| _| | |_| |_ | | |_ _ | | |_ | | | _| |_ _ _ _ _| _ |_| _| _ _|_ | _ _| | +| | _ _| |_ _| _ _| | |_ _ _ _ | | |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | | _ _|_| |_ _ |_ |_ _|_ | | _| |_ _ | |_| |_ | | | | | |_ | _ _ | | _| _| |_ _ _ _ _| | | _ | +| |_ _ _ _| _ _| | _| _ _ _ |_ _ _|_ |_ | _|_|_ | | | _ _| |_ _ | | | _ _|_ | | |_ _ |_ _ | | | |_ |_ _ | |_ _ _ |_ _ _|_| |_ | | |_ _ | | | | | |_ _ | | _|_|_ |_| +| |_ _ _ | | |_ _ |_ _ |_ _ _| |_ _ _|_ _ _ _ _| |_ _| _ _|_ | | _| | |_ _| | _ _| |_ _| _ _| | _| | | |_|_ | | _ _|_| |_ _ | | _| _| _ _ _| |_ _| | |_ | | | |_ _|_ |_ | +|_ _ _ _ |_ _|_ _ |_ _ _ | _ _ _|_ | | _ |_ _ _ _ | _ _ | _|_ _| |_ | |_ _ _ _| _ _| _ |_ _ _| |_ | _ _|_ | | |_ _ | _|_ _| _| | | | _ _| | _| _| | | | _ |_| | | | +| _ _ |_ |_ _|_ _ | _|_ _ _| |_| | | |_ _ _ _ _ _| |_ _| |_| _ |_ |_ _| | _ | | | |_ _| _ |_ |_ _| | _ _| |_ _| _ _| | _ _ _|_ |_ |_ | _|_ _| _| _| | |_ | | _| | | | +| | | _ _|_ | _ _| |_ _| _| _ _| | _| | | | _ _|_ | | _| _| _ _|_ | _| | |_ |_ _|_ _ |_|_ | | _| _ _| _ _ _| _ _| _| |_ _ | |_ | | | | | _ _ _| _|_ _ _ _ _|_ _| _| |_| +| | |_ _ _ _ _|_| | |_ | _ _| | | | |_ | |_| |_ |_ | _|_| | _| |_ _ _ _ _| | |_ | | _ |_ _ | |_| | _| | | | | | |_ _ _ _| | |_ _ _|_ | |_|_ _ | | _ _ _ _ | |_ _| | +| |_ | _ _ | _| | _|_ | _|_| _| | |_ |_ | | | | | _ | |_ _ _ _ | _|_|_ | | |_| | _ _ _| | | _| | _| |_ _|_ _|_ |_ _ | _| _|_ _ _ _ | |_ _ _| | |_|_ _ | | _| |_ _ |_| | +|_ |_ _ _| _| |_ _| |_ _| |_ _ |_ _| _|_ _|_ |_ _ _|_ _ _| _|_ |_| | |_ _ _ _ _| _| _| | | _ _| | |_ | |_ _ _ _ | |_ _ _| |_ _|_ _ _ | |_ _ _ _| | _|_ _ _| | |_ _ _|_ | | _| +| | | _ _ _| |_ _ _ | |_ | | _|_ _ | | _ _ _ | | | _| _| _| _|_ _| | | _ |_ _ _| | | |_ | _| | |_ _ |_ _ _ _|_ _ | | _ _ _ |_ _|_ _ | |_ _ _ _ _ | _| |_ _ | |_ | +| | |_ | _ |_ |_ | |_ _|_ | |_ _|_ _ | _| |_ _| |_ _ _| _|_ _ | _|_ _| |_ | | _ | |_ | | _ _ _|_| |_ _ |_ _|_ |_| | _| _| _ _ |_ _| | _ _ |_| | |_ _ _| | | | _| +| |_ | | |_ _ _ _|_| _| _ _ _ _|_ |_ _ | |_| _|_ | | _ _ _| _ _|_ _ |_ _|_| | |_ _| | _| |_| _ _ _ _|_ |_ |_ | _ | | _| | _| _ _ _|_ | _ _|_| |_ | |_|_ |_ _ _ _| |_ | +|_ _ _ |_ _ _ _ | | _|_ _ | _ _ _ _ _|_|_ _ _ _ _| |_ _ | _|_| _ _ |_|_ | | _ _|_ _ _ _|_ |_ |_ _ _| |_ |_| _| _|_ |_ _ |_ _ _| _ _ |_ _ | _ _| | | | | |_ _ _ |_ | | +| _ |_| | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _ _ _| | _ _ _|_ | | |_ _| |_ |_ _ _ | _| _| _ _|_ _ _| _|_ _| |_ | _| _ _ _| | | |_| |_ | | | |_ |_ _ | | _ _|_ | +| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | | _|_ _ _ _ _ |_ _|_ _ _ | _|_ _ _|_ _ _|_ _ _| | | | _ _ | _ _| | _|_ |_ _ | _|_|_ _|_ | | _| |_ _ |_| _ _| |_ _ _ _ _| +| |_ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _|_ _| |_ | | |_ | | | | _| _| | | | | | |_ |_ _ | _ _| |_ _ | | +| _ _ _|_ |_ | | _|_|_ | | | _ _|_ | | |_ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| _| | | | _| |_ _|_ | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | | | | | +| _ _| |_ | | | |_ _ _ _ _| |_ _| _ |_|_ _| | | | _ _ _| _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _| _|_| |_ |_ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_| | | +| | _ _|_ _ _| | |_ _ _ _ |_ _ _ _ |_ _ _ _|_| |_| _ | _| | |_ | | _|_|_ | | | _ _| _ _ _| | |_| |_ _| | _ |_ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | |_| +|_| | _| _ _| | _ _|_ |_ _| |_ | _| _ |_ |_ | |_| _| |_ |_ |_ _ _ _ _| |_ _| |_| _| | _| | _| _ _| |_ |_ _ _| | _ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _|_| _|_ | +| _|_| | _| | | |_ _ _ _| _ _|_ _ |_| _| _ _|_ | |_ _ _| |_ _|_ _ _ | | _ _ _ _|_ |_ |_ _ _| |_ | |_ | | _| | _ _| |_ | _| | | |_ _|_ |_| |_ _ | | | |_ _ | _|_ | +| _ |_ _| _|_ _|_| |_ _ _ _| _ | _| _| |_ _ _ _ _|_ | | _ _ _| _ _ |_ _| | | |_ _ |_ _| _ |_ |_ | | |_ _ | |_ | | | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _|_|_ _|_ _ |_ _ _ _ _| | +|_ |_ _ |_ _ | | |_ _ | _ _ | |_ | |_ _ _ _ |_ |_ _| _ _ _| | | |_ _| | | _ _|_ _| _| _ _|_ | _|_|_ _ | | | _| | | | _ _| | _ _ | _| _ _ _ |_| _ | _ |_ _ | _| | +| _ _ _|_ | _| |_ _| _ _| | | |_| _|_ |_ _ |_ _ _ _| | |_ _ | |_|_ _|_ _ _ _ _|_ _ _ | _| |_ _ _ _ _|_| _ _ _|_| |_ | |_ _ _| |_ _|_ | |_ _ _ _ _ _| | _| | | | _ _| | |_ _ _| +|_| _ _ _ _| _ _| _ _| | _| | |_ _ _ _| _| |_ _ |_ _| |_ _| | | | _| _ _ _ _ | | | |_ _ _ _| _| _| _ |_ | |_ _ _ _ _|_ _ _ |_ _ _ _ | |_ _ _| | | | | | _ _| _ _ _| +| _| | | |_ | | |_ _ |_| _ _ _| _| |_ _ |_ | | _| | | _|_|_ _|_ |_ _ | | _| |_ |_ |_ _ |_ _ _| | _| _| _ _|_ | _| _ | _ _| |_ _ | _| |_ _ | _|_|_ | |_ |_ _| _ | +| | _| |_|_ | |_ _|_ _ |_ _ _| _ _ _| _| | | | _| |_ _ | |_ _ _ | |_ _| | |_ _ _| _| _| _ _| | | |_| _| |_ _ _ _ _| | _|_ |_| | |_ _ _ |_ _ _| | | _ _| |_ |_ | _| | +| | |_ |_ _ | | _| |_ _ _ |_ _ | _| | | | | | | | | | _| _| |_ _|_ _ | _| | _ _ _| _| | |_ _| | |_ | |_ _ _ | | | _|_ |_ _|_ _ |_ _ | | | | | | |_ _ _| | |_ _| _| | +| | | | _ _| | |_ _| | | | _ _ _ _| |_ | | |_|_ _ _|_ _ _|_ | | _| _ _ _ _| | | | _| _ _ _| |_ | |_ _ | |_ | | | _| |_|_ _ _| | _ _ |_ _ |_ _| |_| | |_ |_ _ | |_| | |_ _| +|_| | | | _ _|_ |_ _| | _|_ _ | _|_ _ _|_ _ | _ _ _ | |_ _ _|_ _ _ _ _ | |_ _ |_ _ | _|_ _| | | |_| |_| _| | |_ _ _ _ _ _ | | |_|_ | | _ _| | _ _ _ _| |_ _ _ _|_|_ _ _| |_ _ | +| _| _|_ _ _ _ | _|_| |_| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ _ |_ _| | | |_ | |_ _ _| _|_ _|_ _ | | | _| |_ _ _ _| | | _ _| _| _ |_ |_ | _ _ _ _ _| | | +| |_ _ _| _ _ |_ _| | _ _| | _| _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | _|_|_ _|_ _| | _ _ _ _ _ _ _ _|_ _|_ _ _ _| _ _| | |_ | _| _| _ _|_ | |_ _ | _| _ _|_ | +| | _ _ _|_ | | |_| |_ | | |_| _ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _ _|_ _ | | | _| |_ _ _ _ _|_ | | |_ _| | | | | +| |_ _ | _|_ _|_ | | _| |_|_ | | _ _| | _ | _|_|_ | | | _ _|_ _ _ _| | | _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| | | |_| |_ _ _ | |_ _|_ | _|_ | | | +| _ _| | |_ _ _ | | |_ |_ _ | _|_ _ _| | _|_ _ _ _ _| |_ _| _ _| _ _ _| | _|_ | _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _| |_|_ |_ | | | _|_ _|_ _ | |_ _ |_|_ | +|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _|_ | | _ _ _ |_ _| | _| _ _ _| |_| _ _| | _ _|_ _ | _|_|_ | | | _ _|_ _ |_ | | |_| | |_ _ _ _| _|_ |_ _ |_ _ |_ _| | _|_ _ |_| +| _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| _| |_ _ | _ _| | _| _ |_ |_ | _|_| | _ _ _| |_ _ _ _ _| |_ _| _ _ _ _|_ | | | _ _|_ |_ _ _| _|_ | | _|_ _ |_ | _|_ _ |_ | +| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | _ _| _| |_ _| | _ _| _| _ _|_ | |_ | _| _ | _ _ _ _ _ _ | _ |_ _ | _ _ _| |_| _ | | _ _ _| _ | |_ _ |_ | |_ _ _ _ _|_ | | +| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_| | | | _|_ |_ _ | _| |_ _ _ _ _| |_ _| _ _|_ _| |_ _ _ _| |_| | _| _ |_ |_ |_ _|_ _ | _|_ _|_ |_| _| _| _ _ _ _| _| | +|_ | | | |_ _|_ | | _ _ _ _ | | |_ _| | _ _|_|_ _| |_| _ | | |_ _ _ _| _|_ _ | | _ _ _ _|_ |_ _ | |_ _ _| |_| _| _ _|_ | _ _ _| | _ _ | _| _| _|_ _ _|_ _ _ _ _| | +| | | |_ _|_ _ _ _ _| | |_ _ | _|_ _|_ _ |_|_ | | _ _ _ _|_ |_ | | |_ | _|_| |_ _ _ | | |_ _ _| |_| |_ _ |_| _ | | _| |_ _ _ _ _|_ |_ | _|_ _ _|_ _ _ | _| _ _ _ _ | |_| | +| |_ | _ | _ _ _| _| _ | | _ | |_ _ |_ |_ _ _| |_ |_| |_| _| _ _ _|_ _ _ _ _| |_| _| _ _| _ _| |_ _ _| |_ | |_ _ _ | | _ _ _| |_ _ _ | |_ _ _|_ |_ _ | | _| |_ _|_| +| | | | | |_ _ _ _ _ _ _| _|_ _|_ |_ _ _ | |_ _| _| _ _|_ _ _| _| _| _|_ _ _ | _ _| _ _| | | _| _ _| | _ _| _|_ | | |_ _|_ | | | | |_ _|_ _ | | _ _| | |_ _ _| | | | +| | |_ _| |_ _ _ _ | |_ _ _ | | _ | | |_ | _ _| | | _| _ _ _| | | |_ _| _| |_ _ |_ | _| _| | |_ | | | |_ _ _ _| _| _|_ _ _ _ _ _| |_ _| |_ _ | |_ _| | | _| | _ _ _ _| | | +| |_ _ | _ | _| |_ _ |_ _| | | | | |_ _| _|_ | _|_ |_ |_ _ | _| | |_ | _| |_ _ | _| |_ |_ _ _| | | | | _ _ _| _| _|_ _ _ | | | _ _ _| | | |_ | _|_| | |_ _ | | _ | | | +|_ _ _|_ _ | |_|_ _ _| _| | | | |_ _| _ |_ _| |_ _ |_ _| _ _| | | _| | _|_ |_ _ _ |_ _ _ _|_ _ _ _ _ _| | | | | _ _ _| | | _| _| | | |_| | | _| |_ _ |_ _ _ | | |_ _| _|_ _| | +| | _ | |_ | _ _ _ | | | | |_ _ |_ _| |_ | | |_ _ |_ | _|_ _ _ _|_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_ _|_ _ | _| |_| |_ | _ _| | _|_| | |_ _ _ _| _ | |_ _|_ _ _| | | +| | | | | |_ _|_ _ _ _ | | _|_ _| _ _ _ _ _|_ _|_ _ _| | _|_ | |_ _ _ | | | | | |_ _| _ | | _| |_ _ | _ _ _| | |_ | | _| | | _| |_ | | |_ _ _| | |_ _ | _ |_ _| |_ _| | +| |_ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _| _ _| _| |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | _|_|_ _ _ _| _ _ _|_ _ | _|_|_ _|_ _ _ _ | | |_| |_ _ _ _ _| _ _| +| | _| _ _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _ | |_ _ _| | | _|_|_ | | | _ _| | | |_| | _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_ _ _| _ _ _ |_ _ _| +| | | _ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _| _|_ _| |_ | | | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _ _ _|_ | | +| |_|_ | _ _| | _ _ _| _|_|_ | | | _ _| |_ | | _ _ _|_ | | |_| |_ | | _ _ _ | _ | | | | _ _ _ _| |_| |_ _ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ | _ | |_ _| | +| | |_| |_ | | _ _ |_ _ _ _ _| |_ _| _|_ | | |_ _ | _ |_ _|_ | | _| |_ _| _ _| | |_ _| | |_ _| _ |_ | |_ _ _| _ _ |_ _ | _|_|_ | | | _ _| _ _ | | | | | |_| |_ _ _|_ _ | | +| _|_ | | _| |_ _ |_ _ _ _ _ _ _ | |_ _ |_ _| | _| | |_| | | |_ |_ _ | _ _ | | _ _|_ |_| _| _ _|_ | _ _ _|_ | | |_|_ _ _ _ _| |_ _| _ _| _| |_| | | | |_ _ _| |_ |_ | +|_ | | |_ |_ _ | _|_ | |_ _ _|_ | |_ _ |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ |_ | _| _| |_ _ _ _ _|_ _ | _ _|_ _| | _ |_ _ _ _| | _| _ _ _| |_| _ _ _ _|_ |_| _ _| +| | | |_|_ | | _ _|_| |_ _| _ |_ _ | |_ _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ | |_ _ _ |_ _| | | _ _ |_ _| _|_ _ _ | _ _| | | _| _ |_ |_ _ _| |_ |_ _ | +| | |_ | _ _|_ | | |_ _ | | |_ _ | |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | |_ | _|_ | _| | _|_ _ _ _| | |_ _ |_ _ | | _| | _| _| _ _|_ | | _ _|_ _ _| _| | +| _| |_ _| | _ _| |_ _| _ _| | _ _| | |_ | | |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| _| _| _|_ |_ _|_ _|_ _ _ | |_ _|_ _ |_ _ |_| |_ | |_| _| |_ _ _ _ _|_| | | | | _| +| |_ _ _ |_ _ _ _| _ _| | _| | _ _| | | | | _| | | |_ _|_ | |_ _ _ | | | |_ _ | |_ _| _| |_|_ _ _ _ _ _ |_ _|_ _ | | |_ | _ _|_ | |_ | _ _ _ _ _|_| |_ _|_ |_ | +| | _ | |_ _ _ _| | |_ _ _ |_ | | | | |_ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ _ _| _|_ _ |_ _ _| |_ | _ |_ _| | | |_ |_ _| _ _ |_ | | | |_ _ | _ _| | | | | | +| | | | |_ _ _ _|_ |_ _|_ _ |_ _ | | _ _|_| _|_ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ | _| _ | | _| _ _|_ _ | | |_ | _|_|_ |_ | _| | _| _| _| | | _| | | _ _| | _ _| | +|_ _| |_ _ _ | |_ _ _ _ |_ _ | | |_| _ _ _|_ | |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ _|_ _ | | | _| | _| _| | | |_ _ _ _ _| _| |_ _ _| _| |_ _ _|_ | _| | | | | | _ _| +|_ _ | _ |_ _|_ _ | | _ _| | |_ _ _ _ _ _ _ _| | _ _| | |_ _ _ _ | |_|_ _ _ _| | | _ _| _ _ _ _| | | | _| |_ _ _| _| | | | _ _ _|_ | | _ _ _| _ | | _| | _| |_| | |_| |_ | +| _ _| | |_ _ _ |_ _| | | _ |_ _ _| _ _ |_ _ _ | _ _| _ | | _| |_ _ |_ _ |_ | |_ | | | _ _| _| | |_| |_ _ _ _| | _|_|_ _ _| _| _ _| |_ _ | _| |_ _| | | | |_ _ _ _|_ |_ | | +| | _ _ _ _|_ _ |_ _| _| |_ |_| _ _ _|_ | | |_ _| | _|_ |_ _|_ _ _| | | | | _|_ | | | | | |_ _ _|_ |_ _ |_| | | _ _ | _| _| _| _| | | | |_ _ _|_ _ | | _ _ | | | | +| | | | _ _ _ _ | |_ _ _ |_ |_ _ | | |_ _|_ | _|_ |_ _ _| _ |_| |_|_ _ | _ | |_ |_ _|_ _ _ _ _ _ _ _| _| | |_ |_ | |_ |_ _ | _| | _|_ _|_ _| | _ _ _ _|_| |_ _ _| | | +| | | |_ _ | | _| |_ _ _ | | |_ _| | |_ |_ | | |_ _| | _ | _| |_ | | _ |_| | | |_ |_ _ _ _ _| _ _ |_| _| _|_ |_ | | | |_ | _| |_ _|_ _ _ | |_|_ | |_| | _ | | _| | +| | |_ | |_ _| _| | _|_ | | | _|_ |_ | | |_| | _| _|_ |_|_ _ | | | |_ | | _| _| _| |_| _ _ _| | | _| |_ _|_ |_| |_ | | |_ | | _ _ _|_ _|_ _ |_ _|_ _ _| | | | |_|_ _ | +|_ _ _ _|_|_ _ _ _ _ _|_|_ _ _ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _|_ _ _ _|_ _|_ _ _|_ _ _|_ _ _ _ _ _ _|_|_ _ _ _ _|_ _ _ _ _ _|_ _ _|_ _ _|_ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _| diff --git a/artificialintelligence/assignments/maze/tests/maze-k.in b/artificialintelligence/assignments/maze/tests/maze-k.in new file mode 100644 index 00000000..af82cac8 --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-k.in @@ -0,0 +1 @@ +1000 1000 0 diff --git a/artificialintelligence/assignments/maze/tests/maze-k.out b/artificialintelligence/assignments/maze/tests/maze-k.out new file mode 100644 index 00000000..62d97f9f --- /dev/null +++ b/artificialintelligence/assignments/maze/tests/maze-k.out @@ -0,0 +1,1001 @@ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +|_ | | | _ | _| _ | _ _ | | _ _ _ _ |_ |_ _ _ _ _ |_ _ _ _ _ | _ _ _ _ | _ | _ _| _ | _ _ | _ _ | _ | _| _ _ _ | | _ _| _ _ _ _ _ | _ _ _ | _ | _ _ |_ | _ | _| | _ _ _ | _ _ |_ _ _ | | _ _ |_ _ _ _ _ | _ _ _ | _ | _ _ |_ _ _ | _ _| _ _ | | _ | _ _ _ _ _ _ _ _ _ _ | _ | _| _ | _| _ _ | _| _ | _ _ _| | | _| _ | _ | | _ _ |_ _ _ _ _ | _ _ _ | _ _ _ _ _ _ |_ _ |_ _ |_ | _ _ | |_ _ _ | _ |_ _ _| | _ _ _ | | | _ _ | _ | _ _ _ |_ _ _ _ _ | | _ | | _ _ _ | _ _| _ _ | _ |_ _ _ _ _ |_ _ _ | _ | _ _ _ _ _ | _ | | _ _ _ _ _ | _ _ _ | _ _ | _ | _| _ _ _ _ | _ _ | _ | _ _| _ | _ | _ |_ _ _ _ _ | _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ | _ | | | _ | _ _ _ | | _ _ _ _ |_ |_ _ _ _ _ | | | | _ _| _ _ | _ _ _| _ _ | _ | _ _ _ |_ _ _ _ _ | _| _ _ _ _ _| _ _ _ _ _| _ _ _ |_ _ _ _ _ | _ | _ _ _ _ _ _ _ |_ | _ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ | |_ _ _ _ _ _ _ | | _ | _ _ _ | | |_ _ |_ _ _ _ _ | | _ _ _ | _ _ | | _ | _ _ _ _ _ _ _ _ | | | |_ _| _ _ _| _ _ _ _ |_ _ | |_ _ _ _ _ _ _ | | | _ _ _ | _ _ | _ _| _ _ |_ _ _ |_ _ |_ | _ | _ _ _ |_ | _ _ | _ | _| _ _ _ _ | | |_ _ _ | | _ _ |_ _ _ _ _ | | | _ _ _| _ _ _ _ | _| _ _ _ | _ _ |_ | |_ _ |_ _ _ _ _ | _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _ _| | _ | _ _ |_ | _ _ _ | |_ _ | _ | _ _ _ | _ _ _| _ _ _ | _| _ _ |_ _ _ _ _ | _ _ _ _ _ |_ _ _ _ _ | | _ _ _ | _ _ _ _ _ _ _ _ | _ _ |_ _ _ _ _| _ _ _ _ | _ _ _ _ _ _ _ _ | _ | _ _ _ _ _ | |_ _ _ _ _ | | +| _| |_ _| | | | | | | _| | _ _| |_ _ _ _| _ |_ | |_ _ _ | | _ _|_ _ _| _| _ _|_ _| _ _ _| | | _| | |_ _ _| |_ _| _ | | | |_| | | | |_ |_ |_ _ | |_ _|_ _ _| _| | _ _|_| | | _ _| _| | |_ |_ _| | | |_ _ _|_ _|_ |_ _ _ _| |_ _ _ _| _|_ | _ _|_ _ _| | _ _|_| | | _ _| _| | |_ |_ _| | | |_ _ _ _ _|_ |_ _|_ |_ _| | _ _ _ _ | |_|_ |_ _| | |_ _| | | |_ _ _ _ _|_ |_ |_ |_ _| |_ _ _| | |_ _| | _| | _|_|_ | |_ | _ _|_ _ _| | _ _| |_ |_ _|_| _| | |_ |_| |_ _ _|_ _ | |_ _| | | |_ |_ | |_ _ _| |_ _ _| _ _| |_ _ | | |_ _| | |_|_ | | _|_|_ | |_ | _ _|_ _ _| _| _ _| | _|_ _ _|_ |_ _ |_ | _ _|_ |_ _| | |_ _ _| _ _ |_ _ _ _| | | | |_ |_ _ | | | | | |_|_ _ _|_ _ |_ |_| _ | | | | |_| | | | |_ |_ |_ _ | _| |_ _ _|_ | | |_ _ _| | | | _| | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | _| | | _| _| | | | | |_ | _ _| |_ _ _ _| _ |_ | |_ _ _ | |_ _ |_ _|_ _| |_| | _| | | | | _| |_ _ _ |_ | | _|_|_ | |_ | _ _|_ _ _| | _ _| |_ _ | |_ _ _ _ _| | | _| _| | | | _ _| | |_ _| _|_ |_ _ _| |_ _ |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | _| |_ _ _ _ _ |_ _| | | |_ _ _|_ _ _| _ |_ |_ _|_ _ _ _|_ _ _|_ | _ _| _ _| _ _|_ _| |_ _|_ _| | |_ _ _| _ _ | |_ _|_ _| |_ _|_ | _ _ _ _| | _| |_ _ |_ _ _| _| | |_ |_| _ _ | |_|_ | |_ |_ _ | | |_| | _ _| |_ _|_ _ _ _| | | | |_| | _| _ _|_ _ _| |_ _| _|_ |_ | | | | | |_| | | | |_ |_ |_ _ | _| | | |_ _ _ _| _|_ | _ _|_ _ _| | _ _| |_ _| |_ _ _ |_ |_ | _| | | _| _| | _|_| | _ _| _| | |_ |_| | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _ |_ _ _ _| |_ _| _| | _|_ | _ _|_ |_ | |_ | _|_ |_ _|_ |_ _| | _ |_ | _ _|_| |_ | | _ _|_ _|_ _ _ _| |_ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ _ _| |_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ | |_ _ | _ _|_ _ _ _ _ _| _|_| | +|_ |_ _ | |_| | |_|_ | |_ | | | |_ _ _ _ |_ _| | |_ _|_ _ | |_| | _ _ _ _ |_ _ | |_ _ | |_ _| | |_ | | _ | _|_ _| |_ _|_ | | | |_ |_ _ _| _ _|_ _ | |_ _|_ | |_ _ _ _ _ _| _|_| |_ | _| |_ | _ _| |_ _ _ _ | |_ _ | _ _| | | _ |_ _ |_| | _ _ _| |_ _ _ _ _ _| _|_| |_ | _| |_ | _ _| |_ _ _ _ | |_ _ _ | | _ _|_ _ | | _| |_ _ | |_ _ |_ |_ _| | |_ _ _ _ | |_ _|_ | | | |_| _ _| | _ | | | | | _ _ _|_ |_| |_ _ _ _ _| |_ _ | | |_ |_ _ _ _|_| _| |_|_ _ _ _|_| _ _ |_ _ | _ _| |_ _| | |_ _ _ _ _| _| _ _ _ _ |_ _ _ _ _|_ _ _ _| _| | | | _ _ _|_ |_| | _ | _ |_ _ | |_| _ _ _ | |_ |_ |_| | | |_ | _| | | _ _ _| | | |_| _ _| |_ _ |_| _ _|_| |_ _| |_ _ _ _ | |_|_ |_ _ |_ _ _| |_ _|_ | | | |_ |_ _ _| _ _|_ |_ |_| |_|_ | _ _|_ _|_ _ _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ |_| |_ |_ _|_ _ _| | _| | | |_ _ _ _ |_ _| | |_ _|_ _ | |_ _ _|_ | _ _|_ _ |_| _| | | | | | _| | |_ _ _| | | _ _ _|_ |_| |_ _ _ _ _| |_ _ | |_ _ | |_|_ _ | _ _|_ _| |_ | _| |_ | _ _| | _ | | |_| _ _ _ _|_ |_ _ _ | | | |_ _| _ | | _| |_ _ | _ |_ _ _| _ |_ | | _ _| |_ _ _ _ | |_ _| |_| | | _ _ _ | |_ _ |_ | _| _ _ _ _|_ |_ _ |_ | _ _| | _| |_ _ | _ _| | _|_ _ _| _ | |_ |_| |_ _ | | | | | | |_ _ _| | _| |_ _ | | |_ _ _ _| | |_ _ _| | |_ _ _ _ | _ _| _ _|_ | | |_ _ | | _|_ _ |_ _ _| |_ _|_| |_ _|_ | | | |_ |_ _ _| _ _|_ | _| |_ _ _|_ _ |_| | _ _ _ | |_|_ _ | | _|_ |_ _ _| _|_ _ _ _| |_ | _|_ _ | |_ _ _ _| _| |_ | | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _ _| _ _ _|_ _| |_ |_ _| | |_ _ _ _ _ _ |_| _ _|_ | |_ _ _|_ _ _ _ _ |_ _| | _ _ _| _ _ |_ _ | _ _| | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _|_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| | _ _|_| |_ _ |_ |_ _ | | +| _| _ _| | _| | |_| | _| |_ _|_ _ |_ _ | _ _| _ | | | | _|_ _| |_ | _ _| | |_ _ _ _| | |_ _ | |_ _| _| | | _ _ _| | | | | | | | _ _| _ | _| |_ _ _ _|_| _ _ |_ _ | _ _| | _| _|_ |_ _|_ _ _| | _| |_ _ | | |_ | | | | |_ |_ _ _| | |_ _ _ _| _ _ |_ _ | _ _| | _| _|_ |_ _| | | | _| |_ _ | | |_ _ _| | |_ _ _| | | | _ _ _| _ _ _| | _ | _| |_ _ | | |_ _| | _|_ _| _| | | | | | |_ _| _ _|_ _ _| _ | |_ _ _ _| | | | _| | | _| _| |_ _| _ _ _| | | |_| |_ | | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _| |_ _| _ _|_ _ _| |_ | |_ | _| | _ _| _ | | | _ | | _|_ _| | _|_ | | |_ _ | |_|_ _|_ | | |_ _ | _ _| _ | | _ _ | _| |_ _ | | _ _| _ _ _| | | | | | | | _ _| _ |_ |_|_ _ _|_ _ _ _ _| | _ _ _ _ | |_ _| |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ | |_ _ _ _ _ _ | |_| _|_ _|_ _ |_ _ | _ _| _ _ | | | _ _ _ _| _ _ | _| _| _| | | | | |_ |_ _ |_ | |_ _| _ _|_ _ _| _ | |_ _ _ _| |_ | | |_ | _ _| | | _ _ |_ | |_ |_ _ | | | | |_| | |_ |_ _ _| |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _ _ _| |_ | |_ _| _| _ | _| |_ _ | | | _|_ | | | |_ _ |_ _ _| | _|_ |_ _ _| |_ |_ _| | |_ | _|_ _ _|_ | | | _ _| |_ _ _ | _| | |_ | _ _| _ _| | | |_ _| |_ _ |_ _ _| | | |_ _ _ _ |_ | _ |_ _|_ _ |_ _ _|_ _ _| |_ _ _|_ _ _ _| _|_ _ | | _| _|_| _ _ _| | | | | | | | _ _| | | |_ _|_ _ | _ _ |_ _ _| |_ _ |_ _ _| | | | | _ _|_ |_ |_ | _ _ |_ | |_ _ |_ _ _| _ | _|_ _|_ |_ |_ _ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ | | _ _|_| |_ _ _ | _ _|_ _ _| _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _ _ _| | | |_| |_ | | |_|_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_|_ _|_ | | |_ _ | |_ _ _ _ |_ | +| |_ _ | | | |_ _|_ _|_ _| | | |_ _ |_ _|_ _ _ |_ _| | | | | _ _| | | |_ | _|_ | _| _ _| _ | |_ _ | | _| |_ _ | |_| | | | | | |_ | | |_ _| |_ _ _| | _| _ _ _|_ | | |_| |_ | | |_ _| _ _| _ _ | _ _| |_ _ _| _| | | | _| |_ _ | | |_| |_ | | _ _ _| | | |_| |_ | | |_ _| _ _| |_| |_ _|_ |_ _ _|_ | | |_|_ _ | | | _| _ _ _ _|_ _ _| | _ _ _| | _|_ | |_ _ _| _| | | |_ _ | | | _ _ _| _|_ |_ |_ _ | |_ _ _ _ _| | |_| | _ | _|_ _|_ _ | | |_ _ _|_ _|_ _ _ _ _ _ _ _| |_ _|_ | | _| |_|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ | | |_ _ _| _| | | | _| | | _|_ _ _ _| | |_ _ _|_ _| | _ _ _ _|_ _ _ _| |_ _ _| | |_ _ | | | | | _ _|_| |_|_ |_ _|_ _| |_|_ _ _|_ | | |_ _ |_ _ |_ |_| | | | | | |_ | | |_ _| | | _ _ _ _ | |_ _| _ | _ _ _|_| |_ _ _| _ _| _|_|_ | | | _ _| _ | _| | | | | | _ _ _| _ |_ | _| | _|_ _ _ _ |_ _ |_ _| | _|_ | _| | | |_ _ | _|_ |_ _| _| |_ | | | |_|_ | |_ _ _ | |_ _ | |_ _ _ _ _| | |_| | _ | _|_ _ _|_ | | | _ _|_ _ _|_ _ _ _ _|_ _ |_| |_| | |_|_ _|_ | |_ | _ _|_ _ _| | | _|_|_ | | | _ _|_ _ _ _| | | | |_ _ _ _| _| _| _|_ | | | |_ _ _| | |_|_ _| |_| |_ _ _| | _ _| _|_ _ _|_ _| _ _|_ _ _| _ |_|_ _|_ _ | _ | | | | _| | | _ _| | _ _| _|_| _ _| _ _| _ _ _ _| |_| |_ _| _| | |_ | _ _|_ | |_| | _ _|_ _ | | _ _ _ _|_ |_ _ _ | |_ | | _| | |_| _|_| |_ _ | |_| | | | | | |_ | | |_ _| |_ _ _ _ _|_| |_ _ | _|_ _ |_ _ _ | _|_|_ _ _| _ _| _ _ _| | _ _|_ _ _ _ _ _| _ | | | |_ _ _ _ _ | |_ _| | | | _|_ _| _|_|_ | | | _ _|_ | | | | _|_ | _|_ | | |_ _ | |_ _|_ _ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ _ | _|_|_ _|_ | | _| |_ _ _|_ _ |_ _ | _|_|_ | | | _ _|_ _ | | | |_ _ | |_ _ |_ _|_ | _|_|_ | | | _ _| | _ | | _ _ _| _ _| |_ _| _ _| _ |_ _ _| | +|_ _ _ _| _| |_ _ |_ _| _ _ _| |_ _| _ _| |_ _ | _| _ _ _| |_| | |_ | | | | _|_ _ _ |_ _ | | |_ _| | _| | |_ _|_ _| | | | _|_|_ | | | | |_ _|_ _ |_ _ _ | | |_ _ | _ |_ _|_ | | _| |_ _ | | _ _| _ _| | _| _ |_ _ | | | |_ |_ _ | _|_ _| |_| _| |_ _ | | | |_ _|_ | | _| |_ _ | | _| _ _| | _|_ _ _ | | _ | | | | |_ _ _ _ _| _ _ |_ _ | _ _| | _ _ _|_ _ |_ | | | | | | | |_ _ | |_ _ |_ _| | _ _|_| |_|_ _ |_ _ _| | | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ | | |_ |_ _ | |_ _| _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| |_ _ _ |_ _ _ _ _| | |_ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _|_ _ _| |_| | | | |_|_ | | |_ _ | | _ _ _ _|_ _ | _| | | | | _| | _| _|_|_ | |_ | |_ _|_ _ |_|_ | _ | | _| |_ _ | _| | | _ _ _ _|_ |_ _ |_ _ |_ _ _ _ _| |_ _|_ _ | | |_| | | | | _| _ _ _| |_ | _ _ _|_ _ _ | | _ _| | | _ _| _| |_ _ _| |_ | _|_ | | |_ _ | |_ |_ _| |_ | | | | _ _|_| |_|_ _ |_ _ _| | | |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _ _ _|_ _ |_ _ _ _|_ |_| | _ _ _ _ _| | |_ _ _ _ _| |_ _| _ |_| |_ | | | |_ _ _| | | |_ _ |_ | _|_ |_ _ _| | | _ _ _ _|_ | |_ _| | |_| |_ _ _ | |_ _| | | _ _ _ _ |_| _ _| | |_ | | | | | | |_ | | |_ _ _|_ _| _| |_ _ |_ | _| _ _ _ _|_ |_ _ _| | _| | |_ | _ _ _|_ | | |_| _ _ | | |_ _ _| |_ | |_ _ _| _| | |_ |_ | | | |_ _| | | | _|_|_ | | | | |_ _|_ _ |_ _ _| _ _ _ _|_ | _|_ |_ _ | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _ _| _ _ |_ _ | _ _| | | | |_ |_ |_ _ _ _ _| |_ _|_ | |_ _| | | |_ _ _ _| | _ _| |_ _| _ _| _ _ _ _|_ |_ _| | |_|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _| | _ | | | |_ |_ _ | _ _ | | _|_ _ _ _ _| |_ _| _ _ _| _|_| | | _| _ _ _|_ | _ |_ _ _ _ _| |_ _| | _|_ _| _| | | |_ _ |_ _ _ _| _ _| _| | | | |_| _| +|_ _ _ | |_ |_ |_ _ |_ _ |_ _ | _| _ _| _ _|_ _| _| _ |_ |_ | | |_ _| _ | _ _| |_ _| |_ _ _ _|_ | |_ | | _|_| |_ _ _| | |_ _| | _ _ |_ _ | _|_| |_ _| | |_ _| | | |_ |_ _ | _|_ |_ _ | | | | |_ _ _ | | |_ | | _ _|_| |_ _| | _|_ _ _| | | |_ _ | | |_ |_ _ | _|_| |_| _ _| |_ _ _ |_ | | | | | |_| | | | | | _ _ _| _| | |_| |_ | | | _ _ _ _ _|_ | | | |_ _|_| | | _| | _ |_ _ _ _|_ | | |_ _ |_ | | |_| _| | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_|_ | | _ _|_| |_|_ | |_ | _|_|_ | | | _ _| | | |_| |_ _| _|_| |_ _ | _| | |_ _ _|_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ | | _|_|_ | _ _| |_ _| _ _| |_ _ _| |_ | |_|_ | | |_|_ | | _|_ |_ _ _| | |_ _| |_ _ _ |_ _ | |_ _| | |_ _ _| | | | _| |_ _ _| |_ | _|_ |_ | | _ _ _ _ _ _| | _ _|_| |_| |_ |_ _ _ _| _| | | _ _ |_ _|_ | _ _| |_ |_ | _| _ |_ |_| | | _ _| |_| |_ | _|_ _ _ _|_ |_ |_| | | _|_ | | |_ _ |_ | | |_| _| | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| _ _ _|_ _ _| |_ _ | _ _ _ _ _ _| | _ _ |_ | |_ _ _| |_| | _ _| |_ _| | _ _| | | | _|_ _ _|_ _| _ _ |_ _ | _ _| | | |_ _ _ |_ _|_ _ _|_ _| _ _ |_ _ | _ _| | |_ _|_ _| |_ | | |_ _ _ _| _ _ _| _|_ _ | | |_ |_ _ _| |_ | _| _|_ _| |_ _|_ _ _ _ | | |_ |_| |_ _| |_| _| _ _|_ _ _| |_ _ _ | _ _|_ |_| _| | |_ _| | _|_| |_ _ _| | |_ _| |_ _|_ _ | | |_ _ _| |_| |_ _ _ _| _ _| | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _|_ | | |_| |_ | | | |_ _| _ _ | | _ _ _ _ _| |_| _ _|_| |_ _ | |_ _ _ _| _ _| | | _ _| _| | _ _|_ _ _|_ _|_ | _|_|_ | | | _ _| |_ _ | | | _ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| |_ _ _ _ _ |_ _ _ _ | _ _ _ _| |_ _| _ _ _ _| |_| _ _ _ _ _ _ _ _| | _|_ _| |_ _ _ |_ _ | | |_ _ | |_ _|_ _ _ _| +| _ | |_ |_ | | _ _| _ _ |_ _|_ | _| _ _ |_| _| _ _|_ |_ _| |_ _ | | |_ _| | |_ _ | |_ _ _ | |_ |_| | | |_ _ _ | |_ _ _|_ _ _ _|_ _ | _ _| | _ _ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_| |_| | | | _ _ _| |_ _ _|_ | | |_ _ | | |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ | |_ | | | _ _ _ _|_| |_ | | _ _|_|_ _|_ _ _ | _ |_ _|_ | | _| |_|_ _ |_ _ _ _ _| |_ _ _ _ | | | _|_ _|_ _ | _ _| |_ _| _ _| _|_ _|_ | | _| |_ _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ | _ _|_ | | |_ _ | | | | |_ _ _ _ _| |_ _| _|_ _| |_ | | _ | | |_ _ |_ | _| |_ |_ _| |_ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_ _| |_ _ _| |_ _ _ _| _ _| _| _| _ _|_ _ _| _ _ _| |_ |_ |_ _ _ | |_ _ _|_ _ _ _| _ _ _ _| | | _ _| | | |_| | | | _| _| _ _|_ _ _| | _ _ |_ _| | | | _ _ |_ _ _| _ |_ |_ | | _ _| _ _|_ _| |_ _| _ _ _ | _|_ | _ | | | | _| _ _|_ | |_ _| _|_ _| _| _ _ _ | _ _ | | _|_ _| _ _| |_ _| _ _| _|_ _|_ | | _| |_ _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_| |_ _| |_ _| _ _| _|_ _ |_ _ _| _ _ | _|_ _| |_ | _| _ |_ |_| |_ | | _ _| | | |_ _| | |_ _ | _ _ _|_ | | |_| |_ | | |_ _| _ _ | _ _| | _ _ _|_ | | |_| |_ | | |_ | _ |_ |_ _| |_ _ _ _ |_ _ |_ | _|_ _| | |_ _| _| _ _|_ _ _|_| _| _ |_ |_ _ |_ | | |_ |_ _ _| | _ _| _ _| | | _ _ _ _ _ _ |_ _| _ _ _| _| _ _| _ _| |_ _ _ | |_ _ _|_ _ _ _| _|_| _| |_ _| _| _ _| _ _| | _| | _ _| | _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _ _|_ _|_ | | _| |_|_ _| _|_ _ _| |_ _ | _ |_ _| _ |_ |_ |_ _| | _ | | |_|_ | | |_|_ |_ _| _ _ _| |_ _ _|_ _ _ _ _| |_ _|_ _ | | _ _| | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| | |_ _ _ |_ _| | _| _ |_ |_| _| _| _|_ _ _| _ _ |_ _ | _ _| | | _ |_ |_ | | _ _| |_ _|_ _ |_ _ _ | _ _ | +| | | _| _| | |_| |_| | _ _| |_| | _| _ _| | | _| |_ _ _ _ _| _ _| _ _|_ _ _ _| |_ _| _ _|_ _ _ _| _ _| _| _|_|_ _ _|_ _| | |_ _ _ _ _ _| | _ |_| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ |_ | | | _| _ |_ |_ | _ _| |_ _| _ _| |_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _ _| _ |_ |_|_ _| _ _ | |_ _ |_| _ | | | |_ |_ _ | _|_ | _ |_ |_ _| |_| | |_ _ _ | |_| |_ _ _ _| _ _| | _| _ | | | |_ _ _ _ _| _ _ _| _|_|_ | | | _ _| | |_ | | | |_ _| | _ _| |_ _| _ _| _| | | | _ |_ | | | | _ _ _ _| |_ |_| |_ _| _ _|_ _| | |_ _ | _ _| | |_ _ _| _| | _|_|_ | | | _ _|_ _ _ _| | | |_ _ _ _ _ _|_ |_ _ _|_ _| | |_|_ _ _| | | _ _ _| _ |_ |_| |_ _ | |_ _| | _ |_ _ _ _| | | _ _|_ _| _|_ _| |_ | | | |_| _ _| | | _ _| | |_ _ _ _ |_ _|_ _| | _ |_| _| _ _|_ | |_| | _ | _ | _| | | |_ _|_ | | |_ | | _|_| _| |_ _ _ _ _| | _ _ _ _ _| _|_ _ _ _| _|_ _ | | |_ _ _ |_ _ _ _| _ _| | _| _ | | | |_ _ _ _ _| _ _ _| _|_|_ | | | _ _|_ |_ | | | | |_ _ | | | |_| _|_ _ |_ _ _ |_ _ | | |_ _ _|_ | |_| _| _ _|_ |_ _ | |_| |_ | | | |_ | |_ _ |_| |_ _ | _ _|_ _|_ | | _| |_ _| _| |_| |_ _ _ _|_ _ | _|_ _|_ | | _| |_ _| _| _ _|_ | _|_ _ _|_ _| | _| |_ _ _ _ _|_ | _ _| | _ _ _ _ _| _| _ _|_ | |_ _ | | |_ |_ | _| |_ _ |_ | _| | _ _| | _|_ _ | | _ _ _| _| | | |_ _ | |_ _| | _ _ | _ |_ _ _ _|_ |_ | _ _| | _| | _ _| | | _|_ | _|_ _| _ |_| _ | _|_|_ | | | _ _| |_ _ | | | _| | | _ _| | |_ |_ _ | _|_ | | | _ _ _| | | |_ _ _| _| _ _|_ | | | _ _| |_ _|_ _ |_|_ |_ _ |_ _ | | _ _ _|_ | | _ _ _ | | _ _ _| | |_ _ _| |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| _| |_ | | | _ |_| _| _ _|_ | | |_ | | | _ _ _|_ | | |_| |_ | | _| _ _|_ | |_ _| | _| | |_ _ | _|_ _ | | +| |_ _| _| _|_ | | |_ | _| _ _|_ _|_ | _ _| |_ _ _ |_ | |_ _|_ _ _ _ _ _ _| _ _| | _ | _ _ _| _| _ _ |_ _ _ _ _ _ _|_ | | | |_ _ _|_ |_| _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _|_ | |_| _| _ _|_ | |_ _ _ _| _ _| _ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_|_ _ |_| _| _ _|_ | _ _| | _| |_ _ |_ _ _| |_ | |_|_ | | _ _|_| |_|_ | _ _|_ | _|_ | | | _ _|_ _|_ _ | | _| | |_ _ |_| _| | | |_| _ _ | |_ _ _ |_ _ _ _ _| |_ _| _ _|_ _| | | |_ | _ |_ _ _ _| _ _| | | | |_ _| _| | _ _| | |_ _| _ |_ |_ _| _ _| _ _ _|_ _ _| | | | _ | _| _| |_ _ _ _ _| |_ _| _ _ |_ | | | | | _ _ | _ |_ _ | |_ |_ _|_ _ |_ _| _| | |_ _| _| _ _|_ | |_ _ |_ _ _| _| | |_ | _ | _| | |_ |_ | | | | _ _ _ _| |_| |_ | _|_ | |_ _ _ _| _ _ |_ _ | _ _| |_ | | _| |_ _ _ _ _| | _| | _| | | |_ _ _| |_ _|_ _ _ _ _| | |_ _|_ _| |_ | _ _ _ _ | |_ _ | _ _ _| _ | | _ _| | |_ | _ _ _ | | | |_ _ |_ |_| | | |_| _ _ _ |_ _ _ |_ _ _ _ _| |_ _| _ |_| |_ | | | |_| |_ _| _ _|_ |_ |_ _ _ _ | | _ _| _| |_ _ | | |_| | _| |_ _ _ _ _| |_|_ | | _| |_ _| _| |_ _ | | _ _| | _ | | | |_ |_ _ | _ _| | _| _ _ | _| | |_ | | | |_ |_ _ | _|_ _ _ _| | | | _ _| _| | | | | _ | | |_ | |_ _| | | _| |_ _ _ _ _| _ _ _| | | | | _| |_ | | _| |_ |_ _| _ _| | | _ | | |_ _ | |_ |_| |_ _|_ _ |_ _ _| _| | _ _| | |_ _ _ | | | _|_ | _|_ | | |_ | | |_ _ | | | _ _ _| | | _| |_ _ _ _ _| |_ _|_ _ | | _ _| | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | | | | _ _| |_ | _| |_ _ _ _ _| | | | | _ _ _ | |_ _ | | _|_ _ | _|_ _ _| |_| | | | | _|_| | | |_ | _ _| _ |_ |_ |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ | | |_ _|_| |_ _| _| _| |_ _ _ _ _| | |_ |_ _| |_ _ | _ |_ _|_ | | _| |_ _| _ _ _ _| _ _|_ |_| |_ _ | | |_ _ _| _| | +| _ _ _| _ | | | |_ _| | |_ _| _ _ _ |_ _|_ _ _| |_ | |_ _|_ |_| _ _ | |_ _ | | |_ _ |_ _| _ _ _| | _ _| | | _ _ _ _ | |_ _| |_|_ |_ | |_ | | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ _ _ _ _ _| | _| |_ _ _ _ _| |_ | | | |_ _| _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | | _ _ _ | _| |_ _ _ _ _|_ | |_ _ _| | |_ _ | _|_ | _ _|_ | | |_ _ | |_ _ _ _ _| _ |_ _| |_ _ _ | |_ _| |_ |_ _|_ _ |_ _ | _|_|_ |_ _| | | |_ _ _ |_ _ _ _ _| _ | | _ _ _|_| |_ | | |_ |_ | | |_|_ | | |_ _ _ _| _| | _ _|_ |_| _| _ _|_ |_ | | |_|_ _ _ |_ | | | | | | |_|_ _ _| _ _ _| | _ _ _| _ _| _|_ _| |_ _| | _|_ |_ | | _| |_ _|_ _ _ _|_ _ | |_ _| _ _| _| |_ _ _ _ _| |_ |_ _ _ | | _| _| |_ _| |_ | |_ | | _|_| | |_ _| _ |_ |_| _| |_ _ |_ _ | _ _ _|_ | | |_| |_ | | | | | |_ _ _ _ _ | _| _| | _| |_ _ | | _ _ |_ _ _| | _ _ _ _|_ |_ _| | _ _|_ _ | |_ _ | | |_ _| |_ | | _|_ | | _ | _| | |_ _|_ _ |_ _ | _|_|_ |_| _ _| |_ | |_ _ | |_ | |_ | |_ _ _| |_ _| _ _| _| _| |_ _ _| _ _| | | _| | | | |_ _|_ | | |_ _ | _ _|_ _ | | |_ |_ _ | _|_ |_ _| | | _| _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ _| _ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ |_ _|_ _|_| _ _ _ _ _|_ | |_ _|_ _ _|_ _ _| |_| _ _| | |_| |_ | _ |_ _ _ _ _| |_ _| _|_ _| | _ _|_ _ _ _|_ _ | |_ | | | | |_ _|_ _| | _|_ _ _ |_ |_ _ _ | |_ |_ _ _ _| _ |_ _|_ |_ _| |_ _ |_ _| | | |_ _ _| |_|_ _ |_ | | _| | | _ _ _ | _ _ _| | |_ _ _| |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ |_ | |_ | | | |_ _ _| | |_|_ _| |_ _| | | _ _| | | _ _ | |_ _| _| _ _| | _| | |_ _ | _| |_ | | _| _| _ _|_ | |_ | | |_ _|_ |_ _| |_ _ | | |_|_ |_ _| _ _| | | _| | |_ _| _ _| | | | | _ _ _| | |_| | | |_ |_ _ | _ _ |_ _ |_ _ _ _ _ _|_ _ | |_ _ | _| | | +| |_ _ _ _| _|_| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | | |_ _ _ _| | _| |_ _ | |_ _|_ _ |_ _ |_ _ | _| | _ _| |_ _ | | _| |_ _ | | _|_ _ _|_ _|_ _ | | _| | | |_ _|_ | _|_ _ _ | | |_ _ _ | _ _ _ | |_ _ |_ |_ _ _| | |_ _|_ _ |_ _ _| _| | | |_ _|_ | |_ _ _ | | | |_ _| _|_ _ | _| |_ _ _ | _ _| | _ _ | | | | _| | |_ | |_ _| | _ _| |_ _| _ _| | _ _ | | _| | |_ |_| _ _|_ | |_ |_ _ _ |_ _ | |_ _ _|_ _ _|_ _ _ _ _ _| |_ |_ _ _ _| | |_| _| _ |_ |_ _| _|_ |_| |_ _|_ _ |_ _|_ | | | _| |_ | _| _| |_ _ _ _ _| | |_ _|_ _ |_ _ _| |_ _ _| |_| | |_| _ _ _| | | _ _|_ _| |_ |_ _ _| _ |_ |_ | |_ _| | |_| | |_ _ _ | |_ _ _| |_ _ |_ | | |_ _ _ _ _ |_ | _ | |_ _| | | | | _ _| _|_ _| | |_ _ _|_ |_| _| _ _|_ | | | _|_ _ |_|_ _ | _ _|_ _|_ | | _| |_ _| |_ |_ |_ _| | | |_ |_| |_ |_ |_|_ _| _| | | _ _|_ _ _| |_ | | | |_ _ | | |_ _ _| | _| | | _|_ _| | | _ _| |_ _| |_ _ _|_ _ | |_ _ | |_ _ _ |_ |_ | _ | | |_ | | |_ _|_ _ _| |_|_ | _| _ |_ |_ | | |_ _ _ _ | |_ _ _ _| |_| |_| _ _|_ _|_ _ _ _ _ _| |_ |_| |_ _| | _ | | |_ | | _ _|_| |_ _ |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | |_ |_ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | |_ _ _ _| | _|_ _ _ _ _| |_ _ _ |_ _ _ _|_ _ _ _ _| _|_ _ | _| |_ | | _|_ _ _ _ _|_|_ _ |_ |_ _ _| | |_ _| _| | | |_ _ | | | |_ | _ _| _ |_ |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | | | _| | |_ | | |_ _ _| |_ _ | | _ _| | | | _ _| | | _ |_ | _ _| | | | |_ |_ _ | _| _ _ _| |_| _| |_ _ _ _ _| | |_ _|_ _ _ _ _| _ _| | _ _|_ _|_ _ |_|_ |_| _ _| | |_| | |_ |_ _ _|_ _ | | | _|_|_ _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | | _ _ _ _ | |_ _ _ | |_ _ | | +|_ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | | |_ |_ _ | _|_ _ _| | | |_ _ |_ _ | | _| | _ _|_ | |_ _| | |_ _ _|_ | | | | | _ _ _ _ | |_|_ _ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_ _| _ | _|_ | |_ _ _|_ | _|_ _ |_ _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _ _| |_ |_ | |_ _ _| |_ _ |_| | _ _| | | | | | | _| _ _ |_ _ _ _| _ _| | _| |_ | |_ | _| |_| _ _ _| _ | | |_| _| |_ _| _ _| | | |_ _ _ _| _ _ |_ _ | _ _| | _ _| | _| | _| _| _ _|_ | _ _ |_ _ | | _|_ _ | _|_| | | |_ _|_ _|_ | |_ | | |_ | _ |_ _ | _| _ |_ | |_ |_ | | _ _ _| |_ | _ _|_ _ _| | _| _| _ _|_ | |_ _|_ _ _ _ _|_ _ _|_ _|_ _ | _ _| _ _| _| |_ |_ _ |_ | | |_ |_ _ | |_ _| _| |_ | _ | |_ | |_ | _| _| |_ _ _ _ _| |_ _|_ _ _|_ _| | _ | | | |_ |_ _ | _ _ | | | _|_ _ _|_ | | |_ _|_ _ _ _ _ _ _|_|_ _ | _| _ _|_ _ _| | |_ _| | |_ _| | _|_ _| | |_ _ _ _ | |_ _| _| _ _| _ _ | _| | _ _| | | _ |_ _ _ _ _|_ | |_ _| | _|_ _ | _ |_ _ | |_| _| _ _|_ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ | | _ _ _ _ | | _| _| _|_| |_ _ | | | | _ _|_ | | |_ _ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_|_ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | | |_|_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ |_ _|_ | _|_ _| _ _ | _ _ _ _ |_ _ _ _| | _ _|_| | |_| | | _ _|_| |_ | | _| _| _ _|_ | | _ _ _ | _| _ |_ _ _ _| _ _| _|_ _|_ | |_ |_ |_| _|_ _ | |_ _| | |_| | _| |_ |_ | _|_| | | | _|_ | _|_| _| | | _ _|_| _ _| | | |_ _ _ _ _ |_ _|_ | _ _| | |_ _| _ _ _ _|_ _ | |_ | | | | | _| |_| _| | | | | |_ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _ | | _| |_ _ | | | | _ _| | +| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ |_| _ _| |_ _ _ | | | |_ | |_| | |_ _| _|_| | _| _ _| _| | _ | | |_ _| |_ _ | | _| |_ _ | | | | _ _ | _ _ _ _| _| | | _ _ |_ _ |_ _| | _| _| |_ _ | | _|_ | | | _ | | _ _ | | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _ _| _| _|_ _ | _ _ _| | _|_ _ _ _|_| |_| |_ _|_ | | _ _ _ _ _ | | |_ _ |_ | |_ | | | | _ _| | |_ _|_ | _| _|_ _ | | _ _|_ _|_ | _ _ _| _| | |_| |_ | |_ | _| | | | _| _| |_ _ _ _ _| | _|_ |_ _| |_ _ _| | |_ _| |_ _ _ _| | |_ | | |_ _| | | | _| | _ _ _| | | _| _ _|_ | |_ |_|_ _ _| |_ _| | | | _ _ _| _| |_ _ _ _ _| | _| _ _ _ _ | |_ _ _ _ | |_ | | | | | _| _| |_|_ |_ |_ | | _| | |_ _ |_ _ _| |_| | |_ _| _|_ _ _|_ | |_ | _| _| _ |_ _ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| |_|_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _| |_ |_ _| | | _|_ _ _ _| |_ _ _ _|_ | _ _ _|_ _ _ _ _ _| _ _ _| _| | _|_| _ _| _|_ _ _| |_ | |_ _| _| _ _|_ |_ _ | | | _| |_ _ _ _ _|_ | _ |_ _ | | |_ _ _| |_ | _|_ _ | | _| |_ _|_| _|_ | | |_ _ |_| | | _| | _ _| |_ _| _ _| _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ | _ _| | | _ | | _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _| |_ _| |_| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _ _| _ _ _ _ _|_ |_|_ |_ _ _ _| _ _ |_ _ | _ _| |_| | _ _|_ | |_ | | |_| _| |_ _ _ _ _| | | |_ _|_ |_ |_ _ _ | | |_|_ _ _ | |_ |_ _ _| _| _ _| | | | |_ | |_ | | | | |_ | | | _ |_ _| _| |_ _ |_ _| | |_|_ | |_ | _| |_| |_ | |_ _ | | | _| |_ |_| _|_ _|_ _ | | | | _ _| | | | | | | |_ _ _ _| _| |_ _|_ |_| |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _| | |_ _ _|_ | | | |_ _ _| | +| |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | _ _| _ _| _ |_ _| | | | _|_|_ _ _| |_ _ |_ _ _ |_ _|_ _ _ _| | _| | _| | | | | _| _| | |_ _ _|_ | | |_ _|_ _|_ | |_ _ _ _ _ _| _| |_ _| | _ _| | _ _|_| _| | _ _| | | | _ _| |_ _ _| _ _|_ | _| |_|_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ _ _| _| _ _| | | _ _| _ _ | _ |_ |_ _ _ _| |_| _ _ _ |_|_ _|_ _ |_ _ _| | |_| | |_ _| _ _| |_ _ | | |_ |_ _ _ _|_ | _| _ _|_ _ | | |_ _|_ | | _| |_ _| |_ _ _|_ _ | |_ _ | | _ _| _ | |_ | |_ | | _ _| _ _|_ _| |_ | _| _| _| |_ _ _ _| |_| | |_ _| _ _| _| |_ _ _ _ _| | _| | | |_ _ | _|_ | |_ | _| |_ |_ _ | _| |_ _ | | _| |_ _ | |_ _|_ | | _| |_ _ _| _| |_ _ | | | | | | |_ _| | |_ _ | |_| _ _| _ _| | _ | |_ | | |_|_ _ _ |_ |_ | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _ _| _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | _| _| | |_ | _| _ _ _ _|_ |_| | | | | _ _|_ |_| |_| |_ | | |_ _ _| _ _| | | |_ | |_ _| _| _ _|_ _ _|_ _ _ _| | |_ _ | _ _ _| _ _| |_ _| _ _| _| |_ | |_ _ _ _| _ _| _|_ | _| | | |_ _|_ | | _ _ | | | |_ _ | | _| | | |_ _|_ | |_ _ _ | | | |_|_ |_| _| _| | _|_|_ | | | _ _|_ _ _ _| | | _| | _ _|_| |_ _|_ _| | |_ _ _|_ | _|_|_ | | | _ _| _ _ _ | | |_ _| _|_| |_ _ _| _| _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ |_ _ _| _ _ | |_ _ |_ | _ _ _| | | |_| |_ | | _| | | _ _| | _| | |_ | |_ _| _ _ _ _|_ _|_ _ _ _ _|_ _ _|_ |_ |_ _|_ _ |_ _| _| | | | _ _ _| | | _|_ | |_ | | |_| | | | | |_ _|_ _| |_| | | |_ _ |_ | _ _| |_ _ _| | |_ _| _| |_ _ |_ | | |_ |_ _|_ _ _| _ | |_ _ _| |_ _| | _ _|_| | | |_| |_ | _ _ _| | |_ |_ _ _| _ _ _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | _ _| | _ | | | _| | _ _| | +|_ _|_ | _ | _|_|_ | | | _ _| _| | | | _|_ | | _ _|_| |_ _ |_ |_| _ _|_| |_ _ | _ _ _ _ _|_ _| _| _ _ _ _ | |_ _ _| |_ _ _| |_ _ | | _| _ _ | | | | | _ _|_ _ _ _ | |_ _ | _ _|_ | _ _| | _ _ _| | _| _ |_ _ _| _ _ _| |_| | _|_ | _ _ | |_ _ _ _ | |_|_ _ _ _| | | _ _| | _ _ _| _| | _ _ _|_ | _ _ _| _| _ _|_ | |_ _ _ _ _ _ _ _|_ _ _ _|_ _ | |_|_ | |_ _ | | | | | |_| |_ _| |_| | _| | _|_ _| | _|_ _| | |_ |_ _ | _ _ |_ |_ | | | | |_ _ _ _| | | _ _| _| |_ | _| _ _ _ _|_ |_| |_ _| _| _| | _ _| _| | | |_ |_ _ _ _ _ _ _ _ _|_ _ | | |_ _| |_|_ _ |_|_ _|_ |_ | | |_ | _|_ _ | _| | |_ _ _| | | |_ _ _ _ _| |_| | _ _ _| _| | _| _|_ _ _| |_ | |_ _ _|_ _ _| | | | _| | | _ _| | | | _| _| |_ _ | |_ _ _| | | |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ |_| _ _ _| _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | | _|_ | |_ |_ _ _| |_ | _ _|_ | _ |_ _ _|_ _ _|_ |_ |_ | _ |_ |_ | |_ _| _| |_ | _ _| | _ _ _ _ | _|_ | |_ _ | | _ _ _| _ _| _ _ |_ |_ _ | _ | | |_ _ | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_|_ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ |_ | | _|_|_ _ _ _ _| |_ _| _ _ |_| _ | | | _|_ | | |_ _ | _ _|_ _ | | |_ _ _ _ _| |_ _| _ _ | _| | | _ | | |_ _ | _| _| _ _| _| _|_|_ | | | _ _| _ _ | | | _|_ | _ _| | _| |_ _ | | |_ _ | | | |_ _|_ | | _| |_ _ | |_ _ _ _|_ _ _ | |_ | | _| | _ _ | _ _| _ _ _ |_ | | | |_ _ |_ |_ | |_ _ |_ |_| |_ _| |_| |_| _| _ _ _| | |_ _| | _ _ _ _|_ |_| _| |_ _|_ _ _| _ _ _ _| | |_ _ _| _| |_ | |_ | | | _|_ _ _ _ | _| |_ _|_ _ |_ _ _ _| |_ | _ _| |_ _ _| |_ _ | _| | | | _ _ _| | _ _ _| _| | | |_ _|_ | | _ | | | |_|_ |_ _|_ _ _ _| _| | | | | _| | | | +| _ | | | _|_ _ _ _ _| |_ _| _ _ _ _| |_ | | | _ _|_ | | |_ _ |_ _ _| _| _ |_ |_ _ _| _ _ | |_ _ | _| |_ _ _ _| _ _| _ |_ |_ _ | | | | |_ |_ | | _|_ _|_ _ _ | | _| |_ _ |_| | _ _| |_ |_ |_ _ | |_ |_ |_| _ _ _|_ | _| _ _|_ _|_ _|_ _|_ |_ _ _ | | _| |_ _ |_ _ |_ | |_ | _|_ _ | | _|_ _ _| | |_ _| | | |_ _ _ _ _|_ _ | | _ _ _ _ | |_|_ _ _ _| | | | | |_ _ | | | | | | |_ _| _ _| | _| _ _|_ _|_ _ _ _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_| _| | | |_ _ _ _ _ _ _| | | | _| _ _| | | |_ _ _| |_ | _ _ _| _|_ _| |_ _ | |_ _|_ | |_ | _ _ |_ _ _| _ _ |_|_ | _ _| | _ _ _| | |_ _| _| | | _|_ _ |_ | _| _ _ _ _|_| |_ _| | _| _| |_ _ | | | | | | _| | |_ | |_ _ _ | _ _|_|_ _| |_ _| | | | |_ _| _|_ | | _| |_ _ | | _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ |_| | _ _|_ | _|_|_ | | | _ _|_ _ |_| | |_ | |_ _ | |_ _ |_ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | | _| _| | |_ _| _| _ _|_ _ _| _| |_| |_ _ _ _ | | |_ |_| _| | |_ _ _| _|_ _ | | _| _|_ | _|_ |_| | | _|_| | |_|_ _| | |_ |_ | | | | | _ _|_ | | | |_ _|_ _|_ _ |_ _ |_ | | _ _ | _| _ _| |_ | | |_ |_ _ | | | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ | | |_ _ _ _ _ _| | _| |_ _|_ _| |_ | _ _| |_ _| _ _| | _ _ _| |_ _ _ | _ | _ _ _| |_| |_ _ _| |_ |_| |_ _| _ _| |_ _| | _|_ |_ _ _ _ _| |_ _| |_ | | |_ | | _| | | _|_ _ _| | | | |_ _| | _| | | | |_ |_ _ | _ _ | _| |_| |_| _| |_ _ _|_ _|_ | |_ _ _ _|_ _ |_ _ _ _| |_|_ _| _ _| | _| _|_ _| | _| _| | |_ _ _| _|_ _ _| | | | _ _|_ _ _| |_ | | _|_ _| _ _ |_ _ | _ _| | | _ _ _| _|_ | | |_ _|_| | | _| | | _| _ _ _ _ _ _ | | _ |_ _| | _ _ _ _| | |_ | |_ _ |_ |_ _ _ |_ _ _| |_ _|_ _ _ _ _|_ | | |_ _| |_ _|_ _ |_ _ _ _ _ _ |_ _ _| |_ | _| |_ _| +| | |_ _| | _ | _ | _ _|_ _| _|_ _| |_| _| | _ _| |_ _| _ _| _ _| _| _ _|_ | _ _| | _| |_ _ | |_ _ _|_ | | _ |_| _| _ _|_ | | | | | _| _|_ _| |_ _ | _ |_ | _|_ _ _| | | _| _ _ _| | | _ _| | |_ |_ |_ |_ _ | _ | |_ _| _ _ _ |_ _ _ _ _ _| _ _ | |_ _ _|_ | | | | _|_ | | _ _| | | | | | |_ _| | _ _| |_ _ _ _ _ _ _ _ | |_| _ | | _| |_ _ | _| _ _| |_| | | | _ _|_| |_| | |_ _ _ _| _ _| |_ _| _ _ _ |_| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _|_| | _ _ _ _ | _|_ | |_ _ | |_ _| _| _ _|_ _ _| | _ _ _ _ _ _ | | | | _ |_| | _| |_ _ | | _ _ _| | | |_| |_ | | | _ _| |_ _ _| _| _| |_ | _| |_ | | |_ _ | | | | _| _| | | | | | _| | _| | |_ | _| | |_ | |_ | |_ _| | _ _ _ _ |_| | | | | | _ _ _| _ _| |_ _ _| | |_|_ _| | _| | | |_ _|_ |_ _ _ _ _ _ | | |_ _ | | _|_ _ _ _ _| |_ _ _ _ _| |_ _|_ _ _ _|_ | | | _| |_ _| | _ |_ _ |_ | | | | _|_|_ | | | _ _| _| _| | |_ |_| | |_ | | _|_ | _ _| | | _ _ | | |_ _ _| _ _ |_ _|_ |_ _ _| _| _| _ _ | | _ | | |_ _|_ _| |_ _ |_ _ | |_ | _ _| | | | | _|_ _ _ _ |_ _| |_ |_ _ _ _ _|_ |_ _ _ _ |_ _ |_ _ |_ _|_ | |_ _ _ _ _|_ |_|_ _ _| | |_ | |_| | |_|_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | _|_|_ _ _ |_ _ _|_ _|_ _ _| | _| _ |_ |_| _ _ _| _ _| _ _|_| | | _| _ _| |_ | |_ | _ _|_ _| _ |_ |_ _| _ _| _ _ |_| _|_ |_ _ _ _| _ _ _|_ _| |_ _ _| |_| | |_| | | _ _ _| | | | |_ _| _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | |_ _ _| _| _ _ | _ _|_ _ _ _ | |_ _ |_ | | _ | | _ _| | _| | | _|_ _ _ _ _| | | _ _ _ _ _ _ _|_ _|_|_ _ | _| _ _|_ _ _|_ | _ _ _| | | |_| |_ | | |_ _ | _|_ _ _ _ | | _ _ _|_ |_ _ _ _|_|_ _|_ _ | _ | _ |_| | | |_ _ _ _|_ | | _|_|_ _ _| _ | _ _ _ _ |_ _ _ _ _ _ _ _ _ _ | | _|_ _ |_ _ _ _ |_ _ | _ _ |_ _| _ |_ |_| |_ _ _| +| | |_ _ |_ _| | | |_ _|_ _ _ _ _| _| _ |_ |_ | |_ _ _ _| _ _| _| _| _| |_ _ _ _ _| | _|_ _ _| | | | | |_ _| |_ | | _ _|_ _ _ _|_ _| |_ _| _| _ |_ |_ | | _| | |_| _ _ _ _| | | |_ |_ _ _| | |_ _| _|_ _|_ _ _ |_ _ _ _ _| | |_ _ _ _ _ _ _|_ |_ _ _ _ _| |_ _| _ _| |_|_ _ | _ | |_| _| _|_ _| |_ _| |_ |_| |_ | | _ _ _ _| _ _|_ |_ _| | |_ _ _|_ | | |_ |_ _ _ _|_ _| _ |_ | |_ _ _ _ | | _|_ _ _ _ _ _ _| | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ _ _|_ _ | _ _ _| _| |_ | | |_ | _ _| | _ _ | |_| | _ _| | |_ _| |_ | | _| | _ _| _| |_ _ | _| |_ _|_ | | _| |_|_ | | | _ _ _| _| |_ |_ _|_ _ _ _| | | |_ _| _|_ |_| _| _ _| _| | | | _|_ _ _|_ |_| | |_ _ _| | _ _|_|_ _ _ _|_ _ |_ _| _| | |_| | |_ | _ _| | _ _ | | | _ _ _ _| |_ _ _| |_ _|_ _ _ _ _| _ _ _ _ | |_ _|_ _ |_|_ _| _ | | | | _ _ |_ _ _| | _ _ _| |_ |_| _| _|_| _ _ |_ |_| | | |_|_ _ _ _ _| |_ _|_ _ _ _ _| | | | | _| |_ |_ _|_ | |_ | |_ _| |_ _| | | _ _ _|_ | | |_ _| _ _ _| _|_ _ | | |_ _| | |_ | |_ | | |_ _ |_| |_| |_ | | | |_ _|_ _ _ | |_ _ _|_ |_ _ |_ _ |_ | | _ _| | _ _| | | _ _ _ _ _|_ _ _ _ | |_ _ | _|_ _| | _|_ _ _|_ | _ _| |_ _ _ _ | |_|_ _ _ _| | | _ _|_ _ _ | _ _| |_ | | _ _ _ _ | |_| _| _ _|_ |_ _ _ | | |_ _ | _| |_ _| _ _ | | _|_ |_| | | _| _| _ _|_ | | | | |_ _ |_ | _ _ _|_| |_ |_ _ _ _| _ |_| _| _ |_ |_| _| _| _| _|_ _| | |_ _ |_ _ _ | | |_ | _ _|_ | | |_ _ |_| | | _ _ _| _| | _| | | | | _ _| _| |_ _ |_ | _ _| _ _|_ |_ |_ _ _| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _| | _ _| _ _ _|_ _ | _| |_ _|_ | | _| |_ _ | |_| _ | |_|_ _ _| _ | | | _ _ _ _ | |_|_ | | | | | _|_ _ |_ | _ _| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | |_| _ _ | _ |_ _ _ _| | | _|_ | _| _ _|_ |_|_ _ _ | +|_|_ | | | _ _| |_ _ _ _ | |_| _| _| _ _|_ | |_ | _ | | |_|_ |_ _| |_ _ _ |_ _| | _ | _| | |_| |_ |_ _ _ _| | |_ _ _| |_ |_ _ _ _| | | _| _ _|_ | | |_ _ | | _| _ _| | | | _ _| | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ | _ _ _|_ | | _| |_ | | _ |_| | | |_ | |_ _ _ |_ | |_ | |_ | | _| |_ _| _ _ |_ _ | | | _ _| _| | |_|_ |_ | _ _ |_| _| _ _|_ | _ _ _| |_ | _ _ _ _ | |_ _| _ _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | _| _ | |_ | | |_ _| |_ _ _ _| |_| |_ | |_ | _|_| _ | |_ _ _| |_ _|_ _ _| | _ _ _ _|_ _| _|_ _ _ _ _|_ _ | |_| _ | | | |_ |_ _ | _|_| |_ _ | | | _|_ _ | _ _ _ _|_ _|_ _ |_| |_ |_ |_| |_ | |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | _| _|_ | |_ |_ _| _ _|_ _ _ |_ _|_ _| | _| | _ | | _ _ | _ _| |_ _ | _ | _|_ _ | _| |_ |_ _|_ _| |_ |_ _ _ _| _ _|_ _| _ |_ |_ | | _ _ | | | _| | | _| |_ | _ _ _ _| _ _ _ | _|_ _| |_| _|_ _| _ _ _ _|_|_ _ _| |_| _ _| | _ _|_|_ _ | _ _|_ _| | |_ _ | |_ _ _ _ _| | | | _| |_ | _|_ |_ _| |_ _|_ | |_ | | _| |_ _ | _ _ _|_ _|_ _ | | _ |_ _ _| _| _| | | _ _| | _ |_ _ _| _ _ _ _ | _| |_ _ | | | _|_ _ _ | | | | | _ _ _| _| |_ _ |_ _ |_ | |_ | | _ _| | _ _| _| |_ _ | | _| | _| |_ _ _ _ _|_ | _|_ _|_ _ |_ _| _| |_| |_ _ _| _|_ _ _| |_| | _| |_ _ _ _ _| | |_ _|_ _ |_ _| | | _ _ _ _|_ |_| | | | | _| _| _ _|_ |_ _ _| | | |_ _ |_ _| | _| _ _ | |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_|_ _ | |_ | | | | | | |_ _|_ _ |_ _ _| | | |_| |_| | _| _| _ _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ |_ _ | _| | |_ _| | | |_ |_ _ | _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _| | |_ _ |_ _ _ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _| |_| |_ _ _ _ | |_ _| | _| |_ _ _ _ _| _ _ _ | +| _ _| |_ _| _ _| _| _| |_ _ | _| |_ _ _ _ _|_ | _ _| |_ _|_ _ |_ _ |_ |_| _ _| | _ _|_| |_ |_ | | | _|_ _| _ _ |_ _ | _ _| | |_ |_ _ _ _ | |_ | |_ _ _ _ _|_ _| |_| |_ _ _| | _ _| |_| |_| _ _|_ _| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| |_|_ _ | | | |_ | | _| _| _|_| _ | _ _ _| | _| | | |_ |_ _ | _ _| _ _| | |_ _| _ _|_ _ _| | | | _ _| |_ _ | | _| |_ _ _ _ _| | _ _| _|_ _ | | _| |_ _ |_ | _| | | |_ _|_ | _| _ | | |_ _ _ _| | |_ _ _|_ _| | | |_ _ _ _ _ _ _|_ _|_ _ _| _ |_ _| |_ _ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _| |_ | |_|_ | | _ _|_| |_ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ | |_ _ | _ _|_ |_| | |_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ _ |_ _ |_ | |_ |_ _ _| _ _ |_ _ | _ _| | | |_ | |_ _| _| |_ _|_ _ _|_ |_ _| _|_ _ _| | |_ _ _ _| |_ _ _ _| | |_ | _| _| _ _|_ | |_ _| |_ _| |_ _ |_ _ _ _ | | | _|_ _| |_ _ _ _| _ |_ |_ _ | | _ _ _ _ | |_ _ |_ | | | _ _ _| | | _ _|_ _| _ _| | | _ _|_ | |_ _| _|_ _| | _ _| _| _ _| | | |_ |_ _ |_ | _ _ _ _ |_ _| |_ _| | _ _| | _|_ _ |_ | _|_ |_| _ _ _|_ | | |_|_ _ _| | | | | | |_ _ _ _ _| _ _| |_ | | | _ |_ _ _| | | | | _|_ | | |_|_ _ | |_ | | | _ _ _| | |_ _ | |_ | _ _ | | | _ _ _ |_ _ | _ _|_ _ _| _ |_ _ | _| _| |_ | _ _ | _|_ _ _ |_ _ | | |_ _ _| |_ | |_ _| | | |_ | _| |_ _ _ _ _| | | _| | |_ _ |_ | _| |_ _ _ _ | _| _ |_ _ _ _| _ _| | _ _ _ _| | |_ | | _|_ | _ | |_ _ _ _|_| | | | _| _ _|_ _| _ _ _ _| | | _| | |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | _ _| |_| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _ _| | _ _|_ | _ _ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ _ _| |_ _ _| _ _ |_ _| | _ _| |_ _ _ | | | _ _ | _| +| | _ _ _ | _ _ _|_ |_ _ _| | | |_ | _ | _| | | | | | |_ _ | | _| _|_ |_ _|_ |_ | _ _|_| |_ _ _ _|_ | | |_| |_ | | _|_ _ | |_|_ |_ | | | _ | |_ _ _ _| | | | |_ |_ | | _ _ _ _|_ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_| _| _ _| | |_ |_ _ _ _|_ _|_ _ |_ _ |_ _|_ _| |_ _| _| |_|_ | | _ _|_| |_ _ _| _| _|_ _ _ | |_| |_ | | _ _| _| | |_ _ |_ |_ |_| _| _| | |_ _ _|_ | | |_ _ _| |_ _|_ _ _ _ _| |_| _| | _|_ _|_ _ |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _ |_ |_ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | _|_ | _ _|_ | | |_ _ | _| | | | |_ _| _ | | _| |_ _ |_|_ | _|_ _| |_ | | |_ |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| | _ _| | _| _ _ _|_ | | |_| |_ | | | |_ |_|_ |_ |_ _ _ _ | |_|_ |_ _ | | _ _| | _ _ _ _|_ | | _ _| |_| | _| | _| |_ _ _ _ _| | _ _| | _| _ _ _| _ _ |_|_ _|_| | | | | |_ _| _| _ _|_ |_ _|_ _| _ | | _| |_ _ |_ _ | |_ _ _ | | _|_ _|_ _ _|_ | _|_|_ _ _| |_| _ _|_ _ _ _ _ _ _|_ _|_ _ | _|_ _| |_|_ | | _ _|_ _| | | _| |_ _| _ _ _ _| _ _ _|_ _ | | | | | |_ |_ |_ _ | _ |_ _| | _ |_| | | |_| |_| _ _ | _| | | _| |_| | | _| _ |_| |_|_ _ | _ | |_ _ _| |_ | | | |_ | _| _| _|_ | _|_ _ |_ _| | |_ _ _| _ _| |_ _ _| _ |_ |_ _ | | | |_| _| |_ |_ _| | |_ _ _ _ _| |_ _ | |_ _| _| _ _|_ _ _| | | _|_|_ | | |_ | _ _ _ | | | _ _|_ _ _|_ _ _|_ _ _|_ | |_ _|_ | |_ |_ | | |_ _ | _| | _|_|_ _ _| |_ _| _ _|_ _ _ _ _|_ _ _ _ _| | |_ _| _ _ |_ _ | _ _| | | _ _ _|_ _ _ | _|_|_ | | | _ _| _ _ _| | |_ | |_ | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ | _|_|_ | | | _ _|_ _ _ _| | | | |_| |_ | | _ _ | |_|_ |_ _| _ _| |_ | | _|_|_ | | | _ _| | |_ | | _ _ _ _| | _ _ _| | | |_| |_ | | _|_ _| |_ _ _| |_ | +| |_ |_ _ | _| _ _ | _ _ _|_| |_ | |_ _| _| | |_| |_ _| |_ _| _ _| | _|_ _ | _ _ _ | |_ _ |_| _ |_ |_ _ _ | _|_ _|_ | | _| |_ _ |_ _| | _ _| | |_ _|_ _|_ |_ _| _ _ _ |_ _|_ _|_ _ _ _ _| |_ _ _| |_ | | |_ _ _| | | _|_|_ | | | _ _| _ _ | | | | _ _| | | | | |_ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ |_ |_ | _ _|_ | | |_ _ | |_ _ _ _ _ _ _ |_ _|_ | _ _|_|_ _ _ _ _| |_ |_| | _ _ _|_ _|_ _ _ _ _| | _| _ _ _ | | |_ _ _ | | _ _ | _ | _ _| _| |_ _ _ _ |_ _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| | _ _|_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_ | |_ _| | _ _| |_ _| _ _| | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _ _|_ _ _| | | |_ _ _| _| | | _|_|_ | | | _ _|_ _ |_ | | | |_| _| |_ _ _ _|_ |_ _ | _|_ _|_ | | _| |_|_ _| | |_ _ | | | _| |_ _ | |_ _ | _|_ | | _ _ _ _| |_| |_| |_ | | _|_ | | |_ _ _ | | | | | _ _| _ _ _| _| | |_| _ _| | _|_ _|_ | _| |_ _ _ _ _| _ _ |_ _| | |_ _ _|_ | | | _|_ _ | _|_ _ _ _ | |_|_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ |_ | _ _|_ | | _ _|_ _ _| | _ _ _| | |_ _ | | _ _| |_ | |_ _ _ |_ _| | | |_ |_ _| _|_ _ | | | _| _| |_ _| _| | | | _| _| | | _| |_ | | _ |_| | | |_ | _| _|_ _| | |_ |_| | | _ _ _ _| _| |_ _ |_ _ |_|_ | _ _| | _ | _ _ _| |_ | _ _| | _|_ |_ _| _| _ _|_ _ | | | _ | |_ | _ _| | _ | _ | |_ _ _ _ _| |_ | |_ _ _ _ _|_ _|_ _| _ | _| _ _ _ _ | |_ _| _ _ _ _|_|_ |_ | | |_ _|_ _ |_ _| _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _| | | |_| |_ | | |_ _| _ _ |_ _|_ _ _ _ _| |_ _| _| | |_ _ | | | _|_ | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _ _ _ _| |_ _|_ _ _ | | | | | _|_ | | _| |_ _ | |_ _ | | _ _| _ _ _ _| |_ _ _ _ _| |_ _| _| | |_ | | | _ |_ _|_ _ | |_|_ _|_ | | _| |_|_ _ _|_ | | | _| | | +| |_ _ |_| | _| _ _ _| _ _ _ _| _| _ | |_ _| |_ |_ | |_ | | _ _|_ _ _ _ _| | | | | _ _| _| _ _|_ | _| | _ _ | | |_ |_ _ | |_ _ _| | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_ _ _|_|_ | _ _| |_ _ _ _ _| |_ _| | | |_ |_ | | |_ | _|_| _| | | _| |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ |_ |_ _| | _ _| |_ _| _ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ _| | _ _ _ _ | |_ _ | | | |_ | _ _| | |_ _ |_ _| | |_ _|_ _ _ | | |_ _ _ _ | _ _| | _ _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| _| |_ | | | | | | _|_|_ | | | _ _| | _ | | | | | | _| | |_ _ _ _| _ _| | | | | | _|_|_ | | | _ _| _ _ | | | | _ _|_| |_ _ | _| |_ _ | _| _|_ |_ _ _ _ _| |_ _| _ _| | | | | |_ _ _| |_ _ _ | |_ _| | |_ _ _| | |_ |_ _ | _ _| | | _|_ _|_ |_ _ _| | |_ | | |_| | | _| _ _ _ _|_ |_ | | _| |_ _ |_ |_ | | | _| |_|_ _ _|_| |_ | |_ _ | _ |_ _|_ | |_ | | | _ _ | | |_ | _ _ _|_ | | _ _| _ _ _ | | _| | _ _|_| |_ _ |_ _|_ _ | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _| | _ _| |_ _ _| _ _ |_ _ | _ _| | _| | |_ _ |_ | |_ | _ _| | | _|_| | | |_ |_ _ |_ _| _|_ _ _ _ _|_ _ | |_ _ _| |_ | |_ | |_ _ | | | |_ | | _| _| _|_ |_ _ _ _| _| | | |_ _ _ _| _| |_ _ | |_ | | | _|_ | |_ _ _ _| _| | _ _|_ | |_ _ _| _|_ | | _ _| | | _| | |_ _| _|_ | _|_| _| | | |_ | _ | _| _|_| _ | | | | | |_ _| _ | | _| |_ _ | | | _ _ |_ |_ _|_ _ |_ |_ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ |_| |_ _|_ | | _| |_ _ _|_ | | _ _ _| _ _ |_ _ _| _ _|_| |_ |_| | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| |_| _ _| _ _ _ |_ _ _| | _|_ _| |_ | | |_ |_ _ | |_ _ | | | | |_ _ _ | _ _ _ _| _ |_|_ | | |_ _ _| |_ |_ | | _| | |_| _| | |_ |_ _ | _ _ _|_ | | | _| +| |_ _ | | _| |_ _| _ _ _ _ _ _| _| | _| |_ _ _| _| |_ _ _|_|_ | _ _ _| |_ _| |_ _|_ | _| |_ _ _ _ _| | _|_ _ _| | |_|_ | | _ _|_| |_ _ _| |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | | _ _ _ _ _| |_ _ _ | _ | _ _ |_| _| _|_ _| |_ | |_ _ |_ _| | | _|_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| | |_ _ _ _ |_ _ _ _| _ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | | _| |_ _ |_| | | | _|_ _ _| |_| _ |_ _ _|_|_ _ _ _ | | | |_ _ | _| | _ _| |_ | | | | |_ | _|_|_ | | | _ _| _ | _| | |_| _|_ | _ _ _|_| | | |_ _| |_ _ _ _ _| _ _|_ _ | | _| | | | |_ _|_ | |_ _| _ _ | | | |_|_ |_| | |_ _ _ _ _| |_ _| _ _| _ _| | | | |_ _ _ _ _| _ _| | | |_ _ | _ _ _| _ _| | _ _ _ | | |_ _ | _ _|_| |_ |_ |_ |_ _|_ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ _ _ | | | _ _| | | _ _|_ _ _| | |_ |_ _ _| |_ | | |_ |_ _ | | _| _| | | |_ _ _ _ | _| | | _| | | | _ _| | | _| |_|_ |_ _|_ | |_| |_ _ | |_ _| _| |_ | _ _| | | _|_ | | |_ _ | _ | |_ _| | _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ _ | _|_ _ _ _| _ _ _|_ | | |_| |_ | | |_| _|_ _ _ _ |_ _| _|_ _ _ |_ _ _ _ _|_ _|_ | _ |_ _ | | _ _ _ _ | |_|_ _ _ _ _| | | _|_ _|_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_ | | |_|_ | _ _ _| | _| | | |_ | |_| |_| |_ _ | | _ _| | | |_ _| | _ _| | _ _ _| _ _| | | | _ _| | | _| _ |_ _| |_ _ |_ _ | |_ |_ _ _|_ _| _| _ _| |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | _ _|_ _ _|_ _ |_ _ _ _| | |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | _ | | |_ |_ _ | _ _ |_ _|_ | _ _| _ _|_ |_| _| _ |_ |_| | |_| | _| | | |_ _|_ | |_ _ _ _ | | |_ _ _ | | _ _|_ _ |_ _ | | | _| _ |_ |_| |_|_ | | _ _|_| |_ _ |_ _|_ _ |_ _ _| | _ _ _ _|_ |_ _ _ _| _| _ |_ |_| _|_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_| | |_ | +| _ _| | | | | | |_ _ | | _ _ _| | _| |_ _ _| _|_ |_| |_| | _| |_ _ | | _| _|_ | _| | |_ | _ _ _ _|_ _ _ | |_ | _ _|_ | | |_ _ | _| | | |_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ |_ _ |_ _ _ | _ _| | | | |_ _ _|_ _ _| _| _ |_ |_ |_ |_ _ | | | | _ _| _|_ _ _ _ _| |_ | |_| |_ _ |_ |_ | _ _ _|_ | | | |_ _ |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| _| | |_ _ _|_ | | _|_ _|_ | _ |_ |_ |_ |_| | | | _|_ _|_ _ | |_ _ _ _| | | | |_ _| |_ _|_ _ _ _ _| |_ _|_ _| | |_| | | _| |_ _| _ _ _|_ _ _|_ _ _ _ _ _| | |_ _| |_ _ _| |_ _ _ _|_ _ _| _ | | |_ _|_ _ |_ _ _| _ _ _| _ | |_ _ | _ _|_| |_ |_ _ _ | | _| | | _ _|_| |_ _ _ _ |_ _ _|_ _|_ _ _ _| |_| _ |_ |_ |_| |_ | | _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | | _ |_ _|_ _ _ _| | | _| _ | |_ |_| _| _ _|_ _ _| |_ | | _ _|_ _| _|_ _| |_| | _ _ _ _ _| _ _ _| | _|_ _| _ | |_| |_ |_ _ | |_ _ | _|_ _ _ _| | | | | _ _| _| |_ _ _| |_ | _ _| |_ _| _ _| | | |_ _ | _|_|_ _| | |_ | _|_|_ | | | _ _| | _ | | | | | | _ _| | _ _ _ |_ _ | _ _|_ _|_ | | _| |_ _ _ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _ |_ _|_ _ | | _| |_ _ |_ _| | | |_ |_ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _ _| _ _|_ _ | _ _|_ | |_|_ |_| | _| _| | _| |_| _ _| |_ _| | | | _ _ _|_ _ | _ _ |_|_ | | | |_|_ _ _| |_ |_ | | _|_ _ |_ _ | | | _ _ _ _ _| _| _ _| | | _|_|_ | | | _ _| | | |_| |_ |_| | _| _ _ _ _| | | | _ _| | | | | | |_ | _|_|_ | | | _ _|_ | | | _ | | | | |_|_ | | _ _|_| |_ _ | | | _ _| _ |_ _ |_| _| _ _|_ | | |_ _ _|_ _ _| |_ _|_ _ _ _ _| | | | | _|_ _|_ _ |_ _| |_| | _ | |_ _ |_ _| |_ _| _| _ _|_ | | _ _|_ | | |_ _ | | | |_ _ | _|_ _ _| |_ | _| _| _| _ _|_ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | _| +| | _ _| | | | | | _ _| | |_ _ | | | | | | _ _ _|_ | _| _ _|_ _|_ _ | | |_| _ _| _ _| | |_ | | _|_ _ | _ _|_ _| | |_ _| | _ _| |_ _| _ _| |_ _ _|_ | _|_ _ | _|_|_ | | | _ _| _ _ _ | | | |_ _ _|_ |_ _ | | | |_ _ _ _| |_ _ _ _ | _| _| _ _|_ | | |_ |_ _| |_| | | |_ | _ _ | | _|_ _ _| _ _|_ _ _ | |_ _ _ _ _|_ _|_ |_ _ |_ _| |_ _ _ | _|_|_ | | | _ _| _ _ | | | | _ _| | _| | | _| | | | | _| _ _|_ |_ | | _|_ _| | |_ _ _ _ _ _ _ _|_ | _ |_| |_ _| |_ _ _| _| _ _ _ |_ | _|_ | _ _|_| |_ _| | _ _| _| _ _ _| _ _ |_ _ | _ _| | |_ _ _| _ |_ |_ |_ _ _ |_ _| |_ _ | | |_ _ | | | | | | _| |_ _ | _| _ |_ |_| _ | _|_ | | _|_ | | |_ _ | _ _| _| _ _ _ _ | _| _| _ _|_ |_ | |_ _| |_ _ _ _ _| |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| | | _ _ _ _| |_| _| |_ _|_ | | _ _| | _ _| | _ _|_ | _ _ _| _ | |_ _ _ _ _| |_| |_ _|_ _ _ |_ _| |_ |_ | | _ _|_| |_ _ _ | | | _ _| | |_ | _ _| |_| _ |_ |_| _ _ _| _ _| _| | | |_ _ _|_ _ _ _ _| | _| | | |_ _ _ _ _| _ _|_ _ | | _| | | | | | |_ _ | _| | | _| | _ _ _| | |_ |_ _ | _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _ _ _| | |_ _ _| | | _| _| |_ _ _ _|_| _|_| |_ _ | | _| |_ _ |_ _ _ _ _| |_ | |_ _ _| | | _ | |_ | | _|_ _ _| _|_ |_ |_ | | _ _| | | |_| _ _ _| | | |_ _ |_| | | |_ _ _ _ _| _| |_ _|_ _|_ | | | | |_ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _| _|_ _| |_ | | |_ _ _| _ _|_ _ |_ _ _| |_ _|_ | _| | | | | | |_ | |_ _ _ _ _| |_ _| _ |_|_ _| | | | | _| |_| | |_ | _ _|_ | | |_ _ |_| |_| | | |_ _| _| _| _| |_ _ _ _ _| | | | | | | _ _ | _ _| | |_ | |_ | |_ |_ _ | | _|_ |_ _ _| |_ | | | _| |_ _ _ _ _| |_ _| | _ _| |_ _| _ _| | |_ _| _ | |_ _| _| _ _|_ _ _| | | _| |_ _ _ _ _|_|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | | | | +| |_ | _|_ |_ _|_ | _|_ _| | | | | | | |_ _ | _ _| | |_ _| _ _ _ |_ _ _| _ _| | | _ _|_ _| _| _| _ _ |_ |_ _ _ _ _| _ _ |_ _ _ _| _ _| _ _| |_| |_| _ _ | |_ _ _ _ _| |_ _|_ |_ _ | | |_| | |_ _ _ _ _ _| | | |_ _ | _ _ _ | _| | | _| |_ _ _ _ _|_ _|_ _ _ _|_ _ _|_| | _|_|_ _ |_ _ _|_ _ _| | _ | | |_ _ _| _ _ | |_ _ |_ _ | |_ _ |_ _ _ _ _| |_ _| | _ _ |_ _| | |_ _ _ _| | | _| |_ _|_ | | | |_ _| |_ |_ _ _ _ _|_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ | _ _| _| _| | | | |_ _| | _| _ |_ |_ | | | _| _| _ _ _| _| | |_| |_ | | _ |_| _| _ _|_ |_ _ _ _| | | _ _| | _| |_ _ _| | _| |_| |_ _| | _|_ | |_| _| _ _|_ |_ _| | _ |_ _| | _ _| |_ _| _ _|_ | _| |_ _ | | _| | | _| |_ _ _ _ _| _| |_| _| _| _ _ _| | _| _|_ _ |_ _ _ _| _ _| | _ | |_| |_| _ |_ | |_ _ _ _ _ _|_ _ | _|_ | | _|_ _| | _ _|_ _ _ _| | |_|_ _ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _| | _ _|_ | | |_ _ | _|_ |_ | | |_ |_| | _ |_| _| _ _|_ | | _ _| | |_ _ | |_ _ _ _ _ _ _| | | _ _|_ _ _| _ _| | |_ _| |_ _ _| |_| |_ _| |_ _| |_ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| | _| _ _ _| | | |_| _|_ _ _ _ | |_ _ _ _ _ _| | |_ _ _| | | _ | | _ _|_ _ _| |_ _ _ _| | _|_ _|_ _| | _| |_|_ _ | _ _ _ _ _ _|_ _ | |_| |_ | | |_ |_ _ | | _|_ _|_ _ |_ | _|_ _| | _ _ _ _ _ _ _ _ _ |_| _ _| | |_ _| _ _ _| | | |_| |_ | | _ _ _ | _ | | | | _ _ _ _| |_ | |_ _ _ |_ _ _ | | | | | | _| | |_| |_ _ _| | _ |_ _ _ _ |_ _ _ _|_| |_| | _| _| | |_ _| | _ _| |_ _| _ _| | _|_ _|_ _ |_ _ | | |_ _ _ | _|_ _|_ _| |_ |_ _| | |_ _ _ _ _|_ |_ |_ _|_ _ _ _| | | |_ _| _| _ _| _|_ | |_ | | |_ _ | |_ _ _ _| _ _| _| |_| | |_|_ | _ _| | _ _ _ | |_ _| |_ _ _| _ _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| |_ | |_ _ | +|_ | | _ _ _ _| _ |_ _ _ | _|_|_ _ _| |_ _| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | | _ _ _| _| | | |_ _ | | _|_ _ |_ _ | _ _ | | | |_ _ _| | _|_ _ _| |_| _| _ |_ _ _ _ _ _| | |_ | |_| |_ _ | | _ _| |_ | _| |_ _ |_ |_ _ _| | |_ _ _ _| _ _ _ _ | | _ |_| _ _ _|_ | _ _ _| |_ | _ _| | | _| | |_ | _ _| | _| |_ _ | _ _| | |_ _ | | | _ | | |_ _|_ |_ _| |_ _ _ _| | _ _|_ | | |_ _ | |_ | |_ _ | _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| |_ _ | |_ | _|_ | | | _ _| |_| _| _ _|_ | | | | |_ _|_ |_ _ | | |_ _|_ | | _| |_ _| | _| |_ _ _ _ _| _| _|_ _| | |_ _ _| | | _ _|_| _| _| |_ _ _ _ _| | _| |_ _ _ _ _| _ _|_ |_ _ | |_ _ _ _| _ _| _ _ _|_ _ _ _| | |_ _ _| | |_ _ _ _ _| |_|_ | | _| _ _ _ _|_ _|_ _ _ | |_ _ | | |_ _| |_|_ | |_| _| _ _|_ | _ _ _ _ | |_|_ | |_| _ _ _ _| _ _ _ _| | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _| |_ _| _ _| | _ _ | | | | | | _| | _| _| |_ _ _ _ _| |_ |_ _|_ _ |_ _ _ | | _ _|_| _|_ _| _ _ |_ _ | _ _| | |_ _ _| _ |_ |_ |_ _ _ _ |_ | |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _|_|_ | | | _ _|_ _ _ | | | |_ _ |_| _| | | _ _ _ _| | | _| _ |_ |_ _|_ _ | | _ _| _ | |_| |_ | |_| | _ _ |_ | | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | | _| |_ _| _| _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| _|_ _ _|_ |_ _ | |_|_ _|_ | | _| |_ _| _ _| | |_ _| | |_ _| _ |_ |_| |_|_ | _ |_ _ |_ _|_ _| | |_| |_ _|_ |_ | _ _| | _|_ |_ _| |_ | _| _ |_ |_ _ _ _| |_ _ _ | |_ _ _ _| _ _| _ _| |_ | | _ |_ _ |_ |_ | |_ _ | | | _ _ _ _ |_ _| _|_|_ _ _ _ | |_ _| _ _ _ |_| _ _| | | |_ _ |_ | | _| |_ | |_ _| |_| _| |_ _ _ _| | |_ _ _ _ _| |_|_ | _|_ | _|_ |_ _ |_ | |_ | |_ _ _ _| | _| _| | | |_ _|_ | _ _ _ _ _ | | |_|_ | |_ _ | | +| _| |_ _ | _ _| _|_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_| _ _ _| | _| _ | | |_ _ _ _ _|_ |_ _|_ | | | | |_ _|_ _ |_ _| | | _ _ _ _|_ |_ _| | |_ _ _ | | _ |_ | _|_ |_ |_ _| | |_ | | | | | |_ | |_ | _ _ _| |_ | |_ |_ _ | _|_ _|_ |_ _ _| _ _ |_ _ | _ _| | _| | | | | | |_ _| | | | | |_ _ _| | | | _ _| | | |_| |_ _ _|_ _| _|_ _ _| | _ |_ |_| _ _ _| | | _| | |_ |_ _ _| _|_ | _|_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | | | |_ | |_ _ |_ _| | | | | _| |_ _ _ _ _| | |_|_ _ _ _ _ _ _| | | |_ _ | | |_ |_ _ | _ _ |_ _ _ _ _ _ _|_ | _ _ _|_ _ _ _ _ |_ | _| _ _ _| | _ | | | |_ |_ |_ | | _| |_ _|_ _ | | |_ _ _ | | | | _| _ _| |_ | _|_ | | |_ _ | | _| _| _ _ _ _ | |_ _ _|_ | | _|_|_ _|_ _ |_|_ _ | | | _| |_ _ _ _ _|_ _ | | _| |_ _ |_| |_ _ _| _ _ |_ _ | _ _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| _ _| | |_| |_| | _ _|_ | _|_ | |_ _ | |_ |_| _ | _|_ _ | |_ |_ |_| _ _| _ _ _|_ | | |_| |_ | | _ |_| _| _ _|_ | _ | | _ _ _| | | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ _ _| |_ _|_ |_ | | | | |_ | |_ | | | |_ _| | | | |_ _| |_ | | _ _ |_ _| | | _| | |_ _|_ _ | _|_ _ _|_ _| | _| _| |_| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ | _ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _ _| | |_| _| | |_ |_ _ | _ _ | | _ _|_ |_| _| _ _|_ |_ _ | | |_ _ | _ _ _ | |_ |_ _ _|_ | |_ _ _| | _ _| _ _|_ _ |_| _| _ _|_ | |_ | | _|_ _ _ | | |_ _ |_| _| _| | _ _| | _| _| _ _| | |_| _ | _| | _ _|_ _ _ _ _| _| |_ _ | |_ _ |_ |_ |_ _ _ _|_| |_ | | | |_ _ _| _| | |_ | | | _| |_ _ |_ _|_ _ |_ _ |_ _ _ |_ _| |_ _ |_ _ |_| _ _| _|_ | _ | |_ _|_ _ _| |_ _|_ _ _ _ _| | _ _ _ |_|_ _|_ _ |_ _ _ _ _| | +|_ _|_ | _| | |_ _ _ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ _ _ |_ _ _ _|_ _| |_ _| _ _ _ | _ _ _ _|_ _ _|_ _ _ _ |_ _ | | |_ _ _| |_ | | | |_ | _ _| | |_ _ _|_ _| _ _| | |_ | | |_ _| _|_ _ _ _ | |_| | _| _| |_ _ _ _| |_ | _ _| _ _ _| | | |_| |_ | | |_ _| |_| | |_|_ _ _ _| |_| |_| | | | | | |_ | _ _|_|_ _ _ _| _ _ |_ _ | _ _| | | _ _|_ | | _ _| |_ | _|_ _|_ | | | | | | _ | | _|_|_ | | | _ _| _ _ | | | | | _| _ _|_ _ _|_ _| |_| _| _ |_ _ |_| | |_|_ |_ _ _ _ _| _|_ _ _ _ | _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_|_ _ _ _| |_| |_ _ _|_ |_ | |_ _ _|_ | | | _| |_| _ _ _| |_ _|_ _ |_ _ _| |_ _| |_ _| | _| _| | _ _| |_ _| _ _| | | _| |_ _ | | _| |_ _ | | | |_ _ _| _ |_ _ | _|_ | |_ _ _ |_ _| | |_ _ _| _| | _| _ _ _|_ | | |_| |_ | | | | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _ | | |_|_ _ _ _| _ _|_ _| |_| |_ _ |_ | | |_| |_| _| _|_ |_ _ _| | _ _ _|_ _ |_ |_ _ | _|_ _|_ | | _| |_ _| | _| |_ _ _ _ _| | | |_ _| |_ _|_ _| | | _ | _| _ |_ _ _ _| _ _| | _|_ | _ _ | _ _|_ _ |_ _ _| |_ _ | |_ _ _|_ _ _ |_ _| |_ _ |_ _ | _| _|_ | | _ _ _|_ |_ _ _| |_ _| | _ _ _ _| |_ _ |_ _ _| |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _ _|_| |_|_ _ | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ |_| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ | _| _| |_ _ _ _ _| _| |_| | | _| | _ | | | _| |_ _ _ _ _| |_ | |_ |_ | _ | _| _| |_ _ _ _ _| |_ _ | |_ _|_ _ |_| |_ _|_ _ |_ _ _ |_ _ _| | _ _|_| _| _| _ _|_ |_ _| | _ _| | _ |_ _|_ |_ _ _|_ | | | _ | |_ |_ | _ _ _ _|_ |_| |_ _ _ _| _| | |_| _| |_ _ _ _|_ _ _ _ _ _ _ |_ _ | | |_ |_ | | _|_ _ |_ _ _ _| _| | _|_| _|_ _ | | | _ _ | | _ _ _| | |_ _ _ _ _ |_ _ | _| _| +| _ | |_ |_ _|_ _ |_ _ _| _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | _ _ |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | | |_ _| _| _ _|_ _ _|_ _| |_ |_ | _ _ _| _ _ |_ _ | _ _| |_ | | |_ _ _ _| _ _ |_ _| | _|_ _| _| | | _| |_ |_| | | |_ _ | _| |_ _|_ | | _| |_ _ | | _|_ _ |_ | | _| _| _| | | | | | | | | | _| _ | _ _ _|_ | | |_| |_ | | |_ _ _ _ _|_| |_ _ _ _| _|_ _ _ _ _ _ _| |_| | _ _|_ |_ _| |_ _ _ _ _| |_ _|_ _ _ | | |_| | | _ _| | _ _ _ _ _| _| _|_ _ _ |_ _ _ _| |_ | | _ _ _ _| _ _ _| _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ _ | _ _| _| |_ _| |_| |_ | |_ | | |_ _ |_ | _ |_ _ _ | | _| | |_|_ _| _| | |_ _ _ _| _ _| | _ _|_ _ _ _| | |_ _ _| | | |_| |_ | |_ _ _| | _ _| | _| |_ | | _ _|_ _ | _| | _ _ _ | |_ |_ _ | _|_ _|_ | | _| |_|_ | |_|_ | |_ | _|_|_ | | | _ _|_ _ _ | | | | _ _ _|_ _|_ _ |_ _ _| _ _ _ _|_ |_ _ |_| _|_| |_ _ | _| | _ |_ _ | _ |_ _ _| _ |_ |_ _| | |_| _| | |_ |_ _ | _ _ |_ _ _| _ _|_ _ | |_ _ _ _ _ _|_ _ | |_|_ |_ _| |_ | | |_|_ | _ _| |_ _ | |_| | | _ _ _| _ |_ |_ _ _| _ _ | |_ _ _|_ | |_ | _|_ | |_ _|_ _| _ _ |_ _ | _ _| |_ | _|_ |_ _ |_ _ | | _ _ _|_ | | _ _|_ | _|_|_ | | | _ _| _ | | | | | _ _|_ | | |_ _ | _| |_ _| | _|_|_ | | | _ _| _ | _| | |_ | | |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ | |_ _ | _ _|_| _| _| |_ _ _| _|_ _ _|_ _ _|_ | _ _ _ _|_ |_| |_ _ _ _| | |_ | |_ _ _ _ | | | |_ | _ _| _ _ |_ _ _ |_ _ | |_ _ _ _ | | _ _ _| | | |_ | | | _ _|_ _| _|_ |_ _ | _ _| | | | | | _ _| _ _| |_ _ _| |_ | | _ _ _|_ _| | | _| _| _ _ _ _ | |_ _ | _ _| | |_| | _|_ |_ _|_ _ _ |_ | _ _ _| | _| |_ | _ _| |_| |_ _|_ | |_ _ _ _ _ _|_ | _ _ _ _ _ _| | | | | +| | | | |_ _ _ | |_ _ _ | | | |_ _| |_ | _|_|_ | | | _ _| |_ | | | _|_ | | _ _|_| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_| |_ | _ _| | _ _ | _ _ _| |_ |_| | _ _ _| | | |_| |_ | | _| |_ | _ _ _| _| | |_ _| _ _ _| _| |_ _| |_ _ _ _ _|_ _|_ _ | |_| _ | | | |_ |_ _ | _ _| _ _ _|_ _ _|_ _ _| _ | | |_ _|_| |_ | |_| _| |_ _ | _ _|_ _|_ | | _| |_ _ |_ _ | | | _| | _ _ _| _ _ |_ _ |_ _| | | | | _ _ | _ _ _ _ _|_ _ _ _| |_ | _| |_ _ | | _ _ _ _ _| _ _ |_ _ | _ _| | _|_ _ _ _ _ _ | _ _ _| _| | _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | _|_ _| _|_ _|_ | | _ _ _| _|_ _| |_ | |_ | | | |_ _ _|_ _|_ |_ _| | _ _ _| |_ _ |_ | | |_ _ |_ | | | |_ _ _ _ _| | | |_ |_ | _ _ _| | _ _| |_ _ _| _|_| | _ _ | | |_ _ | | | | | _ _| | |_ | | | |_ |_ _ | |_ _ _|_ | |_ _ _ _ _| |_ _| _ _ | | | | | | |_ _ | _ _ _ |_ _ |_ |_ _ _| |_ | _| _| _| | | |_ _| |_ _ |_|_ | | _ _ _| |_ | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ _| _ _|_ _ _| |_ _|_ _ |_|_ | _ _ _| |_ _ _| |_ _| _| _ _|_ | _ _| | _| |_ _ | _ _| _ _|_| _ _|_ _ | _ _ _| | | |_| |_ | | _|_ _ _ _ | |_ _ |_ |_ _ _| |_| | _ | |_ _ _ _ _| |_ _|_ _ _ _| | | | | | _| | _ _| |_ _| _ _| | | _ _| | |_ _ _ _ _| |_ _| _ _| _|_ _| | | _| |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | |_ | |_| |_ _ _ |_ _ _| | _ _ _| _ _ _ _ | |_ _ _ _| |_ | |_ _ _| |_| _|_ |_ | |_ _| |_| _| _| |_ _ _| |_ | | _ _| | | _ | | |_ _ | _|_ | | | | |_ | _ _ | |_ _| _ _|_ _ _ _| |_ _| | |_ _| | _ | _ _| _| _ _|_ _ _| | |_ _ | _ _| | |_ _ |_ _ | | _| |_ _ | _| _ _| | _|_ _ _ _ _ _ _ | _| |_ _ | _|_ _ _|_ _ | | |_ _ | _ _|_ _ _ _ | |_ _| _ | | | _ _| |_ _ _| +| |_ _ _| |_ |_| |_ |_ _|_ _ | _| | _|_ _ _ _ _| |_ _| _|_ _ _|_ | | | _ _|_ | | |_ _ | _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ | _|_ | _|_| _ _|_ _ | _| _| _|_ _ | _|_|_ _|_ | | _| |_ _ | | |_ _ |_ _ |_ _| | |_ _ | |_ |_ |_| _| | _ _ _ _ | |_ _ _ _| |_ | |_|_ | | _ _|_| |_ _ _ | | _ | _ _| | _| _ |_ |_|_ _ _| _| | _| | _ _ _ | | |_ |_ _ | _ _| _|_ | |_ | | | _ _ _| | | |_| _ _| | | | |_ _| _|_ _ _| _ _ |_| | _ |_ |_| |_ _ _ | |_|_ _ | _ _ _| | | |_| |_ | |_ _ _ | _ | | |_ _ _ |_ | |_ |_ _ _ _| _| _ |_ _ _ _| _ _| _ |_ _| _|_|_ | | | _ _| _ _ _| | | |_| _| _ _|_ _ _| | _ _ _ _ _ _ | |_ _| | _|_ | | | |_ | |_| | |_ _ _ _ _| _ |_ _ | _|_ | _| |_ _|_ _ |_ _ _| |_ _| | | | | _| | | _| |_ _ _| _ _ |_ | _ _ _| _| _ _| |_ _ _| | | |_ _| | |_ _ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ |_ _ _ | _ _ | |_ _| |_ _ _| |_ | |_ | _ _ _ | |_ _| _| _ _|_ _ _| _ _|_ | |_ _|_ _|_ |_ _ _ _ |_ _ | | |_ _ |_ | _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | |_ _| _ | | _| |_ _ |_ |_ |_ _| _| _ _ |_ _ | | | | _ _| _ _| _| _| |_ _ _ _ _| | |_ _ _| | | | | _ _ _ _ _| |_ _|_ _ | _|_|_ _|_ | | _| |_ _ _| _ _| _ | |_ _| _| _ _| | _|_ | |_ _ _ _ _| _ _ | | |_ _|_| |_ _ |_ _ _ _| _ _| _ _| |_| |_ | | |_ _ _ _ _| _ _ | _| _ _ _| |_ | | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| _| _| _|_| | _|_ |_ _ _ | |_ _| _|_ _ | | _| |_ _ | | _ _|_ _ _|_|_ _ |_ |_ _ _ _| _| |_ _| |_ |_ |_ _| | | _ _ _ _|_ |_ _| | | _ _| | | | |_| | _| | | | | | |_|_ _ _|_ _ | | | _| |_ _ |_ _ | | |_| |_ _| |_ _|_ _ _ _ _| | _ _ _ _ _|_ _| _|_| | |_ | _| _| | |_ _ _|_ | |_ |_ |_ _ _ _ _| |_ _ _ _ _| _|_ _| | | _ _ _| |_ _|_ _ |_|_ |_ _ _ _| _| |_ _ |_ _| |_| | |_ |_ _| _ | +| _ _ _ _|_ |_ _ _|_ _ _ _ _ | _| |_|_ _ | | _ |_ |_ _ | _ _ _| |_| _| | _ _| |_ _| _ _| |_ | _ | _|_|_ | | | _ _|_ _ _| | |_ _| | |_ _| |_ _ |_ _ _ | |_ |_ |_ _ _| | | _ _ | | |_ |_ _ | _|_ _| | _ _ | |_ _| _ _| | _ _| |_ |_ _ |_ _ | | _| |_ _ |_ _ | _|_ | _ _|_ | | |_ _ | _| |_ _ _| |_ | |_| _| _ _|_ | _ _ _| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_|_ | _| |_ _ | |_|_ _|_ | |_ | | |_|_ _ |_ | _ _ _| | | _|_ | _ _|_ |_ _ |_ _|_ _| _|_ _ | _| |_ _|_ | | _| |_ _ _| | | |_ _ _ _ _| _| |_ _ _ _ |_ _ _ _ _ _|_ _ _ _ _ | | |_ _| _ |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | _ _| | | _ _ _ _ _ _| _ _ |_ _ | _ _| |_ _ _ _| |_|_ _ _|_ | | _ _|_ _| |_ _| _ _| _| _| |_ | _| | _|_ |_ _ |_ _ _ | | | |_| |_ _| |_ | |_| |_ | _ _| | _| | | | _ _ _ _ _|_ _ _ | _ _|_ _|_ _ |_ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _ |_ _| _| |_ |_ _| _ |_ |_| _| | |_ _ | _|_ | _ _| | _ _ | |_ | | | | _| | | |_ _| | |_| | | _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| _|_| _| _| | _ _| | |_ |_ | _ _| | _| | |_ _ _ _ |_ _| | | _ |_ _| | | | | | | _ _ _ _|_ |_ | _| | | _ _| | |_ |_ _ | _ _ _ |_ | |_ | _ _| | | | | | |_ _|_ _ | _ _| | _|_ _| _| _ |_ |_ | _ _ | | |_ _ |_ | | _| |_ _ _ | | _ _| _ _| | _| _ |_ |_| | | | | _| | | |_ _|_ | _ _ _ _ _| | |_ _ | |_ _| _| |_ _ _ _ _| | _| _|_ | _|_ _ _| | |_ _ _| _| |_| | | _ _ | _| | _ _ _| _|_ _ _ | | _|_ | _| |_ _ _| |_ | |_ |_ | _| | |_ _ _| | | _|_ _|_ _ |_ | _ _ _ _|_ _ _|_ _ _ _ _ _ _| _|_ _|_ _ _ |_ _| | _ _ _ _ | |_ _ _| _ _ |_ _ | _ _| |_ | |_ _ | _| | _ | | | | |_ | _ _ _ _|_ |_ _ _ | _| | | _|_|_ _ _ |_ | _ _ _ |_ _ _ _ _ _ _|_ _ _ _ _|_ | | _ _| _|_ |_ | _| | +| | _ _| |_ | | _ _ _ _| |_ | |_ _ |_ |_ _| | | |_ |_| _ |_| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | _| _| |_ | | |_ _ |_ |_|_ | | _ _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| _| |_ _ |_ | _|_ _ _ _| _ _ _| | _| | |_ _ _|_ | | _ |_ | |_ _| | _ _| |_ _| _ _| _ _| _ _ _| | |_| _| |_ _ _ _ _|_ | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | |_ _ _ _| | |_ _ | | | _| |_ _ | _ |_ _ _ _ _ _| |_ _| | |_ _ _ _ _| |_ _ _ | | _|_ _| | | _| | | |_ |_ _ | _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _|_ _ |_ _| | _ _ | _ _ _ _ _ _|_| |_ _ | _|_ _ | | _ _ _| | | |_| |_ | | _ _ _|_ _ _ | |_|_ _ _| _ | |_| | | |_ _ | _|_ _|_ _ |_ _ |_ _ _ _ _ _|_ _ _|_|_ _ _ _|_ | |_ |_|_ | |_ |_ |_ _ | |_| | _ _ _ _ | |_ _ _| _ | |_ _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| |_ | | _ _ |_ |_| _| _ _|_ | |_ _ _ _ | |_ _| _|_ | _|_| _ |_|_ _ _| |_|_ _|_ _| |_ |_ _|_ _ _|_|_ _ _|_ _ _| _ _|_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ | _|_|_ | | | _ _|_ _ _ _ _| | _| | _ _ _| _| _|_ _| _ _| | | | | | | |_ _ |_ | _ _| _| _ _|_| | _| | | | |_ _ |_ _ _| |_ |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | | | _|_ | _|_| _| | |_ | _ _ _| | | |_ _ _ _ _| _| _ _|_ | |_| _ |_ _|_ _ |_ _| | |_ |_ _ | | | | | _ _| _| _| _| _ _|_ | | |_| |_ _ _| |_ _|_ _ _ _ _| | | _|_ |_ _|_ _ |_|_ _ _| _|_ _ | _| |_ |_ _| |_ _| | | |_ _ _ _ _ | | |_|_ | | |_ _| | _| _ _ _|_ | | _|_| _ _| |_ _ _ | _ _|_ _ _| | _| | | | _ _| | |_|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _| _ | |_ _ _ _ |_ _ | | _| | | _ _ _| _| | |_| |_ | | _|_ | _| | | | |_ _| | | | | _ _| |_ _ _| |_ | _ _|_ _ _| |_|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ | | |_ _ _ |_ |_ _| _| | +|_ | _ _|_ _ _| _| | _ _ _| _|_| _ _ _| | |_ |_ _ _ _ _| _| _| _ _|_ | | |_ | | |_ _ | _|_ _| _ _ _ _ | | _ _ _ _ |_ _ _|_| |_ |_ _ _ |_ _|_| | |_ |_ _ | | |_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ |_ _ _ _ | |_ _ _ | |_ _ _ _ _ | _| _ _ _ | | | | | | _| _ _|_ _ _ _| _ _| _| | _| | |_| _|_ | |_ _ |_ | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ | _| _|_ _ _| |_| | | |_ |_ _ | _|_ _| _ _ |_ _ | _ _| | | | _ _ |_ _ | _| |_ _ _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _|_ _ | |_| | | |_| | |_ _ | _| _ |_ |_ |_ _ |_ _ _| |_ _ | _| |_ _|_ | | _| |_ _ | _|_ _|_ _ | | | |_ _ | |_ _|_ _ |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _| _|_ | _| _ _| _| | |_ | |_ _ | | _| |_ _ | _| |_ _|_ _ | | |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _ _| | | | | |_ _| |_ _ | _| |_ _ _ _ _|_ _ | |_|_ _ |_ _| |_ _ |_ _| _ _ _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | _| | | |_ _|_ | _| _| _ | | |_ _ | _|_ _ _ _ _| |_ _|_ _ _ |_ _ | | _ _| |_ _ |_ |_ _ _ _|_ | | |_ | |_ | |_| _ _| _| |_ | |_ | _ _ _|_ _|_ _| |_ |_ _| _| _ _|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_|_ _| |_ _ |_ _| |_ | |_ |_ _| _| |_|_ | _ | _| |_ _ _ _ _|_ | |_ _ _ |_ |_ _ | |_ | | _ _|_ _ _| | | | | _| _| |_ _ _ _ _| |_ _|_ | | _ _ | _|_ _| _| _ _ |_ _ |_ _ |_ | _|_ _| | |_| _| _ |_ |_ _ | | | | | | | | _| _|_| | |_ _|_ _ |_ _ _|_ _ | _| | | | | _ | | | _ |_| | _ | | _|_ | |_ _| _| | | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _|_ _ | |_ _| | |_ _ _| |_ _ | _ |_ _|_ | | _| |_ _ | |_ _| | | |_ _ | _| |_ | _ _| _| _ _|_ _ _| | | _ _ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | | _ | | _ |_ _ | |_ _| +| _| |_ _ _| _| | |_|_ _ | | | |_ _ | |_|_ _ _| _ _ _ |_| _| |_ _ _ _ _| |_| |_ | |_ _|_ _ |_|_ | _ _| | _ _ _| |_ _ _| | _| _ |_ |_ | _| _ | | _| _| _ |_ | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _| | _|_ _ _|_ _|_ _ | | | | | _ _ | _| | | |_ _|_ | |_ _ _ _ | | | |_ _ |_ |_ _|_ _ _| |_ _ |_ _| |_ _ _| _|_ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ | | |_ _|_ _ _ | | _|_|_ | | _ _|_| _ _ _| _| | |_| |_ | | |_|_ _ _ _| | _| | | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ |_ _ _| | _ _|_ _|_ | |_ _| |_| _| _ _|_ |_ _ |_ _ |_ | _| | | _ _ _| | |_ |_ _ | |_ _| | _ | |_ _| | | |_ _ |_|_ _ _ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ _|_ _ | | | _|_ _ _| |_ _| | |_ _ _| | | | | _ _ _ _ _ _| | | _| | | |_ _|_ | _ | |_ | | |_ _ _ _| | | | | | _ _| |_ | | |_ | | _ _ |_ _|_ _ | | |_ | | |_ _ |_ |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| |_ _|_ _ _ _ _| | | _| | |_ _|_ _ |_|_ |_ _ _ |_ _| | _ _ _| |_| _ | _| | _| |_| | _| | |_ | |_ |_|_ _ _ _| _| _| _| | _|_ | _ _ _| _ |_ |_ | _ _| | _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ | | _|_ _ |_ _|_ _|_ | _ _ _| | _| | |_ | _ _ | | |_ | |_ |_ | | | _ _|_ _ _ _ | _|_ _| |_ _ _| |_ _ _ | | |_ _ _ _| |_ _| | |_|_ _ _ _ _| _| |_ | |_ | | |_ _| |_ | |_ |_ _ _| _| |_ _ | | | | | |_| |_ _| |_ | | _ _| | |_ _ |_ _ _ _ _| | | |_ _ _|_| |_ |_| | | |_ | | _| | | | |_ _ _ _ _|_ |_| _|_ _ _|_|_ _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ _ _ _ _| | | | _| _ | | _| | | |_ _ | | |_ |_ _ | _ _ _ _| _| _ _|_ _|_ |_|_ _ _ _| | _ _ |_ |_ _ | _| | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_| |_| _|_|_ | _| _|_ _ | +|_| _| _| |_ _ | | _| | | | |_ |_| |_ | _ _ _|_ _|_ | |_ _| | _ _| _| | |_ _ _ _ |_ _ | |_| _ _| |_ _ | _| | _ |_| _| _ _|_ |_| |_ | | _| |_| _|_ | | | | | |_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | | _ | |_ _| _ |_ _| _ _ _ _| | | | |_ _ _| |_ _ _| |_ _ _ _|_ _ _| _ | | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ | _|_ _ _| _ | _| | | |_ _|_ | | _ _ _ _ _| | |_|_ _ _ _| |_|_ _ _ _ _|_ |_|_ _ _ _ _|_ _ _ _ _ _ _ |_ |_ _|_ | | _| |_ _ _ _ _ | | | | |_|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_| | | _|_|_ | | | _ _| _ _ _ | | | _|_ _ | _ _|_ _ _ | | | | _| | _| |_ _ _ _ _| |_ _ _|_ | | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| | _| | _|_|_ | | | _ _| | _ _ _| | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _ _ |_| | | | | | | | | _|_ |_ |_| | |_ _ _ _| |_ _| |_ _ _| |_ _|_ _ _ _ _| |_ _ _|_ | |_ _|_ _ |_ _ _ |_ _|_ _ _ _| | _| |_ | _| | | _ _| | _ | |_ _| | |_ _| |_ | |_ |_ |_ _| | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ | | _ _ | | _ _| |_|_ _ |_ _ | |_ _ |_| | _ _|_ _ _ | | | |_ _| _ |_ |_ | | | _| | _| _ _|_ _| _|_ |_| | | | | _ _ _ _ _| | _ _ _| | |_ _| _| _ _|_ | |_ | _|_ | |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| |_ _ _ _ |_ _|_ |_ _ _| _ _ |_ _ | _ _| | | _| |_ | |_ | |_ _ |_ | | | _ _| _|_| |_ _ _| _ _ _ | |_ | |_ _ _ |_ | | | | |_ _|_ _ |_ _ _| _ |_|_ _ _ _ | |_ |_|_ _ _|_ _ _| |_ _|_ | | | _ _| |_ |_ _ | | | |_ |_ _ _ _ _|_ | | | |_ | |_ _ _ _| | _ | | _|_|_ _ _ _ _| |_ _ _| _ _ _|_ _|_ _ _|_ | _ | _ | | _| _ _ _ _| _ _| _ |_ _| _|_|_ | | | _ _|_ _ _| | | |_ _ _ _| |_ _|_ | | _|_ |_| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ | | _ _ _ _ _ |_| _|_| |_| | | _| |_ |_ |_ _ |_ _|_ | _|_|_ | | | _ _| _ | _| | | _ |_ |_ | | |_| _ _| | | +| _| | _|_ _| | | | | _|_ _ _|_ | _| _|_ _ _ | _ _| | |_ | _ _| | | | |_ _ _ _ | _ _| |_ | | | | _ _|_ _ _| |_ | | _| |_ _ _ _ _| _| _| |_ | | _| | |_ _ _| |_ | _| | | |_ _|_ | |_ _ _ | | | |_ _| |_| | | |_ _ _|_ _ | | _ _| | _|_ |_ _ | _| _ |_ |_ |_ _ _ |_ _| |_ _ | | |_ _ |_ |_ _ _| |_ | | | _ | | _| | | |_ _ _| |_ _|_ _ _ _ _|_| _ _ | |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | | |_ |_ _ | _ _ _ _| |_ _ _| _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| |_ _ _| |_|_ _ _ _ _| |_ _| | _ _ | |_ | | _ _| |_ | | | _| | | |_ | | | |_ _ | | |_ _ _ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ |_|_ _ _ _ _| |_ _| | |_ | _ _| |_ _ | | _| _|_|_ | | | _ _| _ _ _| | | |_ _| | _ |_ | | |_ _| |_ _| |_| _| | _ _|_ |_ | | | _ _ _ _|_ |_ _ |_ | | _ _ | _ _ _| | |_ _ | _ _|_ _ | _| _ _ _ _ | | _ _| _|_ |_ _| | | | | _ _ _| _|_|_ _ _| |_ _| | _ _| _| | | | |_ _| _|_|_ | | | _ _|_ _ _ | | | |_ _|_ _| _| |_ _ _ _|_ _ | _| _ _|_ _ _| | _| | _ _ |_ | | _ _| _| _ _|_ | |_ _|_ _ | |_ _| _ |_ | _|_ |_ | | |_ _ _| _ _ |_ _ | _ _| | |_| _| |_ _ _ _ _| _| |_ _ |_ _ | _| | | |_ _|_ | _ _ _ | | | |_|_ | | _|_ |_| | | _ _ _| | | |_| |_ | | | |_ _| _| _| |_ _ |_ | | | | |_ | | | _ _ _|_ _| |_ _ _ _|_| | _| _|_ _| |_|_ _ _ | |_ _ _ |_ |_ _| | _| |_ _| |_ _| | |_ |_|_ |_ _ _| |_ | |_ |_ _ _ |_ _ _| _| | | _ _| _| | _| |_ _ _| |_ _| | |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | | | | |_ _ _ _ | |_ _ _| | | |_ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ _ _ _|_ |_ _ |_| |_ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| |_ _ _| _ _ |_ _ | _ _| | _|_|_ | _| | | _| |_ _ |_ |_ _ _ _ _| |_ _| _ | | |_| | | | _ _|_ | _| |_ | | _ _|_ | +| |_ |_ _| | _ _|_ _| |_ _ _ | |_ _|_ _| _ | | | | _ _| _| _|_| _ _|_ _| |_|_ | _ _|_ _| | _ _| | | | | |_ | _ _| _| | | | |_ | _ _ _ _ | |_ _ |_ _|_ _ _| | | _ _ _ _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ | |_ _ _| _ _ |_|_ | _ _| |_ _ |_ _| _| | _| _ _|_ |_ _ _ _| | | _ _| | _| |_ _ | | |_ _| _| _ _|_ _ _| _|_ _| |_ | _| | | | | _ _ | _ _ |_ _ |_ _| _ |_ |_ _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_| |_|_ | | _ _|_| |_ _ | _ _ _| | | _| | | |_ _|_ | |_ _ |_ | | |_ _ |_ _ |_ _ _ _| | _ _ _ _ _ _| |_ _ _| |_| _ |_ | | |_ _| | | _|_|_ | | | |_ |_| | | _| |_ _ | _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _ _ _ _ _| _ _ _| _ _|_ | |_ _ |_ |_ |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | |_ _ | |_ _|_ |_ _|_ _ |_ | |_ |_ _| | |_ | _ _ _| |_ _ _ _| |_ | _ _ _|_|_ _| _| |_ _ _ _ | |_| | | _ _ _| | | |_ _ | | _ _|_ _| _| | | | _|_| | | | | _ |_ _ _ _ _| _| _| _|_| |_ |_ |_ _|_ _ |_ _ _ _ _| |_ _| _ _ _ _| _| | | |_ _ _ _ _ _ |_ _ _ _ | |_ _ _| | _ | | _ _| |_|_ _|_ |_ _| | | _| |_ _ _ _ _| _ _ _ _ _|_ _ _ _|_ |_ _| | | _|_ _| _ _ _| | | |_| |_ | | |_ | |_ _ _ _ _ | | | |_ _ |_|_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _| _| _ _|_ _ _| |_ _ | | | |_ _|_ | | _| |_|_ | _|_ _ _| | |_ _| |_| |_ _ _| | |_ _|_ _ | _ | _| _ | _ _| | | _| _ | _ _ _|_ | _ |_ _ _| _| _| |_ _ _| _| |_ _ _ _|_ _| _ _| | | _ |_ |_| | | | | _ _ | _ |_ _| |_ _| |_ | _| | |_ |_ _ | | _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| _ _ |_ _ | _ _| |_ _ _ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ _ _ _| |_ | | | _| |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _| _ _ _| | | |_| |_ | | | _ | | | | _| |_ |_ | |_ | | | _ _ _ | | | _| | _ _|_| |_| _ _ _ _|_ _|_ | _| | | | | +| |_| _ _| | | _ | _ _ _ |_ _|_ _ | | | |_ _ | |_ _ _| _|_ | _ _ |_ _ | | _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | |_ _ | _|_ _| _ | _ _ _ _ |_|_ _| _ _ _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ | _ _ _| | | |_| |_ | | | | |_ | _| |_ _ _ _ _|_ | |_ _| |_ _ _| _ _| |_ | _ _| | _ _| _| _ | |_| | | |_ _|_|_ _| _| |_ | _| |_ _| _| |_ _ _ _| | _|_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_|_ |_ | _ _|_ | | |_ _ | |_ _ | | |_ _ _| |_ _|_ _ _ _ _| _ _| |_ | |_ _|_ _ |_ _ _| |_ _ |_ _ _ _| |_ _ _| | _| _ |_ |_ |_ _ _| |_ | |_ _|_ _ _ _ _| |_| _| _| _| _ _ _| | | _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| _| |_|_ |_ _ _ _ _ _| |_| | _| | | |_ _ _| |_ _ _| _ _ _ _ _ _|_| |_ _| | | _ _ _| _ | _ _ _| | _| _ _|_ | _| _ |_ |_ | _ _| _ _|_| _ _ _ _| |_ _ _ _ |_|_ | | | | |_| | _ _|_ _ _| | |_ | _ _ _| _|_ _| |_ _ |_ _ |_| | |_ _ _ | _| | _ _|_ _ _| | | | | | |_ _ _ _| _ |_ | _ _ _ _ _| |_ _| _ _ _ | _ | _| |_ _ | _|_ | | |_ | _|_ _ _ _| |_ |_ _ | |_ _ _ |_ _ _| _ _ | |_ _| _ | _ _| | _| | |_ _ | |_|_ _|_ | | _| |_ _| |_ |_ | _| | |_ _| | |_ |_ | _| | _ _ | _| _| | |_ _ _ _ _ _|_ _ |_ |_ |_ _ _| | _| | _|_ _ | | |_ |_ _ | _ _ |_ _| _| |_ _ _ _ _ _| _ _ _|_ _ | _ _ _|_ _|_ _ _| _| |_ | | _|_ | | |_ _|_ _ _ | |_| _ _ _ |_ _ _ _|_ _ _ _ _| _|_| _ _ |_ _ | _ _| | _| _ _|_ | _| | | | |_| |_ _ _ _ _| _ _ | |_ _ _|_ | _| |_ _ | _ | _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ _| | | |_| |_ | | | |_ | _|_ _ _| |_ _ _| | _| _ |_ |_ | _ _|_ _ _| | |_ |_ _ _|_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _|_ _ |_ |_ _ | |_|_ _|_ | | _| |_ _ |_ _| |_ _ |_ | |_ _ | |_ _| | | |_ _|_ _| | | _| _ |_ |_ _ _ _ _ _ | _| | _|_ | | | +| |_ | | | | |_| _| | |_ _ |_ _ |_ _| | | |_ _ |_| | _ _ _| _ _| | | | _ _ | | |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ _ | |_ _ _ _| _|_ _ | | | _ _ _|_ | | |_|_ _| _| |_ _ _ _ _|_ | |_ _ _| _ _ _| | _|_ _ | | | |_ _|_ | | _| |_|_ | |_ _ _| | _ _ _ _ _ |_ _|_ _| _| |_| _| |_ | _|_ | _|_ |_ |_ _ _| | |_|_ _ _ _| |_ _ _ _ _ _ | _ _ _|_ _ _|_ _ _ _|_ | | | _ _| _ _ _ _| |_ | _|_|_ | | | _ _| _ _| _ | |_ _ | |_ _| | _ _| |_ _| _ _|_ _| |_| | | _| | _ _ | _ | | _ _| | |_ _ |_ _ | | _ _ _| _ _ |_ _ | _ _| | | _| _ _|_ |_ _ _ |_ |_ _ _ _| |_| _ _ _| _| _| | | | | | _ _| |_ | _| | | |_ _|_ | | |_ _ _ | | |_ _ | _| _ _ _ _| |_ | _| _ _|_ _| | | | _ _ _ _|_ |_ |_ | | |_ _ | _| _ |_ |_| |_ _|_ _ | | |_ _| | | _| _|_ _ |_| _| _ _|_ |_| | _| | _ _ _| _ |_ _ _|_ | | _| _ _| | |_| _ _|_| | | | | |_ _ _|_ _ | |_ _ _ | | |_ _ |_| _| _|_ _ | |_ |_ _| _ _ |_ | | |_ _| |_ _| |_ | _|_ _ _ _| | _ _|_ _| _ |_ |_| _| | |_| |_ _ _| _| | _ |_|_ | | |_ | _ _ _ _|_ |_ | |_ | | | |_ _ | _ _| | _| |_ _ |_ | | | | |_ _ _|_ _ _| | | | _ | | |_ |_ _ | _ _ | |_| | _|_ _ _ _| | | |_ _|_ |_ _|_ | |_ _ _ _ _|_ |_| _ |_| _ _| | _| _| | | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_ _ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| | | |_| |_ | | | |_ _ _ _ _|_ _ |_ _| |_ _ _| _ _ _ |_| |_ _| | | _| _|_| |_|_ | | | | |_ | | |_|_ | _|_|_ | | | _ _|_ | | | | |_ _|_ _ | _| |_ _|_ | | _| |_ _| _ _| | _ | _| | _ |_| _| _ _|_ |_| | _ _ _ _ _|_ | | _ _ | _| | | |_ _|_ | |_ _ _ _ | | |_ _ |_ _ | _| | | | _| | |_ |_ _ | _ _| | |_| _|_| | _ _| | | _|_ |_ _ _ | | _| _| _ _|_ | _| _ _| | |_ _ |_|_ | +| | |_ _ _|_| |_ |_ |_ _|_ _ |_ _ |_ | _|_|_ | | | |_ _ | _ | _|_ | | | | | | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| | | | |_ | _ |_ _ | _| | | | |_ _ | _ _|_ _|_ _ | _ |_ _ _ _ | |_|_ _ _ _| | | _ _|_ | _| | _|_ _ | | |_ |_ _ | _|_ _| |_| | | _| |_| _ _ | | _| _|_ | | _| |_ _| |_ _ |_ _| _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ _|_ | | | _ _ _ _|_ |_ _ _ _ _ _| |_ _| _| _ _| _| | _|_ _|_ _ | |_ _ _ _| _ _| _ | | _| _| | |_ |_ _| | |_ _|_ _| |_ |_ | |_ |_ _ _| | _| _ _ _|_ | | |_| |_ | | _| |_ _ _ _ _| |_ _ | | _ _ _ _|_ |_ _ _ _| _| _| | |_ |_ | | _|_ _ _| |_ _|_ _ _ _ _| |_ | | _ _|_ _|_ _ |_|_ _| _ _ _ _|_ |_| |_ _| _ _ |_|_ |_ _| | | | |_ _ _|_ _ _ _ | |_| _| _ _|_ | |_| _ _ |_ _ | _ _| | | |_ _ | _|_ | _| |_ _ _ _ _| _| _ _|_ _ | _| |_ | _ _| |_ _ _ _|_ _ _|_ _| _ |_| |_ _| | | | | _ _ _| | _ _| _| |_ |_ |_ | |_ _ | _ _|_| _| | _| _ _ |_| | | _| _ _| | |_ _ _| _ _|_| _ |_| _| _ _|_ | |_| | |_ _ _| | | _ _ | |_ |_ _ |_ | |_ |_ _ _| |_ |_| |_| _| _|_ | | | | _|_ _ _|_ | | _|_| | |_| | | _ _ _ _| _|_|_ _ _| | |_|_ | | _ _|_| |_ _| |_ _ _ | |_ _|_ _| _ | | _ _|_ _ _ _ | |_ _ | | | _| | _ _|_ | | _| | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_ _|_ | | _| |_ _ _ _ |_ _ _ _ _ _| | _ _ _ _ _ |_ _ _|_ _ _ _|_ _| _| | | |_ _ | |_ _| |_ _|_ _ _ _ |_ _ _ _ _| |_ _| _ | |_ _| | | | | _ _| | |_ _ _ _| | |_ |_ _ | _ _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| _| _ _ _ _ _ _ |_ _| _ _|_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_|_ | | | _|_|_ _|_ | |_|_ | | _ _|_| |_ _| | _| _|_ _ |_ _|_ _| | | |_ _ _| | _| |_ _ _ _ _| |_ |_ _ |_| |_ _ |_ _ |_| +|_ _| _ _ | | |_ _ |_ _ |_ _ | | |_ _ _ _ _| |_ _|_ _| | | | |_ _| _|_ _| |_|_ | |_ _| _ _ _ |_|_ _ _ _| | |_| | | _ _ _| |_ | | | | |_ |_ _ |_ | |_|_ _ _ _| | _ _ _| _| | | | | _| |_ _ |_ _ |_ | |_ | _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _| |_|_ _ _|_ |_ _ |_ _|_ | _ _|_ _ _|_ _ _| | |_ |_ _ |_| | | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ | | _|_ _ _| |_ | _ _ _ _ _ _ | |_ _ _| |_ | |_ _ _| _|_ _ _ | | |_ _| | |_ _ | _|_ _ _ _| | |_ _ _ _ | | | | | |_ |_ | _ _| | |_ _ | | |_ _|_ | | _| |_ _ |_ _ _ _ _|_ _ |_| |_ _ _| |_ |_ _ | _|_ _ _| | | | | |_ _| _ | | _ _ | _ _| _ _| | | _ _ _ |_ _ |_ |_ _ _| |_ | _ _ _|_ | | |_| _ _| | | _|_ _ _ | |_ _ _| | _| |_ _ _ _ _| _ _|_ | | |_| |_ | | |_ | _|_ _ | | |_ _ | _ _ |_ _| _| | |_ | | | | _ _| _ _ _ _ | |_ _| |_ _ _ _| |_ | |_| | | _| _|_ _ _ _ | | | _ _ _| | _ _ _|_ _ _ _ _ | | |_ _| |_ _ _|_|_ _ _ _|_ _ _ _ _ _ | _| _ _ _| | | _| |_ _ _ _ _| | | _|_| _ |_ | | | | | _ _ _|_ | |_ |_| _| _ _|_ _ _| _| _|_ _| _ _| | |_| | | _ _ | | | _ | |_ | |_ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ _|_ _ | | | |_ _| | _ _ _ | _| |_ _ |_ _|_ | |_ | _ _ _|_ |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ _|_| |_ _| | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | _ _ | | | |_ |_ _ | _ _ |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| |_ _| _ _| | | _ _| | _| _ _| _ _ _ | _| | |_| _ _|_| |_ |_ | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | _ | _| | | | |_ _ | _ _|_ _ _ _| _ _ |_ _ | | _ _ | | _ _ | _| _| |_ _|_ _ _ _ |_ _ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | | | _| | _ _| | _|_ _ |_ _| | |_ | |_ |_ _| | _|_ | |_ |_ | +| _ |_ _ _ _| _|_ _ | | _ _| |_ _|_| | _ _ _ | | | _|_ _|_ _ _| _|_ _ _|_ _ _ _ _ _ _|_ | |_| _ _| |_ | |_| |_ _ | _| _| | |_ |_ |_ _ _|_ | | | | _ _ | _|_ _ _|_ | |_| _| |_ _| | |_ _ _| | | | | _|_ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _ | _|_ | |_ _ _ _ _ |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| | | |_ _| _| _ _|_ _ |_ _ _| _ _ |_ _ | _ _| | |_ |_| _ _ _ _ _ _ _| _|_ _|_ _ |_ _ _| _|_ _ |_ _| _ _|_ | | _|_| | |_ _| |_ | _|_ | | | _| | |_ _ _ _| | |_ |_ _ | _ _ | _| _ | | _| _| _ _|_ _ _| _| | | |_ _ _ |_|_ | |_ _| _| | |_|_ _| _| |_ _ _ _ _ _| |_| | | _ _| |_ | |_ _| _| _ _|_ _ _|_ _ _ _ _ |_ _|_ | | | | |_| | |_ _|_ _ | | |_ _ |_ | |_ | |_ _|_ | | _| |_ _ | | _ | | |_ | _| |_ _ |_| _ _| | | _|_ _ _| |_| |_| |_ |_ _ | | _| |_ _ | | _ _ _ _|_ |_| _ _ _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | | |_ _ | _ _ _ _ | |_ _ _|_ |_ _ _ | | |_ _ _ _ _| | | _ |_ |_ | | _| | | |_| _ _ _ _|_ | | _ _| | | | _ _ _| | | _| _| _| _| _| _| | | | |_ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ _| |_ _| | | |_ _ _| _| _ _|_ _ _| | | _ |_| | | | | _ _| | _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| _ _ _ _ | | | _|_|_ | | | _ _| _ | | | | | _|_ | | |_ _ | | | |_ _| _|_|_ | | | _ _|_ _ _ _ _ | | | | | _| | |_|_ | | _ _|_| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| _|_|_ _| _ _| | _ _| | _|_ |_ | | |_ _| _ |_ |_| _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| |_ _|_ _| | |_ | | |_|_ _ _ | _ _ _| | | |_ _| |_ | | |_ _| _| |_ _ _ _ _|_ | _ _ _ _|_ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _| | |_ _| _| | |_ | |_ _ | |_ _ _ _ _|_ | | | |_ |_ | | _|_ _ |_ _ |_ | | +| |_ _| |_ _ |_ _ _| | |_| _ | _ _ _|_ _| |_ |_ | |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _|_ | |_ | | | | | | _| | |_| _| |_ _ _| | _ _ _ _| | |_| | | _|_ _ _ | | |_ | |_ _ | _|_ |_ _ | | |_|_ _ | _ | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _| | |_ _ _| | _ | _|_|_ | | | _ _|_ _ | | | | _ _| |_|_ | _ _| | _ _| | _ _ _| | | |_| |_ | | |_ _|_ | _| | _ _| _|_ _ _ |_ _ _ |_ | |_ _ | |_ _|_ _|_ _ _ _ _| | |_ | |_ _ | | | | | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| |_ _| |_ _ _ _| | _ _ _ _ | _|_ _|_ _ |_ _| _ _|_ | _ _ _|_ _ _ _ _ |_ _ _ _ | |_ _ | | | |_ _ _|_ | _ _| | _ _ _ |_ | _ _|_ | | | |_| | _ _| | |_ _ _ _|_ _| |_ |_ | |_ _ |_ _ _| |_ _ | | |_ |_ _ | _|_ |_ _|_| _| _ _|_ |_ | | | | |_ _ _ | | _| _| | _| | |_ _ _| _| | |_ _ _| |_ | | _ _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| _ _| |_ _ | | _| |_ _ |_ _ _| _ _| |_| |_ | | | _ _ | | |_ _| | | |_ _| | _|_|_ _|_ _ _ _ _ _|_ _ | _|_ | |_|_ _ | _| |_ _| |_ _ _| _ _|_ |_ _ _| |_| |_ _|_ _ _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ | | |_ _ _|_ | _|_|_ | _| _| _| _ _| |_| |_ | | _|_ _| | | _ _| |_ _ | _| | | |_ _|_ | | | | _ _| | |_|_ | |_ _ | | _| |_ |_ _ _ _ _| |_ _|_ _|_ _ _|_ | |_ | _ _| |_ _| _ _|_|_ _ _|_ |_ _ _ _ _| |_ _| | _ _ _ | | |_ _| | |_ |_ | _ _|_ | | |_ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ | | |_|_ | _ | | | |_ | _|_ _| |_ |_ _| |_ _ _| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _ _| |_| _|_| |_ _ | | |_ _ | |_|_ _|_ | _| | |_ _ _| |_ _ _ _ | |_|_ _ |_| | _ _| _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _| |_| | |_ _| _| _| | _| |_ _ _ | _ _ _| |_ _|_ _| | |_ _|_ _ _ _ |_ |_ _ _ | | +| | | |_ _ |_ _|_ | |_ |_ |_|_ _ | | _ _|_ _ _| | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _| _| _ _ _ _| _ _ _ _|_ _ _ _|_ _ _|_ _| _ _| | | _ | | _| | | | | | _ |_| | | |_ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _| | | | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _|_ | |_ _ | | _| | | | |_ _ _ _ _| |_ _| _ | _|_ _| | | |_ _|_ | |_ | _|_| _ | |_ _ | _|_|_ _|_ | | _| |_ _ _ _|_| _| |_ _ _ _ _ _ _ | |_ _ _ |_ _ _ _|_ _ _|_ _ _ | _ _ _ _ | |_ _| | |_| _ _| | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | | _ | _| _ | _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _| |_ _ |_ |_ _|_ _ _ | _|_ | _|_ |_ _ |_ _ |_ _ | _| | | |_ | |_ | |_ _ _ _ _| _ _ _ _| _| | | |_ _ _ _ _ _|_ _ _ | |_|_ | | _ _|_| |_ _ | _| _|_ _ _ _|_ _ _|_| |_ |_ |_ _| |_ | | _| | | _| | _ _ | | | _| _ _|_ _ _|_| _ | | _| | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _| _|_ _| | |_ _ _| | | _ | | _ _|_ _| _| |_| | | _| |_ _ | |_ _|_ _| |_ _ _| | _ _ _ _ | |_ _| _ |_|_ _| |_ _| |_ _ _|_ _| _ _| | | _ |_ |_ _ _ _| _ _ _| _| | | |_ _|_ | | |_ _ _ _ | | |_ _ | |_ _ _ _ _| |_ _ _ _ _ _|_ |_ |_ _ _|_ _ _ _|_ | | _| _| | _| | | _| | | _|_ _ _| |_ _|_ _ _ _ _| _| | |_ _ |_ _|_ _ |_ _ _| | |_ _ _| _| _ _ |_ _ |_ _ _ |_ _ _| |_ |_ _ _ _| _ _| | _ _ _ _| | _ _ _ _ _| |_ | _ _ _| |_ |_ | _|_ _| | _ _| |_ _| _ _| |_| | | _| _|_|_ | | | _ _| _ | _| | _| |_ _|_ _ |_ _| _| | | | | | | | | _ _|_ _ _| _ _|_ | _| |_ _ _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _| _ _|_| _| _| | _| |_ _ _| | |_ _ | | | | |_ _ _ _ _|_ _ _ | _| |_ _ | | |_ _ _| |_ | _| _| | | |_ _|_ | _ _| _ | | |_ _ _ _ _| |_ | _| |_ | |_ |_ _ | | |_ | | |_ _ | _|_ _ _ | |_ _ _ _| _ | | | +| | |_ _| _ _| _| | |_ | |_ | | _| | _ _ | |_ |_ _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ | _| | | |_ | | | | _ _|_ _|_| |_ | | _| _| | | _| | | |_ _|_ |_| | |_ _ | | |_ _ _| |_ _| | |_ | _|_|_ | | | _ _|_ _ _|_| | |_ _ _| | |_ _| _ _|_ _| _|_ |_ _ _ _ |_ _ _ | | | | _ _ _| |_ |_| _ _|_|_ _ _|_ _ |_ _| |_ _| | _ _ _| | |_ |_ _ | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | | _| |_ _ | |_| | _| | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| | | |_ | | |_ _ | |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_|_ _ _| | | |_ | _ _| |_ _| |_ _ |_ _ |_ _ |_ _| | | _|_|_ | | |_ _ _| _ _ _ |_ _ _ _| _| | |_ _ _ _ | _ _ | |_ | _ _|_ | | |_ _ | _| | |_ | _ _ _ _ | _| _| _ _| _| |_ _ _|_ _ _| | _| | | | | | _ _| |_ _ _ _ |_ _| | |_ _ _|_ _ _ | | _|_|_ | | | _ _|_ _ _ _| | | | | | |_ _ | | _| | _|_| |_ | |_| | _ _ _| _| _| _ _|_ _ _| _ _|_ _ _ _ _| _| _|_ _ _|_ _ | | _| |_ _ | | |_ _ |_| | _ _ _ _| _ _ |_ _ | _ _| | _| _ _|_ | | _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| |_ _ _| |_ _|_ _ |_ _ | _ _ _ _|_ | _| _ _ _| | _ _ _ _ | |_ _ _|_ | _| | | | | | | | _ _| _ | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | | _| | | | | | _ _|_ _ _| _| | _| _ |_ |_ | | | | |_ _| _ | | _ _| |_ _ _| | _|_ _ |_| _ |_ |_|_ | | | _|_ _ _ _| _ _| | _ _| | |_ |_ _ _ _ _| |_ _| | _| | _|_ | | | _ _ _ _ _| _ |_ | |_| | |_ _| _| | _ | |_ | _ | |_ _ _ _| |_ | | |_ _|_ | |_ | _ _ | | |_|_ _| _| | _ _ _|_ | | _|_ _ _| | _| _|_ _ _| |_| | | | | |_ _ |_ _ _ _ | |_ _ _| | | | | _ _ | |_ |_ _ _| |_ _|_ _ _ _ _| _ _ _| _| |_ _|_ _ |_ _ |_ _ | |_ | |_ | | _ _|_ _ _ _| |_ _| _ _| |_| _ _ |_ _|_ _ | | | |_| | +| _| _ _| | _| _| _| _|_| _|_ _| | | _|_| _ |_ | | | | _| |_ _ | _|_|_ | | | _ _|_ _ | | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ _| _| |_ _ _ _|_| |_ _| _ _ _ | _ _|_ _|_ _ _ _| |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _| _ _ _| | |_ | |_ _ _ _ _| |_ _| |_ _|_ _ | | | _ _| | | _ _| _| _ _ _| _| | | _| | _ _ _| _| |_| _ |_ |_ | | _ _ _ _ | |_ _ |_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ _| | |_ _ _ _| _| |_ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ _ _|_ _ _ _|_ _| |_| |_ | _ _| | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | _| | |_ _ _ | _ _|_ |_ | | |_ _ |_ _ | |_ _| _| |_ _ _|_ | | _ _ _| _ |_ | _ _ _| _|_ _ _ _ _| _| | _ _| |_ |_ _| | _ _| |_ _| _ _| | _ _ _ _| |_ _ | | _ _| |_ |_ | _| _| _ _ _ _ | | | | | _| | | |_ | _| |_ | | | _ _| _ _ |_ | | | |_ _ _ _ _| |_ _| _ | | | _| |_ |_ _|_ _ |_ _| | _|_| |_ _ _ | _|_ _ _| | _ _ _|_ _ |_ | _ _ _| _ _ | _ _ _| _ _ _ _ _ _| | |_ _ _| | | |_ |_ | |_ | _ _ _| _| | |_| |_ | |_ |_ _ _ _ _| |_ |_ _ _ |_ _ _ _ _ _ _ _ _ _ _ |_ _ | _ _|_ |_ _|_ _ | |_ _ _| |_| |_|_ |_ _ | _|_ _ | | _| |_ _ | |_| | | _|_ _| |_| | |_ _| _| _|_ _| | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | | | | _|_| | _| | _ _ _ _| | _| _| _| _ _|_ |_ _| | |_ _|_ _ |_ _| |_| |_ |_ _ _| _ _| _ | _| _| _ _|_ | _| |_| | |_ _ _ _ _| | |_|_ | | |_ |_ |_ _ _ | _ _ _| | _ _ _| |_ | _ | |_ _| | |_ | |_ _ _ _| _|_| |_ _| _| | _|_ |_ _|_ | | _| |_ _|_ _ _ _ _| |_ _| | _|_ _|_ _ |_ _| |_ _|_ _ | |_| | _ _ _ _ _ |_ _ _ | | _| | |_| _ |_ |_| _ _ |_ _ | | | | | |_| | | _| | _| _ | | _ _ | _| | | |_ _| _ |_ _ |_ _| |_ | | |_ _ _ _|_ _ _ _ _ _ _| _ _| _ _ | | |_ _ | |_ _| | | |_ _ | +| | | | |_ _ | |_ _| _| |_ _ |_ _|_ _ |_ _| |_ _| | |_ _| _|_ _|_ _ _ _ _| |_ _| | _ _| |_| | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _ | _| _ |_ _ _ _|_ _ _ | |_ _ |_ |_ | |_ | | | _ _ | |_| |_ _ _ _ _| |_| | |_ | | | | | | _ _ _| _|_ |_ |_ |_ _|_ | _| _| _| _ _|_ |_ |_ _ | | _| |_ _ |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _ _|_| | _ _ _ _| |_ _ | _| | | |_ _|_ | _ | _| | |_ _ |_ _ _ | _ _ _ _|_ |_ |_| |_ | |_ _|_| | _|_|_ | | | _ _| _ | _ _| |_ |_ _|_ | | | _ |_| | _ | | |_ _|_| | |_ | | |_ _ |_ _ _ | |_ _ _ _| |_ _ | | | | _| |_ _ | |_ _ | | _ _ _| _| | | | |_ _ _ |_ _ _ _| _ _| | |_| | | |_ | |_ _| |_ _ _ _ _| | | _| |_ _ _ _| | _| | _|_|_ |_|_ | |_ _ _| _ _|_ _ | _| |_ _ | | |_| _ _ _ _| _ _| _| | |_ _ _| |_ |_ _ |_ _ | | | _ _ _| |_ _|_ _ | |_ _ |_ | | |_ _ | | _| _ _|_ _ | | _ _ _ _ _| | _| | _ _ _| | | | _|_| _|_ _ _|_ _ | _ |_ _|_ | | _| |_ _ |_ _ _ _ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ |_| | _ |_ | | _ | |_| _| _ _| _ _| | _| |_ | _| | |_ _ _| | | |_ | |_ _| _ |_ | |_ _ _ _| | _ | | |_ _ _ _ | |_ _ |_ _ _| | _ _|_| | | |_| | | | _| | _ _ _| | | | _| |_ _ _ _ _| _|_ _ |_ |_ _ | |_ |_ _ |_ | _| |_ _| _| |_ _ _ _ _| | _| _|_ _ | |_ |_ _|_ _ |_ _| | |_ _ _ _|_ | |_ _|_| | |_| _ |_ |_| |_ _ _|_ _ _| |_ _|_ | _ | |_ _ |_|_ | _| _| _| _| _ _ _| |_ _ _| | _ _| _ | |_ _ | | | | _ _ |_ _ | | _ _| | |_ _ _|_ _| |_| |_ _ _ _|_ _| |_ |_|_ |_| _| |_ _ _| | | _| _ _|_| |_ | _|_ _| |_ _ _|_ _|_ _| | |_|_ _ _ _|_| |_| | | | | _ _| | _| _| _| | _| _ _ _ _ | |_ _ | | |_ _ |_ _| |_ _ _ _| |_ _ _|_|_ | _| +| | |_ _|_ _ |_|_ _ _| _|_ _ _| |_ _ _ | |_ _ |_| | _ _|_ | _ _ | | _ _ _ _ _ |_ | _|_ | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | |_ _ _ _|_ _ |_ | _ _| _ _| | |_ | | | _|_| | |_|_ |_ | |_ | |_ _| _ |_ |_ | | |_|_ | |_ _| _ _ _ _ _ _|_ _ _|_ _ |_ _ _ | _| |_ _ _ _ _| | | _| | |_ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | | | |_ | _|_|_ | | | _ _| | | _| | | _ _ _|_ | | | _ |_ | _ _|_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _ _ _ |_ _ _| |_ | | _| _|_ _ _ _ _| |_ _ _ _ _| |_ _| | | _|_ _ | | _| _ _|_| |_ | | _| |_ _|_ | _ _|_ _ _| | | | _|_ _ _ |_ _ _| | _| | _ _| | _ _| | _|_ |_ _ _ |_ |_ _| |_ _ _ _| _| _ _ | | |_|_ _ _ _| |_|_ _ _ _| | | |_ _ _ _ _ _ _|_|_ _ _|_ | | _| _| |_ _ _ _ _ _ | | | _ _ _| | |_| | _ _| _| | | _|_ _ _ _ _ _ _| _|_ _| _ |_ |_ | |_ _ _| | |_ _| _ _ _| |_ _ _ _| |_ _| | _|_ _|_|_ | | |_|_ | | _ _| |_ _| | | | | | _ _ _| | | |_ | _| _ _ _| | | | _ _| | |_ |_ _ | _ _ | | | | |_ _| _ | | _| |_ _ | _| | _| | _| _|_ _| _| | _ _| |_ | | _ _| | |_| _| _| | _| _ _ _|_| | |_ _| _ _| _ _|_ |_ _ | |_| | |_ _| _| | _| |_ _ |_ |_ _ _ |_ | _|_| | _| | |_| |_ _| |_ _ | | | | |_ _ _| |_ | | | _|_ _ _| | | | | |_|_ | |_ _ | _| |_ | _ _|_ _ _| | _| |_ _ |_ | |_ _ | |_ _ | _ _ |_ |_ _ _ _| | |_| _| _ _|_ | | |_ _ _| |_ _ _ _| |_ | |_ _ |_ | _|_ _| _| _| _ _| | | _|_ |_ _ _| | | _ _| | | |_ _ _| _ _| | | |_ | _|_ _ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _|_ _ |_ |_ | _ _ _ | | | | _| _ | |_ |_ | _ _|_| _ _ _ _| _| |_ _ _ _ | |_ _ _| | | | | | _ |_ _ _| _| _|_ |_ _ | | _| |_ _ | |_ _|_ _ |_ _ | | _ _ _ _| |_ _ _ _ _|_ | +| _ _ _ _ _| _ | |_ _ | | | | _ | |_ _ |_ | | | | _|_| _ _|_ _| |_ _|_ | | _ _| |_| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | _|_ | |_ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ _ _ _ | |_|_ | |_ _ | | _ _| _ _| _|_ | _|_ _ |_ |_ _| | |_ |_| _| _ _|_ |_ _| |_ _ | |_ _ |_ _ | | _ _ _ _ | |_|_ |_ | | |_ _ _ _ |_ | | _| _| _|_ | |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _|_|_ | | |_|_ _ _ _ _| |_ _| _ _| |_ _|_ | | |_| | | _| | |_ |_ | |_ _| _ _ | | _ _ | | | | _|_ _ |_ _ _ |_ _ | _ _| _| _ _|_ _ _| | | | _ _ | _| _ |_ _ _ _ | | |_ _ _ _| |_ | |_| _ _ _ _ _|_ _|_ _ | _| | | _ _ _ _ |_ _ _| _ _ |_ _ | _ _| |_| | _|_ _| _| | | | _|_|_ _ _ _ |_ |_ _ _ | |_ _ _ _ _ _ _ _| | |_ _|_ _ |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ |_| _ _ _ _ _| |_ _| |_ | _ _| | |_ _ _| _ _ _ _| |_ | _ _ _ _ | |_ _ |_| _| _ _|_ | |_|_ | _ _| _ _ _ _| |_ | |_ _| _| _|_ _ _ _ |_ |_ _ _ |_ _|_ _ _ _ _ _ _|_ |_ _|_| | _| _ _|_| |_ _| | _| _ _| | _|_ _| _ | |_|_ | | _ _|_| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | |_ |_| _|_ | | |_ | _| _| | |_ | | | _ _|_ | | |_ _| _ _ _ | | | | _ _| | _ _ _ _| _| | | | _| | | | _| |_ _ _| | | _| _| | | | |_ _ |_ _| _|_ |_ _ | _ _| |_| | _|_ | _ _ _| |_ _ _|_ | |_ _ | _ _| | |_| | |_ _ | | |_ _|_ |_ |_| |_| |_ _ _ _ | | |_ _ _| | | _| | _ _| | | _ _|_| |_ _ _| | |_ | _| |_ _ _ _ _|_ _| _ _ _ _|_ |_ |_ _ _|_ | |_| | |_ |_ | _ _ _| _ |_ _ _| | |_ |_ _ _ _ _ | | | _ _| |_ | _ _| | _ _| _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ _| _| | |_ _| |_| _| _|_ |_ _| | | _ _ _| | |_ | | |_ _ _| _| |_ _ | _| | | | |_ |_| _ _ _|_ _| _ _ _| | |_ _ _|_ | | | | _|_ _ | |_ _| | _ _| | | _ _| | +|_| _ | |_ _| | | _ _| |_ _|_ | | | |_ _ _ _ | |_ _ _|_| |_ | _ _ _ _|_ |_ _ _|_ _| _| _| _ _|_ | _| _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_| _ _|_ _ | |_| | |_ _ | _|_|_ | | | _ _| _ _ _ | | | |_ _ |_| _ | _| |_ _ | |_ _ _ _|_ | _| _ _ _ _| |_ _ |_ _ _ _| _ |_ _ | _| |_ _ _ _ _| _ _| _ _|_| |_ _ | | |_ _ | | _| |_ _ | | _| |_ | | _ _| |_ | | | | _|_ _ _| |_ | _| | | |_ _|_ | |_| _ _ _ | | |_ _| _ _ | _| |_ _ _ _| _ _ _| _ _|_ | | |_ | |_ _| |_| _|_ |_| |_| | | _| | |_ _| _| |_ _|_ _|_ _ |_ _ _ _| | _|_ | |_ _| _ _| | | _ _ | | |_ _| _| _|_ |_ | |_ _ | _| |_ |_| _ |_ |_| | | | _ _ _ _ | |_|_ _ | |_|_ _ | | | _ _ _|_ | | |_| |_ | | _|_ _ _ | | _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ _ _ |_ _ | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ | _ _ _ _|_ |_ |_| |_ | | _ _ |_ _| _ |_ |_| _ | | _| |_ _ | | _| |_ _ _ _ _|_ _ _ |_ | | | _ _ _ _|_ |_| | |_ | _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _ _ _| _| |_| _ |_ |_| _|_ | | |_|_ _ _ |_ _| |_ | _ _|_ | | |_ _ | | _|_|_ | | | _ _| | _ _| | | _| |_ | _ _|_ _| | | |_ _| |_ |_ _ _| | | | | | | _ _ _| | |_ _ _ _|_ |_| | | | _| |_ _ _ _ _ _| | _|_ _ _ _| _|_ _ _|_ _ _ _ |_| | | | |_ _ _ _| | | _|_ _ | _ _ _ _ _ _| | _| _| _| _| |_ _ | | |_ _ |_ | _|_ | | |_ _ _ _| |_ |_ |_ _ _| _| | _ _ _| | _| | | | _ _|_| | | _| | _ _|_|_ | | |_ _ | | | |_ _ _| |_ _ _ _ | |_ _ _| |_ |_ _ _ _ _ _|_ _ _| |_ | |_ _|_ _ | |_ |_ _ |_ _|_ _|_ _ _ _ | _|_ _|_ | _ | | | _|_ | |_ | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _ _|_ _ | _| _ _ _ | |_ _ _ _ _ _|_ _| _|_ |_ |_ |_ _ _| | | | | | |_ |_ |_ _ | _ _ _| | | _| _ _ _ | | | | _|_ _ _| | _| _| | |_ | | |_ _ _| | _| +| _| |_ _| _ _ _| | | _ _ |_ _| | | | _| _| | _ | _| _| |_ _ _| |_ |_ | _ _ _| | _| |_ _ _ _ _| | _|_ | |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ | _ _ _|_ _|_ |_ _|_ _ _ _ _| |_ _| _ _|_ | _ _| | |_ _ |_ _ _| | |_ _ _| | _| |_| | _|_ |_| _ _ _ | |_ _ |_ | | |_ _ | | |_ _ _ _ _ |_ _|_ | | |_ _ | _| _| | |_ _ _| | | | | _| _| |_ | _| |_ _| | _ _| _ _| | _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ |_ _ _ _| |_ _ _| | | _ _ _| | _| | |_ |_ _ _|_ | _ |_ | |_| _| | | | | _| _ |_ _ _ _ | |_ _ |_ _ _| _ |_ _ |_ | _|_ _ |_ | | |_ _ _|_ |_ _ |_ | |_ _ | _|_| _| _| _| _ _|_ |_| | | |_ _ | | _| |_ _ | | | _ _| | | | |_ _ |_ _|_ _|_ | | _| |_ _ _ |_ |_ _ |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | _ _| | | _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _|_ _ _| |_ | |_ | | _| |_ _ |_ | _| _ _|_ |_ _| | |_ _ _| _| | | |_ _ _ _ _ | _ _| | | _|_ _ _| |_ | |_ |_ _ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _| _| _ _|_ | | | |_ _|_ _ _ _ _ _ _ _ _ _|_ | | _ _| |_ _| _ _| |_ _ _ _ _| |_ _| _ _| | | | | | | _ _|_ _ _ _ _| | _|_ _ | _|_ _ _ _ _ _|_| |_ _ _| _| | | |_ _ _ _ |_ |_ _ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _| _ _| | _| |_ _ _| |_ _ _| _ |_ _| |_ _|_ _| _| |_ _ _ |_ _|_ _ |_| _|_ _ | | | | _ _ _ _|_ |_| _|_ _ _| _| _| | | | _ |_ _ _| |_ _| | | _ _| _ _|_ | _ _| |_ _| _ _| | |_|_ _ _ |_ | | | |_ _| | |_ | _ _|_ _ _| _ _ _ _| _ |_ _ | | _ _| | _| |_ |_ |_| | | | _|_ _| | _| |_ _| |_| |_ _ | | _| | | |_ _| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | _ _ _|_ _ _ _| | | | |_ |_ |_ _|_ _| | | _| | | | | _ _ | _| | | |_| _ _| _ |_| _| _| | _| |_ _ | _|_ | +| | _ _ _ _| |_ _ _|_ _ _|_ | | | | |_ _|_ _ _ _|_ _ _| | | _| _| _| _ _|_ _ _| |_ _| | | | |_ _ |_ | |_ | | | |_ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | |_ _ _| |_ _ | | _ _ _ _ _ _| _ _| | |_ _ _| |_ _ | _ _ _|_ _ _ _ _| | | _| _ _|_ _| _ _ _ _| | | | | | |_ | _| _| _| |_ | | | _ _| _| _ _| |_ _| _ _| | | | _| _ _ _ _|_ _ _|_ _| _| |_ | | |_ _ _ _ _ |_| | |_ | | | _ _| | _ _ | _ _| |_ _ _| |_ _ _ _ _|_ _ | | _ _ _ _|_ |_ _ | | |_ _ | |_ _| _|_ _|_ |_ _| _ _| _|_ _|_ _| _| |_| | |_| _| _ |_ | _| |_ _ |_ |_ _ _ _| | |_ | _| |_ _ |_ _| _|_|_ | _ _ _|_ _| |_ _| | |_| _ _ _| | _| |_ _ _ _ _| _| |_ _| | |_ _ _| | | _|_| | _| | |_ _| | _| _| | |_ |_ _ | _|_ |_ _ |_ _ | | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | | | | _ _| |_| _ |_| _ | _|_|_ | | | _ _| |_ _ | | |_ | | |_ _| _| _ _|_ _ _| | | |_ |_ _ | _|_ | |_ _ _ _ _| _ _| | _ _ _ | | |_ |_ _| | | _ _| | | | |_ _| _| _ _|_ _ _|_ |_ _ _| _ |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_| |_ _ | | _| |_ _ _ _ _| _| |_ | _ _ | _ _ _ _ | |_ _| _ _ _| _ _| _ _ _| _ _| _ _ _ | | |_|_ _| |_| _| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _| _| |_ _| | | | |_ _ | _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _ | | _ | _ _ _| |_ | _| _| _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | | _ _ _| _| _|_ |_ | | _ _ _|_ |_ _|_ _| |_| | _| |_ _ _ _| _ _| _ _| | _ _ _ _| _| |_ _| | _|_ |_| | _ | _|_| _ _ _ _| |_ _ _ _|_ _ _| | _|_ _ _ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _| _ | _| |_ _ _| | | _|_ _|_ _ |_ |_ | _|_|_ | | | _ _| _ _ _ | | _ |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ _ _ |_| | | |_ _ _ _|_ _ _ | | _|_| | _ _|_ _| |_ _ _| |_ _ _| |_ |_ |_ | | _| |_ | |_ | | | |_ | _| +| |_| _ _ _ _|_ |_ _ _ _ _|_ _| |_ | _ _ _ _ | | | | |_ _| _ _| | _ _ _ _ | _ _| |_ _|_ |_| | | | | | _| | |_ | |_ _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _|_ | _ _| | | _|_ _ _| _ _ |_ _ | _ _| | |_| _ |_ |_ | |_| _ _ _ _ | |_ _| |_ _| _ _ |_ _ | _ _| | | |_| _| _| |_ _ | _| _| _|_| | _|_ | | |_ _ _ _| _ _| _| | | | | | _ _ _ _| _ | _ _ _|_ | _| |_ | _ _ |_| _| | | _| |_|_ |_ |_ _|_ | |_ _ _ _ _ _| _|_| _ _ _ | | | |_ _ _| |_ | | | |_ _ _| | |_ _ |_ _ _ _ _ _ _ | | _ _| |_ _ |_ _|_ |_ | |_ |_ | |_ _ _ |_ _ _| | | _| | _ _ _ _ _|_ _ _ | |_ _ |_ | _ _ _| _ _ |_ _ | _ _| |_ | _| | | |_ _ _ _ _ _ _ |_ | | _|_ _ _ _| | |_ _ _ _|_| | _|_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ | |_ _|_ _ _|_ _ | _|_|_ | | | _ _| _ | _| | |_ _| |_ |_ | _ _ _| | | _| |_ _ _ _ _| |_ _|_ _ | | _ _| | | |_ |_ | _ _| | _ _ _| _| |_|_ | | _ _|_| |_ _ | | _ | | _ _| _ | | _| _| _ _| _| |_ _| | |_ | _ _| | _| _ _ | _ _ _| | | _|_ _| | _|_|_ | | | _ _|_ _ _ | | | _| |_| | |_ _ _ _ | |_ |_ |_ _| _ _|_ _ | | _| |_ _ | | _ _| | |_ _ |_ |_ _ _ _| |_| |_ _| _ |_ |_| |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| | |_ _ _ |_ _| |_|_ | _| | |_| _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _ _| _ _| |_ |_ | |_ _ _ _| _| | _| |_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _|_| |_ _ | _|_ _ | | | | | |_ _ | _ | _ | _| _ _|_ _| |_ |_ | | |_ _| _| _ _ _| _| _| |_| | | _|_ _ _|_ _|_ _|_ _ _ _ | _ | | _ _ _ _ | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ _ |_| | _| |_ | _ |_ _ _| | | |_ _ _ _ _| |_ _|_ _ _ | _| | | | | |_ |_ |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ | | _ _ _|_| |_ | | _ _ _|_ _ _ _ _|_ _ | |_ _ | _| _ |_ |_ |_| | | | |_ _ | |_ | | |_| |_ |_ _| | +|_ _ _ _ _| |_ | _| | _| _ |_ | |_ _ | | _ _|_ _| |_ |_ | _|_ |_ _ _ _| _ _| _| _| _| _ _|_| |_ | |_ |_ _| | | _ _| | | | | |_ _ _| _| | | | |_ _ | _ | | _| | | | | _ _ _| | | |_| |_ | | | _| _ _|_ | |_ |_ _ | | _| |_ _ | _ _ _| | | |_| |_ | | |_ |_| _| _|_ _|_ _ _| _| _ |_ _ _ _|_ | | _| | |_ _ |_| | | |_ _| _ _ | | |_ _ | _ _|_ |_ | |_ | _| _| _| |_ |_ | _| |_ _|_ _ _ _ | |_ _ _ _ _ _| |_ _| |_| _| _ _|_ _ _| | | | | _|_ _ _| _ _ _| _ _ |_ _| | _ _| | _| | _ | _|_ | | | _| | |_ _| _ _|_| | | _|_ _| _ _ _ _ | |_ _ _|_ | _| _ _ _| | | |_| |_ | | _| | _| | |_ |_| _ _ | |_ _ _ | | _ _ _| | | | _ _ _ | |_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _| _ _ _ _ |_ _ _ _ _| |_ _|_ _| _| | | | | _ _ _ _ | |_ _ _ | | | _| | | _ _ _ | _ _ _| | |_ _ _| |_ | | _|_ | _|_ _ _ _| |_ | _ _|_ | | |_ _ | | | |_| _| |_ | _ |_|_ _| _| | | _ _ _|_ _ _|_ _ | |_ | _|_ |_ |_ |_|_ _ _ | | |_ | _|_|_ _ _ _ _| |_ _| _ _ |_ _| | | | _ _| | _|_ | _ _| _| _| | |_ _|_ | _| | |_ _ _|_ | | |_ _ |_ _|_ _ |_|_ _| _ _ _ _|_ |_ | _| _ _|_ | |_| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _| _| _ _| | | _ _| | _ _|_ |_ _ _| _ | | _|_|_ | | | _ _|_ _ _ | | | _ |_ _ | _ _| | _| | | _ _| | | |_ _ _ _ | _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | _ _ _ _ _ _ _| | | |_ _ |_ | |_| | | | | | | _| |_ _| _ |_ | _| _|_|_ _|_ _ |_ _ _| _ _ _| _| _|_ _| | _ _| _ _ _ _ | |_ _| |_ |_ _ | | _| | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _ _| |_ |_ |_ | |_ _ _ _ _ | | _ _ |_| |_ _ _| |_ | _| | | | | |_ _ | _|_|_ | | | _ _| _ _ _ | |_ _ _| | | _| _ |_ |_ _| |_ _ | | _ _ _ _ | |_ _|_ _| _| | _| _ _|_ |_ _ |_| | |_ | _|_ _ _ _|_ |_ _ | | | +| _ | | _ _|_ _ _| | _| _| _ _|_ | _| | | _| _ |_ |_| _| |_ _ |_|_ | _ _ _ _ _ _| _| | _| _ |_ |_ _| _|_ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | |_ | | _| | | | | | | | |_ _ | _|_|_ _|_ | | _| |_ _ |_ _ _ _ _|_ | _| | |_ _ _|_ | |_ | _ _| |_ _|_ | | _| |_ _ _ |_ |_ _ |_ _| _ _ _| | |_| _ _ _ | |_ _| |_ _|_ _ |_ _ _| |_ _ _ _| |_ |_ _| | | _| | _|_ _| | | _| |_ |_ |_ | | | | | _ _|_| | | _| |_ _ | _ | | | _ _| _ _| | _| _ _ _| _| |_ _ _ | | _ _ _|_ | | |_| |_ | | _ _| | | |_ _ _ _ _| | | |_ _|_ _ | _|_ _ _ _ _|_ _ | |_ _ | | _| |_ _ |_| _ _| | |_ _ |_ | |_ _|_ | | _| |_ _ | |_ _ _| _| _| | _| |_ _ |_ _| | | _ _ _|_ _| |_ | _ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ |_ _ | _| | _ _| _ _ |_ | | _|_ _| |_ _| | | |_ _| | |_ _| _| | | |_ _ | | | |_ | _ _| _ |_ |_ |_ _| |_ _ |_ _ _ | |_ _| | _ _| |_ _| _ _|_ _|_ |_ | | |_ _| | _ _ _| _ _| | | _ _ | _ _ _ _|_ _ _|_ _ |_ _ _ | | _ _| |_| |_ | |_|_ _ _ _ _ _| | _| | | _ _|_| |_ _ | | | _| | | | _ _ _ _ _|_ _ _ |_| | _|_ _ _ _ | |_ _ | _ _ | |_ _ | | |_ _ _| |_ | _| |_ _ _ _ _| _ _| | _ _ | _|_|_ | | | _ _| _ _ | |_| | _ _ |_ _ | _ _| | | | _ _|_ _| |_ | | _ _| |_ |_ _ _ _ _| |_ _|_ _ |_ |_ | |_ | | |_| |_ | |_ | | |_| _ _| |_ _| | _|_ | _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _|_| _ _ | _ | _|_ _|_ _ |_ _| |_ _ _| _ _|_ _ _|_ _|_ _ _| |_ | |_ |_ _ _ _ _ _ |_ _ _ |_ _ | |_ _|_ _ _| _|_|_ | _|_ _ | | _| |_ _ | |_ _| | |_ _ |_| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| | | _ _| | _ _ _| |_ | | _ _| | | | | | _| _ |_ |_|_ | |_ _| |_ _|_ _ |_|_ _ _ _ _| |_ _| |_| _| | | | _ _| _| _| _| _ _|_ | | | _| | |_ _ | | _| |_ _ | |_ | _| |_ _ _ _ _| _ _| |_| _| | _ _ _ | |_ _|_ _| +|_ | |_| | | _ | | | | _| |_ _ _ _ _| | _| _| _| _ _|_ | | | |_ _ |_ _ _ _| _ _ _|_ | |_| _| _ _|_ | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ _| |_| | _|_| |_| | | |_ | _| | _ | | | |_ |_ _ | _ _ _ |_ _|_| | |_ _ _ _ _| | _|_| _ _ | | | |_ |_ _ | _ _ | _ _| |_ _ |_ | |_ |_ _ | | |_ _ | | _ | |_ _ | | | _ _ _ _|_ |_| | _|_ _|_ _ |_ | _ _|_ | _ _|_ _ _ _ _|_ | | | | | _|_ | |_ _ _| | |_ | |_| | |_ _ |_ | _| |_ _ _ _| |_ |_ _ |_ _| |_ _ | |_ _|_ | | _| |_ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | |_ _ _| | | _|_ | |_ _| | _|_| | | |_ |_ _ | |_ _ | _| _| |_ _ _|_ | | _ _| |_ _| _ |_ |_| |_| _ _ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ _ _|_| _ _| | _ _| |_ _ _ _| _ _|_ _ _| _| _ |_ |_| _| |_|_ |_ _ _ _| | |_| | | _ _|_| |_ | | _| _| _ _|_ | | |_ | | |_ _ |_ | |_ _ | |_ _ _ _| _ _| _ | | | _|_|_ _ _ _ |_ _ | | | | |_|_ _ | | | | _ _ _ _ | |_ _ _ | | | | _ _|_ _| _| | _ _ _ _|_ _ _|_ _|_ _ _| | _| _ |_ |_ | |_|_ | _| | | |_ _ _| _ _ | |_ _ | | | | _ | | | | _| | _ _| _ | |_ _| _| _ _|_ _ _|_ _ | | _| |_ | |_ | |_ _ _ _ _| |_ _| _ _| _ _|_ | | |_ | | |_| |_ | |_ _|_ | _ _ _|_ _ _| | | |_ _ _ | | _ _ _ | _ _|_ _|_ _| |_ |_ _|_ | | _| |_ _ |_ |_ | | _ _| | _ _ _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _ | | | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| _| |_ _ _ _ | |_ _ | _ _| | | | _ _ |_ | |_ _ _ _| | |_ _ _| _| | | _| | _| | _ _| _| _| |_| | | _|_|_ | | | _ _| | _ _ _| | | _ |_ _ | _ _| | | | | _|_| | _| _|_|_ _ _ _ _| | |_| | _| _| _ _|_ | _| _ _|_ | _ _|_ _ _ _| _ | |_ | | _|_ _| |_ | | | | | _| |_ _ _ _ _| | | | _|_ _| | |_ _ _| | | |_ _ _| | _ _ _ | | | _ _|_| _| _| |_|_ _ | _| |_ _ | | +| _|_ _ _| | | _| | | | | |_ _ _ | | |_ _| _| |_ _ _ _ _| |_ _| |_ | |_ | | _ |_ _ | |_| | _| |_ _ _ _ _| | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _|_ _ | _|_ _ _ _ _ _| | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _ | | | | | | | | | | | | _| | |_|_ | | _ _|_| |_|_ | |_ _| | _| | |_ _| | | | | |_| | | |_| | | | _|_ _ _| |_ | |_|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| |_| |_ _| | |_ _ _ _| | | _|_ _ _| |_ | _| |_ |_ _ | _ _| | _| _| _ _ _|_ _| | | |_ _ _| | |_ |_ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | | | |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | | _|_ _ _ _ | | |_ _ _ |_| _| _ _|_ | _ _| _| | _| | | |_ _|_ | |_ _ | _ | | |_ _ _ | | | _| _|_ | _| _ _| | _| | _| _| _ _|_ | | |_ _ _| | _ _| |_| | _ _|_ | |_ | | |_| _| |_ _ _ _ _|_ | |_ _|_| _|_ |_ _| _|_ _ _ | | | |_ _| _|_ _ _| _ _ |_ _ _ _| | | |_| |_ _| _| |_ |_ _ | | _| |_ _ | _| |_ _| |_ _ _ _| _| _| | |_ _ _ | _ _ _ _ | |_| _| _ _|_ | |_ _ | _|_ |_|_ | _ _| | _| |_ _ |_| | | | | _|_ _| |_ _ _ _|_ _ _ _| _|_ | _ _| | _ | _ _| | |_ _|_ | | _| |_ _| |_| | _ | _|_ | | _ _ _| |_ | |_ _|_ | | _| |_ _ |_ _| _ _ | _ _|_ _|_ _ |_ _ _| |_ _ |_ _ _| _ _ _| _ |_ |_ _ | | |_ |_ _ | _|_ | | | | |_ | | | | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_| _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ | | _| |_ _ | |_ |_| _|_|_ _|_ |_ _ _| | _ _ | | _| _ _| | | |_ _ _| |_ _ _ _ | |_ |_ _ _| |_|_ _ _ _ _| |_ _| | _ _| | | | | | | |_| |_ | | |_ _|_ _ _| | | |_ | | _ _ | | | _| | _| |_ _ _ _ _| |_ _ | _|_ _ _ _| _ _ _| | |_|_ |_ |_| _ |_ |_ _| | _| |_ _ _ _| _ _ _| | | _ _| _| _ |_ _| | | | _ _| |_| | |_ _ _| | | _ _ _|_ _ _|_ _ | |_ _| | _ _| | | +| | _ _ _ _ | | | |_| | |_ | |_ _ | | | | | | |_ _ _ _| _| _ _| |_ | | |_| | | _| | |_ _ _| |_ |_ _ | | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| _ _| | | |_ _ _ _| | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| | |_| |_ _| |_| | |_ _|_ _| | |_ |_ | _ _|_ | | |_ _ | |_ _| | _|_ _ _ _ | | _ _|_ _| | _ _|_ _ _ _|_ _| |_ _| _| _ _|_ _ _| _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _ _ _|_ |_| | |_ _ _ | _ _|_ _ _ _|_ _ |_| |_ | | | | | _| | _ | | _|_|_ _ _ | |_|_ | | _ _|_| |_|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _ _ | | | | | _| | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _| | | _| | | | | | _| |_ _ _ _ _|_ _ _ | |_ _ _| |_ _|_ _ _ _ _| | | | |_|_ _|_ _ |_ _ _|_ _| | | | | | |_ _| | _| | |_ _| _| |_ _ _ _ _| |_ _ _| _| | |_ | | _| | | _ _| | _| | |_ | |_ | _ _ _ _ _ _ _ _ | |_| _ _|_ | _ _ _ |_ _| |_ _|_ _ |_ _| _ _ _| | | |_ _| _|_ _ _ _ | | _ _|_ _ | _| | |_ _ _| | | | |_ _|_ | _ _ _| _ _ _| | _ _ _| |_|_ _ | | _| | _| |_ _ _ _ _| | _ _|_| |_ _ | | | _|_ _ _| _| | _| |_ |_| _ |_ |_ | _ | _ _| | _|_ | _|_ | |_ |_ | |_ _ | | |_ |_ _ | _ _| |_ | |_| |_ _ | | _| _ |_ |_ _ | | | |_ |_ _ | _ _ _ |_|_ _ _ | | |_ _ _ | | |_ | | _| _| _| _ _|_ | _| |_|_ | | _ _|_| |_ _| |_| | | | | | |_ _ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ |_ |_ _ | |_ _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_|_ |_| | |_ _ _|_ | | _|_ |_ _ _ | |_|_ _ _ | |_| | |_| | _ |_| _| | | | | | | | |_|_ |_| | |_ _ _ _| _ _ _ _| | _ |_ _|_| |_ |_ _|_ | | _| |_ _ _ _ |_ | | _ _|_ _|_ _ _ _| | | | | | |_ | _| _|_ _ |_ _ _ _ _|_| |_ _ | _|_ _ |_ |_| _| _ _|_ | _|_ |_ | _ _ |_ | _ | |_ _ | | _ | | | | | |_ _ |_ _ _| |_ _ _ _ _| |_ _ _ _ _ _ _ _|_|_ _ _ _|_ | | | +| |_| | |_| | | | |_| _|_ _| _|_ _| |_ _| |_ | |_ _ _ | |_ _ | _| | | | _| | |_| _|_ _ _ _ _ | | _ _|_ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | _|_ _ _ _|_ _ | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ _ | _|_ | |_ |_ _ _|_ | _|_ _| | _ _| |_ _| _ _| | _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _| | _ _| _ _| _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_ _| |_ | | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | |_ | _|_|_ | | | _ _| _ _ | | |_| |_ _| |_ _|_| |_ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _|_| _| | |_ _ _| |_| _| |_ |_ | _ _ | | _| | |_ _ | | _ _ | | _ _ _| | |_| | _ |_ _ | _| | | |_|_ _|_ | _|_| |_ _| _| | |_ _ _ _ | _ _ |_| _| _| | _| |_ _ | |_ _ _ _|_ _ _ | |_ | | | | _ _ _ _ | |_ _| _|_ _| |_ |_ _ |_ _ _ | |_ _ |_ _ | |_|_ _| | |_ _ _ | |_|_ _ _| _ | | | _| _ _ _ _|_ | | _ _| | |_ _ | |_ _ _ _|_| _ | | _| | |_ _ | |_ _ _ _| _|_ | | |_ _ | | |_| | _ | _ _ | |_ | |_| _| _ _|_ | |_ |_ _| _ |_ _| |_ _ |_|_ | | _|_ | | | |_|_ | | _ _|_| |_ _ _| | _ _ _| | _| _| _ _|_ | _| | |_|_ | | _ _|_| |_ _| | _ _| |_ _|_ _ _ |_ _| |_| _| |_ _ | _| |_ _ _ _ _|_ |_ | _ _|_ | | |_ _ |_ _ _ _| | |_ _| | _| _| _ _ _| | _|_|_ | | | _ _|_ _ | | | | | _| _| | |_ _ _ _ _| _ _ _| _|_|_ | | | _ _| | | |_| | |_ _ |_ _ | | _ _ _| |_ |_ _ _|_ _|_ _ | | | _ _| |_ | | | _| _| _| |_ _| _|_ _|_ _| _| _ _|_ _| _ _|_ _ _ _ _|_ _ _ _| | _| _ |_ |_ _ | | |_ |_ _ | _ _ |_| | | _ _ _ _ | |_ _| |_| | |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ |_ _ |_ _ _ | _| |_ _ _ _ _|_ | _| _| |_ |_ _ _ _|_ |_ _ | | |_ _| | _|_ _| |_ |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _| | +| | _|_ | | _| _ _|_| _| _ |_ | _ _ _| _| _|_ _ _ _|_ _ _ _ |_|_ _ | |_ _ _ _|_ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | | _ _ | | |_ _ _ | | _| _| |_ _ | | _| | |_ _ _ _| _ _| _|_ _ _ _ | |_ _| _ _| _|_ | _ | | | _|_ _ _ _| _ _| | | | |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_| | _ _| |_| | _| | | | _|_|_ | | | _ _| |_ _ _| | | _ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | _ _| _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _ _|_ _ _ _ _| |_ _| _ | _ _| | | | _|_ _| _| _ |_ |_| |_ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _ _ | | _ _| _ |_ |_ |_ |_ |_| |_ | |_ _| | | _|_ _ | |_ _| | |_ _ _ _ | |_ |_| | |_ |_ _ _| | | | _ _|_ _ | _ _ _| | _ |_ _ _| |_ | _ _| _|_ | | | _| |_ | |_ |_ _ | _ _ | _| |_| |_| _| | |_| _ | | _| |_ _ | | |_| | _| _| | _ _ | | _| | | _ _| |_|_ _ _ |_ _|_ _ |_ _|_ _ | | | |_ _| |_ _ _| _ _ |_ _| | _ _| | _| | | | | | | |_ _| | _| | _|_ |_ |_ _ | | _ _| |_ _| _ _| _| _| | _| | | | | _| | | _| |_ _ _ _ _|_ | | | _ |_ |_ | | |_ _ |_ |_ _ | |_ |_ | _ _|_ | | |_ _ | _| | | _ _| | _| |_ _ _ _ _| | _|_ | _ _|_ | | |_ _ | _| | |_ _ _ _ | |_ _| _|_ | | | |_ |_ _ | | |_ _| | _ _| |_ _| _ _| _ | _|_ _ _ _| | | | |_ _ |_ _ _ _ _| |_ _|_ _ _ _| |_| | | _| _|_ |_ _| | _ |_ _ _ |_ _ _ _ _| |_ _| _|_ _| |_ | | | |_ _ | |_ _|_ _ _ _ _ _ _|_ | _| _ _ _ _ _ _| _|_| | |_ _ _| | | _| |_ |_ |_ _| _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | _|_| _| _ _|_ | | | |_|_ | | _ _|_| |_ _ _| |_ _ | | _| |_ _ |_ | _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | |_ |_ _ |_ | |_ _ _ _ _ _ _|_| _|_ _ _| _ | |_ _| _|_|_ _ | |_| _ |_ |_| _ |_|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| +|_ _| |_| |_ | | _ _ _|_ _ |_ _ |_| _ _ _| _| _ _ | |_ _ _ _| _ | | | _ _ _ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _ | | |_ _ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | |_ | _| | | |_ _ _| _| |_ _ | |_ _ _ _ _| _| |_| |_| | |_ _ _ _ _| | |_|_ |_ _|_ _ |_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ |_ _ |_ _ | _| _ _|_ _|_ _| |_ _ _ _ _| |_ _| _|_ _ _ | | | | |_ | |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | |_ _ _ _ _| _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | | _ _ _ _| _ _ _ | _ _ _| |_ _ _|_| |_ _ | | _| _ _|_ | | _| | | |_ _|_ |_| |_ _ | | | |_ _ |_ _| _| _| _ _|_ |_| _|_ _ |_ _ _ | |_ _|_ _ |_ _ _ _| | |_ _ _ _ |_| | |_ _ _|_ | | _ |_|_ _| _ _ |_ _ | _ _| |_ |_ | _ _| _| | _| | _ _ _|_ _ _ _ _| |_ | | _ _|_| |_ _| | |_ _ _| _| _|_ |_ _| | |_ _ _| _| | _| | |_ _ _| | | | |_ _|_ |_ _| |_ _ _ _ _ _ _ _ _ _| | |_ _ _ _|_ _| | | |_ _ | | _ _ _| _| | |_| |_ | | |_| _|_|_ _| |_ _| | | |_ _ | | | _|_ _ _| _| |_ | |_ _|_ _ _ _| _ _| |_ _ _| _|_ | _| | | |_ |_|_ _ | _ _| _ _| |_ _| _| | | |_ _|_| _|_ | | _ _|_ |_ |_ _| | _ _| |_ _| _ _|_ |_ |_ | | | |_ | _ _ | | _|_ _| | _ _| |_ _| _ _| | |_ _| _ _ | _| |_ _ | _| | | _| |_ | | |_ _ _|_| |_ _ |_ _ _ _| _ _| _| | |_ _ _ _ _ |_| | |_ _ _ _| |_ _ _ | | | | | | _ _ _| |_| _| | |_ _| |_ |_ | |_ _ _ _ | _ _ | | | | _ _ _ _| |_ _| _ _| | _ _ _| _ _ |_ _ _|_ _ _| _ _ |_ _ | _ _| | _ | _| | | _ _|_ |_ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _| |_ _ _ _ _| | |_ | _ _|_ | | |_ _ | | | _| | |_ _ _| _| _ _|_| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _|_ _ _ _|_ | |_ |_ _ | _ | _ _ _| |_ _| _| |_ _|_ _ _| _ _ _|_ _| _ _|_ |_ |_ _ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | +| _ _|_ | | _|_|_ _ | _ _| | _| _| _ _ _|_ |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_|_ _ _ _|_ | |_ _| |_ _|_ _ |_|_ |_ _ _| | | _ |_ _ |_ | | _| _|_ _ | |_ |_ _|_ _ |_ _ _ | |_ _ _ |_ | _| _|_|_ | | | _ _| _ _ |_ | | _| |_ _ |_| |_ _| _ _ _ |_ _ _| _ | _ _ _| |_ |_ _ _ _| |_ | _|_| | |_| | _ | _|_|_ | | | _ _| _ | _| | |_| | | | _ _ _ _| _| | | |_ _|_ | _ _| _ _| | |_ _| |_| _ _ _ _ _| |_| |_ | _ _| _| _ |_ |_| _| _| |_ _ _ _ _| | |_ _ _| |_ _|_ _ _ _ _| _| _ _|_| |_ _|_ _ |_|_ |_| _ _|_ _ _ _ _ _| | | | _ | |_| _ | |_ _ |_| _ _|_ | | _| _| _ _ _ | | | |_ |_| _ _ _| _| | |_| |_ | | _| _|_ _| _| _| | |_ _ _| _ _ | |_ _ _|_ | | |_ _ |_| | | _ _ _| _|_ | | _ _| |_ _ | | | | | |_ _ |_ | |_ _|_ _ _ _ _| _ _ _ _| _ _ |_ _ | _ _| |_ _ |_ _ _| _|_|_ | | | |_ _ | | |_ _|_ | | _| |_ _ _ _ _ | _|_ _|_|_ | | | | |_ _ _ _| _| _ | |_ _ |_ _ | | |_|_ _ _ _| | | | _|_|_ |_ | | |_ |_ _ _ _|_ _ _ _ _|_ _ _ _ _ _ _ |_| _|_| _ | | | |_ _ |_ _ _ _| _ _| _ _ _ _| | | | _|_ |_|_ _| _ | | | | _ _|_ _ _ _| _ _| | _| _ |_ _ |_|_ _ |_ _ _|_ _ _| | |_| _| _| | | _| _ |_ |_| _ _ |_ | | |_|_ |_ _ _ _ | |_ _ _|_ _ | _ _ | |_ _|_ _|_ _| |_ _| |_| _ |_ |_ _| | | |_ _ _ _| |_ |_ _| | | | |_ _| | | _| _ |_ |_ | _ _| | _ _ _|_ | | |_ _| _ _ _| _| | |_| |_ | | | | |_ _|_ _ _| _ |_ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ | |_ _ _ _ | |_ |_ _| | _ _| |_ _| _ _| | | | _|_ | _ _ | | _ _ _| | | _ _ _| _| | _ _| _ _| | _ _| _ _ _ _ _| _ |_| _|_ | |_ | |_ _ | _|_ _ | | | _ _| | _| |_| | | |_ _ _ _ _|_ _ _ _| | _ | | |_| | _|_|_ | | | _ _| |_ _ | | | _| +| _ | |_ _|_ _ _| | | |_ _| _|_ _ _ _ | _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _ _| | _ | _|_|_ | | | _ _|_ _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _|_ |_ _| |_ _ |_ _ |_ _ _ _| | | | |_ _ |_ | | |_|_ _ _|_ | _| |_ _ |_ _ _|_ _ | | |_ _ _ |_ _ _|_ |_ _ _ _ _| |_ _|_ _ | _|_ | | |_ | |_ _ _|_ | _ _ _ _ _|_ | _ _|_ _ | |_ _ _ _|_ |_| _ |_ |_|_ | _|_ _|_ _ | | | |_ _ _ _ _| |_ _| _ | | |_| | | _|_ _|_ _| |_ _ |_ _ _| |_ _|_ _ _ _ _| _ |_ |_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ | |_ | _| _| _ _|_ | | |_ _ | | | _ _|_ _ _| |_ _ _ _ _ | | | | _ |_ _ _ |_ _ | |_ _ _| _ _ |_ _ | _ _| | _| | | |_ _ _|_ _ _|_ _ |_ _ _ _ _|_ _|_ _ _ _|_ | | _ | |_| |_ |_ _ | _ |_ _|_ | | _| |_ _| | _ _ _| |_ _| |_ | _ _| | _| |_ _ | | _ _| |_ _| _ _| _|_|_ _ | | | |_ _| _| | |_ _ _ | | | | | |_ _ _ _ _|_ |_ _ _ _ _ _ | _ _ _| _| | |_| |_ | | _| |_ |_ |_ _ _ _ _| |_ | _| | | |_ _ | | |_ |_ _ | _ _ _ | |_ _ _ _ _| _ _|_ | _ _ _| _|_ |_ _ | | | _ |_ _|_ _ |_ _ | _| _| |_ _ _ |_ |_ | |_ |_ _ _ _| _ | _| _ _ _ _ | |_ _| _|_| |_ | |_| |_ _ _ |_ _ _ | | |_ _ | _ _ _| | _| _| | _|_ _| |_| _|_ _ _ _ _ | | |_ _ _ _| | |_ |_ _ _ | | _ _ _ _ | |_ _ _| _| | | |_| _| _ _|_ | | _| _|_ _|_ _ |_ _ | |_ _|_ _ | | _| | |_ _| | | _ _ |_ | _| _| _ _|_ |_ | |_ _|_| _ _ |_ _ | _ _| | | |_ |_| | |_ _| _| _ _|_ | |_ |_ _|_ _ | _ |_ _| | |_ _ | | |_ _|_ | | _| |_ _| _ | _ _ _| |_ |_ _|_ _ | _|_ | _|_|_ | | | _ _| _ _ _ _|_| |_ | |_ |_ | | | _| | _| _ |_ _ _ _| _ _| _ _|_ | | _ _| | | | |_ _ | _| | |_ | | _ | _|_ _ |_ | _| | _ _| | _|_ _| _| _ _| | | | | _| |_ | _ _| | |_| |_ _ _ _|_ _ _|_ _ _| |_ _ _ _ _ _ _ _ | _ _| | | |_|_ _ _| |_ _ _ _ _| |_ _|_ _ | | _ _| | | | +| _| | | _ _| | _|_|_ |_ _ _| _ _ |_ _ | _ _| | | _ _ | _|_|_ | | | _ _|_ _ _ | | _| _| |_ _ _ _ _| |_ _| _ _ _| | | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| | | | _ _|_ _ | _ _| | |_| _ | |_ _ _| | | | | | _ _ _ |_ _ _| _| | _| _ _| | |_ _ _ _ _ _ _ |_ _ _| _ _ _ _ _ _| | _ _ _| |_ _| _ _ _ _|_| |_| | |_|_ _ _| _ |_ | _ _ _ _| _| _ _|_ | _| |_ _ _ _ _|_ |_ _ _ _ |_ | | _| | _ _|_| |_ | _ _ _ _|_ |_ _| | | _ _ | | | | |_ _ _| _ _ _ _ |_ _ | | |_ _ _| |_ | | | | | | _| |_ _ _ _ _| | _ _| |_ _|_ _ _| _ _| _ _ _ | _ _ _|_ _|_ _ _| |_ | | _| _ _| | | _ _ _|_ | | |_| |_ | | | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ |_|_ |_ _| | | _ | | | |_ |_ _ | _ _ _ |_| _ |_ | | | _|_ _ _| | | |_ _ _ _| _ _| | _ _ _ _| | |_ _| |_ _ _ | | | _ _ _| |_ | | | _ _ | |_ _ _ _ | |_| |_ _ | | |_ _|_ | | _| |_ _ _ _ _| | _ _ _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | _ _ | _| _ _ |_ _ | | _ |_ _ _| | | | | | |_ _ _ |_ _ | | |_ _| _| |_ _ _ |_|_ |_ _ | | | |_ _| _ | | _| |_ _ | | _ _| | _|_ |_ | |_ _| | |_ _|_ _ |_ _ | _ _|_| _| _| _| _ |_ |_ _ |_ _ _| | |_ _|_ _ |_ _ |_ _ _ | |_ _|_ _ | | _| | _ _ _| | | | _| |_ _ _ _ _| | | |_ _ _ _ | |_ _ | | |_ _ _ _|_ _| |_ | | | _ _ _| |_ _| | _| _| | _| |_ _ _ _ _| | | | _ _ _| _| | |_| |_ | | |_| _| _| |_ | _| |_ _ _ _ _| | |_ | _ _ _ _|_ _ _ _| _| _| | _|_ _| | |_ |_ _ | _|_ _ _ |_ | _|_ _| | | |_ _ |_|_ _ _ _ _| |_ _| _ _ _ _ | | | |_| _|_ _ _| |_ | | |_ _ _| _ | | | |_ _ | | |_ _ | _| | | | _| | | _| | _| |_ |_|_ _ | | _| |_ |_|_ _| _ _| | |_| _ _ _| | _ | | | |_ _| _| _|_ _ _ _| | _| | | | _ _ _| _ _ _ | | _ _| |_ | |_ _ _ | | _ _ _ | _ _ _| | |_ _ _| |_| | +| | _| |_ _| | |_|_ _ _ | | _ _ _|_ | | |_| |_ | | |_ _ | |_ _ _ _ _| |_ _|_ _ _ | | | | _| | |_ _ _ _ | _ _|_ _ | _|_ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | | | _|_ _|_ _| _ | _| | _ _| |_ _|_ _| |_ | _ _| | |_|_ _| _| | _| _ | | | | | | _ _| _ _ _ _| |_ _| | | _|_ _ |_ _ _ _ _| _ |_ |_| _| _ | _ _| _ _|_ _|_ _ | | | |_ _| _ | _| _| |_ _ _ _ _| |_|_ | _ _ | _ _ _ | _|_ | | | | | | _| _ |_ |_ _ _ _| |_| | _ _| |_ _|_ | |_ _|_ _ _ _ | | | |_ _ |_ | |_ _| _| _ _|_ _ _|_ _ _| | | |_ _ |_ _ _| _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | _ _| |_ _ |_ _|_ _|_ | | _| |_ _| _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _| |_ | | _|_| | | | | |_|_ | | _ _|_| |_ _ |_ _| | _| |_| |_ |_ _ | | | |_ _ _ | | |_ _ | _| | _|_ _ _|_ |_ _ |_ _| |_| _ |_ |_| |_ _| |_ _| _ | _| |_ _ | _| | _|_ _ | | |_ |_ _ | _ _| _|_| | | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _|_ | _| |_ _| | _| |_ _ _ | | |_ _| |_ _ _ |_ _ | |_|_ _ _ _ |_| |_ _| | | _ _|_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_ | |_ _ | | | |_ |_| _| |_ _ _ _ |_ _ | | | _ _ _| _| _| _| _ _|_ | |_ | | _ _| | | |_ _ | _ | |_ _| | _ _| | |_ _ |_ _ | | |_ _| | |_ _ _ |_ _| | | _ _| |_ _ _| | |_ _ _ |_ _ _ _ _ _ _|_| |_ _ _ |_ | _| | _| | |_ | _ _ _ _ _| |_ _ | _ |_ _|_ | | _| |_ _ | | |_ _ _ | |_ _ _ | _| |_ _| _ _ _ _ | |_| _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | _|_ | _ _| | _|_ |_ _ _| | _ _|_ _ _ _| | |_ _ _|_| _|_ | _| _| |_ | _ _| _| | |_ _|_ _ |_|_ |_ _ | | | _|_|_ | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | |_ _ | _ _ _|_ _ |_ | _ _ _| _ _ _ _ _ _ _ _|_ _| | |_ _|_| _ |_ _ | | | |_ _ | | | _| _ _ |_ _| | | |_ _ | | | |_ | _ _| _ |_ | | +| | | _|_ |_ _|_ _ _ _|_ |_ _ | _ |_ _|_ | | _| |_ _ | |_ _| _ _ _ |_ _ |_ _ _| |_| _| _|_ _ |_ | | | _ _ _ _| |_| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | |_ _|_|_ _ | _ |_ _|_ _ |_ | _| _| _ |_ |_| |_ |_ | |_ | |_ _ _| _|_| | | |_ _| |_ | | | _ _ _ _|_ |_| _| | | |_ _ |_ _ |_ _| _| _ _|_ | | |_ | | _ _| | | _ |_ _| | | |_ _ |_ _| | | | |_ | _| _|_ _ |_ _ _|_ _ _| |_| |_ _ |_|_ | |_ _| _| _ _|_ | _| _ _| _ _| |_ |_ _ _ _|_ _ _ _ | |_ _| _|_ _ |_ _ |_ | _ _| | _ _ _ _ | _| |_ | |_ _ _|_ _ _ _| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| | |_ | |_ _| | _| _ | | |_ |_ _ | _ _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_| _ _ _|_ _ _|_ _ _ | | |_ |_ | _ _|_ | | |_ _ | | _ _| | _| _| _| | _ _| | |_ _ _ | |_ _|_ _ |_ _| _|_ _ _ | |_ _ |_ | | | _| _ _|_ | | | |_ _ | | _|_|_ _ _| _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| | |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | |_|_ _ _| |_ _| _|_ _ _ _ _ |_ _ _|_ _ | _ _ _ _ _ _|_ _ _ _ |_ _ | _ _| | | | _ _ _ _| _|_|_ | | | _ _| _ |_ | | | | _| |_ _ | |_| |_ |_ _ _| |_ _ _ |_ _ _ _| | |_ _ _ _ | |_ | _| |_ _ _ _ _| | _ _|_ | |_ _| | | _ _| | |_ _ _| _|_ _| | _|_ | | _| | _| _ _|_ | |_| |_ | _| | | _ |_| _| _ _| |_ _ _ _| | _ _ |_ _ _ | _| | _| |_ _| |_ | | |_ _ | _ _ _ _| | | |_ _| | |_ |_ _ | _|_ |_ _ |_ | | | _|_| |_ _|_ |_ _ | | _| |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ | | _| | | |_ _ |_ _ _|_ _|_ _ _ _ _| | |_ | _ _ _| _ _| | | _|_ | | | _| _|_ |_ |_ _ |_ _| _| | |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_|_ | |_| _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| | _ _ _| |_ | |_ _ | _| |_| | |_ _ _|_ | _| | | _ _|_| |_ | | _| _| _ _|_ | +| | |_ _ |_ _ | |_ _ |_ _| | |_ _ _| | |_ |_ _ | |_ _ | | | | |_ |_ |_| _ |_ |_ |_ _ |_ _ _ _| _|_| _ | _| _| _ _|_ | |_ | _| | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ |_| | | |_ _ _ |_ | | |_ _| _| _ _|_ | | | _| _| |_ _ _| _ _| _ _ _| |_ _ |_ | | | |_ _ _| |_ | |_ _ _|_ _ |_ |_ | | _| |_ _ _ _ _| | | |_ _| | _ _| | _| _ _| _|_|_ | | | _ _| | |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ |_ _ |_|_ | _| |_ _ _ _ _| _| | _ _| |_ | _ |_ _ _ _ _| _| |_ _ | | _ |_ _ | | _|_ | _|_ _ _| _| | | _| _| |_ _ | _ | | |_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ |_ _| _|_|_ | | | _ _|_ _ _| | | | _| _ _ _ _ | |_ _ _|_ | | |_ _| | _ _| |_ _| _ _| | | _|_ _ _|_ _ | | |_ _ _| |_ | | _ _ _ |_ _ | _ _ _|_ _|_ _ |_ |_ _| _| |_ _ _ _ _| | |_ _| _ _| |_ _ _ _ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _|_ |_ _|_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| |_ | |_ _|_ | _ |_ _ _ _ _| |_ _| | _|_ | | | | | |_ |_ _ | |_ _ _ |_ |_ | _ _ _ _ _ | |_ _| | | | |_| |_ |_ _ |_ _| | _| _ _|_ _| | _ _| |_ _ _ | | _ _ | | _|_| | | _|_ _|_ _ | _| |_ _ _| | _|_ _ _|_ _|_ _ | |_ | _| | |_| _ _| | | _ _|_| _ |_| |_ |_ |_ | _| _| | _| _|_ _ | _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_| _|_ _| | |_ | _ _| | _| | |_ _ _| | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | | | | |_ _|_ | _ _ _| _ _ |_ _ | _ _| | | |_ _ | _| _ _ _|_ _ _|_| |_| |_ | | _ _| _| _ _| | |_ | _|_ |_ _ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | |_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| |_| |_ _| _| |_|_ | _ _ _| | _ _|_ | |_ | | |_| _| |_ _ _ _ _| +| |_ _ |_ _ | |_ _ | | |_ _| | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| | | |_ _ _ _ _| _| _ _|_ |_ | |_ _ |_ _|_ _| |_ | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_| |_ _ _|_|_ | _|_ |_ | | |_ | _| |_ _ _ _ _|_| | | _| _|_ _ |_ _| _| _ |_ |_ _ _| | |_ _| _| _ _|_ _ _| _ _ | _ _ _ _|_ _| | | |_ _| | | | | | | |_| |_ | | | |_ _ |_ _ _ _ _| |_ _| | _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | |_ _ |_ _ _ | |_ | _| | | _|_ | | |_ | | | | _|_ _ _ |_ _ _|_ | |_ _| |_ _ | |_|_ _| |_ _ |_ _| _| _ _|_| _| _ _ _| | |_ _| | |_ _|_ | _|_ | _|_|_ | | | _ _| _ _ _| | | _| _ _ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | |_ _ | | _| |_ _ | _ _| | _ | |_ _ _ _| _ _| _| | | | | _ _ _ _ _| _| _ |_ |_| | | | _ _| _ _| | | |_ _ _ _ _ | _ _ _| | |_ _ _ _ _| _ _| _ _| | |_ _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _ _| _| | | |_ _|_ | _|_ _ _ | | |_ _ |_ | _|_ |_ _ | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ _| | | | _ _ _ _ | _ _| _| |_ _|_| |_ _ | | _ _|_| |_ _ | |_|_ _ _| _ _ |_ _| | _ _| | _|_|_ _ _ | | | _|_ _ | _|_ _|_ _ _ _ _ _|_ | |_ _ _ |_ _|_ | _| |_|_ | _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | | |_ _|_ | |_ | | | | _ _ _| | | _| | |_ _ _ _| _|_ | | _|_ _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _ _| |_ | | | _| | _| _| _ | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| _|_ _| |_| |_ _ |_ _ | _ _ _| | | |_| |_ | | |_ _| _| | |_ _| _ _ |_| | _| _| |_ _|_ _ _ _| _| _ _| |_ _ _|_ _ _ _ _ |_ _|_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _ _|_| |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | _|_|_ | _ _|_ _ |_ _|_| | |_ _ _ _| | | _ _| | _| | |_ | |_ _ _ _ _ | +|_ _| _| _ _| | |_ |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ _ | _| |_ _ _ _ _| _| _ |_ |_ _ _|_ | _| |_ _ _ _ | _| | | |_ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | _ _ _ | |_ _ | |_ _| |_ | | |_ |_ _ | _| _|_ _ |_ | | _ _| _| _ _|_ | | |_ | _ _| | _ _ _ _| | | | _ _ _ _ | | |_ | _ _| | |_ _| | |_ _|_ | | _| |_ _ | | _| _ _ | _ _ _|_ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _|_ | |_ | _ _|_ | _|_ | |_ _|_ _ |_ _| | _| |_| | |_ _ | _ _ | | | | _ _ _ | |_ _|_ | | |_ _ |_ |_| _ _ _| _| | _ _| | | | _ _| _| |_ _ |_|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_ _ _ _ | _ _ _ _ |_ _ _|_| |_ |_ _| | |_ _ _| _| | _ _ _| |_ _ _ | | | | |_ _ |_| | | |_ _ |_ _ _ _| _| _ _|_ | | |_ | _ _| _ |_ _ _| _ _ |_ _ | _ _| |_ | _| | _ _ | | |_|_ _ _ _|_| | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _|_ _ |_ _ _| |_ _|_ _ _ _ _|_ _ _| _| _|_ _|_ _ |_|_ |_ | | _ _| |_ _|_ _ | |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | |_ |_ _ | _ _ | |_ _ _| | | |_ | _| _| _ |_ |_ _|_ | | |_ _ | | |_ | _ _ _| | | |_| |_ | | | _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | | _ _|_ _ _ _ |_ _|_ _ | | |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_ | | | | _| |_|_ _ _ _ _| | | _| |_ | _ _ _| | | |_ _ _ | _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ | | _| _| |_| |_ | | | _ _ _ _|_ _| _| | | |_ _|_ | | _| _| | | |_ _ |_ _ _ _ _ _ _| |_ |_ _|_ _ | | |_ _|_ | | _| |_ _ | | _|_ _ _ _ _ | | _|_ _ _ |_ _ _ _ _ _ _ _ _ |_ | _|_ _ _| _ _|_ _ _ | |_ _ _ | _|_|_ | | | _ _|_ _ _ _ | | _|_ | | |_ _ | |_ | |_ | _|_|_ | | | _ _| _ _ _| | | _ _| | _ _|_| _ _ |_ _ | _ _| | |_ _| | | |_ _ _ _|_ _ _ | |_ | _ | |_ | +| |_ |_ _ _ _| |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | | |_ | _ _ _ _ _|_ _ | | | |_ _| | _|_ |_ | _ | | | | _| |_ _|_ _ _|_ _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| _|_ _ | |_ _ | | | _ _| _|_ _ | | _ _| | | | _|_ | | |_ _|_ _ | _| |_ _ _ _ _| | | | |_ | |_ _| |_ _ _|_|_ _| _ | | _| |_| _|_ _ _| |_ _ | |_ | | | |_ |_ _ | _|_ | | | |_ | | _ _ _| | | _ _ _| _| | _ _| _ _| | _ _| _ _ _| |_ _| _|_ | |_ _| | |_ _ | | | _| _| | _ |_ | |_ _|_ _| | | _ |_ _| | |_ _ |_ _|_| _ |_ | _ _ _ _ | _ _|_ | _| |_ _| _ _| | _| _|_ _ _ | _ _ | _ _ _ _ _|_| |_| |_ | | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ | | _| | _| |_ _ _| | _| _ |_ |_ | | _|_ _ |_ | |_ _ _ |_ _ | | |_ _| |_ _|_ _ |_ _ _| |_ _ |_ _ _ | _| |_ _ _ _ _| | |_ |_ _ |_ |_| _ _ _|_ | | |_| |_ | | _|_ _ _| _| | |_ _|_ _ |_ _ | _ _| | | _| | | |_ _|_ | _ _ _ _ _| | |_ _ _ | _ _| | _ | | _ _ | _| _ _ _| |_ _ _ | |_ _ | |_|_ | _ _| | _ | _| |_ _ _ | _|_|_ | | | _ _|_ _ _ _ | | | | |_|_ | | _ _|_| |_|_ _| _ _| | | | _| _| _| _ _|_ | | _ _| |_ _| _ _| | | |_ _ | | | |_ _|_ | | _| |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| _ | _ _| _ _ _|_ | _|_ |_ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| | | | | |_| |_ |_ _ | _| | | | | | |_ _ | _| | | | | | | | _| _ | | | _| | |_ _ _ _| _ _| | _| _ | |_| | _| _| _| |_ | |_ _ _ _| _ |_ _ _| |_ _|_ _ _ _ _| |_ _| _| |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _ _| | | |_| | | |_ |_ _ | _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | |_ _ |_ |_ _ _ |_ _|_ _ | |_ _ _ _ _| |_ _| | |_| _ | | | _ _| |_ _| _ _|_ |_ _| |_ _ _ _ _| |_ _| |_ _| | | _| | | _| | | _ _ _|_ | | |_| |_ | | |_ | _| | |_ _ _ _| |_| |_| _| | | |_ | | +| |_ _ _| | _ _ _| _ _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ |_ _|_ |_ | | | _ _ _ | | | | | | _ _| | _ _ _| _| | | | |_ _| |_ _ _ | _ | _| _ _| | | | | | | | _ _| _| | | | |_ |_ | _| _ | |_ _ _ _ _|_ _ _ |_ _ |_ _ _|_| |_ | |_ _ _ _| |_|_ _ _ _ |_| | _ _ _ _ _ _|_ _|_|_ _ _| |_| _ _| | _ _ _ _ |_ _| | _ _ _| _|_ _ _ _|_ _ _ _| | | | |_|_ | | _ _|_| |_ _| | |_ |_ |_ _ | _| | |_ | | _ | _|_ _ |_ | _| | |_ _ _| |_| _|_ _| _| _ _|_ _| |_|_ |_ _| |_ _ _| | | | |_ | | | _ _ _| |_ |_ | _| _ |_ _ |_ _|_ | |_ _| | | |_| | _| | |_ | _ _| _| |_ | | |_ _| _ _|_| _ | _| _ |_ |_ | |_ _| | _| | | |_ _|_ | _ _ |_ | | |_ _| | _| |_ _| _| | _| | _ |_| _| _ _|_ |_ | | _ | |_ | | | _| _| _ _| _| _ _ _ _ _|_ _ | | _ _ _| | _ | |_ | _ _ _ _ |_ |_ | |_ |_ |_ _ |_ |_ _|_ | | _| |_ _ | |_| _| |_ _ _ _ _| _ | | | | | |_ _ _| |_ _|_ _ _ _ _| _|_ | |_ _|_ _ |_ _ _| _| | _| |_ _| _| |_ _ _|_ |_ _ _ _|_ _| _ _| | | | |_| |_ | | |_ _|_ _ _| _ | |_ _ _ _ _| |_ _| | _ _| | | | |_| |_ | _ _|_ | | |_ _ | | |_ | _| |_ _| _| _| |_ _ _ _ _| |_ _ _ _| _ _| _ _|_| | | _| | | |_ _| | |_ |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ | | _ _|_ _ | _| |_| |_ _| _| | _ _| |_ | _|_|_ | | | _ _| |_ _ | | | _|_ _| |_ |_ | _| |_ _| |_ _|_| |_| |_ _|_ _ _| | |_ _ _|_ _| |_ _| |_ _| | | | | |_ _|_ |_ | _ _ | | | |_ _ _ _| | |_ _ _|_ _ _ _ _| _ _ _| | _ _ _ _ _|_ _ _ | | _ _ | | _ |_| _ _| _ _ _ |_ _ |_ |_ _ _| |_ | _ | _|_|_ _ _| | |_|_ | | _ _|_| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _|_ _ |_ _ _ _ | |_ _| _|_ _| | _ _ _ _ | _| | |_ _|_ _| |_| _ _ _| _ _| | _| _ _| |_ _ _ _ | _ _| | | |_ _ _| |_| _| _| |_ _ | _ _|_ _|_ | | _| |_ _| _| _|_ |_ _|_ | |_ _ _| _| _| |_ _|_| +| |_ | _ _| _ _ _| _| | _| | | |_ _|_ |_ _ _ _ _| | |_ _ |_ | _ _| _|_ _ _| | _ _ _| | |_ _|_ _ _ _| |_ _ _| _| _| | _| | | _ | |_ _| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | |_ |_| |_ _ _| | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _| _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ | | | | _| | _ _| | _ _ _| |_ _ _ _ | _ _|_ |_ | _ _|_ | | |_ _ | |_ _ _| _| _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| | | _ _ _| |_ | |_|_ | | _ _| | |_ | _ | | | _ _| | |_ _| _ |_ |_ _| | |_ _ |_ _| |_ _ _ _ | | _ _| | _| _|_ _|_ |_ |_ _| |_ |_ |_| | |_ _|_ _ |_ _ _ |_ _| |_| _| _ _|_ | _ _| |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _| _| | _ _|_ _ _| |_ | | _| |_ _ _ _ _|_ _| | | _| |_ _ _| |_ | |_ _ | | |_ | _| _ _ _| | _| _ _|_ | |_ | _|_ | _ _|_ | | |_ |_ _| | _| |_ | | |_ |_ _ | _|_ | | |_ _ _ | |_ _| | | | | | |_ _ | | | _ _ | _ _ _| | | | | | _ |_ _ |_ _ | |_| | |_ |_ _ _ _ |_ | | |_ _ _ | | _ _| |_ _|_ | | _| |_ _ | _ _| | | |_ _ | _ _ |_ _| | _ _|_ _| |_ _ _ |_ _| | _ _| |_ _| _ _| |_ | | _ _| |_ | |_ _ _ _| _ _| _| | | |_ _ _ _ _|_ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ | _|_|_ | | | _ _| _ |_ | |_| _|_ _ _| |_ |_ _ _|_ _ _| | _ | _| | _|_ |_|_ _ _ _ _| |_ _| | |_ |_ | | | |_ _ _ _ _|_ | _| _|_| |_ _ _ |_ |_ | _ | _|_ _ _ _ | | _|_ _ _ _|_ _|_ _ _ _ _ |_| | _| | |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _|_ | |_|_ _ _|_ _ | | _| _| _| | |_ _| _| _ _|_ _ _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| | _ |_ _ | _| |_ |_| _|_ _ | _|_|_ | | _ _| | | |_ |_| _ |_ |_ |_ | | |_|_ | | | |_ _ _ _ |_ _| | _ _ _| _| _ |_ |_ _|_ |_ _| | _ _ _| | |_ |_ _ | _|_ |_ | _ | |_| _ _ _| _|_ _ _| | +| |_ _ | |_ _ |_ | |_ _ _| |_ _|_ _ _ _ _| _ _ |_|_ |_ _|_ _ |_|_ |_ _ _| _| |_ _ _ _| _ |_ | _ _ _ _ | | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ _ _ _ | |_ |_ _ | | _| |_ _ |_ _ _ _ _| |_ | _ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _| |_ |_ _| _| |_ _ | |_ _ | | | |_ _ _ | | |_ _| | _ _| |_ _| _ _| | _ |_ | | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | |_|_ _ | _ _ _ _|_ _ _ _| _|_ _ | |_ _|_ _ _|_ _ _| | _ _|_ _| _| _ _|_ | _| | _ | _ _|_| _ |_ |_ _ _ _| |_ _ _| _ _ |_ _ | _ _| | _| _| _| |_ _ _ |_ _ | | | _ | _| |_ _ _ _ _| | _ _|_ |_ | | _ _ | _ _ _| |_ _ _ _ _ _ |_ |_ _ | _ _| |_ _ _| _ _ | | | |_ _ _ | _ _ _| | | _| _ |_ |_ _ _ _ _| |_ | | | _| | | | _ _|_ _|_| | |_| _|_ _ | | |_ _ _ _ _|_ _|_| | | | _| | | | | |_|_ | | _ _|_| |_ _| _ |_ _|_ _ _|_| |_| | |_ _ _ _|_ _| _| |_ _ _| _| |_|_ _|_ _| |_ _ _ _| | _ |_ | |_ _| | | | | _| _|_ _|_ | _|_ _| | | |_ | | |_ |_ _ | _|_ |_ _| | _| _|_ _ | | _ _| _| _ |_ |_ | |_ _ |_ _ _ _| _ _| _| _ _| | | _ _|_ _ |_ | _ _ | | | _ _| |_ _|_ _ |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ _ _| |_ _|_ _ _|_ |_ | | | _| _ _ _ _|_ |_| | _ _ _|_| _| | _|_ _ |_ _ _ _ _ | _ _ _|_ _| | _ _|_| |_ |_ _ _| |_ | | | |_ _ | _ _|_ | | | | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _| |_ _ _ |_ |_ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _ _ | |_ _| | | _ _|_ _| |_ | _ _| | _ _ _ _|_ _| _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ | _|_|_ | | | _ _|_ _ |_ | | | | |_| _ | | |_ _ _ | | _ _| | |_ _ _ _ _| _| | | | | _| _| _ _|_ |_ | |_ _|_ _ |_ _| _|_ _ |_ _ | _ _|_| _ |_| _| _ _|_ | _ _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _|_ | |_ |_ _ | | _ _ |_| _| | +| |_ _ |_ _ _| | _| | |_ _ | | _ _ | _ _| | | | _ |_ _ |_ _ | | _ _ _| _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| _|_ _ |_ _ _| |_ | | _| | |_ _ _| | | _ | | _ _|_ _ _|_ _| |_ _| |_| _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ | |_ _ _ |_ _| |_| | |_ _| | |_ | _ _|_ | _ |_ _ _ _| _ _| _| | | |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ | |_| _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ | | _| |_ _ _ _ _| | |_ | | | _ _ _| |_ | | _ _ _ | _ _ _|_ | | |_| |_ | | | _| _| |_ _ _ _ _ _| | |_ _| _| |_ _ _ | _| | _ _|_ | |_ _| _| |_ _ _ _|_ _ | _ _ |_ _ _ _| |_ _ | | _| _ _| |_| | |_ | | | _| |_ _ | |_ _| _| _ _|_ | _ | _| _|_| |_| _| | |_ | | _| | |_ _|_| _|_ _ _ _ _| |_ _ _ _ _ _|_ _|_ _ _ _|_ _ _| |_ | _ _|_ | | |_ _ | _| |_ _| _| _ |_ | |_ _ _ _ _ _ _ _ _ _ _ _ | | |_ _ _ | |_ _ | _ _| | _| _| | _|_ |_ _| |_ _ _ _|_ _ _ _ | | _ |_| |_ _ | | |_|_ | | _ _|_| |_|_ _ | | |_ _ _ _ _|_ _| | _| _| _ _|_ | |_ _ _ | | | | |_ _ | _ _|_ _| | | _| _| | _ |_ _| |_ _ | | _ |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _ |_ _ _ _ _ _ |_ _ _| |_ |_ _ _| |_ | |_ _|_| _ _ |_ _ | | _ | | _ _ _ _| |_ _ | _ _| _| _ |_ |_| _ _ _ _|_ |_| |_| |_ _| _ _| _ _ _ _| _| | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| _| |_ | | _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _| |_ _ | | _|_ _ _ | _|_ | _|_| | | _ _ | _ _ _ | _|_ |_ _ _ _| _ _| _|_ | |_ _ _ _ _| |_ _|_ _ _ _|_ | | | |_ _ _ _| _ _| _ _ |_|_ | _ _| | _ _ _ _|_ _ _|_ _| | | | _| |_ _ _ _ _| |_ _ _ | |_ _ | |_ |_ _ |_ | _ _ _ _| | _| |_ _ _ _ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _|_| | _| | _|_ | | _| _| +| | |_ _ | | _| | _|_ _ | |_ _| | |_ _ _ _| | |_ _| | | | | _ _| | |_ _ |_ | | |_ _| | | |_ _ |_ _| | |_ _ | _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| |_ _ _ |_ _ _ | | |_ _| | _| _| _| | |_ | |_| | _ | | _ _| _|_ | |_ _| | | _|_|_ | | | _ _| |_ _ | | | _| _| |_|_ | |_|_ | | _| _| | _| _|_| _|_ | | _| _ | | | |_|_ _| | |_ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | |_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _ _ _ | _|_ _ _ _|_|_ _ _ _ _| _|_|_ _ | _|_ _ | _ _|_ _|_ | | _| |_ _ _ _| | _ _ _ | | _ _| | _ _| |_ | |_ _ | | | _|_ | _|_ | _ |_ _ _ _ | |_ _ | | | |_| _ _| _| | |_| _| _ _| | |_| _| | | | _| | | |_ | _| |_ _ _ _ _| |_ _ _| _| |_ _ _ _ |_ | | _| _| | | _ _ _|_ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _ _ |_ _| | _ _| |_ _| _ _| | |_ _| _| _| _ _|_ | | _ | _ _ _ _ | |_ _| _ | |_ _|_ _ | |_ | _|_| _| _| _ | | _ _| _ _ _ _ | |_ _| |_ _ _ _| |_ |_ | _ _|_ | | |_ _ | _| |_| _ |_ _ _ _ _| | _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_|_ _ |_ _|_ _| _| _|_ |_ _ |_ _ | |_ _ _| |_ | | |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _|_ _ | |_ _ | _ | _| _| _ |_ |_ _| _ _|_ _ _| | _ _ _| | | |_| | | | |_ _ | | | _ _ _| | | _| _| _ _|_ |_ _ _| |_ | _ _| _ _| | |_ | | |_ | |_ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _ _|_ _ _| |_ | | | | |_ _| _|_|_ | | | _ _| _ | | | | | | | |_| |_ _ _| | | |_ _ _ _| _| |_ _| |_ _ |_|_ |_ _| | | | |_ _|_ | _|_ _ | | | |_|_ _ _ _|_| | _ _ _ _ _ _| | _ _ _| |_ |_ _ _| |_ | | | |_| |_ | | _ _ |_| _ _ | _ _| | |_ _ _ _ _ _| | | | _ _| | | _|_ _ | | _| _ _| | | |_ _ _| _ _ _|_ _ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _ _|_ | _|_ _ _ _| _| |_ | +|_ _|_ _ _| |_|_ _ |_ _ |_ _ _ _| | |_ _ _ _ | | _ _| | | | | | _ _| _| | _| _|_ | _|_|_ | | | _ _|_ | | | _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | _ _ _ |_ _ _ |_ _| | _ | |_ _| | _ _|_ | _|_ _ _|_ | |_ _|_ |_ _ _ | |_| |_ | | |_ _ _ _ _| |_ _|_ _ | | _ _| | | | _| _|_| |_ _| _ |_ _|_ _|_ _|_ |_ _ _| | | |_| |_| _| |_ _| |_ _|_ _ |_ _ | |_ _| | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _ _|_| |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ | _ _| _| | | _ _ _ _ | |_ _| _| _ _| |_ _ _| | | _| | |_ |_ _ | _ _ | _| | |_ | | | _| _| _ _| | | |_ _ |_|_ |_ |_ |_ _ _ | _| |_ _ | | |_ _|_ |_ | _ | |_ | | | | | | |_| _|_ _ |_ _ _ _|_| |_| _| |_ | _ _ _ | _ _ _| _|_ _ | | | | | |_| _|_ _|_ _ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ |_ _ _ _| _ _| _| | | | _ _| _| |_ _ _ _ _| | | _|_ _ | | _| |_ _ | | | | _|_ | | | _ _ _| _| | | |_ _| | |_ _ | | _| |_ _ | | _ _ _ _|_ |_ |_ _| | _ _| |_ _| _ _|_ |_ |_ |_ _ |_ | _ _| |_ _ _ | _|_ |_ _ _ _ | | _ _ |_ _ | | |_ | | _ _ _| _|_ | | _| | | | |_ | _| | _| | _| | | |_ _|_ | _ _ | _ | | |_ _ _ _|_ | | |_ _| | _ _| _| _ _|_ | _| | _ _ _| |_ _ |_ _| |_ _|_ | |_| |_ _ _ _| | _| | | _ _| |_ _| _| |_ _ _ _ _|_ | _ _|_ _ _| |_ | | |_|_ _ | | | | | |_ _ _ _| _ _ _ | _|_|_ | | | _ _| | | |_| | _ _| |_ _| | |_ |_ _ |_ _|_ _ |_ _ _ _ _| |_ _|_ |_ |_ _| | | |_ | |_ | | | |_| |_ _ | _| _| |_ | | _|_ _ |_| _ _| | |_ _|_ _ _ _ _|_ | _| | | |_ _|_ _ |_ _| _ _ _|_ _| |_ | | _ _|_ _| _ |_ |_| _ _ _ _|_ |_ |_ _|_ | | _| |_ _ | | _| | |_|_ _ _ |_ |_ | | |_ _ _| | | |_| | _ _| |_ _ |_ _| |_| _| _ _|_ |_ |_| | | | _ _ _ _ | |_ _ | _|_ _ |_ _ _ _| _ _| | | _| | _ _| |_ _ _ | |_ _ _ _| | +| | _ | _ _ |_ | |_ _ |_| _ _|_ | | _| | |_ _ _ _ _| _|_|_ | | | | _| | | |_ | |_ _ _ _ _| |_ _| _ |_| | | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| |_ _ | |_ _ _| |_ _ _ _ _| | | |_ _ _| |_ _| _ _ _ _|_ _ _ _| | _|_ | |_ _ _ | |_ | _ _ _| | |_ _ _| |_ | | | |_ _ | | |_ _ _ _ _| _ _ |_ _ | _ _| | |_ |_ | | _ _ _ _| | |_ _ | |_ _ _ _| | | | |_ _ | _|_|_ | | | _ _|_ _ |_ | | _|_ | | |_ _ | |_ _| | | | _|_|_ | | | _ _| _ _ _ _| |_| _| _| | _| |_ _ _| _ | | _| |_ _ |_ _ _| _| _| | | _|_|_ _|_ | |_|_ | | _ _|_| |_ _|_| _|_ | | |_ _ _|_| _| _| _ |_|_ _ |_ _ |_ _|_ _| |_ _ | |_ _ _| _| |_ _ _ | _ | | | |_ _| | | | | | |_| | _ _|_ |_ _| | |_ |_ _ _ | |_ _| _| |_ _ | |_ |_ _| |_ _| |_ |_ _ |_| | _ _| _ | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ | |_ _ _ | | |_ _ | |_| |_ | |_ | _ _ _ _ _|_ _ _| | |_ _ _| _| | | |_ _|_| |_ _ | | | |_ _ _ _|_ _ _ | | _| |_ _| | |_ _ _|_ | | |_ _ _| |_ |_ |_ |_ _ _ _| _ _| | _ _|_ | _ _| | _| | |_ | |_ _ _| | | _ _| _ _ |_ _|_| _ _ _| | | | _| |_ _ | |_ _ _| | _ _ _|_| |_ | | | | _| |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _| _ _| | | _ _|_ | _| |_ _ _ _ _|_| _| _ _ | |_ _| | _ _ _ _| _| _ _| | _|_ _|_ |_ | | |_ | |_ _ |_ _ |_| | _ _ | | _|_ _|_ _ |_ _ _| |_ _ _|_ _ _ _ _| _ | _|_ _ _ _ _| |_ _| _|_ _| |_ | | _| |_ _ _ _|_ _| _ _| | | | |_ _ _ _ _ |_ |_ _| _ _|_| |_ |_ |_ _| |_ _|_ | | _ _|_|_ | |_ |_ _| _ _|_ | | | | | |_ _ _ _ _ _|_ |_ _|_ | _ |_ _ |_ _ | | _ _|_ _ _| |_ _ _| _| _ _|_ |_ _ _| |_ | | | | |_ |_ _ | |_ _ | | |_ | _ _ _| _| | |_ | _| | |_|_ _ |_ | |_ _ | | _ _| _ _| | | _| _| _| |_ _|_ _ | | _| |_ _ | |_|_ | _ _ | _ | | |_ _| _| _|_ _ _|_ _ |_ _|_ _ | | | +| | | | | |_ _ _|_ _ _ |_ |_ _ _ _ _|_ _|_ _ _ _|_ _ _| |_| | _| _|_ _ _ _| | | |_ _| _ _ _ _ _ _ |_ _ |_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _| _| _ _ _ _ _ _ _|_ _|_ _ _ _ | |_ _|_| _ _ |_ _ | _ _| |_ | | |_ | | |_| |_ _ | | |_ | _ _| _ |_ |_| |_| |_ _| _ _|_ _ _ | _ _ _| _| | |_| |_ | |_ | | | |_| _ _ | |_ _| _ _| |_ _ _ |_ |_ _| |_ _ | |_ _ _ _ _| |_ _|_ _ | |_ | | | | _ _| |_ _| _ _| _ |_ _ |_ _ _ _ _| |_ _| _ _| | | _ | | _| _| _| _ _ _ _ |_ _| | |_ _ _|_ | | _ |_ | |_ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ | _ _ _| | | |_ |_| _ _ _| |_ | | _ |_ _ _ |_ _ _ _ _ | | _ |_| | _| |_ |_ |_ _ _| |_ | |_ _ _ _ |_ _ _ _|_ _| _ _| | _|_ _ _ _| | _| | | |_ | |_ | _| _ | _| |_ _ _|_ _| |_ | |_ _|_ _ _| _|_|_ | | | _ _| _ _ _ | |_ | | |_ _ _ _ |_ _|_ _ |_|_ |_ | |_ | |_ _| _ _ _ _ | | _| _ _ _ _ | | | | _ |_ _| |_ |_ |_ _ _| _ |_ | | |_ _ _| | _| _ _ | | | | _| _ _|_ _ _| | | _ _ |_ | | |_ _| _ _ _ _| | _ _| | _| |_| _| | _ _| |_ _ _ _| | |_ _ _| | | _ _| | |_ |_ _ _| | | _| _ _| | _ _ |_ |_ _| | | | | |_| _ | | _ _ |_ _ _ | | |_ _ | | _ _ |_ _ | |_ _ _| | | | | |_ | _ _ _ _ |_ _| | _| |_ _ _ _| _ _ |_ _ | _ _| | | | | | | | | _| |_ | | _| _ _|_ _ _|_ | |_ _| |_ _ _| |_ _ | | | _ _ _ _ | |_ _| |_| _ _ _ _ | | | | | _ _ _ _| |_| _|_| _ _ |_ _ | _ _| |_ _| | |_ | | _ _|_ _ _|_ |_| _| _ |_ |_| _| _ _| | | |_ | | _|_ | | |_ _ _ _|_ _|_ _ _|_| |_ _| | | | | _ _ _ _ | | |_ _|_ _ | _ _| | | | | _ _ | _ _ _| _| |_ _ _ _ _|_ | _ _|_ _ _|_ _| | |_|_ | | _ _|_| |_ _| | |_ _ _ _| _| |_ | |_ _ _| |_ _ | | | | _ | | |_ _ |_ | _|_|_ _| _| | _| | _| | |_ _ _| _| | _ _ _| |_ | | | | |_ _|_ _ |_ _| _ |_ _ _ _ _| _ _|_ _| | | +| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| _ _|_ _| _| _ _| | _| |_ _|_ |_ _ _ _| |_ | _| _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _ _| | | |_| |_ | | _|_| |_| _| |_ _ |_ |_ _| |_ | | _| _| _ _|_ | _ _| _ _| | _ _ _ _|_ _ | _ |_ _|_ | | _| |_ _| |_| |_ _ _ _ |_ _| _ _| _ _| _ _|_ | |_ _| _|_ _|_ _ |_ _ _ _ | | | |_ _ _| |_| _ _ _| _ _| _| | |_ _ |_ | | _| _ _ _ _ |_ _| | | | |_ _|_ _ |_| | _| | _ _| _| _ _| |_ | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| | | |_ |_|_ _ | _|_ | |_ | |_ |_|_ | |_| | |_ _| _| _ _ _ _ | |_ | | _|_| |_ _ _ |_| _ |_ | |_ |_ _ _ _| _ _ |_ _ | _ _| |_ _ _ | _ _|_ _ _| _|_| _|_ _| _ _ _|_ _|_ _ _|_ | _ _ _ _|_ |_|_ | _ _ |_ _ _ _ _| |_ _|_ | _| | | | | _ _|_ _ | _| _ | |_ _ | | _| _|_ _ _| _ | | _| | | |_ _ _ _ _| | | |_ _ _|_ _ _| | _| | | _ _ _| |_ | | | | _ | | | | | |_ |_ _| | _ _| | _ _ _ |_ _| | _| _|_ _|_ _ |_ _ |_ _|_ | | _ _ _| _| _| | | |_ _ | _ |_|_ _|_ _ _|_ | | | | _| | _|_ _ _|_ |_| _ _|_ _ _ _ _|_ _ _|_ _ _ | |_ _| | | _ _ _|_ _ _ _ _|_ _| _ _ _ _| | _ |_ _ _| _| | |_ | _| _|_ _ |_| _ _| |_ _ _ | _ _ _| | | |_| |_ | | |_| |_ _|_ _ _| |_ _ |_| _| | |_ _ | | _ _ | |_ _ _ _| | | _| _ _| | | | _ | | _| |_ _ | | _ _| _ _| _| |_ _| | | _| _ |_ |_ _ _|_ | | |_| |_ | | |_ _| | | |_| | _ _ _ _| | _| _| _ _|_ | _ _| _ |_| | |_ |_ | |_ | _| |_ _ | | _| _ _ | _| _|_ _| | |_ _ _ |_ _ |_ _|_ _ _ _ | |_ | _ _| |_ _| | | | | |_ _ |_ _ |_| | _| _ _ _| |_ | _ _|_ | | |_ _ | | | _ _ _| |_ _| |_ | _ _| |_| | | | |_| _| |_ | _| |_ | _ _ _| _| |_ _ _|_ | |_ _ _ _ _ | | |_ _ _ |_ _| | |_ _ _ |_ _ | | |_ _ |_ | _ _|_ _ | _| | +| | | _ _ _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _ |_ _ | _ _| |_ _ | _ _ _| _| _ _|_ _ _| | _ | |_ |_ _ |_ _| _|_|_ | | | _ _| _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | | |_ _|_ | | _| | | |_ | |_ _| |_ | | |_ | | |_| _| |_ _ _ _ _| |_ | | |_ _ | _ | _| | | | | | | |_ |_ _ | _ _ _ |_ _ _| _ _| |_ | _ _ _ _ _|_ | |_ _ | _ _| |_ | _ _| _| | _| _ |_ |_ | | | |_ _ _ | | | |_ | | | _|_ | |_ | _ _| |_ |_ _ _ _ _| _| |_ _ _ _|_ _ _ _ _|_ _ | _|_ _|_|_ _|_ _| _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _| | | _| _ _ |_ _ _ _ _|_ _ _ _| _ _ _| | _ _ _|_ _ _ _|_ | |_ _| | _|_ | _ _|_| _ |_| _| _ _|_ | |_ | _ _ _| _| | |_| |_ | | | _ _|_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| |_ | _|_ _ | | _ | _ _ |_ | |_|_ _| |_| _ _ |_| |_ _ _| _| _ _| |_|_ _| _|_ _ |_ _| | |_ _ _| | | |_ _| | | |_| _ | _ | |_|_ | | |_ _ | | _|_ _| |_ | | | |_ _ _ _|_ | |_ | _| |_| |_ _ | |_ |_ _ _ _ _ |_ _ |_ |_ _ | | | | _ _ _| _| _| | | _ _|_ _| _| _ _| |_| | _| |_ |_ _ _| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | | |_ | _ _ _ _ | |_ _ |_ | _ _|_ |_ _ | | | |_ _| _|_ |_ | |_ | | | | | |_ _ | |_|_ _|_ | | _| |_ _ _ | | _ _|_ _ _| _| |_ _ _ _| |_ | | | |_ _ _ _ | |_ | | _ _| _|_ _| | |_ _ _|_ | | | | _ _| | _| _| | |_ _| _| _ _|_ |_ | | |_ _|_ | | _| |_|_ _|_ | _|_| | _ _ _ _| _| |_ _ _ _ _|_ _ _ _| _| _|_ _|_ |_|_ | _| _| _|_ _|_ | _| | _ _|_ _ | _ _| | | |_ |_ _ _ _ | _| | _|_ | _| _ _| | | | | | |_ | | _| _ _|_ _ _| |_ |_ _ |_ |_ _| | _ _| |_ _| _ _| | |_|_ _ | _|_| |_ |_|_ | _| _ _|_ |_ |_ _ _ | | |_ _ _ | |_ _ | | | |_ _ _ | | | | | | _| |_ _ _ |_|_ _ _ _| |_ | _ _| |_ _ | |_ |_| | | _ _|_|_ _ | +| | | | _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _| | | |_| |_ | | _ _|_ _ | | _ _| | _ _ | | |_| |_ |_ _ |_ _ |_ _ _ _ _| |_ _|_ _| |_| | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _ _| |_ | | |_ | |_ | | | | _ _| | _| | | _| | |_ | |_ | _ _| | _|_ _|_ _ |_ _| |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | |_ _ _ _|_ | |_ | | _ _| | | | _|_ _ | | | _| |_| _| _ _|_ |_ _| |_ _|_ _ |_ _ _|_| |_ _ _| |_ _ _ _ _|_ _ |_ _| | _|_ | _ _ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | |_ _|_ | | |_ _ _| | |_ _ | | |_ _|_ _ _| |_ |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | _| | | | _ _ _| | | _| |_ _ _ _ _| | _|_ _ |_ |_ _|_ | | _| |_ _ _ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _ _| _| _|_ _| |_| | | | |_ |_| |_| _ |_ |_ |_ _ |_ _ | |_ | _ | _ _ _|_ _| | | _ _| | _ _|_ _| | _ _| | |_ |_ | | | | |_ _ _ _ _| _ | _|_|_ | _ _ _ _|_ _|_ _ | _ | | |_ |_|_ |_ _ _|_ |_ _| | |_ _ _ _ | _ _| | | |_ _ _| | _|_ _ | |_ |_ | |_|_ | _ _ | _| | _| _ _|_ _| _| _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | | | |_ _ | | _| |_ _ | _ _|_ | | _| | | _ _ _| _|_ | | _|_ _ _|_ _ _|_| | | |_| | _| | |_| _ | | |_ |_ _ | _ _| |_| | _ _ _|_ _| | _ | _ _ _ _|_ _ _ _ _ _ _|_ |_| | |_ | |_ _ _ _| _ | _ _| | | | | | | |_ _| _| |_ | _| |_ _ _ _ _| | | |_ _ | | | |_ |_ _ | |_ _ | |_ _ |_|_ _ | _ | |_ | _ _ |_ _ _ _ _ |_ _ _ _ _ _ | _|_ _ _|_ _ _ _ | _| |_ _ _| _ _ |_|_ | _ _| | |_ | _ _|_ | _|_ _ |_ _| |_ | |_ | | _|_| |_| _| | |_ _ | _ | _|_ _ _| _ _| | _ _|_ _ _ _| _ _| | | | _| | | | |_ | | _ | |_ _| _ | | _| |_ _ _|_ _| |_| _ _| | | | _ |_ |_| | |_| |_ _| |_ | |_ _| | _ | | _ _|_ _ _| | _ _| _ _|_ | | _| |_| | _ _| _| +| |_ _ | _ _| | | | _| _|_|_ | | | _ _| _ _ _| | | | _ _ |_|_ _|_ | | _| |_ _ |_ | | |_ | _|_ |_ _ _|_ _ |_| _| _| |_ |_ _ _ |_ _ _ |_| _| _ _|_| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | |_ _|_ |_ _ _ _ | |_|_ | |_ |_| |_| |_ _ _ _| |_ | _|_ _ _ | |_ | | |_ _| | _| _ _ _ _|_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ | _ | | |_ |_| |_ _|_ _ _ _| _|_| | |_| |_| | | _| | _| |_ _ _ _ _| | | | |_ _ | _ _| _ _ _ _| _ _ |_ _ | _ _| | _ _ _| _ |_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _ _ _| |_ | | | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ _| _| |_|_ _ _ _ _ | | _ _ _ | _ _ _|_ _ _ _ _ |_| _ | | |_ |_ _ | _ _| _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_| | _ | _| | _| | _ _| | _| | | _ _| _| _| _ _|_ | |_ | |_ | _| | _|_ | |_ _ | _ |_ _ _ _| | |_ _ _| _ _ | |_ | | |_ | |_ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| _| |_ _ _ _ | | _ _ _| _ _| | | _ | _| | | _ _| |_ _ _ _| |_ _| | | | | |_ | |_ |_ _|_ _ | |_ _| _ _ |_ _ | _ _| | |_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| |_ _| | _| | |_ _ _|_ | |_| | _| _| _|_| |_| _ _ _| _ | |_ | _ _ _ _ | _| |_ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_ _ |_ | | |_ _|_ _ | | | _ _ _| |_ _ _| | | | _ _| | _|_ _| | | _|_ _| |_ _ _ | | |_ _ | |_ _ _ | | | |_ |_ _| |_|_ | | _ _|_| |_ _ _ |_ _ |_ _| | | |_ | | | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _ _|_ | | |_| |_ | | | _|_ | | |_| | _| |_ | | |_ _ _ | |_ _ _ _| _| |_ _ _ _| | |_ _| | _ _| | | _|_ _ _ _ | | | |_|_ |_ _| | _|_ _|_ _| _| | |_ _|_ _ _ _|_ _|_ _ _|_ | _ _ _ _|_ |_ | _|_ _ _|_ | _| _|_ _ _ _ _|_ | |_ |_ | |_ | |_| | _ | | |_ | | | | |_ _ _ _| _| | | | _| | +| | |_| |_ | | | |_ |_ _ _ _ _| |_ _| _ _ _|_ _ | | | |_| |_ _ | | |_ |_ _ | _ _| |_ _| |_ _ |_ _ | _ _ _| _| _ |_ |_ | _ _| _ _| |_ | | _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _ _| |_ _ |_ | _ _ _|_ |_ _ _ _ _ _ | | _|_ _| |_| |_| _| |_ _ | | |_ _ | | | _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| | |_ | | |_ |_ _ _| _ _ |_ _ | _ _| | | | _| _|_ _| | | |_ _ _ | | | |_|_ _| _ _| | _ |_ | _ _ _|_ | | |_| |_ | |_ | |_ _|_ | _| | _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ | _ _| _ _| |_| |_ _ _ |_ _ |_ |_ _ _| |_ | _ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _| _| |_|_ | | _ _|_| |_ _ _ _ |_ | _|_|_ | | | _ _|_ _ |_ | | _|_| _|_|_ |_ _ _| | | | |_ | |_ _ _ _| _| |_ _ _ _ _|_| _| _ _ _| _|_ | | | _| | |_| | _|_|_ | | _| |_| | _| |_|_ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| |_ _| |_| _ _ _| | _|_ _| _|_ _ _| |_ |_ _ _ _ _| |_ | | _|_|_ _ _| _|_ |_ _|_ | _ _ _|_ _ _ _ _ | | |_| |_ | | _ | | _| | | | _|_|_ | | | _ _| _ | _| |_ _ |_ _ _ _| | _| _ _ _ | | _|_ |_ _ _ _| |_ |_ _ | _| | |_ _ |_ _ | _ _ _| _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| _| | _|_ _|_ _ _ _ _ _| |_ _| |_ _ _ _| | _ _ _ _| | | _ _| | _ |_| _| | |_ _ _|_ _ _ |_ _|_ | _|_ | |_ _ _ _| | |_ | |_ _ |_ | _ _|_ | | |_ _ | |_ | |_ | _| | | _|_ _| | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | _|_ _|_ | | _| |_ _ _ |_ _| | | _|_ _ _ _ |_ _ _| | _|_ | _ _ _|_ _| | _ | | _ _ _|_| | |_ _|_ _ _ | |_ _| |_ _|_ _ |_ _ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _| |_ | |_ _ _ | |_|_ _ _ | | | _ _| _|_ |_ | _|_ _ _| | _ _|_| | | | | _|_ _|_| | _ | _ _|_ _ _ _| +| _|_ | | _| |_ _ |_ _ _| _ |_ _ _| _ _ _|_| |_ _ _|_ _ _| | | |_|_ | | _ _|_| |_ _ | | _|_ _ |_ | _ _ _| _| | | | _| | _| | _ _| | | | |_| _| _ _|_ | | _ _ | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ | | |_ _ |_ |_ _| _ _ _ | | | | _ _|_ _ |_| |_ _ _| _|_ | | _| |_ | | | |_ _| | _ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _ _|_| | _|_ | _| _ _ _| | | |_| |_ | | | |_ _ _|_ | _ _|_ |_ _ | |_| | |_|_ _ | _| _ _| | | _| |_ _ | _|_ _|_ | | _| |_ _ _| | _ _ _|_ _ _| | _ _ _|_ | _|_|_ | | | _ _| _ | _| | | | _| _ _ _ _ _|_ _ _ |_ | |_ | | |_ _| _| _ _|_ _ _| _ _ |_ | _| _|_|_ | | | _ _|_ _ _| | | _ |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ | _ _|_ | | |_ _ |_ _ _| _|_ _ _ _ _| |_ _| _ _ _|_ | | | _ |_ _ _ _| | | _|_| _| | |_ _ _ _ | |_ |_ _ _ | |_ _| | |_ _| | |_ _| _|_|_ _ _| | |_| _ _ _ _|_ _ _|_ | |_ |_ _ | _ _| | | | | _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _|_ | _ _ _ _ |_ |_ _ |_ _ | _ _| | |_ | _ _ _ _|_ |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_ _| _| |_ |_ |_ _ _ _ _| |_ _|_ _ _| | _|_ | | _| |_ | _ | | _| |_ | _| | | |_| _ _ _ _|_ |_ _| | |_ _ _| | | | |_ _| |_ _ _| _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _|_ _ _ _ _ | | _| _|_ |_ _ | | | _| | _| | | | | | _| _| _|_ |_| | _ _| | _| _| _| | _ _ | _| _| _ _| |_ _| | _ _| |_ _| _ _| | _| _| | | _|_ _ _ _ | |_ _| | | | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| | |_| _ | | |_ |_ _ | _ _ _|_ _| _ _ |_ _ | _ _| |_ | | |_ _ |_ | | |_ |_| | | | | _|_ _ _ _ |_ _|_ _ | | _ _|_ _ | _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _ _|_ _|_ _|_ _ | |_| |_ _| | | _ _ _ _ _ |_ _| | _ _| | _ _ _ _| | _| | _ _| | | |_ | | _ | +|_ | | |_ |_ _ | _ _| _ _| |_ _ | _ _| _| _ |_ |_ _| _ _ _|_ | _ _|_ | | |_ _ | | |_ | |_ | |_ _ | |_ | | | | | | _| _ _| |_ | | _| | _| |_ _ _ _ _| |_ _ | |_|_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_ |_ _| _ _| | | |_ _ | _| |_ _| |_ _ _| _ |_ _|_| _ _ _| _| |_ _| _|_ _ _ _ _| |_ |_| _| | | |_ _|_ | | | |_ _ _ | | |_ _| _ _ | | |_ _ _|_ |_ _ | _|_| _|_ | | _| |_|_ | _ _|_ _| _| _ _|_ _ _|_ _ _| | |_ | _| |_ |_ _| | |_ _ _| | |_ |_ _ | _ _| _ | _|_| | _ _|_ _ _ _ _| |_ _| _| _| | _| | |_| |_ _ _| _ _ | |_ _| _| | _| |_ | _ _| | _| | _|_ |_ _ _|_ |_ _ _ _ _| |_ _| _ _ |_|_ | | | | |_ | _| | |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ |_ _| | _ _| |_ _| _ _| _ |_ | | | |_ | |_ | _ _ _| |_ |_ _ |_| _ _| | |_ _ |_ _| | |_ _ _ | |_ | |_ _ | | | |_|_ _ _ _| | | |_ _|_ | _ _ _ _ _ _ _|_ _| _ _ _ _ | |_ _ | | _ _|_| |_|_ | |_ _ _ _| |_ _| _|_|_ | | | _ _| | | | | | | |_ _ _| |_ _| | | | | |_ _ |_ _| _ _ _ _| |_ _ _| |_ |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _|_ |_ _ |_ | |_ _ _ | _| _ _ _| |_ |_ |_ | | | |_ _ _| | | | |_ _|_ _ _ _ _| |_ | | _|_ _ _ _ | | | |_|_ _ | |_ _ _ _ _ _|_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| |_|_ _ _ | |_ _|_ _|_ _ _ _| _ _| _ _ | | | _| | | _| | |_| | | | _| |_ _|_ | |_ _| | _ _| |_ _ _| _|_ | | _ _|_| _| | | _ _| | | |_ _ _ _| _ _| | | | _ |_ _ _| _ _ |_ _ | _ _| | _| |_ | | _|_|_ | | | _ _| | _ | | | |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_| _ _ _| _| | |_| |_ | | _| |_ _| | _|_ _|_ _|_ _ _ _| |_ _| |_ _ | |_ _ |_ _ _ | |_ _| | _ _ _| |_ _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| | _ _| _| | _ _ _|_ _| _ _|_ _ _ _| _ _| | | | _ |_ |_ |_| _| | |_| _| | |_ | | | |_ _| | |_ _| | +| _| |_|_ | | _ _|_| |_ _ _|_ | | | | _| _| _ _|_ | |_ _ | |_ _| | _ _| |_ _| _ _| |_ |_ _| _| | | _| | |_ | |_|_ |_ |_ _ _| | | |_ _ | |_ | _ | | | _| |_ _ _ _ |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | | _ _| _ | |_| _ | |_| _|_ | | _ _ _| |_ | | |_ _ | | | | _ _ _| _|_ _ | |_ |_ |_ _ _| |_ _|_ _ _ _ _| | |_ _ _ _ |_ _|_ _ |_ _ |_ _ _| _ _ |_ _ _ _| |_ | | |_ |_ _ | _ _| _ _ _| _| |_ _ _ | | _|_ | |_|_ | |_ | | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _| | _ _| |_ | _ _ _ _ _ _ _ |_| | _| _|_ _| |_ |_ | _ _| | _| |_ _ | | _ _ | | _|_ | _|_ | |_ _ _ | _ _ _| _ _ _ | | _ _ _ _ |_ _ _|_| |_ | _| | | | _| | | | _|_|_ | | | _ _|_ _ _ | | | | |_ _ _ |_ _ _ _| _ _| _| _ _ _|_ _| | | _|_ |_|_ | _| _ |_ |_ _ |_ | | | | |_ |_ _ |_ |_ _ _ _| |_| _ _| |_ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ | | _| |_ _ | _|_ | | |_ _ |_ _ | _ | | |_ _ _ _ _| |_ _| | |_ _| |_| | | | | _| _ _| | _ _| | _| | _|_ _ _| | _ _| | _| _| _ _|_ _ _| |_ _ | _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_|_ | | _ _|_| |_ _ |_ _ _|_ _| | | | |_ |_| _ |_ |_ |_ |_ _| |_ _ | | _|_ |_ | _ _ | | _ _|_ _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ _|_ |_ | _ _ | | | |_ _ | | _ _ |_ _|_ _ | _ _ _ _ | | _ _| |_|_ _| | | _|_ _| |_ | |_| | | | |_ _ _ _ _| _| | |_ | | _ _ _| |_ _| | _ _ _| | |_ | | |_ _| | _ | | |_ _| _|_ _| | _ _ _| _| | |_| |_ | | | _|_ _ _|_ _ _ _ _| |_ _| _ | |_| _| | | |_|_ _ _ | | |_ | _ _|_ | | |_ |_ _ | _ |_ _|_ | | _| |_ _ | _| _|_ _ _ _ _ | | _| _|_ | _| _ _| | | |_ | | _|_ _| | _ | _ _ _|_ _| |_ | _|_|_ | | | _ _| _ _ | | | _|_| | _ _| | _|_ |_ _ _ _ _ _| _ _ |_ _ | _ _| | | |_ |_ _ _| _| _| _| | |_| _| _| | _| | |_ _ _ _| | _ _| | +|_ |_ | _ _|_ | | |_ _ | _ _| | |_| | | _| |_ _ _ _ _| |_ _| | | | _|_ _ _ _| _ _| _ | | _ | _|_ | _|_|_ _ _| _ | _|_ _ _ _ _|_|_ _ | |_ | | | | |_ | | | _ _ _| |_ | _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _| | | |_ _| |_ |_ _| |_ _ _ _ _| |_ _ | | _|_| |_ _| | _| |_| _ _ _| _ _| |_ _|_ _ | |_ _ _| | _ _ |_ |_| | _ _ |_ |_ |_ _ | | _ _ _| | | |_| _ _| | _| |_|_ | | _ _|_| |_| _ _ _| | _ | _| | _| | |_ | | |_ |_| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_| |_ | | _|_ | _ _ |_ | |_ _| _ |_ |_ | | | |_ _ _| | | |_| |_ |_ _| |_ _ |_ _| _ | _| _ _| | |_ |_| |_ _ _| | _| _ |_ |_|_ |_ _| | | |_ _| |_ _|_ _ _ _ _| |_ _| _ |_| | _| | | |_ _ _ | _| _ _ _| | |_|_ |_| _ _ _ |_ _|_| | | _ |_| _| _ _|_ |_ _ _|_ _ _|_| |_ _ _ | |_ _ _| _ _ |_ _ | _ _| | _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | | | _ _| |_ _| _ _| | _| | _|_ _|_ _| _ _ _| |_ _|_ _ _ _ _| |_| _ _| | | | |_ | | _ _|_| _ _ |_|_ | _ _| | | _ _| | _ | _ _ | | _ _|_ | _|_|_ | | | _ _| | | |_| | |_ | _ _|_ | | |_ _ | _ |_ _|_ _| | | |_ _| _| _ _|_ | _ _| _ _ _| _|_|_ _ |_| _ _| | |_| | | _ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _ _|_ _|_ _ |_ |_ _|_ _ |_|_ _ _ |_ _ | _ _ _| _ _ |_ _| | _ _| | _ _ _| _| _ |_ | |_ |_ _ _|_ _| _ _ |_ _ _| | _| |_ _ | _|_ _ | |_ _ | _| |_ | | | | _ _| |_ _| |_ _|_ _ |_ _ _ _ |_ _ | _ |_ _|_ | | _| |_|_ | _ | _ _ _ _ | _ _ _| | | _|_ _| |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _ _| | |_ |_ _ | |_ _ _ _ _ | |_ _|_ _|_ _ _ _| _ _| _ _| _ _| _|_ _ _ _|_ _ _ _ |_ |_|_ _ | | _ _|_ _ |_ _ _ _ _| |_ _| | | | | |_ | | _ |_ _ _ | |_ | _|_ _ | _ _ _| | | |_| |_ | | |_ |_ |_ | | _ _| | |_ | _| |_ | |_ | | _| | _| | | | +| |_ |_ _| | _ _| |_ _| _ _| | _| _| _| | |_ _ | | | _| _|_|_ _|_ _ _ _| | |_ _| |_| | |_ _|_ _ |_|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ |_| _| | | | |_ _| | _| _ |_ | | | _ _| | | _| | | | _ _| _| | | | |_ _ _ _ | _|_ _|_ _ |_ _ _ _ _ _| |_| _ | _| | |_|_ | _| | | _|_ _|_ _ _ _ | _|_ _ _ _ _ _ _ _ _ _|_ |_ _|_ | | _|_ | | | | _ _|_ | |_ _ | |_|_ _ | _|_|_ _|_ | |_ | | | |_ | _ _|_ | | |_ |_ _ | |_ | | |_ |_| _| _| _| | |_ |_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ | | _| |_ _ |_| | | | _| | | | |_ _| _| _ _|_ | | |_| | |_ _ _ _ _| | |_ _ _| | | | |_ | |_ |_ _ |_ | |_| _| | _ _| | | _| _| | _ |_| _| _ _|_ | _| _ _| |_ _ _| | _ _ _ _ |_ | | | |_ _ _| |_ |_ _|_ | | |_ _|_ _ |_ _ _ | _|_ | _ _| | | | | | _| |_ _ _ _ _| _ _ _ _ | _| | _ _| | _ _ _| | | |_| |_ | |_ | | | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ | | | | |_ _ _ _| _ _| _ _| | _|_ _| _ |_ | | |_ _ _ _| | _ _ | _ |_ |_ | _|_| _| | | |_| _ _ _| _| | |_| |_ | | |_ | _|_ |_ _| |_| | |_ _| _ _|_ _ _ _ _| |_ _| _|_ _| |_ | | | |_ _| | _ _| |_ _| _ _|_ _|_ | | | _|_|_ | | _| |_ _ _ _ _|_ | | _ _ _| _ _ |_ _ | _ _| |_ _ _| _|_ _ |_ _| | _ _| |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _ _ _ _ _ _ _|_ _ _ |_ |_ _ | | _| |_ _| _ _ _| | | |_| |_ | | _ _ |_| _| _ _|_ _|_ _ | _ _ _|_ | | |_ _| |_ |_ _| | _ _ |_ _ _| |_ _|_ _ _| | _| | _|_ _ _ _ | | |_ _ | _|_ _| |_ |_ _| | |_ |_ _ | _ _| _| _ | | |_ | _ _| _| _ |_ |_| _| _ _ _ | _| _|_ _ _ _| _ _| _| _|_ _| _ | |_|_ | | _ _|_| |_ _ |_ _|_ _ | _ _ _ _ | | _ _| | | _ _ _| _ _ _ _ | | |_ | | _| | _ _ |_ _ _| _ _ | | |_ _| |_ _ _| |_ |_ _ |_ _| | | |_ _ _ _ |_ _ | |_|_ _|_ | | _| |_ _ _ |_ _ |_ _| | |_ _ _| |_ | |_ | | |_| _| |_ |_ _| |_| +| _|_ |_ |_ _ _ _| _ _| | |_ _ _ _ _| _|_ |_| | | |_|_ _|_ |_ _ _ | |_|_ _ _ |_ _|_ _ |_ _ _ _| _ _ |_ _| |_ _|_ _ | | | |_ _| |_ _ _ _| _|_ | | |_ _ _ _|_| _| _ _ |_ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ | | _|_ _|_ _ |_ _ | | _ _ _ _|_ |_ | | | _|_ | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| _| |_ _| | |_ _ _ _ _| | _ _|_ _ _ | |_ _ | | | | _| |_ _ |_ _| | _ _| |_ _| _ _| | |_| _| |_ |_ | |_ _| _| _| | _| |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | | | | |_ |_ _ | _ _| | |_ |_ _| |_ | _| |_ _ _ _ _| _| _|_ _| _ _ | | | _ _ _|_ _ _ _|_ _ _ _ _|_ | |_ _ _| _| | | | _| |_ _ _| |_ | | _| |_ _ _ _ _| |_ _ | |_ _ _| _|_ _| | |_ _ _ _| _| |_| _ |_ |_| _ _ _ _|_|_ _|_ _ _ |_ _ | _| | _ | | _| |_ _| _| |_ _ _ _| | |_ _ _ _| | _| | |_ _ | _| |_ _|_ | | _| |_ _| _| |_ _| _ _ | _|_|_ | | | _ _| _ _ | | | | | _ _ | | | | | |_ _ _| | |_ _ _| | _ _ _| |_ | | |_ | _ _| _ _| _| _ _|_ | |_ _ |_ _| _|_|_ |_ _ | | |_ _|_ | | _| |_ _ |_ _ |_ | _| _ _|_ _ _| _ _ _ _ | | | | | _ _ _ _| |_ _ _ | |_ _ _ _| _ _| _ | |_ _| |_ _ _ _ _| | |_ | | _|_ _| | | _ _ _| | | |_| |_ | | _| |_ _ |_ _ |_ | _ _|_ | _|_|_ | | | _ _|_ _ |_ | | _| _ | _ _ _ _ | |_ _ _ _| | | | _|_ _ _|_ _ | _|_|_ _|_ | | _| |_ _ | | _| |_ _ _ _ _| _ _ |_ _ | _ _|_ _| | |_ |_ | | _|_ _ _|_ |_| _ _ _ _ _ _|_ _ _|_ _ _ _| _| |_ _ _| | | _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| | | |_ | |_ |_ _| _| _ _|_ |_ | | |_ _|_ |_|_ _ | | | |_ _|_ _ _ |_ _| |_ | _ _|_ | | |_ _ | _ _ _ _ _ _| _ _ |_ _| | _ _| | | | | _ _ _| | | |_|_ | |_ _| | | _|_ | | | | _ _| _ _|_ _|_ | _| _ |_ |_ | |_ | _| _| _| _ _| _| | | | _ | | |_ |_ _ | _ _ |_ _| _| |_ _ _ _ _ | | |_ _ _ _| | _ _|_ _ _ _ _|_ | +|_ | _| | _ | | |_ _| _ | | | _| _| _| |_ _ _ _ | | |_ _|_ _ | | _ | |_ _ | _ _| | _| | _|_ _ | |_ _| | | |_ _ |_|_ | _ _ _| _ _| |_ _ _ _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_|_ _ |_| |_ _ _ | | |_ _ _| |_ | |_ |_ _ _| | | | _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ _ _| _| |_ _ _ _ _ | | _|_ _ | _ _|_ _ _ _ _|_ | |_| |_ |_ _ | _ _ |_ _ _ _| _ _| _| _|_ _ _ _| | | _|_ _ _ _ _|_ _|_ _ _|_ | _| | | |_ _|_ | | _ _ _ _ | | |_|_ | | |_|_ | | _ _|_| |_ _ _|_ | _| | |_ _ _ _ |_ _ _| | _| _ _ _| |_ | _ _ _ _ | |_ _| _ _| |_ _ _| _ _| | |_ _ _ _| _| | | | |_ | _| _|_ _ |_|_ _ _ _ _| |_| | |_ _ | | _| _| _| _ _|_ | |_ _ _ _ | |_ _ _| _ _| |_ _| | | | | | |_ _ | |_ | | _ _|_ _|_ _ |_| | |_ _ _|_ _ _| |_ | _ _| | |_ |_ _ | _|_ _ _| | |_ _ _ _ _| |_ _| _ _| | _|_| | | | |_ _| |_ _|_| |_ |_ |_ _|_ _ |_ _ |_ _ _ _| |_ _ _ _| |_| _ _| | | |_ _ _ _ _|_ _ |_ _ | | _ _ _ _| | _|_ _ | | |_ |_ _ | _ _| |_ _| |_ _| _ _ _| _ _| |_| |_ _ |_|_ _| | | _| _ |_ |_ |_ _ _ | | | |_ _| |_ _|_| | | _ | _|_ |_|_ _|_ _|_ _ _ _| |_ _ | _|_|_ _|_ | | _| |_|_ |_ _ | _ |_ |_| | | | |_ _ _ _ _| |_ _| _ _ _ _|_ | | |_ |_ _| |_ _ | | _| |_ _ | | _ |_ _ _| _ _ _ _| | _ _ _| | |_ |_ _ | |_ _ _ _ |_ _ _ |_ _ |_ _| | _ _ _ |_ _| _| _ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _ _ _| | | _ _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | | | |_ | _| |_ _ _ _ _| _|_ _|_ _ _ _ _| | _|_ _| |_ _|_ _ _ _ _ _ _ _ _ _ _| _| | _ _| |_ _| _ _|_ |_ | _ _ _| | | |_| |_ | | | |_|_ _ |_ _| |_ _|_ _ | | |_ _|_ _ |_ _| |_| | | _ _| _ _ _ _| _| _| _ _|_ |_ _| _| | _ _ _| _| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | | | +| _| | _| | _| | |_ _|_ _ |_ _| | _|_ _| _| | |_ _ | _| | | | | _ _ |_ _| | | |_ _ _ _| | | | _ _ _ _| |_ _ | | _|_ | _|_|_ | | | _ |_ _ | | _ |_ |_ | _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| _| |_ _| |_ _ _| |_ _| |_| _| _ _|_ _ _| |_ _| _| _|_ |_ _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ | | _ _|_| |_ _ |_ | | |_ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _| |_ _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_ _| | _ _|_ | | |_ _ | _ _|_ _ _| |_ | | _ _|_ _ | _|_ _| _| _ |_ |_| |_ _ | | _| |_ _ _|_ _ _| | _ _| | | |_ _ _| |_ _| | |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ _| _ _| |_ _ | _| |_ _ _ _ _| | _ _| | _| |_ _ | _| _ _| | | _| _| |_| |_ _ | _| _|_|_ _| _ _ | |_ _ | |_ | _ _ _ _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ |_|_ | _| _ _ _| _ _| _ _ _| |_| |_ _| _| _ |_ |_ |_| |_ |_ _ |_ | _| _ _|_| _ _ |_ _ | _ _| |_ _ _ _ _ _ _ _ | |_ |_ _|_ _ | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _ _ | | | _ _| _ _| | | _ | |_ _| _| _ _|_ | _ _ |_ _| |_ _|_ _ |_ _ _ _| | | |_ |_| _| _| | | |_ _ _| _ _| | _ | | | |_ |_ _ | _ _ |_ |_ | | _| |_ |_ | _ _ _ _ _ _| _ | _ _ _| |_ | |_ _| | |_ _ _|_ | | |_ |_| _ _ _| _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | _ | _| |_ _| _|_ _ | _ _ |_ _ _| _ _| _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _|_ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | | _ _| | |_ _ |_ |_ _ _ _ _ _ | | |_ _| _|_ | _ _ | _ _ _ _ | |_ _ |_ _ _ _| _ _| _ _| | |_ _ | |_|_ _|_ | | _| |_|_ _ _| | _ | _| _| |_| |_ | | |_ _ |_ _| | | |_ _ | _ _| _| |_ _ _ _ _| | | _|_| _ |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ | +| | _| | _|_| _|_ | _ |_ _ | |_| _ _ _|_ _|_ _ |_|_ _ _|_| |_ _| |_ | _|_|_ | _| _ _| |_ _| | | _ _| | | | _ |_ _ _ _ _| |_ _| _| _| | _| _ _|_ | |_ _ _ _| | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| _| _|_ _ | | _ _ _| | _ _| _ _| | _ _ _| _|_ _ |_ |_ _ |_ _ | |_ _|_ _ |_ _ | _|_|_ | | | _ _|_ | _| | | _ |_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ | | |_ _ |_ _ |_ _|_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | _ _ | _| | |_ _ |_ _ _ _ |_ _ | |_ _| | _ _| |_ _| _ _| | _ _ | _| _|_|_ |_| |_ _ _| | _| _| _ _|_ | _ _| | |_ _ |_ _ _| _ _ |_|_ | _ _| | |_ _ _ _ _|_ _ _| |_| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | _| _ _ _ | | |_ _ _ _| _ _| | _|_ _ _| | | |_ | | _|_ |_ _|_ _| _ _|_| _| | _ _| | _| |_ _ |_|_ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ _| |_ _ _ _| _ | | _ _| _ |_ |_ _ | | _| _ _|_ |_ _ _|_ _ _| _ _| | _| | | _ _ _|_ | | |_| |_ | | | | _ | _ _|_ _ | | _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | |_| | _| |_ _| | _| | _ _| | | | | |_ | _| |_ _ _ _ _| | _|_ _ |_ _ _ | |_ _ |_ _ | | |_ |_ _ _| _| |_ _|_ |_ _ _ | | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _| | | | _ _|_ _ | | _ _| |_ | | | |_ _| _ |_ |_ _|_ | | _|_ _ _ _ | | | |_ |_ _ | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ | | |_ _ _ |_|_ |_ _ _ _| _| _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_| | | | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _|_ _| _|_ _| _ |_ | |_ _ _|_| _ _ | _ _| | |_ _ | |_| |_ _| _ _|_ _ | | _| |_ _ |_ _ | | | |_ _ |_ _|_ _| | |_ _ _ | | |_ |_ _ | _ _ _ _| | | | |_| _| _| | |_ _|_ _ |_ | | _|_ _|_ _ |_ _ | | |_ _ | | | | |_ _ _ _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | +| _ _ _|_ _ _ _|_ | | | _ _ _| | |_ _ | |_ _ | |_ _ | | _ _ _| _ _|_ _|_ _ _ _ _|_ |_ | | | |_ _| |_| _ _| |_ _| |_ |_ _ _ _ _ |_ _ | _|_ _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | |_ _ _| _| | |_ _ _| |_ _ |_ | _|_ _ | |_ |_ | | _|_ _ |_|_ |_ _ |_ _ | |_ _ _ _ _| |_ _| | |_ _ _| | | | |_ | _| | _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _| |_ _| _ _| _|_ | _ |_ _ | | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _|_ | |_|_ _ _ _|_ | |_ | _ _ _ _ _| |_ _ _ |_ _ _ _| _ _| | | | _|_ _| _| |_ _ _|_ _ _ | |_ _| _| |_ _ _ _ _|_ | _| _ | | _ _ _| | | |_| |_ | |_ |_ _ | | _ _|_| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| |_| | _| |_ |_ _ | _| | | | | _ |_| | |_|_ | | | | |_ _ | _| | _ _ _| |_ _| | |_ _ _| | | _ _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | |_ _ _ _ |_ _| | | _| _| _ _|_ | _| _| |_ _ _ _ _| | _ | | _ |_| _| | |_ _ | _ _|_ _|_ | | _| |_ _| | | _|_ _ | _|_ _|_ | |_ _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | _|_ | _|_ _| |_ | | | | |_ _ | |_ _ _ _| |_ | _ _ _ | _| _ _| | _| | | | | _ _ _| _|_ |_ _ _| _ |_ _| _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ _| _ _ |_|_ | _ _| | _| |_ _| _| _ _|_ | | | | | _ _ | | | | |_ |_ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| | _| |_| |_ _ _ | _ _ _| _ _ |_ _ | _ _| | _ |_ | _|_|_ | | | _ _| | | |_| | |_ _ _ _|_| | _| _| | | |_ _|_ | |_ _ _ | | | |_ _ | _ _ _ _| _| _| _|_|_ _ _ _ _ _ _| |_ _ | _| _| | | _| | |_ |_ _| | |_ _ _|_ | | |_ _| |_ _|_ _ |_ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_| |_ |_ _ _| |_ _ _ _ | _| | |_ | _ _|_ _ |_ |_ | _| | | |_ _|_ _| _ _ |_ _ |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| |_ _| | |_ | _|_ | _|_|_ | | | _ _| _ _ | _| +| | _ _ _ _ | |_ _ _|_ | _ _| |_ _| | |_ |_ _ _ | | |_|_ _ _| | _| | | | _ _| | | |_ _|_ _| |_ | |_ |_ _ | _ _ |_ | _ _|_ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | _ _|_ | |_ _ _| |_ | _| |_ _ |_ _| |_ | | | |_ _|_ _ |_ _ |_ _ _ _ _| |_ _ |_ _ _ |_ _| | |_| _ _ _| |_ | _|_ _ _| | |_ _|_ | | _|_|_ | | | _ _| _ |_| | | |_ |_ _ _ _| _ _| _| | | | | _| |_| | |_| | _|_|_ | | | _ _|_ _ _ | | | _ _ | |_ _ _ _ | |_ _| _|_ _ _ _| _ _| _ _| | | _| | |_ _| | | | _ _ _|_ _| | _ _ _ _ _ | |_| | |_ _| _ _ _ | | | | |_ _|_ _ | _|_|_ _|_ | | _| |_ _ |_ |_ | | _ _ _| | | _ _ _| _| | _ _| _ _| | _ _ _ _ _|_ _ _| | | _| _| _|_ _ _|_ _| |_ _| _|_ _ | | | | |_ _ _|_| |_ | _| |_ _ | _|_| |_ _|_ _ _ _|_| | |_ _ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ |_ _|_ _ |_ _ | _ _| | | _| |_ _ _ _ _|_ | |_ _| _| |_ _| _| | |_ |_| _| _| | _| | | _| | |_ |_ _ | _|_ _ _| | | _ _| | | _ _ | | | _| | |_ _ _ _| _ _| _| | | |_| | |_ _ |_ _| | | |_ _|_ | _|_ |_ _|_ | | _| | | |_ _|_ | | _ _| | | |_|_ _|_ _ | | | | | _ _ _| |_ | _| | |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _ _|_ | | |_| |_ | | |_ | | _| |_ _ _ _ _| | | | | |_|_ |_ _|_| |_ | | | _ _| |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| _|_ | | _ _| _ _| | _ _ _|_ | | |_| |_ | |_ |_ |_|_ _ _ _ _| |_ _| _|_ _| |_ | | | _| | _| | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _| | _|_ _| _| _ | _ _ _ _ | |_ _| | | | |_ _| | |_ | | _| _| _ _ _ | | | |_ _ |_ | _ |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _|_ _ _| |_ _ _| _| | _|_| _| _|_ _ _| | _| _| |_| |_ | _ _ _|_ | | |_ _| _| | | |_ _|_ | | _ _ _ | | |_ _ _ | | _| |_ _ |_|_ _ _ _ _| |_ _| | _| | | | | +| |_ _ | | _| |_ _ | _ _|_ | _| | | _|_ |_ | _ _| |_ _ | | _|_| _ _| | |_ _| |_ | | |_| _ _ _ _|_ |_ _ | | _ _|_| |_ _ _|_ _ _ | | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _ _ | | _ _ _ _| _ _|_|_ _ _ _ _| _ | | _ _|_ _ _ _ _ |_ _| | | _ | | _ _| | _| |_ | | _ _| | _| _ |_ |_|_ | _ _ _| _ _| _| |_ _ _ _ _| |_ _| _ _| | | | | |_ |_ | _| | |_|_ | | | |_| | |_ |_ _ _|_ _ _| |_ _ _ _ _| |_ _|_ _ | | | | | | _|_ | |_ _| _| |_ _ | | | _ |_ | | _ _ _| | |_ |_ _|_ _ |_ _ _|_ _ | _ _ _|_| _ _ _ |_ _| _| |_ |_ _ | _| _| | |_ _ _ | _| | | _ | | |_ |_ _ | _ _| _| |_ _ | _| | |_ | | _ | _|_ _ |_ | _|_ _ _ _| | _ _|_ _| _| |_| _ _ _ | | |_ _ |_ _| | |_ _| | _ _ _ _|_ |_| |_ _ _| | | | |_ _ _ _ | _ | | _ |_ _|_| _| | | |_ _|_ | | _ |_ | | |_ _ _|_ | |_ _ |_ _| _ | | |_ _ _ | _ _ _|_ | |_ _ _|_ | | _| |_ _| | |_ | | |_ |_ _| _|_|_ _|_ | |_|_ | | _ _|_| |_ _ _| | |_|_ | | |_| | | _| | |_ _|_ | |_ _ | _ | | |_ _ | | | | _|_ _|_ |_ _ _ _ _|_|_ _ | _| _| _| _ _ _| |_ _ _| |_ _|_ _ _ _ _| |_ | _|_ _|_ _ _ _ _| | _|_| | |_ _ | | _|_ _| |_ _|_ _ _| _|_ _ |_ _ _ _| _ _| | _| |_ _ | _ |_ _|_ | | _| |_|_ |_ _| |_ _ _ _ | |_ _ _|_ _ | | | _ |_ |_ _|_|_ _ _| _| _| | | |_ _|_ | _|_ _ _ | | |_|_ _ _ _| _ _|_ _| |_ | |_ _ | |_ _|_ | | _| |_ _ | | _ | | _ | | | | _ _ _ _| |_ | _| | | |_ | _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | | | | _ _ _| |_ _ _| _ _ |_ _| | | _|_ _|_| |_| | |_|_ | | |_ | | _ _ | _| | | |_ _ | _| | | _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ |_ _ _ _| | _ _ _ _| _ |_ |_| _ _| _ _|_| _|_ _|_ _ _ _| |_ _ | | |_ _| | |_ _ _| |_ _|_ _ _ _ _|_ _ _| |_| |_ _|_ _ |_ _ _| | | _|_ |_ _ _| _ |_ _ | | _| | | | | +|_ _| | |_ _ _|_ | |_| | _|_ | |_ _ _ _ _| _|_ _ _ | |_ |_| |_ _ |_ _| _|_ _ |_ | | | |_ |_ _ _| |_ | | _|_ | | |_ _ |_ | |_ _ | _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _| _ _ |_ _ | _ _| | | | | | |_ | _|_ | |_ _ _|_ _|_ | _| _| _ _|_ | _| _ _ |_ _ _ _ _| _ _ _ _ |_ _ | _| _ _|_| |_ _ _ _| |_ |_ _|_ _ |_ _| _| _| | | _ _ | _ | | |_ _ _ | |_ | |_ _ _| |_| _ _|_ |_|_ |_ _ _| _| | | |_ _ _|_ | | |_ _ _ _|_ _ _ | | |_ _ _ _ _| | | _ _ _|_ |_ | _| _| _| |_| | | | |_ _ | | | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| |_ | _ _ _| | |_ | |_ | |_ _| | |_ _ |_ _ |_ | _ _|_ _ _| |_ | | _| _|_ _|_ _| | | | |_| _| |_ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ | |_ _ _| | _ _ |_| |_ | | |_ _| _ _ | |_ _ _ _ _| _|_ |_ _ _ _ _|_ _ _ _|_ _ _ _ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ _| |_ _ _ _| _ _|_ _ _ _ _ _|_ _|_ _| |_ _|_ _ |_ _|_| | | _ | | _ _ _ _ | |_ _ _| _| _| _ _| | | _| _ _| _ _ | | |_ |_ _ _ _| | _|_ _ _ _| _ | _|_|_ | _ _ _ _ _ _|_ _ _ | |_ _ _ | | |_ _ _ _ _| | |_| | | |_ |_ _ | _ _ _ |_ _ |_ | | _| _ _ _|_| _| _ _|_ | | _ | |_ _ _| |_ _|_ _ _ _ _|_ _ _| | | |_ _|_ _ |_ _ | | _ _ _ _|_ |_| | | _| | | |_ _ _| | |_ |_ _ | |_ _| |_ _ _|_ _|_ _| | |_ _| _ |_ |_| | _ _|_ _ _| | _|_ _| _| |_ _ _ _ _|_ | |_ _ _| _ _ _| | | | | |_ _ | | | _ _ _|_ | | |_ _|_ _ _ | | _| |_ _ _ _|_ _ | | |_ _ _| |_ _ _| |_ |_| | _| _| _ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _| _| _ _| _ _ _ _| _| _ _| | | |_ |_ _| | | _ _ _| _ _ _ _ _ _| | |_ _| |_ _|_ _ _| |_ _ _ _ _ _ _ _ _|_ | _ | _|_ _ | _| | | |_ _ |_ _ _| |_ _ _ | |_ | _|_|_ | +| | | _| _ _ | | | _|_ |_ _ _ _| |_ | _| _ | | | |_ | |_ |_ _ | | | _ _|_ _|_ _| | _| _| _ _|_ _ _| | | _ _| |_ _| _ _| |_ _|_| | | | _| |_ _ _| _|_|_ | | | _ _| _ |_ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| | | |_| |_ | | | | | |_ | | _ _ _| | _ _ _ _ _| | _| |_ _ _ _ _| |_ _ | | |_ _| _ _| |_ _ _|_ | | | | _| _ |_ |_ _| | _ _ _ _ |_ _ |_ _ _| | | |_ | |_| |_ _ _|_ _| | | | |_ | _| _ |_ |_ | | | _ | | _ _ | |_ _| _ _ | | |_ _ _ _| _ |_ |_ _|_ | | _ _| _|_|_ _ _ _ | |_ _|_ | |_ _ _ _ _|_ _ _| | |_ _ _| _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | _|_ _ | _ _ _|_ _ | | | _ _ _| _ _ _ _|_ _ _|_ _ | _| _ _|_ _ _| | |_ _|_ _ _ | | |_ _| |_|_ |_ |_ |_ |_ | _ | | | _ _ | | | | | | _ _|_ _ | |_ _ |_ _| | | _ _|_ | |_ _ _| _| _|_ _ |_ _| _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ _ _ | |_ _ | _| |_ _| | | | |_ _ | | _| | | _ _ _| _ |_ _ _| | |_ |_ _ _ _ | |_ _| | |_ _ _ _| |_| _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _|_ |_ | | |_ _|_ _ |_ _ _| _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ _ | |_| | _| |_| | | |_ _ _ _ _| | | | | |_|_ _ _ _ | | _ _ _ _ _ _ _|_ _|_ _ _ _ |_ _ | _|_ _ _| |_ | | | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _ _ | _ _|_ |_| _| _ _|_ | |_ _| _ _ _ _|_ | _ |_ _ _ _ | |_|_ _ _ _| | | _ _| |_ _|_ _| | | |_|_ _ | |_ _| | | _ |_ _| | |_ _ _ _ | |_ _ _|_ _ | _| _ |_ |_| | _| | | | |_ | | _| | | |_ _|_ | | |_ | _ | | |_ _ | |_ _ _| _ _ |_ _ | _ _| | _ _|_ _ _| _| | |_ _ | _|_ _ | | | |_| _|_ _ | | | |_ _ _ _ _ _| | _ _ _ _ | |_ _ _| | |_ _ _| | _|_ _ _|_ | _ _| |_ | | _ _| |_ _ _| | +| _| | |_ |_ |_ | | | |_| _ _ _ _|_ |_ _ _ _| | |_ _ _|_ _| |_ _ _ _|_ | |_ _ _ _ _ _ _ _| | _ _| | _ _ _ | _|_ _ _ _| _ _| _ |_| _ _ _| | | | | _|_ _ _ |_ _ _ _ _| |_ _|_ _| |_ _ _ | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | | | |_ _|_ | | _| |_ _ |_ | | |_ _ _ | |_ _ | | _ _| |_ | _| _|_ _ |_|_ |_ _ _ _| |_ | _ _ | | | |_| _| _ _|_ | | _| |_ _ _| _ _| | _ _| _|_ | |_ _ _| |_ _|_ _| | | |_ _ |_| _| _ _|_ | |_| |_ _| |_ | | | | | _ _| | _| |_ | _ _ _| |_ | | | _| |_|_ _ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| _ |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ _| |_| _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| | _ _ _ | |_ _ _ _ _ |_ |_ _| | | _ _| _ _|_ |_ | |_ |_ _|_ _|_ | |_ _|_ _ _| | |_ _ _ _|_ _ _| | | _ _|_ | _| _ _ _| _|_ _ _ _ _| _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ | _| _|_ _ _ _| _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _|_ | | _ _| _ _| |_|_ _| | |_ _ _| |_ _ | |_ |_ _ |_ _|_ _|_ _ _ _ | | | _ _| | _ _ _ _|_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _ _ |_ _ _ |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | _|_ _ _|_ _ _| |_ _ _ _ _ _ _|_ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ | |_ _| _| _ _|_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ | _| _| |_ _ _ _ _|_ _ _|_ _ | _ |_| | | _ _ | _| |_ _ |_ _ |_ | |_ | | |_ _| _|_|_ _ _ | |_| |_ _ _| _|_ _ _|_ _ _ _|_ |_ _ |_ _|_ _ | | _| | _| _ _|_ | | |_ | _|_ | | |_ _ _| |_ _|_ _ _ _ _|_| | _|_ | |_ _|_ _ |_ _|_| _ _ _| | | |_| |_ | | | _ _ _ _ _| |_ _ _| | |_ _ | |_ _| |_ |_ _ _ |_ _| |_ _| |_ _ | _ | |_ _ | | _| |_ _ | _| | | _ _|_| _ _ |_ _ | _ _| | |_|_ _| _ _| _|_ _ _| +|_ | |_ _ | | | | | |_ _|_ _ _ _ _| |_ | _ _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| _| | | _|_ _ | _ | | |_ _| |_ _ | | |_ | | | _ _ |_ _ _ |_ _ _ | | | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | _| | _|_ _ | | |_ |_ _ | _|_ |_ |_ _ _ _| |_| |_| | |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_| |_| | |_ _| | _| |_ _ _ _ _| | |_ |_ _ | | _ _| |_ _ _ _| |_| _ _ _ _|_ |_ | _|_|_ | _| _| |_ _ _ _ _| |_ _ _ _| | _| | | |_ | |_ _ _ | |_ _ | | _| |_ _|_ |_ | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | |_ _ _| _ _ |_ _ | _ _| | | | _| _ _ _ _| _| |_ | _ _ _|_ _ _ _ | _|_ _ _| _ _ | | _ _| | |_ | | | _| _ _ _|_ _ | |_ _| | _| | _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ | |_ _ | _| | |_ _ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| |_ _ _ _|_| |_ |_ | |_ _ _ | _| _ _ | | _| | _| |_ |_ |_| | | | _|_ _| | _ _|_ _ _| |_ |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_| |_ _ | _| _|_ | |_ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_| | | | | _ _ _|_ | _ _| | _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | _ _| | _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_|_ _|_ | |_ _ _ _ | |_ _ _ _ _| | _| _| | |_ _ |_ _ _| | | | | _|_ | | |_ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | _ _ |_ _| |_ | _| |_ _ _ _ _| | | _| | | | |_ _ _ _| | _ _ | _ _ _| | _ _|_ |_ |_ _ _ |_ _ | _| |_ _|_ | | _| |_|_ _ |_ _ _| _| _|_ _ _ _| | _ _|_ _ | _ _ _ _|_ _ _ _ | |_ | |_ _ _| | |_ _ _| _| | _ _ _|_| | _ _ _| | | |_| |_ | | |_| _ _ _| _ _ _ _ _| +| _|_ _ | | | |_ _|_ | _ _ | | _ _|_ _ _| | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| |_| | | | _|_ _|_ _ |_|_ _| | |_ _ _| |_ _| |_ _ |_ |_ | | _ _ _|_| _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | _ _ _ _|_ |_ | | |_| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | _ _| |_ _ _ | |_ _ _ | | |_ | |_ _ | _|_ | _| _ _ _ _|_ |_ _ _| |_ | |_|_ _ _ _ _|_ | |_ _ |_ _ | |_ _ | _ _ _| | _|_|_ _|_|_ _ _ _ _|_ _| _|_|_ | _ _ _ _ _ _| _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ _ | _| | | |_ _|_ | _ _ _| | | |_ _ |_ _ _ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _ _|_| |_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ _| | _ _ _| _| | |_| |_ | |_ _| _ _|_ _ |_ _ _|_ _| | | |_ _ _ | _ _ _|_ _ _ _ _ |_| |_ | |_ |_| | |_ _|_ _ | _ _| |_ _|_ _ _| |_ _ _ | _ | | _|_|_ | | | _ _|_ _ | | | | |_ _ _ _ _| _ _| | |_ |_ _|_ _ |_ _ |_ | | _|_|_ | | | _ _|_ _ _|_| |_| | |_ _ _ | |_ |_ _ _|_| | | _| | _ | _| | | _|_ _ _ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _ | _| _ _|_ _ _| | |_ | _| |_ | _|_|_ | | | _ _|_ |_ _| | |_ |_ | _| | | _ _ _|_ _ _ _|_ _ _| _| |_ _ _ _| _ _| _| |_ | _| |_ _|_ _| _ _ |_|_ | _ _| | | _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _|_ | _|_ _| | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _| |_| _ _| | |_ |_ | _ _| | | | | | _|_ | |_ |_ _ | _| _ |_| |_|_ _ | _ | |_ _ |_ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | _ _ _ _| | _ _ | _ | |_ |_ |_ _| | _ _ |_ _| _| |_| _ _|_ _ _|_ _ _ | _|_ |_ | _| | | | | | | |_ |_ _ | _|_ |_ _ _ _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| _|_ | _ _|_ | _ _ | |_| _ | |_ _ | |_|_ _|_ | | _| |_ _ _ _ |_ _ _ _|_ _ | +|_ _ _| _|_ _|_ | _ _ _| | |_| | | | _ _ _| _| | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_| _| _| |_|_ _| |_ _ _ _ |_ _ | | _ _| _ |_ |_ | | | | | | | _|_ _| _ |_| _| _ _|_ |_ |_ _ | | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| |_ |_ _ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _|_ _ | | | _ _|_ | | | | | _| _| _ _| | | _| |_ |_ _ _| |_ | | _ _|_ _ _| | _ _ | _ | |_ | |_ _ | | _ _| |_ | _| |_ _ _| | _ _ _ _ | |_ _ | _ _|_| _ _ |_ _ | _ _| | | | _| | _|_|_ | | | _ _| | _ _ _| | | | _ _ |_|_ _ _| |_ _|_ _ _ _ _| | _|_ _ _| |_ _|_ _ |_|_ _ |_ _| _ | _|_|_ | | | _ _| _ | _ | | _|_ | | |_ _ | | | | | | _|_|_ | | | _ _| _ |_ | | |_ |_ _ |_|_ _ | | |_ _|_ | | _| |_ _ | _ _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_|_ _| | | |_ _| | _|_ |_| _ _ _ _|_ _ | _ _| | |_ _ |_ | | | | |_ _ _ _ _| |_ _|_ _ _ _| |_| | | | _ _ | | | _ _|_ |_ _ _ |_ _ | |_ |_ |_ _ _ _ _| |_ _| |_ _|_ _ | | _|_ _ _ _ _ _| _ _| | _ _| |_ _ _| |_| _| | _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _| | | _ | | | | |_ _ |_|_ _ _ _ _| |_ _| _ _ _| | _ | | _ _| |_ _| | |_| | _ _ _ _ | |_ _ |_ | | |_ | _| | |_ _ _ _ _| |_ _|_ | _ _ _| _| | |_| |_ | | |_ _ _| | | _ _| | | _|_|_ | | | _ _|_ _ |_ | | | |_ _| |_ _ |_ _| | | _| | | |_ _|_ | | | |_ _ _ | | |_ _ | | _| | _| _| _| _|_ _ _ _| | |_ _| | |_ _ |_| | | _ _|_| _| |_ | | _ |_| | | |_ | _| |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _| |_ | |_| | _|_ |_|_ |_ | | _ _|_ _ | | | |_ _ | _ _ _ _ | |_ _|_ _ _ _ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _ _ _| | _ | | _| |_ _|_ _| | |_| _| | |_ |_ _ | _ _ |_| _ | | | +| _ _ _| _ _ |_ _ | _ _| |_ _ _| _| |_ _ | _| |_ _ _ _ _ _ | _|_|_ | | | _ _| _ _ _ _| | |_ |_ | | _| |_ | |_ _ _ _ | _ | |_ _ _| _| _ _|_ | | |_ | | | |_ | _ _ _| | | _| |_ _ _ _ _| | | _ _| |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _ _|_ _ | _ _ _| | | _ _ _| _| | _ _| _ _| | | _ | _ _ _| | _| _| _| | | _ _|_| _| _| _ _| | | |_ _| _| _ _|_ _ _|_| | | _ _ | | | _|_ |_ _| _| | | |_ _| | _ |_ _ _| _| |_ _ _|_ _ | | _| |_ _ | | |_| _ _ _|_ | | |_| |_ | | _| | _| |_ _ _ _ _| |_ _| |_ | _ _ | | _| | | _ _| | _ _ | _| _|_ _ _ |_ _ _ |_ _ | | | | _ _| |_ _ _ _ _| |_ _| | | _|_| | | | _ _| |_ _| _ _| _| | | _|_ _ _ _ _| |_ _| _ _ |_ _ _| | | | | |_ _ _| | _|_ _ | | |_ |_ _ | _|_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | | _ _ | _| _ _ _| _ _ |_|_ | _ _| |_ | |_ |_ _| |_ _ _ | | _ | | | | _ _ _| |_ _| | _| _|_ _ _ _ _ _| | |_ _ _| | _| |_ _| _ _ _ | |_| |_ _ _ _ _| |_ | _ _ |_ _ | _ _| | _ _ _ _ _| _| _|_ _| | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_| | _| | |_ | |_ _ _ _| _ _ _| _ _ _ _ | _| _|_ _| |_ _ _ _ _ _| | _|_ _ | | _| |_ _ | _ _|_|_ | |_|_ |_ _|_ _ |_ _ |_ _ _ | |_ _ | | |_ _|_ | | _| |_ _ |_ | | |_ _|_ _ _ _ _| |_ _| _ _ _| _| | | | | |_ | | _|_ _ |_ |_ _ _| |_ _|_ _ _ _ _|_| |_ _ _ | |_ _|_ _ |_|_ _ _ | |_ _| _| _| _ _ _ | | |_ |_ _ _ _| _ _ _|_|_ _ _ _ _ _ | | | |_ | | _| _| _|_ |_| | _ _| |_ _ | | _|_|_ | | | _ _| _ |_ _| | | |_ _| | _ _| | _|_ _ _| |_ _ _|_ _ |_ | |_|_ _ _ _ _|_ _|_ _|_ _ _|_ _ | | _| |_ _ | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_| |_ |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| | _ _ _| | | | | | _ _ _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| |_ _|_ | +| | _ _ _|_ | | |_| |_ | | _|_ |_ _ | |_ | | | | | | _|_ _ _ _ _| |_ _| _| |_ | | | _| _| | |_ _|_ _|_ _ _| _| | | |_ _ | _| |_ _ _ _ _| | | | |_ |_ |_|_ _ _ | | |_ _| _ |_ _| | _| | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | | _ _ _ | _| _ |_ _ _ _| _ _| | _ _| |_ _ | |_ _ | _| | |_ | | _ | _|_ _ |_ | _| _| |_ _| | |_ _ _| _| | | | | _ _ _| _ _|_ | | |_| |_ | _ _| | | _ _ _|_ | | |_ _| | |_ _ _ _ _| _| | |_ _|_ | _|_ |_| _ _ _| _| | | _ _| | |_ _ _|_ | | |_ |_ _ | _ |_ _|_ | | _| |_ _ | |_ _| _ _ _ _| |_ |_| |_ _ _| |_ |_| |_ _| | |_ _|_ | |_ _ _ _ _ _ _| | _| | |_ _ _| | | |_ _| _ _| |_ _ _ _ | _ _| | | | _ _|_| |_| _ _ _| _ _| _|_ | | _| _ _ | _ _ | _ _ _| | _ _ _| |_ _ _| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _|_ _| |_| |_| _| _ _ _| | | |_| |_ | | |_ _| | _ _ |_ _|_ _| |_ _| |_ _| |_| _ |_ |_ | |_ _ _| _ _ | |_ _|_ | _ _| | _| | _|_ |_ | |_ | |_ _| _ |_ |_ |_ | | |_| |_ | | | | _ _ |_ | | _ | | _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_ _| _| | | |_ | _ _ _ _| _ _ _ _| | _| _ _| _ |_ |_ | _ _ |_ _ _ _ _| | |_ _ _| | |_ _ _ _ _ _| | _ |_ | |_ _ | _ |_ _ _| | | |_ _ | | |_ |_ _ | |_ _ |_ _|_ _ _ _ _ _ | _ _ _|_ _ | _ _|_| |_ _ | |_ _|_ _ |_ |_| _| | _ _ |_ _ | | _ | | | _ |_ _ | | _|_ _ _ _ |_ |_ _| | | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _ _ _|_ _|_ _ |_ _ |_ _ _|_| |_ |_| | |_ _ _ _ _| |_ _|_ |_ _ | | | | | |_| |_ | | | _ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| | |_ _ _| | | | | | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _|_ |_ _ _ _ | _|_|_ | | | _ _| _ | | | | _|_ _ |_ _ | | _| _|_ |_| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _| +| |_ _ | _ _|_ _|_ | | _| |_|_ _|_ | |_ _ _ | |_| |_ _| |_ | _ | | _ _| | _|_ |_|_ _| |_| _|_ _ _ | | | |_ |_ _ _| | | _|_ |_ _ _ _ _| | | | | | | | | _ _| |_| |_ | |_ _ _ _| |_ _| |_ |_|_ _| _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| | | |_ _|_ |_ |_ _ _ | | |_|_ _ | _| _| | | | _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| | | | _ _ _| _ _| |_|_ _ |_ _| | _| _| _ | |_ | |_ _| | |_ _ |_ _| _ _ _| _ _| _ _ _| _|_ _ | | | _|_ |_ _ | _| | | | | | | _| _| | |_ _|_ _| | |_| | | |_ |_ _ | |_ _ _| | |_| _ _| | |_ _| _ |_ |_ _ | _|_ _|_ _ _ |_ _ _ _ | |_ _ | _| |_ | _ _|_ _ | | | |_ _ _ _ |_ _| | | | | _| _ |_ |_ _ _ | | |_ _ _| |_| _| |_ _| _ _|_ | _ |_| _ |_ |_ _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _ | | _|_|_ | | | _ _| _ | _| |_| | _ _ _ _|_ |_ | | |_ _ | | |_ _|_ | | _| |_ _ | _|_| | | |_ _| _ _ _ |_ | _| _| _ _|_ | |_ | _ _| | _| |_ _ | |_ | _| | _|_ _| |_ |_ _| | |_ |_| _| _ _|_ |_ _ |_ _|_ | | _| |_ _| | |_ _ _| _| | |_| _| |_ _| _ _ | _|_|_ | | | _ _| | _ _ | |_ |_ _ |_ |_ _| _|_ _| _ _ |_ _ | _ _| | |_ _| _| _ _|_ |_|_ |_ _ _ | _ _| _ _ | | | | | _ | | |_ | |_ _ _| | |_ |_| _ _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ _ | _ _ _| _ _ _ |_ _| _ |_ |_ _ _ _ _ _|_ | | | _|_ _ _ |_ _ _ _ _ _|_ _|_ | | | _| _| _ _| |_ _ _| _ _ |_ _ | _ _| | _| | | | |_ _| _ | | _| |_ _ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| _ _|_ |_ _ |_ |_|_ | _ _|_| |_| _|_ | | _| |_ _ | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | |_ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ |_ _ _ _ | | _ |_ _ _ _ _| |_ _| _ _ _|_ _| | | |_ _ | |_ _ |_ |_ |_ _ _| | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ | +|_ _| | | _ _| | |_ |_ _ | _ _ | | | | |_ _ _ _ _|_ |_ _| _|_ | |_ _ _| | _| _| _ |_ |_ | | _|_| |_ _| _ _|_ _ | _ _| |_ | | | | _ _ _| | _ _| | | | | _ _|_ _| _| | _| | _ _| _|_ _ _ _ | _ _| | | | | | | | _ _| _| | | | |_ _| _ _ _ _|_ _|_ _ _ _ _|_ _ _|_ |_ |_ _|_ _ |_ _| |_ _ |_ _|_ | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | |_|_ _ | _ _ _|_ _ | | _ _|_ _| _ _ _|_ _|_ _ _| |_| _ _| | |_ |_ _ |_ _ _ |_ |_ _ | _ _| _| |_| |_ |_ _| | |_ _ _| _| | | _|_ _ _| | | | _ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| _|_ | |_ | | | _| _| _ _|_ | | |_ _ |_ _ |_| _ | _| |_ _ |_| | |_ _ |_ |_ | _| |_ _|_ _ |_ _ | _ _| | | | |_| _| _ _|_ | | |_ _|_ _ |_ _| |_ _ _| | | | _ _ _|_ |_| _| _ _|_ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ _| | | |_ _ _ _ _| |_ _|_ _ _| | _|_ | | _|_ _ _| |_ | |_ | _| | | |_| | | |_ |_ _ | |_ _ _| | | | _ _| |_ _ _| _| | _| |_ _ _ _ _| | | | |_ _ _| | | | | | |_| | | | _ _|_ _ _| _ _|_ _ | _| |_ _ _ _ _| | _| _| | |_ |_ _ | _|_ | |_ _| |_|_ |_ _| | | | |_ _ _ _ _| |_ _|_ _ | |_ | | | | _| _|_ | | _ _| _ _ _| | | |_| |_ | | |_ | _| |_ _ _ _ _| |_|_ |_ | | | _ _ |_ _| | | |_ _| |_| |_| | |_ _| | | _ _|_ |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ _| | | _ _ _|_ _ |_ | _| _ _|_ | _| _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | |_ | |_ _| _ | _ _ _| _| | |_| |_ | | | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ | _ _|_ _ _| _| _|_ _ _ |_| _ |_ |_ | | |_ |_ _ | |_ _ |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _ _ | | | | | |_ _ | _| | | |_ _|_ |_ _ _ _ _| | |_ _ |_ _| _ _| |_ | | _ _ |_ | | | _ _|_| |_ | | _ _| | | | |_ _ _ _ _| | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | | |_ _ _| +| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | | | | | | _ _| | | |_ |_ |_ _| _| _| _ _|_ | _| |_ _ _ |_ _ _| _ _ |_|_ | _ _| | _|_ _|_ _ _| | | | | _| |_ _| |_ _ _ _| _|_ _ |_| |_| | _|_ _ _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | _| | _ _ | _ _| _ _ _ |_ | | | |_ _ |_ _ | | _ _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ _| |_| _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ | |_ _ | |_ | |_ |_|_ _| | | | | _| |_ |_ |_|_ | | _|_|_ _ _ _ _| | |_ _ | | |_| |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | | _| | | | _| |_ _ _ _ _| _| |_| | | |_ _ _| | |_ _ _| | _ _|_ _ _ _ | | _|_ _ _ | _ |_ _ |_ _| _ _|_| | | _| |_ _ _ _ _| | |_ _ _ | |_ _ | |_ _ _|_ |_|_ _ | | | _| |_ _ _ _ _| | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| | | _ _| |_ _ | | |_ _ _ | _| _ _ _| |_ | _| _ _|_ _ _| | _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| | |_ _| |_ _ | | _| | |_ _ _ _ _|_| |_| |_| | _ |_| _|_ _| | _|_| _| | _ _ _| _ _ _ | | |_ _ _ _ _| _ _| _ | |_|_ | | _ _|_| |_ _| _ |_ _ |_ | _ _|_|_ | |_ _ _ _| _ _ | _ _| | _|_ _| |_ _| _ |_ _ _ _|_ _ | | | |_ _|_ | | _| |_ _| | | |_ | _ _ |_ _ |_|_ |_ _| _ _ _| |_ _ _| |_ _ | |_| _| _| _ | _|_ |_ _ _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _ _|_|_ _ |_ _ _|_ | |_ _ _ _ _|_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | | |_ |_|_ _ | | |_ _|_ | | _| |_ _| | _|_|_ | | | _ _|_ _ |_ | |_ _| | |_ _ _| | | _ | | _ _|_ _ _| _| | _ _ _ _| | _ _ | _ _| _| _ _|_ | | |_|_ | | _ _|_| |_ _ _ _| | | | _|_|_ | | | _ _| _ | _| |_| |_ _| |_ _|_| |_ | |_ _ _| |_ _|_ _ _ _ _| _ _ |_|_ |_ _|_ _ |_|_ | | _| |_ | | |_| | _ _| _| | | |_| |_| _ |_ |_ | | _ |_ _ _| _ _ _ _ _| | | _| | | |_ _|_ |_| |_ _ | | | |_|_ | |_ |_ | +| |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| |_ _| |_ | |_| | |_ | | _|_| | | _| |_ _ _ _ _|_ | | | _ _| _ _ _| | | |_| |_ | |_ _ _ | _ | |_ _|_ _|_ _ | |_ | _ _ _| |_ _| _| | _|_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ _ _|_ _|_ | |_ _ _ _|_ _ |_ _ _ _| |_|_ _| _ _| | _ _| _| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _ |_| | _|_|_ _| _ | _|_ _|_ _ _ | |_ _ _ _ | |_ _ _ _ _ _ _ _ | | |_ _ | | | |_ |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | |_ | |_ | |_ _| _ _ _ _ _ _|_ _ |_ _|_ _ _ _|_ _ _ _ _|_ | _ | _ |_| | _ _ | _|_ | |_ | | _ _ _ _ _| | |_ |_ _ | |_ _ | |_ _ _| | | |_ _ _ _ _| _ |_| | | |_| |_ _ _ | | | | _| | | |_ _|_ | | | _| | | |_ _ | |_| |_ | | |_ _|_ _| | | | |_ |_| _ |_ |_ _| | _ _ _ _| _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _ | |_| |_ _| |_ | |_ |_| _ | _| _| _|_ _| | | _| | _| _ _ _| _|_ _|_ _ _ _| _| |_ | _| _ _ _|_ | | | |_ | _ _|_ | | |_ _ | | |_ _ | _ _|_| | |_|_ _ | _ _| _ _| | | _ _| _ |_ |_| _|_ _| _ _ _ _| | _| _ _| | |_ |_ _ | _ _|_ |_ _| | |_ _ _ _ |_ |_ _| | _| _ |_ |_ _|_ |_ _ _| _| _| | _|_ | _ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| |_ _ _ _ _ _ | |_ _| | | _ _ _ _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ |_| | | |_ _ _| | | |_ _ | | |_ |_ _ | |_ _ _ _ _ _| |_ _| _ _ _|_ | | | _| _| | _ _| | |_ | |_| | | _ _ | | _|_ | _ _ _|_ | | |_ _| _| |_ _ _ _ _| |_ | _ _|_ | | |_ _ |_ _ | |_ |_ _ _ _ _| |_ _|_ _| | _|_ | | _|_ _| _| _ |_ |_| |_ _ | | | _ _ | _ _| | | | _ | _ | |_ _ | |_|_ _ _| _ _| |_ | |_ _ _ _| _| _| _| _| _ _|_ | | |_ |_| _ _ _| | | _|_|_ _ _| |_ _|_ _ _ _ _| _|_ _ _|_|_ _|_ _ |_ _| _| _| +| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ | |_ | |_|_ _|_ | |_ | _ _|_ | |_ _ _| _ _ _| | |_ _ |_ _ |_ _| |_ _|_ | | _| |_ _ _| | | |_ _ _ _ _ |_ |_ _| |_ _ | _|_ _ | | _| |_ _| | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| _ _ | _ _|_ _ _ _ | |_ _ |_ | | _ | | _ _| | | | _| _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _|_| |_ _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _|_ _ | _ _| | | |_ |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ _| _|_ _| | _ _| _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _| _|_|_ | |_ |_|_ | | _| _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | | | | | _|_ _| _| |_ _| _ _| |_ _| |_ _ | |_ | |_ _ _|_ _| | _| _| _ _| _ _ _ _| |_ |_ | | |_ |_ | _ _| | | | | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_|_ | | _| |_|_ | _|_ _| | | |_ _| _| _ _|_ |_| _| | _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| |_ _| _ _| |_ | _| _| | |_ | | |_ _ _| | _ |_ _ | | _| | | |_ _ _ |_ _ _ _ _ |_| | |_| _| _| |_ _ | _ _| _|_ |_ _| | _ _| |_ _| _ _|_ _ _| |_ | _ _|_ _|_ _ | | | _ _| | | | | _| _| _ _|_ | | _ _ _| _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | _|_ _| _ _ |_ _ | _ _| | | _| _ _|_ | _ _| | | |_ | |_ _| |_ _ | | _| | | |_ _|_ |_| | | | | |_|_ _ _ _ _| _ _ |_ _| | _ _| | |_ _|_ | _ _| | |_ _ _|_ | _|_|_ | | | _ _| |_ | | | _|_ | _| |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | | _| |_ | _ _ _| |_ | | _| | |_ _ _| | _|_ _ _| _ _ _| _|_ _ |_ _ _ | _ _ _|_ _ | |_ _ | _ _ _| |_ _| | _ _| |_ _| _ _| _| |_ |_ | _ _ |_ |_ | | _ _ _| |_ _ | | _| _ _|_ | |_ _ |_ _| | |_ _ _ _| |_ _ _| | | |_ _ _| | | _ | | _ _| | _|_ _| _|_ _| | _| |_ _ _ _ _|_ _ |_ |_ _ | _| | | |_ _ _ _ | | _ _ | _| _ _ _ |_| _ | _ |_ _ |_ |_ | +| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _ _|_ _ _ _ _| _ _ _| |_ _ _ _|_ |_| | _ _| |_ | |_ _ |_ _ | | | _|_ _| | _ _| | | |_ |_ _ | _ _| |_ _ _ | |_|_ _ _| _ | _| | _ _ |_ _| _| | _| | | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| _| | _| | | | | _ _| _| |_ _ |_ | _ _| _ _|_ | | | |_ _|_ | | |_ _|_ | |_ | _|_|_ | | | _ _| _ | _| | | _|_ | | |_ _ | | _|_ _| _|_|_ | | | _ _| _ _ | | _| | _ _|_| |_|_ | | _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ _|_ | _| _| | | |_ _|_ |_| | |_ _ | | |_ _ |_ _ _|_ _|_ _ _|_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _| | _| _| _|_ | | | _ _| | _ _ _| _| | _| | _ _| | | _| |_ | | | _ _ _ _|_ |_ |_ _|_ _| _| | _| |_| | _ _ | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | | |_ |_ _ | _|_ | _|_|_ | | _| |_ _ _ _ _| _| | |_ _ _| |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ _| _ _| | _|_ _ _ _| _| _|_ |_ _| |_ _ _| _ _| |_ _ |_| | |_ _ _|_ _ _ |_ _ _| | _ _| |_ _ _| _| | |_ _| |_ _ _ _| _ _ | |_ _ _ _| _ _| _ | | _ _| _|_ _ | | _ |_ |_| | | |_|_ |_| | | _| |_ _ _ _ _| |_ _ | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ _ _| | | |_| |_ | | _| |_ _ _ _ _| _ _ _| |_| |_ | |_ | | _ _| _| |_ _ _| |_ _|_ _ _ _ _| _| |_ _| | |_ _|_ _ |_ _| _ _ _| | | |_| |_ | | | _ _ _|_ _ _ _| |_ _ | _| |_ _ _ _ _| |_ _| | | | _| | | | _ _ _|_| _| _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ _|_ | _| _ |_ |_| | _ _|_ _ _ _ _ _|_ _ _ _ _| | | | |_ _ |_ |_| _ | | |_ | | |_ _ | _ _ |_ _ _ _| _ _| _ _ _ _ _|_ |_| | _ _|_ _ _|_ |_| |_| _ |_ |_| _| _| |_ _ _ _ _| |_ _ |_ _ _| | |_ _ _ _ | |_ _ _ | | | | | _ _| | | | _| | | |_ _| | | | _ _ _| | |_ _ _ _ _ _| _| |_ _| | |_ _ _|_ | |_ _ |_|_ _| | |_ _ _ _ _ _| | _| | | | _ _| | |_ | | +|_ | | | |_ _|_ | _ _ |_ | | |_ _ | _ _ |_ _ | _ _| | _ _ | |_ _ _| _ _ _| _| _ _| _| | | |_| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _|_ _ | | | | | _|_ _ _|_ |_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | |_ | | | | | | |_ _|_ _ |_ _ _| | | |_| |_| | _| | | | _ _ |_ _|_ _ _ _ _| | |_ _ _ _ _| |_ _|_ _ | | |_| | | | _ _| |_ _| _ _| | | |_ |_ _ _ _ _| |_ _| |_| |_| | | | | _|_ | | |_ _ | | | | _ _| _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _|_ _ _ | | | |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _ |_ _ _ _| _ |_ _ _ | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ | _ _| |_ | | _| | | |_ _| |_ | |_ _ _| _|_ |_| _| | |_ | | |_ _ | | | | |_ _ _| |_ | | _ _ _| _| _| |_ | | _| | | _|_ _|_ | |_ _ _ _ _ _ | | _ _| | _ _| | |_ | | _ _|_| |_|_ _ _ _ _ _| | |_ _ _| _ |_ _| _ _ _| | _| | | |_ _|_ | | | _| _| | |_ _ |_ | | |_ _ | | _ _ _| _ _ _ _ _ | | _ _ _ _ _ _ _|_ _ _|_ _ | _ _ |_ _ | _ _| |_ _ | | _ _ _|_ _ _ | | _ _ _ _ | |_ _ _ _|_ _ _ _ | | |_ _| _|_ | _| _ _|_ _ |_ _ _| _|_ _|_ _ |_ _ _| | |_ _| _| | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ | | |_ _|_ | | _| |_ _ _ _ |_ _ _ _ _ | _| _ _ _| _ _ _|_ _ _ _ _|_ _| | _ _ _ | | _ _ _ | |_ | _ |_ _ |_ _ | |_|_ _|_ | | _| |_ _| | _| | _ _| | |_ _ _ |_ _ _ _ _|_ _| | |_ _ _| |_ _ | _ | | | _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ | |_| _| _ _|_ | |_ _ _ _ _| _ _ |_ _ | _ _| | | | | _|_ |_ _ _| |_ _| _| _|_| | | _| | |_| |_ _| _| | |_ _| _ _ _ _| _| | _ _ _ _| | _| _| _ _|_ | | |_ _ | _| _|_ | |_ | _ _|_ | | _|_|_ _ _ | |_| | | |_ | | _| | | _|_ _| | _ _| | | |_ _| _| |_ |_ _ | |_ _ |_ |_ | | _|_ _ | | |_ _ |_ | _| |_ _ _ _ | |_ _ _| | | | | | _ _| _ _ _| +| | | |_ _|_ _ _ _ _| |_ _ _ _| |_ _|_ _ |_ _ _ | | |_| |_ | | _ | _ _ _| _ _ _| _| _| _ |_| _| |_ |_|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ | _ |_ _| | | |_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | |_ | | _|_ | _ | |_ _ _ _|_| | | | _| _ _|_ _| _ _|_ _| | | _ | _ _ _ | | | _ | | _ _ _| | _ _|_| |_| _ _ _| _ _| _|_ _|_ _ | _ _| _ _ _|_ | | _ _|_| |_ | _ _| |_ _| _ _|_| | | | _ _| | | | _| | | _|_|_ | | | _ _| | |_ | | | _ _| _ _| |_ _ |_ | | _ _ | | _ |_ _ _ _|_ _ _ | |_ _ |_ | _ _ _ _|_ | _ _| | _| _ |_ | _|_|_ | | | _ _| _ _ | | | | |_| |_ | | _| | | _| |_|_ _ | | _| | _ _ _| _| _| _| | _| |_ _|_ | |_ _| _| _ _|_ _ _| |_| _ _ _| | | _| _ _|_ | | _| | |_ _ _ _ | |_|_ | _ _|_ | _ _| | _ _|_ | | |_ _ | _ | _|_ | |_ |_| _| |_ _ |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | |_ _ _|_ |_ _|_ _ |_ _ |_ _|_ _ |_ _|_ _ |_ _| | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | |_| |_ | | | | |_ _ | | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ |_ _ |_ _ | | _ _|_| _ _ |_ _ | |_ | _| |_ _ | | |_ | |_ _ _|_ | |_ _| _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ _| | | |_| | | |_ |_ _ | _ _ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ |_ _| _| | |_ _| |_ _| | _| | |_ | | _ _| |_|_ | | | |_ |_ _ | |_ _| | _|_ _| _ _| |_ _ _ _ _ _|_ _ _ _| _| _ |_ |_ _ _| _| |_| |_ _| _ _ _ _ | _| | |_ _ _ _| _ _| _ _|_ _ _|_ _| | _| |_ _ _ _ _| |_ _| _ _ _| _| | |_| |_ | |_ _|_ |_| _ _| _ _ _ _ _ _| _| _| | | _|_ _ _|_ | _|_ |_ _|_ _ |_ _ |_| _ _| _|_ | | _ _ _| | _| |_ _ _ _ _| |_ | |_ _ _|_ _ |_ | |_ _ _ _ |_ _|_ _ _ _ _ _ | |_ | | |_ | | | | | | |_ | | | | _| |_| _ _| | | _| _|_ | | _|_ _ _ _|_ _ _ _ _ _|_| |_ _ _ _ |_ _|_ |_ | _| _| |_ _ | _|_|_ | |_ |_ _| _ | +| |_ | _ | _ _ | |_ _ |_ _|_ _ _ |_ _ | _|_ _|_ | | _| |_ _| |_| _ _ _| _ _ _| | | |_ |_| _ _ _| | |_| _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _ | | | | _|_|_ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _| |_ _| _ _|_ _ _ _ _|_ _ _ _ _| | |_ _| _ _ |_ _ | _ _| | | | | |_ _| _ _|_| |_ _| | | | | |_ _ | | _| _ |_ |_ |_ | | |_|_ | | _ _| | | _| |_ _ | _| |_| _ |_ |_| _ _ _| _ _| _ _|_| | | |_|_ | | _ _| |_ _ _ _ _| |_ _| _ | | |_ | | | |_ _|_ | | | |_ | | _|_ _| | |_|_ _ _|_ _ |_ | _ _|_ | | _| _ _| | _|_ _ _ _| | |_| _|_ _ _ _ _| |_ _|_ | _ |_ _| | | _|_ | | _| |_ _ | | |_ _ _ _ | | |_ | |_ _ |_ | | _| |_ | |_ | | _| | |_ | _ _| | | _ _ | |_ _ | _ _| | _ _| | | |_ | |_| | |_ _ | | _| |_ _ |_| | _ _| |_ | | _| | _ _| |_ _| _ _| |_ |_| _| _|_ |_ | |_ _ | _ _| | | | | | _ _ | _| _|_ _ _ | | _|_ _ |_ | _ |_ _ _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _|_ | | _| |_|_ |_ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ | | |_| _ _ _|_ | | |_ _| _| | _| _ _| | _| _| |_ | |_ _| _| | _| _| | | |_ _|_ | _ _ _ _ _ | | | | |_ _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _ _ _|_ | _| _ _|_ _ _|_ _ _ _ _ _ _|_ | |_|_ | | _ _|_| |_ _ _ _ |_ |_ _ _ _| |_ _| | |_ _ _| _| _| _ _|_ | _| _| | _| | | |_ _ _|_ |_ _| | | | | |_ _ |_ _ _| | |_ _ _ _ _ | |_ _ |_ _ | _ |_ _|_ | | _| |_ _ | | _|_ _ _ | | _ _ _| | | | | | |_ _ _ | |_ _ _ _|_ _ | |_ _ | | |_ |_ _ |_|_ _ _ | | |_ _ |_ _ _| _|_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _| | _| |_ | | |_ | | | |_| |_ | | _| _ _|_ _| _| |_ _ _|_| _ | _| _ _ _ _ | |_ _ | _ _| |_ | | |_ _ _| | | _ _| | |_ | _| | +| | | | | |_ _ _|_ _ _ |_ |_ _ | _ _ _| |_ _ | | | |_ |_ _ | _ _ _ | |_ _ | _|_ | |_ | | _ _ _|_| |_ |_ |_ _ _ _| _|_ _ |_ _ _ _| _ _| _ | _| | | | |_ _ _ _ _| | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _| | | |_| |_ | |_ _| |_ _ _| | _| | _|_|_ _ _| _|_ _| _| _ _|_ |_ _ |_ _|_ _ |_ _| |_ | _| | | |_ | | |_ _ _| _| _ _|_ | | | | | |_|_ | _|_ _|_ _ |_ _|_ _ _ _ _ |_ _ _ _ _ | | _| | |_ _ _| |_ | _| | | |_ | | |_ _ _ |_|_ _ _ _ | |_|_ | |_ _ | _|_| |_| _| _ |_ _| _ _ | | | |_ _ _| | | _ |_ |_ _| |_ _ _| |_ | | |_ |_ _ | _|_ |_ _ | _|_ | |_ _| | _|_| |_ | |_ | | |_| _|_ _| | |_ | |_ _| | _| _ _| | | | |_| _ _| | |_ |_ _| _| | |_ _|_ _ _|_ | | _| _ _ _| | | _| _|_ _ _ _| _ _| _|_ |_ _ _| _| _ _| |_ | |_|_ | _ _| | |_| |_ _|_ | |_ _ _ _ _ _ _| _| | |_| _ _| | _| |_ _ _ _ |_ _ _ _| | | _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | | |_ |_ _ | _ _| _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _| | |_ |_ _ | _ |_ _| | |_ |_ _ _| | _ _|_| _| _| _| | _ _ | _|_ |_ _ _| |_ _|_ _ _ _ _|_| _ _ _ |_ _| |_|_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | _ _|_ | | |_ _ | _ _| |_ | _ _ _| | _ _| | _ _ _ _| _| |_ _ _ _ _| _ _| |_ _ _| |_ _|_ _ _ _ _ _ _ _ _|_ _| | |_ _|_ _ |_|_ | | |_ _ _|_ | | _ | |_| _ _ _| | | |_ _ | | |_ |_ _ | _|_ | | | |_| |_ _ | | _| |_ _ _ _ _|_ _|_ _ | | | |_ _ _| |_| |_ |_ |_ _ |_ | |_| |_ | |_ _ _| | _ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| |_ |_ _| |_| _|_ _ | | |_ _ _ _| _ _ _| _|_ _ | | | |_ _| _ | | _| |_ _ | | | | _ _|_ _ _| | |_ _ _ _| | | | |_ _ _| |_ |_ _| _| | +| |_|_ _| |_ _ _ _ | |_ _| | _ _| | _| _ _| |_ | |_|_ | | _ _|_| |_ _ | _| | | | |_ |_ _|_ _ _ | _| | | _| |_ _ _ _ _ _ _ _ _ _ _ | | | | _| | _| | |_ _ _| _ |_ _| _|_ | |_ | _|_|_ | | | _ _| |_ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ | |_ _|_ | | _| |_ _ | | | _| | | | | |_ _ _ | |_ _ | _| |_ _ _ _ _|_ |_ |_ _ |_ _ | |_ |_ | |_|_ | | | |_ _ | _| |_ _ _ _ _| | |_ _|_ _|_ _ |_|_ _ | |_ |_ _ | | _ _|_ _ _ | |_ _|_ | _| _ |_ |_| | | _ _|_ |_ _|_ |_ _ |_ | | _| |_ _ | | _ _| | | _ _| _| | |_ _| |_ _| | _| | |_ | |_ _| |_ | |_ _ _|_ | |_| _ |_ |_| |_|_ | | _ _|_| |_ _ | | | | _ _| | _|_ _ _ _ | | |_ _ _ _| | _ _ _ _ _|_ _ _| |_| _ _| |_ |_ | _|_ _|_|_ | | |_ _ _| | _ _ _|_ _|_ _ _ _ | | | |_ | _ _ _| | | _ _ _ | | | |_ _ | | _ _ _| _| | |_ | |_| | _|_ | _|_ _ | | _|_ _ _ _ | |_ _| _|_ | | | _ |_ _ _| _ _ |_ _ | _ _| | | | | | _|_|_ | | | _ _| _ _ _ _| | |_ | | | |_|_ | | _ _|_| |_ _ _| | |_ _ | _|_|_ | | | _ _| | _ _| | |_ _| | _ _| | |_ _ _ _ _|_ _ _ |_ _| |_ _ _ _ | | _ _ _| _|_ _ | | _ | |_ _ |_ _| | | _ _ | | _ _| | _ |_ _ _|_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | _|_|_ | | | _ _|_ _ _ _ | | _ |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | _ _| |_ _| _ _| | _ _| |_ _ | | | | _| |_ _ _ | | |_ _ _ _ _| _| _ _|_ |_ | | _ _ | | _ _ _ _ | |_ _ _ | |_ _ | |_ _ | _| _|_| | | |_ _ | | | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | | | _| | |_ |_ _ | | _ | | |_ _| | | | | _| _ _| _ | | _|_ _|_ | _| _| _| |_ _ | |_ _ _|_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ | _| |_|_ _ _| _ |_ _| |_ _ _ _ |_ _ |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| | _ _ _| |_| | | _ _| |_ |_ _ | | |_ | | |_ _| +|_ _ _ | | _| |_ _ | | _ _ |_ _|_ | _|_| _|_ | _ _|_ | | |_ _ | | | _|_ _|_ _ _ | _ _ _| | _ _|_ _ _ _|_ _ _ | _ _ _ _ | |_|_ | |_| |_| |_ |_ _ _ _ _ |_ _ _ _| | _| |_ _|_ _ _ _ _| |_ _|_ _ | | _ _| | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| | _| | |_ |_ _ | _|_ | |_ _ _|_ |_ _ _ |_ _|_ _ | | |_ | _ _ _ _ _ _|_ | _ _ _| | |_| _|_ _ | | |_ _ _ _| | |_ _ _| | |_ _ _| _ |_ _ | _| |_ _ _ | | | | | |_ _ _ |_ _|_ _ | |_| _| _ _|_ | |_ _ _| |_ _ | _| |_ _| |_ _| |_ _ _| | | | _ _ | |_ _ |_ _| | _ _| | _ _|_ _| | | |_ _| | _ _| |_ _ | _| | |_| _| _ _|_ | | _ _|_ | | |_ _ | | | | |_ _| _ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ |_ | | _| | |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_|_ |_ _| | | _| | _| |_ | _ _|_ |_ _|_ _ |_ _|_ _ | _| _| | | | |_ |_| |_ _| |_ _ |_ _ | |_ | _ | _| |_ _ | |_ | | | |_ |_| _ _ _| _| | |_| |_ | | | |_ _| |_ _ _ _ _| |_ _| _| |_ | | | _| | |_ | _ _|_ | | |_ _ | |_ | | _|_ _ _ _ _| |_ _| _ _| |_ _ | | | _ _|_ | | | | _ _ _ _ | |_ _| _|_ _ _ _| | |_ _ | |_ _ _ _ _| |_ _| | |_ |_ _ | | |_ _| | |_ _| | |_| |_ _ _ _ | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _|_ _ _ |_ _ _ _ _| |_ _| _ | | _ | | | _|_ | | _ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _ _| _ _| _| |_| | _ _| _ _| | |_ | |_ _ _| |_ | | _ _ _ _ _| | _ _|_ | |_ _| | | |_ _ | | _| |_ _ | _|_| _ _| | | _ _ _| _| _ |_ _| |_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| |_ | _|_ _ _ _| _|_| _|_ _| | |_ _ _ _ _|_ _|_ |_ | |_ _| _|_ _| _ |_ _ _| _| _ _ _| |_| | _ _| |_| | _|_ _ | _|_|_ | | | _ _| _ _ _| | | | _ _|_ _|_ _ _|_ | _ _ _ _|_ | _| _ _|_ _| | _| _ _| _|_|_ | | | _ _| | |_| | |_ | _|_ |_ _ |_ _ _| | |_ _ _| |_ _ _ | | |_ |_ |_ _ | +| _ _|_ _| | |_|_ _ _| | | |_| |_| | _| | _ _ _| _| | _ _| |_ _| _ _| | |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ |_|_ |_|_ _ _ _ _ _ _| |_ |_ _| | | | _ _| | | _ _ _| | |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | | _| | |_ | |_|_ | | _ _|_| |_|_ | _ |_ _| | | _|_ |_ | _|_ _ _ |_ _ _ _ _|_ | _ _| |_ _ _ _| |_ _| _ | |_ | | |_ _ _| |_ _ |_ | | | _ _| |_ _ _| _ |_ _| |_ _ _ _| |_| _| _ |_ _| | _| |_ _ _ _ _|_ | | |_ _ | _| |_ _ | | _| |_ _|_| | |_| |_ |_ |_ | | _| | _| | | _ _ _| |_ _ _ _ _|_| _ _ _| _|_ | | | _| |_ _ _ _ _| |_ _| | _ _| |_ _| _ _| | _|_ _|_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_| |_| _| | | |_ |_| | _|_ _ _ _ |_ _ _ _| | | _| _| |_ _ _| | _ |_ | |_ |_ _ |_| | _| _| |_ _ _| _| |_ | | |_| _|_ |_ _ |_ _ |_ _|_ | | _| |_ _| _ _| _ _ | | _ _ _ _|_ |_|_ _| |_ |_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _ _ _ |_ _ _ _|_ _ | _ _|_| |_ |_ | | |_ |_ _ | | _| |_ _ | |_ _| _ | |_ _| | _| _ _| | _ _|_ _ | |_ _| _| _| |_ _ _ | |_ _ _| _ _ |_ _|_ | _| | | |_ _|_ |_| |_ _ |_ | | |_|_ |_ _ | |_ _ | | | _| | _|_ _| |_| _ _| |_ | _ _| |_ _ _|_|_ | | | _ _| |_ _ _| | |_ _| |_ _ | | |_ _ _ _ _| |_ _ _ _| |_ | |_ _ | | _| _| _| | | _|_ | _| | _ | |_ _ _| | |_ _ _|_ | |_ | _| _ _| | | _ _ _| |_ _| _ _| | | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_|_ _ _ _| |_| _| | | _ _ _| | | | _ _| _| | _ _|_ _ | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ | _ _ _ _ | |_ _ _ _| _ _| |_ | | _ _| _| | |_| |_ _ _ _| |_ _| _ _|_ _| | | | _|_ _ | | |_ _ _ | _| _ |_ |_ |_ |_ |_ _ _| | | +|_ _ _ | _|_ _ _ _ _ _|_ | | _| _ _|_ _| | |_ _ _| |_ | |_ _ _ _| _ _| _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _|_ | _ _ _| _ _ |_ _ | _ _| | |_ | |_ | _|_ |_ _ _ _| |_ | | |_ | _ _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ |_ _ _ |_ | _ _|_ | | |_ _ | _| | | _ _| | |_| |_ _ _ _| _|_ _ | _ | | _ _ | |_ | | | _ _ _ _|_ |_| _| |_ |_| _|_ _ | |_ _| | _| | | | _ | _ _ _| |_ | | _ _ _ _|_ |_ | | | | _ _| |_ _ | _ _ _ _| |_ _| _ _|_ |_| | | _ _|_ _ _ _ |_| | | _ _| | _| _ _|_ _|_ | | | |_|_ _ _ | |_ _ _ _ | _ _| _ |_ | _|_ | |_ _ _ _ _|_ _ _ |_ _ _ _| _ _| | |_| _ _| _ _| |_ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _|_ _ | _ _ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ |_ | |_ _ _|_ _ _ _ _| |_ _ _ _| _| | _ | _|_ _|_ _| _| _ _ _ _| | _|_ _ _ _ _ _|_ | |_ _ _| _| _ _ | | _| |_ | | |_ _| | | | | | |_ |_ _ | _ _ |_ _ |_ _| | _ _ _ _| _ |_ |_ | _|_ |_ _ _ _| _ _| | _|_ |_ |_ |_ _ _| _ _ _ |_ _| _ |_ |_ _ | |_ _| _| | |_ _ _| _| |_ | _| | | | _| | _|_ _ _ _| | _| |_ _ _ _ _|_ _ _|_ _ _ _| | | _| | _ _ |_ | | |_ _|_ _ _| |_ _|_ _ _ _ _| _| _ _| |_ _|_ _ |_|_ |_ _| | _ _|_ _| | |_ | |_| _ |_ |_ |_ _ _ _| |_| _ _| |_ _ _ _ _| |_ _| _|_ _ _ | | | _|_ | | | |_|_ _|_ _ |_ _ | | _ _ _ _|_ |_ _| | _ _|_ _| _| _|_ _| | | |_ _ |_|_ | | | | |_| _ _| _|_ | | | _|_ |_ | _|_|_ _ | _|_ _ | |_ | | _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ |_ _ _| _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ |_ _|_ _ | _ _ _| | | _| | _| _ _|_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_ |_ _ | | _| |_ _ |_| _ _| |_ |_| | |_ _ _ _ _ _|_|_ | |_ _ _| |_ | _| | _ _ _|_| |_ _ _| |_ _|_ _ | |_ _| _| _ _|_ | _ _| |_ | _ _|_ | +| _ | _| _ _ _ _ | |_ _| |_ _| _ _ |_ _ | _ _| | | |_ _ _ _ | | |_ _ |_| | | | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ | | | _ _ _|_ | | |_| |_ | | | _|_ |_ _| | |_ | | |_ _| |_ | | _| _| _ _|_ |_ _ |_ _ | | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ |_ |_ _ _ _|_ _| | _ _| |_ _| _ _|_ _ _| | |_ | | | _ _ _ _| _| | _| | |_ _ | |_ _ _ | | | |_ _ _| |_ | |_ _ _ _| _| _ _| | | | |_ | |_ _| | |_ | |_ _ _ _| _| |_|_ _ _| |_ | | | | |_ _ |_ | _| | |_ _ _ _| _ _| _| | _|_ _| _ _ _ |_ _| _| | |_ _ | |_ | | _ _ _ | | |_| |_ _ | _ _ _ _ |_ |_ _| |_ |_ _ _| _ | |_ | | _| _ _ | |_ _ _ | | |_ _| | _|_ |_ _ _ _ _| _ _ _| | | _|_|_ | | | _ _|_ _ _ _ | | _| | _ _|_| |_ _| | _| | _|_|_ | | | _ _|_ _ _ | | | | |_ _ _ _ _|_ _ | _ |_ _ _| | | _ _ _| |_ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _|_| _| | | | | | _|_ _| | | _| |_ _| | | |_|_ | | _ _|_| |_ _ |_ _ | |_ _ | _| _| _ _|_ | | |_ _|_ |_ _ | | |_|_ | | | | _ | | _ _ _|_ _|_ | _| _ _|_ | _|_ | | | _| | _| | | _| | _| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| |_ _| | | |_ _| | | _| | _ _ |_ | | | |_ |_ _ _ _ _| _ | |_ _ |_ _| | | | |_ _| _| _ _|_ | | _ _ |_ _ | _ _| | _ | _ _ _| |_ |_ _ _ _| |_ | _|_ |_ _ |_ |_ _ | | |_ _ _| |_ | _|_ | _ _ _| | |_ | |_ _ _ _|_ _ |_ _|_| _|_ _ _ _ _| | |_|_ _| | | | | | | | | _ _| |_| _ | | | _| | | | _| | | |_ _|_ | |_ _ _ | | | |_ _| _ _ _ _| |_ _ |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | _ _ _ | |_| _ |_| |_|_ | _|_ |_ | | | | _| _ _| |_|_ _ _| _ | _| _ |_ |_ _| | |_ _ _| | | _| _ _| | |_ _ _| | _ _ _| _ _ |_ _ | _ _| | _|_ _| _|_| _| _ |_ |_| | |_ | _| | _| |_ _ _ _ _| _ _ _| _| | | | | +| | |_ _| _ | | _| |_ _ | _ _ _| | | |_| |_ | | |_ _ _ _ | |_ _|_ _ |_ _ _| _| | |_ | _|_|_ | | | _ _|_ _ _|_| | | | _| _|_ _| | |_ _ | _|_ _|_ | | _| |_ _ _ |_ _| _| |_ _ _|_ _| | |_ | | |_| _| |_ _ _ _ _|_ |_ | _|_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ |_ _ | _ _ _ |_ _ _ _| _ _| | | | | _| | | | | _ _ _| _|_| | _| | | |_| |_ _ | |_ _| _| _ _|_ _ _| | _ _ _| | | _|_ | |_ |_ _ |_ | | _ _| | | |_ _ | _| _ _|_ _ _| |_ |_ _ _ _| _| _ _| |_ | _| | |_|_ |_ | _ _ _| _ |_ | _| _|_ |_ _| | _ _| | _ _| |_ _ _ _| _ _|_| _ _ |_ _ | _ _| | _|_ _|_ |_ _| _| | |_| _| _|_ |_ _ _ _ |_ _|_ _ |_ _ _ _ _ _ _| |_ | _ _| | |_ _ _ _ _| |_ _|_ _ _ |_ | | | | _|_ | | |_ _ | | |_ | |_ _ _ _ _| |_ _|_ |_ | | | | | | _| _ _ | |_ _ |_ | | _ | |_ _ |_ |_ | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _ _ _ _|_| | |_| |_ _ _ _ _|_|_ _ _ _|_ _ _ |_ | _ _|_ | | |_ _ | |_ |_ _| _| | | _| |_ _ _ _ _| |_ | |_ | | _ |_ _|_ _ |_ _|_ _| | |_ _|_ _ _ | _ _| | _| |_ _ _ _ _|_ _| _|_ _| | |_ _ _|_ _ _| | | |_| | _| | |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _|_ _ _| _|_ _|_ _ _ _| _ _ _ _|_ _|_ _ _ |_| _ | |_ _| | _ _| | | _| |_ | | |_ | _| |_ _ _ _ _| _|_ | | |_| |_ | |_ |_ _| |_ _ _ _|_ |_| _ |_ |_ |_ _| _ _|_ _ _ _ | |_ _| _| _ _|_ _ _| | _ _|_ _ | _|_ _ _| |_ _ _ _ _ |_ | _ _| _ _ _ _ | | |_ _ _ _|_| |_ _| _|_| | _|_ _ _ _ _ |_ _ _| |_ | |_ _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ | | | |_ _ _ _| | _|_|_ | | | _ _| _ | _| | | |_| _| _ _|_ _ _| | _|_ _ _ _| _ _ _| |_|_ _ |_ _ | | | | |_ | | |_ _ _ _ |_ _| |_| _| _ _|_ | | _| | _ _ _| | |_ | | | | | _| | | _ _ _| | | |_| |_ | | |_ _ _ _ _ _| _| _ _|_ | | |_|_ | | |_ |_| |_ _ _ _ | | _ _ | _|_ | | | +| | |_ _ |_ _| | |_ _ _| | |_ _ |_ _| |_ _|_ | | _| |_ _ | _| _ |_ |_ _ | |_ | | |_ | |_ _ _ _ _| |_ _| _ |_|_ _ | | | | | |_ _ |_ _| | _| | |_ | | | |_ |_ _ | _ _ _ _| |_ _ _ | |_ _|_ _ _ _|_ | |_ _ _ _ _ | | | | _|_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ |_ | _| |_ | _ _ | | | |_ _| |_ _|_| |_ | |_ _ _|_ _ | | _ _ _|_ | |_ _|_ |_|_ _ | |_ | _ _| | _ _ _ _ _| |_ _ |_ |_| |_ _| |_| |_| _| _ _ _| | |_| _ _| |_ _| | _ _| | _ _ _ | | _ _ _| _| |_ _ |_ _| _|_ |_ _|_ _ |_ _ |_ _ | _|_ _ _|_ _ _|_ |_ | _|_ _| _| | _ _ | _ _ | _ _ _|_ | | |_| |_ | | | | | _ _ _| _| | | | _| |_ _ |_| | _| _ | |_ _ | _| _ _ _ _|_ |_ |_ | |_ | _ _ _ _ _ _ _| | _ _|_| |_ | _ _| |_ _| _ _| |_ _|_| _ | _ _ _ _ _|_ _ |_ _ _| |_ | _| | _| |_ _ |_| _|_ _| _|_ _ _ _ |_| _| | |_ | | | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _| | _ _| |_ _| _ _|_ _ _ _ _ | _| | |_ |_ _| _|_ | |_ _| |_ _ _ | |_ _ | _ _ _| _ _ |_ _ | _ _| |_ _ _ _ | _ _ _ _| |_ | | | | _ _| |_| | | | _| | | _ _| _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| |_ _| _ _ _| | _ _| | | | |_ _| | _| | |_ _ _ | _| _ |_ _|_ | | _| |_ _ |_ | | _| _ _| _| _ _|_ |_ | _| | _ _| | |_ | _ _| | _ | _ _|_ _ _| | _ _ _|_ _ _ |_ _ _|_ | | | | _| |_ _ _ _| |_ _| _ |_ |_ | _ _|_| _ _ _ |_ _| _ |_ | |_ _ _ _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | |_| |_ _|_ _ _ _ _ _| |_ _ _ _ _| |_ _|_ _ |_ | | | | | | _ _| | _ | _ _ _|_| _ _ |_ _ | _ _| | _ _ _| |_ _|_ |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| | | | | | | | _| | |_| | | | | _| |_ _ | | | |_ _|_ | | _| |_|_ | _ _ | _| |_ _ _ _ _| |_ _ _ _| |_ |_ |_ | |_ _ | _| |_ _ | |_ _ |_|_ | +|_|_ | | | _ _| | | |_| | |_ | _ | | | |_ |_ _ | |_ _ _ _| _| _ _ _| | _ _|_|_ | |_ | _ | | | | | |_ _ _ _| |_| |_ _ | |_ _ |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | |_ _|_ _ | | _ _ |_ |_ _|_ | _ _| |_| |_| | | |_ _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _| | | | _| _| | | |_ _|_ _|_ _ |_ _ _ |_ | |_ _ _ _ _| | |_ _ |_ | |_ | | | | _| | | |_ | |_ _| | |_ _| | _| _| | |_ _ _| _|_ _ _| | |_ |_ | | _ _| | | | _|_ | _|_ _ _| | _ _ _|_ _ | _| | | _|_ |_ |_ _ | | _| | | _ _ _ _ | |_|_ _| _ _ |_ _ | | | |_ _ | |_ _ | |_ _|_ | | _| |_ _| |_ _| _ _ _| _ _| | |_ | |_ _ _| |_|_ _ _| _|_ | | | |_ _ _| |_ |_ _ | |_ _| | | | |_ _ _| |_ _| _ |_ |_| _ _ _| _ _| _| _| |_ |_ _ _| | | _ _ _| _ |_ |_| |_ |_ _ _| | _ _|_ _ |_ _ _| | _ _| |_ _ _ _|_ |_ _ | _|_|_ | | | _ _| | | _| | | | |_| |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _ _ _| _ _| _ _ |_ _ _| | | |_ | | |_ _ _|_| _| _ _|_ | _ _ | | _ _| | | _ _ _|_ | | |_| |_ | | | _ _|_ _| _ _ _ _|_ |_| | |_ _| |_ _ |_ |_|_ _ _| | _ _| | |_ _ | |_ | _|_|_ | | | _ _|_ _ _ _ _| | | _ |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _| |_ |_ | | | |_ _ _ _| | |_ | | | |_ _|_ _ _| | |_ | | |_ |_ _ | _ _|_ | _| | | _| |_ _ _ _ _| | |_| _|_ |_ _ _| | | _|_ | _|_ |_ _| | _| | | _|_ _ _|_ _ | _ _ _ | _|_ _ _|_ _ _|_ | |_ _| | _| _ _|_ | | | _ _ _| _ |_ | _| _ _|_ |_ | _ _|_ _| _| |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ |_ | _ _ _ _ | |_ _ _ _ _ _ _ |_ | _|_ _| |_ _ | _|_ | | | | _ _ _| _| | |_| |_ | | | _ _| | _| _| _|_ _ | |_ _ |_ _| | | |_ _ _ _ _ | | |_|_ _| |_ _|_| |_ | |_ | |_ _|_ _ _ _ _ _| | _|_ _ | | |_ |_ _ | _ _ | | |_ _ | _ | | _ _ _| | _| _|_ _| | | _| _| | | _|_ _ |_| +| _ _| |_ _| _|_ _| |_ | | | | | | | | |_|_ | | _ _|_| |_ _ |_ _ | _ _|_ _ _ _ _ _|_ |_ _| | | |_ _|_ _ _|_ |_| _ |_ |_ _ |_ _ _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ | _|_ _| |_ | _| _| _ _ _|_ _ _ | _| _| |_ _| | _ _| | | | | | _ _| _| | | | |_ _ | _ | |_ _ _ _| | |_ _|_ _ _ _ _ |_ _ | _ _|_ | _ _ _| | _|_ _ _ _ |_ _| _|_|_ | |_ _|_ _ _|_ _ _| |_| _ _| | |_ _ | _|_ _ _ _ _| | | _ _ _ _ _ _ _|_ _ _|_ _ | |_| |_ | |_ |_ _ |_|_ _ | _|_ _ | _ _ _| | _| |_ | _ _|_ _ _ _ | |_ _| _| |_ _ | | _| |_ _ |_ | _ _|_ | _|_ _| |_ _ _| | | _| | | |_ _ _| | |_ |_ _ | _ _ _ _ | _ _ _|_ _ | | | _ _ _| | _ _ _ _ _ _ _|_| |_ _| _| _ _|_ _ _| | _|_ _ _ _| |_ _|_ _ |_ _ _ _| _| _ _|_ | | _ | | |_|_ |_| _|_ _ _ _| |_| _| |_ _| _| _ _|_ | | _ | | _|_ _| _ _ |_ _ | _ _| | | _ _|_| _ _ |_ _| | |_ _ _ _ _| |_ _|_ _| |_ _| | | | |_ _ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ | | | |_|_ |_ _ _ | | _| _|_|_ | _ _ _| _| | _| | | | _|_ | _ _|_|_ _ | _ _|_ _|_ | | _| |_|_ | | |_ _ _| |_ | _| _|_ | _ _|_ | _ _ _| | | _| | _ _| |_ _ |_ _ _ _ _| |_ _| | _ _ | | | _|_ | | _ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_| _ _ _ _|_ |_ | | | | | | _ |_| |_| _| | |_ _ | _|_ _ | |_|_ | | _ _|_| |_ _| |_ | | |_ _ _ _ _ _ |_ | |_ _ | _ _| |_ _| |_ _ |_ _ _ _| | | _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| _ |_|_ | |_ _ _ _ _| |_ _ _ _ _ |_ _ _|_ _ _|_ _ _ _ _ _|_|_ _ _ _ _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _| | | |_ _ | | _| |_ _ | _ | | _ _|_ _ |_| _ |_ |_ |_ _ |_|_ _ |_ _ | _ |_ _|_ | | _| |_|_ | | |_ _ _| _| _ _| |_ _ _| | _| |_ | | | | |_| | | | _ |_ |_ _ | |_ _ _ _ | _ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ | |_ | | | | | _| | _ _ _| _| | _| _| | |_ | _| | _ _ |_ | +| |_ _ _ | | | | _ _ _ _| |_| |_| |_| |_ |_ | _ _|_ | | |_ _ |_ _ _ |_ | | _ |_ _ | | _ _| |_ _ _ _ | _| _| _ _|_ | _| _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| |_ _ | _ _ _|_| _| _| | | _| |_ _ |_ _ _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ | |_ | | | |_|_ | _ _ _ _| |_ _ _ _| | _ _| | _ _ _ _| | _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | _ |_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_|_ | | _| |_ _ _ |_ _ |_ | |_ _ _| | _ | _|_ |_ |_| | | _ _ _ | |_ _ |_ _ _ _| | |_ _ _| | | _|_| | _|_ _ _|_ _ | _|_ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ |_| _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| | _ | _ _ _| _ _ _ _ |_ _ |_ _ _ | _| |_ _ _ _ _| |_ _| |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _|_ | | _| |_ _ _ _ _| | |_ _| | _ _ _|_ | | |_| |_ | | | | _ _ _| _| | _ _| |_ | | | | _ _| |_ _ _|_| |_| _ _ _ _|_ |_| | _|_|_ | | | _ _| | _ _ _| | |_ |_| _ _|_ |_ _|_ _ |_|_ | _ _|_| _|_ | |_ _ | | |_ _| | _| | | |_ | |_ _ _ _ _| | | _ _ | | |_ |_ _ | _|_ _| |_ | _ _|_ _ _|_ _ _| _ _| _ _ _ _| _ _ |_ _| |_ _|_ | _| _| | _ _ | _| _ _| | | _ _|_| |_| _ |_ _| | _ | |_ | _|_|_ | | | _ _|_ _ | | |_ _ _ _ _| |_ |_| | |_| |_ |_ |_ _ _| _| | | | _ _| |_|_ _ | _|_ | _ _|_ | | |_ _ | | _| |_ | | _ _ _ _ | | | |_ _ |_| _ _ _| |_ | | |_ _ |_ |_ | | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ |_ _ | | |_ _| _ | _| _ _ _ _ | |_ _ _| _ | | | | _ _ _| _| |_ _ |_ _ |_ | |_ |_ |_ _|_ _| | |_ _ _|_ | |_ | |_| | | | _| _| _ _|_ |_ _ |_ _ |_ _ _| |_ | _ _| | |_ |_ _ | _|_| | _ _ _| _| _ _| _| _ _| |_ _ _| _| | | |_ _|_ | |_ _| |_ _| _ _|_ | |_ _ _ _| _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| |_| | | |_ _| |_| | _ _ _| | _| | | _|_ | | | _|_ | _ | | +| _ |_ _| | | |_ _| _ |_ |_ _| _| _| |_ _| | _ _| |_ _| _ _| _ |_ | | | | |_ _ _ | |_ _| | _ _ _ | _| | | _| |_ _ _ _ _|_ | _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | | | |_ _ _ |_ | _ _ _| _ |_ _| _| | _| | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ |_| | |_ _| |_ _ | _ _|_ _ _ | _ _| | _ _| | _ _ | | |_ |_| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ | _ _ |_ | | | _| _|_ _|_ _ _ _ _| _ _ _| | _ _ _|_ _ _ _|_ | | | _| |_ _| | | | _ _| |_ _ _ _| | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_ |_ _| | _|_ | _ _|_ | | | _ | |_ _ _| _| _ _ |_ _|_ _ | | |_ _ _| |_ | _ _| | |_ _ _ _| _ | |_ _ | |_ _ | _ _|_ _|_ | | _| |_|_ _ _ _ _| | |_ | | _|_ | |_ _| |_ _ |_ _| _ |_ |_ _ _| |_ | | |_ _ _ _ _| |_ _| _ _| | | | | _ _ _| _ _ _ |_ |_ _ |_| | | _ _ _|_ _| | _| | _|_ _ |_ _ _ | |_ _ _| _ _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_| | _ _ _| _ | | | _|_ _ _ _| | | | | _ | | |_ _ | | | | _| |_ _ _ _ _| | _| _ |_ |_ | | _ _| | | |_ _| |_ _ _ _ _| |_ _| _ _| | |_| | | _ | | _ _|_ _ _| _|_ _ _ |_ _| | _ _ _| _| | | | |_ _ _ _ |_ | |_ _| | _ _| |_ _| _ _| | | _| _| |_ _ | | _ _| |_ _|_ |_ _ | | |_ _| |_ | |_ | | _| | _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _| | |_ _|_ _| | | | |_ _| _ | | _| |_ _ | _| |_ |_ _|_ _| | | |_ _ _|_ | | | | _|_ | | _ _ | | | _| | _ | | _|_ _ _| | |_ _| _| |_ _ _ _ _| |_ _ _|_ | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ | | |_ _ _| |_ | _ _ _| _|_ _| |_ _ _ _ |_| _ _| | _ _ _ _|_ _| _ _ _| _| | _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | | _ _|_ _ | _ _|_ _ | _|_ _ | |_ _ _| | | |_ _ |_| | _| | +|_ |_ _ | _|_ |_| _| _ _|_ |_ _ _| _| _ _ _|_ _ _ _| _ _| _|_ |_ _ _| | | |_ |_ _ _ _ _| _ _ _| | |_ _ _| | |_ _ _ _ _ _ _| | _ | _| | | |_ _|_ | |_ _ _ | | | |_ _ | |_ _|_ _ |_ _ | |_ _ | |_ |_ _ |_ |_ _ _ _| | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| _ | _| |_ |_ | _| | | _ _ | |_ | | |_ | | | |_ _|_| |_ | | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ | _ _| |_| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _ _|_| |_ _| | | | | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| | _|_ |_| | |_ _| |_ _ _ |_ _| |_ _| | |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ |_ _ _ _| |_ _ | |_ | | _|_ _| | |_ | |_ |_| _|_ | |_ | _ _| |_ _| _| _ _|_ _ _| | _| |_ | | | _| _|_ | |_ _ _ _| | _ _ _| | |_ |_ _ | _ _| _ _|_| | _| |_ _ |_|_ _ _ _ _ |_ |_| _| _ _|_ | | _ _|_ _ _|_|_ _ _ _ _ _ _ _ _ _ _| |_ _|_| |_| _ | _| |_ |_| _ _| | _|_|_ _ |_ _|_ _ _| | _|_ _ _ _| _ | | |_ _ _ _ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| _ _ _ _|_ |_ _| _|_ | |_ _| |_ _| | |_ | | | | |_ _| | | | _|_ _ | _ _|_| _| _ _|_ | |_| |_ | | | |_ _ _ _ _ _ _ _ _| _|_ _ |_ _ _ _| |_ | |_| |_ _ _ _| _ _ |_ _ _ _|_ _ | _ _ _| |_ _|_ _ |_ _ _| _|_ | |_ _ _ _| _ _| _ |_ _| _| |_ | | |_ _| |_ |_| _ _| _| |_ _| | _| _| _| | _ _| |_| _ _ _| | | |_ | _|_|_ | | | _ _| | | |_| | | | _ _|_| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| |_ _|_|_ _| _| _ _| |_|_ _ | _ | |_ |_ _ _| | |_ _| | | |_ _| | |_ _ _ _ _|_ | |_ _ | | |_ _ _ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_ _ |_ _ _ | | | _ _ _| _ _ _| _ _ |_ _ | _ _| | | _ _ |_ |_ _ _ |_ | |_ |_ _ _ _| _|_ |_ _ _ _| _ _| | | _ _|_ _| _ _ _|_ _ _ _| | | | _|_ | _ _ _|_ _ |_ _ _| _| | +| _ _ _| | | | _| _| |_ _ _ _ _| | _ _| _|_ _| _ |_ | | |_ _ _| | _| _ _|_ _ | _ _ _| | _ _|_ _ _ _| |_ | _ _| | _| _ _| |_ _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ |_ |_ _ | | | _| | _| |_ |_ |_| | _ _| |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _|_ | _| | _|_| _ _| |_ _ _| _| | | | | | _| | | | | |_ _ _ _| | | | |_ _ | |_ | _|_|_ | | | _ _| _ _ _| | | _| | _ _|_| |_ _ | | | | | _|_|_ | | | _ _| |_ _ | | | | _ _|_ | | |_ _ | | | |_| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _ | _ _|_| |_ | | _| _ _ _ _ _|_ _ _|_ | |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _| | | _| _| | _|_|_ | | | _ _|_ _ _| | | _| |_ _ |_ |_ _ |_ | | | |_ _| _ |_| |_| _|_ |_ | |_ _|_| | _|_|_ _ |_ | _ _| | _ | _| | _| _|_ | | | | |_ _ _ | _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | |_ |_ _ | _ _ _ _ _ |_ _| | _| |_ _ _ _ _|_| | | _ _ _ | | _ _ _ _ | |_ _| _| _ |_ |_ | |_| _| |_ _ _ | _ _| _ _ _| | _| _ _ |_|_ _ _ | |_ _| | _|_ _ _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ |_ _ _| |_ | _|_ _| |_ _ _|_ _ _ |_ _ _ _|_ |_ _|_ _ _ _ _|_ _ _ _ _|_ _ | _| |_ _ _ _ _|_ | | _| |_|_ |_| |_ _ _| _ _ _ _|_ _ |_ | _ | _ _|_ _ _| _| _ _ _| | | |_| _ _| | | _ _ _ _ | |_ _ _ | |_ _|_ _ _ |_ | | |_ _| _ _ _|_ _ _ _ _| | | |_ _ _ _ |_ _ _ _ _ _ _ _|_ _| |_ | | _|_| | | | | _ |_| | | |_ _ _ _ _| |_ _| _|_ _| |_ | | _|_ | _ |_ _ _| | | _|_|_ | | | _ _| _ _ | |_| | | _ _ _ _|_ |_ _ | | | _| |_ | | _ |_| | | |_ | _ | _| | |_ _|_ _ _ _| _ |_ _ _ _ |_ |_| | | _| |_ _ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ _ _| _ | _| |_|_ _ | | _ _ _| | | |_| |_ | | |_ _| _| |_ _ _ _ _| _| |_ _ _ _ |_ _ _ _ _ _ _|_ _ | | | |_ _| |_ _ | _ _| | | | | | | _|_ _|_ _| _ _| | | _ _ _ _|_ _ _ _| _| +| | | _ _| _|_ | |_ _ | | |_ _ | _ _ _ _|_ |_ _ |_ _|_ _ |_ _| | | | _| | _ _ |_ _ | _| | _ _ _| | _| _| | _ _| |_ _ _| _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ | | _ _| | | | | _|_ _ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | _ _|_ | | | _ | | |_ _ _ | _| |_ _ _| |_ _ | |_ |_| |_ _ _| | | |_ | _| |_ _ |_ _ _ _ _| |_ _| | _| |_| | | | _|_ | | |_ _ | | | _ _|_ _ _ _ _| |_ _|_ _ | | _ _| | | _| | _ _| |_ _| _ _| | | | _|_ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_| |_| _ |_ |_ | | _| | _ _ _ _ | |_ _ _ | | |_ _|_ | | |_ | | | | |_ _ _ | | | _ _| | |_ _ _ _ _| |_ _| _ _ |_|_ | | |_ | |_ _ _|_ | _ | | _ _| | _| _| _ _ _| _| _ _| |_ | _ |_ _ _ | _ | _|_ | _|_ | |_ |_ _ _| _| |_| |_ | | |_ _| | | |_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ | | _ _|_| |_ _ _| | | |_ _ _ _ | _| |_ _ _| | |_| _ | | _| |_ _ _| _| _ _|_ | |_ _ _| |_ _ _ |_|_ |_ _ | | _|_ _ _ _ | | _ _ _ _ _| _ _ _|_ _ _ _ _| _|_ _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _| _| _ _|_ _ |_ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | _ | |_ _ _| | | |_ |_ _ | _ _| | _ _ _| |_ _ _ _ _| | | |_ _| | | | |_ _ | |_|_ _|_ | | | | _|_ _|_ _ _ _| |_ _ _ |_ _ _ _|_ _ _ _ _ _ |_ _|_ _ |_ _ |_ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ _ _|_ _ _| |_| |_ |_ | | _| | | _ _ | _ | | | | _ _ _ _| |_ | | | |_ _| | | | |_ _ _ _ _| |_ _| _ | | |_ | | |_ _ _| |_ | | | |_ |_ _ | | | |_ | | _| _| _|_| _|_ |_ _| | | | _ _ _| |_ | _| _| _| _| _| _ _ _| | |_| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| |_ _ _ | |_ _| | | |_ _ _| | |_|_ _ | _|_|_ _|_ | | _| |_ _ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_ _|_ _ |_ _ | | |_ _ _ _| |_ _| |_ |_ _ _ | |_ _ _ _ | | _ _ _ _ | |_ | +|_ |_ | _| | |_ | _|_ _|_ _|_ | _|_ _ _| |_ | _| _ |_ _ | | _|_ _ |_ _ |_ _| | | _|_ | | _|_ _| _| | |_ | _|_ | _| _| _|_ |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ _| | _ _| |_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | | | | _| | |_ _ _| | |_ |_| | |_ | |_| | |_ _ _ _|_ _ _|_ |_ |_ |_ _ _| |_ _| | | _| | _| _ | | _ |_ _| _| _ _|_| |_ | _ _| |_ _| _ _| | |_ | _ _ _ _ | _ _ _| | |_ _ _| |_ | |_ _ _ _| _ _| _|_|_ _ | _|_ _ | |_ _ | _|_|_ | | | _ _| _ _| | | | | |_| _| _ _|_ |_| |_ _ |_ _ | | _| |_ _ | _|_ _|_ _ _ _ _|_|_ | | _| |_ _|_ _ |_ _| |_| | | _|_ |_ _ _ | _ _ _ _ |_ _ _|_| |_ _| _ _ _ _| | | | |_| | |_| _|_ | _ _ _| _| | |_ | |_ |_ _ |_ | | _|_ _| |_ _ |_|_ |_| _ _ _| _| | _ _| |_ _|_ _ _ _ _|_ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_ | | |_ _ | | _|_ |_ | |_ _| |_ _| | _ _| _ _|_ |_ _| | |_ _ _| | _| _| |_ _ _ _ _| |_ _ | | _ _ _ _| |_| |_|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | _| | | |_ _|_ | |_ _ _ _ | | |_|_ | _ _| | | _ _ _| | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | |_ | | _ _| | | |_|_ | | _ _|_| |_ _ _ |_ |_ _ _| _ _ |_ _ | _ _| | _|_ _|_ _| | |_ _ | | | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ _ _| |_ _ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | | _ _| | | | | | _| |_ _|_ _ _ _|_ _| | |_ _| _ |_ |_ _| | | _ _| | | |_ _ _ _| _ _ | | |_ _| |_ _ _| |_ _| _ _|_ _ _| | | |_ _ | |_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_| _| |_|_ _ | | _|_ _ _| _| _| | | | | | _ _| _ _| _| | | |_ _|_ | _|_ _ | | | |_|_ _|_ _|_ _ _|_ _|_ | _|_ _ _| | | _ _| | |_ |_ _ | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ |_ _ | _| | | _| _|_ |_ | |_ _|_ _ | | | |_ _ | | _| |_ _ | +| _| | | | _| _| _|_| _ _ | |_ _ |_ | _ _|_ _ _|_ |_| |_ _ _ _| | |_| _ |_ | | |_ _| _| |_ _ |_ _| | _ _ _| | | | | | _ _| | _| |_ _ |_| _ _|_ _ _ _ | |_|_ _ _ _| | | _ _|_ | |_ | |_ | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_|_ _ _ |_ | |_ _ _| | _ _|_ _ _|_ _ _ | _ | _ | | |_ |_|_ _ |_ _ _ | | | _|_ _ _| _| |_ _| | | | | _| _ |_ |_| _ _ _| _ _| | | |_ _| | _ _ _| | | | |_ | _ _| _ |_ |_ _ |_ _ | | |_|_ | | _|_ _ _ _ | |_ _|_ _ _ _ _| |_ _|_ _ _ _ _ _| | | | |_ _| |_ _| |_ _ _ _ _| |_ | | _| | |_ _ _|_ | | |_ | _ _ _ _ _ _ _| | | _ _ |_ |_ _ | _ _| |_ _ |_ _ _ | | |_ _ _| | _| _ |_ |_| _| | _ | | | |_ _|_ _| | |_|_ _ | _| _| | | | |_ |_ _ _|_ |_ _|_ _ |_ | |_ |_ _ |_ |_ _ |_ |_ _ _| _ _| | _ _ _ _ | |_ _ | | _|_ |_ _ _ _| _ _| _ _|_ _| | _ _| |_ _| _ _|_ _| | _| _| |_ _ | |_ | | |_ | _| | _ _| _ _ _| | | |_ | _| _|_ _ |_ _| _| _ _ _ _|_ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _| |_ _|_ _ _ _ _|_ _ _ | | _|_ _|_ _ |_|_ _ | _|_ | | _ _| | |_ _ _| |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | | _| _| | | |_ _|_ | _ _|_ | | |_ _ | | | _| _ _ _| | | |_| |_ | |_ | _ _ | _|_ _ _| |_| | | | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ |_| | | _ _ _| | | | |_ _ _ _ | | _ _|_ |_| _| _ _|_ | _| | | _| | |_ |_ _ |_ _|_ _ _| _| _ |_ |_ _| | _ _ | _ _ _| | |_ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _|_ _| | |_|_ | _ _ _| _| _| | |_ |_ | | |_ |_ _ _| |_ _|_ _ _ _ _| | _ _| | |_ _|_ _ |_|_ _ _ _ _| |_ | _|_ _ _ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _ _| | |_ _|_ _|_ _ _ _| _ _| _|_| _ _ _|_ _| | |_ _| | |_ _ _| _| | +|_ | | |_| |_ _| _| _ _| | _| |_ _ |_ |_| | _ _ _ _ |_ |_ _ | _ _| _ _ _|_ |_ _|_ _ |_ _ _ | |_ _ | |_ _ | | |_ _ _| | |_ _ _ _| |_ _ |_ _ _| | _ _ | _| |_ _ |_ _ |_ | |_ | _ _| | | | | | |_ | |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | | | | | |_ _ _ _ |_| _ _| |_ _| | | | | | _ _ |_ | |_ |_| _| _ _|_ | |_ _ | | |_|_ |_ _ _ _|_ _ | |_| |_ | | _| _| _ _|_ | |_ _ | |_ _|_ _ |_ _| |_ | _| _ _|_ |_ _ _ _ _ |_ _ | _ _ _ _ _|_| |_ _|_ | |_ _ _ _ _| |_ _ |_ | _|_ _ _ | | | | _|_ _ | |_ _ |_ _ |_| _ |_ _ _ _| |_ _ |_ |_ _ |_ | _| | | |_| _| _ _|_ | | _ _|_ _ _|_ _ | _ | |_| |_ _ _| | | _| _| |_ _ _| | _ _ _ _| _ _ | | |_ _| _ _ _|_ | _| | _| _ _ _|_ |_ _ | | _| |_ _ | |_ _|_ | _|_| _ _| | |_ _ _ _ | |_ _ _ _| _ _| | _ _ _| _|_ | | |_|_ | | _|_ | | |_ |_ _ _ |_ _ | | |_ | |_ _|_| _|_ _ |_ _ | | |_ _ _| |_ |_| | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | | _ _ | | _ | _ _| |_ | _ _|_ _ | | |_ _ |_ _| | _| | | | _| | | |_ | _|_|_ | | | _ _| | |_ | | |_ _|_| _| | _| |_ _ |_ _| | _ _| |_ _| _ _| _|_ |_ _ | | | |_ _|_ | | _| |_ _| | |_|_ _ _ | | _|_|_ | | |_|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _ | _|_ _| | | _|_|_ | | | _ _| _ |_ | | | |_ _| |_ _ _| | _| _ _|_| |_| _ _ _| _| |_ _ _ | | | _| |_ _ _ _ _| |_ | |_ | |_ _ _ |_ _| _ _| | _| _| _| _ _|_ | _| | |_ _| | _ _| |_ | | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | _ _| | _|_ | |_ _ | _|_ _ _| | | | | |_ _ _| | | _ _ | | | | |_| _ _|_ _ _ _ |_ _ | | _ _ _ _|_ |_| | | _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ |_ | _|_|_ | | | _ _| _ _ | | | | _| | | _ _|_ _ | | | | |_ _ | _ _|_| _ _ | _|_ _| | _| _ _ |_ | | +| | _|_ | _ _ _| _| _|_ _ _| _| | |_ _ _|_| _ _ | |_ _ | |_ | _ _| | _| _ _ _ | _ |_ | _|_ _| _| | |_ | _ _| | _ _ |_ |_ |_ _ | | | | | |_ |_ _ _| | | | | _|_ | | |_ _| | | |_| |_ | | _ _ _ _|_ | _|_|_ | | | _ _|_ |_ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| _ _ |_ _ | _ _| | _ _| _|_ _| | |_ _ _|_ | |_ | | _| |_ _ _ _ _|_ _ _ |_ _|_ _ |_ _ | _ | | |_| _ _ _| |_| _| |_ _ _ _ _| _ | | _ _ |_ _ | |_ _ _| _| _ _|_ | | |_ _ _ _| |_ | | _| _ |_ |_| _ _|_ | | | _ _| | | _| _| | _| _ _ _| | |_ _ _| |_ |_ _ |_ |_ _| | | | _ _| _|_ |_| | |_ | |_ _ _| | |_ _| _| |_ _ _ _ _| | |_ _| _ _ | |_|_ | | | _| |_ | _|_ _|_ _| _| _ _ _ _| _ _ _ _ _ _|_ _ _ _ _| _ _ _ _| |_| _|_ _ _ _ _ | _| | _| | |_ _ _|_ | | _ _ _ _| _ _ _ _|_ |_ _|_ _ |_ _ _ | | | | |_|_ | _ _ _| _|_|_ _ _ _ |_ _| | | |_|_ _ _| _ |_ _ |_ _ _| _| | _ |_ _ _ _ | | |_ _| _| _ _|_ _ _| _|_ _ | |_ | _|_|_ | | | _ _| |_ _ | | | | _| | |_ _| | |_ _ _|_ _ _ |_ |_ _|_| _ _| | | | |_ _ _ |_ | |_ _|_ _| | _| _ _| |_ _ _ _ _| |_ _| _ |_ _|_ | | | | _ _ _| | | | | _| | |_ _ |_ _ _ _| _ _| |_ _ _ | _| | | |_ _ | | |_ |_ _ | _|_ _ _|_ _| |_ _ _| | |_ _ | _ _|_ | _|_|_ | | | _ _|_ _ |_| | | |_ _| |_ _| _ _| | _ _ _|_ _|_ _ _ _ _| |_ _| |_| _|_ | | | | | | |_ _ |_ _ _| _| _ |_ |_ _ | _| _| | |_ _| | |_ _ _ _ _| |_ | |_ _ | _ _ |_ _| _| |_ _| | _| |_ _ _ _ _| |_ | | |_ | |_ | | | _|_ _| | |_ _ _| | | _ | | _ _|_ _ _| |_ _ |_ _ _| | | _| | | |_ _ _ |_|_ | |_ _ _ _| _| |_ _| _| |_ _|_ _|_ _ | | | _ _ _ | | | |_ _ _| |_ | | | | |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| | |_ _ _ _ _| |_ _| _|_ _| | | | | |_ _|_ | _|_ |_ _|_ _| | _ |_ _| _ _ _|_ | |_ _ _ _ | | | |_ _ _| | +| _| | | |_ | | _|_ _ _ |_ | | | _ _ _| | _| |_ _|_ _ | | | _ |_ _| | |_ _ _ _|_ _| _| _ _ | _|_ _ _|_ |_| _ _|_ _ _ _|_ _ _ _|_ _ |_ |_ _| _ |_| |_|_ _ | _ | |_ | | _| |_ |_ _ | |_ _ _| _ _ |_ _ _ _ _| |_ _| _ _ _|_ |_| | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ _| | | |_| |_ | | |_ _ _ _| |_ _ _ _ _ _ _|_ | | | |_ _ _ _ _ _ _ | | _| |_ _ | |_ |_ _|_| | _ _| | | |_ | _ | | _| |_| _| | _ _| | _ _ |_ _| _ _| |_ _| |_ | |_ | |_ _| _| _ _|_ | |_ _ _|_ |_ _| | |_ _| _| | |_|_ |_| _ | |_ _ | | _| _| _ _| | | | _ _| | | |_ | _ _ _ _ _ _| _| _|_ |_ _ _|_ _ | |_ _| | _| | _ _| | _| |_ _ | |_ |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| | _| |_ _ _ | |_ _ _|_ _ | _| _ _ _ | | |_ _ |_ _ _| _ _ | |_ _ _ |_ _ | _|_| | | |_ _|_ _ |_|_ _ _ _|_| _ _ |_ _ | _ _| | |_ | _ _ _ _|_ | _ _ _| _| _| | |_ _ _ | | |_|_ | _ _| | _ | _|_ _ _ _ _|_ _ |_ _ _ _ _| |_ _|_ _ | | _ _| | | |_ |_ _| _|_|_ _ _ _ | |_ _| | _ _ _| | _ _| _ _|_ _| |_ _ |_ _ | _ _| _ _| |_ | | | _| | |_ _ |_ _ _| | |_ _ | |_| | _| | _|_ | _| _ | | |_|_ | |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _ _ _| _|_ _ _|_ _ | _|_ | _|_ _ _ _ _| |_ _| _ _ | |_ _ | | _ _ _| _ _| | |_ _ _ | | _ _ _ _ _ _ _|_ |_ |_ _ _| |_| | |_ _| _ _| _ _| _| _ _|_ | _|_ |_ _ | |_ _ _ _|_ |_ _| _ _ _ _|_ |_ _| | _ _|_| |_ _ _ _| |_ _ _ | |_ | _ |_ _ | |_| |_ _ | | _| | | | _ _| _| _ _| | |_ | |_| |_ | | _ _ |_ _| _| _|_ | _|_ _|_ _ |_ _| _ _|_ | _ _ _ _|_ _ _ _ |_ _ _ _ | |_ _|_ |_ _ | _ _| |_| _| _ _|_ _ _| |_|_ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| |_ | |_ _ _ _ _ _ | _|_ _ | _ _|_| |_| | |_ _ | | |_ _ _ _| |_ _|_ |_ _ |_ _ _ _ _|_ _ _ _ _| | |_ _| | _ _ _| +| | _| | |_ _ _| | |_ | | | _|_ | | | | | _| _ |_ _ _| _| _ _ _| |_| |_ _| | _|_ _ _ _ _ | | _ _|_ |_|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | _| |_ | | _ |_| | | |_ | |_| |_ | | |_|_ | _ _| | _| _ | | _ _ _| _ | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | |_ _|_ _ | _|_|_ _|_ | | _| |_ _ | _ _|_ _ _ | _ _ _| | | |_ |_ _ | | _ _| _| | _ _| _ _| |_ _ _| _ |_ _ | _| |_| |_ | | | | _| | |_ |_ | | _ _| _ _| |_ |_ _ _| _| | | _|_ |_ | | | | _|_ | _| |_ _ _ _ _| _ |_ _ |_ | _| |_ _ _ _ _ |_ _ | _ _| |_ |_ | |_ _|_ | _ _| |_ _| | | |_ | | _ _ _ _| |_| _|_ _ _ | _ _ _ |_ | _ _| | |_ _| | |_ |_ _ _| _| |_ |_ | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _ _| | _ |_ _|_ _ | | _| | _ _ | _| | | |_ | _ _| | _| |_ _ | _ _| |_ | _|_ _ _ |_ |_ _ | | _ _ _| | | |_| |_ | | | _|_ _ _| _ _|_| _ _ _|_ | _|_ |_ |_ _| |_ | _|_ | _|_| _| | | _ _ | _ _| | _ _ _ | _ _ _| | |_ _ _| |_| _| _ _|_ _ _ _ _| _| |_ _ | |_ _ | | |_ | _| _ _ _ _|_ |_ | _ _|_| |_ _| _| _ _|_ _| |_ _|_ _ _ _ _| _| _ |_ | _| | |_ | |_ _ _|_ | _|_ _ _ _| | |_ _|_ _ |_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _| _ | _ _|_| |_ _ | _| _ _ _ _| | _| |_ _ _| |_ | | | |_|_ _ _ _ |_ _|_ _| |_ _ | | _ _| _| _ |_ |_ | _ _| _| _| _| |_ _ _ _ _|_ |_ | _| | _ _ | _| |_ _ _| |_ | _|_ | | |_ _ | | _ | |_ | |_ _| _| _ _| | |_ _ _| |_ | |_ _| | | |_ _| |_| |_| | _|_ _ _| _| | | | |_ _ |_ |_ _ |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _| |_ _ | | | _| | | _ _| _ _| | _ _ | _ _ | | _| | | |_ _|_ | | | | _ _| | |_ _ | _|_ _ _ |_ _ |_ | |_ _| | |_| _ |_ |_ | _ | |_| _ _ _ _|_ |_ _ |_ | |_ | | _ _ _ _ | |_ _| |_ _| _|_ _ | | +| | |_ _ _| |_ _ _| _| | |_ _ _ _| |_ | | _ |_| | _| _| | _| | _ _| |_ _ _ _| | |_ _|_ _| |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | | |_ | | _| _| _|_ | | |_|_ |_ | | | |_ _ _| _| _| |_ _ | | |_ _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ _| | | | | | |_ |_ _ | _ _ _ | | | | |_ _ | | |_| _| | _ _|_ | _| | | | | | _ | _ _ _| |_ |_ _| | |_ _| _| |_ _|_ _ _|_ |_| _| |_ | |_ | |_ _ _ | | |_ _|_ _ _| _| _| | | _ | |_ | _ _ |_ |_ _ |_ |_| | |_ _ _ | |_ _| _|_| | |_ _|_ | |_ _| | |_ | _ _ _ _|_ _| _| | |_| _ _ _ _|_ |_ | | | |_ | | _| _|_ _ _| |_ _ | | |_|_ | _ _ | | _| _|_ |_ _|_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | | _ _| | _ _ _| _ _ _| |_ | |_ _ _| |_ _ _| |_| _| | | _|_ _ _| | | | | _ _| _|_ _ |_ _ _ _ _ _| | | |_ _ | | | |_ _|_ | | _| |_|_ | _| | | _ |_ _ | _ _| |_ _ |_ | _| |_ _| |_ _ |_ _ |_ _| | | |_ _ _ _| | |_ _ | | | |_ | _ _| _ |_ |_ | | _ _ | _|_ |_ _ _| | | _ _| _|_ | | | |_ _ _| |_ |_|_ | | |_ _ | |_ _| _ |_ _ _ | | _ _| _| _ _|_ | _|_ _|_ _ | | _|_ _ | _ _ _|_ _ _ _ _| _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_|_ _ _ _ _| |_|_ | | |_ _ | | | | | | _ _| |_ _| _ |_ |_ _| |_ _|_ _ |_ _ _| _ _ _ _|_ |_| _| _|_ _| _| _ _|_ | | | |_|_ |_ _| |_ | |_ _ _|_ _| |_ |_ _| | _|_ | |_ | _ _|_ _ _| | _ _| |_ _| _ _| | |_|_ |_ _| _| _ | |_ _ | _| |_| _ |_ | |_ _ _ _|_| | | |_ _ _|_ _ _ _| _ | _ |_ _| |_|_ |_ | |_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _| | | |_ | _| |_ _ |_ | _| |_ |_ _| | |_ _|_ _ _| |_ _|_ _ _ _ _| _| | |_ _ |_ _|_ _ |_|_ _ _ _ _| _ _| |_ | _|_ _| _| _ _|_ | | | | |_ |_ _ _| |_ | | | _ _ _| | |_ _ | | _| |_ _ |_ _ | _| | | +|_|_ | | |_ _ | _|_ |_ |_| _ |_ |_| | | |_ | |_ _ _| | _| | |_ | | |_ | | _| | _ _| |_ | _ _ _|_ _ _| _ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _|_| |_| _|_| |_| | |_| | | | _ _ _ | |_ _ _| _| _ _|_ | | | _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_ |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | | |_ _ _ _|_ _ _| _|_ _ _| | |_ _ _| |_ | | |_ | |_ _ _ _| _| _ |_ _ _| _| _| _ _ _ _ _| _| _ |_ _ _| | _ | _ _|_|_ |_| _ _| | | | | |_ _| _|_ | _|_ _ |_| _| | | _| _|_ _ _ _ _ _|_ _ |_ _ _ | |_ _ _ _|_ |_ _| | |_ | | |_ | _ |_ | |_ |_ _ _| |_ | _| | _| _|_ _| _|_ _ _ _|_ _ _ _| |_ _ |_ _ | | | |_ _| _| | _| _ _| | _|_|_ | | | _ _| _ | _| | | | | | | |_ _ _ _| _ _ _ _| | _|_ |_ _ | _| _ |_ |_ | |_| |_ _ _ _ _|_| | |_|_ | | _ _ _ _| |_ _| _ _| | | _| | _|_ _ | | |_ |_ _ | _ _| |_ _| | | _| | | | | _| _| _|_ _ _|_ |_ | | |_ _ |_| _ _| | |_ _ _ _| | | _ _|_| |_ | | _| _| _ _|_ | _|_ | _| | _ _| | | | |_ _ _ | _ | |_ _| _| _ _|_ _ _| _ _| |_ _| _ _| _ _ _ _|_ | _ _ _| | | | _| |_ _ _ _ _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _|_ _ _ _ | | | _ _| |_ _| _ _| |_| | _| | | | _| | _| _| _ _|_ | | | | _ |_ _ | | |_ _ _| |_ | |_ | _ | _| |_ _ _ _ _| |_ _|_ _ |_ _ |_ |_ _| |_ _ _| _ _ |_ _ | _ _| |_ _ _ _|_ |_| | _ | _ _|_ _ _ _| _ _| _ _|_ _ _ _ _| _| | _| |_ _ _|_ _ _| _| _ _|_ | _ _ _ _|_ _|_ _ _ _ | | |_ | | | |_ _ |_ _ _|_ _| _| _ _| | |_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ _ |_| | _| | |_ _ _ | _| |_ |_ _ | _ _| |_ _ _| | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ |_ _ | _ _| | |_ _| |_ | _| |_ _ _ _ _|_ _| | | _| _| _ _|_ _ _| | |_ | _ _| | _| | |_ _ _|_ | | _ _|_| | | _| | +| _ _| |_ _| _ _| | _| _| _| _ _|_ | |_ _ _|_ _| _ | | |_ _ _| _|_| | | |_ _ | | _| | |_ _| | | _ _ _| _ _ |_ _ | _|_|_ | | | _ _| |_ _ | | | _ _|_ _ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ | _| _| _ _| |_| | _| | _|_ _ | _| |_ _ _ _ _|_ _| |_ _| |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_| _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ _ | _ _ _| | _ _|_ |_| _ |_ |_| | | | | _ _| | | |_ _ | | _ _ _| _| |_ _ | | _ _ _| |_ |_ _ _ | |_ _|_ _| _ _ |_ _ | _ _| |_| |_ |_ _| _| _| |_ _ |_ _ _| _|_| |_ _ _| _ _ _ | _ _ _| _ _ |_|_ | | | | _| | | |_ _| |_ _ _| |_ | | _| | _| _| _ _|_ _ _|_ | | | | _ _ _| |_ _ _ _ | _| |_ |_ _ |_| | | |_| | |_ |_ _|_ _ _| | _ |_|_ _ _ _ _| |_ _| _ _| _| | | | | | |_ _|_| _ _ |_ _ | _ _| |_ _ |_ _| _| | _| _ _|_ | _| _| | _| | | | | | _| _ _ _ _|_ |_ |_ |_ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| | |_| _|_ _|_ _ _| |_ |_ _ _ _ _ _ _|_ _ _|_ _ |_ | | | | | _| _| _ _|_ | |_ | | |_| _| |_ _ _ _ _|_ _ _ _| _ _| _ _ _| | _|_| | _ |_| | | |_ | _ _| | | _ | _ _ _| _ _| | | _ _| _|_| | _|_| | | |_ | _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | |_ _|_ | |_ | _ | | |_ _ _ | _| |_ |_ _ _ _| _ _| | | | | _| | | | | | _| |_ _ _ _ _| | |_ _ _| _ | |_ _| _| _ _|_ _ _|_ |_ _| _| |_ | _ | | | |_ |_ _ | | _| _ _| _ _ _| | | |_| |_ | | | _|_ _ _|_ |_ _| _ | | | | |_ _ | | _ _ _| | _| _| | | _ | _| |_ _ _ _ _| |_ _ | _ _ _ _ | |_ _| | | _| |_ | _|_ _ _| _ _ |_ _ | _ _| | | _|_| | | _|_|_ | | | _ _|_ _ _ _ _| | |_ _ _ |_ | | _ _| | |_ _|_ _ _ _|_ _ |_| |_ | | | _| _| |_ _|_ | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | _| | | |_ _| | |_ | | | |_ _| _ _ _ _ _ _ _|_ _ _| |_ |_ _|_ | |_ _ |_ | _| | _ _| | | | _|_|_ _ | +| _ _ _| _ _| | _|_| | _| _| |_ _ _ _ _|_ _ | _ _ _ _|_ _|_ _ |_ _ _ _|_|_ _ | | | | | | _ | |_ _| _ _ _|_ | | |_|_ _ _ _ _| |_ _|_ _ | | _ _| | |_ | _ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | |_ _ _| _ _| | _| | _| |_ _ _ _| | |_ | | _ _ _ |_ | _ _ _ _ |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | |_ _ | _|_ _| _ |_| _| _ _|_ | |_ _| |_| _ _| |_ _| | |_|_ _ | |_ _ |_ | |_|_ _ | _ _ _ | | |_ | _ _ _|_ | | |_| |_ | | _|_ _ _|_ _ _| _| |_ _ | _| _ | | | _ _ _|_ _| |_ _ _ _ _| | | _ _| | | |_ _ _ _| | |_ _ _|_ | _ _ _|_|_ _ _|_ _ _| | _ _ _ | _| |_ |_|_ _ | |_ _ | | | |_ |_ | _ _| | _|_|_ |_ |_ |_ _ _ _ | |_ |_| | _ _ | _ _| | | _|_ _| |_| | _ _ _|_ | | |_| |_ | | | | |_ | _| |_ _ _ _ _|_ _ _| _|_ |_| _| | |_ | | |_ |_ _ _| |_ | | |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ |_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ _ _|_| | |_ _| | | | _ _| | _| | |_ | |_ _ _ _ | | _ | _| |_ _ _ | |_| | |_ | | _| _| | |_ | _|_ _ | | | | _ _| | |_|_ | | _ _| | _ _| |_ _ | | |_ | |_ _| _| _ _| |_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ _|_ _ _ _ _|_ |_| | _| |_ _|_ _ |_|_ |_|_ _ _| _|_ _| | | |_| | |_| |_ |_| |_| | | | |_ _ | _ _| | _ |_| |_ | _ _| | _ _ _ _ _ _| _| | |_ | | | | |_ | | | | _ _| | _|_ _ _ |_ _ | | |_ _|_ | | _| |_|_ | | | _ |_ | | | _|_ |_ _|_ _ |_ _|_|_ _ | | | | | _| | | | | | |_ | |_ |_ | |_ _ | | _| |_ _ | |_ | | | |_ | _ _ _|_ | | |_| |_ | | | | _ _| |_|_ _ _ _ _| |_ _|_ _ _ |_ _ | | | _ _ _ _| |_ _ |_ _| | _ _ _ _ | |_ _ | | | _| _ _| _ _ | |_ _ _ _ | |_ _ |_ _ _| | _ _| | |_ _|_ _ |_ _|_ | |_| |_ | | | _ _ _ _ | |_ _| _| _| | _| | |_ | | _| | | | |_ _ _|_ | | _| |_ _ _ | _| +| | _ | | |_ _ _ _ |_ | |_ | | _ _ | | | _ _ _ _ | |_|_ | | _ _ _ _ _|_| |_| | |_ _|_ | |_ _ | _ _|_ _| | |_ _ | _ _ _| | |_ _ _| |_ |_ | |_ _ _| | |_ _ _|_ | | _ | | _ _|_ _ _|_ _ | | _ _| | |_ _| | |_ _ _ | |_ | _| | | _ _ _ | |_ | _ | _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _|_ |_ _|_ _ _| | | _ _ _| | | _| |_ _ _ _ _|_ _ |_ |_ | | _ _| | _ _| | _ _|_ _ |_ | | |_| _ |_ _| |_ | |_ _ | | |_ _|_ | | _| |_ _ _ | _ _ _| | | |_ _ _ _| | |_ _|_ _ | _ | _| _ | _ _| | | | | _| |_ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| _|_ _ _ | | | | |_ | _| |_| |_ |_ _| | |_ | _| | | _ _| _ _ |_ |_ |_ _ _ | _| |_ |_ | |_ _| _ _|_ | _ _| | _| _ |_ |_ _ _ | _ _|_ _|_ | | _| |_|_ | |_ _ _| | _ _ | _ _ _| _ _ |_| _| _|_ |_| |_ |_| _| _ _|_ _ _| | |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _|_ | | | | |_ _ _ _|_ _ _ | |_ |_ _ | | | _ _|_ | _| |_ _ _ _|_ | |_ _ _ _|_ _| _ _ _|_ _ _|_ _ |_ _| |_| |_ |_ _|_ _ |_ _| |_ _ | | | | | | |_| _| _ | |_ _ | |_ _ _| |_ | _|_|_ | | | _ _| _ _ _| | | _ _ | | _ _ | | _| _| | |_ _ _ | |_ _ | _ _ | | |_|_ |_ _| |_ _ _ _| _ _|_ _ _ _ _| | |_ | |_ | |_ _ _ _| |_ _ _| | _|_ | _|_ |_ | | _ _| _| | | | |_ _| | | | | | _ _|_ _ _ | | _| | | |_| | | |_ |_ _ | |_ _| | | | | |_ _| |_| | |_ _ |_ _ _ _ _| | | | | | |_ |_ _|_ | |_ | | |_| |_ |_ _ _|_ _| | |_ _ _| _| |_ |_| |_ |_ _ |_ _ | _ |_ _|_ | | _| |_|_ |_ | | _ _ _ | _ _ _ _| | _ _ _| |_| |_ _| _ |_ |_ _ _| _|_ _ | | _| |_ _ |_ _| | |_ _| | | _| | _ _| | _| |_ _ |_ |_ _ _ |_ | _|_ _|_ _ |_ _ | _| | _| _| |_ _|_ _ | | _| |_ _ | |_ |_ _ | _| |_ |_ _|_ _ _| | _ _ _| _ _| |_ |_ | | |_ | +| | |_|_ _|_ _ |_ _ _ _| |_ | |_ _| |_ | |_ _| _ | | _| |_ _ | | |_ _ | _| _ |_ | |_ |_| |_ _|_ _ _| | _ _ _|_ _| |_ |_| _| | |_ | _ _| _ |_ |_| _|_ | _ _| _ _ | | |_ | |_| | | _ _ _| _|_| | _| | | _ _|_ _|_ |_| _| | |_ _|_ _ | _|_ | | | _| | _ _| | | | | |_ _ _| _| | | | |_ _ _ _| |_ | | |_ _|_ | |_ | _ _ | | |_ _ |_ | _ _ _| _|_ _ _ _ _ | | _ _ _ | _ _ _ _ _ _|_ _ | |_| |_ | | |_ | _|_ _ _ _ |_ |_ _|_ _ _ |_ _ _ _ _|_ _|_ _| | |_ |_ | | |_ |_ _ | _|_ _ _ | _|_ _|_ _ | | _|_ _ | _ _ _|_ _|_ _ _| _| |_ | |_ _| |_ _ _|_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| |_ |_ |_| | | _| _| _ _| _|_| _|_ |_ |_ | _| |_ _ _ |_ | | |_ _ _| _| |_ _| _| | | | | |_ | |_| _| _ _|_ | _| | _ _ _ | | |_ |_ _ | _|_ | |_| | _| | _ _ _|_ | | _| |_ _|_ |_ | | _ _| | _ _ |_ _| | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ |_| _| _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| _|_ _|_| |_ | _ | |_| |_| _| _ _| | |_ _| |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ |_| | _ _ |_ _ | _ |_| | | | | |_ _ _| _| | _| |_ _ _ _| _ _ |_ _ |_ _ _ _ _| |_ _|_ | | | | _ _| | |_ _ |_ _| _| |_|_ _|_ _ _ | |_ _ _ _| _ _| | | | |_| | |_ | | _|_ | _ _ _| | _ _ _ _ | |_| _| |_|_ _ _ | _|_ |_ | |_ _| |_ _ |_|_ |_| | |_ _ _| _|_ | | |_ _ _ _ _| _|_|_ |_ _ _|_ _| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | | |_ _ |_ _ _| | | _ _| | | _ _| _|_|_ _ _| |_ _| _ _ _| | _ _|_ _ _|_ _ _ _ _ | | _|_ _ |_ | | _| _|_ _ _ | | _| | |_| | | |_ |_ _ | _ _| | |_ |_ |_| | | | _ | _| _ |_ |_ | _| _ _|_ | |_ _| | |_ _ _|_ | |_ _ _| _ _ _| | | | |_ _| _ _| |_ _ _| | | _| _| | | |_ |_ _ _ _| | _| |_ _ _ _| _| | |_ _| | |_ _ _|_ | |_ | _ |_| | _| _ _ _ _ _ _ |_ _| | _ |_ |_| _| |_ _| _| +| |_|_ _ _ _|_ _ | _| _| |_ |_ | | |_ _ |_ _| | |_ _ _|_ | | | |_ | |_| _| _ _|_ | |_ | |_ _ | | _|_ _ _|_ | _|_ _ |_ | |_ | | _| _| _ _|_ | |_ _ | | _|_ | _|_ _| | _|_ _ _| |_| |_ _ | | |_ |_ _ _| |_ _ |_| _ _ _| _| _|_ | _| | | _| _|_| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ |_ _|_ | | _| |_ _|_ _ _ _ _| |_ _| | _|_ _|_ _ |_|_ |_ | _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ | | _| |_ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ |_ | | |_|_ | | _ _|_| |_ _ |_| _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | |_ _ _| _ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | _| |_ _ _ _|_ | | |_ _|_ _ _ |_ _ _| | | | | | _ _|_ _| |_ |_| | | | _ |_ | | | _|_ _|_ _| | | | _| |_ _ _ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _ _| |_ _|_ _ _ _ | |_ _ _ _ |_ _ _ _ _ _|_ _ | _|_ | | |_ _|_ | _| | | |_ _|_ | |_ _ |_ | | |_ _| _ _| |_ _ _ _| |_|_ | _|_|_ | | | _ _| | _ _ | | |_ _ |_|_ | _ |_ |_ | |_ | |_ _ _| _|_ _ | |_ _ | | | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _|_ | |_ | _ _ _| |_ |_ | _|_| |_| _ _ _| | _| _|_ | _ |_ _ _ _ | | _ | _ _ | _ _| |_ _ _| |_ |_ |_ |_ _ _ _ | |_|_ _ |_ _ _ | _ _| |_ _|_ _ _ _| _| |_ _| | |_ _ |_ |_ _ | _ _ _| _| _|_ _ | _ _|_| |_ | _| |_ | | |_ _ |_ |_ _| _ _ _| _ _| |_ _| |_| | _| _| _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ | | _ _ _|_ _|_ _ _ _| |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | | _ _| _| | | |_ _ |_ _| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | |_ _ _| |_ _ |_ _| _| _ _|_ | _| |_ _ _ _ _| |_ _ _| | _| _ _ _ | | _ | |_ _ _ | |_ _ _ _| | |_ _ _ _|_| | | | |_ _ _ _| | |_ _ _| _ | | |_ | _ _ _| | _| _| | _| _ _ | | | _|_ |_ _ _|_ _ _| _ _ |_ _ | _ _| | | _ _|_ | |_ _ |_ | +|_ _ | |_|_ _ _| | |_| _| _| _| _|_|_ | | | _ _| | _ _ _| | | _ _| | _| |_ _ _ _ _| | _| | _ _| | |_ _ _ | | |_|_ |_ _ |_ _ _ _| |_| _| |_ _ _ _ _| | |_ _| _| |_ _ _ _ _ _| | _ | _ _ _| | | | |_| _ |_ |_ |_ | | _ _ _| | | _ _|_ | |_ _| _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _ _ _| |_ _ _| | _ _| _ | |_ _ | | | | _ _ |_ _ | |_| | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| _| |_ | _ _|_ | | |_ _ |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _ _| _|_| _|_ _ | _|_|_ | | | _ _| _ _ _| | | _| |_ _ | _ _ _ _| |_ _ _| _ _ |_ _ | _ _| | | |_ | |_| _ _ _ _|_ |_ | | |_ _ _|_ _| | _|_|_ _ _ _ _ _ _|_| | |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_|_ |_ _| |_ _| | |_ _ _| |_ _|_ _ _ _ _| |_ | |_ _ |_ _|_ _ |_ _ | | _ _ _ _|_ | |_ _ _ _ _| |_ _|_ _ _ _|_ | _| | | |_ _ | _| _ _|_ | |_ |_| | _ _ |_ _|_|_ _ | | |_ _| | | _|_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _ _| | _|_ | _ _| _ _|_ _| |_ |_ _ | | | | | _ _| | |_ _ |_ | | |_|_ |_| _ _| | |_ _| _| _ |_ |_| | |_ | |_ _ _ | _| |_ _ | _| _| |_ | _ _ _| _ _ |_ _ | _ _| |_ _| | _ _ _| | | _ _ _|_ _ _ | | | _ _ _ _| _ _|_ _ _ _|_ _ _| | _|_ | _ |_ _ | | _ |_ |_| | _| _ _|_ _|_ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _| |_ | _ _ _ _ | |_ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ _ _|_| |_| _ |_|_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_| _ _ _| |_ | _| |_ _ _ _ _| | | _ _ _ _|_ _ _ _| | _| _|_ _| | | | |_ _ _ _ _| | | _ _ _|_ _ _|_ _ _ _ _|_ _ | | _| | _ _ _| | |_| | _|_ _ | _|_ _ _| | | | | | |_ |_ | | |_ _| _ | _ _ _|_ | | |_| |_ | | |_ _ _ _ _|_| _ |_ _ _| +| | _| |_ _ | | _ _| _ _|_ | _| _ _ _ _ _| |_ _| _ _ _ _ _| | _|_| | | |_ _ _ _ _ _| | _| | _ _|_ _ _ |_ |_ _| | |_ _ |_ | _ | | |_ _ |_ | _|_ _ |_|_ _ _ _ _| |_ | | _| | | | _ _| _| |_| _| _ _|_ |_| _| |_ _ | _| |_ | _| | | | _ _| _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| _| _ _| | | _|_ |_ _ _| | | _ _| | | |_ _ _| _ _| |_| | _| | | | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _ _|_| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ |_ _| | _ _| |_ _| _ _| _ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ _|_| |_ _ | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | |_ | _|_ _ | | _ _| _ _ _|_ | | |_| |_ | | |_| _|_ |_ _ _| |_ |_ _|_ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ | _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ | _|_ _| | | | _ _ | _ _|_ _ | |_ _|_ _ |_ _ |_ |_ _ _| |_| |_ _ _ _ | | | | _|_ _| |_ _| _ _| | | |_ _ _ _ _|_ _|_ |_ _| | _ _|_| _ _ |_ _ | _ _| | | |_ | |_ | _|_|_ | | | _ _| _ _ _| | | |_ | | _ _ _| |_ | | | _ _ _ _|_ |_ _| | | | | | | | _ _ _ | |_ | _|_ | _| _| _ _|_ | _| _| _ _|_ | | _ _|_ _| | |_ _ _| _| |_ | |_ _ _| | | | _ _ _|_ | | |_| |_ | | _| _|_ _ | _| |_ _ | | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _| _ _|_ _| _| | _| _ _|_ | | |_ _| _ _ _ |_| |_|_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _|_ _ |_ | |_ _ | | _| |_ _ | | |_ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| _ |_| _ |_ |_ |_ _ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ _ _ | |_ | |_ _| _ |_ _| |_| _| _ _ _ _ | | | |_ _ |_ _| | | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| | | | | | _| _| |_ | |_ _| | | _ _ _ _ _| | | _| _|_ _| |_| | _ _| |_ _ | _|_ _|_ | | _| |_ _ |_ _ |_ |_ _ _ | +| |_ _ _| | | |_ | | |_ | |_ _ _| | _ _ _ _ _ _ _| _ _ |_|_ | _ _| | |_ | |_ _| _ | _|_ |_ _ _| _ _ |_ _ | _ _| | |_ |_ | | | | |_| |_ |_| | _ _ _| | |_ _ | | _ _ _ _|_ |_ | | _|_ |_ | | | _| _| |_ _ _ _ _| _| | | _| | | | _| | _| |_| |_ | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| _ |_ _ _| | |_ |_ _ _ _ _ | | | _ _| |_ | _ _| | _ _| | |_ | |_ _| | |_ _ | _|_|_ | | | _ _| | | |_| | | _ _|_ | | |_ _ | | |_ | _|_|_ | | | _ _| | | |_| | |_|_ _ _| _| _ |_ _ _ _| _ _| | |_ _| | _|_ _| _|_|_ | | | _ _| | _ _ _| | | _|_ | | |_ _ | |_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_| | |_ | | |_| |_ |_ _ | _ _|_ _|_ | | _| |_ _ _ | _| _| _ _|_ _ _|_ | |_ _|_ _ | | | |_ _| _ | | _ _| _|_ | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | |_ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _|_ | | | |_ _ _| |_ _| | |_ _ _ _ _ _| |_ _ _ _ |_ _ | |_ _| _| _ _| _ _| | | | |_ _ _|_ _|_ _| _| _ |_ |_ | _ _| | _ |_ _ _ _| _ _| | | _ _ _| | | |_| |_ | | |_ _ _|_| | | |_ _ _ _ _| |_ _| | _| |_ _| _ _ _| _|_ _| |_ _| |_ | | _|_ _ _| |_ | | _|_|_ _ _| |_ _| _ | _| _| _| _| _ _ _|_ | | | | _| |_ _ _ _ _| | |_ _ _ _|_ _ | _ _ | | _| |_ | | |_|_ _ | _ _|_ _|_ | | _| | |_ _ _ | | |_ _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _| | _|_ _|_ _ _ _| |_ _ _ | _ _|_ _ _|_ _ _ _| | | |_ _|_ | |_ _| _ | | |_ _| _ _ _| _| _ _| | |_ _ _| | |_ _ _ | _ _|_ _ | _|_|_ | | | _ _|_ _ |_ | | |_ _| _| _| _ _|_ |_ | | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ |_ _ | |_|_ | |_ | | _| | |_ _ _|_ | | | _| |_ _ _ _|_ | _|_ _ |_ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_|_ _ _| _|_ _| _|_ | | | _|_ _ _ _| _ _ _|_ _| _| _ |_ |_| _| _ _ _| | |_| _| | |_ |_ _ | _ _| _|_ | | _ | +| | _ _|_| | | | |_ _ _| |_ | _ _| | | _| | _ _ _| | | |_| |_ | | | _|_ | _| |_ | _| _ _ _| | | |_| |_ | | | _| |_ _| |_ _| _| _| | _ _ _|_| | |_ | | |_ _ _| |_ | | |_ _ _| | | | | |_ | |_ _ _| _ |_ _ _| _|_|_ _ _| | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | |_ |_ _ |_ _|_ _|_ _ _ _ | _|_ _|_ | _ | | | _|_ |_ | | | _|_ _ _ _|_|_ | |_ _ _ _ _| |_ _| _ _|_ _| |_ | | _| | _ _| |_ _| _ _| | | | |_ _ _ _ _| |_ _| _|_ _| |_ | | _ _ _| |_ _ _|_ _ _ | | |_ _| _ _ _| | |_ |_ _ _ _ _| |_ _| | _ _| |_ | |_ | _ _| |_ _| _ _| _ | | | _ _| |_|_ _ _| _ | _| _ |_ |_| | _ _ _| |_ |_ | _ _| | _ _ _| | |_ |_ _ | _|_ _ _| | _| _ _|_ _ _| _ |_ _| | | |_ _ |_ _| |_ _ _| _| |_ | | _| | | |_ _|_ | _ _ _ | | |_|_ |_ _ _ _| | |_ | _|_|_ | | | _ _| _ _ _ _| | | _| _ _| | | |_ _ _ _ _ _ |_| |_ _ _ _ | |_|_ |_ _ | | |_|_ | _ _| | _| | _ _| | _|_ _ | _ | _ _| _| _ _|_ | |_ | | |_| | _| _ |_| | |_ | | |_ _ | |_|_ _|_ | | _| |_ _ | _| |_ _ _ _| _ _ _ _ _ _| | _ _ _| | _ _ |_ _ | | | | |_ _| _| _ _|_ _ _| |_ _ _ | |_ _ _ _| _|_| _|_ _| _|_ _ _| | _| | |_ | |_ _ _ _ _|_ _ _| _ _ | | | | | | | | |_ _ _| | |_ _ _| | | _ | | |_ | |_| _| |_ | | |_| _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ _|_ _ _ _ _| _ |_ | |_|_ _|_ _ |_ _ |_| _|_ _ | _| | | _| | | _ |_| | _ _ _| |_ _ _ _ _| |_ _|_ _ | |_ | | | | | | | _| |_ _ _ _ _|_ _ _| |_| _| | | |_ _|_ | _ _ _ | | | |_ _| _|_ _ _ _| | _ |_| _| |_ _|_ _ _ _ _ _|_|_ _ _|_ | |_ _ |_ _|_ _ _| |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _ _ |_ _ | _ _ _ | |_|_ _ _ | |_ _ _ _ | | _| _ _|_ | | _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _| | | +| _| | | _ _|_| | _ _ _|_ _ | | | |_ | _| |_ _ | _|_|_ _|_ | | _| |_ _ _ |_ _| _| | |_ _| |_ _ | |_|_ _|_ | | _| |_ _| | _|_ _ _ _| _| | _|_ _ | _ _|_ _ _| |_| _| _ _|_ _ |_|_ | _ _ _| | | | |_ | |_ |_| _| |_ _ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | _| |_ |_ |_| | | | _|_ _| | _| |_ _| |_| |_ _ | | _|_| |_ | _ | _ _| |_ _ _ | _ | _|_ | _ _ _ _| |_ | |_ _ _ _| _ _| | _| | _ | _ |_ | | | | _ _ _ _| |_| _ _ |_ _ _ | |_ _| |_ _|_ _ |_ _ |_ _ _| | | | | | _|_ | |_ _ _| |_ |_ _ _ _| _ _| _| | | |_| | | |_ _ _ _ |_ _| |_| _| _ _|_ | |_ _| | | |_ | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _|_| | _| |_ _ _ _ _ _ _|_ | _|_|_ | | | _ | _ _ _|_ |_| _| |_ _ _| |_ _|_ _ _ _ _|_| | | |_ _|_ _|_ _ |_ _ _|_| _ _ _|_ | |_ _ _ _ _| |_ _| _ _ | _ | | | | _|_ _ _| | _| _ _|_ | _ _ | _| |_ _ | _ | _| |_ | _|_ | _|_ _| |_ | | | _ _|_ |_ _ | _| |_ _ _ _ _| | | | | | _|_ _ _| _| _| | | _| |_ _| | | | _| | |_ |_ _ | |_ _ _ _ |_ _ _ _ _ _ _| _ _ |_ _ | _ _| | | | _ _ | | | | | |_ | _ _| | | | _ _ |_ _|_ _ | | | _| _ _ _| _ | _|_ _| | |_ | |_ | | _ _|_| |_ _ _| _|_ | | _| | | | |_ _ _ _ _ _ _ _| | _|_| | | _| |_|_ | |_ |_ | |_ _ _|_ _| _ _ _ _| |_ | _|_|_ | | | _ _| | | | | _| |_ |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ | _| | |_ _ _|_ _ |_ |_ _ | _ _| _ | | | _ _| | | | | |_ | | _| _ _ _ _| _ _ _ | | _ | | | |_ _ _| |_| |_ _| | |_ _ _ _| _ | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _ _ | | _ _|_ _| _|_ _ _ _| _ | | | _ _ _ _ | |_ _| _ |_ _ _| | _ _ _ _|_ |_ _ _| _ | _|_|_ | | | _ _| _ | _| | | _ _ _| _| | |_ _ _| | |_ _ _ |_ _|_ _ | | | |_ | |_ _ _ _ _|_| | | | | |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | | +|_ |_ _|_ _| | _| _ _ _ | _| | | | | | | | |_ _| | | _ _ | | |_ |_ _ | _ _ _ _| _| | _ _ _| | |_ _ _| | |_ |_ _ | |_ _ |_| _ _ _|_ | | | _| | _ _ | _ _| _ _| | | _ _| | | | | _ _| |_ |_| _|_ |_ | |_ _ _ | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _| _ | _| |_ _ _| | _ |_ | | |_ |_ _| _ _ _| |_ _ _| |_ _| _| _| _ |_ |_ |_ | | | |_|_ | | |_ _| _| | _ _| | |_ _| _ |_ |_ | |_ _ _ |_ _|_ _ | | _ _|_ _ |_ _ _ | | | | |_ _|_ _| | |_ _ _ _| |_| _ |_ |_ | | | | |_|_ |_ _|_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| | _ _| | _ _|_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _ |_ _| _ _ _ _ |_ _ _ _ _| |_ _| _|_ _ | _ _| _| _| _ | | _ _ | | _| |_|_ _ _ _ | |_ _ | |_ _ | | | | _ | _ _ | _| _| | _|_ _| |_| | | | _ _| | _|_ _ _ _ _|_ | | |_ _ _| _| | | | |_| _ _| |_ _| |_ _ |_ _| | | |_|_ |_| |_| | | |_ _ | | _| | |_ _ _| _ _ |_| _| _| |_ | | _| _|_|_ _|_ | |_|_ | | _ _|_| |_ _ _ |_ | _ _ _|_ | | |_| |_ | | | | | |_| | |_ _| | | |_ | _|_ _| |_| |_ _ | | _| |_ _| | |_|_ |_ _ |_ |_ _ _| _ |_ _ |_ _| _|_|_ | | |_ _ | | _ _ _ _| | | _|_|_ | _ _ _ _ | |_ _ _ | _|_ |_ | _ _ _|_ |_ _ _| _ _ |_ _ | _ _| | _|_|_ _ _ _ _| |_ _|_ _ _| |_ _|_ | |_ | | _ _| | |_ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | | | |_|_ _ _ _ _ _ | _| |_ _ _ _| |_ _ _ _| | | | |_ | _| | | | | _|_ _| _|_ _ | _ _ |_ _ _| | | | | | _| _ |_ |_ | |_ | |_ | _ _| | | | | | _ | | _ _ | _| _| | |_ _ _ _ _ _|_ _ | _|_ _ | _ _ _| _ | | | |_ _| _ | | _| |_ _ |_ |_ _ | | |_ _ _| |_ | _ _| _|_ _ _ _ _| |_ _| _ _ | | | | | |_ |_ _ _ |_ _|_ | _ _| |_ | _ _|_ _| _|_ _| | |_ |_ | _ _ _ | |_ _| _ _ | |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_| | | +| _| _ | _| | | _|_ |_ _ _| |_| | |_ _| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ |_ _ _|_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _ | |_| |_ _|_| _|_ _ _| |_ _ |_ | _| |_| | _ _| | |_ | | |_ _ _| _| _ _| |_ | |_ _|_ |_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ _ |_| | _| | _ _|_ |_ _ _|_ _ _ _ _| _|_| _ |_ | _| | _| _| _ _|_ |_ | |_ |_ _|_ _ |_ _| |_ _ _ _| _| | _ _|_ |_| _| _ _|_ | _ _ _ _|_ _ _ _ |_ _| | _ _ _| | _| | | |_ _| | | |_ _ _ _| _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ | _| |_ |_ _ |_ _| | | |_ _ _| _ _ _ _ _| | | _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ |_ _ | |_ _ | | _| _ |_ _ _ |_ _ _| | | | | |_ |_ | |_ _| _| | | |_| | |_ _ _ | |_ _| _ _| | |_ _ _ _| |_ _| | | _|_| | |_ _ | |_| _ |_ |_ | |_ _| _ | |_ _ | |_ _ _| _ |_ _ | | | |_ | _| _ |_ | | |_ _ _ _ _|_|_ _ |_ _ _|_ _ _| | |_ | | _|_| _ _| | _ _ _|_ | | _| |_ |_ | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | |_ _ | _ _|_ _|_ | | _| |_ _| _|_ _ _ _|_ _ _ _|_ _ _| _ | _| _ _ _| | _| _|_ | _|_ | | _ _ | | _ _ _ _|_ |_ _ _| _| _ _| |_ _| _ _| |_ _| _ _ _| |_ _ _| |_ _ | | _| |_ _ | _|_| | |_ _| _ _ _ | _ _ _|_ | | |_| |_ | | | _ _ _ _| _ _ _ _ |_ |_ _ _| |_ | | | _ _|_ | | |_ | | | _|_|_ | | | _ _| _ _ _| | | |_ _| |_ _ _ _ | |_ _| |_ _ _ _ | _ _| | _ | _ _| |_|_ _ _ |_ _ _| | _|_ | |_ | |_ | _ _| | | | |_| _| _ _|_ | | |_ _|_ | | |_ | | | |_| |_ | |_ _| | |_ _ _ _ _|_ |_| _ |_| _ _| | _ |_ _|_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | |_ _| _| _ _|_ _ _| | _| _ _ _ | _ | _ _ _| | _|_ _| |_ | | | | | | _| | _| | _ _ | | | | _|_| _|_ | |_ _ _ _|_| |_| |_ _ _ _ _| _|_ |_ _ _ _| _ _| _| |_ | |_| +|_ _ _|_ _| | _ _|_ _ _ |_| _ |_ | |_ _ _ _| | |_|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ _ _| _ |_ _ _ | |_ | _| |_ |_ _ | | | | | _|_ _| | _ _ _| _| | |_ | |_| _ _|_ | _| |_ | _|_|_ | | | _ _| _ _ | _| | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _| _ _ _ _| _ _ _ _ | |_ _ _| |_ | | | |_ _| _| |_ _ _ _ _| |_ _| | | _ _ |_ _ |_ |_ _| | _| | | _| _| |_ _ _ _ _| | _ _ _ _ | |_ _ _|_ _| | _ _|_|_ _ _ _|_ _ _ |_ _| |_ _ | | | _| |_ _ _ _ _| _|_ _ |_ |_ _ | _|_ |_ |_| _ _| | _| |_ | _|_ | | _ _ _ _ |_| | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ | _|_ | _| |_ _| | |_ _ |_ _ _ _| | | _ _| _|_ _|_ _ | _| _|_ _ | _ _ _|_ _ _|_ _ |_ _|_ _ | | _ _|_ | _ |_ | _| | | _ _| |_ _ _ _| |_| _| _ _|_ | | | | _| _|_ _ | |_ |_ _ _ _ _| _ _ _ | | |_ |_ _| _| _| |_ _| |_ _| | _ _ _ _ | | | _ |_| _| | | | _ _| _ _| _ _ _ _ |_ _ _ _ _|_ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| |_ _| | | _ _| | |_ |_ _ | _ _ _ | _ _ _ _ | |_ _| |_ | | | _ |_| _| _|_ _ _ |_| |_ _| | | |_ _ | | | _ _ _| | |_ _ _ _| _ _| _| _ _ _ _ _| _|_ |_ _ _| _| | |_ _ _| | | | _ _| |_|_ _ |_ |_ _ _|_ _ | _|_ _|_ | | _| |_ _| | _ _ _ _ _| |_ |_ _| _ |_ |_| |_|_ _| |_ _| | |_ _|_ _ _ _ _| |_ _| |_| | _ _| | | | _ _ _ _| _| |_ _ | | _ _ |_|_ | | _ _|_ _| |_| _ _ |_ _ | _ _| | | _ _| |_ _ _ _ _| | | | | |_ | _| |_ _ _ _ _|_|_ |_ _ | |_| | _| | |_ |_ _ | |_ |_|_ _ _ _ | |_ _ | | | _| | _ _| | _| _| |_ | | | _|_|_ | | | _ _| | _ _| | | |_ | |_ | _ _| | | _| _| |_ _ _| | _| |_ _|_ | _ |_| _ |_ |_ _|_ _| | |_| | | | | | | | |_ _ |_ _|_ _| |_ _ _| | |_|_ _ _ | _ _|_ _ _| _ _ _ _ _ _ _ _ _|_ _ _ | | | |_ _ _ _ _| |_ | +| | _ | |_ _| _ _ |_| _| _ _|_ |_ _ | | | _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ _ _ | | | _ _ _ _| _ _|_ _ _ _|_ _ |_| |_| | |_ _ | | |_ _ | _| _| | | | |_ |_ _|_ _ |_ _| _| _ _|_ _ _ _ _| |_ _| _ _| | _|_ | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| |_ | _ |_ _ | | _| |_ _ | _ _| _| | |_ _| |_ _ _ _ _ _ _ | _| _ | _ _| | |_ |_ | |_ _|_ |_|_ | |_ |_ _ |_| _ | | _| |_ _ |_ _ _ _ |_ | _ _ _ _ | |_ _ _|_ | | | |_ | |_ _ _| |_ | | | _|_ _ _| | | | | | | _ _| |_ _ _| _|_| _ _| |_ _ | | | _ _| | _| | | |_ _|_ | _|_ _ _ _| | |_ _ | _| _ _| | _ _| | |_ _ _ _| |_| |_ _|_ | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_|_ | _ |_ |_ | _ _| |_ _ | |_ |_ _| |_ _ _ | | _| |_ _ _ _ _| | |_ _ |_ | | _|_ _| _ _ _ |_| |_ _| |_ _ _| _|_ _ |_ _ | _ _| |_ _ | | _| |_ _| |_ |_| _|_ _| |_| |_ |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| |_| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ | | _| |_ _ | |_ _ |_ |_| _ _ _| _ _ |_ _ | _ _| | |_ _ _ _| |_ _|_|_ _ | _|_ | | | | |_ _ _ _ | _ _ _|_ _ | | | _| | _ _ _| | |_ _| |_ _ _ | |_ | _ _| | |_ _ _| | |_ |_ _ | _ _ _ | _ _|_ _ _| _| _| _ _|_ |_ _ | |_ _ _ _ |_| | | _ _ | _ | _ _|_ |_| |_ _ _| |_| | | |_ _ _ |_ _ _| _| | _|_ | | | | | | _ _ _ _|_ |_ | | | |_| |_ | |_ _| |_ _ _ | |_ _ _|_| |_ _ _| |_ | _ _ _ _ _ _| _ _|_ | |_ | | | _| |_| |_ | | _ | _| |_ _ |_ _|_ | |_ | | | | _| |_| _|_ _| | |_ _ _ _ _| |_ _| | | | | | _| | _|_ | _|_ | _|_ | | _| _| | _ |_| | | _ _ _|_ |_| _| _ _|_ | | _| | _|_| |_| | | | |_ _ _ _| _ _ |_ _ | _ _| |_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ |_ _|_ _ |_ _ |_ _ | +| | | | | |_ _ _ _ _ | | _ _|_ _ _ _ _ _ _|_ _|_ _| _ _ | | _| | |_ _ _ _| _ _| _|_ | |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ _|_ _ | | | |_ _ _| | | _| _| |_ _ _| | _ _ _ | | |_ _| _ | _ _ _| _ | _ _| _ _ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | _ |_ _ | _ _| | _| |_ _ _| | |_ _ _|_ | | | | |_ _ _ |_ |_ |_ | | _ _| _| | | _| | | _ _| _ _| |_ _ _ _| | |_ | |_ _ _ _|_ |_ _| | |_ _ _|_ | |_ _ _| | | | |_ _ | | _| |_ _ | _ _| | |_ | |_ | _ _ _| |_ _ _|_ | |_ _ | _ _| | | |_| |_ _| |_ | _ _ _| _|_ _| _ _ _ _| | |_| | | _ _|_ _ _| |_ _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_ _| _|_ | |_| | | | | | _ _|_ _ _|_ _ _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| | | | | |_ _ |_| | _| | _|_ _ |_ _| | |_ _ _ _ _| |_ _ | _|_ |_ _| _ _ _ _ _ _|_ _ _|_ _ |_ |_| _ _| |_ _ |_ _|_ _| _ |_ | |_ _| _| |_ | _ _|_ | | _| | | | | |_ _| _ | | _| |_ _ | |_ | | |_ _|_ | |_ _ _ _| | | |_ _ _ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | |_ _ _| | |_|_ | | | |_ | | _ _ _| | | |_| |_ | |_ _ | |_ _ _ _ _| | _ _ _| | | |_ _|_ _ |_ _ _|_ _ | _ _| |_ _|_ | | | _ _ _| | | _| | _|_ _| | | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | _ _ _| | _| |_ _ _ _ _| _ _|_| |_ _ | _| | |_ |_ _ | | | |_ _ |_ _| _ |_ |_ _ _ _ | |_ _ |_ | |_ _ _ |_ _| | |_ |_ _ _| |_ | | |_ _|_ | | _| |_ _ | _| |_ _|_ _ | | _ _ |_ | _| |_ _ |_ _ | |_ | |_ | | |_ _ _ _|_ _ _|_ _ _| | |_ _|_ _ _|_ | | _ | | | | | | | | | | |_ |_ _ _ _| | | _ _ _ _ _|_ _| | |_ _ _| |_ _ _|_ _| |_ _ |_|_ | | |_ _ | | | _ _|_| | | | | _| |_ _ _ _ _|_| |_ _ |_ _ _ _ _ _| | _ _| _ _ _| _| | |_| |_ | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _ |_ _ |_ | | +| |_ _| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| |_ _|_ | _|_ _ _ _| | |_ _ _|_ | _| | | |_ _|_ |_ _|_ _ _ _ | | |_ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _|_ |_ _ | _|_ _|_ _| _| _ _ _ _| _ _ _ _|_|_ _ _ _ | | | |_ _ _ _| _| | _ _| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | | |_| |_ | |_ |_ | | _| _ _ | | |_| |_ _| | | | _| _| | _|_|_ | _| | | _| _| |_ | _ _ _ _|_| |_ | _| _| _| |_ _ _ | | _ _| _| _ _| | _| _ _ _| | | _| | |_ _ _| | | | _|_ | |_| _| |_ _ | | |_ _ |_ | _|_ | _ _|_ _ _| |_ | | | _ _ _| |_ _ _ _| _ | |_ _ _| | | _ _ | | _ _ | | |_ _ |_ |_ _ _ |_ _ | | | |_ _ _| | | |_| |_ _ _ _| _ _ |_ _ _ _| | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| _ _ | |_| |_ | |_ | _|_ _ _| _|_ _| _ _|_ | _ | | _ _| _ _|_| |_ _ |_ _ | | _ _ _ _ | |_ _ _ | _ _ _|_ |_ _ _ | | | | _|_ _ _ _ _ _|_| _|_ _ _ _ _| |_ _ _ _|_| |_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_ _|_ _ _ _ _|_ _ _ _ _ _| |_ _|_ _ |_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _ _| |_ _ _ _ _| |_ | |_ _|_ _ | |_|_ _|_ | | _| |_ _ _ _|_ _ | | | _|_ _ _ _ _|_ | _ _ _| _ _ _ _ _ _ _|_ _ _ _ _ _| | _| _ _|_| |_| |_ _| |_ _ | | | |_ | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_|_ | _| |_ _| _ _ _ _ | | |_ _ | |_ |_ _ _ _| |_| | | _| | _| _| _ _|_ | | _ _|_ _ | |_ _ | | _ | | _ |_ |_| _| _ _| _ _| | | | | |_ |_ _ | |_ _ |_ _ _ _|_ _| |_ _| _| _|_ _ _ _ _| _ | |_ _ _| |_ _ _ _|_ _ | _ _ _ _ _ _|_ _ _ _ _ _ _| |_ | |_| |_ _| | _|_ _ _ |_ _ _ _| | _| |_ _ _| | | _| _| _ |_ |_ _ | |_ | | |_ _ |_ | | |_ _|_ _ _| _ _ _| | | |_| |_ _| _ _ _ | |_ _ _ _| | | | |_ _ | | |_ _|_ | | _| |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| | _|_| | +| | _ _ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_ _ | |_ _ _| |_ _|_ _ _ _ _| _ _ _ _ | |_ _|_ _ |_|_ _| _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| |_ _| |_ _| _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ |_ _| _|_ | _| _| _ _|_ | |_ _ _ | | | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ |_ _|_ | | _| |_ _ |_| | | |_ _| _ |_ _| _ _| _ _| |_ _ _| _|_ _ _| | |_ _ _| |_ | | | | | |_ | _ _ _ _|_ |_| |_ _| _| | |_ | |_ _| | _ _ _| | | | | _| | _|_ | _| _ |_ | | | |_| _ _ _ _| _| |_ _ _ |_ _|_ _ |_| _|_ _ | | | | _ _ _ _|_ |_| |_|_ _ | |_ _ | | | |_ _ | _|_ _|_ _ |_|_ _| _| |_ _|_ _ _ _ _ |_| _ _| | _ _| | _| | _ _ |_ |_ _ _ | _ _ _| | | |_| _ _| |_ _ _ _ _ | _|_|_ | | | _ _| _ _ |_ | |_ _ _ _| _ _|_ | |_ _|_ _|_ _| _ |_| | | _| _| _|_ _| |_| | _|_ | | |_ _ |_ _| | |_ _ | | _| |_ _ | _| _ _| |_ | |_ _| | | |_ | _ _ _ _ | |_ _ | _ _|_ _ _ | _ _| | _|_|_ | | | _ _|_ |_ | |_ _|_ | | _ _ _ | | _ _ _ _ _ |_ _ | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ _ |_ _ _ _| |_ _ _ _| | _ _| | |_| _ | | |_ |_ _ | _ _ |_ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _ _| _| |_| _ |_ |_ | _| _| |_| | |_| _|_ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_| |_ |_ | | _|_ | _ _| |_ _| _ _|_ | | _ _ _ _|_ |_ _ _| | _| | _| |_ _ _ _ _| | | | _| |_ _ _| |_ | |_| | | | | | _| | |_ _ _| |_ _|_ | |_|_ | | _ _|_| |_ _| _ _| | _ _ _ _| _|_ _ | |_ _| | _ _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | _|_ _| _ _|_| _ _ |_ _ | _ _| |_ |_ _ _| _ _| |_ _| _| _| _ _|_ | |_ | |_ _| |_ | |_ | |_ _|_ _ _ | _ _ _| | | |_ |_ | | _|_ _ |_ _ |_ _| | _ _ _|_ _|_| |_ _| | | |_ _ | | |_ |_ _ | _ _| | _|_|_ | | | _ _|_ _ _| | |_ _ _| | | | _ _| _ _ _| +| | | |_ _| | _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _|_ _ | _ _|_ _ | |_ _ | | | | | _ _ | _ _| |_ _ _ _ | | |_ _ | _| _| |_ _| _|_|_ | | | _ _|_ _ | | | | | |_ _ | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | _| | | | _| |_ _ _ _ _|_ | _| |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_ _ | | |_ |_ _ | _ _| | | |_ _| | _| | |_ | | _ _ _| | _ _|_ |_| _ |_ |_| | _| | |_ |_ _ _| |_ | _ _ _|_ _ _|_ |_| |_| _| | | |_ _| | |_ | _| | | _| | | _| |_ | | | | |_ _| _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | _ _| |_| | _|_ _| | | |_ _ | |_ | _ _ |_ _ |_ |_ _ _ _ | |_ _| _|_ _ _| _ _|_ | | | |_ | | | |_|_ _ | |_|_ _|_ | | |_ _ | _ _ |_ _ _ _ _| |_ _| | | _|_ | | | _ _ _ _| | | |_ _ _ | _ _ _| |_ | |_| |_ _ _ _| _| _ _ | _| | _ _| |_ _| _ _| | | _|_ _| | |_ _ _|_ | | |_ | _ _|_ _ _| |_ _| _|_|_ | |_ _ | | _| |_ _ | |_ |_ _ _ _ _ _ _| |_ _ _ _ _ _| |_ _| _ |_| |_ | | | | _| _| _| |_ _|_ _|_| |_ | _ _| | | _| | | |_ _|_ | |_| | | | |_ _| | |_ _| _ _ _| | |_ _ | |_| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _| _| _ _|_ | | |_ _ |_ _ _|_ _ _ _ _ _ _|_ _ | _| |_ _ _ _| _ _| _ _| |_ | | _| _| |_ _ _ |_ _ _ _| _ _| | _| |_ _ _| |_ | _| | |_ _| |_ _ _ _ _ | _ _|_ _|_| _| _ _ _ _ _| _ _|_ _ _|_ _ _ |_ | _ _| | | _ _|_ | _ _|_ | | |_ _ |_ | _|_ _ _| _ _ _|_ _| |_ _| _ _ _| | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| _ _| _| _ _ _|_ | | |_| |_ | | | |_ _ |_ | _ _ _ _| _| |_ _ _ _ _|_ | |_ _ _| _ _| _|_ _| _ _ |_ _ | _ _| | |_ _| _| | |_ |_ _ |_| _ _|_ _ _ | | _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _ _ _ _| |_ _| _ _ |_|_ | | | _ _ _| |_ _|_ |_ _| _ | +| |_ _| | _ _| | |_ _ | _|_|_ | | | _ _| _ _ _ _| | |_ | _| _ | _ _| _ _ _ _|_ |_ | |_ _| | |_|_ _| | |_ _|_ _ _|_ | |_ _ _|_ _ _| | |_ |_ _ _ _ _ _ _ _| |_ _| | _|_ _| | | |_| |_ _| _ _|_ | |_ | | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_|_ _ _| | | | |_ _ _| _ _ _|_|_ |_ _ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | | |_|_ | | _ _|_| |_|_ _|_ _ | |_ _| _| | | _| |_ _ | _|_ _| _ |_| _| _ _|_ | |_ _ |_ |_| _| _ _|_ _ _| | | _ | |_ |_ _ _|_ |_ |_ _| | |_ |_| | | _|_ _| | | _| _ _|_| |_| _ |_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _|_ _| | _| _| | | _|_|_ | | | | _| |_ _ _ _ _| |_ | _ _| _| |_ _ | | |_ _ |_ | | | |_ _| _|_ _ _| |_ _ _| | |_ _ | | |_| | _ _|_| |_ _ _ |_ _| _ _| | | _ _ _| |_| _ |_| _| | |_ _| _ |_ _ _ _| _| |_ | _ _ _|_ | _| | | _|_ _ _ _| _ _| _ _ _|_ _ _ | _| _ _ _ | | |_ |_| | | _ _ _| |_ _ _ _ _| | _| | |_ _ _| _| | |_ _ _ | _ _ _ _|_ |_ _ | _ _| |_ _ |_ _ _| |_| |_ |_ _|_ _ _|_ | _ _ _ _|_ |_| _| _ |_|_ _ _| |_ _|_ _ _ _ _| |_ | |_ _| |_ _|_ _ |_ _| _ _ _ _| |_ |_ _ |_ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _ _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_| |_ _ | | _| |_ _ _ _ _| |_ | _ _ _ _ _| _ _ _ _ | |_|_ _ | | |_ | _| | |_ _ _ | _|_ _| _| _ | |_ | | | | |_|_ | _| _| _ _|_ _ _| _ _| | |_ | | _|_ |_| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | |_ | | | | | |_ _| | _ _| |_ _| _ _| _| | _ _ |_ _ _ _ _| | _ _| | |_ | _|_ | _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| _|_ |_ _ | _ |_ _|_ | | _| |_ _ | _ | | | _ _ | |_ | | _ _|_ _ |_ | | | _| _ _ _| | | |_| |_ | | |_ _| _|_ _ _ _ _|_ _ |_ _ _ _ _ _ _|_ _|_ _ _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ | | _ _ _ _ |_ _ _|_| |_ | _ _| _ |_ | _| | +| | |_| |_ | |_ | | |_ _ _ _ _| |_ _| _| |_ | | | | |_ _| | | | _ _|_ _ _ _ _ _ _ |_ _ _ _|_ _ _ _|_|_ _ _ _ | |_ _| _ _ _ |_| _ _| |_ _ _ _| |_ _ _ _ _ |_| | | | _ _ _| |_ _| _ _| | | _| _| | | |_ _| _|_|_ | | | _ _|_ _ _ | | | | _ _ _ _ | | | |_ | _| _|_ |_ _ _ _ _| |_ _| _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| _|_ | _ _|_ | | |_ _ | | _| _| _| _| |_ |_ _| | | _ _ _| | | _| |_ _ _ _ _|_ _ | | | | _ _| | | _|_ _|_ _| |_ |_ _ _| _ _ |_ _ | _ _| | _|_ | |_ _| |_| _| | _ _| _ |_ |_ | _ _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | | _ _ _ _|_ _|_ _| |_ _ _ _ _| |_ |_ |_ _ _ | _ _| | |_|_ _ |_ _ _| | | _| |_ | | | | |_ _| |_ _ _| _ | _| |_ | _|_ _ _| |_| | | | _|_ | | |_ _ | |_ | |_ _ _ _ _| | _| _ |_ |_ |_ | | _ _| | | _ _| | | |_ _| | |_ _ | _| | _| | | |_ | | |_ _ _ | | | | | _ _ | _| | | |_ _ _| _|_ _ _ _ _|_ _ | _ |_ | _| | _ _ _ | | |_ _ | _|_ _ _| |_ | | | _|_|_ | _ _| _| _ |_ |_ |_ _ _ _ | |_ _ _ _| |_ |_ |_ |_| _ _ | | _ _ | _| _| |_ _| |_ | _ |_ _ | | _ _ _ _|_ |_ _ |_ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ _ | _| |_ _| _|_|_ | | | _ _| _ _ |_ | | _| |_| | |_ _ _ _ | _ _| |_ _ | |_ _ | | _| |_ _ | _|_|_ | |_|_ |_ _|_ _ |_ _| | _ _ _| _| |_ _|_ | | _| |_ _|_ _ |_ _| _ _| | | |_ _|_ _|_ _| |_ _| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _ _| | | |_ _ _ _| _ _| _| | |_ _ |_ _ _| _ _ |_|_ | _ _| | | |_ | |_| _ _ | _|_|_ | | | _ _|_ _ _ | | | _|_ _ |_ _| | |_ _ _| | |_ |_ _ | _|_ | |_ _| | _|_ | |_ _| |_ |_| _ _ _ _ _|_ _|_ |_ _ | | | |_ _|_ | | _| |_ _ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| |_ _ _| | _| _ |_ |_ | _ _| _| |_ _| _| | +| _|_ | | _| |_ _ |_ _ _ |_ _ _ _ _ _|_ |_|_ _| |_ _ |_ _|_ _|_ | _ _ _ _ | |_ _ _| _ | |_ _ _ _ | _| |_ _ | _| | |_ | | | _ _ _ _|_ |_| _| _ _|_ | | | |_| _ |_ |_ | | |_ _| _| | _|_ _ _|_ |_ _ _ _ _| |_ _| _ _ _| |_ | | |_ _ | | _| | _| _| |_ _ _ _ | | | |_ _ | | _ _| | | | | | | | _ _| _| | | | |_ _ _ | |_ | |_ _| | _ _| |_ _| _ _| |_ _| | | _| |_ |_ |_ | | _|_ _ _ _ _ | | _ _ _ | _ _ _ _ _|_ _|_ _ | _|_| | |_ _ _ _ _ _ _| | _ _ _|_ | | |_| |_ | | _ _ _| _ _ _|_ |_ | |_ _| _| _ _|_ | |_ | _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _| |_ _ _ _| | _ _| |_ _|_ _ _| | _| |_ _ _ _ |_ | |_ _ _ _ _ _ _ _| | | | | | |_ | |_ | |_ _ _ _ _| _|_ _ | _|_ _ _ | | _|_|_ | _ _| |_ _| _ _| _ _|_ _ | | _ _|_| _| _ _|_ | |_ _| | _ _| | | | | _ _| |_ _| | |_ _| _| | |_ |_ _ _| |_ _| |_ | |_ _| |_ _ _ _ _| |_ _| |_ _ _| |_ _ _| |_ | | _| _ _ _ |_ _| |_ _ _| | | _| | | | | | |_ _| _| _ _|_ _ _| | | | _ _ _| _ _ _| _| _ _|_ | _ _ | _| |_ _ | | _ _|_ _ _| |_ |_ | | _| |_ _| | |_ _ _ _ _ _ |_|_ |_ _| |_ | | |_ _ _| |_ | _| | |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ | | |_ | | |_ _ _ _ _| |_ _|_ _ | _|_ | | | _ _| | _|_ | _ _| _| _ |_ |_ _|_ _|_ _| | |_ _ _|_ | | | _ _ _| | _ |_ | |_ _ | |_ _ | |_ _ |_ | _| |_ _| | | |_ _ |_ | _|_| |_| |_ _ _| _ _ |_ _ | _ _| | _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ |_ _ | _ _|_ _| |_ | | |_ _ | | _| _| _ _ _| | | |_| |_ | | | |_ _ |_| | _| _ _| |_ _ _ _ _| |_ _| | _ _ _|_ | | | | |_| | _|_|_ _ _ | |_|_ | | _ _|_| |_|_ | _| _| _| | |_ | | | _ _ _ _ | |_ _ | | _| | | | |_ |_ _ | _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| _|_ _ _ _| _ _| _|_ _ | _| | _ |_| _| _ _|_ |_ _| | |_ _ _ | |_ _| +|_ | | |_ |_ _ | _|_ |_ _ | | _ _ _ _| _ |_ |_ |_ _| _ _ | |_ _ | | _| |_ _ | _| |_ _|_ _ | | | |_ _ _| | | | _| |_|_ | | | |_ _ _| |_ | | _ _ _ _| |_ _| _| _ _|_ | |_ _|_ _ |_ _| |_| | _ _ _ _| | _ _ _ | |_| | _ _ _| |_ _| | | _ _|_| _| | |_ _| _ _| | | | _|_ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _ |_ _|_| _| _ | |_ _ _ _| _ _| | | | _| |_ |_ _ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _ | _|_ |_ | _ _ _|_ _ | _ _|_ _|_ | | _| |_ _ _ |_ _ _| |_ | |_ _ _| |_ _ _ _ _| | _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_| _ _ |_|_ | _ _| | _ _ _| | _ _| |_ |_ | | _| | | |_ _ _| _ _ _ | | | |_ | | |_| _|_ | |_ | _ |_ _ | _| | _ _|_ _| |_ _ _| |_ _ _ _| _ _| | _| | | _ _|_ _ | _| |_ _ _ _ _| | | |_| |_ | | | |_|_ | | _ _| | | _| _|_ _|_ _ |_ _ _|_ | _ _|_ _ _ _ _ _ |_ |_ _ | _| _ |_ |_| |_| | _ _| |_ |_ _ _ |_ _| | | | _|_| |_| |_ _| |_ | _ _| | | _ _| | |_ _| _ _| | | _| |_ _ _ _ _| _ |_|_ _ _| | |_| | _ _ _ _| _| |_ _|_ |_ | _| |_ _ _ _ | |_ _ | | _ _| _ _| |_| _| _ _|_ _ _| | _| |_ | _| | | |_ _|_ | | _ _ _ | | |_ _| |_ _ _ |_ | |_ _|_ _ _ _ _ | _ _ _ _| | _ _ _| |_ _ | | | _| | | | |_ |_ _ _ _ _ _ _ _ | _|_ _ _ _ | | | |_ | | |_ | |_ _ _| | _| | _ _|_ _| | _| _ _| | |_ _ | | _| |_ _ |_ _ | _ _ _| | | |_| |_ | |_ |_ |_| _| _| _|_|_ | | | _ _| | _ _ | | |_ | | _ _|_| |_ _ _ | | |_|_ _|_ _ |_|_ | _| |_ _ | | | |_ _|_ | | _| |_|_ _| | _|_ | | |_ _ | | _ _ _ _| | | | _ _ _| |_ |_ _|_| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| _| _| |_| _|_|_ _| _ | | _| |_ _ | _|_ | |_ | |_|_ | | _ _|_| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _|_ | | | _ _ _| | |_|_ | | |_ _ _| |_ | | _| |_ _ _ _ _| _|_|_ _ _ | |_ _ | +| | | |_|_ | | _ _|_| |_|_ | |_| _ | _| _| _ _|_ | | _ _| | _| _| | |_ _ _| _| | | _ _| _ _ _ _| | |_ | _ _| | |_| | |_ _ _ | |_ _| _| _ _|_ _ _| | | | | | _ | _| |_ _ _ _ _|_ | |_ _ |_ | |_ _ | | _ _| |_ _ _| | | | _| |_| _ |_ |_| _|_ _| _ _ _| | | | _| | | | |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ |_ _ _ | | | | | |_ | | |_ _| _| |_ |_ | | | _ _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ _ _| | _|_ _ |_ _| | _ _ _| | |_ |_ _ | _ _ _ _ _|_ _ _|_ _ | |_ | _ _ _ _|_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | | |_| |_ | | |_ _ _ _| | _|_ | _ _|_ _|_ _ | |_| _ _ _|_ _| |_|_ _| |_ | | | _| | |_ | |_ _| _|_ |_ _ |_ _|_ _ _ _ _ _| |_ _ _| _ _ | | |_ _ _ _| |_ _| | _ | |_ _ _| | |_ _|_ | | _| |_|_ | | |_| |_ | | |_|_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _| _| | _| _ _|_ | | _| | _ _|_ _ _| | _ _ _ _| _|_ _ _| |_ |_ |_ | _|_ | _|_ | _| _|_ _ |_ _ _ _|_| |_ _ _ _ _ | _|_ _ _ _ | | | _ _|_| | _ _ _ _ _ _ _ _ _ | | | |_ _ | _| |_ _ | _| | | | _ _| _ _| | _ _ _|_ _| _| _|_ _ _| |_ _|_ _ _ _ _|_|_ | | |_ _|_ _ |_ _ _ | | | | _ _ _|_ | _ _| | |_ | _ _ _| _ |_ |_ | |_|_ | _|_| | |_ _ _| _ _ | |_ _ | | | | _ | | |_ _| |_| |_| | |_ _| | | _ _|_| | _|_ _ _ _ | _| _ _|_ | _|_ _ _ _|_ _ _ | |_ _ |_|_ _ | | | |_ _|_ | | _| |_ _ | | _ _|_ |_ _ _ _ _| |_ _|_ _ _ _|_ | _| | | _ _|_ | | |_ _ | _|_|_ |_ _ |_ _ | |_ _ _ _| | _|_ _ | | |_ |_ _ | _ _| | | |_ _|_ _ |_ _|_ |_ _ |_ _ _| _| _ |_ |_| _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| |_ | _|_ _ |_ _| | |_ _ _| | | |_ _ _|_ |_|_ | _ _|_ | | |_ _ | |_ _ | _|_|_ | | | _ _| _ |_ _| | | _|_ _ _ _ _| | |_ |_ _ |_ _|_ _ |_ _| | |_ | _| | | | |_ | _ _ | |_ _ | _ _ _| | | +| _|_ | _ _|_ | | |_ _ |_| |_ |_ _| | | _| |_ _ _ _ _| | | _|_ _ _| | _| | _ | | | |_ _ _ _| |_ _|_ | | | | | | _| _ _| |_ | _ _| | | _ _| | |_ _| |_ _| | |_ |_ _ | _ _| | |_ _ _| | _| |_ | |_| |_ |_ _ _| _ _| | _| _| _| _ _|_ | _ _ |_ _ | _| | | |_|_ _ _|_ _| | | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _|_ | |_ |_ _| | | | | |_ _ _|_|_ _|_ _ |_ _|_ |_| _|_| |_ _ | _| | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _| |_ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _ _ _ _|_ | |_ _ _ | _|_ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _| |_ _|_ | | _| |_ _ | _|_ _|_ _| _ _ _ _| |_ |_ _ | _ | _| _ |_ |_| | _| _| | |_ _ _|_ |_ _ _| |_ | _ _ | _ _ _| | _ _ |_ _|_ _|_ _ |_ _ _ _ | | | | | |_ | | | _ _| | |_ | | |_ |_ _ | |_ _| | | _| |_ _ | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _| |_ _ _ _ _| | | _| | _ _ _ _ _ _ _ _| _ _| _ _ _ _|_ |_ |_ | |_ _| |_ _ |_|_ _ _| |_ |_ _ _| |_ | | _|_ |_| _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| | |_ | _| |_|_ _ _| _| |_| _| |_| |_ _ |_ | _|_ |_ _ _| _| |_ _| | |_ | | _ _ | | | | |_ |_ |_ _ | _|_ _| |_| _ | _| _ _ _| |_ _ _ _| _| _ _|_ | |_ _ | _|_ _|_ | _ _| | _| |_ _ |_| | | | | _|_ _| |_ _|_| _| _| _ | _|_ | _ _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | |_ _ _| | | |_ _| | |_ |_ _ | |_ _ | _ | _ | | _ _ _ | _|_ _| |_ _ | _ _| |_ _| _ _|_ _ _ _ _| | _ | | |_| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ | _ |_ _ | |_ |_ _ |_ _| _| _ _|_ | _ |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ |_ _ | | |_ | | |_ _| | | _ _| | | _| | |_ _ | |_ _ |_ _| | _ _| |_ _| _ _| |_ | _|_ _ _ _ _| |_ _| |_ | | | | |_ | _ | _| | _|_ |_ _ | |_ _ | |_ _|_ | | | |_ |_ _| |_| |_ _ | |_|_ | _ _|_ | +|_ | |_ _| | _ _| |_ _| _ _| _|_ | _ _| | |_ _ _| _ _| | |_ _ | _| | _ _ _|_ _| | | | _ _ _ _|_ |_ _ | | | |_|_ _| |_ |_ _|_ |_ | |_ | _|_ |_ _ _ _| | |_ _ | | |_ | | | _ | | _ _|_ | _ _|_ |_ | |_ |_ | _ _ |_ | _|_ _| | _| |_ _ _ _ _| | | _ _| | |_ _| |_ | _ _ _| | | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| |_ | |_ |_| | | |_ | _ _ _ _ |_ _ | _| _| _ |_ | |_ _| |_ _ _| | |_ _| _|_|_ | | | _ _|_ _ _ _ | | | _ _| | |_ | | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ _| | _| | | | |_| _|_ _|_ | _|_ | _|_|_ | | | _ _|_ _ |_| | | _ _| | | | |_ |_ _ | |_ _ _ _ | _ _ _| | |_ |_ |_ _ _ _ _|_ _|_ _| _ _|_ | | | | |_ _ _| _ _ |_ _ | _ _| | _| | | _|_ _ _ |_ _| |_ |_ |_ _ _ |_ _ | | | | | | _| _| |_| |_ | |_ | | |_|_ | | _ _|_| |_|_ |_ | |_ _| | |_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _| | _ _ _ | | | | _| | _ _ _ _ | |_ _ |_ _ _| |_ | _ _|_ _| | | _|_ _ |_| _ _| | _| _ _ _|_ _| |_ _| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _|_ |_ | _ _ _ | | _| _ _ _|_ | _| |_ _ |_ _ |_ | |_ |_ | |_ _ _ _| | _| |_ | | |_| | | _|_ _ _ _| | | | _ _ _| | | |_ _ _ | |_ _ _ | _| |_ _ _ _ _| | _ _|_| |_ _ | | | _|_ _ _| _| | _| |_ |_| _ |_ |_ _ |_ _ _| | | | | _| | _ | _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ | | | | |_ | | |_ _ | | |_| _ |_ |_ |_ _ _ _| _ _| _ _ _| _ _| | | | |_|_ _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| _| | |_|_ _ | |_ | _| |_ _ _ _ _| _| | _| | | |_ _|_ | _|_ _ | | | |_ _| _ _| |_ _| _|_ _ | |_ |_ _| _ | |_ _| | | |_ _|_ _ | | |_ _ _ _| _ _| | _| | | _ _| _ _ | |_ | | _|_ _| |_ |_| _| | | | |_ _ _ _ | | |_ _ _ _| | |_| _ _ _| |_| _| _ _|_ _| _ _|_ _ _ _| | | | | +| |_ _ _ | |_ _ _ _| _ _| | _ |_ _| _| |_ |_ | | _|_ _ | |_ | |_|_ | |_ _| | | | |_ _ _ _| |_ | | | |_ _| _ |_ |_ _ |_ _ _|_ _ _|_ _ |_ _ _ _ | |_| | | | |_| _| | _|_ _| |_ | | _|_ | _ _|_ | | | | _| | | |_ _ | | |_ _ _ _| _| |_ | | _|_ _ _ _ |_ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | _| |_ _| | | _|_ | | |_ |_ _ _ | _| _ _ _| | _ _| |_ _ _ _| | _ _| | _|_ _ |_ _ _ _ _| |_ _| _ | _ _ _| | | | | _| |_|_ | | |_|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | |_|_ |_ _| | | |_ |_|_ _ | | |_ _ _|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ | _|_| | |_|_ | | _ _|_| |_ _ |_ _ | _|_ | |_ | | _ _ _ _ | |_ _| _ _ _ _| |_ _| | _ _ _| | | |_| |_ | |_ _ _| | | _ | | _ _|_ _ _| |_ _ _ | _ _| | |_| | |_ _|_| _| | _| |_ | | |_ | _ _|_ | | |_ _ |_ | |_ |_ _ _|_ |_ _ _ _|_ | _|_|_ | | | _ _| | _ _ _ | | | _ | |_| | | | |_ _| |_| |_ _|_ _ | | _| |_ _ | | _| _ _|_ _ _|_ _ _ _ | |_ _|_ _ |_ | | | |_ _ _| _ _ |_ _ | _ _| | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _|_ _ _ | | | _|_ _ | _ _ _|_ _ _ _ _| _ |_ |_ _ _ _|_ |_ _ _ _| | |_ | | _| |_ | | | | _| _| _ _| _|_ _ _| |_ |_|_ | _| | | | _ | |_ _ _ _| _|_ | | |_ _ | | |_| | _ | _ _ | |_ | |_| _| _ _|_ | |_ | _ _| | | |_ | |_ _|_ _ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | | |_ _| | _ _| | _| _| _ _|_ | | | _| | |_ _| | _| | | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ |_ |_| |_ _ _| | | | | | |_ | _ _| _| |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_ _ _ _ _ _| |_ | | _| | | _|_ _ _|_| |_| _ |_ |_ _| | | _ _ | | | |_|_ | _|_ _| | _ _| _ _|_ _| | | |_| _ |_ |_ | | | |_ | _| _ _| |_ _ | _ _| |_ _ _ _| |_ _|_ | _ | | _|_ _ | | _|_ | | | +| | |_ | _ _| | |_|_ | | | _ _ _ _| _|_ | |_ _ _ _| | _|_ _ _ _|_ _ _ |_ _| |_ _ |_ | _ _|_ _ _| | |_ | _| _ _|_ |_ _| | _ _ _ _ | |_ _ _ | _|_ |_ _|_ _ _| _|_ |_| _ |_ |_ |_ _| | |_ _ _ _ _| | |_| |_| _| | | |_ | | | |_ | | |_| _|_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| |_ | | | |_| | |_ _| _|_ |_ _ _|_ |_ | _ _|_ _ _|_| _ _ |_|_ | _ _| |_ _ _ |_ _ _ _ _ |_ _| _|_ |_ _ _| |_ |_ | | _ | |_ | _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _| | |_ _|_ _ |_ _ | | |_ _ _ _ | _| _|_|_ _ _ _ _ _ _ _ _ _ _| _| _ _ _| |_| _|_ _ _ |_ | _ _|_ | | |_ _ | | _| | |_ _ _| | |_ _ | | _| |_ _ | | _ _ _| | |_ _ | |_|_ _|_ | | _| |_ _ | _|_|_ | |_| | _ _ _ | | |_ | _ _| |_ | _ _ _|_ | | | _| | | | |_ |_ _| | _ _| |_ _| _ _| | _ _|_ _ | _ _ _| | _ _|_ _ _ _ _| |_ _| | | | _ | | | |_ _| |_ _ _| |_ _|_ _ _ _ |_ _ _| | |_ _ _|_ | | _ _| | _ _ | | _ _|_ _ _ _ _ _|_ |_ _ _|_| | _ _ _| _| | |_| |_ | | |_ | | _| | | | _|_|_ | | | _ _| _ _ _ _| | | _ _| |_| | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ _ _| _ _ |_ _ | _ _| | |_ _| | | | _ _|_| | _ _| |_ | | | _ _ _ _|_ |_ _ _ _| | _|_ _| | |_ |_ |_ _ | | _ _| |_ _| _ _| _| _| | _| | | | | _| | | _| |_ _ _ _ _| |_ | | | | _| |_ | |_ | _ _ _ _|_ |_ | _|_|_ | | | _ _| | | | | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| | |_ _ _ _|_ | _| | _| |_ _ _ _ _|_ _| |_ |_ _|_ _ |_|_ _ _ _|_ _| _|_| | |_| |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| |_ |_ _ _ |_ _ | _|_ _| |_ | |_ |_ _ _ _| | |_ _ | | _ _ | | _ | | |_ | | | _|_ _ | | _ _ _ _|_ |_ _| _ _|_ _|_ _ |_| _ |_ |_ |_ _ _ _| _|_|_ | |_ |_ _|_ _ |_|_ | | | | _ _| _ _ _ _ _ _| _| _ _|_ | | |_ _|_ |_ | _| | _ | |_ | | | _ _ _ _|_ |_ | _| |_ _| |_ _ _ _ _|_ |_ _ |_|_ | +| |_ _|_| _| |_ _ |_ _|_ _ |_ _| |_ _ _ _| _| |_|_ _ _| _ | | | _ _ _ _ | |_ _ _|_ | |_ |_| | _ | |_ | _| |_ _ _ _ _| _ |_ _ | | _| |_ _ | _| | _|_ _ | _ _ _|_ _| _| _ _|_ |_ |_ | |_ _ _ _ _ | |_ _ _ _ _| |_ |_ | | | |_| _| | |_ | |_ _ _| | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _| |_ | |_|_ _ _ _ _ _ _ _ _ _ _| | |_ | _ _| _ _ _| | | |_| |_ | | _ |_ _ _ | _ _| | _|_ _ _ _| _ |_ |_ _ | | |_ _| | |_ _| _| | | |_ _|_ | |_ _ | | | |_ _ |_ _ _ |_ _ |_ _|_ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ |_ _| _ |_ |_ _ | |_ |_ _| | _ _| |_ _| _ _| | | _|_ | | _ |_| | _| | |_ _ _| | | |_ _| | _ _|_ _ _| | | | _| | |_ |_ _ | _ _ _ _ _|_ _ _| | _|_ _|_ _| _ _|_ | _|_ _ _|_ _ | _ _| | | | _| |_ | _ |_ _ _ _| _ _| _ _ _| _ _ |_ _ | _ _| | | _ _ _ | _ _ _ _| |_ _| |_ _ _| |_ | | |_ _ _ | |_ _ _ _ _| | _| _ _ _ | | | | | _|_ | |_ _ _|_|_ _ | | _ _ | _| _ _ _ |_ _ | _ |_ _|_ | | _| |_ _ _ | |_ |_ |_ _ _ _ _| |_ _|_ | | | _| | _| _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| | | |_| |_ | |_ _ | |_| | |_| _ _ _|_ |_ | | | |_ _ _| |_ |_ _ _|_ _ _ |_| |_| _| |_ | |_ _|_ _ _ _| _ _| |_ _ _| _|_ | _| | | |_ |_|_ _ | _ _ | _ _ |_ _|_ |_ |_ _|_ | |_ _ _| |_ | | |_ _ _ _ _| |_ _| _ _|_ _| | | | | | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ | |_ _ | | | | | |_ _ | _ _ | |_ | _ _ |_ _ |_ _ | _ _|_ _|_ | | _| | | |_ _|_ | _| _ | | | |_ _ _ _|_ |_ _ _| | |_ _| _ _| _| _ _| _ | _|_ _ | |_ _| | |_ _ _|_ _|_ |_|_ _ _| |_ _ _ | | |_ _ _| |_ |_ _| _ _ | _| _| _ _|_ |_ | _ |_ _ _ _ _| | | _ |_ _ | _| |_| | | |_ _ _ _ _ | _| |_ _ _ _ _| | |_ |_ |_|_ _ |_ _| _|_ | | | |_ _ _| |_ | | |_ _ _ | _ | _| | |_ _ |_| +| _ _ | | | | _ _ _ | |_ _ |_ | _ _ _| _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| |_ _| |_| | _| |_ |_ _ _ |_ | | | _| | |_ _ _| | | | |_ | _ _ |_ _ | | | _| |_ _ _ _ _| _ _| |_ |_ _ _ _ _| _ |_ _ | | _|_ _ _| _|_ _ _ _|_ _ | | _ _| | | | |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _ |_ _ | _| |_ _|_ | | _| |_ _| _| _|_ | | | | _ _ |_| _| _ _|_ | | | |_ _ _ _ _| |_ _ _| |_ _|_ _ _ _ _| |_ _ | _| |_ _|_ _ |_ _ | | | _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| _| _ _|_ | |_ _ _ |_ | _|_ _ _ _| _ _| _|_ |_ _ _ |_| | _| _| | |_ _ _ _ | | |_ _ _ _| |_ | | | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ | | _|_|_ _| |_| | _| |_ _ _ _ _| | |_ _| |_| |_| _ _| |_| | _| |_ | | | | _ _ _| | | |_| |_ | | | |_ | _| |_ _ | _|_ _ _| _ |_ |_| |_| _|_ _ _ |_ _|_ _ | | | | | _ _ | _| | |_ |_ _ |_|_ | _ _ _| | |_|_ _| | | |_ _ | _| _| |_ |_ _| | |_ |_ _ | _|_ |_ _ | _ | _ _ |_|_ _| |_ _ _| |_| _|_ _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ |_ _| |_ _|_ | | _| |_ _ _ _| _|_ |_ _ | _|_ _ _| | |_ _| _| _ _|_ _ _| | _ _| _ _ _| _| _ | |_ _ |_ _ | | |_|_ _ _ _| | | | _|_|_ |_ | | |_ |_| _ _|_ _ _ _ _|_ _ _ _ _| |_| _| _ _|_ _ _| |_ _ | _ _ _ _ _| _| _ _ _|_| |_| | _| | | |_ _|_ | | _ _ _ _ | | |_ _| _|_ |_ _| |_ _| | | | |_ | _|_ _| | _ _| _|_ _| | _ _| | _ |_ _ | _| _| | |_ _ _| |_ _|_ _ _ _ _|_ | |_ _ _|_|_ _|_ _ |_ _ _| |_ _ _ _|_|_ | _|_ _| _| _| _ _| | |_ _ |_ _ _ | _| |_ _ _ _ | |_ _ |_ _ _ _ _ _| |_| _| _ _|_ _ _| _ _| | _| | | _| |_ _ _ _ _| _| | _ | _ _ _ |_| |_| | _ _ _| |_ | | _|_ _|_ _ |_ _ _| |_ _| _| |_ |_| | _| | _| |_| _ | |_ _| _| _ _|_ _ _| | |_ _ |_| | | _|_ |_ _| | |_ | +| | |_ _| _|_ _ | _| | _ _| | _|_ _ |_ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ | _ _ _|_| |_ _|_ |_ |_ _ _ _| _| _| _| | _| _ | _| | | |_ _ |_ _ | | _| | |_ _| |_ |_ _ |_ _| | _| |_| _ _ _ _|_ |_ |_ _|_ | _ _ _ _ _ _ _ | |_ _| | |_| | | |_ _ |_ _| _|_|_ | | | _ _|_ | | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | | | _| | |_ _| | | |_ |_ _ | |_ _ | | | |_ |_ _ | | _| |_ _ _ _ _|_ _|_ _ | _ _|_ | _ _ _ _ _ _ _ _ _ _| _| |_ | | _ |_ _ |_ _| | | _ _|_ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _| |_ _ _ _ _| |_ _ _| _| | _ _ _ | | |_ _ _| | | | _| | | |_ | | | | | | | | _ | _| _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ _ _ _| | _| _ _|_ _| |_ _ | _ | _|_|_ _ _ _ |_ |_ _ _ | _|_ _ _|_ _ _|_ | |_|_ _ | _|_|_ _|_ | | _| |_ _ | | | _ _ _| | _ | _| _| _ _|_ | | |_ _ |_ _ | _ _ _| | _| |_ _ _| |_ _ _| |_ _ | |_ _ |_ | | _| _|_ _ _ _| _| |_ _| |_ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_| | _|_| | | | | | | _| _ |_ |_ _ _ _|_ |_ | _|_|_ | | | _ _| | _ | | | _| | _ _| | | |_ |_ _ | _ _ |_ | _| _| _ _|_ | _ _| | | _ _| | |_ _ _ _| _ _ _| _|_ |_ _ | | | _ |_ _|_ _ |_ _ | _| _| |_ _ _ |_ |_ | |_ |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| | | _ _| _| |_ _ _| _ _ |_ _ | _| _ |_ |_ _ _ _| |_ _|_ _ _ _ _| | | |_ _ |_ _|_ _ |_ _ _ _ _ _| |_| |_ _| _| _ | _| | | _| |_| _| | _ _| | _| | _|_ |_ | |_ | | | _ _ | _ _ _ _|_ _ | _ _| |_ _ | |_ _ _ | | | | _ _ _| _|_ _ |_ | |_ |_ _ |_ | | | | | _| |_ _ | _ _ _ |_| _ _| _ _| | _ _ _ _ _| | |_ _ _| | |_ | _ _ _ _ _ _ _| | | |_ | _| | _| _| | | _ _| _| |_ |_ _ _|_ _ |_ |_ | |_ _ _|_ | |_ _ _ _|_ _ |_ _| |_ _ _| | |_ | _ _| | _ _| | |_| | |_ | | |_ _ _ _ _| | |_ | | +|_ _|_ | |_ | _| |_ _ _| | _ _| _ _| | _| |_ _ | _|_|_ | | | _ _| _ _ _| | | | | |_| _ _ _ _|_ |_ _ _|_ | | _| _ _ _ _|_ _ _ | |_ _ _|_ | |_ _ _| | | _| | | | _|_ _ _ _ | | | _|_ _ | _|_|_ _ _|_ _ _ _ | | |_ _ _ _ | | _ _| | | _| |_ _ | _| | _| | |_ _ _| |_ _ _ _ _| |_ _| _ | |_ _| | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | |_ _ _ _| _| | | _ _ _ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ | | _| |_| | _ _ _| | _ _ _|_ | | | |_ | _| | _|_|_ | | | _ _| _ _ |_ | | | |_ _| _ _ _|_ _ _ | | _|_ _ | | |_ _|_ _ |_ _ _| |_ _|_ |_ _| | | |_| |_ _| |_| | |_ | _|_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _ _| | |_ _| _ _ |_ _ _| | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ _| | | | | | |_ |_ _ | _|_ | | _ _|_ |_ _| _| |_ _ _ _ _|_| |_ _ _ _|_ | |_ _| | _|_ |_ _ | _| _ |_ |_ _ |_ |_ | | |_ _ _ _ _ | |_ _ _ _ | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ | _| | | | | | _| _| _ _|_ |_ _ _| |_ | | |_|_ _ _ _ _| |_ _| _| | _| | | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _| |_ | | _| _ | |_ | _|_| | | | |_ _| | _ _|_ _ | | _ |_ _ _| | | | | | |_ _ _ |_ _ | | |_ _| _| |_ _ _ |_|_ |_ _ | | | |_ _| _ | | _| |_ _ |_| _| |_ _| _ _| _| _ _ _ _ | | |_ _| _| _ _|_ |_ _ | | _ _ | | _ _|_ _|_ _ |_ _| |_ _ | | _ _ _ _|_ |_ | _| | _| | | _| | |_ |_ _ |_ _|_ |_ |_ _| |_ _| _|_ | |_ _|_ _| | |_ _ _ _ _ _| _| | | | _| _ _| |_ _ |_| |_ _ _| | | |_ _ | |_ _ _ _ _| |_ | _ |_ |_| | | |_ _|_|_ _ _|_ | | |_ |_ |_ _ |_ | _| | | |_ _| _ _ _| |_ | |_ _ | _ _ _| _|_ _ _ _| _ _|_ _ _| | | |_ | |_ |_ _ _ | _ _ _| | _| _| |_ | |_ _| _ _ | |_ _| _|_| |_ |_ | |_ | _|_ _ _| |_ _ _| |_ _|_ _|_ |_ _| _ _ _ _| _| | +| | | |_ | | | _| _ | |_ | | |_ | _| | |_ | | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ |_ |_ _ _| |_ | _ | | |_ _ _| _ _ | |_ _| | _ _ |_ _ | _ _| |_ | |_ _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ _|_| _ _ |_|_ | _ _| | |_|_ _ _|_ | | | | |_ |_ _ _ _ _|_ _ _ | _ | _| | |_| _ _|_| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ _ _ _| |_ |_ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _|_ _ _| | _ _|_ _ _ _ | | |_|_ _| _| |_ _ |_ _ _ _ _| |_ _| _ | _ _| | |_| |_ |_| | _| | _ _ |_ _| _ _| | | _ _ _ |_ _ _ | | | |_ _ _ _ _|_|_ _ _ _|_ | | _ _|_| _ _ |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | |_ _|_ _|_ _| _|_ _ _| | | |_| _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | | _|_ | |_ | _ _ _ _ _| _ _ |_ _ | _ _| |_ _ |_ _| _| | _| _ _|_ | |_ _ | | |_ _| | _ |_ _|_ _ | | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ | | _| |_ _ _|_| _| |_ _ _ _ _| _ _ _|_ _ _|_|_ | _ | _| _|_ _ _| |_ _ _| |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_|_ | _|_ _|_ _ _|_ _ |_ _ _| _ _ _| | |_ _ _| | _| |_ _ _ | | |_ _| |_ _ _ |_ _ | |_|_ _ _ _ |_| |_ _| | | _ _| _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _ _ _ _ | | _ _| | _|_ _|_ | _| |_ _ _ _ _| _ _|_ _| | |_ _ _ _ _ _ | |_ _ _ _| |_ | | | |_ _ _| |_ | _| | _| _| | | |_ _| |_| | _| _|_ _| _| _| | | _| | _ _ _ _| |_ _ _ _ | |_ _ _ |_ _ _| | _ _| _ _ _ _| |_ _ |_ _| | _| _ _ _|_ _| |_ _| | | _| |_ _ _ _ _ _ _ | | | _| | _ | | _| |_ |_|_ _| | |_ _ | | | _| _| _ | |_ _ |_ _ |_ _ | | | _ | |_ | | | _ _| | |_ _| | _ _|_| _| _| _| | _ _ _| | _| |_ _ |_ _ _ |_ |_ _ _|_ _ _|_ _ |_ _ |_ _ _ |_ _ _ | |_ _ _ _| _ | | _| | +| |_ _|_ | |_ | | _ _| |_ | | _| |_ _ _ _| | | |_ _ _ | | _ _ _ _ _ _|_| |_ | _| _| _ _|_ _ _| | | | |_ | _ _| | _| |_ _ | _|_ | | |_| |_ | | _| | | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _|_ | | |_| |_ | | _ | _ | |_| | | | _ _ |_ | |_ _ | | |_ | | |_ _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _| _ _ |_ _ | _ _| | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_| _ _ |_| |_ | _ _| _| |_ | _ _| _|_ _| _| _ _ _ _|_ | |_ _ _|_| | _| _| |_ _ _|_ _| |_ |_ _ _|_ _ _ |_ _ | |_ |_ |_ _|_ _| | _ _ _ _ | |_ _| _ _| | | _ _ _| _| | _| | | |_ _|_ | _ _ _| _ | | |_ _| | | _ _ _ _| |_ _ _ _| |_ _|_ | |_ |_ _ | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_ |_ | |_ |_ | _ _ _| _| | |_| |_ | | | | |_ | _| |_ _ _ _ _| _ _|_ | | _ _| | |_ _ _| _ |_ _| | | |_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _| | | | |_ |_ _ _ _ | |_ _ | _ _ _|_ _ _| _ _| | | | |_ _ _ _ _ _| _| _ |_ |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | |_ _ |_ _| _ _ _ _ | |_ _ _ |_ _ |_ _ _| | _|_ _ _ _ _ |_ _ _|_ _ | _ _ _ _ _ _|_ _ _ _ |_ _ | _ _| | | | | _ | _|_|_ | | | _ _| _ _ | | | |_ _ _| _ _ |_|_ | _ _| | | | | | |_ _ _ _ |_ | _ _ _ _| |_ _ _ _ | |_ _ _ | | |_ _ _| |_| _| _ _|_ _ _| | _ _ | |_ _ | |_ _| | _| _ _|_ _|_ _ _ | | _| _ _| _| _| |_ | _ _ | | _| |_ _ | _| | _|_ | | | _ _ _ _|_ |_ _ | | _|_ _ _ _ |_ _ _ _ _ _ _ |_|_ _ _ _ _ _ _| _ _ _| | | | |_ |_| | _ _|_ _ _ _|_ _ |_ _| _ _| _|_ _| _|_ _| _|_ | | |_ |_ _ |_ _|_| | |_ _| _ _| | _| | _| |_ _ _ | | _ _ _| _|_ _ | | _ | |_ _ _|_ | | _ | | | _ _ _ _ | |_ _ |_ _ _| _ | |_ _|_ _ | | | |_ _| _| +| _ _ | |_ _| |_ _| _ | | |_ _ _ _ _| |_| | |_ | _ _| |_|_ _ _| _ | _| _ |_ |_| | _ _| | _ _ _ _|_ _ _ | | | _|_ _ _| | | | _ |_ _|_ | | _| |_ _| |_| |_ | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ | | |_ _|_ | | _| |_ _| _| | |_| | _|_| |_ |_ _ _ _| |_ _| | |_ |_ _| |_ _ _| _| _ _|_ | |_ _ _ _ | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | _ _ _| _| | |_| |_ | | | | |_ _ | _|_|_ | | | _ _| _ | _| | | |_ |_ |_ _ | | |_ |_ _ _| |_ | _| |_ _ |_ _ | _| | _| | | |_ _ _| _ _ _| _| | _| _ _ _ _|_ |_ _ _ _ | |_ _ _| |_ _ _ _ _ _ _ _ _ |_ _ | | _| |_ _ | |_ _ | |_ _ |_ | |_ _ _| |_ _|_ _ _ _ _| | | | | |_ _|_ _ |_ _| _| _ _ _ _|_ |_ |_ _ | | | | _ _|_| |_ _ | _|_|_ | | | _ _| _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | | _ |_| _| _| _| |_ _ | _ |_ _|_ | | _| |_|_ | |_ _ _| | _ _ _| | _ _ _ _|_ _ _ _| | _ _ |_ | _| _|_|_ | _| | | |_ _|_ |_ _| |_ _ | | |_ _ | _|_ _| | _ _ _ _| |_ | _| |_ |_ _ | | |_ _ _| | _| |_| | | | _ _| | _| _| _ _|_ | | _ _ _ | _| _ |_ _ _ _| _ _| | | | | |_ _ |_ _ | | _| |_ _ | _| _|_ | | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| |_ | |_ _| _ _| |_|_ _ _ _ _| |_ _| |_ _ | | | | | | _ _ _| | | |_| |_ | | |_ _| | |_|_ | _| |_ _| |_ | _ _ | | _| |_ _ | | | | |_ | _ _| _ _| | | _ | |_| | | | |_ _| _ _| |_ _| _ _ _ |_| |_ _ _|_ _| | | | _| _| |_ | _| |_ _ _| | | | _| |_ _ | | | |_ _ _| |_ |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _| |_ _ | _| | _ _ _ _ | |_|_ | _|_ _| _ _ _| _ | | | |_ _ _| | | |_ |_| _ _|_ _ _ _| _ _|_ | | |_ _ _ _ |_| |_ _ | |_ _ _ _ _| |_ _| | |_ _ _ _ _| |_ | |_| | |_ _ | | _| |_ _ |_ | _ _| _ _| | _ _|_ _| | | |_ _ |_ | +| |_ | |_ |_ _|_ _ | |_ _| |_ | _ _ _ _|_ |_ _ _ | | |_ _ _ _ |_ _| |_| _| _ _|_ | |_ | _|_ |_| _ _ |_ _ _| |_| | |_ _ | | |_ _| | | | | |_ |_ _ | _ _ _ | | |_ _ | | _|_|_ | | | _ _|_ |_ | |_ _| | |_ _ _ _| | |_ |_ _ | _ _| | |_ _ _ _ | | |_ _ | _|_ | |_ _|_ | _| |_ _ _ _ _|_ _ | | |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_| | _| | | |_ _|_ | | _|_ _ | | | | |_ _ | _ |_ _|_ | | _| |_|_ |_ _ |_|_ _ _ _ _| |_ _|_ _ |_ | | | | | |_ _|_ | |_ | _ _| | | | _ _ _| _|_ _ _|_| |_ | |_ _ _| |_ | |_ _|_ _ _ _ _| _ _ _| | | | | _| | | _ _ _ | _| |_ _ | _| _ _ _ _ | |_ _ _| | |_ _ _| | | _ |_ _ _| | _| | |_ _ | | _ _ | | _| | |_ _ _|_ _ _ _|_ _ |_ |_ _ _| |_ | |_ _| _| | | | |_|_ | | |_ _ | |_ _ _ _ _| |_ _| |_ _ _| | | | | |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _|_ _| _|_ _ _ _| _ _| | | _| | | |_ |_ _ | _|_ _| |_| | _ _| |_ _ | _ _ _ _ | | | |_ _ _|_ _ _ _ | _|_ _ _| |_ _|_ _ _ _ _| _ _|_ _ _ |_ _|_ _ |_|_ _ _ _ _| _ |_| _| _| _ _| _ _| | | _ _ _| | | _| _| | | | _ _|_ | _| |_ _ _ _ _| | | |_ _|_ |_ |_ _ _ | | |_ _| | |_ _|_ _ | _ _| | |_ _ _|_ | | | _ _ _ _|_| | | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ | | _| _ _ _ |_ _ _|_ _ _ |_ _|_| |_ _ _ | | |_ _|_ | | _| |_ _ _ |_ | _| _ _| | _| _| _| |_ | _| |_ _ _| | | |_ _|_ | |_ _ |_ | _| |_ | |_|_ _ _| |_|_ _|_ _ | |_ |_ _ _ _ _ _|_ _ _|_ _ _ | _ _| | | |_|_ _ _| _| | | | | _|_| |_| | |_ _ _ | |_ _| _| _ _|_ _ _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ |_ _|_ | |_ _ | | _| |_ _ | | | |_ _|_ _ _ _| | |_ _|_ _ _ _ | | _|_ _| | _ _ _ _ _ _ _|_ |_ _ _|_ |_ _ _ _ _ _ _| | _ _ _ _| | _ _| _ _ |_| | | _|_ _ _| | _| | |_ _ _| | | _| | | | |_| | _| | _|_|_ | | | | +|_ _ _| _ _ _ _ _ _ _|_ _ _| |_ _ _| |_ | | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| _| |_ _ |_ _ | | | | _| _|_| |_ | _| | | | _|_| | |_|_ | | _ _|_| |_ _| _|_ _ |_ _|_ _ _ _ _| |_ _| _ _|_ _ _| | | | _|_ _ _ _ | |_|_ | | _ _|_| |_|_ _ |_| _ |_| | | | | | | |_ _ |_ | | _ | |_ _ _ _ _ |_ |_ _|_ _ | | |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | |_ _ _| |_ _|_ _ _ _ _| |_ _ | | _|_ _| |_|_ _ _ _| |_| _ | | | |_ |_ _ | _ _| _ | | _ _ |_ | _|_ _| |_ _ _ _|_| _| | _ _|_ _ _| _ |_ | _ _ _ _|_ |_| |_ _ | _| _|_ | _ _ _ |_ _ | _ _| | |_ _ _|_ _| | | |_ _|_ _ _| | |_ |_ _ | | _| |_ _ | | _| _| _ | | | | |_ _ | | _| | _|_ _ | |_ _| | |_|_ _ _|_ _| _ _ | |_ _ | |_ _| _| _ _|_ _ _| | _ _| _|_|_ | _ _| |_ _| _ _|_ _ |_ _ _ _ | |_ _ _ _|_ _| |_ _ | | |_ _|_ | _ _ _ | | | |_|_ |_| _ _ _ _ _ | |_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _ _| |_ _ _|_ _ _|_ _ | | _ _|_ _|_ _ _ _ _| | | _ _ | | _ _ | | | | | |_ |_ |_ _ | | | _ _ _ _|_ | | _| |_ _ | |_| _| _| | _| |_ _ _| | | _| |_ _ | | |_ _| _ _ _ _|_ _|_ _ _ _ _|_ _ _|_ |_ |_ _|_ _ |_ _ |_ _ _|_ | _| | _| | |_ _ _ _ _ _ |_ _| |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | |_ |_ _ | _|_ _| | | _ _ | | | _| _| _ |_ |_ | |_| | |_ | | |_ |_ _ | _ _| _|_ |_ | | _|_ _ _| _| | | | | _|_| | _ _ _ _|_ _ | _| |_ |_ _ _| | _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | | | _ _ _ _| _| | |_| |_ |_| | | _| _ _ | |_ | _ _| | _ | _ |_ _|_ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _ _ _ _ _ _ _| | | |_ _ _ _| | _ _|_ _| | _ _ _| | |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_|_ | _ |_ _ _ _ | _| _|_ _ _|_ | _| |_ _ _ _ |_ _ _|_ _ _|_ _ | | | _| _ _ _ |_| | | | | |_ _| |_ _ _| _ _| |_ _ _ _ _| |_ _| | +| _ |_ | _ _ _ _ | |_ _| |_| _| _ _|_ _ _| | | |_ | |_ _ |_ _| | | |_ _ | _ _ | | _|_ _ |_ _| |_ _| |_ _ _| |_ | _|_ _| |_| |_ _ _ |_ | _ _|_ | | |_ _ | |_ _ |_ _ _ _ _ _ |_ |_ |_ _ |_ _ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ | | |_|_ _|_ | | |_ _ _| | | | |_ |_ _ |_ _ _| _ _|_ _| | _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _| _ _ | | _ _ | _| | _| |_ _ |_ _ _ _ _ _ _ _ _| |_ | |_|_ | | _ _|_| |_ _| |_| | |_| | _ _|_ _ |_| _ |_ |_ _ _ _ _|_ _|_ _ | _ _ _| |_ | |_ _ _| |_ | | _ _|_ | | | |_|_ |_ _ | _| | |_ | |_ _ _ _ _| |_ _|_ _ _ _ _ _ |_| | | _| | |_ _ _| | | | |_ _ | | _| | | |_ _ | |_|_ _ |_ _ |_ _ _ _| | |_ _ _ _ | _ _| | _| |_ _ |_| |_ | _ _| | _ | _ | |_ |_ _ _| |_ _ _ _| _ _| _ _ |_ | _ _| _| | | _ _| _ |_ |_ |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_|_ _ _ _ _| |_ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _ | |_ _ _ _| |_ _ _| _ _ |_ _ | _ _| | |_| _ _| |_ _| | |_ _|_ _|_ _| _| |_ _ | | | | | _| _ _| | _| _|_ _ | _|_|_ | | | | _| | |_ | _ _| |_| _| _ _| |_ | | _| | _ _ | _ _| _ _ _ |_ | | | |_ _ |_ |_| _ | | | _| |_| |_ _ _ _| _ _ |_ _ | _ _| | _|_|_ _ _ | _|_|_ | | | _ _| _ _ | | | | | |_|_ | | _ _|_| |_ _| |_ _| | | _| |_ _ _| _| _ _|_ | _| |_ _ | |_|_ | | _ _|_| |_ _ |_ _ | | | _ _ _ _| _| | |_| |_ |_| | | | _ | | _ _|_ _ _ _|_ _ |_ _ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ | | _ _ _| |_ _ _| _| _| | |_ |_| _ _|_ | |_ | _|_ |_| | |_ | _ _ _ _|_ | | | _|_|_ | | | _ _|_ _ _ _ | |_ | _ _ _ _ | |_ _|_| | |_ _ _ _| _ _ |_ _ | _ _| | |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ | _ _ _| |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ | | _|_ _ |_ _ _ _|_ _| | _ _| |_ _ |_ _ | _ _ _| | +| | |_ _| _ | | _| |_ _ |_ _ _ _| | _ _| | |_ | | | _ _| | _| |_ | | |_ _| | _|_ _|_ _ |_ | _| |_ _ _ _|_ _ |_| _ |_ |_ |_ |_ _| | _ _| |_ _| _ _| | _ | _ | _ _| |_ _|_| _| |_ _ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| |_ |_ _|_ _ | |_|_ _|_ | |_ _| _| _| |_|_ | | | | _| _|_ | _ _| | | _| | | | _ _| _| | | | |_ _ | | _ _| |_ _| | |_|_ _ _| | |_ | _ _| | _ _ _ _ | |_ _ _|_ | _ _|_ | | |_ _ | _ _|_ _ _| | _ _| _| _| _ _|_ | | _ _ _ _ | |_ _ _ _ _| _| | _| _ _|_ _ _| |_ _| | |_ _| |_ _ | | |_ _| _|_ _ _|_ |_ _| _ _ _ | _ _ _ _ _ _|_ _ | |_ | _|_ |_ _| | | | | |_ _| |_ _| |_ _ _ |_ _ _ |_ | |_ _ |_| _ _|_ | | _| | _ _|_ _ _| | | | _|_ | _|_ |_|_ |_ _ _ _ _ |_ _ _| _ _ | | |_ _ |_ | | | _| _| | _| _| _ _|_ | | | _ | | _| | |_ _ _ |_ _ _ |_ _ | | _ _ _ _|_ |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _ |_ _|_ _ | | | _ _ _| _| | |_| |_ | |_ | | | |_ _ _| |_ _ _ _ | |_ _|_ | |_ _| _|_| |_| _| _ |_ _| _|_ | | |_ _ | |_ _| |_ _ _| | |_ _ _ _| _|_ _ _ _| _| |_ _ _|_ _|_ | |_ _ _ _|_ _ |_ _ _ _| |_|_ _| _ _| | _| _| |_ | |_ _| | _| | _ _ _| | | |_| |_ | |_ _ _ | _ |_ _ _ _ _| |_ _| _ _ | | | | | | |_| |_ | _ _|_ | | |_ _ | | _ _| | |_ _|_ _ | _| |_ _ _ _ _| | | | |_|_ | _ _|_ | | |_ _ | | | _| | | | _ _ _| |_ _ _| _| _| | |_ |_ _ _| | _ _ _ _ | |_|_ | _| |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _| | | | _ _|_| _ |_| _| _|_ |_ | _ _ _ _|_ _ _|_ _ |_ _ _ | _|_ _ _ _| |_ | |_ _ _ _ _| |_ _|_ | _| | | | | |_ _ | | _| |_ _ | _| |_ | _ _ _|_ | | |_| |_ | | _ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _|_| | _| _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ _ _ _ _| _ _ |_|_ | _ _| | _| | | |_ _| | |_ _ _ _| +| | |_ _ |_ _| | |_ _ _| | | _ | _| | |_ _ _| |_| _ _| | | _ _| |_ _ _| _| |_ _ _ _|_ _ _ _ _| _ _| | _ _|_ | | | | _ _| _| _ _|_ |_| | | |_ | _|_ _ _ _| _ _| _|_ _| _| | |_ | _ _ _| _ _| _|_| |_ _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| |_| _| _ _ _ _ _|_ _ | | _| |_ _ _| _| |_ _ | |_| |_ _| | _|_ _ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ |_| _|_ |_| | _ _ | _| |_ _ _ _ | |_ |_| | | _|_ _ | | _| |_ _ |_ | |_ _| | _ _| |_ _| _ _| | _ | _|_ _ _ _| _| |_ _ _ _ _| |_ _ | | _| |_ _ | | | | |_ _ _| | | _ _ | | _|_ _|_ | _ _| | _|_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| | _ _| | _ | | |_ _|_ _ | _ |_ |_ | _ _ _|_ _ _ |_ |_ _ _ _ _|_ _|_ _ _ _|_ _ _ | | | | |_|_ _| |_ _ |_ _ _ _| | _| |_ |_ _ _|_ _|_ _ |_ _| | |_| |_ | | _| | _| |_ _ _ _ _|_ _| | | | |_ _ _ _|_ _ |_ | |_ _ | | |_ _ _| |_ | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | |_ _| | |_ _ _ _ _ _ _| | |_ _ | | |_ _|_ | | _| |_ _ _| | |_ _ _ _ | | | _| |_ _ | _| | _| _ _| _| | |_ _| |_ _ _ _| |_ _ _ _|_ |_ _ | _ _ | |_|_ _ _ | _ _ |_ _ _| _| _ _ | _ _|_ _ _ _ | |_ _ |_ | | _ | | _ _|_ | | _| _|_ _ | _|_ |_ _ | | | |_ _|_ | | _| |_ _ _| | _| _ _| _ _ _| | _| | _ _|_| |_ _ _ |_ _| | _ _| |_ _| _ _| | | | |_ _ | | | |_ _| _| | | |_| |_ _|_ _| | _ _| |_ _| _ _| | _ _| |_| | |_ | _ _|_| _ |_| _| _|_ |_| | |_ _ | | _| |_ _ | |_ | |_ _| _ _|_| _ | _|_|_ | | | _ _| _| _ | | _|_ _ _ _|_| |_| | _ _ _| | | _| |_ _|_ | | | | _ _ _ _ | |_ _ _ | |_ | _ _ _ _|_ |_ _ _ | _ | _ _|_ _| _|_ _| |_ _ _| | |_ _ _|_ | | | _ _| |_ _ | _ _|_ _|_ | | _| |_ _ |_ _| | | |_ | _|_|_ | | | _ _| _ |_ _| | _|_| | _ _| | | _| _|_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | | | _ _ _|_ | | |_| |_ | | |_ |_ _ _ _| |_ | +|_|_ | | | _ _| _ _ _ |_| |_ | | |_ _ _ _ _ |_ _ _| |_ |_ | _ _ _| _|_ _ _ _ _ _ _ _| | _ _| | _|_| |_ _ _| | | | | | _| |_ _ _ _ _| _|_ _| _| _ | _ | | |_ _ _ _| | | | | | | | _ _ _| | | | | _ | _| | | |_ _|_ | |_ _ |_ | | |_ _ _ _| | _|_ _ _| |_ | |_ _| | | | | _ _ _| | | |_ | | | _| |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| | | _| | |_ _| |_ | | _| | |_ _ _| | |_ _| | |_ _ _|_ | | _| _ _|_ _ _ _| _ _| _ _|_| | _|_ _ _ _ _ | |_ _ _| _| _| | |_ _ _| | | _| |_ _| |_| _| | | |_ _| | | | _|_ _ | |_ |_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ | _|_ _| |_| _ | _| | _ _|_ | _| _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | | | | |_ | | |_ _ |_| _ _| |_ |_ |_| |_| _ _ |_ |_ _ | _| _| |_ _| | _| |_ | | | _ |_ _| |_ _ _ _ | |_|_ |_ _|_ _ _| |_| _| _ _|_ _ _| | _| | | |_ _|_ | | | | _ _| | |_ _| _ _ _ _ _ _ _| |_ _|_ _| | | | _ _| | |_ |_ _ | _|_ | | _| |_ |_ _ _|_ | | |_| _ _|_ _ |_ _| | _ _| | _ | |_ _ _ | |_ _| _|_| | |_ _ | _ _|_ _| | _ _ _| _| | _| | | | | _ _| _| |_ _ |_ | _ _| _ _|_ | _ _| | | _ _ _| _| | _ _ _| | | |_ _| | |_ |_ _ | _ _|_ |_ |_ |_ _ _ _ | |_| _ |_ |_ | |_ _ |_ _ _ _| _ _| _| | |_| | _|_ _|_ |_ | |_ _ _|_ | |_|_ _ _ _|_ _ _|_ _ _ _| _ _| _| |_| | _ _|_| _| | _ _ _| | | _| |_ _|_ | | | |_ _| | |_ _ _| _| | | _|_ _ |_ _ _ _ | | |_ _ _ _ _| |_ _| _ _ _ _| _| | | |_ _ _ _ _ _| _|_ _ _ _| | _ _ _|_ _ _ _ _| | |_ _ | | _| |_ _ | _|_ | |_ _ _| |_ | | _|_|_ |_| |_ _ | _ _| _ |_ |_ | _| _ _ _ _ | | | | _ _ _| | _ | | | |_ |_ _ | _ _| | |_ | |_ _ _ _ _| |_ _| _ _| |_ |_ | | | | | |_ | | _| |_ _ |_ _ _| |_ | _|_|_ | | | _ _| _ _ | | | |_ _|_ | |_ _ | _|_ _|_ | | _| |_|_ |_ |_ | | |_ _ _| +| _ _| |_ _| | _|_ _|_ | | _|_ _| _ _ |_ _ | _ _| | |_ | | | _ _ _| _ _ _ _ _ | |_|_ | _ _|_ _ _| | _ | | |_ _ _| |_ _ _ | | _ _ | | _| | | | _|_ _|_ _ |_ _ |_ _| |_ | |_|_ _ |_ | |_ _|_ | | | |_ _ _| |_ _|_ _ _ _ _| | | |_ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _|_ | _|_ _| |_ _ | | _| | _| | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| _|_ |_ _|_ |_ _|_ _ |_ _ _| |_ _ _ _| _ _ _ _|_ | | _| _ _ _ | | |_ | |_| _ _ | | |_ _ _ | | _ _ _ _| |_ _ |_| |_ _| _| _| _| _ _ |_| | | | | _ _| | _| _ _ _|_| | | |_| | | | | |_ | | _ | _| _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ | _| _ |_ |_ |_ _| _|_ _ _ _ _|_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_ _|_| |_| |_ _|_ _| |_ _ |_ | | | | _ _|_ | _ _ _|_ |_ _ _ _| |_ _ _|_ | _ | | |_ | |_ _| |_ _| | | _ | | _| |_ _ | |_ _ _| _ _| _ _| | _ _ | |_ _ _| |_ _|_ _ _ _ _| | |_ _| | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| |_ _ _| | | _ _ _| |_|_ |_| _ |_ | | _| | _| | |_ _ _ _ _|_ _|_ _ |_ _ _ | |_ | | | _ _ _| |_ _ | |_ | | | | | | |_ _|_ _ |_ _ _| | | |_| |_| | _|_ _ _ |_ _| _ |_ |_ _| | _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_|_ _ _| _ | | | |_| _| _ _|_ | |_ _ _ | | | | |_|_ | |_ | |_ _| _ _| _| |_ | |_ _| _ _ | |_|_ | _ _ _| | |_ _ _ _ _| |_ _ _ _ _| _|_ _ _ _| | _ _ _|_ _ _ _ _| | | _| _| _ _ _ _| _ _|_ _ _ _ _ _| |_ |_ _ _ _ | _ _ _ _ _ _ _| _|_ _| |_ _| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _| | | | _ _|_ _ | _ _|_ _|_ | _ _ | _ _ _| | _| _| _ _|_ | | |_ _ | | _ _| | | | | | | _|_ _| |_ | |_|_ | | _ _|_| |_ _ _ | _ _ _| _ _ | | _ _| _ _ _| |_| |_ _| | _| |_ _ |_ |_ _ |_ | _|_ _ _ _ _| |_ _|_ _| | | | | | | | | |_|_ _| | |_| _ | | |_ |_ _ | _ _ _ _| |_|_ _ _ | +| |_ _ _ | _ _ _ _| |_ | | _ _ _| _| | |_| |_ | | _| | |_|_ _ | | _ | | _| |_ _ | _| _ _ |_ | | | |_|_ _ |_ | |_ _ | | | |_ |_ _|_ _ _|_ _|_ _ | _ |_ _ |_ _ | | | |_ _ _| | |_ _ _ | | | _| _ _| | _ _ | _ _|_ _| |_ |_ _ |_ _|_ _ | _|_ _ _| |_ | _|_ _ _ _ _ _| | | | | |_ _ _ _ _ _ _|_ | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| _ _ |_ _ _ |_ | _ |_ _ _ | | _| | | _ _ | _| | | _ _ | _| | | _|_|_ |_ | _|_|_ _|_ _ |_ _ _| | _ _ _ _|_ |_ _ | | | |_ _ | | | _ |_ _ | | | | | |_ | | |_ _ _ | _ _| | _| _|_ _| |_ |_| _| | | |_ |_ _ _ _| | _|_|_ | | | _ _|_ _ _ | | | | | |_| _| _ _|_ | | |_ _ _ |_ _ | | | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ |_ |_ | _ |_ _ _|_ _ _|_| | _ _ _ _| _ _| _ _| _| | _ _|_ _ _ | | _| _| _| | _ _| _| |_ _| | | |_ _|_ _ _|_ | | |_| |_ _ |_ | _|_ | |_ |_ _ | | | _ _ | | _ _ _| |_ _|_ _ _ |_ _ | _|_ _ _| |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ | _|_| |_ | | _ _| _| _|_ |_ _|_ | | | |_|_ | | _ _ _| _ _ _ |_|_ | | |_| _|_| | | | _| | |_ | | _|_ | _ | |_ _ _ _|_| | | | _| _ _|_ _| _ _ _ _| |_ |_ _ _| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | |_ _| | _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_ _ | |_ |_ _ _ _| _| _| _| | _ _ _| | _| |_ _ |_ _|_ _ |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | | _| _ _ _ _| _ _ |_ _ | _ _| | _|_ _ _ |_ _| _ _ _ _ | _| _ |_ |_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _ _ _|_ | | _ _| |_| | | _ _| | | | _| | | _ _| | _| |_ _ _ _ _|_| | _ _| _ _ _| |_ |_ _| |_|_ _ _ |_ | |_ | _ _|_ | | |_ _ | | |_ _ _ _ _|_ _ |_ _| | _ _| _ |_ |_ _ | |_ |_ _ | _ _ | |_ | |_ | _ | _ _ _ |_ _ _| |_ _ _| |_| |_ _| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ | _ _| +| _ |_ _| | | _ _ _ _|_ |_ |_ _ | _ |_ _|_ | | _| |_ _ |_ _ _| | | _| |_| |_ _ _|_ | | | _| _ _ |_| | | |_ _ |_| _| _| _ _| |_ _|_ | | _ _ _ | |_ _| _ _ _| | | _| |_ _ _ _| | _ _|_| | | | | |_ _ _| |_ _|_ | |_ _ _ _ _ _| _|_ _ | | _ | |_ _| _| _ _|_ _ _| |_| | _ _ | | _|_ _ _|_ _ | _ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | _| |_ | _ _ _| | | |_ |_ |_ _| | _| |_ _ _ _|_ | | |_ _ _| |_ _ _| |_ | |_ | |_ _ _ _ _ _ |_ _ | | |_ _ _| |_ | | | | | |_ | | |_ _ |_ _ | | |_| |_| | _| |_ _ |_| | | |_ _| _ _|_ _| _| | |_| |_ _ | _ _| |_|_ _ _ _ _| |_ _| | | | | | | | |_ _| |_ _| |_ _ _ _ _| _|_ _ |_ _ _ _| _| | | |_ _|_| | _|_|_ | | | _ _| _ | _ _| | | _| _ _|_ |_| | | _| | _ _ _ _ | |_ _ _ _ |_| _ _| | _ _|_ | _| _| | |_ _ _| _| _ _| | | | _ _ _|_ _ _ _ _ _ | |_|_ _ _|_ _ | _| |_ |_ _|_ |_| | | |_ _| _| |_ _ _ _ _ _| | _ |_ _ |_ _ | |_ _| _| _ _|_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| | _ |_ _ _| |_ | _| |_ _ |_ _| | | |_| |_ _ | _|_ _ _| _| _ _| | | _ _| |_ _ | _ _| | | | | _|_|_ _ _| |_ _| _ _|_ _ _ _ _|_ _ _ _ _| | |_ _| _ _ |_ _ | _ _| | _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | | |_ _ | | |_ _ _ | _|_ |_ _ _ _ | | _ _ |_ _ |_ | |_ | _ _ _| _|_ _ | | _ | |_ _ _| _| | _ | | _ | |_ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ | _ _ _| | | |_| |_ | |_ _ _ | _ _ |_ _ | | _ _| _| _ _|_ | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _ _ _| _ _ |_ _| | _ _| | _|_ | _ _| | | | |_ |_ |_ | | | |_ | | _ _| | | _| _ |_ |_ _|_ _ _ _ _ _ _ _| | |_ _| | _ _| |_ _| _ _| | |_ _ _ | |_ _ | | _| _| _ _|_ | _|_ | | _ _|_| |_ _| _| _| | | |_ _| |_ |_ _ | _| _ |_ |_ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ | +| | |_ _ | _|_ _ _| |_ |_ _| | | |_ _| | |_ |_ _ | _ _| | _| _| _| _ _ | _ | | | |_ _| |_ _ _|_|_ | _ _ _| _| _| _ | _ | | |_ _| | | _| |_ _ |_ | _ _|_ _ _ _| _ _ |_ _ | _ _| | | |_| _ _ _ _|_ _ _ _|_ _ _ _ | |_ _ _ |_ |_| _| |_ | _ _| | _| _ | _|_ _| | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | _| | _|_| _ |_ _| |_ _ _ | | |_ _ _ _ | |_ _|_|_ _ | _| _ |_ |_ _|_ | _| _ | _ _|_ _ | |_ _| _| _ _|_ _ _| _|_ _| _| | |_|_ _ |_ _ | |_|_ |_ | |_ |_ _ | |_ _ | | | | _| _| | | _ _ _| | _| _| | _ _| | |_| _ _ _ _ _ |_ | | | | |_ _ _| |_ _|_ | |_ | _ _| |_ |_ _ | _| | _| |_ _ _ _ _| |_ _ _ _ _| |_ _| | | _|_ _ | | _| |_ _ _ _ _| _| |_| _|_ _ | _ _ _|_| _ _ |_ _ | _ _| |_| | _| | |_ _ _| | _ _ _| _|_ _ | _| | | | _ _ _ _ | | | | | _ | _ _ _|_ _ _ _|_ _ |_ _| |_ | | |_ _ _ _ | |_ _| | |_ |_ _ |_|_ | _ _| | _| _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _|_ | | | _| _ |_ |_ |_ _ |_ _ | | |_ _ _ _| _ _|_| _ _ |_ _ | _ _| | | | | | |_| |_ | | |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _| | | |_| |_ | | |_ |_ _ _ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _|_ | _|_|_ | | | |_ | |_ _ _| | | _ _| _ _ |_ _|_| _ _ _| | _| | _|_ _ | |_ _ _ _ _| |_ _| |_| | | _ | |_ | |_| | | | | | _ _| | |_ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_| | |_ _ |_ _| |_ _|_ | | _| |_ _ _| | | | _| | |_ | _| |_ _ _ _ _| | |_ _| _|_ | _|_|_ | | | _ _|_ _ |_ | | |_| _ _ _| _| | |_| |_ | | _ | | |_ | | |_| |_ _ _| | | | | |_ | |_ _| |_| _|_ | _| _| _ _|_ | | _ _ _ _ | |_ _ |_ _ |_ _ _ _| _ _| _|_ |_| | |_ _ _ _| | _| _| |_ _ _ _ _| | _ _|_ | | |_ _ | |_ _ _| | | _ _|_ _ _| _ _ _| _| _ _|_ | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ | | +|_ |_ | |_ _| _| _ _|_ _ _| _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ | | _ _ | _|_ _| | | | | |_ _ | _ _ _| | _ _ _| | | |_ |_| _| | |_ | _| |_|_ _ _| _| _ _| _ _ | _ _ _| _| | |_| |_ | | |_ |_ |_ | _|_ | | | _| |_ _ | _|_ _| _| _| _|_ | _|_ | | | | | |_ _ | | | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _| | | _|_ _ _|_ _ _ _ _ _|_|_ |_ _ |_ _|_ _ | | _| | _| _ _|_ | | |_ | | | |_ _ | | |_ | _ _| | _ _ | _| _ | |_ | _ _|_ _|_ _|_ | |_ | | _ _|_| |_ _| | |_| _|_ _ _|_ _ | |_ _ _| |_ | _| | | _|_ | _| |_ _ _| | | _| _ |_ |_| _ _|_ | | | | |_ _ | _| _ _| | _ _| | | | _ | | _| _ | |_ | | |_ _ _ _| |_ |_ _ _ _ _ _| |_ _ | _| |_ | _ _ _| | | |_| |_ | | _|_ |_ _|_ _ |_| _|_ _ | | |_ | |_| _| | |_ _ | | _| |_ _| |_| |_ | |_ | _ _ _ _ | |_|_ | | | _| |_| _| _ _ | _| |_ _ | |_ _ _ | |_ | _|_ | _|_| | _| | _| | | |_ _|_ | |_ _ |_ | | |_ _ | | | | |_| _| _ _|_ |_ | |_ _ | |_ _|_ | _ _ | _ _ _| _| | |_| |_ | |_ _| | |_ _|_ | | _| |_ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | |_ _|_ | | _| |_|_ |_ _ _ _| _| | | |_ _|_ | | |_ | _ | | |_ _ | _|_ _ _ _ _| _ _| _| | _ _| |_ _ _ _| | |_ _ _| | | _ _|_ _ _| | _| | _| _ _| | _ _| _| |_ _| _| | _|_ _ _| _| | |_| _ _| _ _|_ _| |_ | _|_|_ | | | _ _|_ | _ | | | | |_|_ _| | _ _| | | |_ |_ _ | _ _| |_|_ | _| _| | |_ _ _ | _| |_ _ _ _ _|_ _ _ _ _| |_ _| _ _| | | | | |_ _ | _ |_ _|_ | | _| |_ _| |_| | | |_ |_ | _ _ _| | _| _| | |_ |_ | _| | _| |_ _ _ _ _| |_ _ | | _| |_ _ | | _ _ | _ | | |_|_ |_ | | | _ | _ _|_ | |_ _| _| _|_ _| | _ _| |_ _| _ _| | | | _ _| | _| | |_ | _| |_ _ _ _ _|_|_ |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _|_|_ |_| | +| | | |_ | _ _| | _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | |_ _| |_| _ | |_| | |_ _| _ _| | _ _| |_ _ | _|_ | |_ | | |_ | | | _ _| _| _| |_ _| |_ _ | _ |_ _|_ | | _| |_ _ _ |_ _ _| _| | | | |_ _|_ _ _|_ | | _ | _ _|_ |_ _| |_ _ |_ _| |_ _| | |_| | | |_ | _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ | | _ _ |_ _| |_ | _| |_ _ _ _ _|_| | |_ | |_ _ _ _ _|_ | | _|_ | _|_| _ _|_ _ _| | |_|_ _ _|_ |_| |_| | _ _ _| | _ _|_ | | |_ _ | |_ |_ | _ _ _| | | | _ | |_ | | |_ _ _| | | | |_ |_ _ _ | | |_| _| _ _|_ | |_ _ _|_| | _| | |_ | | | |_ _ _ _| _|_ |_ |_ |_ | |_ _|_ _ |_| |_ |_| _ |_ |_ _ | | |_ _ _ _ _ _| | | _| _|_ _ | |_|_ _|_ | | _| |_ _ |_| _ _ |_ _ _| _| | |_ _ _| |_ |_ |_|_ | | |_ _| _| | | _ _ _|_ _ |_ _ | | _| |_ _ | | | |_ |_ |_ |_ _ |_|_ _ _|_ | | |_ |_ | | |_ _| |_ _ |_ _ | |_ _ _| |_ _|_ _ _ _ _| | | |_ | |_ _|_ _ |_ _| |_|_ | _| |_ _ _ _ _| _|_ | _| | | _|_ _ | |_ _ | | |_ _|_ | | _| |_ _ _| | | |_ |_ _ | _ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _|_ _ | | |_ |_ _ | _ _ |_ _ _| |_ _|_ _ _ _ _|_|_ | |_ _| |_ _|_ _ |_|_ | _ _ _ _| _| _| | | |_ _ | _ |_|_ _|_ _ _|_ | _ _ _| | | _|_ _ _ _| | _| |_ _ _ | _ _|_ _ _ _|_ _ _| |_ |_ |_ | _| _ _ _ _|_ |_ _ _ _ _ _| |_ _| _ _| |_ | | | |_ _| |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | | | _ | |_ | | | |_| | | | |_ |_ | _ _ _ | | |_ _ | _ _|_| |_| _ _| | | | | | | |_ |_ _ | _ _ _| | | | _ _| _| _ _|_| _| | |_| _| _| | | |_ _ _ _ _ | | _| | |_ _ _| | | | | | _| | | |_ _|_ _ |_|_ _| | |_| |_ | | _|_ | _ _|_ | | _ _ |_ _ _ _| _ _| _ _ _| |_| | | _|_ | | |_|_ _ | |_ | _ _ _ _ _ | _| | | |_ _|_ | |_ _| _ _ | | |_ _ | _| _| +| |_ _| | _|_ | _|_ _ |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| |_ _| _| _| |_ |_ | _ _| _|_ |_ _| | | | |_ |_ _| |_ _| |_| |_ |_ _ _| | _| |_ _ _ _|_ _| | | | _ _| | |_ |_ _ | _ _ |_ _| _| |_ _|_ _ _ _ _ | |_ | | _| _ _ |_ | | _|_ _ |_ _ _ _|_ _ _| |_| _ _| | | _ | _|_|_ | | | _ _|_ _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | _ _ _ _| | _ _ _ _ _ _|_ |_ _| _ _ | |_| |_ _| |_ _ |_ _ _| |_ _ _ | |_ _ _|_ _ _| |_ | | _| | _ _| |_ _| _ _|_ _|_ |_ _ _ | | _|_|_ _ _| | | |_ _|_ _ _ _ _|_ _|_ _|_ _ |_ _ | _| |_ _ _ _ _| _ |_ _ |_ | _| |_ _ _|_| |_ _| | | |_ _| |_ |_ | |_ _ | _ _| _| _| _| _ _|_ | | |_ _|_ _ _ | _ | | | | _| _| | |_| _ | | |_ |_ _ | _ _ _ | | _ _ _| | _|_ _ _ _ _ _ _ |_ _ _ _ |_ _ _ _ _ _|_|_ | _ |_ _ _ _ _| | |_ _ _| | | | _ _| | | _| |_ _ _ _ | | | |_ _ _| _| |_ |_ | | |_ _ |_ | | | | _ _ | _ _|_ _| |_ |_ _ _ _ _|_ _ | _| | |_ _ _ _ _ |_ _ _ |_ _ _|_ _|_ _ _| | | _| | _|_ _ | | |_ |_ _ | _ _| | |_|_ | | _ _|_| |_ _ _ _| | | _|_|_ | | | _ _| _ | | |_ _| _ _ _ _| |_|_ | | _ _|_| |_|_ _| | _ _ | _ _ _ _ _| | _ | _ _ |_ _ |_| | | | | _ _ _| _| _| | | _ _|_ _| _| _ _| |_| | _| |_ _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | | _| |_ |_ _ _| |_ | _ | _ _ _ _| | _ _ _ _|_| |_ _|_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ |_ _| _| | | | | _| | |_ _| |_ _ | |_ _ _|_ _|_ _ _ _| |_| _ |_ |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | | | _ _| _| _ _ _|_ _| | | _|_ | _| | |_ | _ _ _|_ | | | _| _ _ | | | |_ _| | |_ _ _| _ | |_ _ |_ | |_ _ _|_ | | _ _| _| |_ _|_ _| _ | | | | | |_ _ _ | | _| |_ _ |_ _| _ _| |_ | _| |_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| _ |_ | _|_ _|_ _ |_|_ _ |_ | +| _ | |_ _| |_ _ |_ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _|_ |_ _ | | _ _| |_ _|_ | | | | |_ _ | | | _| _|_ _|_ _ _ | |_ _ _ | _|_ _ _ _ _|_ _| _|_| _ _ _ |_| _|_ _| _ | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ | |_| | _ _| | | | | | _| | _| |_ _|_ _ |_ |_ _ _| _ _ |_ _ | _ _| | |_ _| |_ _ _ _ _| |_ _|_ _ _ _| | | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _| | _| |_| | | | | _| | _ _| | _| |_ _ | |_ | |_ |_ _ |_ _| |_ _ _ _|_ _|_ _ | | _ _| |_ _| |_ _ |_ _ _ _| _ _| _ _ _| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | | |_ _ |_ | _| |_ _ |_ |_| | |_ _ _ | | _ _| | | | _ _|_ _ |_ |_ _| | |_| _ _ _| | _| |_ _ _ _ _| |_ _ _ | |_ _ _|_ _| | |_ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | | _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _ _ | _ _| | | |_| | |_| | | | |_ _ _| | |_ | _| | | _ _ | | _| _ _|_ _| | _ |_ | | | _|_ _| _| |_ _ _ _ _ _| _|_ _ _| _ _ _| | |_ _ _|_ | _ | _| |_ _ _| _ _ _ _ | | _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ | _ _|_ | | |_ _ | _| | |_ _ _ _ _| |_ _| |_ | | | | | | | | _ _ |_ | _ _|_ | | |_ _ | |_ |_ _| | | |_ _ _ _ _ _ _|_ _ _| _ _ _ _| | _| |_ |_ _ | |_ |_ | |_|_ | _ _ | _| | _| _ _|_ _| _| _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| | |_ _| _| _ _|_ _ _|_| | |_ _ | _ _|_ _| _ |_ |_| _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ _| _| | | | | |_ |_ | _|_ | | _| _| _ _ _ _ | _| _| _ _|_ | |_ _ _ | | |_ | _ _|_ | | |_ _ | | _| |_ |_ |_ _ |_ _ |_ _ _ _ _|_ _| |_| _| _ _ _ |_|_ | | _ _ | | | | | |_ | _ _| _| | _ _| | | |_ | _ _ | |_ _| _| |_ |_ _ |_ _| | |_|_ _| |_ _|_ _ |_ _| |_ _ | |_ _ |_| | _ _| _| |_ _ _ |_ _ | | | | _ _ | _ | | |_ _ _|_ _ | _ |_ _ | | | | +| | | |_ |_ | |_ |_ _ |_| _| | | |_ _|_ | | _ _ _ _ | | |_|_ | | _ _|_ _| |_ _ _ _| |_ _| |_ _ | | |_ _ _|_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _|_ _|_ |_ _ _ |_ _| |_ | _ _|_ | | |_ _ | | _ _ _|_ _|_ _ |_ _ _| |_ | | | |_ _ _ _ |_ _ _| _| | | _ _ _| | | |_| |_ | | | _ _ _ _ _ _ _ _ | _ | | _ _|_ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | |_ _| | _ _| | |_ _ _| |_|_ _|_ _| |_ |_ _ _ _ _|_ _ _ _ _|_ _ |_ _|_ | | | | | _ _ _ _ |_ |_ _| | _ _|_ _ |_ _ | _| | |_ _| |_| | |_ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ | |_ _ _ _| | _ _| | _| _|_ _ _ |_ _| | |_ | |_|_ _| _ _ |_ _ | _ _| |_ | _| | | |_ _ _ _| _ _ _ |_ _|_ _ | _ _|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _|_ _| |_ | | _ _| | |_|_ | |_ _|_ _| |_ _ _| |_ | |_ _| | _| |_ _| | _ _| |_ |_| | _ |_ _ _ _ | |_ _ _ _ _| | | _ _|_ | _| _|_ _| |_ |_ |_ _ |_ _ | | _| | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _ _| |_ _| _ _| | _|_ _ _ _ _| _ _ _|_ _| |_ _|_| |_| | | |_ |_ |_ _| | _ _| |_ _| _ _| _|_ | | |_ | _ _ _ _ | |_ _ |_ | _ _| | |_ | | _| | | | | |_ | |_ |_ _|_ _ | |_ _| _ _ |_ _ | _ _| | _| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ |_| |_ | _ _| | _ _ _ |_| |_| _ _|_ | _ _| _| _ _|_ | | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _| _ _ _| _ _| | |_ |_ |_ _| _ _| | | _| |_ _ | | _| | | _| |_ _ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| _| _|_ _ _ | |_ _| | _ _ _| _| _ _ _ _|_ _ _| |_ _| |_ _|_| |_| |_ | | | _| _| | _ _| _ _ _|_| |_| _ _ _| _| _| _| | | _ _|_ _ | |_ _ |_ _ | _|_ _|_ _ |_ |_ _ _| _| |_ _ _ _ | | |_| | |_|_ _| | |_ _|_ _ _ _ _ |_ |_ _| _ _ _| | _| | | +| _| | _| |_ _| _ _ |_ |_ _ _| |_ _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_|_ | | _ _ _ _|_ |_ _ |_ _ _ _|_ |_ _| |_| _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ |_ |_ _ _ _ _ _ _ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ _ _ _ _ _| _ |_ |_|_ _| | |_ _ _ _ | | _|_ | |_ _ | _| |_ _|_ | | _| |_ _| _ _| | _ _| |_ _| _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | |_| |_ | | | _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| _ _|_ |_ _|_ _| _ _ |_ _ | _ _| | | _| | | _| |_ _|_ _ |_ _ |_ _| _ _| |_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _|_ | _ _ _|_| | _ |_ _ _| _ _ |_ _ _| | _| | _ _ _| _| | |_| |_ | | _| | _| | |_ | |_ _ _ | | | |_ _ _ _|_ |_| _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ |_ _|_ _ |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ |_ _| | | | _ _ _ _| |_ _ | | | _ _ _|_ _ _ _ _| _ |_ |_ _ _ _|_ _ _| | | | |_ | _|_ | _|_ _| | _ _| _| |_ _ |_ _ | _| |_ | _ _ _| _| _ _| | | |_ |_ _| | |_ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | |_ _ _ _| _ _| _|_ _ _ | |_ _ _ _| _ |_| _| _ |_ |_ _ _| | _| _|_ _ _ _| _ _| _ _| _ _| | | | | |_ _ | | _| |_ _ | _ _|_ | _|_ _ _| | | _|_|_ _ _| _|_ |_ _|_ | _ _ _|_ _ _ _ _ | | |_| |_ | | |_ _ |_ | | _|_|_ | | | _ _|_ _ |_| | | | _ _| _ | |_ | _|_ | _|_ _ |_ _|_ | |_ | _| |_ _ _ _ _| |_ | _| | | |_ _|_ | | | _| | | |_ _ |_ _|_ _ | | |_ | | _|_ | _ |_ | | |_ _ _ _| | |_ _ _| | |_ _ _ | | _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _ _ _ _|_| _ _ |_ _| | _ _| | | | | _ _ _|_ _| _ _ | |_ _| |_ _| _| _ |_ |_ |_| |_| |_ | | _|_ | | | _ _ _ _|_ |_ _ _ | | _|_ | |_ _|_ | _| |_ _ | | _ _| | |_| _ _ _ _ _ | | _ _ _| | _ _| _| | |_ _ _|_ |_ _| |_ _ _ _ | |_ _ _ _ _|_ | _ _| _ _|_| +| | _|_ |_ | | |_ | | _ | | _ _ | _| | |_ _ |_ _ _ _ |_ _ | | |_ _ _| |_ | |_ _ _ | |_ _ |_ |_ _ | | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | | _ _ _ _ | |_ _ | |_ _ _ _| _ _| | _ _ _ _| _ _ |_| _| _ _|_ | | | |_ _ |_ _ _ _|_ _ _ _| _ _| | | _| | | |_ |_ _ | |_ _ _| |_ _ | | |_ _ _| _| _ _|_ | _| _ _| | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_| _|_ | | _| |_|_ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | _| | _ _ _| | | |_| |_ | | |_ _|_ | |_ |_ _|_ _ | |_ _ | | _ _| _| | _|_ |_ _| _|_|_ | | | _ _| _| _| _ _|_| _| _ _|_ _ | _ _|_ |_| _ _ _| | | |_ _| |_ | |_ _ | | |_ _|_ | | _| |_ _ | |_ _ _| _|_ | |_ _| | |_ _| _| _ _| _| |_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ | | _ _ |_ _ _ _| _ | _|_|_ | | | _ _| _ |_ | | |_ |_ _ | | |_ _| _ |_ |_ _| | _| | | | _| _| _ _|_ | | _ _ _ _ | |_ _|_ _|_ _|_ _ |_| |_ _ | |_| |_ _ _|_ | |_ _ _ | _ | | | _ _ _| _|_ | _|_ _|_ | | | _| _| _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| | _ _| | |_|_ _ _ |_ _|_ _ | | | | _| _| _ _|_ | _|_| | _|_ _ _ _ | | |_ _| _| _ _| |_ _| | _| | |_ _ _|_ | |_| | _| | _ _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_|_ |_ _|_ _ _ _|_ _ _ _ _| |_ _| _ _ _| _| | | | _ _ _|_ _|_ _ _| _ | |_ _ |_ _ |_ _ _ _|_| | | | |_ _ _ _ _ _ | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_ _ _ _| | | _ _| | _ _ _|_ _|_ | |_| |_ | | | _| _ _| |_ | | _ _|_ | | | | |_ _|_ | _| _ | | | |_ _ |_ | _ _ _|_ | | |_| |_ | | | |_|_ _ | _ _ _| | _| |_ _ |_ _ | | _| _ _|_ | | _| _| |_ _|_ | | | _|_ _ _| |_ | _| | | | _ _| |_ _ _ _|_|_ _ _| _| | | | _ _| _ _ _ _| |_ | |_ _ | _ _| |_ |_ _ _| |_ | _|_ _ _ _ _ _ | _| |_ _ | _ _| | |_ |_ _| _ | +|_|_ _ | _ _|_ _|_|_ _ _| | | _|_ _| | |_|_ _ _ _|_ | |_ | _ _ _|_ | |_ _| _| _ _|_ _ _| | _|_ _|_ _ |_ |_ _ | _| | | |_ |_ | _|_|_ | | | _ _| | | | | | _ _ _| |_|_ _ | | _| |_ _ |_ _ | | | |_|_ | | _ _ _| | | _| |_ _ _ _ _| |_ _| | _ _| _ _ _ _ | |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| _| | |_ _ | _| |_ _ _ _ _|_ | |_ _ |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_ | | |_ |_ _ | _ _| |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _| |_ _ | |_|_ _|_ | | _| |_ _ _ | |_ |_ _ _ _ _ _|_ _ _| | | | |_|_ _ _| | | |_ _ _ _ _ _ _ _| |_ _| _ _ _ _|_ | | _ _ _| | _ _| | _ |_ |_ _ | | | |_ _| | |_ | |_ _| | | |_ _ | | |_ |_ _ | |_ _ | _|_ | |_| |_ _ |_ |_ |_ _|_ _ _|_ | _| | | |_ _|_ | _|_ _ _ | | |_ _| _|_ _|_ |_ |_ _ |_ |_|_ _ _ _ _| |_ _| _ _| | | _| | |_ | _ _| | |_ |_| _| _ _|_ | _|_ _| |_ _| |_| | | _| |_ _ _ _ _| |_ _ | | _| | _ _ _ _ | |_ _ | _| | |_ _ |_ _ _ _ | | _ |_| | _| |_|_ _ | | |_ | | _ _ _| | |_ _| | _|_ _ _| | _| | | |_ _|_ | _ _ _ | | | |_|_ |_ _ |_ _ |_ _|_ _ |_ _ _|_ _ _ |_ _| | | |_ | _| |_ _ _ _ _|_|_ | _| |_ |_ _ | |_ _|_ _ |_ _ |_ |_ _ _ _| | _| _ _ _ | | _|_ |_ _|_ _| |_ _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _ _ | _ _ _ | _ _ _ _ | | _ _ _|_| |_ | _ _ _ _ | |_ _| |_ | |_ _ |_ | _ | _| _|_ |_| | |_ _| |_ _| | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | | _|_ _| | |_ | | _ _| |_ _ _| |_ _| |_ _| | _| _|_| | _ _ _| | |_ _|_ _ _ _ _|_ | | _| | |_ _|_ _ |_ _ |_ _ | _ _|_ _|_ | | _| |_|_ _ _| | | _ _|_ _ _|_ | | _ _| _| |_ _ _ _ _| |_ _ _| _ _ _ | | | |_ _| _| _ _|_ _ _| | _|_ _ _|_ _|_ _|_ _ _ _ _ _ _ _ _|_|_ |_ _| _ _ _ _|_ |_| _| |_ |_ _ | _ _| _| _| |_ | | _ _ |_|_ _ _| | |_ | | |_ _ _|_ | _| | +| _ | _| _ _ _ _ | |_ _| _ _ _ | |_ _ _ _ | |_ _| _|_ _ _ | _|_ | _ _| | _ _| | |_ _ _ _ _ _ _ _| | | | _|_ _ _ _| | |_ _ _ _ _| |_ _| _ _|_ _| |_| | |_ | | _ _| | |_ _ _|_ | |_ | |_| |_|_ _|_ _ |_ _|_ _ _ _|_|_ _ _ _ _ | _ |_ _ _ _|_ |_ _ | | _| |_ _ |_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_ _ _| | |_ _ | | _ _|_| _ _ _ _ | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | | |_|_ | | _ _|_| |_|_ _| _ _ | _|_|_ | | | _ _|_ | _ | | _| |_ _ _|_ _| | | | _ | | |_ |_ _ | _|_ _|_ _ _ _ _ | | _ _| |_ _|_ _ _ _ |_ _ _|_| _ _ |_ _ | _ _ _ _ | _ |_ _|_ _ | _|_| | | | _|_ _| |_ |_ _| | _|_ |_ _| _| _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ | | |_ |_ _| _ _|_ _| | | _|_ _ _| |_ _|_ _ _ _ _|_| | | | _|_ _|_ _ |_ _ _ _ _ |_ _ _ _ |_ _ _ _ _ _ _ |_ _ | | _|_ _| |_ | | _ _| | | _| |_ _ _ _ _| | | _| _|_ | _| |_ | | |_ _| | |_ _ |_ _ | | _| |_ _ | | | | _| | | | _| | | |_ | | _|_ |_ _ _| |_ _ _ _| |_ _ |_ | |_ _ _| |_ | | _ _| |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_ _ | | _ _ _ | |_ _ | _ _| |_ | _|_|_ | | |_ _| _ _ _ | | | |_ | |_ _ _| | | _ | |_ _ |_ _ |_ _ | | _| |_ | _| | | |_| _ _ _ _|_ |_ _ | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_|_ | | _ _|_| |_|_ |_ | |_ _| | _ _| | | _| _ |_ |_| _ | | _| |_ _ | |_ _ | |_ | | | | | | | _| _| _|_ _|_ _ | | _ _| |_ _| | |_ _ _ _ _ _ | | _ _| | _ _| | | |_ _ _ _|_ _|_ _ _| _|_| | |_ _ _ | |_ | | |_|_ _| _|_ |_| _ |_ |_ _ _ _ _ |_| |_ |_|_ _ _ _ |_ _ |_ _| | _ | | | |_ |_ _ | _ _ |_| | _ _ _ _ | | | | | |_ _ _| _| _ _ _ _ _ |_ _| | |_ | _ _| | | _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _ _| |_ |_| | _|_ _ _ _ | | _ _ _ _| _ _|_ _|_ _ _ _|_ | _ | | | | | | | _ _ |_ _| _| | +| | |_ _| _ | | _| |_ _ | _| | | _| | _| |_ _ | | _ _| |_ | _|_ | _|_ |_| _|_ _| _ _ |_ _ | _ _| | _|_ _ |_ _ _ _| | _ _ _ |_ _ | _ _ _ _| |_ _ _| |_|_ | _| _ _ | | | |_ | _ |_ |_ _ _ _ | | _ _ _ _ | |_ _| |_ _ _ | |_|_ _| | |_ _ _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ | |_ |_| | | | |_ _ | _| _ _|_ _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| |_ | _ _|_ | | |_ _ |_ |_ _ | |_ _ _ _ _| |_ _|_ _ _| |_ | | | | | | _| _| _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ |_ |_ _|_ | | _ _ _ _| |_ | _ _ _| _| | |_ _ _| | _|_|_ |_ _ | _| | | |_ | |_ _ _ |_ | | | | _|_| | |_ _ |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_| |_ _ _ | _ |_ _| |_ _| |_ | | | _ _ | _ _ _ _|_ _|_ _ _ _ _ _ |_ _ | |_ _ _ | | _ _| _ _ |_ | | _| _ _| _| _ |_ |_ _|_ |_ _| |_| |_ | _ _ _ _| |_ _ _ _| _ _| | |_ | |_ _| | |_ _ _| _| _ | | _| | |_ _ _| _| |_ _|_ _| _| |_ _|_ _ _| |_| | _|_ _| | _ _ _|_ _ _ _ _ _ _ |_ _ _ _|_ _ | _ _| |_ | | | |_ _| | _ _ | _ _| | |_ | | | _|_ _ | |_| _ | _| | _ _| | | _| | _|_ _ _ _ _| |_ | | _|_ | _| | | _| |_ | _ _| | | | | _ _| | _|_ | | _| | |_ _ _| | | | |_ _|_ _ _ _ _| |_ | _|_ _ | |_ | _|_|_ | | | _ _| _ _ _| | | |_ | _ _|_ | | |_ _ |_ _ |_ _ _ _| |_ | _| _| _| _ _|_ |_ _| | |_ _ _| _| |_|_ | | _ _| |_ _| _ _|_ _| _|_ _ | _| _ _ _| | | _ _ _|_|_ _ _ _ | |_|_ | _ _|_ | _ _| | | _ _ _| _ _ |_ _ | _ _| | |_ _ |_ _| |_ _| | _ _ _| _ |_| _| _ _|_ | | | _ _| | _|_ _ _ _ _ _ | _ _| | _| _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _|_ _| |_ |_ | | _| |_ _ | | | | _|_ _ | |_ _ | |_ | |_ | _|_| |_|_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _|_ _ _| _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ _| _| | | |_ |_ _| |_ | |_ _| +| | |_ _ |_ _| | |_ _ _| | | | _| |_|_ _ _|_ _ _ _| _ _ _|_ _|_ _ _ _ |_ _| |_ _ |_ _ | _ _ _| | | |_| |_ | |_ _ | |_ _ |_| _ _| |_ _ _| |_ _ _ _| _| _ |_ |_ |_ _ | | | | | |_ |_ | | |_ _| |_| |_ _ _ _ _| | |_ _ | | _| |_ _ | _ _|_ _|_ _ | | _| _| _ _ _| |_| _ | _| _|_ _ _ _| _ _| _|_ _ _|_ |_| _| _| |_ _ _| | | |_ _ _ _ _| _ _| | | | | | | | _ _| _| | | | |_ _ _ _ _| _| |_ _| | _ _| |_ _| _ _| |_ | | |_| _ _ _ _ _ | |_ | _ _|_| |_ | | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ _ _|_ _ _ | | | | _ _ _ _|_ |_ _ _ | _ |_ _|_ | _ _| |_ _ _ _ _| |_ | _|_ _|_ _ |_ _ _ _ _ _ _| _|_ _ _ _ _|_ _| | _| _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_|_ _ | |_| |_| |_ _ _ _ _| _ _ | |_ _|_|_ |_ _ _ | _ _ _ _ | |_ _ | _ _ _| | |_ _ |_ | |_ _| | _| _ _ |_| | |_ _ | _| _| _ _|_ | _ _| |_ _ _ | | | _ _|_ _| | | | | _| _|_ _ |_|_ _ _ | |_ | _| | | |_ _ _ _ | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| _ | |_ _ _|_ _ _| |_ _| |_ |_ |_ _| | |_|_ _ _ _|_ |_|_ _ _| |_ _ _| |_ |_ _| |_ _ _| | _ _|_| |_ | | |_ | _ | _| _|_ _| |_| |_ _ _| |_ |_ | |_ | |_ _| |_ | _ _| _ _ _|_|_ | |_ _ | | _|_ |_ | _ _ | | _ _|_ _ _|_ _ _ | | | _|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ |_ _| | _ _| |_ _| _ _|_ | | _ _ | | | | |_ _| _| |_ _ _ _ _| _ _| | _ _ _ _ _ _ _ |_ _| | | _ _ _| _ _ _| _ _|_ _ _ | | _|_| |_ _ _ _ _ _ _| _| |_ _ |_| | _ _| |_ | | |_ _| _ _ _|_ | | |_| |_ | |_ _ _ |_ _|_ _| _|_ _ | _ |_| _| |_ _ _ _ _| _|_|_ | | |_ | _ | | _| | _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ _|_ _| |_ |_ | | |_|_ _|_ _ _ _ _| _ _ _ |_ _ _ _|_ _ _|_ _ |_ _ _| | |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | | _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| |_ _| _ _|_ _ _| |_ _ | +|_|_ | | | _ _|_ _ _ _| | |_| | |_ _ _ | |_ _ _ _| _ _ _ _ | |_ _ |_ | | |_ _ |_|_ _ | |_|_ _|_ | | _| |_ _ _ | |_ | |_ |_ _ _| _ _| | _ _ _| _| _ _|_ | _ _ _ _| | | _| _|_ _| |_ |_ | | |_ _| | | _ _| | _| | |_ _ _|_ | |_ _| _ _ _ _ |_ | | _ _ _| _ _ _|_ _ _|_ |_|_ | |_| _ _ _ | | |_|_ |_ _| _ _ _| _| | |_ _ _| _|_| | _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _ _ _| _|_ _ _ |_ _ _ _| _ _| _ _|_ |_ |_ |_ _ | _|_ _|_ _ |_| _ |_ |_| |_|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ _ _ _| | |_ |_ _ _| |_ | _| |_ | | | | | _| | |_ _ |_| _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ |_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| _ | | |_|_ | |_ _ _| _ _ _ |_| |_ _| | | | _ | |_ _ | | _| |_ _ | _| | _ _|_ | |_ | |_ | | |_ _| |_ _ _|_ _ _ _| | _| |_ _ _ _ _| | | |_ _ | _|_ _ | _ |_ _| |_ _| | |_|_ _| _| _ | | _ _ _ _| | _| | _| | | | | | | | | _ |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _|_ _ | | | _ _ _ _|_ |_ _ _ _ _| | |_ _ _ _ | |_ _ |_ _ _ _| _ _| | | _ _| _ | |_ | _| _| | _ _| _|_ _| _| _ _ _|_ _| _ |_ |_ | | | | | | | |_ | |_ | | _ _|_ _| _|_|_ _ |_| _ _| | |_| |_ _ | | _ _| |_ | _ _ |_ | _ _ _ _ _ _|_| |_ _ |_ |_ _ _ _| _ _| _ | |_ _ |_ _ _| | | | |_ _ _ | | | |_ _ _| _ _ |_ _ | _ _| | | | _ |_ _ | _|_| _ _ |_ _ | |_ |_ | _ | |_ _ _| _| | _| _ _ _| | | |_ | |_ _ | _|_ _|_ | | _| |_ _ |_ | | _ _ _| _| | | |_ | |_ |_ _ |_| | _| |_ |_ _| |_|_ _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | | _| _ |_ |_| _|_ _ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_| _| | | _| _ | | _|_|_ | | | _ _| _| _ | | | | | _|_ | | | | _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ |_ |_ _| | _ | _ _| | | +| _ _| |_ _| _ _ _ |_ _| | | _| | |_ _|_ _ | | _ | | _| |_ _ |_ |_ _|_|_ |_ _ _| | |_ _ _| | |_ |_ _ | _ _| | | |_ | _ | |_ | _ _ _ _| _| |_ _ _ _ _|_ _| _ _ _|_ _| _| _ |_ |_|_ | | | | _ _| | |_ _ |_ | |_ _ _ _ _| | |_ _| | _ _| |_ _ _ _| _| _ _ | |_ _ _| | _ _| _ |_ _|_ _ |_ _ | | _ _ _| | _|_ _ |_ _|_ _ _ |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | _ _ _| _ | _| |_ _ | | |_|_ _ _ _| |_ _ _| _ _| _ _ _| _| _| _ _|_ |_ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| _ | | _ _ _|_ |_| _| _ _|_ _ _| | _|_ _| |_ _| | | | | | |_ _ _|_ _| _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ | _| | | |_ _|_ | | | _| | | |_ _ _ _| | |_ _ _ _ _| | _ _ _ _ _ |_ _ _|_ _ _ _|_ _| _|_ | |_ _ _| | |_ _ _| | | _ _|_ | _|_ | _|_| _ _|_| | | |_ _ | | _| | |_ | _ _ _ _| |_ _| _ _|_ _ _ |_| |_ _ _ _ _| | _ _| _ _ _| _| | |_ _ _ _ _| _| |_| | | |_| |_ _| |_| | |_ |_ | |_| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | _ _ _ _| | _| _ | |_ _ _ | _ _| _ _ | _| |_ _ | _ |_| |_ | _|_ _| _|_ | |_ | | | |_ _| _| | _ _| _ _ _|_ | _ | _| _| _ _|_ | _ _|_| | | | |_ _| | | | _|_ |_ _| _ _ _| _ _ |_ _ | _ _| |_ _ _| _| _| |_|_ _ | |_|_ | _|_ _ | | |_ _ | _| _ |_ |_ _ | _ _ | | |_ _| |_|_ |_ _ _| |_ _| |_ | _ _| |_ _|_ _| | _ _ _| | | |_| |_ | | |_| | | _| | _ _ _|_ | | |_| | _|_ _ _| |_ |_| | | _ _ _ | | |_ | _ _ _| | _ _|_ _| | |_ _ _| | |_ |_ _ | _ _ | | _ _ _| | _|_ _ _|_ _ | | _ _|_ | _|_ _|_ _ _ _ _ | |_| |_| | |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| |_ _| _| _ _|_ | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | |_ | _| | _| |_ _ _ _ _| |_ _| _ _ _ _| _| | |_ |_ _ |_ | | |_ _ _| | | _ _| | | _|_|_ | | | _ _| _ _ _ | | _| _ _|_ | _|_ | | | _ _|_ | +| | _ | _ _ |_ | _ _ _| |_ |_| | |_ _ _ _|_ _| |_ _| | |_ _ _|_ | | _| _ _ _| _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | | | | | | _| _ | |_ |_ _ | |_ _ _ _ | | _| _ _|_ | | |_| | _ _| | | _|_ | | | | | | | | |_ |_| _| |_ _ _|_ _ | _ _| _| | _| |_ _ | | | | _ _| _| _ _ |_ _ | _|_ _ | | |_ _|_ _ | | | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| _|_ _ | | |_ _| | | _ _| |_ _|_ _ |_ _ | | | _ _| _ _| |_ _ _ _| _| |_ _ _ _ _| _ | _| | | |_ _|_ | |_ _ _ | | | |_ _ _ _| | |_ _ _ _ _ | | _ _| | _ _ _ _ _ _ _ _ _| | |_| |_| | | _ _ _ _ |_ _ _|_ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _|_ | _ _|_ _ _|_| |_| | |_ _ _ _| | _ _ _| | | |_ _| _ _| |_| | | _|_ | | | |_ _ _ _| _ _| | | _ _ _ _| _ _ _ |_ _| _ _ _ _ _ _|_ _ _ _ _ | |_ |_|_ _ _ _|_|_ _ | _|_ | |_ |_| _| | _|_ | |_| | | _|_|_ | | | _ _| _ _ _ _ | | |_ _|_ _| |_ _|_| _| |_ _|_ _ | _| | |_ |_ _|_ _ _| _| |_ | | _|_ | | | _ _ _ _|_ | | |_| | |_ _ _| |_ |_ _ | _| | |_ _| _| |_ _ _ _ _|_| | _| _|_ _ _ _| | |_ | | _ _| | _ _ _|_ | | |_| |_ | | _ _ _ |_ |_ _ _| | | | | |_ _ |_ _| |_ _| |_| _| _ _|_ | _| | | _| |_ _|_ _ |_ _ |_ |_ _| _|_ _| _| _| | _ _ _ _| _ |_ _ | _|_|_ _|_ | | _| |_ _ | | |_| _|_ _ _ _ | |_ _|_ _ _ _| _ _ _ _ _|_ _ _| _| | _ _| | | _| | _|_ _ _ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ _ | | |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| _| _ _|_ _| | _| | | |_ _|_ | | | _ _ | | | |_ _| |_ _ | _| |_ _ _ _ _|_ _| |_ |_ | _ _ _ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ _ _| | _|_ |_ _ |_ _ _ _ _ _ _ _| _|_ _| |_ _ _| |_ | | | _|_ | | |_ _|_ _ _ _ _| |_ _| _| |_ | _ _| | | |_ _ _ _ _| _ |_|_ _| | | | | +| |_ | |_ _ |_ | _| _ |_ |_ | |_ _ _ |_ _ _ _ | _ _| _| _ _| |_ |_| |_ _ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| |_| | |_| | |_| _| |_ | |_ _ | |_ _|_ _ | | | |_ | |_ _ _ _ _| |_|_ |_ _| | | |_ |_ _| |_| |_ _| |_| | |_ |_ _ _| |_ _ _ | |_ _ _ _| | |_ _ _| | | | |_| | | |_ _|_ | | _ _| |_ _ _| | | |_ |_ _ | |_| |_ _| |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| | _| | _|_ _ |_ _ _| | _| _| |_ _ | | |_ | | |_ _ | _ | _| |_ _ _ | | |_|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ |_ _ _ | |_|_ _ _| _|_ _| _ _ |_ _ | _ _| | _ _ _ _| | _ _| |_ _ | _ _ | |_|_ | _|_|_ | | | _ _| _ _ _ | | | | | |_ | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _ |_| _| | | _|_ _|_| _ _ |_ _ | _ _| | _| _ _| | _ _ _| | _| _| _| | |_ _ _ | | |_ _| |_ | _ _ _| | |_ | _| _ _ _ _ | |_ _ |_ _|_ _ | _ _ _ _ | |_ _| _ _| _|_ | |_ | | _ |_ _ _| |_|_ _ _ _ _| |_ _| | _ _ | | _| | | _ _ _ _|_ |_ _ | | | _| _ _ _| _| | _|_ _ _| _ _ | |_ _|_ | _ | |_|_ _ _| |_ | _| |_ | _| | _ | | | _| | |_ |_ _ _ | | | _ _ | _ _| | | | | _ _ _ _ _|_ | |_| | | |_|_ _ | _ |_ _|_ | | _| |_ _ _| | _ _ _ | _|_|_ _|_ _ _ |_ _ _ _ _ | | _| |_ _ _ _ _| | | | |_ |_ _| _ |_ _ | _ _| | | _ _ _| _| _ _| | _ _| _| _| | | | | | |_ |_ _ | _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | | |_| |_| _| | | _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _ |_|_ _ _| |_ _|_ _ _ _ _| | | | |_ _|_ _|_ _ |_ _ |_| |_ |_ _ _ _ _ _| | | |_ _| | | _|_|_ | | | _ _|_ | _ _| | | _ _ _ _ _|_ |_ _ | |_ | | _ _ _ _ | _| _ |_ |_| | |_| |_ _|_| | |_ _|_ _ _ _ _ _ _ _ _| _| |_ _ _| |_ _ _ |_ _ _ _ _| _ | _|_ | | | +| |_|_ _ _| |_| _| _ _|_ | |_ _ _| _ _| |_ _| | _ _ _|_ | | |_ |_|_ _ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _|_ _ |_ _ _| |_| _|_ |_ _ _|_ _ |_ _| |_|_ |_ | |_ _ _ _ | _ _ _|_ |_ _ _|_ _ _|_ _ | _|_ | |_ |_ | | | |_ _|_ _ | | | | | _ _ _| | | |_ _ |_ _|_ _ _ _ _ _| | _ _| | _| _|_|_ _ _ _ _| _|_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | | _| | | _|_ _ _ |_ _ | |_ |_ _ _| _ _| | | |_ |_ _|_ _ |_ _| _|_ |_ |_| _ _| |_ _| | _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | |_ _|_ _ | | | _ _ _|_ | | |_| |_ | |_ _| | | | | |_ _ |_ _ _| | _|_ _ _ |_ _ _ _ _| |_ _| _| |_ | _ _| | _| |_ | |_|_ _|_ | |_ _ _ _ _ _ | | _ _| | _ _| | _ _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| |_ _| _| | |_ | _ _ _| | | |_| |_ | |_ | | |_ _ _ _|_ _| _| |_ _ _|_ _ _ | |_ _|_ _ |_ _ |_ _ |_ |_ _ _|_ _ _| _ | | _| |_ _ | _ _ _ | |_ _ | | _| |_ _ | | | _ _ _ _|_ | _ _| _|_ |_ _ _ _| | _ _ _ _ _ _| |_ _ _| |_ _ _ _| |_ | | | |_ _|_ _ _| | | _| | _ _ _| _| | | | _ |_| |_ _| | _ _ _ _|_ |_| _ _| _|_| _| | |_ _ _| | | _|_ _|_ _ |_| _|_ _| _ _ _|_ _ _ _|_ _ | _ | _ | | _ _|_ _|_ _ _ _ _ _| | |_ | | |_ | | | | _ |_ _| | |_ _ _ | |_ _ _ _| _ | | | | | |_ _ _ _| _ _| _|_ |_ _ _ _ _| _ _| | | | |_ | | _ _ _| _|_ _ | | | |_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ |_ | |_ _ _|_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _| | | _ _| | _ _ | _ _| | |_ _|_ _ _ _ _ _ |_ _ |_ |_ | | _ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _| _ _|_ |_ _ _ _|_ | _ _| | |_ _ |_ _| | |_| _ | | _ _| _| _ _|_ | | |_|_ | _ _ _ _|_ _ |_ _ _| | | | _ |_| _| |_| _ |_ |_ |_ _ _ | |_ _| |_ _ |_|_ | +| |_ _ | | _ _| | _| |_ _ _ _ _| _ |_ _ | _ _| | | _|_ _| _ _ _| |_ |_ _ | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _|_ _ _| | _ _ _| _|_| _| |_ _ | _ |_ _ _| _| _ _| | | | _ _ |_ _|_ _| _ | _| _ _ _ _ | |_ _| _ _| _|_ | |_| |_ _| |_ _ _ _|_ _| | |_|_ _| | | |_ _ |_ _ |_ _ _| | |_ |_ | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | | | _|_|_ _ _ |_ _ _ _| | |_ |_ _ _ _ | _ _| |_ | | _ | |_ _ |_ | _| _| _| _ _|_ |_ _| _|_|_ _| _| |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ _|_ | _ |_ _| | |_ _ | _ _|_ _|_ | | _| |_ _| _|_ _|_| |_ _| _ _| _ | |_ _| | _| |_ _ _ _ _| _| |_ _ _| |_| _| _|_ _ _ |_ _ _ _ | |_|_ | _ _|_ | _ _| | _| | _ _| | _|_|_ | | | _ _| | _ _| | | _|_ _ |_|_ |_| _| _|_ | |_ _ | _| |_ _|_ | | _| |_ _| _|_ _ |_ _| _ _ _| _ |_ _ _ | | _ |_ |_ _ | | _| | _| _ _ _ _ |_ _| | |_ _ _|_ | | | |_ _|_ _| | |_ _ _|_ | | |_ | | _ _ _|_| |_ _ _ _| |_ |_ _ _ _| |_ _ _| | _| _ |_ |_ | _ _|_ _ _| | |_ _ _ |_| _| | | _| |_ _ _ |_ _ _| | | |_ | | | _ _|_ _ _| |_ |_ _ |_ _ |_ _ _ _| |_ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ | | | | | |_ _ _ _ _ _ _ _| | | | _| |_|_ | | |_ |_ |_| _ _| |_ | |_ _|_ _ | | | |_ _| | |_ | _ _ | | | | | | _ _ _ _ | _ _| |_ _|_ | | |_ _ | | |_ | |_|_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _|_ _ _ _ _|_ _ _ _ _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ _ _ | | | | | |_ | _|_|_ | | | _ _| _ | _ _| |_ _ _ | |_|_ _| | |_ _|_ | |_ _ _ _ _ _ | _ | _ _| _ _| | _| _| |_| _ _ _| | | |_| |_ | | _ _ _ _ | _|_ _ _ _ _| _ _ |_ _ | _ _| | |_ |_ | _|_ | _| | |_ | _| |_ _ _ _ _| |_ _ _ |_ _ _| _ _ |_ _ | _ _| |_ |_ | | _ _| |_| _| _ _|_ | | _|_ _|_ _ | | |_ _ |_| +| _ _| |_| | | | |_ | _ _ | | | | |_| |_ | | _| | _ _|_| _ |_ |_ _ |_ _| | | _| | | |_ _|_ |_| | |_ _ | | |_ _ _ | _|_ _ _| |_ _ _| _|_ _ | | |_ _| _ _ _ _ _|_ | _|_| |_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _|_ | | |_ _ _ |_ _ _ _ _ _| _ _ |_ _|_| |_ _| |_ _ | _ _|_ _ | | _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ _ | _ _ _ | _|_ _|_ _ _ _ _ |_ | | | _| _|_ | _ _| |_ _ _| _| _ _ _|_ _ | |_ _ _ _ _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _| _ | |_ _| |_ | _|_ _| | _ _ _| | |_ |_ _ | _ _ _ _| _ _| _| | |_ _ | |_ _|_ _| |_ _ _ | | _ _| |_| _ |_ |_ | | |_| | _ _| _| _| |_ _ |_| | _ _| |_ | _| | _| | | |_|_ _ _ _ _| |_ _|_ _ | |_ | _| | | _ |_ _ | | _| |_ _|_ | _| | |_ _| | | |_ |_ _ | _ _ |_ _ |_ _ |_ |_ _ |_| _ | |_ |_ |_ | |_ _| _| | _| |_ _ | _ _|_ _ | | | _|_ _ _ _ _| _| _ _ _ _ | | |_ _| | | _ _ _ _|_ |_ _ _ _ _| _ _ |_ _ | _ _| | | _| _ _|_ |_| |_ | _|_ |_ | _| _| _| |_| _ |_ |_ _ _ _ |_ _ _ _|_ _|_|_ _ | _| _ _|_ _ _| |_ _| _| _ _ _ _|_ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| _ _ |_ _ | _ _| | _| |_ | _ _|_ |_ _| | |_ | | | | |_ | _ |_ _| | | |_ _ | |_| _| | _ |_ _| |_ _|_ |_ _ | | |_ | |_ _ | _|_| _| | |_ _ _| |_ _ |_ |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | | |_ | _|_|_ | | | _ _|_ _ _ _ _ | | | | _ _ _ _ | |_ _ _| | _| | | |_ _|_ | _ _ _ _ | | |_|_ | _ _ _| | | | | | _|_ _ _ _ _| |_ _| | | _|_ _ | | _| | | _|_ _|_ _ _ |_ _ _ _ | |_ _| | | | _ | _ _| | _|_ _ |_ _ | | | |_ _|_ | | _| |_|_ |_| |_ _|_ | _| _ _ _| | | |_| |_ | |_ | _| | _ _ | | _| _| | |_ _| _ _ | _ _| | _ _ _| | | |_| |_ | | | | | | |_ | | _| |_ _ _ _ _| _|_ | _ _ |_ _| | _|_ | +| | _ _| _| |_ _|_ | | | | |_ _| | |_ _|_ | | _| |_ _ | | | _| _ _|_ | _| _ _| |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _| | | _ _ _ _|_ |_ _ | | _ | | | _ _ _ _ _| _ _ |_|_ | _ _| | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ _ |_ |_ _|_ _ _| _ _| | _ |_ _| _ |_ |_ | |_ _ |_| |_ | | | |_ _| | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| |_ _ _|_ _| |_ | _ | _ _ _| | |_ _ _ _| |_ _| | _| _ | | _ | _| |_ _ |_ _ |_ | |_ | | _| | | | | |_ _ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | | |_|_ |_ _ _ _ |_ | _ | | _ | | | | _ |_| _| _ _|_ | |_ _|_ _ _| | _ _|_ |_ _ _| | | _| _ _ _| | | _ _| | _|_| |_ _ _| | _ _ _ |_ _| _|_ _| |_ _| _|_ | | | | _ _|_ _ _ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _| | _| |_ _ |_ _| | _| |_ _ _| |_ _ |_ _ |_ _ _|_ |_ _|_ _| |_ _| | | |_ _ | | |_ _ | | _ _| | |_ _ | | |_ _ _| |_ |_ | _ _ _|_ | | |_| |_ | | _| |_ _ _ _ _| _| _|_| |_ _| |_ | | _ _|_ |_ |_ |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _ | |_ _ |_ _ _ _ _| |_ | |_ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | _ _ _| _| | |_| |_ | | |_ _| _|_ _| | _ _| |_|_ | | | |_ |_ _|_ |_ | _|_|_ |_ _ _| _| _|_ |_ _ |_ _ | _| _| | |_ _| | | _ _ _ _| |_| | _|_ _ _ _ _ _ _ |_ _ _ | _ _|_ _ _ _ _ _ _ _ |_ _ _ _| _ _| _ _ _ _|_ _| _|_ _ _ _ _| |_ _| _ _ _ | | | | | |_ _ | | _| |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | | _ |_ _|_ _|_ _ |_|_ _ | | _|_|_ | |_ | _ _ _ _ _ | | | |_ _ _ _| |_| | _|_ _|_ _ _ _|_ _ |_ _ | | _| |_ _ | |_ |_ | |_ | _ _| _ | _| | | |_ _ | | |_ |_ _ | _ _| _ _ _ _|_ |_ _ | _|_|_ _|_ | | _| |_ _ | _|_| | | | | _ | |_ | |_ | | _| | _ _ _|_ _ | _| |_ _|_ | | _| |_ _ | |_| _| | | |_ _ _ _ _ |_ _ |_ _| | | | _|_|_ | | +| |_ |_ _ |_ _| _| | | |_ _ _ _|_ | | |_ |_ _ | |_ _| _| |_ _ _ _ _|_ _ _ _ | |_ | | _ _ | _ | |_ _ _ _|_ _ _ | |_ _ | _|_ _ _| |_ | |_ _| | | | |_ | | _ _ _|_ | | |_| |_ | | _| _|_|_ | | | _ _|_ |_ |_| |_ |_ _ | _ _|_| _ _ |_ _ | _ _| | | |_ |_| _| _ _|_ |_ _| | | _| _|_ _| |_ |_ _|_ |_ _ |_ _ _ | _|_|_ | | | _ _|_ _ |_ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_| |_|_ _ | |_ _ _| _ _ _| _|_ _| | _| | | | |_ _ _| | | | | _|_ | | _| _| _| |_ _| | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ |_ _ |_ _ | _| |_ _ _| | | | _| | | | _| |_ _ _ _ _|_ _ |_ | _| | _|_ _ _ _ _| | | |_ | _ _ _| | | _ | | _ _| | _ _| |_ _ _| |_ _ _| _ |_ |_ _ _ _| |_ _ _| _ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _|_ _ _|_ |_| _ _ _| | _ _ _ _ _ _|_ _ | | | |_| | |_|_ | _ _ _| |_ | |_ _|_| | _ _| _ _ _| |_ _ | |_ _| _| _ _|_ _ _| _|_ _ | _|_ _|_ | | _| |_ _ _ _ |_ _ _| | _ _ _|_ |_ | | | _| | _|_ | | | | | |_ _| _ | | _| |_ _ | _|_ _ | | | | | | _ | | _ _|_ _ _| | | |_ _| _ _| _|_|_ | | | _ _|_ | | | |_ _|_ _ | _ |_ _|_ | | _| |_ _ |_ _ _ _| | | |_ _ |_ _| | |_ _ _| | _| | |_ _ _ _ | _ _ _| _|_ | | _| | | |_ | | _|_ _ _ | |_| _ _ _ _|_ |_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ | | | |_ _ | | | |_ _ | _ _| _ | _| _|_ _| |_ _ _| | |_ _ _| | |_| | |_ | | _ _ | _| _| |_ |_| _ _ _ _|_ _ | _| |_ _ _| | |_ _| |_ _ _ | | _ _| |_ |_| _ |_ |_ _ _ _ | |_ _ _ _ |_ _ |_ |_ _ _| | | | _| | |_ | | | _ _| | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _ _ _| | _ _ _ | | |_ |_ _ | |_ _ _| | | | |_ |_ _| _| | |_ _|_ | |_ _ _ _ _| | |_ _| | | |_ |_ _ | |_ _ | _| |_ | _ |_ | |_ |_ _ _ | |_ _|_ _ _ _ _| | | +| | | | _ _|_ _| _| | _| _ _ _ |_| | |_|_ | | _ _|_| |_ _ _ _ _ _ _ _ _ | _ _| |_ | |_ _|_ | |_ _|_ _|_ _ |_ | _ _| _ | |_ _| _| _ _|_ _ _| | _ _| | | | | _|_ _ |_ _|_ _|_ | | _| |_|_ |_ _ _ _ _| |_ _|_ _ _|_ |_ | | _ _ _| | | _ _ _| | | |_| |_ | |_ | | | _| |_ _ _ _ _| _ _| | | |_ | _ _ _| | | | _|_ |_ _ |_ |_ _ _ _ _| |_ _|_ _ _| |_ | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | |_ _ _| | |_| _| |_ _ _ | | |_ _| | | _| | | _| _ |_| |_|_ _ | _ | |_ | | |_ | | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ |_ _ | _ |_| | _ | _ _| |_| | | _|_ | |_ _ _| _ _ _| | | _| | | _ _ _ _ _| | | _| | _|_| | | | | |_| | | |_ |_ _ _| _ _| | _| _| _ _|_ | _| | | _ _ _|_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| |_ _| _ _| | |_ _ | |_| _ |_ |_ _|_| _ _ _| | | _| _ |_ |_ |_ | _ _| | _ _ _ _| | _| | |_ _ _| | |_ |_ _ | _ _ |_ |_ |_| | | _ _ _ | | | | | _| |_ _ _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| | | | | | |_ | |_| | _ _ _ _| | |_ _ | | |_ _ _ _ _| |_ _| _ |_|_ _| | | | | _ _| | | | _ _| | |_ |_ _ | _ _| _ _ _| |_ _| _ _| _ _|_ _ _ _ _|_ _ _ _| | _ _| |_ _ | |_ _ _| | _ _ _|_| |_ | | | | _ | |_ |_ _ _| |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ |_ _|_ _ |_ _| | |_|_ _ _ | | | | | | | |_| _| _ |_ |_ | _|_ _ | | | | _|_ _ |_|_ _|_ | |_ _ _ _ _ _| | | | _ _ _ _| |_ |_ _ |_ _ _|_ _ _ _ _ _ _ _| |_ _| _| _| _| _ _|_ |_ _ |_ _|_ _ | | |_ |_ | _| | | |_ | | |_ _| |_ _| _ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | |_| |_ _ _| _| |_ |_ _ |_ _ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_| _|_ _| | _|_ | _ | _| | _ _ _ _| _| | +| | | |_ | _ _ _| _| | _| | _ _|_ _ |_ | _ _|_ | | |_ _ |_ _ _ _ | _ _|_ _ | | | | _ _ | |_ _ _ _ | |_|_ | |_ _ |_ _| |_ | _ _| | _ _ _ _|_ | | |_| |_| |_| _| | _| _| | |_ |_ _ | _ _ _| _ _ _ _| | _ _ _| |_ | _ _| |_ _ | _|_|_ _|_ | | _| |_ _ | | |_ |_ _ _ _|_ _ _| | | _| _ | | | | | |_ |_ |_ |_ | _ |_ | _ _| _| _ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | |_| _| _ _|_ _ _|_ _| | _|_ _ _|_ |_ _ _|_ _ _| _ _ _|_|_ _ _ _| | _| |_ | | _ |_| | | |_ | | |_ _ _|_ _|_ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | | | _| _ _| | | | | _| _| |_ _ |_ | |_| _ | |_ |_ _|_ _ | |_ _ _|_| | | _|_|_ _ | | | | |_| |_| _| | | _|_ | | | _|_ _|_ | _ _ |_ | _ _| _| |_ _ _ _ _| | | |_ _|_ _ |_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| | | | | _| _| _ _|_ | |_ _ | |_ _| _| _ _|_ | | _|_ | _|_ _ _ |_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| | _| |_ _ | _| |_|_ _| | |_ _ _ | _ _| | _|_|_ | | | _ _| | _ _ | |_ | | _ _| | |_| | _ _|_ _ _| | | _ _ _|_ _ | | _|_ _ _ |_ _ _ _ |_ _ _ _|_| |_ |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _| _ _| _|_ _ |_ | | | _ _| |_ _ |_ _| | | _| _ _| | _ _ |_ |_ _| | | | _| | _| _| _ _|_ _ _| _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ |_ _ | |_ _ _ _ _| |_ _| |_ | | | _| _| _ _|_ | | | _ _ _| |_| | | _ |_ _| _ _ |_ _ _ _ | |_|_ | |_ _| | _ _| _| _ _ _ _ _ _ _ _| | _ | _ _ _| | _| |_ _ _ _ _| | _ _ _ |_ _| | | |_ | |_ _| | | | | | _ _ _| | _ _| _ _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _ _ _| _ _ _| _|_ _| | |_|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _ _| _ | |_| | | |_ _|_ _ _ _ _ _| _| +|_ _|_ | |_ _ | | | | | _| | _ | _| |_ _| | _ _| |_ _| _ _| _ _ _ |_ _ | _| | | | | | _ _| _ | | _| |_ _ | | _ _| | _ _| _|_ | _|_ _ |_ _ _ _ _ _|_ |_ |_ _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | | | | |_ _| _ |_ |_| | _| _| | | _ | | |_ |_ _ | |_ _ | | | _ | _ _ _ | |_| |_ | | | | |_ _| |_ | | | _| |_ _ _| |_ _ _| | | | _ _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ _| | _ |_ _ _|_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | | |_ | | _| _| _|_| | | _ _ _ _| _| | | |_ _|_ | | | _| | | |_|_ | | _ _| _ _|_ _| | | _| _| _| | _|_ |_ _| |_| _| | |_|_ | _ _ | | | | _| |_ _| | |_ |_ | |_ _ _| |_ _ |_|_ |_ _ _ | |_| _ | | | | | |_ _ _ _ |_ _ _|_ _ _ _ | | _|_| | _| | | |_ _|_ | | _ _ | | | |_ _ |_ _ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | _ _| | | | | | | _| |_ _ _ _ _| |_ _ _ _| |_ | _| |_ _ _ _ _| |_ _| |_ _ |_ _| _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | | _ _| |_ _|_ _ _ _|_ | _ _| | |_ _ _ _ _| |_ _| |_ _| _ _| | | _|_| _ _ |_ |_ _| |_ _ _| | |_ _ _| | | |_ _ |_ _ |_ |_ _| |_ | _| _ |_ |_| _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | |_ _ _|_ _ _| |_|_ _| | | |_ _ _ _ | | _|_ _ _|_ |_| _ _|_ _ _ _ _|_ _|_ _ _| | _ _| | | _ _ | | _ _ _ _|_ | _|_|_ | | | _ _| _ _ _ _| | | | |_| | |_ _ _| _ _| | |_ _| _ _ _| |_ _ _| |_ | _| |_ _ _ _ _|_| | | | _ _ _| |_ |_ _ | | | _| _| | _| |_ _ | |_ _ _| |_ | _ _ _| _ _ |_ _ | _ _| | |_ _| _| | | |_ _| _ _ |_ _| | |_ | _|_|_ | | | _ _| | _| |_ | | | | |_ _| _ |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _| | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _|_|_ _ | _|_ _ | _ _ _|_ _| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _|_ | _| | |_ | |_| | | _ _ _ _ | |_ | +| _ | | _ | | | | | |_ | _| |_ _| | |_ |_ _ _ _| _ _| _| _ | _| _| | _ _| |_ _ _|_ _ _ _|_ _ _|_ _ _| _| | | | _|_ _ |_ _| |_ _ |_ _ _ | _ _| | _|_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| _| |_ _| _| _ _|_ | | | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| | | | |_ _ _ _|_ _ |_ |_ _|_ | _ _|_ _ _ _|_ _| _|_| | _ _ _| |_| | | _| _| _ _|_ | |_ _ _ _ | | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ _ | _|_ | |_ _| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _ _|_ _|_ _ |_ _ |_ _|_ _| |_ _ |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_ _|_ _ |_ | | | | | | | | _|_ _ | _ _ _| _|_ |_ _| | _ _|_ _|_ _| |_ | |_| | _ _|_ _ _ _ _|_ _ |_ _ _| _ _ _ _| | |_| | |_ _ _| | | | |_ | _|_ _ _ _ _ _ | |_ _ | _ |_ _ _| |_ _|_ _ _ _ _| _ _ _|_ _| |_ _|_ _ |_ _ |_ | | |_ | _|_|_ | | | _ _| _| _ | | _| |_ | | | |_|_ _| |_ | _ _ |_ | _ _ _ _| | |_ _ _ _ _ | | |_ | | _|_ _ |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _|_| | | _ _ _| _ _ |_|_ | _ _| | _ _ _| | _ |_ _ _ |_ _ _| |_ |_| |_| | | |_ _ |_ _| |_| _| _ _|_ |_ | _| _| | _| _ _|_ _ |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | |_ _|_ _ |_ _ _ _ |_ _ | _|_ _|_ _ |_ _ _| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _| _| _| | |_ | _ _ _ _ |_ _ _ _ _| |_ _| _ _ | _ _ _| | |_ | |_ _ _ _ _| _ _| |_ _ _ _ _ _ _ _|_ _ | |_ |_| |_ _ | | _ _| _| |_| _ |_ |_ | |_ _| | | _| _| |_ _ _| | |_ | _ _|_ | | | _ _ _|_ | | |_| |_ | | | | | _| | |_ | | | _| | | _ _| |_ | |_ _ _ _|_|_ _ _ _| |_ _|_ |_| | | |_ _| | _ _| | _| | | |_ _|_ | _ | | _ | | |_ _ _ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ _ _ _| |_ _ _ _ _| |_ _ _ | | | _| |_ _| | _|_ _ |_ _ _ _| _ _| | _| _ | _| | _|_ | |_ _ _ _| _ | | _| |_ _ | +| | | | |_ _| _| | | |_ |_| |_ _ _ _| | | _|_ _ | | | |_ _ _ | |_ _ _| _|_ _ _|_ _ | _ _ _ _ _ _ _ _ _ _ _ _| | |_ _ _ | |_ | | _|_ _ |_ _ | _ _| | _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _|_ | _| |_ _ _ _ _|_| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | | | _| _| _|_ | _| |_ _ _ _ _|_ _ _ | |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ |_ _ |_|_ |_| _| _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _| | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | | | | | |_ _|_| |_ | |_|_ _ _ _ |_ _| _ _ _| _ _| | _ _|_ _ _| _ |_ |_|_ | | |_ | _ _ _ _ | |_|_ _ |_ _ | _ _| | | _| |_| | _| | |_| _| | | | | | _| |_ _ |_| | | _| | | _ _ | | _ _| _ | |_ _ _ _ |_ _ |_ |_| |_|_ _| |_ _ _ _ _| |_ _| | _ _ _|_ | | | | | _| |_|_ _ |_ | _|_ _ |_ _ _|_ _| _ |_ |_ _ | |_ _| _|_ _| | |_ | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ _| | _ _| | _| _ _ _| | | |_| |_ | | |_ _| _|_ _| | |_ _ _| _ |_ |_| _ _| | _|_| |_ _| _ _| _ _| _| | | | _| _| | | _| |_ | _ | _| _| |_ _ _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | | _ _|_ _ | _ |_ | | |_ _ |_ _ _ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | _| _ _| |_ _ | | _| _ | | | _ _ _| | _ _ _| |_ | | | | _ |_ | | _ _ _ _| |_ _| _ _|_ |_ | |_ _| |_ | _| _| _| _ _|_ | | | | | | | _ _| |_ _ _| | | _| | _| _| |_|_ _ | | |_ _|_ | | _| |_ _| _| |_ _| _|_| _|_ |_ _| |_ | | _| _| | _ _ _ _ | |_ _ _|_ | | | | | | _ _| |_ _ _| |_ _|_ _ _ _ _| |_ _| _| |_ _|_ _ |_ _ | _| | | |_ _|_ | _|_ _ _ | | |_|_ _ _|_ | _|_ _ _ _ | |_ _|_ _| _|_ _ _|_ _ _ _|_ _ | |_ | | | |_ _ _ _| | _|_ _ _| |_ | _ _ |_ _| | |_ _ _| | _| +| |_ _ _| |_ |_ _|_ _ _ |_ _ |_ _ _ _| _|_ _ _ _ _|_|_ |_ _ |_ _| | _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ _|_ _|_ |_ _|_ _|_ | _| |_ | |_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ |_ _ | | |_ _ _ | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | | | | |_ _ | | |_ | _ _ _ _ _|_ _| | | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ |_ _ |_ _ |_ |_ | | |_ _|_ | |_ | _|_|_ | | | _ _| | | | | | | | |_ _ | | _| |_ _ |_ _ _ _ _| |_| | _ _| |_ _|_ | |_ _ _ _ _ _ | | _ _| | _ _| | |_ _ | |_ _ |_ |_| _ | _|_ _ |_ _ | _ |_ _ _| _ _ |_| _| _ _|_ | _| |_ _| |_ _ | | _| |_ _ | | | | |_| |_ | | |_ _ | _| | |_ _ _| _|_ |_| |_ _| |_| |_ _ _|_ | | _|_ | _| |_ _| | |_ _ _ _| |_ _ _|_ _ | | _ | |_ _ _ _| |_| _ _ _ | |_ _ _ _ _ _| _ _|_| |_| | |_ |_ _ | _|_ _|_ _ | |_ _ | _ _| _| _| _| | | | |_ _ _ _ |_| | | | _|_| _| | | |_ _|_ | | |_ _ | | | |_ _| _ | | |_ | |_ |_ _ | | | |_ _|_ | | _| |_|_ | |_ _ _|_ _ |_| _| _ _|_ |_ _ | | _ _ _| _ _| _| _ |_ _| |_|_ _| _| |_ _| | | _| _| | |_ | |_ _ _ _| |_ | | |_ _|_ | |_ | _ _ | | |_ _| | |_| |_| _ _| | | _| | |_| |_ | | | |_ _| |_ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ |_| |_ _| _ _| _| | |_ _ _| _|_| |_ _|_ | _ |_| _ |_ |_ | | |_ _ _|_ | | | | _ _ _ _|_ |_| _ _| | _| _| | |_ |_ | |_ _| | _| |_ _ _ _ _|_ _|_ | |_ _| | | _|_ _ _ _ | | | _|_ _ _|_ _| | |_ _ _ _| | |_ |_ _ | _|_ |_| _| |_ _| _| | | _| |_ _ | _|_ _ | | _| |_ _ | _ _ _| | _|_| |_| | | |_ _ | | | _ _ | _ | |_ _ | | _ _ | |_ _ | |_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_ _| _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _|_ | |_ _|_|_ _|_ _ |_ _ _| _ _ _ _|_ |_ _| _| | _ _| _ _| _| | +| _ _ _ _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _ | | | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ |_ | _ |_| _ _| | | | _| | |_ _| | _| | | |_ _|_ | _ _ _ _ | | |_ _| _|_ _ _ _| |_ | _|_ _ _| | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| | | | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | |_ _ |_ | | | | |_ | | | |_ _ |_ _| _ _ _|_ _| | _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _| |_ _ _|_ | | |_ _|_ _ _ _ _| _| |_ _ _ _ _| |_ _|_ _| | | |_| | | |_|_ _| | |_ _ _|_ | | _ | | _ _|_ _| | _| _ _ _ _|_ _ _ _ | |_|_ | _ _|_ | _ _| | | |_ | | _ _|_ |_| _|_| _ | | _| | | _| _ _ _|_ | | _| |_ _ _ _ _|_ |_ _ | | _| | |_ _ _| | |_ |_ _|_ | | _| |_ _ _| |_ _ | _ _ _| |_ _ _ _ _|_ | _ _ _ _| | _ |_| | _| _ | |_ _ _ _ |_ _ | | |_ _| |_| _| | _ _ _ _|_ |_ |_| |_ _| | _ _ _ _ _| _ |_ |_ _ | | _ _|_| |_ _ |_ _ _ _| | _| _|_ _| _| _|_ _ _|_ | _ _ _|_ _ _|_ _| | |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_ _| _| | _| | |_ _| | _| | | | |_ |_ _ | |_ _ | | _ _ _ | _| |_ _ _ _ _| _| | |_ _ | | | | | _| | _| | _| _ _ _| _| _| | | _|_ _| |_| _|_ |_ _|_ | | _| |_ _|_ _ _ _ _| |_ _| | _|_ _|_ _ |_ _ |_ | | | _ _| |_ | | |_ | |_ _| _|_ _ _| |_ |_|_ _| _| _|_|_ | | | _ _| _ |_ _ | |_ |_ | _ _ _| _ | _| _ | | |_ | _ _ _|_ |_| _| _ _|_ | |_ _| _ _ | | |_ |_ _ _| |_ | | _ _| | | _|_ _| | _| _|_ _ | | |_ |_ _ _ _ _ | |_ _ _ _| | | _ _ _ _ _| |_| _ | _| | | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ |_ |_ _ | | _| | |_ |_ _ | |_ | _| | |_ _ _|_ | |_ | _|_| | | _|_ _|_ _ |_ _|_ _| | |_ _|_ _ _ _| | |_ | _| | _ _| | _| | | _ _ | _ _ _ _| _| | | _ _ |_ _ | _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _ _ _| _|_ _ |_ |_ _ _| |_ | _ |_ _|_ _ |_ _ |_ _ | +| | _ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | |_ | |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _ _|_ _ _ _|_ _| _| _ _ _| |_ | |_ _ _ _|_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ _ | _ _| _| | _ _ |_ _| | _| | | |_ _|_ | |_ _ _ | | | |_ _ _| |_ _| | _ _|_ | _|_|_ | | | _ _| _ _ _| | | _| |_ |_ _| _|_ _| |_| _| | |_ _ |_ _ |_ _ | _ | | | _ _| | | | | | _ _| _| | | | |_ _ | | |_ _ _ _ _ _| | |_ | _ _ | | _ | _ _ _ | _ _ _ _ _| _| |_ _ _| |_ _ _| _| _ _ _ _ _| |_ | |_| | _ _| | _| |_ _ _ _ _ _ _ | _| |_ _ |_| | _ _| |_ |_ _| | |_| _|_|_ _ _ _ _ _| | | | |_| | | _|_|_ _ _ _ | _|_ _ | _ _ _ _ _ _ _ _| _| | | _| _ _ |_| | | |_ | | | |_ |_ _ | _|_ |_ _|_ _ | |_ _ | | _ _| |_ _| _ | |_ |_ _ _|_ _ _ | |_| _ _ _ _ _ _|_ _|_ _ _ _ | | |_ _ _| |_ | _ _|_ |_ | _ | | _| _| _ _|_ | _ _|_ | | |_ _ |_ | _| _ _| | | _ _ _|_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ | | _ _ | _ _ _ _| |_ _ _ _ _ | |_ _ |_ | |_ | |_ _| _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _ | _| |_ | _ | _ _ | |_ _ | _|_ | |_ | |_ _ _|_ |_ _ | _|_ _ _ _| |_ _| _ | _ _ _| _| _ _ _| |_ _ _| | _ _| _ | |_ _ | | | | _ _ |_ _ |_ |_ _| |_ | | |_ |_| _| |_ _ | | _ _ _ _|_ |_ | |_ |_ _ _ _ _| |_ _| _ _| |_ | | | _| _|_ |_ _ | | |_ _ |_ _| | _|_| | | | | _| |_ _ _ _ _| | _ _| | _| |_ |_| _| _ _|_ _ _| | | | | _|_ | |_ _|_ _ _| |_ | | | _ |_ | |_ _|_ | | |_| | _ |_ |_ _| |_| _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| _ _|_ | _|_ | | _ _|_| _| | _|_ | | | |_ _| | _ _|_ |_ | _ _|_ _ _ _| | |_ _ _ _ | |_ _ | | | | | | _ |_| _| |_ _| | |_ _ _ _ _ _| _| |_ _| | _ _| |_ _| | | _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ _ |_ _ _|_ _ _ | |_ _| _| _ _|_ _ _| | | _| | | _ _ _ | | +|_ | _ _|_ _ _|_| | | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| | _|_ _ _ _ _|_ _ | _|_|_ | | | _ _|_ _ _ | | | | _ _ _ _ | |_ |_| _ |_ | |_ _ _ _ _ _ _ | | _ _ | | _ _| |_ _|_ _ _ _ _ |_ _ | _|_ _| _|_ _ | | | |_|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _| _ _ _| _ _ | |_ _ _ _ _| |_ _| _ _ _|_ | _| |_ |_ |_ | _| _ _ _| _| |_ | _ | | _ _| _|_ _|_|_ |_ | | |_| | |_ _|_| |_ _| | |_ |_| | | _| |_ _ | _| _|_ |_ _|_ | |_ _ _| | |_ | _| |_ _ | _| _| _ |_ |_ | | | _ _ _ | | | _|_ _ _| | | | | | | _ | | _ _ |_ _ _| | | _| _ _ _| | | | |_ _ _| _ _ |_ _ | _ _| | | |_ |_ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _ | |_ _ _ | | | | _|_ | |_|_ | | _ _|_| |_ _ _| |_| | |_ _| | | _| _ _| _| |_ _| _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| |_| _| _ _|_ _ _|_ _| |_ | |_ _| | | | _| |_ _ _ _ _|_ | _ _| |_ _| _ _| _|_ _|_ | _| |_|_ _ | _ | | | |_ _| _ | | _| |_ _ | | | _|_ _| | |_ _ _ _ _|_ |_| _ _ |_ _ _ _| | _|_ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ |_ | |_ |_ _| |_ _| _ _|_| |_|_ |_ _|_ _| _ |_ _| |_| _ | |_ _ _ _| |_ _ _| _| _| _ _| | | _|_ |_ _ _| | | _ _| | | |_ _ _| _ _| | _| _ _ | |_| |_ _ _| _| |_ _ | | |_ _ _| |_ | | |_ _ |_ _ | | _ _| | _ _ _|_| |_| _|_ _ _ |_ _| |_| | |_ _ _ _ _| _ _ _| | | |_| |_ _ _ |_ | | | |_ _ | | | _ _| | | _ _ | | | | | | |_ _| |_ | | |_ | | _ _| | | | |_ _ _ _ _ |_| | _|_ _ |_ _ _|_ _ _ _ _ _| _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ | |_ | |_ _|_ |_ _ _ _ _ _ _| | |_|_ _| | | | _ _ _| | | | | _|_ | | _ _|_ _ _| |_ | _| |_ _ |_| | |_ _| |_ |_| _| _ | _| |_ _ _ _ | |_ _ | _ _|_ | _ _| _ _| | _ _ |_ _ _| _|_|_ | | | _ _| _ _ _ | | | _|_ | | | | _ _ _ _ |_ | _ _| | _ _ | _| |_ _ _| | |_| |_ _ _| | +| _| | _ _ _ _ _|_ _| |_ | _|_|_ | | | _ _| _ _ _| | | |_ | | _| _| |_| | |_ _ _ _ _| |_ _|_ _ |_ |_ | | |_ _|_| | | _| |_ _| _| _ _|_ | _ _ | _ _ |_ _|_ | |_ _ _ _ _|_ _ | _ _ _ _ _ _| | | _ _ _ _ _ |_ _|_| _| | _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ |_ _| _| |_ _ _ _ | | _ _| _ _ _|_ _| |_ _|_ |_ _ | | _ _ _|_ |_ | | | _| | _ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| _| _ _ _| | | _|_ _ |_| _ _|_ _ _ _ |_ |_ _ _ _| |_| | | _| _| _ _|_ |_ _| |_ | |_ _|_ _ _|_ _ _ | |_ _| | _|_ |_ _| |_ _ |_ | _ _| | | |_ | _ _ _| | | | | _ _ _| | | |_| |_ | |_ _ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _ | |_ _|_| |_ | |_ | _ _|_ | | |_ _ | | | _| _| |_ _ _ _ _| |_ _ _| |_ |_ |_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| | | | _ _|_ _ _| | _ _| _| |_ _ | | _|_ _ _ _| _ _| | _| _ | _| | |_ _ _| | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | _ _ _| |_ _ _ _ | |_ _ _ _ | | | _ _| | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _| _|_ | | _ _|_ _|_ | | |_ _ |_ | _ _ _| |_ | _ _ _ _| |_ _|_ _ | | |_| _ _ _| _ |_ _ _| | |_ |_ _ _ _ _ | | | _ _| |_ | _ _| | _ _|_ _ | |_| | | _ _ _| | _ _ _| |_| _| _ _|_ _ _|_ _| | | _ _| | | | | _ _| | _| _ |_ |_ | | |_ _ |_ |_ _|_ _ _ | _ _ _| | | |_ |_ | | | | _| |_| |_|_ _ _ _ _|_ _ | _| |_ _|_ _| |_| | |_ _ _| |_ _|_ _|_ _ _| |_ _| |_ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| |_ | |_ _ _| |_ _|_ _ _ | _ _ _ _ _ | | | _ _ _ _|_| |_ | | _|_ | | |_ |_ _|_ _|_ _ _ _ _| |_ | |_ _ _| | | _| | _ _ |_ | _| | | |_ |_ _ _ | _| |_ _ |_| | _ _| |_ | _| _| |_| | | |_ _ _ _ _| |_ _| |_ _ | |_ | | | |_ _ |_ _ | _| | _|_ | _|_ | _|_ _ _ _ _| |_ |_|_ | _ _| +|_| _| |_ _| _ _ _ | _| |_ _ _ _ _| |_ _| _ _ _|_ _ | | |_ | | _ _ _| | _| _ _|_ _|_ _ _ _ _ _ _| _ _|_ _|_ _| |_ | _ _| | |_ _ _| _| _| |_ _ _ _ _| | _| |_ _ | | _ _ |_ _ _ _ | |_ _| _ | | | _ _| _ _ _ _| |_ _ _ |_ |_ _| _|_|_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ | |_ | _| _|_ _| | | | | _| _ _| _ |_ |_| _ _| |_ |_ _ | _ _|_ _| |_| | | |_ | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| _| | | | | | _ _| | |_ _ |_ _ _| | | _ | _| | | _ _ _ _|_ |_ _ | _| |_ _ _ _ _| _ _| _ _|_ _| _ _ _ |_| |_ _ _ _| |_ | | | _ _| _| |_ _ _|_ _ _| | | _| | _| |_ |_ _ | | |_ _|_ | | _| |_ _ | |_| |_| |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _| _ |_ |_| _| |_ _| | _ _| |_ _| _ _| | |_ _|_ _| _ _ |_ _ | _ _| | _ _|_ | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | _|_| _|_ _| | _| _ |_ _|_ |_ |_ | |_ _| | | | | | _ | | |_ _ _ _| | _|_ _ _| |_ _| | | | _|_|_ | | | _ _| | _ _| | |_| | | | _ |_ _ | _| |_ _ |_ _ _| _| |_ | | | |_ _| _ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ |_ _ _| _| _ _| |_ _ |_ _| _ _| |_ _| _ _| |_ _ | | _|_ _| | _ _ _ _|_ _| | |_ _ | |_ |_ _ |_ _|_ _|_ _ _ _ | _|_ _|_ | _ | | | _|_ | _ |_| | | _| |_|_ _ |_ |_ | _ _| _ _| | _ _ _ _ _ | | | | |_ |_ _| |_ _ _ _| |_| _| _ _|_ | _| | | _ _ _ _ _| _ _ |_ _ | _ _| | |_ _| _| | | | | | _| | _ _ _ _ | |_|_ |_ _| _ |_ | |_ |_ _ _ _ _| _ _ |_ _ | _ _| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | |_ _|_ | | | | _| | | |_|_ _|_ _ |_ _ _ | |_|_ | |_ _ _ _| |_| | _ |_ |_ |_ _ |_|_ | |_ _ _ _ | _| | _| |_ _ | _ _| | | | _| | _| | |_ _| _|_ _ _ _| _ _ _|_ _ _| | | _| _ _ _| | | |_ _ |_ _ _| |_|_ _|_ _ _ _ _ _ | |_ _ _ |_ _ _| |_| |_|_ | _| _| |_ | |_ _| |_ _ |_|_ _| _| | _| | | _ | | | +| _| | _ _ _ _ _ _| |_ _ _|_ | _ _ _ |_ _ _| _ _ _|_| |_ | |_| |_ _| |_ _| _ _ _ |_ _| _ | _ _| | _ _ _| _ |_ |_ |_ | | _| _ _ | |_ _ _| _ _ _ | | _| |_ _| _|_ _ _ | _| |_ _ | _| | | | |_ | | | _ _ _ _|_ |_ | | _| _|_ _ _| _| |_ _ _ _ | |_|_ _ _ _| | | _ _| _ _|_ _ _|_ | | _ | _|_ _ _|_ |_ _| _| _ _|_ | | _ _| | _| _| | _ _ | _| _| | |_ _| | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| _| _| | |_ |_ | |_ _ |_ _ _|_ _| | | | | _ _| |_ _ _| |_ | _| |_ _ _| _ _ _ |_ | _ _ _ _ _ _|_ _ _|_ | _ |_ |_ _| | | | | | _ _ | | |_| |_| _| | | _|_ | _| |_| |_ _ | | |_ |_ _ | |_ _ _ | | _ _| | | _|_|_ | | | _ _| _ | _ | | |_ _| |_| _| _ _|_ |_ |_ | |_ _ _ _| _ _| | |_| _| _ _ _| | | |_| |_ | | _ _ _ _| | |_ _|_ | _| _|_|_ | | | _ _| |_ _ _| | _| |_ _ |_ _ | _| _ _| | | _ _| _| _| | _ _| | |_ _| |_ _| |_ _|_ _ |_ _ _| _ _ _ _|_ |_ |_| | |_ _ _ _ _| |_ |_ _ | | | | | | _|_| | | _| _| _|_ _ _| | | _ | | _ | | _|_ _|_ | _| | | |_ _|_ |_| | |_ _ | | |_ _| | _ _ _| _ _ |_ _ | _ |_ _ _ _| _ _| | |_ _ _| | |_|_ | _ _| | |_ _ _ _ _ | _|_|_ _| | _| |_ |_ |_| | | | _|_ _| | _| |_ _| |_| |_ _ | | |_ _ | | | | _ _ _| | _| _|_ _ |_ | _|_ _ _ _ |_ _| | | | _|_ _ _ _ | | _| |_ _ _ _ _|_ | | _| _| _ _ _|_ | | |_| |_ | | |_ _| _| _| | | |_ _ _ _| |_ _ | | _| |_ _ |_ |_| _| _ _|_ _|_ _ | _ _ _| | | |_| |_ | | | | | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ _|_ _ _ _ _| | |_ _| _| |_ _|_ _ |_ _| _| | _ _ _|_ _|_ _ |_ _|_ _ _ | | _|_ | _ _|_ | |_ |_ _ |_ _ _ _| _| | | _| | | _| | |_ _ | | | |_ _ _| _ _ _ | |_ _ |_ _ _| _| _ _ _ _| | | |_ |_ _ _| | | |_ _|_ _ _ | |_ _|_ _ |_ _ _| | _ _| _ |_ |_ _| | | | _| |_ |_ | | _|_ _ |_ _| _| | | _|_ _| | | | | | +| |_ _ _| | _ _| | _ _|_|_ |_ |_ | _ _| _| _ |_ |_| | |_ _ | _ _ _| _ |_ | _| | |_ | | | _| _| _ _|_ |_ _ | | _ _| |_|_ |_ _ | _| | | |_ _| _| _ _ | | _|_ _ _|_ | | | _| | |_ | | | |_ _ _| |_ | | |_ |_ | |_ _ _| | | _| _| |_ _ |_ _ |_ | |_ | _|_ _ _ _| | | _|_ _ _ | |_ | _| |_ _ _ _ _| | | _| |_ | | _|_ _ _|_ _ _ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | _|_ _ _| | | | | |_ _ _ _ _| _ _ |_ _ |_ _| | | _| _ _|_ _ _| | |_ | | | _ _| _ _| | |_ _ | _ _ _ _ | |_ _| _ _|_ | _| | | | | |_| | | _| | |_ |_ | |_ _ _|_ | | | _| _| _ _| |_|_ | | _ _|_| |_ _ _|_ _ _ _| | |_ _ _ _ _| |_ _| _ _ |_ _| | | | | | | | _| |_ _ _ _ _|_ _ | |_ _ | _ | | |_ _| | _| |_ _ | | | |_ _|_ | | _| |_ _ _ _ _ _|_ _ | _|_ |_ _ _ _ _| |_ _| _ _|_ |_ _ | | | | |_ _ |_| |_ | | | | | |_ _ _| _|_ | | | |_ _ _|_ _ | | _ _|_ _ |_ |_ _ _| |_ |_ _ |_ _ _ _ | _ _ _| | | | |_|_ _| |_ _ _| |_ | | | | _ | _| | |_ | |_| | _| |_| _ _| _ _|_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _ _ | |_ | |_ | | _| | _ | | |_ _| _ | _| | _ | | _| |_ | _| |_ _ _ _ | _|_ _ _ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _| _ | _| |_ _ _| | _ | _|_ _|_| | | _|_ _ _ _ | | _| |_ _ |_ _ _| |_ _ _| |_| |_|_ | | _| | |_ _ _ _ _| | | |_ _ |_ _ | _ _|_ _|_ | | _| |_ _ _|_ _ _| | |_ |_ | | _| | |_ _ _| _| | _| _| |_ _ _ _ _| _ _ |_ _ | _|_|_ _|_ | | _| |_ _| |_| |_ _| _ _ | _|_|_ | | | _ _| _ | | | | _ _ | | _ _ | _| _|_ | _| | | _ |_ _ | |_ _ _| _ _ _| _ _ _ _ _ _ | | |_ _| | |_ _ _ _ _|_ | | |_ |_| _ |_ _ _| | |_ _|_ _ _|_ | _ _|_| |_ |_ _ _| |_ _ | |_ _ |_ _ | _| _ _| | | | _ _| | |_ _| | |_| _ _|_ _|_ _ | | | | _| _| _| _ _|_ |_ | |_ _| | | |_ _|_ |_ _|_ _ |_ |_| _|_ _ _|_ _ _ _ _| |_| | +| |_| _ _| | |_| _ _| | | _ _ _ _| _ | | | _| _| _ _|_ | |_ _| _ _|_ _ | _ | | |_ _ _| |_| | _| |_ | _| |_ _ _ _ _| | _| |_ _| |_ | _| |_ _| _| |_|_ _ | | _ _ _|_ | | | _ _ _ | | | | | | _| | |_ _| _| _ _|_ _ _| | | |_ |_ _|_ _ _ _|_ _|_ |_ _ _| | | | | _|_ | | _ _ _|_| |_| _| |_| _ _|_ _|_ _ | |_ | _ |_ | | | | | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | | | | _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | |_| _ _| | _ _| | | _| _| _|_| | | | _ _| | | _| _|_ _ | | _| |_ _ | _ _ _ _ _|_ _ _|_ | | _ _|_ | |_ _ _ _ _|_ _ _ |_| |_ _|_ _|_ _ | |_ | _ _|_ | | |_ _ | _ | |_ | _ _ _ _ | _| | | _ _ _| |_| |_ _| | |_ | _ _ _ | |_ _| _ _| |_ _|_ _|_ _ |_ _ _ | _| | _|_ _ | | |_ |_ _ | _ _ | _| _|_ _| _ _ |_ _ _ _ | _ _ _| |_| _|_|_ _ |_ | |_ _|_ |_ _ _| _ _ _|_ | | | |_ _ _ _ _ | | |_ | | _ | |_ _| _| _ _|_ _ |_ _ _| _ _ |_ _ | _ _| | |_ _| _ |_ |_ | _| | | |_ _ _|_ _| | | | | _|_ _ |_ _| | _|_ |_ _ _ _ | | _ _ | _| _ |_ _ _ _|_ _ _ | |_ _ | | | | _| | | | |_| _| | _| |_ _|_ _ |_ _| |_ _| | | | | | | _| | | _| |_ | _ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ _ |_| | _| _| |_| | _ _| | |_ _ _ | |_ _|_ _ _ _ |_ _ |_| _| _ |_ |_ | |_ |_|_ _ |_ | | |_ | _| _| |_ _ _ _ _| | _ _ _| | |_ |_ _ | _ _ | _| _|_ | | | | | _|_ | _ _ | | | |_ _| _ |_ _ | | _| | | | | | |_ |_ _ | _ _ | | | |_|_ _ _ _ _| |_ _| | |_ _| | | | _ |_|_ _| | |_ _ _ _ _|_ _ _| | |_| _ _| | | _ _ _ | | | _ _ _| _ _ |_ _| | _ _| | |_ _ _ _ | _| |_ _ _| | _ _|_ _ _ _ _|_ |_| _ _ _ |_ _| _ |_ |_| _ _ _ _|_ |_ | _ |_ | _|_ _ _| | _ _| |_| |_| _ _|_ _| |_| |_ _ _| _| _ _ _ |_ _| | _| |_ | | _| |_ _ _ _ _| _|_ |_ _| | |_ _ _ |_ _ | |_| _| | _| _ _ _ | _| _ |_ | | +| |_ | | | |_ | |_ | | | | _ | _| _| |_| | | _| |_ _ _ _ _| | _ _| _ | _| | _|_ _| _ |_ | |_ | | | | |_ | _ | _ _ _| |_ |_| _ _|_ _ _ _|_ _ _ _| |_ _ _ | | | | | | | | |_ | _| | | | | | _|_ | |_ | _ _| | _ _ _ _ _| |_ |_ _ | | | _ _ _ _ | | _| | |_|_ _ | _ | |_| _ _ _ _|_ |_ |_ _ _| _ _ _ _ _ | |_ |_ _| | _ _ _| |_| | |_ _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | | | _| | | |_ _ _| _| _|_| | | |_ _| | | _|_ _| | |_ _ _| | | _ _ | _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ | | _ _ _| | _| _|_ _| | _ _| |_ _| _ _| | _|_| | _|_ _ _ _|_ | |_| _| | |_| _ |_ |_ | |_ | | |_ _ | | |_ | |_ _ _ | _ _|_ _ | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ _|_ _ | | _ _|_ |_ | _ | |_| _ |_ |_ _ | _ _ _| | |_ _ |_ _| _ _ _ _ | _ _|_| |_| _ _ _ _| | |_ _|_ _| |_ | _ _| | _ _| _| _ _ _| | | |_| |_ | | | _| _ _|_ | | | | _|_ _ | _ _ _ _|_ _ _|_ _| | _ _| |_ _ _ _ | _| |_ _| | |_ _ _ _|_ _ |_ | _ _| _ _| | _| _| _|_| | |_ | | _| | _|_ _ _ |_ _ | | | _|_ _| |_| | |_ | | | |_ _ _ _|_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _| _| _| | |_ | | _ _|_ _|_ _ | | |_ _ _|_ | | _| _ _|_ | | |_ |_| _ _ _| _| |_ | | | _| | |_ _| _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ _ _ _| | |_ | | _ _|_ _| | |_| |_ | | _| | |_ _| | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _|_ _ _ _ _ |_ _ _| |_| | _ _ _| |_ |_ | | | |_ _ _ _ | |_ _| _|_ | | | | |_ _| | _| |_ _| _ _ _| _| | |_| |_ | |_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ | _| _ _|_ |_ _ _| |_ |_ _| |_ | |_ _ _| | | | |_ |_ | | _ _ _ _|_ |_ | _| _|_ |_ | _|_ |_ | | | |_ _ _ _ _ _ _ | | _ _|_ | _|_ _ _ _ _|_ _ | _|_ _ | _ _| |_| _| _ _|_ | +| | |_ _ _|_| | _| | _| |_ _| |_ _|_ | _| _| | |_ _ _ _ _| | | |_ _| | |_ _| | _ _ _| |_ | |_ | | |_ |_ | |_ |_ _| | _ |_ | | _ _ _ _ | |_ _ _ _ _ _ _| |_| |_ _| |_| |_ |_| |_ _ _| |_| |_ _| _|_ | |_ | _|_ | _ |_ |_ _|_ _| | |_ _ | | _ _|_ _| _| | _ |_| | | |_ |_ _ _| |_ | | _ |_ |_ _ |_ _| _| _ |_| _ |_ | |_ _ _ _ _| _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _| |_|_ _| _ _ _| _|_ _ | |_ _|_ _ |_ _|_ _ _ | _| _ _ _|_| | | |_| |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | _ _| | | | _ _ |_ _ _ _| _ _| _ |_ _ _| |_ _ _ _ | |_ _ _| _ _| _| _ _|_ | | |_ _|_ _ _| | |_ | | | | _ |_| | |_ _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _ _ |_ _ _| |_ | | | | _| _| _ _|_ | _ _| _ _|_ _ _| | _ _| | | | | _ |_ |_| | _ _ _|_ |_ _ | _| | _|_ | _|_ | | |_ _ | |_|_ _|_ | | _| |_|_ | |_ _ _ _ _|_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ _ _ _ |_ | | _| | |_ |_ _| |_ _ _ _ | |_|_ | |_ _ | | _ _| | | _ _| | |_| _|_ _ | |_ _ _ _ | _ _| | |_ _|_ _ _ _ _ _ _| | _|_| | | | _ _ _ |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| | | _| _| | _| |_ _| _| _|_ _| | |_ _ _ _ _ _| _| |_ _ _ _ _|_|_ | | _ _ _| _| |_ | | |_|_ _ |_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | _|_ _ | |_ _ | _| _| | _| _|_ _ _ _|_ |_| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | _ _| |_ _ _ _| |_ | |_| _ |_ |_| |_ _| | _ _ | _| |_ _ | |_ | | | | |_ _| _ _| |_ | _ |_ _ | _ |_ _|_ | | _| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_|_ |_ _ |_ _ _ _ _|_ | _ _|_ _ _| | _ _ _| | _ | |_ _|_ _|_ _ _ _ _| |_ _ _| |_ | | |_ | | | |_ _|_ _ _ |_| _|_ _|_ | _| _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ | |_ | _ | _| |_ _ _ _ _| +|_ _| _ _ | |_ | |_ |_ _ | |_ _ |_|_ _ _| _|_ | | |_ _ _ _|_ _|_ _ |_ _ _ _|_ _ _ _| _| _ _ _|_ |_| _| | | _ _ _| _|_| _| |_ _ | | _| |_ _ |_| _ | |_ _ _ _ _|_ | | | _| _ |_ |_ _ | _ _ _|_ _ _|_ _ |_|_ | _ _|_ | _| _| | | |_ _| |_ _ _ _| |_ | | _| _| _| _| _ _|_ _ _|_ _| _| |_ | _|_ _| _|_ | _| _| _ _|_ | _ | |_ _ | | _ | _|_|_ | | | _ _| |_ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | |_ _ |_ _ | |_ | |_ _|_ _ |_ _ | | | | _|_ _ _ _ | | | |_ _ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_| |_ | | |_ _ _|_ | |_ _| | |_ _| |_| _ _ _ _| |_ |_ | _ _| | _| |_ _ _ _ _|_|_ |_ _ | | _ _|_ | | |_| |_ | | _|_ | | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| | _ _|_ _ _|_ _| _| _| |_ _ _ _ _| _| _|_ _| _ _ |_|_ | _ _| | _| _| _ _|_ |_| |_ _ _ | _| |_| | _|_ _| |_ _ |_|_ _ | _| | |_ _ _ | | |_ |_ _ | _ _ _ | | | | | |_ _| _ | | _| |_ _ | | _ |_ | |_ _ _| | _ _ _ _ _ | | _| |_ _ | | _| | |_ | | | | | _ _|_ _| _| |_ _|_ _ | | | | _ _| |_ _ | | _ _ | |_ _ _ _| | |_ _ _| |_ | | | |_ _ | _|_|_ | | | _ _|_ _ |_| | | _ |_ _ | _ _| | _| |_ | |_ |_ _ | |_ _ _|_ | _ _| | | _|_ _ | _| _ _ _| _| _ _ _| _| _| |_ _ _ _ _| | |_| _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ _| |_|_ _ | |_ |_ _ _ _| _|_ _ | |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| | _ _| | _ _| _ _| _| _ _|_ | |_| _ _|_ |_ _|_ _ _| _| |_ | | | |_|_ _ | | _| | _| |_ _| | | |_ _ | | |_ |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _| |_ _ |_ _ |_| | _| _ | |_ | _| | | |_ | _ _ _ _ | |_ _ | _ _|_ _ _|_|_ | | _|_ _| _ _ _ |_ _ _| _ _ _|_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| | | | |_ _ |_ | +| _ |_ _ _ _| _|_ | | _ _|_| |_|_ | | _| _| |_|_ | | _ _ _|_ _ | _| _ _ _| _ _| _ _| _ _ _| _| _| | |_ _| |_ _ |_ |_ _| | |_ _ _| | | _| |_ _|_ _ | | _ _| |_| _| _| _ _|_ | _| | _ _ _ _ | |_ _ |_| _ _ _ _|_|_ _ _ _|_ _| | | |_ _ _ _ _ _ _|_ _|_ _ _| | _ _| |_ _ | | |_ _ | | | _ _ _| _ _|_| _| |_ _ _ _ _| | | _| _ | |_| | |_ _ _ _ _| |_ _|_ _ | | _ _| | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | _ _|_| |_|_ _| | _|_ _| | _ _ _ _|_ _ | |_| |_ _| |_ _| | | | |_| _ _ _ _|_ |_|_ | _|_|_ | | | _ _| _ | _| | | _|_ | | _| |_ _ | _ _|_ |_|_ |_ _|_ _ |_|_ _| _ _ _ _|_ |_ _ _| | _ | |_ _ | _ _ _ _ _| _ _|_| | _ | |_ _ _ _ _|_ _|_ _ |_| |_ |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ | | _| | _ | _ _ | | | |_ _ | _ | | _| _ _ _| | | |_| |_ | | |_ _ _|_ _ _ _ _ _ _ _ |_ _ _ _|_ _ _|_ _ |_ | | _|_ _ |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | | |_ _ _| _ _ _|_ _| |_| |_ _|_ _ _| _| | |_| | _| | | | |_ _| | _ _ _ _ _| _ _ _ _ _|_|_ _ |_ | |_ |_ |_ _| |_ _ _ _| _ _ |_ _ | _ _| | | |_| _|_ _ |_|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | | |_| |_ | |_ _ _ | |_ | | _ _|_| _ _ |_|_ | _ _| | _| | _ | |_|_ _ _|_ |_ _ _ _|_ _ |_ | _|_ | | _ _ _|_| |_ |_ |_ _ _ _| _| _ |_ _ _ _| _ _| _ _ |_ _ | | | _ | |_ _ _ _| _ _ _| _ _| |_ _|_ _ | |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | | |_ _ |_ |_ | | | | | | _| |_ _ _ _ _| _ _ _ _| | _ _ |_ | | _| |_ | _ | | | | | |_ _| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_|_ | | | _ _| _ _ | |_| | |_ _| _| |_ _ _ _ _ _|_ _ |_|_ _ _ |_ _ _ _|_ _ _ _| _ _|_ _ | | _| |_ _ |_| | _ _ _ _ _ _| _| _ _ _ _ _ _| | _ _| |_ _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | | | _| _|_ | |_ _ _| | +| |_ _| |_ _ | _ _|_ | | |_ _ | |_ _|_ _| _| _| |_ _| |_ _| _ _ _| | _| | _ _| | | _ | _ _ _| _| | |_ _ | | | _ | _ _| | _| | _ _ _| | | | _| _ _ _ _| | | _ | _| _| |_ _ _ _ _|_ | |_ _ | | _| |_ _ |_ |_ _ _ _ _ _ |_| _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | _| _|_ _ _|_ _|_| |_ | |_ _ | | _ _ | |_ _ _ |_ _| |_ |_ | |_ | | | | _ _ _ | | _ _ _| | |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | | _ _|_ | | |_ _ | | _|_ _ _ _ |_ | _ _ _ | |_ _ _ _ _|_ _ _ |_ _| |_ _ |_ _ _| |_ | |_ _ _ _ _| |_ _|_ _| |_ _| | | | | | | |_ |_ _ | _|_ _| | _ |_ _ _ |_ _ |_ |_ _ _| |_ | | _| | _|_ | _| | |_ _ |_ _ |_ | | | | |_ | _ _ _ _ | |_ _ _ |_ | _| | | |_ _|_ | _ _ _ | | | |_|_ |_|_ _| | _|_ |_|_ | |_ _| |_ | | |_ _ _|_ _|_ |_ _ | |_|_ _|_ | | _| |_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _|_ _ _ |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| _|_|_ | | | _ _| _ _ _ _ | | |_ _| |_ _ _ |_ _ _ | _ _|_ _ _| _ _ _ _ _ _ _ _ _| _|_ _|_| | _| |_|_ _ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _ _| |_ | _ _ _|_ | | |_| |_ | | |_ | |_ _ |_ _ _ | _ _ _| _|_ | _ _ _| |_ |_ _|_ | | _| |_ _ _|_ _ _ _| | _ _ _| | | |_| |_ | |_ | | | |_ _ _ | |_ _ _ _ _| | _| | _ _| | |_ _ _ | _| | | _|_ |_ _ _ _ _ _|_ _ _ _ _ | | | |_ | |_| | | | | | | |_ _ _ _ _ _ _ | _|_ _ | _ _ _ _|_ _ _ _ | | |_ _|_ | | | _ _ | | |_|_ |_ _ | | | | _| |_ _| |_ | |_ _ _ | | | | _ _ _|_| | | |_ _ | | | _ _| |_ _ _| |_| | |_ _ _ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _ _| |_ _| | _ _ | |_ | | |_ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _| | | _| |_ _ _ _ | _| _ _ _| _ _ |_|_ | _ _| | _ _| | | _ _| |_ | _|_|_ | | | _ _| | _ _ _ | | | | |_|_ | _| _| |_ _ | | | +| | | |_ _ | |_ _| | _ _| |_ _| _ _|_ | _ _ _| _| _|_ _ | _ _ _| | | _ |_| _| | | _ _| | |_ |_|_ _ | | | | _ _| | | | | | |_ _ _ _| |_ _ _ _ | | | | |_|_ _ _| _ |_ _ _| |_ _|_ | |_ _ _ | _ _ _| | _| | |_ _ _|_ | | _| _ _| _ _| |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _ _ | _ _ _ _|_ |_ | _| | | | | _|_ | |_| |_ | _| _|_ _| |_ _| |_ _| | | | | | |_ | _ _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _| | _ _| |_ _| _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _|_ | |_ | | _ _|_ _ _| |_ _| _ _ _ _ _ | | _ _ _ _ _| |_ | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ _ | | |_ _| _| _ _|_ _ _| _| _| _| _| _ _| _ _|_ _ |_ _ _| |_| | | |_ | | _ | | _| |_ _ |_ _ _| |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_|_ | _ _|_ _ |_ _ _|_ _ _| _|_ | _ _ _ _ | _| | |_| _| | |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ |_ _ _ _ _| |_ _|_ _ _ | | _ _| | |_ | _ | _ _ _ |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ _ _ | _|_ _|_ | | _| |_ _ |_ _ _ _ _| _ | |_ _ _ _ |_ _ | _| _ |_ |_ _ | | |_ |_ _ | _ _| _ _ _|_ _ |_ _| |_ _|_ | | _| |_ _| _| |_ | |_ _|_ _ | |_| | _|_ _ _ _| _ _| _ _ _| | _ _|_ _ _ _ _ _ | | _ _ _ _ | |_|_ | |_ | |_ _ _| | | | _|_ _ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _ _ _ _| |_ _| _| | |_ _|_ _ |_ _ _ _|_ _| | _ _| |_ _ _|_ | |_ _ |_ _| | |_ _ _ | _|_ _| |_ _ _| |_| |_| _| _ |_ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _ _ _| | _| |_ _ _| |_ |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _| | _ _| | | |_ _ _| | | |_| _| _ _ _| | | |_| |_ | |_ _ _ _| | | |_ _ |_ _ _ _ _| |_ _| _ _| | _ | | | _| | _ _|_| _|_ _ _ | |_ _| +| | |_ _| _ _|_ | |_ _ _ _| _ _| _| _|_ _ | |_ _ _| _| | |_ _ _| |_ |_| _| _| | | _| | _|_ _| | | |_| | | | | |_ _| | |_ _ _ | | |_ _ _|_ |_ | _ _ _ _|_ | _| | | |_ | | |_ _| | _ _| | _| | _ _ _| | | _|_ _ _ _ _ _|_| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_| | |_ _ _| |_ | | | _|_ _ _|_ | _| |_ _ _| | _|_ _ _ _ _ _|_ | _| _ _| | | |_ |_ | | _| _| _ _|_ | |_ | | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_ |_ |_ _ _ _| _ _| _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _|_| | _ _ _ _| _ _| |_ | _ _| |_ _| _ |_ |_| | _ _|_ | | |_ _ | _ _ _ _ | _| | |_ | _ _| | _ _ _| | _|_ _| _| |_ _ |_ _ _ | | | _ _ _|_|_ |_| |_ _| | |_ _ _|_ | | _ _ _ _ _ | | _ _ | _ _| | |_ | | | _|_ _ | _|_ _ |_ _ |_ _ _ _| _| _| |_ _ | | _| | | _|_ _ _|_ | |_|_ | | |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| |_ | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| |_ |_ _ _ _ |_ _ | _ _| _ _ _| |_ |_ | |_ _ _| |_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | _| | |_| _ | | |_ |_ _ | _ _ _ _ |_ _| |_ _ | |_ _ _| |_| _| _ _|_ | | | |_|_ | | _ _|_| |_ _ _ _| | _ _| | | |_ |_ _ | _|_ |_| | | _ _ |_ _| | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ |_|_ |_ _ _ _ |_ _ _|_| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ | | | |_ |_ _ _ |_ |_ _ | _ | _|_ _ _ _|_ _ _| _| |_ |_ _ | | _ _ _| | _ _ _|_ _ _ _ _ | | |_| _| _ _|_ _ _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ _|_| | _ _ _ | _| _ |_ |_|_ | |_ _| |_ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ _| |_ | _| | | | _ _| |_| | _| |_ _ | _|_|_ _|_ | | _| |_ _ _ _|_ _|_ _ |_ _| _ _ | |_ _ _| |_ _ _| |_ | |_ _ _ _| _ | | |_ _ | +| _| _ _| | _|_|_ _ _ | | |_ _ | _| | | _ _|_ | |_ _ _| |_ |_ | | |_ |_| | | | | _ _| | _|_ _ _ _| | | | _|_ _ _ _ _ _ _|_ _|_ _ |_| |_ |_ _ _ | | _| | _| | |_ _| _| _|_ _ |_ _ _ | | | | _ _| _| _ _|_| _ _ |_ _ | _ _| | | |_ | _|_|_ | | | _ |_ _ _ _ | | _|_| | | _| _| _ _|_ _ _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | | _| | |_ | _ _| |_| _| |_ _ _ _ _|_ |_| |_ |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ _ |_ _ _ | | |_ _ | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _ _ _ _ |_ _| | | _| _ _|_ _ _|_ _ _ _| _| _| _ _|_ | |_ _| | _ _| |_ _| _ _|_ _ | _ _|_ _ _| | _|_ | _|_ |_| |_ | _ _ _|_ | _| | |_ _| |_|_ _| _ _ _ | | _| _|_ _ _ | | | _ |_ | _|_ _| | |_|_ _ _ _|_ |_|_ _ _| |_ _ _| | | _ _| _ _ _|_ | | _ _ _|_ _ | | _| |_ _ _ _|_|_ _ _ | | |_ | _ _|_ |_ _ | |_ | _|_|_ | | | _ _| | _ _ _| | | | _|_ | _| | _| | | |_ _|_ | _ | _| | |_ _ _ _ _ | | _ _|_ _ _| _| | | _| _ |_ |_ |_ _ | _ _| | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _|_ |_| | _|_|_ | | | _ _| | _ | | | |_| _| _ _|_ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _| | _| |_ _ | _| _| |_ _ _ _ _| _|_ | _ _|_ | | |_ _ |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _| |_ | _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _|_ | _ _ _| _ _ |_ _ | _ _| | | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| |_ _ _|_ _|_ _ |_ | _ _| | | | | | _| _ _ _ _| _|_ _ _ _ _ _|_ _ _| _ | _| _ _ _ _ | |_ _| | | _| |_ _ _ _ _| _ _ _| _| | | |_ _|_ |_| _ | | | | |_ _| | _ _|_ _ _| |_| | _| _ _|_ | _| | | | | | | | _|_|_ | | | _ _| |_ _ | | | | | |_ _ |_ | |_| |_| | | | _|_ _ _ _| | | _ _ | | |_ |_ _ | _ _ |_ |_ _ _ _| _ |_ _|_ | | _| _ |_ |_|_ |_ _ _ _ _| | |_ _ _ _| | +|_ | | |_|_ | _ _ _ _ _| |_ _|_ _ |_ _| | _|_|_ _ _ _ | | _ _ _ _| _ _ _|_ _ _ _|_ | |_| | | | | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | |_ _ |_ _ _| |_ _| | | |_ _ _| _| |_ _ _ |_ _ | |_ | |_ _ | _| _| _ _ _| | | |_| |_ | | |_ _ |_ _ _ _ _| _ _|_ _| _ _ |_|_ | _ _| | |_| _ _| | _ _ | _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | | _|_| | | |_ _| _ _ |_ _ _| | | _ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | | _ _ _|_ _|_ _ |_|_ | |_ |_ _ | _|_|_ | | | _ _| |_ | | | | _ _ |_ _ | _ _| | | _| | _ _ _| _ _ _ _| _| |_ _ _ _ _|_ | _|_ _ _ _| _ _| _ _ _ _|_ _ | | _|_ _| |_ _ |_ _ | | _|_ _ | _ |_| | _| | | | | _ _ _|_ _| |_ _ _ _|_| |_ | | | | | | |_ | _| _ _| | |_ _ _ _ | |_ _ |_ _ _ _| _ _|_ _| _ _| _ _ _ |_|_ _ | | | | | | _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _ | |_ _ _ _ _| |_ _| _| _ _ _| | | |_| _ |_| _|_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _ _ _| | _ _ _ _| |_ | _| _| _ _|_ | | |_| |_ | | |_ _| _|_|_ | | | _ _|_ _ _ _ _| | | |_ _ _| |_ | | |_ _ _ _ _| |_ _|_ _ _|_ _ _| | | | | _ _| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| _ _|_ _ _| | |_ | |_ |_ | |_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _|_ _ |_ _ _ _ _| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ | | | _ _ _|_ | | |_| |_ | | _| | _ _|_ | _|_|_ | | | _ _|_ _ _ _| | |_ | |_ _ _| _ _ | |_|_ | | | _ _| |_ _ _|_| | | | _ _ _|_ _ | | | | | |_ _| _ | | _| |_ _ | |_| |_ | | _|_ _ _ |_ _ _| |_ _|_ _ _ _ _| _| _| _| |_ _|_ _ |_|_ _ | _ _ _ _|_ |_ _ |_ _ _ _ _| |_ _| |_ _|_| |_ _| |_ _ _ _ _| |_ _|_ _ _| |_ _ _ | | _|_ _|_ _ | | | |_ |_ | | | | | | _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ _ |_ | |_ _| | _|_| |_| _| _ _|_ | _| | _ _|_ _ _ | | +| _|_ _|_ _ |_ _| _ | _ _| _ |_ _ | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _| |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _ _ _ _ _| |_| | | | _ _ _| _ | | _| | | _ _|_ _ | |_ |_ |_ _ | _|_|_ _|_ | | _| |_ _ |_| _ _ _ _ _| | _ _ _| _| | |_| |_ | | |_ | _|_ _|_ _ _|_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_| | | _| _ _| |_| |_ | |_ |_ |_| _ _ | |_ | | _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| | |_ _ _ _ _|_ _ |_ _|_ |_ _|_ _ _ _ _| |_ _| _ |_ _ _|_ | | _| | | |_| |_ | | _| _| | |_ _ |_ _ | | |_ | _| | _| _ _ _ | | |_ _ | _ _ | |_ | |_ |_ | | _|_ _ |_| _ _ _ _| | |_| _|_ |_ | |_ _|_ _ | _ | _| _ | _ _| | _|_ _ _| |_ | _| |_ | _ _| _ _ | _| |_ _ | _ |_| |_ | | | | _| _ _ _| _| | |_ _|_|_ | |_| | | _|_ | |_ _ _ _| _ _ _ _| | | |_ _ | |_ _ _ | _ _ _ _ _ _| _ _|_| |_ | | _| _| | | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ |_ | _|_ | _ _ _| _|_| _| |_ _ _ _ _| _|_ | | _| |_ _ |_ _ _ _ _| |_ _|_ _ _ _ | | | | _| _ _|_ _ _| | _ | _ _ _ _ _ | | _ _|_| |_ _ | _|_ | |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| _| | | |_ | |_ _ | |_ _ | |_ |_ _ _ _| _ _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | _| _ _ _| _ | | _ |_ | | _|_|_ | | | _ _| | |_ | | | | _| _|_ _| | |_ _ | _|_ _|_ | | _| |_ _| |_ _| |_|_ _ _ _ _| |_ _| _ _ _ |_ _| | | _|_ | _ _| | _| |_ _ | |_ |_ | _| _ _ |_|_ _|_ _ | _ _| |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ | |_ _| |_ _ _|_ _ _ _ _ _ _ _ _ | _ _| _|_ | |_ _ _ |_ _ | | |_ _ _| |_ | _| _ _ |_ |_ | | _ _ _| | _ _ _ _ |_ _ _ _ | | _ _ _| |_ | _ | _| | | | _ _ _| |_| | |_ _|_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _| | _ _| |_ _ _ | _| |_ _ _ _ _| _ _| | | | _ _|_ _| | +| _ _ _ _ _| _ |_ |_ _| | _|_ |_ _ _| |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ |_ _ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | | _ _ _ _|_ |_ | |_ _ | |_ _ _|_ | |_| |_| _ _ _|_ |_ |_ _| | | _ _ | | |_ |_ _ | _ _ _ |_ _ _ |_ _ | _ |_ _|_ | | _| |_|_ | |_ |_ _| | | | _ _| _ |_ | _|_|_ | | | _ _| |_ _ | | | _ _ _| | |_ | _|_ _| _| |_ _ _| |_ | | | |_ | |_ | _ _| | | | | |_ _ _| _| | | | |_ _ |_ _ |_ | | | | | _ _ _| |_ _| _ _| _ _ _ | _ _ |_ _| | _ _ _| |_ |_| |_ _|_ | | _| |_ _| |_ _ _| _ _ _| |_| |_ | | |_ | |_ _| _ _| |_| |_ _|_ _ |_|_ |_ _| _| | _ _|_ _| _ |_ | | _ | _|_|_ _ _ _ _ _| _|_ _ | _ _ _|_ _|_ _ _| _| |_ | | | _ |_ |_|_ |_ _| | |_ |_ _|_ _ _| _| |_ | | _|_ | | | |_| _|_ |_| _ _ _| | _|_ _ _ _ | | | _ _|_ | _|_ _ _ _ _ _ _| _ _ _| |_ _| _ _| | |_ _ _|_ _ |_ | |_| _ |_ |_ |_ _|_ _ _|_ | |_ _|_ | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | _|_ _ |_ _ _ | _ _ | |_ | _ _| | | | |_ |_ _ | _ _ _ _ |_ | _| | _ _|_| |_ _| | _ _ _| | |_ _| |_ | |_ |_ _| _| _ |_ |_ |_ _ |_|_ | |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _ | | |_ _|_ _ _ _| | | |_| _|_ |_ _| | _ |_ |_| | _ | | |_|_ | |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _|_ |_ | _ _| |_ _ _|_ | | | |_ _ _ _ _| |_ _| _ _ _| |_ | | | | | | |_ _ |_ _| | _| | |_ _ _| | |_ |_ _ | _ _ |_ | _ _ _ _ | _|_ _| _ _ _| |_ | | | |_ _ _| | | | |_ | | _ _| | | |_| _ _ _ _| _ _ _ _| | | _|_|_ | | | _ _| _ | _| | | _| _|_ | _ _ _| | | _ _ _ _ | |_ _ | | _ _| |_ _| _ _| |_ _ | |_ _| _| _ _|_ _ _| | |_ |_ | | _|_ _| |_ _ | | | |_ _ _ |_ _| _ |_ |_| _ |_ |_| |_ _| |_ |_ _| _ |_ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ | _| | _| | | _ _| |_ | | _| |_ | | |_| | | |_| _ _ _| +|_| _ | |_ _| | |_ | _ _ _ |_ | _ _| _ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ _| |_ _ |_ | | _ | _|_|_ | | | _ _|_ _ _ _ |_| | | _ _| |_ _ _| |_ |_ _ _| | |_ _ _ | _| | | _| |_| |_ | | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _ _ _| | | |_ _ | | |_ |_ _ | _ _| | _ _| | _|_ _ _ _| | | | |_|_ _ _ _ _| |_ _|_ _ | | _ _| | | _| | | _ _| _ _ _| _| | | |_ |_ _| | |_ _ _ |_ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ |_| _|_ | _| _|_ | |_| | | | _ _| _ | | |_ _ | |_ _| | _| |_| |_| _ |_ |_ _ | | | |_ |_ _ | |_ _ |_ _ |_ _| _| |_ _ |_ | _| _ _|_ _ _ _ _ | |_ _ | | | |_| _| _ _ | _| |_ | |_| | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_|_ | _ _|_ | _|_ _| _|_| _|_ _ _| _ _ | |_ _|_ | _ | |_|_ _ _| |_ |_ _ | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| _ _| _| | | | _ | | _ _| | |_| _| _ _|_ |_| _ _ | |_|_ _ _ _|_ _ _ _ | |_ _ |_ _ _| | _ _|_ _ _ |_ _ |_ |_| _ |_ | _| |_ _| _| | |_|_ | | _ _|_| |_ _ |_ _ _|_ _| | _| _ |_ |_| _|_| _| _ _|_ _ _ _ _ _|_| | _| _ _| _| _ _|_ |_ _ |_ _ |_ |_ | | |_ _|_ | | _ _ | | | |_ _| |_| _ _ _| _ |_ _ _| _| _ _| _ _| | | | | | _| _| | |_ _|_ _ |_ _ | | | |_ _|_ | |_| _ _ | | |_ _| _ |_ _ | |_ |_ _ _ _ | | |_| |_ | _ | _| _| _ | |_ _ _| |_| |_ _ | |_ _ |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | |_ _ | | _| | _| _| _ |_ |_| | |_| | |_ _ _ _ _|_ _ _|_ _ | |_ _ _ _|_|_ |_ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _| _| _|_ _ _| | | | _|_ _| | | _ _|_|_ _ | | _| |_ _ |_ _|_ _ _ _|_ _ | |_ _ _ | |_ | _ _| | | _ _ | |_ _| | |_ _| | | _| | |_|_ _|_ _ |_ _ _ |_ _| | _| _| _ _|_ | |_ _ |_ _ _ _| _| _ _|_ _ _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | | | | |_ | | | |_ _ _ |_ | | |_ _|_ | | _| |_ _ _ | | _| | | +| _| |_ _| _ _ _| | |_ _| |_ _| |_ | | _ _ _| _| _| | _|_|_ | | | _ _| |_ _| | |_ _ | | |_ _ |_ |_ _ _|_ |_ _ _ _ _| |_ _|_ _ | |_ | | |_ _ _| _| _ _| _ _|_ _ _| _|_ _ _ _| | | | |_|_ _ _|_ _ _|_ |_|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | | | | _ _| | |_ _ _ _ | _| _ _ _| | |_ _ _| |_| _|_ _|_| |_| _ _ _|_ | |_| |_ _ | | |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| _ _ _| _| |_|_ _ _ | |_ | _ |_| |_ _| _ _| _| |_ | |_ _| _| _ _|_ | | | | | |_|_ | | _ _|_| |_|_ | | |_ _ _| _|_ | _| | _| _| | _ _ _ | _| | _ _| | |_ _|_ | | _| |_ |_| | _| _| | _| | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | |_ _ _ _|_ _ _ | |_ | _ _ _| _| | | | _ |_| |_ _| | _ _ _ _|_ |_ _| | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | | |_ _ | |_| | |_ _|_ _| |_| | _| |_ _ _ _ _| _| | _| |_ _ | _ _ _ _ _ | _| |_ _ |_ |_ _ _ |_ | _ _|_ _|_ |_ _ _| _| _| | | | | |_ |_ | _ _|_ | | |_ _ | _ | _ _| _| _| _ _|_ | _ | | | _ | _ _| | _|_ |_ | _| |_ _ _ _ _| |_ _ _|_ |_ | |_ _|_ _ _ _ _| | | | |_ |_ _|_ _ |_ _ _| _ _ _| | | _ _ _| | _ _ _| | _|_ _ | |_ _| _|_ | | |_ _ | | |_ _|_ _ _ _ _|_ _ _|_ _ |_|_ _|_ _ |_ _| _ |_| | |_ _| _| |_ _ _ |_ _| | | |_ _ _ _|_ | _| _ |_ |_ _ |_ _ _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| | |_ _ _|_| | _| _| _ _|_ | _| _|_ | | _ _ _ _ | |_|_ | _ _ _ |_| _ _ _|_ | | |_| |_ | | _ _ _ | _ |_ _| _ _ _| |_ | |_ _ _| _ _ _ _| | |_ _ _|_ | |_ _ | | _| | _ |_ _| _| _|_ | _|_ _ _| |_ |_ | | | _ _| | |_ _| _|_ _ _ _ _|_ _ | | | _ _| | _| |_ _ _ _ _|_ | |_ _ _ | _| |_ _ _ _ _| _ _ _| _| | | |_ _|_ | |_| _ _ _ | | |_ _| |_ _ _| | | | |_| |_ _ | _| _| _| | | |_ |_ _ | _|_ _ _ _|_ | +| | _ _ _ _| |_ | |_ _ | | | _ | | | |_ _ | _|_ _ | |_ _ _ _ _| |_ _| | _| |_ _ | | | _ _| |_ _| _ _| _| _ _ |_| _ _ _ _ _ |_ |_ |_ _ _| |_ |_ | _ _| | | _| | _ |_ _ _ | |_ _ _|_| | _ _ _ _ | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _| | _| | _ _| | _| | | | | |_ | _ _| _ |_ |_ _ | | |_ |_ _ | _|_ | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| _|_ | _ _ _| _|_ _ | | |_ | | _|_ _ _| |_ |_ _ | |_ _ _ _| _| _| |_ _ _ _ _| _|_| |_ | _ _|_ | | |_ _ | | | | _ _ _| _|_ _| | _| _| |_ _ | | _| | _ _|_ | | | | | _ | | _| | | | |_ _ _ _|_ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_ _ | _ | | | _| |_ _ _ |_ _ _| | | |_ | | | _ _|_ _ _| |_ | | _| |_ _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ _|_ _ |_|_ |_ | _ _ _ _|_ |_ |_ _ _ | _ _| |_ _ _| | |_ _ | _ _ |_ _ _| | | _| _ _| | | | |_| | _| _ _| _ _ _| _| | | |_ _| |_ | |_ _| | _ _| |_ _| _ _|_| _| | _ _| _| |_ _ _ _ _|_ _| |_| | |_ | |_ | _| | | _ _| | |_ _ | | |_ _ _ _ _ _| |_ _ | _ _ _ _ _|_ _| |_ | | _ _ |_ _ _ |_ _ |_ | |_ _ | _|_ _ | _|_ _ |_ _|_ |_ | | _| |_ _| _ _| | | _ |_ _ _ _ _ | |_ _ | _|_ _ | | |_ | _|_ _ _| _| _ _| | | _ _| |_ _ _ _ | |_| _| _ _|_ | _| _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| _ _ _ _| | _| |_ _ _ _ _|_ _ _| _|_ |_ _ | | _| |_ _ | _|_ |_ |_ _ | _ _|_ _|_ | | _| |_ _ |_| | |_ _ |_ _| |_| _ |_ |_ _|_ | | |_ _| | | _|_ | | | _ _| |_ _|_ | | | |_ _ | | |_ _| |_ _ |_ _| _ | |_ _ |_ _ _ _| | _ |_ _ _ | |_ _ _| | |_ _|_ | | |_ _ _ _ _ |_ _ _| _ | |_ _ |_ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| |_ _ | | |_ _|_ _ |_ _ _ _| |_ _ _ _| _ _|_| _| _| | | |_|_ | | _ _|_| |_ _ _ | | +| |_| _ _ _ _|_ |_| _ | | | | | | | | |_ _ _ _ _| |_ _ |_ _ _ _ _ | _ _| | | _ _ _| |_ _ _| _ _| | _ _ _| _| | _ _| |_| _| | | _| _| _ |_ |_ |_|_ | _|_ | | |_ _ _|_ _ _ |_ _|_ _ | | |_ _ | | _| |_ _ | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | _| |_ _| _| _| | | _| |_| | |_ | | _| _| _ _|_ | _| |_ _| _ _| | |_| | |_| | _| |_| | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| | _ |_|_ _ |_ | | |_ _| | | | | |_| _ _ _ _|_ |_ |_ _ _| _ |_ | |_ _ _ | |_ _ _ | |_ _| | _ _| |_ _| _ _| |_ _|_ _ | | | |_| _|_ _|_ | |_ _ | _|_ _ |_ | _ _ _| | | |_ _| | |_ _ _| | |_ | _ _ _ _ | | | | |_ _| _|_|_ | | | _ _|_ _ _ _ | | | | _|_ | | |_ _ | | | | |_ _ _|_ _ | |_ _ _ _ |_ _ _ _|_ _|_|_ _ | _| _ _|_ _ _| |_ _ _ | | | | | |_ | _|_|_ | | | _ _| _ | _ _| | _ _| _ _ |_ _ | | _|_ _ _| |_ |_ | _ _| | | _ _|_| _ _ _| | | _| |_ _ | _ _| |_| | | _ | _ _| | | _|_ | _|_ | | _ _ _| | _ _ _| _| _|_|_ _ _ |_ _ _ _| _ _| | |_ _ |_ | |_ _ _ _ | _ | |_ | _|_ | | |_ _ _| |_ _| _|_ |_| | | _| |_ _ |_ | _ _| |_ | _ _|_ | |_ |_ _|_ _ |_ _ | |_ _| | | _ _| | _ _| | | |_ _ _| |_ _| | |_ _ _ | _ _| | | |_ _ | _ _| | _| |_ _ | | |_ _ _| |_ _|_ _| _ _ |_ _ | _ _| |_ _| _ |_ | _| | | _| |_ _ _ _ _|_ | _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| |_ |_ | |_ _ |_ _ | | |_ _ _ _ _ | _ _ _ _ |_ _| | |_ _ _| | | | _ |_ _| _| | _ | | | |_ |_ _ | |_ _ | | |_ _ _| _| _ _|_ | | _|_| |_ _ _ _|_ _| | |_|_ _| | | | | _ _| | | |_ _ _| | | |_ | |_ |_ _ |_ | |_ |_ _| _ _ | |_ | | _|_ _|_ _ | _ _| _ _ _| |_ | |_ _ _| | | _ | | |_ | |_ _ _|_ _ _|_ _ _ _ _ _ |_ _ | _|_ _ _ _ _| | _ |_ _ |_ _ _ | | _ _ | _ _ _| _|_ _| | |_ | _ _|_ | | |_ _ | _| | +|_ _ _ _ _| |_ | |_ _| | |_ _| |_ |_ | _ _ _ _|_ |_ _ _ | | | |_ _ _| |_| _ |_ |_ | | | |_ _ _ |_ |_ _| _ _| | _| | _ _|_ _| _| _ _|_ |_ _ _ |_ _ |_ _| | _ _ _ _ | _ | |_ _| | _| | |_ _ _| | | _| | | |_ _|_ | |_ _ _ _ _ | | |_ _ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _| |_|_ | | _ _| _| _ _|_ |_ | |_ | | |_| _| |_ _ _ _ _| _ _| _ _| _| _|_ _ _|_ _ |_| |_ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | _ _| |_ _| | _| | |_ | _|_ _| |_ |_ _ _| |_ |_| | _ _ _| |_ | |_ | | | |_ _ _ | |_ | | |_ _ _ _| _ _| | | _ _| | | |_| |_ | | | | |_ _ | |_| _|_ | | |_ | _|_|_ |_ _ _| _ _ _| | |_ _ | | |_ |_ _|_ _ |_ _ _ _ _| |_ _| _ _ | _ _| | |_ | _ _| |_ _| _ _|_ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| | _ _| _ _ | _ _ _| | | | | | _|_ _ _ _ _| |_ _| | | _|_ _ | |_ _ _ _| | |_ | |_ _ _| _| _ _|_ _ _| _| |_ _ _| _ | _ _ _| | | |_ _| | | _ _|_ _ _ _|_ _| _| _ _|_ _| |_| | | _|_ _ | | _| _ _ _| _|_ _ | |_ _ _| | |_ _| |_| |_ _ |_ |_ _ | _ _| | |_|_ |_ _|_ _ _ _|_ _ |_ | _| _| _| _| _ _ _| | _| | | |_ | |_ _ _| | |_|_ _ _ _ | _ _| |_ | _| _| | |_ | _|_|_ _ _ |_| | _ _ _| _ _ _ _ _|_|_ _ _ _|_ | _|_|_ | | | | |_ _ _| _| | | | | _ _| _| _ _ _| | | |_| |_ | | _ _| _|_ _ |_ _ _| | |_ _ _ _ _ _ _| | _ | _| | | |_ _|_ | |_ _ _ | | | |_|_ | | | | | _| |_ _|_ | _ _ _|_|_ _ | | _| | _| _| _ |_| |_ _| | | _ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ _|_ _ | | _| |_ _ _ _ _|_ | _| _ _ _ _ | | |_ _ _ _|_| |_ _ _ _ |_| | | |_ | _ _|_ _| | |_ _ _ _ _ _|_ | |_ _| | _ _| | _| |_ _| |_ | _ _ _| |_ | _|_ |_ _ _| _| | _ _| | | | | |_| |_| _| |_ _ | _| | _ _ _ _ | |_ _ _| _|_| _ _ | |_ _| _| _ _| | _ _|_ |_ |_ _|_ _ | _|_ | |_ _|_ _| | _ _| |_ _| _ _| | _| +| _ | | _ _|_ _ _| _ _ _ _|_ _ _ _ | | |_ _ _| |_ | |_ _| | | |_ _ |_| _| _| _ _|_ | | |_ _|_ _ |_ _ |_| | | |_ | | |_ _ | _ | _| |_ _ _ _ _| _ |_ | |_ _ | |_ _ | _ _ _| | | |_ | _|_| | _| _ _ | | | |_ _ _| |_ _|_ _ _ _ _| | _ _ _ | |_ _|_ _ |_ _| _| | | |_ _|_ | |_ | _| | |_ _ | | | _ _|_ _| |_ |_ _| |_ _|_ _ _ _|_ | |_ _ |_ _| | _| | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| |_ |_ | _|_| _| | _|_ | |_ _ _ _ | _| _| _ _|_ _ _| |_ _ _ _| |_| _| |_ _|_ _ |_ _ _| _| | |_ _ _ | | |_ _| | | | | _|_|_ _ _ | | | |_ _|_ _| _ _|_ _ _|_ _ _ | |_ | |_ _ _ |_ | |_ _ | | | | |_ | |_|_ _| _ _ _ _ |_ _ _ _| |_ _ | | | |_ _ _| |_ |_ _ _ _| _ _| | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _ _| _ |_ | | _|_|_ | |_ | _ _ _ _ _ | | | |_ _ _ _| |_ _| _|_ _ _ _|_ | _ _| | _ | _| _|_ _ |_ _ |_ _| _ _|_| |_| | | _| | | _ _ _ _ | |_ _| | _ _ _ _|_ |_ | |_ _ _| | _| _| _ _ _| _ _| |_ _|_ _ |_ |_ _|_ _ |_ _ _| | _ _| _| _ _|_| |_ _ _ _ _| _ _ _ _ | |_|_ |_|_ _| _| _| | | | | | _ _| |_ _| | | | | _ _ |_ _|_| _ _ |_ _ | _ _| | | |_ _ _ _ _|_| _|_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ | |_ _ _ _ _| | |_| | |_ _ _ | | | _| | |_ | | | |_ _ | |_|_ _|_ | | _| |_ _ |_ _ | | _ _ _| |_ | _ _| | _| _ _| |_ _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _| | | | |_ _| _| _| |_ _| | | |_| |_ _ _| | _ |_ |_ | | | _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | |_ _ _ _ _ | | | | _| |_ _ _ _| |_ _| _ |_ |_ | | _|_|_ |_|_ | _ _|_ _ | _ _ _ _ | | _ _ _ _|_ _ _ _ _| | | |_ |_ _ |_ | |_ | _ _ _| _| _| | |_ | |_ _| _ _ _| _| _ _ _| |_ | |_ _ | | _| |_ _ | | | _| | _| |_ _ | |_ _| _ _| _ _ _ _ _|_ | _| |_ _ _ _| |_ _ _ _ _ |_ _ _ _| _ _| _|_ | +|_ | |_| | _ _ |_| _ _ _ _ | |_ _| | _| _ _|_ _ _| |_ | _|_|_ | | | | _| |_ _ _ _ _| | _ | |_ _ | | _| | | | _| | _ |_| | | | | |_ | _|_ | |_ | |_ _|_ | |_ _| |_ _| | | |_ _ _ | | _ _ | | | | | _ | | _ _ |_ _ _|_ |_ |_ _| _ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _| | | _ _ _ _|_ |_ _ _|_ |_ _ _ | _ _ |_ | |_ _ | _|_ |_ _|_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _| | _ _ _ _|_ _ _|_ _ _ _ _ _|_ _ _| | _ _ | | | _ _| _ _|_| _| | |_ _ |_ _ _ | | | | | _ _| |_ _|_ _ |_ _ | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_|_ |_ _ | |_ _ _ _|_ _ _ _| | |_ _ _ _| | _ _| | | _| | |_ _ _| |_ | _| | _| _ |_ |_ | | | | |_ _| | _| | |_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _ _| _| _| |_ _ _| | |_ _| |_ _ | | _ _| |_ |_| _ |_ |_ _ _| _ _ | |_|_ _ | _|_| _|_| | |_ _ _ |_ _ | | _| |_| _ |_ |_| _| | _| |_ _ | | _| |_ _ | |_ _ _| |_ | | | | _| _|_ _|_ _ _ _ | _|_ _ | _ _ _ _ _ _ _ _ | |_ _ | _|_ _| _|_ _ | | |_ _ | _ _| _ | | _| |_ _ | | _ _ _| _| _| | |_ |_ | _ | _| | |_ _ _|_ | | _ _ _| | | |_| |_ | | | | _ | _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ | | _| _| | |_ _| | | | _| | | | |_ | _| | |_ _ _| | |_ |_ _ | _ _| |_ _| | _| _| | _ _| |_ _ _| _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _| | |_ _ _|_| _| _ _ _ _|_ _| | |_ | _ | |_ _| | | | | |_| _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| _|_ | |_ _| _| |_ _|_|_ _ _|_ _ _ | _|_ | _| _ _|_ | | | |_ _ _ |_ | _| _ _ _| |_ _ | | _ _|_ _| _ _ |_ _ | _ _| | | |_| _|_ |_ _ _| |_ _ | _ _ _| _| _| | _| | | | _ _ _| |_ | _ _| | | _| | |_ _ _| | | | |_| |_ |_ _ _| | | | |_ | | _ _ _ _| |_ | | _|_ _ _ _ _ _ _ | |_ _ _ _ | | |_|_ | _| +| _|_ _ _|_ | |_ _ | _ | | _| |_ _ | _ _| | _ | |_ | |_ _ _ _ _| |_ _| | |_ _ | _| |_| | | | _ _| | | |_ _ _| |_ | |_ |_ | | |_ _ _|_ | | _|_| | |_ _ _ _| |_ _|_ _ | |_ _ _ _ _|_ _ _ | | |_ _| |_ _|_| |_ |_|_ _| _| | _| _ _|_ _ | _ _ |_ _ _| | | | _ _ | _ _| | _|_ _ |_ _ _ |_ _ | _|_ _ _| |_ |_ _| |_ | _ _|_ | _| _| | | |_| | |_ _ _ |_ _ |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _|_ |_ | | |_| | _ | _ _ _| | _| _| _| _ _|_ _|_|_ _| | | _|_ _ |_ _ |_| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _|_ _| _ _ |_ _ _ _ _| _ _ |_|_ | _ _| | |_ |_ _|_ _ _| | | | | _ _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ _| | _ _|_ | _|_|_ | | | _ _|_ _ _ _| | |_ | | | | |_ _|_ | | |_ _ _|_ _ _ _ _ _ _|_| |_ _| _| _| _| _ _|_ | _ _| | _| |_ _ | | |_ _ |_ _ _| _ _ | _ _| |_ | _| _| _ _|_ |_ _| |_ | | _| | |_ _ _|_ | | | _| _ _|_ _ _| | | |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | | _ _ _| _ _| |_ _| _ _| _ _ _ _| | |_ _ _|_ | | |_ _ | _|_ _ _| | | | | _|_ _ _|_| _ _ |_ _|_ _ | |_|_ _|_ | | _| |_ _ _| | | |_| _ _| |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| | |_ _| |_ _ _| _|_| | | _ _| |_| |_ | | |_ | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _|_ _| _| | |_ | _|_ | _| _| _|_ |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | _|_ _| | _ _ _| |_ _ _ _ | | _|_ | |_| |_ _|_ _ | |_ _| | |_ |_ _|_ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ | |_ _| _| |_ _ _ _| |_ _ _ | | | | |_ _ |_ _ |_ _ _ _ _| |_ _ _ _ |_ _ _ _|_ _ _ _|_ |_ _| | |_ | _ _ _|_ | | |_| |_ | | |_ |_ _ _ _ |_ |_ | _|_ _ | |_ |_ | |_ | |_| _|_ _ | | _ _|_ | | |_ | _| | _ _ _| | | |_ | | | _ _| | | _|_ | | | | _ _ _ _|_ |_| |_ _ _ | |_ _ _ _ _|_ _ | | |_ _|_ _ |_ _ _| +| | _ _ _ _ _|_ | | |_ _| | |_ _ _|_ | | | | _| | |_ _ | | |_ | _ _ _ | | |_ | _| | |_| _| _| |_ | _ _| _| _ |_ | |_ |_ _|_ _ _| _ _ |_ _| | _ _| |_ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| |_ _| _| _ |_ |_ _ _ _ | _ _|_ _ _ _ _ _ |_| |_ | | _ _| _|_|_ _|_ | |_ _ _ _|_ _ |_ _ _ _| | _|_ | |_ _| _| _ _|_ _ _| _ _|_ _ _|_ _ _ _|_| _| | |_ _|_ | | |_ _ _ _| | _ _| | _| |_ | _|_|_ | | | _ _| |_ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ | | _| _| |_ _|_ _ | _|_ _ _| |_ |_ _ _ _ _ |_| _| | |_ _| | _ _| | _| | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_| _ _ _| | | | _ _ _| | | |_| |_ | | | _| _ _ _| | |_ _ _| | | _| |_ _ _ _ _| _|_ _ |_ |_ _ | | _| |_ | _| |_ _ _ _ _| |_ _| _ _ _ |_| | | _|_ |_ _|_ _ _ _ _| |_ _ _ _ _ | _ _| | _ | _ _ _| | _| |_ _ _ _ _| |_ |_ _ _| | | | |_ |_ _ |_ |_ |_ _| | _ _| _| | _| |_ _ _ _ _| _ _|_ _|_ | _|_ _ | _| | _ _| | | _ _| | |_ _ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| |_ _ | | |_ _ _ _| _ _| _ _| _ | _| _ _ _ | | _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | _ _| | | | _ | | |_ |_ _ | _ _| | |_ |_ |_ _| _|_ | _|_|_ | | | _ _|_ | _ | | | | |_ |_ | _ _ _ _ _|_|_ _ |_ |_ | _|_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _| | | | | | _ _| | _| |_ _ |_| _ _|_ _ _ _ | |_|_ _ _ _| | | _ _| |_ _ | |_ _ | | _ _| _| | |_ _ |_ _| _ _ _|_ | |_ _ _ _ _ _ | _| | | |_ _|_ | | _ |_ | | |_ _| _|_ _ _ _ _ _| |_ _| _|_ |_ _|_ _| |_ |_ _| |_ | | |_ _| _ | | | _ _ _ _ | |_ _ | _| | |_ _ | _|_ _|_ | | _| |_ _| _| _ _ _ _| _|_ | _| | | | | |_ | |_ |_ _ _ _| |_ _| | _| | |_| _| | | _ _ _| | | _| |_| | |_ |_ | | |_ | _| |_ |_ _ _| |_ |_ | |_ _|_ _ | |_ _ _ _ _| | _ _ _ |_ _ _ | +| |_| | | _ _| | | _ _|_ _ _ _| |_ _|_ | |_ | | | | | |_ _| | _| |_ _| _| _ _|_ |_ _ _| _ | |_ | _| _| _ _|_ _|_ _ | _ _ _|_ | | |_| |_ | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | | _| _ _|_ | _ | | | _ _ _ _ | |_ _ _|_ _ _| |_ | | | _ | _|_ _ _ _ | |_ _ |_ _ _| _ |_ | _ _| | _ _ _ _| _ | _ _ | | _ _ _| | |_ | | |_ |_ _ | | _ _| | _ _ _|_|_ _ _ _ _| |_ _| _|_ _ _ | | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ | |_| _| | _ _| | | _| |_ _ _ _ |_ | | _| _|_ |_ | | | _ _| _ _| _ |_ _|_ | _|_|_ | | | _ _|_ _ _| | | _|_ _ _ _ _ _ _|_| _| |_ _ | |_|_ _|_ | | _| |_ _ |_ | _ _|_ _| _ |_ | |_ _ _| |_ | | | _|_ _ _| |_| | _| | |_ | _ _ | _ _ |_ | | _ _|_| |_ |_ _ | | _ _ _| _ _ |_ _ | _ _| | |_ _| _| | | |_ _ _ |_ _| | _ | _ _| | | _| _ _ _|_ |_ |_ _ _ _|_ |_ _| _| |_ | _ _ _ _ _ _ _ _ | | | _ _| _|_ | | | | _| | | |_ _ _|_ _ _ _ _|_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | |_ _ |_ | | | |_ _| | | | | |_ | _ _| | | | _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ | _ _| | _ _| _ _|_ _ _ _ _| |_ _|_ _ _| |_ | | | |_ _ _ _| _|_ | _| _ _ | |_ _ _ | |_| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | |_ _ _| | |_ _ _ _| |_ _ |_ _ _| | _ _ | _| |_ _ |_ _ |_ | |_ | _ _ |_|_ _ _| | _| |_ | | | | |_ _| | _| |_| |_ |_ _ _| _ _ |_|_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ | |_ _ _ _| _ _ |_ _ | _ _| | |_ _|_ _| | | | |_ _| _ | | _| |_ _ | | | _| |_ _| | |_| _ | | |_ |_ _ | |_ _ | | _ _| |_ _| _|_|_ _ _| _|_ _|_ _ | _ _ _ _ _|_ _|_ |_ _ _ _| | _| _ _|_| |_ | | _| _ _| | | | |_ |_ |_ |_| _| _ _|_ _ _| _| |_ _ _ _|_ _| _ _ _ | _|_ _ _| _ | _ | +| | _|_ | | |_ _ _| | _ _ _|_| _ | | | _|_| _|_ _| |_ _ _| |_ _ _ _| _|_ | _| | | _ |_ _| | | | | _| |_ _ _ _ _| _ _ |_ _ |_ _|_ _|_ | | _| |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _| |_ _ _ _ _| | |_ _| _ | | _| |_ _ | | _ _ _| | | _| | | |_ | _ _ | _| |_ _ |_ |_ _ _ _| _| _|_ | _|_| _ | _ _| _| _ _|_ _|_ _ | |_|_ _| | |_ |_| _ | _|_ |_ _ _ _| _ _ _| _ _ _ |_| | _| _ _ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | |_ |_ | |_ _ _ _| |_| | | | _|_ _|_ _ | |_| _ _ _ _ _|_ _|_ _ _ _ _ | | _|_ | | | _ _| _| | _ |_ _ _ _ _| |_ _| _ _ |_|_ | | |_ | _ _ _ _ | |_ _| _ _| | |_ _ _| | |_ |_ _ | _ _| | _ _ _| |_ | |_ | _ _ _| |_ _ _|_ | |_ _ | _ _| _| | |_|_ |_ _|_ |_ _| | _| _| |_ _| _ |_ |_| | _ _|_ | _ _ _| | | |_| |_ | | | | | _| | |_ |_| _ _| | _ _| | | |_ | _| | _ _| _ _ _|_ _ _ _ _ _ _| |_ |_ | | | | _ _ _ _ | |_ _| | |_ _ _ _ _| |_ _|_ | _ _ | _ _ | |_ |_ _| | | | _|_|_ | | | _ _|_ _ _ _ _| | | | | | | _|_ _ _ _ | |_ _| |_ _ _| | _| |_ _| |_ _ _| |_| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _| |_ | | _ _| _ _ | | | | _ _|_| |_ |_ _ _| |_ | _| | _| |_ _ | _| | _| | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | _| | |_ | _ _| | _ _ |_ | | | |_ | | | | |_ |_ _ _|_ | | | | _|_ | |_ | | | |_ _| _|_ _ _ _| _| | |_ _|_ | _|_ _ _|_ _ _|_ |_| _ _ _|_ | | _ _| | _ _ | | | | | | _ _|_ _ | |_ _ | _|_ _ _| |_ | _| | _ _ _| | | |_| |_ | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | | _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | _ _|_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _ _| _| |_| _ |_ |_ _ _| _| | | |_|_ |_ _|_ | | _ _| | _ _ _ _| _ _ _ _ _| _ _ _ _| | | |_ _ | |_ | |_ | | +|_ _| |_| | _ |_ _ _| | _ _ _ _| | | |_ _| | | | | _| _|_ | | | _ _ _| |_ _| _| | | | |_ _ _ _| | |_| |_ | | |_ _ |_ _| | _| _| | |_ |_ _ | |_ _ | _|_|_ | | | _ _| _ | _| | | | |_ _ |_ _ | |_ _ |_ _| | |_ _ _| _| | |_ _ | _| |_| _| | | _| | | _|_ _ _| | | _| | _ |_ |_ _| |_ _ |_ _| |_ _ |_ _ _| _ _ _| | |_ _| | _|_ _|_ |_ _| | |_ |_ | _ _ _|_ | | _| | _|_ | | | _| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _| | _ _| | | _| | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _|_ _ | | | | | _ _| _|_ |_ _ |_ _ | _ _ _ _ |_ _ _|_| |_ |_ _ | | _| |_ _ |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ _ _ _ _| |_| _| |_ _ | | |_ _ |_ | _|_ | _ _ _ _|_| |_ |_ _| _|_ | | _ _| _| _ _|_ | | |_ _| | |_ _ | | | |_ _|_ | | _| |_ _| _| |_ _| _| _| _|_ _| | | | | _|_ _| |_| _ _|_ _ _| _ _ |_ _ | _ _| | _| _| | |_| _ | | _| |_ _ | |_| _ _ _ _ _ _ | _|_| | | |_ _| |_ | | _ | |_ |_ _ _ _ _| |_ _|_ _ _ _ | | | | | |_ _|_ _ _ | |_ _ _ _|_ | | _ _ _|_ _ | |_| _ |_ |_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ | _| |_ _|_ _ |_ |_ |_ _| | _| |_| _ |_ |_| _ _ _ _|_ |_| | _|_ _ _| | | | _| |_ _ _| _| | | |_ _|_ | | _ |_ | | |_|_ _ | _|_ _ _|_ |_| _ _|_ _ _|_ _ _ _|_|_ _ |_ |_ _| _ _| |_|_ _ | _ | |_ | |_ _| | |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _ _ _ | _ _|_ _| | |_ _|_ | |_ _|_ _ _| | |_ _ _ _|_ _ _ | |_ _| _| _ _|_ _ _| | |_ _ | _|_|_ _|_ | | _| |_ _ |_ _| _|_|_ | | | _ _|_ _ | |_| |_| |_|_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _| _| _ _|_ | | _| _| | |_ _ _ _ _ _ _ _|_ _ | _|_ | _ _ _ _| _ _ |_ _ | _ _| | | |_ | | |_ _ _| | | | | +| _ _|_ | | | |_ _ | _|_ _| _ _ |_ _ | _ _| |_ _| | | | | _ |_ | |_ _ | _|_ _ | | | _| | |_ _ |_ |_ |_ _| |_ _|_ _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ _ _ _ _| |_ _|_ _| | _|_ | | _| |_ _ |_| | | |_|_ | | | _ _|_ _ |_ | | _ _| | |_ | |_ | |_ _| | |_ _ | _ _| | | | |_ |_ | | |_ | |_ |_ _ |_ |_ _ | _| _ _| | _|_ _|_ _ |_ _ _ _ _ _ | _|_ _ _ _|_ _ _ _ | _|_ _ _ _|_|_ _ |_ _|_ _| _| _ _|_ | |_ |_ _| | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ | _| | _ _| | | |_ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | _ _|_ _ | | _ _| |_ | _| |_ _ _| | _| _ |_ |_ _ _| | |_ _ _|_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ _|_| _| |_ _ _ |_ _|_ _ |_| _|_ _ | | | | _ _ _ _|_ |_ |_ _ _|_ _ _| | | | _| |_ _ _ _ _| | | _ _| | | _| | | |_ _| | |_ |_ _ | _|_ |_| _|_ _ | _ _ _|_ _| | _| _ |_ |_ | _ _ _| | | |_| |_ | | | _| _|_ |_ _| | |_ _ _|_ | | |_ _ _| _ _ |_ _| | _ _| | |_ |_ _ _| | |_ _ _| | |_ _ |_ _ |_ | _ _| | _ _|_| |_| |_ _ | _|_ _|_ _ | _ _ _| _ _| _ _ _|_ _| _ _|_ | | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _ _|_ _ _| _ _ | |_ _ _| | | | |_| _| _| _ _|_ |_ _ _| |_ | |_ |_ _ _| | |_ _| _| _ |_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | _| |_ | | _ |_| | | |_ |_ _ | |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _ | |_ _|_ _ _ |_ _ _ _ | _|_ _ _| | _ _ _ | |_ | _ _| | _ _ | | |_| _| | | _ _| | |_ |_ _ | _|_ |_ _ _ _ _| |_ _| _ _| | |_ | | _| _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_|_ | | | | |_ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| |_ _ | | _| |_ _ _ _ _| _| |_ _ _ _ | _ _ _ _ | |_|_ |_ _ | _ _ _|_ | | |_| |_ | | |_ |_ | | _ _ _ _| | | +| _ | |_ _| | _ _| | | _ _ _| _| | |_| |_ | | _ _|_| | _| |_ | |_ _| | _ _ |_ _| _| _| |_ | _| | | | _| | | _ _ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ |_ |_ _| | _ _ _| |_ _|_ | | | _|_ _| | _ |_ _ _| | _| |_ _ | | | _|_| | | | |_ _ _ _| _ |_ _ _ _|_ _ _|_| | | |_ _ _ _|_ _ _ _ | |_ | |_ | _|_ | | |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _ _ _ | |_ _ _ | _| |_ _ _ _ _| _|_ |_ |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_| |_| |_ | | | | |_ |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _|_ _| |_ _ | | _ _| | | | | _| | _ |_| _| _ _|_ | _ _|_ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_| _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | _ _ _ |_ _ _ _|_ | |_ _ _| _ _|_ _ _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | _ _ _|_| _| | | _ _| _| _ _|_ | | |_ _ | | | |_ _|_ | | _| |_ _ | | | | _ _| |_ | | |_| | _ _ _|_ | | |_| |_ | |_ |_ | _ |_ _ _ _|_ _ |_ _ _ _|_ |_ _| | _| _| _ |_ |_ |_ _| | _ _ _ _ _| |_ _ | _| |_| |_ _| _ _ _ _| |_ _| | | | _|_|_ | | | _ _| _ _ _ _| | |_ | | | |_ _|_ | _|_ _ _ | | |_ _ |_ _ _ _ _ _ _| |_ | _ _ _| | | |_ | | _| |_ _ _ _ _|_ | _ _|_ _ _| | _|_ _ _ _ _| | _ _| _| _ |_ | | _ _ | | | | | | _ _|_ _ | |_ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | | |_ | | _| _| _|_ | |_ _|_ |_| _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _ _ _|_ | _ |_ _ |_| _ _ _ _ _|_ _ _ _ | _| | | | _|_ | _|_ |_ _ _|_ _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ |_ |_ _|_ | _ _ _| |_ | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ _ | | | |_ _|_ _ |_ _ | | _|_|_ | | | _ _| _| | | | _| |_| | |_ _ _ _ | | |_ |_ _ | _ _|_ _ | | _| |_ _ | |_ _ |_|_ _ | _|_ _|_ | | _| |_ _ _ |_ _|_ _| | |_| +| _| | _| _| | _ _| |_ _ | | |_ _|_ | | _| |_ _ | |_ _ _| _|_ _ | _|_ _ _|_ |_| _ _ _| _ _|_ _ _|_ _ _ _| | |_ _ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ _ _ _|_ | |_| _ |_ | _ _| _ _|_ _ _| |_ _| |_ _ _| | _ _ _ _| |_| _ _ _ _|_|_ _ _| |_ _ _ _| | _ _ _ _ | |_|_ | | _ _ _ _ | |_ _| _|_ | |_| | |_ _|_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| |_ _ | | |_ _ _ | _ _ _ _| _ _ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | |_ | | _| |_ _ _| | _| _| |_ _ | _|_|_ | | | _ _| _ _ |_| | |_| | _ _ _ _|_ |_ _| | | _| | |_ |_ _ _| |_ | | _| |_ _ _ _ _| | | | |_| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| |_ |_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _|_ _ _| |_ _ _| |_ | |_ _ _ _| _ _ _ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ |_ | | |_ _| | _| |_ _ _ _ _| | _ _| | | |_ _| | |_ |_ _ | _|_| |_ _| _ _|_ _ _|_ | | _|_ _ | _ |_ _|_ | | _| |_ _ _ _| | |_ _ _ _| _ _ _|_ _ _| | _ _| | _| _| _ _|_ | |_ _ |_|_ | | _ _ _ _|_ |_ |_ _ _|_ _ _| _ |_ | _ _ _ _ _| |_ _| | |_ _ _ _ _| |_ _| _| |_ | | | | | |_ _|_ _ _ _ _|_ _ |_ _ | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _| _ _|_|_ | | | |_ |_ _ _ |_| | _ _ _ _| | | _ | |_ | _| |_ |_ _ _|_ _|_ | |_ _|_ _ _| | |_ _ _ _|_ _ | _ _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ |_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_| _ _| | | | | _|_|_ | | | _ _|_ _ _ _ _| | | _ | | | _|_ _ | |_ _ _| | _ _ _ _ | |_ _| _| _| |_ _| |_ _ |_ _ | _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ | |_ _ _ | |_| _ |_ |_ _| | _| | | |_ _|_ | _ | | | |_ _ _ | | |_| | _ |_ _ | |_| |_ _ _ _ _| |_ _| _ _ _ _| |_ | | _ _| | _|_ | _ _| _| |_ |_| _ _| |_ _ _| | |_ _ _|_ | |_ _ _|_ _| | |_ _ _| | |_ |_ _ | _ _ |_ _| _| |_ | +|_| _|_ |_ _ |_ | |_ _| | _|_ _ | | |_ |_ _ | |_ _ | | |_ | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _|_ | |_ _ |_ _| | |_| _| _ _|_ |_ _ _| _ _ |_ _ | _ _| | _ _ _| _| _ |_ |_| _ _ _ _ | |_ _ | | _ _| |_ _ | | _| |_ _ | | |_ _ | | _| |_ _ | | | | | _|_ _ | _ _ | _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | |_ _ _| _| | | |_ | | |_ |_| | | | |_ _ _ _| _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| | | |_ |_ _ | _ _| _| _| _| |_|_ _ _ _ _| |_ _| | _ _ |_ _ | | _|_ _ _| |_ | | | | | | _ _| _| | | | |_ | _ _| | |_ _| |_| | | _| | | |_ _|_ |_ |_ _ _ | | | |_ _ _ _ |_ _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | | _ _ _ _ _| _ _| | |_ _ _| _|_ | |_ _ | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _|_|_ |_ _ _| |_ | | |_ | _ | _|_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ |_ | _ _ _| |_ _ _| | |_ _ _| | |_ |_ _ | _ _ | _ | _| |_| | | | |_ _| _ _ _| _| |_ _ _ _ _| |_ |_ _ | | |_ _ _| |_ |_| _ _ | |_ _| |_ |_| _ | _ _|_ _ _ _ | _ | _ |_ _ _ _|_ |_|_ _| |_ _ | _ | _| _ |_ _| | | _ _|_ _ |_ |_ _ _| |_ | |_| _ _ |_ _ _|_ _|_ | |_ _ _ _| | | _|_ | | | |_ _ _| |_ |_ |_ |_ _ | _ _|_ _ _ _ | _|_ _ _| _ _ _ _| |_ | | _|_|_ |_ | _|_|_ | | | _ _| _ _ | | | _ _|_ _ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _ | |_ _ |_ _ _ _ _| |_ _| _ _ | | | | |_ _|_ _| |_| _ |_ _ _ _ _ _| _ | | _| |_ _ | |_ _| _| |_ | |_ |_ _ |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| |_ _|_ | _| _| _ _|_ | |_ _ _| |_ _|_ _ _ _ _| | | |_| | |_|_ _|_ _ |_ _| _| _| |_ | _ _| |_ |_ _ | _ | _ _|_ _| _|_ _| |_ _ | | | _| |_ | | | _ _ _ _|_ _ _ _ _ | _|_ _ _ _ | | _ _ _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _| |_ _ | +| _| | _ |_ | | _ _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ | | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ | _| | | |_ _|_ | | | _| _| | |_ _ | _ _ _|_ | _ _| | _| |_ _ _ _ _| _ _ _| | | |_| |_ | | _ _ |_| _| _ _|_ | _ | | _| |_ _ | |_| | | | _| | |_ _ _| | | | _| | |_ _ |_ _ _ _| |_ _|_ _| | |_ _| _ _|_ _ |_ _ | | _|_|_ | | | _ _|_ | | |_ | _| | _ _ _ | | |_| _| |_ |_ |_ _| |_ _|_ _ | _ _| _ _| | | | | | | | _ _| _| | | | |_ _ _ _ _| _| |_|_ | | _ _|_| |_ _ |_ _ |_ _ _ | _ _ _ _ _| | _| |_ _ _| |_ | _| _ _|_ _ _| |_| |_| | |_|_ _| |_ _| | |_ |_ _ _|_ _ _| _| _|_ | |_ _|_ _ _| |_ _|_ _ _ _ _| _| | _ _| |_ _|_ _ |_ _ _| | _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _|_ _ _ | | _ | _ _| |_ _ _| _| | |_| | | _| | |_ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _ _ _ _| | _ | _|_| |_ |_ _| | | |_| | |_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | _| _ |_ |_ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| | |_ _ _|_ _ _| | |_ _|_ _| | _ | |_ _ _ _ _ |_ | _ | |_ _| _| _ _|_ _ _| _| | _| |_ _ | |_ _ |_ _ _| _ _ |_ _ | | _ _| _| _ _ _ _| _ |_ |_ | | | |_|_ _ _ _|_ | | |_| |_ _ _ | |_ _| _| _ _|_ _ _| |_| _ _ _|_ _ _ _ _| | |_|_ | _ |_ |_ _ |_ _| _ _| | _|_ |_ | |_| | |_ _| _| | | _| | | _ _| _ _ _ _| | | |_ | _ _| | |_ _ _ _ _| |_ _| _ _| _ _|_ | | | | _ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | _|_ | _|_ _ _ _ _ _ _| _|_ |_ _|_| |_| _ _ | |_ |_ |_ _ _ _ _ |_ _| | |_ _ _| | | _ _ _|_ |_ _| |_ |_ | | |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _| _ _| _ _| | | _| |_ _ _ _ _| |_ _ | | | _ _ | | _| |_ _ _|_ | _ _ |_ _ |_ _ _| | | _|_| _ _| | | _ _| |_ _|_ _ _ _ _| _| _ |_ |_ | |_|_ | _| _| |_ _ _| _ _ | |_ _ | | | | _ | | | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | _ _| +| _ _| | | |_ | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | |_|_ _ _| _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | |_ _ _| |_ _|_ _ _ _ _| | |_ _ _|_ |_ _|_ _ |_ _| _ _ _ _|_ _ _ | |_ _ _ _ _|_ _ | | | |_ _|_ | | _| |_ _ | | _| |_ _ _ _ _|_ _| | |_ _ _| | |_ _ _|_| | | | _| _| |_| |_ _| | _| _ _ _| _ _ |_ _ | _ _| | | |_ | _| | | _| |_ _ _ _ _| |_ _| _ |_|_ _| | | | _| | _ _| _ |_ _ _| _| |_ | |_ _ |_ _ | _ _| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | _ _ _ _| |_ | _ _|_ | | |_ _ |_ | _ _ | | |_ |_ | _ _ _ _| _| _ |_ |_ _| | _| _ _ _ |_ | |_ _ _ _ _|_ _ _| |_| _| | | |_ _ _| _ _| | _ | | | _ _ |_ _ _ _ | |_ _ _ _ _ _ _| _ |_| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _ _| | | | | | | _ _ _| _| |_ | |_ _| |_ _ | _| | | |_ _|_ | | | | _| | | |_|_ |_ _ _ _ _ _ _|_ | _| _| _ _| | _ _| _ _ | |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_| _| _ _|_ | |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | _ _ _|_ _ | |_ | | | |_ |_ _ |_ | | |_ | |_ | _ _| | _ _| _| |_ _ _| _| | | |_ _ | _ _ _| | | |_ _|_| | |_ _ | _| _| _ _|_ |_ _| |_ _ _ _ | |_ _| | | _|_ | |_ _|_ | _ _| | | _ _ _ _ _| _ _ |_ _ | _ _| |_ _ _ _| | _| _|_ |_ _ |_| _ _| | _ _ _|_ _ _| _| |_ _ _|_ _ | | |_ _ _ _| _|_ _ _ _ _ _ _ _ | |_ _| | _ _| |_ _ _ _ _ _ _ _ _| _| _ _ _| |_ |_ | |_ _ _| | |_ _ _| | | _ | | _ _|_ _ _|_ _| _|_ | |_| | _ _ |_ _ _ _| _ |_ |_| _ _|_ _ _ | |_ _| | | | _ _| | _ _ _| | |_ |_ _|_ | |_ _ | _|_ _| _| | | |_ _|_ |_| | |_ _ | | |_ _ |_ _ _ |_ _ |_| | |_ _ _| | |_ _|_ _| | |_|_ _ _ _ _ | |_ _| | _ _| | _ | | | |_ | _|_ _| |_ _ _ _ | |_| _| _| _ _|_ | |_ _ | _|_ |_ | _ _| | _| |_ _ |_| | | | | _|_ _| |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ | +|_ _ | |_ | _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _ _ _ _|_ |_ | | _|_|_ | | | _ _| _ | _|_| |_| | _|_ | _| | _ _ | _| _|_ _ _|_ _ _|_ _ | |_ _ _ _ _ _| |_ | _ _|_ _ _ _| | | |_ _| | |_ |_ _ | |_ _ |_ | _ | _ _| |_ _ | | | _ _ _|_ | | _|_ _ _|_ | | | _| | _| _ _ _| | | |_| |_ | | | |_ | | | | _| |_ _ _ |_ _ _| _ _ _ |_ _ _ _|_| |_ | |_ _ |_| | _ _ _| | _ _ _| | _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| | _ _ |_ _| | _ _| |_ _| _ _| | | | | _ _|_ _ _ | | _ _| | | _| _ _|_ |_| _| | _|_ | _ _|_ | | | | _ _|_| _| |_ _|_ |_ _ _ | | | _| | | |_ |_ _| _ _ _ _ _ _ _|_ | _| _ | |_ _| | _|_| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_| _|_ | |_| | |_ _ | _|_ _ | |_ | | | |_|_ _ _| |_ _|_ _ _ _ _| | |_ _| _| |_ _|_ _ |_ _ _ _ | _ _ |_ _|_| _|_ | _ _ _| |_| |_ _ _ _ _| _|_ _ |_ _ _ _| _ _| _ _ | | | _| |_ _ _ _ _| _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _|_| _ _ _ |_ | | | |_| |_| _| |_|_ |_ |_ | | | _|_ | _|_ _ _| | |_ | _ _ | |_| | |_|_ _ | |_|_ _|_ | _ _| |_ |_ _| | | _| |_ _ _ _ _|_ _ |_ | _| |_ _ | | | |_ |_ _ | _|_ | _|_| | |_ | _ _ _| | | |_| |_ | | | _| | | |_ _ _ |_ | | | |_ | | _ _ _| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ | | |_ _ _ _ | | _ _ _ _ | |_ |_| _ |_ |_| _|_ | _ _| | _|_| |_ | |_| | _ _ _ _ _ _| |_ _|_ | _| | | |_ _| _| _ _|_ | | _ _ |_ _ | _ _| |_| |_ _| _ | | | | | |_ |_| | | _|_| | | _| | _ |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _ | |_ |_ | |_ |_ | |_| _|_ _|_ _ _ _ _ | |_ _ _ _ | |_ _| | _ _|_ | _ _| | |_ _| |_ _| | | _ _ _|_| _| _| |_ _ | _| |_ _ _ _ _| | _ _|_| |_|_ | | | _|_ _ _| _| | _| |_ |_| _ |_ |_| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ _ _| _| +| _| | |_ _| _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | |_ _ _| |_ | |_| |_ _ _ _ _| |_ _| | | _|_ _ | | _|_ _ _| |_ _| | |_ _ _ _ _ _ _| | _ _|_| _ _| | | | | | _ _| _|_| _ | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| |_ |_ _|_ _ | | _ _| | | |_ _| _ | | |_| | | _| |_ _| |_ |_ _ | |_|_ _|_ | | _| |_ _ | | | | | | _ _ _| _| | _ _ _| |_ | _| _ |_ |_| |_ _ _ _| |_ _ | |_ | |_| |_ _| |_ _| _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| _|_ _ | | |_ _ _ |_ _ _ _| _ _| _ _|_ |_ _ _| _ _ |_|_ | _ _| | _| |_ _ _ _ _| _| | | | |_ _ _ _ _|_|_ _| | | | | _ _ _| | |_ |_ _ _| _ |_ _| _| _| | | | | _ _| _ _ _ _ | |_ _| _| |_ _| _ _ _| _ |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _|_ | _ |_| | _|_ _| | | |_ _|_ |_| | |_| |_ _| | |_ |_ _ |_|_ | _| | _ _ _|_ _ | _ |_ _ | | _ _ _| _|_ _| _ _|_ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ | | |_ _ |_ _| | |_ | | _|_ | |_ _ _ _| _|_ _ |_ _ _ _| _ _| | _ | | _ _ _| _ _| |_ _ _| _ _ _| _| |_ _ | | | | | | |_|_ _| |_ _ |_ _ | |_|_ |_| | | | | _| |_ _ _| | |_ _ | | | _| | | | _ _| | |_ _ _ _ _ _ _ _|_ _ |_ _ _| | | |_|_ | | |_ | |_ _| |_ _ |_ _ | |_ _ |_ | |_ _|_ | | _| |_|_ | |_ _ _|_ |_ | _ _|_ _ _|_| | |_ _| |_ | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_| _ |_ |_| _ | | _| |_ _| _| _ _|_ | |_ _ | | _| |_ _| | | | _|_ _ _|_ _| _| _ _ _ _|_ |_ | | | _| |_ _|_ | _| |_ _ _ _ _| _|_ | | |_| |_ | | _| _ _| |_ _| |_ _|_| |_ |_ _ |_ _ _ _ _|_ _ _| | | | _ | | | _ _ | _| _ |_ _ _ _|_ _ _ | |_ _ | | |_ _ | |_ _| _| | |_ | |_ _ |_ _ | |_ _| | _| |_ _ |_| | _ _| |_ | | |_ _ _ _| | |_| |_ | |_ _ _ _| |_ _ _| | | |_ _ _ _| _|_ | | |_ _ | | |_| | _ | _ _ | |_ | |_| _| _ _|_ | | _| | | |_ _|_ | | _ |_ | | |_ _ | |_ _ | +| | |_ _ | _ _| | _| | | |_ _|_ |_ _ | _ _ | | |_ _ |_ _| _| _ _|_ _ _|_ | _ _ _ | _ |_ _| |_ _ _ _| |_ _ | |_ _|_ _ _| |_ _ _ _ | |_ _| _ _ _ _| | _ _| | |_ _| |_ _ _| _|_ _| |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ _ _ _| | |_ _ _| |_ _ _ _|_ _|_ | |_ _| |_ |_ |_| _| _| _| | | | _| | |_ |_ _ | |_ _ _| | |_ _ | | _| |_ | _ _|_ _ |_| _| _ _|_ | |_ _ | | | _| | |_ | | |_ _ _| _ _|_ | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| | |_ | |_ _|_ _ |_ _ | _ | | |_ _ _| | _ _ _|_ | | |_| |_ | |_ | |_ _ _ _| _|_ _ _|_ _ _ _ _ _ | _ | |_ _| |_ _ | _| | | | _ _ _| |_ | |_ | |_ | |_ _| | |_ _ | | _| |_ _ | | _ _ _ _| |_ _ |_ | | |_ _ _| _|_|_ | | | _ _| _ |_ | | _ _ _ _| | |_ _ _ _| _ | _|_ _|_ _ _| | _|_ _ _ |_ _ _|_ _ _ _|_ _ _| _| |_ _ | |_ _| _ _ _| | | _| _| |_ _ | _|_ _ _ _ _ _ _ _| _ | | | _ _ _ _ | |_ _ _|_ _|_ _ |_ _| |_ | |_ _| |_ | |_ _ _ _ _ _ _ _ _ | _ | | | |_ _| _|_| _ _ _ _| |_ | |_| _ _ _| _| | _| _|_ _ _| |_ |_ | | |_ _ |_| _ | | _| | | | | _| |_ | _|_ _ _| |_| | | | | | |_ _| _| |_ |_ _| | _| _| _ |_ | _ _| | | | _ _ _| _ _|_ |_ | |_ |_ _ |_ _ _| | _|_ _ _| | |_ |_ _ | |_ _ | _| _|_ _| _ _ | _| | |_ _ |_|_ |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _ _| |_ |_ |_ _| | |_ _ _| | | _| |_ _ _ _ _| | |_ _| _ _|_ |_ _|_ _ _| _ _ _ |_ _ _ _ _| |_ | | |_ _|_ _ | | | |_ _ _ | _| _ |_ _|_ | | _| |_ _ _ _ | | _| _ |_ |_ _| | _ _ _ _ | |_ _ | | _| |_ _|_ | |_ _ _ _|_ _ |_ | _ _| _ _| |_|_ | _ _ _| _| _| | _|_ _ |_| |_ _ _| _ _ _| |_ _ _|_ | | _| _ _ _| | | | |_ _ _ _ | |_ |_ |_ _ _ _| |_| _ _ _|_| |_ |_ |_ _ | | _ _| |_ _| _ _| _| _| | _| | | | | _| | | _| |_ _ _ _ _| |_ _ _| |_ _|_ _ _ _ _|_ | | | | _|_ _|_ _ |_ _|_ _ _ | +| |_ _| _ _|_| |_ _ _ _| |_ _|_ _ _ _ _| |_ _ _| |_ _|_ _ |_ _| _ _| | _ _| _| | |_ _| | | |_ | _| _| _ |_ |_| _|_ _ _ _ _ _| _| _ | _| |_ _ |_ _ _| |_ | | _| | | _ _ _| _ _|_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ | | _ _| _ |_ |_ _ | | |_ _ _|_ | _|_ |_ |_ _ | _|_|_ _|_ | |_|_ | | _ _|_| |_ _| |_ _| _|_ |_ |_| | _ _| _| _| |_ _ _ _ _|_| _ _| |_ _ _| _|_ _|_ _| | _ _ _ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | _|_ _ _| |_ _ _ _ |_ _ | |_ _| |_ _|_ _ |_ _ |_ _ | _ _|_ _|_ | | _| |_ _ _|_ _ _ | |_| _ _ _ _ | |_ _ | | | |_ | | _| | |_ | |_ _ |_ | _|_ _ _| | |_ _ _ _| | _ _| | |_ _ _| | | |_| _ _ _ _|_ |_ | | | |_|_ |_ |_ _ _ _ _| |_ _| _ | | | _| | | |_ _ _|_ _ _ | | _| _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | |_ _ |_|_ _ _ _| | _ _| | | | _| | | | |_| _ | | | | | |_ _| _ | | _| |_ _ |_ _ _ | |_ _ | |_| _| | |_ | |_| | _ _ _ _ | |_ _ _| | | |_ _|_ _ |_ _ _| _ _ _ _|_ |_ _|_ |_ _ | | | | | | _| | |_ | |_ |_ _|_| _ |_ |_| _|_| | | _|_|_ |_ _ | _|_ _ _ | | _|_| |_| | | _| | _| _| _ _| _ _|_ |_ | | |_| _ | | _| |_ _| | _ |_ _| | _|_ | | | _|_ _ _ _ | |_|_ | | _ _|_| |_|_ |_ _ _ | _| _ _ _|_ _ | | _ _| | |_ _ |_ _| _| | _|_|_ | | | _ _| _ | _ | | |_ _ _ _| _| | | _ _| _| | _| |_ | _ _ | _|_ _ |_ _ _ _ _ _| |_ _ | |_ | | _ | | _ _|_ _ _| |_ | _ |_ _| | |_ | | | |_ _|_ _ _| | |_ | | |_ |_ _ | _ _ | |_| _| _ _|_ | _ _|_ _ | | _| |_ _ |_| |_ | | | |_ _ _ _ | |_|_ | |_ _ | | _ _| _ _| | _ _ _| | _|_ _ | | _| _| |_| | |_ _ _ | | |_ | | _ | |_ | _ _ _ _|_ | | | _ _ _ _|_ |_| | _ _ _ _| _| |_ | |_ _|_ _ _ _| _ _| |_ _ _| _|_ | _| | | |_ |_|_ _ | | _ _ _| _ _ | |_ |_ _ _ |_| | | | _| _|_ _ | | _ _| +| | _|_ | | |_ _ | | | _ _ | _ _|_ _ _ | |_ |_ |_ _ _ _ | _|_| _|_| _| | _|_ | _| | | | | | _| _| _ _|_ | | _| _ _ | _|_ _| |_ _ _|_ | | _| _ _|_ | | |_ _ _| | |_ _ _ _| _ _ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| _|_ _ _| | | _| _| _ _|_ |_ _| |_ |_ _ |_| _ _| _ _ _| _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ _ |_ _ _ _| |_ _ _| _ |_ | |_ _ _ _ _ |_ | | | _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | | |_ _ _ |_ _ _ _| | | _ |_ | |_ _ |_ _| | | _ _ | | |_ |_ _ | _ _ | |_|_ | _ | | _| |_ _ |_ _| |_ _ | |_ _| _|_|_ _ _| _ | _ _|_ | _ _ _ _|_ _ _ _ |_|_ | _| _ _ _| | |_ _ _ _ _| |_ |_ | |_ _ | |_ |_ |_ _ | _ _ _| | | _|_ _| |_ | _ _ _|_ | |_ _ _| _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | | _ | | _ |_ | _| |_|_ _ |_ _|_ _ _ _| |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _| |_ _ _| | | _| | |_| _|_ _ _| _ | | _| |_ _ | |_ _ _ | |_ _ |_ |_ _ _| |_ | _ _ _ _| | _| | |_ | _| | |_ | |_ | | _ _ _| | _| | _| | | |_ _ _ |_ | _| | _ _|_ _| |_ _ _ _ _ _| | _ _|_ _| _| | | _| _ |_ | | |_| | _|_ _| |_ | |_ _ _ _|_ _|_ _ _ _ _|_ _| _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _ _| _ _ |_|_ | _ _| |_ _ |_ | | | |_ _ _ _ _| |_ _|_ _ _ |_ _| | | | _ _| | | |_ _ _ _| | _ _ _| | | |_ | | |_ _ | | |_ _ |_ _ | | _ _ _ _|_ |_ | | _| |_ | |_| | | _ _ | |_ |_ | |_| _| | |_ _ | _|_ _ | |_|_ | | _ _|_| |_|_ _| |_ _ _ _ _| | _ _| | |_ _ _|_ | | _| | | |_ _| _ _ _ | _| |_ _ | | _| | |_ | _|_ | |_ _ | _| |_ _ _ | |_| |_ |_| _| _ _|_ _|_ | _ _| | | | |_ | |_ |_ _| | | _ _ _| |_|_ _ _| |_ | _ _ _ _| _| _ | |_ _ |_ _ | | |_|_ _ _ _| | | | _|_|_ |_ | | |_ |_ _ _ _ _ _ |_ _ _ _|_ _ _ _ _|_ | | | |_| _ _| _ _| | _| | +|_ | _ _| |_ _| _ _| | |_ _| | |_ _|_ _ | _ _ _|_ _ _ |_ _| | | |_ _ |_ _ _|_ _| | | | _| |_ _ _|_| _| |_ _ _ _ _| | | | _ _| | _ _ _|_ |_ | | | _| | | _ _| | _| _|_ _ _| _ _ _| _| | _| | | |_ _|_ | |_ _ _ | | | |_ _ | | | | _| |_| _| |_ _ _ _ _| _ _|_ _| |_ | | |_ | | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ _ _| |_ |_ _ _|_ | |_ | _|_ _ _| _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _| | _ _ _ _ | _|_ _|_ _ _ _|_ _ | | | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _|_ _| | |_ _ _| | | _ _ _ _| |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | _|_ | |_ _| | _ | | _ _|_ _ _| _|_ _| |_ |_ | |_ _ _ |_|_ | _ _| _| _ |_ |_| | | |_ _ _ _ _|_ |_| _ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_| |_ | |_| | | | | | _|_ _ _ _| _ _ |_ _ _ _| | | _|_|_ | | | _ _| | | |_| |_| | |_ _ | _ _| _|_ _| | | _|_ _ |_ _| | |_ _ _| | | | _ | | |_|_ _ | |_ _| _| _ _|_ _ _| | _ | _|_ _ _|_ |_| | |_ _ _| | _ _|_ _|_ _ _ _ | _|_ _ | |_ |_ |_ _ _|_ |_ _|_ _ _ _ _ _| | _| | | | | _ _ _| _ _| | | _| |_ |_ _|_ _ _| _ |_ |_| _ _ | _ _ _ _ | | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _|_ _| | | _ _ _| | | |_| |_ | | | _ _| | | _|_| | _ _ _ | _ | | _ _ _| |_ _ _| |_ _| | _ _| |_ | _| _| _| _| | |_|_ _ | _ | | |_ _ _| |_ | | |_ _ | _|_ _ _|_|_ _| | _| |_ | |_ _|_| _| | | | _ _| |_|_ _ | _|_ | _ _|_ | | |_ _ | |_ | _ | _|_ _| | _| _ _ | | |_ | _ _| |_| |_ _|_ _ _| _| | |_| | _| | | _ |_ _ _| | |_ _ _| _|_ |_ |_ | |_ _| _ _ _ |_ _|_ _ _| |_| |_ |_| | | _| |_ _|_ _ _| |_ | _| _ _|_ _ _| | | _ _ _| _|_ |_ _ | | | _ |_ _|_ _ |_ _ | _| _| |_ _ _ |_ |_ | |_ |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ |_| |_| | _ _| _ _|_| +| | |_ _ _ _| _ _| _ _| | | | |_ _ _ _ _|_| _ _ |_ _ | _ _| | | |_ |_ _ |_ _ |_ _ | |_| |_ |_ _ _ _ | |_ _ _ _ _ _| |_ _| | _ _ _| _ |_ | |_ | | | _| _ _| |_|_ _ _ _ _ | |_ _ | _| | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _|_ _| | | |_ | |_ | _ _ | _ _ _ _|_ |_ _|_|_ |_ _| |_| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _|_ _| | _|_| _ _| | _| _| _|_ _ _| |_ _ |_ _ | _| | |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _| | _|_| |_ _ _ _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ _ |_ _ | |_ | |_| | _ _ _ _| _|_ | |_ _| | |_ _ _| | |_ | _| _| _ _|_ | | _ _ _| _ _ |_ _ | _ _| | _ _ _| _|_|_ | | | _ _| |_ | | | |_ _ _ | | _|_ _ _| _| | |_| |_| _ _ _| | | |_| _ _| | |_ _ _ _ _| |_ _| _|_ _| |_ | | _|_ | |_ | _|_ | |_ |_ _| | | _ _|_ _ _| | | | | _| |_ _ _ _ |_ | _ _| | _| _ _| | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | |_|_ |_ | | _ _ _| _| _ _ _ _ | _ _| | _|_ _|_ |_ _ | _|_ | |_ _| _ _ _| _ _ |_| _| _ _|_ |_ | _|_ _ | | _| |_ _|_| |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | | _ _| |_ _ | _| |_ _|_ | | _| |_ _ | _|_ _| _ _| |_ _ _| | | | | | |_| _ |_ |_ | | _ _| | _ _ _| |_ _ _| _| | |_ _| |_ _ _ | | |_ _| |_| _| _ _|_ _ _| |_ _ | _|_ _ _ _ | | | _ _| | | | _ _ _| _| | | | |_ _ _ _ |_ | |_ _| | _ _| |_ _| _ _|_ | |_ _| _|_ _ _ _ | | | | |_ |_ | | _|_| _ _|_ _ _| _ _ _ _ _ _ _ _ _| _|_ _|_| | | |_ _ | | _|_|_ _ _ | |_ |_ _ _ | |_ _ _ _ _ _ _|_ | _ |_ |_ |_ _ _|_|_ _ _|_ | _ _ _ _|_ |_ _| | _| _ _ _ _|_ _ | | _ |_ _ _| | | | | | |_ _ _ |_ _ | | |_ _| _| |_ _ _ |_|_ |_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ | | | |_ |_ _| _ | +| | | | | | |_ _ | |_ _| |_ _ | _| _ _ _| _| | |_| |_ | | _| |_ |_ | | |_ _ _|_ _ | |_ _| |_ | | |_ | _ _| _ _|_ _| |_ _|_ |_| _|_ | | |_| |_| _ _|_| _ |_ _ | |_ _| | |_| | |_ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _ _ _ | |_ | | |_| | _ _|_ _ _| |_ | _ _ _ _ |_ _ | _| | | |_ _|_ | |_ _ _ | | | |_|_ | | |_ | | |_ |_ _ _ _|_| _|_ _| _| |_ _ |_| | |_ _ | _| |_ | _|_|_ | | | _ _| _ _ | _| | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _| _ _|_| | | | | _ | | _ _|_ _ _| _| | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ _|_ _ |_ _ _ _|_ _ |_ _| | | _| _ |_ |_| |_ |_| _ _| | | | | | _| |_ _ _ _ _| |_| _ _ _| | | |_| |_ | | | _ |_ _ _ _ _| |_ _| _ _| | _| | | |_ _ _|_ _ _|_ | | _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | _ _ _ | _ | | | | _ _ _ _| |_ _| | |_ | |_ _ _ _| |_ |_ | | _|_ _| _ _ |_|_ | | | | |_ | _ | | | _|_ | _|_ | | _| _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _ _| | | |_| _ |_ |_ _|_ _ | _|_ _| |_ _ _ | | _| | | | |_ |_ _| _ _ _| | | _| |_ _ _ _ _| _|_ _| | |_ _ | _ _ _| | _| | | |_ _|_ | |_ _ _ | | | |_|_ | |_ _| _| | |_ _| | | |_ |_ _ | |_ _ | |_ |_ _ _| _ _|_ _| _ _| _| _ _|_ | | |_| |_ | |_ _ |_ | | _ _ _|_ |_ | _| | _|_ | _ _| _ _| | _| _ _| _ _|_| |_ _| |_ _| | | | | |_| |_ _ | _ _ _| |_ _|_ _ |_ _ _| _|_ | |_ _ _ _| _ _| | _| | | | _ _ _ | | | | _| _|_ _| |_ _ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ | | |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ | _ _|_ | | _ _ _ _ | |_ _ _ _| |_ |_| _| | _| _ _ _| | _| |_ _ _ | | |_ _| |_ _ _ |_ _ | |_|_ _ _ _ |_| |_ _| | | _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| | | | | |_ | _| | +| |_ _| |_| |_ _|_ _ |_|_ | _| _|_ _ _|_ _ | _ |_ _|_ | | _| |_ _ _|_ _ _| | |_ _ _ | |_ _|_ _ _|_| _| _| |_ | | | _ _| | _ _| | _ _ _| _| _ _| |_ |_|_ | | _ _ _| |_ | _|_ _ | _|_| | _|_ _ |_|_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | | |_| |_| _|_|_ _ _|_ _ | _| _ _|_ _ _| |_ _ |_ | | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _| | |_ _| | | _ _ _ | _ _ _| _ _| _| |_ _ |_ _ _ _|_| | |_| _| |_ _|_ _ _ _ _| |_ _|_ _| | _|_ | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ _ | _ _ _|_ _| | |_ | |_| | _ _ _| _| _| | | | | _|_|_ | | | _ _| | _ | | | |_ _ _| _ _ _| _ _ |_ _ | _ _| |_ | _| _| _| _|_ _|_ | | |_ _ _| | | |_ | | _ _ _ |_ _ | |_|_ _|_ | | _| |_ _ | | _ | _ _ | | | | |_ _ _| |_ _| _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _| _ _| | |_ _| | |_ _| _ |_ |_ | | |_ _| | _ _|_ _|_ | | | _ _ _ _ |_ _ _|_| |_| |_ _ _| _| | | |_ _| |_ _ |_ _| | | | |_ _|_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | | _| _ _| _| _ _|_ _ _ _ _|_ _ _ _ |_ _| | | |_ | _|_ _|_ _ | | _ _ _ _ _ |_|_ _ _ _ _ _ _ _ |_| |_| | _| _ _| |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ _| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ | _ | |_ | _ _ _ _| _| |_ _ _ _ _|_|_ | | _| | _| | _| |_ _ | |_ | |_ _| |_ _ _ _|_ _ |_ | _| | | _| _|_ | | |_ _ | | _ _|_ _| | |_ | _ _| | | _ _ _ _ | |_ _ _ | |_ _|_ _ _ |_ | | |_|_ |_ _| | | | | _|_ _| |_ _| _| _ |_ |_| | | | |_ _| _ | | _| |_ _ | _ _|_ _| |_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _| |_ _ | | _| |_ _ | | _ _|_ _ _| _| | _| _| _ _| | _|_ _ _ _ _ |_ _ _|_ _ | _ _ _ _ _ _|_ _ _ _ |_ _ | _ _| | | | _ _| | _|_|_ | | | _ _| _ _ | | |_ |_ _ _ |_ _|_ | |_ _| _| | +| _ |_ _ | _ | |_ _ | _ _ _| _ _ _ _| | | |_ _| | |_ |_ _ | _ _ | _|_ _ _|_ _|_ _ | _ _ _| _| | _ _| |_ _| _| | |_ | | | _ _ _| _ |_ _| _ _ _ _|_ _ _ _ _ | _| _ _ _ _|_ _ _ |_ _ |_ _| _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _|_ | |_ _ _| _|_ _ _ | |_ _ _| | _ _| _ _ | | _ _|_ | |_ _| | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | |_ _ _ _|_ _| |_ |_ _ | | _ _ _| | | |_ | |_ | _ _ _|_ _| _| _| _ _ | _| _ _ _| _| _ _ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | | _| | | |_ _|_ | _ _ |_ | | |_|_ |_ _ |_ _ _ |_ |_ _ _ _|_ _ _| | _ _ _| | _ _| |_ _|_ _ _ _ _| |_ _|_ _ _ _| _|_ | | | | _ _| _ _ _|_ | | |_| |_ | | | | |_ _| _|_ | _ _ _ |_ |_| | _| |_ |_ _| | | _ _ _ _| | | | _ | | |_ |_ _ | |_ _| _| |_ _ |_ _| |_| _| _ |_ |_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | _ _ | | _ _|_ |_| _| _ _|_ | _| | _ _|_ |_ _ _ _| |_ _| | |_ _ _| | _| _ |_ |_ _ | _| _| |_ |_ | |_ |_ _ |_| | | |_|_ _ _ _ _| _ _ _| _|_|_ | | | _ _| |_ _ _| | | | | | |_ |_ | _| |_ _ _ _ _ _ _| _ _ |_ _ | _ _| |_| |_ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _|_ _ | | | _ _ _| _| | | | _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ | | | |_ _ _ | | |_ | _ _|_ | | |_ _ | | | | | | | _| _ | |_ _ _ | | | |_ | | | _| | |_ _| | |_ _ _|_ |_ _| |_ _ _ | _| |_ |_|_ _ | | _ _| |_ _| _ _| | | | _ _ | | _| | | _|_ _|_ _ _ _| |_ _ _ |_ _ _ _|_ _ _ _ _ _ |_ _|_ _ |_ _ | | |_ _ _|_| _ _ _| | | _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _|_ |_ _ |_ | | | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ |_ _| | |_ _ _| _| |_| | _ _ _ _|_ _ | |_ | | |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| |_ | |_ _|_| | | |_ _ _ _ _| |_ _| |_ _| | | | | | | | _ _ _| _ _ _|_ | |_ _| +| |_| | | |_ _ _ _| | | _ _ _| _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ | |_ _ | _ |_ _| | _ _ _| | _| | |_| _| _| | _| |_ _ _ | _ _| | | | _ _ _ _ | |_ _|_ |_ _ | _ | |_ | |_ _ | | | _| _| | _| |_ _ |_ _ |_ | |_ | | _| | _ _ _ | _| | _| |_ _ | _| | _ _| _ _| |_ _ _ _ _|_ | |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ _ | _ _ _ _|_ |_ _| | |_ _ |_ | |_ | _| |_ _ _ | |_ | | _| _ _| |_ _ _ _| _ | _ _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _ |_ _ | | _ _|_ _| |_ _ |_ _ | _| |_ |_ _ _ _ _| | _ _ _ _ _ |_ _ _| |_| |_ _ _ |_ _ | _ _|_ _|_ | | _| |_ _| _ _ _| _ |_ _ | _| _| _| | | _| _| _ _| |_ _ | _| _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _| | | _ _ _| _| _ _|_ | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | _ _|_| |_|_ |_ | _| _| |_ _ _ _ _|_ _ _|_ | |_| _ _ _ _|_ |_ _| | _ |_| _| _ _|_ | _|_ | | | _|_ |_ _| | _|_ | | |_ _ _ | |_ _ _ |_ _ _ _ _| |_ _| _|_ _ _ | | | | | | |_ _ _| |_ _ _ _ | _ _ _|_ | | |_| |_ | | _| _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ _ _ | | _| |_ _ _| |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ _| | | _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| | |_| | |_| _| |_ | |_ _ | | | | |_|_ | | |_ _ _ _|_ _ _| _|_ _ _ _ | | _|_ _ | |_ _|_ _ _ _|_ _ |_ |_ _ _ _| _ _| _ _| |_| | | _| |_ _ |_| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ |_ _ |_ _|_ _ | |_ _ _ _ | |_ | |_ _ _ _ _| | | _|_|_ | | | _ _| | | |_| | |_ _ _| |_ | |_ | |_ _| |_| _| _|_|_ | | | _ _| _ _ |_| | | |_| | _ _| | |_ _ _ _ _ | | |_ _ |_| _ _ |_ _ | |_ _|_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ _|_ _|_ _| _ _ _ _ _ _|_ _ _ |_ _ _| |_ | | _| _| _ _ _ _| |_ _ | +| |_ _ _| | |_ |_| _ |_|_ _ | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _ | | | | _ _|_ _ | | _| _| |_| | _| |_ | |_ |_ _ | | |_ _| _| |_ _|_ _ | | _| |_ _ | _| | _| | |_ _|_ |_ |_ |_ _| | | _| _| |_ _ _| | | | | _|_ | | _ _|_ _| |_ _ _|_ |_ _ _| | | |_ | | _ _| | |_ _ _| _| |_ _ _ |_|_ _ _ _ | |_|_ _ _ _| | | _ _| | |_ _ _| |_ | | _|_ _ _ _ |_ _| _|_ _ _| _ _ _|_ _|_ _ _| | | | | |_ _ _ _ |_ _| | _| _| _ _|_ |_ _ | _| | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ | | _ _ | _ _ _| |_ _ _ _ _ _ |_ |_ _ | _ _| | | | _ _ _ _|_ |_ | |_ _ _| | | | | _ | _| _| | | | | | _| _ |_ |_ | |_ _| | | _| | |_ |_ _ | _ _ _ _| |_ | | |_| _| | |_ _ _|_| _| | _ _ _| _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| |_ _ | _| |_ _ _ _ _| |_ _| _ |_ | _|_|_ | | | _ _| | _ _| | | | _ _|_ | | |_ _ | | _|_ | |_ _ _| _ _ | |_ _|_ _ _ _ _| |_ |_ _ _| |_ | | _| |_ _ _ _ _|_ | _ _|_ _| |_ _ _|_ _| _ _| |_ |_ _| _|_ _ _ | |_ | | _ | |_ |_ _ _ _| |_ | |_| _ _ |_ |_ | | |_ _ |_ _|_ _|_ | | _| |_ _ |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ _|_ _ | | | | |_ _ _ | _ _ | _| |_ _ _ _ | |_|_ _ _ _| | | _ _| _|_ _| |_ _ _ | _| _ |_ _ _ _| _ _| | _| _|_ _ |_ _ _| |_| _|_ _| _|_ _| |_ _ _ _ _|_ _ | _ _ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_|_ | |_ | | | |_ _| _| _ _|_ _ _| |_ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| _ _| | _ _|_ _|_ _ | |_|_ |_ | _ _ | _| |_ _ _ _ _| |_ _| _|_ _| |_ | | | _| _ _|_ _ _| _ _| | _|_ |_ |_ _ _ _ _| |_ _| _ | _ _| | |_ | |_ _ _ _| | | | | | _| _|_| | _ _| | | |_|_ | _ |_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | |_ |_ _ | _ _ _ |_ _ | | _ _| | _ _| _ |_ |_ _| | _| |_ _ _ _| | | +|_ | _ _|_ |_|_ |_ |_| | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | | _| | | |_ _ | _| | |_ | |_ _ _| | | | |_ | | _ _|_ _ _ _ _| _| | _| | |_ _ _|_ | | |_ _| _| _ | _ _|_ _ | | | | | _ _| | _ _| | |_|_ _ | _ | |_| _ _ _ _|_ |_ _ _| _ _| | |_ | | | | |_|_ | _|_ _| _| _| _ _| _ _ | _| |_ _ |_ _ |_ | |_ | |_ _| _| _ _|_ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _|_ _ |_ _ | _ _| | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_| | |_ _| _| |_ _ _ _|_ _ | _ _ |_ _ _ _| | | _ _| _|_ _ _| |_ | |_ _ | _|_|_ _ _| |_ | |_ _ _ |_ _|_ _|_ _| |_| _| _ _|_ |_ _| | _| _|_|_ _|_ | |_|_ | | _ _|_| |_ _ _ _| |_ |_ _|_ | _ _ _| _|_ _ | _| _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _| | | |_ _ _ _ _ _ _| |_ _| | | |_ _ _ _ _| |_ _|_ _ _|_ _ _ _| | | |_ _| | _ _| |_ _| _ _| _| | |_ | _ _ _| | | _| |_ _ | _ | | _ _|_ _ _| _| _| | | | |_ | | _ _ _|_ | _ _ _|_ _ _ _| _ _|_ _ _ |_ _ _| | |_ _ | | |_|_ | | | |_ _|_ |_| _ |_ |_|_ |_ _ _|_ _|_ _ _| | | _| | _| _| | |_ |_ _ | _ _| | | |_ _ | _|_|_ | | | _ _| _ _ _ | | | _| _ _ _|_ | |_ _| _ _| | _ _| _|_ _ _ | _| |_ _ |_ _ |_ | |_ | _|_| _ _ _| | |_ _|_ | _| _ | _| | |_|_ _ _ _| | _ _ _| _|_| _| _ |_ | |_ _ _ _ | |_ _|_ _| _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | |_ |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | | _ _|_| | _| _|_ _| | _ |_ _ _| |_ _|_ _| | _ | | | | _ _ _ _| |_ _| |_ _ _ |_| _ |_ _ _| _ _ _ | _ _ | | _|_ _ _|_| |_ _ _|_ _ _| | |_| |_ _| |_ | | _ _| |_ _ _ _| |_ _| | |_ _| _| _| | _ | | _|_|_ | | | _ _|_ |_ _| | | | | |_|_ | | _ _|_| |_ _| _ | | |_ |_ | | _| _| _ _|_ |_ | |_ _|_ | | | _ _|_ | +| _| | | _| | |_ | |_ _| _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _| | |_| _ _|_ _ _ _ | _|_ _ _|_ |_ _| _ _|_ |_ _ _ _|_ _ _ _ _ _ _ _ _ _| | | _| _ | _ _| | |_ _ |_ _ _| _| | _ _|_ _| | |_ _| | | _| | | _ _| | _ |_| | | |_ |_ _ _| |_ | |_ _ _ _ _ _| | | _| _|_ _|_ _ |_ _| _ _ _|_ _ _| |_ _ | | |_ _ _|_ | | | | _|_ | | |_ | _ _| | _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ |_ _ |_ _| _| | |_ _ _ _ | _| | | |_ | |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | |_ _ |_ |_ _ _ _ | |_ _ | | | |_| _ _| |_ | | _| _| _ _|_ _ _|_| _ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | _| |_ _ _ _ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | _|_ _ _| | |_ _ | _ _ _| | | |_ _| _ | | | _| _|_ _ _ _| _ _| _ _| | | _ _| | |_ | | |_ _ _ | _ _ _|_ _ | | _ | _ _ _ _ _ _ _ _| |_ _ _ |_ _ _ _| _ _| | _| _| _| _|_ | _| | |_ _ _| | |_ | |_| | _ _ _| |_ _| | |_ | |_ _| |_ _ | | _| | | _ _ _ _ _|_ _| _ _ |_ _ | _ _| | | _| _| | | |_| |_ _ _ _ _| _| _ _|_ | | | |_ _ _ | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _ |_|_ _ _ _|_ _ _| | _ _| |_| | |_ | _| |_| | |_ _ |_ | _| | _ _| _ _ _ |_ _ _| _| | | | _|_ | | _ _ _ _| |_ |_ _ _ _ _|_| _| | | |_ _|_ _ |_ _ _|_ _ _| |_ _ _|_ _ |_ _ _| | _ | | _| |_ _ | |_ _ |_ |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| _| _ _|_ _ | | |_ _ _| |_ | _|_ | | | | | | _|_|_ | | | _ _| _ _ | | | |_ _| |_ | _ _| |_ _ _|_ _ _ _| |_ _| | | |_ _ |_|_ | | |_ |_ _| | |_ _| _ |_ |_| _| _ _|_ | |_ _| |_ | _ | _| |_ _ | |_|_ | _| _ |_ |_ _ _| _ _|_ _ _ _ _|_ | | | |_ | | _ _| | |_ _|_ _ |_ |_ _ _| |_ | | |_ _ _ _ _| |_ _| _ _ _| | _ | | |_| |_ | _ _|_ | | |_ _ |_ _| |_ | | | _|_| | _| |_ _ _ _ _| _|_ | _ _| _| | | | | +| | |_ _|_ _ _ _| | |_ |_ _| _| | | | _| | | |_ _|_ | _ | _ | | |_ _ _ | | _ _ _| _ _ _ |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ |_ _ _| | | _|_ _ | |_ | |_ _ _ _| |_ _|_ _ _ _ _ _|_ _ _ _| | |_ _ _| |_ | |_ | | _| _| _| _| _ _|_ _ _|_ _ _ _| _ _ _| |_ |_ _ | | |_ _ |_ _ | _ | | _| |_ _ _| | _| _ _| |_|_ _ | _ | |_| _|_ | _| | | _|_ _ | | _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _ _| | _ _ | |_ | _ | | | | _| |_ _|_ _ _|_ _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _|_ | | | |_ _ | _| |_ _ |_ _|_ |_ |_ | | | | | | | _ _| |_ _ | _ _| |_ | |_ _|_ _ | | | |_ _| _ | | | |_ _| _ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ | _ _|_ _ _| | |_ | | _|_| | | | | | | | |_ _|_ |_|_ _ _ | | | |_ _ _ | |_ _ |_ _| _| _|_ |_| _ _|_| _ _ _ |_ _|_ |_ _| |_ | _ |_| _ |_ |_ _|_ _ | | |_ _ | |_ _| _| |_ _| _| | | _| | | _|_ _|_| _ _ _ _|_ _ _| |_| _|_ _ _ _ _| | | | | | |_ _ | | | _ _ _| _| | |_| |_ | | |_ _ _| _|_ _|_ | |_ _ | | _| |_ _ _ _ _| |_| |_ _| |_ _| |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ _ _| _ _ |_ _ | _ _| | _| |_ |_ _ _|_ _ _| |_ _ | | _|_ |_| | |_ _ | _ _| _ _ | |_|_ _ | _ | |_| _ _ _ _|_ |_ _ | _ _ _| _| |_| | _ _ |_ _ | | _ _ _ _|_ |_ _ _ _ _ _| _| _| | _| |_ _ _| | | |_ _ _ _| _ _|_ _| _| | _|_|_ | | | _ _| | _ _ _| | | |_| |_ | | | _ _ | |_ _| _| _ _|_ _ _| _ _ _| | | _| |_ _ _ _ _| |_ _| | _ _ | | | | | _ _ _ | | _ _ _ _ _| _ _ |_ _ | _ _| | _| _| |_ _ | _|_ | | _ _|_ |_| _| _ _|_ | |_ _ _ |_ _| | _ _| | | |_| _| | _ _ _| |_ _ _ _|_| _| _ _|_ | _ _ _ _ | | | _ _| _| | _| |_ _| | _|_|_ _ _ | _ _|_ _ _ _ | | |_ _ | | _ _ _ _| | | _|_ _| |_ _ _ |_ _| | _ _| |_ _| _ _| _ _ | | | |_ | | |_ _ _| | _ _ | |_ | | | _|_ | | | +|_ _| _ _ | |_ _| |_ | | _|_ |_ _ _| |_ _|_ _ _ _ _|_ _| | | |_|_ _|_ _ |_ _| | | _ _ _| _ _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ | | | |_ _ _ _| |_ _ _| | |_ _ _ _ _ | _ | |_ | | |_ _ _ _| _ _|_ _|_ _ _|_ _ _| | _| _ _ _ | _| _ |_ |_ | _ _|_ _ _| _| | | _|_| | |_ _ _ _|_| _| |_ | | _ |_| | | |_ | _| |_ |_|_ _ _ | |_ _| | |_ _ | _|_|_ | | | _ _| |_ _ | | | |_ _ | | _ _| | |_ _| _| | | | |_ _| |_ _ _ | _ | _| _ _| | | _| | | | _ _| _| | | | |_ | | _ _ _|_ | |_ _ _ _|_ _ _| | | _ | | _ | | |_ | |_ _|_ | _| _|_ _ _| _ _| _ _|_ | _ |_ _| | | |_ _ |_ _| | | | |_ | |_| _| _ _| _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _| |_ | |_| | _ _ | | _|_ _ _|_ _ _ _ |_ _|_ _ |_ _|_ _ _ _ _ _ _ _| |_ |_ _|_ _ |_ _| |_ _ _| _|_ _| |_ | | _ _ _|_ |_ | | | | | | | _| _| _ _|_ |_ _ _ _| _|_ _|_ _ |_|_ _ _| _|_ _ |_ | | |_ _ _|_ | | _ _| |_ _ | _| _ _|_| _|_ _ |_ _| |_ _ _| |_ _| | | | |_ _ | | |_ _|_ | | _| |_ _| _ _| | _| | |_ _ | | | |_ _ _ | _| _|_ | | _ _| | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| | | _ _ _| | | |_| |_ | | |_ |_| _ | _ | |_ _ _ _|_ | | | _| |_ | | |_ _| _| | | | _ |_| | | |_ |_ _ _| |_ | _| | |_ | _ |_ | _| _ |_ | | |_ _ _| |_ |_ _ | _ |_ | |_ _ | _ _ _| | | |_ _ _| | |_ | |_ _ _ _ _| |_ _| _ | | | | | _ _| | | |_|_ _ _ _| |_ | _ _| | _ _ _ _|_ | _ _| |_ _ _ _ _ _ |_ _ _ _ _ _ _| |_ _|_| |_ | |_| |_ | | _ _ _|_ | | |_| |_ | | | | _|_ _|_| | | | |_ | _| _| |_ _ _ _ _|_ |_ _ | | |_| |_ | | |_ | | | | | | _ | _ _ | _| |_ _ _ _ _|_| _ |_ _| |_ _| |_ | _| | |_ |_ _ | |_ _ _ | | |_ _ _ _ | _| | |_ | | | |_ _ |_| _ _| | _| _ |_ |_ | |_ _ |_ _ _ _| _ _| _ _| | _| _|_ | |_ _|_ | | _ _| | | _ _|_ | |_ |_ _ |_|_ | +| _ _| | _| |_ _ | | _| |_|_ _ |_ _| | | _ _ | | _ _ _| |_|_ _ _ | |_ _ | |_|_ _ | | _ _| | |_| | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ |_ _ _| |_ |_| _ |_ |_ | _| |_ _ _ _ _| _|_ |_ _ _|_ _|_|_ _|_ _ _ _ | | _ _ _ _ | |_ _| _| | _| _|_ |_ _| _| _ _|_ | |_ _| | | _ |_| _| |_ _ _ _| | | | _ |_ _ | | | |_ | | _| _| _|_| | | |_ _ | | | |_| _|_ _ _ |_ _ _ _ _| |_ _|_ _ | | _ _| | | _| | |_ | _ _|_ _| _| _| | _| | | _ | |_ _| _ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ | _|_ _| _ _| | |_ _ | _ _ _ _| | |_ | |_| |_ _| | | |_ | _ _| |_ | _ _ |_ _ _ _| | |_ | | _|_|_ | | | _ _| |_ _| _|_ |_ |_ | | | _| | | |_ _|_ | _|_ _ _ | | | |_ _ |_ | | | _|_ |_| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | | | _ |_ _ | | | _ _ _| _ _ _|_ _ _|_ _ _ _ | |_ _|_ |_ _ _|_ _|_|_ _| | _| |_ _ _ _ _| | _ _| _| _ |_ _ |_ | _| | | | _|_ _| _ _ |_ _| | _ _| | | _| |_ | | _ _ _| _ |_ _ _ _ |_| _ |_ | | _| |_ _ _ _| | | |_ _ | | |_ |_ _ | _ _ | |_ | |_| _ _| _|_ |_ _ _|_ _|_ |_ _ _| | |_ | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ _ _|_| |_ _ | _| |_ _|_ | | _| |_|_ |_ |_ | | | | |_ _ _ _ _ _| |_ _ _ _| _ _|_ _ _ _ _ _|_| | |_ | | _| _| _| _| _ _|_ _ _|_ |_ _ _| | _|_ _|_| _| _ _ _| |_| _| _ _|_ _ _| _|_ |_ |_ _ _|_ _ | |_| _ _ | | |_ _ |_ _ | |_ _ |_ _ _ |_ | _ _ _ _|_ _| |_ _|_| |_ _ | | |_ _ _ _ | | _|_ | _|_ _ | _ _| |_ |_ _ | _ _ |_ |_ _ _| | _| _ |_ |_| | | _| _| |_ _ | _ _|_ _|_ | | _| |_ _| |_ _ |_ _ _ _| | |_|_ _|_ | |_ |_ | | _ |_| _|_ | | _| |_ _ | |_ _|_ |_ | |_ _ | | |_ _ _ _ _ _ |_ _ _ _ _| _ _ | |_ _ _|_ | _| |_ _ _|_ _|_ _ | |_ _ |_|_ _ |_ |_ _ _| |_ |_ | | | |_| _| _ _|_ | |_ _ _ | | | | |_ _ |_ _| _| | | | _| _| | | |_ _|_ _ | | |_ _ _|_ _ |_| +| | | |_ _ _|_ | |_ _ |_ _ _| _ | | |_ _| | |_ _ _|_ _ |_ _ | |_ _| _ _| | _ _| | | | _| _|_ _ | | |_ _ | _|_|_ | | | _ _|_ _ _ _ | | |_ |_ _ | _| _| _| _ _|_ | | |_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | | _| |_ _ | |_ _ _ _| |_ | _| |_ _ _ _ _| | _ _| | |_ |_| _ _ _| _ _ |_ _| _| | | | |_ |_ _ _ _|_ _|_ _ |_ _ |_|_ _ _| |_| |_ |_ _ _|_ | | _| _ _ _ | _ _ _| | |_ _ _| |_| | _|_ | | | | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ _ | | _ _| |_ _ | | | | | |_ _| | _|_ _ | _ _|_| _ _|_ _| |_ |_ _ _ | | |_| _ _| |_ | | |_|_ _ _ _ _| |_ _| _ _ _| _| _ _|_ | | | |_ _ _| |_ _|_ _ _ _ _| | _ _|_ |_ _|_ _ |_ _| |_ |_ _ |_|_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| |_| | _ _ _| | | |_ _ | _|_ |_ _ | |_ _ _|_| _ |_ | _ _ _ _ | | |_ _ _ | _|_ _| _ _ _ _ _| _ _| | |_ _| _|_ | | | _ _ _|_ | | |_| |_ | | | |_ _ _| | |_ _ | _|_ _| _ _ |_| _| _ _|_ | | | | _ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ _ | | _ _ _| _| | | |_ _ _| _ | | _| |_| _| | | |_ _|_ |_ _| |_ _ | | |_ _ _ | | _| | |_ _| | | |_ |_ _ | _ _ | |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _|_ _ _|_ _| | | _ _ _ _ _ _ _ _ _|_| |_ _ | | _| | _ _| _ _| | _ _ | | _ |_ |_| _ _ _ _|_ _ |_ _ _| |_ | |_ _ |_|_ | | | | _| _| |_ _| _ _ | _| _ |_ |_ _| | _ _| _| | |_ _| |_ _ |_ _| | | |_ | | _ _|_| |_ _ |_ | _ _| _| _| _ _|_ | | | | | |_ _| | | _ _ | | |_ |_ _ | _ _| |_ _ _ _ _ _| _ _| | |_ | |_ | _| | | _|_ |_ | | |_ |_ _ | | | _| | | | _| _| |_ | |_ | |_ _ _| _ _ _ |_| |_ _| | | _| _|_| |_ _ _ _|_ | |_ _ |_ | | _ _ _| _ _|_ _ _|_| | _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_ _ _ _| _| _|_ _| _| | _| |_ _ | | |_| |_| _ _ _ _ |_ | +| |_ |_ _ _ | | | |_ _| | | |_ _| _ _| | |_ _ _ _ | _| | _| |_ _ | | _ _|_|_ | _|_ _|_ |_ _ |_ _| | | | _|_ _ _ _ _| |_ _| | _ _| | | |_ | _ _| | | _| _| |_ _ _ _ _|_|_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | | _ |_| _ _| | _| |_ _ _ | | | | | | |_ | | _ _ _| _| | |_| _| | |_ _ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ |_ _| | _| |_ _| | | |_ _ | | | |_ | _ _| _ |_ |_ _ _ _ | |_ |_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| |_ _| | | | _| | |_ |_ |_ _|_ _ _ _ _|_ _ _ _|_ | |_| _ _ _ _|_ |_ |_ _ _| _|_ | |_ | | _| |_ _ _ |_ _ _ _| | _ _ _| | |_ _ _ _ _| | _|_ | | _ _ | _ _ _| | _ _ _ _| | |_ _ |_ | | |_ _ |_ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _| _| | | _ _| |_ _ | _|_ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| | |_ | _ _| | |_ | | | _ _ _ _ | _ _|_ | _ _ |_| | |_ _ | _|_ _|_ | | _| |_ _ _ _ _ |_ _| | | _ _ _| | | _| |_ _ _ _ _| |_ _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ |_ _ _| _| |_ _|_ |_ _ _ | | | | |_ |_ |_ _ _| |_ _|_ _ _ _ _| _ |_ _ _ _|_ _|_ _ |_ _ _|_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| _ _ | |_ _ _| |_ _ _| _ _ |_ _ | _ _| | _ _| |_ | |_ _ |_ | _| | |_ _| | | |_ _ _ _|_| _ _ _ |_ _| _ |_ |_ _ _| | _ _| | | |_ _|_ _ | | _ _| | _ _| _| _ _|_ | _| | | |_ _ _| | |_ | | |_ _ |_ | | | _|_ | | |_ _ |_ |_| | _ _| _| |_ _ _ _ _| |_ _| | | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ | _| | _| _| _|_ | |_ _| | |_| _ _| | | |_|_ | | _ _|_ _| |_ |_ | | | _| |_ _ |_ _ _|_| | _ _ _ _ _ |_ _ _|_ _ _ _|_ _| _| | | |_ _ | |_ _ _ _ _| |_ | |_ _| _| | _ _ _ | _ _ _ _ | | |_ _ _ | _|_ |_ _ _ _ | | _ _ |_ _ | | | _| _ _ _|_ | | | | _| |_ |_ |_ | | | _ | | | +| |_ _| _ |_ | | |_ |_| _| |_ _ _ _|_ _ _|_ _ _ _ _ _|_ _ _ _ _|_ _ | |_ | _ _|_ _ _ | |_ |_ _ | | |_ | | _ _ _ _ _ |_ _| | _ _|_ _| |_ | | _ _| |_ | | _ _ _ _ _ _ _ _| | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ | | | |_ |_ | | | |_ |_ | | |_ | |_|_ _ _|_| |_ _ |_ _|_ _ | _ |_ _|_ | | | |_ _| |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | _ _| |_ |_ | _| | | _ _|_| |_ | | _| _| _ _|_ | | | |_ | | _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _|_ |_ _ | | | | | | |_ |_ | | _ | _ _ _ _ | |_ _|_ _ _ _ _| |_ |_ _ |_ | | | _| |_ _|_ | | |_ _ _ | _ _|_ _ | |_ _ _| | |_ _ _ _|_|_ _| | |_ _ _ _| | | | _| | | _ _| | _| _|_ _ _| | _ _| | | | | | _|_|_ | | | _ _| | | _| | | |_|_ _ _| | | |_ | _ _ _|_ _| |_ |_ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ |_| _| | _ _|_ | |_|_ |_ _ | | |_ | _ _|_ _|_ | |_ _| | |_| _ | | |_ |_ _ | _ _ _ | | _|_ _ _ _ _ _| |_ _ _ _ | _ _ _|_ _ _ _|_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ _| _ _ _| | |_ |_ _ _| _ |_ _| _|_ |_ | | _| | _ _ | | _ |_ _| | |_ |_ _ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _| |_ _ | _| _ _ _| | | |_| |_ | |_ _ _ _| _| | | _| |_ |_ _|_ | _| |_ _ | _ _ _| _|_ | _| _ _|_ | | _ _| | | _|_ | _ _ _| | |_ |_ | _| |_ _ _ _ _| | _|_ _|_ _ _|_ | |_ _| | | _|_ | |_| |_| | _ _| |_ _| _ _| |_ _ _|_ _ | |_ _ |_ _ _| | _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _|_ _ | |_ _| _| _ _| _ _ _| | _|_ | _|_ | _ _|_ | | _ _|_ _ _| |_| _ _| |_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_| |_ _| _ _|_ _ |_ |_| | | | | |_ _| _ | |_ _ | | _| |_ | |_ _ _| | | _ _| _ _ |_ _|_| _ _ _| | |_ |_ _|_ _ | | | _| | _| _| | | | _|_|_ |_ | | +| |_ _ |_ _| |_ _| |_ |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_ _ _ _ _ |_ _|_ _ | |_ _|_ |_ _|_ _ | | _ _| | _ _| _| _ |_ |_ |_ | _| |_ _ _| _ _ |_ _ | _ _| | | | |_ | _|_|_ | | | _ _|_ _ |_ | | | | _ _ | | | | | _ _|_ _ _|_| | _| _| | | _|_ _ _ _ | _| | _| _ _| | | _ _ | | |_| |_ |_ _|_ _| | |_ _ _| | | _ | | _ _|_ _ _| | | | | | _| | _ _|_ | |_ | | |_| _| |_ _ _ _ _| | |_ _| _|_ _| _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | _ _| _ _| | | |_| | |_ _|_ _ _| |_ _| | |_ _ | | _| |_ _ | _ | | _ _|_ _ _| |_|_ |_| | | |_ |_ | _ _|_ _| |_ _ _| | _ _| | |_ | | _ _|_ _| _ _ _ _| |_|_ _ _ _ | |_ _| |_|_ |_| | | _ |_ _ _| _ _ |_|_ | _ _| | | | _|_ _ _ _ _| |_ _|_ _| |_ _| | | | _ | |_ | |_ | _ _ _ _|_ |_ _ _|_ |_| | | _|_|_ | | | _ _| _ _ _| _| | |_ | | |_ _ | | _| | |_ _| | | _ _ _ _| |_ _ |_ _| |_ | | |_|_ | | _ _|_| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ _ _ | _| _|_ _ _ _| _ _| _ _| |_ _ |_ _ | | | | | _ _ _| |_ | _| | _ _| | |_ |_ _| | |_ _ _|_ _ _ |_ _| |_ | | _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | _ _|_ _ _|_ | _|_|_ | | | _ _| _ _ | | | | _ _ _ _| _| | |_ _ | _|_|_ _|_ | | _| |_ _ _|_ | |_ _|_ _ _ _|_ _ |_ |_ | | |_ _ |_ |_ |_ _ |_ _ _ _ _|_| | _| |_|_ | _| _ | | |_| | _ _| | |_ _| _ _ |_ _ _ _ |_ _ _ _ _ _ _ _ _|_ _| _ _|_ | | _|_ _ _ _| _ _| _ _ _ | _ _|_ | |_ _ | _ _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ | _|_ _ _ _ | | _ _| | | | | | |_ | |_ _| | _ _| |_ _ _| _ _ |_ _ | _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| _ _|_ | | _ _|_|_ _|_ _ _ _ |_ | |_ _ _| | |_ _| _| | _ _| |_ _ _ _| | |_ _ _| | | _ _| |_| _| | | |_| |_ _ _|_ |_ _ | |_| |_| | _| _| | +| |_ |_ _ | _ |_ |_ | | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_ _ _ _| |_ | _ |_ |_ _ _| | | | | |_ | |_ _| | _| _| _ _|_ |_ | |_ _ | _ _ _| | | |_| |_ | | |_ | | |_|_ _ _ _ _| |_ _| _ _ _ _|_ | | | | |_ _| |_ _|_| |_ | _ _ | _| | _|_ _| |_ _| _ _ _ _| _ _ | | | | _|_|_ |_ _| | | | _ _|_ _ _ _| _|_ _| | | |_ | |_| | | _ | _ _ _|_| | |_| | _| | | _ _| | _| | |_ | |_ | _ _ _ _ | | |_ | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | |_ _ _ _|_|_ | |_ _ _ _ | _| _ _|_ _| | |_ _ _|_ | |_ | |_| | _ _| _ |_ _ | | _|_|_ |_ | | | _ _|_ |_ _| _| | | _|_ _|_ _| | _ _ _ _ _ |_ _ _|_ _ _ _ _ _| |_ |_ _ |_ _ _| |_ | | _ _ _|_ | | |_| |_ | | | |_| _ _ _ _ | _ _ _| |_ _ _|_| |_| | | |_ _| | _| |_ |_ _ _| |_ |_ _| |_ | |_ |_ _ _ _ _| |_ _| _ _| _ _ _| | | | | |_| |_ | |_ | _|_ _ _ | |_| _ _ _ _|_ |_ _ | |_ _|_ _ | |_ | _ _|_ | | |_ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ | |_ _ _ | | | |_ _ _ | | _| | | | | | |_ _ | | _|_ _| |_ _| _ _|_ | |_ _| |_ _ _ _ | |_ _ _|_ |_ _| | _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | _| | | _| |_ _ _ _ _| |_ _|_ | | _ _|_ | | | |_| | | | |_|_ _| | | _ _| | |_ |_ _ | _ _ _ | _ _ _ _ | |_|_ |_ _ _| | |_ _ _ _ |_| _|_| |_ _ _ _ _ _ | | | |_ _ _ _ _| | _ _| | _| _| _ | |_ |_| | _|_ |_ _ |_ _ _ _ _ _| | | | _|_ _ _ _ _|_ _ | _ _| | |_ _| _ |_|_ _| _| | | |_| | | | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _| |_ _ _| _ _ |_ _| | _ _| | | | _| |_ | | _ _ |_ _ _ _| _ _ _|_ | | |_| |_ | | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | | |_ _| | | | |_| _ _ _ _ | |_ _| _|_ | _ |_ _ _| _| _| | | |_ _ | _ |_|_ _|_ _ _|_ | | | | _| |_| _|_|_ _ _ | | _|_ _ |_ _ _ _ _|_ _|_ _| _| +|_ | _ _| | | _ _|_ | |_ | |_ _ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _|_ |_ _ |_ _ _| _ _ _|_| |_ _| |_ | | | _ _ _| | _| |_ _ _ _ _|_ _| | | _|_ _ | | | |_ _|_ | | _| |_ _ _ |_ | _ _ |_ _ _| _ | _ _ _| |_| |_ _| _| _ |_ |_| |_ _ _ _| _ _| _ | |_ _ _ _ _| |_| |_ _|_ _|_ _ _ |_ | _|_|_ | _ _ |_ _ _| |_ | _| |_| | _|_ _ _| _ _|_ _| _ _ | | | _|_ | | |_ _ _ _|_ _ _ | |_ | _ _ _ _ _| _|_| _|_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ | | _ _ _ | _ _|_ _ _ _|_ _ _| _| | _ _ _| | _|_ _|_ |_ | | _| | | _ _ _ _ _ _| | | |_ _| |_ _ | | _| | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _| | | | _ _ _ | | |_ _ | _ _|_ _|_ | | _| |_|_ _| _ _ |_ _ _| _ | | _| _ |_ |_ |_ _ _ _|_ |_ |_| _| _ _|_ _ _| _ _|_ _ _| | | | | | | | | |_ _ | | |_ _ _| | _ _ _ _| |_ | | | _ | |_ |_ _ _| |_ | _|_ _ | |_|_ |_ _| | _ _| |_ _| _ _|_ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _ _ _ _| |_ |_ _| |_ _|_ _ |_ _| |_ _| | _|_|_ _ _| _ | _|_|_ | _ _ _ _|_ _ _ _ | |_ _ | | | _| |_ _ | _ _| | _|_ | | | _| | | |_ _|_ |_ |_ _ _ | | |_ _| _| _|_| |_ _|_| _| _| _ _ |_ _| | _ _ _| |_| | |_ _| |_| | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ | | _| |_ _ | | | _ _ _| _ _ |_ _ | _ _| | _ _ | _ _|_| |_ _ _ _ | _| | _ _|_ _ _| | | |_ _| _| |_ _ _ _ | |_ _ | _ _| _ _| | |_ _|_ _| _ _ _ _ | _ _| | _|_ _ |_ _| _ _ _| _| | |_ _|_ | | | | | _| _| | | |_ _|_ | | _ _ | | | |_ _ _ |_| | _ _ _| | | |_| |_ | | | |_ | | _| |_| |_ _ _ |_ _ | _ |_ _|_ | | _| |_ _ _ | | | _|_|_ | | | _ _|_ | _| | | | _|_ _|_ _ |_ _| | |_ |_ _ | | _| |_ _ | |_ _ | | _| _ _ _| _| _| | | _ _|_ _| _| _ _| |_| | _| | | | _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ | +| | | | _ _| |_ _ _ _ _|_ |_ |_ |_ _| _| | _|_|_ | | | _ _|_ _ _ | | | | |_ _ _| |_ | _| _ |_ _ _ | _| |_ _ _ _| | | _ _| |_ _ _ _ | _ _|_ _ _ _ _| | | |_ _| | |_ |_ _ | _ _| _|_ _ |_ _ _| _| | |_ _| _ |_ |_ _ | | _| _ _|_ | | | | |_ _| | |_|_ _ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _| _ _| | | |_ _ _ | | _|_|_ |_ _ _ _| | _ _| | _ |_ _ _ _| | _ _ _| |_ _ _ _ | |_| |_| _|_| _ | |_ _ _ _| _ |_ | _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | | _ _|_ _ _ | | _ _| | |_ _ _| |_ _ _ _|_ _ _| _ _ |_ _ | _ _| | | | | | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_| | |_ | | | |_ _| | _ _ _ | | |_ |_ _ | _|_ |_ _ _ |_ _| | _| _| _ _|_ | | | | _ | | _ _| | | | _| _ _ _ _| |_ _| _|_| | |_ | | |_ _| | |_ | _ _| | _ _ |_ |_| | | | _| | _| _| _ _|_ _ _| | |_ _|_ _ | | |_ _ _ _| _ _| _ _| | | | _|_ | _|_|_ | | | _ _| | _ | |_ _ _ _ |_ |_ _ _| | | _ _ | |_ _ | |_ _ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_|_ _ | | | | | |_ _ _|_ | | |_ _ | |_ | | _|_ _ _| |_ _|_ _ _ _ _|_ _| | | |_ _|_ _ |_ _|_ | _| _ _ _| | | |_| _| _| |_ | |_| _ |_ |_| _ _ _|_ | | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ _ _| _| | | _| _ _ _| | | |_| |_ | | | | |_ _ | _| | | | | | |_ | _| _ _ _ _| _| |_| _ _ _ _ _ _| | _ _| | | | _ _ _ _ _| _ _ |_|_ | _ _| |_ _ | |_ _ | | _ _ _| _ _|_ | | |_| | |_ _|_ _ _| |_ _|_ _ _ _ _| _|_ _ |_ _|_ _|_ _ |_ _ _ |_ _ | _|_|_ _|_ | | _| |_ _ |_| | _ _| |_ _ _| | _| _| | |_ _| | | |_ |_ _ | _ _| |_|_ _ _ _ _| |_ _| | |_ _ _| | | | _ _ _ _ _| _ | _| _ _| | |_ _ _| _| | | |_ _| | |_ _ | |_ |_ | |_|_ | _ _ | _| | _| _ _|_ _| | |_ _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | +| |_ |_ | |_ _ _ _ _ _ _| | _ _ | |_ _ | |_ _ _ _ _| |_ _|_ _ _ |_| | | | |_| _| _ _|_ _ _| | _| | _ _ _|_ _ _ |_ _| | _|_|_ _ _ |_ | _ _| _| |_| | _ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | |_ _ |_ _ |_ _| _| _ _|_ | _| _| |_ _ _ _ _| | |_ _| |_ _ _| _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _|_ _|_ |_ _ _| | _ _ _| _ _ |_|_ | _ _| | | | |_ _ _| _ |_ |_ | | | |_ _ _| _| _ _| |_ _|_ _ | | | |_ _| _ |_ _ | | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| _ _ |_ _| | _ _| |_ _ | |_ _ _ _ | _ _ _| _| | |_| |_ | | |_ _| |_| |_ |_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | |_ |_| | _|_ | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ | | | _ _| | _| |_ _ _ _ _|_ _|_ _|_ _|_ _| |_ | _| |_ _|_ _| _ _ _| | _ _ _| | _ _| |_ _| | | | | _|_ _ _|_ |_| _ _|_ _ _ _|_ _|_ _ _|_ _ _| | | | _ _|_| | |_ _ _|_ _| | | _ _ | | | |_ _ | |_| | | | _ |_ _ _ _ _| |_ _| _| | |_ _| _| | _| _ _| _ _ | | |_| |_ _ | | _ _| | | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| | |_ _ | _ _| | _ |_ _ _ | |_ | _ | | _ _ | _ _ | | _| |_|_ _ _ _ |_ _ | _| |_ _ | | |_ |_ | |_ _ _| |_| _| _ _|_ | _| _ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _ _ _ _ _ _| | |_ _ | | |_ _|_ | | _| |_ _| |_ _ _| | | |_ _|_ | | |_ | | |_ _ _| | _ _ _| _|_ _ _ | _ |_ _| |_| | | |_| |_ _ | _ _ _| | | |_| |_ | | _|_ _ _ | |_|_ _ | |_ _ _ _| | |_ | |_ _ _ _ _ | | _ _ | | _| | |_ _ | |_ _ | _| _| | | _ _| | |_ |_ _ | _ _|_ _ _|_| _ |_ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _ |_ _| | |_| _ _ _| |_ | _ | |_ _| |_ _ _| | | _| | _ _ | | _|_ _ |_ _ _| | | | | |_ | |_ |_ _|_ _ | |_ _| _ _ |_|_ | _ _| | _ |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | +| | | | | _ _ _| _ _ _ |_ _| | _| |_| | | _ | _ _ _| | _ _|_| |_ _ _| | |_ | | |_ _ _| _ _ |_ _ | _ _| | | _ _ | _| _| |_ | | | _ _|_ _ _ _|_ _ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| | | _| | _| |_ _ _ _ _|_ | |_ _ | _ _ _ _ _|_ |_ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| | |_ _ |_ _ _| _ _ _| | | |_| |_ | | | |_| |_ _ |_| _| _ _|_ |_ _| | | | _ _ _| _|_ | _ _ |_ _| | | |_ _ |_ _| | | _| |_ _ _ _ _| |_ _| _| | |_| | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _| _| | |_| |_ | | _| |_ _| |_ _ | _ |_ _|_ | | _| |_ _ |_ |_ |_ |_| | _|_ _ | _|_|_ | | | _ _| _ _ _| | | | | _ _| _| |_ _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | |_ _| _| | |_ _ _ _ | _ _ _ _ | |_ _ _|_ |_ _ |_ _ | _ _|_ |_ _ _ _| | _|_ _ _ _| | | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| _|_ | | | | _|_ _ |_ _ | _|_|_ | |_ |_ _|_ _ |_ _ | | |_ _| |_ |_ _ | _ _ _ _ _ _|_ |_ _ _| |_ |_ _ | |_ _ _ _|_ _ | _| |_ | _ _| _|_ | | |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ | _|_ | _|_ _ | |_ |_ _ | | |_ | | | | |_ _| _| | | _| |_| | |_ _ _ | | _ _| | |_| _ _| | |_| | | | _| | |_ _ | _| |_ _ _ _ _|_| _| | | |_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| |_ _ _ _| |_| |_ | _| | | |_| | | |_ |_ _ | _ _ _| | |_ |_ _ _| |_ | | | | | |_ _ | | |_ | |_| |_ _ _ _ |_| _| | |_ | |_ _ _|_ _ | _| |_ _|_ | | _| |_ _ _| _|_ _ _| | _ _| _| _|_ _|_ |_ | | _|_ _| _| |_|_ _ _ _|_ |_ | |_| | |_ _ _| | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ _ _| |_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | |_ _ | | _ _| | _| _ |_ |_| |_ _ _|_ _ _| | _ | | | _|_ _ _| _| | | | |_ _ | | _|_|_ _ _| _|_ |_ _|_ | _ _ _|_ _ _ _ _ | | |_| |_ | |_ |_ | _ _| | _|_|_ | | | _ _| _ _ _ _|_ _| +| | |_ | |_| _ _ _|_ _| | _ _| | | _| _ _|_ _|_ _| _| | | |_ _| _ |_ |_ _| _| |_ _ _|_|_ | _ _ _| | | |_| |_ | | | | _ _|_| _| _| _| |_ _ _| _ _ | |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| |_ | _| |_ | _ _ _ _ _|_ | | |_ _| | | | _ _| _| | |_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ | _| |_ _ _| _ _ |_ _ |_ | |_ _|_ | | _| |_|_ | | _ _| _| |_ _ _ _ _| _ _|_|_ _ _ _ _| | _ _| | _| | _|_|_ | | | _ _| |_ _ _ | | _ |_|_ _ _| |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | |_ _ | | |_ _|_ | | _| |_ _ _ |_| | _| | _| | | _| | | |_ |_ _ | _ _ |_ |_ _ | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | |_ _ _| _| |_| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ | _ _ _|_ | _ _| _|_| _ | | _| |_ _ | | | |_|_ | | |_ | _| | _ | | | _ _ _| _| |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_|_ _ _| |_ _ |_ _ _ _ |_ _ _ _ _| | | _ |_ _ |_ |_ _ | |_ | |_ _ _ | _| _| _ |_ |_ _| | | _ _ | | | | _| _|_ | _|_ |_ _| |_ _ _| | _|_|_ | | | _ _| | | _| | | | _|_ | _|_ _ _ _| |_ _ _| | | | _|_| | | | | _ _|_ _ _ _ _|_ _ _|_ _|_ | _ _|_|_ | | _|_ _ _ _| | | |_ _|_ _ |_| |_ | _ _ _ | | _ _| |_ | _| | | |_ _|_ | |_ _ _ | | | |_ _ | | | _ _|_ _ _| |_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _|_| _| _ |_ |_ _| |_ _|_ _|_ _| | |_ _ | |_ _ _| _ _ |_| _| _|_ | |_ _ _ _ _| | | _| | | |_ |_ _ | _ _ | | | _|_ _ _ _ |_ _ _ _ _ _ | |_ _|_ _ _ _ _ _ _ _ _ _ | |_ _ |_ _ _|_ | _ _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ | _|_ _|_ | _| _| _ _|_ | | |_ _ _| |_ | _| | |_| | | | |_ _| |_ _ | |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_ _ | | |_ | |_|_ _ _ _ _| |_ _| | _| _ _ | | +| |_| _|_ |_ _ | _ | _| |_ | | | |_ _| _ _ _ | |_ | | |_| _ _| _| _ _|_ | _| | | _ _ _ _|_ _ | _|_|_ _|_ | | _| |_ _| | _ _ _| |_ _ |_ | _ _| | _| |_ _ | _ _ | _|_ _ |_ _ _ _| _ _| | | |_ |_ | _|_ |_ | | | | _ _| _ | |_|_ _ _ _| |_ _| | | _| | |_ | _ _| _| | _|_|_ | | | _ _| |_ _ | | |_| | |_ _ _ |_ _ _| _ _| | _|_| | | |_ |_ _ | _|_ | |_ | _ _ _ _| _ _ |_ _ | _ _| | | | _|_ | |_ _ _ _ _| |_ _|_ _ _ | _|_| | |_|_ |_ | _ _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _| | | |_ _ | | |_ |_ _ | _ _ | |_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _| | |_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_ _ _ _|_ | | _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _ | |_ _ _| _| |_ | | |_ _| | |_ _ _| | | |_ _| |_ _ | | | | | | _ _| |_ _ _| |_| _ _ | |_ _ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_ _ |_ |_ _ | _ _ |_ _| _ _| |_| |_| | _ _ _| |_ _ _| |_|_ _| |_| _| |_ _| _| _| _ _|_ | | _|_ _ _ _| | | | | | | _| | |_ _ _ _| |_ |_ | _ _| |_ _ _ _ _| |_ _| _| |_ _| | | |_ _ _ |_ _ |_| _ |_ |_| _ _| | |_ | _| | |_ _|_| | _ _ _ _ | |_ _ _ _| _|_ |_ _ _|_| |_ _ _ | |_ _ _ _| _ |_ |_ |_ _|_ | _ _| |_ | _ _| |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_|_ |_ _ _ _| _ |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| _| _ _|_ | _| _ _ _ |_| _|_ _ _ _| | _ _ _ _ _| | _ _|_ _ _ _ _ _ | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _| |_ _ | |_ _ | |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _ _| | |_|_ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ | | | | _ _| | _| |_ _ _ _ _|_ _| _ _ _ _|_ |_|_ _ _|_ | |_ _| |_| |_ |_ _ _ | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | |_ _ _ |_ _ | _ _ _ _ _ | |_ | _ _|_ | +|_ _ _ | |_ _ _ _ _|_ _|_ | | | |_|_ _ _| _| |_ _ |_|_ | | | _| |_ _ _ _ _| | _|_ _| _ _ _ _| | | _ _ | | |_ |_ _ | _ _ _ |_| _ | | | | |_ _ _| | | |_ _|_ | _ _ | _ | | |_|_ _ _ | | _|_| _ _| _| | | | | |_ _| |_ _ _ | _ _|_ _ _ _| | |_ _ | | |_ | |_ | |_ _ _ _ _| |_ _| _ _|_ | | _| | |_ _ _| _ | _ _ _ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ | |_ | | _ _ _|_ | | |_| |_ | |_ |_ _ |_ _| _ _ |_ _ _ _ _ |_| | _|_ _ |_ | | | _| _| _ _|_ | | _ _ | | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_| | _| | _| _ _| |_|_ _ _| _ | _| _ |_ |_ _ _ _ _|_| | _| _| | | |_ _|_ | | _ _ | | | |_ _ | | | _ _ _| _| _ |_ _ _| | _ _| | _ _ _| | |_ | |_ _ | | | | | |_ | _| _ |_ |_ _ |_ _ _ _ | _| | | | _ | _|_|_ | | | _ _| _ _ _ _ | | |_ _|_ | _ _ | | | | | | |_ _ _| | _| _| | | _ _| _ _ _|_| |_ _ _| _| | |_ _ _ _| _| |_ _ _ _ _| |_ _ _ | |_ _|_ _ _| |_ | | | |_ _ |_ _ _|_ _ _ |_ _ | _ _ | _| |_ _ _ _|_| |_| _ | _| _| _| _ _|_ | | _ _| | | | _|_ _ _ _ _|_ _ | | _| |_ _ | _ |_ | | | _|_ _ | |_ _|_ _ | |_ |_ _| _| _ _ _|_ _ _ _| | | | _ _ _ | | | _ _ | | | |_ |_ | | | _ |_ _ | | | _ _ _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _| |_ _ _ _ _| _ _| _ |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| | | | _ |_|_ | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _| _|_ | | _| | | |_ _|_ | _ _| _ | | |_ _ | |_ _ _|_| |_| _ _| |_ _ _ _ | |_ _ _| |_ | | |_ _ _|_ | _|_ | _|_ | _|_ |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_|_ | | _ _|_| |_ _ _ _| |_ _ |_ | | _|_ | |_ | | _| +| _ |_ | _ _ _ _ | |_ _ _| |_ _ | _ _ _| | _| | | _ _|_ | |_ _| _ _ _ _| | | _ _ _| _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _| | |_| |_| | |_ _ _ | | | | |_ _ _ _ _| | _| | | |_ _|_ _ |_ _ _| | _ _ _ _| _|_ |_ |_ _|_ _ |_ _ _ _ _| _ _ |_ _ |_ _| |_ _| | | | |_ _ _ |_ _ _ _ | _ _ | _|_ _| |_ _ |_ _| _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ | |_ _ |_ _|_ _|_ | | _| |_ _ _ |_ _ _ _|_ _ | | | _| | | _| |_ _ |_ _ _ _|_ _| | _| |_ _ _ _ _| |_ _ | |_|_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_ _ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _| | |_ | | |_ _ _ _ |_ _| |_| _| _ _|_ | _ _| | _|_ _|_ _ _| |_ _|_ _ _ _ _| | | _ _| | |_ _|_ _ |_ _| |_| _ _ _|_ _ _| _ | | | | | |_ _ | |_ _ _ _| |_ _ | _|_ _ |_ | _| _| _ _|_ | _ _| | _| |_ _| |_ _| _|_ _ _ _ _| |_ _| _ _ _ _| _ | |_ _| _|_| | |_ _| |_ _| |_ |_ _ | |_ _ _| | | |_ | _ _ | | |_ _ _ _ _ _ | | _ _ | |_ _ |_ |_ _ |_ _|_ _ | | _| |_ _| |_ |_ _| _ _ _| _ |_ | | |_ _| | | _|_ |_ _ |_| _ |_ |_ | |_| | _| |_ _ _ _ _| | | | _ _| | | | _ |_ _| | |_ _ _| | |_ |_ _ _ _| | | | _|_| | |_ _ _ _ |_ _| | _|_ _| _| _| _ _ _ _ _ | _| | | |_ _ |_ _|_ | |_ _|_ _ _ _| _|_ |_ _| |_ | | | _| _ _| | _| | |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | |_ _ _ _ _ _ _ _ _ _| _ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_| | |_ _| _| | | |_| _| | | |_ _|_ |_| |_ _ |_ | | |_ _ |_ _ _| | |_ _ _| |_ _|_ _ _ _ _| | |_ _ _| | |_ _|_ _ |_|_ _ _ |_ | | |_ | | | |_ _| | |_ | _ _|_ _ _| |_ |_ _ |_| _ _| _ _ _| _ _ _|_ |_ | | _| | _|_|_ | | | _ _| | _ _| | | |_ | _ _|_ | | |_ _ | _ _| | _ _| | _| _| | | | |_ | +| | |_ _| _ | | _| |_ _ | _| _ _|_| |_ _| _ _| | | | _ _ _|_ |_ |_ _ | _ |_|_ _ | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| | _| _| _ _ | | | | | | _ _ | _| |_ _ _| |_ _ _ | |_ _ | _|_ | _ _ _| _ _|_ | | |_ _ | | _ _ _| | | |_| _ _| | _ _ _| | | | | _| _ _ _ _| |_ _| |_| _ |_ |_ | | |_| _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | | _| | _| _ | | |_ |_ _ | _ _ | _ _ _|_ _|_ _| | | | | | |_ _ |_ _ |_ | _ _| |_ | _ | | | _| |_ _ _ _ |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| _ _ |_ | _|_ _ |_ _ _ _| _ _| _| |_ _ _| |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| | _ _|_ | _ _ _ | | _ _ | _ | _| | |_ _| _ |_ _ | |_ _ | | |_ _| | _ _|_ _| _| _ _| | _ _| _ _|_| |_ _| _|_| _| |_ _ _ _ _|_ _| _| |_ _|_ _ _ _ _ |_ _ _ _ | _ _ _ _ _ _ _| _|_ _| |_ | _| | _ _| |_ | _| |_ _ _ | _| | _ | | _| | _ _| _|_ _| _ _ |_ _ |_ _| | |_ | |_ _ _|_ | | _| _ _|_ _| |_ | _| _| _| |_| _ _ _ _|_ |_ |_ _ _ _| |_ _ _ _ _| _| _| _ _|_ | |_ _|_| |_ _ _ |_ _| | |_ | | |_ | _|_ | | | |_ _ _ _ |_| | _ _| | _| _| | | _ _| | _ _| _ _| _| | _ _ _| _ |_ _ _ _ _ |_ _| _|_ _|_ _ |_ _ _ _|_ _ _ _ | |_ _ |_ _ _ _| _ _| |_| _| _ |_ _| | _| | | |_ _|_ |_|_ _ _ _| | |_ _ | |_ | _| _ | |_ _ _ _| _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ |_ _| | | | _|_|_ | | | _ _|_ _ | | | | _| |_ _ | | | | _| _|_ |_ _ _| |_ _|_ _ _ _ _| _| _ _| |_ _|_ _ |_ _| _| _|_ | | | _ _ | _|_ | _ _ _|_ _ _ |_ _ |_ _ |_ | | | |_| _| |_ _| | _|_ |_| | _| _ _|_ _| |_ | | |_ | |_ _ | _ _|_ |_ _| | _| |_ _ _ _ _| |_ _| _ _| |_ | | | | | |_ _| | _ _| |_ _| _ _| _ | |_ _| _ _|_| _| |_ | |_ _| +| | |_ _ |_ _| | |_ _ _| | | _|_ | | |_ _ |_ _ | |_ _| |_ _| _| _| _ _|_ |_| | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _ _| |_ _| |_ _|_| |_ _| | _| | _| _ _ _ | _ _| _ _| | | _| |_ _ | _|_ _ _ _ _|_ | | | |_|_ _ | _|_|_ _|_ | |_ | | | | _ _| |_| |_ _ _ _| _ _|_ | | _| _| _ _|_ | |_ _|_ | | _| |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _| _ _|_| | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_| | | _ _|_ _| | | _ _ _ _|_ | | |_ |_ | | | | |_ | | | _ _ _| |_ | _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| | _ _ _ | _|_ _ |_ _ _ _| _ _| _| | | | |_ _ _|_ | _ _ _ | | | |_ _ _ _ |_| _| _| _ | |_ _ |_ _| | | |_ _ | | _| | | | | | | | |_|_ _| _| |_ _|_ _ _|_ |_ _ |_ | |_ _ _| | |_ _| | |_ _|_ _ _|_| _ _ |_ _ | _ _| | | _|_ | | |_ _ |_ _ | |_ _ _ _ | _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_| _ |_ |_| |_| |_ | | _|_ _ _| _| |_ | _| | |_ _| |_ | |_| |_| _ _ _| | | |_| _ _| | | _|_|_ |_ | |_|_ _ _|_ _ | _ _ _| | _ _|_ _ _|_ _ _ _ | | |_ _ _ _ |_ _ _| | _| _| |_ _ _ _ _| |_| |_ | |_| |_ | _|_ | | |_|_ |_| |_ | | | | | | | | | | _| _| | | |_ | | | |_ | | _ _ _| |_ _ |_ _ | |_ |_ _ |_ _ _ _ _ _|_ | _| |_ _ | | _ _ _ | _| |_ _ | _ |_ _ _| _ _| _| | |_ _| | |_ _ _| |_ _|_ _ _ _ _| |_|_ _ |_ _|_ _ |_|_ _|_| _| |_ _|_ _ | | | |_ _| _ | |_ | _|_|_ | | | _ _| _ _ | | |_ | | | |_ _|_ | _ _ |_ | | |_|_ | |_ _ _ _| _|_|_ _ _ _ _| |_ _| _ _ _ _| |_| | | | _| | | |_|_ _| | _| _| _| | _ _ |_ | | | |_ _| | _ _ |_ _ |_ |_ _ |_ _| |_ _| | |_|_ _ _ _ _| _ _ | |_| _ _| | _ _| |_ _ _| _| _| |_| | | _|_ _ _|_ _ | | _ _ _ _|_ |_ _| |_ |_ _| |_ _ | |_ _ _ _ _ _ | |_ _| | _ _ _ | |_ | | _|_ _| |_ _ _ | |_ _ _ _| _ _| _ _| _|_ | _| _ _ _|_ _ | |_ |_ _| +|_|_ | | | _ _| |_ _ | | | | _ _| |_ _| _ _| _| | | | _ _ _| _| _| _|_ _ |_ | |_ _| _ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _| | | | | _| _ _ _ | _| _ |_ |_ | |_ | | | _ |_ _| | | | _ _| | |_ _| | | | |_ |_| |_ |_ _ _ | |_ _ | | | | _| |_ _| | |_ _ _ _ _| |_ _| | _|_| | _| |_ _ _ _ _|_ _ | | |_ | | _| | | |_ _|_ | _ |_ | | | |_|_ |_ _ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ _ _| | |_| | _ _ _| |_ _| _ _ _ _| _| _| _| | | | |_ _| | _| _ |_ | | | _ _| | | | | | | | _ _| _| | | | |_ _| _ _ | | | |_ _|_ | _ _| _ | | |_ _ _ _| |_ _|_ _ _ _ _ _ _| _ _| |_| |_ _|_ _ |_ _ _ _ _| _|_ _ |_ _| _ _| | _| |_ |_ |_ _| | | _|_ | | |_ |_ _|_ _ _ _ _ |_ _ _ _ | |_ _ |_ _ _|_ | _ _|_ | | _ _|_ | _| _ _ _| _| | |_| |_ | |_ | _ _| |_ _| _ _| _ |_ |_ _ | | | |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_| _| _ _|_ | |_ | | _| |_ _ | |_| _| |_ _|_ _ _| _ _ _ _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | _|_ |_ | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ _|_| _ _ |_ _ | _ _| |_ | |_ _ _ |_ _|_ _ _| | _| |_ _ _| | _|_ _ _ _|_ _ _ _ |_ | | |_| | |_| |_ _| |_| | |_| _| _ _| | | |_ _ _ | |_ _ _ _| |_ _ | | _| | _| |_ |_ | | _ | _|_ _ _| | | |_|_ _ | | |_ _ _| | | | |_ _ _ |_ _ |_ _| | _ _| | _ | | _ _ | _ _|_ _ _ | |_ _ | |_ _ |_ _ | | | _ _ _|_ _| | | |_ _ |_ _| |_ _ |_ _ _ _ _| |_ _|_ _| | | | | | | | | |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _| _ _ _ |_| _| _ _ _ _| _ _ | _ _ _ _| |_| |_ _| | |_ _ _ _|_ _| |_| _|_ _ _ _| _ _ _ _|_ _|_ _ _ _| _| _| _ _ |_ | |_ |_ _ |_ _ _| | |_ _ _ _ | _ _| | _| |_ _ | _ _| | _ _| | _ _ _| _| _|_ _| | | _ _ |_| |_ _ _| |_ | _| _ _ _|_ _ | _| _ _ | |_|_ _ _|_ _| |_ |_ _| _| _| _ |_ |_ _| _ _ | | | |_ _ |_ _ | |_ |_ _ | _ _|_ | | | +| _ _| |_ _|_ _ | | _ _| | | |_ _ _ _| _ _| _ _ | | |_ | _ _ _| | |_ _ _ _ | |_ _| _| | _| _| | | |_ _|_ |_| |_ _ |_ | | |_ _ |_| | |_ _ _ _| |_| | _| _ _|_ | |_ |_| | |_ |_ _ _ _ |_ _|_ |_ |_|_ _ _| _|_ _|_ _|_ | | _ _|_ | _ _|_ _ _ _ _|_ | |_| |_ |_ _ | _|_ | _ _ _ _|_ | | | | _ | |_ _ _ _ _ | _| | | | _| |_ _ _| |_ _|_ _ _ _ _| | | _ _|_ _|_ _|_ _ |_ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ | _|_ _ _| _ |_ |_| _| _| _ _ _ _| _|_ | | |_ _ _ _|_| _| _ _ |_ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | _| |_ _|_ _|_ _ _ _ _|_ _ _ _|_ |_|_ _|_ _ |_ _ _ _ _ _| _ |_ _ _ |_ _ _ | _|_ _ | _ _ _|_ | | _ _| _ _| |_ _ _| _| | | _|_ _|_ _ |_|_ | | | | _ | |_ _ _ | _| |_ _ |_ _ _ _| |_ | | _|_ _ _| |_ _ |_ _ | _ |_ _|_ | | _| |_ _| _ _ _| _ _| _| _| _| _ _| | |_|_ | |_ _|_ |_ _ _|_ _| | | |_ _ |_ _| | |_ _ | _| |_ _ _ _ _| | | |_ |_ _ | _|_ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _ _ _|_ _ _| |_| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _|_ | | |_| |_ | | _|_ |_ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _|_ _ | |_ _ _ _ _|_ | |_ |_ |_| |_| | |_ _ | _|_ _ | _ _ _| |_ | _|_ _ _ _ _ | | |_ _ _| | _ _ _ _ _|_ _|_ _ | | | | _ _ _| | |_ _ | _ | |_ | | _| | _| | | | | |_ _| | |_ _|_ _ | _| | | _ _|_ _ _| | _ _| | | | |_ _ | _|_|_ | | | _ _| | _| _ | _ | |_ _ _| |_ _ _| |_ _ | _ | _ _| _| |_ _| _|_ _ _ |_ _ | | _ |_ _ _| _ _|_ _ _ _ _ _| _ _| _| _ |_ |_ |_ _| _| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ |_| _| |_ |_ _| _ _ |_ | _ _|_ | | _| | _ |_ _ _| | |_ | _| | | |_ _ | |_ _|_ _ _| _| |_ _| |_ | | _| _| _ _|_ _ _| | |_ _ _ _ _ | | | _| | _| |_ _ | | | _ _|_ _ _| | _ _ _| _| _ _|_ |_ | | _ _| |_ _|_ _ |_ _ _| | | | _| | | | _ | | | | | +| | _ | _ _ _| | |_ _ _| |_ |_ _| | |_ _ |_ _|_ |_|_ _ | _| |_ | | | _ | _|_ |_ _ _| |_ _|_ _ _ _ _| _| _|_ _ |_ _|_ _ |_ _ _| | _ _ _ _|_ |_ | |_ _ _ _ _| _ _ _ _|_ _ | _| |_| | _| _| _ _ _ _ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_|_ |_ | | _ _|_| |_ _ _ _| |_| |_|_ _ _| _|_ | _ |_| | | | | _|_|_ | _ _ | | | _ _ | _ _ |_ _| _ _ _ | _|_ _ | _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | |_ _ _ |_| _| _ _|_ | | |_ | _ _ _| _ _| |_ _ _ _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ _ _| | _ _ | _| _ _ _ _ | _ _ | |_ _ | | | _ _ _ _|_ | | _| | | _|_|_ | |_ _ _ _ _ _ _| _|_| | | _ _ _| _| _ _|_ _ _ | |_ _ |_ _| |_ _| | | |_|_ | _ |_ _ _| | | _ _ _ _|_ | | _| _ _ _ _|_ |_ | _| |_ |_ _| | |_ |_ _ | _ _ | | |_|_ |_| _|_ _ | _|_ _ | | |_ _ _ _ _| _ | _|_|_ | | | _ _| _ _ _| |_ _ _ _ _| _| |_|_ | | _ _|_| |_ _| _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | _ _ _| _ _| | |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ | _ _|_ _|_ | | _| |_ _ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _| | | | _ _| _|_ | _ _|_ |_ | _ _|_| |_ _| |_ | _ _ | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _| |_ _| | | | | _|_ |_ _|_ _|_ _|_ | | | |_ _| |_| _ |_|_ _ _ _ _| | |_| | | | | _ _|_ _ _ _| _| |_ | | |_ _ _ _ _| |_ _| _ _|_ _ _| _|_| _| | |_ _ | _| _ |_ |_ | | | |_ _ _ _ _|_ |_ _ _ | _ _ _ _| | _|_ _ _| |_ |_ _ _ | _ _| _ _| _| _ _|_ | |_ _ _ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _ _ _ _| | _| |_ _ _ _ |_ _|_ _ _ _|_ _| _ _ | | | | | | | _|_| | | _| | | | _ _ |_ | | _| | _| |_ _ _ _| | | _ _ _| | | | | |_| |_ |_ _ _|_ | | | |_| | _ _ | |_ _ | _| |_ _ _ _ _| |_ _|_ _ _ |_ |_ _ | _| _| | | _|_|_ _ _| _|_ _| | +| |_ | | | |_ | _ _| _ |_ |_ | |_ _|_ _ |_ _ _|_ _ _| | | | _| | |_| |_| | _|_ _ |_ _| | | _ _ | _| _ |_ _| _| _| |_ _ | | |_ _ _| |_ | | _ |_ _ _| _ _ | |_ _| _| _ _|_ _| | _ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ | | |_ _ | | _ _| _ _| | _| _| _|_ | | _| | |_| _ _| |_ _ |_ |_ _| | |_ _ _|_ _ _ _ _ | |_ _|_ _ | |_ _| _| | | |_ _|_ | |_ | |_ | | |_|_ |_ _ _ _ | | _| |_ _ _ _ _| | | |_ _ _|_ _ | | _ |_ |_ | _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| _ _|_ _| | |_|_ _ _|_ _ |_ | _|_ |_ _ _ | | _| _ _| | _|_ | | |_ _| _ |_ _ _| _ _ |_ _ | _ _| | | | | _ _ _| _| _ _ _ _| _|_ |_ | _| _ _| |_ _ _ |_ | |_ _| | | _ |_ | | |_ |_ _ _| |_ | | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _ |_ _ |_ _ _| _ _ | | |_|_ _ _ | _ _ _| |_ _ _ _ _| |_ _| _ _| | |_ | | _ _ _ _| |_ | _ _|_ | | |_ _ | |_ _ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | _ _|_| |_ _ | _ |_ _|_ | _| _|_|_ | | | _ _|_ _ |_ | | _ _| | _ _ _| | |_ |_ _ | _ _| | |_ | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _| |_ _| |_ | _ _ _ _|_ _| |_ |_|_ | | |_ _ | _| | | |_|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ |_ _|_| |_ |_ |_ | _ _ _ _ | | |_| |_ _ | _ _ _|_ | _ _ _| |_| | | _|_ |_ _|_ | | _ _| _| _| |_ _ _ _ _ | | _ _ _ _ | | _|_ |_ |_ _| _| _ _|_ |_ _| |_ _ _ _ | |_ _ | _| | | | _ _| | _ _ _ _|_ |_ | |_ | | | | | _| |_ _ _ _ _|_ _ _| _|_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_| |_ _ _| | |_ _ |_ _ | _|_|_ _|_ |_ _ _| |_ | | | | _ | _| |_|_ _ |_ |_ _| | | | |_ | | | _ _| |_ | _|_|_ | _ _| | | |_ | _ |_ _| _ _|_ | | | _ _| | _ _| _| |_ _ _ | |_ _ _ _| | +| |_|_ |_ | | _| _| _ _|_ | |_| _ |_ |_ _ | | _ _ | _|_|_ _|_ _| | _| _| | _ _| _ | | |_ _| | |_ _ _ _|_ |_ |_ | _ _|_ _ | |_ _| _| _ _|_ _ _| | | |_ _ | _ _| | _| |_ _ | |_ _| _ _ |_|_ | _ _| | | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| | _ _| |_ _| _ _|_| | _| | _ _| |_ _ _| _| _ _|_ _| |_ |_ |_ _ _| _| | _ _ _| | |_ _ _ _ | |_ _ _ _| _ _ _|_ _|_ _ _ _ _ _| |_ _|_ _ _ _ _|_ | | |_ | |_ _|_ _ |_ _ |_ |_ | |_ _ | _| | | | _ _ _| | _| _ _|_ | |_ _ _ _| | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| _|_ |_| | _| |_ _ _ _ | |_|_ | |_| _|_ _ _ _| |_| _| _ |_ _| _| | |_|_ | _| | | | _ _ _| | | |_| |_ | | | |_|_ _ | _| _|_ _ _ _ _ _ _ _| | |_ _ _ _|_ _ _ _ _ _| | |_ |_| | | | | | |_ | |_ _|_ |_| _| _ _|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _ |_ _|_ _ _| |_ | | | |_ _ _| _ _| _ | | _ |_ _ | | _| _| _| _ _ _ |_ _| | _ _| |_ _| _ _| |_ _ | _ _ | _|_|_ | | | _ _|_ _ _ _| | | | _ _|_ | | |_ _ | | |_ _| | _|_ |_ _ _ _ _| |_ _| _ _ _|_ | | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _| _ _| | | | _|_|_ | | | _ _| _| _ _| | | | |_ _ _ |_ | |_ | |_ _ _ | _ _ _|_ _ _| _ _| |_ _| _ _| | _|_ _|_ _ _ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | | _| _ |_ |_ _ _| |_ _ _| |_ _ _ _| _ _|_| _ _ |_ _ | _ _| | _| _| |_| | _| | |_| _ _ _| | | _ _| |_ | | | |_ _ | _ |_| | |_ _ |_ |_ | | _| |_ _ _ _ _|_ _ |_ | _| |_ _ | |_ |_ _| |_|_ | _|_ _ _| |_ | |_|_ | |_ _| |_ _| |_ _| _ _ |_| _ _| |_| |_ _| | | _|_|_ | | | _ _|_ | _ | | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | _| | _|_ _ |_|_ _ _ | |_|_ _ _ | | | |_| | |_ | _|_ _ _ | _ _| | | | |_| _|_| |_| | |_ _ | | _|_ _ | _| | _ _| | |_ | |_ _| _| | _|_ _ _ _ _| | |_| _ _|_ | |_ |_ _ _ |_ _|_ _ | | | +| |_ _ | | _| |_| _| |_ _ _ _ _|_ _ _| | | _ _ _| | |_ _ | |_ _ _ | |_ _|_ _ _ _| | _| |_ |_ _| _ _| | |_ _ _ _ | _| _| _|_ _ _| _ |_ | _ _| | _ _ | _|_|_ | | | | _|_ _ _| | | _ _ _|_ | | |_| |_ | | | | _| | _ | _|_|_ | | | _ _| _ |_ | |_ | |_ _ _ _| _ _| _ _|_ | | |_ | | _ _ _| _| | | |_| _| |_ |_ _| _|_ | _ _|_ _ _ | _| |_ _ | | | _ _ _ _ | |_ _ | | _ _ |_ _ _ _| | | | |_ _ _ _ |_ _ | | _| _|_ | _| | | | _| | |_ |_ _| _|_ _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | |_ | |_ | |_ _| | | | _| |_ _ | |_ | |_| _ | _ _| _| | |_ _| | _ _|_ | _|_| _| | |_ _ | _| |_ _|_ | | _| |_|_ _ _| | |_ | _ _ _ _ | |_ _ _| _ | | | |_ | | |_ _ _|_ _| |_ _| _|_ |_ | | _ _| | | _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _| | _| _ _ _ _|_ |_ _| |_ _|_ | | | _ _| |_ _ _| | _ _| _ _|_| _| _|_ _ | | |_ _ _ |_ _ _ _| _ _| _| |_ _ |_| | | _|_ _ _ _ _| |_ _|_ _ _ | | | | | |_ _| | _ _| |_ _| _ _|_| | _ _| |_ _ _| _ _ | | _| |_ | _ _ _| |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _ _| | | |_ _ _ _ _| |_ _| _ _ _ _ _ _| | | |_ _ _ _ _ _| _ _ _| | |_ _|_ |_ | _ _ _ _| _ _| _ _|_ | _ _ |_ _ |_ | _ | | _|_|_ | | | _ _|_ _ _ _ | | | | _| |_| _| _ _|_ | | _ _| _| _ _|_ | _ _ | _ _ _| | | |_| |_ | | | | _| _ _|_ _| _|_ _ _| |_ | | | _ _|_ _ _| _|_ _ _|_ | | _|_ _ _|_ |_ _ _| | |_ _ _ _ _ _ _ _|_ _ |_ _ _| | | | _| | | | | _| _| _ _|_ _ _|_ _ _ _| _ _|_ _ |_ | | _| _|_ _ | _ _ _|_ |_ |_ _ |_ _ _ _ _| |_ _| _ _| |_ | | | _|_ | |_ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _| | | | |_ | |_ _ _ _|_ _|_ _ | | | _|_| |_ _ _ _|_| _ _ |_|_ | _ _| | |_ _| _| _ _| _| _ _ _| |_ _ _| |_ |_| |_ |_ _| _| _ | |_ | | |_ _ | | _|_ |_ | _| | |_ _ | |_ _ |_ _| | | +| _ _| | |_ |_ | |_ | _ _ _ | | |_ | _ _| | _| | _ _ _|_ _|_ _ | | _| _| _| |_ _ _ _|_ _ _|_ _ _ _ _ _|_ _ _ _ _ _ _ | | _| _|_ | _|_ |_|_ _ _ _ _| | |_| |_ _ _ _|_| |_ | _ _ |_ _|_ | | _| |_|_ | | | _|_ _ _ _ _| |_ _| _ _| |_ |_| | | |_ |_ _ _ | | |_ _| _ |_ _| | |_ _ _ | | _|_ | | | _|_ _ |_ |_ | | | | |_ _ _ _ | |_ _ _| | | |_ |_ _ | | _| |_ _ | |_ _| | | _|_ _ _ _ _|_ _ _ _ | _ _| | | _ _ _| _| _ _| |_|_ | |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | | _|_ |_ _|_ | |_ _| | |_ _ _| | | | _|_ _ | | |_ _ |_ _| | _ _| |_| | _| | _| | _| _| | | _ _ _| | |_ |_ _ | _ _ |_ _ _| _ | | _| |_ _ | _| |_ |_ _|_ _| | |_ |_ | _| _ |_ | _|_ _ _ _ _|_ _ | _|_| | | _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | _| | _ _|_ |_ _ _| |_ | _| _ |_ _|_ | | _|_ _ _ _ _|_ _ _ _| _ _ _| | |_ | |_ _|_ _ |_ _ | _ | | |_ _ | |_ | | |_ _ _ _ _ _ |_ _ _| | _|_ _| |_ _ | |_ _ _ _| _ _| | _| | _| | | _| _| _| | |_|_ _ _|_ | _| _ |_ |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ | | | _ | _ _ _ _ _ |_ _| _ _ _| |_ |_| _ _ |_ _ | _ _| | _ _ _|_ | |_ | | | | |_ _ | _|_| | _ | | | |_ |_ _ _ _ _| |_ _| _ _ _ _ _ _| | | _| _| _| |_ _ _ _ _|_|_ _ _ _| | _| _|_ _ | |_ _ | |_|_ _|_ | | _| |_|_ | |_ _| _ _ |_ _ | _ _| | _| _| | _ _| _| _ |_ _ | | | | _ _ _ _ _| | | |_ |_ _| | _| _| _ |_ | _ _| | | |_ _ _| |_ _| | |_| _ _| | _ |_ _ _| _| | _| _| _| _| | _| _ _| |_ |_ | | | _ _| _ _ _ _| | _ _ _ _|_| |_| _ _|_ _ | |_| | |_ _ | _|_|_ | | | _ _| _ _ _ | |_| _|_ _ _|_ _ _|_ | | | _ _ _ _ _ _ _| _|_| |_|_ _ | _ _ _| | | |_| |_ | | _ _ _| _| _ _| _| _ |_ |_| | |_ | _ _ _| _| | _| |_ _|_|_ _ | |_ _|_ _|_ | | _ _ _|_| |_| |_ _ | | | | _| | +| | _ _|_ _ | |_ | |_| |_ _ | |_ _| |_ | |_ | |_ | _| | _ _ _| |_ _| |_ _ _| _|_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | |_ _| |_ _ |_|_ _ _ _ | _| _| |_| _| | | _|_ | _| | | |_ |_ _ | _|_| |_| _ _ _ _ _ _ | | _ _| _ _ _| |_ |_ _ | |_ _|_ _ |_ _| _ _ _ _|_| |_ |_|_ _| |_| | _|_ | _ _| | | |_ _|_ | _ _ | _ _ _ _|_| |_ |_ _| | |_ _ _| | |_ | | |_ | _ _ _ _ | |_ _ _ _| | _ _| |_ _ _| _|_ _ _ |_ | _|_ _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _ _ _ _ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ | _|_ |_ | | _| | _| | _|_ | _|_| |_ _ | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _ |_ _| | |_ _ _| | | |_ _ _ _| |_ _|_ | | _|_| _| _ _|_ | _ _ _ _ | |_|_ |_ _ | _| | | |_ _|_ | _| |_ _ _ | | |_|_ |_ |_ | _ _| _| _ _|_ _ _| _ _| |_ | | _| | _ | | _ _|_ _ | |_ _ _| |_ _ _ | |_ _ | |_ _| |_ _|_ _ |_ _| | |_ _ _| _ |_| _ |_ _ | | | _| _ |_ |_ _ | _ _ | | |_ _| | |_ | |_ _ | |_ | _|_ | | | |_| _| _ _|_ | | _ _ _ | _| _|_ _ _ _| _ _| _| | | | _| |_ _| | |_| _ | |_ _ _| _| _ |_ |_ _| | | |_| |_ | | | |_ _ _ | | _| _| |_ _|_ _ |_ _ _ _ _| | |_ _| |_| |_| | _| _ _ _ | _ | | | _ _ _ _| |_ |_ | |_ | | _ _ | |_| _|_ _|_ _| |_ _| | |_| _ | | |_ |_ _ | |_ _ _| | | |_| |_ | | | | _|_| | |_ _ _| | |_ _ _| | | | |_ _ _ _| _|_ _| _| _ _| _ _|_ |_ | | |_| _ | | | | _| _ |_ |_ | _|_| _|_ _ | _ _ _| |_ _|_| _| | _|_ _ _| | |_ | _ _|_ _ _| _| | |_|_ _ |_ _ | _ _|_ _| _ |_ |_ | _ _ _|_ _|_ |_ _|_ _ _ _ _| |_ _| _ _|_ | _ _| | _| _ _ _ |_| |_ _ _|_|_ _ _| _ _ |_ _ | _ _| | _ _ |_ _ | _|_|_ _|_ | | _| |_ _ _ | | | |_| _| _ _|_ | | |_|_ | | | _ _ _| | _| _| _| _ _ | | _ _ _| | | |_| _ _ _ _|_ |_ | | | |_ |_ _ | +| |_ | |_| |_| _| | _ _ _| | | _ _| _|_ | | | | |_ _| | | | _ _|_ _ _ _ | _ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ | | |_ _ |_ _ _ | | |_ _ _| _|_ _| _| | |_ _ _ _| | _| | |_|_ | | _ _|_| |_ _ | _ |_ _ |_ _| | _ _| _ |_ |_ _ |_ _| |_ _ |_ _ |_ | _ _ _ _|_ |_ | _ _|_ | | | _ _| |_ _ _ _|_| |_ _| _ _ _| | _|_ _ _ _ _ _ _ _ _| | | _|_ _ _ _| | | _| | | | | |_ _ | | _| |_ _ | _ _|_ | | _ _ _| _ | | | | | |_ _ |_ _ _ | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _|_| | |_ |_ _|_ | | | |_ _ |_| |_ _| |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ _| _ _ _ _| | | | _ _ _ _|_ |_ _ | _|_ | _| |_ _ _ _ _|_ _ | | _| |_ _ | |_ _ |_|_ _ _| |_ _|_ _ _ _ _| |_ _ _ _ |_ _|_ _ |_ _ | | |_ | _ _| | _ | | |_ | _|_ _ _| |_| |_ _ _| |_|_ |_| _| | |_ | |_ _ _ |_ _ _ _| | | _ |_ | |_ _ | | | _ _ _ _|_ |_ |_ _ |_ _| |_ _| _| _ _|_ | _| | |_|_ _|_ _ |_|_ | |_ _ | |_ | |_ _ |_ _|_ _| | | _| |_ _ _ _ _| | | |_ _|_ | |_ _ _ _ | | |_ _ | |_| |_ |_ _ | _ _ _| |_ _|_ _ | _| _| _ _|_ |_ _ _| |_ _|_ | | _| |_|_ |_| |_ _|_ |_| _ | _|_ _ | _|_ | | | _| _|_ _ _| | _| | | _| | _| _ |_ |_ _| |_ | |_ _|_ _| |_ _|_ | _ |_ _ | | _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| |_ _|_ | | _| |_|_ |_ _ |_ _| _ _ _|_ _ _ _|_| |_ | _| _ _ _| _| | | _| _ |_ | | |_| | _|_ _| |_| |_ _ _ _|_ _ _|_ _ |_ _ |_ _ |_ |_| | | _ _ _| _ _| _ _ | |_ |_| | _ | _ _| _|_ _ | _| _ _|_ | _ _| _| _ _|_ | |_ _ _| |_ _ | | _ _ _ _ _ _| _ _| | |_ _ _| |_ _| _|_ _ _|_ _ _ _ | _ _ _|_ | | |_| |_ | | |_ _ _ _| | | _ _| | |_ |_ _ | _ _| |_ _| | _| |_ _ _ _ _| |_ _ _ _| | |_ _ | | | | | _| | |_ | | |_| | | _| | |_ |_ _ _| |_ | | | |_ |_ _| _| +| | | | | |_ _ _| _| | | | _ |_ _ _| _| | | |_| _| | |_ |_ _ _| _ _ |_ _ | _ _| | |_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ |_ _| |_ _ |_ |_ _ _| |_ _ _ _ _| |_| _| _|_ |_ _|_ _| _|_ | _ _|_ | | |_ _ | |_| | | | |_ _ | | _| _| _ _|_ | _ _| _| _ _|_ | | | _|_ _ _| |_ | | _ | |_ _|_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _| _ _ _| | _ _| |_ _| | _| | |_ _ _|_ | |_| | _| |_| _ _ _ _| | |_ _ _|_ _ |_ | _ _ _ _| |_ _ _ _|_ | _|_|_ | | | _ _| _ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| |_ _|_ _ _ | | |_| |_ _ | | | | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _|_ _ _ _| _ _ | | |_ _ _| |_ | | |_ | | | | | _ _ | _| | |_ _ _|_ | |_ _ _|_ | | | _ _ | | _|_ _ |_ _ | | |_ _ |_ | |_ _|_ | _| | |_ _| |_ _ |_|_ | _ |_ |_ |_ |_ _ | | _| | _|_ _|_ _| _ | _ _ _ | _|_ _|_ _ _ _|_ _ _| | _| _ _| | _| | _ _| |_ | | | _| |_ _ _ _ _| | _ _|_ _ | |_ _ |_ |_| | |_| _| _ _|_ _ |_ _| | |_ _| _ _ _ _|_ _|_ _ _ _ _|_ _ _|_ |_ |_ _|_ _ |_|_ |_ | | _ _|_| |_ _ | _ |_ | _| |_ _ _ _ _|_ |_ _ | | |_ |_ _ | _ _| _ _ _ _| _| _|_|_ _ _| | |_ _ _ _| |_ _|_ _ _|_ _ | |_| |_ _| | |_ _| |_| _| _ _|_ | _| _| | _ _ _ _|_ |_ | |_ |_ _ |_ | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _| | |_ |_ _ | _ _| _ |_| | _ | _| _ |_ |_| | | _| _ _ _| _ _| | | _| |_ |_ _|_ _ _| _ |_ |_ | _ _ _ _ | |_ _ |_ _ |_ |_ _ _|_ _| |_ _ | _| | _| | _ _|_ _ _ _| | | |_ _ _ _ | | | _| | | |_ | _| |_ _ _ _ _|_ | _ _| | | _|_ _ _| _ _ |_ _ | _ _| | |_| _ |_ |_ _ _| | _ _ _ _ | |_ _ _ | _ |_ _|_ | | _| |_|_ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | |_ | |_ _| _| _ _ _| _| | | | | | | | _|_ | | |_ | | |_| | |_ | _| _| _ _|_ _ _| |_ _ |_ | _| | +|_ | |_| | _ _ _|_ | |_ |_ |_| _ _ _| _|_ |_ | | |_ _|_ _ | _ _ _|_ | | |_| |_ | | _ _ |_ | _| _|_|_ | | | _ _| _ |_ | | |_ |_|_ |_ |_ _| _| | | | _ _ _| | _| |_ _ |_ | _ _ |_ | |_ _| | _ _| |_ _| _ _|_ | | | | |_ _ | |_ | _| |_ _ _ _ _| | _ _ _|_ _ _ _ _| |_ _| _| _ _|_ _ _| | _| | _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | | | _ _ _| |_ _ |_ _ _ _| | _| | _ _ _| | _|_ |_ _ _ _| |_ |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ |_ _ _ _ _| |_ _| _| _| | | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _|_ _ _ | | |_ _ _ _| | |_|_ _ _|_| | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ _ _ | |_ _ _| |_ _| _ _|_ _ _| | |_ | |_ _ _|_ _|_ _|_| | _|_ | _ | | _ _ _ _| _|_|_ _| | |_|_ _ _ _ _| _ | _| | |_ _ _| | | |_ | _ _| |_ _ _ |_ _ _ _| | _| _ _|_ |_ | _ | | | | | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| |_| _| _ |_ _| _ _| _ _| _|_ | |_ | | _ _|_ _| |_ | | | _ _| |_ _| _|_ _| _| | | |_ |_ _ |_ | | _| | _ _ | _ _| _ _ _ |_ | | _ _ _|_ _ | | _ _|_ | | |_ _ | |_ |_ _ _| |_ _ _ | _ _ _| _ _| | |_|_ | | _ _|_| |_ _ | _ _| _|_ _ _| _ _| | | _|_ _ | _ _ _| | | | _| _ _|_ _ | | _| |_ _ _ _ _| | _| |_ _ _| |_ | | |_ _ | |_ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | |_|_ | | _ _|_| |_ _| _ _| | | |_ _| _| _ _|_ | | | | |_ _ | _|_ | |_ _| _ _ _| _ _ |_| _| _ _|_ | |_ _ | | _| |_ _ |_ _ _|_ | _ _ |_ _ | _| |_ | | |_ _ _ _| |_ _ _ _| | | | | |_ _| |_ _ _|_ _| | | | |_ _ _| | | | _| | | | | _ _ _| | | |_| |_ | | | _| _ _|_ | | |_ _ | | _| |_ _ | | | |_ _ | | |_ |_ _ | _|_ _ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | _| |_ | |_ | _| _ _| _|_|_ _ _| |_ _| _ _ _| _ _ _|_ _ _|_ _ _| | _ _| | | _ _ | |_ _|_ _ | +|_ _|_ | |_ _ | _| | | | |_ |_ _ | _ |_ | _|_ _ _| _ |_|_ _ | _ _|_ _|_ | | _| |_ _ |_ _ _|_ |_ _ _ _ _| |_ _| _ _| |_ | | | | | | _ _| | _| _|_ |_ _|_| |_ _ _ _ | | _ _| | _ _| _ _|_ _ _ _ |_ |_ _ _ _| _ _| _ |_ _| _|_ _ |_|_ |_| |_ | _ _| |_ _| _ _ _ _ | |_ _ _ _| | _| _| | | _|_| |_ _| | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_| | _| _ |_ |_ | |_ _| | _| |_ _ _ | | | |_| _ _ _ _|_ |_| _ | |_ _|_ _ | | | |_ _| _ | | _| _ | _ _ |_ _ _| |_|_ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | | | _ |_ _|_ _ | _ _|_ _| _ _ _ _ _| | | _| | | |_ _|_ | _ _ _ | | | |_|_ | | _| | _ _| _ |_ |_ _| | _| _ _|_ |_ _| _ _ | |_ _ _ | |_ _| |_ | | | |_ _ | | _ _ _ _| |_ _ _ _ | |_ _| |_| _|_ | _ _| _ _|_ _| |_| _ _ |_ _ | _ _| | | |_ _ _ _ _| _|_ | | |_ | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _| | |_ _| | | |_ | | _| |_ | |_ _| |_ _ | _ _|_ _ _|_ _| | _ _| _ | _ _ _| | |_ _| |_ _ _| | _ _| _| |_ _ _|_ _| _| |_ _ _ _|_ _ |_ _ _ _| | _ _ _ _| | _| | _ _| |_ _| _ _| _ _| _ |_ | | |_ _| _ _| | _ _|_ | _ _|_ | | |_ _ | | | _ _| |_ _ |_ | |_ _| | | | | | |_ _ |_ | | | _|_ _ | _| | |_ | _| _ _ _| |_| _| _ _|_ _ _| |_ | _ _| |_| |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ _|_| |_ | _ _|_ | | |_ _ |_ _ | |_ | | _| |_ _ _ _ _| | _| _| | | | |_ |_ _| _ _ _| | | _| |_ _ _ _ _| _| | |_ _ _|_ | | _ _ _ _| |_ | | |_ _| _|_ _ _|_ | | |_ _ | _ _| |_|_ | | _ |_ | _| | _| _|_ | | _ _|_ _| | | | | | | | |_ _ | _|_|_ _|_ | | _| |_ _ |_ _ _ _ _| | |_ _| | |_ _ _|_ | | _| |_ _ |_| |_|_ | | _ _|_| |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| _| | | |_ _ _| | |_ _ |_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| |_ _| |_|_ | | | | _ _ _| +| _ | | | | | | |_ _ |_ | |_ _| | _|_ | |_ | _ _ _| |_ _| | _ | | | |_ |_ _ | _ _ _ |_ _ _| | _ _ |_ | _ _|_| |_ _ _| _| | | _|_| | | _ _ _| _ _ |_|_ | _ _| | |_ _ _| _ _ | |_ _ _ | _ | | |_ _| _ | _ _ _ _| |_ |_ | | | | | | _| |_ _ | | _| |_ _ | | | _|_ _|_ | | | | _ |_ _ _ _|_ _| _ _| | | | _|_|_ | | | _ _|_ _ _ _ | | |_ _ |_| _| _ _|_ |_ _|_ |_ | |_ _ | | _ | |_ _|_ _ _ _ _| |_ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ |_ _ _ | |_| _ |_ |_ | |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_| |_ _| _ _ _ | _|_ |_| _ _ _| _ _ | _|_|_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _| |_ | _| _| _ _|_ | _| | _| |_ _| _ _ _| | _| |_ _ |_ _| | _| _ _ _|_| |_ | |_ _| |_ | _ _ | | _| |_ _ | _ _| | |_ | | | _ _ _ _|_ |_ | | | |_| |_ | |_ | _ _ | _| _ _| |_ |_ _| |_ _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _| | _ _| |_ _|_ | | | |_ _ _| _| |_ |_ | |_ _| _ _ _ _| |_ | | _|_ _ | _ _ _ _|_ _ | _|_ _| _| _ _ _| _ |_ _ _ _ | |_ _ |_ | |_| | | _ _|_ _ |_ _ _ _| _ _| _|_ _ _ _| _| _| _|_ _ |_ _ _ _| | _ _|_ _| | _ _| |_ _| _ _|_ _|_ _ _ _|_ _ |_ | | | _ _ _| | | | |_ |_ |_ | | | | _ | _|_ _ |_ | _|_ |_ _ | |_| _ _| | | _ | |_ _| _|_| | _| | | |_ _|_ | |_ _ | _| | |_ _ _ _ |_ |_ _| | _ _| |_ _| _ _| | | |_ _ | |_ _ |_ | |_ _ _|_| _|_ _|_ _ | | _ _ _ _ _ |_|_ _ _ _ _ _ _ _ |_| | _|_ _ _ _ | | |_ _ _|_ | |_ _| | |_ _ _ | |_|_ _|_ _| _ _| |_ _ _ |_| |_ | | _|_| _| | | | _| _| | |_ | _|_| |_| | | |_ | _| | | _ _ | | |_ |_ _ | _ _ _ |_ |_| _| |_ _ _ _ _| | |_ _ _ _| |_ | _ _|_ | | |_ _ | _ | | _| | |_ _ _ _| _ _| _ _| _| | | |_ _ | _| |_ | _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | |_ _ | | | _| |_ | +| | | | |_ _| _| | | |_ _| | _| | _|_| _ _| | | |_ _ _ _| _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _| _| _|_ _| |_ | _| _ |_ |_ _ _ _ _| | _ _| | | | _ _ _|_ | | |_| |_ | | | | _| | _| |_ _ | _| | | |_ _|_ _ |_ _| | | _ _ _ _|_ |_ _|_ | | _|_ _ _| | _| | |_ _ _|_ | |_ |_ _ |_ _ |_ _|_| | |_ _| _ _ |_ _ | _ _| | | |_ _ _ _ _| |_ _| | _ _| | | | | _|_| _| |_ _ _ _ _| | _ _| |_ _ |_ |_ |_|_ | _ _ | | _ _|_ _ _|_|_ _ _ | |_|_ | _|_|_ | | | _ _| | | | |_ _| |_ | _| _| _ _|_ |_ |_ _ | | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ _| | | |_ _|_ | |_ |_ _ | _| _ _|_ _ _ _ | | _ _ | _| _| | |_ | | _ | |_ _ | | | | _| |_ _ _ _ _| |_ |_ _ _|_ _ _| |_ |_ _ _|_ | | _ _|_ |_ _| _ |_ |_| |_ | _| _| |_ | _| |_ _ _| | | _| _| |_ | | _|_ _ _| |_ | | |_ _|_ | | _| |_ _ _| | _| |_ | | _| _| _ _| |_ _| |_ _ | _|_|_ | | | _ _| | _| | | |_ | | _| | _| | _| _| |_ _ _ _| _| _| _| _| _| _| | |_ _| _| | | | |_| _| |_| _ | | _| | _ _ _| | | | | | | _| |_ | _| |_ _ |_ | |_ _ _| | |_ | _|_ _ _ | | | |_ _ | _ _ _| _| |_ _ | |_ _ _ | _| | | _|_ _ _ _| _ _| _ _| _ | | _ _ | |_ _ _| | | | |_| _| _| _|_ _| |_| _| | _ _| _| | _|_ _| | |_ |_ | _| | |_| | _| |_ | _| _ _| |_ _ _| |_ _|_ _ _ _ _| |_ |_ _|_ |_ _|_ _ |_ _ _ | | _|_ _ _ _| _ _| _ _|_ _|_ _ | |_ | |_ _ _| |_ _ _ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ | | _ | _| _| | | | | | | _ |_ _|_ _ _|_ _|_ _ | | _|_ _|_ _ |_ _ | |_ _|_ _ _ | | _ _|_ _| _| | _| _|_|_ _ _ _ _ _| | _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_ | | | | | | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| |_ _|_ | _|_ _ _ _ | | |_ _ _|_ _ _ _| _|_ |_| _|_ _| | _| |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ _| _ _|_| | | _| _| | +| |_ _ _| |_ |_|_ _|_ _ | |_ |_ _ _ _ |_ _ _ _|_ _ _ _| _ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| |_ _ _| _| |_| _| _ _|_ | | _ _ _ | |_ | | _|_ _ | _|_ _|_ | | _| |_ _|_ _| |_ _ _|_ | |_ _ _| |_ _ _ | |_ _ | | |_ _ _| |_ |_ _ | | |_| _ _ |_ | _| _ _ | | | _| |_ _ |_ _ | _| _ _ _|_ | | |_| |_ | |_ _ | |_ _ _ |_ _| | _ _|_ _| |_| |_ _ | |_ | _ _ |_ _ _ _ _|_ _| _|_ _ _| | _ _| | |_| | _ _ _ _ | | |_ | |_ _ _ _ _| |_ _| |_ | |_| | _| | _| _| | | _| |_ _ _ _ _| | | _ _| |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ _ _| |_ _|_ _ _ _ _| | _ _| | | _| | |_ _ |_|_ _|_ | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| |_| | | | |_ | _| _ |_ _ | | _ _ _ _|_ |_ _ _ | | | | | _| _ _|_ | | _|_ _ _| _| | | | | _|_| |_| _|_ _ _ | |_ _| _| _ _|_ _ _| | _ | | |_ |_ _ | _ _ | | _|_ _| _| | _ _|_ _ _ | | |_ _ _ _ _| |_ _|_ _ | |_ _ _| | |_ |_ _|_ | | | |_ _ | |_ | _ _ _| _| | _| _ _ _ _ _|_|_ _ |_ _ | |_| | |_ _ _ _ _| |_ _|_ | _|_ _ | _| | | | _|_ | | _ _| |_ _ _| | | _| _|_ _ | |_|_ | _ _| |_ _|_ _ |_ _| _ _ _| | | | _ _| | | | _| | |_ _ _ | | | |_ _| _ _| |_ _|_ _| |_| | _ _| | |_ _| _ _ _| _| _ |_ |_ |_|_ _ _| _|_ _ _| _ _| _|_ _|_ _ |_ |_|_ _ _| | | | | | | | | |_ _| | _ _ | _ |_ | | _ _ |_ _ |_ _ | _| _|_ |_ | | |_ _| _ _ _ _ |_| _|_|_ _ _ _ |_ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ |_ _ _| |_ | | _|_ |_ _| _ | |_ _ _| _|_ _| | | |_ _ | |_ _ | | | _ _ |_ _|_ | _ _ _| | | | _ _ _ _| | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _| |_| |_ _| |_| | |_ |_ _|_ _ | | |_ _ _ _| _ _| | _|_ _ _ _ _| | _ _ _ _ |_ _|_ _ |_ _ |_| _ |_ | _| _| _ | |_ | | _| | | _|_|_ | | | _ _| _ _ _| | | _ _ _| _ _| _ _|_|_ _ _| | | +| _ _ _ _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ |_ _ |_ | | _| _| |_ _ _ _ _|_| _ | _| | _| | |_ _| | |_ | | | |_ |_ _ | _ _| | _ | | | | _ | _ _| _ | |_ _| _| _ _|_ _ _| _ _|_| | | |_ | | | | | |_ |_ | |_ | |_ _ _|_ | _|_ | | _| _|_ _|_ | | _| |_ _ | |_ _ _ _| | | _ _| _| _ |_ |_ | |_ | | | _| |_ _ _ | _ _ _| _ _ |_|_ | _ _| |_ _ _| | _| | _|_ _| _|_ | |_ |_ _ | _ _ _|_ |_| | _| _ _| | _ |_| | |_ _| _ |_ _| | _| | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ |_ |_ | _ _ | _ | |_ _| _|_|_ _ _| |_ _ _ |_ _ | _|_ _ _ _ | |_ _ _ _ _ |_| _ _| _| _|_ | |_ _| | _| |_ _ | _|_ _ _| |_ | |_| | | | |_ _| |_| _| |_ _ _ _ _| | | _ _ _ _| _| | |_| |_ |_| | | _| _ |_ |_ | _ _| | _ _ _| |_| | |_|_ | | _ _|_| |_ _| | _ _ _| _|_ _ _ | _ |_ _| |_ | _| _ _ _ _ _ _|_ _ _ _| |_ _ _ _ | | |_| |_ _ |_ _ | |_ _ |_ |_ _| | |_ | _ _ _ _ | |_ _ _|_ |_|_ _| _ _ |_ _ | _ _|_ _ _| | | _| | |_ | _| |_| |_| _ _|_| | | | | |_| _ _ _| | _ _| | | _ | _ |_ _ |_ _ | _ _| |_|_ _| | | | | _| _|_ | | _ _| |_ _|_ _ |_ _ _ | _ _ _ _|_ |_| | |_ | | _ _ _ _| _| _| _ _|_ | | _ _ _| _ _ _ | |_ _ _ | |_ _|_ _ _ | |_ _ _| |_| |_ _| |_ |_ |_ _| | |_ _|_ _ _ _| |_ _ _ | | | _ _| | |_ | _ _|_ _ _| |_ _|_ _ |_ _ |_ _ _| _|_ _ | |_ _ _|_| _ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_| |_| _ |_ |_| |_| |_ _ _ _| _| |_ _ _| | | _|_ _| |_ _ _ _ | | | _|_ _ |_ | | |_|_ _ | | | | | |_ _| _| _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ _ | _|_ | |_ |_ _ _ |_ _| | | _ _ | | | |_ _ _ |_ _ |_| _ | | _| _ | |_ _ |_ |_ |_ _ _| _ _| _| | |_ _ _| |_ _ _| |_| |_ _ _ _ _| |_ _|_ _ _|_ _ | | | | | | | |_|_ | _ _ _ _ _| +| | _ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| _ _ _ | _| |_ _ _ _| _ _| | | _|_ _ _ _ _ _|_| | |_ _| _ _ |_ _| |_ | |_ | |_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _|_ |_ | | |_ _| | | _| | _|_ | _ _| | | _ _| |_ | | | |_| _|_ _| | | _| _|_ _| |_ _| _ _ _ _| |_ _| |_ _ _| _ | | |_ |_ _ | _|_ | _|_ _| | _| _| _ _|_ | | |_ _|_ _| | _ _ |_ _| | _ _ _|_ | | |_| |_ | | | _ _| | |_ _ _ _ _| |_ _| _| _| _ _| | |_ _ | | |_ _ | |_ _| | |_ | |_ _ _ _| |_ _| |_ |_|_ _| _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _| _ _|_ _| | |_| | | |_ _ _ | |_ _ _ |_ _ _|_ _|_ _ _ | _| |_ _ |_ _ _ |_ |_ | | | _| _| _ | | |_ _ | |_ _| _| _ _|_ _ _| |_ _ _|_| |_ _|_ | |_ _ _| _ | | | _ _ _| |_ _ _| _| _| | |_ _| |_ | | | |_ | _|_| _ _ |_ _ _| |_ | _ _|_ | | |_ _ | |_ _ | | | | |_| |_ _ _ _ _| _ _| _|_ _ |_ _ | _| _ |_ |_ _ _|_ _ _ _| | |_ _ _|_ _| _ _| | |_ | |_ _ | | _| |_ _ | | | | _ _ _|_ | | |_ _ _| | | _|_ _ _ _| |_| _|_ _ |_ _ _ _|_ _ _ _ _| _|_ _ _| | _| |_ _| | | _|_ _| |_ _ _| _ _| |_ | | | _ _ _| |_ _| |_ _|_ | | | |_ _ _ _ _ |_ |_ _ | | |_ _ _| |_ | | | _| |_ _ _ | _|_| _| |_ _ _ _ _|_| |_ _ | _ _ | _| |_ _ _|_ _|_ _ | | _| |_| _ _ _ _ _ _ _|_ |_ _ _ _| _| |_ _ _ _ | |_ _ _ | | | _| _ _|_ |_| | _ _| _| _ _|_ _ | | _ _ _| _ _| |_ _|_ _ | | | |_ _| _ |_ | _|_|_ | | | _ _|_ _ |_| | | | | | | _| _ _|_ | | |_ _ | _ _| | | |_ | _|_ _|_ _ _ _ _| | _ _ _| |_| _ _ _| |_| |_ _ _| | _| | |_ _ _|_ |_ _ _ | | _| _| |_ _ | | _| _|_ _ _ _| _ _| |_ _ _ _ | |_ _| _ _| _|_ | | _ _ | _|_|_ | |_ |_ _|_ _ |_ _ _ _ _|_ |_ _| | |_ _ _| _| _ _| | | _ _| _ _| | _ _|_ _ _ _ _ _| | |_ |_ _ _ | | _ |_| _ _ _|_| |_ _|_ |_ _|_ _ |_|_ _ | _ _ | +| | | _ _|_ _ _| |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| | | |_ _|_ | | |_ | _ | | |_|_ _ | _ _ _ _ | |_| |_ | |_ |_ | | _ _| _|_ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| |_| _ _|_| |_ | |_ | _|_ | _|_ _ |_ |_ _ _| |_|_ _ _ _| _ _ |_ _| _| _ |_ |_| _| | |_ |_ |_ | |_| | _| |_|_ | | _ _|_| |_ _|_ _ _| | _| |_ _ _ _ _|_|_ |_ _ | _|_| _ |_ _ _| |_ _ | _ _|_ _|_ | | _| |_ _ _ |_| |_ | _ _ _ _|_ |_ | _|_| _| _ _| |_ _| _| | _ _ _|_ _ | |_ _| _| | _| | _ _| _|_ _ _ _ | _ _| | | | | | _ _| _| | | | |_ _ _ _ |_ _ _ _| | | _ _|_|_ _|_ _ _ |_ _|_ _ | | _ _ _ _ | _| _|_ _ _| | | _ | | _ | | | |_ _| _| | _| | |_ | | |_ | _ _| | | _ _| _ _ _ |_ |_| _ _|_ | |_| _ _| |_| |_| | _ _|_| _ |_| _| _|_ |_ _| _|_ _|_ _ _|_ _ |_ _ _| _ _|_ |_ _| | _ _| |_ _| _ _| _| | _| | | |_ _ _| _ _ _ |_| | | | |_ _ |_| _| _| _ _|_ |_ _ _ | _ _|_ _| _ _ |_ _ | _ _| |_ | |_ _ _| | |_ _ _| _| | | |_|_ _ _ _ _ _ |_ _|_ | _ _| | | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ | _| | | | |_ _ |_ |_ _ _ | _ _ |_ | _|_ _ _|_ |_ _ |_ _ _ _ _ _ _|_ _ _|_ _ | |_ _ _ | | |_ _| _| _ _|_ _ _| | |_ |_ _ | _|_ | |_ _ _ _ _ _ | _| |_ _ | |_| _| | _| _| |_ _| | | _| _| _ _ _ _ | |_ _ _ _ | | |_ _ | _| |_ _ | _|_ |_ _|_ | _|_ _ _| |_ _| _| | | |_ _ _| | |_ _ | _|_ | _ _ _ |_ _| | | |_ _ |_ _| | _|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ _| |_| _| |_ _ _ _ _| |_ _| _ _| |_ _ _ _| |_ _ _| _ _ |_ _ | _ _| |_ | _ _| _| | _ _| | _| |_ | _|_ _|_ _ | | _ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | |_ _ _ _ _ | | |_|_ _ _| _| |_ _ | |_ _ _ _ _| | | |_|_ _ _ _ _| | | _ |_ _ | _ _| | _ _|_ _ | |_ | _ |_ _| | | _ _ _| _ _ |_ _ | _ _| | | _| |_ |_ _|_ _| |_ _ _| _| _ |_ |_ _| |_ |_ _ | _|_ _ | | +| _| | | _ _ |_ _ |_ _ | _|_|_ | | | _ _|_ _ |_| | |_ _ _| |_ _|_ _ _ _ _|_| | _|_ | |_ _|_ _ |_ _| _ | | _| |_ _| _| |_ _ _| | |_ _| | | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ |_ |_ _ |_ |_ | _|_ _| |_ _ |_ _| _ _ _ _|_ _ _ | |_ _ |_| | | _| _ _|_ | | |_ _|_| _| _| | | |_ | | | |_ | _ _|_ | | |_ _ | _| | _ _| |_ _| _ _ _ _ |_ _ _ _| |_ _| _ _ | | _| | _ _ _ | | |_ |_ _ | _ _ | _|_ _ _| |_ | | | |_ |_ | _ _ _ _ _| |_| _ _ _ _ _|_ _| _|_ _ |_| |_| | _|_ _ _ _ _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ | | _ _| |_ | | _ _|_ _| _ _ _ _ | |_ _ _ _ _ _ _| |_ _ | _ _ _| _| | _ _| | |_ | |_| | _| |_| _ _ _| | _| _| | | |_| | | _|_ | _|_ | | _ _| | _ _|_ | |_ _ _|_| | _| | _ _| |_| | _ _ _| | | _| |_ _|_ |_| | _ _ _ _ | |_ _ _ |_ |_ _| | _ |_ _ _ _| _ _| | |_| _|_ _ _|_| | _ _ _ _ _ |_ _ _|_ _ _|_ _ _ |_ | | _| |_ _ _ _ _| _| _|_ |_| _ _ _|_ | | |_| |_ | | _|_ | _ _|_ _ |_ | | _| _ _ | |_ _ _ | | |_ | | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _ _|_ _ _ |_ _ _| | _|_| | | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | |_ |_ | _ _| | _ _ _ _|_ | | _ _|_| |_|_ _ | | | | | |_ _| _|_ _ _|_ |_ _ |_ _ _| _ _|_ _ _ _ _|_ _ _ |_ _ | | _| |_ _ | | |_ | _| |_|_ _ _| _| _| |_| | _| | | _ _ _ _|_ _ _ _ _| | _ _| _ _ _ _| |_ _ | _| | _|_|_ | | | _ _|_ _ | _ _ _ _| _|_ | _ _ _| |_ _|_ | |_ _ _ | | | _ _| _|_ _ _ _ | | _ _ _| | | |_| |_ | | _|_ _ |_ _| | | |_ _ | _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ _ _ _| | _ _ _ _|_ _|_ _ |_ _ |_ _ _| | | _ |_ _ |_ |_ _|_ _ _ _ | |_| |_| | _ _ _| | |_ _ |_ _| | _ |_| | _|_ |_| _ _| | | | _ _ _| | | |_| |_ | | _|_ |_ _ _| _ |_ _| _| _| _ _|_ |_ | |_ _ _ _ | |_ _ _| _| | +|_| _| |_ _| _|_ | | | _ |_ _ _ _ _| |_ _| | _ _|_ _ | | _| | _ _ | |_ _| | _ _|_ | _ |_ _ | _| | |_ _|_ _| _| | | | _| | | |_ _| |_ _| _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| _ _|_ | | _ _|_ | |_ _ |_ | | |_ _ |_ _ _ _ | |_ _|_ _ |_ _ | |_ | |_ _ _ _ _| | | _ | _|_ |_ | |_ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_| | |_ |_ | |_ _ |_ _ | _ _ _ _|_ | | |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ | _| _ _|_ _ _| | _| | _| | | | _| _ |_ |_ | | _ _ _| |_ _| _| | _|_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ | | | |_| | | _ |_ _ | | _| |_ _ | _ | |_ | | |_ _| |_ _ _|_ _| |_| | _|_ _ _| _|_ |_ _ | | | | | _ _|_ | | |_ _| |_ _ |_|_ | _ _| | _ _ _ _| _ |_ _ |_ | _| |_ _ _ _|_| _|_ _ _ _| | _ _ _|_ _ _ _ _ _| |_ _ | | _| |_ _ | _| |_ |_ | |_ |_| _ | | |_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | | |_ | _ |_ | _|_ |_ |_ _ | _ |_ _|_ | | _| |_ _ | | |_ _ _| |_ _ | | | _| | _| |_ _ | _| | | | _| | | |_ _|_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_| _ _ |_ _ | _ _| | | _ _| | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| _|_ | _|_ _ | |_ | _ _|_ | | |_ _ | _|_ _|_ |_ _|_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | | | _| _|_ |_ | _ _ _ | | _| _ _|_ _| | _|_ _| | | | | | _|_ | | | _ _ _ _|_ |_ _ | _|_|_ _ _ _ _| |_ _| _ | | |_ _|_ _ _ _ |_ _ | _| _ |_ |_| _ _|_ |_ | |_ _|_ | | |_ _ _| _| |_ _ | |_|_ _|_ | | _| |_ _ | |_ | | _|_| | | | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | _|_ _ | _| _ _ _ |_ _ | _ _ _| | | | |_ _ |_ | | | _ |_ _ |_ _| | _| _| | | _ _|_ _ _| | _| |_ | | _| | |_ | |_ | | | |_ _ | _| |_ _|_ | | _| |_ _ _ _| _ _ _| _|_ | | _| _| |_ _ _ _ _| |_ _|_ | _|_ _ | _| | | +| _| |_ _ _| _ _| | | |_ _| | _ _ _ | _| | | _ _ _| |_| |_ _| | | |_ _ _|_ _ _|_ _ _|_ _| _ _| | | _| | _| _ _ _|_ | | |_ _| |_|_ _ _|_ _|_ | _| | | |_ _|_ | _ | _| | |_|_ | |_ _ _ _ _|_| _ _ _ _|_| _ | |_ _|_| | |_ |_ _ | | | | | _ _ _ _ _ |_|_ |_ | | _ | _| |_| _| | _ _| |_ | |_ _ | _| _|_ _ _ _| _ _| | _| _| |_| _| |_ _ |_ _ | |_ _ _| |_| |_ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| | _| | |_| _| _ _| | _| _| _ _|_ | | | | |_ _ | _|_ _ | | _| |_ _| | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| |_ | | | |_| | | _| | | _ _| | |_ _ _|_ | | | | |_|_ _ _ _| | | |_ _ _ _ _ _|_ _ _ _|_ _ _ _| | | _| | | | | | |_| _ | | | | |_ | |_ |_ _ |_| | | | |_ _ _ _ | |_ _ |_ |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _| _| | | | _ _ _| _| _| _| | _|_ _|_ _ |_|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | |_ _| |_ | |_ _ _ | | _| | |_| | | |_ |_ _ | _ _| _|_ _ _ _ _| |_| |_ _ _ _ _|_ | | | _| | |_ | | |_ _ _ _ _| _ _ _| _|_|_ | | | _ _| | |_| | | | _ _ _| | | |_| |_ | |_ _| _|_ _ _ | |_| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ |_ |_ _| |_ _ |_ _ _ |_ _| | _ _| |_ _| _ _|_ _ _ | _ _ _ _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | |_| _|_ | |_ _|_ | | | |_ _| _ _ |_ _ | _ _| |_ _|_ _|_ _| | | | | _|_ _ _| |_ | | |_ _ _| _ _ _| | |_ _|_ _ _ _ | |_ _ _| |_| _| _ _|_ | |_ _ _|_ _ _| | |_ _|_ _ |_|_ |_ _ _ _| | |_ _ _| | |_ |_ _ | _ _| _|_ _ |_ _ |_ |_ _|_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _ _ | |_ _| | | _ _ _| |_ _| | _ _| | | _ _| | | | |_ _ _| _ _| | | |_ _ _| | | |_ | _ _ _ |_ _|_ _ | | | |_ _ _| _| | | _| | |_ _| | | | _ _| | |_ |_ _ | _ _ | |_ _ |_ _| | | |_ _ _ _ _ _ |_ _| | | _ _| |_ _ | | +| |_ _ _| | |_ _ _| | _ _| |_ _ _| | |_| _| _| _ |_ |_| | | |_ | _ _ _ _ | |_ _ | | _ _| | | _ _ _|_ _ | _|_ | _ _|_| _ |_| _ _| _ _|_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _ _ _ _ _ _ |_ _ | _ _ _| _ _ _ _ _ _|_ _| _| | _ _|_ _| _| _ _| | | _ _| | |_ _ _|_ _ | | _| _ _|_ _ |_| _ _| | |_ |_|_ _ | | | |_ _| | _ _ _| _| _|_ | |_ _ | |_| _| _ _| _ _| | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| _| _ _| | | | _| _| | |_| _| |_ _ _ _ _|_|_ _|_ _| | _ _ |_ _| _| | _| | | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| | _| |_|_ _ _ _| | _ _| | | | _| | _ _| | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _| | |_ _ |_|_ _ _|_ | | |_ _ _|_ | |_ _ _ _ _ _|_ _ | | | |_ _ _ _ |_ _ _ _| | _ _ _| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | _ _ _ _ | | _ _| |_ | | | _| |_ _ _ _ |_ _ | _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_| _| | |_ _ | | | | |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | _| _ |_ |_ | _ _ _| | |_ |_|_ | | |_ |_ _ _ |_ _ _ |_ _ _ _ _| |_ _| _|_ _| | | | |_ _ | |_|_ _|_ | | _| |_ _ _ _ | _|_ _ _| | | |_ | _|_|_ | | | _ _| |_ _ | | | |_ |_ | | |_ | | |_ _ |_ _ _ _ |_ _ _ _| _ _| _| _ _|_| _ |_ _ _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | | | | _ _| _ |_ _ _ | _|_|_ _|_ _ _ _ | | | |_| |_ | | | _ _ | _|_ _| | |_ _| _| _ _|_ _ _| _|_ |_ _ _| | | | |_ _|_ _ _ _ | _| |_ _ | _| _| |_ _ _ _ _| _ |_ _ |_ | _| |_ _ _ _ _| _ | _| _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | |_ _ |_| _| _ _|_ _ | | | _|_|_ | | | _ _|_ _ _ _ |_| | | _|_ _ _ _| | _ _|_|_ | _ _| _ |_ _ _| |_ | _ _| | |_ _ _ | | _ _| |_| | _ | | _| | |_ _ _| _ _ |_ _| | | _ _| | |_ | |_ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| |_ |_ _ | | |_ |_ _| | _ _ |_ _|_ _| |_ | | _ _| | +| |_| _ _| | _ |_ _ | |_ |_ _ _| _ _| _ _|_ _| _| _ _|_ | |_| | | | | |_ _ | | _| |_ _ | _|_|_ | _| |_ _| _ _| | |_ | _| | _ _ _| | | _|_ |_ _ _ _ _| | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | _| _ _| _ _| | _|_ | _ _ _ _ | |_ _ _| _ _ |_ _ | _ _| | | | _ _|_ _ _ | |_| |_ _ _| _ _ |_ _ | _ _| | | _| |_|_ | | |_ _|_ _ |_ _| _ _ _| _ _ |_ | _ _| | _ _| | | | _ _| | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | _| _ _ | |_| |_ _ | _| |_ | |_ _ _ _ _ _ _ _ _ | _|_ _ _|_ |_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | |_| _|_ | _ _ | |_ | _| _| | | |_ _ _|_ | | |_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _ | _ _ _ _ | |_ _| | _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _| _ _ |_ _| | _ _| | _| | | | | |_ _ _ _ | _ _| |_ |_ _| | |_ | _|_|_ | | | _ _| | | |_ _ _| _| | _|_ _ |_ _|_| |_ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _| _ _|_ |_| | | |_ | | | |_ _ _ _ _|_ |_ _ _ _ _ | |_ _ _ _ _ | _ _ _| | | _ _ _|_| |_ | | | | _| | |_ |_ _ | _ _| |_ _| _| |_ | |_ _ _ _ _| |_ _|_ _ | | _ _| | |_ | |_ _| |_ _| | | _|_ | _| _|_ _ _ | | |_|_ |_ _ | |_ _ _ _ | |_ _| | | | _|_|_ | | | _ _| _ _ _ _| | |_| |_ _| |_ _|_| |_ _ _|_ _| _ |_ | _ _ _ _ | |_ _| _|_ | | _| |_ _ | _|_ _ _ _ |_ | _ _| | _ _ _ _| | _ | | _|_ _| |_ _ _ | |_ _ | |_ _ _| _| |_ | |_ _ _ | | _| |_ _ |_ |_| | |_ _ _ | |_ _| | |_ _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ |_ |_ |_ _|_ _ _| |_ _| |_ _ _ _ _| |_ _| _ _ _ _ |_ | | |_ _ _ | |_|_ _ _| _ | |_ | _| _| _ |_ |_| | |_ | | | |_ | _ _ _| | |_ _| | | |_| | _ _ _|_ | | |_| |_ |_| |_|_ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | |_ _ _| _| _ _| | | _| _| _ |_ |_| |_ _ _| | +| |_ | | | |_ |_ _ | |_ | _ | |_ |_ _| _ | _| |_ _ _ _ _| _ _| |_ _| | _| | |_ _ _| | |_| | _| | |_ _ _ |_ | _|_ _|_ _| _|_ _ _ _| | _ _ _ _ _ _|_ _ |_ _| | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | |_ |_ _ |_ _ _ _| |_ _ _ _|_ _ | | _| | | _ _ _| | | |_| |_ | | | | | _ | |_ _|_ _ | _ _ _| | | |_| |_ | | | | _| | _ _| | _ | |_ _ |_ _ | | | _|_ | | | | |_ | _| | | | |_ | | | _| | | |_ _|_ |_ _| | | | | | | | |_ _| |_|_ _| |_| | |_ _ |_ | _ | |_ _ _| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | | | | _| | | | _| _|_ _ | | |_ _|_ | | | |_ _| | | | |_ |_| | | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _|_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_| _ _ |_ _| | _ _| | |_ _ |_ _ |_ | _|_|_ | | | _ _|_ | | | | |_| _ _ _| | | |_| |_ | |_ |_|_ _| | | _ | _| | _ _| _| _ _| | _|_ _ _ _ _| |_ _| _ _| | | | | _ _ _| |_ | |_ _ _ | | |_ _ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _ _ _ _| _|_| |_ _ _| |_ | _ _ _ _ _| _ _ |_ _ |_ _| | _ _| _ _ _| | | _| _ |_ |_| _| |_ _|_ | |_|_ | | _ _|_| |_ _ | _| | _| _|_ _ _ _ _ _ | _ _ _| | |_ _ _| |_ | | |_ _ _| | _|_ _| _ _| _ _| _ _ _| _|_ _ |_ _ _ _ _|_| _ _ |_ _| | _ _| | | |_ _ _ _ _| |_ _| _| | | | | _|_ _| _| _ |_ |_| | | | |_ _| _ | | _| |_ _ |_ | | |_ |_ _ | |_ _ _ _ _|_ | |_ | _|_ | _ _ _| |_ _| | | _ _ _ | |_ | | |_| _| | | |_ | |_ _ | | |_ _ _| | _| _|_ _ _ |_ _|_ _ _|_ | | | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | _|_ _ _ _ | _ _| |_ _ _ |_ _ _ _ _ | | | _ _ _| |_ _ |_ _|_ _ | | | |_ | | |_ _| _| _ _|_ | | | |_| _| |_|_ _ | | | | _ _|_ _ _ _| | |_ | |_ _ _ _ _| _|_ _ _ | | _| | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| |_ _ _| _| _ | _ _|_ _ _| _| _ _|_ | | _ _| | +| | |_ _ _|_| | | _ _| |_ | | | | |_ | _| | |_ _ _ _ | | | |_ _ _ _| | _| | _ _ |_| | _|_ |_ _ _ _| |_ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _|_|_ _ _ _ | |_ _ |_ _ _| | _ _|_ |_ _| | _| _| | _ _| | |_ _ _| |_ _ | _| |_ _|_ | | _| |_ _| | | |_ _| _ _ | | |_ _ | | | |_ _|_ | | _| |_ _ _| _| | _| |_| | | |_ _ | _ _| | _|_ | |_| | | |_ _| |_ |_|_ _| | | | |_ _ _| |_ _|_ _ _ _ _ _ _ _|_ _| | |_ _| |_| | | | | |_ _ |_ | |_ _ _| _| _| _| | | |_ | | _ _| | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_|_ _ _| |_| _ _ _|_ _ _ _ _|_ _|_ _ _ |_ _| |_ _ |_ |_ _| _|_ _ | _|_|_ | | | _ _| _ _ |_| | |_ _ _| |_ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_| | _ _ _| | | |_| |_ | | | _ _ _ |_ |_|_ _ _ _ _| |_ _| _ | |_ _| | | | |_ _ |_ _| |_ _|_ | | _| |_ _ | _ _| | _|_ _ _|_ | _ | | | | | _ _ _ | _ |_ _ |_ |_| |_ _ | | |_ |_ _|_ _ | |_ _|_| _| _ _ _ _ | | _| _ _|_ _ _ _| _ _| | | |_ _ _ _ | _| _| _ |_ |_| _ | | _ _ _| _| | |_| _ _| | | _ _| | _| _| _| _ _|_ | |_ _ _ _| _|_ | _ _|_ | | |_ _ |_| | _| |_ _ _ _ | _ _ _ | | |_ | _ _| _ |_ |_ _| _ _ _ _|_ _| _ _|_ _ _ _ _ |_ _| |_ | |_ _ _ | _ _ _| | | |_| |_ | |_ _ | _| _ _ _ |_| _| |_|_ _| |_ _ | | _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_|_ | | _ _|_| |_ _ _ _ _|_ _ _|_ _ |_ _ _ _ | | |_ |_ |_ _ | _| |_ | | | |_ _ _|_ | | | | |_| _|_ _ |_ |_ | | _ |_ _ _| _ _ |_ _ _ _| | |_ _| |_ _| | | | _| | |_ _ _ _| _ _| | | | _| | _| | |_ | _| _ _|_ _ _ | |_ _| | _| _ |_ |_ |_ _ _ |_ _| | | |_ _ | |_ | _| |_ _ _ _ _|_| | | _| _ _ _| | |_ | |_ _ _ |_| | _|_ _ _| _ _ |_ _| |_ _ _| | _| |_ _| _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| _| _ _ _| | | | | | _ _ | _| |_ _ _ _ _| |_| | | | +|_ _| _ _ | | _| _ _| _| |_| | |_|_ |_ _| _| |_ | _| _| | | | |_ _ _ | | | _ _| |_ | | | |_| _ _ _ _|_ |_| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | | _| |_ _ |_ |_ _ _ |_ | | | | | _| | | _|_ | | | _| _| | _ _ _ _ _| | |_ _ _| | |_ |_ _ | _ _ _ | | |_ _|_ _| | _| _ _| | |_ |_ _ | _ _ _| | _| _| |_ _ _ |_ | _|_ _ _ _| | | _ _|_ _ | _|_ _ _ _ _ _|_| |_ _ _| |_ |_ _ _ | _ | |_ _ _ _|_ | |_ _| |_ _| _ _| | | _ _ |_ _ _| _| _| |_ _|_| | | | | _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _|_ | |_ | | |_| _ _ _|_ _ _ _ _| |_ _| _ _ | _| | | | | _ _|_ _ _| |_| _ _ | _|_|_ | | | _ _| |_ _ | | _|_ _ | | | |_ _|_ | | _| |_ _| _| _| | | _ _ | _ _ _ _| | |_| _ _|_| |_| _ _| | _ _| | | |_ |_ _ | _|_ | _| |_| | _| | | | _|_| |_| | _ |_ _| | |_ _ _|_ _| _| _| | |_ | _ _ _ _| | |_ | _| |_| |_ _|_ | _ _ _ _ | | |_ _| |_ | _| | | | |_| _| _ _|_ |_ _| | |_ _ | _ |_ _|_ | |_ | | |_ | _| | | _| _| |_ _ _ _ _|_ _ | |_ _ |_ _| | _ _| |_ _| _ _| _|_ | | _ | |_ _ | _| |_ | | _| _| _ _|_ | _| _ _ _ _ _|_ _| _ _ |_ _ | _ _| | _| | | | _ |_ _ | |_|_ _|_ | | _| |_ _ |_|_ _ _ _ _ _| _ _| _| _ |_ |_| _| _| |_ _ _ _ _| | | _|_|_ | | | _ _| | _ _ _| | | | |_ | _ _|_ | | |_ _ | | _ _ _ _ | |_ _ _ | | |_| | _| _| _| |_ _ _| _| |_| _ | |_ _|_ _ _| _| _ _ _| _| _| |_ |_| _ _ _| _| | |_| _ _| | | |_ _ | | | |_ _|_ | |_ _ | _ | | |_ _| _|_ _| _| |_ _ |_ _| | | | |_ |_| _ _ |_ _|_ _ | |_| _| _ _|_ | | |_ _ |_ | _|_|_ | _|_ | | |_ |_ _ | _| _|_ _| _| _ _| |_ _| | _ |_| |_ | |_ | _ _ _| _| | _ _| | _ _ _| _|_ _|_ | _| | | |_ _|_ | | _ |_ | | |_ _ |_|_ |_ _ |_ |_ | |_|_ _ | | |_ _ _ |_ _ | _|_| _| +| _ |_ _ _ _| | |_ | _| _| _|_ _ _ _ _| | _| _|_ | _ _ _| |_ | | | _| | |_ _ _ _| | | | |_ _|_ _ _ _ _| |_ | | | _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _| |_ _ _| | | _| _ _| | | | |_ _| |_ _ |_| | |_ _|_ _| | | |_ _ | | _ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| _|_ _ _ _ _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _ _| _| | _| _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ |_| _ _ _|_ _ _ _ _| |_ _ _|_ _ | _ _ _| _ _ _| _ _| _ | | _ _| | _ _ _| _|_ _ _| | | |_| |_|_ | _| _| | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| _|_ |_ _ _ | _ _ |_ _ _ | | | _ _|_| |_ | | _ | _ _ _| _| |_ _ _ _ _| |_ _|_ _ _| |_ _ _ | | | _| | _|_ _ | | |_ |_ _ | _ _ _ |_ _| _| |_ _ | _ |_ _| _ |_ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _| _ _|_ _| _| |_ _| | _ _|_ _|_ _ | | |_| _ _ _| | _|_ _ _|_ _ | _ _|_ | |_|_ _ _|_ _ _|_ _ _ _| _ _| |_| |_ _|_ _ |_ _ |_ _ | |_ _|_| | _| |_ _ _ _ _| _ _|_ _| | | | _ _| | | _| |_ _ | |_ _ _|_ | |_ _ _ _ _ | |_ _|_ _ | | |_ _ _ _| _ _| | _ _ |_| |_ | _|_ _| | _|_ | | |_| _| |_ _ _ _ _| | |_ _ | | | _ _ _| _| | |_| |_ | | | _|_ |_ | | _| | |_| _| | |_ |_ _ | _ _ _ _ | |_ _| _| _| _ _|_ | |_ _ _ _ _ _ | _| |_ _ _ _ _| |_ _|_ _ _ _ _ _| | | _| |_ _| | _ _| |_ _| _ _| |_ _ | | _| |_ _ | _| _| _| | _|_ | _| _ _| | _| _| | | |_ _ | _ _ _| _|_ _ _ _| _| | |_ |_ _ |_ _ |_ _|_ | | | | |_ _| | | | |_ _ _ _ _ _|_ _ | | | |_ _|_ _ |_ _ _|_ _ _| |_ _ _| | |_ |_ | | _| | _ |_ | _| |_ _ _ _ _| | _ | |_ _|_ _ _ _ _|_ | _|_ _ | | _ _| | | | _|_ | | _| _ _| | |_ | | _| | | | |_ _ _ _| | |_ | | _ _ |_| _ _| _ _|_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ | _| | _ _| |_ _| _| |_ | | | _| _ |_ _ |_ _| +| |_ _| |_ _ | | | | |_ _ _| _ _| | _ _|_| _| _ |_| _ |_ |_ | |_ _ |_ _ | | | | |_ | _ _ | | _ _|_ _ _| |_ _| |_ _ _ | _|_|_ | | | _ _| _| | | | _| _ |_ _| |_| | | _ | _| | |_ _ _ _| |_ |_ _ | |_ _ | | | | |_ _| | | |_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _ _ _ | |_ _ | _ _ _ _| |_ | | | | |_ _| | |_| _ _|_ _ | | _ _ |_| _| | |_ |_ | _| |_ _ _ _| |_ _ _ _ _| |_ _|_ _| | | | | | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _|_ _ _| |_ |_ _ |_ _| | |_ _ _ |_ _| |_| _ |_ |_| |_| _|_|_ _ | _| _ _ _ _ |_ _ _ _ | | _ _ _| |_ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _ _|_| _ _ _| | | |_ _ _| _| _ _|_ | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| _ _ |_ _ | _ _| | |_ | |_ _| |_ _|_ |_ _ | _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ |_ | _ _|_ _ | _ _ |_ _ | | |_|_ | _ _| |_ _ _ _ _ |_ _ _| _|_ _| _ | |_| |_ |_ _ | |_ _ |_ |_ | _ | | |_| _| _ |_ _| |_|_ _ | | | |_ _ | | | _ _ _|_| |_| _|_| _ _ |_ | |_ _ _ _| |_ _| | | | |_ _ | _ |_ _|_ | | _| |_ _| | | | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _|_ _ | | _| |_ _ _ _ _|_ | _ _| | |_ _| | _ _| _ _ _ _ | _ _ _|_| |_ _ | | |_ _ _ _| _ _| |_ _| | |_ _ _| _| | | |_ _|_ | |_ _| | | _ _ _|_ _ _| |_ | |_|_ _ | | | _ _ _| _ _|_ |_ _| | _ | | | | |_| | _ _ _|_ _ _| | _ _ _ _ | |_ _| _| | |_ _ | | _ _ _ _|_ |_| | |_ _ | |_ _| | |_|_ |_ _ _| |_ _ _ _ | _| | | |_ _ _ _ _ _ _ _ _ |_ _ |_ _ _|_| |_ | |_ _ _ _| |_ _ _|_ _ | | | _ _|_ _| _ _ _|_|_ _ _ _| _ _|_| | _| |_ _ | | _|_ |_ _ _ _ _ | | _ _ | | | | | | _ _|_ _ | |_ _ |_ _| | _|_ _ _ _ | | _ _|_ _ | |_ _ _ _|_ _ _ _| _ | +| | | |_ _ | _|_| | _ _| | | _ _|_ | _ _ _|_ _ |_| _| _ _|_ | |_ |_ _ _| _|_|_ _ | | _ _| | |_| | _| _ _ | | |_ _ | _|_ _ _ _ _| |_ _| _ _ _ _| |_ | |_ _ _| |_ | | _|_ _ _ _|_ _|_ _ _| | _ _ _ _|_ |_ | | |_ _ | | | |_ _|_ _ _ _ _|_ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | |_| |_ | _ _ | |_ _| _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ | | _| |_ _ | |_| _ _ _ _|_ |_ _|_ |_ _|_ _ |_ _ |_ _| | _|_ | | _| _|_ |_ | | | | | |_ _ _| _ | _ _ _ |_ _ _| |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | | | | _ _ _ _|_ _ _| | _| _ |_ _| | | | _| _| _ _|_ | |_ _ _ | | | | |_ _ _ |_ _| _ |_ |_| _ |_ |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | | | _ _| | _ | _| |_ _ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _| | | |_| |_ | |_ | |_ _|_ _ | | _ _ _| | | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| | _ _| |_| | _ _| |_ _| | _|_ |_ | _ _|_| |_| |_ _|_ _ _ |_ _| |_ |_ | | _ _|_| |_|_ |_| _|_ _| | | |_ | _ _| |_ | _| _ _| _| |_ _|_ _ |_ _| _| _ _ _ _|_ |_ | _| | _| |_ |_| |_ _| _| | _| |_ _ _ _| | | | | | | |_ |_ _ | |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ |_ | |_ _ _ _ _ _ _| | _ _| | | _ _| | _| _|_ |_ | | _| _ |_ |_ | |_ | _| | | |_|_ | | _| | _ _ _ _ | | _ _| | |_ |_ | |_ _ | _ _ _ _|_| _| |_ _ _| | | | | |_ _ |_ _| | | | | _| | _| | | |_| |_ | |_ _| | _ _|_ _ | | _| |_ _ | | _|_ _|_ _ | | |_ _ _| |_ | |_ _| |_ _ _ _| | | _ _| _ |_ |_| | |_ _ _| | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ | |_ |_ _ | |_ _ _ |_ | _ | |_ _|_ | |_ _|_ _ _| | |_ _ _ _|_ _ _| |_ | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| | +| | |_ _| _ _| | _ _| | _ _|_ _| | _ _| |_ _ | _ _| _| |_ _ _ _ _| | _| _ _ _| _ _ |_|_ | _ _| |_ _ _| _ _| _ _| |_ _| _ _| | _ _ | _ | _ _|_ _| _|_ _| |_ _| | |_ _| _ _ _ _ | |_ _| |_ _ _| |_ | |_ _ | _| | | | _ _ _ _ | |_ _ _ | _| _ _|_ _ _ _| _ _| _|_ _| _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _|_ _ | _|_| _ |_ |_| _|_ _ | _|_|_ | | | _ _| _| _ _| | | |_ _| | |_ _ _| | |_ _ _ _ _| |_ | | _| |_ |_ _ |_ | | |_| _|_ _ _ _| _| |_ _ _ _ | |_ _ _|_ _|_ _ _ | | |_ _| |_ |_ _ | _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ _| |_ _ _| _ _ _| | | | _ _| | |_ _| | _| |_ _ _ _ _| |_ _ |_ _| _| | |_ _|_ _ |_ _ _ |_ _| | _| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _|_ |_ | _|_| | |_ |_ _ _| _| _ _ _ | _| _ |_ _ _ _| _ _| | _| |_ _| |_ _|_ | | _| |_ _ _| _ _|_ _| | | | | _|_|_ _ _ |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ _ |_ _ _| | | _ _| _ _ _|_| |_| | _|_ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _| | _ _|_ | | |_ _ | | _| _ _| |_ | |_ _ |_ |_ _ _ _|_ _ _ _ _ |_ _ |_ _ | | |_ _ _| |_ | | _| | |_| _| _| _|_| |_ _ _| | | | | _ | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ _|_ | |_ | _|_ _| |_ | | |_ _| | |_| _ _| |_ |_ |_| _| _ _|_ |_ _| | |_ _ _| |_ _|_ _ |_ _| |_ _ _| _ _ |_ _| | _ _| | | _ _|_ _ |_| | |_ _ _ _ _| _| |_ | _|_|_ _|_ _| | _ _|_ _| _|_ _ _ _|_ _ _| |_ |_ | |_ |_| _| | |_ _| | |_ _ _|_ | | | | _ _ |_ _| |_| _| _ _|_ _ _| _ _ _|_ |_| | _|_|_ _ _ _| _| _| _|_ _| | | | _| |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ |_ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | _ _|_| |_ _ |_ _ | | |_ _ | |_ _ _ _ | _|_ _ _| |_ | | _ _| _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | +| _| _ _| | _| | |_| | _ | _|_ _ _| _| | | | | |_ |_ _ |_| | _| _ _ _| | | |_| |_ | | | _ _|_ |_ _ _ _| _ _| _|_ _|_ | |_ _|_ _ _ _ _| _| _ |_ |_ _|_ _|_ |_ _ | | _| |_ _ | |_| _| _ _|_ _ _| | |_ _|_ _ _ _|_| _ | | _| |_ _ | |_ _|_ | _ _ _ _ | | |_ _ | | | _| | | |_ _|_ | | | | _ _| | |_ _| _ |_ _| | _ _|_ _ | | _ _| | |_ _ _ _ _| |_ _| | _ _ _|_ | | |_| | _| _| _ _| | | _ | | _ _|_ _ _|_ | _|_ _ _ _| | _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_ _ _| _ _ _| _| _ _|_ |_ _ |_ _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_ | | |_ _ | | | _| _|_ | |_ | | _ _| | |_ _ _ _ _| |_ |_ _ | |_ _|_ _ _|_ _ | | | _ _| | _| |_ _ _ _ _| _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| |_ _ | | | |_ _ | | |_ | |_ _ | |_ | | |_ _|_ | |_ |_ | | |_ _ | | | | _ | | |_ |_ _ | _ _| _ _ _ _|_ _| |_|_ _ _ | |_ _|_ _| _ | _|_|_ | | | _ _| _ _ _| | | | _ _ _| _ _ _ _ |_ |_ | | | _ _ _ _|_ |_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _| |_ _| _ _| _|_ _|_ | | |_|_ | |_ _ | _ _ _ _ | |_ _ _ _ |_ | |_ _| _| _ _|_ _ _|_ _| |_ _ _| _| _ _ _ _|_ _ _ | | |_ _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ _| _| _|_ _ _| |_ _ |_ _| | | |_ _ _ _| | | _| _ _|_ _ _| _| _| |_ _ _ _ _| _ _|_ _ _ | _ _ | |_ _ | | _ _ _| _| | |_| |_ | | |_ _| _ _ _ | _| | |_ _ | |_ _ | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _|_ | |_ _ | | |_ | |_| |_ _ _ _ | | |_ | _ | _ _| _ _| | _ _ | | _ _| |_ | |_ | _ | _ _ _| _|_ _ | _|_ _| | | | _ _| | |_ _ _| _| | _ | | _ _|_ _ _| _| |_ _ _ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _|_ | | |_ _ |_ | _| | | |_ _|_| _ | _ _| _ | _| _ _| |_ | _ _ _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | +| | | | |_ _ |_ _| | _| |_|_ _ |_ _ _ | _|_|_ _|_ _ | | _ _|_ | _|_ _ _ _ _ _ _| |_ _|_ | | _| |_ _ _ | | _ _ | | |_ _ _ _|_ _ _ _ | |_| _| _| _ _|_ |_ |_ _ _ _ _| | |_ _ _| | | | _ _| | _ _ | _| |_ _ _ _ _ _ |_ _| | |_ _ _| | | _ _ _ _| | |_ _ |_ _|_ _|_ _ |_|_ _ _|_ _ _| |_ _|_ _ _ _ _| _| | |_ _ |_ _|_ _ |_ _| _ _ _ _| _ _ |_|_ | _ _| | _| _ _ _ | | |_| _ _ _| |_ _ _| | |_ | _| | | |_ | |_| | _ _ _ |_ _| _ _ | _ _| |_ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _| | |_ | _| |_ _ _ _ _|_ |_ | _|_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ |_ _| _ _| |_ _|_ |_ _ |_| | | | | _ _|_ | _| | _ |_ | _ _| |_ _ | |_|_ _ _| | |_ _| | | |_ _ _| _ _| | | |_ _|_ | | | | | | |_ _ _ _ | | |_ | |_ | | |_| _| _ | |_| | |_ _|_ _ _ _ _|_|_ |_ | | |_ _|_ _ |_ _|_ _| | | | | |_|_ | | _ _|_| |_ _ _ _ _| _| _ _ |_ _|_ _ | | | |_ _ _ _ _| |_ _| _ _| _ _| | | | |_ | _ _| _ | _| _| | | | |_ _ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| _ _| | _| _ | _| _|_ _ | |_ _ _ _| _ | | _| |_ _ | _| | |_ | _ _| | _ | | _ _| | _ _ _| |_ _ _ _ | _ _|_ _|_ _ _ _|_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | | |_ _|_ | |_ _ _ _ _| | |_|_ _ _ _|_| _|_ _| _| |_ _ _ _ _|_|_ _ |_ _ _|_ _| | | _|_ | |_ _ _ _ _ | _ _ _|_ _| | _| _ _| | |_ _ | _ |_ _|_ | | _| |_ _| _| | | | | _|_ | | |_ | | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _ _| | | | _| |_ | | | | | |_| |_ |_| | | |_ _ |_ | _| | |_ _| | _ _|_ _ _|_ |_| | |_ _| _ _ _| _ _|_ _ |_ | | | | _| | _ _ _ | |_ | |_| |_ _ | _ _ _ _|_ |_ _ _|_ | | _|_|_ | | | _ _| _ _ | | | | |_ _| | _ _| |_ _| _ _| _|_| |_ _|_ _ _ | | |_ _| | | _|_ _| _ _| | |_ | | _ _| | |_ |_ | _|_|_ | | | _ _|_ | _ _ | | | +|_ |_ _|_ _ |_ _| | |_ _|_ |_ _ |_ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ | | |_ |_ _ | _ _| | | | _|_ _|_ _ |_ _| _ | | _| |_ _ | _| |_ _ _ _ _| _| |_ _ | _| _ _ _ | | |_ _ _| _| _ _|_ _ |_ |_ _| |_ | | _ _| _ _ | | | | | | |_ | _|_ | _ | |_ _ _ | _ _| | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ |_ | _ _ _|_ | | |_| |_ | | | | _|_ | _| | |_ | |_| _ |_ |_ _ _| | _| _ _|_|_ | _|_ _|_ | _|_ |_ _ | | |_ | _| _ _|_ _ _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | | |_|_ _ | |_ _ _ _ _ | | | | _|_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | _ _| _ _| _ _ _ _ |_ _ _ _| | | | | _| _| | _| | | | | | _ _| |_ _|_ _ | | _ _| _ _ |_| |_ | | | _| | |_ _|_ _ _ _ _| _| | |_ _| |_ _|_ _ |_ _ _ _| | |_ |_ _ _| _| _ _| |_ | |_|_ _ _ | _ _ _ |_ |_ _|_ _ |_ |_ _ | | _|_ _| |_ | _ _|_ | | |_ _ |_| | | _| |_ _ _ |_ _| | | |_ | _ _ |_ _ _ _| _| _ _ _| |_ _| | |_ _| | | |_ | | |_ _| _| _ _|_ _ _| _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _| | |_ _ _ _| | _|_ _ _| |_ | _ _ |_ _| | |_ _ _|_ | | |_ _| | _|_ | _|_ |_ _|_ _|_ | |_ _ | | _ _| _|_ | _ _ _ _ | |_|_ |_ _ | | _| |_ _ _ _| _ _| _| | |_ _|_ _ _ _ _|_ _ _ |_ _ |_ _|_ _ |_ _| _ _ _| _ _| _| |_ _ | | _ _ _ _ | | | | _| |_| |_ _ _ _|_ | |_ _ |_ _ | |_ | | _ _|_ | | _ _| _ _| | | |_ _ | | |_ |_ _ | _ _| |_ _| | |_ _ _|_ |_ |_ |_ _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _| _| |_ _|_ _ _ | | |_| |_ _| |_ | |_ _ _ _| _| | _| |_ |_ _|_ | _| | _ _ _ | | _| _ |_ _ | _|_| _ _ |_|_ | | |_| |_| |_ _ | | | | | _|_ _ _| | |_ _ _| |_ | _ _ _ _| | |_ _ _ _ _| |_ _| _ _| | _|_| | | |_ |_ _ _ _| _ _| | _| _|_ _| _ _ |_ _ | _ _| | | | | _ _ _| _ | |_ | | | | | | _| | |_ _ _ _ _| |_ _|_ _ | | | | | | +| _ _ _ _ _| _ | | | | _ |_| | |_ |_ |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_|_ | | _ _|_| |_ _| _| _ _ |_ _ | | | | | |_ _ _|_ | | |_ _ _ | _| _|_ _ | | |_ _ | | _| | | _ _|_ _| _ _ |_ _ | _ _| | |_ _| _|_ _| | | |_ _| |_|_ | |_ _ | | | _| |_ _ _|_ _|_ _ |_ _|_ | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | | |_ _ |_ _|_ _|_ | | _| |_|_ | | |_ |_ _|_ _| _| _ _|_ | _ |_ _ _| _ _ |_ _| _ _| | |_ _ |_ _ |_| | |_ | | |_ | _ _ | _ _ _ _ _ | _|_|_ | | | _ _| _ _ | | | _ |_ _| _ _| |_ |_ _|_ | _ _| |_| |_| | | |_ _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| | | |_ _ | | | _ _ _ _| |_ | |_ _ _| _|_ _|_ _ _ _| | |_ |_ |_ _| | _ |_ |_ | _|_ |_ _ _| _|_| | |_ _ _|_ _ _ | | _| | _|_ _ | |_ _ |_ _ | _ |_| | | | _ _ _| | | _ |_ _ _| | _ _| | | _ _|_ _ _|_ _ |_ _ _ _| | |_ _ _ _ _| _| | _ _| |_ _| _ _| |_ _| |_ _ _| | | _ _| | | _|_|_ | |_| _ |_ _ | |_ |_| _ |_ |_ |_ _|_ _ |_ _ _| _| |_ | _ _| | _ _| | |_ _ _ | _|_|_ | | | _ _| | |_ | |_ |_|_ |_ _|_ _ |_ _ _| _ _ _ _|_ |_ _| | | _ _| _ _ | | |_|_ | |_ _| |_ _ |_ _ |_ _ | | _| | |_ |_ | | _ |_ _ | | _| |_ _ | | |_ _|_ | | |_ _ _ _| | |_|_ |_ | _ | _| _ _ _| | _|_ _| |_ _ |_ _ | | _ _ _| | | |_ _| |_ _ | | _| |_ _| |_| |_ | _|_ _| _| | |_ _ |_|_ | |_ _|_ _ _ _ _| |_ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_ |_| _ |_ _| _| _ _|_ _ | |_ | _|_|_ | | | _ _| _ | _| | _ _ _ _| |_ _ _ | |_ _|_ _ _ _|_ | |_ |_ | | _|_|_ _ _ _|_ _ |_ _| _| | | _|_ _ _|_ _ _| |_ _| | _ _ _|_ | | |_ _|_ |_ | | |_ _|_ _|_ _ _| | _ _ |_ _| _| _ _|_ _ _|_ | _| _|_ | _| _ _ _| _ _| _ _ _| |_ _ _| | _ _| | |_ _ _ _| | _ _ _|_ | | |_| |_ | | | |_|_ _ | _| _|_ | | | | | | | |_ | |_ _ _ _ _ |_ _ _| _| _| | | | | +|_| _ | |_ _| | |_| |_ | | _|_ | _| | _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | _ _|_ | | |_ _ | |_ | _ _| _ _| | | |_ _ | _ _ _ _| |_ | |_ | _|_ _ _|_ | | | | |_ _| |_| |_ | | _ _ _| | | |_| |_ | | |_ _| _|_ _ | _ _|_| |_ |_ _ | |_ _ | |_ _|_ | _ _|_ _ _| |_ _ | |_ _ _ _ | |_ _ |_ _ _| | _ _| _| _| | _| _| | |_ |_ _ | _|_ | |_ _ |_| _| |_ _ _ _ _| | | _ _ _| | | |_| _ _| | |_ |_ _ |_ | | |_ _| | _ _|_ _ | | _ _| | | |_ _ _ _ _| |_ _| _ | _ _| | | |_ |_ _ |_| | _ _| _| _ _ _|_ _ _ | _| _| |_ _| | _ _| | | | | |_ _ _| _| | | | |_ _ _ _ | _|_ _|_ _ |_ _| _| _ _ _ _|_ |_| | _ _ _| _ _ _ _ | |_ _| | | | _ |_|_ |_ _ _| | |_ | _ _ _| _| _ _|_| _ _ _ | |_|_ _|_ _ _| _ | | | | | _ _ _| | |_ _| _ _|_ _ _ | _| |_ |_| _ _ _| | | _| _| | _| _ _ _ _| | | | _ _| _ _ _ _| |_ _ |_ _ _ _| _ _| | |_| | | _|_ | | |_ _|_ _ _ _ _|_ |_ _| | | _| |_ _| _| _ _|_ |_ | | |_ _ _ | | _ | |_ | _|_ | |_ _|_ _ |_ _|_ _ _ _ _| |_ _|_ _| | |_ | | | | | _ |_ _ _ |_ _ |_ |_ _ _| |_ | _|_|_ _| | | _ _| | | | _ _| |_ |_ | | |_ _ |_ |_ |_|_ | _|_ _ _ _| _| | |_ _| | |_ _ _|_ | | _|_ _ _ _ _| | |_ _ _| |_ _|_ _ |_ _ | | | |_ _ _ _|_ _ | |_ |_ | |_ _ | _ _| | |_ _ |_ | |_ | |_ _ _ | |_ _| _| |_ | |_ _ _ _|_| _| | |_|_ _ |_ | | _ | _ _ _ _| | _| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _| |_ | | |_ |_|_ _ _ _| | _| |_ _ _ _ _| |_ _|_ _ _| | _|_ | | _ |_ _ _ _|_ _|_ _ | |_ _| _ _| _|_ | | |_ | _ _ _ _ | |_|_ | _| |_ |_ _ _ _ _ | _| | _|_ _ _ _ _ |_ _|_ _ _ | _ _|_ _|_ _ _ _ | | |_ _ |_ | _ _| | _ _ _ _ | | _ _| _ _| |_ _ _ _| _ | | _ _| _ |_ |_ _| _|_ |_ _|_ _ |_ _ |_ _ | _|_ _|_ | | _| |_|_ _ _| | |_ _ _| _|_ _| |_| | |_ _|_ _ _ |_ _ | _| _| _ _| | | _|_|_ | +| _| |_ _| _ _ _| _ _ _ _|_ _|_ _ _ | _| | |_ _| _ _ _| _|_|_ | | | _ _| | | |_| | | |_ _| | _ _| |_ _| _ _|_ |_| | | | _ _| |_ |_ _ _| _ _ _ _| _| | | | | _ _ _ _| | | |_ _|_ _ |_|_ _ _ _ |_|_ _ | | | |_ _|_ | | _| |_ _ _| _| |_| _ |_ |_ | | _ _ _ _| _ | | | _ _ | _ _|_ _ _| _ _ _| | _| |_ _ |_ |_ _ _ |_ | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| | |_ | |_ _| | _ _| |_|_ _ | _|_|_ _|_ | |_ | | | _ | |_ |_ _|_ _ _|_| _ _ |_|_ | _ _| | _| _ _ _ _ | _| | |_ _ _|_| |_ | _|_ |_ _ _| _| _| | | _| |_ _ |_ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | _ _|_ _| _ _ | |_ _ |_ |_ _ _| |_ | |_ _ | _|_ _ | | _ _| _ _ _| | |_ _| _ _| _ _ | | |_ | _ _ _| | _ _ |_ |_ | _|_ _ _ _ | |_ _| |_ | | | | _| _ _| _ _ _ _| |_ | | | _| |_ |_ _ | | | |_ _| _| _ _|_ _ |_ _ _| |_ _|_ | _| _ _ _ _|_ |_ | | | | |_ _| _ _| | | |_| | |_ _|_ _ _ _| _ _ | | _ _| |_ _ _| | | _| |_ _ _ _ _| _| | | _ | |_ _ _|_ _|_ _ _|_ _ |_|_ _ _ _ | |_ _ _ |_ _ _ _ _ |_ |_ |_ _ _| |_ _ _| |_ _ _ _ | | |_ _| _| _ _|_ _ _| | _ _ |_ _|_ _ _|_| |_ |_ | _| |_ _| | _ |_ | | _ | |_ _ _ | |_ _ _|_ _| _| _ _ _ | | |_ _ _ _ |_ | |_ _ _ _ _|_ _ _ |_ _ |_ _| |_ _ _ _ | |_ _ | | | |_ _|_ | |_ | _|_ _ _ _ |_ _| _|_ _ | _|_ _ _ _ _ _|_| _|_| _ | | _ _ _| _|_ _ | | | |_| |_| | | |_ _ _|_ | |_| _ |_ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ | _ _| _| |_ |_ _ _ _ | _ _| | _|_ _ _ |_ _ _ | _| _ _ _| |_ |_ | | |_ _ _ _ _ _ |_ |_ _ | | | _ _ _ _|_|_ _ _| _ | | _| |_ _ | | |_ _ _ _ _ _| | |_| | | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | | | _ _| _|_ | _|_ | | | | |_ _ | | |_ _ _ _ |_ _| | | _| _| _ _|_ | |_ _| _ _ | | |_ _ |_ _| | |_| _ | | |_ |_ _ | _ _ | | | _| _ |_ | |_ _ _ _ _ _ _| _ _| | _ |_ | _| |_ _ _| | +| | _ _ _ _| |_ | _ _ _ _ | |_ _| | _| | _ _|_ | |_ _ _ _ _| |_ _| _ _|_ _| |_ | |_ | _ |_ _ _ _| _ _| _ _|_ _ _| |_ _|_ | _| | | _ _ _ _ _ _| _| _| | |_|_ | _|_ | | |_ | _ _ _| _ _ _ |_| _| | _| | | | |_ |_ _ | _ _| _|_| _| _ _|_ | | | |_| | | | |_ _| |_ _| | _ _ _ _| | | _ _| |_ _ _| | | _| _| | | | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| |_ | _ _| |_ _ |_ _ _ | |_ _ | | | | _| |_ _| |_ | _|_ _ _| _ _ _| | | |_| |_ | | |_ _| _ | _| |_ | | | _| _ |_ |_ _| _ | _ _ _| _ |_ _| _| | _| | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ _ | _| _|_ _ _ | |_ _| _| _ _|_ _ _|_ _| |_ |_ | |_ _ _| _| | _| | |_ _ _ _| _ _| |_ _ |_ _ | |_ _ |_ _ _| _|_ _ _| | _| |_ _ | |_ _|_ _| | |_ | _| _ _ _ _|_ |_ | | | _ |_ _| | | |_ |_ _|_ | |_ _ _ |_ _ _ | | _ | | | |_ _ _| |_ |_ _| | | |_ _|_ _ |_ _ | | | | _|_ _|_ _ |_ _ _ _| _ _|_ _| _| _ _ _ _ _| |_ | _ _ _ _ _| _ _|_ |_ |_ | _ _ _ _ | |_ _ |_ |_ | | _ _|_ _ _ _|_ |_ | | _| _ |_ |_ _ |_ | _| | |_ | _ _| | _ | | |_ _| _ _| _ _ _| _ |_ |_ |_|_ |_ _ _ _| | _| _|_| | _|_ _| _|_ _|_ _ | |_ | | _ _ | _| | | _ _|_ | | | _ _ _ _ |_ _ | _ _| |_ _ | | _| |_ _ |_ _| | _ _ _| | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _| |_|_ _ | _| _ | | |_ | | _| _| |_ _ _ _ | | |_ | |_ _ _| _| _|_ |_ _ _ _| _ _| | _ _ _ _|_| _ _|_ _ _ _ _| | |_ | _|_ _ _ |_ | | | | |_ |_| _ |_ |_| _| | _ _ _ _ _ |_ _ _| |_ _| | | | _ _ _ _ |_ _| | |_ _ _| | | | _ |_ _| _ _ _| | _ _| |_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _| _|_ _| |_ _ |_ _| |_ _|_ _ | |_ _|_ _ |_ _ | _ _| | | _| |_ _ _ _ _| | _ _| | _| |_ _ | | | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | _| _| _ _|_ | _ _ _ | _ _| | |_| |_ _ _| _|_ |_ _ _| +| |_| _ _ _ _|_ |_| _ | | _| |_ _ | | | _|_ | _ _| |_ _ _ _ _ |_ _|_ | _ _ _ _| |_ | | |_ |_ | | |_ _ _| _|_ _ | | | | |_ _ | | _ _ _| _|_ |_ _| |_ _ |_ _| _ _| | _ _ _| _ _|_ _ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _| |_ _ _ _ _| | |_ | |_ _| | | |_ _ |_|_ | _|_ | _ _ _| | |_ |_ _ _ _|_| | | | |_ _ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _| _| | |_ _ _ | _ _|_ _ _ _ _|_ | |_| |_ |_ _ | _ _| | |_ |_ _ | | | |_ _|_ | | _| |_ _ |_ _| |_ |_ |_ | |_| _| _ _|_ | _|_ |_ _ | |_ |_ _ |_ |_ _ _ _| | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| _| |_ _| | _ _ _ | _|_ | _ _| | _ | _ | _|_ _ _ _| | | _| _| | | | | _| _ _ _| _ _| | | _| | |_ _| | _ |_ | _ _ _| |_ _ _| | |_|_ | _| | _| |_ |_ _ _| |_ | |_ _ _|_ | _| _ _|_ | _ _ _ _|_ _ _ _ _ | |_ _|_| | |_ _| _| _ _|_ _ _|_ |_ _|_ | _|_ _ | | |_ | | _ _ _ _| _| _ | |_ _ _ _ _| _|_ _ _ |_ | | | |_ _ _ _| | _| _ _ _|_ _ | | _| |_ _ |_ | | | | | |_ |_ _ _ _ _| |_ _| |_| _| _ _|_ | |_ _ |_ _ _| | _|_ | _|_| |_ _ _| | _ _|_ |_ _| _| _ _|_ |_ _ |_ _ _ _ | |_| _|_ _|_| _ | | | _ _ _ _ _ _| | _| |_ _ _| |_ _ _| |_| _ _ _ _|_ _| | | _|_ | | | _ _| _|_ _| | |_ _ _| | | _ _| |_ _| | |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _ _| | | _| | | |_ | | |_ _ _| | | | _|_| | _|_ |_| _|_ |_ | _| |_ _ | | |_ _ _ | _ _ _| _ _ _ |_| | |_ _| | | _ | _ _ _ _|_ _| | | |_ _| _| _ _|_ | |_ _ _| _ _ |_ _ | _ _| | _ |_ _| |_ _ | | | _ _| _ _| |_ _ _|_ _| | _ _| | |_ _ |_ | | _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ _ |_ | | |_ _ |_ _ _ _ | |_ _ _ | |_ _ |_ _| _ | | |_ _ _| _ _| | |_ _ _| _ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _| |_ _ _ _ _| | |_ _| | |_|_ _ _ _| | _ _ _| | | | +|_ _ _ _ _| |_ |_ _| | |_ _ _| _| | | | | | _|_ _ _ _ _| |_ | | | _| _| _| _ |_ |_ _| |_ |_| |_ _|_ _ |_|_ _|_ | | |_ _| |_ _ | _|_ _ | |_ | _ _| | _|_ |_ _ | | _ _|_ _ | _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ _ | |_| _| | | _|_|_ | | | _ |_ _ |_ _ _ |_ |_ | _ _|_ _ _ _ _|_ _ | | _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | |_ _ _| _|_ _ _|_| _ | | | _ _ _ _ | |_|_ |_ | | _ _|_| |_|_ | | _| _| | _|_ _ | | |_ |_ _ | _ _ _| _ _| |_ | | _| |_ _ _ _ _| _ |_ _| | _| |_ |_ |_| | _ _| |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| _| _|_ _ | |_ _| |_ _ | _|_ | _|_ | |_ _|_ _|_ _ _ | |_ _|_ _ | |_ _|_| _|_ _ | _ _| | _ _| | | | _|_ _|_ _ |_ _| _|_ _ _ _|_ _ _ _ _|_ _ _ _ _| |_ | | | |_ _| _| _ _|_ _ _|_ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _|_ | | |_|_ | _ _| | _ _ _ _ | _ | |_|_ _ _| | | |_ _| |_ | _| _|_ | | | _| | | |_ _ _| _| _| _| |_ _ _ | _|_ |_ _ _| _ _| | |_ _ _|_ | | _| |_ _| |_ |_ | _ _ _ _|_ |_ _ | _| |_ _ _ _ _|_|_ _ | |_ | _|_ _| |_ _ |_ _ | _| | | _| _| _| |_ _ _ _ _| _ _ | | _| | _| | | _ _ _|_ _| | | _ _| | _|_ |_ _ | _| _ |_ |_ _ | _ |_| _| |_ _ _ _ _| |_|_ | | _ _ _ _|_ _ _ _|_| |_ |_ | _ _|_ _ _ _ |_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ | | _|_ _ _ _| |_ | |_|_ _ _ _ _|_ _|_ _ _ _ |_ _ |_|_ _ _| |_ _|_ |_ _ | | |_ _|_ _ |_ _ | _ _ _| _ |_ _ _| |_ | | |_ _|_ _| _ |_ | _|_|_ | | _| |_ _ _ _ _| | _ _ _| | | |_| |_ | | | _| |_ _ | | |_ _ _| _ _|_ _ _ _ _| _ _ |_|_ | _ _| | | _| | | | | |_ _| | | _|_|_ | | | _ _| _| _ | | _|_ _ _ _|_ |_ _| |_ _|_ | _ | | |_ _| | _ _| | _ _ |_| |_ | |_ | _| | |_| | | | | |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ |_ _ _ _ _|_ _ |_ _|_ _ |_ _ _|_ _ | |_ _| | | | +| _ | | _ _|_ _ _| _ _|_ | _ _ _ _ _| |_ |_ _ _ | _ _|_ _ _| _| | _| | _| _| _ _|_ | | |_ |_ _ | | |_ _ |_ _ _ _| | |_ |_ _ _|_ _| _| | | _| | _ _| | | _ |_ _| | | | |_| _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _|_ |_ _ _| _| | |_ _ _ _ _| |_ _| _|_ |_ _ |_ | _ | | |_| _ _ _ _ | |_ _| | | | _| _| | | |_ _|_ | |_ _| _ | | |_ _| | _ _ _| _ | | | |_ _| _ | | _| |_ _ | | _ _|_ | | |_ _ | | |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ |_| | |_ _ _ | | _ _| | _| _|_ _ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | |_ _ _| _| | _ _ _|_ |_ |_ _| |_ _ |_|_ | _ _ _ |_ _|_ _ | |_|_ |_| |_| _ | _| | | | _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _|_| |_ | _ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ | |_ | _|_ | | |_ _|_ | |_ _ _ | _ _| |_ _ _ _| _|_ _ _ _ _ _|_ |_| | _| |_| |_ | |_ _ _| _| |_ _ _| _ | | | |_| _ _ _ | | _| _| _| | | | | _ _ _ _| |_ _ _| |_ | | | |_ _ | _ _ _ | _|_ | | |_ |_ | | |_ _ |_ _ |_ _| |_ | | | |_ _ _ |_ | _|_ _| |_ _|_ _ _| |_ _ _| _ _ |_ _ | _ _| |_ _ |_ _| _| | _| _ _|_ | | | |_ _ _| |_ _ _ | |_ _ | | _ _ _ _| |_ | _ | | | | _| | _ _ _ _| _| _|_ | |_ | _|_|_ | | | _ _|_ _ _ _| | |_ _ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _ |_ |_ | |_ |_ _|_ _ | |_ _ | _ |_ | _ | _|_| |_ | _ _ _| |_ | |_ _ _ _ _| | |_ _| _ _ _ |_ _ | | | |_ _|_ | | _| |_|_ | | _ | | |_ | | _|_ _ | _ _ _| | | |_| |_ | | |_ _ _ _|_ _ _| | |_ _| |_|_ _ _ _ _| |_ _| _ _ _ _| | _| | | _ _| _ _| |_ _|_ _| | |_ |_ | | _| | _ _|_ | |_ _ _| _| | _|_ _ _|_ _| _|_ _|_ _| | | |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _|_|_ | |_ | | _ _ _ _ | _ _ | |_ _ |_ _ _| | | | _ _| |_| +|_ | |_| | _ _ | |_ _ _|_ _| _ |_ |_ | | |_ _| | _ _| _ _ _|_ |_ _| _| |_ _ _ _ _| | | | _ |_ _| |_| _ _| | | _|_ | _| |_| _ _ _| | _|_ _ _ _| | _ _|_ _| _ _ _|_ _|_ _|_ _ _ _| _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| | | | _ _ _| _| |_ _ _ _ _ _| _| _ | |_ |_ _|_ _| |_ |_ _ | | _| |_ _ | | | |_ _|_ _ _| |_ _|_ _ _ _ _| _ |_ | |_|_ _|_ _ |_ _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _| |_ _| _ _| | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ | | |_ | _ _| | | | _ _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | | _ _|_ | |_ _ _| |_ |_ |_ | | |_ _ |_| | | _| _| _ _ |_ _| | | _ _|_ |_ | |_| _| | | | | | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ | | |_ | _|_| _|_ _ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_| |_ _| _ _|_|_ _ _|_ _ |_ _| |_| _ | |_ _ _ _|_ | | |_ _ _ | _ _ _ _ | |_ _ _| | |_ _| _| | _ _ _|_ | _ _|_ | |_ _|_ _ _| |_| | | |_| _|_ _ _ _| | |_ _ _| | _| _| _ _|_ _ _| _|_ | _| | | | |_ _| _ _ _| | _|_ _|_|_ _|_ | |_ _|_ |_ _ |_ |_| _ |_ _ _|_ | _ _ _| | _ _ _ | _ _ _| | | |_| |_ | | _| | |_ | _| |_ _ _ _ _| | |_|_ | _ _ _ _ |_ _|_ _ | | |_| _ _ _ _|_ |_ | | | |_ _ | _| | _ _ _ _ _ | | |_ | |_ _ _ _ _| |_ _|_ _ _ _| | | | | | _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| |_ | |_ | |_ _| |_ |_ _ _ | |_ _ _| | | _| | | |_ _| |_ | _|_ _ _ _| _| | _ | _|_ |_ | | _ _ _ _| | _| _ _| | |_ |_ _ | _|_ |_| |_| _|_ _ _ _ _ _| |_ _ |_ _| |_ _|_ | | _| |_ _ _ _ | | |_ _| | | _ _ _ _ _ |_ | _| _|_ _| |_| |_ |_ | |_ _ _ _| _|_| | _| _| | _ _|_ | _| _ _ _| _| _|_ _ _ _ | | _ _ _ _ _ _|_| | _| | | |_ _|_ | | | _| | | |_ _ | _|_ | |_| _ | | _| | _ _| _ _| | | | _|_|_ _ _ |_ | +| _|_ _ _| _| | | | _ | | _ _| _| _ _|_ | _|_ | _|_ | | _ _| | | | | |_ |_ _ | _| | | _|_ |_ | | _ _| _|_ | _|_ _ _|_ _ _ _ _ | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | _| _| | | |_ _|_ | _ _ |_ | | |_|_ |_ _| | | |_ _ |_ | |_ | |_ _ | _ _ _| _| | |_| _| | _ | _| | _| | |_ _ _|_ | | |_ _| _ | | | _ _ | _| | |_ _ _|_ _ |_ |_ _ | | | | | | _|_|_ | | | _ _|_ _ _ _| | |_ | |_ _ _ _| _ _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | |_| _| | _| | |_ | _|_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _ _ | | _ _ _ _| _ _|_ _ _|_ _ _| | _|_ | _|_ | | _| | | _ _ _| |_ _| |_ | |_ _ |_ _ _| |_| | |_ _| | |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| _|_ _|_ _ _|_ _ |_ _ _ |_ _ |_ | | | _|_|_ | | | _ _| _ |_ _| | | | _ _| _ _ _ _ | |_ _ |_ | | |_ _| |_| | _| | | _|_ |_ _ | | _| |_ _ | _|_ _ _| _|_ |_ _ | _| | | |_| | _ | | _ _|_ _ | |_|_ _ _ _| _ _ |_ _ | _ _| | | _ _| | | _ _ _ _| _| _ _| |_ _|_ _ |_ _ _| _| | | _ _ |_ _| | _ _| |_ _ |_| _| _|_ _| _ _ |_ _ | _ _|_ _ | _|_ _ | _|_|_ _|_ | | _| |_ _ | |_ _ _| | _ _ _ _ _ |_ _ | | | | _ _ _ | _ |_ |_ |_ _ _| |_ |_ | |_ |_ _| |_ | _ _| _ |_| | _| _|_ _ _ _ _ _ | _ | | _ _|_ _| |_ |_ | _|_| |_ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _ | | _ _|_ _ _| _ _|_|_ |_ _ |_ _ | |_ _ | _|_|_ | | |_ | _| |_|_ | _ _| | |_ _ |_ |_| _| _| _| |_ _ | _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ | | |_ _ _ _| | _| | _ _| | | |_ |_ _ | _ _| _| |_ | _| |_ _| | | | |_ | _ _| _| _ |_ |_ |_|_ _ _ _|_| |_ _| _| | |_| _|_ _ _| | _| | _| _ _ _| _|_ | | _| _| | | _| |_| | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_|_ _ _ _ _|_ |_ _| | |_ _ _|_ _ _ | _ _| |_ _|_ _ _ | |_ _| | +| | _ _ _ _| _|_ |_| _|_ _ _| _| |_ _ _ _ _|_| | |_ _ |_|_ | _ _| | | |_| |_ | | |_ | | | _| |_ | _| _| |_ | |_ | |_ _| _ _ _ _ | |_ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _ | | |_ _ _ _ |_ _| _|_ _ |_ _ _ _ _ _|_ _ _ _ | _| | | |_ _ _| | | _|_ _ _ | | | _ _ _| |_ _| |_ _| | |_|_ _ _ _ _ _ | _| |_ _ _ _| | _|_| | |_ _ _ _ _ _| |_ _| _ |_ | | | | | | | _ | | |_ _ | | | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | _ _ _| _| _| |_ | | | | | | _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| _ _|_ _ _|_ _ _ _| |_ _| | _| _ _|_ _ _| |_ _| _ |_ | |_ _ _ _|_ |_ _ _ | _|_|_ | | | _ _| _ | _ _| | |_ _ |_| _ _ _ _ | |_ _ _ | | _|_ |_ _ _|_ _ _ _ _| |_ _| _ _ |_ _ | | | |_| | |_ _ | | _| |_ _ |_ | _|_ | _| _ _|_ _| _| _|_| | | _| | |_ _ _| | |_ | _ _ _| | _| | |_| _| |_| |_ | |_ | |_| | _ | _|_ _ | _ _ _|_ | | |_| |_ | | |_ | _|_| _ _ _ _| _| |_ _ |_ _ | |_ _ _ | | _|_| | _ _|_ _ | _|_| | | _ _ _| _| | _ _ _| | | |_| | _ _| |_ _ _| | | | | | |_ |_ _ | _|_ | |_| | | | |_ _| | |_ | | |_ _|_ |_ _ _| _| _| _ _|_ _ _| | |_ _ _ _ |_ |_ _| | |_ | | | _ _| |_ | | _ _| |_ _| _| _ |_ |_ | | | _ _ _|_ _| _| _|_|_ | | | _ _| _ | _ | |_ | |_| | _ | _|_ _ |_ | _ _ |_ _| | _| |_ _ _ _|_ _ _| | | _|_| | | | _ |_ _| | | |_ _ _| _|_ _ |_ _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| _ |_ _ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _|_ _ _| | |_ _ _ |_ _| |_|_ | |_ | _| _| _ _|_ |_ _ | _ _ _ _|_ | _ _| | _ _| _ | _|_ _|_ | | |_ _ | _| _ _| | _ _ _ _|_ | _| _ _|_ _|_| _| | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | _ _ | | _ _| | _ _| |_ | _|_ _ _ _ |_ _|_ _ | | +| |_| | | _ |_ |_ | _ | | |_ _ _ _ _ _| | _ |_ _ |_| |_ | | |_ _| _|_|_ |_ _| | | |_ |_ _| _| _ | | _ _| _ |_ _ | | _| |_ _ | |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | _ _ | _ _ _| |_ _ _ _ _ _ |_ |_ _ |_ _|_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | _ _| _ | | | | _| _ _ _| | |_ _ _| |_ | _| |_ _ _ _ | |_ _| |_ _ _ _ | _ _| _ _ _|_| |_ _| |_ | |_ _|_ _| |_ _ _|_ _| | |_ _|_ _ |_ _| _| | | |_ _|_ | | | |_ | | | |_ _| | | _ _ _| _| _| |_ | | | |_| | | _ _ _ _|_ | | _|_|_ | | | _ _| _ | _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| _ _ |_ _ | _ _| | |_ | | _ _ _|_ | _| _ _|_ | _ _ _ | _| | |_ _ _ _ _| |_ _| | | _|_ _ | | | |_ |_ _ | | _| |_ _ | _| |_ _| | _ | _ _ _ _ _ |_ | | | _ _ _| |_ _| |_ _| | |_ _ _| | | _|_ _ _ | |_ _| _ _ |_ _ | _ _| | | | _| _ _ _|_| | _|_ _ | | | | | | _|_ _ _ _| | _| |_ _ _ _| _ _|_ _|_ _ _ _| _|_ _ | _ |_ _|_ | | _| |_ _ |_ _ | | | _ _ _| _ | _| | | |_ _ _| | | | _| | _| _ _|_ _ _| | |_| _ _ _|_ _| |_ _ | | | |_ _|_ | | | | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ _ _ _| |_ _|_ _ _| | | |_ _|_ |_ _ _ _ _ _ _ _|_ _ _| | _ _| _ _ _| _ _ |_ _ | _ _| | |_ |_ |_| | _ _|_ _ _| |_ _ | | |_ _ _| _| _ _|_ |_| |_ _ _| _ _ |_|_ |_ _ _ _| |_ _| _| | |_ _| _| | _|_ _ _|_|_ | | | _ _ _|_ _ _| | | | | _|_ | | _ _ _| _ _ |_ _ | _ _| | _| | _| _ _| |_ | _ _ _| | _ _| | |_ _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | | |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| _| _ _| | | _ _| |_ _| | _| |_ _ _ _ _| | |_ _ _| |_| |_ _ | |_ _ _ |_ _ _| _ _ |_ _ | _| |_ _ | _ _| | _ _ _ | | |_ _| _ _ _ _ _|_ |_ _| | |_ _ _ _ _ _ | | _ _| | _ _| | | | |_|_ _| _ _| | | | |_ _ _| | |_ | _ _ _ | _ |_ | +| | _|_ | |_ _| |_ _ | _ _|_ _ _|_ |_ |_ _ _ _ _|_ _ _ _|_ _ _ _ | |_ _ _| _|_ | |_ _ _| |_| _|_ _ | |_ _ | | |_ | _|_ | _| | |_ _ _|_ | _| _|_ _ |_ _ | _|_|_ | | | _ _| _ _ _| | | | |_ _ | |_ _| | |_ _ _ _|_ _ | _ _ |_ _ _ _| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ |_| | | |_|_ |_| _ | |_ _ | _ _|_ _ | | | _ | | _| |_ _ | | _ _ |_|_ | | | _ _ _ _|_ |_|_ _ _| |_| _|_ |_| _ |_ |_ _ _ |_ |_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _ _|_ _ _|_ _|_ |_ _ | _|_ _ | _| | | _ _ _|_ |_ |_ _ _| _ _ _ |_ _|_ _ _ _ _| |_ _| _| _| | _| | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _ _|_ | | |_| |_ | |_ _ _| |_ _| _ _ _|_ _ _|_ _ _ _|_ | _| |_| | | _|_ |_ _ _ _ _ | | | |_ _ _ _| |_ _|_ | _| | |_ _ _| _| | | | | | _| | |_ _ _| | |_ _ _ |_ _| |_| _ |_ |_ _ _| | | _| _ _ _|_| | | _| _|_ _ _|_ | | |_| |_ | | | | | | |_ _ _ _ | | _ _| | | | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | |_ |_ _ | _ _| |_ _|_ _ | _|_ _| | _| |_ | _ | | |_| _| _| | _| _ _ |_ | | |_ _ | _ _ _| | _| _ | | |_| |_| | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _| _ | | _ _ _| | | |_| |_ | | | _| _| _| | _ _ _| _ _| | |_ _ | _| |_ _ _ _ _| | _ _ _| | | |_ _ _| | | _ _ | _| | | | _ _| | _ _ _| |_ _| _ _| | | | | | |_ _ _ |_ _| _ _ _| | | |_| |_ | | | _| | | | _| | _|_ _ | _|_ | _ _| | | _ _ | | | _| _ |_ _ _ _| _ _| _ | _ _|_ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ |_ _ | _ _| | | | | | | | |_ _| _ _ _ |_ _| _| _ _| _ _| | | | | _ _| _ _ _| _| | |_ _| _|_ _ _|_ |_| _ _ _| | |_ _ _ _ _ _ _ _| _ _ _| |_|_ _ _ _ | |_|_ | _ _|_ | _ _| |_ _|_ _ _ |_ | | |_|_ | _ _| |_ _ _|_| _ |_|_ |_ _ _| +|_ _| |_| | | |_ |_| _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | _ _ _| _ _| _| _ |_ | | _ _ |_ | _| |_ |_ _| | | | _| _ _ _ | | _| _ |_ _ |_|_ _ _ _ _| |_ _| _ _ _|_ _ | | |_ | _| | | _ | |_ _ _ _ | |_ _ | | | |_| _ _| |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| |_ _|_ _ _ |_ _ | _ _| |_ |_ _| | | _ _| | | |_ _ _|_ _ _| | | _|_ | | | | | |_ _ _| |_ | _ | |_ | _| _| _ _|_ | _ |_ _|_ _ _ _ _| | _ _| | _ _ | _| |_| _ | |_ _ _| |_ _ _ _| |_ | | |_| | | | | | _ _ _| | |_ | _ _ _ _ _ _ |_| | _| _|_ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | |_ _ | _|_ _|_ | | _| |_ _ | |_ _ | _ _ _ _ | |_ _ _ _ |_ _ _ _ _|_|_ _ |_ _ _ |_ _ | _| |_ |_| _ |_ |_ | | |_| _|_ | _ _ | | |_ _ _|_| | _ _ _| | _|_ _ |_ _ _ _| _| _ _|_ |_ | _| |_ _| _ _ _ _ _ _| |_ _ _ _| |_ _ | |_ _|_ | | _| |_ _| |_ _| | | | |_ | | _|_ _|_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _| | _ | _|_ |_ |_| | | | |_|_ |_ _|_ | _| _| _ _ |_| | |_ _| | | |_ _ _| _|_ _| | _| |_|_ |_ | |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | |_ _|_ _ | _|_|_ _|_ | | _| |_|_ |_ _| | _|_ | _| | _|_ _ _| | |_ | _| _ |_|_ _ | |_|_ _|_ | _ _| | | | _|_ _ _ _|_ |_ _| | |_ _|_ _ |_ _ _| _| |_ _ _| | | | |_ |_ |_ _ |_ _ | |_|_ _|_ | | _| |_|_ |_ _| |_ | |_ | _| | _ |_| | | |_| | | _| | |_ _|_ | | _|_ | | |_ _| |_ _ | _| _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _|_ | | |_| |_ | |_ _| |_| | |_ |_ | | _| _ |_ | _ _| | _ _| _ _| | | | |_ _|_ _ | _ |_ _| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _|_ _ _ | _| |_ _ |_| | _ _| |_ | |_ _ _ |_ |_ _ _| |_ _ | |_ _| |_ | _ _ _| | | _ _| _ | +| _ _|_ | | | |_|_ | | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | _| _ _| _| _ _|_ |_ _ |_ | |_ |_ _| | _ _| |_ | | |_ |_ _ |_| | |_ |_ _ _ _|_ _ _ _ | _ |_ _ _| _ _ _|_| |_ _ | _| |_ _| | |_ _ | _| |_ _ |_ _|_ |_ |_ |_ |_ _ _| | | _ | _|_|_ | | | _ _| _| | | |_| | |_ _ _ | |_ _| _|_| | |_ _|_ | _|_| _| | _| |_ _ _ _ _ _ _ _| | |_ _ _ |_ _| | |_ _| _| _ _|_ _ _| | | |_|_ _ _| | _| |_ _ _ _ _| | |_ _ _ | | | _ _| _ _ _ _| |_ |_| |_ _ _| |_ _|_ _ | | _ | _|_ _ _|_ | |_ _|_ _ _| | _ _ _ _|_ _ _|_ _ _ _ | _| |_ | |_ _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ _| | |_ _ _ | | |_ |_ _ | _ _ _ |_ _ | | _| |_ _ | | | _ _ _ _ | |_ _ |_ | _ _|_| _| _| _| _ _|_ | | |_ | | _| | _|_ _ _| _ _ |_ _ | _ _| | | _ |_ _ | _| _| |_ _ _ _ _| | | | | |_ _ _| _ _ |_ _ | _ _| | _| | _ | | |_ |_ _ | _ _ |_ _| |_ _ |_| |_ _ _ | |_ _ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _|_ _|_ _ _ _ _| _ _ _| _|_ _ _ _ _ _ _ _| | | |_ _| |_ _ _| | _| _|_|_ _ _ |_ _ _ _|_ |_ _ _ _ _ _|_ _ _ |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | | _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ _ | _| | | | | | |_ |_ _ | _ _ |_ _ |_|_ _ | |_|_ _ _ | |_ |_ _| | _| |_ _ _| | |_ _ | | | _| |_ _ _| _ _ |_ _ | _ _| | |_ _ |_ _ _ | |_ _| | | | | _|_ |_|_ | | _| | |_| _ | | |_ |_ _ | _ _ | | |_ | | _|_ _|_ _ | | |_ _ _ _| _ _|_ _ _ _ _ _|_ _ |_| | |_ _|_ _ |_ _ | |_ |_ |_| _| | | |_ _|_ | |_ _ _ | | | |_ _ _ | |_ _|_ | | _| | _ _ _ _| | _| _| | |_ _| | _|_ | _|_ _ | |_ | | | |_ _| _| |_ | | |_ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ _ | |_ _ _| | | _| _ _ _| | | |_ |_ | _ _ _ | |_ _ |_| | _|_ _ | | |_ _ _ _| | | +| _ | |_ _| |_ _ _ _| | | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| | |_ _ _| _| |_ _ _ _ _| | |_ _|_ |_ | _| |_ | | | | |_ | | |_ | |_ | | _ _ _ _ | |_ _| | |_ | _ _| _| _ |_ |_ | |_ _ _ | |_ _ _ |_ _ _| _| | _ | | _ | | _|_ _ _|_ _| | |_ _ _ _ _| |_ _| _ _ _ _| |_ | | _| | _|_ _|_ _ |_ _ _ | |_ _ _ _| _ |_ _ | | _ _ _ | | _ _ _| | _ | | _ |_ | _ _| | _ _ | _| |_ _ _ | | |_ | _ _ | | | _ |_ _| | |_ | | | _ _ _ _|_ |_| _|_| |_ _ _ |_ |_| | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _|_ | |_ | | |_ _| _| _ _|_ | | | _ | | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| | |_ _ _| _| | |_ _|_ _ | | _| |_ _ |_ | |_ | _ _ _| | _| |_ _ _ _ _| |_ | | |_|_ | |_ | _ _ _| | | |_| |_ | |_ _| | _ _| |_ | |_ _ _ _ _ | |_| | |_ _| | _ _ _|_ | | |_| |_ | | _ _| | | | |_|_ | | _ _|_| |_ _ _|_ | |_ | | _ |_ _|_ _ | | |_ _ | _|_|_ | | | _ _|_ _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | |_ _ |_ _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_ _|_ | _ _ _| | | |_|_ | |_ _| | _ _ _| _| _|_|_ | | | _ _| | _ _ _| | | _| | | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _ |_ | | _ _|_ |_| _| _ |_ _ | |_ | _|_ _ _| |_| | | | | | _ _ _|_ | | |_| |_ | | | _ _| | _ |_ _| _| _| | | | | _ _ _| _ _|_|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ |_ _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | |_ |_ _ |_ _ | _| |_ |_ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ |_ | | |_ | |_ _ _ _ _ _|_| _|_ |_ |_| _|_ _| |_ _ |_ _| | | |_|_ |_| _| | _|_ _| |_ _ _ | |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _ _| | |_ | | | | |_ | _ _ _| | |_ _ _ | |_ _| |_| |_| | | _ _|_ _ _ _ _ _| | _ _| _ _ _| +| _| | _ _ | | | _| | | | |_ _ | _|_|_ | | | _ _| | _ | | |_| | _|_ _ _ _ | | _ _ _ _ |_|_ _ _ _ _ _ _| | | _| |_ _| |_ _ _|_ |_ _| _| |_ _ | | _| |_ _ | |_ | | | _| _| _ _|_ | | | |_ _ _| _ _ _| _ | | |_ | |_| | _| | | |_ _ _ _|_ _ _ | _ | _ _|_ _| _|_ _| |_ |_ | | | _ | _ _ |_|_ | | | |_ |_ _ |_| |_| _ | | | |_ _ _ | |_ | |_| | | | | |_ | _|_ |_ _| | _ |_ _| |_ | |_|_ | | | |_ _| |_ | |_ | | _|_ _ _| |_ | _ _ _|_ |_| _ |_ _| | _| | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_| _| |_ | _| |_ _ _ _ _|_ _| |_ _| |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _ _ _ | |_ _ | _| | |_ _ _| | | _|_ | | _| | | |_ _ | _| _ _|_ _ | |_ | |_ _ | |_|_ _|_ | | _| |_ _ | | _ _| | |_ | _ |_ | |_ _ _| _ |_ _ | _ _|_ _|_ | | _| |_ _ _ _| _|_ | _ _|_ | | |_ _ | _ _| _ _| |_ |_ _ | |_ _| | | |_ _|_ _ _ _ _| |_ _| _ _ | | | _| | _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| _ _| _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ _ _ _ _| | |_ _ _| |_ _|_ _ |_ _ _|_ _ _| |_ |_ _ _ _ _| |_ _| | _ _| | | | |_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ |_ | |_ _|_ _ _ _ _| _|_ | | |_ |_ | _|_ _ _ | | _|_| |_| | |_ _ | _|_ _|_ | | _| |_ _| | | | |_ |_ _ | |_ _ _| | |_ _ |_ | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ _ _ _| | |_ _ _ _ |_ _ _| | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ _| | |_ | |_ _ _ _ | _ _ _| _| _| _| |_ | | _|_ _ _ _ _|_|_ _ | _ _ _|_ _ _ _ _| | _| | _ | |_ | _|_|_ | | | _ _| _ | _| | | _ _ | | |_ _ _|_ _|_| | | _| | _| |_ | _| | _ | _| _ _| |_ _| _ _ _ _ | |_|_ | _| | | +| | _|_ _ | | |_ |_ _ _| _|_|_ | |_ _ _ _ _| |_ _|_ _ _ _| _|_ | | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ |_ |_ _ | |_ _ |_ _ _ _| _|_ _ _| | |_ _ _| | |_ | | |_| | | _| |_ _ _ _ _|_|_ _| | _| | | | | | | | | | _|_ _|_| |_ _| _ |_ _|_ | _ | |_ _|_ _ _ _ _| _| _ |_ |_ |_|_ _| | | |_ _| | | _ _| | | |_ _ _ _ |_ | _ _|_ | |_ _ _ _ _|_ _ _ _|_ _ |_ _ _|_ _ _|_ _ |_|_ |_| _| |_ _ _ _| _| _ _ _| | |_ _ | | | | _| | |_ _| _| _ _|_ _ _|_ _ _| |_ |_ |_ _ _ _| | | |_ _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _| | | _| | |_ | | _ _ _ |_ | _ _ _ _ |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _| _ |_| | | _|_ | _| _ | |_| | | | _| | | _| | |_ | | |_ _ _|_| _| _ _ _|_ |_ | _| | |_| _| | |_ |_ _ | _|_ |_ _ _| _|_ _| | _|_ | | _ _| _| _| | | _| | |_ |_ _ | _ _ _ |_ _| | _ _| |_ _| _ _| | | _| | _ | | _| |_ _ | _|_|_ |_ | _ | | _ _ |_ | |_ _ _| |_ | | |_ _|_ | | _ _ _ | | |_ _| | | | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _| _|_ _ _| | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ _ | _| | |_ |_ _ | |_ _ | | _ _ _ _|_ |_ _| _ _ _ _ _| | _ |_ _|_| |_| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| | |_ _| _ | _ _ _| _|_ _ _ _ | | | _ _|_ _| |_ _ _ _ _ _| _| | |_ | | | |_ |_ _ | |_ _ _| |_ _ _ |_ _ _ _ _|_ |_ _ _ _| |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | |_ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | | | _ _|_ _ | |_ _ _|_ |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | _| _|_ _|_ | _ _| |_ _ | _|_| _|_ _ _ _|_ |_ _| | _ | _ _ _ _ _|_| _ _ |_ _ | _ _| | | | _| |_ _ _| | |_ _ _ _ _| |_ _| _ | | |_| | | |_ |_ _| | | _ _ | | |_| |_| _| | | _ |_ _| _| |_ _| |_ _| _ _|_ |_ _ | | _| |_ _ | |_ _ _|_ | +| | | _| _| | |_ _| _ _| _ | | | _ _ _ _ _ _ _| _ _ _ |_ _ _| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | _ _|_| |_ _ _ _ _| _ | | _| _ | _| | | _| _| _| | |_ _ _ _ _ _ | |_| |_ _ _| |_ _ _|_ _|_ _ _|_ _| _ _|_| |_ |_ _ | _|_ | |_ _ _ _ | |_| _| _| _ _|_ | _ _ |_ _ | _ _| | | | | _| |_ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _| _ _ _ _ | |_ _ |_|_ | |_ _ _ _| _| | |_ _ _|_ _| | | | | |_ | |_ | _ _| | | _ _ _ _ _ _|_ _ _| _|_ | | | | |_ _ _ _ _| _ _ _| _|_|_ | | | _ _|_ _ |_ | | | _ _| | |_ _ _| |_ | _| | | _ _ _ | |_ | _ | _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ _ _|_ |_ _ _| |_ | _| |_ _| _| |_ _ _ _| _|_ _ _| | | _| _| |_ _ _ _ |_ | | |_| | _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | _| _ _|_ | |_| | |_ _ | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ _ | |_ _ _ _| _ _| | | | |_ _ _ _| | |_ | | | _|_ _ _ _ _| _|_| | | |_|_ _ _ _|_ | _| _ |_ |_| _|_ _ _ _ _| | |_ | |_ |_ _|_ _ |_|_ | |_ _|_ _| | | _|_|_ | | | _ _| _ _ _| | | | | | |_|_ _ _ _ _|_ _ _| |_ | _|_|_ | | | _ _| _ _| _ | | | _ _| | |_ _ _|_ _ _|_ | |_ _|_ _ | | |_ _ _| |_ | | | | | _ _ _ _| | _| _ |_ |_| | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _| _| | | _|_ _ _ | _|_ _ |_ _ | | |_ _|_ _ _ _ _ _| _ _ _| | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | | _| _ _ _ _ _| _ | _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ | _|_ _ |_ _|_ | _|_|_ | | | _ _| _ _ _| | | _|_ _| |_ _|_ |_ _ |_ _|_ _ | | _ _ _| |_ _ _ _ | |_|_ _ _ _| | | _ _| | |_ _ _ _ _ |_ _| | _ _| | _ _ _|_ _ | |_ _ |_ | |_ _ | _| _ _ _| _| | |_| |_ | | |_ _ _|_ | _| _|_| | _ _ _ | | _| | _ _|_| |_ |_ _ | |_| | | _| | |_ |_ | |_ _ _|_ _|_ | _ _ _| | _ _ _| _ |_ _| | |_ _ _| | _ _ _ | | | +| | | | _| | |_| _ |_ _ | |_ _ _|_| | | _ _ | |_ _ | _| _ |_ |_ |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_ | | |_ _ |_ _ | _ |_ | | _ _|_ _ _| | | |_ _ _| _|_ | _| _ _ |_ _| _ _| | | _| | _ _ _ _ | |_ _| _ _ _ _|_ |_ _ _| | _ _ _|_ _ | _| |_ _ | _| |_ _ _ _ _| | | | |_| |_ | |_ _| |_ _ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ | | _| |_ _ |_ | _| | | _ _ _| _|_ |_ _ _ |_ | | |_ _| | _|_ | |_ | |_ _| | _ |_ _ _| | _|_ _| |_| _ |_ |_ _ _ |_ _ _ _ _| |_ _| _ _ _| | | | | | | _| | _ | _| _| | |_ _|_ _ | _|_ | | | _| | _ _| | | | | | | | _ _| _| | | | |_ _ _ _| _ _| | | |_ _|_ | _ _ | | | |_ _ | _ | _| _ |_ |_ _ | | |_ _ _ _ _| |_ _ _ | _|_ _| _| | | | _|_ _ |_ _|_ _ _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ | _ _| |_ | _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _ _ | | |_ _| |_ _ _ _ _ _ _|_ _ | |_ | _ _ _ | | | _| |_ _ _ _ | | |_| _| _ _|_ |_ _ _ _ _ | | _ _ _|_ |_ _| _|_ _ | | | | | _| |_ _ _ _ _| |_ _|_ _ _|_ _ | | |_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _ _ _ _| |_ _| _| _ _| _| |_ _| | _| |_ _ _ _ | |_ _ _ _| _ _| |_| _| _ _|_ _ _| |_ _| | |_ _ _| _|_| _| _ _|_ | | | _| | | |_ _|_ | _|_ _ _ | | |_ _ _ |_ |_ _|_ _| |_ | | | _ |_ _ |_ _|_ |_ _ _ _ _ _ | _ _|_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| |_ _ | _| _ _| |_ _ | _| | | |_ _|_ | _ _ _ _ | | |_ _| _|_ _ _ _ _| |_| |_|_ _ _ _ _| |_ _| _ _|_ | _ _| | _ _ | | _ _| | _ _| _ _ _ _ _| |_ _ | _ | | _| |_ _ |_ _ |_ | |_ | _ _ _ _ _| |_ _ | |_ |_| _|_ _ _ _ _ _| |_ _|_ _ |_|_ _ _|_ _| |_ |_ _ | _ |_ _|_ | | _| |_ _ | _ _| _| | _ _| |_ _ _| | | | | | _| _ |_ |_ | |_ _ _ _| _ _|_ _ _ _ _|_ _ | _ _ |_ _ | _ _| |_ _ _ _|_ _ | | _| _ | | |_ _| | | _| | +|_| |_ _ _ |_ |_ |_ _ _ _ _| _ _ |_|_ |_ _| | _ _ _| |_| _| _ _|_ | _ _|_ _ _| | _|_|_ | | | _ _| _ _ | |_| |_ | _ _| |_ _| _ _| _| |_ | | _| |_| | | _| |_| |_ | _| _| _ _|_ | | |_| _ _| | |_ _ |_ _ | | _| |_ _ |_ _ _| |_ | _ _| _ _| |_ | |_ _ _| | | |_ | _ | _ _| |_|_ _|_ | | _| |_ _ _ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| | |_ _ _| | | _| |_ _|_|_ _ | _ _ _ _ _ | | |_ _ _| | _|_ _ _ _|_ _ _| |_| _ _| | | |_ _ |_| |_ |_| _ |_ |_| | |_ | | _ |_ _ _ |_ |_ _ _ | _ _|_| |_ |_ | |_ _|_ _| _| _|_ | _| | | _| _|_| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _ | _| | |_ _|_ _ _ _ _| | _ _| | |_|_ _|_ _ |_ _| _| | _| _ _|_ | _|_ _|_ _ _ | _ _|_ _ _ |_ _| _ _ _|_ | _|_ | _ |_ _| | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ | | |_ _ _ _| | | | |_ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | |_ _|_ _ |_ _ | _ _ _ _ | _|_ |_ _|_ _ |_ | | | | _ | | _| |_ | _| |_ _ _ _ _| _ | _ _| | | _ _ _ | _ _|_ _ _| |_| | |_ _|_ | | _ _ |_ _ |_| _ _ _|_| |_ | _ _ |_ _ | | |_ _ _| |_ | _ _ _ _ _ _ | |_ _ _| |_ | |_ | | |_ _ | _| |_ _ | _| | _ _| _ _| | _| _ _ _ _ _ |_ _ _| | | _| |_ _ _ _ _| |_|_ _ _| |_ _|_ _ _ _ _|_ _| | | _|_ _|_ _ |_ _ _ | _ _ _ _|_ |_ |_ _| |_ _ |_ | |_ _ _ _ | _| | |_ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | | | |_ _| | _ _| | | _|_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ _| _ _ _ _|_ |_ _ _ _ _ _ |_ _| | |_ _ _| |_ | |_ _|_ _ | |_ _ _ _ _| |_ _|_ _| | | |_| |_ _ _| _| | | | _|_ | |_ | _ _ _ _|_ |_ | _|_ |_ _ _ | |_ _ _ _ _ _ _ _ _ _ _ _ | | _| _| _| | | | | | | |_ |_ _ | _|_ _| _| |_ |_ _ _| _ _| |_| | _| _| _ _|_ |_ _|_ _| _ | | | _ _ _ _ | |_ _ | | | |_| |_ | | | | _ _ |_ _ _| | _ |_ _| | _ _| | | | _| +| _| |_ _ _|_ |_ _ | _ _ _| | | |_| _ _| | | | _ | _| |_ _ _ _ _|_| _ | |_| |_ _ _ _ _| |_ _|_ | | |_ | | _|_ _ _ _| _ _| _| _|_ _| | | |_ _ |_ _| |_ |_ |_ |_|_ _| _| | |_ | |_ _|_ | |_ | |_ _ | | _| | |_ _ _| _| | _| _ _|_ _ _| | | | _ _|_ _ _|_ _ _ _|_| |_ | |_ |_ _| _ | | | |_ |_ _ | _ _| _| |_ | |_ _| _|_|_ | | | _ _| _ _ _| | |_ | | _| _ _ _|_| | | _| | | _ _ |_| _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ |_ | |_ _ _ |_ | |_ _ _| _| _ _|_ | | | |_ _| _ | | |_ _ | |_ _ _ |_| |_| _ |_ |_ _ |_ | _ _ _| | | _ _|_ | |_ _| _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_| |_ _ _|_ _ _ | _| _ _| | | |_ _ _ | |_ _ | | | _| |_ _ _ _ _|_ _ _| | |_ _ _ _| _ | _ |_ _ | _ | | |_| |_ _ _ _ |_ _| |_ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_| |_| | | _ _ | |_ |_ _ _ _ _|_ _ _ | _| |_ _ _ _| _ _| | _|_ |_ _| | _ |_ _ | _|_ _ |_ _| _ _| | | _ _| | | | | _|_ |_ _ _| | | |_ | _ | _| | |_ _ | | |_ _ | _| |_ _ | | _ _| _| _ _ _ _|_ _ _| _|_ _ _| |_ _ _| _| _ |_ |_ _| | _| | |_ _| _| _ _|_ _ |_ _ _| _ _ |_ _ | _ _| | |_ |_| | _ _ | |_|_ _ _| _| | | _| |_ _ |_ | _|_ _ _| _ _ |_ _ | _ _| |_| | |_ | _ |_ _ _ _ _ | |_ _ _ _ _ _ _ _|_ _|_ _ _ _ | |_ _ | _|_ _ _| |_ | |_ _ _ _ _| |_ _|_ _ | _ _ _|_ _ _ _|_ | | | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _|_| | | |_ _ _ | | |_ _|_ _ _ | | | _ _ | | _ _| |_ _| | _ | |_ _ |_ |_ _ _| |_ |_ _ _| | | _ _ _|_ |_| _ |_ |_ |_ _ | |_ | _ _ _ _|_ |_ _ | | _|_ _ _ _ | _ _ | |_|_ _ | _ | |_ |_ _ _| |_ | |_ | _ | |_ _|_ _ | | _ _ _ _ | |_ _| | |_ | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _|_ |_ |_ _ _ |_ | | _ _|_| _| |_ _ _ _ _| | | | |_ _| _ | | _| |_ _ | | |_ _|_ | | _| |_ _| | |_ _ _ | |_ |_ _ | | | | | _|_ | +| _ _| | _ _ _ | |_|_ _ | |_|_ _|_ | | _| |_ |_ |_| |_ _ _ _ _ | _| |_ _|_ _ | | | _ | | |_ _| |_ _ _| |_ _ | | | | |_|_ |_ _ _ _|_ _| |_ _|_ | _|_ | | _ _ _| _|_ _ _| |_ _ | | | _| |_ _ |_ | _| _ _| _ | | _| | |_ _ _ | | _| | _ _ _ _ _ _| _ _ _ _| _| | | | _ _| _| |_| |_|_ | | _ _|_| |_ _|_ _ _| _ |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | | | | _ _ |_| _ _ _|_ |_ _|_ _| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _ |_ | |_| | _| |_ _ _ _ _| | |_| | _ _| _| |_ _ |_ _| _ | | _| _| _ _|_ |_ _| |_ _ | _| |_ | _| | | | _ _| _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| _ |_| _ _ | | |_|_ _ _ _ _| _| |_ _ _ | |_ |_ | | |_ _ _ |_ | | _ _|_ _|_ _ | | | |_ _| _ _| | |_| | |_ _ _| _ _ |_| |_ _ _| _| | | |_ _|_ | | | _ _ | | | |_|_ _ _ _| _ _|_ _| |_ _ | | _ _ _ _ | |_|_ _ | | |_ | _| | |_ _ | | |_ | _|_|_ | _ _| | | _ _| _ _ _| | | |_ _| |_ _ _| |_| |_|_ |_| _ | _|_ |_ _| |_| | | _ _| | |_ | | |_ _| _ _ _| |_ | |_ _ _ _ _ _ _ _ _| |_ | _| _| _| _ _|_ |_ |_ | | |_ | _ _| | _| | _ _ _| _| | |_| |_ | | |_ _|_ | _| | |_ | _ _ _ | |_| | |_ | | _| |_ | _ _ _| _| | |_| |_ | | _|_ |_ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ | |_ _| _| _ _|_ _ _|_ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| | | |_ _|_ |_ _|_ _ _ _ | | |_|_ | |_ _|_ _ _| |_| _|_ _ _ _ _| | |_ _| | |_ _ _ _ _|_ _ |_ _| _|_ _ _ | |_ _| _| _ _|_ _ _| | | _ |_|_ _| _ _ |_| _| _ _|_ |_ |_ |_ | |_ _ _| |_ | | | |_ _ |_ _ | | | | | | _ |_| | | |_ |_| _| _ _|_ _ _|_ _ | |_ _| |_ _ _ _|_ _| | _ | | _| |_ _ | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _ _ _ | | _| _ | |_ |_ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | | |_ |_ _ | _|_ |_ _ _| | | |_ _| | |_| |_ | _| +|_ _ | | _ | _| |_ _ _| | |_ _ | | | | | | | |_ |_ |_ | | _ _ _| | _ |_ _| |_ | | |_ _| |_ _| _| _ |_ |_ _ _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_| _ _| _ _ _| |_ _ | _ _ _ _|_ _ _| | | |_ |_ _ |_ | | | | | _| | | | _| | | _ |_| | | _|_ _ _ | _ _ _ _ _ _| _| |_| |_ _| |_ _|_ |_ | _ _|_ | | |_ _ | _ |_| _ _| _ _ | _ _ _ _ _ _|_| |_ _ | |_ _ |_ _ _| _ _ |_ _ | _ _| | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ | _ _| | _| | |_ _ _ _ | _|_ _ | |_ _ _ _ _| _| _ _| | | | | _| |_ _ _ _ _| _ _|_ _| | | | _| | _| |_| |_ | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| _| | | _|_ _ |_ _|_ _ _ _ | |_ _|_ |_ _ | |_ _ _ _| |_ |_ _ |_| |_ _|_ _| |_ | |_ _| | | |_ _ |_ | _|_|_ _ _| | _ _ _ _ _| | _|_ _ _ _ _ _ _| |_ _|_ _ _ _ _| | | | |_ _|_ _|_ _ |_ _ _| _ _ _ _|_ |_ |_| _ | | _| |_ _ | _|_|_ | |_|_ |_ _|_ _ |_ _|_ |_|_ _ _ _ _| | _ _|_ _| | _| _ _ _| |_ _| _| _ |_ |_ _ | |_ _ _| | | _| _| _ _| | _|_| |_ | _|_ _ _ _| | _| | | | | |_ _ |_ _ | | _ _ _ _|_ |_ _| | _| _| |_ _ _ _ _| _| _| | | _|_ | _|_| |_| _|_ _ | _ |_ _|_ | | _| |_ _ _ _|_| _| |_ _|_ _ _ | | | _ _|_ | _|_ _ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _ _| | | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | _ _| | _ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| |_ _|_ _ _ _ _| _ _ _ _ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ _ |_ _ _ |_ _ _ | | |_ _ _ _ | |_ _ | |_ _ |_ _ |_ | _ _| | | _ _ _ _ _|_ |_| _ _ _|_ | | _| |_ _ _ _ _|_ _ _ _|_ _| |_| _| _ _|_ _ _| | |_ | |_ _ |_ | _| | | |_ | | _| _| | | _ _| | _ _ | | | | |_ _ _ |_ _ _ _ |_ _| | |_ _ _| | | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| | _ | _| |_| _| |_ | |_ _ |_ _| | _|_|_ | | | _ _| _ | | | |_ _ | | |_|_ | | _ _|_| |_|_ |_ _ _ |_ _ _| |_ | |_ _| | | +| _| | |_ _| |_| _| |_ | _|_ _ _| |_| | | |_| | | |_ _|_ _ _ | | _ _| | |_| | | _|_ |_ |_| |_ _ _ _ | _| _| _ _|_ |_ |_ _ | _|_ _ | | |_ _ _| |_ | | _|_ | | _ _| |_ _ _ |_ _| _| _|_|_ | | _ _|_ _| | | _|_ _| _| | |_| |_ | | | | | _|_|_ | _| _|_ _ | | _ _ _| _|_ |_ _ | | | _ | _|_ _| | _ _| |_ _| _ _| |_ |_ | _| _| | | | |_ _ | _| _ |_ |_ |_ _ | | _ _ _| | | |_| |_ | | _| | _ _| | | _|_|_ | | | _ _| _ _ _| | | _| | _ _|_| |_ _| |_ | _| | _|_ _ _ | |_ |_ _| _ |_ |_ _ _ | | | | |_ _ _ _| _ _ |_ _| _|_|_ _ _| | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ |_ |_ _ | |_ _ |_ _ _ | | _| |_ _ | _| |_ _| | |_ |_|_ |_ _ | _ _ _ _|_ |_ |_ | _|_|_ | | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ | _| | |_ _|_ _ _ _ _ _|_ _ |_ |_ _ _| |_ |_ |_ _| | |_ _ _| | | | _ _ _| | _ |_ | |_ _ | _| _ _| _ _|_ | | _ | | |_ _ _ _ _| _ _|_| _| _ _|_ | _|_ | _|_ _| _|_ | | | |_ _| |_ _ _ | |_|_ _ _| |_ _| | | |_ | |_ _ | | |_ _ _| |_ | _| | | |_ _| _ _ _ _ | | |_|_ _| |_ _ |_ _ _ | _| | | | _ _| | |_ |_ _ | _ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | _| | |_ |_ _ | _ _| | | | | _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _|_ | _|_ |_ _| | | | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _ _ | _ _| |_ _ | | _ _ |_ _ | | |_ _ _| |_ | | _|_ _| | | _|_| _ _ | _| |_ _ |_ _ | |_ _ |_| _|_ | _|_ _ |_ _ | |_ |_ _ |_ |_ _ | |_ _ _ _ _ | |_ _ _| | | _ _ |_ |_ | _|_ | | | _|_|_ _|_ _|_ _ _ _|_ _ | _| |_ | |_| |_ _|_ _|_ _ _| _ _| | | _ _| _ _ _ _| | |_| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | | _|_ _| | _|_ _| |_| _| |_ _ _| |_| |_ _ _ _ _| |_ _| | _ _| | | | | | | _| |_ | _ _|_ | | |_ _ | |_ _ | _| _ |_ | |_ _ _ _| | +| | |_ _ | _ _ _ | _|_ _ _ | | _|_|_ | | |_ _ _| _ _ |_ _| | _ _| | _ _| |_ _ _| _| _| _ |_ _ | _| |_ _ _ _ _| _ | | | | | | |_ _| _| _ _|_ _ _| | _|_ _| |_ | _|_ _ _ _ |_ _ _ _|_ _ _ _ _|_ _ _ _ _ _| |_ _ _ _| |_ _|_ |_ | |_ _| _ _| | _| | _ _ _ _| | |_ _ | | |_ | | | | | | | | |_ _ _ _|_ _ _ _| _ _| _ _| | | | | |_ | _| | | _ _| |_| _| _ _|_ |_ _| _| |_ _ | | |_ _|_ | | _| |_ _ _| | | | | |_ _ _ _ _| |_ _|_ _ _|_ _ | | | | _|_ | | |_ _ | |_| _| | _ _ _ _ _ | | _ _| |_ |_ _ _| _ | | | | |_ |_| | _ _ _| | | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | _| |_|_ _ | |_ |_ _| |_ _ _| | _| |_ _ _ _|_ _| _ _| |_| | _ _|_ _ _| |_ | | | |_ _ _ _ _| |_ _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _ _ _ _ _ | |_ _ _ | _| |_ _| _| _ _|_ _ _| | | _ _| | | |_| | | | _ | | |_ | |_ _ _| | | _| |_ _ _| | |_ _ _|_ |_ _ _| | | | _| |_ _ _ _ _|_ | | | | | _ _ _| _|_| _| _ _|_| _ _ _|_ _|_ _ | |_ | _ _|_ | |_ | |_ _| _| _ _|_ _ _| | | |_ | |_ _ | _|_ _| |_| |_ | | _|_ _ |_ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | |_|_ | | _ _|_| |_ _| | |_ | _ _|_ | _|_|_ | | | _ _|_ _ _ _ | | | | |_ _| |_ _ |_|_ |_ _ | | | | _|_|_ | | | _ _| _ | | | | _ |_ _| _| |_ _|_ _ _|_ |_ _|_ | |_ _| |_ _| _| _ _|_ _ _|_ _ _ _ | | |_ _| |_ | _|_ _ _| | |_ |_ | |_ |_ _| |_ _ |_ _ | | _ _ _|_ _ | | _|_| | | |_ | |_ _ | | _| |_ _ |_| _| _ _| | | | | |_ _ _| _ |_| |_ _ _| | _ _ _ _ | |_ _| |_ _ | |_ _ _ _ _| _ _ |_ _ | _ _| |_ _| | _ _ | | | | _| _| | | |_ _|_ |_| | |_ | | |_ _| |_|_ _ _ _|_| |_| _|_| _| | _ _ _ _|_ |_ | _ _ |_ _ _ _| |_ _|_| |_ _ _ _ |_ _| | _ _| |_ _| _ _| | | |_| _| _ _|_ | _ | | +| |_ _| _ _|_| |_ _| | _ _|_ _| |_ _ _|_ | | _ _ _|_ | | |_| |_ | |_ _ |_ _ | | _| _ _ _| |_ | _| |_ | _ _ _ _| _| | |_| _| | |_ | _ _| | _| _ _| |_ _ _ |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | | _ _ _ | | |_ _ | _ _| | |_ | _ | _|_ _| | |_ _ | | | | | |_ _| |_ _ _ |_ _ |_ | | | | _ _| | | | |_ | |_ |_| |_ | | _| |_ _ _ _ _| |_ |_ _| | | |_| | | |_ |_ _ | _|_ | |_ _| _ _ _ | _ |_| _ _ _|_| |_ | _ _| |_ _| _ _| | _| _|_ _| _ _ |_ _| | _ _| | _|_ _ _ |_| | | _| _| _|_ _ | |_|_ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _|_ _| _|_ _ | _|_ _ _ _ _|_ _| _|_| _ _ |_ _ | _ _| | _|_ _| _| _ _|_ _ _|_ _| | _ _ _ _ _ | _| |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| |_ _ _ _ | |_ _ _ | |_ _|_ |_ | _ _| | | _ |_ _| _|_ _| |_ | |_ _| |_| |_| | |_ _| | | _ _| |_ _ _| | |_ _|_| _ _ |_ _ | _ _| | | | | |_ | _ _ _ _ |_ _ _|_|_ _ | | |_ _ |_ _| | _ _ _|_| _ _ _ _|_ _| | _| _| | |_ | | |_ | _ _| | | _ | _|_ _ _| _|_|_ _ | |_ _ _ | _|_ |_ _|_ _ _ |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _| |_ | _ _|_ | | |_ _ |_|_ |_| | _ _| |_ _ _ _ _| |_ _| _ _ | _ _| | | | | | |_ | | |_ _ |_| |_ _| | | | |_ _ _ _ _| |_ _| _ _ _|_ _| | | | | | | _ _ |_ _ _ _ | |_|_ _ _ _| |_ |_ | _ _| | _| _ _ _ |_ _| | |_ | _|_ _ _| | | _ _| | | _| _|_|_ |_ |_ | | |_ _ |_ _|_ _| _ _ |_ _ | _ _| |_ _| | |_ _ _| | |_ _ _|_ | | _| |_ | _| |_ |_ | _|_ _| _| |_ _ _|_ _ | | _| |_ _ |_ | | | _ | _ _ _| | | |_| |_ | | _ _| | _| |_|_ _| |_ |_ _ _| |_ _|_ _ _ _ _| _|_ _|_ _ _|_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _|_ _ _ _ _| |_ | |_ _|_| |_ _ _ | |_| _ |_ |_ _|_ _ _ |_ _ _ _| _ _| _| | |_| | _| |_ _ _ _ _|_| _| | | +| | _|_ | | |_ _ | _|_ _ _ _ _ _| |_ _ _ _| |_ _ | _ _|_ _|_ | | _| |_ _ | _ _|_| |_ |_ _ | _|_ |_ | |_ _ _| | _| |_ |_| _| | _|_ | _|_ |_ |_ | | _ _| | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _| |_ _ _| | |_| |_ | | |_ |_| | | |_ _ _ | _|_ _ _ _| |_ _| _|_ _ _ _ _ _ _ _ _|_ _ |_ _| |_| | |_ |_| _| _|_ _ | | | | |_ | _ _ | |_ _ _| _| _|_|_ _ _| | |_|_ | | _ _|_| |_|_ | _| _| | |_ _| |_ _ _| _| _ |_ |_| _ _ _| _ _| _ _ _|_ | _ _ _| | | |_| |_ | | | |_ | _| _|_ _| _| | _ _| | |_ _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _|_ | | |_| |_ | | _ | | _ _| | _ _ _| _ _|_ _| _ _ |_ _|_ |_ _|_ _ _|_ | _|_|_ | | | _ _| | | |_| |_ | | | _| |_ _ | | | _ _| | _|_ | _|_| | _| | |_ | | | | _ _ _ _| |_ _| | _| _| _ | _|_ | _ _| | _| | | _ _ _| | | |_| |_ | | | | |_ | |_ _|_ |_| | _ _| | _|_ |_ _ | |_ _ _ | _| _| |_| | _ _|_ _| _| | |_ _ _| | _|_ | _|_ _ |_ _ _ _ _| _| _ _ _|_ | |_ |_ _| |_ _ | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| |_ _|_ | _|_|_ | | | _ _|_ _ |_ | |_ _ | |_ _| | _ _| |_ _| _ _| _ | _|_ | _ _ | |_ |_ _ | | | |_ _ _| |_ _|_ _ |_ _| |_ _ |_ | |_ | _| | |_ _ _ _ _| _ _ _ _|_ | _ _|_| |_ | |_ _ | | _ | _| |_ _ |_ |_ |_ _| | _|_ | _|_ | _| _| _ _ _ _| | _| | | |_ _| | | _ _| | | | _ _ _ | _|_ _| | |_ |_ | _ _ _| | | |_| |_ | | _ |_ | _ _|_ _ _ | | | |_ _ | | | | _ _ _| | | | _ _ _| |_ _ _| _| | |_ _ _| | _ _|_ _ _| _|_ _ | |_|_ _|_ | | _| |_ _ _| | _| _ |_ |_ _ _ | | _ _ | _ | | _ _ | _ _ |_ _ | | |_ _ _| |_ |_ | _ | | _ _|_ _ _| _ _ _ _|_ |_ |_ |_| _| _ _|_ | _ | _ _| _ _ | | |_ _ _ | | |_ | _ _ _| |_ | +|_ | _ _| |_ _| _ _|_ |_ _| _ _|_ | _ _ _ _| | | _ _| | |_ |_ _ | |_ _ |_ |_ _ |_ _|_ | _| _| _ _| _ _|_ | |_| _| _| | |_ _| |_ _ |_ _ | | | _| _ _|_ _| | |_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_| | | |_ _ | | _|_ | | _| |_ _| | _| | _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _|_ | | | |_ _ _| _|_ | _ |_ _|_| | |_ | |_ _| | _| | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | _|_ _ _ _| _| _| _ _|_ |_ | | | |_ _ _ _ _ |_ _ | | | |_ _|_ | | _| |_ _| |_ _|_ _ _| _ _ _| | | | | _|_ _ _| |_| | | |_ | |_ _ | _|_|_ | | | _ _| _| _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ | | _| |_ _| |_|_ | _|_ _ _ _|_ | _ _ _| | | _|_ _ _ _ | | |_ _ _ _ _| |_ _| _|_ _| |_ | | _|_ |_ _|_ _ _| | | |_ | _ _| |_ _| |_ _ |_ _| _| _ _| | |_ _| _ |_ |_ _| |_ _ _| | | | | | | |_ _ _ _| |_ _ _|_ _ | |_|_ _|_ | | _| |_ _| | _|_ _ | | |_ | |_ _| | _|_ _ _ _ _ |_ _ _ _ _| | _|_ _ _|_ _ _|_ | _ _ | | _ _| | _|_ _| |_ _ |_ _ | | _ _ _| _|_ _ _ _ | |_ _ | _ _|_ _ _| _| | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ | | | | _|_ _ _ _ _| |_ _| _ _| | | | | |_ _|_ _ | |_ _ _ _| _ _| _| _| | _ |_ | _| |_ _ _|_ _ _ _| | _| _ |_ |_ _ |_ | _ | _| _| | | |_ |_ _ _ _ | _|_ _ | _| |_| _ |_ |_| _| _|_ _| |_ _ _|_ | | _| _|_| | |_ _| |_ _ |_ _| _|_ _| _ _ |_| | _|_ | |_ _|_ |_ _ _| |_| _| |_ _ _ _|_ _ | |_ _ _ | |_ _ | |_|_ _|_ | | _| |_ _| _| | | _ _ | | _| | | _ |_ | |_ _| _ _ _ _|_|_ _ | _| | _ | | | _| _| _|_ _| _ _ _ |_| _| | |_| _ | | |_ |_ _ | _ _| | _| _ _|_ | _ _|_ _| | |_ _|_ _|_ _ | _|_ | _|_ | | |_ _| _| _ _|_ _ _| _|_|_ | |_| | | _ _ |_ _ _| |_ | | _| _| |_ _ _ _ _|_ _| | | _ _| _ |_ _|_ _ |_ _| | |_ |_| |_| |_ _ |_ | _| +| | |_ _ _ _| _ _| _ _|_ |_|_ _ _| _ | |_ _ | _| _|_ _|_ _ | |_|_ | | _ _|_| |_|_ | |_ _| _ _|_| _| | |_ |_ | _ _ _| _| _|_ | | |_ | | |_ _ |_ | |_| _| _ _ _ _ _| _ _ |_ _ | _|_|_ | | | _ _| | | | | | _|_| |_ _| _ _| _| | | |_ |_ _ | _ _ |_ _ _| |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | | | _ _ _|_ _|_ |_ _ _ | |_| _| _ |_ _ | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ _ |_ _ |_| _| _| |_ _ _ _ _| | | | |_ _|_ _ |_ _ | | _| | _|_ _| | |_ |_ _ | _ _ _ |_ _ | |_|_ | |_ _ _ | | _| | | _| |_ _ _|_ _ _ _ _| |_ _|_ _ _ _| | | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| |_ _ | | |_ |_ _ | _ _ |_ _ |_ _ | | |_ _ |_ |_|_ _| | _ | _| |_ | _ | | | | | | _ _ _ _| |_ | | _ _ | _| | | | _| |_ | | |_ | | |_ _ |_ | | _ _|_ |_| _| _ _|_ | _ _ | _ _| | | |_| | |_ | | |_ _ _ _| | | | _ | | |_ |_ _ | _ _ _ |_| | | | _| | _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _| | _ _| | | |_ | |_ |_ _ |_ _|_ _ | |_ _ _ | | |_ | _| | _ _ _| | _| | | | _| | | |_ _|_ | |_ _ |_ | | |_ _ | | |_ | |_| |_ | _ _ _ | | |_ _ | _ _|_| |_| _ | | _|_ _ _| | |_|_ |_ _| | |_ _ | | |_ _ |_ _ _ _ _ _ _| _| _ _|_ | _ | |_ _| |_| _|_ | |_| | _ _ _ _| | | _ _| |_ | _| _| _ _|_ | | _| | _ _| _ _| | |_ | | _ _|_ _ |_ | | _|_ _ |_ _ _ _ _ _| | _| | |_|_ |_| _ _| _ |_ |_ | | _ _ _ _ _|_ _|_ _ _ |_ _| | | | _ | | |_ |_ _ | _ _ _| | | | |_ _ _| |_ |_ | |_ _ _ _ _| _ _ _| | | _| | |_ _| | |_ _| | | _ _ _| _ _|_ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ _ _ _| | _ _ _ _| |_ _ _ _ | |_|_ _| |_ _ |_ _|_ | _ _| | _ _ _ | |_ _ _|_ _ _| _| _|_ _| _ _|_ _ _| | | | |_ | _ _ _ _ _| |_ | _| _| _ _ |_ _ | |_| _| _| _| |_ | | | | +| | | | _| | |_ _ |_ _ | | | |_ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _| | | _ _ _| |_ | | | | _ _ _| _ _ |_ _ | |_ _| |_ _ _|_ | |_ | |_ _ | _ _ _| | | |_|_ _ _ _ _| |_ _| _ _|_ _| |_| | | _ _ _| _ _| _|_ _ | |_|_ | | _ _|_| |_ _| _ _| _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_|_ _ _ _ _| |_ |_ _ _| _| | | |_ _ | | | |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| _| _ |_ _ |_ | | | |_ _ _ _ _ |_ _|_ | _ |_ _ | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _| | |_| _ _| | _|_ _| |_ |_| |_ |_ _ _ _ _ | _ _ _ _ |_| | _|_ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | _ _ _| _| |_|_ | | _ _|_| |_ _ |_ _ |_| |_ _ _ _| | _| _ |_ _| _|_|_ _ |_ _| | | |_ _| _|_| | |_ _| _ |_ |_| |_| | _|_ _ _| | | | | _| _| |_ |_ _| |_ _ |_ | |_| | | _| _| |_ _ _ _ _| | _ _| | | _| |_ | |_ |_ _|_ _| |_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | | |_| | _| | |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_| |_ | | |_|_ |_ _| | |_ | _| | _ | _| | |_ | | | _|_| | _ _ _| | | |_| |_ _ _| |_ _|_ _ _ _ _| | _ _| _| |_ _|_ _ |_ _| |_|_ | | |_ _ _|_ _|_ _ _ _| |_| _ |_ |_ |_ _|_ | _|_| |_ _|_ _ |_ _ | |_ |_ _| |_ _ _ _| _ |_ |_ | _| |_ _ _ _ _|_ | | | _ | _| | |_ | |_ | | _ _ _| _|_ _| _| | _| |_ _ _ _ _| |_ _| | | _| _ _| | | | | _| | _| |_ |_ _|_ | |_ |_ _ _| _ | | _ _|_ _ |_ _ _ _| _| _ _|_ | | |_ _ | | _ _ _ _ | |_| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| | | _| _ |_ |_| _|_ _| _ | _| _ _| | _|_|_ _ _ _| | | | |_|_ _|_ _ |_ _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ |_ _| | _| _ _ _ | | _| |_ _ | | _|_ |_ _ | _|_ | _|_ | |_| | _|_ _ _ _| _ _| | _| | | _ _| | |_ | |_ |_ |_| _ |_ |_| | _| _|_ | _ _| | | _| _ _ _| _|_ | |_ _ _| +| |_ _| |_ |_ _|_ _ |_|_ _|_ _| | | |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_| _|_|_ _ | | | | | |_| |_|_ _ | _ _ _|_ | _|_ _ _| _ _ _|_| _|_| _ _ _|_ _ | _| |_ _| | _ _ |_ _ _| | | _ _ _ _| |_ | | | |_ _ _ _|_ | _ _|_ | | |_ _ | _ | | _| |_| | |_ | _|_|_ | | | _ _| | _ _ _| | | |_ _ |_ _ | | _ _ _ _|_ |_| | _ _ _| |_ _ _| | |_ | | _| | | |_ _|_ | |_ _ _ |_ | | |_ _ _|_ | | _ |_ | | | |_ |_| _ _ | | _ _ _| |_ _|_ _ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_ _ _ _| _| |_ _ _ _ | |_ _ _ _ _ _ _ _| _ _| | _| _ _|_ | | _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _ | | |_ | _ _|_ | | |_ _ |_ | |_ | | _ | _|_ _ _ _| _ |_ _ _| _| _ _| | | _| _ _|_ |_| _| _ _|_ | | _|_ | _ _| |_ _|_ | |_ | _ | _| _| | _ _ _|_|_ | |_ _ _ |_ |_ _ _|_ |_ |_ _|_ | | _ _ _ _|_ |_| |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_ _ |_ |_ _|_ _ _ _ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _|_ | | _| |_ _ _ | _ _| _|_ _|_ _| | _|_ _|_ _ _ | |_ _| |_|_ _ |_ _ _ | _ _| | _| _ | | _ _ | _ _ _|_ _ _ _| _|_ |_ _ |_|_ _ | _| |_| _| _ _ _ _ | _| _| _ _|_ | _ _ _ _| _ _ _|_ _ _ |_ _ | |_ |_ _ |_ | _ _ _| |_ |_ _ | |_ _ | _ _ _|_| _|_ _|_ _ _| |_ |_ _ _ _|_| _ _ _ _| | | _ _| | |_ _ | _ _ _ | | _| _| | |_ | | | |_ | _|_ _ _|_ _ _ _ _ | | | | |_ _| |_ | | |_ | |_ _ _ | _| |_ _ _ _ _|_ | _| | |_ _ | | _| |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _| _ _|_ | _ _ _ _| _|_ | | | |_ _ _ | | _|_ _|_ _|_ _ _ _| | _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | _| |_ _ | _| |_ _ _|_ | | | _ _ _ _ _| |_ _| |_ _ |_ _| _ _ _| _ _ |_ _ | _ _| | | _|_ _ | |_| _ _| _| _ _| _| _| _ _|_ | |_ | | _| | _ _| _|_ _ _ _ _|_ _ | | _ | +| |_ _ | _ _ |_ _ | _ | _|_|_ | _| |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | | | _ _| | | |_ _| |_ |_ _ _| |_| _ _ _ _|_ _ _ _| _|_ _ _| |_ |_ _| _| |_ | _ _|_ _| _|_ _ _ | _ _| | | _| _ |_ |_ _| |_ _|_ _ |_ _ _ |_ _| | _ _| |_ _| _ _| | |_ _|_ |_ | | _| |_ _ _ _ _| |_ _| _ | | | | | | |_ _ | | |_ _ _| |_ | |_ _ | |_| _| _ _|_ |_| |_ _ _| |_ _|_ _ _ _ _| | |_ _ | |_ _|_ _ |_ _ |_ _|_ | _| | _ _| _| _| | _| |_| _ |_ _ _ _ | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _ _ _ _| |_| _| _ _|_ | |_ _ _ | | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ _| |_ | |_ _| | _ _| |_ _| _ _| _ _| |_ _| |_ _ _ | |_ _|_ _ |_ _ _| | | | |_| | | | |_ | _| _| |_ _ _ _ _|_ _ _ _ _| |_ _ _ _ _ _ _|_|_ _ _ _| _|_| _| | _|_| | _ | |_ | _| | |_ | | _ _ _ _ _|_ _ _ _ _| |_|_ _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ |_ _ _ | | _ _| |_ _ _ | _|_|_ | | | _ _|_ _ |_ | | | _| | |_ |_ _ | _ _| _ _| _ _ _ _ |_ _ _ | |_ _|_ _ |_ | _| | | |_ _| |_ |_ | |_ _| _| |_ _ | _ _| |_ _ |_| | _ _| | | _|_ _ | _| |_ _ | | _| | | _| |_ _ _ _ _|_ _ | _|_ _ _ | |_ _ | _ _| | _|_ | | _|_ _ | | _| _| |_ |_| | | |_ | _ _ _| _ _ _ _ | |_ _ _| _ _ |_ _ | _ _| | |_ | |_ | | | |_ _ | |_ _|_ |_ _ _| | | |_|_ |_|_ | _ _ _ _ | |_ _| | | | | _ _| | _|_| |_ |_| |_ | _ | |_ _| _ |_ _ | _| | _| | |_ _ _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| |_ _ _ _ _|_ _ _ | |_ _| |_ _| |_ _ _ _|_ _|_ | _ _ _ _ | |_|_ _| _ | _|_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | | |_ _| | | _| _| |_ _ | _ _ | | | | _ _ _ _ | |_ | | _|_ _ |_| _ _ _|_ | | |_| |_ | | |_ _ |_ _| _ _ _| _| _ _ _| | _| |_ _ _ _ _| | | _|_| _ _|_ | _|_ |_| _ | |_|_ _ _| | +|_| |_ _ | | | _ _ _ _| | | | |_ _ _ _ _|_ | | _ _ | | |_ _|_ | |_ |_ | | |_ _ | |_ |_| |_ | _|_|_ _ _ _ | |_ _ _ | _|_ _ _ _ _ _ _ | _| _ _ _ _|_ |_| | _ _| | | _|_ _|_ _ _ |_ _ |_ _ | | | | _| _| _ _|_ | | | _ _|_ _ | _| | |_ _ _ _| _ _| | _|_ _ _ _| _ _| _ _| _ _ _ | |_ _|_ _| |_ _|_| |_ _|_ _ | |_ _| _| _ _|_ _ _| _| |_|_ _ _ _|_ |_ _ | _ _ | | | _ _ | _| _ _|_ _ |_ _| _ _|_ _ | | _ | | | _|_ _| _| _| |_ _| _| _ _ _ | _| | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ |_ _ _ | _| |_ _ _ _ _|_ | _| |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_| _| _| | _ |_ _ _ _| _ _| _| _| _|_| | |_ _ | |_ _|_ _ | | _ _ | | |_|_ |_ _|_ _|_ | |_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _|_ _ _| | | | _| _|_| _| | _| _| | _ _ _ _ | |_ _ _| _ _|_ _ _| _| _ _ _ | _| _ |_ _ _ _| _ _| _|_ |_ _ _ _| | | | | |_ _ _ _ |_ _ _ _ _| |_ _| _ _| |_ _ | | |_ | |_|_ | | _ _|_| |_ _ |_ _ | | _| _ |_ _|_ _ | | _ _ |_| _| |_ _ _ _ _| | _| _|_ _ | _ _ _ _ _|_ _ _ |_ |_ _ _| | _ _| |_ _| _ _ _|_ _ _ _| | |_ _ _| | |_ _ _ _ _ | _| | _ _ _ _ _ _ | |_| _ _| _ _ _| |_|_ _ _ _ _ _|_|_ | _ _| _| _| |_ _ |_ _ | |_ _ | | _| | _ _ _| | | |_| |_ | | | _| |_| _|_ _|_ _ _ | _ _|_ _ _ _ _|_|_ _ _ _ _ | |_ _ | | _| |_ _ | _|_|_ _ _ _| | _ |_ |_ _|_ _| | |_ | | | |_ _ | _| | |_ | _|_ _ _ | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | |_ | _ _ _ _ _ | _| _|_ _ _ _|_ _ _ _ _ _ _ _|_ _ | | _| |_ _ | |_ _ _| |_ | _| | | |_ _|_ |_ | _ _ | | |_ _ |_| | _ _| | | _| | _| | _| |_ | | | | | |_ _ | | _| |_ _|_ _ _ |_ |_ _ | _ |_ _|_ | | _| |_ _ |_ _ | | _ _ _| _ _| | | |_ _ _ |_ _ | _| |_| | _|_ _ _ |_ _ _| |_ _|_ _ | | | +| _| |_| | | | | _ _| | |_ _ _ _ _ _| |_ _| | |_ _|_ _ _ _ _|_|_ |_ | | |_ _|_ _ |_|_ _| _ _| |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_|_ |_ _ _| |_ | | | | _|_|_ _ _ | |_ _|_ _ |_ _ |_| |_| | |_| _| |_ _ _ _ _| | | |_| _ _| | | _|_ _ _ | | | |_ _ _ _ _ |_ _ _| |_ | _ _| _ _| | |_ _ _ | _| _ |_ |_ | _|_ | _ _| | _| _ _ _|_ _ _ _ _ _ _ _ _| |_ _| | _| |_ _| _| |_ _ _ _ _ _ |_ _ |_ |_ _ _| | | | | | |_|_ _ _ _| |_ | | _| _| |_ _ |_ _|_ _ | | _| | | |_ _|_ | |_ _ _ | | | |_ _ | | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ | _ _ _| | |_ _ _| _ _ _|_|_ |_ _ | |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | | _| | _| | _ _ | | | |_ _ | _| _ _| | _ |_ | | |_ _| |_| _|_ _| |_ |_ |_| _ _| | |_ | _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | | |_ _| _|_ _|_ _|_ _ _ _|_| _ | | _| |_ _ | _| |_ _| _ _| | | |_ _|_ | |_ _ _ | | | |_ _ |_ | _ _| | | |_ |_ _|_ _ |_ _ | | _ | _| _| | |_ _ _ _| |_ _ |_ | _ _|_ | | |_ _ | | _| | |_ _ |_ _ _ | |_ _| |_| |_| _|_ _ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ | | |_ _ _ | | | | _| _ _| |_ |_ _| _ _| _| |_ _ _| _ _ | |_|_ |_ | |_ | | | _ _ _ _ | | _|_ _| _| | |_ _ |_ _| | _ _| | |_ _ |_ _ | _| |_ _|_ | | _| |_ _| _| _|_ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _| | |_ _ _|_ | | | _ _ _ _ | | | _ _|_ |_| _ |_| |_| _| |_ _|_ | | |_ _| | _ _| | _ _ | | | _| | | |_ _|_ | |_ _ _ | | | |_|_ |_|_ | _| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | |_ _ | | | |_ _ _| |_ _|_ _ _ _ _| | _| | _|_ _|_ _ |_ _ _|_ _ | |_| |_| | _ _| _| _|_ _| |_ _ _| | |_ _ _| | | _ _ _|_ _| | |_| | | |_ |_ _ | _ _| |_|_ _ | |_ | _| | |_ |_ | | | _ _| | _| _ _|_ _| _| _ _| | _| _ _ |_ _| | | +| | _| | _ _| _|_|_ | _ _ _| _ _ |_ _ | _ _| |_ _ _ |_ _ _ |_ |_ _|_ _ |_ |_ _ | | |_ | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _|_ _ _| |_ |_ _ _ _ |_ _|_ _ | | |_ | _ _|_ | |_ _ _ | _ _| | _ _| | _ _|_ _| _ | |_| |_ _|_ _ |_ _ _| _ _ _|_ | | | _ _| |_ _|_ | _| _| _ _|_ | | | | _|_ | _|_ |_ _ _ _| _ _ |_ _ | _ _| |_ _|_ |_ _ _ _ |_ _ _ _ | |_ _ |_ | _| | _ _| _|_ _ _| |_ _ _ |_| | _|_| | | |_ _ _|_ _ | | | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ | | _ _|_ _ | _|_|_ | | | _ _| _ | | | | | | | | _| _|_ | _| _|_ |_ _ _ _ _| |_ _| _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _| _|_ _ _ _ |_ _ | | |_ _|_ _ |_|_ | |_ | |_ |_ |_ _| | | | | _| _| _ |_ |_| | _| _| | _| _| _|_| _|_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ |_| | _ _ _| |_ _ |_ | _ _ _ |_ _| | |_ _ _| | |_| _| | _| | |_ _|_ _ _ _ _| | | |_ _ _|_ _|_ _ |_ _ | | _ _| | | | | _| |_ _ |_ _| | | | |_ _ _ _ _|_ |_| _ |_ |_ | |_ _| | _ _| |_ _| _ _| | | _| | _ _| |_ _| |_ _ _ _ | | _ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ | _| | | |_ _|_ _ |_ _ _| |_ _| |_ _| | _| _| | | | _| |_ | _ _| | _| |_ _ | | | |_ _| | |_ _ | | _| |_ | _ _ _| | _|_ _ |_ _ | _|_ | _| _| | _| | |_ _| | | |_ |_ _ | _ _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ _ | | |_ _ | | _ _|_|_ _ _ _| _| _ _ _| _| | | | _ _|_ _ _ _ _|_ | | |_ |_ _ _| |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _|_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | _|_ |_ _| _| | | _ _ | _ _ |_| | _| |_ _ _ _ |_ _ | _| _|_ |_|_ | |_| _ _| _| _ |_ |_ _| _|_ _ _ _ _ _|_ _|_ _ _| _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _| | | _| |_ _| _| _| |_ _| _| | |_ _| _ _ |_ _ | _ _| | _ _| _ _ _| _| | +| | | |_ _| |_| | _| | _ _ _| _| | |_| |_ | | _ _|_ | | _ _|_ _ _| | _|_ _ _ | | |_ _ _| | | |_ _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _ | _| _|_ |_ _ |_ | | |_ _| | | |_ |_ _| _ _ |_ | _ _| |_ _ _ _|_ _| |_ |_ | _| | |_|_ _ _ | _ _|_ _ |_ |_ _ _| |_| | | |_|_ _ _ _| | | _| |_ _ _ _ _| | | |_ _| |_ _ |_ _ | _ _ _| | | |_| |_ | | _| |_ _ _ _ | _ _ | _| |_ _ |_ |_ _| _|_ | | | _ _ _ _|_ |_ | | _|_ | | |_ | | _ |_ _| | |_ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _| | _ _ _| |_ _ _ _ _| |_ _| _ _| _| |_ | | |_ _| |_ _| _ _ _| _| |_ _ _ _ | | | |_ _ | | _ _| | | _| | | | _ _| _| | | | |_ _ _ | _| _ | | _| | |_ _| _ _ |_ _ | | | _| |_ _ | | _ _| |_ |_ _| _| _ _|_ | |_ |_ _ | |_ _| _| _ _| |_ |_ _| | _|_|_ | | | _ _| | | |_| | | |_ _| |_ _ _| | _ _ _|_ _ |_ | | | | | | _ _| _ _ | | | _ _| | |_ _ _|_ _ _ | _ _| _|_ _|_ _ _ _ _ _ _ |_ _ |_ | | _| |_ _| |_ _ _| _ _| | |_ _| |_ _ _ _ | _| _| _ _|_ | |_ _ |_ _ _ _| _ _| _| | | | _ _| _ _|_ _ _ _| _ _ |_ _| | _ _| |_ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | | | | |_ _ | |_ _ _ | |_ | | |_|_ _| _| _| | | _ _ _ | | | _|_ _ _| | | | | | | _ _|_ _ _| | |_ _ _| | |_ _ | | |_ _|_ _ | |_ _ _ | |_ _| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | | |_ | _ _| |_ _| |_ _ _| _ _ |_ _ _|_ _| _ _ _| _| | | | _ _ _ _ | |_ _| |_ _ | _| _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ _ | | _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ |_ _ _| | | _| | | | | |_ _| | |_ _ _|_ | | | |_ _ _ _ | _ _| | | _| _ _ _ _ _|_ _ _ | | | _| _ _|_ | _| _ _ | _ _ _ _ | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ _ _|_ |_| _ _ _|_ _ _ _ _ _|_ _ _ _ | | | |_| |_ | |_ | |_ _ _ |_ _ | +| _| _| _| _ _|_ _|_ |_ _ | | |_ _|_ | | _| |_ _ _ _|_| | | _ _| |_ _ _|_ |_ _ | _|_ _|_ _ |_ |_ _| _|_|_ | | | _ _|_ |_ | | | | | _|_ | |_ _| _| |_ |_ | | | |_ | _|_|_ |_ | _| | _| _| _ |_ _ _ |_ _ _| | | | _| | |_ | _ _ | | _ _ | |_ _| _| _ _| | _|_ _|_ _ |_ _ |_| | |_ _ _ _| _|_ | |_ | | |_ _ |_|_ _ | | |_ _|_ | | _| |_ _ | | | _| | | _|_ _ _|_ | |_ _ | |_ _ | | _|_ _ _| |_ | _| _ | |_ _ _| _| _|_ |_ _ | | | |_ |_|_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | _|_ _ _ _|_ _ _ _ _ _ _ | | | _|_ _| |_ _|_ | _ _ _| _| | |_ _| _ _| | | | _|_ _ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ | | |_ |_|_ _ _| | |_ _ _ _|_| | _| _| _ _| | | |_ |_ _ | |_ _ _ | | | _| | _| |_ _ _ _ _| | _ _| _|_ _ _| _ _ _ _|_ |_| | | |_ _ _ _ _| |_ _| _|_ _| |_ | | | | | |_ _ | _| | _| _ | | _| | _| | |_ |_ _ _ _ |_ _|_ _| |_| |_ _| _ | | |_ _|_ _ _ _ _ | _ _ _ _ | |_ | |_ _| | |_ _ _ _| _ | | _ _| |_ _ | _ _| _| | | _| |_ _ _ _ _|_ _ _| _| _ _| | |_ _ | | | _ _| | _ | _ _ _| _| | |_| |_ | | | | |_ _ |_ | _|_|_ | | | _ _| _ _ _ _| | | | _| |_ |_|_ | | | |_ _| |_ _| |_ _| | _ _ _| | _ _|_| _ |_| |_| | | _ _ |_| _|_| |_|_ _ | | | _| _ _ _ | | _| | | |_ |_ _ | |_| _ | | | |_|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _ _ | _|_|_ | | | _ _|_ _ _ _| | |_| | | | _|_ _ _| |_ | | _ _ _| | | |_| _ |_ _ | _ _ _ _| |_ _ | | _| |_ _ | |_ _ | _| | |_|_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | _ _| | _ |_ | _| _|_|_ | | | _ _| _ |_| | | | | |_ _ |_ _| |_| _ _| | | |_ _| _ _| | |_ _ _ _ |_ _| | | | _| | _ _| _| _| _ _ _ _ | |_ _| _| |_ _ _ _ _| | _| _ _|_ _ | | _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _|_ | | _| |_ _ _ | _| _| _| +| |_ _ | |_ _| _ _ _ |_ _ _| | _|_ _| | |_ |_ _ | _ _ _ _| | | | | | _|_ | |_| |_ _ | |_ | _ _|_ _ _| |_ |_ _ _ _ _| |_ _| _ _ _| | _| | |_ |_ _ |_|_ _ _| _|_ | | | |_ _| | | |_ _ _ _ _| _| |_ _ _| _| |_ | _| _ _| _ _ _| _| | | _| | | |_ _| | |_ | _ |_ | _ _| | | |_ |_ _ _|_ _ | |_ | |_ | _ _ _ _|_ | | |_ _| | _ |_ _ _| | | |_| | | |_ |_ _ | |_ _| |_|_ _ _| | | _ | _| | |_ _| | |_ _| _| _ _|_ _ _| | _ _| |_ _ _| _|_ _| |_ |_ _| _ _| _| _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _| |_ _ |_ _ _ | _ | | |_ | |_| | _| _ |_ |_| _ _| | _ _ _| | | | _| | | | |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | | _| _ _ _ |_ _ _ | |_|_ _ _ _| | _ _| |_ | | _ _|_| |_ _| | _| _| | |_ _ _ _ _| _ _ _ _| |_ |_ _ _| |_ | |_ _|_ _ _ _| _ _ | | | | _ _ _ _| |_| | |_ _| _ _|_ _ _|_ | | | | | | | |_| |_ _ _| _ _ |_ _ | _ _| | _| _ _| |_ _ _|_ _ _ _ | |_ _| _ | | _| |_ _ |_ _ | |_| _ _ | _ |_ |_ | |_ | |_ _| |_ |_ _ _| | |_ _ | _ _ _ _| | _ _|_ |_ _|_ _ |_ _| |_| _ _ _|_ _|_ _ | _ |_ _|_ | | _| |_ _ |_ | |_ _|_ _ _ _ _| |_ _| _ _ _ _| | | | _ _|_ _| | | | |_ _ _|_ _ _|_| _ |_ _ | | | | | _ _ _| | | _| _| | |_ _ |_| _| _ _| | _| |_ _| | _ _ |_ _| | | _|_|_ _ _ _ _| _|_ _ _ |_ _|_ _|_ _ _ _ _ | |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _ _ |_ _ _ _ _| |_ _| _ | | | _| | _|_ _|_ | _ |_ |_| | |_ _ | |_|_ _|_ | | | | | |_| _ | | _| | |_ _ _|_ | |_| _ _| | _ _| _ _ _| |_ _ _ _ | |_|_ _ _ _| | | _ _|_ _ _ _| | |_ _ _|_ |_ _ _ _ _| |_ _| | | | |_ | | | |_ _|_ _ | _ |_ |_| | | |_ _ _|_ _ _|_ _ _ _ _ _ _ _|_|_ _|_ _ _ |_ | _| | | |_ _ | | _| |_ _ | |_ _ _ _ _ _ _ _|_ _ _| | |_ _|_ _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ |_ _ | _ _| _| _| | +| | | |_ _ _ _ _ _ _|_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | | | | | |_ |_ _ _| _ _ _| | _| | _| | _ |_ _ _| | _ _| | _ _|_ _| |_ _ | |_ _ |_ _ | | _ _|_| |_| | _ _ _| _ | _|_ | | _ _ _| _ _ _|_ | | _| _ _ _| |_ _ _ _|_ | _ _| |_ |_| | | | _|_ | _|_| _| _| _| | | | | |_ _| _| | _ | _ |_| |_| _ | |_ |_ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | _ | | | | _|_ | | |_ |_| _| |_ | _ _| | _| _| | | _ | _ _ _| _ _ _|_ _ | |_ _| _| _| |_ | |_ _ | _| |_ _ |_ _ |_ | |_ | _|_ |_ _ |_ | | | |_ _|_ _ _| |_ _| _| _ _|_ | _ |_|_ _ | _| | | |_|_ _ _|_ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| _ _| | _| _ |_ _ _|_ _|_ _ | | _|_|_ | | _ _|_ | | |_ _ | | | |_ |_ |_ _ _| _ _ |_ _ | _ _| | _|_ | _ _|_ _ _|_ _ _ _ _ _ _ _| _|_| | |_ _| _ |_ |_ | _ _| | | _|_ |_ _ _| |_ _ _| | _ _ _|_ | | |_| |_ | | | |_ |_ _ _ _ _ _ | _| |_ _ |_ _| | |_ _ _| | | _| |_ |_ _ | |_ |_ |_ | | | | _ | | _ _ _| |_ |_ |_ _| | _ _ _|_ | _ _| _ _ |_ _ | _ _ _| _ _ _ _| |_ |_ _| | |_ |_ _ | _ _| | _ _ _ _ _ _ | | | | _|_ _| |_| _ |_| _| | |_ _ |_ | | _ _| _ _| _| _| | _| |_|_ _ |_ | |_ _ _| _|_ | |_ | | _| _ _| | _ _|_ | |_ _ |_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | | _| _ _|_ _ _ _| _ _| | | | |_ _ | | _ _ _ | _| | _| | |_ _ _| |_ | _ | _| _ _|_ | |_ _ _| | |_ _ | | | | | |_ _ _ _| |_ _|_ | |_ _ _ _ _| | _| | |_| |_ _ | | | |_ _ | _| |_ _ |_ _ |_ | |_ | _ _| _|_ _ _| _| _ _ |_ |_|_ _ _| |_ _ _| |_| _ | _| | _ _|_ | | | |_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ | |_ | _| | |_ _ _|_ | |_ | _| |_| _ | |_|_ | |_ _ | | _| | | |_ _|_ | _| |_ | | | |_ _| _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_|_ | | _ _|_| |_ _ _ _ | +|_ _| | | _ _ _ _ | |_|_ _ _ _ | | |_ | _ _|_ | | |_ _ | | | | | |_ | |_ _| |_| | |_ |_|_ _ _|_ _| _|_ | _| _|_ _| | _ _| | _| _ |_ |_ _ |_ |_ | | _|_ _ _ |_ |_ _| | _| | | |_| _ _| |_ _ | _|_ _ _| | |_| |_ _ | _ _|_| _ _ _ |_| |_ | | |_ _ _| _|_ _| |_ _ |_ _|_ |_ _ _| |_ _| |_ _ _| _| _|_| _| | _| _| _| | |_ _|_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_| | _ _ _| |_ |_ _ _| |_ | |_ | _|_ _|_ | | |_ |_|_ _ | _| _| _ | | |_ _ _ _| _| | | | | _ |_ _ _| | | | | _|_ | |_ _ | _ |_ |_ _| |_ _ _ | |_|_ | _| |_ _ _ _ _|_ |_ _ _| | |_ _| |_ | _ _ _| | | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| _| | | |_ |_ _ |_ _ _| _ |_ _| | | | | |_ _| | _ _| |_ _| _ _| |_ _ _|_ | | _ _ _| | | |_| |_ | | | |_| |_ |_ _ _ | |_ _| _ _| _ _|_ |_| _| _ _|_ | | | |_|_ |_ _|_ _ _ _ _| |_ | _ _|_ _ | _|_ _|_ | | _| |_|_ | |_ _| _ _|_ _ _| | | _ _| _ _ _ _|_| |_ | | _ _ _ _| |_ _| _| | | | | | _|_ _ _|_| | | _| _| | | _ _| |_ _ | | _|_ _ _ _ _| _ _| | | _ _ _| _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _ |_ | _ _|_ _| | _| _ |_ |_ |_ | | _ _| |_ | _|_ _ | | |_ _ | _|_ _|_ _ | | _|_ _ _ _ _ _ _ _ _|_ _| | |_ | | | _ _|_ _ | | _|_ _ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | _ _ _ _ | | |_ _| | |_ _| | | | | _| _|_ _ _| | _ _| _ |_ |_ _| _| | |_ _ _ _ _| | | _|_ _ _| |_| | | | |_ _| | _ _ _ _| _| | | | | | | |_|_ _ _ _| |_ _ _| | _ _ | |_ _ _|_ | | | | _|_ | | | | |_ _ _| | | _| _| |_ | |_ _ _ | _| _ |_ |_ |_ _| _|_ _ _ _ _| | | |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _| _| | _| | _ | | _|_| |_ _ _| |_ _|_ _ | | | | |_| | |_ _ _| |_ _|_ _ _ _ _| |_ _ _ _|_ |_ _|_ _ |_ _| | | |_ _ | _|_|_ | | | _ _| _ | _| | | | |_ | _ _|_ | | |_ _ | _ _| +| | _| |_ _ | | _| |_ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | |_ | |_ | _| _ _|_ _|_ |_ _ _ _ | |_ _ |_|_ | |_ _|_ _ _ _| |_| _| _ _|_ | |_ _ | _|_ _| _ _ |_ _ | _ _| | | | _ _| _|_ | _ _| |_ _ _ _ | _|_ |_ _ | | | _ _ _| | |_ | | _| |_ _ _| |_ |_ | |_ |_ _ _ |_ _ _ _ | _ _| _ _ _| | |_ | _|_ |_ _ _| _|_ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | | |_| _ |_ |_ |_ _ _ _ _|_ _ _| _ |_ | |_ _|_ |_ | | _|_ _ _ _ _|_ _| | _ _ | |_ | | |_| |_ | _| _ |_| |_|_ _ | _ | |_ _|_| _| | _ | _ |_ _|_ _ | | |_ | _ _| _| _| | _|_ _ _ _ |_ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | _| _| | |_ | | |_ _ _|_ _ _| |_ | _|_ _| |_| |_ |_ |_ _ _ _| _ _| _| | | _| |_ _ | | |_ _|_ | | _| |_ _|_ _ _| _|_ _ _| | _| |_ _ |_ _ _ _ _| | _| |_ _ _ _ _| |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ |_ _ _| | |_| _ | | |_ |_ _ | _|_ | | _| | _ _ | |_| | |_ _ _ _ _ _ _ _ _ |_ _ _| | |_ _ _| _ _| |_|_ _| _ _ _ |_ _|_ _| _| | _| | | | _| | |_ _ |_ | _ _| | _ |_|_ _ | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| _ _| | | _ _ | |_| _| _ _|_ | |_ _| | _ _| | _| | | _|_ _|_ _ |_|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_|_ | | |_ _| _| _ _|_ _| _ _ |_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ _ _|_ | _ | |_|_ _|_ _ |_ _ _ | _| |_ _|_ | _ _ _ _ _| _| _| _ _|_ | |_ _ | | _ _ _ _ _| |_ _ _ | | _| |_ | | _| |_ _ _ _ _ _ | |_| |_ _| |_| | |_| | |_ _ |_ _ _ _|_| |_ _| _ _| |_|_ _ | _ | |_| | |_ _ | | _| | | |_ | _|_ _ _|_ | _| _| _ _|_ | | |_ _ _ |_ _ _|_ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _| _|_ | |_ _| | | |_ _| |_ _ _ |_| | | | _ |_ | |_| |_ | | _ _ _| |_ |_ _ |_ _ |_ |_ _ _ _ |_ _ | | |_|_ |_ _|_ _ _ _ _| |_ _| _| _| | _| |_ | |_ _| | _ _| |_ _| _ _| | | +| |_ _ _ _| | |_ _ _|_ | | | _ _ _ | _| _|_ _ _ _| _ _| _ _|_ |_ |_|_ | | |_ _| _ _ _ |_| _ | _| |_ _ _| | |_ | | _ _ _ _ | _| |_ _ _ _ _| _ _| | | _ _ _| | | |_| |_ | | |_ _| |_ _ _|_ | _|_ _ _ _ |_ | _ _ _ _| |_ _ _ _ _ _|_ _| _| |_ |_ _ | _ _ | |_ _| _ _ | |_ _ | | |_ _ |_ _ | _|_ _ _| |_ _ |_| _ | _ | _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | _|_|_ |_| _| _ _|_ | | _ _ _ _ | |_ _| |_ | _ _ |_ |_ _| | | _ _ _ _ | |_ _ _ _|_ _ | | |_ | | _|_| _| |_ | | _ |_| | | |_ |_ _ _ _| | _|_ |_ _| | | _|_ |_ |_| | | | | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | | |_ _ _| _|_ _|_ _ _ _ _ | | |_ _ _ _| |_ _ _ | _ _ | | |_ _ |_ _|_ _| _| _| | | |_| | | |_ |_ _ | _ _ | |_ _ _ _ _|_ | | _ | | _ _| | |_ _ _ | _|_ |_ _ | | |_ _ _| |_ | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ _| | | | |_ | | _ |_ _ _| _ _ |_ _ | _ _| | _ _| |_| | | _ _ _|_ |_ | _ _ _| | _| _|_| | | | _|_ _ _ _ _ | | | |_ |_| | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _|_| |_ |_ | | _| |_ _ _ _ _| | | |_| |_ | |_ |_| | | _ | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _|_ |_| _ _ _| _| | | |_ _ |_ | _|_|_ | | | _ _|_ _ |_ | | |_ | _ _ _ _|_ _|_ _ | |_ _ | | | | _| _ _|_| _ _ _ |_| _ _|_ _ _ _ _|_| | | _| | _ _ _| _|_ _| |_ |_ _|_ | |_ _ _ _ | |_ _|_ _ | _|_ | |_ |_ |_ _ |_ _ | | _ _ _|_ | | _| |_ | | _ |_| | | |_ | _ _| _| | |_ _ |_ | |_ _ |_ _ _| | | _| |_ _ _ _ _| _|_ _ |_ _ _ | _ _ _ _|_ |_|_ | _|_|_ | | | _ _| | _ _ _| | | | _ _ _| _ _| | |_ _|_ _ _ |_ _ _| _| |_ _|_ _ _| _ _|_ _ _ _| | |_ _ _ _ _ _ _|_ _ _| _| |_|_ | _ _ _| _ _ _| | |_ _ |_ _ _ _ _ _ _ _ _ |_| | _| _|_ _| |_ |_ _ |_ _ _ _| _ _| | | |_| +| _ _ _| | _| | _ | | | | | |_ _|_ | | | _ _ _| | |_ _ _|_ |_ | | |_ _ _|_ _| | _| _|_ _ _| | _| _| _| _| |_ _ | | | |_ | _ _ _ _ _ _ _| |_ _ | _|_|_ _|_ | | _| |_ _ _| | _| _ | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ | | _ _|_| |_ _|_ _ | |_ |_ |_ | | |_ _| | _ _| | | | |_ _ |_ _ _| |_ _| | _| | _| _| | | |_ _|_ | _ | | | | |_|_ |_ _ _| | _| |_ _ _ _ _| |_ _ | | _| |_ _ | |_ _| _| | |_ _ |_ _|_ _ | | _| |_ _ | _ | _| |_ |_ _| |_ _ | | | |_ | | _| _| _|_ | _ _|_ _ |_ _ | | |_| |_ _ _ _| _| _| |_ _|_ _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ | _| _ _ _ | _ _|_ _ _|_|_ _ | | _ _|_| |_ |_ | | |_ _|_ _ |_ _| _ _ _|_ | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ |_ _ | _ _ _ _| |_ | |_| | _| |_ |_| |_ _ _| | |_| | | | |_ _| _| _ _|_ _ _|_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | |_ _| |_ _ _| |_| _| _ _ _| | | |_| |_ | |_ | _| _ _|_ _|_ _ | _ _| _| |_ _ | | _| |_ _ |_ _ |_ _ _ | |_ _| _| |_ |_ | |_ _| _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ | | _ |_ |_ |_ | |_ _| _| _|_ _|_ | | _| |_ _ | | |_ _|_ _ _| _| |_ _ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_ _ _ _ | _ |_ _| |_ _|_ | |_ _ _ _ _| |_ _|_ _ _ _|_ | | |_ | | | | _ _ _ _ | |_|_ _| _ _| |_ _| | |_ | | _ _ _|_ |_ _ _| _ _ |_ _ | _ _| | |_ _ _|_ |_| _|_ _ _ _ _|_ _ _ _ _|_ |_ _ |_ _|_ _ | |_ _| _ _| _|_ |_ _ |_ _ | _|_ _ _| |_|_ _ | | | |_ | | _| _| _|_ | _| _|_ |_ _| _|_ _|_ _ |_ |_| | |_ | _ _ _ | |_ |_ _ | _|_ _ _| |_ | _|_|_ _ _ _ _| |_ _|_ | _ _ _| | | |_ _ | _| | | |_ _ _ _ |_ |_ _ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | |_ _ | | | _ _ _| | _ _| |_ _ _ _ _ | |_ |_ _ |_ | |_ _| _ |_ |_ _ _| _| _ _ | | |_|_ |_ | +| | _ | | | _ _| _|_ | | |_ _|_ _ _ _ _|_|_ _|_ _ |_ _|_ _ |_ _ _ _| _|_| _| |_ _ | | _| | |_ _ _| | | | |_ _| _| _ _| | | | |_ |_| |_ _ | _ _ _ _ | _| | | _ _| | |_ |_ _ | _|_ _ |_ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ | | |_ _ | _ _| | _| _| _| |_ |_ |_|_ | _|_ _|_ _| _| _ _ _| | _ _|_ _ _|_ _ _ _ _| |_ _|_ _ _ _ _| | |_ _| |_ |_ _|_ _ |_ _ |_ _ _| |_ _ | | _ _| | |_ _ _| _| |_|_ |_ _ | |_ | | _ _ _| | |_ _ _|_ | | | | |_ _ _ _|_ |_| _|_ _ _ _ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_ |_ | | _ _ _ _| _| _ _ _|_ | _ _ _ _ | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ _ _ _|_ |_ _ _| _| _ | |_ _ |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| _ _| | _ | | _|_ _ _| | _| _| _| _ _ _| |_ _ _|_ _| |_ | _ _| | _ | _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _| _| _ |_ |_ |_ _ | | | |_ _|_ | | _| |_ _| |_ _| _ _ _ _| | |_ _ | _ _| | |_ _ _ | |_ _ |_| _|_ _|_ _ |_ _|_ | | |_ _| _| | _| _| | | |_ _|_ | |_ _ _ _ _ | | |_ _| _|_ | _ _|_ | | | |_ | _ _|_ |_ _ | | | |_ |_ _ | _|_ _ _ | |_|_ |_ _ | _|_ _ | _|_|_ | | | _ _| _ _ _| | | | _|_ | | |_ _ | _| | | |_ _ |_ _ _| _ _| |_ | _ _ _ _ _ _| | _ _ _| |_ | | |_| _ | | _| |_ _ | _| _ _| _ _|_ _ _| |_ _ | _| | _ _ _| | | |_| |_ | |_ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | | _ _ |_ |_ _ | | | _ _ _ _| |_ | | |_ _| _| _ _| | |_ |_ _ _ _|_ _|_ _ |_ _ |_|_ _ _| |_ | _| |_ _ _ |_ | | |_ | | | | _ _|_ | |_| | |_ _| _| _ _|_ _ _| _ _ _ _ | _ _ _ | _| _ _|_| |_ | | | _| |_ _| | | | |_ _ | _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | | | |_ _ |_ |_ | _| _ _ _ |_ _| _ _| | | | |_ _| _| _ _|_ | _| | _ _ | |_ _|_ _ |_ _ _| +| | _|_ _| | | | |_ _ _| |_ _ |_ _ _ _ _ | |_ _| _ _ |_ _ | _ | _ _| _| |_ _ _ _|_ |_ _ |_ _ _ |_ _ _|_ _ _ _ _ _| _| _| |_ _| _| _| _ _|_ _ | | _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _|_ | | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _| |_ _| _ _|_ _ _ _| | | | _| _| _| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | _ _ | _ _ _| | _ _| _|_ _ _|_ _ |_ |_ |_ | |_ _|_ _| _| _| _ | _ _ _ _ _ _| _ _|_ | | | |_ _ | _| | _ _ _| | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| |_ _| | | | _ _ _| | |_ _ _ |_ _ | | _| |_ _ | |_ | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| |_ | _ _| _ |_ _ _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _| | | |_ _ _|_ | _ _ _| _|_ _ |_ _ | | _ _ _ _ | | _|_ | _|_ | |_|_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _|_ | _| _| _ _|_ | _ _| | | |_ _ | | |_ |_ _ | _ _ | _ _| | _|_ _ |_| | | | _|_ _ _ _ _ | |_ _ _| _ _ _ _ _ _ _ _ _ _| |_ _ | _|_ |_ _ _| |_ _|_ _ _ _ _|_| _ _ _ _ |_ _|_ _ |_ _ |_|_ _ _ _| | _| _|_ _ _ |_ _| | | |_|_ | | _ _|_| |_ _ _ _|_ _ | | | | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ | _ _| |_ _| _ _| | _|_ _ | _ _ | _|_ |_ _ _| |_ _ | | _ _|_ _| _ |_ |_ _|_ |_ _| | |_ _ _| _| | |_ | _| _| |_ _| | | |_ _|_ _ | | |_ _|_ | | _| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | |_ _ _| |_ _| | | | _| |_ |_ |_ | _ _| | | | | |_ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _ _|_ _ _ _ _| _| |_ _| _| _| |_ _ | | _ _| |_ | _ _| | _| | _ _ _| _| |_ _ | | | _| |_| _ |_ |_|_ _ _| | |_ _ _ |_ _| |_|_ | _| | |_| |_ | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _|_ _ _|_ _ _ _ |_ | | _ _| _ _| | |_| _ _| | |_| |_ | _| |_ _ _ _ _| _ _|_ _ | |_ _| _ |_ _ _ | +|_ _| _ _ _|_ _| |_| _ |_ |_ _ | _ _| | _| |_ _ |_ |_ |_ _ _| | | _| | | |_ _ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_ _ _| _|_ | _|_ _ _| | |_ _ |_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _|_ |_ _ |_ | _|_|_ | | | _ _| | | _| | | _|_ _ _ _| _ _| _ | _ _ _|_ _| |_|_ | |_ | _| | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ | |_ _ _ _ _|_ |_ _ _ _| _ _| | |_ _| _|_|_ | _| | | | | _|_ _ _| |_ | | _ | |_| |_ | | |_ _ | |_ | | |_ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| |_ | | _ _|_ |_ _ | _|_ _ _| _| | _| | |_ _ _| | | |_ _ _|_ _ _ _ _| |_ _|_ _ _ _ _| | | | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _|_ _ _| |_ _ _ | |_ _| _ _| | _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ |_ _|_ _ _| |_ _| | _ _ _| _ _ _| | _| | | |_|_ _| |_ _ |_|_ _ _| _| | | |_ _|_ | |_ _ _ | | | |_|_ | | | | _| |_ _ _ _ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _ _|_ _ _ | | _|_ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ _ _ _|_|_ |_ _| | | _ _ | | _ _| | _ _ _ _ | |_ _ | _ |_ _ _ _|_| _| | |_ |_ |_ |_ | _ _|_ | | |_ _ | _ _|_ _| | | |_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_ |_ _ _ _| _ _| | |_ _ _ |_|_ |_ _| | | _| |_ _ | | | |_ _ _| _| _ _|_ | | | _ _|_ | _ _ | | | _| | | |_| _|_ | | _|_|_ _ _ _| | | |_| | | |_ |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ _ | _ _| | _ _|_ _| |_ _ | |_ | | _|_ | _|_| _| | | _| |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ _| _ _ | | |_ _ _| _| |_ _ _ | | |_| |_ _ | | _|_ | _|_ _| |_| | _ _ | _ _ _| | | |_| _| _| _ _|_ | _ _ _| _| _ _| | | _ _| | _ _|_ |_| |_ _ | |_ | _|_|_ | | | _ _| | _ | | | |_ | _ _ _ _ | |_ _ _| |_ _ _ _| |_ |_ | |_ | | | _| | |_ |_ _ _| |_ | | |_ _ |_ | _| _ | +| |_ _ | _| _| _ _|_ | | | | _|_ _ _|_ | | | | |_ | _ _| |_| _| |_|_ |_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| _ _|_ _ _ _ | _| | _ _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| | | _| _ _| |_ _ _ _ _| |_ _|_ _| |_ _| | |_ | | | | |_ _| |_ _ _ _ _ _| |_ _ _| | | _|_ | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_ _ _ _ | |_|_ | _ _ _| | _ |_ _ _| _|_ _ _| | | _| | | | | _ _ _ _|_ |_ | | | | |_ |_ | | | | | |_ _| _|_ |_ |_ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ | | _ _|_ _ _| | | _| | _| | _ _ _| | | | _| _ _ |_| | | _ _ _ _ _ _ | _ _ _ | | _|_ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | _| | _ | | | _ | |_ _ |_ | _|_ | _| | | |_ _|_ | |_ _ _ _ | | |_ _| _|_ | _ _ _ _|_ |_ | |_ _ | _|_ _ |_| _|_ _| |_ _| |_ |_ | | |_ _ |_ | |_ _ _| |_ _|_ _ _ _ _|_| | _| | |_ _|_ _ |_ _|_ _| | |_ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _ |_ |_ _ |_| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | |_ _ | | |_ _| | |_ _ _|_ _ _| |_| |_ | | _ _| | | |_ _ | | _ _ _| _|_ _| | | | _ | | |_ _| | _ _| |_ _| _ _|_| | _ | _| |_ _| | _| _ _| |_|_ _ _| _ | _| _ |_ |_ | | | | |_ _| _ _| _ _ _ _| |_ | | _ _| _ | | |_| _ _ _| _| |_ _ _ _ _| |_|_ _|_ _ | | | | | |_ | |_| |_ _ _| |_ _|_ _ _ | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _|_|_ | | | _ _| _ _ | |_| |_ | | |_| |_ | | | | |_ _ | |_ | | |_ _| |_ _ |_ _| | | _|_ _| | |_ _ _| _| | _ | | _ _|_ _ _| _ _| | _| |_ | _ _ _|_ _ | _| |_ |_ | | | |_ _| |_ _ |_ _| _ _|_ _ | | | | _ _| |_ | | _| |_ _ _ _ _| _ _ |_ _ | _ _| | | | _ _|_ _| |_ | _ |_| | _|_ _ _ _ _| _ _|_ _ | | _| | | | | _|_ _ | | _| |_ _ | | _ _ _ _|_ |_| _| | _| |_ _ _ _| |_ | |_ _ _| |_ _ _| |_ _ _ _|_ _|_ |_ | | +| |_ _ _ _|_| | | _| |_ _ _ _ _| | |_| |_ _ _ _ _ | | _| | |_ | | _ _ _ _| |_ |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ | | _ _| _ _| | | | | _ | _ | _| _ |_ _ _ _| _ _| _| _ _| | _| _| _ _| |_ _ _ _ _ | _ _| |_ _ _|_| |_ _ _| |_| |_ _|_ _ |_ _ _| _ _ _ _|_ |_| | |_ _| |_ _|_ | _ _| _|_|_ | | | _ _|_ |_ _| | | |_ _ _ _ | _| |_ _ |_ _ _ _| |_ |_| _ _ _|_ _|_ _ _|_ _ _ _| |_ _|_ _ _| |_ | |_ _ _|_ | | _| _|_|_ _|_ _ |_| |_ |_ _ _|_ |_| | _|_|_ | | | _ _| | _ _|_| |_ | |_| | _ _| |_ |_ |_ | _|_ _ _|_ | |_ _| | | | _ |_ _ | |_ _ _ _| _| |_ _| | |_ _| _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _| | _| |_ _ _| | |_ _ _|_ | | | _ _|_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ | |_ _ _| |_ | _| _| |_ |_ |_ |_ _ _ |_ | |_ | | | |_ _| | |_ |_ |_ | | | _ _ |_ _ _ _| | | |_ | | |_ _ | _ |_ |_| | |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _|_ |_ _ |_ _ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | | |_ _ _| _| _ _| | |_ _ _ _ | |_ _ _| | _|_ | _ _| | | | |_|_ _ | _ _ |_ _ _| | |_ _|_ | _ |_ _ _ _| _ _| _ _ _|_ |_ _ _ _ |_ | |_ | | |_ _ _ _ |_ _| |_| _| _ _|_ |_ _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_| | | | _| _| |_ |_ _ _ | |_ | _ |_ _ | _ _ _| | _| | | |_ | |_ | | _ _ _|_ _ _ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _ _| |_ _| | _ _ | |_ | | _|_ _|_ | | _| |_ _| |_ _ _ | |_ _ | |_ |_ | | _|_ _ | | | | _ _| _| | _ _ | |_ | |_| | _ | | | _ _ _ _ _| | |_ _ | | |_| | _ | | |_ _|_ |_ | | |_ _ |_ |_ _| | |_ |_ | _| _| | |_ _ | | _| | | |_| |_ | |_ _|_ | _ _ _|_ _ _|_ |_ _ _|_ _ _ | _ _ _| | |_ _| |_ _ _| |_ _ | _| | |_ _ _| _| | | |_ _ _| |_ |_ | |_ |_ _ | | _| _| _ _ _ _|_ _ _|_ _ _ | |_ _ _|_ | | | +|_ |_ _ _|_| |_ _| _ | _| _| | | _ | | |_ | | | | | | | | _ _ _ _|_ |_ | _ _ _ _| _|_|_ | | | _ _|_ |_ | | _| | _| | |_| _| | |_|_ _ _| | | |_ | |_|_ | |_ |_ _ | | |_ _ | | | | |_ | | |_ _ _ _ _ _| |_ _ |_ _| _ |_ |_ |_ _ | | _ |_ _ |_ |_ _ _| |_ | | | | _ _| | _ | |_ _ |_ _ _ _ _| |_ _| | _| | _ | | |_ _ | _| |_ _ _| | | _ | | _ |_ |_ _ | _ | _ _ _ _ | |_ _ | _| _ _|_ _ _|_| | _ _| |_ _ _| _ _ | |_ _ | |_ _ |_ _| |_ | |_|_ _ _ _ _| |_ _| _ _| |_ _ _ | | _|_ _ _| | |_ _ _|_ |_ _|_ _ _|_ _ _ | |_ _ _ _ _| | |_ |_ _ | | |_ _ _| _|_ | | | | _ _| _| _ _|_ | |_ _ _ _ | | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_| |_|_ _ _ _| |_ _ _ _ | | |_| | _ _ | | _ _ | _| _| |_ _|_ _ _ _ |_ _ | |_| _| _ _|_ _ _|_ _ | _|_ _ _ _ | | _ _ _ _ _| _ _ _|_ _ _ _ _|_ _ _ | |_ _| | | |_ _| _ _ _ _ _|_ _ _ _| _ _| | |_| _ _| |_ |_| _| _|_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _| | _ _ | |_ _ _|_ _|_ _ _|_ | _|_|_ | | | _ _|_ _ | | | |_ _| |_ _ _ |_ _|_ _ _|_ _ _ _ _ _|_ _ _ _ _|_ _ | |_ | _|_ _| |_ _ _| | |_ |_ | _ _| | _| |_| _ _ _ _ | | |_ _ | _ _ _ | | _| |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _|_ |_ _ | _ |_ _ | | |_ _ _| |_ | |_ _| | |_ |_ | _ | _|_ | |_ _| _| _ _|_ _| _| | | _|_|_ |_| | _|_ _ _| _ _ _ |_ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _ _ _| | _| |_ _ _| |_ | | | |_ |_ _ | _ _ |_| |_ | |_ | | |_ _|_ _ |_ _| |_| |_ | | |_|_ _ | | | _|_ _ _|_ |_ |_ _|_| _ _ |_ _ | _| | |_ _|_| _|_ | | |_| | _ _ _ |_ _|_|_ _ |_ |_ _ | _| | | | | | | _|_ |_ | |_ _| | |_ _| |_ _|_ | | _| |_ _ |_ _| _ _ _ _ | _ _ _| _ _ |_ _ | _ _| | |_ _ _| _ |_ |_ _ | _| _ _ _ _ | | |_| _| _ _|_ _ _| _|_ | | _ _|_ _| _| |_ _ _ |_ |_ _ _ _ |_ _|_ _ | | | |_| +| _| _| | _ |_ | |_| _| | |_ _ _|_ | | | _|_ _| |_ _| |_ | |_ |_ _ _| |_ | | | _ |_ _ _ _ _ _ _| |_ _| | _|_ _ _| | | |_| _|_ _ _|_ |_ _ |_|_ _ | _ _ _|_ _ _|_ _ _|_ | | _| _|_ _|_ _ |_ _| | | | | _|_ _|_ _ |_ _| _ _ _| |_ |_| _| _ _|_ | _ | | _| |_ | |_ _| _| _ _|_ _ _| |_ | |_ | | | _|_ _ _ | | |_ _ _ |_ _| | _|_ _| |_ _ _ | |_ _ _ | _| | |_ | |_| | |_ |_ _| | | | |_ _ | | _| |_ _ | _ _| | | _ _ _ _| |_ _ |_ | _ _| | _| |_ _ |_|_ | _| _ _|_ _ _| _ _ _| | _ _ _ _ _ |_ |_ _ _| | _|_ | _ _|_ _ | _ | _|_ _|_ _ | | _| | _| | |_|_ |_| _ _| |_| _| |_ |_ | _| |_ _ _ _ _|_ _ | | |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_|_ | _ _ _ _|_ |_ |_ _| |_ _ _| |_ | | |_ _| _| |_ _ _ _ _|_ | _ _ _ _|_ _ _| | | _ _| | _| _ _ _ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _| |_| | | | _ _ _ _ | |_ _ _ _|_ | | _ _| _| _|_ _ |_ | | _| | | |_ _|_ | _ _ _ | | | |_ _ _ _ _| | | |_ _| _| _ _ _ _ | | |_ _ _ _ _| |_ _|_ _ _| |_ _| | | |_ _ _| _ _ _ |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _ | _ _ | | _|_ _ _ _| | | |_ _|_ | _ _|_ _ _ _ _|_ |_ _ |_ _| |_ _| | |_| _| _|_ _ _ |_ _ |_ _| | | |_ _ |_ _ | | | |_ |_ | |_ _| _| _ _|_ _ _| _ | |_ _ _| _|_ _| | _| _| _ | |_ _ | _ _| | | _| |_ _ _ |_ | |_ | _ _ _| _ |_ | |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ _|_| | _ _ _ | _| _ |_ |_ _| | |_|_ | | _ _|_| |_ _ _ | | | | |_ _ _ | |_| _ _|_ _ _ _| | |_ _| _|_ _ _| _ _ _ _| _| _ _ _| | | |_ _| _|_ _ _ _ | _ |_|_ _ | |_ _ _ _ _ _ _ _ _ _| | _ _| | | | |_ | |_ |_ _| _| |_ _ |_|_ | _ | | | |_ |_ _ | _ _ |_ _ _ |_ _| _ _ _| | | |_| |_ | | _ |_| _| _ _|_ | _| | |_ _ _ _| | | | _ _| | _ _ | _ | _ _|_ | _ _ _|_ _ | _| | _ | _|_ _ | |_ _| | |_ | +| | |_| | | | _|_ | _ _| _ _ _ _|_ |_| _ |_ |_| _| _|_ |_| _| _ _|_ _ _| |_ |_ _| | _ _| _ |_ _|_ _ |_ _ _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | | |_ |_ _ _|_ _ | | |_ _| | _ _ _|_ _ |_ _ |_ | | | | _| |_ _ _ _ _| | | |_ | | | |_ | _ _| | _ | _ _ |_| | | |_|_ _ _ _ _ _| | |_ _ _ |_|_ | _ _| _ |_ |_ _| | |_ _| | | | | _|_ _ _| | | | | _| | |_ _| | |_ _ _| _| | | | _|_ | _ | | |_ _ _ | | | | |_ _ _| | | _ _| |_ | _ | _ _| | | | _|_ _| _ _ |_ _ _ _| | | | | _ _ _|_| _ _ |_ _| _| |_ _ _ _|_ _| |_ | | |_ _| |_ _ _ _ | _ _ _|_ |_ _|_ | _| | |_ _ _ _ _ |_ |_ _|_ _ | | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | |_ _ _| |_ |_| _ | | _| _| | |_ _ _| |_ _ _ _ | |_|_ _ |_| | _ _| |_ | _|_| | _ _| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ _|_ _ _|_ | |_ _ | | _| |_ _ | | | | |_ | _ _ _| _ |_ |_ _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _ | |_ _|_ _ |_ |_ _ | | _| |_ _| _ _ | _ _ | | _ _ _ _| |_ |_| _| _ _| |_ _ | | | |_ _| _ | | _| |_ _ |_| |_ _ _ _| |_| |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _ |_ _ | |_ _ | |_ _ _| _| _ | |_ _ _| | _| |_ | | | _| _ _|_ _| | |_ |_ _ |_ | _ _| | _ _| _ _| |_ _ | _| _ _|_| _| | _| |_ _ _ _| | _ _|_ _| _| _ |_ _ _ _ _|_ _ _ _ _ |_ _| _| |_ | _| | | |_ _|_ | | _ _ _ _ | | |_ _| | _ _|_ _ _| |_| | _| _ _|_ | _|_ | _ _|_ | | |_ _ | _|_ _ _|_ _ _ _ _ _| | | _ |_| _ _ _|_ | | _ _| | | | _ _| _|_ |_ _ |_ |_|_ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _|_| | | | _| _|_ |_ _ _| _| |_ | |_ | | | | | |_|_ | | _ _|_| |_ _ _ _ _ _ |_ _ | |_|_ _|_ | | _| |_ _| | _| |_ _ _ _ _|_ _| | _| _| _ _| |_ _ | _| _ |_| | |_ _| | _ _|_ _ | _ _| _| | _| |_| _| |_ _ _| |_ | _| | _| +|_| | |_ | | |_ _ _ | _| | |_ _| _ _ |_| _| _ _|_ |_ | | | | _ _| | _ | _|_ | _ _| | |_ | _| _|_ _ _ | _| _ |_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | _|_ |_ _ _ _| | |_ _ _ _| _ _| _ | _ _| | _| | | | |_ _ _ | _| | |_ | |_| | |_| _|_ | _|_ |_ _| |_ | _|_|_ _ | | | _ _ _| |_ _ _ _ _ _| _| _| _ _|_ | _|_ _|_ _ | | |_ _ _|_ | _ _|_ _ _|_ _ _ _| _ _| _|_ |_ | |_ |_ _ |_|_ |_ |_ _ _ _ _| |_| |_|_ | _| | | |_ _ | _|_ | | | | |_| |_ _| _ _ _| | | |_| _ _| | _|_ _ | _ _ _| | | |_ _ _| |_| | _ | _ _ _|_ _ | _ _| | _| _ _| |_ | _ _|_| _|_ |_ _ |_ _ _| _ _|_ _| | _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| |_| _| _ _|_ _ _| _| _| |_ | | _|_|_ _ _ _ _|_ _ _ | _| |_ _ | | |_ _ _| |_ | _| |_ _ |_ _ | _| _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _ _ _ | |_ _ _| | |_ _ _| | | |_ _|_ | | |_ _ _ | | _ _ _| | | | _ _ | _| _| | |_ _ _ _ _ _|_ _ | _| |_ |_ _ _| _| | |_ _ | _ _| |_| |_ _| _ _| | _| _ |_ |_ |_ _ | _ _| | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _ _ _|_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | _ |_ | _ _ _| _| _| |_ | _ _| |_ _ _| _| | | |_ _ | _ _ _|_ | _ | | _|_ | _|_ | _ _| _|_| |_ _ _ _| | _ _ _| | _| _| | _ _ _| | _ _ _| _| |_ | _ _ _ _ | |_ _| _ _| _ _| |_ _ _| |_ _|_ _ _ _ _| | | |_ _ _|_ _|_ _ |_|_ _ | _ _ _ _|_ |_ _ |_ _ _ _ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | _ _ _ | |_ _|_|_ |_ _ _| _ _ |_|_ | _ _| | | | | |_ _ |_ _| | _| _ |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| | |_ _| _| | | _ _ _| _ _|_ | | |_| |_| |_ |_ | _ _|_ | | |_ _ |_ | _| _| | |_ _ _| | |_ |_ _ | _ _ |_ _ _ _ _ _ _| | _| |_ _ |_ |_ _|_ |_ |_ | _ _ _ |_ _ _| | | |_| _|_ |_ |_ | | |_ _| | | |_ _ |_ | +| _|_ _|_ _ _| |_ |_| _| |_ _ _ _ _ | | _ _|_ _ _ _ _ _|_ _|_|_ _ | _|_| _| | | |_| |_ | |_ | |_ | | _ _ | _| _| _ _|_ | |_ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| _|_ _ | | _ _|_ _ |_ _| |_ | |_|_ | _|_ | _| |_ | |_| | |_| |_| _| _ _|_ |_ _| |_ _ |_ _ _ _| | |_ _| _ _ _|_ _| |_ _ | |_ |_| |_ _ _ _| _| |_ _ _ _ _|_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | | |_| |_ | | | _| |_ _ |_ |_| |_ | | _| _| _ _| |_| | | _ |_ _| | _|_ _ _| |_ _ _ _ _|_ _ | |_|_ _|_ | | | | | | |_|_ _ | |_|_ _|_ | _ _| | | _|_ _| _ _ |_ _ | _ _| | |_ | _ _|_ _ _| | _ | _| _| |_|_ | | | | _| _|_ | _ _| | | | | | | | _ _| _| | | | |_ _ _| _ | _ _| | _ _| _| _ _|_ | | | | _ _ _ | _ | |_ _ _|_ | | | | _ _ | | |_ | | _|_ _ |_|_ | | |_ _|_ | |_ | _|_|_ | | | _ _| _ | | | | _|_ _ | | _| |_ _ | | _| | | _| | | | _ _ _| | _| | |_ _| _ _| | | |_|_ _|_ | |_ _ _ _ _|_ |_| _ |_| _ _| | | |_ _ _ _ | _| _| _ _ _| | _ _| _ _| |_ _ _ |_| _| _ _|_ | | |_| |_ | | |_ | _|_|_ | | | _ _| _ _ _ _ | | | |_ _ _| |_ | _| | | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| _| |_ _|_ _ | | _| _ _| |_ | _ _ _| _| | | |_ _ _ _|_ | _| _|_ _| | |_ _| |_ _ |_ _ | | | |_ _ |_ | |_ _ | | | | | _|_ _ _ _ _ _|_ _ | _ _ _ _| |_ _ | | _| |_ _ | | |_ | _ _ _ | | _ _ | _ _ _|_ _|_ _ _ _ _ _ _ |_ _ | | |_ _ _| |_ | _| _ _ _ _ _ _ _ _ _ _| _ _ _| _ _| _| _ _|_ | _ _ _|_ _ | | | _ _ _| _| | |_| |_ | | _|_ _|_ _ |_ _ _| _|_ _ _ _| _ |_ _ |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | | | _ _| _| | |_ _ | _ _ _ | | | | _| _| _| |_ _| | _ _| |_ _| _ _| _|_| |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _ _ _ | |_ _ _ | | _| _ _ _ _| _| |_ _| | | | _| | | _|_ _|_ _ | _ |_ _ _ |_ _|_ _ _ _ _|_ _ _| _| +|_ _ | _ _ _ _|_ |_ _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_|_ |_ _ |_ _|_ | | _| |_ _| | _| |_ |_| | _| |_ _ _ _ _|_ _ | | _ _ | _|_|_ | | | _ _| _ _ | | | _| _|_ _ _ _ _ |_ | _ _|_ | | _| |_ _|_ | _|_ _ _ |_| _| _| _ _| | _ _|_| _| | | | | |_ | |_ |_ _ |_ | |_ | _| | | | | | _| | _|_ | |_ _ | | |_ _ _ _ _ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ |_ _ _| |_ _ _| |_ |_ | _ _| | _ _|_ _ _|_ | | _ _|_| |_ |_ _ | | | _ _ |_ | | _ _| | |_ _ | | | | | |_ _| |_ _ _| | |_ _ | | | _| | |_| | _ _ _| | | |_| |_ | |_ |_| | _ _ _ _| _|_ _| _| |_ _ | |_| |_ _| | _|_ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | |_ _ _ _| _|_ | _|_ _ _| |_ _| _ _ _ _| |_| | |_ _ | | |_ _| |_ | _ | | | |_| | | _| |_ |_ _|_ _ _ |_ _ _ |_ _|_ _ _ _ _| | |_ _ _ _ _| |_ _| _| |_ | |_| | |_ _ _| | |_ _ _|_ | | | |_ _ |_ _| | | |_ _| | _| | | _|_ _ | | _| | | | _ _ _|_ _ _ _ | |_ _ | | | _| | _ _| |_| | | _ | |_ | | _| | _ _| | | | _ _| | _ _| | _| |_ _ _ _ _| _|_ | | _| |_ _| |_ _ _ _ _| |_ _|_ | | _ | | | |_| _| _ _|_ _ _|_| | |_ _|_ | _|_|_ | | | _ _| _ _ _| | | |_ | _| _| _ _| | | |_ _| | _ _ | | | _ _ _| _ _| |_ | _ _ _ _| _| _ _|_ |_ | | _|_ _ |_| |_| |_ _| _ _| |_ _| | | | | | | | | _ | _ _| |_ _| | | _| | |_ _ _| _| | _| _| | | |_ _|_ _| _| |_ _ _ _ _ _ _ | | _ _ _ _ | | |_ _| _| _ _|_ _ _| | | | | _ _ _ _ | |_ _ _ | | |_|_ |_ _ _ _|_| |_ _ |_ _| | |_ _ | _ |_ _|_ | | _| |_ _ | _ |_ _ _ |_ _ _ | |_ _|_ _ |_ _ _ _| _ | _|_|_ | | | _ _| _ | | | | | | _| |_ _ | | |_ _ _ _| |_ |_ | |_ | |_ _ _| _| _ _ _ |_ _ _ _| _ _| _| _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | |_ _ _|_ |_ _ _| _ _ |_ _ | _ _| | | | | _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | +| | |_ _ _| |_ | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ _ | | |_ |_ _ | _ _| |_|_ | | |_ | _ _ _ _ _ _| _|_ | |_ _ _ _ _| |_ _|_ _| | | | | | | |_ _ _ _ _| | _| | | _ _ _ _| | |_ _ _ _ | |_ _| _ _| _| _|_ _ _ | | | _ _ _|_ _ _| |_ _| |_ |_ _| |_ |_ | |_ _ | |_ _ _| |_ _| |_ | _|_ | _| | _ _| | |_ |_ | _ _ _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _ _| _ |_ |_ _| _| _|_ _ | |_ | _ _ _ _| |_ _| _ |_ |_ | | | _|_ _ |_ | | |_ _| | _|_ _ _| |_| | | |_| |_ | _| |_ | _|_ _ _| |_| | | | | |_ | |_ _ | _|_|_ _|_ | | _| |_ _ _ _| | _| _ _| _ _ _| | | |_ | | | _| |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ | _ |_ _| |_ _ |_ _ | | | _| _ |_ |_ _| _ _| |_ _ _ | |_ _|_ _| |_ | _|_ _| |_ _ _ _ | _ _| | | _ | | _ _| |_ _ _ | _ _ |_ _ _ _| |_ _ _| |_ _| _| _ | | | | | |_ _| _|_| |_ | _| | | _| |_ _ _ | | | | |_ | | |_ _ _ | | _| |_ _ |_ _|_ | |_ | | | _| _| _| | _| |_ _ |_ | _|_| | | |_ | | _ _ _| |_ _ _ _ _ |_ | | |_ |_ _ | _ _ | _ | |_ _| | _|_ _| |_ _ _| | _ _| _ _|_|_ | _ _|_ _ _ _ _| |_ _| |_ |_ _ | | | | | | _|_ _| | _|_|_ _ _ | | | | |_|_ _ | _|_ |_ |_ _ | _ _ _|_ _|_ | | | |_ _|_ _ _ |_ | _ _| _ _| _ _| | _| _|_|_ _ _| |_| |_ _ _|_ | |_ _ _ _ _ _|_ _| | | _|_ _ | | |_| | _|_ _|_ _ _ _ _ _ |_ _ _ _ | |_ _ |_ _ | | _| |_ | _ _| | | _ _| |_ | | |_ _ | | _| |_ _ | _|_ _|_ _ |_ _ | _ _ _ _|_ | | _|_ _| | | | _ _| | |_ |_ _ | _|_ _ _ _ |_ _ _|_ _|_ _ | | _ | _ _| _|_ _ _ _ _| |_ _| | | | _| | | | | |_ |_ _ | _|_ |_ _ _| _|_ _ _ _| | _| _| _ _| | |_ _ _| _ | | |_ _ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_|_ | _ | _| _ _ _|_ | | |_| |_ | | |_ | | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | +| |_ _| _| _ _|_ _ _|_| _|_ _|_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _|_ | _| |_|_ | | _ _|_| |_|_ _ | | |_ | |_ |_ | _ _ _ _| |_ | _ | _ _ _ |_ _ _| |_ _ _| |_| _ _ |_| _| |_ _ _| | | | _ _|_ |_ _ _ _ _ |_ _ _| | _ _| _ | | | |_|_ _ | _ |_ | |_ | |_ |_ _ _| | _| | | | _ _ _|_ | |_ _ _| | _| | _ _|_ _ _ | | _ _| | |_ | _|_ | _|_|_ | | | _ _| _ | _ _| | |_ _| _| _| _ _|_ | | _| _|_ _| | | _| | |_ _ | | _| _| _ _|_ |_ _| |_| _ _ _| |_| | _ _| |_ _ _ | | _| |_ _ _| |_ _ | _|_ _ _ | | _|_| |_| | | _| | _| | | _ _| | |_ |_ _ | _ _| |_ _| |_ |_ _ | | _| | _| | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| | |_ _|_ |_ | | |_ _ |_| | |_ _| _| _ _|_ | _| _ _ | _| | | _ _ | |_ |_ | _ _|_| _ _ |_ _| | _ _| | | | | |_|_ _| | _|_ |_ | | _|_ _ _ | _| _ |_ |_ | | _| _|_| | | | |_ _|_ _ | _ |_ |_| |_ _ _|_ |_ | _ _ _| |_| | |_ _| | _ _| | | | |_ _ _|_ | | _ | | | | | | | |_ | | |_ | |_ |_ _ | _| |_ _ |_ _| | | |_ _ | |_ | | | | | | | |_|_ | | _ _|_| |_ _ _| |_ |_ _ _ |_| _ |_ |_ _| _|_ | _|_ | _ _ _|_ | _ _ | _ _ _| | _| _ _|_| |_ | |_| |_ _| |_|_ _ _ | |_|_ | |_|_ _ _| |_ _ _ _|_ |_ _|_ _ |_ | _| | |_ |_ _ _ | _| | _ _| | |_ _ |_| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | _ _| |_| | | _| |_ | | | | |_ _ _ | _| |_ _ |_ _| | |_ _ | _|_ | _|_ _ |_ |_ | |_| _| | |_ _ _| | |_ |_ _ _ |_ _ | |_ _ _| |_| |_|_ _ _ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | |_ |_ _ | |_ _| |_ | | | |_ _ |_ _ _ _ _ _ _| | | | _ _|_| |_ _ | | _ _|_| |_ _ |_ _ _ | |_ _ _|_ |_ _ |_ _| _ _ _ _|_ |_|_ _|_ _ |_ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _| _| _ |_ _| _| |_ _ | |_ _|_ | | _| |_ _ | |_ _|_ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | +|_ | _ _| | | _ _ _| _ _ _ _| _ _ _| _|_|_ | | | _ _| | | |_| | _| _ _|_ |_ | _ _|_ | | |_ _ | _| _| _| _ _| | |_ | _ _ _|_ | | | |_ _| |_ |_ _ | _| _ |_ |_ |_ _ _| |_ _ _ _|_ _| | | _ _ _| _ _ |_ _ | _ _| |_ _ _ _| | |_ _|_ _ _ | |_| |_ _ _ _| _ _ _|_ _ _|_ _ | _|_|_ _ _| | |_ _ _| | _| | _ _| _|_ |_ _ _| _ _ |_ _| | _ _| | _| |_ _ |_|_ _ _ _ _| |_ _| | | _|_ _ | | | |_| _| |_ _ _ _ _| | | _| | | | |_ _| | _| | | | _| |_ _ _ _ _| _ _| _| | _ _| | _| | |_ _ _ _|_ _| |_ |_ _| | _ _ _| _| | _ _|_ _| |_ _ _ _ _ _| | |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _| | _| | | | | |_ _ _ _ _ _ _|_ | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| _| |_ | _ _ |_ _| | |_ |_ | _| | _| |_ _ _ _ _| |_| |_| _| | |_| | | _|_ |_ _| | | _ _ _| | | |_| |_ | |_ _| |_ _ _ _ |_ _| |_ |_ _|_ _ _| _| _| _ _|_ | | | |_ _ _ _|_| |_| _ | _| | _ _|_ | _ _ |_ _ _| _| _ |_ | |_ _ _ _| | _| _ _ _| _ | |_ | |_| |_ _| | | _ _| |_ |_ _ _ _ _| _|_| _ _ _| _ _ _ _|_|_ _ | _| _|_| | | |_ _ _| |_ | _ _|_ | | |_ _ | _|_ _| _ |_| _| _ _|_ | _|_ | | _| |_ | _ _| | |_ _ _| |_ _ | | |_| _| _ |_ |_| | |_ _ | _| |_ _|_ _ |_|_ _ | _| _|_ _ _ _| _ _| _ _ _ | _|_ _|_ _|_ _ _ _ _| _| | | _|_| | _|_ _ |_ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _ | |_ |_| _| _| |_ _|_| |_ | _|_ _ _|_ | | _| _| | | |_ _| |_ _ |_ _| _ _| |_ |_| | _| _ _ | | | | | | _ | | |_| _| _ _| _ _| | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ | | _| |_ | _|_ _| |_ _|_ _ |_ _ _ | _ _| | |_| |_| _ |_ |_ _|_ | | |_ _ | |_ _ _|_ _|_ _ | | | _| |_ _ _| |_ _ |_ |_ _ | | _| | | |_ _|_ | | | | | _ | | |_|_ |_| _ _ _|_ _| |_ _ | _| | | |_ _ _| | |_ |_ _ | |_ _ _ _ _ _| | _| | _|_|_ | | | _ _|_ |_ | | |_| | +| _|_ | _|_| _| | _ _ _|_ | | _ |_ _ _ _ _| |_ _| _|_ _| |_ | | | _|_ |_ |_ _| | _ _| |_ _| _ _| |_ _| _| _|_ _ | |_ |_ _ _| |_| | | _ _|_ _ _| _ _ _| _| _ _|_ | |_ | _ _ _ _ _| _ |_ | | | _ _ _| | | |_| |_ | | _ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | _ _ |_ _ | _ _| | | |_ | |_ | _| _ _ _|_ | | |_| |_ | | | _|_ |_ _ _| | |_ | | |_ _ _ _| |_| |_|_ | |_ _ | _ _ _ _ _|_ _ _| | |_ _|_ _ _ _|_| | _| _| |_ _ _| _ _ |_ _| | | |_ |_ _|_ _ _ _ _ _ _ _ _|_ _ _|_ _ |_ |_ _|_ _ _ _ _ _| _ _ _| | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _|_ | _|_ _ _|_ _ | _ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | _|_ _ | |_ | |_ _ |_ _ _ | |_ _ _| |_ | _ | _|_ _ _|_ |_ _ _|_ _ _ _|_ | _ _ _ | |_ _ | _| |_ _|_ | | _| |_ _ | _| | _ _|_ _ _|_ | _| | _| _| |_ _ _ _ _|_| |_|_ | _ |_ |_ |_ _| _|_ _ _ _ _|_ _ _|_ _ |_| _| _ _|_ | | |_| | | | | _ | | |_ _| | _|_ _| _ _|_ _| |_ _| _ | |_ _ _ _| _ |_ | _ _ _ _ _|_| _| _ |_ _ _| _ _| |_ _| | _ _| |_ _| _ _| | _ _ _| | | _| |_ _ _ _ _| | _ _| | | |_| _| |_ _ _ _|_ _ | _ _ _| | _| _| _| _ _|_ | |_ _| _ _| |_ | |_ _ | _ _ _ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| |_ | _|_ _ |_ | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_|_ |_ _ |_|_ |_ |_ |_ _|_ _ _ _ | _|_|_ _ _ | | |_ | |_ _ _| |_ |_ | |_ |_ _ |_ _ |_ |_ | | | _ _ | | | | | | |_ | |_| |_| | _ _| | | | _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _| |_ _| | | |_ _ _ _ | _ | |_ _ | | | |_ _ _| | | _| _| _ _|_ | | _ _| |_ _| _ _| | |_ _ _| _ |_ _| | |_| | _| |_ | _ _|_ _ _| |_ |_ _ | |_|_ _ _| |_ _|_ _ _ _ _| |_ _ | | | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ | _ |_ _ _|_ _ _ _ _| |_ _| _ _ _| | _| | | _| +| _| |_ _ |_ _| |_ _ | |_| |_| | |_ | _ _ _ _ _ | | | | _ _ _ _| |_| | | |_ |_ _ _ |_ _ _ _| _ _| | _ _ _| _| _ _ |_ |_| _| _ _| | _ _| | _| | |_ | _| |_ _ _ _ _|_| _|_ | | _ _ _| |_ | |_| |_ _ | _|_|_ _|_ | | _| |_ _| _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | |_| |_ | | | |_| _| _|_ _| |_ _ | _ _|_ _|_ | | _| |_ _ _ | | |_ | | |_ _|_ _| |_ |_| _ |_ |_ | |_ | _|_ _ | _| _ _ | | |_ _ _ |_ | | | | |_ | | |_ | _| |_ | | _|_| | | |_ _ _ | | _ _ _ _ | |_ _| |_|_ _ |_ _ _ _ _ | | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _ _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | | |_ _|_ |_| |_ _ | | _| | | _ |_ | |_ _| | |_| _ | | | _ _ _ _ | |_ _| _ |_| _| | |_ _ _ _| | |_ |_ _ | |_ _| _ _| | _ _| _| _|_ _|_ | |_ _ _ _ _ _| |_|_ | _ _|_ | | |_ _ _ |_ _ | _ | | | | _| |_ _ _ _ _|_ _| |_ _ | |_ _| | _| |_ _ _ _ _|_ _ _| _| _ _ _ _|_ |_| _| |_ _|_ _ | | | |_ _| _ | | | _ _ _| | |_| _ _ _| | _ | |_ _ _ _| _ _| _|_ _ |_ | | _ _ |_ _ _| | _ _| |_ | | _| | | _ _| _| | | _ _|_ _ | _| |_ _ _ _ _| | _ _| _|_ | |_ _|_ _| _ |_| |_| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | | | |_ _ _| | | | |_ _| _ _| | | _|_|_ | | | _ _| | | | |_ _ |_ _ |_ _ _ _ _ _ _|_ _ _ _ | |_|_ _ | | |_ _| | | _| | _ _ | _| |_ _| |_ |_ | _ _| | |_ | |_ _| |_ _|_| |_ | _|_ _ | |_ | _| | | | |_ | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ _|_|_ |_ | _ _| _ _ _ | | | | | _ _| |_ _ _| _ |_ | | _| |_ _ _ _ _| |_ _ _ _| _ _| |_ _ | |_ _ _| |_ _ _|_ _|_ |_ |_| | _ _| _ _|_ _ | |_ _ _ _| | _ _ | _ _ _| |_|_ |_ _ _ |_ _ | | |_ _ _| |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_| _ _ _ _| | _ _| | _ _|_ _| |_ | +| |_ | | _|_ _ |_ _| | | |_| | _|_ | | | _ _ _ _| | |_ _| _ |_ |_ | | |_ _ | | _| | _ | | |_|_ _ _ | _ _ _|_ _ | | | _ _| | | _| | | _|_ | | |_|_ _ | |_ _ _| _ _ _|_ _| |_ _ _ _| _|_ | _| | _ | | | |_ |_ _ | _|_ | |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ _|_ | | _| |_|_ |_ |_ |_ _ _| | _ _ _ | | |_ |_ _ | _ _| |_ |_ _|_ _ |_ _| _| _| _| _ _|_ | | |_ _|_ _ _| | | _| | _ _|_ | _|_ _ _ |_| | | _| _|_|_ | | |_ |_ |_ _|_ _ |_ _ | _| |_| |_ _ | | _| |_ _ | | | _ | | | _ _| _| | |_ _ _ | | _| _| |_ _ | | _|_ |_ _ _ _| _ _| _| | | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ _| | _|_ _ _ |_|_ _ _|_ _ _|_ _| |_ _ _ _ _ _| |_ _|_ |_ _ | | _| |_ _ | |_ | | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| _|_| | _ _| | | | _ _| |_ |_ | |_| _ _ _ _|_ | |_ _ _ _ _| _|_ _ |_ _ _ _| _| | | |_ _|_ _ _ | | _ _ _ | |_ _ _|_ _ _ _|_ _| _ _ _ _ | |_ _ _ _ _| |_ | | _ _ _ _|_ _| | | |_ _ |_ _| | | |_ _ |_ | |_ |_ _ | |_ _| | |_ _ _ _ | | |_|_ | | _ _|_ _| |_ |_| | _|_| _ _ _|_ _ _| _| |_ _| |_ |_ |_ |_ | _| |_ _ _ _ _| | | |_ _ | | _| | _ _ _| |_ | |_ |_ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ |_| | |_ _ | _ _| _| | _ _| |_ |_ _ _ _ _| |_ _| | |_ _| | | | | _ _|_ _ _ _ _| _ _ _ _ | _| |_ _ | | | |_| _ _ _| |_| _| _ |_| | _ _ _ | _ _ _| | _ | |_ _ _| |_ _| _| _ |_ |_ _| _| _| |_ _| |_ |_|_ _| | | | | _| | | |_ _|_ | _ _ _ _ | | |_ _ _ | _ _|_ _| |_| _ | |_ _| |_ | _ | _ _ _| |_ | | | |_ _ _ _| _ _| _ _ _| | |_|_ | | _ _ _ _| |_ _ |_ _ _ _| |_ _ _| | | | | _ _|_ | _|_ _ |_ _|_ | |_ _ _ _ _|_ | | |_ | | | |_ _| _| _ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ |_ _ | | | _|_ _| | _ _| | _| _ |_ | | +| | |_ _|_ _ |_ | | _|_|_ | |_| | _ |_ _|_ _ | | _ _|_ |_| _| _ _|_ | | | | |_ _|_ |_ _ | |_ _|_ _ |_ _ |_| _ | |_ _|_ _ | _| _| _| |_ _ |_ _| _ _| |_ | _| _|_ |_ _ |_ _ _ _ _| | | |_ _ | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _ _|_ | _|_|_ | | | _ _| _ | | | |_ _| | | | | |_ |_ _ | _ _ _ _| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| _ _ | _ _ _| | _| |_ _ _ _ _|_|_ |_ _ | _ |_ | |_ _ _ _| |_ _| _ |_ _| _|_ _| _| _ _|_|_ | | | | |_ _ |_| |_ |_ _ _ _| | |_ _ _|_ | | | | | | |_ _|_ _|_ _|_ |_ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | _| | _ _ _| | |_ _ |_ _| |_ _ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| _ | |_ _ _ _ _| _| | |_ _ _| | | |_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _ | | _| | _| _| _| | |_ |_ _ _| |_| |_ _ _ _ |_ _ _ _ |_ _ | _| | _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| _ | | _| |_ _ | _| _ _|_ _ _| |_ _| | _ _ | _|_|_ | | | _ _| _| _| | _| | |_ _| |_| | _ _|_ _ _ _ | |_ _|_ _ |_ _| | | _ _ _ _|_ |_ | | |_ _ _ _ _ _| _ _ |_ _ | _ _| | _ _| | | | _|_ |_ | | |_ _ _ _|_ _|_ _ |_ _| | _|_ _ _ _| _| |_ _ _|_| | | |_ | _|_|_ | | | _ _| _ _ _ _ | | | |_ _| |_ _ _| | | |_ | | | _| | |_|_ _| | _ _ _| _ | | _ |_ _|_| |_ | | | | _ _ _|_ | | |_|_ _ _| _| |_| | |_ |_| _ |_ |_ |_ | | _|_| _ _|_| _ _|_ _|_ _ | _ _| | | _| _ _|_ | | _ _|_ _ | _|_ _ _ _ _ _|_| |_|_ _ _| |_ _|_ _ _ _ _| | | _ |_ _|_ _|_ _ |_ _| | | _ _ _ _|_ |_ | | | | | |_ |_|_ _ |_ | _|_ |_ | _ _ | | | | _ |_ _|_ _ |_|_ | | _ _ _ _|_ |_ | | _ _ _ | _| |_ _|_ _|_ _ _ _ _| _ _|_ | _|_ _ _ _ | |_|_ | |_ | |_ _|_|_ | _ _| | _| _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| |_ _| | | | | _ _|_ _ _ _| |_| _| _ _|_ | +|_ _ | _ _| | _| | |_ _ _ | |_ | |_ |_ _ _ | | | |_ | _| _| |_ _ _ _ _|_| | _|_ _ _ _ _| |_| |_ _ |_ _ |_ _ _| |_ _|_ _ | |_|_ |_ _|_ _ | |_ _ |_| | _ _| _| |_ _ _ _ | |_ _ _ | _ _| |_ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _ |_ _ _ _ _| |_ _|_ _ _ _| | | | | | _| _|_| | |_|_ | | _ _|_| |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _ _| _| | | |_ _ _| _ _ _| _ _|_ |_ _ _|_ | | |_ _ | |_ _ _ | _ _ _| | |_ _ _ | _|_| | | |_ _| | |_ | | _| | _| _| _ _ _ | | |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ _ _|_ | | _ _ |_ _|_ _ |_ _ | | _ | | _| |_ | _|_|_ | | | _ _| _ _ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _|_ _ | | | _| _|_ _ | | | | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ |_ _| | | _|_ _ _| _| _| | _| _| _ _| _ _| | |_ _ _ |_ _ _ _| | _ _ _| _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | | _| | _ _ _ _ _| |_ | | _|_ _ _ _ _| |_ _| | _| | _|_ _ _ _ | | _ _ _|_ | _ _ _ _ _ _ _ _ | |_ _ | _|_ _ _| |_ | | | | _ | _ _ _| | | |_| |_ | | | _ _ _| | | _| _| |_|_ | | _ _ _|_ _ | | | _ _ _| _ _| _| | |_| _ _| |_ _ |_ _ _ _ _| |_ _| _ _ _ _| _ | | | | | |_ _ | | |_ _| | | | |_ |_ _|_ _ |_ _ | | |_ _ _ _| _| |_| _| _ |_ |_ | |_ |_ _ | _|_ _| | _ |_ | | _| | _| _| _ _|_ | |_ _| | | _ _| | | _ _|_ _| _ _ |_ _ | _ _| | _| |_ _ _ _ _|_|_ _ _| _ | _| _ _ _ _ | |_ _ _ | | _ _ | _| _| |_ |_| _ _ _ _|_ _ | _|_ _ _| |_ | |_ _| | |_ _| | |_ | | _ _|_ | _| _| | _ |_ _| |_ _ |_ | |_ _ |_ |_ _ _| |_ | |_ | | _ _| | | _| | _ _ | _ | |_ _ _ |_ _|_ _ | | _| |_ _ | |_| _| | _ | _|_ | _|_ |_ | _| | | |_ _|_ | _ | | | |_|_ _ _ _ | | _ _|_ _ | _ _ _ _ | | _| |_ _ _ _ _| +| _| | | _| | _|_ _ _ _ _ _|_ | |_ _| |_| |_|_ _|_ | |_ _ _| _ _|_ _ | _ _ _|_ | |_ _ _ _ _| | | | _ | |_ _| | _ | _ |_ _|_ _ |_ |_ _ _| _|_ _| _| _ _| | _ |_ | | _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | _| _ _ _| _ _ | | |_ _|_| |_ |_ _ _ |_ | _ _|_ | | |_ _ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | _| | |_ |_ _|_ _ _|_ |_ | | |_ _| | |_|_ _|_ _| _ _| |_ _ |_ _|_ _ | _ _ _ _ _| _|_ _|_ _| _ _ _|_ _|_ _|_ _ |_ _| | | |_ |_ _ |_| | | _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ |_ _| |_ _ |_ _ _ |_ _ |_ _| | | | |_| |_ _|_ _ _ _ _| |_ _| | | _| _ _| | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ _ _| | |_ | | |_ |_ _| | | |_ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _| |_ _|_ | _|_|_ | _ _ _|_ | _| | _ _| | | | _ _| | | | _ _ _ _ _ | |_ _| | | _ _| | _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ | | | | | _|_ | _ _ _ _|_ |_ | | _ _ | _ _ |_ _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _| _| _ _|_ _ _| |_|_ _ _| |_ _ | _|_|_ _|_ | | _| |_ _ | _ _|_|_ _| _| _| |_ _| |_ _| _ _ _| | _| | _ _| | | |_ _|_ | | |_ _ | _ _ | _ |_ _ _ _ _| _|_ _| |_| | |_ _| _ _| | |_ | _| |_ _ _|_ _ _ | |_ _ | |_ | _| _|_ | _| _| _ _|_ |_|_ |_ _| | |_ | |_ _| _|_ | | | |_ _| | _| |_ _ _ _ _|_ _ | | _|_ _ _ _|_ | _ _ _| | | |_| |_ | | | | | | _ | | | |_ _| _ | | _| |_ _ | _|_|_ _| _| |_ _ _ _ _ _| | | | _ _ | | |_ _| _| _ _|_ _ _| | _ _|_ _ _ _| |_ _| | | _ _|_| _| _|_ |_ _ |_ _ |_ |_ _| |_ | | |_ _| _| _ _|_ _ _|_ |_ | | |_ _|_ _ _|_ _| | |_ _|_ _ _ _ |_ _ _| | | |_ _ _|_ | |_ | | _| | | |_ _| |_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| | | |_| | |_|_ _|_ _ |_ _ _|_ _ _| _ |_| _ | | _| | |_ _ _ _ | +| | _|_| |_ _ _|_ _ |_ _ _| _ _ |_ _| | _ _| | _| _ _| | |_ | _ _ _| | | | | |_ _ _| _ |_ _| _ | | _ _| _|_ _| | | |_ | _|_ |_| | | | | | _ _ _ _| | _ _ _| |_| | _| | | |_ |_| _| | | |_ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ | |_ _|_ |_ _ _| | _|_ _| _| _ |_ |_ _ |_ |_ _| | _ _| |_ _| _ _| _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _| | |_ _| |_ _| |_ _ _| _| | | |_ |_ _ _|_ _ | |_ _|_ _ | | _|_ | |_ |_ _ _| |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _| |_ |_ | _|_ _ | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _| |_ _ | | _ | | _ _| | |_ _| | | _| | _ _ | _ | _ _ _ _| | | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | |_|_ _ _| |_ _|_ _ _| | |_ | |_ _ _| |_| _| _| | | |_ _|_ | | |_| _ _ | | |_ _ | _| _ _| _ _| |_ _ | _|_ | |_ | _| |_| | |_ | | |_ _ _| _ _ |_ _| | _ _| | | | _| | |_|_ | _|_|_ | | | _ _|_ _ _ _ _| | | | | _ _ | | | | | |_ _ |_ _ _ _| |_ | |_ _|_ _ |_|_ |_ |_| _ _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | _ _| | _ | |_ _ _ _ | _| | _ | | | |_ |_ _ | |_ _ | _ _ _| _| _|_ _ | _ _ _| | | _ |_| _| | | _ _| | |_ _ | | |_| | _ _|_| |_ _| |_ _ _ _ | |_| _ |_ |_ | _ _| _ _| | _|_ |_ | _ | | | _ _| | _| | | | _| |_ | _| |_ _ _ _ _| _|_ _| _|_ _|_ _| _|_ _ |_ _| _| | | |_ _ | _ _ _ _| | | _ _ _ _ | |_ _ | _|_|_ _|_ | | _| |_ _| | |_ _|_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ |_ _ _ _ | |_|_ | |_ _|_ | |_ | _ _| | _| _ | | |_ _ _| |_ |_ _| |_| _ _ _| _|_ | | _| | | | | | | _| | | |_ | _ _| | _ _ _| | |_ |_ _|_ _ _ _ _| _ |_|_ _ _ _ | |_ _| | _| | |_ _ _ | | | _ _|_ _ _ _|_ |_ | |_ |_ _ |_ _ | | | _ _ | | _| |_ _ _|_ _ _ | |_ _ | | | _ _ _ _|_ | _| | |_ _ |_ |_ | | | _| +| |_ _ _ | _ _ _ _ | _ _ _| | | |_| |_ | | | _| | _| _| _| |_ | |_| |_ _| |_ _ _ |_ _| | _ _| |_ _|_ | | | _| _| |_ _ |_ _ _ | _| | |_ _| |_ _| |_ _ | | | |_ _ _|_ _ _|_ _| | |_ | | _| | | _| | _| | | |_ _|_ | _ _ _| | | |_ _ _ _ |_ _ _ _ _| |_ | |_ _ _ _ _| _| _ _|_ | |_ |_ | |_ _ _ _| _ _| | _| _| | | |_ _|_ | _| | | _ | | |_ _ |_ | _| |_ _ | _|_ |_ _|_ |_ _ _| _ _ |_ _ _| _ _ _ _ _| | | | |_ |_ _ | |_| _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _|_ _ _ | |_ _| | | | | | |_ _ | | _|_|_ | | | _ _| _ _ _ | |_ _ _ _|_ | | |_ _| _| |_| _ _| | _ _ _| |_ |_| |_ | |_ | | |_ | _| _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ _ _ _|_ |_ _ | _ _|_ |_ _| _ |_ |_ |_ _ _| |_ _|_ _ _ _ _| |_ _ _ _| |_ _|_ _ |_ _| _|_ |_ |_ |_ _| | |_ _| | | |_ |_ _ _| | | |_| _ _ _| | | |_| |_ | | | | | _|_ _ | | |_ _ _ _ _| |_ _| _ _ _ _ _ | | | |_ _| |_ _|_| |_ _ |_ _ |_| _ _|_ _ _| |_ | |_ _ _ | |_ | | | _ _ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _|_ | _|_ |_ _|_| _ | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ | |_ _ _| _| | |_ _ _| |_ |_| _| _| | | _| |_ | _| | | | _|_ | | |_ _ |_ _ | _| |_| _| _ _|_ | | | |_ _| _| | _ _| _| | | |_ |_ | | |_| _ _|_|_ _ _| | | | |_ _ _ _ | | | _ |_ _ _ | |_|_ _ _ |_ _ | | _| | |_ |_ |_ _| | |_ _ | |_ _ | | _| _| | | | | | |_ |_ _ | _|_ | | _|_|_ | | | _ _|_ |_ | | | | | | _ _ _| _| _| |_ _ | |_ _ _| |_| | _|_ | _|_| | _| | | |_| |_ _ _|_ _ _ _ | |_ |_ _ | |_ _ _| | _ _ _|_| |_ | | | _|_ | _|_ | _|_ | _| |_ | | _ _ |_ _ _ |_ |_ _ | _| |_ _ | | | |_ _| | | _ _|_ | | | _ _ _ _ | _ |_ _| _ _ |_ | _ _|_ _| _| |_|_ _ _ _ _ | _| _| _ _ _ | | _| _ _| | _| | _| | _| _|_ _ _| | | | +| _ _ | |_ _ | | |_ _ | | | |_ _|_ | | _| |_ _ _ | |_ _| _|_ _ _ _|_|_ _ _ _ |_ | _| | _ _|_ |_ | | | | | | |_ _ _| _ _ _| | |_ |_ _ _ _| | _|_ _ _| | _| | _ _ | _ _| |_ |_ _|_ |_| |_ | |_ _ _| |_ _|_ _ _ _ _| | |_ _ | | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_| | _ _ | _| |_ _ _ _ _|_| |_ _| _| |_ | | | | |_ _ |_ _ _| |_ _|_ _ _ _ _| |_ _ | | _|_ _|_ _ |_ _| _ _ _|_| |_ _ _ | |_ _ | _ _ _| | | |_ _ _| | | _|_ _| |_ _ _ _ | |_ _ _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _ |_ _| | _ _| | |_ |_ _|_ _ |_ _|_ _ _ _ _| |_ _|_ | | _| | | | _ _ _ _|_ | |_ | | |_ |_ | _|_| _ |_ |_ | | | | _|_ _ _ _|_| | _| _| _ _|_ | _| _ _| | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ _ _ _| |_ | | | | _ | | _| _ _|_ | _ | | | _ _ | _| _| | _ _|_ |_ _|_ _ | | | _| | _ _| | _|_ _|_ _ | |_| _|_ _ _ _ _|_|_ _ _ _ _ _ _| |_ _|_ | | _| |_ _ |_ _ | | | | | _ | _ _ | |_| | _ _ _| |_| |_ _| _| _ |_ |_ _ _ |_ | |_ _ | | _|_ _ _| |_ _ |_ _| | _| _ _ |_ | | _|_|_ | | | _ _| _ | |_| |_ |_ _| |_ _ |_ _ | | _|_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _ _|_ | |_ _ _| |_ |_ | | |_ |_| | | | |_ | _|_|_ | _ _| |_ _| _ _| |_| |_ _ | _| |_ _ _ _ _| |_ _|_ _ |_ _ _| | | _| | | _ _| | |_ _| _| _ _ _ _ | | _|_ |_ | | | _| |_| | | | |_ _|_ _ | | _ |_ _| |_ _ _| _|_ _ _ _ |_ |_ |_ _| _| | |_ _ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ _| | |_ _ _ _ _| |_ _| _ _|_ _ _| | | _| |_ | _ _|_ |_ _ _|_ | |_ | _ _|_ _ |_ _| |_ _ |_ _ _|_ | _| |_| | |_ _ _ _| _| | | _| _ _| | _ _ |_ |_ _| | _| |_ _| |_ _ |_|_ _ |_ | |_ _| _ _ _ _ _|_ _| |_| |_|_ _ |_ _ _ _|_|_ _ _ | | | _ _ _| |_| _ | _ _ _|_ _ |_ _ |_ | |_ _| _ _ _ |_ _ _ _ | |_ _| _|_ _| |_ _| |_| _| _ |_ _| _| | _|_ _| _|_ | _|_ | +| _ | |_ _| | |_ _| _| | _|_ _ | | |_ |_ _ | _|_ _ _| _ _ _ _ | |_ _| _|_ |_ _| _|_ _ _| | |_| |_ |_| | | |_ _ _| _ | | | _ _ _ _ _ _|_|_ _ | _|_ _|_ _ | _| _|_ _ _ _ _ _ _|_ _ _ _ |_ _ | | _ _ | _|_ | |_ _| _| _ |_ _ | _|_ _ _| |_ | |_ _ | | |_ | _ _ | _ | | | |_ _|_ |_ _|_ _ |_ _ | | | _ _ | | _ _ |_| |_ _ _ _ |_ _ | | _ _ _ _|_ | | |_| | |_|_ _ | |_|_ _|_ | _ _| | |_ _ _ _| _ _ |_ _ | _ _| | |_ | _| | _|_|_ | | | _ _|_ _ _ _ | | | _ _| | | |_| |_ | | _|_ | _ |_ _ _ _ _ _ | _ _ |_ _| | _|_ _| |_ | _| _ _| |_ | |_ _|_ | | | _| _ _|_ | _ _| |_ _| _ _ _ _ | | | _| |_ _ _ _ _|_ | |_ _ |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ | _ _|_ _ _| | |_ _| _| |_ _ |_ _ _ _ _| |_ _ |_ _|_ | |_ _ _ _ |_| | _ |_ |_ _ _| | _| | | _|_ _ _ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ | | |_ |_ _ | _ _| |_ _ _| | | | |_ | | _ _| _| |_| _ |_ |_ _ | | _| _ _|_ | |_ _| | |_ _ |_|_ | | _ _ _ _|_ |_ | _| | _| _ _ |_| | |_ _ _ _ _| |_ _| | | _| |_ | | | | |_ | | |_ _ |_| _|_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_|_ _ _ _ | | _ _ _ _| _ _ _|_ _ _ _|_ | |_| | | | |_ _ _| |_ _ _ _| _ _| _|_ | | _| |_ _ |_ | _|_ _ |_ _ | | _| | | |_ | |_ _| _|_ _ | | |_ _ | | _| | _| _|_ _ _| |_ | | _| | |_ |_| _ |_ _| _|_ _ _ _|_ _ _ _ _ _ | |_| _| _|_ _ | |_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_| | _ _ _ |_|_ | _ _ _ _| |_| _|_ _| |_ | | | | | | _| | _ _ | | |_ | | _|_ _ |_| |_ | _| _ _|_ _|_ _ | |_| | _|_ _ _|_ |_| _ _|_ _ _ _ _|_|_ _ _ _| | |_ |_ _ |_ _ _| | |_ _ _| _ _ | |_ _| |_ _ _| _ _ _| _ _ _ _ | |_ _| |_| _ |_ |_ | | | | | |_ |_ _| | | | | _ _| _ _ |_ | _| |_ _ |_ _ _ _| | _ _| _| | |_ _| |_ _| | | _ _ _| _ _| | | _ _| +| | | |_ _| | _|_ _ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_| _ | | _| |_ _ | | _ _| |_| _ _ | |_ |_ |_ _ |_ _|_ _ _ _ _|_ _| | | _ _ _ _ | |_ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _|_ |_|_ _|_ | |_|_ _ _ _ _| | |_ _ _ _|_ _ | |_ _| _| _ _|_ _ _| _| _| |_ |_|_ _| |_ _ |_ _|_ |_ |_ _ | |_ |_ _ |_ _ | | |_ _| | |_|_ _ _ _|_ | | _ _ | | | | | |_ _ _| |_| |_ _ _| |_ _ _| | |_ _ | | | _| | | | _ _ _|_ | | |_| |_ | | | _| | |_|_ _ _ _ _| |_ _| _ _ | _ _| | |_ _ _ _| |_ _|_ | | _| |_ _ |_ _| _| | _ _| | _| _ |_ _ | |_| _ |_ |_|_ | _ _ _| _| | _| | | |_| _| |_ _ _ _ _|_| | | | _| | _ _ _| | |_ _ | | _ _|_| _ _ _ _ | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ |_| | | _ _ _ _ | |_ _| | |_ _ _| _ |_ _ _ _|_ _ _ _ | | _|_| _| _| | _ _|_ | | | |_ | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_|_ | | _ _|_| |_ _ | _ _| _| | | |_| _ _| _| _| _ _|_ | _| _| |_ _ _ _ _| |_ _ | | |_ |_ _ | | |_ _ _| |_ | |_|_ | | |_ _| |_ _ _| | _ _| _ _ _ _|_ _|_ |_ _ _| |_ |_ |_ _|_| _ |_ |_ _| _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| | | |_ | |_ _ _| _ _ _| | |_|_ |_ _|_|_ |_ | |_ _ _|_ _ _ _ _| _ _| |_| | |_ | | _|_ _ _ _| _ | |_ | _| | _ _ _|_| _|_ | _| _| | | _| |_ _| _| | |_ | _| _ _ _ _ | |_ _| |_ _|_ | |_ | _ | | | _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _| |_ _ _| |_ _ _ _| _| _ |_ |_ _ _ _ _ _| |_ _| | | | | | | _| _ |_|_ | |_ _| _ _ |_ | |_ |_| |_ _| |_ | |_ _| | _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ _ _ _ _|_ | _ _|_ | _ _| | _| |_ _ | _ | _| _|_ _ | | _| |_ _ _| _| _ _|_ |_| |_| |_ _| |_ _ _ _ _ _|_ _| | _ _| |_ _ _ |_| |_ _ _| _| | _ | | |_ _ |_ _| | _ _| | _ _|_|_ _ | _| _ _ _|_ _ | +|_ _|_ _ _ | | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ _| | |_ _ _| | |_| | _ _ _|_ _ _| |_ _ | | _|_ _ _| _ _ |_| | _ |_ |_ _ | | _| |_ _ | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ _ _ _ | |_ _| | _ _ _ _ | |_ | _ _| | _| _ _| _ _|_ _ | _ _| | | _ |_ |_| _ _| |_ _ _ _ | | |_ _| _ |_|_ _ _ _ | |_ _| |_ _| | _|_| |_| _| _ _| _ _| | | _| |_ | _|_ _ _| |_| | | | | | |_ _|_ _ | |_ _|_ | | _| |_|_ |_ _|_| _ _ |_ |_ _ | | | |_ _ _| |_ _ _| | | | |_ |_ _ | _ _ _ |_| |_ | _| |_ _ | | |_ _| _| _ _|_ | _|_ _ _| _|_ _| _| | |_ | | |_ |_ _ _| |_ _|_ _ _| |_| |_ |_ |_| | | | |_ _ | _| _ _|_ _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _| |_|_ _| _ _ |_ _| | _ _| |_ | | | | | |_ |_| | | | _|_|_ | _| _ _ _|_| | | _| | |_ | _| _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ | _ _|_ | | |_ _ | |_| | |_ _ _|_ | |_ | | _| |_ _ _ _ _|_ | |_ | _ _ | | | _ _|_ | _ | |_ _| _| _ _|_ _ _| | |_ _| | | |_ _ | _| | |_ _ _| | _ _ _ _ _| _ |_ |_ _ _ _ _ |_ _|_ | | _ _| | _| | | |_ _|_ | _ _| _ | | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _ _ _ |_ _ _ _ |_ _|_ _ |_|_ | _ _| _| |_| _ | _ _ _| | _ _| _|_ _| |_ | _ _| |_ _ _| _| | _|_ | _ _ _| _ _| | | _|_ | | |_ _ _ _| _| _ _|_ |_ _ | | _| |_ _ | | | _ | |_| | |_ _| | | |_| | | _|_ | |_ _ _ _| _|_ _ |_ _ _ _| _ _| | | |_ |_ _ _| _ _| | _ _| _| _ _|_ |_| _ | _ _|_ _ _ |_ _| |_| |_ _ |_ _ | | | _ _ _| _| _| |_ _ | _ _| | _| |_ | _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _| _ _ | | | _|_ _ _| | |_ | | |_ |_ _ _| | |_ _ _| | _| _| |_ _ _ _ _| _| _| | | _ _ _ _ | |_ _| |_ _ _ |_ _ _ _| _ _ | |_ | |_| | |_ |_ | | _| |_ | | | _ _ _| | |_ _| _ _ _ |_| +| | _ | | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| _ _ _| | | _|_ _ | _ _ _ _|_ |_ | |_ | _ _ _| | | _|_ | _ _|_ _| | |_ _ _| | |_ |_ |_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | |_ _ _ | _| |_ _ | |_ _ | | _| | _|_ | _|_ |_ |_ _ _| _ _ |_ _| | _ _| | | | | |_ _ _ _|_ |_| _ _ _ _ |_ _ _ _ _|_ _ _ | _| |_ _ | |_ _ _| | _ _| _ _| | _| | _ _| | |_ _ | _|_ _ _ | | _|_| |_| | | | _ _| | | |_ _ _| | |_ |_ _ | _ _ | |_ _ |_ _ _|_ _ _ _| | _| _ |_ |_ | _|_| | |_|_ | | _ _|_| |_ _ _ _ | | | _| |_|_ |_ | _| |_ _ _ _ _|_ | _ _ _| |_ _| | |_ | _|_ _|_ | |_ _ _ _| |_ _ _ | |_ _ _|_ |_| _| _| |_ _ _| | | |_ _ _ _ _| _ _| | | | | | _ _| _| | | | |_ | |_ | | _ _ _| | | |_| |_ | | | |_|_ _|_ _ | | | _|_ _| | |_ _ _ _ _ _|_ _ _ | _ |_| |_ _ | | | _|_| | _ _| | |_ |_ | _|_|_ | | | _ _| _ _ |_| | | | | |_ _| | _ _| |_ _| _ _| _ _| |_ _ | |_ _ _ _| | |_ | _ _ _ _ _|_ | | | | |_ _|_ _| |_ _ _| _|_ | _ _| | _ _ | _| |_ _ | | |_ _| _ _| | |_ | | _ |_ _ | | _| _| _ _|_ |_ _ _ _ _ _ | _| | | _ _| |_ _ _| |_ _|_ _ _ _ _| | |_ _ _ _| |_ _|_ _ |_|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _|_ _| |_ _ |_ _ _ |_ _ _ |_ _ | |_ _ _| _| _ _ _| _| _ _| _ _|_ | _ _ |_ _|_ |_ _|_ | _| _ _ _ _ | | _| |_ _ | _| _ _ _|_ _ _| |_| _ | _| |_ _ | _ _| _| | |_ _ _|_ | | | | | | |_ _ _|_ _ | _|_ _ _ _| _ _ _|_ _ _ _ _ _ _ _ _ | _ _ | | |_ _| |_ | _ _|_ | _|_ _ _| _| |_ _ _ _ _| |_ _ _| _ _ _ |_| |_ |_ _ | |_ | | |_ _ _| _| _|_ | | |_| |_ | | _ _| _|_ _ _ _ _| | _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _|_ | | _ _| |_| | _ | _| | | | | |_ |_| | | _| _ _ | | | |_ _ _ _ |_ _ _ _ _| | |_ _ | | _| |_ _ | | | _ | | | _| _ _| | _|_ _ _|_ |_ |_ _|_ | | _| |_ _ | _| _|_ _ _ _ _ _ |_ | +| | | | | |_|_ _ |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ |_ _| | _| |_| | | _ | | |_ _ _| |_ | | |_ _ _ _ _ _| |_ _| | |_ _ _ _ _| _| _| _| | | _| | _ _| | | _|_|_ | | | _ _| | _ _ _| | |_ | |_ _|_ _ |_ _|_ _ _| | |_ _| | |_ _ |_ _| |_ _ |_ _ | _ _ _| | | |_| |_ | | | | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_|_ _ _ _| _| | |_ _ |_ _|_ _ |_ | _| | | |_ | | | | _| | _ _|_ _| |_ _ _ _ _ _| | |_| | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ | |_ _ | _ _ _ _ _ _| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ | _ _| | | | |_ _ | | | |_ _ _ | _ _|_ _ _ _|_ _ _ _|_ _ |_ _ |_ _ _ _| |_ | _ |_ _|_ _ _ _ _| _| | |_ _ _| _|_| | _ _ _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ | |_| | |_ | | |_ _ | | | |_ _|_ | | _| |_ _ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_| |_ | _ _| | | | | | _| | |_ _ _ _ _| |_ _| _ _ _ | | | | |_ _|_ _ _ |_ _ _ _| _ _| _| | | | _|_ _|_ _ | | |_ | |_ | _ _| _| |_ _ _|_|_ | | |_ _ | |_ | _|_ | _|_ |_ _|_ _ _|_ | | _| _ _| _ _|_ | |_ _| | _| | | | _| |_ _ _ _ _| _ _ | |_ _| _| | | |_ _ | | | _ _ | _|_ | | | _ _ |_ |_ _ |_| | | |_ | _|_|_ | | | _ _|_ _ _ _ | |_ _ | | |_ _ |_ | _ _ | |_ | |_ | |_| _ _ _| _| _ |_ _ _| |_| | _|_ _ |_ | _ _ _ _ _ | | _ _| |_ _| | | _| _| | |_ _| _ _ |_| |_ |_ | |_ | | |_|_ _ _ | _| _ _ _ | | |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_| | |_ _|_ _ |_ _ |_| _ | | _| _ | |_ _ _ _ _ _| | _ _ _| _|_ _ _|_ _ _ _ _ _|_ _ | |_ | _ _| | _| | |_ _|_ | | _| |_ _| _| | _ _ | _| _ _ | _|_|_ | | | _ _|_ _ _ | | | |_ _ _| | _|_ | _| _| | | |_ _| _| | _|_ _ | _|_ | |_ _| _ |_| | |_ |_ | _| |_ _ _ | |_|_ _| | |_ _ _|_ | | | | | | |_|_ _|_ _ | | _ _ _|_ | _ _ _ _ _ _ _ _| | |_ |_ _ | |_ _ _ _ _ | |_ _ _ _| | +| |_ _| |_ _ _ | | _| | | |_ _|_ | | | | _ _| | |_ _| _ _ _ | _| _ _|_| |_ | |_ _| _| _ _|_ _ |_ _|_| _ _ |_ _ | _ _| | | |_ _ | | | |_ _ _ _|_ | | _ _| | |_| |_ _ _ _ _| |_ _|_ _ _ _| _ _ | | | | | _ |_ _ | _ _| | | | | _| _ _ _| |_ | | _|_ _ |_|_ _ | |_|_ _|_ | | _| |_ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | |_ |_ _ _ _ | _| |_ |_|_ _| | | |_ |_ |_ _|_ _ _ _ _ _| _ _ _| | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| |_ | _ | | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| | _ _|_ _|_| | |_| | |_ | |_ _| |_ _ _ _ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_|_ _| | _ _| | _ _ _| | _|_ _ |_ _|_ _ _ |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _ _| |_ _ _| | _| | | |_ _| | |_ |_ _ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_ | | | _| | | |_| | |_ | |_ _ _ _ _ _ | _| _ | |_ _|_| |_ _ _ _ | | _ | | |_ _ | | | |_ _ | _|_ _| _| _| _ _| | |_|_ |_ _ _ | |_|_ _|_ _| _ _| _ _|_ _| |_ _ |_ _ | _ | | |_ | | |_ _ _ _ |_ _ | | | | _| _| |_ | _ _ _ _| | _| |_ _ | | _|_ _|_ _ |_ _|_ _| | |_|_ _ _ _ _|_ |_ _ |_ _ _ _| | _| | | |_ _ _ _ _| |_ _|_ _ _ | | _| | _ _| |_ _| _ _| _|_| |_ | | |_ _ |_ |_ _ | |_ _ _| |_ _ | _| _ _|_ _|_ _ _ |_ _ _| _ _ |_|_ | _ _| | _ _| | | | _|_ _ _ _ _ | | _|_ _ _ _|_ _ _|_ _|_ _ _ _| | | |_ |_ _ |_| | | | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_ | _ _ _|_ _ |_ |_ _| | | |_| _| |_ |_ |_ _ | |_|_ _ | _|_ | _ _ _ _ | |_ _ _|_ | | | _|_ _ _| | | | | |_ |_ _ | _ _| _| |_ _| _| _ _| |_ _ _ _ _| |_ _| | _ _ _|_ | | | _ _| |_ | _|_ _ _| _| |_ _ _ _| |_| _ | _| | | | |_ _| _ _ _| _|_ _| | _| _|_ _|_ _ | | _| _ _ _ | | |_ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | | _ _|_| |_ _ |_ _|_ _ | | | +| | | _ _ _ |_ |_ _ _| |_ _|_ _ _ _ _| | |_ _| | |_ _|_ _ |_ _| |_| | _| _ |_ |_|_ | _ _| | _ _| | _ _ _| | | |_| |_ | | | | | | | |_ _ _| _ _ |_ _| | _ _| |_ | _ | _ _ _ _ | _ |_ _ _| |_ _ _|_ _| _| | | |_| | | | | | | |_ _ | _|_ _| | |_ _ _| | |_ _ _ | | |_ |_ _ | _|_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | |_| |_ | | |_ | |_ _| |_ _ _ _|_ _ _ _ _ _| | | _| _| _ |_ |_ _ | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _| _| | _| | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| _ _|_ _ _ |_| _ _| |_ _ |_| _| |_| _| _ _ _| | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | |_| |_ _ _ _|_ _ | | |_ _|_ _ | | | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _|_ _ _ _|_ _ | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ | |_ |_ _ _| |_ | |_ _|_ _ _ |_ _ | _| | | |_ | _| _ |_ |_ _|_ _| | | |_ |_ _|_ _ |_ _| |_ _ | _|_ _ _ _| _| _| _|_ _|_ _ |_ _ |_ _|_ _ | | _|_ _| | |_ | | _|_ _ |_ _| _|_ | | _|_ _|_ _ |_ _ _ | | | | | | | |_ |_ | |_ _ _| | _|_ _ _| _| | |_ | | _ |_ _ _ _ _ _| |_ _ _ _ | |_ _ _ _| | | | _ _| | _| | | _ _ _| _ _ _ _ _ _| | _|_ _| |_ _ _| _ _| _| | _ _| |_ _ _| | _ _| | _| | _| _ _ _| | |_ _| _ _ _ |_| |_| _ _ _| _| | |_| |_ | | |_ _ _ _ _|_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _| | _| |_ |_ | _|_ | |_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _| _ _ _| | | | _ |_|_ _| |_| _| _| |_| |_ _ _| |_ _ | |_ _ | | _| |_ _ |_| _| |_| |_| _ _ | | | | | |_|_ | | _ _|_| |_ _ _|_ | |_ | | |_ _ | | _ _ _ _| | | | _ _ _| |_| | |_ | | | | | | _| |_ |_| _ |_ |_ | |_| _| |_|_ _|_ _ |_| _ _ _ _ _ _|_ _ _|_ _ _ _ _|_ | | |_ |_ _ |_| | | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | |_ _ | _ | _|_ _| | | +| |_ _ _ | |_ |_ _ _ | | _ _ | | _ _ _| |_ _| _ _ | |_ _ | |_ _ |_| _| _ _|_ | _|_ | _|_| _| _|_ _ | | | |_ _|_ | | _| |_ _|_ _| _| | _ _ _|_ | | |_| |_ | | | | | _|_| | | | |_ _| _| _ |_ |_ _ _ _ _ _|_| |_ _|_ _| |_ | |_ _| |_|_ _ _ | _| |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ _ | _|_|_ | | | _ _| | _ _ _| | | _|_ _ _| |_ | | | _| _ _| _ _ _ _ | |_ _| | _|_ | | _| _|_ | |_ _ _ | | _| _| |_ _ | | _| _ |_ _ _ _| _ _| _|_ |_ | _| _| | |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _ | _ | | |_ | |_ _ _| _| | |_ | |_ | _ _| | _| | |_ _ _|_ | | _ | | _ _|_ _ _| |_ | _|_ _ | _| | | |_ |_ _ | |_| |_ _| |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| _ _ _ _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _|_|_ | | | _ _| _ _ _ _ | | | _| _ _|_ _ _|_ |_| _ |_ | |_ _ _ _ _ _ _| _ _| | |_ _| |_| _| _ _|_ |_ | _|_|_ | |_ _ |_ _ | | _ _|_| |_| _ _ _| _|_ _ |_ _ |_ _ | | | | |_ _| | | |_ _ _|_ _ |_ _|_ _ |_ | _|_ _ _| |_ _ |_ |_ _ | | _| | | _| | | _| _| _ _| _ _| | _ _ _ _ _ | | _| _| _ _| _ | _ _| _ | _| |_ _ | _ _|_| | |_ | _| | | | |_ _ _ _ _| | | _ _| _| _ |_ |_ _ | | |_ _ | | _|_ _ _ _| _| _| | | _|_ _ _ _| | _ _|_ _ _ | _ _|_ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _ | _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _|_ _ _ | |_ _| | |_ _ | _ | | _|_|_ | | | _ _| _ | _| | | | |_| | _ _ _| | | _ _| _ _|_ _| |_| _|_| _| | _| | _| |_ | _|_ _ _|_ _| | |_ _ _|_ | | _|_| _| | _| | _ _|_ _| |_ | _ _|_ | | |_ _ | _| | | |_ _|_ _ |_ _|_ |_ _ |_ _ _| _| _ |_ |_ | | |_ _| _| |_|_ _| _| _| _ _|_ | |_ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | _| |_ |_ | _|_ | |_| | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _| |_ _| _ _| |_ _| | _| | +|_ | _| | |_ _ _ _ _|_ _| | |_ _ _ _ _ _| | | _| _|_ _ _| | _ |_| _ _| _ _ _ _| _| |_ _ |_ _ | _| | _| | | | |_ |_ _ | _ _| _|_ _ | _ |_ _|_ | | _| |_ _ _| | _ _| |_|_ _|_ _ |_| _| _ _|_ | _| _ | |_ |_| _ |_ |_| |_ _ _ _ | |_ _ _|_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ _ _ _| |_ _|_ _ _ _| _ | | | | _ |_ |_ _| | |_ _ |_ _ | | _| |_ _ | |_| _ _ _|_ _ _| | | |_ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | | |_ _ | | | |_ _ | | | |_ | | | | |_| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_|_ | |_| | | _| | _ _ _| | | _|_ | | |_ _ |_ | _| _ _ _ _ _| |_ | |_| | _| _|_ _| | _ _| |_ | _|_|_ _ _ _ _| _|_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | | |_ _ | _| _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ _ _ _| |_ _| | _ _ | | | | _ _| | _| | _| _| _ _|_ |_ _ _ _| _ _| _| |_ _| | | | _| |_ _ _ _ _| _|_|_ _ _ _ _| | _ _| _ _| |_|_ | | |_ |_ _ | |_ _ _ _ _|_ _ _ _ _| | |_ _| |_ _ _| _|_ _| |_ _ _ _ _| | | | _| | _ _ _ |_ |_ _ | |_ _ _| | _| _ _|_| _|_ _| _| | |_ |_ | _ _ _| _ _ |_ _|_ |_ _|_ _ _ _| _|_ _ _ _ | |_ _ _|_ | | | _ _|_ | | | | | | _ _ _ _ |_ _| |_|_ _ _ _| _| _ _|_ | | |_ _|_ _ |_ _| _ _ _ _| |_| _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _ | | |_ |_ _ | _ _| |_ |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _ |_ _| | _ _| |_ | | |_ _|_ |_ |_ _ _ _ _| |_ _| _ _| | |_ _| | | |_ |_ _ _ _ _| |_ | | | _ _ _ _|_ |_ _ _|_ |_| | |_ _ | _|_ _ _ | | | _| _ _ _ | | _ |_ _ _| | |_ _ _ _| |_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ | _ |_ _ | |_ |_ _ |_ _| _| _ _|_ |_ _| |_ _ | _|_ _ _| _| _| |_ _ _ _ _|_ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _|_ _ _ | |_ _| | |_ _ _| |_ | | | _|_|_ | | | _ _| |_ | | | |_ _ _ _| _ _| _| |_ _ | | |_ _ | +| _| | _ _|_ |_ | _ _ _ _| |_ _ _ _ | |_ _| |_ _ _ _| _ _| _|_ _ _| |_ _ _ _ | |_ | |_ |_ _ |_ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _| | |_ _ _| | |_ |_ _ | _ _| _|_ _ _ | | | _| |_ _ _ _ _|_| _| |_ _|_ _| _| _ _|_ | |_ _ | |_ _|_ _ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _ _ _ _ _| _ _ _ | |_ _ _| |_| _| _ _|_ | | |_| _ | _ _| | |_ _ _| | | _ _ | _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ _ _ _| | | _| |_ |_ _|_ _ |_ _ _| | |_ |_ _ _| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | |_ _ | |_ | |_ _ | _|_| |_ _ | |_| _ _|_ | | |_ _ _ | | | _|_ _ _| |_ _ _|_ _ _ _ _ _| _| _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | | | | _| | _| | |_ _| | | _|_ | |_ _ _ _| _| | |_ _ _ _| _ _| _ _ _ _ | _ _ _ _ _| | _| |_|_ _| |_ | _| | _|_ _| | _| |_ _ _ _ _| _ | | | |_ _ _ | _| | |_| |_ _ _ | | _ _ |_ | | | _| _ _| _ _| |_ _| _ _| | _| | _ _| _| _ _| |_ |_ _ _ _ _ _ _ _| | |_ _ _ _| |_ _| | | _|_| | _ _|_ | _|_ | _ |_| _ _| _ | _ _ _| |_ | | | | _ _ _|_ | | _|_ _ _ _ | |_ _ _| |_| | | _| | |_ |_| | | |_| | |_ _|_ | | _ _ _ |_ _ _ _ | _| |_ _ _ _ _| |_ _ _ | |_ _ | | _ _ _ _|_ |_ |_ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| |_|_ | | _ _|_| |_ _ _ _ |_ _ _ _ | _|_|_ | | | _ _| |_ _ | | _ _| | | |_| |_ | | | |_| | _| | |_ |_ _ _ _ _ |_ _ | | _ _ _| |_ |_ | _ _| |_ | | _|_ _ _| |_ |_ _ _ | _ _| | | | _| | _ _|_ _|_ | | | |_ | _ _| | | |_ _ _ _ _|_ | | |_ _ | | _ |_ _ _ _| _ _| _ _|_ _ _ _ _|_ _| _| _| |_|_ _ | |_ | _| |_ _ _ _ _| _ _| _ _|_| |_ _ |_ | |_ | _ _ _ |_ | | | _|_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _ |_ _| | _ _| | | _ |_ |_ _|_ _|_ _ _ _ _| |_ _| _ |_ _ _|_ | | |_ _ _| | |_ _ | |_ _| _| _| +| |_ _ _| |_ _| |_ | _ _ | | _| |_ _ |_|_ | _ |_ | _| _ _ _ _|_ |_ _| |_ |_ _| _ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _|_ _|_ | |_ | _ _ _ | | _ | | | _| |_ _ _ _ _|_| _ _| |_ _ _ _|_ |_| _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _| |_ |_ |_ _ _ | | _| _ _| _ |_ |_ |_ _ _ _ _|_ _ | | _|_ | _| _ _ _ _| | | | |_| |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | _| | |_ _ _ |_ | |_ _ | _| | _| _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ | | _ |_ _ _ _| |_ | _|_ | |_ _| | | _ _| _ _|_ |_ _ _ |_ _| | |_ _|_ _|_ _ _| | _|_ _ | _ _| | |_| _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_ _ _|_| | _ _|_ _ | |_ _ _ _ _ _ _ _| | _ _ | | | | |_ | | |_ |_ | _ _ _ _| _| _ |_ |_| |_ _| _ _ _| | |_ | _|_ | | |_ _|_ _ |_ _ _| _|_ |_ | | |_ _ _| | _ _|_ _ |_| |_| | | |_ | _ _ _ _| _ _| _| _|_ _ _|_ _ | | _ _|_ |_ _ _ _| _ _ |_ _ | _ _| |_ _ | |_ | _ _|_ _ _| | _ _ _ _|_ _ _ |_ |_| _| _ _| _|_ _ | | | | | |_| |_|_ _ | | |_ _| | _ | _| |_ _ | | _| _ _| |_ _|_ | | |_ _ _| | |_ | |_ _ _ _| _| |_ _| | | | |_ _| _ _ _ | |_ _ _ | | |_ _ _| |_ | |_ _ _|_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _|_ |_ | _ _|_ | | |_ _ | _| |_ | _ |_ _ _ _ _| |_ _| _ _|_ _ _| _| |_ _ _ _| |_ _|_ | | _| |_ _ |_ _|_ | |_ |_ _ _ _ | | _| _ _| _| _ |_ |_ _| | _ _|_ _ | |_ _| _| _ _|_ _ _| _ _| | | | _|_ _|_ |_ _|_ _ _ _| _| |_ _| |_ _ _| |_ _| _ | |_|_ _|_ _| _ _|_ _| |_ |_ _ | | |_ _ _ _ | | _ _ |_ |_ |_ _ _| | | | | | |_ _ _ _ _ |_ _|_ | | |_ _ |_ _| |_ |_ _ | _ _|_ _ _| |_ _| |_ _ | | _|_|_ | | | _ _| | _ | | | _ _| | | |_| |_ | | | | | | | | _ _ _| _ _ _ _ _ |_ |_ | _ _ _| |_ |_ |_ _|_ _ |_ _| | _| | _| | +| |_ | _ _| | _| _| _| |_ | _| |_ _ _| | | _ _| | |_ | | | |_ _ _| |_ |_ |_ |_ _ | |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| _|_ |_ _|_ | _ _| |_ | | |_ _| |_ | _ _ _ _| _ _ _ _|_ _ _ _ | _| _| | | |_ _|_ | _| | _ _ _| | |_ _ _ | | _ _|_ _| |_| |_ | _| _| _ _|_ | |_ _ _ _ _ | _|_ | | | |_ _ |_ _ _ _| | | |_ _ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ _ _|_ _ |_ _ _|_ _ _| | | _ _| |_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _| _ _ _| | _ _| _| | | _ _| | _|_ _ _ _| _ _ _ _ _ _ | _ _|_ _|_ _ _ _ | | | | | | | _ _ _|_ | _ _| |_ |_ _ _| | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _| | |_ _| |_ | | _|_ _ _ | | _ _| | | _| _ _|_ | |_ |_ _ _ _ _ _|_ | | _|_| | |_|_ _ _ _|_ _ | _| _| _| |_ _ |_| _| | _ _ _| | _| _|_ | | | | _ _ | | |_ _|_ _ _ | |_ _|_ _| _ | | _ _ _| | | |_| |_ | | | _| |_ _ |_| _ _ |_ | |_ _ | | _ _| |_ | | | | | | _| | | |_ _| |_ |_ _ _| | |_ |_ |_ _| _|_|_ _ _| | | | |_ _| _ _| | | |_| | | | | _|_ _ _| _ |_ | |_ _ _ _|_ _|_ |_ | |_ |_ _ | |_| | _ _ _| |_| _| _ _|_ _ |_|_ _ _ |_ _ _| | _|_|_ | | | _ _| | _ | |_ _ | | |_ _| | _ _| |_ _| _ _|_ |_ | |_ |_ | | _ _ _ | |_ _ _ _ _| |_ _ _| | | | |_ |_ _ | _ _ | |_ | | _ _ _ | | |_ _ | _| _| _ _|_ |_ |_| | _ _ _| |_ | _ _| | _ _ | _ _ _|_ _| | _ | _| _ _|_ _ _ _ _|_ _ | |_| _ |_ |_| _| |_ _|_ _ | | _|_ _| |_ _ _ |_ _|_ _ |_ _ _| | |_ |_ _ _ |_ _ | _|_ _| |_ | | | _ _| _| _ _| |_ _| _ _| _| _| |_| | _| _ _ | | |_ _ |_ _| |_ _ _ _ _| |_ _| _| | _| | | |_ _ _ _| |_ _|_ | | _| |_ _| | | | |_ _ | | _| |_ | _| _| |_| _ |_ |_ |_| |_ |_ _ |_ _| _|_ _ | +| | | | _| | _|_ _ _| _| | | | | _|_| | | _| | | |_ _| _| _ _|_ _ _| | | |_ _| |_ | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ |_ _ _ _| _| _ _ _|_ _ _ _| _| |_ _ |_ |_| |_ _ | | | | _ _ _ _ | |_|_ |_ _ _| |_ _|_ _ _ _ _| |_ _ | _ |_ _|_ _ |_ _ _| | _ _ _ _|_ |_ | | | _| |_ _ _ _ _|_ _ _| | _ _|_| |_ _| | | |_ _ _ _ |_| _ _ _ _|_ |_ | _|_|_ | | | _ _| _ _ |_| | | |_ _ _ _ | |_|_ _ |_ _| _ _| |_ _ | _| | | | _| | |_ | | _|_| | _| _ _ _| |_ _ _ _ _| | |_ _| |_ _| _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | _| |_|_ _|_ | | | | _| | _ _ _| _| |_ | | | | | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _|_ |_ _|_| _ _ |_|_ | _ _| | _| |_ _ _ _ _|_| |_ _ _ _| _ _ |_ _| | _ _| |_ _ | |_ _ _ | |_ _ _|_| _|_ _ _| _| _| _|_ _ _ _|_ _ _| _ _ _| | |_ | |_ _|_ _ _ _ _|_ _|_ _ | | | |_| |_ _ |_ _| |_ _|_ | | _| |_ _ _ _| | _| _| _ _ |_| | _| | | |_|_ _ | |_ _| |_ _| |_ _|_| _|_|_ _ _ _ | |_ _ _ | |_ _ _ _ _ _|_ _ _ _| |_| _|_ _ _|_ _ |_| | |_ |_| _| |_ |_ | _ _ _| |_ | | | _ _ | | _ _| _| |_ _ _| _ _|_ | |_ | _ _| _ _| | _| _ _| |_ _ |_ | _ _| | |_ _ _ _ _| |_ _| |_|_ _| | | | | _|_ _|_ _ | |_ _ _ _| _ _| _ _ _ _| |_ | | _| |_ |_ _ _|_|_ | _| _ |_ |_ | _|_| | |_|_ | | _ _|_| |_ _| _|_ _| _ |_ _|_ _ _ _| | _| |_ _ _ _ _| |_ _ _| _ _ | | | |_ | _|_| _ _| |_ _ | _ _| | | |_ |_ _|_ _ _| _ _ _|_ _| _ _|_ | | | _ _ |_ _| | | | _ _| |_| | _|_ | |_ _ | | _|_|_ |_ _ _| | |_ _| _ _| _|_| | _|_ | | |_ _ _ _| _ _| _|_| _|_ | | _| _ _| _ _| |_ _| _ _| _|_ _ |_ | |_| _ _| |_ _ _| |_ _ _| | | | |_ |_ _ | _ _| _| _| | _ _|_ _ _|_ _ _| _|_| _| _ _|_ |_ _ _|_ _ _| _ _| | | | _ _ _| +|_| | | | | | | _ _ _ _| _| | |_| |_ |_| | | |_ _ _ _|_| |_ | _ _| | _ _| _| | |_ | |_ _| _| | | _| | | |_ _|_ | |_| _ | | | |_ _| _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _| _ _ _| _| _| _| _ | _ _| | _| _| _| _ _ _| |_ _| |_|_ _ | | _| |_ _ | _ _ | | _ _ | | _ _ |_| | | |_ |_ _ | _|_ _ _| |_ | | | | |_ |_ _ |_ | |_ _ _ _ _ |_ _ _ _|_ _|_ _ |_| |_ |_ _ _| |_ | |_|_ _ _ _ _| |_ _| _ _| | | | | | _ | _| |_ _ |_ | | |_ | _ _ |_ _| | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _ _ _ _ _ | | _ |_| |_|_ | _ _ _| | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _ _ _| | | | | | | _ _ _ _| _| | | _| |_ _ _ _ _| |_ _| | _ _ | | | | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | _| _ _ _|_ | | |_| |_ | | |_ _ _ _ | | |_| _ _ _| | | |_| |_ | | _|_ _|_ _ | |_ | _ _ _| _ _ | _| |_ _ |_ _ | _| _| | _|_ |_| | |_ _ |_ _ _ _ _ |_ _| | | |_ _ | _| | _ _| | | |_ |_ _ | _ _ | | |_ _| |_ _ _| | _|_|_ _ _ | |_| _ _ _ | |_ _ _ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ _| | _| |_ _ | | | _|_ _|_ |_ _|_ |_ | |_ _ _ _| _| |_ _| | |_ _ _| _| _| | _ _| _ |_ | _|_ _ |_ | _| _ _| _ _| | _ _ _| | |_ | |_ | | _ _| _| | | _|_ _| |_ _| |_ _| |_ | | |_ _ _ | | | |_ _ _|_ _| |_ _ _ _ |_| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ | | _ _ _ _|_ | | _| | |_ _ _ _| _ | _ _ _|_ _ _|_ _ _| _ | |_ _ | _| | |_| _| |_ |_ _ _ _ |_| | _| |_| |_ _| _ _ _ _ _|_ _| |_| | _|_ _| |_ _ |_ | |_ _|_ _| | _ _| | | | _ _ _ _|_ _ _ _|_|_ | _|_ _| _| _ |_ _ _ _|_ | | _| | |_|_ _ _| _ _|_ |_ _ | |_ _ _ _| _ _| _ | | _| _| |_| |_ |_ _| _| _ |_ |_ | _|_| | |_|_ | | _ _|_| |_ _ | | | | _ _ _ _ | |_ | _| |_ _ _ _ _| _ _ | | | _ _| | _| |_ | +| _|_| |_| | | | | _ _ _| |_ _ _| _| _| | |_ | _ _ | | |_ | _|_ _ _| | _| | |_ _ _|_ _|_ _ _ _| |_ _|_ _ _ _ _| _ _| _| _|_ _|_ _ |_ _| | |_ _|_ | |_| _ _ _ | | |_ _ _ _| _ _ _| _ |_ _ _ |_ _|_ |_ _ _| _|_ _ _ _ _ _ _ _|_ _ _| | |_ _ _|_ | | | _ _|_ _|_ | |_|_ _ _ _|_ _| | |_ | | |_ | |_ _| _| _ _|_ _ _| |_ _|_ | |_ | | |_ |_|_ _ _| _ | _| _ _ _ _ | |_ _ | |_ _ | | _ _|_ _ _| | _ _ | _ |_ _ | _| |_ _|_| |_ _| |_ _ _| _| | _|_ _|_ | |_ | | | |_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ | _ _| |_ | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ |_ | | _ _ _ _|_ _| |_| | |_ _ _| |_ _ _| | |_ _ _ _ _ _ |_ _ _ _ _ _ _| |_ _|_| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | | |_| _| |_ |_ _ |_ _|_ _|_ | | _| |_ _ | _ _| | | | |_ |_ _ | _|_|_ _|_ | | _| |_ _ _ _ |_ _| | _|_ _ | _|_ _ |_|_ _ _ | |_ _ |_| |_ | | _| | | _|_ _ _|_ | _|_ _| _ |_ _| | | | _|_|_ | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | |_ _ | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ _| _| |_ _ _ _|_ |_ _ _ _ _ _ | _ _|_ _|_ _ _ _| _ _|_ | _ _| | | _ _ _| |_ | | | |_ _|_ _ _|_ | | _| |_ |_ _ | | | |_ | | | | _| | _| |_ | | | | |_ _| _| _ |_ |_|_ _ |_ _ |_ |_| |_|_ _|_ _ |_ _| _| | |_ | _ _ _ _|_ |_ _ | | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| | _ _| | _| |_| | | _|_ | |_| _ _| | _|_ | _ _ _ _ | |_ _| |_ |_ | _|_|_ _ _ _ _ |_ _ _ _ _ _ _|_ _ _|_ _ _| _ |_ _ _ | _ _ _ _|_ |_| |_ _ _ _| | | _|_ | _ _| |_ | _ _| | | | _ _ _ _ _ _ _ _ _| | _ _ _| | |_| _ _ _ | |_ _| |_ _|_ _ |_ _ | |_ _ _ _| |_ _ _ | _| | |_ _| _| | | _| _| _| | | _ _| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ |_ _|_ _| _ | | _| |_ _ | |_ _ _ _| _ |_ _| | |_ | | | _| _| | +| _ _ _ _ _| |_| | _| | _ _|_| _ |_| _| _|_ |_| |_ _ _ _|_|_ _ _|_ _ |_ _ _| |_ | | | |_ _ _| _ _ | |_ _ | _ _ | |_ _ | |_ | | |_ _ | _|_ _ _ _ _| _ _| _ _|_ _|_ _ |_ _ _|_ _ | |_ |_ _ |_ _ _ _ _|_| _ _ _|_ _ | | | |_ | _| | | | | |_ _| _ _ |_ _ _ _ | |_ _ | |_ _|_ | |_ | _ _| | | | _ _ | _| |_ _|_ |_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _|_| | _ _ _| _ _| _| | |_ | | | _| _| _ |_ |_| | _ |_ | |_ _ _ | | |_ | |_ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| |_| _| | | |_ _ | | _|_|_ | | | _ _| _ | | | | _| _| |_ _ _| _ |_ | |_ _ _ _ _|_ _ | _|_ _ | _ _ |_ |_ _ _| | _| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ _| |_ _ _ _| | _| _| | |_ |_ _ | _|_ |_ _| |_ _|_ _| | | _ | | |_ |_ _ | _ _| | _ _|_ _ _| | | _ |_ _ _ _ |_ | |_ | | _| | |_ _ _|_ _ _ | _ _| | _| | _ _ _|_ |_ _ _ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| _ _| |_ _ |_ _|_ _ | | | |_ _| _ | _| |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_| |_ | | |_ _ | _ _ _ _|_ |_ _ _ _ _ _ _ _|_|_ _ _ _|_ _ |_| |_| | |_ _| |_ _| |_ | |_ _ _|_ _| |_ _| |_ _ _ _| _| _ _|_ | |_| _| _| _| _ | |_ _ |_ _ _| | |_ _ _| |_ | | | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| _| _| _ |_ _| _ _ _| | _| _| |_ | | | | | | |_ _ | | _| |_ _ | |_| |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | _|_ _ _| |_ | _| _| _ _| | |_ | _|_ | _ _| |_ | | | |_ _ | | | _ _ _ _ | |_ _ |_ | |_ |_ _ | | |_ _ | | _ | |_ _ |_ | _ _ _ _|_ |_ _| |_ _|_ _ |_ _| _| | _ _ _| _| |_ | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| _ _ |_ _| | |_ _ _| _ _|_ | |_ _ | | _ _| |_ _ _| | | | | | |_ _ _| | | +| |_ _| | _ _|_| _| | _ _ _| | | _| |_ _|_ |_ _ | _ _ _ _ | |_ _ _ | |_ _ _|_|_ | _ _| | _| |_ _ |_ _|_ | |_|_ _ _ _|_ |_| | |_ _| _ _| | | | _ | |_ _ |_ |_| |_ |_ _ _ _ _| | _| |_ |_ |_| | _ |_ _ | _ _| |_ |_ _|_ _|_ _ _| | _| | |_ _| | | | _ _| | |_ _ _ | _| |_ _ | |_ |_| |_ _| _|_ | _|_| _| |_ _|_ _ |_ |_| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| |_ _| _ _ _ _ _ _| |_ _| _|_ _| | | _| _| _ _|_ | | | | _ _ | | _ |_| | |_ |_ _ | |_ _| _|_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _| |_ |_|_ |_ _ _| |_ _|_ _ |_ _|_ _ _ _ _| |_ _| _ _| _| |_ | | |_ _| _| _| _| _ _|_ | _| _ _|_ _| | _ _|_| |_ _ |_ | _ _| _| _| _ _|_ | |_ _ _ _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_ |_ _| _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _ _ _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ | _|_ _|_ _ | _ |_ _ _ _| _|_ _|_ _ _|_ _ | _ _ |_|_ | _ _| | |_ _ _| _ |_ | _ | _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _| | _| |_ |_ _ | |_ _| | | |_ _ |_ _| |_ _ _| | _| _ | _|_|_ | | | _ _| _| _ _| | | _ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | _| |_ _ | |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _|_ _ | _ |_ | |_ _ _ _ | _| |_ | | _| |_ _ _ _ _| | _ _|_| _| | _ _| | | | _ _| | |_ _| |_| _| _ _|_ _ _| |_| |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _ | | |_ _| |_ _ _|_ _| _|_ _ _|_ _ _|_| | | | | | _| | |_ _ _| _| |_|_ | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ _| _| _ _|_ _ _|_ |_ | | | | | _| |_ _| _ | | | | _|_ |_ _| |_ _ | | _| | | _| | _| | |_ _| | | | | |_| | | |_| | | | | |_ _ _| |_ | |_ _|_ _ | |_ _ | _ _|_ _| |_ |_ | | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| _| | | | _|_ _ _ | | _| _|_ _| | | | _ | _ _ _| | |_| | _ _ _ _| | +|_ _ | _| |_ _ _ _ _| _|_ _ _ _| | _ _ _|_ _ _ _ _ | |_ _ | | _| |_ _ | _| | _ _ | | | _|_ _ _| | | _ _ |_ _ _ _ | |_ _ _|_ _ | | _ _|_ _| | | | |_ _ _ _ _|_ | | |_ _ _ _ | _ _| _|_ _ _ _ _ | | _|_ _ |_ _ _ _ _|_ _ _ _ | _ _ _ _ _ | | | _|_ |_ _| |_ |_ |_ _|_ _ |_ _|_ _ _| _| |_ |_ | |_ _ |_ _| |_ _ |_ _| _ _| | |_ | _ _|_ |_| _| _|_|_ | | | _ _| _ |_| | | | _ _ _ _|_ |_ _ _| |_ | | |_ _ _|_| | _| |_ _ _ _ _| | _|_| |_| |_ | | _| | _|_ | |_ _|_ | |_ _ _ | _|_|_ | | | _ _|_ _ _ _ | | | _| _ _|_ _ _| _ | | |_ _ _ | |_ _ _ | | _ _ _ _ | | | _|_ _| |_| _ |_ _ | _| |_ _ _ _ _| _ _|_ |_| _ _|_ | | |_ _ |_ |_| | _ _| _| |_ _ _ _ _|_ _ _ | |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ | _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | |_| |_ | | | _ _ _| |_ | _|_ |_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| | | |_ _ | | _| _ _| | | | _|_|_ | | | _ _| | _| | _| | |_ _ _ _ _| |_ _| _ _ _ _ _ _| | |_ |_ | |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ |_ _ | _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| | _ _|_ | _ _ _| |_ _ _| | _| | | |_ | _ _ _|_| _ | |_ | | | _| |_ | _ _| |_ _ |_ _ _ _| | _ _ _| _ _ _| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_ _| | _ _| | | _| _ _ _| _ _ _ _ | _| |_| | | | _| _| _ _ _ _ _ _ |_ _| | |_| _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _|_ | _ _| | _ _ _| _ _| | | |_| | | | _| _| | | | |_ | |_| _ _ | | _ _| | |_ _ _| | | _|_ _ _ _ | | _ _|_ _| | _ _|_ _ _ _|_ _| |_ _| _| _ _|_ _ _|_ _ _ _ _ _|_ _ _| | | _ _ _ _|_ |_ _| |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _ | |_ _ _| | _ _ |_ _ _| _| | _| _| | |_ |_|_ _ | _|_ | |_| | _ _| +| |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _| | | | | |_ _ _| _| |_| | _ _ | | | | |_ _| _ | _| |_ _ _ _ _|_|_ | _ _|_ _| |_ _ _ _ | |_ _| |_ _ | _|_ _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ _ _ |_ _ |_ _| | _ |_ |_ | | _ |_ _ _ _ |_ | | | | _| | _ _ |_ | | |_ _ |_| _ _| | _ _|_ _| |_ | |_ _ _ _ _| |_ _| _ _| _|_ | | _|_ _| _ _ |_ _ | _ _| | _| _|_| |_ _ _ | |_ | _ _ _ _ | | _ _|_ _ _ _ _|_ _|_ |_ _ |_ _ _ _| |_| |_ | | |_ _ _ _ _| |_ _| | |_| _ | | _ _| | _ _ | |_ _ _| _ _| | |_ | _ _| | | | | | |_| | _| _ |_ |_ |_ _ | | |_ _| _ _ _ _ _ _ _|_ _| | _ _| |_ _| _ _| |_ _ _|_ _ | |_ | _ _ _ _ _|_ _| | | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ | | _| |_ _ _ | _| _|_| | _| | _| | | |_ _|_ | |_ _ _ | | | |_ _ | |_ _|_ _ |_ _|_ | _ _ _|_ |_ _ _ _ _| |_ _|_ _ | | | _|_ | |_ _ _ |_ _ _ _ _ | _| _ _ _| |_ | _|_| | |_| | _ | _|_|_ | | | _ _|_ | _ | | | |_|_ | | _ _|_| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_| |_ _| |_|_ _ _ _|_ _ | _| _ _ _|_ _| |_ | |_ _| |_ _ _ _ _| _|_ | | | | | _ | |_ | | | | _ | _| | _ _ _ _ _| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | | |_ | | _| |_ _ | | |_ _ | | _ _| | | |_ | | _ _ _| _ _ |_ _ | _ _| | |_ |_ | _|_|_ | | | _ _| _ _ _ _ | |_ | _|_ | _|_ | _ _|_ _ _ _| |_ | |_| | | _| _ _ _|_ | |_ _ _| | |_| | | | _| | _ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _| | _ | _| _ _ _ _ | | _ _| |_ _ _| |_ |_ _| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_|_ | _ _|_ _ | | _ _ _| | _| | | _| | |_ | | _| | | _ _|_ _| | +| |_ _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _ _ _|_ | | _ _| | | _| _| | _|_ _| | | | |_ | | | |_ _ _| _ _| |_| | _| _ _ _ _ _ _ _ | _| |_ _ |_ _ | | | _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | |_| _ _| | | _ _|_ | | |_ _| _ _ _| | |_ _ | | _| | _| | |_ _|_ _|_| _ |_ | | | | |_ _ _ _|_ _ _| |_ _ | _ _ _ _| | |_ _ |_ _| | _ _ _| | | |_| |_ | | |_| _ _| | _ _| |_ | _|_ _ _| | | |_ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ |_ _|_ | _ _ _ _ | _| | |_ _|_ _| |_ | _| |_ _| |_ _ | | | _ _| |_ _ |_ | _| |_ _| |_| |_ |_ _| _| _ _|_ |_ _ _| | |_ | | _| _ _ _ _ | |_ _| |_|_ _ _ _| _ _| _ _ _ | _ _|_ | | | |_ _ |_ _| _ _ _|_ _| | _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| | |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _|_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | _| _ _|_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ | | |_ |_ _ | _ _| _| _ _| | | _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _ _ | |_ _ | _|_| | _| |_ _ _| _ | | _| | | _ _| | | |_ _ _ _ | |_ _| _| _ |_ |_|_ | _|_ _|_ _ | | | |_ _ _ _ _| |_ _| | _| |_ | | | |_ | _ _|_ | | |_ _ |_ _| |_ | _|_|_ | | | _ _| _ |_ | | | | |_ _ |_ | | | |_ |_ | _ |_| _| _|_ | _ _ _ _ | |_ _| |_ _ _| | |_ _| | | | | | | | |_ | _|_ |_ _ | _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ | | _ |_ _ _ _| | | | _| |_ _ _ _| | | |_ | |_ _| |_ _ _|_ _| | |_| _ _ _|_ | | |_| |_ | | |_ _ _| | | |_ _ _ _ _| |_ _| _ _ _ _| _ | | | |_ _| |_ _ |_ _ | _| _ |_ | |_ |_ _ _|_ _| _ _ |_ _ | _ _| | | _| _| | | | |_|_ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_| _|_ | _| _ |_ _|_ | _| _| _ _|_ _|_ _| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | |_ _ _ _| _| |_ _ | _|_ _ | |_ |_ | |_ _| | | _| | |_ _ | | _| | +| _ _ | |_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _| _ _ |_ _| | _ _| | |_ _ _| _| | _ _|_| |_| |_ _|_ |_ _ _| | | _| _ _|_ _| _| _ _| | _ _|_ _ _| _| | _ _| | |_| |_ _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _|_ | |_ | | |_ _ _ _ _|_ _| _|_ | _ _| |_ _ _ _| |_| _|_ |_ _|_ _ _ _ _| | _|_ _ _|_| |_ _ _| | _ _ _| |_ |_ _|_ |_ | _| |_ | |_ _ | |_ _ | | | |_ _|_ | | _| |_|_ | | | | | _ _| _|_ _ |_ _ | | |_ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ | | _|_|_ | | _ _| | | |_ |_| _ |_ |_| |_ |_ | _ _ _| | _| | _| _ _| | | | _ _ _ _|_ _ | |_ | _| |_ _ _ _ _| | |_| _| | | |_ _ | | _| |_ _ | _ _ _ | | |_ _| _ |_|_ _| _| | |_ _ |_ _ |_ _ | _ | | | _ _| | | | | |_ _ _| _| | | | |_ | | _| |_ | _| | | |_ _|_ | | _ |_ | | |_ _ _ | | _| | | |_ _|_ | _ _ _ _ | | |_ _ | |_ _| _ _ _ _ _| _ | _|_|_ | | | _ _|_ _ _ _ | | | |_ _ | |_|_ | | _ _|_| |_ _ |_ | | |_ |_ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | _| _ _| | | _ _| |_ |_ _ _ | _|_ |_ _| |_ _| | |_ _ _| |_ _| | _|_ _|_ _ _| _| _ _|_ | _| |_ _ _ _ _|_ |_ _ _ _ | | _ _ _| | _ _ _|_| |_ |_ _| | _ _| |_ _| _ _| | | | |_ _ _ _ _| |_ _|_ _ _|_ |_ | | | |_| |_ _| _ _| |_ _|_ _|_ | |_ | |_ |_ _ _| _| | | |_ _| | _|_ |_ | _ _| _ _ _ _| | | |_| | _ _|_| |_ _ _|_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _| _ _ _| | _ _| | |_ |_ _ | _| _|_ _ _ _| | | |_ _ _ _ _ _|_ _ _ _ _ _ _ |_ _|_ | | _| |_ _ | | | _| _ _ |_ _ _ _| _|_ _| |_ _ |_ | | _|_ _ |_ _| _| _ _|_ _|_ _ | _ _ _|_ | | |_| |_ | |_ |_ _ _| | _|_ _ | |_ _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ |_ _ |_| |_ _|_ |_ _ | | | | _ _| | _ _ | _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ | | _ |_ _ _ _| | _ _ | _ _|_ _| | | | _| |_ _ _| | | |_ _| |_ _ _| |_ _| | | +|_ _ _| |_ _ |_ _ _| | _|_|_ | | | _ _| _ | _| | | |_| _ _ _| | | |_| |_ | | | _ _ _| _| |_| _ |_ |_ | | | |_ | | | |_ _| _ _ |_ _ | _ _| | _ _ _ |_ | | | | |_ |_| _| | | |_ |_ _| _|_|_ | | | _ _|_ | _| | | | |_ | | | | _| | |_ _ _ _ | _| _ _|_ | _ _| _ |_ |_ _| _| | | |_ _ _ _ _| _ _ | _| _| |_ |_ _ |_ _ | _ |_ | | |_ _ | | | |_ _| _| | | |_ _| | |_ |_ _ | _ _| | |_ _ _| _|_ | _| | | |_ | | _ _| | |_ _ _| | | _ | | _ _|_ _ _| _| |_ _ _ _ _| _| | | | | _| _| _ _|_ |_ | | | | | | _ _|_| _|_ |_ _ _ _| | |_| _ _ | | | | _| |_ | _ |_ |_ _|_| _|_ | |_ _| | |_ _ _|_ | |_ | _| | |_ _|_ _ |_ _| _ _ _| _| |_ | _ | | _ _| _|_ _|_|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | | | |_ | _ _| |_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _|_ | | | |_|_ _|_ _ |_|_ _ _| _ _| _ _| _|_ _ _ _ _| |_ _| | _ | _| | | _ _ _|_ | _ _|_ | | |_ _ |_ _ | |_ | | _| |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | |_ | _ _| | | | | _| _| |_ _ | | | _ _ _ _| |_ _| | _ _| |_ | _ _| | _| |_ _ _ _ _| |_|_ | _ _ | _ _ _ | _|_ | | _ | | _| _ |_ |_ |_ |_ _ _ _| _ _| _ _|_ _|_ _| _ _ _ _ | _ _ _ |_ _ _| |_ _| _ _| _ _ _ _ _ _| _|_ |_ _| | _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _| | |_|_ |_ _| _ _ _|_ | | _ _| | | | _| | |_ | | _|_| | _| _ _ _| |_ _ _ _ _| | |_ | _| |_ _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ | | |_ |_ _ | _|_| |_| _| _| |_ |_| _ _ |_| _ |_ |_ | |_ _|_ _ _ |_ | _| |_ _ _ _ _| _ _ |_ _ |_ _|_ _|_ | | _| |_ _| _ _ _|_ _| _ _| | | _| |_ _ |_ _| _|_|_ | | | _ _| | _| | | _| |_ _ |_ |_ | _ _| |_ | |_|_ | _|_| | |_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _| _ _ _| | _ _| | _ |_ | _ | _|_ _|_ _| _| _ _ _ _|_ _ _|_ _ _ _ _|_ _ _| | | +| _ _| |_ | | _ |_|_ _ _ _ _| |_ _| _ _| _| | | | | |_ _ | _|_|_ _|_ | | _| |_ _ _ | | _| _| _ _|_ | _|_ _ _|_ _|_ _ _|_ _ _| | | |_| |_ | |_ | _| |_ _ | | _| |_ |_ | | _| | | | _| |_ _ _ _ _| |_ _| | |_ _ _| | |_ _| | _| | | |_ | |_ _ |_ | | |_ _ _ | | | _| _| _ _|_ |_ _ | _| |_|_ _ _ _ |_| _| _ _ _|_ _ _|_ _ _| |_ | | | _ _ _| |_ | _|_ _|_ _ _ | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ _ _| _ _| | |_ |_ |_| |_ | _| _| | | | |_ | |_| | |_ _ | _ _ _ _|_ _ _|_ _| | | | _| |_ _ _ _ _| _| | | |_ |_ _ _ _ | _ _ |_ _ |_ |_ _ | | |_ _ _|_ _ _ | |_ |_ _ | | _ _ _| _ _|_ | | _| _ _ | | | _| | _ _| _ _ |_ _ | | _ _ _|_ |_ | | | _| | _ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | | |_ | |_ | _ _ _ | | _ _ | | | | | | _ _|_ _ | |_ _ | | | | _ _ | _ _ _| | |_ |_ _ |_ |_ _ | |_ _ _ _ | | |_ _ |_ _ _ | _ _| |_ | _|_ _| |_ _ | _|_ _| | _ _| |_ _| _ _| | _| |_ _| | | | | | |_ _ _ _ | |_|_ _ _ _| | | _ _| |_ | |_ |_ | | |_| | _ _|_ _ _| _ _| |_ _| _ |_ |_ _| | | |_ | | _| |_ _ _ _| |_ | _| _|_ _ |_ _ _|_ _ _| |_| _ |_| |_ | | |_| _| _ _|_ |_ |_ _ | | | |_ _ | | _ _ _ _| |_| |_ _| | _| _ |_ |_ | | |_ _ _ | |_ _ _ | _ _| |_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | _ _|_ _| |_ |_ _ _| |_| | | | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _ _ _ _ _ | | _ |_| |_|_ | _| _|_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_|_ | | _ _|_| |_ _ |_ | _|_ _ _ _| | _| _| _ _|_ | | | | | | | |_ _ _ _ | |_ _ | | _| | _| _| | |_ |_ _ | _ _ | | _ | | | |_ _ _|_ _ |_ _ _ _ _| |_ _| | _| | |_ _| | |_ | |_ _ _|_ | | _| | _ |_| _|_ | _|_ _ _| | | _| | | | _| | |_ | | _|_| | _| _ _ _| |_ _ _ _ _| | _|_ |_| _| | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| | +| |_| _ _| | | | |_ |_| | _ _ | _ _| | | _|_ _| |_| _ _| | | _| | |_ |_ _ | _ _| | | _| |_ _ _ _ _|_ _ | _ _ _ _ | |_ _ | | |_ _|_ | | _| |_ _| |_ _ _ _ | |_ _|_ | _ _| | |_ _| |_ _ _| _ | _ _ _| _| | |_| _ _ _| |_ | | _|_|_ | |_ |_ | _|_ | _ | | | | |_| _| |_ _ _ _ _| |_| | |_ _ _ | |_ | |_ _ _| _ _ |_ _ | _ _| | _|_| | |_| _ _| _| |_ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | _ _ _| |_ |_ _| | _| | |_ _ | |_ _|_ | _|_ _ _| |_ |_| _|_| | _|_| _ _ | _ _| | |_ _ _ _| _ |_ _| _ _ _ _| |_ _| _ _| _ _|_ | _| _|_ _ _| _ _ |_ _ |_ _| | | |_ _ | _ _ _|_ | | | | |_ |_ | | _| |_ | _| _| _ _| | |_ _ | _ _|_ _| |_| | | |_ | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| _| |_ _ _|_ _| | | |_ _|_ _| _| |_ _|_ _ _| | |_ _ _ _|_ _ _ | |_| | |_|_ _| | |_ _ _ _ _ _| _| _| |_ _ _ _| |_ _ | | |_ _|_ _ |_ _ _ |_ _| | | | |_| _ |_ |_ | _ _ _ |_ _ _ _| _ _| _ _ _| |_ _ _ _| | | |_ _| | |_ | _| |_ _ |_ _ |_ | |_ | | | | | | |_ | |_ _ _ _| |_ _ |_ |_| _| _ _|_ | _| | | _| | | _|_ _ |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ |_ _ _ _ _|_| | _| |_ _ _ _ _| _| _|_ _ _|_ _|_ _ |_ _| | | _ _ _ _|_ |_ | |_ _| _| _ _|_ | |_ _|_ _ |_ _| | |_ _ | _| | | | _| | _|_ _ | | | | | | | |_ | | | | | _ _ _ _|_ |_| | _| _ _| | _| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ | | | |_ _ |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ | _ _|_ | | |_ _ |_ | |_ _ |_ _ | | _| |_ _ _ _ _| | | | |_ |_ _|_| |_ | _| | | _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| |_| |_ |_ | _ _ |_ | _ _ | _ _| | | _ _ _| |_ _| _ _ _ _| _| |_ _|_ _ | |_ _| |_ _ | | | | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _ _ _ _ _ | | _ |_| |_ _ |_ | | _|_ _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | +|_ | |_ | | |_ | |_ | |_ _| _ _|_ | _ _| | _| _ |_ |_ | _|_|_ _|_ | |_|_ | | _ _|_| |_|_ |_ | _ _ _| _|_ _ | | _| |_ _ |_ _| | | | |_ |_ _ | _ _ |_|_ | _ _| _ _ _|_ |_| _ _| |_ |_ _|_ |_ | | _| | _| _ |_ |_| _|_ _ _|_ _|_ |_ _| | | | | |_ _|_|_ _ | | _ _ _ _ |_ _ _|_ _ _ _ _ _|_ _ | | _ _ _| | | |_| |_ | | | _ _ _| _|_ _| _| _| |_| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | |_ _ |_ _ | | _ _|_ _ _| | | |_ _ _| |_ _| _ | _ |_ _ | _ _| | | _|_ | |_|_ _ _ |_ | |_| | _| |_ _ | | _ _ _ _|_ |_ |_ | _| _|_ _ _ | _ _ _| | | |_| _ _| | |_ _| | | |_ _ _ _| | | _| _|_ _| |_| _| _| | _| _| _ _|_ _| | _ _ | _| _| | |_ _| | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| _| |_ _ _ _ | _|_ _|_ _ _ _ _ _ |_ _ _ _ | _|_ _ _|_ _ _ _| |_ _ _|_ _| _| |_ _ _ _ | |_ _| | _ _| | _ _| | _| |_ _ _ | _|_ _ | | | _ _| | | | |_| _| _ _|_ | |_| _ _ _ | _ | | |_ _ _ |_ | | |_ | _ _| | _| |_ _ _|_ | | | | _|_ | | | |_| _|_| | |_|_ | |_ _ _ _ _ _| _ | | _| _| |_ _ _ _ _| |_| |_ | | | | _ _| _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ |_ | _ _ _ _ | |_ _ | | _| _ _ | _ _ _ |_ _ | _|_ _ _| |_ | | |_ | _| |_ _ _ _ _|_ _ _ _ |_ _ | _ _| _| | _|_| | | | _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| |_ _ _| |_ | _ _| | | | | _|_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| |_| |_ _| _ _| _| _| | | _|_|_ | | | _ _| _ | _| |_ _ |_ _| | _ _| |_ _| _ _| _| _ |_ _ |_| _| |_ | _ _ | | _|_ |_| _ _| _|_ | |_|_ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_| _| _|_| _ |_| _|_| | _ _| |_ _ _ _| |_| _ |_ |_| _| | _ _ _ _ _|_| _ _ |_ _| | _ _| | _| | |_ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ |_ _|_ _ |_ _ | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | +| _| | _| |_ _ |_ |_ _| _| | | | | |_ | |_| _| _ _|_ | |_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | |_ _ | | _|_ _| | |_ _ _|_ | | _| | | | |_|_ | | _ _|_| |_|_ _|_ |_ _ _| _ _ |_ _ | _ _| | _| _ _ _ _|_ _| | | _| _| _ _|_ |_ _ | |_ _ _ _| _ _| _ _| |_ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | | |_ _ | |_|_ _|_ | | _| |_ _ _ | _| _ _ _|_ _ _ _|_ _ _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _|_ _ _ _ |_ _| |_ _ _ | _ _|_ _|_ _ _ _ | |_ |_ _| | | | |_| |_ | | | | |_ |_ | _ _ _| _| | _| | |_ | | | |_ _ _| |_| |_ _ _ _| _ _| | |_|_ _ | |_|_ _|_ | |_ | |_ _ | _|_ _|_ _| _ _ _|_ _| _| _ |_ |_ | | _| | | |_ | _| | _|_ _ _|_ _ _ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | | | |_ _ _| |_ | _ _ _ _ _ |_ _ _ | _ _|_ _ _ _ _|_| _ _ _|_ _|_ | | |_ _ | _| |_ _ | |_ _| _ _|_ | _|_ _ _| _ | | _ _| | |_ _| _|_| | | _| |_ _ _ _ _|_ | _ | _| | | |_ _|_ _ |_ _ _ _| |_ _|_ |_ _| | | |_ _| _ _| |_|_ _ | _ | |_| _ _| | |_ _ _ _ |_ _ _| | | |_ _|_ | |_ _ _ _ _ _ _|_ _ _ _ | |_ _ _|_ _ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| | |_ _ | _| |_ | _|_ _|_| |_ _ _ _|_ _| _ | | _ _| |_ _| _| _ _|_ _ _|_|_ | | |_ _ _ _| _ _| _ _ _| |_ | _| _|_ | | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| | | _|_| _| | | _ _|_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | _ _| _ _| | | _| |_ |_ _ _ _ _| |_ _|_ _ | | _|_ | | | _| _ _|_ _ _ _| _ _| | _| _| | |_ | | |_ | | | | |_ _| |_ _| | _|_ _| _| _ _| | _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| |_ _ _| _|_ _| | | _| _ _| | |_ _ _ _ _| _| _ _|_ | | | | _ _| _ _ _|_ | | |_| |_ | | | |_ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_ _ _ _ |_ _ |_ _| | |_ _ | _|_|_ | | | _ _|_ _ _| | | _| | +|_ | |_ |_ _ | _ _ | | _|_ _|_ _| | | | _| |_ _ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _ | |_|_ _ _ | _| _ _ | | | | _|_| |_ | _ _|_ | | |_ _ | _ _ _| _ _ _|_ | | |_| |_ | |_ _| _ _ _ _ | | | | _| |_ _ _ _ _| | _| | | _ | | |_ | | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| _| | |_| _| | |_ |_ _ | _|_ |_ _ | _ | _ _ _ _ | _| | | |_ _|_ | _ _ _ _ _ | | |_|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_|_ _ _| |_ _|_ | | _| |_|_ _ | | | |_ _ _ _| _| | | | |_ | |_ _| |_| _| _ _| _ _| | | _|_ _ |_| |_ _ _| | |_ _ | | | _| | _ _|_ _ _ | |_ _ _ _ | | _| _ _|_ | |_ _|_ _|_ _ | | | _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | | | |_ |_ | _| _|_| _ _ _ _| _|_ |_ _| _ _ | |_ _ _|_ _ _ |_| | |_ | | |_|_ _ _| _| _| |_| | _| | _ _ _ _| _| | | | _ _| _| _|_ _ _ _| | |_ _ _ _| _|_ _| |_ _ _| |_ _ _ | |_ _ | _|_ _ | _| _|_| | |_ | _| |_ | | _ |_| | | |_ | | _ _|_ _| _ _ |_ _ | _ _| |_ _| | |_ | | | _ _ _ _ | |_|_ _ | _ _ _| | | _ _ _| _| | _ _| _ _| | _ _| _ _ _ _| | _ _| _|_ | _ _ _| | | | | |_|_ |_ | _ _| | _ _ _ _ _ _ _| |_ |_ _ |_ | | |_ _ _| | _ _| _|_ _ _| |_| |_ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _| _| | |_ _ |_ _| _|_ | | |_ _ |_ | _|_|_ | | | _ _| _ | _| | | | _| _ _|_ _ _| | | | |_|_ | | _| _|_ _ |_ _ _ _ | | | _ _ _| |_ _ |_ _ _ _ _ | | |_ _ |_ _| | _|_| _| _| _| | | |_ _ _ _|_ | _| | _ _ _| |_ _ _ |_ _ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ | _ _ _|_ _|_ _|_ _ | _|_ |_ _ |_ _ _| _| |_ _ _ _ _| | | _|_ _ |_ _ | _ _|_ _|_ | | _| |_|_ | | | | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ | _ _ _ _ _| | _ _| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | +| _|_ | | _ _|_| |_ _| |_ _ _ _ _ _ _ _|_| | |_ | | _ _ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| | | | |_ _ _ _| | | | | |_ |_ | | |_ _ _ | |_ _| | _ _| |_ _| _ _|_ | |_ _ | _|_ _|_ | | _| |_ _| _| | _ _ _| _| |_ | | _ _|_ |_ _| |_ |_| | | | _| |_ _| |_| _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | | |_ _ _| _ _ |_|_ _ _| |_ _|_ _ _ _ _|_| _ _ _ _ |_ _|_ _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ |_ _ | | |_ |_ _ | _ _| | | _ _ _| _|_| | | _| | | _ _| _ _| | _ _| _ _| | _|_ | | _| |_ | _|_ _ _| |_| | | |_ | | | _ | |_ _|_ _ | | | |_ | |_ _ _ _ _|_ _ _ _ | _| | |_ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _|_ | |_ _ _ _ | |_ _ _ _ _ _ _ _|_ | _| | _| |_ _ |_ _ _ _ _| | _| _| _| | |_ | _ _ _ | | _| _ _|_ _| | _ _ _| |_ | |_| |_ | _| _ _ |_ _ _ |_ | | _ _|_| _| _ _ _|_ _ _ | _ _| _ _| |_ _ _ | | | |_ _ _ _|_| |_ _ | | | |_ | | _| _| _|_| | _ _ _ | | | |_| |_ | | | | _| _| _|_ _|_| _ | | _| |_ _ | | |_ _ | _| | |_ | | _ | _|_ _ |_ | _|_ |_ _ _| | _|_ _| _| _ _|_ _ | |_ _|_ _| | | |_ _ |_| | _|_ | _|_ |_ _ _ _ _ _| _| _| | _|_ | | |_ | | | _ _ _ _|_ |_ | | |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _|_ | |_ _|_ _ | | _ _| |_ _| _ _| | |_ _ _ _ _| |_ _| _| | |_ _ _| | | _ _| | _ _ _|_ _| |_ _|_ _ |_ _| | | _ _ _|_ _ _| | _ _|_| |_| _ |_ |_ _ _ | | | |_ _|_ _ |_ _ | |_| _|_ _| _| | _| _ _ _ | |_ | |_ _ | | |_ _ _ |_ _ _ _|_ _ _ _ | | |_ _|_ | _ _ _ _ | | |_|_ |_|_ _ _ _ _| |_| _ | _| | |_ |_ _ _ | |_ _ | | _ _| | | _ | _| | _ _ _ | | |_ |_ _ | _|_ _ | |_ _| |_ _| _|_|_ | | | _ _|_ _ _ | | | | _| _ _|_ _|_ _| _ _ |_|_ | _ _| | | _ _ | _ _ _ _ |_ _ _|_| |_| |_| +| | _ _|_ | | |_ _ | | | | _ _ _ _ | |_ | |_ _| |_ _ | | | |_ _|_ |_ |_ _ _ | | |_ _ |_ _| | | | |_ _ _ _ _| | | _| _|_ _| |_ _ |_ | _ _|_ _ _ _| _ _| | |_ _| | _| | |_ _ _| | |_ |_ _ | _ _| |_| | | | |_ | |_ _| |_ _ _ _ _ _ _ _|_ _ _| | |_ |_ _ | |_ _ | |_ _ | _|_|_ | | | _ _| _ _ |_| | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _ _ _| _| | _ _| | _ _ | _| _| | _ _ _ _ | |_ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ |_ _ _ | |_|_ | | _ _|_| |_ _| |_ _ | _ _ _ _| |_ |_ |_ _ |_ | _|_ _ | |_ | | | _ _| | |_ _ | _|_ _ _ | | _|_|_ | | |_| | |_ _|_ _ _ |_ _| |_|_ |_ | | | _ | | | |_ _ |_ |_ _| _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| | |_ _ _|_ | | | _| | | |_ _| _|_ |_ |_ _|_ _ | | | |_ _| _ _ |_ _ | _ _| | |_ |_ | | _ _| |_ _ _ _| _| | | _ _ _| | | | | | | | | | _ _| _ | | |_| |_ | |_ _|_ _ |_ |_ _ _ _|_ _|_ _ |_ _ |_|_ _ _| |_ |_ _|_ | | _| |_ _| |_ _| _|_ _ |_ _| | |_ _ _| | |_| |_ _ _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| | | | _ _ _| _ | _| | |_ | | _|_|_ | | | |_ _| |_ _ |_ _ |_ _ _ _| _| | _|_ _| |_|_ _|_ | | _|_ _ _| |_ | |_ _| |_ _ _|_| | _|_|_ | | | _ _| _ _ _ _ | | |_ _ | |_ _| _| _|_ _|_ _ _ _| _ _| _ _ _|_ _ _ _ |_ | _| _ _ _| |_ | _| | |_ _ _ _ _ _|_ _ |_ _ | | |_ _| _ | _|_ _ | _| _| _ _|_ | |_ _| | | |_ |_ |_ _ |_ _| _|_| _ _ _| | | _| _| | _|_ _| | _| | _| | | _ _ _ _ | |_|_ |_ _ _ _ _|_ | | | |_|_ _|_ _ |_ _ _| _ _ _ _|_ |_ | |_| _| |_ _ _ | _ |_ | |_ _|_ | | | | | |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | |_ _ |_ _ _ _ _| |_ _| _ _ | | |_ | | _ _| | | _ _| _ _ _| | | |_| |_ | | | _|_ |_| |_ _ _| | _| _ |_ |_ | +| |_ _| | _ _| |_ _| _ _|_ _| | |_ _ | | _ _| _|_ | |_ _ | | |_ _|_ _ _ _ _| | | _| | | |_ _|_ _ |_ _ | | |_ _ _ _| _ _ _|_ _| _| _ |_ |_| _| _| _ _ | | | |_ _| _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| | | _| _| |_ |_ |_ _ | _ _ _ _ | |_ _ | | _ _|_| |_ _ _ _| | |_ _ _ _ _| |_ _| _ | _ _| | | |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ | | |_ _| | |_ _|_ | |_ _ _|_ _ _| |_| | | | _ _| | | _ _| |_ | _|_|_ | | | _ _|_ _ _ | |_ _|_ |_ _ _| |_ | _ _|_ | | |_ _ |_ _| |_ | _ _ | |_ | |_ | _| |_ |_ _ _| | | |_ _| _ _ _ _| _| | _ _|_ _| |_ _ _ |_ | | _| _ | _| |_ _| _| _ _| | | |_ _|_ _| |_ _| |_|_ | _| _| _ _| |_ | _| | _|_|_ | | | _ _|_ _ |_ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ _ _| | | |_| _| |_|_ _ _ _ | _| _ _ _ | _|_ _|_ _ _ _ _ | | |_| |_ | | |_ _|_ | | |_| _ _| | _ _ _| _| _| |_ _ | | |_ _|_ _| _| |_| | |_ | |_ | _|_ _ _|_ | |_ _ _| _ _| | | | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ | | | |_ |_ _ | _ _ _ _ _ _| | | _ _|_ _ _| | | | | | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | |_|_ _ | _ _|_ _|_ _|_| _|_|_ _ _ _ _|_ _ _|_ _| | | |_ _ |_ | _ _ _| _| |_ _ |_ |_ _ | | | |_ _| _| _ _|_ _|_ _ |_ |_ | _ _| |_ _ _ _ _| |_ _| | _| _ _| | | |_ _ _| |_ | _ _|_ _ _ |_ | | |_ _ _ _ _ | | | |_ | |_ _| _| _ |_ |_| |_ _ | | _ _ _ _ _ _| _ _| |_| _ | | |_ _|_| _| | | _| |_ _ _ _ _| |_ | _|_|_ |_ |_| _ _| | | | |_ _ | | | | |_ | | _|_ _ | | | | _|_ _| |_ _| |_ _ | | _| |_ _ |_ _ | _ | | | |_ |_ _ | _|_ _ |_ |_ _ _| |_ | |_ _|_ _ _ _ |_|_ |_| _| |_ _ _ _ _| | |_ _|_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| _ | _ _ _ _ _ _ _|_ _ | |_ _ _| |_ | _| | | |_ _ | |_|_ _|_ | | _| |_ _| _ _| _| | _ |_| _| _ _|_ | | +|_ | |_ _ _ _| _ _| _ _ |_ _ _ | |_ _ _| _| | | | _|_ | | _ _ | |_ | _|_ _ |_ _|_ _ |_ _|_ _ | |_ _ _ _ | | _| _ _|_ | | |_ _| _| | | | |_ _|_ _ |_|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| _| _| _| _|_ _ _| _ | | _| |_ _ | _|_ | | |_ _ | _ _|_ _ |_ _ | | | _|_ _ _|_| |_ | |_ _| _ _ _ | _| | |_ _ _ _| _ _| | | | _| | | | _ _|_ _|_ _ _ |_ _ _ _ | |_ _ _| | |_|_ | _ _| | | |_ _ |_ _ _ _ _| |_ _| _ | | _| | | | _ _ _| |_ _ _ |_ _| | _ _| |_ _| _ _| | | _|_ _ _|_ |_ | |_ _ _ |_ _ _ _|_ _ _ _ _ _| | |_ _| _ _ |_ |_ _|_ _ _ _ _ _| | |_ _ _| |_ _ _| _| | _|_ _ _ _ _| _ _ _ _|_ _ | _ _ _ _ _ _ _|_| _| _| _ _|_ _ _|_ | |_ _ _ _ _| |_ _|_ _ | |_ | | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ _ | | |_ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_ _ _ _| |_ | | | | | _ _ _| _| | _| | | | | | _|_ | |_ |_| _| | | _ _ | _|_ _ _ |_| _ _| | |_ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | | |_|_ | | _ _|_| |_ _ _ |_ _| | |_ _ _| | | |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ | |_| _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _|_ _|_ | |_ _ | _|_ | | | |_ _ | | | | |_ | _ _| | | _ _| |_ _ _|_ |_| | _| | _ _ _ _ _ _ _ | | _|_| | | |_| _ |_ _ | | |_ _ | _ _|_ _ _| |_ _|_ _ |_ _ |_ _| |_|_ | |_| _ _| _| _ _|_ |_ _ |_ _|_ _| |_ _ _| | _ _| _| _| | | | _ _ _| | _| | |_ | | _|_ | |_ _ _ _ _| | | | _ _| | _| |_ _| | | | | |_ _ _|_ | _ _| | | |_|_ _ _ |_ | _| _| | |_ _ _| _| | _| | | | |_ _ _|_ _ _ | |_ _| _ | |_ _| _| _ _|_ _ _| |_| |_ _ _ _ _ _ _| _| | |_ _ _ _ |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _| | |_ _ |_ _ _| _ _ _ |_ _| _ |_ |_| |_ _| | | _| | |_ _ _| | |_ |_ _ | _ _ _ _ _| |_ | | _| |_ _ _ _ _| | +| _| |_ | _ _| | |_ _ |_ _ _ _ _| | _ _ _| _| |_ _| | | | |_| |_ _| | |_ _ _|_ |_ _ |_ _ _| | _ _ |_ _|_ _ | | | |_ | |_ _ _ _ _| |_ _| |_ | |_ _|_ |_ _ |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| |_ | _|_ _ |_ _| | |_ _ _|_ | | | _ _| |_ _| _ _| | | _ _ _ _ _|_ _| |_|_ | _| _ |_ |_ | | | |_ _|_ | | |_ _ _ | | |_|_ |_| | | _|_ _|_ _ _ _ _|_ _ |_| _ | _| |_ _ | _|_ _ _|_ | _|_ _|_ _ |_ _ | _ _ _ _| | |_| |_ _ _| |_ | | |_ _ | |_ _ _ |_ _ _ _| _ _| _ | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_| _| | | _| |_ _ |_ _ | | _ | _ _ _| _| |_ _| |_| | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _ | _ _|_ _ _ _ | _ _ _| | | |_ _ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | | | |_ _ | | |_ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _ _ | _| | | | | |_ _ | _|_ | |_| _|_ _| |_ _| |_| _ _| _|_ |_ | |_ _ _ _|_ _ _ | |_ | | | | _ _|_ _| | |_ _ _|_ | | _ | | _ _|_ _ _|_ |_ | _ _|_ | | |_ _ | _| _ _ _|_ |_ _ _ _ _| |_ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | |_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _ _|_ _| | | |_ _| |_ |_ | | | |_ | | |_ | _|_ | _ _| | _ _ _ | _ _| _| _ _ _| _ _ |_ _ | _ _| | |_ |_ |_ | | | |_ | _| | _ _| _|_ _ |_ _ | | _ _ _ _|_ |_ | _| |_ _ _ _ _| | | _ _ _ _|_ |_ | _|_ | _|_ _| _| |_| | | _ _|_ _ |_ | |_ _| |_ | | _ _ _| _ |_ _| |_ | _| | _| | | _|_ _|_ _ | | _|_ _ _ |_|_ _ _ _ _ _ _ _| |_ | _| _ |_ _ | |_ |_ _| |_ _ _ _ | |_|_ | _| | |_ | _ _| | | _ _ _ _|_ _ _|_ _ | | _ _ _|_ |_ | | _ _ _ _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | | | |_ _ _ | | _ _ _| _ |_ | _| _ _|_ |_ | | _|_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _| | | | |_ |_ _ _ | +|_ _ _| _| | |_ _|_ _ |_ _| _ | _|_ _ | |_ _ | _|_ _| |_ | |_ _ | |_ _ _ _ | |_ _ |_ _ | _ _| | _ _| _ _|_ _| |_|_ |_ | _| _ _ _|_ _ |_ _ _| _ _| | | _ | |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _|_ _ | | |_ | | |_ _| | | _ _| | _ | | | |_ _ _ _| _ _| _ |_ _ _ _| |_| | |_ | _|_| _| _ _|_ |_ _| |_ _|_ _ _ _ _| |_ | | | _|_ _|_ _ |_ _ _| |_ _ _ | |_ _ _ _ _|_ _ _| | |_ _ _| | _| |_| | _| | _ _ | |_ _ | | | | | _ _| | | _| _ |_ |_ |_ _| _ _|_ | _| | | | |_ _| | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ _ _| _| |_ _ _ _|_ | _| _ _ _|_ |_ _|_ _ _ _ _ _ _ | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_| |_ _|_ _ _ _ | |_| | |_ _ | | _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | |_ _| _ _| |_ |_ | |_| | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_|_ | | _ _|_| |_|_ | |_| | |_ _| |_ _ _ |_ |_ _ _ |_ | |_ | | | _ _ _ _| _|_ | _ _ |_ |_ _|_ _ | | |_| | | | _ _| _| | _ | | |_ | |_| | | | | _| |_ _| | _ _| |_ _| _ _| |_ _| _ _ |_| | _ |_ |_ _ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | _ _|_| |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _|_ _ | _|_ _|_ _ |_ _| _ _|_ _ |_ _ _|_ _ _|_ _ |_| |_ | | _ | _| | | _| _| _ _ _| | | |_| |_ | | |_ |_ _| | | |_ | | | _|_ |_| _| _ | |_ | | |_|_ _| _ |_ | | | |_ _| _ _ _ | | |_ _ _| |_ | |_ _ | | _ | _ _|_ _ _ | | _ | _| _| | |_ | | | |_ _ _ _ _| _ _ _|_ | | |_ _|_ _ | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | _| |_ _ _ | | _ _ | | | _| |_ _ | |_ _| | _|_ | _|_ | | _ _ _ _ | |_ _| |_ _ | |_ | |_| _ | | _ _ _| _| | | |_ _|_ | _ _ | _ | | |_ _ _ |_ _|_ _ |_ _ _|_ _ | _ | | |_ _ _|_ _ _ _| _|_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| | |_ | | |_ _ _ _ | +| _ | |_ _ _| | _ |_ _ | | |_ _ _| | |_ |_ _|_ _ _ |_ | |_ _ | |_ | | _|_ _ _|_ | | |_ | |_ _| _|_ _ _ | _| _ _| | |_ _ _ _ _ _ _ _ |_ _ _ | |_ _ _ _|_ _|_ _| | _| | | |_ _|_ | |_| _ _ | | |_ _ _ | |_ _| _|_ _ | | |_ _| _ _ _| _|_ | | |_ _ _| | |_ _| | | _ _|_ _ _| |_ _|_ | _| |_ _ _ _ _| _ _| _ _ _ |_ _ _ _ _| |_ _| _ _ |_ _ | | | | |_ _|_ _ | | _ _ _ _|_ _ _ _ _| | | _| _ _|_ _| |_ _| | | _ _| | | _| | | | _| | _| _| _ _|_ | | _ _| _ _|_|_ | |_ _| |_ _|_ _ |_ _ _| | _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ |_ _ _ _| | | |_|_ _ _ _ _ | |_ _| _| _ _|_ | |_ | | | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ | _ _| _ _|_ | | | | _|_ | |_ _ | _|_|_ | | | _ _|_ _ _ | | | |_ | _ _|_ | | |_ _ | |_ | |_ |_| _|_ _ _ _| _ _| _ _ _ _| _ _ _|_ _ _ _ _ _ | _|_ _|_ |_ _ _ _ | |_ | |_ _| |_ | |_ _ _ | |_ _| | _|_ _ _| |_ | |_ _|_ _ | |_ _ _ _| _ _| | _ _ _|_ | | _|_ | _ _|_ | | _| | _ _| |_ | _|_|_ | | | _ _| _ _ _ _| | _|_ | | |_ _ | _| _|_ | _|_|_ | | | _ _|_ _ | | | | |_ _ _| | |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_ _| |_| _| | | _| |_ _ |_ | |_ _|_ | | _| |_|_ _| | | |_ | | | |_ _ |_ _ _ _ _| | |_ |_ _| | _ _ _ _|_ | |_ _| |_ | |_ _ | | |_ _| _| _ _|_ _ _| | _ _| |_ _|_ _| _ _ |_ _| | _|_ _| _| | |_| _| |_| | _ |_ |_ _ _ _ _ _| |_ _ | _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ _ _ _| |_ |_ _| |_ _| |_ _ _|_ | | _| | |_ _| |_ _ |_ _| |_ | _| |_ _ | _ _| | |_ _ _|_ |_ _| | |_ _ _ |_ _ _| |_ _|_ _ _ _ _|_ _ _| _ _| |_ _|_ _ |_ _ |_ _ |_ _ _ | | |_| _|_ _| _ _ |_ _ _ _| | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | |_| _|_| | _ _ _| | +| |_| | _ _ _| | | _ _ _| | | |_ _ | | _|_ _|_ _ _ _ _ _ _|_ | _ _|_ _|_ _|_ _ | _ _ _ _| | | | | |_| | |_ _ |_ _ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _| |_ _|_ _ _ _ _| | _| _| | |_ _|_ _ |_ _| _ _ _ _| |_ | | |_ |_ _ _ | |_ _ _| |_ |_ |_ _|_ _ |_ _| _ _ _ _| |_ |_ | | |_ | _ _ _ | |_ _ _ _| _| |_ _ _ | |_ _ _ _| _ _ _| | _| |_ _ _ | |_ _| | | | | _ _ _ _ | |_ _| |_ _| _ |_ | _| |_ | _ _| | | _| | | | | | _| |_ _ _ _ _| | | |_ _| _ _ _ _|_ |_ _ |_ _ |_ _ | _|_ |_ _ _ | _|_|_ | | | _ _| | _ | | | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _|_ |_| _ | _|_|_ | | | _ _|_ _ _ | | |_ _ |_ _ |_| _ _| | |_ _ _ | |_ _|_ | _| |_ _ _ _ _|_ |_| |_ |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_| | |_|_ _ _ _ _|_|_ _| |_| _ | |_ _ _ _ _| |_ _|_ |_ | | | | | | |_ _| | _ _| |_ _| _ _| _|_ | |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| _ _| | _ |_| |_|_ | |_ _ _ _| | | |_ _|_ _ _ _ _| _ _ _|_ _|_ | _ _| | | | _ | | |_|_ _ _ | _ _|_ _| |_| _ _ _ _| | | _| | |_ _ |_ _ _ _ _| |_ _|_ _| _ |_ | | | _ _| |_ _| _ _|_ _| | _ _|_ _ _ _ _| |_ _| _ _ _ _| |_| | | | _ _| | |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _ _ _ | |_ _ _ _| | _|_| | | |_ |_ _ | _ _| | | | |_ | | |_ _ |_ _ _|_ _ | | |_ _ | | _| _| _| _| |_ | | |_ | _ _| | _ _ _| |_ _ |_ | _ _ _| | | |_ _| _ _ _|_ _| | | _| | _|_ |_ _ | _| | _| _ _|_|_ _ | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ |_| _ |_ |_ _ _| _ _ _ | | | | _ _| | | |_ | | |_ _ |_| |_ _ _ _| _| | | _|_ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _ _ _ _ | _ | | _ _ _ |_ |_ _ |_ _ _ | _|_ |_ _ _ | _ _ _| | | |_| _ _| | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _|_ _| _| _|_ _ | | +|_| | _|_ | _ _| |_ | _ _|_|_ | | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | _| _ _| | | _|_ _ _ | | _ _| | | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ | _ _ | | | _|_ | |_ _ | | _ _ _ _|_ |_ _| |_ _ | | _| |_| _ |_ |_ |_| |_ |_ _ | | _ _ _ _|_ |_ |_ _| |_ | | | | _|_ | _ _ _| _ | |_ _|_ _ | | | | _ |_ _ _| |_ _| | | _|_ _| |_ _ | | _| |_ _ | _ _ _ _|_ | | | |_ _ _| |_ | _| |_ |_| |_| | | | |_ _ _ _ | _|_ _|_ _ |_ _ _ _ _ _| |_ _ | _ _| |_ | _| _ _ _|_ _ _ _ _| |_ _| |_ _|_ |_ | | | |_ | | | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| |_ | | | |_ _ _ _|_ _ _| _ _ | |_ | | | _| |_ | | | | | |_ _|_ _ | | |_ _| _ _ |_ _ _| | | _ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | _|_ _ |_ _ _ | _ _ _ _|_ |_| |_| _ _ _ | _ _|_ _ |_ _ _| |_ |_ _|_ _ _ _| _ _| | _ _ _ _| | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _|_ _ _| | _ _ _ _ _ | _|_|_ _|_ _ _ _ | | _| |_ _ | _| _ |_ | | |_ |_|_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _ _ | _|_ |_ _|_ _ |_ _| _ _ |_ |_| _| _ _ _| |_| _ _ _| _ _| _ _ _|_ _ _| _ _ _ _| _ _ | _ _ _ _| |_| | |_ | | | |_ _| _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ _|_| |_ _| | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_|_ |_ _|_ _ _|_ | _ | | | |_ _| _ _| |_ _|_ _ _ _| _| | _| | |_ | _|_ | _|_ _ _ _|_ _ _ _| | |_ _ | |_|_ | | |_ _ | _ _| _ _ _|_| |_ _| _| | | | _| | | | _ _ _ _ | |_ _ _| | |_ _| _|_|_ | | | _ _|_ _ _ | | | |_ | | _| _| _ _|_ |_ _ |_ _ | _ _|_ | | | | _|_ | |_ _|_|_ _|_ | |_ _ |_ _ | |_| |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ |_|_ | |_| | | _ _| _ _ _| | _ | _|_| | | | |_|_ _ | |_|_ _|_ | |_ | | | _| | | |_ _|_ |_ |_ _ _ _ | | |_ _| | _ _ _ _ _|_| |_| _| | +| _| |_ | |_ | |_ |_ | _ _|_ _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | _ _|_ _| _ _ |_ _| | _ _| | | |_ _ _| _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_|_ _|_ | |_ _ _|_ _ _| |_ |_ _| | |_ _ | | |_ _ _| |_ | | | | _| _| _| _ _|_ |_ _ _|_ _ _|_ _ | | |_ _ _| |_ |_ _ |_| _| _| | |_ _| |_ |_ _ | _|_ _ |_ |_ _| | | |_|_ |_| _ _ _| | _ _| | |_ _ _ _ _ _| | |_ _ _|_ | |_ _ | | _| _|_ _ _ _ _ _| |_| _ _|_ _ _ _ _| | |_ | | _|_ _|_ _ |_ _ | | _ _ _ _|_ |_ | | _ _| _| |_ |_ _ _ _ |_ _ _ _|_ _ _ _|_ _| |_ | _| |_ _|_ _ |_ _|_ | _|_|_ | | | _ _|_ _ _ _| | | | _ _| _ _|_ _| _ _ _ _| | _ _| | _| _|_ _| |_ _ _|_ _|_ _ _|_| |_| | |_ _ _ _|_ _| |_ | |_ |_ |_| _ _ | |_ | | _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| | _ |_ _ | _|_ _ _| |_ | |_| _ _| _ _| |_| | | _ _ _| _ |_ |_ | _ | _ | | |_ _ _ |_ |_ _ |_ _ | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | _|_| |_|_ |_ _ _|_ | |_ _ |_ _ _ _ _ |_ _ |_ |_ _ _| |_ | _| _|_ _ _ _ | | |_ _ _ _| _ _|_ _ _|_ | | _| _ |_ |_ |_ | | |_|_ _ _ | | _ _|_ _ _ _ _ _| _ _| _| _ |_ |_ | | |_ _ | |_ | _| _ | _|_|_ | | | _ _| | _ | | | | _|_ | | |_ _ | _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _ _ _ _| _ _| | | |_ _| |_ _ _| | | _ | _ _ _| _| | _|_ | |_ _| |_ _ |_ _ | _ _ _ _|_ _| _|_| | |_ _| _ _| | |_| |_| _ _ | | _| | | | | | |_ _ _|_ _| _ _ |_ _ | _ _| | _ |_ _ _ _ _| |_ _|_ _ |_ |_ | | | | | | _| |_ _ _ _ _| | |_ | |_ _| |_| |_ _|_ | | | _ _ | _| _ _| |_ |_ _ | | | _ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _|_ _ _| |_ _ | | _ _|_ |_| | _ _| | _| |_ _ _| | |_ _ | | | _| |_|_ _ _| |_ _|_ _ _ _ _| | |_ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _| +|_ | | _| | | _|_ |_ _| | |_ _ _ _ _ _ | |_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ _|_ | _ _ _|_ | | |_| |_ | | |_ _ _ _ _|_ | | _| _|_|_ | | | _ _|_ _ _| | | | _ _ |_ _ _ _ | |_ _| | _ _| |_ _ _| |_| _| _ _|_ _ _|_|_ | | |_| _| _| |_ _ _ _ _| _ | | | _ _| |_| _| _ _|_ _ _| _ _| _| |_ _ _| | |_ |_ | _ |_| _ |_ _ _ _|_ | _|_|_ |_ |_ _ | | | |_ | | | | _ _ _ _| |_ _ _ _ | |_ _ _| |_ _|_ _ _ _ _ _| | _ _| | _ _ _ _ | |_| _| |_|_ _ |_| |_ _ _ | | |_ _ _| |_ |_ |_ | |_ |_| | | | _ _| _| _ _| |_ | _ _| _ |_ |_|_ | |_ | |_ _ | _|_ _ _ _ _| |_ _| _ _ | | | | | | |_ _ _| _ _ |_ _ | _ _| |_ | | | | _| _ |_ |_ | _ _ _ _ | _| _|_ _ _ |_ _ _ _ _| _| |_ _ _| |_ | | | |_ | |_ | _ _| | | | | | | | _ _| _| | | | |_ _ _ _ _| _| | | |_ | |_ _| _| _ _|_ _ _|_ | | _ _| _|_ _ _| |_ _| _| _ _|_ | | | | | | _|_ _|_ _ |_ _ _ _|_ _| | | _| |_ _ | _|_|_ | | | _ _| | _ | | _ |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | |_ _ |_ _ _ _ _ _|_ | _| _ _ | |_ | |_ _| _| _ _|_ _ _| | |_ _ _ _ _ _|_ _ _ | _| | _ _ _ _| | |_| _| _ _|_ |_ | |_ _|_ _ |_ _ _| |_| |_ | _ _| _ _| _ _| _| _ _|_ |_ _| |_ _ | _ _| _| _| _|_ _ _ _ _| |_ _| _ | |_ |_ | |_ | _ _| |_ _| _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ _| _ _|_ _ _ |_ _ _ _| | |_ | |_| | | |_ _ | _ _ _| | _ _|_ |_ | | _|_ _ |_ _|_ _| _ _ |_ _ | _ _| | | _|_ | _|_ _ _|_ |_ _ |_ _ _| | _|_ _ _|_|_ _ _ _ _ _| | | |_| |_ | | | | _| _ _ | | _ _|_ _|_ _| |_| |_ _| | |_ _ _ _ |_|_ _ _ _| | | |_ _ _ | _ _|_ _ _|_ _ _ | _|_ |_ | | | |_|_ _| _ _ _ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ | _ _| | | |_ | _ _| _| | | | | _| |_ | _|_ _ _| |_| | | |_ |_ | _ | | _ _ | _ _ _|_ | |_| | |_ _ _|_ _ | _|_ _ _| |_ | | | +| _| |_ |_| |_ _|_ _ | |_ _ _ _| _ |_| | | _|_ | | _|_|_ | | | _ _| _ | | | | _|_ _ | |_ _ | _|_ _|_ | | _| |_ _ _ | _ |_ _|_ |_ _ _ _ _| |_ _| _ _ |_|_ | | | _| | |_ _ _ | _| |_ _ | | | _|_ | _ _| _ _| | _ _ | |_| |_ |_ | |_ _| _ _ _ _ | _|_ _| | _ _| _ _| | _| _| _ _ _|_ _ | _| | | | | _|_ | | |_ _ |_ | |_ _ _ _ _| | |_ _| | | | | _| |_ _| |_ | | | | | | |_| | _ _ _| _ _ |_ _ | _ _| |_ _ _ |_ _ | _ _ _| _| _| |_ _| |_ _ _| |_ _| |_| _| _ _|_ _ _| | | | | _ _| _|_ _ _| _| _ _| | |_ _ | _| _| _ _|_ | _|_ | |_ _ _ | |_ _| _ _| | _ _ |_ _ |_|_ _| |_| | _ _ _|_ | | |_| |_ | | |_ | |_ _| _| _ _|_ | |_ _ | | _ _| _| _ _ _ _ _ _ _| _| | | |_ |_ _| | |_ _ _ |_ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _ | |_ _ _| |_ _ |_ | _ _| | _ _ _ _ _| | | |_ _ _ _| _| _| |_ _ _ _ _| |_ _|_ _|_ _ _ _ |_ _ |_ | | _| |_ _ _| | _|_ _ _ _ _| |_ _| |_|_ _| | | | | | |_ | _| | |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| |_ _| _ _| _ | _ _ | | | _| | _| |_ _ |_ | _ _| | _ | _ _| |_ | | _ _ _ _ | |_ _| _| |_ _| _ _ _| | _| |_ _ _ _ _| |_ _ _ | |_ _ | _| _| _| |_ _ | | | | | _| |_ _ _ _ _| _ _| _ _|_| |_ _| | _| _ _ _ _ _ _ | | _|_ _|_ _| |_ |_ _ _ _| _ _| _ _ _ _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | | |_ | _|_ _| _ _ |_ _ | _ _| |_ _| | _| | _ _| |_ | | | | | _| |_ _|_ _ |_ | _ _ _| | | |_| |_ | | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ _| |_ _|_ | | _| |_ _| _ _|_ _ |_ _|_ _| _ _ _| _ |_ |_ | |_ |_ | _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ | | | |_ _| | _ _ _|_ | |_ _| _ _| _|_|_ | | | _ _| | _ _ | | | | | | |_ _| _| _|_|_ | | | |_ | | |_| | |_ _ | _|_ _ _ | | _|_|_ | _|_ _| |_ _| _| |_ _ _ _ _ _ | _|_ _ |_ _ | |_ _| _| _ _|_ _ _|_ | +|_ |_ |_ |_ | | _ _ |_ | _ _ _| |_ | | | | _ _ _|_ _ _ _ _| |_ _| _| _| |_ | | _ _ _ _| |_ _| | |_| _ | | |_ |_ _ | _ _| |_ | _ _ _ | _ _ _ _ | _ |_ _ _|_| |_ |_ _|_ _ |_ _|_ _ _|_ | | | |_ | |_ _ |_ | _| | |_ _| |_ | | |_ _ |_ | |_ _ | | | | _ _ _|_ _ |_ | _| _ _|_ |_ _ | _|_ _| | _| | | | |_| _ _| | | |_ | |_ _| | | _| | | _ _| | |_ |_ _ _ _| _| | | |_| |_ _| |_ | | | _ _ _|_ | | |_| |_ | | _ | | | |_| _ _ _| _| _|_ _ | | _ _ _| | _ _| _ _| | _ _ _|_ | |_ _ _ _| _ _ |_ _ | _ _| | |_ _| | _| |_ _ _ _ _| |_ _ _| _ _ _|_ _ _ _| | _|_ _|_ |_ | _| _ |_ |_ _ _ | _|_ _|_ | | _| |_ _ |_ | _| |_ _ _ _ _| | | |_ _| |_ _ _ _ _| |_| _ _ _|_ | |_| |_ _ | | |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | |_ _|_ | _ _| _| _|_ | _|_| _ _ | _ _| _|_ _ |_|_ | _| | |_ _ _ _ _ |_ _ _ _ | |_ _| _ _ _| | _|_| | |_ _ _ _ _| | | | _ _| _| | | _|_ _| |_ | _| | | | _| | | | _|_|_ | | | _ _|_ _ _ | | _ _ _| _ _| | |_ _ _| | _| |_| |_ |_ _ _| | _| _|_ | _|_ |_|_ | |_ _ |_| _ | | _| |_ _ | |_ _ _ |_ _ | | |_ _ _ _ _ _ | | _| | _ _| | | | |_ _ | |_ _| |_ _| |_ _ _ _ _ |_ _|_ | | |_ _ | |_ _ _| _| | | _ _|_| |_ _| _ |_ |_ | | | | |_ _ | | _| | | |_ _|_ | _| _ _| | | |_|_ | |_ | | | _ _ _| _| | |_| |_ | | | | _| |_ |_ | _|_ _ _|_| |_| |_ _ _ _ _ _ _|_ _ _|_ _ _ _ |_| |_ _|_ | | _| |_ _ | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | | |_ |_ _ | _ _ | |_ |_ | _| _| _| _ _|_ | | |_ _|_ _| | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_|_ | _ _|_ _ _ _ _| | | |_ _ _ _ _ _ _ _| |_ _| _ _ _ _ _| | | |_ |_ _|_ _ |_ _|_ _ _ | | |_ |_ _ _| |_ | |_ | _| | _ _|_ _| |_ _ _ _ _ _| _ _ _|_| | |_ _ _ _ | |_|_ |_ _ _ _| | |_ | _ _| | _ _ _| _| +| _ _|_ |_ _ _ _| _ | | _|_ _ | | _| |_ _|_| _ _ _| _ _ _ _ _| | | | _|_ _| |_| _ _ _ _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ | _| | | _ _|_ _| | _| _ |_ |_ |_ _|_ _ | | | | | | _|_|_ _ | _| |_ |_ _|_ | _| |_ _| | _| _| |_ _ | |_| | |_|_ _ |_ | _| |_ |_ _ _ |_ _| | |_ _ | _|_ | |_ _|_ |_ | _| |_ | | |_| _ _| | |_ _ _|_|_ _ | _| _ _ _ | _ _|_ _ _|_ _ _ | |_ | |_ |_ _ | _|_ _|_ | | _| |_ _| _| | |_ |_ _ | |_ _ _| _| | |_ _ _| |_ _ |_ | _|_| |_ _| | |_ | _ _ _|_ | | |_| |_ | | |_ _ | | |_ | _| _|_ _ |_ _ _ _ _ _| |_| | |_ _ _ | |_| _| _ _|_ | _| | |_ _ _| | |_ |_ _ | _|_ | |_ _| _ _ _|_| | | |_ _ _ _ _ _|_ |_ _ | _|_ | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| | |_ | _ _| |_ _ |_ |_ _| |_ _ |_ _ |_ _| |_ | |_ _ | |_ _ |_ |_ _ | |_ _ _ | _| |_ _ |_ | _ _| _ | | | |_ | | | |_ _| | | | | | |_ _| _| _ |_ |_|_ |_ _| | | |_ _| |_ _|_ _ _ _ _| |_ _| _ |_| | _| | | | | | | |_ _| _ |_ | | |_ | |_ _ _ | | |_ _| |_ _ |_ _ _ _| |_ |_ _| | |_ _ _| | |_ | | _| | | |_ | _ _| | | _ _ _| | _|_| _ _| |_ _ _|_| |_ _| _ _|_ _ |_ | | | _ _| _| _ _| |_ _| _ _| | | _ _| _| |_ _ _ _ |_ |_| _| _ _|_ |_ _| | |_ _|_ _ |_ _|_ _ _| |_ _|_ _ _ _ _| |_ | _ _| |_ _|_ _ |_|_ |_| | |_ _ | _ |_ _|_ | | _| |_ _| | | | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _| | |_ |_ _ | _ _ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _|_| | |_|_ | | _ _|_| |_ _| _| _|_ _ | _| |_ _ _ _ _|_|_ |_ _ | _|_ |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | _ _|_ _ _ _ _| _ _ |_ _| _ _| | _ _ _ _ _ _ _| | _ _|_| |_ | _ | |_ _ _ | |_ |_ |_| _ |_ | |_ |_|_ |_ _|_ _ _ _ _ _ _ _ _| _ | _ _ | _|_ _| _ _ | _| |_ _ | |_ _ |_ _| | _|_ | _|_| _ _ |_ | +| _ _ _ _| _ _ |_ _| |_|_ _ _ _ _ _|_|_ | | _ _ _ _ | | _ _| | |_ | |_ _| _ |_ |_ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ _ _| | | | _ _ |_| _| _ _|_ |_ |_ _ _| |_ _|_ _| | | _ _| _ _ _|_ _ _ _|_ _ |_| | _| _ _|_ _| _|_ _ _ _|_ _ | |_ _ _ _ | _|_|_ _ _ _|_ _ |_ | | _|_ _ _|_ | _ |_ _ _ | _ _|_ _ _|_ _ _| | _ _ |_ _| |_| | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| _|_ |_ _| | |_| _ | | |_ |_ _ | _ _| | | _| | | _ _|_ | |_ _ _| |_ | _| |_ _ |_|_ | _|_ _| | |_ _ | _|_ |_ | | _| |_ _ |_ _|_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ _ _ | | |_ _| | _| |_ _ _ _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _|_ |_ _ _| | |_ _|_ _| _ | | | _ _ _ _| | |_| | |_| | _| |_| | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| | | | | |_ _ _ _ |_ |_ | | |_ _ |_| _ _| | _| | _ _| | | _ _| _|_ | |_| _ | _|_ _ _| | | |_ | | | | | |_ _| | | | | | | | |_ _| _| |_ _ _ _| _| _ _|_ | _| _ _| |_ _ _| | _ _ _ _ |_ | | | |_ _ _| |_ _|_ |_ _|_ _ |_ _| | _| _| _|_| | _|_ _| |_ |_ | |_ |_ _ |_| _ _| | | | _ _| | _ _| | | _| |_ |_| _| |_| _| | _ _| _| | _| | |_ | _| _ _ _ _|_ |_ | | _| _|_| | _|_ | | |_ _ _ _| _ _| | | _| _ _| _| |_ |_ | | _| |_ _ _ _ _|_ |_ _ |_ _ |_ _ _ _ | | _ _ | | _ _ |_| | | _ | |_ _ | | _| _| |_ | _ _| | |_ |_ _ | |_ _ _| _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_|_ | | _ _|_| |_ _| | | | |_ _| _|_|_ | | | _ _|_ _ _ _ _| | | | |_ _ _ |_ | _ _|_ | | |_ _ | |_ _ | | | |_ _ _ _ _ _ _ |_ _ _ _| |_ _ |_ _| | | | | _|_|_ | | | _ _| _ _ _ | | | | _| _ _ | _ _ _| | | |_| _ _| | _ _ | _ |_ _| |_ |_| _ |_ |_ |_ _ _ _ _ _| |_ _| _| _| _| _ _|_ | |_ | _| _ _ _ _ | | | | |_ _ _| | |_ _|_ _ |_|_ _ _| _| |_ _|_ | _ _|_ _| |_ _ |_ _ |_ _ _| +| |_ _ _ _| _| | _ | _ _ _ _ | | _|_ _| _ _ |_|_ | _ _| |_ _ |_ |_| _| _ _|_ |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _|_ _ _|_| |_ |_ | | _| |_ _ _ _ _| | | | _ _| | _ _ _| |_ | _| _| _ _ _ _ | |_|_ | | | | | _ _ _|_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _ _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | _|_|_ _ _ _ | | _ _ _ _| _ _|_|_ _ _ _ _| _ | | | _ _ _|_ _| _|_| | | | |_ |_ _ |_ _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ |_ | | |_ _ | | |_ _| _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ | |_ _|_ _ | | | |_ _| _ | _| _|_ _ _|_ _ |_| |_ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | _|_| | | |_ _|_ _ |_ _ _| _| |_ _|_|_ _ |_ | | | | | | | | | |_ _ _| _| |_ | | _|_ _| _ _| | | |_ | | _ _|_ _| |_| |_ _| | |_| |_ _ _ |_ |_ | | _| |_ _ _ _ _| |_ _ | |_ _ _| _|_ _| | |_ _ _ _| _| |_| _ |_ |_ _| |_ |_ _ | |_ _ _| _| _ _| |_| _ |_ |_ |_ _| _ | |_ | | | | |_ _| _ _| | | |_| | | |_ _| _ _ _| _| | |_ | |_ _ _| | | | _|_ | |_ |_ _ _| |_ |_| |_ _|_| _| _ |_ _ _ _|_ | | _| | |_ _| |_ _| | | | _|_ |_ _| | |_ _ _| _ _ _ _ | | _ _ _ | _ _| |_ _|_ | |_ _ _ _|_ _ | | | | | | | _ _| | |_ _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ _| |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ | _ _|_ | | |_ _ | | | |_ _ |_ _ _ _ _| |_ _|_ _ _ _ | | | | | _ |_ |_ _| | _ _| |_ _| _ _| | | | _| |_ | | _|_ _ |_ _ | _ _ _ _|_ |_ | | | _| |_ _ _ _ _| |_ _| _| |_ _ | | | | | |_ _ | |_|_ _ | |_|_ _|_ | | | | | |_| |_ _ _ _ _| _| _| _ _|_ |_| _ _ | |_ _ _ _ _| | _| |_ _ _ _ _| | _|_ |_| _ _|_ _ _| |_ _| | | |_ _ | |_ | _ _|_ _ _ |_ | | _| _ _|_ _ _ |_ | | |_ _ |_ _ _ _| +|_ | | | _ |_ _| | |_ _ | | _| |_ | _ _ _| _| | |_| |_ | | _ _ _| | _| |_ _ _ _ _| _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _|_ | | _| _ |_ |_ | | | |_ | _ | _|_ _| |_ | _ _| _ |_ |_| |_ | |_ _ | | _| |_ _ | | |_|_ _|_ _ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_| |_ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _| _ _ |_ _ | _ _| | | |_|_ | | _ _|_ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| _| |_| | |_ _ |_ | | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | |_ _ _| | _ |_ _| | | |_ _ |_ _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | _ _ _| |_ | _ |_ _ _ | |_ _ | _ _ _|_ _ _|_| | |_ _| | |_ _| _ _ _| | | | | | |_| | |_ | | _| | | | | |_| _ _ _ _|_ |_ | |_ |_ |_ _ | _| _| | | |_ | _| _|_ _ |_|_ _ _ _ _| |_| | |_ _ | | _| _| _| _ _|_ |_ | |_ _ _ _| | | _ _ _| _| _ _| _| _ _|_ | | | _ _ _|_ _ _|_| | _ | _ _ _|_ _|_ | |_| |_ _ | | _ _ _| | | | | | | _| | _| _| | |_ _| _| _ _|_ _ _| | _ _ _| | |_| _ _ _ | |_ _| |_ _|_ _ |_ _ _ _|_|_ _| |_ |_ _ |_ | _ _ _| | _ _ | | |_ |_ _ _|_ | _ _| _|_ _ _ _ | |_ _| | |_ _ _| | | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | | |_ _ _|_ | _|_|_ | | | _ _|_ _ _ _ _| | |_ _ | |_ _| | _ _| |_ _| _ _| | |_ _ | | _ _ _ _ | _ _ _| | _ _|_| |_| _ _|_ |_ | _|_ _ _ _| _ _| _ _ _| | |_| _| _| |_ _ |_ _ | |_ _ _| |_| |_ _ _| |_ _ _ | _ | _ _ | _| | |_ _| |_| |_ _| |_ _ _| | |_ _ | | | |_| | | |_ _ _| _ _ _ |_| _ _| _ _ _ _| _| | _| |_ _ | _ | | |_ _ _ _ _ _|_ _ _ _ | | _ | _ _| | _|_|_ | | | |_| _| |_ _ _ _|_ | | | | | _|_ | |_ |_ _| |_ _ |_ | _ | +| _|_ _| | | _ _ _| | _| | |_ _ _| | |_ _ | | |_ _|_ | | _| |_ _| _ _| |_ | _ _| _| | _| | | |_ _|_ | |_ _ _ _ _| | |_ _ | | |_| | _| _ _|_ | | | |_ | _| |_ _ _| _|_ | | _| _| _ _|_ | |_ _ _| | |_ _ _| | | | | |_| | _ _| | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _ _ _ | _ _ _ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _ _| | _|_ _ _| _|_|_ | | | _ _| _ | _ _| |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| | | |_| |_ | | |_ | _ _|_ | _ _ _| | | _ _ _| _| | _ _| _ _| | | _ _ _ _ _ | |_ _| |_ | _|_ | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ _ _| | _|_ | | _|_|_ | | | _ _| _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _ _| _| |_ _ _ _ |_ _ _ _ _|_ _|_ | | _ _ | _| | _ |_ _ |_ _ | _| | |_ _|_ | _|_ |_ _| | | |_| |_|_ |_ _ _| |_ | | |_ _ _ _| | |_| _| _| |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ _| _ _| |_ _ | _| |_ _ _ _ _| |_ _| | _| _ _| |_ _ |_ | _ | _| |_ _ _ _ _| | |_| |_| _ _ _ _ | _| | _|_ _ _ _ _| _| _ _| | _|_ _ | | |_ _ _| | _|_ _ _| |_ | | _|_ | _ _| | | _ _ _ | |_ _ |_ | |_ |_ _ | | |_ _ | | _ | |_ _ |_ | _ _ _ _|_ |_ _ |_| _| |_ _ | |_ _ |_| |_ | _ | | | | | _|_ _ _ _| _| |_ _ |_|_ _ | | | |_ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _|_ | _ _|_ _ _ _ _| |_ _|_ _ | | | | |_ _|_ _ | |_ _ _ _| _ _| _|_ _ | | | |_ _ | _ _| | _| _| _ |_ |_| _ _ _| _| | _| | |_ _ _ | |_ _ _| _| |_ |_ |_ | | |_| _| _ _| _ _| | |_ _ _ _|_ | |_| | | _| | _|_| _ |_ |_ | | _| |_ | _|_ _ _| |_| | | |_ | | | | _ _ _ _ | |_ _ _| |_ _ | _ _| |_ _ _|_ | | | | | |_ | _|_| _ _ _ _ | |_ _| |_ _ _| |_ _ _ _ _ |_ _ _| _|_ _ _ _ _|_ _| |_ _|_| |_| | | |_ _| _| | | _ | | | | | | | +|_ _ _ | |_| |_| _ _ _| | _|_ _ | | | _| | | |_ _ | | |_ |_ _ | _ _ _ |_ | |_ _ _ _| | |_ _ _| |_ _|_ _ _ _ _| | _|_ _ _ |_ _|_ _ |_ _| |_ _ |_ _ _ _ _|_| |_| _|_ |_ _ _ _ _|_ | _| |_| _| |_ _ _ _ _|_| | _| | |_ _ | _|_ _ _|_ _| _ _|_ _| | | | | _ | _|_|_ | | | _ _| | _| _ _ _|_ _ _ | |_ _| | | _|_|_ | | | _ _| | | |_| | | | |_| |_ | | | _ |_ _ _ _ _| |_ _|_ | _|_ _ | | | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _ _|_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _|_|_ _|_ | | _| |_ _| _| | _ _|_ _ | _| | |_ | | _ | _|_ _ |_ | _|_|_ _| _ _ |_ _ | _ _| | _| | | _| | | |_ _|_ | _|_ _ _ _ | | |_ _ | _ _| | _ | | |_|_ _ _ _ _| |_ _| |_ _ _| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| _| |_ _| | _| | | _|_ _ | |_| |_ _ | |_|_ |_ | _| _| _ _|_ _ _|_|_ | | | _ _| |_ |_ _ _| _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | _| _ _ _ | | |_ | _ _ | |_ | | |_ | _ _| | _| | | | |_ _ | |_ |_ | |_ _ | _ _ _|_ _| _ _ _| _ _ |_ _ | _ _| | |_ _| | |_ | _ _| | _ _ |_ |_ _|_ | |_ | |_ _| | |_ _ _| | _| | |_ _| | | | | |_| | | |_| | | | | |_ _ _| |_ | _| _| |_ _ _ |_ _ | _ _| _| | |_ _| | |_ | |_ _ |_ _ |_ _ _| _ _ _ _ _|_ _| | _ _| |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _|_ _ _ _| | | _ _ _ _ | _ _ _ _| |_ |_ _|_| |_| _ | | _| _ _ _| | |_|_ | | | |_ _ _| |_ |_ _| | | _| _| _ _|_ | _ _ | |_ _| | | |_ |_ _|_ _ |_ _| | _ _ _| _| _| _| | _| | _ _| | _| | _ _| | |_| | | _|_ _ _ | | _ _| | | _ _|_ | |_|_ _ | _|_ _ _ | | _|_|_ | | |_|_ _| _ _ |_ _ | _ _| | | | | | _|_ _ _ | | | | | _| _| _ |_ _ | | _| |_ _ | | _ _ _|_ | | _ _ | _ _ _|_ _ | | _| _| _ |_ |_ | |_| _ | _|_|_ _ _| |_ _|_ _ _| | +| | _ _|_ | |_ _ | _| | _|_ _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ | | _|_ | | | _ _ | _ _| |_ _ _| _ _ |_ _ | |_ _ |_ _ _ | _ _ _| _|_ | | _ _ _ | |_ _| |_ | |_ _ _ | _ _| | | | | |_ _ _ _| _ _ |_ _ | _ _| | _| | |_| | _|_ _ _ _ _| |_ _| | _ _|_ _ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _| _|_ _| |_ | | |_ _|_ | | _| |_|_ | _ _ _ _ |_ _ | | |_ _ _ _| |_ | | _| | | |_ _|_ | | |_ _ _ _ | | |_ _ | | _|_ _| _ | _|_|_ | | | _ _|_ _ _ _| | | _| | | _ | | |_ |_ _ | _ _| _ _| | | _| | _| |_ |_|_ _ | | _| |_ | _ _ _| _| | |_| |_ | |_ |_| | |_ _ _| |_ _|_ _ _ _ _|_| _ _ | |_ _|_ _ | | |_ | | | _| |_ _ _ _ _ _ _ _ _ _|_ _ |_ _ | _ _|_ | _|_|_ | | | _ _| _| | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ |_ _ | _ _| | | | _|_ _ _ _| _|_| _ _|_ | |_ _|_ _ _ _ _ _| | _ _| | _ | _ _ _| | | | | | _| _ _ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| |_| | _| |_ | _ _|_ |_ |_ _ _| |_ | | | | _|_ |_ | |_ |_ |_ |_ _ _| | |_| | | | | | | | | _ _ _| | | |_| |_ | |_ | | _|_ _ _|_ |_| _ _|_ | _ _ _ _|_|_ _ _| |_| _ _| | | | | _|_ _ _ _ | | _ _|_ _| | _ _|_ _ _ _|_ _| |_ _| _| _ _|_ _ _| _ _|_ | _ _| _|_ _| _| _ _ _ _| |_ |_|_ _ | | |_ _ | _| |_ _| | _ _| | | | _| | | |_ _|_ | | | |_ | | |_ _ _ _ _ _| | | |_ _|_ |_ | | _ _ _ _ _ _| _ |_ |_ |_ _|_ | _|_ _ |_ _|_ _ |_ _| | |_ | | _ _| | | _ _| _| _| |_ _ _ _ _| | |_ _| _ _| |_ _|_ _ | |_ _ | |_ _ |_ | _|_ | _| | |_ | _| _ _| |_ | | _ _|_ _|_ _| _ _ |_|_ | _ _| | |_ _ _ _ _|_ | _| | _ _|_ _| |_ _ _ |_ | | _ _ _|_ | | |_| |_ | | |_|_ _| _ _| | | | | | | |_ _| _|_ | |_ _| | |_ _ _|_ | | |_ _ _| |_ _| | |_ _ | _ _| |_ _| _| _| _| _ _|_ | | | _|_ _|_ _ _ | | | _ _ _ _ | +| |_ _ | _| | _ _| |_ | | |_ _ |_| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | |_| |_ _ |_ _| |_ _| | |_ _ _ _ | |_| |_ | | | _ _| |_| _ _| | _ _| | _ _ _| _ _| |_ |_ | _ _ | |_ | _| _|_| | _| |_ _| |_| |_ | _ _ _|_ | | |_| |_ | | |_ _| | _|_ _ _ _ |_ _ _ | |_ _ | _ _ _| | | |_| |_ | | _ _ _ | _ | | | | _ _ _ _| |_ | | | |_ |_ _ | |_ _ |_ _ _ |_| _| |_|_ |_| _ |_ |_| |_ _ _| |_ _|_ _ _ _ _| |_ _ | | |_ _|_ _ |_ _| |_ _ _ | | |_ _ _ _ _| |_ _|_ _ _ | | _| | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| |_| _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _ | | |_ _ _ _ _ _ | _ _ _ _| _ _ _|_ _ _ _ _| |_| | _| |_|_ _| _ _ _ _|_ | _| _ _| | | | _ |_ _ _ _ _| |_ _| _ _ _ _| |_ | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | |_| |_ | | |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| _| |_ | | | _ |_ | | | | |_ _ | _ _ _| | | _ _ _| _| | _ _| _ _| | _ _ _ _ _|_ _ _| | | _| _| _| | | _| _ |_ | | |_| |_|_ _ _ |_ _|_ _ | |_ _| | _|_ | |_ _| |_ _| |_ _| |_|_ _ | |_|_ _|_ | | _| |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ | | |_| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _| | _ _ _ | |_ | | |_| | _ | _ _ _|_ _ _| | | _| _| | |_ | | | | |_ _ _ _| _| | | |_| |_ _ _| |_ _|_ _ _ _ _| |_| | |_ _ _|_ _|_ _ |_ _ _ _|_ _|_ _ _| |_ |_ _|_ _ _ | _| _| _ _|_ | _ _ _ _| | _ _ _ _ _| |_ _ | | | _| |_ | _|_ _| _| | | |_ | _ _| _ _|_ _ _ _|_ _ _ _ _ | | _| _ _| | _| | _| | _ _| | | |_ _| |_ |_ _ _| | | | |_ _ | _ _ _| | | |_| |_ | | | |_ _ |_| |_ |_ _|_ _ _ _ _ _| | |_ _ _| |_ _ | | |_ _|_ | | _| |_ _ _|_ | _| | |_ _ _| |_ _ _| |_ _ | | _| _ _ _ | | | _| _ _| | _ _| |_| _ _ _|_ _ _ _ _ _| _| _| |_ _ _ _ _| | | | | _ _ |_ _|_ |_ _ | | | +| _ _| | |_| | _ _ _| |_ _ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _ | |_ _ |_ _ _|_|_ _ _ _ |_ | _| |_ _ _| | | _ _| _| _ |_ _ | |_ _ | | _ |_ |_|_ |_ | |_| |_| _| |_ | _|_ _ _ _ _|_ _ | | |_ _ | _ _|_ _|_ | | _| |_ _ | |_ |_ _| | |_ | _| |_ | _|_ _ |_ | |_ _|_ | | _| |_ _| _ _| | |_ _| | |_ _| _ |_ |_ | |_|_ | | _ _|_| |_ _ |_ _ _| |_ _ _| _| _ _|_ | | _ | | _ _ | | _| |_ _|_ _ | | |_ _ | | | _ _| | |_ |_ _ _ _ _ | _| | _ _|_ _| |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _| | |_ |_ _ | _|_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ |_ |_ _ | _|_ | |_| |_ |_ | | _|_ _| |_ | | | _ | _ | _ _|_ _| _|_ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | | _ |_ _|_ | | _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | | |_ |_ _ _| |_| | |_ _ _|_ _ | _| | |_ | | _ | _|_ _ |_ | _|_ _ _ _| | _ _|_ _| _| _| _| | |_| _| _ _|_ |_ |_ _ _ _ _| _ _ |_ _| | _ _| | _ | _| | | _| _|_ _| | | | _ | | |_ |_ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_ |_ _|_ _ _| |_|_ _ _|_ |_|_ _ _ _ _ _|_ _|_|_ _ _|_ | |_ |_ _| |_ _| |_| _ _ |_| _| | |_ | _ _ | | _ _ | _ |_ _ _|_ _ | _ _ _ |_ _ | |_ _ _ | _ _|_ _ _| _ _ | | | _| |_ _ _ _ _|_ _ | _| |_ _ _ | _ _| _ _| | | _| | | | | _ _ _ _ | | |_ | | | | | _| | _ _ _ _ | |_ _ _ _|_ | | _ _| | | _|_ _ _ _| | _|_ _|_ _ | _|_ _ _ _ _ _|_| |_ _ _ _|_ _ | | | |_ _|_ | | _| |_ _|_ _ _| _| _| _|_ _ _ _ _ | |_ _ _ _| | _| | |_ _ _ | | |_ |_ _ | _ _ | |_ _| _ |_ |_ _ _ _|_ _ |_| | | | |_ | _ _| | _ _| | | | | | | _| | _ _ _ _ | |_ | |_ | | _| | | | |_ _| _ _ | | _| _| | | | | +|_ | _|_|_ |_|_ _| _ _ _| _ _ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| |_ | | | |_ _ |_ |_| | | | _|_ _| | |_ _ _ _|_| | | |_ _| _| | _| | _| _ _|_ | _| | | |_ _ _| _|_ _| | |_ | _ _ _ _ | |_ _| _| | | _ _| | |_ |_ _ | _ _| | _ _| | | _| | _|_ | | | _| | _|_| | | |_ |_ _ | _ _ | | _ _|_ |_| _| _ _|_ | |_ | _ _|_ | | |_ _ | |_ | _ _ | | _| |_ _ _ _ _| | | | |_ _| _| |_ _| | |_| _ _ |_ _| | _ _| | | |_ _ |_| | _| _ _ _ |_ _| | | _| _ |_ |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | |_|_ | | _ _|_| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | _ _|_| |_ _|_ _ _|_ |_ _|_ _ |_| _ |_ |_| |_ _| | |_ _|_ _ _ _ _| _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | |_ _| | | _| | |_ |_ _ | _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ _| | |_ |_| _ |_ | |_ _ _ _ _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| |_ | _ _ _| _| | |_ _ _| _| |_ _ _ _ _| _| |_| _ _ _| | | |_| |_ | |_ |_ _| _| |_|_ _ _ _| _ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _|_ _ | |_ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ |_|_ | _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | | _| | _ _| | | _| _|_ | |_ |_ _|_ _| _| | | |_ _ _ | |_ _ _ _| _ _ _| | | _ _| _| | _ | _ _| |_ _|_ | |_ |_ _ _ _ | _| _ _ _ _ _|_ _| _ _| _ _| | |_ _ _ _| |_ | | | | _| _| _ _|_ _ _ _| _ | | _| |_ _ | | _ _| |_ | _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ _| | _|_ _ | | |_ |_ _ | _ _ |_ _ _ _ _ |_ | | _ _| |_ | _ _ _|_ _| _|_ _ |_ _| |_|_ | | _ _|_| |_|_ |_| _| _ _|_ |_ _ _ _ _ _ _ | |_ | _|_ _ _| |_ | _|_| _| |_| | |_ _ |_ _ | | _| |_ _ |_ | _| | | _ _| | _| | | |_ _|_ | | _| |_ _| +| |_ _ _ _| _ _ | _ _ _|_ _| | _| | | |_ _|_ | |_ _ _ _ | | |_ _ _ _ _| |_ _ _|_ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _ | | _ |_| |_ _| | |_|_ _| | | _|_ _|_ _ _ _| |_ _ _| | _ _ _ _ _ _ _|_ _|_ _ | | _| |_ _ | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ | | _| _| |_ _ _| |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ | _| _| |_ _ _ _ _| | |_ _| | _ _| |_ _| _ _|_| _|_|_ _ |_| | |_ _ _ _ | _| | | _ _ | _ _ _ _|_|_ _ _ | |_ _ |_ | _ _| |_ _ | | _| |_ | | | _ _| |_ _| _| _ _|_ | | _ _ _ | _| _ |_ _ _ _| _ _| _ _ _| _|_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ | _ _|_ | | |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_ | | |_ _ | _ _ _ _| _ _ |_| _| _ _|_ | _ | |_ _ _ _ | |_| _| _| _ _|_ | |_ |_ _| | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ | _|_ | |_|_ | | _ _|_| |_|_ _|_ | _|_|_ | | | _ _| |_ _ | | |_ |_ | |_ _ _| _| _ _|_ | _ _ _| | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | _|_ _ | _ _ _|_ _ | | _ _ _ _ _|_ _ _|_ _ _ _ _ |_| |_ _|_ | | _| |_ _ | | |_ _ _ _ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | _|_|_ | | | _ _| _ _ _ _ | | _| | _ _|_| |_|_ | | | | _|_|_ | | | _ _| _ _ _ _| | | _| |_ _ |_ _| | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ _| _| |_ _ _ _|_| _| |_ _ _ _ | |_ _ _ _ _ _ _ _ _| _ |_ _|_ _ | | | _ _|_ _| | | _|_ |_| | _ _| | _ | |_ | |_ _ | | | |_ _ _| _ _ | |_ _ |_ | _| | _ | _| |_ _| _|_ _| _| _| _ _ _ _ |_ _| | |_ _ _|_ | | | |_ | | | | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ |_ _ _| |_ _ | | |_ _ _ | |_ _ _ |_ _ |_ | _ _|_ | | |_ _ | | _| |_ _ _ _ _| _ _ | |_ _| |_|_ | _ |_ |_| _ |_ _| | _|_ | | _| | |_ _ _| _ _| _|_ _| | |_| | |_ _ _| |_ _|_ _ _ _ _| | |_ _ | | +| |_| _ | | _| |_|_ _ |_ | |_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ |_ _ |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | | |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _| _| | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ | |_ _ _ _ _| | | |_ _ _ _| _ _| _ _| | _ _| _|_ | _ | | | | _| | |_ _ _| | _ _ _ _ | |_ _ | _ _| |_ |_ _ _ | _| | |_ | | |_| |_ _|_ |_ | _| |_ _ _ _ _| | | |_ _|_ |_ |_ _ _ | | |_ _| _ _| _ _ | |_ | _|_|_ | | | _ _| _ | _| | |_ _ | |_ _| | _ _| |_ _| _ _| |_ _ _| _|_|_ | | | _ _| |_ _ _| | |_ | _ _| |_ _| _ _|_ | _ _ _|_ | | _| |_ _ _ _ _|_| _| | | _| |_ _ | _| |_ _ _ _ _| _|_ |_ |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_ _ _ _ |_ | _ _|_ | | |_ _ | | |_ _ _ _ _| |_ _|_ _ | | _ _| | | _| _| |_| | _| |_ _ _ _ _| _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ _| |_| _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ | | |_ |_ _ | _|_ |_ _ |_ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | |_ _ _ _ _| |_ _| _ _ _ _| _ | | | _|_ | | |_ _ | |_ _| _|_ _ _ _ _| |_ _| _| |_ | | |_ | |_ _ _|_ | _|_ _ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ |_ _ | |_ _| | | |_ | _ _ _|_ _|_ | _ _| | _ _| | |_ _| _| | _|_ _|_ |_ | _ _| | _| |_ _ |_ | | | _| | | | | _| _| _ _ _| _| _| |_ _ | _ _| _ _ _ _| | | | _|_ _| | |_ _ |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _ _ _ _ | |_| |_ _ _ |_ _|_ _ _ _ _ _ _ | |_ _| | _ _| |_ _| _ _| | |_ |_ _ _ _| | _| |_ _ | |_ _ | _| _ _|_ | | |_ _ _ _ _| | | |_ | _| | _ _ _| _| _ _ _|_ _ _|_ _|_ _ | | _ _ |_ _ | | |_ _| +|_ _ _ |_ _|_ _ _|_ _ _ _ | |_| | |_ | | _ _ | _| _| |_ _|_ _ _ _ |_ _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_ _ |_ _ | _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _ _ _| _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | |_ | | _ | | _| |_| |_ _ _ | | |_ _| _ _| | _ | _| _| | | | |_ _| |_ |_ _ _ _ _|_ _ | | _| |_ _ |_| | |_ | | _ | | | _|_ _|_|_ | _ | | | |_ _| _ _ _ _|_ _|_ _ _ _ _|_ _ _|_ |_ |_ _|_ _ |_ _ |_ _ |_ _| |_ _ _ _ _| |_ _| | |_ |_ | | | |_ _|_ _ | |_ _ _ _| _ _| _ _|_ _ _ |_ _ _ _ _| |_ _| _|_ _ _ | | | _|_ _ _ _| _ _| _ |_ _ | _ |_ _ |_ |_ _ |_ |_| |_ |_ _ _| | | |_ _ _ | _ _ _ _| _ _ | |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ |_ _ |_ |_ _| | _ _| |_ _| _ _| |_ | _ _ _ | _ _ _| | |_ _ _| |_| _|_ _ | | | |_ _ _ _ _| | | |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_| |_|_ | | _ _|_| |_ _ | _ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| | _ _ | _ _ |_ _ _| _ _|_ _| |_ | _ _| |_ _| _ _| |_ _ | | _ _ _| _ _ _ _|_ |_|_ _| |_ _| _ _ _ _| |_ | _ _ _| |_ | | _|_|_ | | | _ _|_ _ | | | | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _|_| _| _|_|_ | | _ _ _ _| |_| |_ | _| | _ _ _ _| _| _| | | _| | | | |_ _ _| | _ _ _| | |_ _ _| | _|_| | _ _|_ _ | | | |_ _ _|_ |_ _| | _|_ |_ _ | | | _| | _| | _| | _| |_ _ | _|_|_ | | | _ _|_ _ | | | |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ |_ _ _ _| _ _| _ _|_ | |_ | _ | _|_ _ _|_ | |_| _ _| | |_ _ _ _ _| | | | _ _ _|_ _|_| _| |_ _| | | _ _ _| _ _ | _ _ _ _ | |_ _ _| _ _ _ |_| |_ _|_ _ | +| _ | | | _ _ _ _ | |_ _| | _|_ _ |_|_ _|_ | |_ _ _ _ _|_ | _ _ _ _|_ _ _| | |_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ | | _ _| |_ _ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | | | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _|_ _ _ _ _ _ _| | _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| _| _| _|_| |_ _ | |_ | _ _| _ _|_|_ _|_ _ |_ _ | | _|_ _| _| _| | _| | | _ _ _ | | _| | |_ _ _| | | _| |_ _ _| |_ |_ _|_ _| |_ _ _ _ _| |_ |_ _|_| |_ | | _| | _ _ | _ _| _ _ _ |_ | | | |_ _ | _| _| _ _| |_ _ _ _ | _ _| | | _ _|_| |_| _ | | _|_ _ _| | |_ _ _ | _ _ _ | | _ | |_ |_ _ _ _| |_ _ | | | | |_|_ |_ _| _ _|_ _| |_ _ _|_ _ _| _| _| _| | | _ _ _|_| |_ | | |_ |_| | | | |_ _ _ _| _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _| | |_ |_ |_ _ _ _| _ _| | _ |_| | |_ _ | | | |_ | _ _| _ |_ |_ | | _| |_ |_ | |_ | _| |_ |_ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _ _|_| |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ |_ | _ _|_ | | |_ _ | |_| _ _ _| _| | | |_ _|_ | |_ | |_ | | |_ _| | _| |_ _ _ _| |_ _ _ |_ |_| _ |_ |_| _ _ _| _ _| | | |_| |_ _| _|_ | | _ _ _ _| _ |_ |_| _| _ | _ |_ _ | _ _| | | | |_ _ _ _ _| |_ _|_ _ _ _| |_| | | _|_ | |_ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ |_ |_ |_ _ _ _ | |_| _ _ _ _|_ |_ |_| |_| | | _ _ _| _|_ _|_ _| |_ _| |_| | |_ _ _ | _| | _|_ |_ _ _ _| |_ _ _| _| | | | | | |_| | _|_ _ _ _ _| | |_ | _| | | | | | _| | _|_ | |_|_ _ _ _ _| |_ _|_ | | _| | | | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ | | |_ _ | _|_ | |_ | | | _ _ _ | | _| _| | | _ _ | _| | | |_ _ _ | | _| | | |_ _|_ _ | _| _ _|_ _ | | _| |_ _ | | _| |_ | | | | | +| | |_ _| _ | | _| |_ _ | |_ _ |_ _| _ _|_ _ _ _ | |_|_ _ |_| | _ _| | _ | _ _| | _|_|_ | | | _ _| | _ | | | | _| _ _|_ _ _| | | _ | _ _ _|_ _| |_ | _|_|_ | | | _ _| _ | _| | |_| |_ _| |_ _|_| |_ _ | | |_ _|_ | _|_ _ | | | |_ _ | _ _ _| _ _ |_ _ | _| | | |_ _|_ | _ _ |_ | | |_ _ | |_ _| _| |_ _ | |_ | _| _ | _ | _ _|_ _ |_| | | _ _ _| _|_ _| _| | |_ | |_ _| | | _| | _ |_| | _ _| | _| _| _ _ _ _|_ |_ _ |_| _| | _| _| |_ _ _|_ _|_ | |_ _ _ _|_ _ |_ _ _ _| |_|_ _| _ _| | | _| | | |_ _ _ _ |_ _| | | |_| |_| _ |_ |_ |_ _|_ | _|_| |_ _|_ _ |_ _| | | _|_| |_ _| | |_ _|_ |_| _ |_ |_ _ _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _ _| | _| _ |_ _ _| _ _ _ _| _| |_ |_ |_ _| |_ _|_ _ | _ _| _ _| | | _| | | | _ _| _| | | | |_ | | |_ _|_| _| _ _| _ | | |_ _ |_ | | | _ _|_| |_ | | _| _| _ _|_ | _| |_| _| _|_ _ _ _|_ | _ | | | | |_ _ | | _|_|_ | | | _ _|_ |_ | | _|_ | | |_ _ | | |_ | _| _|_|_ | | | _ _|_ |_ _| | |_ _ | |_ _| | _ _| |_ _| _ _| |_ _ _|_ _ _| |_ _|_ _ _ _ _|_ | | |_ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _| _| _| _ _|_ | | _| | |_ _| _| | _ _ _ _| |_ |_ _ | _| _| _ _|_ | | |_ _| | | | |_| |_ | | |_ _ _ | | _ | | | | _ _ _| |_| _ _|_ _ | |_| | |_ _ | _|_|_ | | | _ _| _ _ _ | |_ |_ _ |_ _ _| _ | _|_ |_ _ _| |_ | |_|_ _| |_ _ | _| _ _ _ | _ _| _| _| |_ _ | | _| | | _| | | |_ _ _ _| | _|_ _ _| |_ _| _ _|_|_ _| _ _| | |_ |_| | _ _|_ _ | | _| |_ _|_ _ _ | _ _ _ _ | | |_| |_ _ _| |_| _| | | |_ _|_ | | |_ | _| | |_ _ | | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| |_|_ | |_ _|_ _ | _| _ _|_ |_| |_ _|_ | _ _| | | | _|_ _ _ _| |_ _ |_ _ _ _ |_ _|_ _ _ _|_ _| | _ _| | | _| _| | |_ _ _|_ | | | | _| |_ _ _| |_ _| | | +| | |_ _ |_ _| | |_ _ _| | |_ | |_ _ | | | | | _ _| _| |_ _ | | |_ _ _| |_ | | _|_ _ _| |_| |_ _ _ _ _| |_ _|_ _ |_ _| |_ | | _ _| | _ _ | | _|_ |_|_ _ | | _ _|_ _ |_ _ _ _ _| |_ _| | | _|_| | | _|_ _| _| _ |_ |_ |_ _|_ _ _ _ _|_ _ | | _| |_ _|_ _ |_ _| _ _ _| | | |_|_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_|_ _ _| _|_ _ | |_| _| _| | _| | |_ _ _|_ _ _| | _|_|_ _ | _| |_| _| _|_ |_| |_ |_ | | | |_ _ _|_ | | _| _| | | _ |_ _ _| |_ | _|_ _ | _|_ _| _| _ _ | _ _|_ _ _ _ | |_ _ |_ | | _ | | _ _| |_ _ |_ _|_ _ |_ _ | _ _| | | | _| _| _ _|_ | _ _ _ _| _ _ _|_ _ _ |_ _ | | | | |_ _| _|_ _ _ _| _| _ _|_ |_ |_ _ | _|_ _ | _|_ _ _| |_ | | _ _ _| |_ _| | _ _ _ _ _ _| _| |_ | |_ _ |_ _ | _ _| _ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ |_| | | |_| |_ _ _ | |_ _ | _| _|_ _|_ _ |_ _| _ _|_ | |_ | | |_| _| |_ _ _ _ _|_ | | _| _|_ _ | |_ _|_ _| | | |_ | | |_ _|_ _ _ _ _| |_ _| _ _|_ |_| | | | _ _| |_ _| _ _|_| | _|_ |_ _ _ _ _| |_ _| _ _ _|_ | | | |_ _|_ _ | |_ _ _ _| _ _| | _|_ | | _ _ | | _ _ | | | |_ _| | | _ _ | |_ _ | _|_ _ _| |_ | | | _| |_ _ _ _ _| | |_ |_ _|_ _ |_ _| _| _ _ _ _|_ |_ _ _| | | _| |_ _ _ _ _| | | _ _ _| |_ _|_ | | _| |_ _ |_ _|_ _| |_ _| |_ _| |_| _ |_ |_ | _ _ _|_ _|_ |_ _|_ _ _ _ _| |_ _| _ _|_ | _ _| | _|_ _ _| _ |_ | | | | _| _| _ _|_ _ _| |_ _ |_ _ | _| | _ _| _| |_ _ _|_ _ _| | |_ _ |_| | |_ _|_|_ _ | | |_ _| | | _ _|_ _ _ | |_ _ _| _ _ |_ _ | _ _| | _|_ | |_ _| |_ | |_ _|_ |_ |_ |_ _| | _| _ _|_ _| _ |_ |_ _ _| |_ _|_ _ _ _ _| | | |_ _|_ |_ _|_ _ |_ _| |_| | | | _| | _|_|_ | | | _ _| _ _ _ _| | | | _| _ _|_ _ _ _ _| |_ _ _|_ | _ _| | |_ _ _| |_| |_ _ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | _|_|_ _ _| |_| |_ _ _ _ _| |_ _| | |_ _ _ |_ | |_ | +|_|_ | | | _ _| | | |_| | |_ |_ |_ _| | _|_ |_ |_ _ _|_ | | | | _ | | | _| _ _ _ _|_ |_ _ |_ _ _ _ _ |_ _ _ _ _| |_ | _| _ |_ _| |_ |_ | | _| | _ _ _| | _ |_ _ _ _ _ | | |_ _ _|_| |_ _ | | _| _ _|_ | | | _ | _| _| | |_ _ | |_ _ |_ _ | |_|_ _| | _ | | _ _ | _ _ _| |_ _ _ _ _ _ |_ |_ _ |_ | _|_ _ | | | _|_ _| _| | _| | _ _ | _ _| _ _ _| | _ _| | _| |_ _|_ |_ | | | _| |_ _| | | | |_| _| _ _| | _| _| _ _|_ _ _| _ |_ _| | _ _ _| _| | _| | | | | _ _| _| |_ _ |_ | _ _| _ _|_ | _| _|_ _ |_ _ |_ _| _|_| | | _| |_ _ _ _ _|_ _ | _|_ _ _ | |_ _ | _ _| |_| | |_ _|_ |_ _ _ _| | _| |_ _ _ _ _| _ | | | | | | |_ _| _| _ _|_ _ _| |_ _ | _|_ _ |_ _ _ | | _ _ _| | _ _ _| | _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _|_ _| _| | |_ _| |_ _ _|_ _ _ _ |_ _ |_ | _ _| | _| | |_ | |_ | _ _ _ | | |_ _ _ | _| |_ _|_ _ | | |_ _| | |_ _| | _ _ _ _ | _ _ | | |_ _ _ _ _| |_| _ _ _| _ _| _ _ |_ | |_ _| _ _ _| | _ | _ _|_| |_| _ | | _| _ _ _ | | |_ _ | _|_| | _| | |_ _| _| | |_ _|_ _| _| _ _| | | | | |_ _| _| _ _|_ _ _|_ _| | |_ | _ | | |_ |_ | _|_ _ |_ |_ _ _| |_ | _ _| | |_ _| | | | | |_ _ | | | |_ |_ _ | |_ _ _| _ _ |_ | _| _| _ _|_ | |_ _ _| |_ _ | | _ _ _ _ _ _| _ _| | |_ _ _| |_ | _ _ _|_ _ _|_ _ _| | _ _| | _ | _ _| _ _| _|_ | _|_ _ _ _| | _| _ _ _ _ _ _ _ _|_ _ _|_ |_| _ _ |_|_ | _ _| | | | _ _ |_ _| | _ _ _| | | |_| |_ | | _ _ _| _ _ _|_ |_|_ _ _ _ _ _ _|_ _ | _ _| |_ _ _| _ |_| _| _ _|_ | |_ | _ _ | _ _ _|_ _ _|_ _ _ |_ _ | _ _ _| |_ |_| |_ _ _ _ _| |_ _|_ _ _| _ _ | | | |_ _| _ | _ _ _| _ _ |_|_ | _ _| | |_| _ |_ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_|_ _ _ | |_ | | | | | | | _ _|_ _ _ _ _ _|_ | | +| _ _| |_ _| _|_ _| |_ | | _|_ _ |_ | |_ | _| | _ | | | | |_| | |_ | |_ |_ _ _| |_ | | _|_ _ _| _ _ |_| | _ |_ |_| |_ _ |_ _ |_ _ | |_ _| | | _|_ _ _ _| | |_ _ _ | |_ _|_ |_| _ |_ |_| _| _| |_ _ _ _ _|_ _| | | | |_|_ _ _ _| |_ _ _ _| |_| _ | _ _| |_|_ | |_ _| | _|_ _| | |_ _ _ _|_ _ | _ _ |_ _ _ _| | |_ _| _ | | | _|_ | |_| | _| |_ _ | |_ | |_ _| | _|_ _ _|_ | | |_ _ _ _ _|_|_ _ _|_ _ _ |_ _| |_ _ |_ |_| |_| | _ _| | _ _ _| | |_ _ | |_ _ | |_ | | | | | | |_ _|_ _ |_ _ _| | | |_| |_| | _| |_| _ _ _ |_| _ _| | | _|_ _ _ _| | |_ _ _ _ _ | _| | _ _ _ _ _ _ | |_| _ _| _|_ _ _| |_ | |_ _ | | |_ | _ _ _ _| _| | |_| _| | |_ | _ _| | _ _ _ _ _ _| |_ _ _ |_ _ | | | |_ _ | |_ | |_| |_ _| |_ _| _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| _ _ _ | |_ |_ _ _ | |_ _ | | |_ | _ _ _| | | |_ _ _ _|_ _ _ | |_ | |_ _| _ |_ _|_ _ | _ _| | _ | |_ _| |_ |_ _ _ _| _| _ _| | |_ | |_ _|_ | _| _ |_ |_ _ _ | | |_ _ |_| _| | | _| | _ _| | | |_ _| _ |_ |_ |_ _|_ | _ |_ _|_ _|_ _ |_|_ | _|_ | |_ _ _| _ _ _| _ _ |_ _ | _ _| |_ _|_ |_ | _ _| | | _ _ _| _|_ | | | | |_ | | | _|_ _|_ _ | |_ _| _| _ _|_ _ _| | _| |_ | _ _| | |_ _| |_ |_ |_ _| | |_|_ | | _ _|_| |_ _ | | _| _| | _| |_ _ _ _ _|_ | _ _| | | _|_ _ _| _ _ |_ _ | _ _| | |_| _ |_ |_| | | | _ _ _ _ | |_ _ _| _| | _| | _ _| _ _| | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | |_| |_ | | |_ _|_ _ |_ _ _| |_ _ | | | |_ _|_ | | _| |_ _ _ |_ _ _| |_ | _ _ _ _ _ | |_|_ |_| _ _ _ _| | _| |_ _ _ _ _|_|_ |_ _| | |_ _ _ _ _ _ | _ |_| _ _| |_ _| | |_ _ _ _ | _| _ _ | | _| _ _ _| |_ _| _| |_ _| | _ _ _| _| | |_| |_ | | | _| _ _|_ |_| | |_| _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _ _ |_ _|_ _ | |_| |_ _| |_| | |_ _ _ |_ _| | _ | | +| | | | | | | | _ _ _ _| |_ _ _ _ _ _| |_ _| | | | | | | | | | |_ | _| | |_ |_| _| _ _|_ _ _| |_ | _ _ _| | | _|_ | _ _|_ | |_ _ | |_ _ | | |_ _|_ _ |_ _ _ _ _| | _ |_ _|_ _ | _| _| _ _|_ | |_ _ _ | _| | _|_ _| |_ _ _ _ | _| | _ |_ | |_ _|_ _ _ _ _ _ _|_ | | _| | _ _ _| |_ _ _ _ | |_ _ | | | |_| _ _|_ _ _| | | | | |_ _| |_|_ _ _ _| |_ | | |_ _| | _| | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ | |_ | _ _|_ |_ _ | _|_| | _ _ _| _ _|_ _| _| | |_ | | _|_ | _ | |_ _ _ _|_| | | | _| _ _|_ _| | _ _ _| |_ _ | _ _| | | _ _ _ |_ |_ _| _ _| _| |_ _ _| _ _ | |_|_ |_ | | _ _ _ _|_ |_ _ | |_ _|_ | |_ _ _| | _| |_ |_| _| | _|_ | _|_ | | _ _| _|_ _ _ _ _ | | _| _| | |_ | | |_ _ _| _ _|_ | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| _| _ _| |_ | _ | _| | | | |_ _| _| | | _ _| | |_ | _ | |_| |_| _|_ |_ | |_ _ | _ _|_| |_ _| | | |_ | _ _ _| _ _ |_ _ | _ _| | _ _| _| | |_| _| _ _|_ | _| |_ _|_ _ |_ _ _ _ _| | | _| | | | _| |_ _| _| _ _|_ | _ _ _ _|_ _|_ _ _ | |_ _ | | |_ |_ _ _ _ _| _ _ _| | | |_| |_ | | _ _ _| _|_ | _|_ | | | _ _| _| | | | |_ _| | _| _ | |_| |_ | _ _| | _ _ _ _ | | _| _|_ _ _| |_ _ | | | |_ _ _ _| |_ | _ _|_ | | |_ _ | _| | _| | |_ _ _ _| | | _| | | | | _ _ _|_ | | |_| |_ | | | _| _ _|_ | | | |_ _ | | _| |_ _ | _|_ | | _| | |_ _ _|_ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ _|_ | | _| |_ _ _ | |_ _ _ | | _| | _| _ _| | |_ |_ _ | _ _ _ _ _|_ _ _| _ | | _| |_ _ |_|_ _ _ _| | | |_ _ _ _ | _ _ | _| |_ _ _ _ | |_|_ |_ | | | _ _| _ _|_ _| _ _ |_ _| _|_ _ |_ _|_ _| _| _ |_ |_| _|_ _ _ | |_ _ | _ |_ _|_ | | _| |_ _ |_ _ _ _ _| _|_ |_ |_ | _|_|_ | | | _ _| _ _ _ _ | | | _ |_ _ _ _ _ _|_ _ _ _|_ | |_ |_ _ _| | _ _| | |_ _| | +| |_ | |_ _| | |_ _| _ |_ |_ _ _| | _ _ _| | | | |_ _ _|_| |_ _|_ | | |_ | | _ _| | _ _ _|_ |_ _ _ _ _ _| |_ _| | |_ _ _ _ _| |_ _ |_ _ | | | |_| |_ _ _ |_ _ |_ _ _ _| | | _ |_ | _| |_ _ _ _ _|_ |_ | |_ _ _|_ _| _ _ _ _ _ _ _ _ _|_ _ _ _|_ _ |_ _ | _ _ _ _ | |_ _|_ | | | _ |_ _ | _| |_ _ |_ _|_ |_ |_ | _ | | _ _ _| |_ _ _| |_ _ _ | |_ _ _ _| | | |_ | |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _|_ _| |_ | | |_ _ |_ _ _ | _ _ _ _ _ | _|_|_ _ _| |_ _| _ _|_ _ _ _ _|_ _ _ _ _| | |_ _| _ _ |_ _ | _ _| |_ | |_ | _| |_| _ _| _| _| | | | _| |_ | _ _| | _| |_ _ | | |_| |_ _ _| |_ | |_ _ _| _| _ _| _ _|_ | |_| _| _| | |_ _| |_ _ |_ _| |_ _ |_ _ _ | |_ _| |_ _ _| | _|_ _|_ _| | _ _ _ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | | | | | _ _| |_| _|_ | |_|_ |_ | _ _ _| |_ | _|_ |_ | | |_ _ _| _| | | _|_ | _|_ | | |_ _ | |_ _ _ | | _ _ _|_ | | |_| |_ | |_ _ _ | _| | | _| |_ _ _ _ _|_ |_ _ _ | |_ _ | _ _ _|_| | _| | | | | | | _| |_ _ _ _ _|_ _ _ |_ _ |_ _| | | | _ _| | | | _| _ _ | |_ _ | _|_|_ _|_ | | _| |_ _ | |_ _| |_ _ |_|_ |_ _ _| _|_ | | |_ _ _ _|_| _| |_ _|_ _ | _|_ | _|_ | _ _|_ _| _|_ _ _ _|_ _ _ _| |_ _ _ | | |_ _| | _ _| |_ _| _ _| | _| |_ _| |_ |_ | | _ _| | | | | | | | |_ _ | | |_ _|_ | | _| |_ _ |_ _ _ _ _| | |_ _| | |_ _ _|_ | | _ |_| |_ |_ _|_ _ |_ _ _ | | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | | | |_ |_ _ | _ _ _ _ |_ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ | _ _| | |_|_ _ _|_ | | _ | | _ _|_ |_ | _ _| _| | | |_| | | _ _ | _| |_ _ | |_ _|_|_ | | | _ _ _ _ | | | |_ |_ _ |_ _| _| _ _|_ | | _ _ |_ | _| | | | | | | |_ |_ _ | _ _ _ |_ _ | _ _| | | |_ _ _ _ _| |_ _| | _| _ _| | |_ _| _| _ _ _ _ | |_ _| _ _| _|_ | _ | | | | | _| +| |_|_ _ _|_ |_| _| _ _|_ | _| _| |_ _ _ _ _| |_ _| _ _ _ _ _ _ _|_|_ _ _|_ _ | _|_ |_ _ _ _ _| _ _ |_ _ | _ _| |_ | | |_ _ _|_ |_ _ _| |_ | |_| |_ | |_ | _ _ | | |_|_ |_ _ _| |_ _ _ _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ |_ _ | | _| |_ _ | _|_| |_ | | _| | |_ _ _| _| | _ | | _ | | |_ _ |_| _ |_ |_ _ _ _ _|_ _|_ _ | |_ _| |_ | |_ |_ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ | _ _ _|_ _ _| | |_ |_ _ |_ |_| _ | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _| _| | |_| |_ | | _|_ | | | _ _ _|_ _ _| _| _| | | _ _ _ | | | _|_ _ _| | | | | | _| _| _ _|_ _ _| _ _ _| _| | |_ |_ | _ _ _| _| _|_ | | |_ | | _|_ _ |_ _ |_ _ _ _ _ _|_ _ _| | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | |_ _| |_ _ |_ |_ | | |_ _ |_ _ _|_ _ _ | | | _|_ |_| | | | _ _ _ |_| | |_ _ | _| _ _| |_ _| _ _| | |_ _| |_ _ | _ _|_ _|_ | | _| |_ _ _| |_ _ | |_ _ _ _ | _ _ |_ |_ _ _| | _ _ _ _ _|_ |_| |_| | | _| |_ | _ _ _ |_ _ _ _ _| | | _ _| |_ | _ _| _ _|_ _| |_ _| | _| | _ | | | |_ |_ _ | _ _| | | |_ _ |_| _ _ _| _ _| |_ _ _ _ | | | _ _ _| |_ _| |_ _ |_|_ |_| _ _ _| |_ _ _ _ | | | _|_ _|_ _ |_ |_ _ _ _| _ _| _| |_ |_ | _| _| _| |_ | _|_| |_| | | |_ | _| | |_ _ _ _| | |_ |_ _ | _ _ _ |_ |_ | | |_ _ _ _ _| |_ |_ | _|_ _ _ | |_ _ | _| | | _ _| | _|_|_ | | | _ _| _ | _| | | |_ _|_ | |_|_ | | _ _|_| |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | | _ _| _ _| | |_ | |_| | | _| _| | _ _ _| |_ _|_ | | |_ _ | |_ _ _| | | |_ | _ | | _|_ _ _| |_ |_ _|_ _ _ _|_ _ |_ | | _| |_ _ _ _ _| |_ _|_ | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _| | | _ | | | _ _ _ _ _ _ _ | | _|_| | | |_ | | |_ _ | | _| |_ _ | |_ _ _ _ _| | | | | |_| | | |_ | +| |_ _ | | _| | _| |_ _ _ _ _|_ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ |_ _ | _ _ _| | | |_| |_ | | _|_ | |_ _ _ _ _ _| _ _| _|_|_ _ _|_ |_ _| _|_| |_ _| | _ _| _ |_ |_ _ _| |_ _ _ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| | |_ _ _|_ | | _ _ _| _| | | _ _| _ | | |_ | |_| | _| | _ |_| _| _ _|_ | | _ | _ | |_ _| | _ | _|_ | |_ _ _ | |_ _ | _|_|_ | | | _ _|_ _ |_ | | _ |_ _ _| |_ _ _ _ _ _ _ |_ |_ _ _| |_ _|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ _|_ | | _| |_ _ _| |_ _| _ | _ _ _| | _ _|_| _ |_| |_| | | _ _ |_| _|_| |_ _ _| | _ _ _ _| _ _ _| |_ | | | | _ _ _| | _ |_ _ | |_ _|_ _ |_ |_ _ _| _ _ |_ _ | _ _| |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _ _ | |_ _ _ _ _| _ _ _ _|_ _ _ _ _| _|_| | |_ _ _ _ _ _| |_ _| | |_ | |_ _ | |_ |_ _ _ _| _ _| _ _| |_ _ | | _| | _ | | | |_ |_ _ | _|_ |_ _|_ |_ _ | | | _ |_ _| _| _ _| _ _ _ _| |_ _ _ _| | | |_ |_ _| |_ |_ _ | _ |_ _| | | |_ | _| _ _ _ _|_ |_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ _ _|_ _|_ |_ _ | | _ |_ |_ | _ _| | |_ |_ _ |_ |_ | |_ |_ _ |_ |_ _ | |_ _ | | | |_ | | |_ _ | _ _ _ _ _ |_ _ | | |_ _ | |_ _ _ _| _| _ _| | |_ _ _ _ _ _| | _| | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | _|_ | | | | | | | _| _| | _ | | _ _| |_ _ _| | | | | | |_ _ _ _ _| |_ _| _ | | |_| | | _ _ | |_ | _ _|_ | | |_ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ | |_ | | |_ _ _ _| |_| | _|_ _ |_|_ _| _|_ | | _ _ _|_ | | | _ _| | | _ _| | |_ _|_ | | |_| _ _ _ _|_ |_ _ _| _ _ | |_ _| | | |_ | _ _ _ _ _ _ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _|_ |_ _| |_| _ _ _| _ _ |_ _ | _ _| | |_ |_ _ | _| | |_ _ _|_ | | _ |_ _ |_ |_ _| |_ | |_|_ _ _| +| _ _| | | | | _| | _ _ _ _ _ _ | _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ |_|_ _ | _|_|_ _|_ | | _| |_ _ |_| | _ _ | _|_ _| _|_ _ | |_ | _| | |_ _ | |_ _ _ _| _| _| _| _ _| _ _ _|_ _| | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | | _| _ _ _ | | |_ _ _ | _| | |_| | | | | | | | _|_ _|_| |_ _| | _| |_ _ _ _ _| _ _|_ _ |_ _|_ _ _ _ _|_ |_ _ |_ _ _ _| |_| |_ _|_ _ _ _ _| |_ _| _ _| | | | | | |_ _ | | | |_ |_| _ _ | |_ _| |_ | _ _ _|_ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_| _ | | | |_ |_ _ | _|_ | _| |_ _ | | | | | _ _ _| | | _| _| | |_ _ |_| _| _ _| |_| |_ _| |_ |_ _ | | | | | |_| |_|_ _ | _ _ _|_ | _|_ _ _ |_|_ | | _ _ _|_ | | |_| |_ | | |_ |_|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_| _ _ |_ _ | _ _| | | | | | | | | | _ | | |_ _ | | _ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | _| _ _| | |_ _|_ | | _| |_ | | | _ _ _ _|_ |_ _| | | _| _| _ _|_ _ _| _ _|_| _| |_ | | |_ _| | | |_ |_ _ _| |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| _ | _| | _| _ _|_ | |_ _ _ _| | _|_ |_ _ _| |_ _| _ _ _|_ | _| |_| | _ _ _| |_|_ | |_ _ _ _| | | _ _| | | _ |_ _|_ _ |_ _ _| _ _ _| _| | _| | | _ _ _| | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _| |_| |_ _| |_| | |_| _|_ | |_ | |_ | _ _| _ _|_| |_| _| _| _ _ _ | | | _| | _ _|_| |_ _ |_ _| |_ _| | _ _| |_ _| _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| | | | | | | | _ _|_ _ _ _| _ _ _| _ _ _| _ _| |_ _ | _ _| | | |_ | _| |_ _| | | | | _ |_| | |_ |_ _ _| |_ | _ _| | _| |_ _ | | |_ | |_ _ | _ | _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _| _ _| _| _ _ _| | | |_| |_ | | |_ | | | | _|_ | | | | | |_ _ |_ | _ |_ | |_ _ _ _ | +| | _ _| |_| |_ _ _ _| _ _ |_ _ |_ |_ _ _| _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ _| | | | | | |_ |_ _ | _ _|_ | |_ _ | _ _ _| _ _| |_ _|_ _ |_ _ |_ _| _ _| | _ _ _| _| _ _|_ | _ | | _ _|_ _| |_ _ | _|_|_ | | | _ _|_ _ _ | | | |_ | | _ _ | _| | | _| _|_| _|_ _ |_ _ _|_ _|_ _ _|_ _| _ _|_| |_ _ _ | | |_ _| _ | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| | _ _ _ _ _ _ | | |_ | _ _|_| |_ _ _| |_ _| | |_ _ _| | _| |_ _ | | _|_| |_ |_ _ _ _ _| _| | | | _|_|_ | | | _ _| _ _ _| | | |_ _ _| _| | |_|_ | | _ _|_| |_ _| _|_ _| | _| |_|_ _ |_ | |_ _ _| _|_ | |_ | | _| _ _| | _| | _ _| | _| _| | | |_ _| |_ |_ _ _| |_| _ _ _ _|_ _ _ | | _ _ _ _| |_ _ | | |_ _|_ | | _| |_ _ _ _ | | |_ | _|_|_ | | | _ _|_ _ |_ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _| | | |_| |_ | | |_| |_ _| | | | _|_ _| | |_ _|_ _ |_ _| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | | _ _ _ _ _| |_ _ | | | | |_ _ _| |_ | _|_ _|_| _| _| | _| |_ | |_ _ _| |_ _ _ _| | |_ _| _| _ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _|_ | | _|_ _|_ _ _ _| |_ _ _ _ _ _ _ _ _ _ _ _ _ _| _ _ _ _|_| | _| _|_| | _| _ _|_| _ _ |_ _ | _ _| | | | _| | _ |_ _ _ |_ _ | _| | | _| | | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ _ _ _|_ | |_ |_ | | | _|_ | |_ | _|_| _ |_ |_ _|_ _ _| _| _| | _| | | _| _ |_ |_ | |_ _ |_ _ _ _| _ _| _| | _| | | |_ _|_ |_|_ _ _ _ | | |_ _ |_ _| | | |_ _ _|_| _ _ _ |_ _| _ |_ _ | _ _ |_ _| |_ | _|_|_ | | |_ _ _ | |_ _| |_ | | _| | _| _| _ _|_ _ _| | | |_ _ _| | | |_| _| | |_| _| | | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | | | | _| |_ _ _ _ |_ _ | _| |_ _|_ | | _| |_|_ _|_ _ _| | _|_ _| | | | | _ _| | | | | _ _|_ | _ _| | +| |_ | | _ _ | _ _ _| | | |_ _ _| | | _ _|_ | _|_|_ | | | _ _| _ | | | | | | | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| |_ _|_ _ | _|_ _ _ _| _ _| | | _ _| | _|_ _| _ _ _|_ _| | _| | | | |_ _ _ |_ | _ _|_ _ _ _ _| |_ _|_ _ |_ _| | | | | | |_ _ _| |_ _ _| |_ _ _ _ _| _ | | | _ _ _ _ | |_ _| _ _ _ _|_ | |_ _|_ _| | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| |_ |_ _| |_ _ _ _| |_ |_ _ _| |_| _ |_ |_| _ _| _ _| _| _ |_ _ _| _| | |_ _ |_ | _ _| _ _| _ _| |_ _ _ _ _| |_ _| |_ _| _| | | | | | _| |_ | _ _|_ | | |_ _ | | | _| _|_ _|_ _ | | _|_ _ _ _ _ _ _ _ _|_ _| | |_ | | |_ _| |_ | |_ _ | _|_|_ _ _ _ | |_ _ _ | _|_ _ _ _ _ _ _ | | | _ _ _ _ _| | |_ _| | | |_ |_ _ | _ _ _| |_ | |_ _ _ _ _| |_ _| _ _ _| | | | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ | _|_|_ _|_ | | _| |_ _ | |_ _ |_ _ _ _ _|_ _ |_ |_ _ | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _| |_ _| | _|_ _|_ | |_ _| _| _ _|_ _ _| | _ _ _| _| _|_ _|_ _ _ _ _| |_|_ _ _ _ | | _ |_ | _ _| | _ _ _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | |_ _ _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| _ _ _ _ |_ _ | _ _| |_ _ | _ _ _|_ | | |_| |_ | |_ _|_ | |_ |_ | _ _ _| | | _| | |_ |_ |_ _ _ | | _| _| |_ _ | | _| _ _|_ _ _ _| _ _| _|_ _ _ _ | |_ _| _ _| _|_ | | | |_ _| | | | | | | _| _ _|_ | _ _ _ _| | | |_ _| | _| _| _ _|_ | |_| |_ _ | |_ | | |_ _ |_ _ _| |_ _|_ _ _ _ _| | | | _|_ _|_ _ |_ _ |_ |_ | _ _ _| | |_ | _| _ _| | | | |_ _| _| |_ _ _|_ | | |_ _ _| _ _ _ _|_ _|_ _|_ _ _| |_ _ | |_ _| _ _| |_ _ _| _| _| | |_ | | _|_| | | _| | | |_ _|_ | | _ _ | | | |_|_ |_| |_ _ _| _ |_ | _| | |_ _| | | |_ |_ _ | _ _ _ | |_|_ _ |_ _ _| |_ | _ _| | |_| _ _ _ _|_| | _ | +|_ | | | | |_|_ _ | |_|_ _|_ | _ _| | |_| | _ | |_ _ _ _ _| |_ _|_ _ _ _| | | | | | |_ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ _ _ _| _ _ |_ _ | _ _| | | | |_ _ | |_ _ | _ _|_ _| |_ |_ _| | |_ | | |_ _ _ _ _ _ |_ | | | _ _|_| |_| | |_ _ | _| _ |_ |_| | | | |_ _| _ | | _| |_ _ |_ _ _| |_| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| | | _ _ _ _|_ |_ _ _ _| _| _ _|_ | | _ _ | | _|_ _ _ _| _ _| |_ | | | _| | _ _| _ _ | | _ _ _ _|_ _ | |_ _ _| |_ | |_ _ _| | |_ _| | _ _| |_ _| _ _| |_ _ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_|_ | | |_ _ | | | |_ _ _|_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| |_ _ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_| _ _ _ | _ |_ _ _ | _ _|_| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | | _| | _ _ _| | |_ |_ _ | _|_ |_ _| _ _ | |_ _ | _ _| | | _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _| _|_ _| | _ _| | |_| _ _| | |_ | _ _| | _ _ _| | |_ _ | _ |_ _ _ _| | _|_ _ _ | |_ _|_ _| |_ | |_ | _|_ | | _| | | |_ _|_ | _|_ _ _ | | |_ _| | _ _| | | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _ _| _ _| | | | _| |_ _ | _ _|_ _|_ | | _| |_ _ _|_ _ _ | |_ | | | _|_ _|_ _| |_ _| _ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ |_ _ _ | | | |_ _ | | _| |_ _ | |_ _ _ _ _| | |_ | _| |_ _ _| | |_ _ _|_ _ _ _ _| | _ _| |_ _| _ _| | _| |_ _ _ _ _|_ | | _| | |_ |_| |_ _|_ _ |_ _ _ | | _ _ |_ | |_ _| | |_ _ |_ |_ _ | _| | _|_ _ _ _|_ _ _|_ _ _| |_| _|_ _|_|_ |_ _|_ _ |_ _ _ _|_ _|_ _ _ | | | _ _ _ _ | |_ _| _| _ _|_| |_ _ | | | _ _| _ _ _| _| _|_ | | |_ _ |_ _|_ _ _| |_ _|_ _ _ _ _| | | | |_ _|_ _|_ _ |_ _ | _ _ _| |_ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| | _| _ |_ |_| |_ |_ |_ | _ | |_ |_| +| _| |_ _| |_ _ _| | |_ _ | | |_ | | | _|_ | |_ _ _ _ _| _ _ | | |_ _|_| |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| _| | | _ _ _| _| | |_| |_ | | |_ _|_ _ |_ _|_| _ _ _|_| _ _ |_ _ | _ _| | | _| |_ _ | _ |_| |_ _ _| |_| | _| _ |_ |_ _ _| _| | _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _| _ _| | |_ | _|_|_ | | | _ _| _ _ | | |_ | |_| | | _ _ _ |_ |_ _ _| |_ | | | _| |_ _ _ _ _| | |_| _ |_|_ _| _ _ |_ _ | _ _| | | |_| _| _|_ _ _ _| _ _|_|_ _ _| _ | _| _ _| _ |_ |_| _ | _| _ _|_ _ _ _| _ _| _ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _ _| |_ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | |_ _ | |_ _ _ _ |_| |_| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _| | _| |_ _ | _| | |_ _| _| | | |_ _|_ | _| |_ _ | | |_ _ _ | |_ | | | | _ _| _|_ _| | |_ | _|_| _ _ _ _| _| |_ |_ _ |_| _ _| | _ _ _ |_ _|_ _ | | _ _|_ _ _|_ _ |_ _|_|_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_|_ |_ | | |_ _| | _ | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | |_ _ _ |_ | | | | | | | | _| | | _ _| | |_ |_ _ | _ _ |_ _|_ | | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ _ _| _ _| |_ _| |_ _|_ _ |_ _| |_ _ _| | | _ |_ _ |_ | |_ _| | |_ _ _ _|_| _ _ |_ _ | _ _| | _ | | _ _ _ |_| |_ _ _ _ | |_ _|_ | | |_ _ _ _| _ _ |_ _ | | |_ _| | | _|_ _|_ _ _ _|_ |_ | |_ _ _| | _ _|_ _ | | _ _ _ _ | |_|_ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ |_ _ | | _| |_ _ | |_ | | _ _ _| | |_| | _|_ _ | |_ | | _ _|_ |_ |_ _ _ | | | _ _ | _ | | |_| |_ | _ _ _|_ _ | |_ _ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _| _| _ _|_ | | | _| _| _|_|_ |_ _ |_ | +| | |_ | _| |_ | _|_ _ _| |_| | | | _| | | | _ |_ _|_ _ | _ _| | _|_ _| _| _ |_ |_| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | _| |_ _ | _ |_ _|_ | | _| |_ _ | |_ _ _ |_ | _ _ _| | | |_| |_ | | _|_ | _| _| |_ _ _ _| | |_ | |_| _| _ _|_ | |_ | _| |_ _ _ _ _| | | _|_|_ | | | _ _| | |_ | | _| | | | _ _| | |_ |_|_ _ _ _ _| |_ _| | _| | |_ _| | _|_ _ _| | _ _ | |_ _| _| _ _|_ _ _| | | | |_ | _ _ |_| | _| _| _ _ _| | | |_| |_ | | |_|_ |_ | | _ _ _ | | | _ _ |_ _| | | _| _| _ _|_ | | _| | _|_ | _ _ | | |_ _ | | |_ | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ _|_| |_ _| | |_ _ _| _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _ | |_ _ | | | _| _| _ _|_ |_ _ | _| | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_ | |_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _| | | | _| |_ _ |_ _ _| |_ _|_ _ _ _ _| | _ _ _| _|_ _|_ _ |_ _ _|_ |_ _| | |_ _ _| _ _ _ _ _|_ _ _| _ | _ _| |_| | _|_ _ _ _| | | | |_ | | _| _ _ |_ _| |_ _| _ _ | |_ _ _ |_ | | _ _ | _ _ _ _| _| | | _ _ |_ _ |_ _ | |_ _ |_ _| | |_ _ | _|_|_ | | | _ _|_ _ | | | | |_ | _ _|_ _ _ _| |_| | |_| |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _| | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ | _ | | | _ |_ _ | | | |_| | | |_ _ |_ | |_ _ | |_ _ _ | _ _ _|_ | | |_| |_ | | | |_ _|_| _ |_ |_ | |_ _ | | | | | | _ _ _ _ _ _ _| _ _| | _| | | |_ | _ _ _ _ | |_ _ |_ | _ _| | _ _ |_|_ _| _ | | _| |_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ _| | |_ | _| | | | _ _| _ _ _| _| | | _| |_| _ | | _ _ | |_ _| |_ _| | |_ _|_ _|_ _ | | |_ |_ _ _ _| |_ _ _| | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _| |_ _ _ _ _|_| | | _| |_ | _ _| _ _| | +|_ | _|_ _ | _|_ _ _ | | _| | |_ | | | |_ | | _ _ _| | | |_ _ _ _ _| _| _ _|_ | |_| _| | | |_ _|_ | |_ _ _ | | | |_ _| |_|_ _ | _| | | | _ _| | |_ |_ _ | _|_ |_ |_ _ _|_ _ | _|_|_ _|_ | | _| |_ _ |_| | _| _| | _ _| | | _| | _| |_ _ _ _ _| |_ _ _| |_ _ _ _ | _| |_ _ _ _ _| |_ _|_ _| | |_ | | | | _|_| _| |_ | | | | | _ | | _ | _|_ | |_ _ _ _ _|_ | _ _ _| | |_ | _ _| | _ _ _|_| |_ | |_ _| _| | _| |_ _|_ _ | |_|_ _|_ | | _| |_ _ | |_ _| | | _| | | |_ _| _| | _ _|_| | | _| |_ _ _ _ _|_| | _| | |_ _|_ _ |_|_ _|_ _ |_|_ _ | |_ _|_ _ |_ _| _|_|_ | | | _ _| _ _ _ | | | _|_ | | |_ _ | | | _| _| |_ |_ | _|_|_ | | | _ _| _ _ | | | _| | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | | |_| _ _| | _ _| | | | | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _ _|_| |_| | |_ _ _ |_ | | _ _ | | _|_| | | | | _ |_ _ | | | |_|_ _ _ _| _ _ _ _ | |_ _| |_| _ _| | _|_ _ _ | |_|_ _ _|_| | | | | | _| _| | _ _ | _| | _| |_ _ | _| | |_ _| | |_ _ _ _ _ _| _| |_ _| | _ _| | | _|_ _ | _ _ |_ _ _ |_ _ _ _ _| |_ _| _ |_ _| |_ | | | | | |_ _ _| _ |_ | |_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ _ _ | |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _ _ _| | | | | |_ _| _ _| | |_ _| |_ | |_ _ _| | | | _| |_ _ |_|_ _ | _|_ _|_ | | _| |_ _ _ _ |_ |_ _| _|_ _| | | |_| |_ _|_| |_| _ _ _ | | | _ _| _ _| | | | | |_ _ | | _| |_ _ | _ _|_ | _| | |_ _ _ |_ _| | |_ _ _| | |_|_ | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _| _ |_ _| | | _|_| _|_ |_ | _| _ _ _| | _|_ _ _|_ | | |_ _ _|_ _ _ _ _|_ _ _ _|_ _ _ _ _ | |_ _| | _|_ |_ _ |_ | _ _| | | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ | |_ |_ _ | _| _|_ _ _| | _| |_ | | | +| _| | | _| | _ _|_ _| |_ |_|_ | | |_ | _| |_ |_ _| _| |_|_ | _ | _| |_ _ _ _ _| |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _|_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_ _ _| | | _ _| | |_ |_ _ | _ _| | | | _| | |_ | | _|_ | |_ | _ | | | | | _|_ |_ _| _| | _ _ _ _ |_ |_ |_ _ _| |_| _ |_ _| | | |_ _| | | _| | | |_ | | |_ _|_ _ _| _ _ |_ _ | _ _| | | _|_ | _|_| _|_| _ _ _| _| _ |_ _ | | _|_ _| | |_ _ _| | |_ |_ _ | _ _ _ _|_| |_ _ _| |_ |_ _ _ _| _ _| | |_ _ | _ | | |_ _| |_ _| _| _ _ _ |_ _ | | | _ | |_ _ |_ _ _ _ _| |_ _| _| |_ | _ _| |_ | _ _| |_ _| _ _| _|_ | | _ _ _ _ _|_ _ _ _ _| |_ _|_ _| | | | | | | _| | | _| | | |_ _|_ |_ | | _ _| | |_ _| |_ | |_ _ _ _| |_| | | | |_ _ _ _ | _| | | |_ | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | _| _ _ _ | _| _|_ _ _ _| _ _| _ _|_ | | _| | | _|_ _ _ _ _ |_|_ _|_ | |_ _|_ _ _| | | |_ _| _| _ _| | |_| | | _ _ |_ _ _| _ | | _| |_ _ |_ | |_ | | _ _ _|_ _|_ _ | | _| _ _|_ _ |_ |_ _| |_ _| |_ _ _| | | | _ _|_ _ |_| |_ _ _ _ | |_ _ | _ _|_ | _ _| _| | _ _|_| |_ _ | _| _ _ |_ _ |_ |_ | _|_ _| |_| |_ _ | _| _| _ _|_ | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_| _ |_ _|_ _ _| | | _|_|_ | | | _ _| _ _ | |_| | | | _ |_ | |_|_ _ | | | _ _|_ | _ _ _| |_ | _ _| | |_| _|_| |_|_ _| | |_ _ _| | |_ |_ _ | _ _ _|_ _| _| | _| _| | | _| _ |_ |_ | _ _ |_ _|_ | _| _ _| |_ _| | _| | |_ _ _| _| |_| | _|_ |_ _|_ | | | _ _| _ _| |_ _ _ _ _| | _ _|_ | _|_|_ | | | _ _| _ _ _ _ | | | | | _| | | _ | | | _| | | | | | |_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _| |_ _ |_ _ _ _ _| | _|_ | _|_ | _| | | |_ _|_ |_ _| _ _ | | |_ _| |_|_ | | _ _| | | | _|_ | | _| | _ _ _| | | +|_ |_ _| |_ |_ _|_ _ _ _ _ _ _|_ _ _ _ _|_ |_ _|_ _ _|_ | _ _ _| | _| | |_ | _ | _| _ | | | _ _ | |_ _|_| _| | | _ |_ _ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _| _| | _| |_ _ _ |_ |_| |_ |_ _ _|_ |_ _ _|_| | | | _ _| |_ _ _| | |_ | | _| _ |_ |_ |_ _ _ _ _|_|_ _ |_ _|_ _ _| | | _| |_ | | _ _ _|_ | | |_| |_ | | |_ _| |_ _ |_ _ _ _ _| _| | | | | |_ _|_| |_| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _| _ |_ |_ |_| | | | _ _|_ | | | _|_ _| | | | _ _ _| | | _| | | _ _| | | |_| | | |_ _ | _ _| _ _| _ | _| |_ _ _| |_ |_ _ _ _| _ _| | _| _ | |_ _| _ _ | _ | _ _ _ |_ _ _| |_ _ _| |_| _| |_ _ _| |_ _|_ _ _ _ _| _| | |_ _ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ | |_ | _ | | | | _| |_ _|_ _ _|_ _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| | | | |_ _|_ | |_ _ _ _ | | |_ _ |_ |_| _| | |_ _ _ |_| |_| | _|_ _ _ _ |_ | | |_ _ | | | _ _| _ _ _|_| |_ _ _ |_ _| | |_ _ _| _| | _| | | |_|_ | _ | |_ _| _|_ _| _ _ |_ _ | _ _| | _ _| |_ _ _| | | |_| | | _| |_ | _| |_ _ |_| | _ _| |_ | |_ _|_ | | |_ _ | _| _| _ _| _ _|_ _ _| | _| _ |_ |_ _ |_ | _| |_ _ _ _ _| | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _ _ _ _|_ | _ | | |_ _ _ _ _| |_ _| _ | | |_ | | |_ _|_ |_ _ _|_ _ _| | |_|_ | _ |_| _ |_ |_| |_ |_ | | | |_ _ | | | _|_ _ _|_ | |_|_ | | _ _|_| |_| _ _ _| | _| | | _| _| _| _ _|_ | |_| |_| | |_ _| | |_ _ _ _| | _| |_ _ | | _|_ |_ _ _ _| |_| |_ _ _| _ _ _|_ _ _| |_ _ _| | _ _|_ _ _ _ _| |_ _| _ _ _ _| _ | | _| |_ | | _|_ _| |_| |_ _ _|_ _ | |_ _ _ _| | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _|_ | | _ | | _ _| |_ _| |_ _ |_|_ _ _| |_ _|_ _ _ _ _| _ _|_| |_|_ _|_ _ |_|_ _ _ _|_| |_ | |_ _ _ _| |_ _|_ _ _| _ _ _|_| +| |_ | | _| _| | | _ _ _ _ | |_ _ | _ _ |_ _ | _ _| | | _| |_ | |_ _| | | | | |_ _ _|_ _| _| |_| |_ _ _ | | | |_|_ | _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | |_ |_ _ | _| _| _|_ _| _ _ |_ _ | _ _| | _| | |_ |_ _ _| _ _| _ _| |_| _| _ _|_ | |_ _ | _ _ _ _ | | | _|_| _| | |_| |_ _ | _ _|_ _|_ | | _| |_ _| | |_ |_ _ |_| _ _ _|_ | | |_ _|_ | _ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _ _|_ |_|_ _ _| | |_| | _| _|_| |_ | _ _|_| |_ _ _ | | | |_| |_ | _| | _ _| _| _| |_ _ _ |_ _ _ _ _|_ _ _ _| _| |_| _ |_ |_ | | | | |_ _ _ _| _|_ _ _ _| |_ | |_ _| |_ |_ _ | _| _ |_ |_ | | _ | | _ _ | _ _| | _|_ _ |_ _ _ |_ _ | | |_ _ _| |_ | _| _| | | | |_ _| |_ _ _ | _ | _| _ _| | | | | | | | _ _| _| | | | |_ _ _ _ _ | | |_ _|_ _ _ _ _| | |_ |_ _|_ _|_ _ |_|_ |_| _| _|_ |_ | | | _|_ _ |_ _|_ _ _ _ _ _ _ |_| | | | | | | |_ | _| _ _ _ _|_ |_ | | _ _| _ _ | | | | _|_|_ _ | | |_ |_ _|_ _ _ | _ _ _|_ | | |_| |_ | | _ |_ _ | | | | | _ _| | | | _| | |_|_ _ _| | | _| _ _ _| | | | _| _ _| |_ _| _ _|_ _ _| | | _ | | _ _ _ _| _| _ _|_ | _|_ _| |_ | _ _ _| | _| | | |_ _|_ | _ _ _ _ | | |_|_ |_ _ | | _|_ | | |_ _ | _ _ _ _| | | |_ _| |_ _ _| |_ | _ _| _ _ _|_ | |_ | | |_| _| _ _|_ | | | _| _| | |_ _| _ _| |_|_ _ _ | | |_ | _ _|_ | | |_ |_ _ | _|_ _ | | | _| _| |_ _ _ _ _| | _| _ _|_ |_| | | |_ _ _ _ | | | | |_ _ _ | | | |_| _ _ _ _|_ |_ |_ _ | | _ _ _ _|_ |_ |_ _| |_ _ | _ | _ _ _ _ _ _ _| _|_ _| |_| _| _| _| | _ _ _| _ _ |_ _| | _ _ | |_ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _| |_ | |_| | | | |_ | | |_ _ _ | | _ _ | _| _ _ _ _|_ _ _ _ |_ _ | | _ _ _ _|_ |_ _| | |_ _ _ | |_ _ _ _ | +|_ _ _| | |_ |_|_ _ _|_ _| |_ _ | | _| |_ _ | _|_ | | |_| |_ | | | |_ _| _| |_ | _|_ _|_ _ _ _ _ _ _ _ | |_ _ _ _ _|_|_ _ _ _ _| | _ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_ | | _ _|_| _| | _ _ _|_ | | |_| |_ | | | _|_ | | |_ | _|_ _ | _| |_ _ _ _ _| | | |_ _ | | _| |_ _| |_ _ _| _| |_ | _ _| | _ _ _| | |_ |_ _ | |_ _ _ _ _ |_ |_ _ | _ | |_ _ | | | _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ _ _ _ _| | _ _| _ _ _| _| _ _|_ _| _ |_ |_ _ _|_|_ _ _ | | | _|_ | |_ _ _| _| | _| | _ _ _ _ | |_ _| |_| _| _ _|_ |_ _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ | _ _|_ _ _| _ _ _| _| _ _|_ | |_ _| | |_ _| | |_ _ _ _|_ _ |_ _ _ _| | _|_ | |_ _| _| _ _| _ _|_| _| _| | _| | | _ | |_ _| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _| | _ _| |_ _ _ | _ _ _| |_ |_ | | _ |_ _ | | _| |_ _ |_ |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| | | | |_| |_ | | | |_ _ _| |_ | |_ _| _|_ | |_ _| | | |_ _| _ _ _| |_ _ _| _ _ _ |_|_ _ | _ _|_ _|_ | | _| |_ _| | |_ _|_ _| |_ _ | | _|_ |_ |_| _ _ _ _| | | |_ |_ _ _| | | | |_ _ _ _| _ _| _ _ _ | | | _| | |_ _ | | _| |_ _ _ _ _|_ _ |_ | |_ _|_| _ _ _|_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ _ _| |_ _|_ | | |_ | | | _ _ _ _ _| |_ _| _| _ |_ |_ _ _ _ _| _ _| | |_ | | | |_| | _| |_ _ _ _ _|_| | | _| _ _| _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _| |_ _ _| | |_ _ _ _ | |_ _| _ |_| _| | |_| _ | _| | |_ _| |_ | | |_ _|_ _ _ _ _| |_ | |_ _ |_ |_ _ _| |_ | | _ _|_ |_ _| _| | _ _ _ _ | |_| _ |_ |_ | |_| _|_ | _ _ _| | | |_|_ _| |_ _ _ |_ _| | _| | | _|_|_ | | | _ _|_ _ _ _| | | |_ |_ _ | _|_ _ _| | | |_ |_ _|_|_ _ |_ |_|_ _| | |_|_ _ _ _ _| |_ | | |_ | | |_ _ _| |_ | _| | |_| _ |_ _|_ _ | | | +| _ _ _| _|_ _ _ _ | |_ _| | |_ _ _|_ | | | _ |_ _|_ | | _| |_|_ | _|_ _ |_ _ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | |_ | | | _| | | |_ _|_ | |_ _| _ | | |_ _| | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| |_ _ _ _| | _ _ _| _|_|_ _ | _ |_ _|_ | | _| |_|_ _| |_ | |_ | |_ | _ | |_ _| _| | |_ _ | | |_ _| _| |_ | | | | | | | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _ |_ _| | |_|_ | _| | | | | | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _ | _ _| |_ _| | | _ _ _| | _ _ |_| _| _ _|_ |_| _ _ | |_ _|_|_ | | _ _| | |_ _| |_ _ | | _| |_ _ | | _| |_ _ _ _ _|_ |_ _ | _ |_ _ |_ |_ _ _| |_ |_| | _| | |_ | _| |_ _ _ _ _|_ _ | | _ _| | |_ _ _ _ | |_ _ |_ _ _| _ |_ | _ _| | _| | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | _| | _| _| _| |_ _ _ _ _|_ | |_ _| | | _ _| | | | | _|_ _| | | | |_ _| _ | | _| |_ _ | _|_ |_ | | | | |_ _| _| _ _|_ _ _| | _ _ _ _ _| _ _| |_ | |_ _| |_| _ _ _| | |_ _ _| | _ _ _| | |_ |_ _ | _|_ | _ |_ |_ | |_ _ _ _| | | _| _ _| | | | _ _| | |_ _ |_ | | | |_ _ | |_ | |_| |_ _|_ _| | | |_ | _ _ _ |_| _| _| _ _ |_ _ _ _ _| | _ _ | | _ _| |_ _| | |_ |_ _ | _ _| | _| | | _| | |_| | _ | | _| _| _| _ _|_ | _| _ _| | _| _| _| |_|_ | | |_ |_ _ | _| _|_ _ | | | | | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| _|_ _|_ _| _| _ _ _ _|_ _ _ _|_ _|_ _ _ | | | _| _|_ |_ | |_| |_ _ | |_|_ _|_ | _ _ | | _ _|_ _ _| | | |_ _| _| _ _|_ _ _|_ _| _ _ _ _ | | | |_ _ | | _| |_| _| _ _|_ | |_|_ | | |_|_ _ | |_|_ _|_ | _ _| | | |_ | _|_ |_ |_ _ _ _ _| |_ _| _ _| _ _ _| | |_| _| |_ _| _| | |_ | _ | _ |_ | | _ | | |_ _ _ _ | | _ _|_ _ _| |_ _ _ _| |_| _| _ _|_ _ _| _ _|_ |_ |_ _ _ _|_ _| | | +| _ _ |_| _ _| _| |_ _ | _| _ _ | | |_ _| | | | | |_ |_ _ | _ _ _ |_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | | |_ _ _| |_ _|_ _ _ _ _| | _ _| |_ _|_ _|_ _ |_ _| _| | | |_ _|_ | | _ |_ | | |_|_ _ _| | _ _ _|_ _ | _ _ _ _| | |_ _ _ _| | |_ |_ _ | _ _ |_| | | | |_ _ _| | |_ | |_ _ _|_ | _|_ _ _|_ _ _ _ _ _|_| _|_ _| | | _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| | _|_|_ _ _ _ | _|_| |_| | | _| | | |_ _|_ | | |_ _ _ _| | |_ _ _ _| | | _ _ _| | _ _| | |_ _ | |_ _ | | _| |_ _ _ _ _| _| | _| |_ _ | |_| | |_| _| _| |_ | _| | _| | |_ _ _| _| | | |_ _ |_ _ | | | |_ |_ | |_ _| _| _ _|_ _ _| _|_ | | |_|_ _ | |_ | | _ _ _| | | _ _| | | _| |_ _ |_ |_ _ _ _| _| _|_ | _|_ _|_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| _| | | _|_ _ _| _ |_ _ _ _ | |_ _ _ |_ _| |_| _ _| _ _|_ _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| _| | _|_ | _ _| | | _ _ _ _| _| _ _| | _ |_ |_| | | | |_ |_ _ | _| | | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ _|_ | | | _ _ _ _ _|_ _ _| | _ _| |_| |_| _ _|_ _| |_ _ _|_ |_ _|_ _ |_|_ |_|_ |_ _ | _| _| |_ | |_ |_ _ |_ _ _| _| _ _ _|_ _ | | | |_ _| | |_ _ _ _ _|_ _ |_ _| | | _ _| | | _ _| | | | |_ _ _|_ | | | | | |_ _ _| | _| |_ _ _ _ _| | _| | | |_ _| _|_ _ | _|_ _ | | _ _| | | | _|_ | | |_ _| |_| _| | | |_ _|_ | _|_ | | | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| |_ _ |_ | |_ _|_ _| _|_|_ _ | _ _ _| | |_| | _ |_ | |_| |_ | _ _| | _ | _ _ _| _| _ _| | |_ _| | |_ _ | _| |_ _ _ _ _|_ _ | _| |_ _ _| | |_ _ | | |_ | | _|_ _ _|_ _ |_ _ | | _ _ |_ _ _ _| | | _ _ _| |_ _| _| |_ _ _|_ _ | |_| _ _|_ | |_ _ _ _|_ _ _|_ |_ | | _|_| | _ _ _|_ | | _ _| _ _| | _ _ _ _ _ _ | | _| | _|_ _ _| _| | +|_ _ | | _|_ |_ _ _| _ _| | | | |_ |_ | | | _|_| | |_|_ | | _ _|_| |_ _ _ _|_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| | _ _ _ _| | _ _ | | _ _ _| | _| _ _ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ | |_ _ _ | | |_ _| | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ _| _|_ | | _ _| _| | _ _ |_ _| _ | | _ _ _ _ | |_ _ |_ _| |_| _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | |_ _ _ | |_ _|_ _ _ _ _| |_ _ _| |_ _|_ _ _ _ _| | | _| _ |_ _|_ _ |_ _ _|_ _ | | | | | | _| | |_ _| _| | |_ _ _ | _ _| |_ _ _| | _ _|_ _ _|_ | | _| _| _|_ | | | _| | _ _ _ | | |_ | | | _| _ _|_ _| | |_ |_ _ |_ | _ _| | _ _ _| _ |_ _| _ _| |_ | |_ _| |_| |_ _ _ _| |_ | | | |_|_ _ _| _| | _| _ _|_ |_ _| |_ _ |_ _ _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| |_ | |_ | _ _ _ _| |_ | | _| |_ _ |_ _ _ |_ |_ | _| _ _ _ _|_ |_ _| _|_|_ | | | _ _|_ _ _ _ _| | | |_ _| _| _| |_ | |_ | _|_ _| _ _ |_ _ | _ _| | | _ _|_ | |_| |_ _| _ _| | |_ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ _| | |_ _ _ _ _ _| | | | |_ |_ | | _ _ _ _|_ |_ |_ _ _ _ |_ _ | | _ _ _ _ _| |_ _| _| _ _| _ _| _ _ _|_ _ _| | _| _| |_| |_ _ _|_|_ _ _ _ | |_ _ | _|_ _| | _ _| | |_ | | |_ _|_ _ _ _ _ _ _| | | |_ _ _ | | |_ _ _ _| |_ _ _| _|_ _ _ _ _ _ _ |_ _ |_ _ _|_| |_ | |_ _ _ _| |_ _ _ _|_ |_ _ _| |_ _|_ _ _ _ _|_| |_| |_ |_ _|_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _|_ _| |_| _ _ _| _ _ |_ _ | _ _| |_ _ _| | | |_ _ | _|_ | _|_ | |_ _| _ |_ |_ | _| _ _| _|_ _ | | |_ | | _ _ _| | _| |_ | _|_ _ _| |_| | | | _| |_ _ |_ | |_ _ |_ _| |_ _ | | | | | _| _ |_ |_ _| | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| _|_ _ _ _ _|_ _| _ _ _ _| |_ _ |_ | _|_ _ _ _| | | |_ | |_ _ |_ |_ _ | +| |_| _| | |_ | _ _ _ _| | | _| _|_ _| |_| |_ _ _ |_ | _ _|_ | | |_ _ | _ _ _|_ | _|_ | _|_|_ | | | _ _|_ _ |_ | | | _ _| | _ _ |_ _| | |_ _ _ _ _ _| | _| _| _| |_ |_ _ _ | | _ _ | | | | | | _ _|_ _ | |_ _ | | _ _| | |_ _ _ _ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _|_ _ _| _|_ _ _|_ | | |_ | |_| _ | | _| |_ _ | _ |_ _ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | | _| |_ _|_ _ | |_ _| | | _ | | _ _ |_ _ _ _|_ _ _| _| _ |_ _ | |_ _ _ _| | | | | | |_ | _|_ _ _ _ | |_ _|_ _ | |_ _ _|_ _ _ _ _ | _ | _ | | _| |_ | | _ |_ _| | _ _|_ _ | | _| _| | | |_ _ | _ _ _|_ | _ | | _|_ | _|_ |_ _ |_ |_ _ |_| | _ _| _| | |_ | | |_ _ | | _| | | | _ | _ | | | |_ |_ _| | |_ | | _|_ _ |_| _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | | _ _| | | | | _ _ | | | _|_ _ _| | | _ | | _ | | | |_ _ _| |_ |_ |_ _ _ _ _| |_ _| _ | _ _ _ | | _ _ _| _|_ _ _ _|_ _ _| | _ _ _| | | |_| |_ | | |_ _ _ _ _|_ _| _ _| _| _|_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _ _|_ |_ _| _ _ _ |_ _|_ _|_ _ _ _ _| |_ _ _| |_ |_| _ _ _| _ _ _| |_ _ _| _ |_ |_ _ _| _|_ _ _ _|_ |_ _ _ _ _ _|_ _|_ _ _|_ _ | | _| _ _ | _| |_ _ | |_ _ |_ _|_ | | | _| | |_ _ _ _ _ _| |_ _| _ _|_ |_ | |_ _ _ _ _|_ _ | _| _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _| _ _|_ _ _ | |_ _ |_ _ | |_ _ _ _ _|_ | | | |_ | |_ _ |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| |_ |_| | _| _ _ _| _| | |_| |_ | | | _ _| | _|_ | | |_ _| |_ _ |_|_ _ _| |_ | | _| | _|_ | | _ _ _| |_ | |_ _| |_| |_ _ | |_ _ | _|_ _ _ | | _| | |_ |_ _ |_ | | _ _ |_ | _ _ _| |_ _|_ _| | |_| _| _ _|_ | _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _ | |_ _ |_ _ _ | _| |_ |_ _ _| _ _| |_ | | |_ _ | | _| _| _| +| |_ |_| _| |_ _|_ _ _| _ _ |_ _| _| _ |_ |_ |_ |_ _| | _ _| |_ _| _ _| _ _ _| |_ |_ _|_ _ _ _ |_ _ _| | _| |_ _ | | | | |_|_ _ | | _|_|_ _ _ _ | |_ _ _|_ | |_ _ _ | _ |_ _| | |_ _|_ _ _| | |_ _ _ _|_ _ _| | | |_ _| _| | | _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ | _ _ _| _ | |_ _ _|_| _|_ |_ _| | |_ _ _| _| |_ |_ _ | | | _| | | |_ _|_ | | _ |_ | | |_ _| |_|_ _| _| |_ |_ _ |_ _| | _ _|_ _| | |_ _ _| |_ |_| _ _ | |_ _ _|_ | _ _| |_ _ | _ _|_| |_| | |_ _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ | | | | | |_ _ _ _| _| |_ _| | |_ _ _ _ _|_ _| _| | | |_ _ _ _|_ | _| _|_ _| | |_ _| |_ _ |_ _ |_ _ _|_ |_ |_ _ _| _| _| | | _|_ _| |_ _ _| |_ | |_ _| | |_ _ _|_ _ _|_ _ _ _| | | _|_ _|_ _ |_ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | |_ _ | |_ _| |_| _| _| | |_| _ _ _ _| | |_ | |_| | _| |_ _| _| _ _|_ _ _| | | _ _ | _ _ | _|_ |_ _ _| |_ _ |_ | _ _ _ _ | | |_ _ | _| |_ _|_ | | _| |_ _ |_ _ |_ | | |_ _|_ _ _ | | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_ _ _| | _ _ _| | _ | _ _ _| |_ | | _ _ _|_ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _|_ _ _|_ | |_ _ _| | | |_ |_ _ _| | |_| |_ | |_ | _| | | |_ _ | | |_ _ _ _| _| | _| _ _ _|_ _| |_ _ | | _| |_ _ |_ _ _ _ _| |_ | _| | | _ _|_ _|_ _ |_ |_ _ _|_ | _ _| |_ _| _| _|_ _ | | |_ _ _ _| | _|_|_ | | | _ _| | _ _ | | | |_| _| |_ _ _ _|_ |_ _ | _ |_ _|_ | | _| |_ _ | _|_| |_ | | |_ | |_ |_ _ |_ _ | | _| |_ | | _ _ _| | _ _ _ _| _| | |_ | | | _ _| _| | _ _|_ _| |_ |_|_ | | _ _|_ _ _|_| |_ _| | | | _ _|_ _ | _| | _| |_ _ _ _ _|_ |_ _ | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | | _| |_ _ |_ | _| _|_ _ _ _|_ _ _ | |_ | | | | | | | | |_| | _| | +| |_ _ _| |_ _ _ | |_ _ |_| | | _| _ _|_ |_| | | |_ | |_ _ _ _| _ _| | _| | | _ _|_ _ _ | _ _ _| |_ _ _| | _ _ _ _| |_| _|_ _ _ _ _|_ _| | _ _ | _| |_ _ | | |_|_ _ | _|_ |_| | | |_ _ _ _ | _|_ _ _| _ _ | | _ |_ _| | | _ _| | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | | |_ _ _ _| |_ _|_ _ | | | _| | _ _| _ _ _ | | _| | |_ _|_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ _ _| _| _ _ _ _| _ _ _| _ _ |_ _ | _ _| | |_ _ _| | _| |_ _ | | | | _ _| | _| _ |_ | |_ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| _ _ |_ _ | _ _| | |_ _| _ | _ _ _| _ _| |_ | _ _ _ _| _| _ _|_ |_ | | _|_ _ |_ |_ _ _ | | _ _ _| _| | |_ _ _ _ _| _ |_ | |_ _ _ _| _ | _ _ _ _ | |_|_ |_ _ _ _ _ _|_ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _| _ _ _ _ _|_ | _|_ _ _ _ _ _ _| | | _|_ _ _|_ |_ | _ _| | | _ _ _|_ |_ | |_ _| _ _| |_ _| _ |_ |_ _ | |_ _ | | _| |_ _ _| | |_ _ _| | |_ |_ _ | _ _| _|_ |_ _|_ _ _ _ _ _ _ _| | _| | | |_ _|_ | | _ |_ | | |_ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_ _ _ _ |_|_ _ | _|_ |_|_ _ | _| _| |_ _ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_| | | | |_| |_ _ | |_ | |_ |_ | |_ |_ _| _| | |_ _| _ _| | _ _ _| _| _|_ |_ |_ _ |_ _| | |_ _ _| _| | _ | | _ _|_ _ _|_ | |_ _|_ _ _ _ _ _ _ _ _ _| _ _ |_ _| | _ _| |_ | | _| | |_ |_ _ | _ _| |_ _ _ _ _| |_ _|_ _ _ _| | | _| | |_ _ _| |_ _ _ | |_ _| | | | | | | |_ |_ _ | |_ _ _| | _|_ | |_ _| | _|_ | _ _|_ |_ _ _| |_| _ _ _| _ _ _| _| _| | | _|_ _| |_| |_ |_ _|_ _ _ _ _ _ _|_ _ _ _ _|_ _ | | | |_ _ | |_ |_ | _ _ _|_ _ | |_ _ _ |_ | | |_| |_ _ _ _ | _|_|_ | | | _ _|_ _ |_| | | | _| | |_ _ _| _| | | | | _| _ _ _ _ | |_ _ _ | |_ _ | |_ _| | | _|_|_ _ | +| |_ | | _ _ |_ _|_ _ |_ _ | |_ | |_ _ _ _ _| _|_ _| _|_| | _ | | | |_ _ _| |_ _ _| _ _ |_ _ | _ _| | _ _ _| _| _ |_ |_| _ _ _ _ | |_|_ | | |_ _ _| | | |_ _| _ _ |_ | |_ | |_ _|_ _ _ _ _ _ _|_ _ | _ _ |_| |_ | | _ _| | | | | _ _| | _| | | |_ _|_ | | | _ _ | | |_|_ _| | |_ _ _ _| |_ _ _ _|_ _| _|_ _ _ _| | _ _| |_| | | | _| |_ _ | | | _ _ | | | | | | _ _|_ _ | |_ _ | |_ | |_ _| _ _ | | _ _ _|_ | | |_| |_ | | _| |_ _ _| | | |_ _| |_ | | |_ _| _| _ _|_ | _ _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| _ _ _| | | |_| |_ | | | | | | |_ _ | _|_ |_ |_ _ | _ _ _|_ _|_ | | | |_ _|_ _ _ |_ |_ | _|_ _| |_ _ | |_ _ _| _ _ |_| _| _ _|_ |_ _ _ |_ | |_ _ | | _| |_ _ |_ _ _| _ _ | _ _| | | |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _|_ | | _| | |_ | _|_ | _|_ |_ | | | _ _| | | _| _| _ _|_ | |_ _ _| | |_ _ _| | _| _|_|_ _ _ | |_|_ | | _ _|_| |_ _ |_ _ |_ _ _| _ | _|_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_|_ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _|_ _ _| _| |_ |_ | | |_ |_ |_ _| _ _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| | _|_| |_ _|_ | | |_ _| | | |_ | _| _ _|_ _ | _|_ | _ _| _ _| | _ _ _| | | |_ _| _ _|_ _ _| | _| _ | | |_ | |_| |_ _ | |_ | _ |_ _ _ | _ _ _|_ | | |_| |_ | | _| | | _| |_ _ _ | | | | | | _ _ _ | _ _ _ _ |_ _ _| |_ |_ _ _ _ |_ _|_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | _| _| _ _ | |_ | |_ _| | | _ |_ |_ _ | | | _ _ _| _| _|_ _ _ _ _| _| | _| _ _| | | _ _ _ _ | |_ _| | |_ _| _ _| | | | | | _ _| _|_ | | _ _| _| | _|_ |_ | | _|_ _ _ _ _| |_ _|_ _ _|_ _ | |_ | _| _ _| _ | |_ _ _|_ _| _ | | _| |_ _ | _|_ _ | |_ _ |_ |_ | _ _ _| +| | _| |_ _ | |_| | _ _ _ |_|_ |_ | _ _ _ | _ _ | |_ _|_ _| | |_ _| |_ _ _ | | _ _ _| | | |_| |_ | | _ _ |_| _| _ _|_ | _ | | _| |_ _ | | | |_| _ _|_| |_ | |_ _ _| _| |_ _| _ | _ _ _ _ | |_ _ _ _|_ _| | | | | _| | _| | | _ _|_ _ _| |_ _|_ _ _ _ _| |_|_ | _|_|_ _|_ _ |_ _ _| | _ _ _ _|_ | _ _ _ _ _| _ _ |_ _ | _ _| | _| |_ |_ _ _ _|_ _| |_|_ _| | |_ _|_ _ _| | |_ _ _ _|_ _ _| | | | | _ _| _ _| |_ _ | _|_ _|_ | | _| |_ _ | |_| _ _ _|_ |_ | | | | | _| | _| |_ _ _ _ _| | | _ _|_ _|_ | _|_|_ | | | _ _| _ | _| | |_ _|_ _ | _|_|_ _|_ | | _| |_ _| |_ |_ _| |_ _ _ _|_ |_ _|_ _ |_ | _| | |_ |_ _ _ | _| | _ _| _ | _| | | | _ _ _|_ | | _| |_ _ _ _ _| _ |_ _ _|_ _| | |_ _ _| | | | _| | | | | _| | _|_ |_| | _|_|_ | | | _ _|_ _ _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| |_ _ _ _|_ _ _|_ _ |_|_ | |_ _ _|_ | | | |_|_ | _| |_ _ _ _ _| _ _| | _| _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | |_ _ _| _|_ _ _ _| | _ _ | | | | | | _ _|_ _ | |_ _ | |_ _ _ _ | | _|_|_ | | | _ _| _ |_ | | | |_ | | | _ _|_ _ _ _ _|_ |_ _|_ _ _ _| _| _ _| | | | | | _| | _|_|_ | | | _ _|_ _ _ _ | | |_ |_ _ _| _ _|_ | | |_| _| _| | | _|_ _ _| _ _ |_ _| | | | |_ _ | |_ _ | _| | |_ | _| | | | | |_ _| |_| | | | _|_ _ _| _| _|_| | | | | _ | | |_|_ _ | _ _|_ _|_ | | _| |_ _ | | |_ _ _ _ |_ _| | | |_| | |_ _ | |_| _ | | _| _ |_ |_ |_ _ | |_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _| | | _ _| | _| | | _ _| | _| _ _|_ | _| | |_ _ | |_ _ _| _ _ |_| _| _|_ |_ _|_ _ _| |_ |_ _ | | _| |_ _ | _| _ _| _| | |_ | |_ | | | _ _| _| |_ _ _ _| _|_| |_ |_| | _| |_ _ _ _ | |_| | | _ _ _| |_ | | _ _ _ _ _| | | _ _ _ |_ _| | |_ _ _|_ | |_ | _ _|_| |_ _ _| _| |_ | +|_|_ | _ _ _|_ | |_ _ _| | | _ _| | |_ _ _ _|_ |_ |_ _ _ _| _ _ _ _ _ _|_ _ _ |_ _|_ _ | _|_|_ _|_ | | _| |_ _ | | _| |_ _ _ _ _|_ _| | |_ _ _| _| |_ |_ _ _|_ _ _ _ _ _ _| |_ _ _ | | | |_ _ _ | | |_ _ | | _| |_ _ | _ | _ _| | | | | |_ _| | | _ _ _| | _ _ | _| | | |_ _ _| |_ _ | | |_ _ _| |_| |_ _ | _ _ _| | | |_| |_ | | |_ |_| _ | _ | _ _| | |_ _ _ _ | _|_ _ _| | | | _ _| _|_|_ _| |_ | | _| | |_ | | | |_ |_ _ | |_ _ | _| |_ _ _| |_ | |_ _ _| | |_ _ _ _ _| |_ |_| _ _| | |_ _ _ _ _| |_ _| | _| | _|_ | | | _ _| | | _ | | |_ |_ _ | _ _| _| _|_ _ _ _| _ _| _ _ _ | _|_ _|_ _|_ _ _ _ _| _| | | _|_| | |_ _ _|_| _|_|_ _ _ _ | |_ _ _ | _ _ _ _ _|_ _ _ _ _ | | _| _ _ | | | | | |_| _| |_ _ _|_ _ |_ _ |_ _ _| |_ _ _ _ _| |_ _|_ _ _ _ | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| | _ _ _ _ | |_ _ |_| | | _| | |_ _| |_ _ _| |_ _ _ |_ | _ _ _| | _ _ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _|_ | |_ _ |_ _ |_ _| | |_ _|_ _ _| | |_ _ _ _|_ _ _| |_ _ |_ | |_ _ _ _ _| |_ _| _ _ |_ |_| | | | |_| |_ _ _ _| _ |_ | _ _ _| _ _ |_ _ | _ _| | _| | | |_ |_|_ _ _ _ _| |_ _| _ _ | _ _| | | _| _ _ _|_ _| | |_ |_ _ _ _| |_ | _ _ _| _| | _ _| | |_ _|_ _ |_ _ _ _| | | _| | _|_| _| | |_ _|_| | | |_|_ _ _|_ _ _| | _ _| _|_ _|_| |_| | | | | |_|_ _ _| | | _ _| | |_ |_ _ | _|_ |_ _ _ _ _ _| |_ | | | |_| |_ |_ _| | _| _| _ _|_ | |_ _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _|_ | _| |_ _|_ _ _ _| | | |_ _ _ _ _| | | | _| | | | _ _ _|_ | | _| |_ _|_ _ _ _ | _| | | _| | |_ _ _|_ | |_ | | |_ _ | _| |_ |_ _|_ _ _| _| _| _| _ _ _ _|_ _ _| _|_ _ _|_ _ _ | |_ _|_ _ _| _| _ |_ |_| | | | | _| |_ | | | _ _| _ | _| | _|_ | | |_ _ | | _| _| | +| _ _|_| _ _ |_ _ | _ _| | | | _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | | _ _ | | |_ |_ _ | |_ _ |_ | _ | _ _| _ | _ | | _| _ _ _ _ | |_ _ _ _ | |_ _| |_ _ | _| |_ _| | |_ _ _|_ | | | | |_| _ _|_| |_| | |_ | _|_ _|_ _ _ |_ _|_ | |_ _ _|_ _|_ |_ |_ _ _| |_ _ _| |_ _| _| _ _| _ _| | |_ _ | _|_|_ _|_ | | _| |_|_ |_ |_ | | | | |_|_ _ _ _| | _ _ _ _| | _ _ _|_ _|_ _|_ |_ _| _ _ _ _|_ |_| | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _| |_ _ _ _ _ |_ | _ _ _|_ _ _ _|_ _ _ _|_ | | _ _|_ _ _ _ _ _ _ _ | _| _| | _ _ _| |_ |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| | _ _ _ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ _ | | | _ _| | | | | |_ _ _| |_ _ _ | |_ _ _ _| _ | _ _ _ |_ _ | _| | _ _|_| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | |_ _ _ _ _| _ | | _| |_ _ |_ | | | | _|_ _| _|_ |_ _ |_ | _ |_ _ _|_ _ | | |_ _ _|_ _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | |_ | | | |_ _ _| |_ | |_ _ | | |_ _ _ _ | _|_ _ _| |_ | | _ _| |_|_ | | | _ |_ _ _ _ _| | _ _ _| |_| |_ _ | | _ _ _ _|_ | _| _ _ _|_ | | |_| |_ | |_ _ | |_ | | _ | _ _ |_ _ | | | |_ _ _| |_ |_ _ | _ _| | _|_ _|_ | |_| _ | |_ _ _ _| | |_ | |_ |_ |_ _ _ | _|_ _ _ _| | | |_ _|_ _ _ _|_ _|_ _ _ _ | | _ _| | _ _| |_ | _| _| | | |_ _ _ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | _| _ |_ | | |_ _|_ | | | | _ _| | _| |_ _ _ _ _| | |_| _ _| |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | |_ |_ _ | |_ _ | _ _ _ _ | | |_ _ | | |_|_ _ | _|_|_ _ _ _ | |_ _ _ _ |_ _ _ _ _ _ _ _| | _| | _| _ _ | | | _|_ _|_ _ |_|_ | | | | | _ _ _ _ _| _|_ _ _| | _ _ | | | _ _ _ | _|_| |_ | _| _| _ _|_ | |_| |_ _| |_ |_ |_| | |_ _| | _| | _|_ | | | _ _| |_ _| _ _| | |_ _ _| | | +| | _ _ _|_ | | |_| |_ | | | | | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| |_ |_ _|_ _| _|_ _| | |_ |_ _ | | _| |_ _ | _| |_ |_ _ | | | | _ _| _| _ _ | | | | |_ _| _ |_ | |_ |_|_ | _ | | _ _ | _|_ _ _ _ | |_ _ _ _ _ | | _ |_ | _ _| | | | _ _| | | _| | | | | | |_ |_ _ | _ _ | |_ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ |_ _ _| |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ _ _ _ _ | _ _|_ _ _| |_| _ |_ |_| _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | |_ _ _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _| |_ _| | |_ |_ | _ |_ _|_ _ | | | |_ _| _ | | _ _|_ _| | _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _ _ |_ _| | |_ _ _|_ | | _| | | | |_ _ | |_ _ |_| _| |_ _| _ | | _| | _ | | _| | | |_ _|_ | _|_ _ _ | | |_|_ _ _ _| |_|_ _ _|_ _| _ _ _ |_ _|_ _ _ _ _ _ _| _ _ _| _ _| |_ | |_ _ | |_ |_| | _| | _ | | | |_| _ |_ |_ | _| _ _| | _|_ |_ _ |_ _|_ _|_ | | _| |_ _ |_ |_ _| | | _| |_ _ _ _ _ _| | _| _ |_ |_ _ _ _|_ _ |_ _ _ _ _ _ _| _ _|_ _|_ _ _ _| _ _|_| | _| |_ _ _ _| |_ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| |_ | _|_ _ _ _|_ _ |_ _ _| | | |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _| _ _|_ |_ |_ | | | _ _| | _| |_ _ | _ _ _ _|_ | |_ | | _| | | |_ _|_ | _ _ |_ _ | | |_|_ _ _ _| |_ _ _| | | _|_ _ | | _ _|_ _ _| | | |_ _| | | |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _ | | | _ _| | | |_ _ |_ _ |_ _ | |_ | | |_ _ _| _ _ |_ _ | _ _| |_ _ |_ _| |_|_ _| _ |_ | _ _| | _| | _| |_ _ _ _ _|_ _ _ _ _|_ | _|_ | |_ _ _ _ _| | _ _ _| |_| _ _ _| _ _| | | | _ _| | +| |_ _ | _|_ _|_ | | _| |_ _| | | _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ _ _|_ | _ _ _| |_ _ _| | |_ _ _| _| |_ _ _ | |_ _ |_ _| | | | | | | | |_ |_ | | |_ _| _| _ _|_ | |_ | _|_ |_ |_ | _ _| _ _ | _| |_ _ | _ _ _|_ _ _| | _|_ | _|_| _| |_ | | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _|_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _|_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | |_|_ _ _ _ | |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ |_| | _ _ | _ _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ | | |_ _ | |_ |_ |_| | | |_ | |_ _| | | |_ _ |_ _| |_ _|_ _ _| _| _| _ _|_ | | _ _ | | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ | | | _ _| _ _ _ _| | | _|_ _| | |_ _| | _ _ _| _| | _ _ _ _|_ _|_ _| _| | | | | |_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| |_ _ _| _ _| | | | | | | | | | _| | _| | | |_ _| |_| _| _ _|_ |_| |_| _| _ |_ _| |_ _| | _| _| | |_ |_ _ | _|_ | _| |_ |_ _ _ | _ _ _ _| _| _ _|_ |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ |_ _ | _ _ _ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | _ _| _| _ _| | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _ _ _ _| |_ |_ _ _|_| |_ _ |_ | | |_ _| _ _ | | | _| |_ _ _| |_ _|_ _ _ _ _| |_ _ | |_ _|_ _ |_ _ |_ _ _ _|_ _ _ | | |_ _ _| _ _ |_ _ | _ _| | | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | |_ _ _|_| |_ |_ _ _ _ _| | | _|_ _| _ _ _|_ | | |_| |_ | | _ _ _ _| | _ _ _| |_ | | |_ | | _ _| |_ _ | _ _ | | _ _| _ _ _|_ | _| | |_| _ |_ |_ _ _ | | |_ _| |_| | _| _| +| _| | |_| _| | |_ |_ _ | _ _| _| | |_ _ | _|_|_ | | | _ _|_ _ _ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ | | | _| _ |_ |_ | _|_ _ _ _ | | |_ _| | | _ _| _ _|_| | | _| _|_ _| |_ |_| _| |_ _ _ _ _| | _|_ | _| | | | | | _ _| | |_ _ _|_ | |_ | _ _ _ _ |_ _| |_ _ |_ _| | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ |_|_ |_ _ _ _| |_ | | _| |_ _ _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| _ _ _| | _|_|_ | | | _ _| _ _ _ _ | | | |_ _| |_ _ _|_| | |_ |_| _| |_ _ | _|_|_ | | | _ _|_ _ _ _ _| | | |_ _| |_ _| _ _| _|_ |_ | _| |_ _ _|_ _ | _|_|_ | | | _ _| | | _ _| _| |_ _ _ _ _| |_ _ | |_|_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_| | |_ _| _ | | _ _ _ _ _|_ _ _ _ _|_| | |_| _ _ _| _| | _ _ _ _ | |_ _ _ |_ _| |_ | | _ _ | _ _ _ _| _| | | _ _ |_ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| | | |_| |_|_ _ _|_ _|_ | | _ _|_ _ _ _ | _| |_ _ _ _ _| _| _| | |_ _| | |_| _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _| |_ _ _ _ _ |_ _ | | _| |_ _ _ _ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | _ _|_| |_ _| |_ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | |_|_ | |_ _ _| | |_ _ _ _| _|_ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ | |_ _ _ _ | | _| | | |_ _ |_| _|_ _ |_ |_ _| | | |_ | |_ | | _ _ | |_ |_ _ |_ _|_| _ |_ _ | _| _| _ _ |_ _ _| | _ _ _| | | |_| |_ | | |_ _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | | _| _ |_ |_ _| | _ _| _| | |_ _ | _ _|_ _|_ | | _| |_ _| _ _ _|_ _ | | _| | | _| |_ _ |_ |_ _| _| | |_ _| | | |_ | | _|_| _| | |_| _| _ _|_ | _ _|_ _|_ _ |_ _ _|_ _ _ _| +|_| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _|_ _ |_|_ _ _ _ _| |_ _| _ _ _ |_| | | |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _|_ _ _| _| |_| _| _ _|_ | | | | |_ _| | | |_ |_| _| |_ _|_ _ _| _ _ _|_ _| _| _ |_ |_ | | _ _ _ _ _|_ _ _ _ _|_ _ _ | |_| | _ _|_ _ _ _ _ | | | | |_ _ | | _| |_ | | |_ _ _ _ _|_|_ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | _| | |_ _ | _|_|_ | | | _ _|_ | | | | | | _|_| _ _ _| _| | | |_ _|_ | _ _ _ | | | |_ _ _ _|_ |_ _| |_ | _|_|_ | | | _ _|_ _ _| | | | |_ |_ _ | | _ _ _ _|_ |_ | |_ _ _ _| |_ | | |_ _|_ | |_ | _ _ | | |_ _ | | | | _ _| |_ _ _ _ _| |_ _| _ _ _ _| _ | | | | | |_ _ | _ _| |_ _|_ _ _ _ | | _|_ _ _ _ _| |_ _| _ _ | _ _ | | _ _ _| _ _| | _ _ _ _| _|_ |_ _ | _ |_|_ _ _ _ _| |_ _| _ | | | | | | |_ | _ | | | _| |_ _ _ _ |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ | |_ _ _ _| |_| _ _ _| _ _ |_ _ | _ _| | |_ _ | _| _|_ _ | | _| |_ _ | _| _ _|_ _ |_ _|_ | |_ _ _ _ _ _| _| |_ _| | _ _| | _| | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ | _|_ |_ |_ _ _ _ | _ _| |_| | | | | |_ _ _ _| _ |_ _| | _ _| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _ _ _ |_| |_ _| | _ _ _ _ | | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _|_ | | |_ _ | | _ _|_ _|_ |_ | _|_|_ | | | _ _| | _ _ _| | | |_ _| | |_ _ | _ |_ _ _ |_ _ _| | _| | | |_ _|_ |_| | |_ _ | | |_ _| |_ |_ | _ _ _|_|_ _ | | |_ _| | | _|_ |_ |_ | | _|_|_ | | |_ _ _|_ _| _| | |_ | | |_ | _ _| |_ _ _| |_ |_ | | |_ _ _ | |_ _ | _|_|_ _|_ | | _| |_ _ _|_ _|_ _| | | _|_|_ | | | _ _| _ _ _| | | |_ _| |_| _| _ _|_ | |_ _ _|_ | |_ _ _|_ _ _| | _ _ _| | |_ |_ _ | _ _ | | | | |_ |_| |_ | |_ _| _| |_| _| | |_ _ _ _| |_ _|_ _| |_ _ | | |_ | _| |_ _ _ _ _| | _ _ _ |_ _ _ | _ _ | +| _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ _ | _ _ _|_ |_ | _ _ _| |_ _ | | |_ _|_ | |_ _ _ _ _| | |_|_ | | | _ _| | | _| |_ _ _ _ _|_| | |_ _| _ _ _| |_ |_ _ _| |_ _ _ | |_ _ _ _ | | _| _ _|_ |_ _ _|_| _ | _| _ _ _ _ | |_ _| _ _| | _ _ _ _| _| | | | | _| | | _ _ _|_ _|_| | | _ _ _ _ |_ | |_ _ _ _| _|_ _ |_ _ _ _| _ _| _ | | | |_ _| _| |_ _ _ _ _| |_ _|_ | |_ _| | | |_ |_ _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _| _ _| _ _| _|_ _ _ _ _| |_ _| _ |_ _ _ _| | |_ | _ | | |_ _ _| |_ | |_ |_ _|_ | | _| |_ _|_ _ _ _ _| |_ _| | _|_ _|_ _ |_ _| | |_ | | |_ _ _ _ |_ _ _ _ _| _|_ _| |_| | |_ _| _ _| | _|_ _ _ | |_ _ _|_ | _ _ | _ _ |_ | | |_ _ _| |_ | | | |_ _ _ |_ _|_ _ _| |_ _|_ | _ | _ | | | _|_ _| | |_| |_ | | | | |_ | | | _ _ _| |_ | _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _|_ |_ _| | | _| _ _ _| | | |_| |_ | | |_ _| | |_ _ _| | |_ _ _|_ | | _| | | _ _ _ _ _ | |_ _ _ _ | |_ _ | _ _|_ | _ _| _ _| |_ _ _ _ | _|_|_ | | | _ _| _ |_ | |_ _| | | | _| _| |_ _ _|_ _| |_ | |_ _| |_| _|_ | |_ _ _ | | |_ | | _| | _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | |_ _ _|_ | _ _|_| | _ _| | |_ _| |_ _ | _|_|_ | | | _ _|_ _ _ _| | | |_ _| | _ _| |_ _| _ _| | | _ _ | _| _|_ _ _ _ _| |_ _| | _ _ _| | | | |_ _| | | |_| | | _ _| _ _ _| |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _ _ _ |_ _ _| _ _ |_|_ | _ _| | _| _ _| |_ _ _ _|_| _ _ _ _ _|_ _ _ _ _ _ _ _ _|_ |_ _|_ _|_ _ _ |_ |_| _ _| _ _| |_ _|_ | | | _| | | _ _| | |_ |_ _ | _ _ | _| |_ _ _ _ _| |_ _| _|_ | | _| | | | | | | _| |_ _ _ _ _|_ _| | _| | _ _ _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _| |_| _| _ _ |_ |_| _ _ _|_ | | _ _| | _ _ _ _ _|_ _ | | |_ | | |_ | _ | | | |_ _| |_ | _ |_ _ | | +| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _|_ _ _ _| | | |_ _ _|_ | _| |_| _ |_ |_ |_ _|_ _ _ _ _| | _| _ _ |_ _|_ _ |_ _|_ _|_ _ _ | | |_ _ _ | _ _ _| |_ _| _ |_ |_ | | _ | |_ _|_ _ | | | |_ | |_ _ _ _ _| | | | |_ _| _ | | _| |_ _ | | | _|_| _| _ _ _ _ _| |_ _ | _| | | _ _ | _|_ |_ _ | | | _|_ _ _ _ _ _ _ _ _ | _ | | |_ _| |_|_ |_|_ | _ _ _| _ _ | |_ _| |_| _ _|_| |_ _ _| |_ | | _ _| | _ _ | _| _| | |_ | | _ | |_ _ |_ | _| _| | _ _| _ _ |_ | | | _ _ _| |_ | |_ _| |_| _| _ _|_ _ |_| _| _ _ _| |_ _ _| | _ _| _ | |_ _ | | | | _ _ |_ _ | | | | | | | _ _|_ |_ _ _ _ | |_| _ |_ |_ | _ _| _ _|_ _ _ |_ _|_ _ | | | |_ | |_ _| _ _| _| _| _ |_ |_ _| |_ _|_ _ |_ _ _ | _ _ _ _|_ |_| _ _| | | | | |_ _ _| |_ _ |_ _| | _| _| | | | |_ _| | _| _ |_ | | | _ _| | | | | | _ _| _| | | | |_ _ _ _ _ _ | _ _| | _| |_ _ | |_|_ _|_ | | _| |_ _| | _|_|_ _ _ | _| _ _ _ | |_| |_ _| | | _ _| _ | | _| |_ _ |_| | _ _| |_ | _| _|_ |_ _ | |_ _ _ _ _| |_ _|_ _|_ _ _ _| | | _| _ _|_ _ _|_ _ _|_ | _ _ _ _|_ |_ | _|_ | _| _|_ | _|_ _| _|_ _|_ | | | |_ _| |_ | |_ _ _ _| _| _ |_ _ _ _| _ _| _| |_ _|_ _| _ _ |_ _ | _ _| |_ _ _ _|_ _ | | _ _|_ _ _ _ _| |_ _| _ _| _ _ _| |_ _ | |_ _ _ _| _ _| | _|_ | _| |_ | _ _ | _ _ _ _|_ _| _ _|_| |_ |_ _ |_ _| |_ _ _|_ | | _| | _ _ | | | _ _ | _ _| |_ _ _ _|_ _ _ | |_ _ | _| | _ _ _| | | |_| |_ | | | _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ | |_ _ _|_ |_ | | _ _ _ _| |_| |_ _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ | | _ | _ _| | _| |_ _ _| |_| |_ _| | |_ | _ _ _ | _|_ _| | | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ |_ _ _| | | |_ _ _| _ _ |_ _| | _ _| |_ _ _ |_ _ | | | |_ |_ _|_ | | | | |_ | | _ _ _|_ |_|_ | _| _| | +| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | _ | | |_ _ _ _ _ |_ _| _|_| _| _ _|_ | | | _ | | _|_ |_ _ | | _ |_ _ | _ _ |_ _| |_ |_ _ |_ _| | | |_| _| _ _|_ | | | | | | | |_ _ |_ _| |_|_ |_ | _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ |_ _ _ _| _ |_ |_ | |_ _ | | | _| |_ _ |_ _| | |_ _| | _ _ _ _ | |_ _ |_|_ | |_ _|_ _ |_ _ |_ _ _ _|_ _ | _| |_ _| |_ _ _| |_ _| _ |_ |_| | |_| | |_ _ |_ _| | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| | _| |_ _ _ _ _| _ _| _ _|_ _ _| _| |_| _ |_ |_ | _ _| _ _| | _ _ _ _| _| _| _ _| | | _|_ |_ _ _| | | _ _| | | |_ _ _| _ _| | _ _| | _| | _ _ _ | | _| |_| _| _ _|_ | | | |_ _ | _ |_| _| |_ _| | |_ | | | _ _|_ | _| _| _ _|_ | | |_ | |_ _ | | |_ _ _| |_ | |_ | |_ _ _| _ _ _| _|_ _ _ _ _| _|_ | | |_ _ _ _|_| _| _ _ |_ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ | |_ | _|_ | | |_ | | | _ _| | |_| _| | |_ |_ _ | _ _ _ | | | | | |_ | _ _| | _| | _ _| | |_ _ | | _|_ _ _| | | _| _ _ _| | |_ _ _| _ _| |_ _ _ | _ _ _ _ |_ _ | _ _ _| |_ |_ | _ _ _ _ | |_ _ _ _| |_ |_ _| _ _|_| _| | |_ _ _ _ _ _ _ _ | | |_| |_ _ |_ | |_ _ _ _ _ _ _ _| | |_ _ | | |_ _ _ _ | _ _ _| | | |_| |_ | | _| _ | _| |_ _ _ | _ _ | _ _ _| | | _ _ _| |_ |_ | _ | | | |_|_ | _ _| | _|_ |_ _| | |_ _ | | _| |_| _ |_ |_ | |_ _ | |_ _ | | |_| |_ _| |_ _|_|_ _| | |_ _ _ _|_ _ |_ | _ _| _ _| | | _|_ _ | | | |_ _|_ | | _| |_ _| _| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ _ | | | | | | _ _ _ _|_ |_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ |_ _|_ _ _ _|_ _| _| _ |_ |_ | |_ | | |_ _ | | |_ _ | | _|_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | | _ _| |_ | _ _ _|_ | | |_| |_ | | _ _| _ _| |_ | |_ |_ _ | _| | | | |_ _| |_ _ _| |_ | | | _| | | +|_ | | | |_ _|_ | _ | | | | |_ _| |_ _ |_ _|_| _ |_ _| |_ | _| |_ _ _ _ _|_ _| | | | |_ _ _ _|_ _ _|_ _| _| _ _| | _ |_ | _| _| |_ _ _ _| | _| | _| |_ _ _ _ _| | _| | |_ _| _ _ _ _| _| _ _| | |_ | _ _|_ | _|_|_ | | | _ _| _ |_ | | | _|_ |_ _ |_ _| _| _ _|_ | | | |_|_ | | _ _ _| | _| _| | _ _|_ _ | | _| |_ _ |_ _ _ _| |_ _ |_ _ |_ |_ _ _ _ _ _|_ _ _| _ _|_ | _ _ _ _| _| _ _|_ | | |_|_ | |_ | _ _ _ _| |_ _ _ _ | |_ _ _ _ _ |_| _ _| |_ _ | _ _ _ _| | | | _| _| _| _ _|_ | |_ _ |_ | _|_ | _ _ _| _ |_ _ _| | |_ |_ _ _ _ _ | | | _ _| |_ | _ _| | _ _|_| | |_ _ _| | | _| | |_ _ | _| |_ _ _ _ _| |_ _|_ _ |_ _ |_ | | | _|_ _ _|_| _|_ | | | _|_| | _| |_ _ _ _ _| | | _| |_ _| |_ _| _| _ _|_ _ _| |_ | | | _ _ _| | _ _ _ | _ _ _| _ _| |_ _ _ _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ _ |_ _ |_ _| | | |_ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| | | |_ | _|_ _ _| |_ |_| |_ | | _| | | |_| _ _ _ _| | | |_ |_ _ _| | _ _ | | |_ _ | _|_ _| |_ |_ _ | |_| _ |_ |_ | |_ _ | | _| |_ _ | | _ _|_ _ _| | | _ _ _| _| |_ | _ _ _ _ _ | |_ _ _ _| | |_ _| | _ _ _ _ | |_ _ _ _| _|_ _|_ _ |_ _ _|_ _ | _|_|_ _|_ | | _| |_ _ | _| |_ _| | | | |_ | |_ | _ _| _| _ |_ |_ | | | | |_ _|_ _ |_ _| _ _|_ _| |_ | | _ _| | |_ | _| _| _ _|_ |_ _ _| | |_ _ |_ _|_ |_|_ | _|_ | _ _ _ _| |_ _ _ _ | |_|_ | |_ _ | | _ _| _|_ _| | _| | | | |_ |_ _ | _|_ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _|_ _| | |_| |_ |_ _ _| |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | | _ _ _ _ | _| _| _ _|_ | | |_ _|_ _ _| | |_ | _|_ _| _ _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _|_ _| | |_ | | | |_ _ | | |_ _|_ | | _| |_ _ | | _ _| _|_ | _ | _| | | |_ _ _ _| _ _ _|_ _ _| | |_|_ _ | | +| | | |_ _|_ _ _ _ _| | | | |_ _| |_ _|_ _ |_ _ | | _ _ _ _|_ | | _|_ _ | |_ _ _ _ |_ |_ _| |_ _ _ _ | |_ _| _ _|_ _| _ _|_ _| |_ _ _| _| _|_ _ | | | | | |_ _ |_ _|_ _ | |_ _ _| | | _ _|_ _ |_ _|_| | _|_ _ _ _ _| |_ _| _ _| |_ | | | |_ | _ _ _|_ | _| |_ _ _ _ _|_|_ _|_ _ _ _|_ | | _ _|_ | |_ _| |_ _| | |_ _ _|_ | | | |_ | | | _ _| | _| _ _ _ _ | _ _| | _| | _ | _| |_ _ _ _ _| |_ _ _ _| _| |_ |_ _ _ _| _ | _| |_ _ |_ _ _ |_ |_ | | |_ _ |_ _ _| | | _|_ | |_|_ _ | _| |_ _ _ _ _|_ _ | _| |_ _ | |_ _ | |_ |_ _ |_ _|_ _|_ _ _ _ | _|_ _|_ | _ | | | _|_ | _ _|_ _| |_ | |_|_ _ | | _| |_ _ _ | | | _ | |_ _ |_| _| |_ _ _| |_ _ _| | |_ _| |_ | | |_ _ | _ _| | | | |_ |_ | _ _| | _ _ _|_ | |_ _|_ _ | _ _| |_ | |_ _ | | _ |_ |_ | _ _| | | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| _| _| |_ _ _ _ _|_|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_| |_|_ | _ |_ |_ | | _| | | | _|_| | _| _ _| | | | _ _| | |_ _ |_| |_ _| _ _| | _ _|_ _ _| _ _ _| _| _ _|_ | | | _| | |_ _ _| _| |_| | _ _ _ _| | |_ _ | _|_ _ | |_ | | _| | _ _ _|_ _| _ _|_ _ | | _| |_ _ | |_ |_ _|_ _ _ _ _| | | _ | | |_ |_ _ | |_ _ _ | | | _| | |_ _ |_ | |_ |_ _| _| _ _|_ | | |_| | | _ _ _ _|_ _ |_ | _ _ _|_ _ _| | | | _ _ _|_ | | _| |_ _ _ _ _| | | _ _| |_ |_ _ _ _ _ _ _ _| | _| |_ | _ _ _ | _| |_ _ | | _| | |_ | |_ _ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _| |_ _ | _|_|_ | | | _ _| _ _ |_| | | | |_ _| | _|_ |_ |_| _| _ _|_ _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _|_|_ | |_| _ | | _| | | _| |_ _ _ _ _|_|_ |_ _ | | _ _|_ | | | _ _ _| | | _| | | |_ _|_ | _ _| | | |_ _| _ | | | _| | | | _| | |_ _ _ _| | |_ |_ _ | _|_ |_ _ _| _|_ _| |_ | |_| _ _ _ _ _ _|_ _ | | _|_ _ _ _ _| | +| |_ | _ | | _ _ |_ _ _| _|_ _ _ | |_ _ | |_| _ _ _| _ _|_ _| _ _| |_ | _ |_ _ _ |_ _| _ _ | _| |_ _ |_ _ _ _ |_ | _ | _ _ _|_ | _ _|_ _| | |_| | |_ | | _| _ _| _ | |_ _ _ _ _|_ _|_ _| _ _ |_ _ | _ _| | _ | _ |_ | | _ _| _ _|_| |_ _| _ _ _ | |_ _ _ _| _ _ _ _ | |_ _| | _ _| | |_ | | | _|_ | | | | | |_| _|_ _| | _ |_ _ _| _ _ |_|_ | _ _| | | |_ | | |_ _ _ _ | _| _ _ _ _ _ _ |_ | _ |_ | |_ _ _|_ | | _ | | _ | | | | |_ | _ _| |_|_ _ |_|_ | | | |_ | _ _ _ _ _ _ _|_ _ _ _ _| |_ _ _| | _| |_ |_ |_| | | | _|_ _| | _| |_ _| |_| |_ _ | | | _ _ _ _|_ |_| _ _ |_ _|_|_ |_ | |_ _ | | | |_ | | _ _| | _| | | | _ _| | _ _| _|_ _| _|_ |_|_ |_ | | | | |_ _ _ _| |_ _| | _| _|_ | _|_ | |_ | _| | _ _| |_ |_ _|_ | |_ _ _| | _| _ _|_ | |_ _ _ _| | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| | _ _|_ |_ _ | _ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ |_|_ _ | _| _ _|_ | | |_ | | | |_ _ _ |_ _ _| | _ _| |_| |_| _ _|_ _| |_ _| _ _| _ _|_| |_ | | |_ | _| |_ _ _ _ _| _| | |_ _ _ _ _ | | |_ _| | | _ _ _ _| | | |_ _|_ |_| | | |_ _ _| |_ _ _ | | |_ _ _| | |_ _ _| | | |_ _|_ |_|_ _ _| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _| | | |_ _ | | | | | |_ | _| |_ _ _ _ _| _| _| | | _ _ _ _| | |_ _| | _ _ _ _| |_| _ _| |_| | |_ | _ _ _ | |_ | |_ | _ _ _| _ _ _ _ _| | | _| _| | | |_ _|_ _ _| | | | | | _|_ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ | |_ _ _ _ _| |_ _|_ _ | _|_ | | | _| | _ _| |_ _ _ _ | | _ _| | _ _ | | _| | | |_ _|_ | | |_ _ | | | |_ _ _ _ _ _|_ |_ _| | |_ _ _| | |_ _ | _ _ _ _| _ _|_| | _ | |_ _ _ _ _ _|_|_ _ _ _| |_ _|_ _ _ _ _| | |_ _ _| |_|_ _|_ _ |_ _| |_| | |_ | |_ _ | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | _| _ _| _| | | _ _ _ _ | |_ _| _| _ _| | | +|_ | | | | |_ _ _ _|_ _ |_ _ _ _ _ _ _ _| |_ _ _| _ |_ | _ _| _ _| _| | |_ _ |_ | | | | |_|_ _ _| | | _ | | | | |_ | |_ _ | _|_ _ | _ _| _|_| _|_| |_ _| | | |_ _| _ | _ | _ _ _| | | |_| |_ | | | |_ _| _|_ | | _|_ _ _| _ |_ |_| _| | _ _|_ |_ _|_ | |_ _ | | _| |_ _ | | | |_ |_ _|_ _ _ _|_| | |_|_ _| | | | _|_ | | _ _ |_ |_| _ _ _| _| | |_| |_ | | | |_ | | |_ | _ _| | | |_ _ _| _ _ |_ _ _| | |_ _ _|_ _ _ _ | |_ | |_| | _| |_ _ _| | |_ _ _ | | _ _ _| | | _| |_ | _| | | _ _ _ _ | |_ _ | _|_ _ _ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _| _ | _| |_ _ _| | |_ _ _| |_ | |_ | | | _ _| _| | |_ _|_| | _|_ | _ _| |_ _ | | | |_ | | |_ _ | |_ _ |_| _| | | |_ _ _ | _| _ |_ |_ _| |_ _ |_ _ |_ _| _| | | | _|_ _ _ _ _ | | | _|_ _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | _ _|_ |_ _ | | |_ _ | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| | | | _| _|_ _ _ _| |_ | | |_| _ _ _ _ _| | | | |_ |_ | | _ _ _ _|_ |_ | | |_ _ _ _ _| _| | |_|_ _ | |_ |_ | _|_ | | | | | _| _|_| | | | _| _ | _|_ _|_ _ _| | _|_|_ _ _ _ _ _ _|_ _|_ _ |_ | _| | _ _| | | | _ _ _ _ |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | | _ | | | | | _ _| | |_ _ _ _ _ |_ _ _| | | _| | | _ _| _| _|_ _| _ _ |_ _ | _ _| | _|_ | _| | | | |_ | | | | | _ _ _| _ | | _| |_ _ _| | |_ _|_ _ _ _ _ _ _|_ _ _|_|_ _ _ _ | |_| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _|_ |_ | _ _ | _ _ _| | _ _ _| |_| _| _ _|_ _ _ _ _ _| |_ | _| |_ _ |_ _|_ _ _| |_ _|_ _ _ _ _|_ _| _| |_ |_ _|_ _ |_ _ _ | | _ _| _ _ _| |_ | | |_ _|_ _ |_ _ |_ | | | |_ _|_ | _ _ _ _ | |_ _ | _ _ | _|_ | _| | _| |_ _ | | _|_ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ | | | _|_ _|_ _ | | _| |_ _ | |_ | _ |_ _| | +| |_ _| |_ _ _ _ | |_|_ _ _ |_| | _ | _ _ _| |_ | |_|_ _ _ _ _| _| |_ | _|_ |_| |_ _|_ _|_ _ _ _ _ | | |_ | _|_ _| | | | |_ _| | |_ _ |_ _|_ _| |_ | _|_ _| _ _| | |_ _| | | | | |_ _ | _|_|_ _|_ | | _| |_ _ | |_ _ |_ _|_| _ |_| _| _ _|_ | | _| _| _|_ _| _ _|_ _| | |_ _ _|_ | |_| | | _| _ _ _ _ | | |_ _ _ _|_| |_ | _|_ _| _| | |_ |_ _ |_ _ |_ _|_ | | _| |_|_ |_ _|_| _| |_ _ |_ | _ _ _| | | |_| _| | _ _ _ _| |_| | _|_ _ _|_ |_ |_ _ _ _| |_ | | | _ _| | |_| _| _|_ _ _|_ _| |_ _ | | _| |_ _ | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ _ |_| | _| | _| _ _|_ _ _| | _|_ _|_ _ _| _| | _| | | _ _| _ _|_ | | |_ _ |_| |_| | |_ _ _| | |_ _| | _ _ _| _|_ _|_ | _ _|_ | |_ _| | |_ | | |_ _ |_ | |_ _ _ | |_ _ _ | |_ _|_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | | | | _| | | _ _ _| |_ _ _| |_ | | |_ _| _| | | |_ _|_ | |_ | _| | | |_ _ | | | |_ _|_ _| |_ _ _ |_ _ _ _|_ |_ _| _ _ _ |_ _|_ _|_ _ _ _ _| |_ _ _| |_ | |_ _|_ _ |_ _ _ _ _|_ _ _| |_ |_| |_ _ |_ _ _ | |_| |_ _| |_ | | _ _| | | |_| _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ | | | |_ _ | | | | | |_ _ _ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | | | | |_ |_ _| _ |_ |_ _ _ _| | _ _| | | _|_| |_ | _ _ _| _ _ _|_ | | |_| |_ | | | _|_ _| | |_ |_ | | |_|_ _ _|_ _ |_ _ |_ |_ |_| _ _ _ _| | _ _ |_ _ | _ _ _ _ | |_|_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _ _ |_ _ |_ _| | | | | _ _ _| _ |_ |_ _| _ _ _ _ | |_ _ _|_ |_ | |_ _ _ | | | _ _ | _ _ _ _| _ | | _ _ _|_ _ | | _|_ _| _| | _| _| |_ _ _ |_ _ |_ _ _| |_| | | _ | | _ | | _| |_ _ |_ _| | |_|_ _ _ _ _| | _| |_ _ _| _ _| | _| | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ | | | |_ _ _ _ _ _| | |_ _ _| | |_ _ | |_ _| | | +| | | | _ _| _| |_ _ |_ _ _| _ _| |_ | |_ _ _ _| _| | _ | _ _ _| _| _|_ | | _| | _ _ | _ _| |_| | |_| | _|_ | |_ _| _|_ _| _| _ _ _ _|_ |_ | |_ | |_ | |_ |_| | _| |_ | _| | | _ _ | | |_ |_ _ | _ _| _| _ _ _ _| | _| |_ _ _ _ _| | |_ _ _| _| _ |_ _ _ | | _| _ _ _ | | | _| | | | _| |_ _ _ _| |_ _| _ |_ |_| | | | _|_ |_ _| | |_ | | |_ |_ _ | _ _ _|_ _ | | |_ _ | |_|_ _|_ | | |_ _ | | _ _|_ _ _ _|_ _ _ _ _| | | _ _ _ _|_ |_| |_|_ | | |_ _ _| _|_ | | _| _| | |_ _ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _ _| | | _ | _|_ _ | _ _ _| _|_ |_ _|_ _| |_| | _| | |_ |_ | _ _|_ _ _ _ _|_| | |_| _ _ _| | | | | | _ | | | _ _|_ _ |_ _|_|_ _ |_ |_ _| | _| _ _|_ _|_ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_ _|_ _ |_ _ _ _|_ _ |_ _ _ _ _ _|_|_ |_ _ _ _ _|_ | |_ _| |_ _|_ _ |_|_ _ | _ _ _ _|_ |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_ _ _|_ _ | |_ _ | | | | | _ _| _| | |_| _ | |_ _ _ _ _|_ | | | |_ | | |_ _ _| _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_| | | _ _|_| |_ | |_ _ _ _ _ | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _| _ _| |_ |_ | _| _| _| _| | _| _ _| |_ _ _ _|_ _| |_ | |_ _ _ |_ _ | _ _|_ _|_ | | _| |_|_ _ _ _ | | |_ _ _|_ |_ | _ _ _ | _ _ _|_ _ _|_ _ |_ _ _ _|_ _| | _| _ |_ _ | | _| |_ _ | | | _| | | |_ _|_ | _ _ _ | | | |_ _ _|_ | | |_| _ _| |_ _| |_ _| _| _ _|_ | | |_ _ | | _| |_ _ | | | | | _ _|_ |_ |_ _| | |_ _|_ | | _| |_ _|_ | _ _| | |_ _ _ _| | _|_ _| _| |_ _ | | _ | | | | _ _ _|_ _| _| |_ _| | |_ _ _|_ | | _| |_ _ _ _ | |_|_ _ _| _ _ | _ _|_ | |_ _| _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_| |_| | _ _ _ _ | _ _|_ _ |_| | | | _| | _ _| | | +| | |_| | |_ _ |_ _ _| | | _ | | _ _ | | _ _| | | |_ _ _| |_ _ | _| _| _ _| | |_ _ _|_ _| | |_ _ |_ _ _ _|_| _| | | | |_ | _ _ _ |_ _ _ _ _| |_ |_ _| | _| | | |_ _ _ _| |_ |_| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| | | |_ _| _ _ _ _| | _ _ _| |_ _ _ _ | _| | _ _ | _| | | |_ _ _|_|_ _ _|_ | |_ _| | _| _ _|_ | | | |_ _| | | | | _| |_ _ _| | |_|_ | | _ _|_| |_ _ |_| _|_| | | _| | |_ _ | | | |_ _ | |_| |_ | _ _ _ _ | |_ _ _| |_ _ _| |_ |_ _ | _|_| | _ _ _| _ _| | | |_ | | _|_ _| _| | |_ | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| |_| _| | | |_ _ _ _ _| _|_ _ | _ _| |_ _ | _| _ _|_ _|_ _ _ _|_ _| _ _ |_ _ | _ _| | |_ _ | _| |_| | | | |_ | |_ | | _ _|_ _ _ | |_ | | _ _| | | |_ |_| _ _ _|_ _| | | |_ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _ _ _|_ |_ _| |_ _ |_ _ | | |_ _ _| |_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ | _ _ | | | _ _| | | | |_| |_ _ _| _| |_| |_ _ _ _| | | | | _ _| _| | _| |_ _ _| _|_ _ _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _| _| _ |_ |_| _ _ |_ _ _ | _| | | |_ _|_ |_| |_ _ |_ | | |_ _ |_| | |_| _|_| _|_ _| _| | _| |_ _ |_ _ _ | _ _|_ _| | _ _|_ _| | _ _ _| | |_ |_ _ | _ _ | |_ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| _ | |_ _ _ _| | | _| | |_ _ _| | | |_|_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_ _ _ |_ _|_ | | | |_ _ | _| _| |_ _ _ _ _|_ _ _| | |_ _ _| | | |_ _| | |_ _ | |_ _ _| _| |_ _ _ _ |_ _ | | |_ _| | _ _|_ |_ _ |_ _| | _ _ _| | _| | | |_ _ _| |_|_ _| _ _ _ | | _| _|_ _ _ | | |_| | | |_ | _| |_ _ | _ _| _| |_ | | _|_ _|_ | _| | | |_ _|_ | _ _ _ _ | | |_|_ _ _ _| _ _|_ _| |_ | | | _ _|_ _ | | _| _| |_ | | | +| |_ _ _| | _ _| _ |_| |_ | |_| | _ _| |_| _ _| |_ _| | _| | _| | _ _| _| | | | _ | _ |_|_ _ _ | _ _ _ _ |_ _ _|_| |_ |_ _| | | | _ | | _ _|_ _ _|_ | |_ _ _|_|_ _ |_ _ _|_ _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _|_ |_ |_ | | _ _ _ |_ _ | | | _ _ | |_ | |_ _ _| |_ _ _| | | _ _ _ _ | |_ _| _ |_|_ | |_ _ _ _ _| _|_ _ _ _ |_ _|_|_ _ _ _|_ _ _|_ | _ _|_ | | |_ _ | | _| | _| | _|_ _ _| |_| | | |_ _ | |_ |_ | |_ _ | | _| |_ _ | _| _| _ _|_ _ _| _ _|_| |_ _ _ | _| _ _| | | |_ | | _ _| _ _|_ _ _ _| _ _| |_ | _|_|_ | | | _ _|_ _ _ _ |_| | _ |_ _ | _ _| | _| _ _ _ _| | |_ _ _| | | | | _| | | |_ _| _ _ _ |_| |_| _ _ _| _| | |_| |_ | | |_ _| | |_ | | |_ _ _ _|_ |_| |_ _|_ | _ _ _ _|_ _ _|_ | | | |_ |_ _ | |_ _ | _|_|_ | |_ _| _ | _|_|_ | | | _ _|_ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _ | | _ _|_ _ | _ | |_ _| _| _ _|_ _ _|_|_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _|_ |_ |_ _ _|_ _| | _ _|_ _|_ | | _ _ _| _|_ _ _ | _ |_ _| |_ _| |_ | _| | |_ |_ _ | _| _ |_ | _|_ | | _|_|_ | | | _ _|_ _ |_| | | |_ _| _| _| _ _|_ | | | | |_ _|_ _ _| |_ _|_ _ _ _ _| _| _ _| |_ _|_ _ |_ _ | |_| | _| _ | _ _ _|_ |_ _ _ | | _| _ _|_| | | _ _| |_ _ _ | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _|_ _ | | |_ | _|_ _ | | | | | _ | | _ _ | | _ _| |_ | | |_ |_ _ | | | | | | | | | _ _|_ | |_ _ _ _ |_ _| _| _ | _|_ |_ |_ |_ _ | | | | _ _ _ _|_ _| _ _| |_ _| _|_ _ _|_ | | | |_ _ | |_ _ | _| |_ | |_|_ | | | _ _ _|_ _| |_ _ _ _|_| |_ | | | | | _| _| _| |_ _ _|_ | |_ |_ _ _ _ _| | _| _ _| _ _|_ _ _| |_ _|_ _ _ _ _| | |_ _ |_ |_ _|_ _ |_ _ _| _ _ _ _|_ |_ _|_ _| | | _ _ _| |_ |_ | | _| |_| +| | _ _|_ |_| _| |_ | | _|_ _ _|_ _ |_ |_ | | _ _| | |_ _ | _|_ _ _ _| | |_ _|_ _ _| | _|_ _ _ _ _ _|_ _ |_ _| _ _ |_ _ | _ _| | | |_ | |_| | _ _ _ _ |_ | | _ _ _ _ | | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | | _| _| _| |_ _ | _| _| | | |_| | _ _|_ |_| _ | _| _ |_ |_ _ | | _| |_ _ | | |_ _ |_ _ | | |_ _| _ | | | _ _ _ _ | |_ _ _ |_ _| | _ _| |_ _| _ _| | _ _| |_ _|_ _ _ | | _|_|_ |_ _|_ | | | _| | |_ _ _|_ | |_ _ _ _| | | | _ _ | | |_ _ | | | | | | |_ _| | |_ _ _ _| _ _ |_ _ | _ _| | | |_ _ _ _ _| |_ _| | | |_ | | | | | |_| |_ | | |_ _ _ | _ _| | |_ _| _| _|_ _|_ _ _ _|_ |_ _ _ | _ _|_ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _| | _|_|_ |_ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_| | _ _| |_ _ _ _| | |_ _ _ _ _| | _ _| _|_ _ _ _ _| |_ _| |_| _ _| | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ _| |_ _| | | _| | | |_ | _ _| | _ _ _ _ | _|_ | | | _|_|_ | | | _ _|_ _ |_ | | _ |_ |_| _ _ _ _|_ | _ _ _| | |_ _ | | | | |_| |_ _ _ _ _| _ _ | |_ _ _|_ | _| |_ _ | |_ | _|_| | | |_ _ _ _ _| |_ _|_ _ _|_ _ | | | |_ _| _| |_ _ _ _ _| |_| |_ _| | | _| | _ _ |_ | | | |_ |_ _ _ _ _| _ |_|_ | _| _|_ _|_ _ | _ _| |_ |_ | | _ _| _| _ _|_| _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _ _ _ _ _ _| | _| | | |_ |_ _| | | _| _|_|_ _| | |_|_ _ _ _|_ |_|_ _ _| | _ _| | | | |_| | | |_| | | | _| |_ | | _ _| |_ | | | | _| |_ _| |_ _ _| _| | | | |_ _ _| _ _ |_ _ | _ _| | _ _| |_| | _| |_|_ |_ _ |_ _| _| | | | | |_ | | |_ _|_ _ | _ | _| _ | _ _| | _|_ _ _| |_ |_ | | |_ _ _ | _| | | | _ | |_| _| |_ _ _ _ _ | | _ _ | _|_ | |_ | | _ _ |_ _ |_ |_ _ _| |_ | | _| _| _ |_ |_ | | |_ |_ | +|_|_ _ _ _|_ _ _ _ | |_ _ _| _ _ _ _ _ _ _|_ _ | |_| |_ | | _ |_|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ _ _|_ | | |_| |_ | | | | _|_ _ _|_|_ | | _ _| | |_| _ | | _| |_ _| |_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ |_|_ _| _|_ _ |_ _| |_ _ | _|_|_ _ _| _ _ |_ |_| _| | _| _ _|_ _| | |_ _ _| _| |_ _ _| | |_ _|_ _| | | | |_ _| _ | | _| |_ _ | |_ | |_ _ _ _| _ _| | |_| | |_| _ _|_ _| |_ _ _ |_ | | | |_| |_| | _| _| _ | | _ | _| | |_ _| _ _| |_ _| _ _| _|_|_ _ _| |_ |_| _|_ | _ _ _| | | |_| |_ | | | |_ _ _ | |_ |_ _|_ |_ _ _| |_ |_ _|_ | | _| |_ _ |_| | | | _ |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _ | | |_ |_ _ | _ _ | _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | |_ _ | _ _|_ _ _ | | | | _| _ _ _ | _ _ | | |_ | |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | |_ _| _ _ _|_ | | | |_ _ _| _| _|_ | _|_ _ | | |_ _| _ _|_ _| |_ _ _ _ _| |_ _| _ _ _| _| | |_ |_ | | _| |_| | _| | _ _ _ _| | | | | | |_ _ _| _ _ _ |_| |_ _| | | _| _|_| |_ _| _| | _ _| | |_ _ _ |_ _ |_| | | _ _ _| |_| |_ _ | |_ _ _ _ |_ _ _ _ _| _|_ _|_ _ _ _| _ _ _ _|_ _|_ _ _ |_| _ | |_ _| | _ _| | _ _ _ _| | _ _ _| |_| _| _| |_ _|_ |_ | | _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| | | _|_|_ | | | _ _| _ _ _ | | |_ _ _ _| |_ _|_ _ _| | |_ | |_ _ _| |_ |_ _ _| _| |_ _ _ _ | |_ _ |_ _ _ _| | _ _| |_ | _|_|_ | | |_ |_ _ _| _| |_ | _ _| |_ _| | _ _| _ _| |_ _ _| _| | | | | _ _ _| | | |_| |_ | |_ | _| _ _|_ _| _ _ _ _| | | | | _|_|_ _ _| | _| |_|_ _ | _ _ _|_ _|_ _ _| _| |_ | | | _ |_ |_ |_ _| _| _|_ | | |_| |_ _| |_ | |_ _|_ _ _| |_ _| | |_|_ _ _ _ _| | | |_| | | _| | |_ _| _| _ _|_ _ _| |_ _| _| _| _ _|_ | |_ _ _ _ _| | +| _ |_| | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ | | _| |_ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | _ _|_ _|_ | | _| |_ _ _| | _ _ _| _| | |_ | | | |_ _| _| |_ | | _| | | |_ _|_ |_ _| |_ _ | | |_ _| |_| _ _ _| | _ _| | _| | |_ _ _ | |_ _ _|_ |_ |_ | _| |_ _ _ _ _| _|_ |_ | | _| _ _| |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ |_ _|_ | _ _| | |_|_ _ _ _| |_|_ _ _|_ _ _ _ _ _ _ |_ _ _ _|_ _|_ _ _ _ | | | _|_ |_| |_ | | |_ _ _ _ |_ _ _ _| _ _| |_ _ _ | |_ _|_ _ _| _ |_ _ | | | |_ _|_ | | _| |_ _ |_ _ |_ _| | _| _| _| _ |_ |_ _ | | |_ |_ _ | |_ _ | | | |_ _| _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| |_|_ | | _ _|_| |_ _|_ |_ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ _| _ _| | | | | |_| |_| |_ _ _|_ | _|_ | |_ _|_ | _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | _|_ | _ _|_| | | _| | |_ _| |_ _ |_ _| _|_ _ |_ _ _ _ _| _ _ _ _| | _ | _ _|_| |_ _| | _| _| _ _|_ _| | |_ _ _| | | _|_ _ _|_| | _ _ _ _ _ |_ _ _|_ _ _ _|_ _| _| | | |_ _ | |_| |_ | | | |_| | _| _ _|_ _ _| _| _ |_ |_ | |_ |_ | _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| |_ _| _ _ _| | | |_| | | | | _|_ _ _ _| | _| |_ _ _ | _ _|_ _|_ _ _ _ _ | | |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| |_ | _| |_ _ _ _ _| |_ _| _ _ _|_ | _| | | _ _ _ _|_ |_ _ | _ _|_ |_ _| _ |_ |_ _ |_ _ _| | | _| _| |_ _ | _ _ |_ _|_ | _| |_ _ _|_ |_ |_ _ _| _| |_ | | | _ _ _ _ |_| | |_ | | _ _| _| |_ _ _|_|_ _ | _| |_ _|_ | | _| |_ _| |_ _| _ _ |_ _ | _ _| | | |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_|_ | _ _|_ | | |_|_ _ _ _ _| |_ | | _ _| | |_ | _ _| | _ _|_ |_ |_|_ _ _ _ | |_ _| | _ _|_ _ _| |_ | _ _| | _ _ _| _ |_| _| |_ _ _ _ _|_ | _ _ _ | +| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ | |_ _| _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| | | _ _| | |_ |_ _ | _|_ | |_ |_ _ _|_ _ | | | |_ _ _ _ _ _|_| _|_|_ _ _| |_ _|_ _ _ _ _| _ _|_ _ _ |_ _|_ _ |_ _ _ _ | _|_ | _ _| |_ _|_ _| _|_ _|_ _ | | | | | _| | _ | | | | |_| |_ | | |_ |_ | _ _ _ _ _|_ | _|_|_ | | | _ _| _ _ | | | |_ _ | |_ _ |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | |_| _ _|_ _ | |_ _| | | | |_ | | |_|_ _|_ _|_ _ | | _| _| _| | _|_ _ | | |_ |_ _ | _ _ _| | | | _ _ _| _| _ _|_ | _| |_|_ | | _ _|_| |_ _| |_ _ | _ _ | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ | _ _|_ | | |_ _ | _|_ _ _| _|_ | _|_|_ | | | _ _|_ _ |_| | | _ _ _| _ _| _| |_ _| |_| |_ | _| _| | _| |_ _ _ _| | |_| _| _ _|_ |_ |_ _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_| _ |_|_ | _ _ _|_ _|_ | |_ |_ | | |_ _ |_ | |_ _ | | _ _ _| | |_| _ _| | | |_ _| _ |_ |_| _|_ _| |_ _| _ _ |_ _ | _ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_| |_ _| _ _| |_ | | _| |_ _|_ | | |_ _ | _ | _| _| _ _|_ | | |_ _|_ _| | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _| |_ |_| |_ _ _| |_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | | |_ _|_ | |_ _ _ | | | |_ _ _ _ | |_ |_ _ | |_ _ _ _ _| _|_ _| |_ _ _ _| |_ | | | | _ | | _| _ _|_ | _| _ _ _|_ _|_ |_ _ _| | | | | | _| | |_ _ _|_ |_ _ _ _| | _ _ _|_ | _| |_ | _ _ |_| _| | | _| | _ |_ _| _ _ _| | | | _ _| | |_ |_ _ | _ _ _ | | | |_| |_ | | | | | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | |_ _ _ _|_ _|_ |_ _| _ |_ |_ | | |_| |_| _| | _ _| | _ |_ | _ _ _ | _| |_ _ |_ _| _ _ | | _|_ | _|_| | _ _ _| |_ | |_ _ _ _ _ _| |_ _ | _| +| |_ _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | | _ _|_| |_ _ |_ _ _ _| _|_|_ | | | _ _| _ | _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ |_|_ | _ _| | |_ _ _| _ _ | |_ _ _ _ | | _ _ | | | | | |_ |_ |_ _ | _| | _ |_| | | | | | | | _ | |_ _| | | _ _|_ _ _|_ _ _| | |_| | |_ | |_ _ _| |_ | | | | | _ _ _ _ |_ _ _ _ _| |_ _| | _ _ | | | | | |_ _ _ |_ _ _ _ | | |_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| _ _ |_ _| | _ _| | |_| | |_ | |_ _|_ _ |_|_ | _ |_ _| | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _| | | | _| |_ _ _ _ _| | |_ | _ _|_ | | |_ _ | | _ _|_| |_|_ | | _ | _|_|_ | | | _ _|_ |_ |_| |_ _ | | |_ _| | _ _| |_ _| _ _|_ _ | |_ |_ _ |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | | | |_ _ _ _|_ | | |_ _ _| |_ _| | _| _ |_| _| | | _| |_ _ _ _ _| | | _ _| |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ |_ _ |_|_ _ | _ | | | | |_ _|_| | |_ | |_| | | |_|_ _ | |_ _|_ | |_ | | | _| _| _ _|_ | | | _ _ _| _| | |_| |_ | |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| _| | | |_ |_ _ | _ _|_ _ _ _| |_ _| | _| |_ _ _ _ _|_|_ |_ _ | _|_ |_ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_| _ _ _ _|_ |_ |_ _ _|_ _ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ | |_ _ |_| | _| |_ _ _ _ _ | |_| _ |_ |_ | _ _|_ _ _| | |_ _| _| |_ _ |_ _ _ _ _|_ |_ | _ _ _ _ | | _| | |_ _|_| _|_ | |_ |_ _ _ | _ _ _|_|_ _ | _ _|_ |_ | |_ | _| _| _| |_ | |_ | _| | _| _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_ _|_ | | _| |_ _| |_ _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_ _ | _ | |_ | _| _ _|_ |_| | |_ _ _| _| _|_ | _|_ |_| _|_| | _|_ _ _| | | _ _| | _ _|_|_ _| |_ _ |_ _ _ _ _ _| |_ |_ _ _ _ |_ _ _ _ _| |_ | +| _ _ _|_ |_ | | _|_|_ | | | _ _|_ _ _ | | | _ _|_ | | |_ _ | _ _ _ |_ _ _ _ _| |_ _|_ _| | _|_ | | |_ _ _ | | |_ | _ _|_ | | |_ _ | _ | | | _| _|_ | _ _| | _| |_ _ | |_ _ _|_ _|_ | |_ _|_ _|_ _| _| |_ _ | | _ _| | | _|_ _|_ _ | | |_ _|_ _| _|_ _ _|_ _|_ _ _ | | | _ _ _ _ | |_ _| _| | _ _| _ |_ |_ _| |_ |_ _ | | _| _ | | _ _ _ _ _ _| |_ _|_| |_ |_ _ | _ | _| |_ _ _| |_| |_| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _| | | |_| |_ | | | _|_ | |_ | |_ _ | |_ | |_ _| _|_| |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_| | | |_ _ _ _| |_ _ |_ _| | _ _| |_ _| _ _|_|_ | | |_ _ | |_| | | | |_ _ _ _ _| |_ _|_ _ _|_ |_ | | _|_ _|_ _ | |_ _ _ _| _ _| _ _ | |_ _ _|_| |_ |_ _ |_ _ _| _| _ _ _| |_ _|_ |_ _|_ _ |_ _| _ _| |_ _|_ | | | |_| | _ |_ _ _| |_ | |_ _| _ |_ _| | _| | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | _|_ _ _| | |_ _| | | | | |_ _ _ |_ _ _| |_ | |_ |_ _ _ _ _ |_ | | | _| |_ | _| |_ _ _ _ _|_|_ | | |_ _ _ _ |_ _|_ | | _| |_ _ _| | | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ | | |_ _ | |_|_ | | _ _|_| |_ _ | _ _ _| |_ _| _ _ _ _ |_ _ _ _| |_ |_ _|_ |_ | _|_|_ | | | _ _| _ | _ | |_ _ _ _ _| |_ | _ | _ _ _|_ _|_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | |_ | | | _|_ _ _| |_ | _ _| _| _ _|_ |_| | | _ _ _ _ _ | |_ _| | |_ _ _ _ _|_ | |_ _ | | _ _|_ _| _| | _ | | _|_ |_ _ _| | _|_ _ _ | _| | | _| | _|_ _| | | _| |_ |_ | |_ |_| _ _|_ | | | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | |_ |_ _ | _ _ |_ _|_ _| | | _|_|_ | | | _ _|_ _ _ _| | | | _|_ | | |_ _ | | | | |_ _|_ _ _| _ _ _ _ _ _| | _ _ _ _ _|_ _ _| _ | | _| _ _| |_ _ _ _ _ _| | | | _ _| _ _ |_ | | |_ _ |_| _ _ _| _| _ |_ _ _ _| _ | |_ _| +| _ _| |_ | _| |_ _ _ _ _| |_ _|_ _ _ |_| | | | _| | _ _| |_ _| _ _|_ _| _ | _ _ |_ |_ | | _ _ _| |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| | _|_ _ _ _ | | | _|_ _ _|_ | | _ _ _ | _|_ _ _ _ | |_ _|_ | |_ _| | _ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| |_ _ | | _| |_ _ |_ | | _| _| _ _|_ | |_ _ _ _| | |_ _ _| _|_|_ _ _ _| | _| _ |_ |_ |_ _|_ |_ _ _| | | _ _| _| _|_ _ _| _| _|_|_ | | | _ _| | _ _ _| | | |_ _ |_ _| |_ _|_ | | _| |_ _ _ _ _|_ |_| |_ _ _| | _| |_ _ _ _ _ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | _| |_ | | _ _| | | | | |_ _ _ _| _ _| _ _ _| |_ _| _ _|_ | |_ |_ _ _ _ | _ | _|_ | _ _ _| |_ _| |_ _| |_ | | |_ _ |_ _| _ _ _ _|_ |_ _ _| _| |_|_ |_ _| _ |_ |_ _| |_ |_ _ | | |_ | |_| | |_ _|_ | | _|_ | | _| |_ | |_ _ _ _| |_ _| |_ |_|_ _| _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| | | | | _|_ | _|_|_ |_ _ _|_ _ _| _ _|_ _ _| | | _ _| | | _| | | |_ | | | | |_ _ | _ | |_| |_ _ _ | |_ | | |_ |_ _ | _ _| |_ _ | _|_|_ | | | _ _| _ _ _ | | | _|_ _|_ _ |_|_ | _ _|_ | | |_ _ | | |_ _ | |_ | _ _|_ _ |_ _ | _ _ _ _|_ |_ |_ | | _|_ _ _ _ _| |_ _| _ _| _| |_ _| | _ | | _ _|_ _ _|_ _| | _|_ _ _ _| _ _| |_ | _|_|_ | | | _ _| _ _ _| | | |_ |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | _|_ _| | _ _| | _|_ | _| |_ _ _ _ _| |_ _ _| _ _ |_ _| | _ _| |_ | | _ _ | _|_ _ | |_ _| |_ _ _ _| |_ | |_| |_| | | | | _|_ _ _ |_ _| | _|_ _|_ _ |_ | _ _|_ | _ _|_ _ _ _ _|_ |_| _ | |_ _| |_ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | |_|_ | | _ _|_| |_ _ | _| |_ _ _ _ _| |_ _|_ _ | | | _| |_ | _ _| |_ _| _ _|_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ | _| |_ _ _ | | | | | |_| _ _| _ _ |_ _|_|_ |_ | |_ _ _| _| _ |_ _ | | | |_ _ | +| | _ _|_ _ _|_ |_ | | _ _ _ _ _| | _ _|_| |_ | |_ _ _ _| _ _| _| | _| _| | _ _|_ _ _|_ |_| |_| _ |_ |_ |_ _ | | _| _ |_ _ _ _| _ _| _ _ _|_| _ _ _ |_| |_| | _ _ _ _ | | | | | | | _ _| _| |_ _ | _|_ _ _|_ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ _|_ | | _| |_| _ _|_ _ _ _ _|_| | _|_ _ _ | | _ |_ | _ _| _| _| _ _|_ |_|_ | | | _ _| _|_ | _ _ _ _ _| |_ |_ _ _ _ _| |_ _| | _ _| | | | _ _| | _ _| | | |_ |_ _ | _ _ |_ _ _| | | _ _| _ _ _| _ _ |_ _ _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | _|_ _| _| _| |_| |_ | |_ _| | | | _ _ | | | |_ _| _ _ _| _ _| _| |_ _|_ _| _|_ _| _| | | _| _ |_ |_|_ _ |_ _ |_ |_| |_|_ _|_ _ |_ _ |_ _ _| |_ | | _| _|_ _ |_ |_| _| _ _|_ |_ | |_ _ _ _| | |_| | | |_ _ _| |_ | | |_| _ _| |_ _| _| _| | _| | _ _| _|_ _ _ _ | _ _| | | | | |_ _ _| _| | | | |_ _ | | |_| |_ _| |_ _ _ |_ _ _| | _ _ _ _ _|_ _| _ _ |_ _ | _ _| | | | _|_|_ | | |_ |_ | _|_ | |_ _|_ | | _ | | |_ | | |_|_ | | _ _|_| |_ _ _ |_ _ _ _ _| |_ _| _| |_ | _ _| | | _ _ _ _ _| _ | _| | _ _| |_ _| _ _| |_ _ | _| _| | _ |_ _ | |_ _ _| |_ |_ |_| | |_| _ _ _ _ _| | _| | _| | |_ | |_| | | _ _ _ _|_| _ _ |_ _ | _ _| | _|_ _ _ _ _| |_ _|_ _ _|_ _ | | | |_| _ | |_ _ _ _ | |_|_ _ _ _| | | _ _| |_ _ |_| _| | |_ | | _| | |_ | |_ | | _ _ _| | | |_| |_ | | | |_ _ _ _|_ | | _|_ _ | |_ _ _ _ _ _ _ _|_ _ | _| | |_ _|_ _ _ | _ _| | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ | _|_ _|_ _ _ _ _ _ _ | _| | |_ _ _ _| _ _| | |_ |_ | _ _|_ | | |_ _ | |_|_ | _| _ _ _ _ | | | | |_ _ _| |_ |_ _ _ _| _ _| _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ |_ _|_| |_| | | _ _|_ _ _ _ _ _ _|_ _| | | _ _ _|_ _| _|_ |_ _| | | |_ _ | | +|_| | | _ _ _ | | |_ _| |_| | | _ _| | _| _ |_ |_ | _| | | |_|_ _| |_ _| _| | _ _ _ _| | _| _| _ _|_ | | |_ _|_ | | |_ _ _ | | |_|_ | _ _ _| _| | _| _|_ |_ | | _| | | |_ _|_| |_ _| | |_ _ _|_ | _| |_| | _| _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _| | _ _ | |_ |_ _ _| _ _ |_ _ | _ _| | | | | | | | |_ |_| | _ _| _| |_ _ _ _ _| |_ _| | _| | | _| |_ | _ _ _ _|_ |_ _ _ _ |_ _ | | _ |_ _|_| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| _|_ | _| _ _ _| | | | _| | | |_ _|_ | _ _| _ | | |_|_ | _ _ _| _| | _| |_ _ _ _| | | | |_ |_ _|_ _ |_ _ _ | | |_|_ |_ |_ _ |_ |_ _ |_ _ |_ _| |_| _| _ _|_ | |_| _| _| _| _ | |_ _ | | _| _ _|_ _ _| |_ _ _|_ _ | | _| _| |_ _ _ _ _| |_ _| | _| _ _| |_|_ | | _ _ _| _| | |_ |_ | | _ _ _| _|_ _ |_| |_| | _|_ _ _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ |_| | | |_| |_ _ | _ _ _ | |_ | |_ _ _|_ _ | | | _ _ _| | | |_| |_ | |_ |_ _ _ _ _ _|_ |_| _|_ _ | |_ _ | |_ _| | _| | |_ _ |_ | _ _|_ | | |_ _ | _| _ _ _ |_ | | _| |_ _ _| |_ | _ | |_ _| | | _|_ _ _ _| _ _| | _| _|_ _| _| | | _| |_ | | |_| _| _ _|_ _|_ _ _ |_ _ _ _| | | |_ _ _| |_ _ _ _| _|_ _ _ _|_ _ |_ _| | |_| _ _ _|_ | | |_| |_ | |_ _ |_ _ _ | _ |_| _ _ _|_| |_| _ _| | |_ _ | | _| |_ _ |_ _ |_ | |_ | | _| _| _| _| | _| |_|_ | |_ | |_| | |_ | | |_ _ | _| |_ _|_ | | _| |_ _ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | |_ _ _| _ _ |_ _ | _ _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | _ _ _ _ | |_ _ _ _|_ | |_ | | | | | |_ |_ _| | _ _| |_ _| _ _| _ _ _| | | _| | _|_ | | _ _| _ |_ |_ | | | | |_ _ _| | | | | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ |_ _| |_ _|_| _| _ |_ |_|_ _| | _ _ _ _ | |_| _ _|_ _ _ _ | _ _| | | _|_|_ | | | | +| _|_ _ | |_ _ _| | _ _| | | | |_ _| _| _ _|_ | |_ _| |_ _|_ _ |_ _| | _ _| _|_ | | _ _ _| | _| |_ _ _ _ _| _|_ _ _ _ _| | |_ _ _ | |_ _|_ _ |_ _ _ | | | | _|_ _ _| | _ _| |_ _ _| |_| | _ _ _|_ |_ _|_ _ _ _ | | _| _ _|_ _|_ | _| |_ |_ _| _| _|_|_ | | | _ _| _ | _ _| |_ | |_ _ _ _ _| | | | _| _ _ _| _| | |_| |_ | | |_| |_ _| |_ |_|_ |_ _ _|_ _ | |_ _ _ | _|_ _ _ |_| _| | |_ | |_ |_ _ _| |_ |_ |_ _ |_ _ | _| | _| _ |_ |_ _ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _| | | |_ _ | |_|_ _| |_ _ _| |_ _|_ _ _ _ _| _ _ _| _|_|_ _|_ _ |_ _| _ _ _| _| | | _| | _ _ _|_ _| |_ | | _ _ _|_ _ | _|_ _|_ _ |_ _ | _ _| _ _ |_ _ |_ | | _| |_ _ _ _ _| | _ _|_| _| | _ _| | | | _ _| | _ _| | _| _ _ _ _ _ _ _ | | | |_ _ |_ _ |_ _ | | |_ | _|_ _ | | |_ _ | | _|_ _|_ | |_ _| _ _ _| |_ _| _| | _|_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| |_ _ _ _| |_ _ | _| |_ |_ _ _ _| | | | |_ _ | _| |_ _|_ | | _| |_ _ | _| _ _ _| _| _ |_ _ _| _|_ _ _ | | _ _| |_ |_ _| | _ _| |_ _| _ _|_ _ _| | _| _| |_ _| |_| _ |_ |_| |_ _ _|_ _ _| |_ _| | | |_ _ | | _ _ _| | | | _| | _| | _ _| | _ _ _| _ _ |_ _ | _ _| |_ | _|_ _ _ _ _ _ _| _ _ |_ _ | _ _| | |_ _ | _|_ _|_ | | _| |_ _ _ | _ _|_ _| |_ _ _| _| _ |_ |_ |_ | |_ _ | |_ _ _|_ | | | | _|_ | | | | | _| |_ | |_ |_ _ | _| _| _ _| |_ _ _|_ _| | | | | | | |_ |_ _ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _|_ | | |_| |_ | | |_ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _|_ _ _| _ | | _| |_ _ | _ _ _ _|_ | |_ _| |_ | | | | | _ _|_ _ _ _| _ _| | |_ | |_ _ _ _|_|_ _ |_ _|_ _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ | | _| |_| | _| _|_|_ | | | _ _| _ | | | | |_ |_ _ | | _ _| _| _ _|_ | _ |_ _ | | _| |_ _|_ _| _ _ |_ _ | _ _| | |_|_ _ _ _ _| |_ | +| _ |_ _ |_ _ | _| |_ _ _ _|_ | |_ _| _| |_ _ _ _ _|_ |_ _| |_ _ |_ _ | | |_ |_ _ |_|_ _ _ | | |_ | _ _| _| | _ _ _ _ _|_ |_ _ _ |_ _ _|_ _ | | |_ _| |_ _ _| _ _| _| _ |_ |_ _ _ | _ _ _ | |_ _ |_| | |_ _| _ _ _ |_|_ _ _ _| |_ |_ _ _ _ _| |_ _| | | _|_ _ | | _| | | _ _|_| |_ |_ _ | _ |_ _|_ | | _| |_ _ _ | |_ |_ _ _ _| _ | _ _|_ | |_ |_ _ _| _ _ |_| _| _|_ | |_ |_| _| _ _|_ _ _|_ _| _ _| | |_| |_| _| _ _|_ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | |_ _ _ _| | | | _ |_ _ | | _ _ | | _ _| | _| |_ |_ _ |_ _ | _| _| | | |_| |_ |_ |_ |_ _|_ _ _ _| |_ | | _|_ _ | |_ _ _|_ _ _ _ |_ | | | | |_ | _ _ _|_| _ | |_ | | | _| |_ | _ _| | | _|_ |_ _ _ _| |_ _ _ _| |_| |_ | _|_ _ _| | _ _ _| |_ | |_ | | |_ _| | |_| |_ _ _ _ _ |_ |_ _ | _|_ _ | | _| |_ _| | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| | |_ _ | _| _| _| |_ _ _|_ |_ _ | | _| | |_ _| | |_ _| | | |_ |_ _ | _|_| _| _ _ _|_ _ |_ _ _ _| _ _ |_|_ | _ _| | |_ | _|_ _ _ _| _ _| | _ _ _|_| | _| _| _ |_| _| _ _|_ | | |_ _ _| |_ |_| | _| |_ _|_ _ |_ _|_ _ | _| | |_| |_ _| |_ | _| | _ _ _|_ | | |_| |_ | | | |_|_ _ _ | | _ _ _|_ | | |_| |_ | | |_ _| | |_ _ _| | |_ |_ _ | _ _| | _ _ _ _| _| _| _ _|_ | | _|_ _ |_ _| _ _| |_|_ _ | _ | |_ _| | | |_ _| |_ | | _ _|_| _|_ _ _ _|_ _ | _ _| _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _ | _|_ _|_ | | _| |_ _ |_| | | _ | _|_|_ | | | _ _| | |_ | | _ _ _ |_ _| | |_ _ _| _| |_| _ | |_ _ _ _|_ | | | | | | _ _ _ _ | | |_|_ _ | | |_ _| _ _ | |_ _ _ | _| |_ _ _ _ _| _|_ _ |_ |_ _ | | |_ _ | _|_ |_ _ _ _ _| |_ _|_ _|_ _ _|_ | |_ | _ _| |_| | | | _| |_ _ _ _ _| | |_ _| | |_ _ _| | | _ _ _|_ | | |_| |_ | | | _ _ | | _| +| | |_ _ |_| |_| | |_ _ _ | |_|_ _ | |_ | | _ _| | _ _|_ _ | _ _| | |_ | _ |_ _ |_ | |_| |_ | _ _|_ | |_ _ _| _ _ | |_ _ | _| |_ _ _| | _ _ _ _| _| _ _| | |_| _| _ _|_ | _ _ _|_ _ |_ _| _ _|_ | |_ _ _ _ _ _ _|_ | |_| _ _| | | _| _ _ _ | | |_ _ _ _| |_| _| |_ |_| _ |_ |_ _| |_ |_ _| | |_ |_ _ | _ _| _|_ _| _ |_|_ _| _| | _| _ _ _|_ | | _| |_ _|_ | | | _ _| | _| _ _ _| | _| | | _| | _| |_ _ _ _ _| |_ _| | _|_ _ |_ _ _ _| _ _| _ _| |_ | |_ | _ _ |_|_ _ |_ _| | |_ _|_ | |_ _ _ _ _|_| _ _| |_ | | |_ | _ _| | |_ _| |_| |_ _ _|_ _ _| _| _|_ |_ _| | _ _| |_ _| |_ _ _| | |_ _| _ _ | |_ _| | | | |_ | |_ _| |_ _ _ _ _| _|_ | | | | | _ | |_ | | | |_ _ |_ _ _| _ _| _ _ | | _| _| _ | _| _| _ |_ | | |_ | | |_ _ _ _|_ _ _ _ _ _| |_ |_| _| | _ _ |_ _| _| | _| | | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| | _|_ _ |_ _ |_ _ | _| _ _|_ | |_ _| | |_ _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ | _ _| | | _ _ _|_ | | |_| |_ | | | |_ _ _ _ | | |_ _ | |_ | _| | _|_ | _| _| |_ _ _ _ _|_ _| _ _ _ _|_ |_ |_ _| _ _ | |_ _ _ _| | | | |_ |_ |_ | |_ _| |_ |_|_ _ | _ |_ _|_ | | _| |_ _ _ |_ | _| |_ _ | _|_ _|_ | | _| |_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ _ | _| _| |_ _ _ _ _|_ _| _ _ _| | | _| |_ | | _ |_| | | |_ | _|_|_ |_ |_ _ _ _| | _ _ _| _ _ _ _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_|_ | | | _ _| _ _ | | | | _| | |_| _| | |_ |_ _ | _ _| | | | |_ _ _ _ _| |_ _| _ _ _| |_ | | | | | | | _ _| | _ _ _ | | _| |_ _|_ _ | _ _ _| | |_ _| | _ _| |_| |_ _|_ _ |_ _ _| | _ _| | _| |_ _ | | |_ _ _| |_ | | | _|_ _ _| | | |_ _ _|_ | | _ |_ |_ _ |_ _ _ |_ _ _| |_ | | _ _| _|_ | |_ _ _ |_ | _| | _| | _ | |_ _ | _ _|_ _|_ | | _| |_|_ | _ _|_ _| | | +| _ _ _|_ | | _ _| _| |_ _|_ _ | |_ | | |_ _| | |_ _| _ _| _| | _ _| _| |_| _ _ |_ | _| _| _|_ | _ _|_ | _ _| | _| |_ _ | |_ _ _| _ _| _ _|_| _ _ |_ _ | _ _| | | _| |_ _ _ _ _|_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ _|_| _| | | |_| |_ |_| _ |_ |_ | |_ _| _| _ _|_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _ _ |_ _ _ _| _|_ _|_ _ _ _ | _|_ _ | _|_ _ _ _ _|_ _ | _| |_| _ _| | |_ _| _| | |_ _| |_ |_ _ _ _|_ _ _ _|_ _ | |_ | | | |_ _ _ _| | _ _|_ _| |_ | | | | _|_ _ _ | |_ _ _ _ | |_ _ | | | | |_ | |_ | _|_|_ _ _ _ |_ |_ _ _ _ _ _ _ _ _ _|_ _ _ |_ |_ _ |_ _ | _ _| | _ _| | _| |_ _ | | | |_| _|_ | _ _ _ _ | |_ _| |_ _ _| | |_ _| | | | | |_ _ |_ _ |_ |_ _ |_ _ |_ _ _| _| _| | |_ _ _| _| _ _|_ |_ |_ _|_ _ _| _ _ |_ _ | _ _| | |_ _ _| | _|_ _ _|_ |_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | | |_ _|_ _ | | | _| |_ _ |_| _ _ _| _ _| | |_|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | |_ _ _ _|_ _ | _ |_ _|_ | | _| |_|_ _ _ |_ | | |_ _|_ _ |_ _ |_ _ _ _|_ _ _ _|_ | |_ _ _ _ | |_ _ _| |_ |_ | | _|_ |_ _ | _ | _|_ _|_ _ _ |_ |_|_ _ | _|_ _ _ _ _ _|_ | | | |_ |_ _ | _ _ _| | _ _| | |_| _| | |_ |_ _ | _ _ _ _ _ _ |_ | _ _|_ | | |_ _ | |_ _| | | |_ _ _ _ _ _ _| _ |_ _|_ _ | | | |_ | | _| _| _|_ | _ _ _ | _ _ _|_ _ | _|_ _ | _| _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ _ _| |_ _|_ _ | _| _| | | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _|_ _ _ _ |_ | | _ | |_ _ _| |_ | |_ _ _| | _ _| _ | | _|_ _ _ | _ _| | | |_ _ _ _| | _ _|_ _ | _ | |_ _ | | | | _|_ _ _| _| | | |_ | _ _ _| |_ _ _|_ | |_ _ | _ _| |_ _ _ _ _ _ | |_ _ _ _|_ _ _| _| | _| _ |_ |_ |_ | | _ | |_ | | _ |_ _ _|_ _ _| | | |_ _ _| |_ _| | | _ _| | |_ |_ _ | |_ _ | | | | +|_| _ _ _ _| |_| |_ _ _| _ _ _|_ |_| _| _| |_ _|_ _ | _ |_ _ |_ | | _ _ _ _| |_ | |_ _ _| _| _| |_ _ | | | _|_ _ _| | | _ _ |_| | | _ _ _| _| | |_| |_ | | | |_ | _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ |_ _ _|_ | | _| _| _| _ _|_ | |_ _ _| |_ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _| _ _ _|_ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_|_ | _ _| | _|_ _ |_ _ |_ _ |_ | |_ | | _ _ _ _ | |_ _ _|_ | |_ _|_|_ _|_ _ |_ _ _| _ _ _ _|_ |_ _| |_| |_|_ _ |_ _ | | _ | _| |_ _ |_| | | |_ |_ _| _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _| _|_ | |_ | | | | _|_ _ _| _| _|_ _| _| | | |_ _| | _|_ |_ | _ _| _ _ _ _| | _| |_ _|_ |_ _ | _| _| _ _ _| _|_ |_ _ | _| |_ _ _ _ _| | | | _ _ _|_ | | |_| |_ | | _ | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | | |_ |_ _ | |_ _|_ | | |_ _ _| _ |_ _ |_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_|_ _ _ _ _| | |_ _ _ _| | |_ |_ _ | _ _ _ _| | | _ _ |_ _ | | | _ _ |_ _| |_ | | | |_ _| | |_ | _ _|_ _ _| | | | | _ | _|_ | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | |_|_ | | _ _|_| |_ _ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _|_ |_ _| | _ _| |_ _| _ _| |_ _ | | |_ |_ _ _| | | _ _ _| | | _ |_ |_ _ _ _|_ _|_ _ |_ _ |_|_ _ _| |_| _ _ _| |_ | | |_ _| | | _|_ | |_ _ _ _| _| | |_ _ _ _| _ _| | |_ | _ _ | _ _ | |_ |_ _ _| |_ | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ |_ _ _| |_|_ | _| _ |_ |_|_ | _ _ _ | _| _|_ _| _ _ |_|_ | _ _| | | | _ _ |_| | _ _| _| | |_ _ _| | | |_| | _ _ _ _ _ | | |_| _| |_ _ | | |_ _ |_ | _|_ | _ _ _ _ _| |_| | |_ _ _ _| | _| _| _| _ _|_ |_ | | | | |_ _| _|_|_ |_| _ _ _ _ | | |_ | _ _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| |_ | +| _| _ _ | _ _| | _ _ _| _| _ _ _| _| _| _| _ | |_ _| |_ _ |_ | | | | _ _ _ _|_ |_| | _ _ _| _ |_ _| |_| |_| | _ _ _ _|_| |_ _ _| _ _| | |_ _ | _ |_ _|_ | | _| |_ _ | | |_| _| |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ | _ _|_ _ _| | _| |_ _ _ _ _|_ _ | |_ _ _ _ _ | _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _ |_ _ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _ _| |_ |_ |_ _ |_ | _| _|_ | |_| _ | | _| |_ _ | _| | _ _ _| _|_ _ |_ |_ _ _| |_ | |_ | _ _ |_ _ |_ | | | |_ _ _| | | _| |_ | | |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | |_ _ _ _ _| | | | | |_| | | | _ _ | | _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _| | |_ _ _|_ _| _ |_ _ _|_ _| |_ _ | |_ _ _ _ _ | | |_ |_ _ _ | | | |_ _ | | |_ _|_ | | _| |_ _| |_|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _ _ _| _|_ _ _ _|_ _|_ _ _ _ _ _| | _ _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _|_ _ _ | |_ _| | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ _|_| | _ | | _|_ _ |_ | |_| _| _| |_ _| | _|_ |_| | _ _ _ | | |_| |_|_ | | | _| | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ _|_ | | |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | | | |_ _ _ _| _ _| _|_ | |_ _ _| _| _| _ |_|_ _ | _| | | | |_ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _ | | | _|_ _ _|_| | _ _|_ _ | |_ _ _ _ _ _ _ _|_ _ |_ _ | | |_|_ | _|_ | |_ _| _ _| |_| _| _ |_ |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | _| _|_ _ | |_| _| _ _|_ | _|_| | | |_ _| | _ _ _| _| | |_| |_ | | | |_ | _| _| _ |_ _ _| | _| _ _| _| _|_ | _ _ |_ _ _| _| |_ _ _ |_ _|_ _ |_| _|_ _ | |_ | _ _ _ _|_ |_ _|_ _ | _ _ _| | | | _| |_ _ _ _ _| | | |_ _ _ _| _| | | _| |_ _ _ _| | _|_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| +| | | |_| |_ | | _ _ |_| _| _ _ _| _|_ _ |_ |_ _| | _ | |_ | | |_ |_ _ _| |_ | |_ _ | _ _| | | | _| _|_| | _ | | | _ | | _ | _| | | | | | | |_ |_ _ | _|_ | |_ | | _|_ _|_ _ | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _| | _ | | |_ | | _ _ _ _|_ | _ _ _| |_ |_ _ _ _| _|_ _ |_ _ _ _| _ _| | |_ _ _ |_ _ _ _ _| | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ | | |_ | _ _| |_ _ _| _| _ _|_ |_ _| | |_ _ _| | |_ | |_ _ |_ _ _|_ _ _ | |_ _| _| _ _|_ _ _| | _|_ | |_ _ |_ |_| | | _ _ | |_| | | _ _ _ _| |_ _ _ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _ _ _ _ _| | _| _| _| | | | | |_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | _ _|_ _| |_ | | _|_ _| _ _ |_ _ _ _| | _ _ _ _ | | |_ | | | _ |_| |_ _| _ _| | |_ | _| | |_ |_ _ | _ _ _ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _| | _| | | |_ _|_ | |_ | _ _| | |_ _ | _ |_ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _| | |_ _| |_| _ _ _| |_ _ _| _| _| |_| | | _|_ _ _| |_ _ _| |_ | _ | |_| | | |_ _| _|_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _| | _ _| |_ _| _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | |_ _| |_ _ _ | | |_ _ _ _ _ _| _| |_ |_ |_| | _ _| | | | | _| |_ _ | | _| |_ _ |_ _ _ _ _| |_ | _| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _ | |_ _|_ _ |_|_ | | | _ _| _ _| _| _| _ _|_ | _| _ _ _ | _| _ |_ _ _ _| _ _| | | _| | | _|_ _ | | | _| |_ _ _ _ _| | _ _| | |_ _ | |_ _ | _ |_ _|_ | | _| |_ _ _ _| |_ |_ _ _|_ _ _ _ _ _ |_ | |_ _ _| | |_| _ | _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | | _|_ |_ _| | | |_ _ _| _ _ _|_ | _ _ _| _|_ _|_|_ _ _|_ | |_ _ |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | +| | | _|_ | | _| |_ _ | | _| |_ _ | _|_ |_ | | _ _|_| _| | _| | |_ |_| _| _ _|_ _ _| _| | | | _|_| | |_|_ _ _| _ _| | | | | | |_ | |_| |_ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _|_ _| _ _ _ |_|_ _ _ _ _| |_ _|_ _| | _|_| | | | _ _|_ | | |_ _ | | | | | | |_ |_ _|_ _ | |_ _| _| |_ _| | | _|_ |_ _ _ _ _ _ _ _ _ _ | | | |_ _| _ _ _ _ _ _ _| |_| | | |_ _| _|_|_ | | | _ _| | _ | | | | _| |_ _ _ | _ | _ _ _| _| _ _| | _ _|_ _ |_| | | _|_ | | | | _ _ _ _ |_ | _ _| | _ _| | _|_ _ _ _ _|_ | | _| | | _| |_ | | |_| _ | _| | _ _| _ _| | _ | _|_|_ | | | _ _|_ _ |_| | | | _ _| _ | | _ _|_ _ _| _ _| | _| | | | _| | _|_ _ | | | | | | | |_ | | | | | _ _ _ _|_ |_ _| | _ _ _|_ | | |_ _| _|_ _ _ _ | | |_ _ _ _| | |_ _ _ _ _ _|_ _ _| | _|_ | |_|_ | | _ _|_| |_ _ _ | |_|_ | _|_|_ | | | _ _|_ | | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _| |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _ _|_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ | _ _| _| | _ _| | _ _ _| _| _|_ _| | | _ |_ |_ _ |_ | |_| _| | _|_| |_ |_ _ _ _ _| _ | _|_|_ | | | _ _|_ _ _ | |_ | _ _|_ _ _ _| _ _| _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _|_ _ |_ _ _ _| |_ _|_ _ |_ _| _ _ _| | _| |_ | |_ _| _ _| | | | |_ _|_ _| | |_ _ _| | | _ | | _ _|_ _ _|_ _| |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _ | |_ _ | |_|_ | | |_ | | _| |_ _ _ _ _| | | | |_ _|_ |_ |_ _ _ | | |_ _| |_ _ | | |_ |_ |_| | | |_ | _ _ _ | | | | | | _| | | |_ _ | | |_ |_ _ | _ _ | | _ _ _ _ | |_ _ | | _ _| |_ _ |_ | |_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _| |_ _| _| | _| _ _|_ | | | | _|_ _ | |_ _ |_ | _ _ _ _ | |_ _| _ |_ _ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| |_ _ | +| | |_ | | |_ |_ _ | |_ _ | _| |_ _ _ _| |_ _| | | _ | | _| | _| | | | _ _| |_ | _ _|_| _|_ _|_ _ _| | _ _ _ | _ _ _|_ _|_ _ _ _|_ _ | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _| |_ _ _ | _| _ _ _| _| _ _ _| |_| _| | _ _| |_ _| _ _| | | | | _| _| | |_|_ | | _ _ _| _ _| | |_ _ _ _ | _ _ _ _ | |_ _ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _|_ |_ |_ _ _ _ _| |_ _| _| | |_ _| | | | |_| |_ |_ _ | _|_ |_|_ _ | | |_ _ |_ _|_ _ _ _|_ _ | | | |_ _ |_ _ | _| | _|_ | _|_ _ _| | _ _ | | _ _ _ | | _ _| | | _ _ _| |_ _| _|_ _ | | |_| | | | | |_ _ _ _ _| |_ _| _ _ _ _|_ | | | |_ _ | | | _|_ |_ _ _ _| |_ | _|_|_ | _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| |_ _ _| |_ | _|_ _ | _ _|_ _| | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _|_ | _|_ | _ _|_ | | |_ _ | _|_ _ _ |_ _ _ _ _| |_ _|_ | |_ _| | | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | |_ | | _ _ | _ _ _| | _|_ | _ _| |_ _ _ | _ _ |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ |_ _ _ _|_ _ |_ _| | | |_ _ | |_ _|_ _ _| _| _| | _ _ _| _| | _|_ |_ | | | | | _| | _ _ _| | |_ _ _ _ _| |_ _| _ |_ _| _| | | _|_ _ _ _ _ | | |_ _| _| | | |_ _|_ | _| _ _| | | |_ _ _ _ _ |_ _ _ _| |_ | | |_ _ |_ _ | _|_|_ _ _ |_ _| _| | | |_ |_ | _ _| _| _ | _| | |_ | |_| | | _ | | | _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | |_ |_| _ _| | | | |_ _| |_ _ _| | |_ | |_ | | |_ _|_ _ _ _ _| | | | | | |_ _|_ _ |_ _ |_ _|_ _ _ _| |_ |_ |_ _ _ _ _| | | | | | | | |_| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _ | | _| |_ _ |_| | _|_ _ _| |_ _ _| | _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | | _ _ | | | _| | | | _| _| | _|_ _ _ _|_|_ _ _ _ | |_ _ | | _| |_ _ |_ |_ _ | | | _| | | |_ _|_ | | _ |_ | | |_|_ | _| +| | |_ _| |_|_ | | _ _|_| |_ _| | _|_ _ _ _ _ _ _ |_ _|_ | |_ _ _|_ _ _ _|_ _ | _| _| |_ _ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | | |_ _| _ _| |_ _ _ _| _ | _ _| _ |_ |_ _ |_ _ _ _| _ _| _|_ _|_ _| _|_ |_ _| | _ _| _ _| | |_ | | _| _ _ _|_ _ | | _| |_ _ | | _ | |_ _ | | |_ _ _| |_ |_ | | |_ | | _ _ _ _ _ _|_ |_ _ _| |_ |_ | | _ _|_| |_ _ _| | _|_ _ |_ _ _ _| _| _ _ _| |_| |_|_ | _| _| |_ | |_ _| |_ _ |_ _ |_ _| | |_| _ | _|_ _| | | _| _ |_ |_ |_ _ | _|_ _| | _| | |_ |_ _ _ _ |_ _ _| _ | _ _ _| |_ |_ _|_ _| |_| | _ _ _ _|_ |_| _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| _ _| | | _ _ |_ _| _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| |_ _| | _ _| |_ _| _ _|_ | | _|_ | _ _ _| _| |_| _ _|_| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | |_ |_ | |_|_ _| | |_ _ _ _|_ _ | |_ _ _ _|_ | _ |_ _ | | _| | | |_ _|_ | _|_ _ _ | | |_ _ |_ | | _ _|_ | | _|_| | | _| | | | _ _ |_ | | _|_| | _| _|_ _ _ _ _ _| | _|_ _| _ _|_ _ _ _ _ _|_ | _ _ _| | | | _|_ _| |_ _ _ | | | |_ _|_ _ |_ _ _| |_ _|_ _ _ _ _| _| | _ _| |_ _|_ _ |_ _ _| _ _ _ _|_ |_ _| |_ _ | _ _| | | _ _ | | _ | _|_|_ _ _|_ | | |_ | | _|_ | | | | | _|_ _ _| | | |_ _| | | _| | | |_ | _|_|_ | | | _ _| |_ | | | _| |_ | | | _ _| _|_ _| _|_ |_ _ |_ | |_ _| | _| |_ _ _ | | _|_ _| | | |_ |_ _ |_ _ | _ | | | |_ _ _| _| _ | _ _|_| |_| | |_|_ _ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | |_ _ _|_ | | _| | _ _ _ _|_ |_ | | | _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _|_| |_ | |_ _| |_ _ _ _|_ _ _| _| |_ _ | | _ _ _ _ | |_ _ _| | |_ _ _|_ | | _|_ | |_ _|_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ | +| |_ _ | | _ _|_ | | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ | _| | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _| | _| | | | |_ _ _ _ |_ _| | _| _| _ _|_ | _| | | | |_|_ | _ _ _| _ _| | _ _|_ _ _| _| | | _| | | _| | _| | |_ _ _| | | | |_ | | | |_ _| _| _ _|_ _ _| _|_| | | _ _|_ _|_ _ | _ _| _| _ |_ |_ _ _|_ | | |_ _ | | _|_ _ _ _| _ | _| _ _ _| _ |_ |_ _| | | | _| |_ |_ | | _|_ _ |_| _ _| |_ |_ _| | | _ _|_ _|_| _| _ _|_ |_ _|_ _ _ _ _| | |_ _| _ _ _ | _|_ _ _| _| | |_ _| _ |_ |_| | _ _ _ _|_ |_ _ _ _| |_ |_ |_ _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_ _| _ _| | | _|_ _ _ _| | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | | |_ | _|_ _ _ _| _ _| | | |_ _|_ _| |_ _ _ _ _| | |_ _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | |_| _| _ _ _|_|_ _ _ _ | |_ _|_ _| | _|_ | _| _| |_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_ _ | | |_ _ |_ _|_ _ |_ _ | _|_|_ _|_ |_ _ _|_| | _ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | _ _| | _| |_| _ |_ |_ |_ _| | | |_ |_ |_ _ | | _ _ | _| | _| | | | _ _ |_ _ |_ |_ _ _| |_ | _| _ |_ | _|_|_ _ _| _|_ |_ _|_ _ _ _ _ _ _|_ _ _ | |_ _ |_| | |_ _ _|_ _ | _ _| | | |_ _| |_ _| |_| | | |_ _ _ _ _| |_ _| _|_ |_| | | | | _ _| _|_|_ | | |_ _ | |_ _ |_| _| | _|_ | _| _| | |_ _|_ _ _ _ _ | |_ _ _ _ _ _| |_| _| |_ _| |_ _ _| _| _ | _| _ |_ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _ _ _ | | | _|_ _ _| |_ | | | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _ _ _ _|_ _ _ _ | _ _ _| | |_ |_ _| |_ _ | | _| |_ _ | | _| _ _ _ | | |_ | _|_ _ | | | _ _ | | | | | | _ _|_ _ | |_ _ | | +|_ _| |_|_ _ | _ _| |_ _| _ _|_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | |_ | | _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | _| | | |_ _|_ | | | _| | | |_ _ |_| _|_ _|_ _| |_ _|_ _ |_ _ | _ _| | _| |_ _ _ _ _|_ | | |_ _|_ _|_ _ |_|_ _ _ | _ |_ _ _| _ _ |_| _| _| |_ | |_|_ _ _|_ _| | _| | _ _ _| | | |_ |_ _|_ |_ | _ _| | _ _ _ _| _ _| |_| | _ _ _ | |_ _| _| _| _ _|_ | | | _ _| |_ _| _ _| |_ _ _ | |_ _| | |_ _ _| _| _ _|_ |_ | |_ _| | | |_ _|_ |_ _|_ _ |_ | | | | | | _ _| |_ |_| _ | _| |_ _ _ _ _| _| | _ _ _|_ |_| _ _| | |_ _ |_ _ |_ _| _| _ _|_ | |_ _ _| |_ | _| _ _|_ _ _| |_ _ | _ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| _| | | |_ _ _ | |_ _|_ _ _ |_ |_ _| | | _|_|_ | | | _ _|_ _ _ _ | | _ _|_|_ | |_ | _ | | |_ _| |_|_ | _ _| |_ _ | _ _ _|_ _| _| _ _|_ |_ _ |_ _ | | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_| |_ _| | | |_ _ _ _ _ | _| |_ _ | _| _| |_ _ | | | _| | | _ | | _ _ | _ _ _ _| _| | | _ _ |_ _ |_ _|_ | _| | _ _|_ _ |_|_ _ _ | |_|_ _ _ | _| |_ | | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ | | | _| _| _ _|_ |_ | _|_|_ |_ |_|_ | |_|_ _|_ | |_|_ _ _|_ _ _ _| |_ _|_ |_ _ | |_ _| _| _ _|_ _ _|_ | | | | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ | | _ _ _| _ _ |_|_ | _ _| | |_ _ |_ | |_ | | _|_ |_ _ _ |_| | _ _|_| |_| _| |_| | _| | | |_ _| | _ _ _| _| | _| |_ _ _| _| |_ _ _ _ | |_ _|_ _ | _| | _ _| _| _| | | _ _ _| | | _|_| _| _ _|_ _ _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | _| | | |_ _| | |_ _| _| _ _|_ _ _| _| _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_| _ _ _ | | |_ _ | _ _ _|_ _ |_ _| | |_ _ _|_ | | | |_ _ _ | | | | _|_ _ |_ _| |_|_ _| | |_ _|_ _ _| | |_ _ _ _|_ _ _| | | +| _ _|_| |_ _| _ _ _| _ _| _|_ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ | _|_ |_| | | | |_ | _|_|_ | | | _ _|_ _ |_| | | | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_ _ _ _ _ | |_ _ _ _ |_ _ |_ _| _| | |_ | _ | _ _|_|_ _ _ _ _ |_ _ | _| | | _| _ _ _|_ | | _| |_ |_ | |_ _| _ _| | | | _ _ _| | |_ | |_ _ _| _|_ | _|_ _ | | _ _ _ _|_ | |_ _ _| | _| | | _| |_ _ _ _ _|_ |_ _ _ _| _ _| | _| |_ _|_ _ _| _ |_| _| |_ _ _ _ _| _|_ |_ _| | |_ _ _ |_ _ | |_|_ |_ _ _|_| | |_ _| | _| |_ | | | | |_ _ _| _ _ _ _| |_ _|_| _ _ |_ _ | _ _| | | _|_ _ |_| _| | _| |_ _ _ _ _|_ _ | _ _|_ _ _|_ _| | _| _ _ _| | | |_ _|_ _ | _|_|_ | | | _ _| _ _ _| | | |_ _ _ _ _| _|_ _|_ _|_ _ | | _ | | _ _| |_ _ _ _ _| |_ _| | _ _| | | |_ _ _ _ _ _|_ |_ _| | _|_ _|_ _ |_ _ _| _ |_ | | _ _ _ |_| _| |_ _ _ _ _|_ |_ | _|_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_ |_ |_ _ _ _| | _| _|_ _ _| _| |_ _| | |_ _ _ | |_|_ _ |_ _| |_ _| | |_ _ _ _ _ _| _| |_ _| | _ _| | _ | |_| | | |_ _ _ |_ _ _ _|_ _|_ _ | | | _ _ _ | | | |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_| | | | _| |_ | _| |_ _ _ _ _| |_ _ _ _ _| | | _ _| |_ _ _ _|_ _ _ _ | |_ _ | _ _ | _ |_ | _ _| | _ _ | _ _ |_ _|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | _ _ _|_ | | |_| |_ | | |_ _ _ _ _| | _| |_ _ | |_ |_ | | |_| _| |_| _ |_ |_| _| _ _|_ _| _ _ _|_| | |_| _ _ _| | | |_|_ _ _ _ _ | | |_ _ | _| |_ _ | _ _| _ _|_ | _ |_ _ |_| |_ _ | _ _|_ | _| |_ _ _ _ _| _ _ _| _| | | |_ _|_ | |_ _ _| | | |_ _| |_ _ _ _| | | | |_ _ _ _| | _ _ _|_ _ _| _| _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ |_ | _|_ _|_ _ _| |_ | | | _ _| _| _ _ | | | | | |_ _| |_ _| |_ | _| _| | _ _| | |_ _ _ _ | _|_ _ _| | | | _ _| | +|_ | | |_ _ | |_ _| | |_|_ |_ _ | | | _|_|_ | | | _ _|_ _ |_| | | |_ | |_ _ _|_ _ _| | |_| | | |_ _ _ _ _| | _|_ _ _|_ _ | | |_ |_ | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | | |_ _|_ _ | | _ _| | _ _ | |_ | | |_ |_ _| | _ | |_ _| _ _| | | _|_|_ _ _ _ | _|_ _ _ _|_ _ _ _ _|_ _ |_ _ _ _| | _| _ _|_| |_ |_ |_ | |_ _| |_ _ |_ _|_ _ _| _ _ |_ _ | _ _| | | _| | | |_ | _ _ _ |_ | | | |_ _| | _|_ _ _ _ _| |_ _| | |_ _ _ _ _ _ _ | | _ _|_ | _|_ _ _ _ _|_ _ _ | _ _ | | _ | _| | |_ | |_ |_ | _| _ | | _ _ _| _| | |_| |_ | | |_ _ |_ | | _| |_ | _ _ _ _ |_| | | _ _ | _| _ _| _ _| | _|_ _|_ _| _ _ _|_|_ _ _ _ _| |_ _| |_|_ _ | _| | |_ _ |_ _ _| | | | _ _ |_ _| | |_ _| | | _ _ | _ | _ _ |_ _| | _ _|_ _| |_ _ _ _ | | _ _| |_ _ _ _ |_ _ | |_ _ _|_ |_| | |_ | _|_ | |_ _ _ _ _ | | | | _|_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ |_ | | _ _ _|_ _| _| | | _ | | _ _|_ _ _ _|_ _ _ _ _| _ _| |_ _ | |_ _ _ _ | |_ _ | _ _|_ | _ _| | | |_ | |_|_ | | |_ _ | | _ _ _ _ _ _ _| _|_| | _| |_ _| |_ |_ _| | | _|_|_ | | | _ _|_ _ | | | | _| | |_ | | _| |_ _ | _ _ _|_| _ _ _ |_ _| |_ | | | | _ _ | _| |_ _ | _| | |_ |_| _|_ | _|_ | |_ _| |_| | _| _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | | |_ _ | _ |_ _|_ | | _| |_ _ | |_ _ _ _| _ _ _| | |_ _ _|_ _ | _| _| _ _|_ | |_ _| _ _ |_ _ | _ _| | |_ _ | _ _|_ | _ _ | _| |_ _| |_|_ _ _| _| _| |_| | _|_ |_ _ _ _| _ _| | | | | | |_ |_ _ _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| | | | _ _| |_ _|_ _ |_ _ | _ _|_ |_ _ | |_| _|_ |_ _ _ _ _ _ _ _| |_ _ | _|_|_ | | | _ _| | _ | | | |_| _| _|_ _ _ | _ _| _|_ _| |_ _| |_ | | | | _ _| | | | |_ _|_ _ | _ |_ |_ _|_ _| _| |_|_ _ _ _| | _ _ _ _| | _ _ _|_ _|_ _|_ |_ _| +| _| |_ _| _ _|_ | |_ _|_ _ |_|_ _|_ _| | | |_ _ _ _ _| |_ _|_ _ _|_ _ | | | |_ | |_ | _ _ _ _ |_ | _|_ _ _ _ _ _ _| |_| | | _ _ _| |_ |_ _ _| |_ _| | |_ _ _ _ _ _ | | _ _| | _ _| | | |_ _| |_ _| | | _ _| |_ |_ _| _|_| | | | _ _| |_ _ _|_ _ | | _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ _ _| _| |_| _ |_ |_ _ _| |_ | |_ | |_ |_ _ | _ _ _| | | |_| |_ | | | |_ _ _|_ | |_| | _ _ _ | | | |_|_ _|_ _ |_ _ | | _ _ _ _|_ | | |_ | _| _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| |_ _ _ _|_| _|_ _ _| | |_| _|_ _ _ |_ _| _| |_ _| |_ _ | _ |_ _|_ | | _| |_ _ _| | | _|_ _ |_ | | | | | _| | _| _|_ _ |_ |_ _| | |_ _ |_ _ _ | |_ _ _ _ _ | | _ _ _|_ _ | _|_ _| |_ _|_ |_ | _|_ _|_| | | |_ _| _| | _ _|_ _| _ _ _| _|_ | | | _ _| _| _ |_ |_ | |_ _ _|_ _| _|_ _ _ _ | _ _| |_ _ _ _ _ _| |_ |_ _| | |_ |_ _|_ | _ _| |_| |_| | | |_ _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| _| _|_ _| _ _ |_ _ | |_ _ _| | | | _ _ |_| | | _ _| | | _ _| | | _| |_ _ |_| | _ _| |_ |_ | _| | | | _ _ _|_ _ _ _| |_ _ _| _ _ |_ _ | _ _| |_ |_ |_ _ |_ _|_ | |_ _ _ _ _| |_ _| _ _ _| _|_| | | |_ _|_ | | |_ |_ | | | | _ _ |_ _ | | | | | |_ |_ | |_|_ | _| |_ _ _|_ | | | _| |_ _|_ |_ _| |_ _ |_ _ | _| _ _|_ _| | | _ _| |_ | _|_|_ | | | _ _| _ _ _ _ | | _| |_ _| | |_ _ _| | |_ |_ _ | _|_ |_| |_ _| |_ _ _ _ | |_| | _| |_ _ _ _ _| _ _ _|_ | | |_| |_ | | |_ _| | |_ _ |_ _| _ _|_ _|_ |_ |_ | _ _ _ | | _| _ _|_ _| _ _ _ _| | |_ _| _|_ _|_ _| |_ | |_ _ _ _ _ _ _|_ _ _ _ _ |_ _ _ | |_ | | |_ |_ _ _ _ |_ _ | |_ _| |_| |_ _| | |_ _ _| _ _ |_ _ | _ _| | | _|_ _ _ _ _| |_ _| |_| | | | | | | _| _|_ _ _ _ |_ _| |_ _ _ |_ | |_ |_ _| | | |_ _ _|_| |_| _ | _| | _ _|_ | _ _ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | +| _ _| _ _| | | |_| | _ |_ _ | _ | _|_|_ _ | _ _| _| _ |_ _ _| |_ | |_ _ _ _| |_ | _|_ _| _ _ |_ _ | _ _| | _| _| _ |_ |_ |_ _ _| |_|_ _ _ _ | |_|_ | _ _|_ | _ _| _ _| | _|_ _ _ _|_ | _ _ _ _| _| _| | |_ _| |_ _ |_ _ _ _|_ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _| _| _ _|_ | _ _| _| |_ _ _ _ _ _|_ _ _ _ _ _| |_ _|_ | | _| |_|_ _ | _|_ _|_ _ | _| |_|_ _ _ _ |_ _ | | |_ _ _| |_| |_|_ _|_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | | _| _ _ _ _| | _ _ _| |_ _ | | _ | _| _| | | |_ _| | |_ |_ _ | _ _| | _ |_| _| _| | | |_ | | |_ _ | |_ |_| _ _| | _ |_ _ | |_ _|_ _ | | | |_|_ _| _ |_ | _ _| _ |_ |_| _ _| _|_ _ _ _ _|_ _|_ _ _ _ _ _|_ |_ _ _| _ |_ _ _ _| |_ _| | _| _| _ _|_ | |_ | _ | _ _ _ | _| | _ _|_ | _ | |_| _| _ _| _| _| _ _ _|_ _ _ | _| _| |_ _| | _ _| | | | | | | | _ _| _| | | | |_ _| _ _| | | _ _ _| | | |_|_ | _ | |_ | | | _| | _| | | _ _| | | | | _|_| |_|_ _ _| | | _| _ _ _| | | _|_ _ _| |_ _ _| _ _ | | | _ _ _|_ | | |_| |_ | | _| |_ |_ _ _ _| |_|_ _ _ |_ _ _ _ _ | _ _ _ _| |_ _ _ _ _|_ |_| _| | |_ _| | | _| | _| |_ _| | |_ _ _| |_ _ | | |_ _| _ | | |_| | |_ _ _ | |_ | | |_ _ |_| |_ _| _ _ |_ _ | _ _| | _|_ _ _ _ _| |_ _| _ _ _ _| _ | | |_ _| | _|_|_ _ _ | |_|_ | | _ _|_| |_|_ _ _| | | |_ _ | _|_ _|_ _ | |_ _ _ | | _| _ _ _ |_ _|_ | | _| |_ _| | _|_ _ _| | | _ _ | _| _ |_ _|_ | | | |_ _| _ _ |_ _ | _ _| | _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _|_ | |_ _ _|_ _ _ _ | _ _ _ _| | | _ _|_ _ _| _ |_ _| | _ _ _| | | |_| |_ | | | |_ _ |_ _ _ _|_ _ _| _|_ _| |_| _| | | _ |_ | _|_ | _ _ _ _| | _| _ _| | | _| _ |_ |_ |_ _| _|_ _ _ _ _|_ | _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | +| | | | |_ _| |_ | | _| | _ _| |_| _|_ _ _ _ _| _|_ |_ _ _| | _| _| _ |_ |_| | _ _ _ _|_ |_ | _ _ _|_ | | |_| |_ | | |_| _| _ _|_ | | | _ _|_ _ _ | _| |_ _ |_| | _ _| |_ | | _| | _| |_| | _| | | _ _ _| | | | _|_ _ | | | _| |_| | _|_ |_ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | |_| |_ _ | | _| |_ _ _ _ _| _ | | _|_ | | _ _ _ _ | |_ _ |_ | | |_ |_ _ | _|_ _ _ |_ | _| | | |_ _ | | _ | _ _| |_ _| _| _ _| _ _| |_ _ | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _|_ _ _| _ _ |_ _ | _ _| | _ _| | | |_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _| _|_ _ _ _| | | _| |_ | _|_| | | _ _ | |_ |_ _ | _| _ _|_ _| | | |_ _ _ |_ _| | | _| _| _ _|_ | |_ _ _ _ _| |_ |_ | _ _ _ _ | |_|_ _ _ _ _|_ | _| _ _ _| | _| |_ _ _ _ _| | _|_ | |_ _|_ | |_ _ |_ | _ _|_ |_ _ _| _|_ |_ _ _| _| _| | | _| |_ _ |_ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ |_|_ _| _|_ _ _|_ _ | | |_ _|_ | _|_ |_|_ |_ _|_|_ _| _| | _| | |_ | |_ _| | |_ _| _ _ _ _| | | |_ |_ _ _| | | _ |_ | _ _| | _| |_ |_ _ | _ _|_ _|_ | | _| |_ _ | _| | | |_ _ | | | _ _ _ _ |_ _| | _| _ |_ |_ _ _| _ _ _| _| | |_ | _| |_ _ _| | | | _ _|_ _ _ _ _ _ _|_ _|_ _ _ | _|_ | | _| _ _ |_ _|_ |_ _| | | |_ | _ _ _| _| | |_| |_ | | | _ | _ | _ _ _ _ _| _|_ _| |_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| |_ _| _ _| _ _ _ _ | |_ | | |_ _|_ _ _| _| | | | |_ |_ _ | _ _ |_ _| _| |_ _ _ _|_ _ _ _| _ _ _ _ |_|_ _|_ _ _ _ _ | | |_| |_ | | | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ _ _ | |_ _| _ | | _ _| _ _ _ _| |_ |_ _ | |_ _ | _| |_ _|_ | | _| |_ _ | | |_ | |_ | _ _ | _| _ |_ |_ _| | |_| _ _|_ _ _ |_ _ _| | | _| _| _ _| |_| _| _ _|_ | | |_ _ _ |_ _ | |_ _| |_ _ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | +| |_| |_ _|_ _ |_ _ | _| _| | _ _| _| |_ _ | | | _ _ _|_ _| _| _| _ _|_ | |_ _ _| |_ | |_ _ | _|_ _|_ | | _| |_|_ _| |_ _ _ _ _|_| |_| | _ |_ _ | |_ _ _| | | _| _ _ _| | |_ _| _|_| | _| _ _|_ _| |_ |_ _ | _ _| |_ _ | | | | | | | _| _ _|_ _|_ | |_ |_ _|_ _|_ | _|_|_ | | | _ _|_ _ _| | | _| |_| | |_ _ _ _ | |_ |_ _| |_ |_ |_ _ | | _| |_ _ |_ _ | |_|_ | | _ _|_| |_ _ _ |_ | _|_ | | | | | _|_ |_ | _ _| | _ _| _ _| | _ _| | |_ _| |_ _| _|_|_ | | | _ _|_ _ _ | | |_ _|_ _ | _ _ _| | | |_| |_ | |_ _ _ _| | |_| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _ | | _| | | _ _|_ _ |_| |_ _| | | | _| | |_| _ _| _ | _|_|_ | _| | _ _| | | | _| |_ _ _ _ _|_ | _ _ _ _|_ |_ | |_ _ | | _| |_ _ |_ _ | | |_ _ _ | | _ _| |_ _ | _| _|_ _| |_ _ _| | |_ _ _|_ | | | _ _ | _ _ _| _ | _ _ _| _ |_ _| _| | _| | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_| _| _ _ _| | | |_| | | | _|_ _ _ _ _ _ _ | _|_ |_ |_| | _| | |_ | | _| _ _| | | | _ _| | |_|_ | _ | | | |_ _ _| _| _| | | _ _| | |_ |_ _ | |_ _ | | |_ _| _ _| | _ _| | | | _ |_| _| _ _|_ | _ | _ _ _| | _| |_ _ _ | _ |_ _| | | |_ _ _ | _ _ _ _ | |_|_ |_ _| |_ |_ | _ _ _ |_ | _| _|_| _|_ | _ _ |_ _|_ | | _| |_ _| | |_ _|_ _| _ _ | |_| _ |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _| _ _| |_ _ |_ |_ _| _| _|_ _ _ _ _| |_ | |_| | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_ _ _ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _| | _| |_ _ |_ _| | |_ | _| _ _ _ _|_ |_ _ _| | | _| | | _| | | |_ |_ _ | _|_ _|_ |_ _| | |_| _| _ _|_ |_ | |_ _ _| _ _ |_ _ | _ _| | | |_ _ | | | | _| |_ _ _ _ _| _|_ _ |_ _ _|_ _ _| |_ | | | | |_ | _|_|_ | | | _ _| | _ _ | | | +|_ | |_ _ |_ _ | |_ | | _|_ | _ | | |_ _ _ | |_|_ _| _ _ | | _| |_ _ _ _ _| | _| _ _|_ _ _|_ _| | |_| _ | | |_ |_ _ | _ _ _ _ _ _ _ | | _| |_ _ _| | |_ | | | | |_ | _ _ _| | _ _| _ _| |_ _| _ _ |_ _ _ _| |_ _ |_ _ | _| | |_ _| | |_ _| _ _ _ |_ _ _ _ _| | _|_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _| | _|_ | _ _| _| | _| |_ | _| | _| | |_ _ _|_ | | _| |_ | _ _|_ | | |_ _ | _| | | | _ _ _|_| |_ |_| | | | _|_ | _|_ _ | |_ | |_ _ _ _| | | |_ _ |_ _ _ _ _| |_ _|_ |_ | | | | | _ _ _ |_ _ | _|_|_ _|_ | | _| |_ _ _ _|_ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ _| | |_ _ _| |_|_ _| _ _ |_ _ | _ _| | | | | _| |_ _ _| | | | |_ _ _ _ _|_ |_ _|_ _|_| | |_ | _ _ _ _ |_ _ _| |_ |_ _ _| | |_ _ _|_ | |_ _ _| |_ _|_| _ |_| | | |_ | _| |_ |_ _ |_ | | | _ _|_ | _ | _| | |_| |_|_ _ | _|_ |_ _ | |_ |_ _ |_ |_ _ _ _| | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| |_ _ | _| _ _| | _|_|_ _ _| | |_| | | _ _ _ _ | |_ _| |_ _|_ | |_ | | | |_ _| | |_ _ _| | _ _| |_| |_| _ _|_ _| |_| |_| |_| | | |_ | | | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ | _ _| _ _|_| _ _| | |_ _| | | _| |_ _ _ _ _| | |_ _ | _|_ _ _ | |_| |_ _ _ _ _| | | _ |_| | |_ _ | | _| |_ _ | _ |_ |_ | | | | | | _| |_| _|_ | |_| _ | | | |_ |_ _ | _ _ | _ _| | _| |_| _| _ _|_ | | |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _| |_ _ | | |_|_ | _ _ _| _| _|_ |_ _ _ | | |_ _| _|_ | _ _|_ | | |_ _ |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _ _ | |_ _ _ | _|_|_ | | | _ _| _ _ _ _| | |_ _ _ _ _| |_ _ _|_ | | _ _| | | | | |_ _ _| |_ | _ _|_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | | _ _|_ | _| |_ _ _ _ _| | | | _ _ _| _| | |_| |_ | | |_ | _|_ _|_| | |_ _ _ _ _ | |_ |_ _ | | _ _ _ _|_ |_| | |_ _| _ _|_ _ _ _ _| |_ _|_ _| | | | | | | +| |_ _|_ _ _ _ _| | | _| | |_ | | | | | |_ _ _ _|_ | _ _| | _| | | |_ _| _ _ | _ _| | _ _ _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _| | |_ _|_ _ | |_ _ _|_ _|_| | | _| | _| _ _ _ _ _|_ _ _ _ _ | | |_ _| _|_ _ _ _| _|_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | | _ _ | _ _ _ _ |_ _ _|_| |_ _ | | | _| |_ | | | _ _ _|_ _ _|_ | | | _|_ _ _ _ | | | | |_ _| | _ _| |_ _| _ _| | _ _| | | _ _ |_ | | _| |_| |_ _| |_ _ |_ _| | | |_ _ _ _| |_ _| _ | _ _ _ | _ _|_ _ |_ _ _| |_ | | | _| | | _ _ | | |_ |_ _ | _ _ _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ _|_ _ _ | | _ _ _|_ | | |_| |_ | | | |_ |_ _ _| _ _| |_ | | _ | _ _ _ | | _ _|_ | |_ _ | | |_ _| _| _ _|_ _ _| _| | _| _ _ _ | | _ | | _ _ _| |_ | _| |_| _| | | _| | | |_ _ _| | _ _| | | |_ _| |_ _ _|_ | _ _| |_ _| | _| |_ |_ |_| | _ _| |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| _| | _| |_ | | |_|_ _ _ | _| | _| |_ _ | | _| |_ _ | | | _ | |_ | | |_| | _ _ _ _| | | | |_ |_ | | _ _ _ _|_ |_| | _| _|_| | | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ | |_ | | _ _| | |_ _ _ |_ _| | | _| | | _ _| | |_ _ _| _ _ _ |_| |_ | | _| | _| | |_ _ _|_ | | | _ _|_ | |_| _| |_ _|_ |_| | _|_| |_ _ _ _| |_ _| | |_|_ | | _ _|_| |_ _|_ _|_ _ | _| |_ _ _ _ _| _| | | |_ _|_ | _|_| _ _| | |_ _ _ _ _ |_ _|_ _ |_|_ _| _ _ _| | | _|_ _ | |_ _| | _ _ _|_ _| | _ _| |_ _| _ _| _|_ _| _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_|_ | | _ _|_| |_|_ | | _|_ _ _ _ _| |_ _| _| |_ | | | _ _ _ |_ _ _ | | | |_ _ _ | |_ _| _| _ _|_ _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| | | | | |_ _| _ _ _ _| |_ _ | | |_ _|_ | | _| |_ _ | | _ _ |_ | _ | _| |_ _ _| | | | |_ _ _| |_ | | _ _| | _ _ | | _ _ _ _ _| _| _| | | | | +| _ _ _ | _| _ _| |_ _| |_ _ _| |_| | | |_ _ _ _ _ | | | _|_ _ _| |_ | |_ | _|_ | _|_ |_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | | | _ | _| | | _ _ | | |_| |_| _| | | | | | _ _ _ _ | |_ _| _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | | |_ |_ |_| |_ _ _| | _| _ |_ |_ | |_|_ | _| | |_ _ _| _ _ | |_ _ | | | | _ | | | |_ _|_ _ _ |_ _ _ _| _ _| | |_| | |_| | | _| _|_| | |_ _ _ |_ | | |_ _ _ _ _|_|_ _ | _ _ _| _ _| _|_ _ _|_ | |_| | | _ _ _| _ |_ |_| |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _| | | |_ _|_ | | _ _ | | | |_|_ | |_ _ _ _|_ |_ _ | _ |_ _|_ | | _| |_|_ |_| _ | |_ | | | |_ _| _| | | | |_ _ _| | _| _|_ | | |_ | _ _| | | _ _| _ _| | _| _|_ _ _| |_ | | |_ _ | | _|_ _ _| _|_ _|_ _|_ _ _| | |_ | _|_ _ _| _| _ _|_| _ _ |_|_ | _ _| | | | _|_ _ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | | | | | | _ _| |_ _|_ _ _ _|_ _| | _| | _ _| | |_ _ _|_ | | | | | | |_ _ _ _|_ |_ _| _ _ _ |_ _|_ _|_ _ _ _ _| |_ _ _| |_ | |_ _ _| _ _|_ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _|_ _ |_|_ | | |_ _| _ _|_ |_| _ _| | _|_ _| _|_ _|_ _ _| | _ _ _ _ _|_ _ _ _ _|_ _| | | | _| _ _ _ _ | | |_ _ _ _ _|_ |_ _|_ _ _ _ _ _ | | | |_ _ |_ _ _| _|_ | _ _|_ | | |_ _ | _| _ _ _| |_ _ _ _ _|_ _ _| |_ _|_ _ _ _ _| _ |_ |_ |_ _|_ _ |_ _ _| |_ |_ _ _ |_ _ | _| |_| | | | |_ _ _ _ _ _ _|_ | _|_ _ _ _| _ _| | |_ _ _ |_ _|_ _ | _|_|_ | | | _ _|_ _ _ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| _ _ | _ |_ _ _|_ |_|_ _| |_ | | | _ _| |_ | | | |_ _|_ | _ _| | _ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _| |_ _| |_ | |_| _| | _ _ _ _| | | | _ _| | |_ |_ _ | _|_| |_ _ _| _|_ _| | |_ | _| _|_| |_| _| _ _|_ _ _| | _ _ _ _|_ _| |_ _| | _ |_ | | _|_|_ | +| _ |_ _| | |_ |_ _ _ _| | _| _|_|_ _ _ _| _| |_| | _ _ | _| _| |_ _ _|_ _| |_ _ |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | | |_ | |_ | |_| | | _| | |_ |_ | |_ _ _| _| |_ _ | | _| |_ _ |_ |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | | _| _| | _ |_| _| _ _|_ | |_ _ | _|_ |_|_ | _ _| | _| |_ _ |_| | | | | _|_ _| |_ _ _ _ | | _ | | |_|_ _ _ _| |_ _ _ _|_ _|_ _|_ _ | _ _|_ _ _|_ _ _| _ _ _ _ _| |_ _ | | |_ _ _ _ _ _ _|_ _ _| |_ _| _| _ _|_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| |_ _|_ _ _ _ _| | | |_ _| |_ _|_ _ |_ _|_ | |_ _ |_ _| | |_ _| | | |_ |_ _ | _ _| _| | _| |_ _ | | |_ _| |_ _|_ | _ _ _| _| _| |_ | _|_ | _|_ | | | _ _| | | |_ _ _ _ _ | _|_ _ _| | |_|_ | _ _ _| _ _ _ _ | |_ | | |_ _ |_ _| _| | _ _ _|_ | | |_| |_ | | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | _| | |_ _| |_ |_ _ |_ _ _ _| |_ | |_ | | _| _ _ _ | | |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_ _ _|_ _ _| _ |_ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| |_ | _ _|_ _ |_ _| |_ _ |_ _| _| _|_ |_ _| | _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | | | _ _| | |_ _ _ _ | | _ _ _ _ | |_|_ |_ _| _ _| |_ |_ | |_ _| | _ _| |_ _| _ _| | _|_ |_ |_ | |_ _ _ _ _| | _ _ | | |_ |_ _ _| _ _ _ _ _|_ _ |_ | |_ _ _ _ | _ _| | |_ | | _| |_ _ _ _ | _ _ _ _| |_ _ |_ | | |_|_ |_ _ |_ _ _ _ _ | |_ _ _ _ _| |_ _| _ _ _ | _ | | | |_ _| | _ _| |_ _| _ _| _ | | | |_ _| |_ | | _ _| _ |_ |_| | |_ _| | _ _ _| |_ |_ _ _ | |_ | _|_| _ _ _ _| |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| _ _ _ _| _|_ |_ _ |_ _ | _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | _| _ _|_| | |_ | | _ _| _ _| | | | _|_ _| _ _ |_ _ | _ _| | | _| _| |_ _ _| | +| | |_ _ | |_ | | |_ _| _| | |_ _ _| | _ _ _| _| _|_ _|_ _| _| | | | |_ | | |_ _ |_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | _|_ _ _ _|_ _ |_ _ _ _| _ _|_ _ _ _ _|_ _ |_ _ | _| | |_ _ _|_ | | _| |_ _ |_| _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | _|_ |_ _ _| |_ | | _| |_ _ _ _ _| | _ _|_| |_ _ | | | _|_ _ _| _| | _| |_ |_| _ |_ |_ |_ _| | | |_ |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _| |_ _ _ |_ _|_ _ |_ _ | _ _ _ _| _| _| |_ _ _ _ _|_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ | _ | | _ _ | _ _| _| |_ | _ _ |_ |_ _ | |_ | | |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ |_ _ | _|_ _ _| | | | _ _ _| _| | _| | |_ _| |_ _ |_|_ |_ _| | |_ _ _ _| |_ _|_ _ _| _|_ | |_ _ | _|_ _ | | _ _| | | |_| _ |_ _ | | _| |_ _ |_ _|_ _|_ | | _| |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _|_ _ _|_ _ _ _ | _ _ _|_ _ _ _|_ | _| | | |_ |_ _ |_| | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _ _ _| _| |_ _ | | _| | | |_ _|_ | _ _ |_ | | |_|_ | |_ _ _| | _ _| _ _|_ _| _|_ _ | _| _ _| | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| |_ _ _ _| |_ _ _|_ _ _ _| _ | | _| |_ _ | | _ _| _|_ _ | _| | |_ _ _ _| _ _| _ _| | | |_| _| _| _ _|_ _ _ |_ _| | |_ _|_ _ _ _ _ |_ | _ _ _ _| | |_ _| _| _|_ | | _|_|_ _ _ _|_ |_ _ _ _ _ _|_ _ _ _ _ _ _| |_ | |_ _|_ _ |_ _ |_ _ | _| _| _ |_ _ | | | | _|_ _| |_ _ _ | |_ _ _ _| _ _| _ _| |_ _|_ _|_ _ |_ _ |_| |_ _| _| _ _|_ | |_ _| _| _ |_ |_| _ _ _|_ _ _|_ _ |_ _ _| _ | _| | | |_ _|_ | |_ _ _ _ _| | |_|_ _ _ _ _ _| _| _ _ | | _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | _| _|_ | |_| |_ | _|_ _ |_ | _| _| |_ | _ _ _|_ | | |_| |_ | | |_ _ _| _| _|_ _ _| +| |_ |_ _ _ _| | |_ _ _ _| _ _| | |_ _ _|_ _ _ |_ _ _| _| | _ _ _| | |_| |_ _ |_ _| |_ _ |_ | _| | | |_ _|_ | |_ _ _ | | | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | | | _| _ _ _ | | | | _| _ |_ _ _| |_| | _|_|_ | | | _ _|_ _ _ | | | _|_ | | _ _|_| |_ _ | _| | | | |_ _ _ _| _|_ | | |_ _ | | |_| | _ | _ _ | |_ | |_| _| _ _|_ | | | _|_|_ | | | |_ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _ |_ _ _ |_ |_ _ | | |_ _ _ | _| | |_ _ _| _ _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ | |_ _| | |_ _ _ _ _ _| _|_ _ |_ _ _ _| | | | | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | _ _|_| |_ _ | |_| | | |_ _ | |_ | |_ _ |_ |_ | | |_ _ |_| _ _| | |_ _| _ _|_ _ _ |_ _ |_ _ _| | | _| |_ |_ | |_ _| |_ _|_ |_ _|_ |_ _| |_ _ _ _| | _| _ | | |_ |_ _ | _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ |_ | _|_| _| | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_| _|_ | _ _ _| | _ |_ _|_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _ |_| | _ _| | _|_ | _ _ _| _ _| |_ | _| |_ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ | | _ |_ |_| _ _ _ _ |_ _| | |_ _ _| | | | | |_|_ |_ _|_ | | | |_| _ | | |_ _ | _|_ _| _| | | _ _ _ | _ _ | _| |_ _ _ _ | |_ _ | |_ _ | | _ _| | _ _|_ _ _ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | _ |_ _ | _ _| | |_ _ |_ _ _ _ _| |_| _| |_| _| _ |_ |_ |_ |_ _ | | |_ _ _ _ _ | | |_ _ |_ |_ | _| |_ _ _ _ _| | _| _| _| _ _|_ | | _ _ _ _ | |_ _ _ | |_|_ _ _| |_ _|_ _ _ _ _|_ _ _ |_ _ |_ _|_ _ |_ _ _| _ _ _| | |_ _ | |_ | _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ | | |_ _ _ _| |_ _ | | _| |_ |_ _|_ |_|_ _ | _ _|_ _|_ | | _| |_| _ _ _|_ _ | | +|_ _ _| _| | _| _ |_ _ | _ _| | | | _ _ |_ | _| _|_ _ | _|_|_ | |_ _ |_ _| _ _ | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | | _ _ | _| | | |_| _| | _ _ _| | _| |_ _ _ _ _| |_ _| |_ | | | | | | _ _|_ | | |_ _ | _ _ _| | |_ |_ |_ _ | | _ _| |_ _| _ _| _| _| | _| | | | | _| | | _| |_ _ _ _ _| | |_|_ _ _ _ _| | _| | _ _| |_| | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| _ _| _ |_ | _ _| | _| _ _| |_ _ |_ | _ _ _| _ | _| | | |_ _|_ | | _ _ | | | |_ _ _ _|_ | _| |_ _ _ _ | |_ _ _ | | | | _ _| |_| |_| _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ | | |_ _ | | | _|_|_ _| | | _|_ _ | | _| |_ _| |_ | |_ | | | |_|_ _ | | _ _| | _ |_ _| _| _|_ | _|_ _ _ _| | | |_ _ _ | _ _ _ _|_ _ _|_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | _|_|_ | | | _ _| | |_ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _|_ _ _ | |_ _| |_| _|_ | | _ _ | _|_|_ | | | _ _| _ |_ _| | | _ |_ _ |_|_ _ | _ _| _ _ _ _ | | | _ _ | _ _ _| |_ _ _ _ _ _ |_ |_ _ |_ _ |_ | _| | _ _|_ _ | | |_ _ | |_ _ _| | | | | | |_ |_ _ | _|_|_ | | | _ _| _ _ _ | |_ _| _|_| _| _ _|_ | | | _| | _ _| | _ _ _| | | |_ _|_ _ |_|_ _ _ _| | |_ _ _|_ |_|_ _|_ _ |_ _| _ _ _| | |_ | | |_ | _|_| _ _ _ _| _| |_ _ |_|_ _ _| |_ | _ _ _ _ _| |_ | |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _| _ _| | | _ _| |_ _ _ _| |_ _|_ | | |_ |_| _| _ _|_ | | _| _| _|_ _|_ _ |_ _ | | |_| | _ _| | | | | |_ _ | _ _|_ _| _| |_ _ _ _ _| |_ _ | | _| |_ _ | _| | | _ _| | _ _ | _ _| | | |_ _| |_ _ _ |_ _ | |_ _ | |_| _| | _| _ | | | _| | |_ _ _ _| _ _| | |_| |_| | | _ _ | |_ _ _|_ _ _ _|_ _ |_ _ _| | | _ _| | |_ |_ |_ _ | _ _|_| | | +| |_ _| _| | |_ _ | | |_| |_ | | |_ _| _| | | | |_ | _|_ _| | _ _| |_| | _| _ _| | _| | _| | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | | |_ _ _| |_ _ _| |_ _|_ _ _| _ | | | _ _ |_ _ _ _ _ _| |_ _ |_ _ _| |_| _| | _ _| |_ _| _ _|_ _| | |_| _| |_ | |_ _|_ _ _ _| _ _| |_ _ _| _|_ | _| | | |_ |_|_ _ | _ _ _| _|_ _ _ _ _ _| |_ _| | | _ _| _| | |_ |_ _ _| _|_|_ | | | _ _|_ |_ | | | _| _ _| _| | |_ _ _| | |_ _ | _ _| _ _| _| | _| | | |_ _ _| |_ _|_ _ _ _ _| _|_ _ |_ _|_ _|_ _ |_ _ _| | _ | | _| |_ _ |_ _| |_|_ _|_ | _| _| _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| | _ _| |_ _| _ _|_ |_ _ _| | _|_ _ _ _| _|_| _ _ _ _ |_ _ _ _|_ _ _|_| _ _ |_ _ | _ _| |_ |_ _ |_ |_ _ |_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ _ _ _| |_ _| | | | |_ | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _ |_ _| | _ _| | _| _ _ _|_| | |_ _ _ _ _| |_ _| |_ | | | | |_ |_ _ |_ _ _| | | | | | |_ |_ _| _| |_ _ _ _|_ _ | _ _ |_ _ _ _| | | _| | | |_ |_ _ _| | |_ _ | |_ |_ | | | | | |_ _ _ _ _ _| |_ _ _ _ _| |_ _| _| | _| | | | _ _| | | |_ _ _ _ _|_ _| | |_ _| | _ _ _| | | |_ |_ _ |_ |_ _ |_ _ | |_ _ _ _ |_ _ |_ _ | |_|_ | | | |_ | | _ _ | _ _ |_ _ _| | | _ | | _ | |_ | _ _ _ _|_ |_| | _ _| _ | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_| | | _ _| |_ | _| _ _ _ _|_ |_ | _|_ _| | _| |_ _ _ _ _| | | _ |_ _ | _ |_ _ | | |_ _ | | _ _| |_ _| |_ |_| |_ _ _| _ |_ | |_ _ _ _ _ | _ _| | |_ _ _| _| | | _|_ _|_ _ |_ _| _| |_|_ _ _ _|_ | |_ |_ | |_ _ | _ _| | |_ | _| | _| | |_ _| | | | | |_ _|_ |_ _|_ _ | | | |_|_ _ _ _| _ _|_ _| |_ _ | | _ _ _ _ | |_|_ | | _|_ _|_ _ | |_|_ | _|_ _| | |_| _ _ _| | +| |_ _ _ _| _ _| | |_ _|_ | | _| |_ _ _ _| _ _ _| | _|_ _ _ | _|_ _|_ _ _ |_| |_ _ _| | _ _ _|_ _|_ _ _ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | _| | |_ _ | _|_|_ | | | _ _| _ _ _ | |_ | | |_ _ | _| _ |_ |_| | | | |_ _| _ |_ _ | |_ _| _| _ _| _ |_ |_ _ |_ _ _ _| _ _| _ _ _|_ _| _| _ | |_ _ |_ _ | | |_|_ _ _ _| | | | _|_|_ |_ | | |_| | | _ _ _| | _ _ _ _ _ _ _ _| |_ | | _| _|_ | |_ _ _ _ _| |_ _| _ _|_ _ _| | |_ | | |_|_ |_ _ _ _ | |_ _| | |_ _ _ _ _| _| | | | | _|_ _ |_ | | _ _ | | _|_ _ |_ _ _ _ | |_ _ |_ |_| | | | | |_ _ _| | | _ _| _ _ | | |_ _ _| _| _| | | |_ _|_ | |_| _ _ | | |_ _ _ |_ _ _ _| _ _| _| _| |_ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_| |_ | | _|_ |_ | | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ | _ _ _ _ _|_ _| | |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | _ _| | | |_| |_ | | |_ _ _ | _ _| | _ _| | _ _ _ |_ | | _|_ _| |_ _ _|_ | | _|_ _|_|_ | |_|_ _ _ |_ _ |_ _ _ _ | |_ _ | | | |_| _ _| _ _ _| |_ _ | | |_| _|_ _ _ _|_ |_ _ _| |_ | |_| _ _ _ _ | _ _ |_ | | _ _ _| | _|_ _| |_ _ _| |_ _ _ _ _ _ _ _ | | |_ _ _ _|_ _| _ _|_| |_ |_| | _ _| | | | _ _| | _| |_ _ |_ _ |_ | | _ _| | |_ _| | | | | _| |_| |_|_ _ | | _ _|_| |_ | |_| | _| |_ |_ _ _| |_ | | |_ | |_ _ _| | _|_|_ | | | _ _| _ | _ _| | | _ _| | |_ | | | | | | |_ _ _| |_ | | | _ _ _| | |_ | _ _ _ _ _ _|_ _|_ | | | |_ _ _ _| | |_ _ | | |_ | _| _| _| | _ _ _ _|_ | |_ | _ | | |_ | _| _ _ _ _ _ | | _ _| | _| | |_ _ _ _ | |_ _| |_ |_ _|_ | |_ |_| _|_ _|_ _| _|_ _|_ _ _ _|_ _|_ _ _ _ _ _ _ | |_ |_ _|_ _ |_ _ _| _ _ _ _|_ |_ |_| _ | | _| |_ _ | | |_|_ _ _ | | |_ | _ _| _ | _|_ _ _ _ _ | | +| _ |_ _ | _ _| |_ | | | |_ |_ _ | _ _| _ _ _|_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _ _ _ | |_|_ _ _ _| | | _ _|_ |_ _|_ _ | |_ _ _ _ _| |_ _| _|_ |_ _ |_| | _|_ _ _| _| | _| _ _|_ | |_ _| | | |_ _ |_ _| | | _| |_ _ | |_ _| _| _ _|_ | |_ | _| | |_ _| | _ _ _| _|_ |_ _ | | | _ |_ _|_ _ |_ _ | _| _| |_ _ _ |_ |_ | |_ |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_|_ _ _ _| |_ |_ _ _ _| _ |_| | _| _ _ _| |_ |_ _|_ _ |_ _ | |_ | _ _| |_ _ | _ _ _| | _|_| |_ _ |_ _ | |_ _| | |_|_ _ _ _ _ | | _ _|_ _ _| | |_ _ _| _|_|_ |_ | | | | _ _| _ _| | |_ _ _ _ _|_ _ _| |_ _|_ _ _ _ _| |_ | | | |_ _|_ _ |_ _ | | | | |_ _ _ _ _| | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ |_ |_ _| | |_ | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _ _ | _| | |_ _ _ _| _ _| | _|_|_ | |_ _| _ _ _| _| _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | |_ _ _ _| |_ _|_ | | _| |_ _ |_| | | | | _ _| |_ _ _| | | | |_| _ |_ |_ _| _ _| | |_ _ _ | |_|_ _ _ | | _ _ | | _| |_ _ |_ _|_ |_ |_ | _| | _| | |_| |_ |_ _ _ | | _| _ |_ |_| |_ _ | | _| | _ _| _| | | | _ _ |_| _ |_ |_ _ | | | _ _ _| _ _| |_ _ | _ _| |_| _ |_ |_ | | | _ _| |_ _|_ |_ _ _| | | _ _| | | |_ | _|_ _|_ _ |_ _| |_ _|_ _|_ _ _ _ _|_ _|_ | | | _|_ _ _|_ |_ |_| _| _ _|_ _ _| _| _|_ _ _ _ _| |_ _ _ _ _| |_ _| | | _|_ _ | |_ _| _|_ _ | | |_ | |_ _| _| _ _|_ _ _| |_ _| _| |_ | |_ _ | _ _ _ _ _ _ _| | |_ _ | _ _| | | |_|_ | | |_ _ _| _| | |_ _ | | |_| _|_ _| | |_|_ | | |_ _ _| _ _ |_ _| | _ _| | | _|_ _| |_ | _| |_ _ | | _| _ _|_ |_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_|_ | | _ _ _|_ _ |_ |_ _ _| |_ |_ |_ _| | |_ _ _| | | | | _ |_ _|_ _ |_ _| _ _| _|_ _ _ | |_ _| | +| | | | |_| |_ | | | | | |_|_ | | _ _|_| |_ _ |_ _ _ _| |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _| |_ _ |_ _ |_ | |_ | |_ | _ _| |_ _ |_ | _ _| _| |_ |_ | _|_ _ |_ | _| |_ _ _ _ _| | | _|_|_ | | | _ _| |_ _ _|_ | |_ | | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_|_ _ _ | | _ |_ _ _| | | | | | |_ _ _ |_ _ | | |_ _| _| |_ _ _ |_|_ |_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ |_ |_ _ _| | |_ _ _| _ _| _ |_ |_ _ _ _ |_ _ | | |_ _ _| | | | _| |_ _ | _|_ _ _ | |_ _ |_ _ _| | |_ _ _ _ | _| | | |_ | _| | _ _| _| | |_ | | | _| | | |_ | _| _ _|_| |_ _| | | | _ _ | _| _| |_ _|_| |_ | _ |_ _ | | |_ |_ _|_ _ |_ _ _| _ |_ _| | | _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | |_ |_ _ | _ _ | _|_ | | | |_ _ _ | | _|_|_ | | | _ _|_ |_ | | | | | |_ _|_ | | | _ _ | | | |_ _ _ _ _ |_ _ _ _| |_ |_| _| _| _ _|_ | | | _ | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ _ _| | | | |_ |_ _ | |_ _ | | | | | |_ |_ _ _| _ _| _ _| _| _ _|_ | _|_ _| _ _ |_ _|_ _ | | | |_ _| _| |_| |_ _ _| _| | _ | | _ | | | _| | | | | |_ _ | | |_ |_ _| _| _| _ _|_ | |_ _| | |_ _ _|_ _ _ _| _| _|_ |_| _| _ _|_ | | | |_ _| _ _ |_ _ | |_ | |_ _| | _| _| _ _|_ | | |_|_ |_ _ | _| | | _| | | | | |_ | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | | | | | _| | | _ _| | _ _ | | | _ _ | _| _ | |_ | | |_ _ _ _| |_ _| _ _ _| |_ | |_ | _ _| | _ |_ _ _| | | _| _| | |_ | | _ _ |_ _ | |_ | | | | _ _ | |_| _ _ _| _| |_| _ _| |_ _|_| _| _ |_ _ _ _ _| | _ _ _|_ | | |_| |_ | | | |_ | _|_ _ |_ _ _| | | | |_ _| | _ _ _ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| | _ _ _ _ | |_ _| _| _ _|_ _ _| | | _ _| _| _ _|_ _ _| |_ _| _ _ _ | _| | | |_ _ | |_ _|_ _ | | +|_ |_ _|_ | | _| |_ _ |_ | _ _|_ | | |_ _ | |_ _ |_ _ _| _|_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ |_ _ _| | | | | _|_ | | |_ _ _ _| |_ |_ _ _ _| | | | _|_ _ _ _ _ |_ _| |_ |_ _ _| |_ | _ | _| |_ _ _ _ _| |_ _| | _ | _ _| | _| | |_ _ _ _ | _| | | |_ | |_ _ | _| | _| |_ _ _ | | |_ _| |_ _ _ |_ _ | |_|_ _ _ _ |_| |_ _| | | _ _|_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ |_ _ _| _ _ _|_ _ _ _ _| _| _ _|_ | _ | _ _| | | _| | | | | | |_ _| | _ _ _ |_ _| |_ |_ |_| _ _|_ | | _|_ | _|_ | | | _|_ | _ _ _| |_ | | | | _|_ _| |_ _| | _| _ _ _| | _ _| |_ |_|_ _| | |_ _ _ _ _ _ | _| | | _ _ _| | |_ |_ |_ |_ _ | |_ _ _|_ | |_ _| |_ _ | _|_|_ | | | _ _|_ _ _ _| | | | | |_|_ | | _ _|_| |_ _| _| _|_| | _ _ _ _| |_ _ _ _ _| |_ _| _ |_| |_ | | | | |_ _|_ _ _ _ _| |_ _| _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _| _| |_ _ _ _ _|_ _| |_ _| |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_ | _|_| | |_|_ | | _ _|_| |_ _| | | |_ | _ |_ | _| | _| |_ _ _ _ _| _ |_ | |_ _ _ _ _ _ _|_ _| |_| |_ _ _ _ _ _| _ | | |_ | |_| | _| | | |_ _ _|_ _| | _ _ | |_ _ |_ | | _| |_ _ _ _ _|_| | _| | | _ _| _|_ _| |_| | _| |_ _ _ _ _| | |_ _ | _ _| _ _| | |_ _ | | | _| |_ _ _ _ _| |_ | | _ _|_ _|_ _| |_ _| | | _| |_ | |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_|_ _|_ _ _ _|_ _ | _|_| | |_| | |_ _| _| _|_ |_ | |_ _|_ _ |_| |_ |_| _ |_ |_ _| | _| _| | | |_ | _|_ |_ _ _|_| _ _|_ _| _| _| | |_ | _| | | | | _| | | | | |_ _|_ _| |_| |_ _ | | | | _| | | _ _ _|_ _|_ |_| _ _ _ _ |_ _ | _ |_ _|_ | | _| |_ _ | |_ _ |_ _ |_ | | |_ _ _ _ _| _ | | | _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _ | _ |_ | _ _| | _| _ | _|_ _ _ |_ _ _| |_ | | | |_ _|_ | | |_ _|_ _ |_ _| | | _ |_ | +| _|_ | | |_ |_ _ | _|_ | | _ _| |_ _| _ _| |_ |_ _ _ | |_ _| _ _ | _|_|_ | | | _ _|_ _ _ | | | | | _ | _ _| | |_|_ _ | _ | |_| _ _ _ _|_ |_ | _ _ _ _|_ _| _ _ |_ _ | _ _| | _|_ | _ _|_ _| |_ _| _| _ | _ _ _ | | |_ _| | | | | |_ | _ | | | | _| |_ _|_ _ _|_ _ _| | | _|_ _ _ _ _ |_ _ _|_ _ | _ _ _ _ _ _|_ _ _ _ |_ _ | _ _| | | | _ _ | _|_|_ | | | _ _| _ _ _| | | |_| _| _ _|_ _ _| _ |_ _ _ _ |_ _ | _| |_ _ _ _ _| |_ _| | _ _| |_| _| | |_| | |_|_ _ _| _|_ _ _ _| _| _ _ _ _| | _ _ _ _|_ _|_ _ _ |_ | |_| | |_ | | | | | |_ _ _ _|_ |_| _ |_ |_| |_ |_ _ | | | | | | | | _ _|_|_ _ _ _ | |_ _| _| | |_ | _ _| | _| |_ |_| _ _| |_ _ _ _ _|_ |_ _ | |_ _ _ _ _| |_ _|_ _ _ |_ _| | | |_| |_ | _ _|_ | | |_ _ |_ _ _| | | | | |_ _ _ _ _ _ _| _ | | |_ _ _| |_ _ |_ _ _ _ | | |_ _ _ _ _ _ | |_ _ | _|_ _ _| |_ |_ | |_ | | _ _ _ |_ | _ _ _ _ |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ | | |_ | |_ _| |_ | | | | |_ _ _ | | _ _| | | |_ _ _ _ | | | _ _ _| | | | | | | | | | | _|_ _|_| |_|_ _ | _ |_ _| | |_ _ | | | | |_ | _ _ _ | | | | _| |_ _ _|_ | | _ _ _|_ _ | |_ | _ _ _| | _ _|_| |_ _ _| |_ _ |_ _|_| | |_ _ _ | |_ _|_| | | | _ _ _ _| _ _|_| |_ |_ | _|_ _ _ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| | _ _ _ _ | |_ _| _ | _|_ | |_ _ _|_ |_ _ |_ | |_ _ | _ _| _| _| _| _ _|_ | | _| | | | _ _ _|_ _ _|_ _ |_ _ _ _ _| | _ _ _| _| _|_ | |_ | | | | |_ _ _| | |_| | |_| _ _ _ _|_ |_| _ _| | | | |_|_ _ | |_|_ _ |_ | | _| |_ _ | _| | |_ _ _| | |_ |_ _ | _ _ |_ _ |_ |_| | | | _ _ _ |_ _| | _| | _ _| |_ _|_ | _|_|_ | | | _ _| | _ | | | |_ _| |_ _ | |_ |_| _|_ | _|_| | _ _|_ _| _ _ |_ _ | _ _| | | | |_ _|_ _ _ _ _| | | | |_ _ | _|_ |_ _ _| +|_ _ _ | |_|_ | | _ _|_| |_ _| _ _ _| _ _|_ |_ |_ _ _|_ _ | | _| _ _| |_ _ _ _ _| |_ _| | _ _ _|_ | |_ | |_ _ _|_ | | | _ |_| | | |_ |_ _ _| |_ | |_ _ | | _ _ _|_ | | |_| |_ | | | |_|_ _| _ _ |_ _ _ _ _ _| |_|_ _ | |_ _| _| | | | |_| |_| _| | | | |_ _| |_ _ _ | _ | _| _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| |_ | |_ _| |_ _ | |_ _ _ _ _| |_ _|_ _ _| _| | _| | | _ _| | _ |_ _ |_ _ | | | |_ | | |_ | _ _ | | _ _|_ | _| _| _|_ | |_ _ _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_| | | _| | | | |_ |_ _ _| _ _ |_| _| _ _|_ | |_ _|_ _ _ _ _|_ | | | | _| | |_ _ _ _ | _| |_ _ |_ |_| | |_ | | | |_ _ | | _ _| _ _ _ _| |_| _ | | _ | | _ _ | _| | _ _ _| |_ _ _ |_ _| | _ _| |_ _| _ _| _ _ _|_ _|_| |_ _| |_ _ _| _ _ _ _ _| _| | |_| _ |_ |_ | _ _| | |_ _|_ _ _ _ | | |_ | |_ _| _| _ _|_ _ _| | |_ | _| | | _ _ _ | |_ | _ | _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _|_|_ |_| | _|_ _| | | | |_ | _ _| | | | _ _| |_ _ _| _| |_ _| |_ | _ _| |_ |_| |_ _ _|_ _|_ _ _|_ _| _ _|_| _ |_ | | | _ _| |_ _| _|_ |_| |_ | |_ _ | | |_ _| | |_ _ _ | | _ _|_ _| | _| _|_ | |_ _|_ |_ _ _|_ | | |_ _ | |_ _ _ _| _ | _|_ | | | _| |_ _ | _ _|_ |_ _ _ _| |_ _ |_ |_| _| | _ _ _ | _|_ _ _ | _|_|_ | | | _ _| _ _ | | | _ _|_ _ | | _| |_ _ |_ _| |_ _| _|_ | _ _ _|_ _| |_ _| | |_| _ _ _| | _| |_ _ _ _ _|_| | _ _| | | _ _ _ _ | |_ _ |_ _ _ | |_ _ | |_ | | _ _|_ |_| |_ |_ |_ _ |_ | |_ |_ _ _| |_ | | _|_ _|_ _ | _|_ _ _ _ | _|_ _|_|_ _ _|_ |_ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ |_ | _ _|_| |_ | | | _ _|_ | | | |_ _ _ _ |_ _ _ _ _| |_ _| _ _ _| _|_ | | |_ | _ | | | |_ |_ _| |_ _ |_ _ | _ _ _|_ | | |_| |_ | | |_ | _ |_ | _| | |_ _| _ _| | | _ _| _ | +| | _ _|_ | _ _|_ | | |_ _ |_ | | | | _| _ _ _| _ _ |_ _|_ | | |_ _ | | _ _ _ _| | | | _ _ _| |_ | | | | | | |_ | | _| _| _| _| _ _|_ _ _| _ _| | |_ _ | | |_ _|_ | | _| |_ _| | _ _ _| _| | |_ _ _| | _ _ | |_ | _|_ |_ _|_ _ _ _| _| _| | _| | | _ | |_ _| _ _|_ | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ _ | | |_ | _ _ _ _ _ | |_ |_ _ _| |_ _ | _|_| _|_ _ | | |_ _| |_|_ | _|_ | |_ _| _| | | |_ _ | | | _| |_ _|_ | _ | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | | | | | | | |_ | | _ _ _|_ | | _| |_ _ _ _ _| | _ _ _ _ | |_ _| | |_ _| | _ _| | _| |_ _ _|_ | | _| _| | | | | _|_| _ |_ _|_|_ | | | _ _ _ _|_ |_ |_| |_| _|_ |_ _| _| | | _ _| _ |_ |_ | |_ _ |_ _ _ _| _ _| | _ _ | | _ _ _| | _ _ _|_ _ _| _|_ _| _| _ _|_ |_ _| _ _| |_ _ _ _ | |_ _| |_ | | |_ | _ _| | _ _| _ _| _| | |_ _|_ _ | _|_ | | | _| | _ _| | | _| | | | _ _| _| | | | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| | _ _| _| |_| | _|_ |_| _| | _| | |_ | | | | _ | _| | _| | | _| | | | _| | _ _ _ _ | |_ _| | _ _ _| |_ | _| | |_ | | _ _| |_| _| _|_ _ _ _ _| |_ _|_ _ | _| |_ _ _ _ _| |_ _ _ _| _|_ | _ _ _ | _ _| |_ _| _ _|_ _ | |_ _| | | _|_| | _ _ _ |_|_ | |_| _ _ _ _|_ |_| _ _|_ | |_ _| _| |_ _ |_ _ _|_ _ _ _ _| |_ _| _ _| | _|_| | |_ |_ _| | |_ _ _| | | _ _| | | _ _ _| _ _ |_ _ | _ _| |_ | _| | | |_ | | _ _ _|_| |_ _| _ | | _| |_ _ |_ | _| | _ _| | | _| |_| _ | | _| | | _| |_| _| | _| _| _ _|_ _ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | _| |_| _ |_ |_| | |_ _|_ |_ |_ _|_ _ |_ _ | | _ | _| _| | |_ _ _| |_ _|_ | | |_ | |_ |_ | | |_ _ |_|_ _ | _ |_ _|_ | | _| |_ _ |_ | | _|_| | _|_ _ | | _ _| |_ _ _ _| | | +| |_ _ | |_ _| | _ _| |_ _| _ _| _| | |_ _| |_ _ _| _ _ _| _| | _ | |_ _|_ _ |_ _|_ |_ _ |_ _ _| _| _ |_ |_|_ _|_ _| |_ _| _ _|_ _|_ _ _|_ _ _| | | _ _ _ | _|_ _| | |_ _ _ _| | |_ |_ _ | _ _ _ |_ |_ _|_ | _ _| | _| _|_ | | _| | _ | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| | _ _ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | |_ |_ _ | _ _| |_ _|_ _ | | _ _| | |_ _| _ |_ |_ |_ _ |_ _ |_ _|_| | _| _ _| _| _| _ |_ _ | | | _ | |_ | _|_ _ _ |_ |_ _| |_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| |_ _| _|_ _ _| _|_| _ _ _ _ |_ _ _ _ _ _ _ _ | |_ _ | | _| |_ _ | |_ _ _ _|_ | _| _ _ _ _ _ _ _| |_ _ _| _| _| | | |_ |_ _ _ _ | | | |_ _ _| |_ |_ |_ | |_ _ _| | _ _| | _| _| _ _|_ | |_ _ _ | | | | |_|_ _ | |_ _|_ _ _| |_ _ _ | _ _ | _| | | _| |_ _ _ _ _| _ _| |_ | | _| |_ _ | | |_ _| | _|_ | _|_| _ _ _ _| _| _|_ | _| | | _| _|_| _ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _| | _ _ _ _| _| | |_ _ _| _| _| |_ | | | | | | |_ _|_ |_|_ _ _| | | _| | | | _|_ _ |_ _ | | _| |_ _ | |_ _ _ _| _|_| | | _| | | _ _|_ _ _| _|_ _ | |_ |_ _ _| _|_ |_ | | | _ _ _ _| _| _| | |_ | |_ _ _ _| _ _| | |_ _|_ _ _|_|_ |_ _|_| | _| |_ _|_ _ _ _ _| |_ | _ _ _ _|_|_ |_ |_ _ _ _| _| _ _ | _| _ _ _| _ _| _ _ _| |_ _ _ | _| | | _| | | | _ _| | _| _ _ _| | | |_| |_ | | _| | _| | |_ | | |_ _ _|_ | | |_ _ |_ _| | |_ _ _| | | _| | _|_ | _|_ _ _|_ | | |_ _ _|_ _|_ _ _|_ _ _ _ _| | _ _| | _ _ _ |_| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _| _ _|_ | | _ _ _|_ |_ | | |_ _ |_ _| | | | |_ _ _ _ _|_| |_| _ |_ |_| _ _| |_ |_ _| | |_ _|_| | |_ _| | |_| | | |_ |_ _ | _ _| |_ _ _ _|_ _ |_ _ _|_ | |_ _| _ _ _| +| _ _| | _ _ _|_ _ _ _| _ _| _|_ _ |_ _ _|_ _ _ _ _ _ |_ _ |_ _ _| |_ | _ |_ _ | |_ |_ _ |_ _| _| _ _|_ | | | | | | _ _ _ _ | |_ _| _| |_ _| | _|_ _ _ | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ |_ | | | _| |_| _| | |_ _| _|_ _|_ _|_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ _| | | _|_ _ | _|_|_ | | | _ _| _ _ _| | | | | |_|_ | | _ _|_| |_ _ _ | | |_ | |_ _| _| _| _ _|_ |_ _ |_ _ |_ |_| | |_ _ _ _|_ _ _| _| _| | | |_ _| |_ | |_ |_ _|_| _ _ |_ _ | _ _| | _|_ _| | _|_|_ | | | _ _| _ _ _ _ | | | _| |_| | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | | |_ _ _ | | | | | _ | | | _ _|_ _| |_ _|_ | | | _ | |_ _| _| _ _|_ _ _| _| _|_ | _ _| |_ _ _ _| | _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_ _ | | _ _ _ _|_ |_ | | |_ _ _|_ _ _| | | |_ _ _| _ _|_ _| | _| |_|_ _ _|_ | | |_ _ _|_ _| |_ _ |_ _| _ _ _| | | _ _|_ | |_ _| _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_ _| _ _ | | |_ | _ _ _| _| _| |_ | | | |_ _ | _|_ _ _ _ _|_ _ _| |_| | |_ _ _ _| | _| | |_ _ _| | | _ _ _| _ _| _ _|_| |_ | |_ _ _ _| _ _ _|_ _| |_ _| _ _| _ |_ | _| |_ _| | | | | _ _ _| | | |_|_ | |_ _ _ | | | |_ _| |_| _ _ _| _ _ |_ _ | _ _| |_ | |_ _ | _ | | _ _|_ _ _| | _ _ _ _ |_ |_ _| | _| _| _ _| |_ _ _ _| _ | | _ _| _ |_ |_ _| | _| |_ _| | | | | _| | | |_ _ | |_|_ _|_ | | _| |_ _ | |_ _ _| _| |_ | | _ _| |_ _| _ _| _|_ _ _ _ |_| | | |_ _ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| _| _ |_ _ | | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| | _| |_ _ _ _ _| |_ _ _| _ | | _|_ | _ _| | |_ _| |_ _ _ _ | _| _| _ _|_ | | | _| _| _ _|_ _ _ _ | _| _| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _ | |_ _ _ | | _ _| _| | | +| | _|_ _ _ _ | | | |_ _ | | _ _ _ _ | |_ _ | | | _ _|_ _| _| _| |_|_ _ | |_ | _| |_ _ _ _ _| |_ _| _| |_ _|_ _ | | _| |_ _ | |_ _ _ _ _| |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_| | | | | | _| _|_ _ _ _ _| _ _ _ _ _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_ _ _| |_ _| | _|_ _ _ _ _| |_ _|_ _ _|_ _ | | | |_| |_ | _ _|_ | | |_ _ | _|_|_ | | | | _| _| |_ _ _ _ _| |_ _ _|_ | _ _| |_ _| | _ _ _| |_ | |_ _| | | _ _| | | | _ _ _| | | |_| |_ | | _ _ _| _|_|_ _ _ _ _| |_ _| _ _ _ _| _ | | _| _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | |_ |_| _| | | |_ _ _|_| | | | | | |_ | | | _|_| | _| _|_|_ | |_ | _ _| | _ _ _ _| _| | | |_ | | _| _ _| |_ _ _| _ _|_ |_ _ _ _ | | _ _ _|_ _ | | |_ _ _| |_ | _| | _ _ _ _ | | |_ | _ |_ |_ | _| _| |_ _ |_ | | | | |_ _ |_ | | _|_ _ |_ _ | _| |_ | _| | | | _ _| _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | _ |_ _| _ _|_ _ | _| | | _ _ _|_ |_ |_ _ _| _ _ _ |_ _| _ |_ | |_ _ _ _ |_ | _| _ _| _| | | | _ _| | | _ |_ | |_ _ _ _ |_ _ _ _ _| _ _ _ _| |_ |_ _ _| | _|_| | | |_ |_ _ | _| | |_ _ | | | _ |_ |_ _|_ _ |_ _ _| _ _ _| | | |_| |_ | | |_ _|_ | |_ | |_| | _| _ _ _| _ _ |_ _ | _ _| | | _| | | |_ _ _ _ |_ _| | | _| _| _ _|_ |_ _| | _ _| _ _|_| |_ |_ | |_ _ _| | |_ _ _| | |_ |_ _ | |_ _ | _| | _| |_ _ _ _| _ _| _ | | | | _| _ _|_|_ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | |_ _|_| | | |_ |_ | _|_|_ | | | _ _|_ _ _ _ _| | |_ | | | |_ _|_ | | | _| _| | |_ _| _| |_ _ | _ _ _ _ | |_ _| |_| | |_| | _ _| |_ _ _| _ | _| | | _| |_ _ _ _ _| |_ _| _|_ | _ _ _| _|_ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| |_ _ | _| | |_ | |_ _ _|_ | +| | |_ _ _ | |_|_ | |_ _|_ _ |_|_ |_ _ | | _| |_ _ | | |_ | | | _ _ |_ |_ |_ _ _| | | | | | |_ _ _| | | _| _| | _| | |_ _ _| | |_ |_ | _|_ |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| _|_| |_| | |_ _ _| _ | _ _ _| | |_ | _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | _ _ |_ _ |_| _ _ _|_| |_ _ _ |_ _| | _ _| |_ _| _ _| | _ _ _ _| | |_ _| | |_ _ | | |_ _ _ _ _ _|_ _ | | | | _| |_ _ | _ |_ |_ |_ _|_ _| |_ _| |_ _ | | | |_ _|_ | | _| |_ _| _ _| |_ _ _ |_ _ _ _ _| _|_ _| |_| _|_ _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | | | | _| _| _ _|_ _ | _ _ _|_ _|_ _ _ _| | |_ | _ _| |_ | | | _| | | |_ | _|_ |_| _ _ _|_ | | | | _| |_ _ _ _ |_ | _ |_ | | _ _| _ _ |_ _| | _ _ | |_ _| _| _ _|_ _ _| |_ |_ _ | | _| |_| _| | |_ _ _| | | |_| _| _ _|_ _ _|_ | | _|_ _ |_ _|_ _|_ _ |_ _| | | | _| | _| |_| |_ | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ | | _ |_ _ _ _| |_ | | |_| _ _| |_ | | |_| | | | | | _ _ _| | |_ | _| _ _|_ | _ | | _| | | | _ _ _ _| | | | |_| _ _| | _| _ _|_ | _ _ |_ _ _| _ _ |_ _ | _ _| | _| _ | | | _ _| | |_ _| | _| | | | _ | | | |_ |_ | | |_ |_ _ _ |_ _ | | | |_ _|_ | | _| |_ _ _| | _| _ _|_|_ _ | _ _ _|_ | | |_| |_ | | | |_ |_ _|_ _ |_ _ | _ _| | | _| |_ _ _ _ _| _ _|_| | | _ |_ |_ _ |_ _ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | | | | _ | _ _| | |_ _| |_| |_ _| |_ _ _| _ _ |_ _| _ _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_ |_ _|_ | _ _ _|_ |_ _ _|_ _ _ _ _| |_ _|_ _ | | | | | | |_ _|_ _ _ _ _| | |_ _ _|_ |_ _|_ _ |_ _ _ | _| | | |_ _| | _ _| _ _|_ _ |_ | | | |_ _ _| | |_ _ _| | |_ _ _ _ | _ _ _|_ |_ _|_ _ _ _ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _|_ | | | | |_ | _ _ |_ | | +| |_ _ _ |_ _|_ _ |_|_ _ _ |_ _ | | _| | |_ _ _| | | |_ |_| |_| | |_ |_ _ _ |_ _ | _|_ _| |_ | | |_| _ _| | |_ |_ _ _|_ | _| _ | | | | _| |_| | _ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _| | |_ _ _ _ _ _| _ _ _ _| _|_ _ |_ |_ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | |_ _ _| _|_ _ _| |_ _ _| _| _ |_ |_ | |_ _ |_ _ _ _| _ _| _| | _| | |_ _ | |_ |_| | | _| |_ _ | | _ _ _| | | _| | |_ _| | | |_ |_ _ | |_ | |_ _ _ _| | |_ _|_ _ | | |_ |_ _ | _ _ | |_ _ _| |_ _ _ _ | |_| _ |_ |_ _ _ _|_ |_ _ | _|_|_ | | | _ _|_ _ _ |_| |_| |_ _| |_ _|_| |_ _|_ _ _| _ | | | _ _ _ _ | |_ _| |_| |_ | | _|_| | | |_ _|_ _ _|_ _ |_ _ _ _ | _ _| |_ |_ |_ _ | _ _| _| | |_ _ _| |_ _ _ _| _| |_ _ _|_ _ _ _| |_ | _ _| | _| _| | _ _ _| | _ _ _| _| |_ | _ _| |_| | |_ | _ _| _ _ _| |_ _ | |_ _ _ _ |_| _ _| | _|_|_ _ _| | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _| _ _ _| | _ _| | |_ _|_ | | | | _|_ _ _|_ | |_ _|_ _ _| | _ _ _ _|_ _ _|_ _ |_ _ _ _ _| | |_ |_ | | |_ _| _ _ _ | |_| | |_ | |_ |_ _ _ _ _|_ _ _| | _ _ _|_ | | |_| |_ | | |_ |_| | | |_ | | | |_ | _|_|_ _|_ |_| | |_ _ _ |_ _ _|_ _ _ _ _ _| _ _| | _|_ _ | | |_ |_ _ | |_ _ _|_ _| _ _ _ |_|_ _ | _|_ _|_ | | _| |_ _ | |_ |_ _ |_ _| _ | | |_ | _ _ _ _ _ _ _ _ | |_ | _ _|_ | | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| _|_ | | _ |_ _|_ _ |_ _ _ _ | | _ _ _| | | |_| _ _| | | _|_ | _|_|_ | | | _ _| | _ _ _| |_ |_ | | | | | _ _ _ | | | _ _ _ _ _ _| |_ |_ _|_| |_ _ | _ | _ | _|_ _ _ _| _ _ _|_ _ | _|_ _ _| |_ |_ _ _ _| | _ _| | |_ | | |_ _| _ _ _ _|_ _ _| |_ | | | | |_|_ _ | _|_| _ _ _ _ | |_| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ | _ _ _| | |_ _| _|_| | | _| | +|_ | _|_ _ _ _ _ _ _ |_ | _ _ _| | | | _| _ _ _ _| | |_ _ | _| _| | | |_ _ _| |_ |_ _| _ _| _|_|_ | |_ | | _ _|_ | | | | _| | _| | | | | |_| _|_|_ | | _| | | |_ _|_ | | |_ | _| | |_ _ |_| _ _ _| |_ | | |_ _ _| | _| _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _| _ _| | _ _ _| _| _| _ _|_ | |_ _ _ | | | | |_|_ |_ | _| |_ | | _| _| _| _| _ _ _| | | | |_ _ | | |_ _| | | | _|_ _ _|_ _|_ |_ _ _| | _ _ _ _|_ _ _ _ _ _ | |_|_ | | _ _|_| |_|_ |_ _ | | _ | _| |_| _| _ _|_ |_ _ _| |_ |_ | |_ _ _ _ _| |_ _|_ _ |_ _|_ | | _|_ _| _| _ |_ |_| | | | |_ _| _ | | _| |_ _ | |_ | | _| |_ _ | | |_ |_| _ _ | |_ _ |_ | | _ |_ |_ | | _ _|_ _| _| |_ |_ | |_ _ _ _ |_ | _ _ _ _ | | _|_ | _|_ _|_ | |_ _ | _| | _ _ _| | | |_ |_ |_ | | | _ _|_ _ _| _ |_ |_ |_ | _ _|_ |_ _ | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | | _| | |_ | | _|_| | _| _ _ _| |_ _ _ _ _| | _| |_ | | | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _ _ _|_ _| |_ _|_ _ | _ _ |_|_ |_| | | _| |_ _ | | _ _ | |_ _ | _ _|_ _|_ | | _| |_|_ |_ _ _ _| | _| |_ _| _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _| | |_|_ | | _ _|_| |_| _ _ _| | |_ _ _| | |_| _ | | |_ |_ _ | _|_ |_| _ _| | _ _ |_| |_ | _ _ _ _ | | |_|_ | |_ _ _ _ _|_ _|_ | _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _ _| |_| _ _ _ | |_ _ | | | |_ _ | |_|_ _|_ | |_ | |_ _ _ _ |_ _ _ _ _| |_ _| | _| |_ | | _| _|_ |_| | | |_ _ | _| |_ _| |_|_ _ | _| _ _ _ _| _ |_ |_ | | | |_ _|_ _ _ _ _ | _ _|_| _ _ _| |_ _ _ | _|_ _| _ _ |_|_ | _ _| | | | |_ _ _ _| _ _ _ | | _| _| | _| |_ _ _| | |_ _ |_ _ | | _| |_ _ | _| | | |_ _|_ | |_ _| _ _ | | |_ _| | |_ |_ _ _ _| |_ _ _| | | | _| +| _| | _ _ _ _ | |_ _ _| | | _ _|_ | |_ _ | | _ _| | _| |_ | |_ |_ | |_ _ _ _| | | _|_ _| _| | | | _| |_ _ _ _|_ _| | |_ _| |_ | |_| |_| |_ _ _ _ _ _|_|_ _ _| |_ _|_ _ _ _ _|_| |_ _| |_ |_ _|_ _ |_ _ _| | _ _ _|_ |_ |_ _ _|_ | _|_ | | |_ _ _ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | _ _ | |_ |_| _| _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_ _ _| | |_ _|_ _| _| _| | | | | | _ _| |_ |_ |_ _|_ _ _ _| | |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ | _ _|_ | | |_ _ | | |_|_ | _|_ _ | _| |_ _ _ _ _| _ _ _|_ _ _| _|_ _ _ _ _ | _ |_ |_ _ _ _| |_ _ | | _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ |_ _ | _|_ _ | _| | _| |_ _ |_ | _|_ _| | | |_ _|_ | _ _ _| _ _| | _|_| | | | _ | | | _ | | _| |_ _| |_ _ |_ _ |_ _| _ _| |_ _|_ _ | _|_ |_ | | | _|_|_ _| _ _ |_| _| _ _|_ |_ _|_|_ | _ _| _ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ | |_ _|_ _ _ _|_ _ _ _ _ _ _ | | _ |_| |_ _ _ _| | | | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| |_ |_ | _ _|_ _|_ _|_ | | |_ |_ _ | _|_ _| _|_ _|_ _| | | _| | |_ |_ _ | _ _ | |_ |_ _ | _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _|_| _|_ | _ _|_ | | |_ |_ _ | _| | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _|_ _ |_ _ _| _|_| _ |_ _| |_ _| | _|_ | _ | _ _ _ _| |_ | | _ _| _| _ |_ _ _ _| _ _| _| | | _ _ _ | _ |_ _ _ _| | |_ _|_ _| | |_ _ | | | |_ _ | _ _ _ _ |_ _| _| |_| |_ _ _| |_| _|_ _ | _|_|_ | | |_ _| | _ _| _ _ _| |_ _| _ |_| _| _ _|_ |_ _| |_ _ _ _ | |_ _| | _ _ _ _| | _ _| | _ _| | _ _ _| | | |_| |_ | | | | |_ | _ _ _| _ _| |_|_ _| _| _| | _| |_ | _|_ _ _|_ _| | |_ _ _| _| |_ _ _| |_ _|_ _ _ _ _| _ |_ | _|_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ | | | |_ | +|_ | |_ _ | | _| |_ _ | _ _|_ | | | | |_ _| | | |_ _ _ _| | | _| | |_ _ _ _ _ |_ _| | _ _ _| |_ _|_| |_ | |_ _ _| | _ _|_ _ | |_ _| _ _ _| _ _ |_ _| _ _ | | _ _ | | _ _| |_ | |_ _ |_ _ | _|_ _ _| |_ _| | _ |_ _ _ |_ _|_ _ |_ _ | _ | | _|_|_ | | | _ _| |_ _ _ | | _|_ | | _ _|_| |_|_ | |_ _ | | |_ _ _ | _|_ |_ _ _ _ | | _ _ |_ _ | _| _ _| _ _ _| _| _| | |_ |_ | _ | | _ _ _ _ _ _ | | _ _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| | _ _| |_ _| _ _| _|_ _ |_|_ | _| |_ _ |_ _ _| | _ _ _ _ _| |_ | | _ _| |_ _ _ _| _| _ |_ |_| _| _| |_ _ _ _ _| | | _|_|_ | | | _ _|_ _ |_| | | | |_|_ | | _ _|_| |_ _| | _|_ _ _| _| | _| | _ _| |_ | | _ _|_ _ |_ | _ _ _| | |_ _|_ _|_ _| |_ _| | |_ _ _ |_ | |_ |_ _ |_ _ _| | | _ _| | | |_ _| |_| | |_ | _ _ _|_ | | _| |_ _ _ _ _|_ _| | _|_ |_ | _ _|_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ | _|_|_ | | _| _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _| _| |_ _ _ _|_ |_| |_| | _ _ _| |_ | | _ _|_| |_ _ _ _ _ _| _|_|_ _|_ | |_|_ | | _ _|_| |_|_ _ | | _ _|_| |_ _ | _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ | |_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _ _ |_ _ _| _|_ _| _ _ _ _| | _ _|_| |_ _| | | _ | |_ | |_ _|_ _ |_ | | | |_ _ | | |_|_ | |_| | | | |_| |_ _ _ _ | |_ _| | | _|_ _ _| |_| | | | | | _ _|_| |_ _ _ | _ _|_ |_ | |_| _ |_ |_ | | |_ _ _|_ |_ _ _ _| | _ _ _| | _ _ _| | | _| |_ _ _ _ _| | _ _ _ | _| |_ _ | | _ _| | |_ | |_ _ | |_ _ | _|_|_ _|_ | | _| |_|_ | | |_ _ | | _ | _ _ _| _|_ _|_ _ | _|_ _ _ | | | _| _ _ _ _| _ _ | | | _ _ | | | | |_ _ _|_ _ _ _ _ |_ _ |_ |_ _ _| |_ | | | |_ | _| +| | |_ _| | |_ _ _|_ | |_| | _| |_ _|_ _| | _| | |_ | _ _ _| |_ |_ _ _ _ | |_ _ | |_ _ | _|_| _ |_ | |_ _ _ _ _|_ _| _ _ _|_ |_| _| _ _ _|_ | | _ _| _ _| |_ _| | |_ _|_ _ _ _| _ _| |_ _ _ _ _ | |_ _| _| _ _| | _ _| | | |_ _ |_ |_ |_ _ |_ _| _| |_ _ _ _ _| |_ _| _ _|_ _ _ | | | | _ _|_ | | |_ _ | |_| |_ |_ | |_ _ _| | | _ _| _ _ |_ _|_| _ _ _| |_ |_| |_ _ | _|_ _ _| | | | | _|_ _|_ _| _ _ |_ _| _ _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _ _ _| _ _| _| | _ |_ _ | |_|_ |_ | |_ _ | _ |_ _ _ | | _ _|_ _ _| |_ _ | _ | _ _| _| _ _|_ | |_ _ _ _ _ _ | _| |_ _ _ _ _| |_ _| | _ _|_ _ | | |_ | _ _|_ | | |_ _ | | | | | | | | | |_|_ |_ _ | | |_ _ _| | _| | | _ _|_ _| _ _ _ |_| _| _ _| | _| | |_ _| |_ |_ |_| _ _| | | |_ | _|_ _|_ _ | | |_ _|_ _ _ _ _ _|_ _ _ _ | _ _ _ _ _|_ _|_ |_ _| | |_ _ _ _| | | _|_|_ | | | _ _|_ _ | | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| _ _| | |_ | | |_ _ | _|_|_ | | | _ _| _ | _| | _ _ _ _| |_ _ _ | |_ _ _|_ _ _| |_ | | | _ _|_ | | |_ _ |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ | | |_ _ | | | _|_ | _|_|_ | | | _ _|_ _| _ | |_ |_ _|_ _ | | |_ _ _ _| _ _| _| _|_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | _ _ _| _|_ _| _ _ |_ _ | _ _| |_ | _|_ _|_ _| | | _ _ _ |_ _ _ _|_ _ _ _ _| |_ _|_ _ |_ _ |_ _ | |_ _ _| _ _ |_ _| | _ _| | |_ _ _ | | _|_|_ |_|_ | | |_ _ | _|_ _| |_ | _| _| _ _|_ | _| | | |_ _ _ _| _ _ |_ _ | _ _| | |_ _ _| | |_ _ | _ _| |_ | |_ _ _|_ | | _| _ _|_ _ | | | _| |_ _| | _ _ _ | | |_ |_ _ | _|_ _| | |_| | | |_ _ | _ _ _ _ | _| | _ _|_ _|_ | |_ _ | _ _ _| |_ _|_ _| | |_ _|_ _ _ _ _ |_ _ _| |_ | |_ _| _| _ _|_ _ _| | | |_ _| | | +| |_ _ | _| _ _ | | | _|_ |_ _ _ _| |_| |_ _ _| _| _| _ |_ |_ |_ _ |_ _|_ _ | |_ _| | | _| _ _|_ |_ _ _ _ _ | _| |_| |_ _ | |_ _ | _ _| | | _ _| | _| | _| |_ _ _ _ | |_ _| _| _ _ _ | |_ | _ _| | | | | | | | |_ _ | |_ |_| _ _| | _ _| _ _ _ _ | _ _ _| _| _ _ _| |_| _| | _ _| |_ _| _ _|_ _ _| | _| _| | _ _| |_ _ _ _| | |_ _ _| | | _ _| _| _| _ _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | |_| _ _| | |_ _ | | _|_|_ | | | _ _|_ | | |_ _|_ _| |_ _ | | |_ _ | | | _ _| | | _ _| _| _ | |_ |_ _ |_ _| | |_ _ _| | | | |_ _| _| |_ _ _ _ _|_ | _ _| | |_ _| | _ _ | _ _ _|_ _| | _ _ _| |_ |_ _| | _ _| |_ _| _ _| | _| | |_ _|_ _ _| | | _ _| | | |_ _| | | _|_ _ _ _| | _ _ _ _ _ |_ _ _ _ _|_ _ _ |_ _ _ _ _ _ _|_ _ _ | | _ _ | | _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| | _ _ _ _ | |_ _ _| _|_| |_ _ | _ _ _| |_ _ _ _ _| |_ _|_ _ _ _| |_| | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | | |_ _ _| |_ _| | _| | |_ _ _ _ _| |_ _|_ _ _| | _|_ | | _ |_ _| _|_ _|_ _ | | _ _| |_ _| |_ _ | _ _| |_ _| _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _| |_ _| _ _| | | | _ |_ _ _ _ _| |_ _|_ |_ _ _ _| | | _ _ _ | |_ _| | | _ _ | | | |_ _|_ _ _ | | |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| | |_ _| _| |_ _ _ _| | _ _ _| | | |_| |_ | | _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ |_ | | | | _ _ _| | | |_| |_ | | _ _|_ _| |_ _ _| | _ _| |_ _| _ _| | _ _|_ _ _| | _| |_ _ _ _ _|_ | |_ _| | | _ _ _|_ | | |_| |_ | |_ _ _| |_ | |_ _| |_ _ _ _| _|_|_ | | | | _| | | _ _ _| | | | | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | _|_ _ _| | | _ | |_ |_ _|_ _ _ _| _| | |_ _| _ _ _|_ _ _ _ _ _| |_ _ _ _ | |_ _ _ | _ _|_ _ |_ | _ _| | | _ _ | |_ _ _ _| | +| | _| | | |_ _ |_ | | | |_| _ _ _ _|_ |_ | _| _| _| _ _|_ | _ |_ _ _ |_ _ | | _|_|_ _ _| _ _ _ _ _ _ _ _ _|_ _ _|_ _ _| _ |_ _ _ _| |_ | _| | | |_ _ |_ _| | _ | _| |_ _ |_ |_ |_ |_ _| _|_ | _|_| _| |_| | |_|_ | _ _| | |_ _ | _ _| |_ _ _ _ _ _| _|_ | _|_ |_| _| _ |_ |_ | |_ _ _ _| _ _| _ _ _|_| _| _| | | |_ _ | _ |_|_ _|_ _ _|_ | | _| |_ | _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | _ |_ _|_ _ _ _ _| |_ _|_ _ _| |_| | | | | |_ | _|_|_ _|_ _ |_ _| | | _ |_ _ _| _|_ _| _| | _ _ _|_ |_| _| | |_ _ _|_| _|_ _|_ _ | |_ _ _ _ _ _ _| | _ _| | _ _ _|_| | _| _| _ |_ | _ _| _ |_ |_ |_ |_ _ _ _| _ _| _ |_ _|_ _ _| _ _ |_ _ | _ _| | |_ | | _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | _ _ _ _ | |_|_ _| |_| | | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| |_ _ | _| _ _| | _|_ _ | _ |_ | _ | | | | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | | _| _ _|_ _ _| | _ |_ _ _ _| | | _|_ | | |_ _ _ | _| _ _ _| |_ |_ | _ _|_ _ _ _ _ |_ |_ _| | _ _|_ _ | |_ _ _ _| _ _| _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _|_ _ _ _| _ _| | | |_ _| | | _ | _ _ _ _ _|_ | _ _ _| |_ |_ | |_ | _|_|_ | |_ |_ _|_ _ _ _ _ _ _ _| | _| | | |_ _|_ |_| | |_ _ | | |_ _| | _ _|_ _ _| |_ |_ _ | | |_ _|_ | | _| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| | _|_ _| |_ _ |_ | |_ _|_ | | _| |_|_ _ _ _ _| |_ _ _|_ _ _ _| _ _| _ _|_| |_ _ | | | |_ _ _| _ | _| | _ _| |_ _ | | |_ _|_ | | _| |_ _| _ _|_| _| | |_ _ _ | | | _|_ _| | | | | _| _| | _| | | |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ |_ _| _|_ _|_ _| |_| _ _ _ _ |_ _ _ _ _|_ _|_ _ | | | _ _ _ _ | |_ _ _| _| |_ _ | _| | _ _ | | _|_ | _|_| _|_ |_ _|_ _ _ | +| |_ _| | |_ _ | |_ | | |_ _|_ _ _ _ _| |_ | | |_ _| _| |_ _ _ _ _|_ _|_ | _ _|_ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _ | _ _ _| | _|_ _|_ _ |_ _ _ _| |_ |_|_ _ _| | _ _ _|_ _ _ _ _ |_ _| |_ _ |_ _| | _|_ _ | |_| |_ _ _ | |_ | |_ _ _ _ | |_ _ _| | _ _| _| _| _ _|_ | | _ _ | | |_|_ |_| _ _ _| _| _| | | _ _|_ _| _| _ _| |_| | _| |_| | _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _| | _ _ _ _ _ _ | | | _ _|_| |_ | |_| _| _ _ _ _ |_ _ | _|_ |_| _ _ _| _ |_ | |_| _ _ _ _| _| | | |_ _ _| |_ _ _ | | |_ | |_ | _|_ _| |_ | | _ _ | _| | | |_ _ _|_ | | _| _| _ _|_ |_ | _ | | | |_ _| | | _ _ _|_ | | |_| |_ | | _| | | | _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| |_ _ | _|_ | | | | | |_|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _| | |_ _ _|_ | | |_ | _ _| _ _ _ _|_ | _|_ |_ _ _| |_ _| |_| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _| |_ _ _ _| |_| | |_ |_ _ _ _| | | _|_ _|_ _| | | | |_ |_| _ |_ |_| _|_ _ _ _| _ _ |_ _ | _ _| | | _ | |_ _ _ _ | | |_|_ | | _| | | |_ _|_ | | _ _ |_ | | |_ _ | |_ _ | | |_|_ | | _| _|_ _|_ _| | | | | _| _ |_ |_ |_ _ _ _|_ _ _ _ _| | | _ _ | | _| _|_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_|_ _ | _ _ _ _|_ |_ _| | | |_| | | |_ |_ _ | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | | |_ _ _ |_ _| | _|_ _ _| | |_ |_ _ | _ _ _ |_|_ _ _ | _ | | |_ _ _ _ _| _ _| |_ _|_ | _ |_ | | | | | |_ _ _| | |_ _ _ _| | |_ |_ _ | _ _ _|_ _|_ | _ _| | | | | |_ _ |_ | |_| |_| _| | | | | | | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _ | | _| |_ _ | |_ _ _|_ | | | _|_ |_| |_ _| |_ _ |_ _ _ |_ _ _| _| | +|_ _ | |_ _ | |_ | |_|_ | _ _ | | _ _|_ _ _|_|_ | | | |_ | _ _ | _ _ _| | | _| _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ | _ |_ | _ _ |_ _ | _| | _| _ _ | | _ _ _ _ | |_ _| | | _|_ _ _ _ _| _ _ _|_ _ _| _ |_ _|_ | |_ _ _ | _| |_ _ |_ _| | _ | | _| |_ _ _ _ _| |_ _ | |_|_ _|_ _ |_ _ _ _ | |_ |_ | |_|_ | _ _ | _| | _| _ _|_ _| _ _ _ _| |_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | |_ _ _ | | _ _| | | | | _| _ |_ |_| | _| | | |_ _ |_ _ _| |_ _ |_ |_ _ |_ _ |_ _ _| | _| _ _ _ | _ _| _ _ _ _|_ _ _|_ _| _| _|_ _ _| |_ _ |_ _| | | |_ _| _|_ | |_ | _ _ _ _| _| _| |_ _ _ _ _| _|_| | | | |_ _|_ _ |_ _| |_ _ | _ _|_ _|_ | | _| |_ _ |_| |_ | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | |_ _ _|_ | | _ |_ _| |_ _| |_ _ _ _ _| | | _|_|_ | | | _ _| | |_ | | | | _| _ _ _ | | |_ | |_| _ _ _| _ _ |_ _| _ _| | |_ | _| _| _ _|_ | |_ _ _ | | | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_ | _| _ | | _| _|_ |_ _ _ _ | | |_ _ _ | |_ _| | | |_ _| _| _ _|_ | | | _ _ _|_ | | |_| |_ | | _| _| | |_ _ | |_ _|_ _ |_ _|_ _ _| |_ _|_ _ _ _ _| |_ _ | _ _|_ _|_ _ |_ _| | | |_ _|_ _ |_ _| |_ _ _ | |_ _|_ _| _| |_| _| _ _|_ | _ _ _ _ | _ _ _|_| |_ _| | | |_ _|_ |_ _ _ _| | _ _ | _ _| |_ _ _ _|_ _ _ | |_ _ | | |_ _ _| |_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _|_ | _|_|_ | | | _ _| _ _ | | | |_ _|_ _| |_ _ | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ _ _ _ _ _| |_| _|_ _|_ _ |_ _ _ _ | | _| _| | |_ _ _| | | | |_ | | | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | | _| | | | _|_ _| | | |_ _ _|_ |_|_ | |_ _ _|_ | |_| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _|_ _ |_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | |_ _ _|_ | | |_ _ _ _ | | |_ _ |_|_ _| |_ | | _|_ _ |_ _ _| | _ _| +| _ _ _ _| _|_ _ _| | _ _ _| | |_| | | |_ _ _|_ |_ |_ _| _ | | |_ |_| | _ _|_ _ |_ | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ |_| _| | | | _| _ |_ _ _| | | | | _| _| | | |_ _ | | _| |_ _ | |_ _| _ | | _ | | | |_ |_ _ _ _ _| | _ _ _|_ _ _| | | _ _|_ |_ _| |_ | _ | | | _| |_ _ _ _ |_ _ | _| | | | | |_ | |_ |_ _|_ _ | |_ _| _ _ |_ _ | _ _| | _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | | _ _|_| |_ _| |_| _ _| | |_| |_| _| _ _|_ | | |_ | _ _ _|_ | | _ _| | _| |_ _| | _ _| _| | |_ | _ _|_| |_ _ |_ _ _| | _ _ _| _|_ _| _| |_ _ _ _ _|_|_ _ |_ _ _ _| |_ _| _ | _| | |_ |_ | _| _ _| |_ _ _ | |_ _ |_ _| | _ _ _ | | |_ |_ _ | _ _| _|_ _ | _| | | _|_|_ | | | _ _| | _ | | | | | _| _ _ _ | | | | |_ _ _ _ |_ _ _ | _ _| | |_ _ _ _ _| |_ _| _ |_ _|_ | | | | | | | |_ | _ _| | | | |_ _ | _ _ _| | | |_| _ _| | | _| | _| |_ _ _ _ _|_ | _| |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_| |_ _ |_ |_ _ _|_ |_ _ | _| |_ _ | |_ _ | _|_|_ | | _| |_ _ _ _ _|_ _| |_ _ | _|_ _|_ | | _| |_ _| |_|_ | |_ _| | _ _ |_ _ _ _ | | _ _ | | _| | |_| _ _ _ |_ _ | | |_ | _ | |_ _ | |_ _ _ |_ _|_ _ | |_ | | _| |_ _ _ _ _| | _ _|_ _| _| | _| _ _| |_ _ _ _ | |_ _ |_ _|_ | |_ _ _ _|_ _ |_ | _ _|_ _ | |_ _| _| _ _|_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ _ _ _| |_ _|_ | | _ _|_ | | | | _ _ _ _|_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ |_ | _ _ _ _|_ _ | | |_ _ _| _| | | _| _ _|_ |_ |_ _| _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _| |_ _ _ _| |_ _|_ _ | _ _ _ _ _|_ _ _ |_|_ _| _| | | |_ _|_ | |_ _ _ _ | | |_ _ _ _ _ _|_ _| _|_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _| _ _ _ | | _ _| | | _| | |_ |_ _ |_ | |_ _| _ _|_ | | _ _| |_ _ | +|_ _| _ _ _| _ _ |_ _ | _ _| |_ _ _| | | |_ | | _ _ _| _| |_ _| |_ _| _|_ _ _|_ _| _ _ _| _| | | _| _| _|_|_ | | | _ _|_ | | | |_ |_ | | _|_ |_ |_ _|_ | _ _| |_ _| | |_ | _|_|_ _| | |_ _ _| | | |_ _ _| | |_ |_ |_| | | |_ _| |_ | _| | _| _ _ _ | _| | | |_ | _|_ |_ | | | | |_ | | | _ _ _| |_ | _ _| | | _|_|_ _ _| _|_ |_ _|_ | _ _ _|_ _ _ _ _ | | |_| |_ | | |_| _| | |_ | _|_|_ | | | _ _| | _ _ _| | | _ _|_ | | |_ _ |_ | | | |_ _ | _| |_ _ _ _ _| |_ | _| _ _ _|_|_ |_ |_ |_ | | _| | | |_ _ | | | _|_ | | |_ _ |_ | | | | | _ _ _| _ _| _| |_ _ | | _ _ _ _ | | | |_ _ | | _|_ _ |_ | | _ _|_| | |_ _ _ _ _ _ _ _| _ _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _| |_ _| |_ _ _ _ _| |_ _| _ _ _| _|_ | |_ | | | |_ | _ _| | _| | |_ _ _| | _| | | |_ | _ _ _ _ | | |_ _ |_ _ _| |_ | |_ | _|_ _ _| |_ | | |_|_ _ | |_|_ _|_ | | _| | _| | |_ _ _| _ _ _|_|_ |_ _ | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ |_ _ | |_| _ _ _| _ _ _| _ _ _| _| |_ _ |_|_ _ _ _ _| | |_ _ _ _ _ | _ | _| | |_| _| | |_ |_ _ | |_ _ _|_ _ _|_ _ _| _ _| | | |_ _| | |_|_ _ _ _|_| | |_ _ | | _ _| | |_ |_ _| | | _ _| | | | _ |_ | |_ _| | | | | |_ _| _| | |_| _|_ _ _|_ _ _ _|_ _ | | _|_| | |_ _ _ |_ _ _ _ | |_|_ | |_ _ | | |_ | _ _| | _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | _ _ _ _ |_ | | _ _ _| |_| |_ _ _| |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| | _|_ _| |_ _ _| |_ _| | _ _ _| _ _ _| _| _ _ _| | |_| _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ |_ |_| _ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _|_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _| _ _ _ _ |_ _ _| _ _ | _|_|_ | | | _ _| _ _ | | | | | | | |_ | _ _| | | _ |_ _ _| |_ |_ _ |_ |_ _| | |_| _| _ _| | |_ | | _| | +| | | _ _ _| _| | |_| |_ | | _| _ _|_ |_ _|_ _ _| _| |_ _ | |_ | _ _ | _ _| _ _ | _| | |_ _ |_ _ _ _ _| |_ _| _ | |_ _| | | | _| |_ _|_ _ |_ _|_ _ _ _ |_ | _|_ _ |_ | |_ _ _| | _| _ _ _| | |_ | | | | _|_ _ _| _| _|_ | _| _| | | | |_ _ |_ _|_ | | | | | |_ _| _| | | | |_ _| | _| _ |_ | | | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_|_ | | _|_ | |_ _ _ _ _| |_ _|_ _ _| |_ | | |_ _| | _ _| |_ _| _ _| | |_| | |_ _ | |_ _ | _ | | |_| _|_ _ _| | _| _| _ _ _|_ _ | | |_ _| | |_| | | _ _| |_ _| _ _| _|_ _| |_ _|_ _ | | _ _ _| | | |_ _| |_ _ | | _| |_ _| |_| _ _| | | | _| _| | | _ _ _| | | | | | | | _ _| |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _|_ _ _ _|_ _ _ _ |_ _ _ _ | |_ _ _| |_ | |_ | _|_ _ _| |_| _| |_ _ _ _ | |_ | | |_| |_ _| |_ |_ _ | |_ _ _| _| _ |_ |_| |_|_ | _ |_ |_| | |_ _ _| | |_ _ | | | | | |_ _| |_ | _| _|_ |_ _ _ _ _| |_ _| _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| _ _| | | _|_ _ |_ _| _ _ _| _ |_ |_ | |_ | _ | _|_ |_ _ |_ _ _| _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ |_ | | _ _| |_| _ _ _| |_ _ _ _ | |_|_ _| _ _| | | _ _|_ | | _ _ _ | _ _| | |_ | | _| |_ | _|_ _| |_ | |_ _ _|_ | |_|_ _ _|_ _ | _ _ _ _ | |_|_ |_ _ _ | |_ | | _|_ _| _ | _| |_ _ | | _| | |_ _| _|_ | _|_ | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| _ _| |_ _ _| | |_ |_| |_| _ |_ |_ _| _ _|_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ _| _| | _ _ _|_ _ | _ _|_ | |_ _ | _| _ _ _| _| _ _ _|_| |_ |_ |_ _ _ _| _|_ |_ _ _ _| _ _| _| |_| | _|_ | | | | | |_ _| _ | | _| |_ _ |_| | _ _ | | _ _ | _| _| |_ _|_ _ _ _ |_ _ | _ | | | _ _ _| | |_ _ _ _ _| |_ _| _ _| | _|_| | | _| | | | _|_ _ _| |_|_ |_| _ |_ |_ _ _| _|_ _ _ _|_ _ _| _| _ _| | _| | | _| +| |_ |_ _ | _ |_ _|_ | | _| |_ _ _ | _| | | _ _ _| _| |_ _ |_|_ |_ _| |_ _ _ |_ _ | |_ | |_ _ _ |_ _ _ _ | _| | |_| _ _|_| |_ | |_ |_ _ _ | | _| | |_ | _| _|_ _ |_ _ _| | _| |_| | | _| | | | |_ _| | |_ _ _| _ _|_| _|_ _ _| |_ _ _| | _|_| |_| |_ _ _ _| _|_ | | |_ _ _ _|_| _| _ _ |_ _|_ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _|_ _ _|_ _ _| _ _ _ | | | |_ _ _| |_ _ | |_ _ _ _| _ _| _ _|_| | |_ _ | |_ | _|_|_ | |_ |_ | | | _ _|_ _|_ _ _ _| _ _ |_ _| | _ _| |_ | | |_ _ _ _| _ _| _|_ _ _ _ _| _| | |_ _ |_ | |_ | |_ _ _ | |_ _| _| |_ | |_ _ _| _|_ _| _| _|_|_ _ | | |_ _|_ _| _| |_| | |_ | | _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _ _ _ _|_ _ _ _ | _ _| |_| _ |_ |_| |_|_ | _ |_ |_ | | | |_|_ | | |_ |_ _ _ _| | _| |_ | _ _| _| _ _|_ |_|_ _ | _| _ _|_ | _| |_ | _|_ _ _| |_| | | |_| | |_ | _| _| |_ _ _ _ | | | |_ _ | | _ _| | | | | | | | _ _| _| | | | |_ _ | _| _ | | |_ _ _ _ _| | _ _| |_ |_ _ _| |_ | | | |_ |_| _| _| |_|_ | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ | |_ _| |_ | _ _ _| _ |_| _ | _| |_ _ | _|_ _ _|_ | _| | |_ | | |_ | _|_ | | |_ | _ _|_ _ _ _| _| |_ | |_ _| _ _ | | |_ _ | | _| |_ _ | _| | | | _| | | _ |_ | |_ _ _| _| | | | | _| | |_ _| |_ _ |_ _| _| | | |_ _|_ | |_ _ _ _ | | |_ _ | |_ |_ _ _| _ _| _ _| _| _| _ _|_ | _| | | _| _| | | |_ _|_ | _|_ _ _ | | |_|_ | |_ |_ _| _| _ _ _|_ | _ | | _| |_ |_ _ _ |_ |_ _ _ | _| | | _|_ |_ _ _ _ _ _ _|_ _ _ _ | | | |_ _ _| |_ _ _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ | | |_ _| _| |_ _ _ _ _|_ | _ _ _ _|_ _ _| |_ _| | | | |_ _ | |_|_ | _| _ _ _| _ _| _ _ _| |_| _| _|_ | _ |_ | _| _| _ _|_ | _| _| _ _ _ _ | |_ |_ _ _| |_ | |_ | | +|_ |_ _| | | | _ _| | |_ |_ _ | _ _| _| | |_ _ | |_ |_ _ |_ _ _ | | |_ _ | |_ _ | |_ _| | | _ _|_ | _|_ |_ | | |_ _| _ |_ |_ _|_ _ _| | |_ |_ |_ _ | |_ _ _|_| _| | | _| | | _| _ _|_| |_ _|_ _|_ _ _| |_ |_ _ _ | | _ _ _| _ _ |_ _ | _ _| | _ |_ |_ | _ _ _| _ _| |_ _ _ _ | | _| |_| | _| _| _|_| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_|_ | | _ _|_| |_ _| _ _| _ _| _ _| | | _| |_| _ |_ |_ _ _ | _ _| | |_ _ |_ |_| | |_| _| | | _| |_ _ _| | | |_ _| _ _ _ |_| _ _ _| | | |_| |_ | | |_ _|_ _ | _| | |_ _ _| | _ _ _| | _|_ _ _ _ |_ _| _|_ _ | _|_ _ _ _ _ _|_| _|_ | |_| _ _ _| _| _| | | | | | _|_ | |_ | | | |_ | | | | _| | |_ _ _ _| _ _| _|_ _ |_ _|_| _ _ _ |_ _| | |_| _ _| _| _ _|_ | |_ _ | _| _ _|_ |_ _| |_ _| | _|_ _ |_ _ _ _| | | _| | |_ | _| |_ _ _ _ _| | _| | |_ _ _ _ _|_ _ | _|_ _ _ | | _|_|_ | | |_ _ _| _| | |_ _| _ _| | | | _|_ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | |_ _ _ _| |_ _ _| _ _ |_|_ | _ _| | _|_ _ _ | | | |_ |_ _ _| _| |_ _ | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ _| _|_ | | | _ _ _| | | _| _|_ _ _| | _| |_| | _| | | |_ _| | | | | |_ _ _ | |_ _ _|_| _ _ _ _ _| _| _| _| | _ _ _| | _| |_ _ _| | |_ _ _| | | | _| |_ _|_ _ _| | | |_ _ _|_ | _ _ _ _ _|_|_ _ |_ _| |_ | |_ |_ _ |_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ _ _ | |_ | _ _ _ _| _| |_ _ _ _ _| | _| |_|_ |_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_ _| |_ | | |_ _ |_ | | |_ _| | | _|_ _ _ _ |_ _ _ _ _ _| | _ _|_ _ _ _ _ _ _ | _ _ _ _ | |_|_ | |_| _ _|_ _ _ | _ _| | _|_|_ | | | _ _| _ |_ | | | | _| | |_ _ _| |_ _ _ _ | |_|_ _ |_| | _ _| _ _| | |_ _| | |_| _ _| |_ _ _ _| _ | | _ _| _ |_ |_ |_| | _| _ _|_ | _| |_ _ _ _ _|_ |_ |_ _ | | _| |_ _| _ |_ | |_ |_ _| +| _|_ | _|_ _| _ | |_|_ | | _ _|_| |_ _ | _ _| | _ _| _ _|_ _ _ _| |_ _| _ _|_ | _|_ _ _ _| | | | _|_| |_ |_ _| |_ _ _| _| _ _|_ | _ | |_|_ | |_ _ _ _| |_ | _ _ _|_ |_ _|_ _|_| _|_| | _| _ |_ |_| | | _ _|_ _| _ |_ _| | _ _ _| | | |_| |_ | | | _ _|_ | |_ _ | | _ |_ |_ | _ _| | | _| _ _|_ _|_ | _| _ _|_ _ | _|_|_ | | | _ _|_ _ _ | | | |_ | _ _|_ | | |_ _ |_ _ | | _ _| | | |_| _| _| _ _|_ | | _| _ |_ _|_ _ |_|_ _ _| _|_ _| _|_ _ _|_ _| _| _ _ _ _| _ _ _ _ _ _|_ _ _ _ |_ |_|_ _|_ | | _| |_ _ | _|_ |_ _|_ _ |_ _ _|_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _| |_ _ | | _ _| | | _|_ _| |_ _| |_| _ _| _ _| | |_ _|_ _| |_ _|_ | | | _ _ _| | |_ _ _| | _ _ _| _| | _ _| |_ |_ | _| |_ _ _ _ _|_| _ _| | |_ _ _ _ _ _ _ _| | _ _|_| | |_ |_ _|_ |_ | |_ _ _ | | |_ | | _|_ _| | | _ | _ | _| | _ _|_ _| |_ _ _ |_ | | _ _ _| | | | _| | | | |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_| |_ _ | | | _ _ _| _| | |_| |_ | | | | _ |_| _| _| | _ _ _| _| | _| | | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| _ | _ _ _ _| | |_ _ | | | | |_ _ _| _| | | _| _ _|_ _| | |_ _ _| | | |_ _| | | | |_ | _ _ |_ | _ _ _| _|_ _ | | _ | |_ _ _| | _| |_ _ _ _ |_| |_| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_|_ |_ _ _ _ _ _|_ _ _ | | _ _ | _| _| |_ _|_ _ _ _ |_ _ | | _| |_ | | _| _ | |_ _ | _ _|_ |_ _ _ | _ | | _ _ | _ _ _ _| _| | | _ _ |_ _ | |_ _|_| |_ _| | _| |_ |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ |_|_ |_|_ _ _ | _ _| | |_ _ _ _ _| |_ _| _ _ | | _| | | | | _| |_ _ _ _ _|_ _ _ | _| |_ _ | | |_ _ _| |_ | _| | _|_ | | _|_ | | |_ _ _ _ |_ _| | | _| _| _ _|_ | _ _| |_ |_ _ _ _ _| |_ | _ _ |_| _ _| | |_ _ _| _| _| _ _|_ _|_ _ | +| | |_|_ _ _ |_ _| |_ | _ _|_ | | |_ _ |_|_ | _|_ _ _|_ _ _ _ _ _ _| _ _| | _| _| _ _ | |_ _|_ _ _ _ _| _ _| _ _| | _| |_ _ _ _ _|_|_ | |_ _ | | | | _ _| _|_ _ | |_ | _ _ |_ | _|_| _| _ _|_ | |_ _| | | _ _ _| |_ | |_ _ | _|_|_ _|_ | | _| |_|_ _ _ _| _| | _| _ _|_ | |_ _ _ _| | |_ _| _ _ _ |_|_ _ _ _| | |_|_ _ _ _ _| |_ _|_ _ |_ |_ | | | |_ _| | _ _| |_ _| _ _| _ _| | | |_ _| |_ | | _| |_ _ _ _ _| | | _| |_ _ _ _ |_ _ | _ | _ _ _|_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | | | |_ |_ _ | |_ _ _ _ _ _ |_ |_ _ _ _ _| | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_|_ _| | | | | _|_|_ _ _ |_ | |_ | | | _| _ _|_ _ _| _ |_ _ _ _| | | |_ _ _ |_ _|_ _ |_ _ _|_ _ | _|_| | | | | |_ _ | |_ | _ _ _ _| _| | _ _ _| _ _ |_ _ | _ _| | _ _|_ _| |_ | | | |_ _ |_ | |_ _|_ _|_ | | _| | | |_ _|_ _|_ |_ _|_ _ _ _ _ _|_ _ |_ _ _| |_ _ | _| | | |_|_ _ _|_ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| _| | _| |_ |_ _ | _ |_ _|_ | | _| |_ _| |_ _|_ _| _| _|_ _ | |_ | | | _ _|_ _| _| | | |_ _|_ | |_ _ _ _ | | | |_ _ _ _| | |_ _ _ _ _| |_| _ _ _|_| _ _ _|_ _ _ _ _|_ | |_ _| _ _ |_ _ | _ _| | |_ _ _|_ _| _| |_ _| |_ _ |_ _ | |_ _ _ _ _| |_ _| | |_ _ _ | | | | | | | | | _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | | _ _ _ _ | |_ _ _| | |_ _ _ _ _|_ | _ _ _ _|_ _ _| | _| _| _| |_| _| |_ |_| | | |_ _ _ _|_ _ |_| | | |_ _| | |_ _ _ _ _ _| _| |_ _| | _ _| | |_ _ _ | | | | _|_ |_ |_|_ _ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _|_ | _ _ _| _ _ |_|_ | _ _| | | _ _ _ | | | _| | _|_ _| |_ |_ | |_ |_ | | |_ _ _|_ | | | | _ _ | | |_ _ | _|_ _|_ _ _ |_ _|_ _ |_ _ | _ _| | | _| |_ _ _ _ _|_ _ | | _|_ _ _ _ |_ | | | | _| |_ _ _| _| _| _ _ _ _| _| |_ _ _ _ _| _ _ | +|_ _|_ _ _ _ _ _ _ _ _|_ _ | _ _| |_ _| _ _| _ _|_ _ _ | | | |_ | | | |_ _| _ _| _| _ _ _| _ _ _ |_ _ _| | | |_| | |_ _ | _ _ _ _|_ _ | | |_ _|_ _ _ _|_ _ | _|_ _ _|_ |_ _ _| | _| |_ _ _ _ _ _|_ _|_| |_ _ _ _| _| |_ _| | | | | | |_ |_ _ | _ _ | | | _|_ _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _|_ | |_| _ _| | _ _| _ |_ _ _ _|_ _|_ _| |_ _ |_ |_ _ _ _| _ _| _| _ _| _|_ _ |_ _ | | |_ | | | _| | _ _ _ _| _ _| |_ | |_ _ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| |_| |_|_ | | _ _|_| |_ _ _|_ |_ | _ _| _| | _ _| | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ | | _|_ _ _|_ _ _ _ _ _ _ _| _ _ _|_ _ _|_ _ | _ _ _| |_ |_ |_ _ | |_ _ _ _| _| |_ _ _ _ _| | | _ _| | | |_| | | | |_ |_| |_ _ | | |_ _ | | | _ _ _| _| | |_| |_ | | | | _ _|_ _ _| |_ _|_ _ |_| _|_| _ | |_ _| | |_ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | _ _ _| | |_ _| |_ | _ _ _| | | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _|_ | | _|_ _ _| _| _| | | | _ _| | |_ |_ _ | _ _ |_ _|_ _ _| _| | | | |_ _| | |_ _ _| |_ _|_ _ _ _ _|_ _ | | | |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ _| | | |_| |_ | | |_ _| _ _ |_ _ | _ _| | | _| _| | _ _ _ _| | _ _|_ |_ _ |_| | | |_| |_ _| |_| | |_ |_| |_ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _| |_ _ | | _| |_ _ | | |_ _ _ _ | |_|_ _ |_| | _ _|_ _ _| _ _|_ _| |_| _| _| |_ _ _ _ | |_|_ | | |_ | _| |_ _ _ _ | |_ _ | _ _|_ | _ _|_ _ _|_ _ _|_ _ _ _ _ | | _ _ _ _|_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| _ | | | _ _ _| | | |_| |_ | | |_| | | _ _| | |_ | |_| _ |_ |_ _ _|_ |_| |_ | |_ _|_ _ _ | | | | |_| | | _| | | |_ _| _ | _ _ _ |_ _|_ _ |_ _| _ | | |_ _ _ | _ _ _| | | | _ _ | _| _| | |_| | | _ | _| | |_ _ | _ | |_ _ _| _ |_ _ | | +| _ | | | _ _ _ _ | |_ _| _ _ _| _ _| _ | _ _ _|_ |_ _|_ _| | |_ |_ _|_ _ |_ _ | |_ _| _ _ _|_ _ |_ | _ _| | | | | |_ | _| | |_ _ |_ _ _ _| | | _ _ _ _ | |_|_ _| _ | |_|_ _ _ |_|_ | | _ _ _ _| |_ _ | _ _| | | |_ _ | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ _ _ _| | |_ _ _| _ _ _ _| _ |_ |_ | _ _ | | | |_|_ | | |_ _ | |_ _ | | |_ | _| |_ _| | | | |_ | _| _ _| _ _| _|_| _ _ _| _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ | _ _|_ | | |_ _ | _ _ _| _|_|_ _ |_ _| | | _| _ _ | _|_|_ | | | _ _|_ _ _ _ _| | |_ _ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ _| _| | | _ _|_ _ | |_ _ | |_ _ | _ _| _ _| | _| | |_ | | | |_ _| _| _| _ _|_ _|_ _ |_ _|_|_ _ | | |_ _|_ | | _| |_ _|_ _| | _ _|_ | _ _ _| _|_ _| |_ _|_ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ | _|_ _ _ _ |_ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | |_| | | _ _ _ _ | _|_ _| _ | |_|_ | | _ _|_| |_ _ | _ _ _| | _|_|_ _|_ _ _|_ _|_ _ | _ _ _ _ _ _ _ _ | _| | |_ _ _ | _|_ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _|_ | | _| |_ _ _|_ | | |_| |_ | | _| | _|_ _ _ _| | _| |_ _ _ _ _|_ _ _ _|_ _ _ | |_ | |_ |_ |_ |_ _| |_ | _|_|_ | | | _ _|_ _ _ _ _| | | _ _ _ _| _| | |_ _ _|_ | | | | _| | _| |_ _ | | |_ _ _| |_ | | _ _ _ _| |_| _|_| _| | | _ _| _| |_ _ | _| |_ _| _ _ _ _| _| |_ _ |_| | _ _| |_ | | _| _ _ _ _ | |_ _ _| |_ _ _| |_ | | | | _|_|_ | | | _ _| _ | _| | | | _| _|_ _| | |_ _ | | | |_ _|_ | | _| |_ _ | | | | |_ _ _| |_| _| _ _|_ |_ |_ _ _| | | _ | |_ _ _ _| |_ | _|_ _| |_ _|_ _ | | |_ _| | |_ |_ _ _| | _ _ |_| |_ | _ _| | |_ _ | | |_ _| _ _ _| _|_ |_ | | | | _|_ _ | | |_| | | |_ | _ _ | | _| | | +| | |_ _| _ | | _| |_ _ |_ _ _ | | |_ _| | | |_ _ _ _ _| |_ _|_ |_ | _ _|_ _ | | | |_ _ | | _ _| | |_ | |_ _|_ |_| _| | |_ | |_ _ | |_ |_ |_ _ | | _| |_ _ | _| |_ _|_ _ | | _ |_ _|_ | _ _ _ _|_ |_ | | _ _| |_ _| | |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ _ | | | _ | |_ _| _| _ _|_ |_ _| | _| |_|_ _|_ _ |_ _| | | | _| _ _| | _| _|_ _|_ _ | | | |_ | |_ _|_ _ |_ | _ _ _ _ _| |_ | |_| _ | _|_|_ | | | _ _|_ _ _ _| | |_ _ | | |_ _| | _ _| |_ _| _ _|_ | | | _ _|_ | | _|_| _| _ _| |_ _ _ _ _| |_ _|_ _ _ _ | | | _| _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _ _ _| _ | _| |_ _ |_|_ | _|_ _ |_ | _|_ _ _|_ | | |_ _ _| _| | _|_ _ |_ |_ _ _ _ _| | _|_ _| | |_ |_ _ | _ _ |_ | _ _| | _ _ _| _ _|_ _ _| _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | |_ _ _|_ _| |_| |_|_ _ _ |_ _| |_ | _ _|_ | | |_ _ | |_ _ | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | | | _ | |_ _ _| | |_ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | _ | | | |_ |_ _ | _ _ |_ _|_ | | _| |_ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| |_ | |_| _ | | _|_ _ _ _ _| |_ _|_ _ _ _ | | |_ | _ | | _| _ _ _ | | | |_| _| |_ _ _| | | | | _ | | | | | _ _ _ _|_ |_ _ _|_ | |_ _ _|_ |_ _ _|_ | |_ _|_ _ _|_ _ | |_ _ _| | | _| _ _ _| | | |_ |_ _ | | _| |_ _ | _| _| _ _|_ _ _| |_ _| |_ _ _ _ _| |_ _|_ _ | | _|_ | | | | | |_ _ |_ _| | _| | _|_ _ | | |_ |_ _ | _|_ | |_ _ _ | | _| |_ _ _ _ _| _|_| _ _| |_| | | | _ _ | |_ |_ | _ _|_| _ _ |_ _ | _ _| | |_ _ | _ _|_ | |_ _ _| _| _ |_ | |_ _|_ |_ _| _ _ _| | | _ _|_ _|_ _ _ _ |_ _|_ |_ | | _|_| | | |_ _| _| | +| | |_ _ |_ _| | |_ _ _|_ | | _ | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ | | | _ _ _| | | | | _ _| | |_ | _ | | | |_ _ _ _| _| _| |_ |_ _ _| |_ | | _| _| | |_ _ _| | | | _| _ _ _ _| |_ |_ _ | | |_ _ _| |_ | |_ _ | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | _ _| |_ _| |_|_ _ | _| |_ _ _ _ _| _ |_ |_ _ _ _ _ |_ _ | | |_ _ | | _ _|_| _|_ _ _ _|_| |_ | |_ _ _ _| | | | | _ _ _ _|_ |_| | | _| |_ _ _ _ _| |_ _| _ _ _| | | | _|_ _|_ _ | |_ _ _ _| _ _| _ |_ _| |_ _| _ _ |_ _|_ _ |_ _| | _ _| |_ _ _ _ _ _ | _ _| | _ _|_| |_ |_ | _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| |_ _| | _|_ | |_ _ _| _| | _ _| | | |_ | |_ _ _ _ _ |_ | | _ _ _| | | |_ _ _ _ _|_ |_ _ | _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _| _ _|_ _ _ _| _ _ |_ _ | _ _| | |_ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _|_ | | _ _| |_ _| _ _|_ _| | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| |_ _ | _ _| |_ _| |_ _ | _|_|_ | | | _ _| |_ _ _| | |_ |_| | | | | |_|_ | | _ _|_| |_ _ | | |_ |_ _ | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_|_ _|_|_ |_ |_ _|_ _ | _ _ _ | _ _ _| | _ _|_| |_ | | _| | | | |_ | _ _| | | | _ _| |_ _ _| | | | |_| | |_ | |_ |_ _ _| |_ |_ _ _ | |_ _ | | | | | | _| _ _ | |_ _| _ _ _ _| | | |_ |_ _ _| | | _| _| | |_ _ _| _| |_ _ _ _| | _ | _ _ _ _|_ _ |_ _ _ _ | | | _ _ _| |_| |_ _ | |_ _ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ _ | | |_ _ | _ _| _ |_ |_ |_ | | | |_| | | _|_ |_ _| | | _ _ _| | | |_| |_ | | | _ | |_ | _| _ _ _| _| |_ |_ | |_|_ | |_ _ |_ _ | _| | | | _ _ _ _ | |_ _| |_ _ _| _| _| |_|_ _ | | _| +|_|_ | | | _ _|_ _ _ | | | |_ _| | _ _ _|_ _ |_ |_ _ _| |_ | | | |_| |_ _| | _ _| |_ _|_ | _|_ |_| | | | | | |_ | _ _ _| |_ | | | _| | _ |_ _ _| | | _| _ _ _|_| | |_|_ _ _| |_ _|_ _ | | |_ _| _| _ _|_ _ _|_ | _| | | | _| | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _|_|_ | |_ _ | _|_|_ | | | _ _| _ |_ _ | | _|_ | | _ _|_| |_ _ |_ _ | | |_ | _ _ |_ |_ |_ _ _ _ | _ _| | |_ _ |_ _| | _ _ _| _ _| _| _ |_ |_ _ | _| | |_| |_ |_ _ _| |_ | |_| _| | |_ _ _ _ | _ _|_ _ | _|_ _| |_ _| |_ _| |_ _ | | |_ _| _ |_ _ |_ | |_ _ _ _|_ _ | | | |_ _ _ _ | | | _ _|_ _ _| _ |_ |_ | |_ |_ _| _ _|_ | _|_|_ | | | _ _| _ _ _ _ | | | | _ _| | _ _ _|_ _ |_ | | | _ _ _|_ _ _| | | _ _| |_ _ _| |_ _ | | _| _ |_ _ _ | | _ |_ _ |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | _ _ _| _ _ _| | | |_| |_ | | |_ _ _|_| | _|_|_ | | | _ _|_ |_ | | |_ _ |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ _ _| _ _| | | _| | _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _| | | |_ |_ _ | | _|_ | |_|_ _ _ _ _| |_ _| _|_ _ _ | | | |_ _ _| _| |_ | _ _|_ | | |_ _ | | |_|_ | | _ _|_| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_|_ | |_ |_ | |_ | _ _| |_ _ | | |_ | | _| _ |_ |_ _|_ | | |_ _| |_ _ _| |_| | | | _|_ _ _ _ | |_ | _| | |_ |_| _| _ _|_ _ _| | _ _|_ _| _| | | |_ _|_ _| | | | _| | _| |_ _ | |_ _ _| | | | _ _| | |_ _ | | _| | | | | _ | _| | |_ _| | _ _ | _ _|_ _ _| | _ _|_| |_| _ |_ |_ _ |_ _ _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ |_ | _|_ |_ | | |_ | | | | _ _|_|_ _ _ _|_ | _ _ _ | |_ _ | | |_ _|_ | | _| |_|_ |_|_ | | | _| _ _ _|_ | _| | |_ _ | | | | _ _ _| | |_ _ _|_|_ _ | | _| |_ _ | | | _ | |_ _| | |_ _ _ | | |_ _| +| _ _| |_ _| | _ _ _|_ | | _ _ _| _ _ _ | |_ _| _| _ _|_ _ _| | |_ |_ _ | |_ |_ _ _| _ |_ _ _ | _|_ |_ |_ _| |_ _ | | _ _| | | | _|_ |_| _ _ _|_| | | _|_ _ _ _ | | | _ _ _ _|_ |_ _ | _| |_ | _ _| | | _ | |_| _| | | | |_ | | | |_ _|_ | | _ _| | | |_ _ | |_ _| | _ _|_ _ _ _ _| |_ _| _| |_ _ _ | | | _ _|_ | | |_ _ | _ | |_| |_ | |_ | | | _| | | _ _ | _| | | _ _| |_ _ _ _ _ |_ _ | _ | _| _| _ _|_ |_ _ | _| |_ |_ |_| _| _ _|_ _ _| | _| _|_ _ |_ | | | _ _ _ _| |_| _ |_ |_|_ _ |_ _ |_ | |_ _|_ _|_ _ |_ _| _ _| | _|_ | |_ _ _|_ _|_ _|_ _ |_ _ _ _|_ _| _ _ |_| _| _ _|_ |_| | |_ |_ |_ |_ | |_ _ _ _ _| |_ _| _ _ _ _| _ | | | | | |_ | | | _ _ _ _ _|_ | | | |_ _ _| _ _ |_ _ | _ _| | _ _ _ _| | | | | |_ _ _ _ _ _|_ _| |_ _ | _| |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ | |_ _ | _| |_ _|_ | | _| |_ _ _ _ _| |_ _ _ _ _| |_ _|_ |_| |_ | | | | |_ _ _ _| _ _| _|_|_ | | | _ _| _ _ | _| | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | |_ _| |_|_ _|_ _ _| |_ | _| _|_|_ | | | _ _| _ _ _ _| | | _| | | | |_ _| | | _ _|_| | _|_ _ | _ _ _ | |_ |_ _ _ _| |_ _ | |_ |_ _| | _ _| |_ _| _ _| |_ | _ _|_ | | |_ _ | | | | _| _|_|_ | | | _ _| |_ _ | | |_| |_ _ _|_ _ _|_ | | | |_ _ _ _|_ _ _ _|_|_ _| _| _ _|_ | _ _ _|_ _ | |_| _ |_ |_ | | | _ _ _ _ _| |_ _|_ | | |_ | | _ _| | _ _| _ |_ _ | |_ | |_ _| | _ _ _| |_| |_ _ _ _ _| _| | | | _ _| |_| |_| _ _|_ _| |_ | | _| | |_| | | |_ | | |_ _| _ _ _|_ | |_ _| _| _ _|_ _ | _| _| _ _|_ | _| _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| | _| _| _| | _| | |_ _| | | | _ _ _ _ | |_ _| _ |_| _| | | |_| | | |_ |_ _ | _ _ | |_ | |_ _ |_ _|_ _ |_ _| | | | |_ _ | | _|_ _ _ _ _ _| | |_ _ _|_ | | | | | | |_ _ _ _|_ _ | _|_ _ | +| | _ _ _ _| | | | _ _ _| |_ |_ _ | | |_ _|_ | _ _| | _ _ _ |_ | _ | | |_ | _ _| _|_ _ | |_ _ |_ _| | _ _ _ _| | _|_ | |_ _|_ | |_ |_ _ | _ | |_ _| | | | |_ _ _ _| |_ | | | |_ | _|_ | _|_| |_ | |_|_ | |_ _| |_| | | | | |_ _|_ _ _ _ _| |_ _ _ _| | |_ _|_ _ |_ _| _ _ _|_| _ _ _ | _ _| | |_ _ _ _ _| |_| _| | _ _| |_ _| _ _|_| _| | _| _| _ _| | |_| _| |_ _ |_|_ _ _| |_ | _| _ _ _ |_ _ _| | | | |_| _| |_ _ _ _ _| |_| | |_ _ _ | | _ _| | | _ _|_ |_ _ |_ _ _ _| _|_| _ | _| _| _ _|_ | |_| _| _| | _ _ | |_ _ |_ _ | |_ _ _ _|_ |_ |_ _ _ | _ _ |_ _ _ | _ _ _|_ | | _| |_ _ _ _ _ _ _| _|_ _ | | | _|_ _ _ |_ _ _ _ _ _ _ _| _|_ _| |_| |_| | _| |_|_ _ |_ _ _ _ _| | | _ _ _| _| | |_| |_ | | _ | _| _|_ _ _|_ _ | _ _ _ _ _ _ _|_ _ _|_ _ _| _| |_ _ _ _| _ _| _| _| _| |_ _| |_ | _ _| | |_ |_ _ | _ _| _ _ _| _ _ _ _ _| | |_ _ _| |_ _|_ _ |_ |_ _ |_ _ _ _ _| |_ _| _| | _|_ | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_| |_ _ _ _ _| |_ _| _ _| _| _| | | _|_| _|_ | | |_ | _ _ _|_| _ |_| _| | _| |_ _|_ |_| _ |_ |_ _| |_ |_| _ _ _|_ _ _ _| _ _| _|_ |_ _| | _ _| |_ _| _ _| | |_|_ |_ _ _ _ _| |_ _| _ _|_ _ _| _| | |_ _ _| |_ _ _ _| | |_ _|_ _ _ _ _ _ | _ _ | _| |_ _ _ _ _|_ | | _ _|_ _| _ _|_ |_ | |_ _| _ _ _ _ _ _ _|_|_ _ _|_ _ | _| _ |_ |_ _| | |_ _ _| _ |_ _| _ |_ |_ | _ _ _ | |_ _| | | |_ |_ | | _ _ _ _|_ |_| | _ _|_ _ _|_ | |_ _| | |_ _ _ _| _ | _ _| | | _| | | _| |_ _ _ _ _|_ | _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ _|_| _| | |_ _ _|_ _ _ _|_ | |_ _|_ _ | | _| |_ _ | |_ | | | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ |_ _ _ _| | _| _| | |_ | | |_ _ | | |_|_ _ _ | |_ | _| _ _ _ | | |_ _| |_ _ _ | |_ _|_ _| _ | | +| |_ |_ _ |_ _ _| _| _ |_ |_ _ | |_| | | | _|_ | _|_ _ | _|_ | |_ |_| | |_ _| | | |_ _ _ _ |_ | |_ _ _ _|_ | | _|_ _ _ _| _ _ _ _ _ _| _ _ _ _|_ _|_ _ _ |_ _| |_ _ |_ | _ _|_ _ _| | |_ | |_ _| |_ _ |_ _ |_ _ | | _ _ _ _ _| | |_ | _ | _ _| | _ _ | |_ _ |_ |_ _ | | _ _ _ _|_ |_ _| |_ _ _ _|_ _ |_| _ |_ |_ | |_ _ _ _| _ _| | |_ _ _| _| _|_ _ |_ | |_ _ |_ _ _ | | | | _ _| _ _| | | _|_ _|_ _ | | _ _ _ _ |_ _ _|_ _ _ _ _| |_ | _| | | | _| |_ _ |_ _ |_ _|_ _| |_ | _| |_ _ _ _ _| | _ _|_| _|_ | _| | | | _ _| | _ |_ | _ | | _ _ | |_ _| | | _ |_ _ | _|_ _ _ _ | _ _| | _ _ _ _ _ _| | | _ _ |_ | _ _ _ _ | |_| _ |_ |_ | |_ |_ _ | _|_ | _ |_ |_ _ | _ |_ _|_ | | _| |_ _| |_ _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _ | | |_ | _| | |_|_ |_ _ _| _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_| _| | _| |_ |_| _ |_ |_ | _| _ _ | _ _ _ _ _| _ _ _| | _ _ _ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | |_ |_ | |_ _ | _|_ _ _| |_ | |_ _ _ _ | | _| | |_ _ _ _| |_| _ |_ _| _|_| |_ |_ _ _ _| |_ |_ |_| _| | | |_ _ _ _| _| _ _|_ | _| _| _| _ _ _ _ | | |_ _ |_ | |_ _ _ _| _ _| _|_ _ |_ | _ _ |_ _ _ |_ _ _ _ _| |_ | | |_ _ |_ _ | |_ _ _| | _ |_ _ | | |_ _ _ |_ _ _ _|_ |_| |_ _|_ _ _ _|_ _|_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | | |_ | | | | _| | _ _ _ _|_ | _| _ _|_ |_| |_ _| _ | | | _|_ _|_ _ _ _ _| |_ _ _| |_ | |_ _ _| _ _ |_ _| | _ _| |_ _ _ |_ | | |_ _| | |_ _| | _| | |_ _ _ _ _ _ _| | _ | _| | | |_ _|_ | |_ _ _ | | | |_ _| | _ _ _| _| | _ _ _ _ | |_ _| |_ _ _| | |_ _ _|_ | | |_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | _|_ _ _|_ |_ | |_ _ _| | _ _|_ _ _ _ _ _ _|_ _ | | |_ |_ _ |_| | | | _ _ |_ _|_ _ | | | | | +| |_ _ |_ _ |_ _| _| _ _|_ | | |_ _ _|_ _| |_ _| |_ _ |_ _| | | |_ | |_ | _ _|_ _|_ _ |_ _ _| _| _ _ | _ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _|_ | |_ |_| | _| _ |_ |_ | |_ | | |_ _ |_| _ _| |_ _| _ _ | |_ _ | | | |_ _|_ _ _ _| | _|_ _ |_ _ _ _ | | |_ _ _| |_ | |_ _| _ _ | _| _| _ _|_ |_ |_ _ | | |_ _| |_| _ _ _| |_ _ _ | |_ | | _ | |_ |_| | | |_ _ _ _| |_ | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ | _| | | | |_ _ _ _| |_ |_ _ _|_ | _| |_ | _ _ _|_| _ | |_ _| | _| |_ | _ _| | _| _| | |_ _|_ _| | _|_ | _| | | |_ |_| _ _ _|_| _ _ |_ _ | _ _| | | _| | _| | | | | | _ | | _| |_| _| _ _|_ | |_ | | _ _|_| |_|_ | _ _|_ _| |_ |_ _| | |_ |_ _ | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_|_ | |_|_ |_ _|_ _ |_ _ _ |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| |_ _ _| |_ _| _| _ _|_ | | |_ | _ _| | _ _ | _|_ | _|_ _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_| _| _|_ _ | | |_ _| _| _ _|_ _ _|_ _|_ | _ _| | |_ _ _| | _| _ |_ |_ |_ _ | |_ | | _ _ _ _|_ |_ |_ _ _| _ _| _ _| | _| |_ _ _ _ _| | _| _ _ _ _ _| |_| |_ _|_ _ |_ _ | | | _| | | |_|_ _ _| | _| |_ _ |_ _ _ | | _| _ |_ |_ |_ _| _ _| _ |_ |_| | _ _| | | _| _| |_ |_ _| | |_ _ _ | |_ _ _|_ | |_ | | | | | | |_ _| _ | | _| |_ _ | _|_ _ |_ _ _|_ _ _ _| | _ _| | _| |_ _ _ _ _| _| _|_ _| |_ | _ _ _ _ | |_ _ | _ _|_ _ _| | _ _ _|_ | | |_| |_ | | _ | | _| | _ _ _|_ _| _ _|_ _ |_ | _ _| | _| _ _| |_ _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _ | _ | |_ _ | | _| |_ _ | | _ _| _| _ _ _ | | | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | _| |_ |_ | _|_| | _| _| _ _ |_ _| | | |_ | +| |_ _ |_ _ |_ | _| |_ _ _ _ _| |_ _ _ | |_ |_ | | _|_ _ |_ | |_ | | | | _|_ _ _ _ _ |_ _ _ | | _ |_ _|_ _ _ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| |_ _ | _|_ _| |_ |_ |_ _|_| | |_ | | _ _ _ _ _| | _ _| |_ _| |_ _ _ _ | |_ _ _ _| _| _| _ _| |_| _| _ _|_ _ _| | _ _| | _| | | _| |_ _ _ _ _| | | _ _| |_ _|_ _ |_ _ _ _ | _ _| | |_| |_| _| | | | |_ | | _ _| | _ _ _ _|_ |_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | |_ _| | _ _| |_ | |_ _| | _|_ |_ | |_ _| |_ _ _ _ _| _|_ | | | | _ | |_ | _|_| _| _|_ _ _ _ _|_ | | |_ _ _|_ _|_ | | | _ _ _|_ | | |_| |_ | | | | | _| | | _ _| | | |_| |_ _| | |_ _ | _| |_ _ _ _ _| | _ _|_ | | |_ _ | |_ _ _ _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _ _| | _ |_ | |_ _ | _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _ _| _ |_ | _| |_ _ _ _ _| |_ | |_| _ _|_ _ | | | | |_ |_ _| _| _ _|_ | |_ _ _ _ | | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ _| | _ |_ _ |_ | _ _| | | _ _ _ _ _|_ _ _ _|_ _ | |_| _| _ _|_ |_ _|_ _ _ _|_| |_|_ _ _| |_ | |_ _ _| | |_ _ | | |_ | _| _ _ _| | |_ | _ _|_ _ | | |_ _ |_ _| |_ _ _| |_ _|_ _ |_ _ | |_ | | _ _|_ _ _ |_| |_| _| _ _|_ | | _ _| _| _| _| | |_ | | | | | _| | | _| | | | _ _ _ _|_ _ | |_ _| | | | |_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _ |_ _ | _ _| |_ | _ _ _ _ _| |_| _ |_ |_| _ | | _| |_ _ |_| | _ _ | |_ _ | _ |_ _|_ | | _| |_ _| | | | | _| _ _ | | _ | _| _| | _ _| |_ _ _| _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | | | |_ _| _| | |_ _ _|_ | | | _ | | _ _ | _| | | |_ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _|_ _ _ | |_ _| | _| | _| _ | | _|_|_ | | +| _ _| | | | | | |_ _ | | _ _ _|_ _|_ _ | |_ _|_ _ _ |_ | | | _| |_|_ _| _ _ | |_|_ _ _|_ _|_ |_ _ _ _ | _ _| |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ | _ _ _|_| |_|_ _ |_ |_ | | _ _| | | _|_ _| _ _ |_ _ | _ _| | _ _ _ | _| |_ _ | |_ | | | _ _| _ _| |_ _| _ _| | _|_ _ _| | |_ _| _ |_ _| | _| | |_ _ | _| | | _ _| |_ _ _| _|_ _| | |_ _ | | | _ _|_ _ _| |_ |_ _| _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ _ _ _| | _ _| | | | | _ _| | _ _ _| _|_ | _ _ _ _ | |_ _| |_|_ _| | |_ _| | | | _ _ _| _ _ _ _ _ |_ _ _ _ _|_|_ _ | _ _ |_ _| |_ _ | _ _|_ _|_ | | _| |_ _| | |_ _ _|_ _ _ _| | | _| _ _| _| | |_ | _ _ | _| | _ _| |_ _| _ _|_ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ _ |_ | _|_|_ | | | _ _| _ | | | | | | _ | | |_ | |_ _ _| | _ _ _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | | | _ _ _| |_ | | |_ | _ _ _ _ _ | |_ |_ _ _ _ _|_ _ _|_ _ _|_ | _| |_ _ _ _ _|_ _ | | |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ |_ | |_ _ |_| _|_ | _|_| _|_ _ |_ _ | _ _|_ _| | _| |_ _ _ _ _| _| _ _ | |_ _ _| _ _|_ _ _| |_ | _ _| |_ | |_ _|_ | _|_ |_ _ | _|_ _ |_| | | _| _| | _ _| | _|_ _ _ _ | |_ |_ _ | |_ |_ _|_ | | |_ _ | _| |_ _ _ _ _| | | |_|_ |_| _| _| | | _| | | |_|_ _ |_ _ _ _| | | _ _| | _|_ |_ _ _ _| _| |_ _| | | _|_|_ | | | _ _| | | |_| | |_ | | _ _ _|_ | | |_| |_ | | | |_ |_ _ | _ |_| _| _ _|_ |_ _| | |_ _ _|_ | | _| | _ _| | _| | |_| | | |_ |_ _ | _ _| _| _| | _| | | _|_ _| _| | |_ | _|_ | _| _| _|_ |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | _|_ |_ | _| _ _ _ | | |_ _| | |_ _ _| |_ _ _| |_| _| _| | | |_ _|_ |_ _|_ _ _ | | |_|_ | |_ _ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _ |_ _| | _ _| | | _| | _| | _| |_ _ _ _ _| | +| | _ _| |_ _ _| |_ | | _ _| | _ _| | _ _ _|_ | _ _ _ _| _|_| |_ |_ | _ _| | _| |_ _ | _ _| | |_ _ | | _| _ | | _|_ _|_ | _|_|_ | | | _ _| | | |_| | | | |_| _ _ _ _|_ | | |_ | | | | | |_ | |_ | | _ _ _| | | |_| |_ | |_ | _| _|_ _ _|_ | | |_ _ _| |_ _|_ _ |_ | _| _| _| | |_|_ _ _ _| |_ | |_ _ _ _| |_ _| |_ |_|_ _| _ _| | | _|_ _ _ _| | _ _ _ _ _ _ |_ _ _ _|_ _|_ _ | _| _ _|_ _ _| |_ | | |_ | _|_|_ | | | _ _| | | _|_ |_ | _| |_ _ _ | | _| |_ _|_ _ _ _| |_ _ _| _| | | |_ _| | _|_ |_ | _ _| _ _ _| | |_ | |_ _| _ | _| _ _ _ _ | |_ _ _ | | _ _ _| | _ _ _| | |_ |_ _ | |_ _ | _ _ _ | |_ _ _ _| _ _| | _|_ | |_ _| | _|_ | |_ _ _ _| _ _| | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _|_ _ _ _ _| |_ _| _ _| | | |_ | |_ _| |_| |_| | |_ _| | | _ _|_ _ | _| | | |_ _|_ | _| | _ _ | | |_|_ | | |_ _ _ _| _| |_ | _| _ | |_ _ _ _| _ |_ | _ _ _ _ | | | |_ _ _ _ _ |_ |_ _|_ _ | | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ |_ |_ |_ |_ |_ _| |_ _ |_ _ | |_ _ |_| |_| |_ _ _ _| | |_ _| _ | | _| | _| |_ _ | _| | _ _| _ _| | | | | |_ | _| _| | _|_ _| | _ _| | _| | |_|_ |_ _| | | _ _| _ _ | _| |_ _ _ _| | | _| _ _ _| |_ _| |_ | | |_ _ _ _ | _|_ _|_ _ |_ _ _ _|_ _| |_ | |_| _ _ _ _| _ _ |_ _| | _ _| | |_ _ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _| _|_ _| |_ | | | _|_|_ _ | | |_ _|_ | | _| |_ _ |_| _ _| | _| _| |_ _ _ _ _| _ _| _ | _| | |_ | | | |_| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| |_ |_ _ _| | | _ _ _| | | | | | _ _| | _| |_ _ |_| _ _|_ _ _ _ | |_|_ _ _ _| | | _ _| | |_ _ _| | | | |_ | _ _| |_ | |_ _ | _| _ |_ |_ |_ _ _| |_ _|_ _ _ _ _| _ | _ _| |_ _|_ _ |_|_ _ _ _|_ |_ | | | _|_|_ | | | _ _| _ |_ _ | | _ _| | | |_| |_ | | | |_ | | _|_ _ _ | _| _| +| |_ | _| _ _| _| |_| _ _| | | |_ |_ _ _ _ _| _ | _| _|_ _| _| | | |_ |_ _ _| | |_ | | _|_ _ _ _ _| |_ | | | | |_ _ _ _ _ |_ _ _ _ _| |_ _|_ _ |_ _| |_ | |_ |_ |_ _ _| |_| |_ _ _| | |_ _ _|_ _ _|_ _ _| |_ _ | | | |_ _|_ | | _| |_ _| |_ _| _ _ | | | | _|_ _ |_ | _| |_ |_ _ _ _ _|_ _| _| | _| _| | _| | _ _| _|_ _ _ _ | _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | _ | _| | |_ | | |_|_ _ _ _ |_ _ _|_ _ _|_ _| |_ _ _|_ |_ |_ _| | | | | _ _ _ _ | | _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _ _ |_ |_ _| | | | |_ _| _ | | _| |_ _ | | |_ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _| |_ _| | | |_| _| _| _ |_ _ _| _|_ | _ | | |_|_ _ | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ _| _| | _ _ _ _ |_ _ | | _|_ _| |_ _| | _| _| _ | _|_ |_ | _|_ _ _| |_ _|_ _ _ _ _| | _| | | _|_ _|_ _ |_ _|_ _ _| | | |_ _ _|_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ |_ |_ _ |_ _ _| _ _|_ _| | _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _| | |_ _ |_ |_ |_ | | _|_ _ |_ _ _ _|_ | | _| _|_ _ _|_ | | _|_ | |_| |_ |_ _ _| | |_| _| _| | _| _ | | | | |_ _ _ _| _|_ _ _| _ _| _|_ _|_ _ |_ |_|_ _ _| _ _| |_ | | | | |_|_ _ _| | _| _ _| _| | | _| _|_ | | |_ | | | |_ _| _ _ | |_ _ | _| _ |_ | |_ |_ _| _ _ _| | | |_| |_ | | | | _ _ _|_ | | |_| |_ | | _ _ _ | _ | | | | _ _ _ _| |_| | _ _| | |_ _| | | |_ |_ _ | _ _| _ _| | | |_ _ _ | _ |_ _ _| | _|_ | | | |_ _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ _ | |_ _ | | |_ _ _| | |_ _ _ _| |_ _ |_ _ _| | _ _ | _| |_ _ |_ _ |_ | |_ | | |_|_ | _ _| |_ | _|_ _ _| |_ _|_ _| _| | _| _ _|_ | _ | | | _ _ | _| | _|_ |_ | _ |_ _ | _ _| |_ | |_ |_ _ _ _ _| |_ _| _ _| |_ | | |_ _ _ _| |_ _|_ | | _| |_|_ |_| |_ _ |_ _ _ _| | _| | +| | | | | _|_ _| _| _ _ _| | _|_| _| _|_ _ |_ _ _| | | _| |_ |_ _ _| |_| | _ _ _ _ _| | | | | | | _| | _| _|_ _| |_ _ | _ _ _ | _ |_ | _ |_ | _ _ _| |_ | _| _| _ _| _ _| | |_ | _ _ _ _ | |_ _| | | |_ _| | |_ |_ _ | _ _ | _| _| | | |_|_ _ _| _ _|_ _ _ _|_ _ |_ _ _ _| | _|_ _| _|_ _ |_| |_| | _|_ _ _ _ _ _|_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | _|_ |_ |_| _| |_ | _ _ _ _| _ _ |_ _ | _ _| | _ _ _ _|_ | | _| |_| | |_ _ | | _| |_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | |_ _| _|_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | _ _| | |_ _|_ _ _| _| |_ |_ _ _ | | _ | | | |_ _|_ _ |_ _ _| _| | | |_ _|_ | | | _| | | |_|_ | | |_ |_ _ | | | _| _ _| |_ _| _ |_ |_| |_ _ _| _ |_| | | | _|_ _ |_ | | _ _ | _ _|_ _| | | | _ _ |_ _ _ | _ _| |_ _| |_ _ | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| _| |_|_ | | | | _| _|_ | _ _| | | | | | _ _| _| | | | |_ _ | _|_ | | | _ |_ |_ _|_ _ |_ | _ _ _ _| | |_ |_ _ _ _| _|_ _| _ _|_ |_ | _ _ | | | _ _| | | | _| | | | |_| |_ | _ _ _| _ _ _ | |_ _ _ | |_ _|_ _ _ | | _ _ | | | | | |_ _| | _ | | | |_ | | |_ _| | |_ _ _ _| _ _| _| _| |_ _| _ _| |_ _ _| |_| _| _ _|_ _|_ _ |_ _ | _|_|_ _|_ | | _| |_ |_ _ | _|_ _|_ | | _| |_ _| _ _| | |_ _| | |_ _| _ |_ |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ |_ | _ _| | | |_ _ | _| _ _ _| |_| |_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| | |_| | _| | |_ | _ _| | _ _ |_ | | | |_ _ | | | | |_ |_ _ _| | | | | _|_ | | | | |_ _ _ _| |_|_ | _ |_ |_| _ |_ | _| |_ _ _ _ _| |_ _ |_ _|_ | |_|_ _ _| |_| |_ |_ _| _ _ _| | | _ _|_ _ _| _ _|_ _ | | _ _| | _ _ _|_| |_ _ _| | | | |_ |_ _ | _ _ _ |_ _ |_ _| |_ | +| | | |_| | _ _ _| | |_ _ |_ _ |_ _|_ _ _ _ _|_ | _ _|_|_ _ _| | _| | _| _| | | | _| | _|_ _ _|_| _| | |_ _ | _ | _ _|_| |_ _ _| |_ _ _| | |_ _ _ |_| _ |_ |_| | _ _| | | | _ _| | | | | | _ | | _| |_ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _ _| |_ | |_ _| _ _ _ _ | |_|_ | _ |_ _| | _ _ _| |_ _| _| | _|_ _| |_| | _| |_ |_| _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _|_ _| _| _ _|_ _| | _ _ _| | | |_| |_ | | | |_ _ _ _ _|_|_ |_ | |_ _| | |_ _ _ _| | _|_ _ | | | | | | | |_ | | _| |_ _ _ _| |_ | _|_|_ | | | _ _| _| _ | | _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | | | | _| |_ | | _ _ _| | _ _| _ |_ _| |_|_ |_ _ _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_ _| |_ _ _ _| | | | |_ _ | _ _| _| _ _|_ | |_| _ |_ |_ | _|_| | _ _ _ _ _|_ _| | |_ _|_ _ _ _ _ |_ _|_ _ |_ _| _ |_ | | _ _| | _ _| | | | | |_ _| _|_|_ | | | _ _| | _ _ _| _| |_ _ | |_| |_ _| | _|_ _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ |_| | | |_|_ _ | | _| | _| _ _ _ _ _| _| _| |_ _ |_ |_| _ _ _| _| | | | | _ _|_ _ |_ _|_ _| |_ _| | | | _|_ |_ _ _| |_ _ | _ _ | _| |_ _ _|_ _|_ _ | | _| |_| _ _| | | |_ | |_ _| _|_ | |_ | | |_ _ | |_ | | |_ _ _| _| _| |_ _| | _|_ _ | _ | _| |_ _ _ _ _| _ _ _ _| | | _ _| | |_ | | |_ _| | |_| _ | | |_ |_ _ | _ _ | | _ _|_ |_| _| _ _|_ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_| _| | _|_ _ _| _| | _| _ |_ |_ |_| _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | | _ _| |_ |_ | _|_ _ _|_ |_| _ _|_ _ _|_ _ _ _ _|_ _ |_ |_ _| _ |_| |_|_ _ | _ | |_ _ _|_ _ | | |_ _ | _| _ _|_ |_ |_ _ _| | _ _ _| _ _ |_ _ _ _|_ _ _ _ |_ _ _|_ |_ _|_ | _ _|_| | _| _| | _ _ _ _| | | | | _ _| | _| _ |_ |_ | _|_| | |_|_ | | _ _|_| |_ _ _ |_ | | |_ | | +|_ _|_ | |_ _ | _|_ _ _| |_ _ |_ _ _ | | _ | | | _ _ _ _ | | | _| |_ _ _| | |_ _| |_ _| |_| _ _ _ _ _| _ _| | | | _|_ | | |_ _ |_ | _| |_ _ _ |_| _| _ _|_ | |_ | _|_| | | |_ | | |_ _| |_ _| | |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ |_ |_ _|_ |_ |_ _ | | _| |_ _ | |_ |_ _ | |_ _ | _|_ _ | | _| |_ _| | _| _ _|_ _|_ _ |_ | | _|_ | _|_|_ | | | _ _|_ |_ | | |_ | | |_ _ | _ _ _| _ _ _ _ |_ _ | _|_|_ _|_ | | _| |_ _| |_ _ _ _ _ | _|_ _| | _| _| _| _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| | _ _ _ _|_ |_ _ _ _ _ _| |_ _| _ | _ _| | | | | _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| _| | | |_ _ |_ _ | | _| | | |_ |_ _|_ _ _ _ _|_ |_ _ _ |_ _ _ | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ | |_ _ | _| | |_ _ _ _|_ | _| |_ _ _ _ _|_ |_ |_ _ _| |_ _| _ _|_| _ _ |_| _ _ | |_ _ _ _ | |_ _ _ |_ |_ _ |_ |_| _| | | | _| |_ _ _ _| _|_ _|_ _ |_ _ _ _ _| |_ _|_ | _| _ _ _| | | |_ | | | _| |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| |_ _ _ _ | |_ | | | _| | | _ _| _|_ | | | |_| _ _ | _ _ _| | | |_ _| _|_ _| _ _ |_ _ | _ _| | _ _|_| |_ _ |_ _| | _ _ _ _| |_ _ | |_| _| | _| _| |_ _| | | |_ _|_ _ _ _|_ | | | |_ |_ _ |_|_ | | |_ | |_ _ _| |_ _| | _ _ _| _| _|_ _ | |_| _ |_|_ | | |_ _| _ |_ |_| | _|_ _ _|_ | |_|_ | | |_ _| _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ | _| _| |_ _ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _| | | |_ _ | |_ | |_| _| _ _|_ |_ | | | _| | | |_ _|_ | _| _ _| | | |_ _| |_ _| _ _|_ _ _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | _| |_ | | _ |_| | | |_ | _ _ |_ _| |_| _ _| | |_ _ _ _ _| _| _ | |_| | | | _|_ |_ |_| | | | _| | |_ | _ _ _| | _|_ _|_ | | | | |_ _| |_ _ _ _| |_| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ |_ _| _| _| _| | +| _ | | _ | | _ _ _| _ | | |_ | | | | | |_ |_ _ | | _| | _ _|_ _ | _|_ _| | _ |_ |_ _ |_ _ | _ _| |_ _| | _ _| |_ _| _ _| _| | | _| | | _| |_ _ _ _ _| _| |_ _ |_ _| | | |_ _ _| _ _| _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _|_ | |_ | | _| | |_ _ _| | | | | |_ |_ _| _| | _ _ |_ _| _| | _| | | |_ _| _ _ _ |_ _ _| _ _| | |_|_ _ _ _ _| |_ _| _ _ _| | _| | | _| |_ |_ _|_ _ | | |_ |_ _ | | _| | | _ _ | | |_ |_ _ | _ _| | _ _| _ _ _| | |_ _| _ _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ _| |_ | | | _ _|_ _| | | _| | |_| |_| _| | | |_ _|_ | |_| _ _ _ | | |_ _| |_ _ _| |_| |_ _ |_ _| | |_ _ _|_ _| |_ _ _ _ |_| _ _ _ _| _| _|_ | _|_ _| | |_ _ _ _ _ _ | | _ _| | _ _| | |_ _ | |_ _ | |_ _ _ _ _| |_ |_ _ _ | _| | |_ | _| _ _ _| | | _| | _|_ |_ | _| |_ _ | | | _ _ |_ |_ | | _| | | | | _| _ _| _ | _|_ _ | _ _ _ | | | |_ _ | | _| | _| | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| | |_ _ | | |_ |_ _|_|_ _ _| | |_ | _| | | | | |_ | | |_|_ _ | _ _| |_ _| _ _ _|_ | | |_| |_ | | | _ _ _| |_ _ _ _|_ | | _|_ _ _|_ |_ _ |_ _ _| _ _|_ _ _ _ _|_ _ | _ | _ | |_ _|_ | _ |_ _ _ _ |_ | |_|_ _ _ |_ | _|_ _ | |_ _ _| _| | _ _ _|_ | | |_ |_ _ _| |_ _|_ _ | |_ _ _ | | |_ | _ _|_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ | |_ | _ _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ _ _| _ _| | _| | |_ _ _| | _| |_ _ _ _ _| _| | |_ _ _| |_ _|_ _ _ _ _| |_ | _ _| |_ _|_ _ |_ _ |_ | _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | | |_ | | _| _| _|_ _ | | _ _ |_ | | |_ | |_ _ | |_|_ _ _| |_|_ _ _ _ | | | _|_ _| | |_ _ _ _|_ _|_ _ _| | _ |_| |_|_ |_ _ |_ _| |_ _| |_ _|_ _ _ _ | | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| _|_ _| _|_ | +| | | | |_ _| _| |_ _ _ |_ |_ _|_|_ | |_ _| | | | _|_ | |_ _ _ _|_| _ _ |_ _ | _ _| | | _ _|_ | | | | |_| |_ | | _ _|_ _ _ _| _ _| _ _ | | | |_ | | | | |_ |_ _ | | | |_ _ _ _ _|_|_ _ | _ _|_ _ _ _|_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | | |_ _ _ _ _| |_ _ _| | | _| _ | _|_ _ _| |_ | _ _ _| _|_ _ _|_ |_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| | _ _| | _ _|_ _| |_ |_ |_ _ _ _| | |_ |_ | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _ | | _ _|_| | |_ _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _|_ _ _|_| | _|_ _|_| _ _ |_ |_ |_|_ |_|_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _ _ _ _| |_ |_| _|_ _ _ _ | |_ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ |_ _ _ _ | |_ _ _ _ | |_|_ | _ _|_ | _ _|_ | | |_ _| _|_ |_ _| _ |_ | |_ _ | | | |_ _ _ _|_ |_| |_ _ _ _ _ _|_|_ _ _ _|_ _ |_ _ _|_ _ _|_ | | |_ _| | _|_ |_ _|_ |_| |_| | | | _| | | | |_ | | |_| | |_ _ _ _| |_ _| | | | | |_ _ _ _ _ _ _|_ | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| | _|_ _ |_ _| _| | | _ _ _ _ | |_ _ _|_ _ _| | | |_ | |_ _| |_ _ _| |_ | |_ |_ _|_ _ | _ |_ _|_ | | _| |_ _ _ |_ | |_ _ | _ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | | | | |_ _ _ _ _| _ _ _| |_| _|_ _ _ _ _ _ _| | _| | | _ _|_ | |_ _ _| |_| | |_| _| |_| _| _ _ |_|_ _ |_ _|_ _ |_ _ _| | | _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | |_ | |_ _ _| | _| | | |_ _|_ | _| | _ | | |_ _ _ |_ _| | |_ _ | | _ _ | |_ _ _ _ _ _| _|_ |_ | | _ _ | | _ _ |_| | | _ |_ |_ _ | _ _|_ _ | | | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ |_ _ _ _|_ _|_ _ |_ _ |_ _|_ _| |_ _ _| _| _|_ _| | | | |_ _ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_| _ |_ |_ | _|_ |_ _ _ | _| | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| _|_| _ _ _| | | +| |_ _ _| |_ |_ _ _ _|_ | | _ _ _| | _ _ _|_ _ _ _ _| | | _ _ _|_ | | |_| |_ | | |_ _ _ _ _|_ |_ _|_ | | _| |_ _ |_ _ | | |_ _| _|_ |_ | |_ _| |_ |_| |_ _ _| |_ _| |_ _ | _ _ _ _ _|_| _ _ _ |_| | _| | | |_ _|_ | |_| _ _ | | |_|_ |_ _ _ _ _ _| |_ | | | | _|_ _| _ _ |_ _ _ | _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _|_ _| | _ _| | _| _ |_ |_ | | _ _ _| _|_ _ _ _ _|_| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ |_| |_ _|_ _ _ _ _|_ _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | _ _ _ |_| _ _ |_ _ | | _ _|_ _ |_ | _| _ | | _ _ | _ _| |_ _ _| |_ _ _ _ _|_ _ | | _ _ _ _|_ |_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | |_ _| |_ _| | _| |_ _ |_| | _ _| |_ | _ _| |_ _ |_ | |_ _ _ _| _| _ _| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ |_ | |_ _ _ |_ _| |_ _|_ _ _ _ _| | |_ _ _|_ _| |_ _|_ |_ _ _|_ |_| _ |_ | | _|_ _ _|_ _ | _ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | | |_ _|_ _ |_ _| | _ | | _| | _ _ _ _ | | | | |_ _| _| |_ | _|_ _ _ _| _ _| | |_| | | |_ |_ _ | _ _ _| | | |_ _ _ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ _| _ _ |_ _ | _ _| | _| _ _ _ |_| |_ _ _|_| _|_|_ _ _ _ | | _ _ _ _| _ _|_ _ _ _ _|_ | | _| | _| |_ _| _ _| _| _ _ _|_ _| |_ | | _ _| _| | |_ _ _ _| _ _| | _| _| _| _|_ _ | _| |_ _ _| |_ _|_ _ _ _ _|_ | |_| | |_ _|_ _ |_ _ _ _|_ _| |_ _|_| | |_ | | _| _ _ _ |_ _ _ _ _|_ _| | |_ _ _ _|_ _ | | | | | | _ _ _| | | _ _ _ _ _|_ _ _ _| |_ _ _| _|_|_ | | | _ _|_ |_ | | | _ _|_ _ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ |_ _|_ _ _ _ _| _|_| | |_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_ _| |_ _ |_ _| _ _| _ _| _|_ _ |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_|_ |_ _ | |_ _| +| _ _ _ _|_ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| |_ _ | | |_ _|_ | | _| |_ _ |_ _ |_ _ | | |_ |_ _ | _ _ _| |_ _|_ _ |_ _ |_| _| | | _| _| _|_ _| _ _|_ _ _ _| _|_ _ | | | _ _ _| _|_ _ _| |_ _ _| |_ _|_ _ _ _ _| | _| _| | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _| | | | _ _ _| _| | |_ _| | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | | |_ _|_ _ _ _| |_| _| _ _|_ | |_| _ _ |_ _ _ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _|_ _ | | _ _ _ _ | |_|_ _ _ _| | _|_|_ | | | _ _| _| | | | |_ _ | |_ |_| _| _ _| _ _|_ _| _ _ |_ _ _ | _ _| |_ _| | |_ _ _ _ _ _| _|_| _ _ _ | | | |_ _ _| |_ | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| | _ _| |_ _ _| _| | _| _ _ _| | |_ |_ | |_ _ _ _| _ _ |_ _ | _ _| | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ | | | | _ | | _ _|_ _ _| | _ _ _ _ | |_ _ _ _ _ _ _ _| |_ | _| _| _| _ _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | | | | _| | | |_ |_ _ | |_ _| _|_ _| | |_ _ |_ _ | | _| | | |_ _ _| _ _ | _|_ _ _ | |_| _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _| | _ | _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | _ _ _| _| | |_| |_ | | _ _| _ |_ _ _|_ _ _ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | | _ _ _|_ _ | |_ _ |_ |_ _ _ | |_ | |_ _|_ _ |_ | |_ _ |_ _ | | |_ _ | |_ _| _| |_ _| | | _ _ | | _ _ | _ _ _ _|_ _ _| | |_ _ _|_ _ | | _ _ _ _|_ |_ _| _| _| | |_ _ _ _ |_ | _ _ | _|_|_ _ _ _ | |_ _|_| | | |_ | _ _|_|_ | _ _ _ _ | |_ _ _ |_ _ _ _ _| |_ _|_ _ _|_ | | | |_ | _ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ _ _| _ _ |_ _ | _ _| |_ | | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | _| |_ _ | | | _ _ |_| _ _ _| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_|_ _| | |_ _ | +|_ _ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _| | | |_ |_ _ | _ _| _|_ _| |_|_ | | _ _|_| |_ _ | _ |_ _ | | _| _|_ _| _| | _ _ _| _ _ | | _ _| | _|_ _ | _|_ _ | _ |_ | | _ _ | _ _ | | | _|_ _ _ _|_ _ |_ |_ _ _| |_ | _| _|_ _ | | |_ _|_ | _|_ |_ _ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ | | _ _ _ _ | _| |_ _ _ _ _|_ | | |_ _ |_ |_ _|_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _|_ _ _ | |_| |_ _ | | _| |_ _ | _ _ _|_|_ _ _ _ _| |_ _| _ _ _ _| | | | | |_ _ |_ _|_ _ _ |_ | _| | _ _ _| | | |_ _| | _ _ _ | | |_ _ _ _ | |_ _ _ _ _ _| |_ _| |_| _| _ _|_ _ _| |_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| _| | | | _ _ _ | | |_ | _ _ _| | |_ _ _| | | _ _ _| | | |_| |_ | | | | | | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ _ _|_| |_ | |_| | _ | _| |_ _ | _ _ _| _ _ |_ _ | _ _| | |_ | _| _| |_ _ _ _ _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_|_ _ _ _ _| _|_ _ _ _ _ _ _|_ _ _ _ _ | |_ _ _ _|_| _ _ _ _| | | | _ _|_ _|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ |_ _| _ _| _ _| _| | _|_|_ | | | _ _|_ _ | | | |_ _|_ _ | _ |_ _|_ | | _| |_ _ _ _| |_ | _ _ _ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_ _ | | |_ |_ _ _ _ _ _|_ _| | | _ _ _ |_ _ _ _|_ _ _ _ _ |_ _|_ _ |_|_ _ _| _|_ _ | |_ _| |_|_ _|_ | |_ _ _ _ _ _ | _|_ _ |_ _ | | |_ _ _| |_ | |_ _| _| _| | |_ _ _ _|_ _| _ _| _| _ | | _| |_ _ | _| |_ | |_ _ _ _ | |_ _ | | _| |_ _ | | | _ _ | | | | _ _|_| |_ |_ | |_ _ _| | |_ _ _|_ | | _ | | _ _|_ _ | _ _ _| | | |_| |_ | | _|_ |_ _ |_ _|_ | _|_|_ | | | _ _|_ _ | | | | | _| _ _|_ _ _| | |_ _ |_ _| _|_ | | _ _ _| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | | _|_ _ _| | +| _| _ _|_ _ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _| | _ _|_ | | |_ _ |_ _| _ _ _| | _| _| _ _ _| _| |_ _ | _ | |_ _| | | | | _| | _| | |_ | _| | |_ _|_|_ _|_ | |_ _ _|_ _ _| |_ _ |_ _ | _| |_ _| _| _ _|_ _ _|_ |_ | _| | | | _ _| | | _ | _ _|_ _| _ | _|_|_ | | | _ _| _ _ |_| | | _|_ | | _ _|_| |_ _| _ | | | |_ _ _| _ _| |_|_ | |_| _| _ | _| | | |_ _|_ | |_ _ _ _ | | |_ _ _ _ _|_ _|_ _ | _| | |_ _ _|_ | | | _ _ _| _ _ _ | _ _| _| _|_ _| |_ _ |_ |_| | | | _|_ _ |_ _ | |_|_ _|_ | _|_ _ | _| |_ _| | _| |_ _ | _ | | | _ _| _ _| | _ _| _ _ | _ _ |_ _ | _|_|_ | | | _ _|_ _ _ | | _ |_ _| _| |_|_ _| _ _| | | _| | _|_ _| | |_|_ _ | | | |_ _|_ | | _| |_ _|_ | | | | _ _ _| _|_|_ | | | _ _| | _ _ _| | | _| | | _ _ _ _|_ _ _| |_ _ _| _|_ | |_| _ _ _|_ | | |_| |_ | | | |_ | |_ | _ _ |_ |_ | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | _ _ |_ _ | _ _| | |_ _|_ _ _ _ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | | | | _ _| _| | | | |_ _ _ _ _| |_ _| _ _ _| |_ _| | | | _ _| | | _| | | |_ |_ _ | _ _ | |_ _ | | _| | _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ | | |_ | | _| _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _ |_ | _| _ | | | | |_ _ _ _ |_ _ _ _ | |_|_ |_ _ _ |_ _| |_| _| _ _|_ _ _| _ _ _| _ _|_ _|_ _ _ _ | | _ |_| _| _|_ |_ _ _| | _ _|_ _ _| _ _| | | | _| | |_ _ _| | | |_ _| | |_ _ |_ _|_ _| |_ _| _ |_ |_| _|_ | _ _| | _ _ | |_ | |_| | | _ _|_ _ | | | |_ _|_ | | _| |_ _ _| |_ _ |_ |_ _ _ _ _| |_ _|_ _ _ _| |_| | | _ _| | _ _ _| |_ _| _ _| | _| _ |_ _| _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ | | _ |_ _ _ _| | |_ _ _ | | +| _| |_ _ _ _ |_ |_ _ |_ _| _|_|_ | | | _ _| _ | | | | |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | |_ _| | _ _| |_ _| _ _| _|_ | _ _| | _ |_ _ | _| _ _| |_ | | | _|_ _| | |_ _ _| | _|_ _ _| | _|_ _| _ _ _ |_ _ _ _ | |_ _ |_ _ |_| |_ |_ | _ _| | _ _ _| _|_ _ | _|_ _|_ _ | |_| | |_|_ | _ _ _| | |_ _ _ _ _| |_ _| _ _| | _| | | | _ _|_ | | |_ _ | _| | | | |_ | |_ _ _ _| |_ _ _ | _|_|_ _ _ _| | | |_ _ _| |_ _|_ _ _ _ _|_ _ _ | | _|_ _|_ _ |_ _ | _ |_ | _| _ _ _ _ | | _|_ | | _ _ _ _|_ _ _ _ |_| _| _ |_ |_ | | | _|_ | | | | | _| _| | |_ _ | | | _| |_ _ | _ _| |_ _ _| | |_ | |_| | |_ _ |_ | _| _ _ _| | _|_ | | |_|_ _ _ _ _| |_ _|_ _ _ |_| | | | _|_ |_ | | _ | _| | | |_| |_| _| | | _| | _|_ _| | | |_ _ | | |_ |_ _ | _|_ | |_ _| |_ _ _ _ _| |_ _| | _ _ _| | | _|_ _| | _| | _ _| | _ _ _| _ |_ |_ _ | _ |_ _|_ | | _| |_|_ _ | |_ | | |_ _ |_ _ _| _| |_ _ | _|_|_ | | | _ _|_ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | |_| |_ | | |_ _ _ | _ _|_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | | |_| _| | |_ _ |_ _| _ _ _ _ _ _ _ _ |_ _ _ _ _| |_ |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _| | |_ _ _| | _| _ _| | _|_|_ | | | _ _| _ _ _ _| | | | |_ _| _ _| | | | | | _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| | |_ _| _ | | | | |_ _| _ _|_ | |_ | _| |_ _ | |_ _ |_ | _ _| _ _| | _| |_ | _ _| _ _ _ _ | |_ _| |_ | | _| |_ _ |_ _| _ _ _| _ _ |_ _ | _ _| | _| | _| | _ _ |_| |_ | | |_ | |_ _ | | _ _| _| _ _|_ | |_ _ | | _|_ _|_ _ _| | _|_ _ _| | |_ | _ _| | _|_ _ | | |_ |_ _ | _ _|_ _ |_ |_ _ _ | _ | | | | _ _ _| |_ | _| | |_ _ _ _| _ _| _|_ _ _| | |_ |_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _| _ _ _| | _ _| _ _ _|_ _| | +|_| _| _ _ _ | | | |_ _ |_ _ _ _ _| |_ _| _| |_ | |_| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _ | |_ _ _ _| _ _| | _ _|_ | | |_| | _| |_ |_ |_| _|_ _| | | |_ _ _ _ | | |_ _|_ _ _ | |_ _ |_ _|_ | _ _| |_ _ | _| |_ _ |_ _ _| _ _| | _|_ | _|_ | _ _|_ _ _ |_|_ _ _ | | |_ | |_| | _ _|_ _ | _|_ | _| _ _ _| _ _| _ _|_| |_| _| | _ _| |_ _| _ _| | _| |_ _| _|_ | _ | | |_ _ _| _ | | _| | | | | _ _ | | _ | _ _| |_ | _ _|_ _ | | |_|_ |_ _ _| | _|_ _ _ _| | |_ |_ _| _ _ _ _ | |_| _| _| _ _|_ |_ _|_ _| |_| | |_ _| |_ | | _|_ _ _| |_| | | |_| | _| _ _| | |_ _ _ _| | | _|_ _ _| |_ | _| |_ |_ _| _ _| | | _ |_ _| | _ |_ _ |_ _ _| | _ _|_| |_| _ _| | | | | _| | |_ _| | |_ |_ | |_ _ _| | | | | |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _|_ _ _ _| _ _ _ _|_ _| _ _|_| |_| _ |_ _| _| |_ _ _ _|_ _ _ | _|_ _ |_ _| | |_| | | |_ |_ _ | _|_ _|_ |_ |_ _ | | | |_ | | |_ _ _ _ _| |_ _| _ | _| _| | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ _|_ | | _| |_ _ _| _| |_ _ _ | _| | | |_ _|_ | |_ _ _ | | | |_|_ |_| |_ |_ |_ _|_ _ |_ _ | | _ _ _ _ | |_|_ | _| _ |_ |_| _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ _ _ | | _| _ _| |_ _ _ _ _| |_ _| _| |_ | | | _| _ _| _ | |_ _|_| _|_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ | | |_ _ _| _| | | _| _ _| _ | | _|_|_ _ _|_ | | | _|_ | |_ _ |_ | _| _ _| |_| _|_ | |_ _ | | _| |_ _ | | | | | |_ | |_ _ | | _ _ _| | | |_| |_ | |_ | | |_ _ _ _|_ _ _ _ _| _| _| _ _| | |_ | _| |_ _ _ _ _| | |_ _| |_ _ _ _ | _ _ _| _ _ _| | _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ _| |_ _| |_ _| |_ _| |_| _ |_ |_| |_ |_ _ | | | | |_ _ _ _ _|_ _ _ _| | | | _| | |_ | | _|_| | _| _ _ _| |_ _ _ _ _| | | _ _ _| _| +| _|_ | _| | | |_|_ _|_ _ _ | _ _ |_ _ _ _| |_ _ _| |_| _| _ _ _ | _| _|_ _ _ _| _ _| _| |_ | _|_ _ _ _ | | | | | | | _ | | |_ _ _| | | _|_ _ _|_ |_ _ _ _|_| | _ _ _ _|_ _|_ _ _ _ _|_ _| | |_ _ _| | | |_ _ _ |_ _ _|_ | | _ | | _ _| |_ _| |_ _ |_ _ _ _| | _ _ _|_ _|_ _ |_ _ _ _| _ _| | | _ _| |_ _ _ _| _ | | _ _| _ |_ |_ | |_ _ _ _| _ _| _| | |_ _ _| _| | _|_| _|_ _| | _ _ _ _| | | | | _| |_ _|_|_ _| | |_ _ _|_ _ _ |_ |_ _|_| _ _| | | | _ _ _ _ | |_ | |_ _ _| |_ _ _|_ _ |_ _ | | _| |_ _ | _| |_ _ _ _ _| _ _ _ _|_ | |_ | | | _| |_ _ _ | | _| |_ | | | _| _ _ |_ _ _ _|_ |_| | |_ _ _ | _ _|_ _ _ _|_ _ | |_ | |_ _| | | _|_ _| _|_ | | |_ _|_ | _| _ |_ |_ |_ _ _| |_| |_ | | _ _|_ _ _ _ _|_ _ |_| |_ |_ | | _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ | |_ |_ _ | _ _| |_| _ |_ |_ |_ _ _ _| |_ _ _ | |_ _ _ _| _ |_ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ _ _ _| | | |_ | _| _ _ | _ _ _ | | | |_| _|_ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | |_ _| | | _| | |_ |_ _ | _ _ _ _ _ _ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _ | |_ _ | |_ _ | |_| _ | | _| |_ _ | |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| | | |_ |_ |_ _| _ _ | | _ _ _ _|_ |_|_ _| |_ | | |_ _| |_ |_| _ _| |_ |_ _ _| _|_|_ | | | _ _| | | |_| | |_ _|_ _| |_| _|_ _| |_ | | |_ _| |_| | | _ _ _ | | | _| _ _|_ | | _| |_ |_ _ _| | _| | _|_ _| | |_ _ _|_ | | |_ _| |_ | | | _ |_ _|_ _ | _|_|_ _|_ | | _| |_ _ | | |_ _| _ _ |_ _ _| | | _ _| _| | |_ | _ _ | _|_ _ |_ _ _ _|_ _| |_ | | |_ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _ _| | | _ _ |_ | _| _| _ _|_ |_ | | _| _| |_ _| |_ | |_ _ _ _ _ _ | | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _ _ _ _ _ | | _ |_| |_ _ | |_ |_ | +| _ |_| | |_ |_ _ |_ _|_ |_ | | |_ _ _ | _| _ |_ |_ | | |_ _|_ | |_ _ | _| | |_ _ _ _ _| |_ _ _ _ _ | |_ _| |_| |_| | _| | |_ _ |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ _ _ _|_ _ _|_ _|_ _|_ _ |_ _| _ _ | |_ | |_| | _| | |_ | | |_ _ |_| _ _| | | |_ _ _ _ _ | _ _ _| |_ | |_| _| | | |_ _ _ _ |_ _| | | _| _| _ _|_ |_ _ |_ _ | | |_ _ | | _ _ _| | _ _ _ | _ |_ _| | | | | | | |_ _ _ _ _ _|_|_ _ _ _ | |_ _| | _ _ _| | _ _| |_ _ _ _| |_| |_ _|_ _ |_ |_ _ _| | _| | |_ _ _| | _| |_ | _ _ _ _| _ _ |_ _ _| | _|_ |_ | _ |_ _| |_ |_ _|_ | |_| _| |_| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | |_ _ _|_ _ _ |_ _ |_ _| _ _| | _| _| _ _|_ | | _ |_ |_ | | |_ | _ _ _ _ | |_|_ |_ |_| _| | _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| | | | | |_ _| | _| _| _ _|_ | _ | | _ _ _ |_ _|_ _ | | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _| _ _| |_ | _| _| |_ _| | _ _| |_ | _| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _|_ | |_|_ | | _ _|_| |_ _ | _| _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | |_| |_ _ _ _| _ _| |_ |_ _| | |_ _ _|_ | | | _| |_ _ _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| |_ _| |_ |_ _| |_ _ |_ | _|_ _ |_ _| | _ _ _ _| _ |_ |_| _|_ _ |_ _ _ | _ _ _|_ |_| | _ |_ _ _ _ _| |_ _| _|_ _| |_ | | | | _ _ _ _|_ |_ _ |_ |_| _|_ _ |_ _ |_ _ _ |_ |_ | | | _|_ _ _ _|_ _ _ _|_ _ |_ |_ _| | | _|_ | _ | | | |_ _ _ _| | | _ _ | _| | | _ _| | |_ |_ _ | |_ _| _ _ _| | | |_| _| | |_ | | | |_ | |_ _| | _| | |_ _ | | _ _ _ _|_ |_| _|_ _ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _|_ _ _ _| | _| | _| _| | _| |_ _ _ _ _| _| | | | |_ _|_ |_ _ _ _| _ _ |_ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ | _| | +| _|_ | |_| _ _| | _ _| |_ |_ _| |_ _ _| _| _| _ _|_ | |_ _|_ _ _ _ _|_| _ _| |_ |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _|_ | _ _|_| _|_ |_ |_ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ _ | |_ _ _ | |_ _ |_ |_ |_| | _|_ _ _| | |_ |_ _| |_ _ |_ | | | |_ _ _| _ _ |_ _ | _ _| | | |_ |_ _ |_ _|_ _ |_ _ | _ _| | | _| |_ _ _ _ _|_ |_ | _|_ _|_ _ |_|_ _ _ | _|_ | |_| |_ _ _ _ |_ _| |_ _| | |_| _ _ _|_ _ _ _ _ | _| |_ _ | |_ _ | | |_ | _| _ _ _ _|_ |_| | | | _ _|_ | _ |_ | _| _ _ | |_ |_ | | |_ | _ _ _| | | |_ _ _| | | _|_ |_ _ _ _ _|_ _ _ _ _| _ _| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | _ | |_ |_ _ |_| _ _| | | _| |_ _ _ _ _| _| _ _|_ | |_| | |_ _ | | _| |_ _ | | _| _| _| | _ | | | _| _ |_ _ _ _| _ _| | |_ _ | | | _|_|_ | _| | _| |_ _ _ _ _|_ _| |_ _ | |_ _ _ _|_ _| | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _|_ | _| |_ | | |_ | | | | |_ _| _| _ _|_ | _| _ _| | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_| |_ _ _ |_ | _ _|_ | | |_ _ | |_ _ _| _|_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ | | |_ _ _| _ _| | | _ _| _ _ _ | | | |_ _ _ _| |_ | | |_ _|_ | |_ | _ _ | | |_ _ _ _|_ | _ |_ |_ _| | |_ _ |_ _ | |_ _ | _| _| _ _|_ | | _ |_ _ | _| _ _| |_ | | | |_ | _ _ _ _ _ | | | | _ _ _ _| |_| |_ _ _| |_ | | _ _|_ |_ |_ |_ _ |_ |_ _ _| _|_ _| |_| | |_ | _ _ _ _ | |_|_ |_ |_ _ _|_ | | _ _| |_ | | | _|_ _ |_ _ |_| | _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _ _| |_ _|_ | | _| | | | _|_ _| _| | _ _ _| |_| |_ | | | |_ _ _| |_ | |_ _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ _ _ | |_ _| | _| | |_ _ _ _| _ |_ _| _ _ _|_| |_ | _ _ _| | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| | | _| +|_| _ _|_ | _ _| |_ _| _ _|_ _ _| _ _ _ | | _| _| |_ _ _ _ _| | _ _ _ _ _ | | _ _| _ | _ |_ _ | _| |_ _|_ _ | _ _ _| | _ _| | | | | |_ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ | | _| |_ _ | _| | | |_ | | | | _ _|_ _ _ _ _|_ _ |_ _ _| _ | |_ _ _|_| | _ _ _| | | |_| |_ | | |_ |_ | _| _ _ |_ _ |_ _| _ | | |_ _ _ _ _ | | | | _|_ _ | _| | _| | |_ _ _| _ _ |_| |_ _ _ _|_ |_| | _ _ _ _ | |_|_ _ _ _|_ | | _ _| _|_ | | | |_ _ _| |_ | |_ _| |_| _ _ _ _| | | _| | | _| |_ _| _| _| | | |_ _ | |_|_ _|_ | _ _| |_ | _ _| | _ _ _ _ | |_ _| _|_| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| |_ _| |_ _|_ _ |_ |_ | | | | | |_ | _ _ | | |_ _ _ _ _| | _| | | _| | |_ _ _|_ | | | _ _| _|_ | | | | | |_ _|_ | | |_ | | | | | |_|_ _ |_| | | | _ _ _ _| _| |_ _ _ _ _ _ _| |_ _| _ _| | _ | _|_|_ |_| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | _| _ | _| |_ _ _ |_| | |_ |_ _|_| |_| _|_ | _| |_ _ _ _ _|_ | |_ _ |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ |_ |_ _| | _ _| |_ _| _ _| _ | _| _ _ _ _|_ _ _ _ | |_|_ _ _ _| | | _ _|_ | | _|_ _ _ |_ | |_ _| _|_ |_ _ |_| | |_ |_ _|_ | | _| |_ _|_ _ _ _ _| |_ _| | _|_ _|_ _ |_ _| _ _| | _ _|_ |_| |_ _ | _ |_ _| _| | | _| |_ _ _ _ _|_ _| | _ _| | |_ | _ _|_ _ _| _| _| | | _ _ _ _| | |_ _| _ |_ |_ _| _ _|_ _ _| |_ _ _ _ _| |_ | _ _| | |_ | _| _ |_ |_ | | | |_ _ | | _| |_ _ | | | |_ _ _ _| | | | _ _|_| |_ _ | |_ _ |_ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| |_ | | | |_ _ | |_ _ _| _|_ _| |_| _ |_ |_ |_ _| |_| _| _ _|_ _ _| | _ _| _| _| | | |_ _|_ |_ |_ _ | | | |_ _| |_ _ _| | | | _| |_ _| |_ | |_| | _| |_ _ | | _ _ _ _|_ |_ _ _ | |_|_ _| |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | | |_ | +| _|_ _ _|_| _ _| _| | _| | _| | _ _|_|_ | |_ _ | | _|_ _| |_ | | | _| _ _| _|_ | _ _| | _ _|_ _ _| _ _| | _|_| | _| | |_ _ _ _ |_| |_ _| | | | _|_|_ | | | _ _| _ | |_| | | | _| | |_ _ _| | |_ | |_ _| |_ _| | | | _ _ _ _ | |_ _ |_ _| _| |_ | _ _ _ |_ _ | _|_|_ _|_ | | _| |_ _ | | |_ | | |_ _ _| | _ _ |_| |_ |_ _|_ | _ _| |_| |_| | | |_ _ _| | | _|_|_ _ _| | _ _ _ _ _| | _|_ _ _ _ _ _ _ | |_ _ | | _| |_ _ | _ | | |_ _ _ | _ | |_ _| _| _ _|_ _ _|_ _ _|_ |_ _ | _|_ |_ _ _| | _ _|_ _ _ _| _| _ _| |_ _ _| | |_ _ | | |_ | | _|_ _ _ _| |_ _ | | _| |_ _ | _ _ _|_ |_| _ |_ _| _|_|_ | | | _ _|_ _ _| | |_ _| _|_| |_ _ _ _ _ _ _ _|_ _ _|_| | |_ |_| |_ | |_ _| _ |_ | | | | | | | _| _ _ _ | | |_ _ _| | |_ |_ _|_ _ _ _ _ _| _ _|_| | |_ _| |_| | _ _ _ _ _| |_| _ _| |_ |_ |_ _ _ _| _| | _ _| | _ _| | | | | |_ _ _ _ | _| | | |_ _|_ | | _ _ _ | | |_ _ _ _| | _|_ _ _| |_ _ _|_| _| _ |_ |_ | | |_ _ | | _ _|_| _ _ _ _ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ |_| | | |_ |_ |_ _ _ _| _ _| _ |_ _| |_ _ _ _ _ _ _ | _| |_ _ |_ _ |_ | |_ | | |_| _ _ _ _ | | | | _| _ _ _ _| | _| _| _ _ _| |_ _ _| | _ _| _ | |_ _ | | | | _ _ |_ _ | | | _|_ _ _ _ _| _|_| | | |_ | _| _| | |_ | | _ _ | | | _ _|_ |_| | | _| | _ |_ _|_ _ | | _ _|_ |_| _| _ _|_ | _| | | _ _ |_ _ |_ _ _ _ |_ | _ _| _ _| |_| _| _ _|_ | | | |_ _| | |_ _ _| | | | |_ |_| _ _ _|_ _| |_| _ |_ |_ | _ _| | _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | _| _| | | |_ |_ _| | _ _ _| | _| _| _ _|_ | | _ _| _ _| | _| _ _| | | _| |_ _ _| |_ _|_ _ _ _ _| | | _| | | |_ _|_ _ |_|_ |_ _ _| _|_ |_ | _| _| | _| | |_ | | | |_ _ _| |_ | _| |_|_ _ _ |_ _ _ _ |_ _ _| _|_|_ | | | _ _| | | |_| | | _| _ _|_ _ _| |_ | | +| | | | _ _ _| | | _|_ | | | | _| | _ _| |_ |_ _| | |_ _| _ _|_ _ _| _|_ _| | | | |_| | _ _|_| _ _ |_ _ | _ _| | _ _ _|_| |_ _ _| _ _ |_ _ | _ _| | | |_ _ _ _ _| |_ _| | _|_ | |_ | | |_ | _| _ _ | | | | | |_| | | | _ |_ _|_ _ | | _| |_ _ |_ _ | | | _|_ _ | _| _| | _ _ _ | | |_ |_ _ | _|_ _|_ _|_ | _ _|_ | |_ _ _| _| _ _ _|_ _ _ | _| _| |_ _| | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | | | |_ _| | _ |_| | | |_ | _ _| | _| | | _ _| _| |_ _ _ _| _ _ _|_ _ | | _ _ _| | | | | | _|_ _ _| |_| | | | _| | _| | _| _| | |_ _ _| _| |_ _ _| |_ | | |_ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ | | |_ _ |_ _ | | _ _ _ _ | |_| _| | _|_ _ _| |_ | |_ | |_ _|_ | | | |_ | _ _| | |_ _| _ _| |_| _| _ _ _ _ | |_ _ | _| | |_ |_ _ _| _ _ |_ _ | _ _| | _| _| | | |_| | | | | | _| | |_ |_ _ _ _ | |_ _ _| |_ _|_ _ _ _ _| |_| | | _ _|_ _|_ _ |_ _ _| _ _ _ _|_ |_ _ _| _| _ _|_ |_| | |_ |_| | | | |_ _ | _| _ _|_ _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| _|_ _| _| _ _ _ _ | | |_ _| | _| | | _ _| | |_ _ _| | | | | _|_ | | | |_|_ | _ | | _| |_| _|_ _ _| _ _ |_|_ _| _| _| _ _| | | _|_ |_ _ _| | | _ _| | | |_ _ _| _ _| | |_ _ |_ | _ | _ _ _| | |_ | |_|_ | | | |_ | | | |_ | |_ _|_ _|_ | _|_ _ _| |_ _|_ | |_ |_ _ _| | | |_ | _| _| |_ _ _ _ _| | |_ _| | | | _ _ _ | _|_ | _| _ _| _| |_ _ _ _ _|_| | _| | _| _| _ _|_ _ _| _| _ _| | | _| _| _ _|_ |_ | _ _|_| _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _|_ _ | _|_|_ _| | |_ _ | |_ _| _| |_ _ _ _ _| |_ _ |_ | _| |_| _| | | |_ _ _ |_ | | _ _ | | |_ | _| | | _ |_ _ | |_ _ |_ _ | |_ _ _ _| _| | | | |_ | |_ _| |_| _| _ _|_ _ _| _ _ _ _ _ _ _ _| |_ _ |_ |_ _ _ _ _| |_ _| _|_ _| |_ | | _ _| | _ _| _ |_ _| | +| _| | |_ _ |_ |_ |_ _ |_ _| _ _| _| | _| _| _| _ |_ | _| | _ _| _| _ | _| |_ _|_ _ _| | _ _ _| | | |_| |_ | | | _ _ _ | _ _ _| _| | |_| |_ | |_ | _ _ |_ _ _ _ _ _| |_ _ _| |_ | | | _ _ | | | | | |_ _|_ _|_ _| _|_ _| | |_ _ _| | | _ _| | |_|_ | _| |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ | _| _ _ _| _| _| | | _| |_ _ |_ _ _ _|_ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | | | | | |_ | | _| _| | |_ | _|_ | | |_ _| | | _ _ _ _ _ | |_ _ _ _ | | |_ _ | _| _|_|_ _| |_ _ _ | | _| | |_ | | | _| |_| |_ | _| | _ _ _ | | _ _ _|_ _ _| | _ _| _ _ |_ | _ _ _ _ |_ _ _|_| |_ |_| |_ _| _ _| | | |_ _ | _ _ _|_| _|_ |_|_ _ _|_ | _ _ _|_ _|_ _ _ _| |_ | _|_ _ _| |_ | | _| | _| |_ _ | | _| |_ _ |_ _|_ _|_| | _ _ _| _| | |_| |_ | | | _|_ |_ _| |_|_ | |_| | |_ _| | _ _| _| _ _| | |_ _ | | _ _ | | _ _ _ _| |_ _ _ _ _ |_ _ |_ |_ _ _| |_ | _| _| |_ _ _ _ _| |_| _| _| |_ _ _| | | |_ _ _ _ _| _ _| | | | | |_ _ _| _| | | | |_ _ _ _ | _ _ | | | _ _ _ |_|_ _|_ _ |_|_ |_ | |_ | _ _|_ _| _ |_| |_|_ _ | _ | |_| | |_ _| | _| |_ |_ _| _ _ _| | | _ _ _| _ |_ _ _| | |_ |_ _ _ _ _ | | | _ _| |_ | _ _| | _ _| |_ _ |_ _|_ _ _ _ | |_ _|_ _ _ _| | _| _| | | | _| _ _ | | | _ _| _|_ | | |_ | | | _| |_|_ _|_ | |_ _ _ _ _ _ _| |_| _ _| |_| | | |_ |_ _|_ | | |_ |_ _ | |_ _| _ _ _|_ _ _| | _ _ _ _| _ _ |_ _ | _ _| | | | | _| |_ _ _ _ _| _| | _ _ _| | | _| | | |_ _|_ | | _ _ | | | |_ _| | | |_ _ _| | _| |_ _| | |_ _ | |_ |_ _ |_ | _| |_ |_ _ _ _ _|_ _| | | _| _|_ _| | |_|_ _|_ _ _| |_ _| | | | _ _| | |_ |_ _ |_ _ | _ _ _| _|_| | | _| | | _ _| _ _| | _| _ _ _| _ _ |_ _ | _ _| |_ | | |_ _ | _ _ | | | | | _ _ _ _| |_ | _|_ _ _| | _ _| +| | | | _| | _| | |_ |_ _ |_| _ _| _|_ _ _| _| _ | | _|_| _| | |_ |_ _ _| | |_ _|_ _ _ _ | |_ _ |_ _| |_ _|_ | | _| |_|_ _ |_|_ _ | _ |_ _|_ | | _| |_ _ _| _|_ | | _ _ _ _ |_| _ |_ |_ _| |_ _ _| |_ _|_| |_ _| _ | |_ _ _ _| | _| _ |_| | |_ _ _ _|_ | _| | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| | | | | _| _ _ _| _ |_ _| _| | _| | _| |_| | _| |_| _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | | | | | |_| |_ _ _ _|_ _| _ _ _|_ _ _|_ _ |_ _| |_ _ _|_| _ |_ |_ _|_ _ | | | |_ _ _| | _ _| _ _ _| _|_ _| |_ |_|_ | | |_|_ |_ |_ | | |_ _ _ _ | | | _|_ _ _ | _ _| | | | | _| |_ _ _| | _| _ |_ |_ _| _ _| _ |_|_ | _| | | | _ _ _| |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_|_ | _ |_ |_| | | | |_ _ | _| | |_ _ _| | | _ | | _ _| |_ _ | _ |_ _|_ | | _| |_ _ _ |_ | |_ | _| | _|_ _ | |_ _| _| _|_ | _|_ _ _ |_ _| _| |_ _ _ _ _ _ | _ | _| |_ | | |_ _| _| _ _|_ _ _|_ | |_ _ _ _ _ _|_| _| | |_ _ _| _|_| | _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | _ _| _| |_ |_ _|_ _ _ _ _|_ _ | _ |_ _ |_ _ _|_ |_| | | | _| |_ | | _ |_| | | |_ | | |_| | _ _|_ _ | | | _ _ _ _ _ _|_| |_ _ | |_ |_ _ |_ _|_ _|_ _ _ _ | _|_ _|_ | _ | | | _|_ | | |_ _ |_ |_| _ | |_|_ _ _| _ | _ _|_| _| |_ _|_ |_ _| | | | | |_| | _ _|_ _| | |_ |_ _| |_ | |_| _ _| | |_ |_| _ _ | |_ _ |_ | | _|_|_ | |_ _ _ _ _ _| | _ _ _ _|_ |_ _ _| |_| _ _ _ _ | |_ | _ _ _|_ | | |_| |_ | | |_ _| |_ _ _ _ _ |_ | |_ _ | | |_ _ _| |_ _|_ _ _ _ _|_ | | | | | |_ _|_ _ |_|_ _| |_ | |_ _ _| |_ _ _ | _|_ _ _|_ _ | | _ _|_ | _|_|_ _ _ _|_ _ |_ _ _| _| | _ _ |_| |_ _ _ _ | |_|_ _ _| | _| _ _|_ | _ _| | _| |_ _ | _ _ _ _| |_ |_ |_ _ |_ | _| _ _| _ _ _| | | |_| |_ | | _|_ _| _| |_ _ |_ _| | |_ _| _ |_ |_| _ |_ _ | | | |_ | +| | | |_|_ _| | _ _| _ _ _|_ | | |_ | _ _ _| _| _|_| | _ _| |_ _ |_ _ _ |_ _ _ | |_ _| | _| | _ _| | | |_ |_ _ | _|_ _| | | _ _ | | |_ |_ _ | _ _ | |_| _ | | _| _| _ _|_ | _| | _| _ |_ |_| _| |_ _|_ _ | | | | | | | |_ | | | _| _ _|_ | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _| | |_ | |_ _ | |_ |_ _ |_ |_ _ _ _| | _| _ _|_ _|_ | | _ _ _|_ | _|_|_ | | | _ _|_ _ _ _ _| | |_| |_ _| |_ _|_| |_| _ _ _ _| _ | | | _ _ _ _ | |_ _ |_ | | _ _ _| |_ | _ _| |_ _| | |_ | _| _|_ _ _|_ |_| _|_ _ _ _ _|_ _ _ _ _|_ _| | |_ | | | | | |_ _|_ _| _ _ |_|_ | _ _| | | | | | | _| | _ |_| _| _ _|_ | | | | |_ _| _| | | _|_ |_ _ | |_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | _| _ _|_ | | |_| | | |_ | _| _ _ _|_| |_ | |_| |_ | | _| | | | _ _| | |_ |_ _ | _ _ _| | _|_ _ _ _| _ _ _|_ _ _ _ _| | |_ _ _ _|_ |_ |_ _ _ _ | |_ _| _| | _ _|_ |_ | _ _| | | _ _ _ |_ |_ _ |_ | _ _ _| | _|_ _ |_ _|_ _ _ |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ | |_ |_ | | _ _ _ | |_ _| _ _ _| | _ _ |_ _ _| | |_| |_ _ | | | |_ | | _| _| _|_| | _| |_ _ | _| | | | _ _ _ _ | | _| | _| |_ |_ |_| | | | _|_ _| | _| |_ _| |_| |_ _ | | _ _ _| | _| _| |_ _|_ _ | | | | | _ _ _| _|_ _ _ _ _| _ _| |_ |_ | _|_ _ | _|_ _|_ | _| _| | _ _| _| _| _| _| | _| |_ _ |_ _ | |_ _ | _| | _ | | _ _| | _ _ | _| | | _| |_ _ _ _| _|_ _ | | |_ _|_ | | _| |_ _ |_ |_ | _| | | |_ _ | | | | _| | |_ |_ _ _ |_ _| | | |_ _ | |_ _ | _| _| _ _|_ |_ _ _|_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_|_ |_| _|_ | _| | _ _|_ _ _ _ _ | _| |_ _ |_ _ | |_ |_ | _| | | _ _| | | _| |_ | _ _ | |_ | |_ | _| |_ |_ _ _|_ _ | _| |_ _|_ | | _| |_ _ | | _| _| _ | _ _|_ |_| _| _ _|_ | | |_ _ |_| | |_ | | +|_ |_ _ | _ _| | _ _| _ _ _ _| | |_ _ _|_ _ | _| |_ | _|_ | _ | _| |_ _ |_| _ |_ _|_ _ _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _| |_ _ | | |_|_ | | _ _|_| |_ _ |_ _| | | | _| |_ _ _ _ _|_ | |_ _| _| _ _|_ | | | _ _ _ |_ _| | | | _ _| |_ _ _| |_ _|_ _ _ _ _| | |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _ _|_ _ |_ |_ _ _| | _| |_ |_ |_| | _ _| |_ _| _ _ _ |_|_ _ |_ _| | _|_ _ _ _ _| |_ _|_ _ | | | | _|_ _| _| _ |_ |_| | | | |_ _| _ | | _| |_ _ |_ | |_|_ _ | | _| | _ _| _| _|_| _|_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _ _ _| | | |_ _|_ _| | _ _ _| | | |_| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| | |_ _|_ _ |_|_ |_ | |_ _ _ _| |_| | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| _ _| | |_ _ _ _ _| |_ | |_ _|_ | | |_ _| | _ _ | | _|_ _ _| _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_ _ _ _ _| _ _ |_ _ | _ _| | |_ |_ _ _|_ |_|_ _ _ | _| |_ _ |_ _| | _ _ _ _| _|_ | _|_ _ _| |_| _| |_ _| |_ _ | | |_ _|_ _ | | | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| |_ | | _ _| | | |_ _| | | _| |_ _ |_ | _ _| _ |_ _ _ _| |_ _ _ | |_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_ |_ |_ _|_ _ | | _| |_ | _|_ _ _ _ _ | | _|_ _| | |_ _ _ _ _ _|_ _| _ | _| |_ _ _| | | | _ _|_ | | _ _ _ _ |_ _| | | |_ |_ _ | | |_ _ _ _ _| _ _ _| | _|_ _ _ _|_ _| _ _ _ _ _ _| _| |_ _| | |_ _| _| _| _|_ _ _|_ | | | _|_ _ | _|_ _|_ _ _|_ |_| _ _|_ _ _|_ _|_|_ _ _|_ | | | | _| | |_ _ _ _| | |_ |_ _ | _ _ | |_| | _|_ _ _ _| _|_| |_ _ _| _ _ _|_ _ _ _ _|_ | _| | _ _ _|_ _ _| | | |_ |_| _ _ _| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | | _| | _ _ _ _| |_ _ _|_ | | _| |_ |_ _| | |_ |_ | _|_ _ _| _|_ _ _|_ |_ | |_ _ _ |_ _ _ _|_ _ _ _ _ | |_| _ | | | |_ |_ _ | _|_ | | _| _| | | _| _| |_ _ _ _ _| | | |_ | |_ _| | | +| _| _ _|_| |_ _| _ _|_ _ | _ _ _| _| | |_ _ | | |_ _| |_ _| | | |_ | | _ _ _| _| _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ _| |_|_ | _ _|_ | | |_ _ | | _ _| _| |_ _ _ _| _ _| | _| |_ _ _ _ _| | | _ _| _ _| _|_| |_ | _| _ |_ |_ _ |_ _ _|_ | _| | | |_ _|_ | _ _ _ _ _| | |_ _ | | _| _| |_| _|_ _ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _| _ _ _ _ _ _| |_ |_ _|_| |_ _ | | _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _ | _|_|_ | _ _ _|_ |_ _ _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _| | | | | |_ _ | _|_|_ _|_ | | _| | | | | | _ | _| | | | |_ | _ _ | | _ _ _ |_ _ | | | | |_ _| _| |_ _ | _|_|_ | | | _ _| _ _ _ | | | _| _| | _ _ _| _ _ |_ | | _ _| | | |_ _ _ _|_ _ _| _| _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | _ _ _| | | |_| |_ | |_ | _ |_ _ |_ _ | | |_ _ _| | | _ _|_ | | |_ _| |_ _ |_ _| _|_| _| |_ _ | _| | | |_ |_ _ | |_| |_ _| |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _|_ | _| |_ | | |_ | _| | |_ _ _| | _ _|_ | _| |_ _ _ | _ _| |_ | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ | _ _| | |_ _ _| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ _ |_| | _| | |_ | _ _| | | |_ _ _ | _|_|_ | | _| | |_ |_|_ _ | _| _ _ _ _|_ | | _ _ |_ _ _| _ _ |_ _ | _ _| | _ _ _| | _ _ _ _ | | | _| _| |_ _ |_| _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| | |_ _| | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _| | _ _| _ _| |_ _ _ _| | _ _ _| _|_ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| | | | | _| |_ |_| _ _ _|_ _ _| | _ _ _|_ _ | |_| | | | | | _ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _| |_ | |_|_ | | _ _|_| |_ _| | _ _|_ |_|_ | |_ _ | _ | | _|_ | |_ _ _ _ _| +| _|_ | | |_ _ | | _ _ |_ _ | _ _| | | _|_ _ _ _| | | |_ _ _ | _|_ _|_ _|_ _|_ _ |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_ _ |_ _| | _ _| |_ _| _ _|_ _|_ |_ |_ | _ | _|_ _ |_|_ | |_ _ _ _| _| _ _| _ _ _ | |_|_ _| _ _|_ | |_ | |_ _| _ |_ _ _| |_ _|_ _ _ _ _| | | _|_ |_ _|_ _ |_ _| _ _|_ _ _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ _ _ _| _ _| _ _ _ _ _ _| _ |_ |_| _| _| |_ _ _ _ _| | | _|_|_ | | | _ _| _ _ _ _ | | |_ _| | | | _ _|_| _ _ |_ _ | _ _| | | | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _| |_ _| |_| _| | | | | | |_ | | | |_ _| | |_ _ _ _| | |_ | | | | |_ _| | | _ _| _ _| | |_ _|_ _|_ _ |_ _|_| | |_ _ _ _ _| |_ _| | _ _ | | | | | | | _|_ _ _ _ | |_ _ _ _| | _ _|_ _|_ _ _ _ | | _|_| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| |_ _ | _|_|_ _|_ | | _| |_ _ _| | | _| _ |_ _| | _ |_| | | |_ _ | | |_ _ _|_ | | |_ _ |_ _ _| _| | | _|_| _|_|_ _ _ _ _| _|_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | _ _|_ |_ | | |_|_ | | | _|_ _ _| |_ _| | _| | | _ |_ _| _ _| | | | | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | |_|_ | | _| _ | | |_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _ _ | |_ _ _ _| _|_ |_ _|_ _ _ _ _| | | _|_ _ _ _ | _| _ _ _ | _ _|_ _|_ _ _ _| | _ _ _| | | |_| |_ | | | |_ _| | |_ _ |_ |_ | | | _| _|_| |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _| |_ _ _| | _| | _ _| |_ _ | _ | _ _| |_ _|_ | _|_|_ | | | _ _| _ | _| | | |_| | | | |_| |_ _ |_ |_ _ | _ |_| | | | | _ _ _|_ | | |_ | |_|_ _ | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | _|_ | _ _|_ | | |_ _ | |_ _| _ _| | |_ | _|_ | |_| |_ _ _| | | | _ | +| | _ _| |_ _| _ _| _|_ | | |_| |_ | | |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ |_ _|_ _ | | |_ _ _ _| _ _| | _ _| _| _| | | | |_ _ |_ _ |_ _|_ |_ _| _|_ _ _| _ _ _ _| | | |_ _ | | |_ _ _ _ _|_ _ | | _ _| _|_ _ | | _ _ | _|_ _| _| _ _ |_ _ |_ _ | | _ _ _ _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ _ | _|_ _ _ _ | _| _| _ _|_ | |_ _ _ _ _ _ | _| |_ _ _ _ _| |_ |_ _ _| _ _ |_ _ | _ _| | _| | | _ _ _|_ | | |_| |_ | | |_|_ _| | |_|_ | _|_|_ | | | _ _|_ |_ | | | | |_ _ _ |_ | |_ | | | _|_ _|_ _| | |_|_ | | |_| _ _ _| _ _| | |_| _| | | |_ _ _ _|_ | | | _ |_ _ _| _ _ |_ _ | _ _| | _| _ _| _ _ _ _ _ _| |_ _ _| |_| |_ _ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| | _ _ _|_ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ |_ | _| | _ | | | |_ |_ _ | _ _ | _|_ _ | _|_|_ |_ | | | | _| |_ _ _|_ _| |_ | |_ | | |_ | |_|_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | | _| | _|_ _| | |_| |_ |_ |_ | | _ _|_ _|_ _ _|_ _| | | | | | | | _|_ _| | |_ _ _|_ | | _ | | _ _|_ _ _|_ _ _ _| | | _| _|_ | | | | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _ _| _ _| | _| |_ _ _ _ _| |_| _ | _ _|_ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _ |_ | |_ _|_ | | _| |_ _| | _ _| _ _ _| _|_ _| |_ | | | |_ _ | _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | |_ _ _ |_| |_ _ |_| | | | _| | | _| | |_ _ _ _ |_ _ _ _ _| |_ _| | | _| | _| | _ _| | | |_ |_ _ |_ |_ _ _ _ _| _| _| | |_ |_ |_ _| | | |_| _|_ _| _|_ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_ | |_ _| | _ _| |_ _| _ _| | _ _| _| _| _|_ _| |_ _ _ _ | _|_ _|_ _ _| | +| |_ _ _ _| _ _| | _| _ |_ _|_ | | _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | _| | | |_ _|_ | |_ _ _ _ _| | |_ _ |_ _ _ |_ _| | | _ _ | | | |_|_ | |_ _ _| _| |_ | |_ _ | _ |_ | | _ _ _ _| _ _ |_ _ | _ _| | |_| _ _|_ _ _ _ _ _ _ _ |_ | | |_ _ _ _ |_ _| | |_|_ _ _ _ _| _| |_ | |_ | | |_ _ | _ _ |_| | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | _|_ | |_ | |_| | _| |_ _ _ _ _|_ | _ _| | |_ _| | _ _ | _ _| | _ _ _|_ | | |_| |_ | | | _| |_ _ | | |_ _|_ | | _| |_ _ _ |_ _ _ |_ _ _ _ _| |_ _| | |_ |_| | | |_ _ _ _ _ _| | _ _|_|_ _ _ | | |_ | _ _|_ |_ _ _ _ | _ _|_ _| _| | _| _ _ _ | | |_ _|_ |_| _ _ _|_ | | |_| |_ | | |_ |_ |_ _ _| | _| _ |_ |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | | _| | | |_ _|_ | |_ _ _ _ _| | |_ _| _| | | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | | |_ _ _ _ |_ _ _| |_| |_ _ _ _ | |_ | _ |_ _| _| | | |_ |_ _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ |_ | _ _|_ | _|_ _ _ _ _|_ _| | | _ _ |_ _ _| |_| | | |_| | | | _ _| _| _ _| _| |_ | |_| | _ _ _ | _ | _| |_ _| _ |_| | |_| | | |_ _ | _|_|_ | | | _ _| _ _ _ | | _ |_ _ | _ _| | | |_ | _ _ _ _|_ |_ | |_|_ |_ | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_ _ | | |_ |_ _ | _|_ _| | _| _ |_ |_| |_| |_ _| _ _|_ | |_ _| _| _|_|_ | | | _ _| _ |_ | | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ | | _ _ _ | _|_|_ | | | _ _| _ | _| | | _ _|_ _ _| _ _| |_| _| |_| | | _|_|_ |_ _|_ _ |_ _ | | _ | _ _ _| | | _|_ _| |_ _ | | |_ _| _ _ |_ _ _| _ _ |_| _| _|_ |_ _|_ | _| | |_ _ _ _ | | _ _| | |_ | _|_ | _|_|_ | | | _ _| _ | _ _| | | | | _| _ _|_ _ _ _| _ _| | |_ _ _| _|_ _| _| |_ _ _ _| _ |_ | _ _ _ _ | | +|_ | | | | |_ _ _ _| | |_ | | |_ |_ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| | | |_ _ _| |_ _|_ _ _ _ _| | |_ _ _ |_ _|_ _ |_ _| _ | | | _|_|_ | |_ |_ _|_ _ |_ _| _ _ _|_ | | | | | _|_ | |_ _ _| _ _ _| | | |_| |_ | |_ | | | _ _ | | _ _| _|_ _|_ _ |_ _ _| _ |_|_ _ _ _ | |_ |_|_ _ _|_ _ _| |_ | | |_| |_ _ _|_ _ _ | | _|_|_ | | | _ _|_ _ _| | | _|_ | | _ _|_| |_ _| | _|_ | | |_ _ _ _ _ _ _| | _ _| | _ |_ _ |_ _|_ _ | |_ _ |_ _|_ _|_ | | _| |_|_ |_ _ _| | |_ | | | |_ |_ _ | _|_ _| _| _ | | _ _ | | |_ _| _ _ _| |_ |_| _ _ |_ _ | | _ _ _|_ _|_ _ |_ _| | _ _| | |_| | _ _ _| | | _| _| | _|_|_ _ _ |_ |_ _ | _ |_ _|_ | | _| |_|_ _| _| _| _ _| _| _| _ _|_ |_|_ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ | |_ _| |_ _ _| |_ _|_ _ _ _ _| | |_ _ _ |_ _|_ _ |_ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | _ | _| _ |_ |_ | | | | | | | |_ |_| _|_ _ _|_ | |_ _ |_ _ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ _ _ _|_ |_ _ _ _ | |_ | |_ _| |_ | |_ _ | _|_ _ | _|_ _ _| |_ _ |_ |_ _ _|_ _ | | |_ _ _ _| _|_ _ _ _| |_ _ _ _ _| |_ _| _| |_ | _ _| | | | | |_| |_ | |_ _| |_ _ _| |_ | |_ _ _ _| _|_ |_|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ _ _| |_|_ | | _ _|_| |_ _| | _| _| _ _|_ | _ _| _ _| | _|_ _ | |_ _ _ _ _| |_ _| _ _ |_ |_| | | |_| _| | | |_ _|_ | _ | | | | |_ _ | _| |_ _| | | |_ _ _ _ _| |_ _| | | _|_| | | | _ _ |_ _ | _ _| | _| _ _ _ _|_ _ _ | _ _ | |_ _ |_ _| | | | |_| |_ | | _| _ |_ |_ _| | | | | |_| _ _ _| | | _| |_ _|_ | _ | |_ _ _| _ _ |_|_ | _ _| | _| |_ _ |_|_ _ _ _ _| |_ _| | | _|_ _ | | |_ _|_ | | | _ _ | | | |_|_ | _ _ | _ _ _| _|_ _ | | | |_ _| _ | | _| | +| _|_ _| |_ _|_ _ |_ _ |_ _ | |_|_ | | _ _|_| |_ _|_ | _|_|_ | | | _ _|_ | _ | | _| _|_ | | _ _ | _ _| | | |_ _ |_ _ _ |_ _ |_ | |_ _|_ _ _ _ _| | _ _ _ _ |_ _ |_ _ | _ _| | | |_ | |_| | | | _ |_ _ | _| |_ _|_ | | _| |_ _ _| |_ _|_ _ |_ _|_ _ |_ _ | _ |_ _ _ |_ |_ _| | _| |_ _| |_ _| | |_ |_ _| | |_ _ | _ | | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ _|_ | | |_ _ | | _ | | |_ | |_ | _|_ _| |_ | | | | |_ _| _| _ _|_ _| _| | _| _| | |_ |_ _ | _ _ _| | _| | | |_|_ | | _ _|_| |_ _ |_ _ | | |_ | |_ _|_ | _| _ |_ |_ _| | | |_ _| |_ | | _ _| _ _ _ _| | _ _| | |_ |_| |_ _ | _|_| |_ | | _|_ _ | _ | |_ _| | | _| _| | |_ |_ _ | _|_ _ _| | | | _| |_ _ _ _ _| |_ | |_|_ | _|_|_ | | | _ _|_ _ _ _ _ | | |_ _ _| | |_ _ | | _ _ | _ | | | |_ _ |_ _ _ |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | |_ |_ _| _| _ _|_ | | |_| | |_ |_ _ _ _| | _| | _ | |_ _ _|_ _ _ _ _|_ _ | |_ | _|_|_ | | | _ _|_ _ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | _ |_| |_|_ | |_ _ _ _| | | |_ _ _| |_ _| _ _ _ _|_ _ |_ |_| _ _ _ _|_ _ _| | | | _ _ _ _ | |_ _ _ _ _| _| |_ _ _| |_ |_ _|_ | | _| |_ _| _| _| _ _| _ _|_ _ _| _| |_ _ _ _ | |_ | _|_|_ | | | _ _|_ _ _ | | | |_ _|_ _ |_ | _ _|_ | | |_ _ | | | _| |_ _ _ _ _| |_ | | |_ _| | | |_| | _ _ _ | _| _| | _ _ _| |_ |_ _ _| |_ _|_ _ _ _ _| | |_ _| |_ |_ _|_ _ |_|_ | | _ _| | _| _ _ _ _ | _| | |_ _ _|_| |_ |_ | | |_| |_ | | |_ _ _ | _ _ _|_ _| | _| _ _| | _|_ _| |_ _|_ |_| |_| _| _ _|_ | _|_ _|_ _| |_ |_ _ |_ _| |_ _ _ _ _|_ _ _ _ _| _| | _ _ _| _| | |_| |_ | | | _|_ |_ _ _| | |_ | | |_ _ _ _| |_ _ _ _|_|_ _| _ | | |_ _|_ _ |_|_ |_|_ _ |_ | _ |_ _| | | |_ _ |_ _| | |_ _ | +| | _ _ _ _ _ | |_ _ | | _|_ | _ _|_ | | |_ _ | | |_ _ _ _ _| |_ _|_ _ _| |_ | | | |_ | |_| |_ _|_ | |_ _ _ _ _|_ | |_ |_ |_ _ _| | | |_ _ _ _ _ | _ _ _| | |_ | | _ _| | | |_| |_ |_|_ | | | | | | |_ _| |_| _ | | | |_ |_ _ | _ _ |_ |_ | _| | | |_ _|_ _ |_ _ _| _| _| |_ _ _| _| |_ _ _ _|_ _| _ _| | |_ _| _ _| | _ _| | |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_| _| | _ _| |_ _| _ _| |_ |_ _ _| _|_ _ _| |_ _ |_ _| | | |_ _| _ | |_ |_ | _ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _|_ | |_|_ | _ _|_ | | |_ _ |_ _ _ _| |_ _ _ _| | |_| _| _ _|_ | | | |_ _| | |_ | |_ _|_ _ |_ | _ _ _| |_ | | |_ _ _ _| | | | |_ _ _|_ | _ _| | | | |_ | | _| | |_ | |_|_ | | _ _|_| |_ _| _| | | | |_ _ _ | _ |_ _ _| |_ _ _|_ _ _ _ _| |_ _| _ _ _ _ | | | | |_ _| _| _ _|_ _| | |_ _|_ _ _|_ | | _|_ | _ _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ | | | | _| | _| |_ _ _ _ _|_|_ | |_ |_| _ _ _|_ _ _| | |_|_ | | _ _ _ _ | |_ _| |_ _|_ _ _ _ _| |_ _| | |_| _ | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | | |_ _|_ _ _| | _ _ _ _ _ | _|_|_ _|_ _ _ _ | |_ _|_ _ _ | |_ _ _ _|_| _ _ _ |_ _| _| | | |_ _ | | _| |_ _ _ | | _ _| |_| _ |_ |_ _ | | |_ |_ _ | _ _ | |_ _ _| | _| | | _|_ _ | _| |_ _ |_ _ _ _ _| |_ _|_ _ |_ |_ | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| | | |_ | | |_ _ |_ _|_ _ |_|_ | |_ _ |_| | _| _| |_ _ | |_| _ |_ |_ | | | _ _ | _ _ _| | _ _| _|_ _ _|_ _ | |_| |_ | | |_ _| _ | | |_ _|_ |_| _ |_ |_ | |_ _|_ | | _| |_ _ |_| |_ | | _ _|_ | | _ _| | _ _ _ _| |_ | | _| |_ _ _ _ _|_ _ _ | _ _|_ _| | _ _ _| _ _ _ _ | |_ _| |_ _ | _ |_ _|_ | | _| |_ _ | | |_ | | |_ _|_ _| |_ |_| _ |_ |_ |_ _ _ |_ _| |_ _ | | |_ _ | | | _| | _| | |_ | _|_|_ | | | _ _| _ _| | +|_ _| _ _ _ |_ _ _ _| | |_ _ _ |_ _| | _ _| |_ _| _ _| |_ _ _ | | _ | _ _| _ _ _|_| |_ |_ _|_ |_ _ _|_ _ _ _ | |_ _| | _ |_ | _ |_ _ _| _ _ |_ _ | _ _| | | | _| |_ | _|_ _|_ _ | _| _ _ _| | |_ _ _ _|_ _ _ _ _| |_ | |_|_ | | _ _|_| |_ _ _ _|_ _| | _|_|_ _ _ | _ |_ _ _ |_ _ _ _|_ _ _ _ _| _|_| _ _ |_ _ | _ _| | | _ _| | | _| _ _| | _| _| |_ _ _| | _| _ |_ |_ | |_ _ _ _| _ _| _| _ _ _| _|_ _| _| |_ _ _ _ _|_|_ _ |_ _|_ _ |_ |_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _|_ _| | _ _| |_ _| _ _| _| _ _| _ |_| _| | | _| |_ _ _ _ _| | | |_ | |_ _| | | _ | |_ _ _|_ _ _ | | _| |_|_ |_| | _|_ _|_ _ | | _|_ _ _ |_ _ _|_ _|_ _ _ _|_ |_| |_ | _ _|_ | | |_ _ | |_ | | |_ | | _ _| | |_ _ |_ _ |_| _ _| _| _ _ |_ | _ _ _| |_ |_ _ |_ _ | _ _ _ _| |_ _ _ _ | |_ _| |_ _| | | _ | _| | | |_ _|_ | _ _| _ | | |_ _| _| | |_ | | |_ _ _ | _ _ _| | _| _| | _ _ _ _ | | |_ _ | | |_ _ | | _| |_ _ |_ _ _ _ | | _ _ _| | |_ _|_ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ _ |_|_ | _|_ _ | _ _ _| _|_ | _| _|_ | _| | |_ _ _| _ | | | | _ |_| _| _ _|_ | | | |_|_ | | _ _|_| |_|_ | _ _| | | _| | | |_ _| |_|_ _ _| | _| _ _ _ |_ _ _ _|_ _|_ _| |_ |_ _|_ _ | | |_ _ _ _| _ _| _ _|_|_ | |_ _|_| | _ _| |_ _ |_ _ | | | | _| _| | | _|_ _ _| |_| _| _ _|_ | |_ _|_ _| | |_ _ _ _ _|_ |_ _ _ _| _ _| |_ | | _| |_ _ |_ _| | |_|_ | | _ _| _| _ _|_ |_ |_ | | |_ |_ _ | |_ _ _ | |_ _|_ _ _ _ _| |_ | _|_ _| _ _ _ _|_ |_ | |_ _ _ _ _ | _| |_ | _ _| _|_ _ _ |_ _ | | _| |_ _ | | | _| |_ | _ _| | |_ |_ _ | _|_ _| | |_ _|_ _ |_ _| _| _| _| _ _|_ |_ _ _ _| | | _ _| | _| |_ _ _| | |_ _| | _| | _|_ | |_ _ _ _ _| |_ _| | _ _| +| |_ | _ _ _ _ | |_ _| | |_ _ |_ _ _ _| _ _| _ _| _ _| | _|_ |_ _ | _| _ |_ |_ |_ _ _ _|_| |_ | _| |_ _ |_ _|_ _| |_ |_| _ _ _| | | |_| |_ | | |_| | | _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _|_ | _ _|_ | | |_ _ | | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| | | |_| |_ | | | | |_ _| |_| _| _ _| | |_ | _| | _ |_| _| _ _|_ | | | _ | | |_|_ |_| _ _ _| _ _| _| |_ _ | | _ _ _ _ | | |_ |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ _ | |_ _ _ _| _ _| _| | | | |_ _ _| |_ | |_ _ _ _| _|_|_ | |_ | _|_| |_| | | |_ | _ _| | |_ |_ _ | _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | _ |_ _| | _ _| |_ _| _ _|_ | |_ _| _| |_ _ _ _ _ _ _|_ | | |_ _ _|_ _ _|_ _ _| | _| |_| _ |_ |_ | |_ _ | |_ _ _| |_ | _| |_ _ |_ |_ | |_|_ |_|_ _ _| |_ _|_ _ _ _ _| | |_ _ _ _| |_ _|_ _ |_ _| | | |_ |_ | | |_ | | | _ _| _| _| _|_ _ | | _ _|_| | | |_ _| | |_ _ _|_ | | _ _| _| |_ _| | | |_ |_| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ _| | | | |_ _ |_ |_ |_ _ _|_ _ |_ | _| | _ _ _ | | | _| | | | _| |_ _ _ _ _| | |_ | _ _|_ | | |_ _ | | |_ | | | |_ _ _|_ |_ |_ | _ _ | | _ _| _ _|_ _ _| _ _ _ _| _ |_ |_ _ _ |_ _| | | _ _ | | | |_ _ | _|_ | _ _|_ _ _ _| _| _ _ _| | | | | | |_ | |_|_ _ _ _ | | _| |_ _ _ _ _| | _ _ _| |_ _ _ _ | |_|_ | _ _ _| | _ _| | |_ |_ _ | _ _ _| | |_|_ | _| |_ _ _ _ _| |_ _ | |_|_ | | _ _|_| |_ _ _ |_ _ _ _ | _| | | | |_ _ _| |_ | |_ |_ _ | _ _| | | |_ _| | | |_ _ _ | | _| | |_ _ _| | | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _| _ _ | _ _ _| | _| |_ _ _ _ _| |_ _ |_ _|_ |_ _ _| | | _ _| |_ |_ _ _ _| | |_ _ |_ _ _ _ |_| | | | _| +| | _ _|_| _ _ |_ _| | _ _| | | | |_ | | |_|_ | | | _| |_ | | |_| _| _ _|_ | _ |_ | _ _| | | _|_ _ _|_ | | _ | | _ |_ |_ _ | _| |_ _|_ | | _| |_ _ _ _| |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ _| | _ _| |_ _| _ _| |_ _|_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_|_ _|_ | | _| |_|_ |_ _ | | _| | |_ | |_ | |_ _ _| |_ | | _| |_ _ _ _ _|_ _| |_ _| |_ _|_ _ |_ _ _ _ | | _ _ _| | | |_ _| |_ _ | | _| |_ _| |_ _ | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ _ _|_| _ _| _ _ |_ | | |_ _ | |_ _| |_|_ |_ | _ _|_ | |_ |_ |_ _ _ _ _| | _|_ | _| |_ _ _ _|_ _|_ _| _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ | _|_ _ _ _| _ _| _ _|_ _| _| | | | _ _ _ _ | |_ _ _| _ _ |_ _ | _ _| | | _| _| _ _|_ | |_ | |_| _| _ _|_ _|_|_ _ _| | | | | |_ _|_ | _| | _ _ | _|_ | | | _ _ |_ |_ _ | |_ _| _| _|_ _ | |_ _| _ _ _| | | | _| | |_ | _ _| | |_ | | _|_ | | | | | |_ | | _|_| | | _| _| _ _|_ | |_ _ _ _ | | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ |_| _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ |_ _ |_ _| |_ _ _ _ |_| _|_| | _ | _ _| | _|_ _ | | |_| | | _|_ | |_ _ | _ _ _ _| |_ _| | _ _| |_ _| _ _| | | _| |_|_ _ | _| _ _|_ _| |_ _| | _ _| _| | |_ _| _| _ _|_ | | |_ _| _|_|_ | |_ |_ _|_ _ |_|_ _ | _| | _ _ |_ _ | _| | _ _| | |_ _ _| _|_ _ |_ _|_ _| | |_ _ _ _ | _| | | |_ _ _| _| _| |_ _ |_ _ _ _| |_ | |_|_ | | _ _|_| |_ _| | |_ | _| |_ _ _ | | _ _|_ | _ _|_ | | |_ _ | | | _ _| | |_ | |_ _|_ _| _| _ _|_ _ |_| _| _ _|_ | | |_| | | _ _|_ _|_ _ _ _ _ _|_ | _| _ _ _| | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _ _| _| | | |_ _ | _| | |_ _ _ _| | _ _| _|_ | | _ _ _ _| |_ |_ _ |_ _ | |_ _ | | _| | | | +| | | _ _ _|_ | | |_| |_ | |_ _| | |_ | | |_ _|_ _ |_|_ |_| _| _| |_ _ _| | _| |_ _ _ _ _|_ _|_ | | | | |_ | _ _ _ _| |_ | |_| | |_ |_ _| | |_ _ | | | |_ |_ _ | _ _ | | _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _|_ _ _ _| _ _| _ _ _ _ _ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | _| | |_ |_ _ | _ _| |_ _ _ | | _| | |_ _ _| _| | | | |_ | | _ _ _ |_ | _ _ _ _ |_ _ | _| | |_ _ |_ | |_ | |_ _ _ | |_ _| _| |_ | _| | | _| | | |_ _|_ |_ |_ _ | | | |_ _ _ | _|_ _ _| |_ | |_ _|_ _ |_|_ _|_ _ |_ | | | _| _|_ _ _ |_ _ _ | | | | |_ _ _| | _ _ _ _ | |_ _ _ _|_ | | |_ _ | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _| _ _ _ _| | |_ _| | _ _ _| |_ |_ _ | | _| | | _ _ _| | | |_| |_ | | | | _| |_ _ _ _ _|_ _ |_| | _ _| | _ _| | _ _ | _| | |_ _ _| _|_ |_ _|_ |_ _|_ | |_|_ _ _ _ _|_ |_ _ |_ _ _ _| | _ _ _| _| _ |_| | _|_ _ | _| | | |_| | |_ _ | |_ | | _| | | | |_|_ _| | | | _| |_|_ | |_| | _ _| | | _| |_ _ _ _ _|_ _ _ | |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_ |_ _|_ _|_ |_ | _|_|_ | | | _ _| | _ _ _| | |_ |_ |_ _ | _ _ _| _ _ |_ _ | _ _| | | |_ _ _| |_ _ _ | | |_ | |_| _ | |_ | | |_ _| _ _ _| _ |_ _ _ _| _ _| | | |_ |_ _ | _|_ |_ _ _ _ | |_ _| | | |_ _ | |_|_ _ | _| |_ _ _ _ _| _| | |_ _ _ _ _|_ | | _ |_ _ | | |_ _|_ | _| _ _| _ _|_ | | |_ _ _ _ _ _ _| _| _| _ _ _|_ | _ | | | | _| |_ _ _ _ _|_ |_ _ _| | | _ | | _ | | |_ | _ _|_ | | |_ _ | |_ | |_ |_ |_ | | |_| |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | |_|_ _ |_ | _ _ _| | | _ _ _| _|_ _| | _| |_ | |_| | _ _ _ _ | |_ _ _| | _ _| | _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | _| | |_ | |_ |_| | | |_ _| | _ _| _ _ _| | | | | | | _ _ _ _|_ |_ _ |_ _ | |_ | | | _|_ _| |_| | +| | |_ _ | _ _|_ _|_ | | _| |_ _ _ _| | |_| _ _ | |_ _ |_ |_ _| | |_ _ _ | | |_ _ | | _ _ | | | | |_| | _| | |_ _ _ | | _|_ _ _| _| | | | _|_ _ |_ | |_|_ | | _ _|_| |_ _| _ | _| |_ | _|_|_ | | | _ _|_ |_ | |_ | | |_ _ _| | | |_ _ _ _ | _ _|_ _ _| | _| | _|_|_ | | | _ _| _ _ _| | | | |_ _|_ | |_|_ | | _ _|_| |_ _ |_ _| |_ | |_ _ _| |_ _| | |_ | _| | | _ _ _ | |_ | _ | _ _| | | _|_ _ _ _ |_ _| _|_ _ | _|_ _ _ _ _ _|_| _|_ | | |_ _ _| |_ _|_ _ _ _ _| | | _| | | |_ _|_ _ |_ _ _| | _ _ _ _|_ |_ | _| |_ _ | | _ _ _ _|_ _ _| _|_ _| _| |_ _ |_ _| |_| | |_ _ _| |_ _ | | _| |_ _ | | | _ _| |_ _| _ _| |_ _| |_ | _|_|_ | | | _ _| | _ _ _| | |_ _ |_ |_ _|_ _ _ |_ _|_ _ |_ _ _ |_ |_| _| _| | |_ _ _| |_ _ | _|_|_ _|_ | | _| |_|_ | |_ | |_ | | |_ | _|_ _ _| | _|_ _ _| | | _ | | _ _| | _| | _|_ _ _ _ | |_ _ _ _| | | | _ |_| _ _ _| _| | | _| _ _| | | _| |_ _ | | | |_| | _| |_ _ |_| | |_ _ _ _|_| |_ |_ | |_ | | _ _ _| | |_ | _ _ _ _ _|_ _| | | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | |_ _ | _ | _|_ _ _ _ _| |_ _| _| _ _ _| | | |_ | | | |_| _ _ _| | | |_| |_ | | | |_ _ _ _| _ _ |_ | _|_ |_ _| |_| _| |_ _ | | | _| _| |_ _ _ | | |_ _| |_ | | _ _|_| |_ _ _ _ |_ _| | | | _|_ _|_ _ |_|_ | | | |_ _ _ _| _| |_ _| |_ _ _ _ _| |_| | _ _ _| | |_ |_ _ _ _| | _| |_| | _| _|_ _ _| _ |_ | | _| _| _| | | | |_ _| | _| _ _ _ _|_ _| _| | |_ | |_| | _| |_ |_ _| | _ _| |_ _| _ _| |_ _| | _| _|_ _ _|_ |_ _ _ _ | | _|_ _ _ _| _ _| | _| _ _|_ _ _ _ _ |_ _| | | _|_ _| _ _ _| _ | |_ _| | | |_ _|_ _ | | _| |_ _ |_ _| |_ _| |_ _ _| |_ |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| |_ _| |_ _| |_ _ _| _| | _| _| |_ | _ _|_ _ _ _| _| | |_| | |_ |_ _ _| |_ | | _ _| |_ |_ _| |_| _ |_ | | +| |_ _| | _ | | | |_ |_ _ | _ _ _ |_ | | | _ _| | |_ | _|_ _|_ |_ | | |_ _| | | _ _|_| |_ | |_ _| _ _ _ _|_ _ _|_ | _ | _ _|_ _ _ _ _ _|_ |_ | _ _|_ | | |_ _ |_ _| |_ _ _| | |_ _ _ _ _| |_ _| _ |_| |_ | | | _|_ _ | |_ _ _| |_ _|_ _ |_ _ _| | _ | _ _ _| _|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | |_ _ _ | |_ | _ _|_ | | |_ _ | _ |_ | |_ _ _ _ _|_ _ _| |_| _| | |_ _|_ _ | _|_ | | | _| | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _| |_ | | _ _ | | |_ | _| | | | |_ _ | | |_ _ _| |_ | | | | _ _| | |_ _ _| _ | _ _ _| _ _| _| _ |_ | _| _| |_ |_ |_ _| | |_ _ _| | |_ |_ _ _ _| _ _| _|_ | |_| _|_ _ _ _ _| |_ _| | _ _ _| | | _ _ _|_ _ _ _ | |_ _ |_ _ | | | _| _| | _| | _ _ _ _ _| | | | | | |_ |_ _ | _|_ | | | |_ | _| |_ _| |_ _ |_ _| _|_ | _ _| |_ | |_| | _| |_| | _| | | | _ _| _| |_ _ | _ _| | | |_ | | _ _ _ _ _|_ _ _ _| | |_ | _|_| | _ _| | |_| |_ | |_ |_ _ | _ _| |_ _| _ |_ |_| _| | | | | |_ _ _ _ |_ | | | |_ _ |_ _| _ _ _|_ _| | _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| |_ _ |_ _| | |_ | _ _ | _ _ _ _ _ _| _ _|_| |_ _ _|_ _|_ |_ _ | _|_|_ _|_ | | _| |_|_ |_| |_ _ | | | |_ _ | _ _ _| _| |_ _ | | | |_ _ _ _ |_ | |_ _|_ _|_ _ |_ _ _|_ | | |_ _ |_ | | _ _| | |_ | _ _ |_ _ | | _| |_ | |_ _ _| _|_ _ | _|_ | | _| _| _| | | _ _| _| |_ | _ _| | _| _ _|_ _| | | _ _| |_ |_ _ _| _ _ _|_| _| _| _ _| | | _ _| | | | |_ | | | | | _|_ _ _|_ |_ |_ |_ |_ _ _ _| _ _| _ _| _ _ _| _| _ | _ _ _ _ | | | _|_ _ _ _ | | |_ _| _ _ _ _| _ _ _ |_| _ _| | |_ _ _ _ _ _ _ _ _| _ _| | |_ |_ | | _ _| | |_ _ _| | | _ _| | |_| _ |_ |_ | | | |_ _|_ | _ | | | |_ _ |_ | _| |_ _ | _| | |_ |_ |_ |_ _ _| _ _ |_| _| _|_ | |_ |_| _| _ _| _ _| | | _ _| | | _| _| _ _|_ | +| | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ _| |_ | _ _| _ _| | |_| _ _ _| _|_| |_ _ | | _| _ |_ | |_ _ _ _| _ _ _ _ | |_ _ | | | | _ _ _ _ | |_ _| _| | _ _| |_ _| _ _| _ _| | | _ _ _ _ | _ _| |_ _ |_ _ _| |_ | |_ _ | | _ _ |_ |_ _ | _|_| _|_ _ | _ _ | _ _ | _ _ _ _ _ _|_| |_ _ |_ | |_ _| | _ _| |_ _| _ _| | _ _|_ | _ _ _| _ _|_| _| _|_ | _| | | _| _|_| _ _|_ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _ _| |_ _| _| |_|_ _|_ _ _| |_ _ _| _|_ _ _ | |_ _| _| _ _|_ _ _| |_|_ _| | _ _|_ | _ _| |_ _ | | _ _ _| | | |_ _| |_ _ _| |_ _ _| | | _| _ _ | | | | |_ | _ | | |_ _ _|_|_ |_ | _ _ | _ _ _ _|_ _| _ _|_| |_ | _ _ | _| |_ _ | |_ _ _| | _| _ _|_ | | | | | | _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _|_ _| | |_ _|_ _ _ |_ |_ _ _ _ _ _|_|_ _ _ _ _ _|_ _ _| | | | |_ _| |_ _| | |_ _ _|_ | | | _ _|_|_ | | |_ | _ _ _ _ | |_ _| |_ _ _ |_ _|_ _ _|_ _ _ | |_ | | _ _|_| |_|_ | _| _ _|_ | | |_ | |_ _ | _ _| _| | |_ _ |_ _ |_ _ | _ | | | _ _| | | | | | | | _ _| _| | | | |_ | _ _ | |_ |_ _ | _| |_ _| | |_ _ | | | |_| _ |_ |_ _| _ | | _| | _ | | | |_ |_ _ | _ _| _ | | |_ _|_ _ |_ _| _ _ _| | | | _| _| | | | | _ _ _ _ |_ _ | | _ _| |_ _| _ _| _|_ _| _ _| | _| | |_ | | |_| _| _| | _ _ _| _ | |_ _ |_ _| |_ |_ _ _| | | |_ | | |_ | | | | | |_ _| _ _ |_ _ | _ _| | _|_ _ _| | _ _ _| _|_ _| _| | |_ _ _|_ _|_ _| | | | |_ _ _|_ _ | _| _|_ _ _ | _ _ | | |_ _ | | _ _ _| |_ _ _| _ _ |_ _| |_ _ _ | _ _| |_ _|_ _ |_ _| _ _ _| _ _|_ | | | | _ _ _| _ _ |_ _ | _ _| | |_ _ _| | |_ | _| | _ _| | | |_ |_ _| _| _ _|_ | | |_ _|_ _ _ _ _| | | |_| | |_|_ _|_ _ |_ _| _ _ _|_| |_ _ |_ | _ _|_ | | _ _ _|_ | | _| |_ _|_ | | | _| | |_ _ _| | | |_ | | _ _|_| _| |_ _ _ _ _| +| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _|_ | _| _ _ _|_ |_ _ _| _| _| | _| |_| _| _ _|_ | _ |_ _ | | _| |_ _ |_| |_ |_ _ | | _| |_ _ |_ | |_ _ _ _| _ _| _ |_ _ |_ _|_ _| | _ _|_|_ | _ _| _| _ |_ |_ _|_ | |_ |_ _ |_ _ _ _| | _ |_ _ _| | | _ _| | | |_ _| _ | _ _| _ |_ |_ |_ _ _| _ _|_ _ _ _| _ _| | _|_ _ _ _ _|_| | |_| | _ _ _| | | _ _|_ | |_ _| _| |_| | _| _|_ _|_| | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ |_ _ | _| | |_ _ _ _ | |_ _ |_ _| | | _|_ | _ _| | _ | |_ _ _ _ |_ | _ _| | _ _| | _| | |_ _ |_ _|_ | | _ _| _ _| _| _|_| | | _ _ | | | | | | | |_|_ _|_ _ |_ _ _ | _|_ _| | |_ _ | | _| |_| _ |_ |_ | |_ _|_ _ _| | |_ | _ _| | | |_ | | | |_|_ _ _| | | |_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ |_|_ _ _|_ |_ _|_ _ _ _ | | |_ _ _ | | |_ | |_ _ | | _| |_ _ | | | | | | _ _ _ _ | |_|_ _ _|_ | | |_ _ | _| |_ _ _ _ _|_| | |_ |_ | _|_ _| _| |_ | _ | | _ _| _|_ _|_|_ |_ | | |_| | |_ _ _| |_ _| | |_ | |_ _ _ _| |_ | _ _| | | | | | | _ _| |_ _| | |_| _| _ _|_ | |_ _ _|_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| |_| | _ _ _ _ _ _|_ _ | |_ _|_| |_ _ _| | _| |_ _|_| | | | | _ _| | |_ _ _ _| _ _| | | _ | _ _ _|_ |_ _|_| _|_| |_ _ _| _| _|_ _ | | |_ _ | |_ _ |_ _ _ _ | | |_ | | | |_ | | |_ |_ _|_ _ _ _ _ | | |_| |_ | | | | |_ |_ _ | _| |_| _| _|_ |_ _| _ _ | | | |_ _| _ _ |_|_ _ |_ _ |_ _ _ _| |_| _|_ _ |_ _|_ _ | | | _ _ _|_ | | | | _ |_| | | _|_ _ |_ _ |_ _ |_ _ | _ | | | | |_| _ _ _| | | |_| |_ | | | _ | |_ _ | | | |_ _ | | | | |_ | _| |_ _ _ _ _|_ | _ | | | _| |_ _ _|_ _ | |_ _ | | _ _ _ _|_ |_ _ | |_ _ _ _ _|_ _ _ _ | |_ _ _ | |_ _ _ _ _|_ _ _ |_ | _ _| | | | | | _| _ | |_ |_ | +| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ | |_ |_ _ _| | | _ _ _|_ | | _ _ _ _| _| |_ _ _ _ _|_ | |_ _ _| | |_ _ _|_ | | _| _| _| | |_ _ _|_ | | | | _ _ _ | | |_ _| | |_ _| _ _ _| |_ _ _ _ _ _| _ _ _| _| _ _|_ | _| | | _| _| | | | _ _|_ |_ _ |_ _|_|_ | _|_|_ |_ |_ _| | _| _| _ _|_ |_ _ | _|_| _ | _ | | |_ _ _ |_ | _| | | _| |_ _ | _| |_ | _| | | | _ _| _| _ _|_ _|_ | _ _ | |_ _|_ | _|_|_ | | | _ _| |_ _ _ | | _ _ _| | | | |_ _| |_ | _| |_ _ | | _ _| | |_ | _|_ | _|_ | | |_ _ _ _ _ _| |_ _ _| | | |_ _| _|_ _ _ _ |_ _| _|_|_ | _ _|_ _ _ _|_ _ _| |_ _| |_ _|_| |_| | |_|_ _ | |_ _ | | |_ | | | _ _| | |_ | _| _| _ _|_ |_|_ | _ _ _ _ _| | | |_ | | |_ _ _ _| | |_|_ _ | _ _ _|_ _ _ _ _ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | _| | | _ |_ _ | |_ _ |_| |_ _ | | _| |_ |_|_ _| | |_ _ _|_ | | |_ _| |_ _|_ _ | | _| |_ _ | | | _ _| |_ _| _ _| | |_ _ _ _ _| |_ | | | _ _ _|_ |_ | | | _| | _ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ | | _ _ _| | | _ _| |_ _| |_ | |_| |_ | _|_ _| |_ _ _ _ _| |_| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ | _ _ _| | | | _ |_ | |_| | |_ _ _ |_ _| |_ _| | | _ _| | | _| | |_ _| | | |_ _ _| _ |_ _ _ _ | _ _| _ _ _|_ _ _ _| | _|_ _ |_ _ | |_ | _| | | | | _| | | | | |_ _ _| _ _ | |_ _| _|_ | | _| |_ _| |_ _ _|_ _ _| | _ _| | _| |_ _|_ | _| | _| | | |_| _| _| _ _ | |_ _| _| _ _ _ _|_ |_ |_ |_ _ _ _| | | |_|_ _ | |_ _| | |_ | | _| | | |_ |_ | _ _| | _ _| | | | |_| |_ |_ _ | | | |_ _|_ | | _| |_ _ | |_ |_ _| |_| | | _ _|_| |_| |_ _| | |_ | _ _ _ _| | | | |_ _|_ _ _ _ | _| |_ _ _|_ _ | | |_ _ _| |_ | _|_ | _| _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| | |_ | | |_ | |_| _| |_ |_| |_ | |_| +| | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _| _ _| | _ _ _ _ _|_ |_ _ | |_| |_ | | | |_ _ _ _ |_ |_ _ | _| _ _ _ | | | _| | _| _ _ | | | | |_ _| |_ _|_ _ |_ _| _ _ _ _| |_ | _ _ _| | | _| |_ _ _ _ _|_ | |_ |_ | _|_| | |_ | | _|_ |_ | | | _|_ _ _ _ _| | | _ _| | _| |_ _ _ _ _|_ | |_ _ _| | | | _|_ _|_ _ |_ _ | | |_| | |_ | |_ _ _ _| | | | _| | _| |_| |_ | |_ _| _ _ _ |_ _ _ |_ _| | _|_ _ _ _ _| |_ _| _| | | | | | | _ _| | _| | _|_ | |_ _ _|_ | | | | _| | | _|_ _| |_ _ |_|_ _| |_| | _| | _|_ _|_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _| _| _ |_ |_ _ _ | _|_ _| _ _| | | | _|_ _| | | | _ _ _|_ | | _| |_ _ _ _ _| _ _|_| _ _ |_ _| | |_ _| | | | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _ _| _ _| | _ _ _ _| |_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _|_ _| _| |_ _|_ _ _ _| _| _ _|_ | _ _ _|_|_ _ _ _| | | | _| _ _ _ | | _ | | _ _| | |_ _ _|_ | |_ |_ _ _ _| _ _| _| | | | _ _ _| _ |_|_ |_| | |_ _ | _ _|_ _| |_| | | |_ | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| | _| |_ _ _ |_ |_ | |_ | _|_ _|_ _ |_ _ _ _| | |_ |_ _ | | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | _| _|_ _ | | _|_|_ _ _| | _| |_ _ _| | _ _ _ _ _ _|_ _ _ |_ | _| | |_ |_ _|_ _ |_ _ _| _ _ _| |_ _ | | |_ _ |_ _ | _ _ _| _|_ _ _ |_ _ |_ | | |_|_ _ _| |_ _ _| |_ _| |_|_ | _ _| | _| |_ _ | | | | |_ |_ _ | _ _ _ | _|_ _ _|_ | | |_ _ _ _ |_ _ _ _ _|_|_ _ | | |_ _| | | |_ _ |_ _ _ _ _| |_ |_ | | _ | _|_|_ _ _ | |_| |_ _ _| _ _ _|_ _|_ _ _ _|_ |_| _|_|_ | _|_ | _| _|_ _ _|_ _| | _| _ _| | |_ |_ _ | |_ _ | _ _| _| _| _ |_ |_ | |_ | _|_ | _ |_ _| |_ _ _ _ | |_ _| _|_| _ _ |_ _| |_| _| _ _|_ _ |_ _ |_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _ |_ _ _| |_| _| _| | |_ | +| _| | | |_ _|_ | |_ _| _ | | |_ _| _| _| _ _|_| _ _ |_ _ _ _| | |_ _ _|_ _ _| | |_ |_ _ _ _| |_ |_| | | | | |_ | _ _| | _| _| | | | | |_ |_ | | | |_ | _| |_ | |_ _ | | _ _ _ _|_ |_| |_ _ _ _| | | |_ _ _ _ _ | |_ |_ | | | _|_ | | | |_ _| | _|_ _| _ | _ |_ _| | _| |_ _ _ | _ |_ | |_ _|_ _|_ _ _ _ _ |_ _ | _|_ _ _|_ _ _|_ _ | _|_|_ _ _| | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | _ _ | _ _ |_|_ | | |_ _|_| |_ |_ | _|_ _ _|_ | _|_ _ _ | | | | | | |_ | |_ | | _|_ _ |_| _| _ _| _| _| |_ | _ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | | _| _ _|_ |_ | | | |_ _| _ _| | | |_ _ _ _| |_| _ _| |_| | |_ _ _ _ _ _| _ _ _| | | | |_ _ | |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _ _ | | |_ _ | _ | |_ _| | | | | _|_|_ | | | _ _| _ | _| | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| | | |_ | _ _| | | |_ _|_ _| | _| _ _ | | | |_ | _ _| | |_ _ |_| | | _ _ _| |_ | _| _| _| | _ _ | _| _| | |_ _| | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| _| |_ |_ | | | | | _ _ _| _ _ _ | _ _| _ _| |_ | | _ _|_ _ _| | _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _ _| _ _|_| _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | |_ |_ _ | | | |_ _ _ |_ _ _ _| | | |_ _| | _ _| | |_ _ _ |_ _ _ |_ _ _ _| | | | | | | _ _| | _|_| |_ _ | | | |_ _ _|_ | | | | |_|_ | | _ _|_| |_ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | _ _| |_ _| | | _ | | _ _|_ _ _| | | | |_ | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _ | _|_ _ _ |_ |_ _ _| | _ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ | _| _| _ _|_ | | |_ _|_ _| _| | | | _ _ _ _ | _| |_ _ |_ _ _ _ _| | _ _| _ _| | _ _ _ _| |_ _ | |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ |_ _ | _ _| _|_| _| | |_ _ _ | +|_ _ _| |_ _|_ _ _ _ _| _ |_ | |_|_ _|_ _ |_ _ _ _| | _ _ _|_ | | |_ _| _|_ _ _ _ _ | |_ _ _ | _ _ _|_ _ _ _|_ | |_ _| |_ _ _| |_ _|_ _| | | _| _|_ _| |_ _ |_| | |_ |_ _|_ _ | | |_ _ _| |_ | |_ _ _ _ _| |_ |_ _ _| | |_ _ | |_ _ | |_|_ | | |_ _ | | | _|_| | | | | _| | |_ _ _| | |_ | | | |_ _| |_ | |_ _ | _ _ _ _ | | _ _| | | _ _ _ _ | |_ _| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | _| _| |_ _| | _| _ _| _| _ |_ |_ | |_ _ | | _|_ _ |_ _| _| | | | |_| | | | _|_ |_ _|_ _ |_ | |_ _| |_| _| _| _| |_ _ _ _| |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _| |_ _ _ _ _| | |_ _|_ _ |_ | _ _ _| _ _ |_ _ | _ _| | _|_ | |_ _ _ _ |_ _ | _| |_ _| |_ | _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | |_ _ | |_ _|_ _ |_|_ | | | _ _| |_ _|_ _ _ _ _| |_ _|_ _ | | _|_ | | _ |_ _| _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _| |_ _ _| |_ |_ _ _ | | | | |_ |_ | | | | _ |_ _|_ _ |_ _ _| |_ _ _ _| _| |_ _ _| | _|_ _ _|_ _ _ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | | _| _|_ | | | |_ | |_| _ _ _|_ _| |_| | | | | _ _|_| _ _ _ _ _| | | _| | | |_ _|_ | _|_ _ _ | | | |_|_ |_ _| _ _ _ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ |_ _| | | | |_ _ _| _ _| | _ _|_ |_ |_ |_|_ | _|_ _ _ _| _ _| _ _ _ | _|_ _ _|_ _|_ _ _ | |_ | _ _| | _ _| |_| | |_ _ |_ | |_ |_ | _ _|_ | | |_ _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | | _| | |_ | |_| | _ _ | | |_| | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _ _ _ _ _ _|_ _ _ _ _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | | _| |_ _ _ _ _|_|_ |_ _ | _| _| | | | _ _ _ |_ _ _| _| | _ | | _ |_ _ |_ | _| |_ | _ _| | _ _| | _ _| | | _|_|_ | | | _ _| |_ _ | | | |_ | | _ _|_| |_ _ _| _ _|_ |_ _| +|_ _ | | _ _ | _| | |_ _ _|_ _ |_ |_ _ | _ _|_ _ | _ |_ _| | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ _ | |_| _ |_ |_| _ _ _|_ _| _| _ |_ |_ _ | |_ _ _ _ | _ _| |_| _| _ _|_ _ _| |_ _ | _| _| _| _| _ |_ _ _ _|_ |_ _|_ _ | |_| |_ | _| | |_ _ _| | _| |_ |_ | _|_ | _| _| |_ _|_ _ |_ _ |_ | _|_ _ | | _| |_ | _ _| |_ _ | | _| |_ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | _|_ _|_ | | | _| _| _ _|_ |_| | _| | |_ _| | | | _|_ _| |_ _ _| | |_ | _ _ _ _ |_ _ _| | _ _ _| | _| |_ _ _ |_ _ _| | _ _| _|_ | _| _|_|_ | | | _ _|_ _ _| | | | | |_ _ | | | |_ | | | | | | _ _ _|_ | | |_| |_ | | | _|_ _| | | _ _| |_| _ | |_ _ _ _| | | | |_ | | _|_|_ | | | _ _| _ _ _| | | | |_ _ _| |_ _ _ | |_ _ | |_ | |_ |_ _ _ _ _ |_ _ _ _ | | | _ _ _| |_ |_ | _ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | |_| _ |_ |_ | |_ _ _| | | _| _|_ _| |_| | |_ _| _ _ |_ _ | | | _ _| | |_ _| _ | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | |_| | _|_ |_ | |_| _|_ |_ _ | _ | _| _| | | |_| |_| _ _ _|_ _ _| _|_|_ _ _| |_ _|_ _ _ _ _| | _ _|_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | | _ _| |_ _ _| | _ _| _ _| | _ _| | _| _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_| |_ | | | _| _| | _ _| _| | | _| |_ _| | _ _| |_ _| _ _| |_| _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _| |_|_ |_| | _|_ _ _|_| _ _|_ |_ | |_| |_| | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _|_ _ | _ _ _ _ | |_ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | |_ | _ _ _ _ _| _ _|_ | |_ |_ _|_ _ | _| _ _ _ | |_ | |_| | | | | _| |_ |_ _ | | | |_ _ _ _| | _|_| | |_ _ _ _ _| |_ _|_ _ | | _ _| | | | _ _|_ | | |_ _ | | _ _| |_ |_ | +| _|_ _| | |_|_ _ _ _ _ _ | _| |_ _ _ _| | | | _ _ _| | | _|_ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| _ _|_ |_ _ _ _ | | _| _ _|_ | _| | _ |_ _ | _ _| _ _| | _| _ _ _ _| |_ _ _| _| |_ |_ |_| _ _ _ _ _ _ _ _ _ _|_ | | _|_ _ _|_| |_ | | | |_ | | | |_ _|_ _| _| _| | |_ _ | | | |_ _ _| | |_ _ _| | |_ | |_ _| | |_ _ _| | | |_ _| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ _ _| _| _| |_ _ _ _ _| _|_ | |_ _ _| | _| |_| _ |_ |_| | | _ _| | _ _ _ _| _ _|_ _ _ | | _ _| | |_ _ _ _ |_ | _ _ _ _|_ |_ _ _ _ _| |_ _| _ _ |_| | | | | _| |_ _ | |_| | |_ _|_| _| |_ _| | | |_|_ _ | _ |_ _|_ | | _| |_|_ _ _ |_| _| |_|_ _ _ _ _ _| _ _ _ _ _| _| | |_|_ |_ _|_ _ _ _ _| |_ _| _| | |_ _ | | | |_| _ | | _| _ _|_ _ _| | | _| | _ _ | | _ _|_ _ _| | _ _|_| |_| _ |_ |_| _| | _ _| |_ |_ _ | _|_|_ | | | _ _| | _ | | | |_ _ _| |_| _| _ _|_ |_ _| _ _ |_ _| _| _ |_ |_ _ _ |_ | |_ _ _ _| | _| | _ |_ _| |_ |_ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _| _ _| _|_ _ _ _|_ _ _ _ _|_ _| | _| _| |_ |_ |_ _ | _ | |_ _ _ _ | | _ _ | _| _| | _ _ _ _| _ _ _|_ _ | _|_ _ _| |_ |_| | | | | _|_|_ | | | _ _| _ | | | |_| _|_ _ _| |_ _ _ | |_ _ |_ | _|_ _ _| | | _| | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | _| |_|_ _ _ _| _|_ _ _|_ _| |_ _ |_ _ |_ _ _ _| _ _| | _|_ | |_ | | | _|_|_ | | | _ _| _ _ _ | | | | |_ |_ _ | _ _ _| _ | | | | _ _| _|_ |_ _ _| | | |_ |_ | _|_|_ | | | _ _|_ _ _ | | |_ _|_ | _| | |_ _ | | _| |_ _ | |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| | |_ | |_ _| _ |_ _ | |_ | | | |_ _ _| |_| _| | _| | _|_ _ _| _ _|_|_ _ _ _|_ _ |_| |_| | |_ _ _ _| |_ _ | | | _ _ _ | _ _ _| | |_ _ _| |_ _ | _ _| |_ _| _ _| | | _ _|_ _ _| _| +| |_| _|_|_ _ _ _ | |_ _| |_ _ _ _ | _ _| _|_ _ _| |_ |_ _ _ |_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | |_ _ _ _ _| | | | |_ | |_ _ _ _ _| | _ _| |_ | _|_ _ |_ | _| |_| _|_ | _ | _ _ _| | _| |_ |_ _ | | _ _ _ _ | |_ _| | _ _ _ _|_ |_| | | | _|_ _|_ _ | _ _ _| | | _|_ _|_ _ | |_ _| |_ | | _| _| _ | | | | | | _| _ _ | | | | | | | | |_ | _|_|_ | | | _ _|_ _ _ _ | | _|_ | | _ _|_| |_ _ |_ |_ | |_ | _ _ _ _|_ _|_ |_ _ | | | _| _| _ _|_ | |_ _|_ _ _ _|_ | _| _|_ _| _ _ |_|_ | _ _| |_ _ | _| | |_ | | _ _ _ _ _ |_ _ _| | | _|_ _| |_ |_ | | |_ _ _|_ _ | _| _|_ _ _ |_ _ _ _ _ _|_ _ _ | | |_ |_ _ | _ _ | | |_ _ _ | |_ _ _ _| _ _ | | _ _| | | _ _| _ _ _ | | _| _ _|_| |_ |_ |_| | | _ _ _ _ _| _ _| |_ _| |_ | _ _| | | _ _ |_ _ | _| _| _ _|_ | |_| |_ | | | | _ _|_ _ _ _ _| |_ _| |_ _|_ |_ | | | | | _| |_ _ _ _ _| |_ _ |_| | | _| _ _|_ |_ | | _|_ _ | _ |_| _| | _| _ _| | _| |_| | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _|_ _ _ | _|_ _| | |_| | _ |_ _ |_|_ _| _| |_ _ _ _| | | | _ _ | | | |_ _| _| _ _|_ _ _| _|_| | | | |_ _ _ _ _| |_ _| _ _ _|_ _| | | | _| _ _ _ _|_ |_ _| _ |_ | |_ _ |_ _| _| | | |_ _ _| | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ |_ _ | _ _ |_ _| _ |_ |_ _ _ | | | | |_ _ _ |_ _| |_ _|_ _ _ _ _ _| |_ _| | | _| _| | | |_ | | _ _|_| |_ _ |_ _|_ |_ _ _| _|_ _ _ | _|_ _ _ _| | |_ _ _ _ _| |_ _| _ _ _ _|_ | | _| _| | | | _| | |_ _ _| _| |_ | | | |_ _|_ | |_ _ _ _ | | |_ _ |_|_ _| _|_| |_ |_ _ | |_ _ _| |_ _ _|_ _ |_ |_ _ _ _ _| |_ _ _ _|_ _ _ _ | | _ _ _ _ | |_ _ _ _|_ _ | |_ | |_ | | | | | |_ _ | | | |_ | _ _| _ |_ |_ |_ _ _ _| _ _| _ _|_| | _ | | _| | +| _ _| |_| _ _ _| _| |_ _ | | _ _ |_|_ | | | _ _ _ _|_ |_ | |_|_ _ |_ _ _| |_ | _|_|_ | | | _ _|_ |_ |_| | _| |_ _ |_ _ | |_ _| |_|_ |_ | _ | _ _| | _ _| _| | _ | _| |_ |_ _ _ _ _|_ | |_ _ | _|_|_ _ _ |_ _| | |_ _ | | _| |_ _ | | |_ _ _| |_ | |_ _| | _ | |_ _ | |_ _| | _ _ _ _|_ _ |_ | _| | _ _ _| | | _| | |_| | | _ _ | | | | | |_ _| |_ | | | |_ _ _ _ _| |_ _|_ | _| | | | | _ _|_ | | |_ _ | |_ | | |_ | | | _ _| | _ | |_ | | |_ | _| |_ _ _ _ _| | | | _ | | | _| _ _ _| _| | |_| |_ | | _|_ _|_ _ | |_ _ _| |_|_ |_ _ _| _| _ _| | _| _ |_ |_| _|_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_|_ | | _ _|_| |_ _| | _|_ _|_ _ | | _ |_ _| | _ _| | _|_ _ |_ |_ | _|_|_ _| _| _ |_ |_ |_ _ _| |_ | _| |_ | | | _ _ _|_ | _|_| _| _ _ _| | | _| |_ _ _ _ _| |_ | | _| |_ _| _ _ _ _| _ _ _ _|_ _ _ _|_ _| |_| _| |_ |_ | _ |_ |_ _ |_ _ | |_ | |_ _ _ _ _| | |_ _ _| |_ |_| _| _|_ | | _| |_ | |_ _ _|_ |_ | |_ | _|_|_ | | | _ _|_ _ |_ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | |_ | _ _| _|_|_ _ _| |_ _ _|_ | | |_ _ _ _ | |_ _| |_ _ _|_ _| |_ |_ | _ _| | _| _ _ _ | _| | |_ _ _ _ _| _ _ _ _|_ | _ _|_| |_ |_ _ _| |_ |_ _ _| | | |_ _ _ |_ _ _ _ _ _|_|_ _ |_ _|_ |_ | | | _|_|_ | | | _ _|_ | | | | | |_|_ | | _ _|_| |_|_ |_| _| _ _|_ |_ |_ _| | | |_|_ _|_ _ |_ _ _ _|_ _| |_ _ | | _ _ _| | _ _ _ _| |_ _ _|_ | | |_ _ | _ |_ _| _ _ _ _ _ _|_ _ _| _ | _ _| _| _| _ _ | | | _| | _ _ _| |_ |_ | | | |_ | _| _ _| _ | | | | |_ _|_ _ _ _ _| | | |_ |_|_ _|_ _ |_ _ | _| _ _| |_ _ _ _| |_ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ | | _ _ _|_ _|_ |_ _ _|_| | | _ _|_| |_ | | _| _| _ _|_ | |_ _ _ | | |_ _ _ _ _| |_ _|_ | | +|_ _ |_ | |_ _ _ |_ _ _|_ | | _|_ | | | | | |_ _ _| |_ |_ _|_ _ | | _ _| |_ _ _ _ _| |_ _| _ | |_ |_ | | _|_ | |_ | |_ _ _| | _| _ _| | |_ _|_ _ _ |_ _| _ _|_ _ |_ _|_ _ _ _|_ _ |_| | _|_ _| | | _ _ | | | | _|_ _| | |_ _ _| _| |_|_ _ | _ _|_ _ _|_ _ | |_ _| _|_| | _| | | | _| | |_ _ |_ | |_ _| |_ |_ _ |_ _| |_ _ | |_ _| |_ _|_| |_ | |_ _ _ _| |_ | _ | | _ _|_ _| _|_ _| |_| _| | _ _| |_ _| _ _| _| | |_ _| _|_ _| | | _ _| | | |_ | | | | _| |_ _| | _ | |_ _| |_ _|_ _ _|_ |_ _ | | |_ _|_ | | _| | | _ _ _ | |_ | _|_ _ | |_ _ | | _ | | | |_| _| _ _|_ |_ _ | | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ | | |_ _ | |_ | _ _ _ |_ _| |_ | | |_| |_ | | |_ _ |_ _ _| | |_ _ _ _ _| _| _ _|_ |_ | _ _| | | | _|_ | | _|_ _ _| |_ |_ _ | | _| | | _| | |_ | _ _ | | | |_ |_ _ | _ _| | | |_ _ |_ | _ _| _ |_ |_ _|_ |_ | |_ _| | | _| _ _ _ |_|_ |_ | _| _ _|_|_ |_| | |_ | | |_ |_ _| |_ | |_ _ _| _ | | | | | | _|_ _ _ _ _| |_ _| _ _| |_ _ | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _|_ _ |_ _ _ | |_|_ _ _ |_ _|_ _|_ _ _ _ _| | |_ _ | _ _ _|_ | _|_ | _|_ |_ _ | | |_ |_ _ _ _ | _|_ _ | _| |_| _ |_ |_ _| _ _|_ _ _| |_ _ _ _| _ | | | _ _ _ _ | |_|_ | _ _ _ _|_ |_ _ _ _ _| |_ _| _ | |_ _| | | | |_ | _ _|_ | | |_ _ | | _| |_ _ _ _ _| _ _| _|_|_ _ |_ |_ _ | | _ _ _ _|_ |_| _|_ | | _ | | _| _ |_ |_ | _ _| |_ _| _ _| | |_ _ |_ | _ _ _ _ | |_ _| |_ _ _| _| _ _ _|_ _|_ _|_ | _| _ |_ |_ _|_| | _| | | _| _ _| _| | |_ | _ | | |_ _| | | _| | _ |_ _ | _| _| _|_ _ _ _ _| | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | |_| |_ _| |_ _| | | _ | _ _|_ | |_ | | |_| _| |_ _ _ _ _|_ _ _ _ |_ _|_ _ |_ _ _|_ _ _ _ _| | +| _| | | | |_ |_ _ _ | | |_ _ _ |_ _| | |_ _| _| _ _|_ _ _| _ | |_ _| | | |_ | _| _ _ _ _ |_ | | |_ |_ _ _| |_| _ _| | _| _ _ | | _ _| _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | |_ _|_ _ _| _|_|_ _ _| _|_ |_ _ _ _ | _| |_ _ _ | | _ |_| |_ _ _| _ _|_| |_ _ |_ | _|_|_ _|_ _| | _ _|_ _ |_ _ _ _ _|_ _ _ _ | _ _|_| |_| |_ _| _| _ |_ |_ _ _| _ _ _| _| _|_ _|_ _ _| | | _ _| _ |_ |_ _ |_ _ _ _| _ _| _ _| _|_ _| _|_ | | | |_ | | | | | | |_ _| | | |_ | _ _|_ _ _| _| | | _ _ _ _ | _| | | | _ _| | |_ | | | | | |_ _| _|_ _ | | _ _| | |_ _|_ _ _|_| | _| |_ _ _ _ _| | |_ _| | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| | _ _| |_ _| _ _| |_ _|_ _ | |_ _ _|_ |_ _|_ | | _| |_ _ _ _ | _ | |_ _| _ | _| |_ _ _ _ _| | | _ | | |_ _ _ _| | |_| _ _ _ _|_ |_ _ _| |_| |_ |_ _|_ _ |_ |_| |_ | |_ _| |_|_ | | _ _|_| |_ _| _ _ _| | _| | _| _| _ _|_ | _ _| _ _|_ _ _ | | _ _| | | _ _| | |_ _ _|_ _ | _ _ _|_ _| _|_ _ _ _|_ _ _ | |_ _ | |_ | | |_ | |_ | _ _ _ _ _ |_ | |_ _ _ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | | |_ _ _ | |_ _ _ |_ _|_ _ | | |_| _ _ _ _ | |_ _ _| |_ _ | | _ _ _ |_|_ _| |_ _ |_ _ | | |_| | _ _ _ _| | | _ _| |_ | _| _| _ _|_ | _| | | _ _ _ |_ _ | | | |_ _| _ | | _| |_ _ | |_| | _ _ _ _| _ _ _ | _| | |_| _ _|_| |_ |_ _| | _ _| |_ _| _ _| | |_ _ | | _ |_ _ _ _ _| |_ |_ | | |_ _ _| |_ | _ |_| |_ | | |_| _| _ _|_ | |_ _ _ _| _ _| | | _ _| | |_ _ | | _| |_ _ | |_ _ _| _| _ _ _ _ | | |_| _| _ _|_ |_ _ | | _ _| | _ _| |_ | |_ | | | | |_|_ _|_ _ _ _ |_ _ _|_ _| _ _| | _ _|_ _ _| _ _| | |_| |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ | | | | | | |_ _ | | | _| | | | _ _| | _| | |_ | |_ _ | _ _ _ _ _ |_ |_ _ |_ _ |_ _ | _ _| | +|_ _ _ _|_ _ |_| | | | | | | | _ | | _ |_ | _ _| | | _| | _| | _|_|_ |_| | _|_ | _ _|_ _ _| _| _| _ |_ |_ |_ _ |_ _| _ _|_ _| |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ _ |_ _ _ | |_ _ _ _| _ | _| | _| | | | |_ | | _| _| _|_ | | |_ _ | _| |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _| _ _ _ _|_ |_ _ | | _| _ _|_ | |_ _ | _| _| _ _ _ _ | | | _| _| _ _|_ | |_ _ _ | | | |_ _| _| _ _ _| | | _|_| | _| | | |_ | | | | _| _|_| _ | |_ _ _|_| |_ _ | | _| | | _|_ _|_ _ | |_|_ | | |_ _ | |_ _ _ _| |_ |_| |_| _ _| | _ _ _ _ | | |_ | _ _ _ _ | | | _ _| | |_ _ | _|_|_ | | | _ _| _ _ | | |_ _ | |_ _ _ _| _ _| | | _ _ _ _ _| |_ _ |_ _ | | |_ |_ _ | _ _ _| _|_ | _| | |_ _| | _ | |_| _| |_ _ | | |_ |_ _ _| |_ | | |_ |_| _ | _| _| | _| _ |_ | _ _|_ | | |_ _ | | | _ _| |_ _| | _| |_ _ _ _ _| | _ _ _| _ _ |_ _| | _ _| | | | _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ _| |_|_ |_ _|_ | | |_ _| | _|_ _ | | | _|_ |_| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ |_ _|_ _ | |_ | |_ _| | |_ _ | | _| |_ _ | | |_ _| |_ _ _|_ _ |_ | | _|_ _ |_ |_ | |_ | | _ _ _| _|_ _| _| | _| |_ _ _ _ _|_| _| _| | _|_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | | _| | _|_ |_ | | |_ _| _ |_ |_ |_ |_ _ _ _| _ _| _|_ | | _|_ |_| | | _ _ _ _ _ | | | _|_| |_| _| _ _|_ _ |_ _| _ _ _ _|_| | _| |_ _ _ _ _| |_ | | | |_|_ _ | _ |_|_ _| | |_ _ _| | |_|_ | | | _| |_ _ | | _| |_ | _| |_ _ _ _ _| _ _ _|_ _| _| | _ _| | |_ |_ _ _| |_ _ _ _ | |_ _| _ _ _ _|_| _ _|_| _ _ |_ _ | _ _| | | _| _| | | |_ _ | _|_|_ | | | _ _| _ | | | | | | _ _ | | | | | |_| |_ _| _ _| | |_| _| | | |_ _ _ _|_ _ _ | |_ | | |_ _ _ _ | _ _|_ | _ _| | | _| _ _ _| | +| | _ | |_ _ _| _| |_ _ _| |_ | |_| | | | | |_ | _|_ | | _| |_ _ _|_|_ _ _ _ | _|_ _ _| | | | _| _| _| _ _|_ | _ |_ _ | | _ _ _ _|_ |_| |_| |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ |_ _ |_ _|_ _ | | | |_ _| | |_ _|_ _|_| | _|_ _|_ |_| _| _ _| |_ _| _ _| _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| |_ | _| _| |_ _ _ _ _| |_ _ _ _| | _| _| |_ _ _ _| _| _| |_ _ _ _ _|_ | _| |_ _|_ _ |_ _ _ _ | |_ _|_| | |_ | |_| |_|_ |_ _|_| _|_ _| |_ _|_ _ | |_ _| |_ _ _ _|_|_ _ _ | | |_ | _ _|_ |_ _| | _ _ _ _|_ |_ |_ | | | | _ | | _| |_ | |_ _ | _ _| | | | | | | | _|_ _ _ _ _| |_ _| _ _| _| _| | | | _|_ _ | | | _| |_ | _ _ _ _|_ |_ | | _| |_|_ | | _ _|_| |_ _| |_ _| _| |_ | | |_ _| _|_ | | | | | | | | _| _| _ _|_ _ _| | |_|_ | | _|_ _| _| _|_|_ |_| _ |_ _| | _ _| |_ _| _ _|_ |_ | | _ | | |_ | _ | _| | _ _ _| _| | |_| |_ | | | | |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_| |_ _ | _| |_ _ _ _|_ _ _| | | |_| _| _| _ _|_ | |_ | | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_ |_ |_ _ _ |_ _| | | |_ | _|_|_ _| | |_ _ _|_ | |_ _|_ _ |_ | | _ _ _ _ |_ _|_ _ _ |_ | | |_ _ _ _|_| _ _ _ _| | | _ _| | |_ _ |_ _ _|_ _| _| | | _ | _|_|_ | | | _ _|_ | | |_ _ | |_ | _|_ _| |_ |_ _| |_ _ _| _| _ _|_ |_ | _ | | | |_|_ | _|_| |_ _| _| | | | | _ _ _| | | _ _| _ _| | | _ _ _| | | _ _ _ _ | |_ _| _ _|_ _ _| | |_ _|_ _ |_ _| |_| | | _| | _ _ _|_ _ _ _ _| _|_ _ _ _| | |_ _ _| | | |_ _ | _|_ | _ _ |_ | | |_ | | |_ _|_ | _| _ | _| |_ _ | _ _ |_| | | _ _ _| _| | |_| |_ | | |_ _ _| | |_ _|_ _ |_|_ _ _ _ _| |_ _| |_ _|_ _| | | | | |_ _| |_ _|_| |_ _| _ _| _|_ _|_ _| |_ | _ | |_| |_| _|_| |_ _ | |_|_ _ _ _| | | _ _| | |_ _ _| _ | +| | | | | |_ _ _ _ _| _| _ _ _ _ _| _ _|_ _ _|_ _ _| _ |_|_ | |_ _ _ _ _ _| _ _| | _ _ _| _|_ | |_|_ _ | _| |_ _ _ _ _|_ |_ _ |_ |_ _ _| |_ | | | |_ _ _|_ | _|_|_ | | | _ _| _| _ _|_ _ _| | _ _ _| | |_| _ _ |_ _| | | |_ _ | |_|_ _ _ | _ _ _| | _ | _| |_ _ _ _| _ _| | _|_ _ |_ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _|_ _ _|_ | |_ | |_ | _ | |_ _|_ _ _|_ | |_ _ | |_ _ _| _ _ _|_|_ |_ _ | |_ _ | _| | |_| | _| |_ | |_ |_|_ _ _ _| _ _ _| _ _|_ _ _ _ |_ _| | _| | _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _ _ _ _| |_ | | _| | | | |_ _| | |_ _| _| | _ _|_ | _| | | |_| | | |_ _ _ _| | | _| _|_ |_ _ _| |_ | |_| | _|_ _| |_ _|_ _ _|_ _ _| |_ | |_ | |_ | _ _|_ | | |_ _ | |_ _ | | _| _|_| | |_ |_ _ _ | |_|_ _|_ _ _|_ _| | _ _| | _ _ _ _|_ _ _ _|_| | | _ _ _| _ _ _ _ _| _| | |_ _ |_ _ _ _| _ _| _ _| | | | |_ |_ _|_ | |_ _| | | |_ _|_ _ | _ |_ _|_ | | _| |_ _| |_ _ _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | |_ _ | _| _| |_ |_ | _| |_ | | | _| |_ _ _ _ _|_ |_| |_ |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_ |_| |_ | _| _| |_| | | |_ _ _ _ | |_ _ _ _ _| | _ _ _| _| |_ _ | | _| _ _ _ | _| |_ _ _| _ _ |_ _ | _ _| | |_ | |_ | | | _| _ _| _ | | _ _|_| |_ |_ _ _ _ _| |_ _| _ |_|_ _| | | | | | | _| | | _ _|_ _ _| _ _|_ | _| |_ _ _ _ _| _|_| | | | |_ _|_ _ |_ _ _ | |_ _ | |_ | | _| |_ _ | _| |_ _ |_ | _| |_ | _ _| | |_ _ | _| |_ | |_ |_ _ _ _|_ _ | _|_ _ | |_ | |_ _| |_ _ | _ _| |_ _ _ |_ | | | _| | _ | _|_ | | |_ _| | | | |_ _ _| | | _| |_ _ _ _|_ _ | |_ _|_ _ _| _| | | |_ _ _| | |_ _ | _ |_ _|_ | | _| |_ _ _ _ _| _ | |_ _ |_ _ _ _ _|_ _ _ _ _|_| |_| |_ _| _| _ |_ |_ | | |_|_ |_| | _ _ _|_ _| _| |_ _ _| _| _ _| | _| |_ _ |_ | _ _|_|_ | |_ | _ _| _| +| |_ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ |_ _ _ |_ | _| _| | _| | | |_ _ |_|_ | | |_ _| _ _ |_ _ | |_ _| _| _ _|_ _ _| |_ _| | | _ |_ _ _ _ _| |_ _| | _ _ _ _| _ _ |_ _ | _ _| | | _| _ | | _|_|_ |_ _ _| _ _ |_ _ | _ _| | |_ _|_ _ _ | | | | |_ _ _ _ _ _| _| _| |_ | _|_|_ | | | _ _| _ _ | | | _| | _ _ _ _ _|_ |_| | |_| |_ _ |_ _| |_ _ _ _ | |_ _| _ | |_ | _| _|_ |_ _ _ _ _| |_ _| _ _| | | _|_ _ _|_ | _| _ _ _| | _ _ _ _ _ _ _ _ | _ | _ | | _| _|_ | |_| | | _|_ | |_ _ _ _| _ _ _ _| | | |_ _ | _ _ _|_ _ _| _|_ _| | _| _ |_ _ _| _|_ _ _| | |_ _ _| |_ | |_ | _ |_ _ _|_ | | _ _| | | _ |_ |_ _| | _|_ _ _ _|_ _ _ _ | _| _ _|_ _ _|_ |_ _ |_ _| | _ _| |_ _| _ _| _ |_ _|_| _| |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| _|_ | |_ _ | _ | | |_ _ | _| _| _| _ _| |_ _ | | | | _ |_ | |_ | | _| _| |_ _ _| _ _| | | | _ _| | |_ |_ _ | _ _ | _ _| | | | _|_|_ | | | _ _|_ _ _ |_| | _| |_ _| _ _|_ |_ _ _|_ _ _|_ _ | | _ _ _ _|_| |_ _| _ _ |_ _ _| | | _ | |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ |_ _ _|_ |_| |_ _ | _| |_ _ _ _| | | | | | | | |_ _| _| |_ _| | _| _| _ | |_ | | _ _ _|_ | | |_| |_ | | | _| |_| _| | | |_ _ | _| _| |_ _| | |_ _| _ _| _ _ _ |_ _ _ _|_| |_| | | |_ _| _| | _ | |_ | _ | |_ |_ | _| _ _| |_ _ _ | |_ _ | _|_| | | | | |_ |_ _ _ _|_ _ _ _ | _| |_ |_ _ | | | |_ _| | _ _| _| |_ _ _| _ |_ _ | | |_ _ _| | | |_ _| | | |_ _| _ _|_ _ _ |_ _ _| |_ _| | _ _| | | _| _| | | | _ _| | |_ _|_ _ _ | | |_ |_ _ |_ _ _ _ | |_ _ _ | _ | |_ _|_ | _ | _| |_ | _ _| | |_ |_ _ | _ _ | | _|_ | |_ _ _|_ _| _ _ _ |_ _| _ |_ |_ _ | | _| _ _|_ | |_ _|_ _ |_|_ _|_ _| _ _ |_ _ | | _ _ _ _ _| _ |_ _ _| | | | | | | | | | | | _| | +| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | _|_ | |_ |_ _ | | _|_ _| _ |_ _ |_| |_| |_ | |_ |_ |_| | |_ | _ _| | _| _ _ _| | | _| | | |_ _ _ _ _ | | _| | _ _ _|_ | | |_| |_ | | | | | |_ _ _|_ _ _ _ | _ _ _| | | |_| |_ | | | | _|_ _|_ |_ _|_ _ |_ _ _ _| | | | | _|_ _ _ _ _| |_ _| _| | _ _|_ | | | _|_|_ | _| _ _ _ _|_ |_ |_ _| | | | _| |_ _ |_ _| |_| _| |_ _ _ _ | | | |_ _ | | _ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_|_ | | | | |_|_ _ _ _ | | | _ _|_ | _|_ _ _ _ _ _ _| _ _ _| |_ _| _ _| |_ _ | | |_ | |_ _ _| | | _ _ _| | _ _|_ |_| _ |_ | |_ |_ _|_ _| _ _ |_|_ | _ _| | _| _ _|_ | | | | _ _ _ _ | |_ _| _ _| | | _ | |_ | |_ |_ _ _ _| _ _| | _| | _ _ _| _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _| _| |_ _| | | | | | _| |_ |_|_ _ _| | _| _ _|_ _ | | | |_ _| |_| _ _| |_ |_ _ _| _ _ _| | |_ _ _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ _ _| |_ _|_ _ _ _ _| |_ _| _ |_ _|_ | | _ _| _ _| _ _|_ _ _ | |_ _ _ _| |_ _| _ _ |_ | |_ |_ |_| _ _ | |_ | | _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _| _ _ |_ |_| _| _| | | |_ _ _ _ _| |_| |_ _| |_| | |_| _ _ _| _| _| _|_ _ _| | | _| | | |_ _ | _ |_ _|_ | | _| |_ _| _| _|_ _| |_ _ _ _| |_ _ | _ _| | |_ _ |_ |_ _ _ _| |_ | _| _ |_ |_ |_ _ _ _| _|_| |_ _| _| | _|_ | | _ _|_| | |_ _ _ _ _ _ _ _| _ _| | | _ _| |_ _ _|_|_ |_ _| _ _ _ _ _ _|_ _ _ _|_ _ |_| |_| | |_ _| _|_ _| _| | | |_ _ | | _|_ _| |_| | _ _| |_ _ _ _| |_ _|_ _ | | _ _| | _ _ | | _| | |_ _|_ _| _| _| |_| _ _|_ _ | | | |_|_ | _| |_ _ _ _|_| | |_ _| | | | | _ | | |_ _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _|_ | _| |_ _ | _ _ _| _|_ | _| _ _|_ | _| _| |_ _ _ _ _|_ _ _ | |_ _ | | _ _ _| | | |_|_ _| |_ _ _| | |_ _ _ |_| | | |_|_ _| | | |_| |_| |_| |_ | | +| |_| |_ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _| _ _ _|_ |_ | _| |_ _ _ _| |_ | |_ | | _| _| |_ _ _| |_ | |_ _| _|_ | _|_ |_ _ | |_ _| | _|_ _ _ _| _ _ _| |_ _ |_ _ | _ _|_ _|_ | | _| |_ _ |_ | _ _ _ | |_ _ | _|_|_ _|_ | | _| |_ _| | |_ _ _ _ | | | |_ _ | |_ _ |_ | |_ _ _ | _ _ _ _ _| _| | | | | |_| |_ _ _|_|_ _ _ _| _ _ |_ _ | _ _| | | | |_|_ _ _|_ | _ _ _| _| | |_ _| _ _| | | | _|_ _ _|_ | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| _ _| _ _ |_ |_ _| |_ _ _| |_ | _| _|_ _ | _|_ _| _ |_| _| _ _|_ | |_ | _ _ _| _| | |_| |_ | |_ |_ _ _ _ _|_ _ _| _ | | _| |_ _ | | | _|_| | | | | |_ | |_ |_|_ _ | | | |_|_ | _|_ _ |_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ _ _| | _| _ _|_ _| |_ | _|_ _ _ _ _ | | _ _|_ | _ _ _|_ _ _ _|_ |_ _ _ | _| _ _ _| | _ _| |_ _ | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ | _ | _ _ _ | _|_ |_ _ _ _| |_ | | | |_ _ _ _ |_ _|_ _ | | | _ _| _| _| |_ _ _| |_ | | | |_ | |_ | _ _| | | _| | | | _ _| _| | | | |_ _ | | |_ _ _ _| _| _| | | |_ _ _ _ _ _ _|_ _ | _|_ | |_ |_ _ _ | |_ | | | _| _|_ | | |_|_ _| | |_| | | |_ |_ _ | _ _ _ _ | |_ | _ _| | |_| |_ | |_ _ |_ | |_ | _ _|_ _ |_| _| _ _|_ | | _ |_ _ |_|_ | _| _| _| _| | | _ _ _| | | | | | | | _ _|_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _|_ _ | | _ _ _| | | |_ _ _ _| |_ | |_ | | |_ | |_ _ _ _ _| _ _ |_ _ | _ _| | | _|_ _ _| _|_ | | _ _ _| | | |_ _ | _ |_ _| |_ _| | | | _| _|_| |_ _ _ _ _| |_ _ _ _ _| | |_ | |_| | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ |_ | | |_ _ |_ |_ |_ _ |_ _ _ _ _|_ | |_ _ | _ _ | | |_ _| |_|_ _ | _|_|_ _|_ | _ _| | _| _ |_ _ _ |_ | | |_ | | |_|_ | | _ _ _| |_ | +|_ | _ _| |_ _| | | | _|_|_ | | | _ _|_ _ _ | | |_| _|_ _ |_ _ _ _|_ _ |_ _ _| |_ | _ _| _|_ _| _| | | |_ |_ _| |_ _| |_ _ |_ _ | |_| |_ _ |_ _ |_ _ _ _| |_ _ _ | | | _| | _ _ _| | |_ |_ _ | _|_ | | |_ _| | _| | | _ _ | | |_ |_ _ | _ _ |_ |_ _| |_ _| _ _| | | _ _ | |_ _ | _ _| _| | _ _ _| _|_ _|_ _|_ |_ | _ _ _ | _ _ _| _| | |_| |_ | | _|_ | _ _ | | _ _ _| | | | _| | | | |_| |_| | _| |_ _| _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | |_ | |_ | _ |_ _ _ |_ _|_ _ _ _ _| | | _ _ _| | | _| |_ _ _ _ _| | _|_ _ |_ |_ _|_ | | _| |_ _ | _ |_ _ |_ _| | |_ _ _| | |_ |_ _ |_ _ | | | | | _ _ _ _ _ _|_ _| _|_ _ |_|_ _| | _| |_ | | _|_|_ | | | _ _| |_ _ _| | |_ |_ | _| | | _ | _ |_ | |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _ |_|_ _ _ _ |_ | |_ | | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_| | |_ _| | |_ _|_ | | | _| _ |_ |_ |_ _|_ _ |_ _| | _ _ _|_ _| | | | _ _|_| _| | | |_ |_ _| | |_ _ _ |_ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ | | | _| |_ _|_ _ |_ _ _ _ _ _| |_ | _ _ _ _ | |_ _| _ _| _|_ | _| | |_ _ _| |_ _|_ _ _ _ _|_ _ _| _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _| _| | _|_ _|_ | | _| |_ _ _ |_ _| _| | _| _ _| _| |_ _ _ _ _| |_| _| |_ |_ _ |_ | _|_ _| _| _|_|_ _ | | |_ _|_ _| _| |_| | |_ | _ _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| |_ _ | _|_| _|_ _ _ _ _|_ _|_ _ _ _| | | | _| | _ _ _| | | |_| |_ | |_ | _ _ |_ | |_ |_ _ | |_ | |_| |_ _ _ _ _| _ _ | |_ _| | | |_ _ | _ |_ _ _ | |_ _ _ _|_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | | |_ _ _ _ |_| _|_| |_ | | _ _ _|_ | | | |_ | |_ _ _|_ |_ |_ _ _ | |_ _ | | | |_ | | |_ _|_ _ _ _ _ _| |_ _| | _| | |_ _| | _ _| | +| _| | _ _| | _ _| | |_ _ _ _ _| |_ _| _ _ _ | |_ | | _| | _ _ _| _ _ |_ _ | _ _| | _| | | _| _ _ _| | |_| |_ _ | | | |_ | | |_ _ |_ _ | _ | |_ |_ _ | _ _| | _ _| _|_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| |_ _ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ |_| _ | _ _|_ _| _ _| | _ _|_| |_ _ |_ _ | |_ _ _ _ _ _ _ _ | |_ _| | |_ _ | | |_ _|_ | | _| |_ _ | |_ _|_ | | |_ _ | _| | | |_|_ _ _|_ _| | | _| _ _|_ _|_ | | | |_ _|_ | _|_|_ | | | _ _| _ | _| | | |_|_ _ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ _| |_ _ | _|_ _| _ | | _| | | | | | _|_ _ _ _ _ | | _ _ _ | _ _ _|_ _ _ _ _ |_| _ | | |_ |_ _ | _|_ _ _ _| | | _ _|_ |_ | | | _| |_ _ |_| |_ | |_ _ _| _ _ | |_ _ _ |_ _ | |_| _| | _ |_ _|_ _ _ _| |_ _| | |_ _ _ _ | | _| _|_ _ _| |_ | | |_ _ | | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ _ | | | _| | _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| | | _| _ |_ _|_ _ _ _ _| | |_| _| _ _|_ |_ _ | |_ _ | |_ | | | _|_ _| | _ _ _|_ | |_| |_ _ | | |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | |_ |_ _ _ | |_ _ | _| _ |_ | |_ _ | | _| |_ _ | |_ _ _ _ _| | _|_ _ _ _| | | _ | _ _ _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ _|_ _ | | |_ |_ _ | _ _ _ | _| | _| | |_ |_ _ _ _ _ _|_ _ _ _ | |_ |_ | _ _ _| _| _| | | | | | _|_ | |_ | |_ _ | _| |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| |_ _| |_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | |_ _ _|_ _ | | | |_ _|_ | | _| |_ _| | |_ _ _| _|_ _| | |_ _| | |_ _ _| _ _ _ |_| |_|_ | | |_| |_ _| _ _|_ |_ _ _|_ _|_ _ | | _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| | _| _ _ _| _ _ |_ _ | _ _| | _| _|_ | | | |_ _|_ _ _| | | _ _ _ | _ _|_ _ _ _ _|_ | |_| | _| |_|_ _ _ |_ _| _ |_ |_ _ _|_| _| | | _ _| | | _ _| +| |_| |_ | | |_ _ _ _| | _ _ _ _ _|_ _| _|_ _| |_ _| | | _ _ _|_ | | |_| |_ | | _ _| |_ |_ _ | _|_|_ | |_ _ _| | | |_ |_ _|_|_ |_ | | |_| _|_ _ | |_ _ _ | | | _ _| | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _| _|_ | _ _ _| _ _|_ | | |_ _ | | _| | _ _ _| _ _ |_ _ | _ _| | _| | | |_ _ | | |_ |_ _ | |_ _ |_ | | _| | |_ _| |_ | _ _ _| | | |_ _| _ _ _ |_ _|_ _ _| | |_|_ _ _ _ _| |_ _| _| _|_| | | | |_| _ _| | _ _| _|_|_ | | | _ _| _ _ _ _| | | _ _ _ _|_ |_ _| | |_ _| | _| _| |_ _| |_ _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _| _| |_|_ | | _ _|_| |_ _ _|_ _| _ | |_ |_| | |_ | | | _|_ | |_ _|_ | _ _| | _| |_ _ | _ _ _| | | _ _ _|_ _| _ _ _ _| | | _ _ _ _| | _ _ _ _| |_| _|_ _ _ |_ _| | |_ | |_ | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| | | |_ _| |_ | |_ | | _| | | |_ _|_ | _| _ _ _ | | |_ _ | | |_ _ _| |_ _ _ |_ _ _| | _| |_ _ _ _ _| | _| | _ _| |_ |_| |_ _| |_ _ _ _ |_ _ | _|_ | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| _| | | | |_ _ _| |_| _| _ _|_ | _| | |_ _ _|_ | | _ |_ _ |_ |_ _ _ | |_ _|_ _| _|_ _ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | _ _ _| | |_|_ | | _ _|_| |_ _| |_ |_ _ _| |_ | |_ | | _ _ _ _ | |_ _ _ | |_ _|_ _ | | _ _| | | _|_ _| |_ _| |_| _ _| _ _| | _ _|_ _ _| | |_ _ _ | _|_|_ | | | _ _| _ _ _ | | | | |_ _ | _| | | | |_ _| _ | | _| |_ _ | |_| _ _| | _|_ _ | | |_ |_ _ | _|_ | |_ _ _ _| _|_ _ _ _| | _ _ _ _ _ |_ _ _|_ _ _ _ _|_ _| _ _| | _| | _ _ | |_ _| | | _| | _| | | |_ _|_ | |_ _| _ | | |_ _ | | | | _ _ _| | | |_| |_ | | |_ _| _ _| _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ | |_ |_ _ | _ _| | _| _ _|_ | _ _ _| |_ | | | | | | | +| |_ | | _| |_ _ | _ _| |_ _ _| | | _| _| _ |_ |_ | | |_ _ | _|_ _|_ | | _| |_ _ _ | _ _ _| | _ _ | |_| | _| |_| | |_ _ _ _ | | | _|_ _ |_ | | _| |_ _| | | | |_ | _|_ _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ |_ _ | | | | _ _ _| | _ _| |_ _| _ _|_ | _| | _ _ _| | | |_| |_ | | |_| _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_|_ | _|_ _ _ _ |_ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _ _| _ _ _ _| | _| _ _|_| |_ |_ | |_ | | |_| |_ _ _ _ _| |_ _| |_ _| _ _ | | | | _ _| |_|_ | | _ |_| _| _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ | _ _|_ | | |_ _ | |_ |_ _| _ _ _| |_ _|_ _| _ _| | | | | |_ _ _|_ | |_ | | |_ _ _| _ _ |_ _ | _ _| | | | | _| _| _ |_ |_ |_ _ |_| | |_| |_|_ | | | |_ _|_ | _|_|_ | | | _ _| _ | _ | |_ _ _ _| |_ _| | |_ | |_ |_ _|_ _ _| |_ _|_ _ _ _ _| | _|_ | |_ _|_ _ |_ _| _| _ _ | | | _|_| | | |_ | _ _ _ _|_ |_| | _ _| | _| | _ _ _ | _| _| | |_| | |_| | _| |_| | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| |_ | |_ |_| |_| _| _ | _| |_ _ _ _ _| | _| _ _ _ | | |_ |_ _ |_ | _ _ _|_ _|_ _ | | _ _| | _ _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | _ | _|_ |_ _|_ | _ _|_ | | |_ _ | |_ | _ _| _|_ | |_| _ | | _| |_ _ | | | | _ _| | | | | _|_|_ _ _ |_ | |_ | | | _| _ _|_ _ _| _ |_ |_ _ |_ _|_ _ _ _ _| |_ _| _| |_ | _ _| | |_| |_ _| _ _| | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _ _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | |_|_ _ | |_| | _|_ _|_ | _|_| |_ _|_ _ _| |_ _|_ _ _ _ _| | _ _| |_ _|_ _|_ _ |_ _| _|_ _ |_ | |_ _|_ | | _| |_ _ | | _| | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | _ _|_| |_|_ | |_ _ _ _ _|_ |_ _ _ _ | | |_| | _| | | +| | | |_ |_ _ | _ _ |_ _ _| _ _|_ _| | _| _| _ _|_ |_| |_ _| | |_| _| | |_ |_ _ | _|_ | _|_ _ _|_ _ |_| |_ _ _ _ |_ _ _ _ _ _ _|_| | |_ _ _| |_ _ | _ _| | | |_ _ _| |_ | _ | _ | _|_ _ |_ _ _ _| _ _| _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ | | |_ | |_|_ _ | _|_ _ _ _| _ _| _ _| |_ _ |_ _ | | | |_ _|_ | | _| |_ _ _ _ _ | | |_ | _ _|_ | | |_ _ | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ |_ _ _ | _| | _|_ _| _ |_ |_| _| | _| |_ _ |_ _ | _ _ _ _ _|_ _ | |_ _ _| |_| |_ _| | | |_ _ | | | |_| _| |_ _ _| | | _|_ |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ |_ _| | _ _| |_ _| _ _|_| |_ | | |_ _| _ |_ |_| _ _|_ _| | |_| |_| | | | | | | _| |_ _| _ _ _|_ | | |_| |_ | | _|_| | | | _| _| _ _|_ | |_ _ |_ _ | |_ | |_ | _| |_| |_ _ | |_ _ _ _ _| |_ _|_ _| _|_ _| | | _ _| | |_ _| _| _ _|_ _ _ _ _| | _ _ | _ | |_ _ |_|_ _ _| _ |_ _ |_ | | | |_ |_ | _ _|_ _|_ | _|_ |_ _ _ _ _| |_ |_ |_|_ _ | | |_ _|_ | | _|_ _ _|_ _ |_| |_ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | | | |_ |_ _ | _| |_ |_| |_ | |_ | | _ _ | _| | | | _ _| | | | | | _ | |_ _| |_ | | _|_ | _| | | |_ _|_ | |_ _ _ | | |_ _| _| | |_ |_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ _| _| _ _|_ |_ _| | |_ _ _|_ | | | |_ _ _| | _|_ _ _|_ _ _ _ _ _ _ _| _ _ _|_ _ _|_ _ | _ _ _| |_ |_ | |_ _ _ _ _ _ _ |_ _| _| |_ _ _| |_ _| _ _| _| | | | | _|_|_ | | | _ _|_ _ _ _ | | | |_| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ |_ _| | _| | _ _ _ |_ _ _ | _ _ | | _ _ | | _ _ _| | _| _ _ _ |_ _ | |_ _| | _|_ _ _| | |_ |_ _ | _|_ | | | |_ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _|_ | | |_ _ | | | _| | _ _ _ |_| |_ | |_ _ _|_| +| | |_|_ | | _ _|_| |_ _ _ |_ | _ _| | _| |_ _ _ _ _| _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | _ _ _| _| | _| | |_ _ _ _ _ _ _| | | |_ | |_|_ | | _ _ | | | |_ _| _ _| _| | | |_ _|_ |_ _| _ _ | | |_ _| _| |_| | | _|_ _| | | _ _ | | |_ _ | |_ |_ _| | | |_ _| | |_ |_ _ | _ _ _ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ _ _ |_ _| _| | | | _| _| _ _|_ |_ | |_ |_ _ | _ _| _|_ |_ _ | | _ _| _ |_ |_ |_ _| |_ _| _ _| | | |_ |_ _ _ _| _|_ _| |_ | _|_ | _|_|_ | | | _ _| |_ _ | | | | | |_ _ _ |_ _ _ _| _ _| _ _ _| | |_|_ |_| _| _ _|_ | |_ _| |_ _ | | _| _| |_ _| |_| | | |_ |_ _ |_ _ | | |_ _|_ | | _| |_ _ | | | |_| _| |_ _ _ _ _| |_ |_ _ |_|_ | |_ _|_ _| _| _| | _| |_ | | | _ | _|_ | _ _ _| |_| | _|_| | |_ _ _| _ _ | |_ |_ _| | |_ _|_ _ _ _| _ | | | | _ _| | | |_| | |_ _ _| | | _ _ | _|_ _ _ _ |_ _ _ _| | | | _| | _|_ _|_ _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | |_ _ _|_ |_ _|_ _ | |_ |_ | | |_| |_ | | |_ _ _| |_ _ _| |_ | _ _| | |_ _|_ _ _| | |_ | _|_ _| | | _| |_ _ _| |_ _|_ _ _ _ _| |_ _ |_ _| |_ _|_ _ |_ _ _ _|_ | |_ | _ |_ _ _ _| _ _| _|_ | | _ _ _| _| | | | _ _| _ | _ _| | _| _ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ _| _| _| _ _| _ _| _ _|_ |_ _ _| |_| _ |_ |_ | | |_ _ |_| | |_ _ _ _ _| |_ _| _ _ _ _ _ _| | | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _|_| _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ _ | | | _|_ _ | _| | _| | | | |_ _| _| |_ _ _ _ _ _| | _| _| _| _ _| |_ | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | | | | | |_ _ | _|_|_ | | | _ _| _ _ | | | _| | _ _| |_ _| _ _|_ _| |_ _| | |_ _ _ _|_ |_ | |_ _ _ _ | +| |_ | _ _|_ | | |_ _ | |_ | | |_ _ | | |_ _| _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_|_ | | | | | | |_ _ _ _| _ _ _ _|_ _ _|_ _ _| | | | |_ |_ _|_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| |_ _|_ | |_ _|_ _ |_ _ _ _|_ _| |_| | _|_ _|_ _ |_|_ _|_ _ |_ _ _ _| _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | _| | |_ _ _ _| _ _| _|_ | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | _ _ | | |_ _ _| | | _| |_ _ _ _ _| _|_ | | _ _|_| |_ _ |_ _| | |_| _| _| _ _|_ | _ _ _| _ _| _| | |_ _|_ _ _ _| |_ | _ _|_ _ _| | _ _| |_ _ _ _ _| |_ _|_ _ | | _ _| | | |_ _ _ | _| _ _ | | |_ _ |_ _ _ _ | _| |_ _ _ _ _| | | |_ _ | | |_ _ _| | _| _ _|_| |_ | | _| | |_ _ _ _| | |_ |_ _ | _|_| | |_ | | |_ | _ _| | _ _| | _ _ |_ _ _| |_ _ _| | | |_ _| _|_ |_ _ | _| _ |_ |_| _ _ _ _|_ _ _ | _| | _| |_ _ | |_| |_ _ _ _ | |_ _| _|_ _ _| | _ _| |_|_ | |_ _ _ _ _| |_ _|_ | | | _ _| _| _ _| _| | | _| |_ _ _ | _ _ _| _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _| _ _| _ _ _ _ _|_ _ _ _|_ _ _| | | |_ _ | _| _ |_ |_| | _|_ | _ | _| | | |_ _ _ _ | |_ _ _ _ _ _| |_ |_ _ | |_ | | | _ _ |_ _ | | _ _|_|_ |_ _| _|_ _ _ | | |_ _ | | |_ _ | | |_ _| |_ _| | | _|_ _ | | | _| | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _ | _ |_ | _ _ _ _ _ _ _ _ |_| _| _ _|_ | |_ _|_ _ |_ _ _| |_ _ _ |_ _ | _ _ _ _| |_ |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ | | _ _ _| |_ _| _ | _|_|_ | | | _ _| _ | | | | _| | _ _| | | | _ _| |_ _ _| | | _| |_| |_ _ _| |_ _ _ _ | |_ _ _|_ | | _| _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| | _ _| | |_ _ _ _ _| |_ _| _ | _ _| | | |_ _ |_ _ _ _| _ _| _ _ _|_ |_ _| | _ _ _ _ |_ _ _ | _ _| | +| | |_ _| | _ _| |_ _| _ _| _ _| | |_ |_ _|_ | _ _| | | _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| | _ _| |_ _ _| |_| | |_ _ _ _| _| _ _ _ _ | |_ _ | |_ _| |_ | |_ _ |_ _ | | | | _ _ | | _|_ _ _ | |_ | | |_ _ | | _ _ _ _|_ |_ _ _ _ | |_ _ _ _ _|_ _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ | _| | | |_ _ |_ _| |_ _ _ _| | | | _|_|_ | | | _ _| _ | _| | | _|_ | | _ _|_| |_ _| | _ |_ | |_ _ _ | _ _ | _ _|_ | | |_ _ |_ | | _| | | _| |_ _ _ _ _| |_ _ | | |_ _ |_ _ _ _ | _ _| | _| | _ _| _ _ _| _ _| | _ | _ _ _| | |_ _ _| |_ |_ _|_ | _ |_|_ _|_ _ |_|_ |_ | | |_ | _ _ _ _| |_ _| _ _|_| _ _| | |_ _| _ |_ |_| | | | | _|_ _ _ _ | |_|_ | | _ _|_| |_|_ _ | | | |_ _|_ | | | _ _| |_ _|_ _ | | _ _ |_ | | | | _| |_ | | |_| _| _ _|_ |_| _ _ | |_ _| | |_ _ _|_ | | |_ _ _ |_ | _| |_ _ | | _ _ _ |_ | | | _ _ _ _ _ | |_ _ _| | | | | _| _ _| _ _ _ _| |_ _ | |_ | |_ _ _ _ _ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| _| | _| _ _|_ | | | | _| | | |_ _ _ _|_ _ _| _|_ _ | _ _ _ _ _ _|_ _ _| _| | _| | | |_| _| | _ _| | _|_ _ |_ | |_ _ _ | |_ _|_ _ |_ _|_ _| | _|_ _ |_ _ | | |_ _ _ _| |_| |_ _ _ _|_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _| | |_ |_ | | _ _ _ _| |_ | | _| |_ _ _ _ _|_ _ | |_ _ | _| _ _|_| | | |_| | _| _ |_ |_| | _| | | |_ _|_ |_ _| | _ | | |_ _| _|_| _ _ _ _| |_| _|_ _ _ _ _| |_ _|_ _ _|_ _| | | |_ _ _| | _ _| | |_ | | |_ _ _ _| | | | |_ _ _ _ _|_ _ | _| |_ _ | | | | | |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ | _| |_ _ _ _ | _ _| | |_ _ _|_| |_ |_ _ _ | | | |_ _ _| _ _ _|_| |_ _| |_ _ _| | _ | +| | |_ |_ _ _ _| _ _| | _| _ _|_ _ | _| _| |_ | |_| | | _|_ | |_ _ _ _| _|_ _ |_ _ _ _| _ _| _| | |_ _ _ _ | _|_|_ | | | _ _| _| _ _| | _| | _| _ |_ | |_ _ _ _ |_ |_ _ | | _| |_ _ | | | |_ |_ _| _ _|_ | | |_| | |_|_ _| | |_ _|_ _ | | | | |_ _| |_ _ | | |_ _ _| |_ | _ |_ _|_ _ | | _ _ |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ | |_ _| |_ _|_ _ |_ _ |_ _ | | _ _| | |_ _ _ _ _| |_ _| _ _| _| | _| | | _ _|_ | | |_ _ | _ _|_ | |_ |_ | | |_ | |_ _| | _ _| |_ _| _ _| _| | | _|_ _| | |_ _ | |_ _ _ |_ _|_ _ |_ _ _ _|_ _| |_ _| _| _ _ _ _| | |_ _ |_| | _| | | |_ | _ _| _ |_ |_| _ _ _ _|_ _|_ _ _| |_ _ |_ | |_ _|_ | | |_ |_ _ _ _| _ _| | _| | _ _|_ |_| _| _ _|_ | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_|_ _| _ |_ |_ | _| _| _ _ _|_ _| |_ _| |_ _|_| |_| _| _| |_ _ _| | _| |_ _ _ _ _| _| | _| |_ _ | | |_ _ _ _ _| | _ |_ _ _ |_ _ _| _| | |_ _ | _| | | _|_ _ _| _ _ |_ _ | _ _| |_ _| |_ _ _|_ _ _ | | _ _|_| |_| |_ _ |_ _ _ _ | |_ _| _| |_ | | _|_|_ | | | _ _|_ _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _| |_ _ _ _ _| | |_| _| _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | | |_ _ _| | _| _ _| | _ _ _|_ _ _| _ _| |_ _ | | |_ _ | _| _|_ _ _ _| _ | |_| |_ |_| _ |_ |_ | _| _ _ _| _ _ | _|_|_ | | | _ _| | _ | | | | | _ _| | |_ _ | | |_| _ _ _ _|_ |_ | |_ | _ _ | | _| |_ _ _| | |_ _| _ _ _| |_ _|_ | |_| _| _ _|_ | |_ _ _| |_ _|_ _ _ _ _| _ _| |_| |_ _|_ _ |_ _ _| _ _ _ _|_ |_ _ _ _| _ _ |_ _| _ _|_| |_ | |_ | |_ |_| | | | | _ _| | _| | _ _ | |_ |_|_ _ _| | | |_ _| _| | | _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _|_ |_ _ _ | | |_ | _ |_| _| _ | | _| _ |_ |_ | _| |_ _|_ _ |_|_ _| _ _ _ _|_ |_ | |_ _ | _|_ |_| +|_ _|_ | _ _ _| | |_ _| _| |_ _ _ _| _|_ | |_ _ _ _| _ _ _|_ _ _ _ _ _ | _ | _ | | | |_ _ | |_ | | _ |_ _ _ _ _| |_ _| |_ _ _ _|_ | | |_ _|_ _| _| _ _|_ | |_ |_ |_ _| | |_ _ _|_ | | | |_| | _| _|_ | _| |_ _ _|_ _ _ |_|_ _ _ _ _|_|_ _ _|_ _ |_ _ _| |_| _| _ _|_ _ _|_ |_ _ _ _|_ _| | | |_ |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| _ _ _|_ |_ _| |_ _ |_ _ |_ _ | | |_ | |_ | _ | _ _| |_ _ | _|_ _| |_| _| | _ _| |_ _| _ _| | | |_| _| _| _| _|_ _ |_ _ _ _| _ _| _| | | |_ _| _ _ _|_ | |_ _| | _|_ | |_ _ | | _ _ _ _|_ | |_ _ _ | _ _| |_ _ | | _| | _| |_ | | _| _| _ _|_ | |_ _ _ _ | |_ _ _| _ _| | _|_ _| _|_ _ | _ _ _ | | | _| | _| | | _| _| |_ _ _ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | | _| _ _| | | | |_ _ _ | _ _ _ _|_ | | _ |_ |_ _| | |_ _ _ | | |_ _ _ | _ _| |_ _ _| _| | |_ _| |_ _ | | | |_ _ | _| _ _ _ | |_ _| |_ _ | |_ | _ _ _| | | |_| |_ | | _|_ _ _ _ | |_ _| _ _ _ _|_ |_ | | | _| |_ _ | |_ _ | | |_ _ _ _ _| |_ _|_ _ |_ |_ | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | _ _ _ _ | |_ | |_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | |_ |_ | | |_ | |_ _| _ _ | _ _| _ _| | _| |_ _| _ _| | |_ _ _ | |_ _| | | _| _| _| _ _|_ | | |_ _|_ | _ _| _| |_ _ _ _ _| |_ _| | | |_ _| | | | | | | |_ | | | |_| |_ |_ _ _| |_ | |_ | | | | |_ _|_ |_ | _ _| _ _ _ _| |_ | |_ | _| |_ _ _ _ _| _ | | | _ _ | | | |_ _ _|_ _ _ | |_ _ |_ |_ _ _| |_ | | | _ _| _ _|_ | |_| _ |_ |_| |_ | | |_ _|_ | | |_| |_ _ _ _| |_ | | | _ _| _ _|_ _ _ _ _ _| | |_ | |_ | | | |_| _| | | |_ _|_ | _| _ _ _ | | |_ _ |_ | |_ _ _| | | _| |_ | |_ _ | | |_| _| _ _|_ | |_| | _ _| _|_ _ |_ |_ _ _| |_ |_ _|_ | |_ | |_ | +| | | |_ _ _|_ |_ _|_ _ |_ _ _|_ | _ _ _| |_ _|_ _| _ | | | _ _ _ _ | |_ _| | | | | | |_ _|_ _ |_ _| _| |_ |_| | | _ _ _| | | _ _ _| |_ _ | _| |_ _ _ _ _| |_ _ | _| _| _| _ _ _ | | |_ | | |_ _|_ | | |_ _ _ | _| |_| _ _| | _ _ _ _ | |_ _ | _ _| _ _| | | | _|_ | |_ _ _| _|_|_ | _| | _| | | |_ _|_ |_ _|_ _ _ _ | | |_ _ |_ | _ | | _ _|_ _ | _ _| | _ | |_ | | | |_| | | |_ _ _|_ _ | _| _ |_ |_ | |_ _ _ _| _ _| _ _| |_ _|_| _| | |_ _|_ | _ _| | _ _ | | |_ _ | | |_ _ _ _ _| |_ |_| | | |_ _|_ _| |_ _ | | |_ _ _| |_| |_ _ |_ | | _| | _|_ |_ | |_| _ _ _| |_| _| |_ _ _ _ _| | _ _| | _| |_ _ | _| _ _| |_ _| _ _ _ | _| | | |_ _| |_ | |_ _|_ |_|_ | |_ _ _ _ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| _ _|_| | _| _ _ _| | |_ _ | _|_ _ _| |_| |_ _| _ _|_ | _|_ _|_ |_ | |_ _ | | _| | _ _ |_ | | | | |_ _ | | |_ _ _ | |_ _| | _ | | | _| |_ _ |_ |_|_ _ | | | |_ _|_ | | _| |_ _ _| _| |_ _ |_ _ _| |_ |_| | |_| | |_ _ _|_ | | | |_ _ |_ | _ _ _ | _ _|_ _|_ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | | _| |_| | | |_ _| _|_ _ _| _ |_| _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _|_ |_ | |_ _| _| | _ _ _ _ _| _| | |_ | |_ |_ | | _ |_|_ _ _ |_ _|_ _ _|_ _ _| | _| |_ _ _ _ _|_|_ _ _ | | | |_ _ _ | _ _ | | _|_ _| | _ _|_| |_| |_| | _| |_ _|_ | | _| _| _ _|_ _ |_| _| _|_ _|_ _ _ _ _| _|_ | | | _ _ _ _|_ |_ _| | | | |_ _| | _| _| |_ _| _| |_ _|_ _|_ _ |_| | _|_ _ | | |_ _| _| _ _|_ _ _|_| | | | _ _| | _ _| |_| _| _ _|_ | _| | |_ _ _ _ _|_ _ _| _ |_ |_| _| | | | _ _ _ _ | |_ _ _ _| | _|_| |_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _ _| _ _ _| _|_ _| | | | _ _ _|_| | _| |_ _ _ _ _| | _| | _ _|_ _ | |_ _| _| _ _|_ _ _|_ _ | | |_ | | +| |_ _|_ _ _ | |_ _ _ |_ _ | | |_ _ | |_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_ _ _ |_ |_ _ |_ |_ |_ | |_ _| |_ _|_ |_ _| _| _ |_ |_| _| |_ _ _ _ _ _| |_|_ |_ | | | |_ | _ _| |_ | |_ _ _ _ _ _| |_| _ _ _| | |_ _ _|_ _ _|_ _ _|_ _ | | _| |_ _ | |_ _ |_ | _| | | |_ _| | |_ _ |_ |_ _ _ _ _| _ _|_ _ _| |_ _|_ _ _ _ _| _ _ _ _ | |_ _|_ _ |_ _ _|_ | |_ _|_ | _| | _ _| | _|_ |_| | |_|_ | |_|_ | _ | _ _|_| _| _ _|_ | |_ _ _ _ | | |_ _| _| _ _ _| | _|_ _ _ _ _| | _| | | _|_ _|_ _ |_ _|_ | _ _ _ _|_ |_ | | | |_ | _ _| |_ _ _| |_| _| _ _| _ _| | |_| |_ | |_ _ _ _| _|_ _ _| | | |_ | _| _ _| | | |_ _ _|_ | | |_ | _|_ _ _ _| |_ |_| _| |_ _ _ _|_ |_|_ | _ _| | |_ | | _|_ _| | _| | | |_ _|_ | |_ _ _ _ _| | |_ _ |_ _ | |_| _| | _| | | |_ _| _| _ _| _ _| | _ _ _ _|_ |_| _ _ _| _|_ _ |_ _| _ _|_ |_ | | | | |_ _| _ _| |_ |_ _|_ _ _ _| |_ _ _| |_ | | | |_| _| _| |_ _|_ _ | | |_ |_ _ | |_ _ _ _ _|_ | | _| _ _|_ _ _| _|_ | |_ _ | | | _|_ _ |_ _ _| |_ _ |_ _ _| _ _ _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_|_ |_ _ _| |_ _|_ _ _| | _ _ _| |_ |_ | | |_ | _|_|_ | | | _ _|_ _ _| | |_ |_ _|_ | |_ _ | | |_ | _ _ |_| _| | | _| | _ _| | |_|_ |_| _ _ |_ _ _ _| | _ | | |_ _ |_ _ _ | |_ _| _|_ _ |_ _ _| | |_ _|_ _ _ | _| _ |_ |_ | |_ |_ _ | _ _| | _ _| | _ _ _ _| _| _| _ | |_ _ _ _ | | _|_ _ _| |_ | _|_ |_ | _ _|_ _|_ |_ _ | | _ |_ _ _ _ | |_ _ | |_ | _| |_ | _ _| | _ _ | |_| | | |_ _ _ | | _| |_ _ _ _ _|_ | |_ |_ _ _| _ _ |_| _| _ _|_ | | _| |_| |_ _ | | _| |_ _ | _ | | _ _|_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | |_ _ | _|_ _ _| | |_| _ _ _ | |_ _ _ _ _ | | _| | | _ _|_|_ | _ _| | _ _ _ _ _ | | | | _ _| | | +| | _| |_ _|_ _ | _ _| | | |_ _| |_| |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | | _| _ _ _| | |_ _ _|_ _ | |_ _ _| | _ |_| _| _ _|_ |_ |_ | |_ _ | _ _ _|_ _ |_ | | |_ _| |_ _ _| |_ _| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | |_ _ _| | | |_ | _| |_ |_ _|_ _ _| |_ _ |_ |_ _ _ _ _| |_ _ _ _ | | _ _ | | _| |_ _ _ _ |_ _|_ _ | | _|_ _ _ _| |_ _ |_ | _| _| _| _| | | | | _ _ _|_ _|_ _ | _| |_ _ _ _ _|_ _ | | |_ _|_ _ |_ _ _ _ | _| |_ _ _ |_ _| |_ _ _| | | _ _ |_ _ | | |_ _ _| |_ | | _| | _| _ |_ | | _ _| _ _| | _ _| _ _| | |_ | _ _|_ _ _ _ _ _| | | _| |_| |_ | |_ _| _| | | |_ _ _ _ | | |_| | | | | _ _ _ _|_ |_ _ _| |_ _ _ | |_ _ |_ | | _| _| _| |_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _|_ _ _ |_ _ |_ _|_ _ |_ _ | | |_| _| _| | | |_ _| |_ | _ _| | _| | _ _| |_ | _ _ |_|_ |_ _ _| _| _ _ _| | _ _ _ _|_ |_ _|_| |_ | _ _| _ _|_ |_ _ | | _| _ |_ |_| |_| |_ |_ _ _|_ _ _ _ _ _ _ | |_|_ | | _ _|_| |_ _ _ | | _| | _ _ _ _| |_ _| _ _|_| | | |_ |_ |_ _ _ | | |_ | | _| _| _| _ _|_ | |_ |_ _| | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_ | _ _|_ _ _ | |_|_ _ _ _ | | _| _| | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | _ _|_ _ _ _ _| | _| | |_ | |_ | _| _| _| |_ | |_ _ _ _| | _ _| | | |_| _ _| | | | | |_ | | _| _| | _| |_ _ |_ _ | |_ _ | _|_|_ _ _ _ | |_| _| _ _|_ | |_ | | _ _|_| |_ _ _| _|_ | _ _ _| | | _ | |_| |_ _ _ | | |_ _| _| _ _|_ _ _|_ _ |_| _| |_ | _ _| |_ _| | | _ | | _| |_ _ |_|_ | |_| | | _|_ | _|_| _ |_ _| | _|_ _|_ _ |_ _ _| |_ |_ _ _ | _| _| _ _ _|_ | | _| |_ _ _ _ _|_|_ | _ _| _| | |_ _ _| _| | | |_ _| |_ _| |_ | |_ _| _| |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_ _ _ _| | | | |_ | _ | _|_ |_ _| |_ | | | | _ _|_|_ _ _ | _|_ | _|_ _ | _ _ _|_| |_ _| | | +| | |_ _ _| |_ _ |_ _| | _ _| |_ _ | _| _| _ _| _|_|_ | | | _ _| _ _ |_ | | | |_| | |_ _|_ _ | _ |_ _ _| _ _ |_ _ | _ _| | _| | _| |_ _ _ _ _| _| _|_| | | | | | | |_ _|_ _ | |_| _ |_ |_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | |_ | |_ _ _ _|_ _ |_ | | | _ _ _ _ | _| _ |_ _ _ _ _|_ _| | |_ _|_ _ _|_ | |_ _ |_ _ _| | _|_ _ |_ _ |_ _ |_ | | |_ _| _| _|_ _| | |_ _ _| _ _ | | | |_ _ _ _ _ |_ |_ _|_ _ | | |_ _ | _| | |_ |_ | | | _ _| _| | |_| _ _|_ | | |_ _| _| _ _|_ _ _| | _|_ |_ _ _|_ | _|_ _ |_ | _|_ | | |_ | | _|_ _| _ _ |_ _ | _ _| |_| | |_ _| _| _ |_ _ _|_ _|_ _ | _ _ _|_| | _| | |_ |_ _ _| |_ |_ _ _ _|_ _|_ _ |_ |_ _| |_ _| _| | |_ |_ _ |_ _| | | _ _ | | _ | | _| | | |_ _ | _| |_ | |_ _ _| _ _ _| _|_ | _|_ | | |_ | | | |_ | _| _ | _ _ _| |_ _ | _| _ _ _ _| _ |_ |_| | |_|_ _ _ _| _| | | |_| _| _ _|_ | | _| | | _ _ _ _ | |_ _ |_ | _ _|_ | | |_ _ | _|_| | | _|_| _ _ _|_ | |_ | |_ _ _|_| |_ _ | _ | |_ _| |_| _| |_ _ | _| |_ _ _ _ _| _|_ |_ |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_| |_| | _ _ |_ _|_ _ | | _ _|_ | | _|_ |_ _ _ _ | _ _ _ _ |_ _ _|_| |_| _ | _ | _|_ |_| | _|_ _| | | _| |_ |_ | |_ |_ | _ _| |_ _ _ _| |_ _|_ | |_ | | | _ _| _| |_ _ _| _|_ _ _| | | | | _ _| | _ _ _ _ | _| | | _| |_ _ _ _ _| | _ _|_ | | |_ _ | _| | |_ _ | _| |_ _| | | _| _| | |_|_ | _ _| | _ _ _ _ _ _| _| | | _|_| | | |_ _ _ _|_ |_ |_ _ _|_ | | _ _| | _|_| |_ _| |_ _ |_ _| | | |_ | _ |_ _ _ |_ | |_ _ | | | |_ _|_ _ _ _ | _|_ _ _ _ _ _ _ _ _ _ _| |_ _ | _|_ _ |_ | | | _ _ | _ _|_ _ _|_ | _ |_ _ _ _ | |_|_ _ _ _ _| | _ _|_ | | _| | | | | |_ | |_ _| | _| _| _ _| _ _|_| |_ _| _ | | |_ _| |_ _ |_ _| |_ _| _ |_ |_| _| | +| | |_ | _|_ _ _ | _ _|_ | _ |_ _|_ _|_ _ _ |_ _ _ _|_ _ _| _ _| _ _| | | |_ _ |_ | _ |_ |_| _ _ _| _| | |_| |_ | | | _| |_ _ _ _ _ | | _| _ _| |_ _ _| |_ _| | |_| _ _ _|_ _| _ _|_ | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | | | | _ _| _ _ | |_|_ | _|_ _| _ _ |_|_ | | |_ _ _| | _ _ _ _| |_ _ _ _ | |_ _| _ |_ _ _| _ _|_ _ _ | _ |_ | _ _| | |_ _ _ _ _| |_ | |_ | _ _| | _| |_ |_ |_ _ |_ _ _| _ _|_ _| | _ _| | | _|_|_ _ _ _ _| _ _|_ _ | _|_ _ _ _|_ _ _ | |_ | _ _| | _ _ _ | |_| |_ _ _ _ _ _|_ _ _ |_ | |_ |_ _ _| | | |_| _ _ _| | | |_| |_ | | _|_ _ _| _|_ _ |_ _ | _ _ _| | _ _ | |_ |_|_ |_| _| _ _|_ _ _| _|_| _ _ _ _ _| _ _| | _ _ _| _ _ _ _ _|_ | _| |_ _| | |_ _ _|_ _|_ | _| |_|_ _| _ _| | |_ _|_ _ _|_ _ _ |_ _ _ |_ _| |_ _ |_ _| | | |_ _ _ _| |_ | | |_ _ | _|_ _ |_ _ |_ _ | _| _| _ _|_ | _|_ _ |_ _ _ |_ |_ | | _| |_ _ _ _ _|_ _ _ _| |_ _ | | _| |_ _ | | |_ _| | _ _| |_ _| _ _| | | |_| _ | | | _|_ _ | | _| _ |_ |_ _ _| _| _ _| _|_ | | | |_ _ _ | _ _ _ _| _ _ | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | |_|_ | _ _ _ | |_ _| |_| _ _ _|_ | _ _| | | _| |_ _ _| | _| _ |_ |_ | | | | |_ _ _ _ _ |_ | _ _|_ | _ _|_ _ _ _ _|_ |_| |_ | | | _| |_ | | | _| | |_ _| _|_ _ | _ _ _ _ _|_| |_| |_ | _ _| _ _| | |_ _ _| | |_ | _ | _| | _ _| |_ _| _ _| |_ |_ _| _| | | _| _ _| | | _|_ | |_ | |_ | _|_ | _ _| _ _ _| | | | _| |_ _| |_| | _| _|_ _ _ | | | | | |_ _ |_ | | |_ _ |_| |_ _| _|_| |_ _ _ _ |_ _ _ _| |_ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ | | | _ | |_ | | | |_| _| | _ _ _ | |_ |_ _ _ | _| |_ _ | | | _ |_ | _ _| | |_ _ _| |_| | |_|_ _ _|_| _| _| | _| _ |_ |_| _| |_ _|_ _ |_ | | _|_ _ |_ | _| _ _|_ |_ | | +| _| | | | _ _ _|_ _ | | | _|_ _ _ _| _ _ |_ _ _ _| | _ |_ | | _ _|_| |_ | | _|_|_ | | |_ |_ _ | _ |_ _|_ | | _| |_|_ |_ |_ |_ _| | _|_ |_ |_ _ _ |_ | |_ | _| |_| |_ _| _ _ _ _ _|_ _| |_| _| _|_|_ | | | _ _|_ _ _ _| | |_| |_ _| |_ _|_| |_ | _| | _| |_ _ | | | _ _ _| _| | |_ _ _| | _ _| |_ | _ _ | | _| |_ _ |_ _| _ _ |_ | | _ _|_ | | _|_ _| _|_ | | _ _ _ _|_ |_| | | |_ |_ _ _| _| _| |_|_ | | | | _| _|_ | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _|_ | _|_ _ |_|_ _ _| |_ _ _ _ _ _ _| _ _|_ | |_ _ _ _ _ _|_|_ |_ _ | _|_|_ _|_ | | _| |_ _ _ _ _| _ |_ | | |_| | |_ _ _ _|_ _ | |_ |_ _ | | _ _| | _ _| _ _ _ _| _ _ |_ _ | _ _| | |_ | | _ | _| | | | _| _ | |_ _ _ _ | |_| | |_ _ _ | | _ _|_ _ | | | | |_ | | |_ | | |_ _ _ _ _|_|_ _ | _ _| _| _| _| | | _ |_ _ |_ _| | | _| |_ _ _ _ _| |_ |_ _ | |_ | | | | |_ _ _ | | | | _| | |_ _ _|_ | | | | |_ _ _ _| _ _| | _| |_ |_ _| |_ _| |_|_ |_ _| _| _| _ _|_ | | |_ _ _| | _| | | _| |_ | | |_ |_| | | | |_ _ _ _| _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| |_ _ | |_ _ | _| |_ | _ _ _| _ _ |_ _| | _ _| | |_| _| | _ |_| _| _ _|_ | |_ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ | | |_ _| | _| _| | | |_ | |_ _ _| _ _ _|_| |_| _ _| | | _ | |_ | _| _ _|_ _ _ _| |_ |_| | |_ |_ _| _|_ _ _ _| _ _| _ _ |_ | | _|_ _ _ _| _| | |_ _ _| | _ _|_|_ _ _|_ _ |_|_ |_ _ |_ | | |_| |_ |_ | _| _ _|_ _|_ _ _ | | | | | |_ _| | | _| | | |_ _|_| _ |_ | _ _ _ _ _ _| _ _ |_ _ | _ _| | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | | |_ _ _| |_ | | | _|_ _ | |_ _| | | |_ _ | |_ _ _| _| |_ |_| | | | | | | _|_ _| | | _|_| _| | _ _ _| _| | _| _| _ _|_ | | _ _ _ | _| |_ _|_ _ _ |_ | _ _|_ _ _ _| _|_| +|_ _ _| | |_ _| _ _ _| | | |_| |_| _ _ _| | | |_| _ _| | | |_ |_ _| _ |_ |_| |_| |_ _ _| |_ |_ _ | |_| _ | | | |_ |_ _ | _ _ | | | _|_ _ _ _| _| _ _ _ _ _| _ _|_ _ _|_ _ _| _ |_ _ _ | _ _ _ _|_ |_ |_ _ _ _ _| |_ _| _ _| _ _ _| | _|_ _| _| _ |_ |_| | |_ _ _| | | |_|_ _ | _ |_ _|_ | _ _| |_ | _| _| |_ | _| |_ _ _| | | | _| | | | |_|_ _ _ _|_| | _ _ _| | | |_ _ _| |_ | |_| |_| | _| _ _ _| _| |_ _ | |_| |_ _| | _|_ _ _|_ | _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _ |_ _| | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | | | | | |_ |_ _ | _ _ _ _| | |_ _ _|_ _ |_ | _ _ _ _|_ _ _ _ _ _|_ _ | _|_| _ |_ | _ _ _|_ | | |_| |_ | |_ _ _| |_|_ | |_| _| |_ _|_ _ _ | |_| _ _ _ _ |_ _ _|_ _ _ _ _ |_ | _ _|_ |_ _|_ _| | |_| | |_ |_ _ _| | _ | _ _ _ _ |_ _ _ _| | | | _|_ _|_ _ | | | _| _| | |_ | | |_ _ _| _ _| | | _|_|_ _| |_ | |_ _ _|_ _|_ _| | | | _| _ _ _ | | |_ _|_ _| |_ _ _ | | |_|_ | _| _ _ _ _| |_ | |_ _ | | _| |_ _ _ _ _| |_| | _ _ _|_ _ _| | |_| _| _| |_ |_ |_ _| |_ _|_ _ | _ _| _ _| | | | | | | | _ _| _| | | | |_ _ _ _ | _ _| | | _| |_ _ _| | | | _ _ _| _| | |_| |_ | | |_ _ _| |_ | | _| |_ _ _ _ _| | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _ _ | _|_|_ | |_ |_ _ _ _| _ _ _ _|_ |_ | _| | |_ |_| | | | _| | | _ _| | _| _| _|_ | | | _ _ _ _ _| | |_ _ |_ |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_| _| | _|_|_ |_ |_ | | |_ _| _ _ _ |_| |_ _|_ _| |_ |_ _ _| _|_ | _ |_ |_| _|_ _ _ | _ _ _| | | |_| |_ | | | |_ _ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | | _| _ |_ |_ _| |_ _ |_ _| _ _ _| |_ _ _ |_ _ _ _ _ | | | | _| _| | |_| |_ _ | |_ _ _| |_| _ _|_ _ | _ |_ _| _| |_ _ _ _ _| | | |_ _|_ | _ _ | _ _ | |_ _| |_ _ |_ _ _ | +|_ _ _ |_ _ _ _ | | _ _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | |_ | |_ |_| _| _ _|_ |_ _ _ _ _| _ _ _ _ _ _|_ _ _ _| |_ | |_|_ | | _ _|_| |_ _| |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | _|_ _ _| |_ | | _ _ _ | _| | | | _ _ _| |_ _ | | _| _ _|_ | | |_| _ _|_| | | _| | | | | | | | _| | _|_ _ _| _| | | | | _|_| | | |_| _| | | |_ _ _ _| _ _ |_ _ | _ _| | |_| _| _ _|_ _ _| | _| _| | _| _ _ _| | | |_ | | | _| |_ _| |_| | _| |_ _ _| _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ | | _|_ _ |_ |_ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _| |_ _| |_|_ | | _ _|_| |_ _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _| _| |_ _ | _ |_ _|_ | | _| |_ _ |_ _ | |_ _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| |_ _ _ _ _| |_ _|_|_ | |_ _ _| | | | _|_ |_ _ _ _| _ _ |_ _ |_|_ _ _ | |_ _| |_ _| | | |_ | |_ _| | | _| _ _| _ _| _ _ _ | _| _| |_| | _ _| _|_| | | _ _ | _| | | _ |_ | _ _|_ _|_ _ |_|_ _| _ _ _ _|_ |_| |_ | |_ _| |_ |_ |_ | _| | _ _ _ _ | |_ _ _| _| |_ | |_ _ |_ _ | _ _| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | | | | |_| | _ _| | | |_ _ _ _ | |_ _ | | |_ _|_ | | _| |_|_ _| _| | | | |_ _ _ _ _ | | | _| |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_|_ _ _ _ _ _|_ | _ |_ _ _| |_ | _| _|_ |_ _ _| | | _|_ _ | _|_ _| _| _| _ _| |_ _| |_ _ _ |_ _|_ _ |_ _| | | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_| _|_ _ _ _ _ |_ |_ _|_ _ _ _ _ _|_ _ _|_ | _ |_ |_| _ | | _ | | | _| | _| | | |_ _ | _|_|_ _|_ | | _| |_|_ | _ _ |_| | _|_|_ | | | _ _| _ | _| | |_ | | |_| _| _ _|_ | | | |_ _ |_ _ _ _| | _ _| _ _ _ | |_ _| |_ | _|_ | |_ _| | | _ _ _|_ | | _ _| |_ |_ _ | |_ |_ _ _ _| _|_ _ _ _ _|_ _ | | | _| | | _ _| | _|_ _ _ | | +| _ |_| | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _ | _| _| |_ _ _ _ _| | _ |_ | _ _ _ _ | |_ _ _|_ | _ _|_ | | |_ _ | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ _| _| _ _|_ _ _|_| |_ | _ _| |_ _ _| | _| _ |_ |_| _| _| |_ _ _ _ _| | _ _ _| | _ _ _| | | _|_ _| |_ _| | | | | | | _ _ _ _| _| | |_| |_ |_| | | |_ _ _| |_ |_ | _ _ _|_ | | |_| |_ | | | _ _| | | |_ |_ _ _|_ | | |_ _ | | _| | _| | |_ _ _| | | _| _ _|_ _|_ _ _ _ _|_ _ _ _| _|_|_ | | | _ _| _ |_ | | | |_ _| _ _ |_ | | _ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _|_ |_ | _ _|_ | | |_ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ |_ _| | |_ _ _| | |_ |_ _ | _ _ |_ |_ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ _ | _| _| | _ _| |_ _| |_ |_ | _ _ _| | | |_| _ _ _ _ _|_ _ _| | | _| _|_ _ |_ _| | _| |_ |_ _| |_ _ _| _| | _| |_|_ _ _ _ _ _ | |_ _ _| |_ _ _| |_| |_| _| | _ |_ |_ _ |_ |_ _ _| |_ | | | | _ |_ | |_ | | _ _| | |_ _ | | _| | _ _ _| | _ _ _| | _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ | |_ _| _|_ | _| | | | | | | | _| | | |_ _ | | |_ |_ _ | _ _ | | | |_ | _ _ _|_ _| |_ _ _| | _|_ | _|_|_ | | | _ _|_ _ _ _| | | | _|_ | | |_ _ |_ | _ _ _ _| | _| _| _ _|_ _ _|_ |_ _|_ |_| | |_|_ |_ _| | _ _ _| _| |_ | |_ _ | | | _ | _ _ |_ _ | |_ _ _| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ _|_ |_ | |_ _ _|_ _ _|_ _ _|_| _ _| | | |_ _| | | _ | | |_ |_ _ | _ _ | | _| | |_ _ _ _ _| |_ _|_ _| | _|_ | | | _| | _| |_ _ _ _ _| | |_| | |_ |_| _ | |_ _| | _| |_ _| | |_ | _| | | |_ _ | | |_ _ _| |_| | | | _|_ _ _ _| |_ | |_ _ _ _ |_ _ _ _ _ _ _ _ | |_ _|_ _ _|_ _ _ _| | _ _ |_ | +| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | |_ _ | |_ | _ _ | | | |_ _| _ | | _| |_ _ |_ | |_ _| | _ _| |_ _| _ _| | | | _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | _ _| | _ | _ _| | | |_ _ _ _ |_| _| _ _|_ | |_ _ _ | _ _| |_ _| |_ _| _ | | |_ _ _ |_ | _|_| |_| | | | | _ _ _| |_ _ _| _| _| | |_ |_ _ | | _|_ _ | _ _|_ _|_ | | _| |_ _ | _|_ | |_ _ | _ _ _| |_ _| | | | | |_ _ _ _ _ _ _|_ | |_ _| _ _ _ |_ _ _ _ _| | |_ _ _ _ _| |_ _| |_|_ |_ | | |_ _ | _| |_ | |_ _| | | | | _| | _|_|_ | | | _ _|_ _ _| | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| _| | _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _|_ | | _| _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _| _ _ _ _ | |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ | | | |_ _ _| | | | |_ _ | |_ _ |_ _| |_ _|_ _ _| _ _ |_ _ | _ _| | |_| _|_ |_ _ | | |_ | | |_ | _| | _ _ _| _| | |_ _ _ _ | |_ _ _|_ _ | _| _ |_ |_| | _| _| | | |_ |_ | |_ _| _| _ _|_ _ _| | | | | _| _| |_ _ |_| | | |_ _| | |_ _ |_ _ | |_ | |_| |_ _| |_ _| _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| | _|_ _ | |_ | | | | |_| |_ _| |_| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_| _ _|_ _| _ _ |_ _ | _ _| | | _|_ _ _ _ _| |_ _| _ |_| _ _ | |_ | _ _| |_ _| _ _| _|_ _ | | | _| | _ _| | _ _ _ _| _|_ _ _ _ | |_ _| | |_ _ | |_ _ | _|_ _ _ _| | | | | | | |_ _|_ |_ _ _| | | _ | _ _| _|_ _ | _|_|_ | | | _ _| _ _ _ |_| | | _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _ _| | |_ _ | _ _ _ _ | |_ _ | | |_ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ _| _| | | _ _ |_ |_ | | _ _ _| |_| |_ _| | |_ | _ _ |_ _ _ _|_ _ | | _ _|_ _ _ _|_ _ _|_ _ _ _ |_ _ _|_| _| | |_ _ | |_ _| _| _ _| | _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_| _ | | | | |_ _| |_ _| _| +| |_ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | | _ _|_| |_ _|_ | _| _ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _|_ _ _ _| _ _| | _ _| |_ _ _ _| |_ | _|_|_ | | | _ _|_ _ |_| | | | | _|_ | _|_| _|_ _| | _ _|_ _|_ _ |_ _ | _| |_ _ _ _ _|_ | _| |_ _|_ _ _| | | |_ _ _ | |_ _|_ _ _ _ _ _ |_ _ _ _ _ _| |_| | | | _ _|_| _ |_| _| _|_ |_ |_ |_ _|_ _ _| | | _ _| | |_ |_ _ | |_ _ |_|_ |_ _ |_| _ |_ | | _|_ _ _|_ _ | _ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| |_| | _ _ _ _ _ _ _|_ _ _ |_ _ _| |_ | |_ _ |_ _| | | _ _| | |_| | | |_ |_|_ _ _ _ _| |_ _| _ _ |_|_ | | | _|_ _|_ _ | | |_ _ _ _| _ _| _ _| | | | _ _|_ | _|_|_ | | | _ _| _ | | | | _ _ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | | _| |_ _ _ | _|_|_ | | | _ _|_ _ _ | | | |_| _| _ _|_ _ _| | |_ | |_ | | | | | | | _ _| |_ _| | _ _| | _ _ _| | | |_| |_ | | _ _| _ _| |_ _ _|_ _ | | | _|_ _ |_ _ _ _ _ _|_ _|_ |_ _ |_ _|_ _ | | _| | _| _ _|_ | | |_ | _| | | |_ _ _| |_ | _ _| | _| _ _| _ _|_| _| _ _ |_| _| | |_ |_| |_ _ _ _ _| | |_ | | |_ _ _| _ _|_ | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| | _| | |_ _ | |_ _| |_ _ _ _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | _ _ _| | | |_| |_ | | | |_ _ _| _ _ _ _ _| |_ _ |_ _ _| |_ |_ _ _ _| _ _| | _| _ _| |_ _| _|_ _ | _|_| | _ _ _ _| _ _ |_ _ | _ _| |_ | |_ _| _| | | |_ _| _ _| | | |_ _| |_ _ _ |_ | _ _| _ _|_ _| |_ _ | |_ _ _ _ _| |_ _| | _ _ _ |_| _ _| |_ |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | |_ _ _ _| |_ _ | | _| |_ _ |_| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _| | _ _|_ _ _|_ |_| |_| _ |_ |_ | |_ | | | _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _ _ | | _ _| | |_ | _ _| | | | | _|_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ |_ _|_ _| | _ | _ |_ | +| _ _ _|_ |_| |_ _| _|_|_ | | | _ _|_ _ _ _ | | | _ _|_ | | |_ _ | _|_ |_ | _|_|_ | | | _ _| _ _ _ | | |_ | |_ _ _ _| | | |_ _ _ _ | _ _ _| | | |_ _ _ _ _| |_ _| _ _ _ _|_ | | |_ |_ _| |_ _ |_ _ |_| | _ |_ |_ _ | | |_ _ _ _ _ _ _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| | _ _|_| |_| | _ _ _| | | _| |_ _|_ | | | | _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_ _ |_| _| _ _|_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | _|_ _ | _ _|_ | | _| _ |_ |_ | _ _| _ _|_ _ _ _| |_ | | |_ _ | _ _ _ | |_ _ |_ _ _|_| |_ _ _ _ |_ _| | | _ _ | | | |_ _ |_ _ _| | _ | |_ _ _ _ _| |_ _|_ _ _ _| | | | | | |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| | |_ _ _|_ _| |_ _ _ _ _| |_ _|_ |_ | | | | | | _ _| | | _ _ _|_ | |_ _ _| |_| | |_| _| | |_ _| _|_ _ _ _| |_ _ | _| |_ _|_ | | _| |_ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | | _ _ |_ _| |_ | _| |_ _ _ _ _| |_ | | | | | | _ _ _| _|_ | _|_ |_ |_ |_| _ _ _| | |_ | | _| _|_ |_ | | | | | | _|_ _|_ _| | _ _ _ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | | _| _| | | | | |_ |_ _ _| _ _ _ |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ |_ _ |_ | |_ _|_ | | _| |_|_ |_ _| _|_ | _|_ _| _ _| _ |_ |_ | | | | |_ _ |_ _ |_ _ _ _| |_ |_ _ |_ _ | _ _ _|_ | | |_| |_ | | | |_ _ | _|_ _|_ _ | | |_ _ _| _ _ _ _ _ _ _ _|_ |_ _| _ _ _ _|_ |_| _|_ _| _ | _ _ _ _ _ _ |_ _ _| |_ | _ _ _ _|_ | _|_|_ | | | _ _|_ _ |_| | | _ _ _|_ _ _ _ |_ _| | |_ _ _|_ | | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _| _| | _ _ _ _| | _| _| _ _|_ | | |_ _|_ _| | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _| | _ _| | | _|_ | _|_| _| | | _ _|_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| |_ _|_| |_ _| _ _| +| _ _| |_ | _ |_ _ _ _ _| |_ _|_ _ _ |_ | | | |_ _| | _ _| |_ _| _ _|_ | |_ | |_ _ _ _ _| |_ _| | _ _ | |_ | | _|_ _ |_ _ | | |_ _|_ _ |_ _ _ _| _ _ _| | |_ _ _ _ _ _ _| _ | _ _ _| |_ | |_ | | _|_ _ |_| | _|_ |_ _ _| _ _| | |_ | |_ _ |_ _ _ _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _| |_ _ _ _ _| _|_ _ _ _| | _ _ _|_ _ _ _ _| _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _| _| |_ _ _ _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_|_ _ _| | |_ _| _| _ _|_ | |_ _ _| | _ _ _ _ | | | | | |_ _ _| _ _ |_ _| |_ | | | | _| _ |_ |_ _ _| | _|_|_ | |_ |_ _|_ _ |_ _ | _|_ | |_ _ _ _ _| _ _ | | |_ _|_| |_ | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _| | _| | _ |_ | |_ | | _ _ | |_ _ |_ _ _| |_ _ | _|_ | | | | |_ _ |_ | |_ |_ _ _| |_ _ _ _ _ _ | |_ _| | | | | | | |_ |_ _ | _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | _ _ _ _| | _ _ _ _ | | |_ _|_| | _|_ _ |_ _| |_ _ |_ _ | |_ |_ _ | _ _ _ _| _| |_ _|_ | | |_| |_ _| |_|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | | | | |_ _|_| |_ _| _| _ _ _| | |_ | |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| _ | _| | _|_| | | |_ |_ _ | _ _ | | |_ _ |_ _ _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ |_ _ |_|_ _ | _ _|_ _|_ | | _| |_ _ _ _| | |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ |_ _ _| |_ | | | | _| |_ _ _| _ _ |_ _ | _ _| | | | |_ _ | _| | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | _ | |_ _ _ _ | _|_ _ _ | | |_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _ _| _|_ | | _ _ _| | _| |_ _ _ _ _|_|_ |_ _ | _|_ |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | | |_| |_ | | |_ _| |_ _ |_ _| _|_ | | |_ _ | | | _|_|_ | | | _ _| |_ | | | | _ _ _ _|_ |_ _ _|_| | | | +| | _ _|_ _ _|_| _ |_ _ _ _ _ _ _| | _ _|_| |_ _ | |_ _ _ _| _ _| | _ _| _ _| | _ _| | _ _ _ _ _ _| |_ _ _| |_ | |_ | |_ _| _| _ |_ _ | |_ _ |_ |_ |_ | _ _| _ | | |_ _| _ |_ |_ | |_ _|_ _ |_ | | |_ _| | _ _| | |_| _| _ _| | _ _ _|_ | |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ _ _ | _|_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ | |_ | |_ | _| |_ _ _ _ _|_ _ | |_ _ | | _ _|_ _ _| _ _ _ _| | | | _| | |_ _| |_| _| _ _|_ | | _ _| |_ _ _ _ _| | | _ |_ _ | | | | |_ _|_ _ | _ _| | _|_ _| _| _ |_ |_| | | | _| | | |_ _|_ |_| | |_ _ | | |_ _ _| | | |_ |_ | | | _| | |_ _| _ _ _|_ _| _ |_ |_ |_ _ |_ _| _| |_|_ | | _ _|_ | |_ |_ _ _ _| |_ _ |_ _|_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _| | | |_| | | | |_ _|_ |_| | | | | | |_ | |_ |_ _ |_ | |_ _| |_ _| _ |_ _ _ |_ _ _ _ _|_ _ _ | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _|_ |_| _ _ _ _| _ _ _ _ _ _|_ _ _| _| | | |_ _|_ | |_ | _ _| | |_ _ _ _| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _|_ | _|_ _ |_| _| |_ _ _ _ _| _|_ _ | _ |_ _ | | |_ _ _| |_ | _| _|_ _ _| | _ _ _ | | |_ |_ _ | _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _|_ _ _| | |_| |_ _ | _ _ _| | | |_| |_ | | | |_| | _| | _|_| | _ _ _ _ _ _| _| _ _ _| |_| |_ _ _|_ _ | | | | _| | | | | _|_| _| | | |_ _|_ | _ _ |_ | | |_ _| | |_ |_ _ |_|_ _ _ | | |_ _| _ _ _ _ |_ _ _ _| |_ _ |_ |_ _ | _|_|_ | | | _ _| _ _ | | | _|_ _|_ | | _| |_ _| | |_ |_ _ | | _ _| |_ _| _ _| | |_ _ _ _ _| |_ _| _|_ |_| | | | |_ _ _| |_ | _| _ _| | |_| | +|_| | _ _ _ _| |_ |_ _|_ |_ _ | |_ _| _ |_ |_ _ | _ _ | | |_ _ _ |_ _| |_ _ _ _| |_ _ _| | _| _ |_ |_ _|_ | | _ _|_ _ _ _| _ _| | |_ _ _ _| _ _|_ | |_ | _ _| |_ _| _| _ _|_ |_ _ | _ |_ _| _| | | _| | _| | |_ _| _| _| _ _| | | | |_ _| _|_ _|_ | _|_|_ | | | _ _| _ _ | _| | _ _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | |_| |_ | |_ |_ _ _| _ _ _ _ _|_ | _|_|_ | | | _ _|_ | | | | _|_ | | _ _|_| |_ _|_ _|_ | | |_ | _ | |_ _|_ _| |_ _ _| _ _ |_ _ | _ _| | | | | _|_ _ _ | _| |_ _ _ _ _| |_ | | | _ _ _ |_| |_| | _ _ _| | | | |_ | _ _ _| | | |_ _ _ _ _| _| _ _|_ | | | |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _| |_|_ | _| _| | | _ _|_ |_ _ _| _ |_| _| _ _|_ |_ _ |_ _ |_ _|_ _ | | |_ _ _ _ _| | _| | | |_ _ | _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| _|_| | _|_|_ | | | _ _|_ _ _|_| | |_ _| | _ _| | |_|_ _ _| |_|_ _|_ _ _| | _|_ _|_ |_ _|_ _ _|_ _ _ | _|_ |_ _ | | _| |_ | _ _ | | _ _ _ _ | |_ _| _| _| _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ |_ | | |_ _| _ _ _ _| | | | | |_ _| _| _ _|_ _ _|_ |_ _ | | _|_ _ | _| |_|_ | | _ _|_| |_ _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _ _ _ _| |_ | _|_ _ | |_|_ _|_ | | _| |_ _ | | |_| _| | _ _| |_ _ _| | _| _ _ _| _ |_ |_ _ | _ _ _ _| | | | | | | |_ _ _| |_ |_ _ _| |_ _|_ _ _ _ _| | _| |_ _ |_ _|_ _ |_|_ _ | _ |_ _ |_ | |_| |_ | | _|_ _ |_ _ | _ _ _ _|_ |_ | | | | _|_ _ _ _ _| |_ _| _ _| _| _| | | | _ | | |_ |_ _ | |_ _ _ _ _ |_ _|_ _ _ _| _ _| |_ | | |_ _ |_| | _ _|_| |_ _| _ _|_ _ _| | | | _| |_ | | +| _|_| | |_ _ |_ _|_ | | _ | _ _| _| _ _|_ | | |_ _| |_ _|_ _ |_ _ _ _|_| _ _ |_ _ | _ _| | | _| _ _|_ |_ | | | | _ _ _ _ | | _ _|_ | _ _ _ _ _ _ _| | | |_| _ _| | _| |_ _ _ _ _| _| | |_ _| _|_ _ _ _| _| | _|_| _ _ _| _ _|_ | _|_| |_ _| |_ | | | _ _|_ _ _ _ _| |_ _|_ _| | _|_ | | | _ |_ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | | |_ _|_ | |_ _ _ | | | |_ _| _ _| | _|_ _| | _ _ _| |_ | _ _|_ _ _ _ _| |_ _| | _|_ _| | | | | _ _|_ | | |_ _ | _| | | |_ | | | |_ _| | | | | _| | _ _ _| | | |_| |_ | |_ | |_ _| | | |_ _ _ _ _ |_ | | | |_ |_ _ | | _| _| | | _ _| | |_ | |_ |_ _| _| |_|_ | _ | _| |_ _ _ _ _| |_ _ _| | | _ _ | _ | |_ _ _ _|_ _ _ | |_ _ | | |_|_ |_ _ _| |_ | _| | _ _ _ _| | _| |_ _ _ _ _| |_ _ _|_ | | | |_ _ _ _ _ _ _|_ _ | | |_ _| _ _| _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _| |_ _ _ _ _| |_ _| |_ _|_ _ | | | | |_| |_ | | | _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _| _ _|_ _ _ _|_ _|_| | |_| _ | | _| |_ _ | |_ _ _| _ _ _ | _|_|_ | | | _ _| _ _ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ | _ _ _| | _|_ | _ _ _ _|_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | | |_ |_ _ _|_ |_ |_ | _|_ | |_| | |_| |_ | _ _| | _ _ _ _ |_ |_ |_| |_ _ _ |_|_ |_ | _ _|_ | | |_ _ | _|_|_ |_ | _|_|_ | | | _ _|_ _ _ | | | | _|_ | | |_ _| _ _|_ | _| | |_ _ _| | |_ |_ _ | _|_ | | _| |_ |_ _ _| _ _| _ _| _| _| _ _|_ | _|_| |_ _|_| |_| |_ _| _ |_ |_| _ _ | | _ _ | _ _ _| |_ _ _ _ _ _ |_ |_ _ | | | | | |_ | _| _| _| | |_ _ |_ _ | |_ _ _| |_| |_ _ _| | |_ _ _ _| | | _| _|_ |_ _ _| |_ _| | | |_|_ | | _ _|_| |_ _ | |_ _ _ _ _ | | |_|_ _|_| | |_| |_ _ _| _| |_| _ |_ |_ _| |_ | _ |_ | | | | | | | +| | _ _| | |_ |_ |_ _ |_| | | | | |_ _| _| |_ _ _ _ _| |_ _ | | | _ |_ _ | | _ _ _| _| | |_| |_ | | _| |_ _ _ _ _| _| |_ |_ _ | | _| |_ | _ _|_ | _ _ _| _ _ _| | _| | | _| |_ _ _ _ _ _ _ _ _ _| _ _|_| _ _ |_ _ _ _| |_ _ |_ _| | _| | _ _ _|_ | | | |_ _| _ _ | _| _ _ _| _| _ _ _| |_ _ |_ |_ _| | |_ | _|_|_ | | | _ _|_ |_ |_| | | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ | |_ _ _ | _ _ _ _ _|_ | |_ _ _ _ _ _ _ _ _ _ _ _|_ _ |_ _ _| |_| _| | _ _| |_ _| _ _| | _| | |_| _| | _| _ _| |_ _| | | | |_|_ _ | | | |_ _|_ | | _| |_ _| |_ _ |_ _|_ | _ |_ | |_ | |_ _ |_| _ _| |_ _ _| | | |_ | |_ _|_ _|_ | _ _ _| | _| | |_ | _ | | | _ _| |_ _| | |_ _|_ _|_ _ |_ | _ _| _ _| | | |_ _ | | _ |_ |_ _| _| _ _| | | |_ _ | | |_ _ _ _ _ _| |_ _| |_ | _ _ _ _ | |_|_ | _ _| | _|_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _|_ | |_ |_ | _ _ | |_| |_ _ _ _ _| |_| _|_ | | _| |_|_ | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| _ _ |_ _ | _ _| |_ |_ _| | |_ _ _|_ | | | | _ _ _| | | |_ _ _ _ _| |_ _|_ _ | | _ _| | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | | | |_ _ _ _|_ _ | |_ | _ _ _ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _| _| |_ _ _| _ |_ |_ _ _| | |_ | |_ | | _|_ | _|_ _ _ _ |_ |_ _ | _ _| | _ _ | |_ _| | _ _| |_ _| _ _|_ | _ _| | |_ _ _ _ _| |_ _| _ _ _ |_| | | |_ |_ _ | |_ _|_ _ |_ _ _| _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _|_ |_ |_ _ _ |_ | | _ _ _| _| |_ _ _ _ _| _ _ _|_ |_ _ | |_ _ _| _ _|_ |_ | | |_ _| | |_ _ _ _|_ _ | _ _ |_ _ _ _| | | |_| | | |_ | |_ _ _| _| |_ _ | | |_| _| _ _| _ _| | _| _ | |_ _ _|_ | | _ _| | | _ |_ |_ _|_ | _ _|_ | | |_ _ | |_ _ _ | | |_ _|_ _ |_ _ _ _|_ | |_ _| _ _| _| _| _ _|_ | _| _| | |_ _ _| |_| | |_ _ | +| | |_ | |_ _ _| | _ _ | | |_ _|_ _ | |_ _ _ _ | | | | | |_| _|_ | | |_|_ _ | | |_ _|_ | | _| |_ _ _ _ | |_ _ |_ |_ _| | |_ _ _ | | |_ | | _ _ _| | _| | _ _|_ |_ | |_ | _ _ _ _ | | _ _ _| | | |_| _ _| | _| | _ _|_ _| | |_ _ _| | _| _|_ | _| _ _| |_ _ _ _| _ | _ _| _ |_ |_ _| _| | | _|_ _|_ _ _ _ _| |_ _|_ _ _|_ |_ | | |_| | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | | | _ _|_| _ | |_ _ _ _| _ | | | _ _ _ _ | | _| _ |_ |_ _ |_ _ _ _| _ _| _ _| |_ _ _| _|_ | | _ _ _|_ _ |_| | | | _| | _|_ _ | | |_ |_ _ | |_ _ |_ _ _| _|_ _| | |_ | |_ | | _ _|_ _| _ | |_ | | |_ _ _| _ _ |_ _ | _ _| | | _| |_ | | | | | |_ _| | |_ |_ _ _ |_|_ _ _ _ | |_|_ | |_ _ | | _ _|_ _| _ _| _| _ _|_ | _| _| _ _|_ |_ |_| | | _| |_ _ |_ | _|_ _ _ | | _ | | _| |_ _ | | | |_ _ _ _ | _| | | |_ _|_ |_ |_ _ _ | | |_|_ |_| | _ |_ _|_ |_ | |_ | |_ _| _ |_ |_ | | |_ |_ _ | _ _| _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | _ _ _|_ | | |_| |_ | | | | _ _| _ _ _ | |_| |_ _ | |_ _| | | _ _ _ | |_ _| |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | |_ _| |_ _ _ _ | |_ _| | _|_ | _ _| | _| | | |_ _|_ | _ _| _ | | |_ _ _ |_| | _ _ _| |_ |_ | | | _| _| _|_ | | |_ _| |_ _ |_ _ | | |_ _ _ _|_ _ _|_ _| |_ _ | |_ _ _ _| _ _| _ _ _| | | | |_ _ _ _ _ | _|_ _| _ _|_| |_ _ _| |_ | | |_ _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _ _ _ | | _| _ | |_ | | | _ _| |_ | | | |_ _ | | |_ _ _ _ _|_ _ _|_ | | |_ _ _ _ | |_ _ | | | |_| _ _| _| _| | |_ _| | _ _ _| _| _ | | | |_| | _ _| | _| | _ _| | |_ |_ _ _| _ _ |_|_ | _ _| | _| _ _|_ |_ _ |_ _| | _ _| |_ _| _ _| _ |_ _|_ _ | | |_ _ | _ _| | _ _ _ _ | | _| |_ _ _ _ _| |_ | _| _ |_ | |_ |_ _| +| | | _| |_ _ | _|_| |_ _|_ _ | | |_ |_ _| | _| |_ _|_ _ _|_ _ _| |_ |_ _ _ | |_ _|_ _ | | |_ |_ _ | _ _ _| | |_ | |_ | _| _ _ | | |_| | _| |_| | | _| | | _|_ _| _ _| _| | |_ _ | | _| | |_ _ | |_|_ _|_ | |_ | | _ _ _| _ _ |_ _ | _ _| | |_ _ _ | | | | |_ _ _ _ |_ _| | _| _| _ _|_ | _| | |_ _ |_ _| _ | _ _ _ _| | _ _ _| |_ _| |_|_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | | |_ _ | _| |_ _|_ _ | | | |_ _| _ | | _| | _| _| _ _|_ | _| _ _| | |_ _| _| _ _ _| _|_| | _ _ _ _ | _ _|_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _| _ _| |_ | |_| _|_ _| _ |_ _| | |_ _| | _| |_| _ _ _| | | |_| |_ | | | |_ _| _| | | |_ _ _| |_ | | |_ _ _ _| _| |_ _ | | _| | |_ | _ _| _| | |_ _ _ _ _|_ _ _ _| | | _| _| _| _| _ _ _| | _|_ _| _ _ |_| |_ _| | |_ _ _| _| | |_ _|_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| | | | | | |_ _|_ _ |_|_ | |_ |_ _| |_ |_ _| | |_ |_| _| _ _|_ | | |_|_ | | _ _|_| |_ _ | |_ _ | _|_|_ | | | _ _| | _ | | | |_ _ | | |_ _|_ | | _| |_ _ _| _| |_ | _ _| | _ _| | |_| _ _| | |_ | |_ |_ _| | _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | |_ _ | _| |_ _ | | | | | | _ _|_ _ _| |_ _|_ _ _ _ _| | |_ _ _| | |_ _|_ _ |_ _ | |_|_ _ _ _| _| _|_ _| |_ _| _| _ _|_ | |_ | | |_ _ |_ _ _ _| _ _ |_ _ | _ _| | _|_ _| |_ _ _ | | |_ _ | _| | | |_ | _ _| | _| | _| _| _ |_ |_| | |_ _|_ _ | |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| | _ | _| |_| _| |_ | | | | |_|_ | _ _|_ _ _| | |_| _ _|_ _ _ _ _ _ _ _ | _ _| | | _ _ | _| |_ _ |_ _|_ |_ |_ | |_ _ _| | |_ | _|_ _ | _| _| _| |_| | |_ | _| _ _| |_ | |_ | | _ _ _| | | |_| |_ | | | |_ _ _ _ _| |_ _ | |_ _ _ _| _ _| | | | | |_ | |_ _| | _ _| | _ | |_| | |_| | |_ | _ |_ _ | |_ _| _| _ _|_ _|_ _ | +| | |_ |_ _ | |_ _ _| | | _|_ _| _| _| _ _| |_ _ _ _ | |_ _ |_ _ _ _ _ _|_ _ _ _ _ _ | |_|_ | | _ _|_| |_ _ _|_ | |_ | | | _|_ _ _| |_ | |_ |_ | | |_| | _ _| _ _ _ _ _| _| |_ _|_ _| | |_ _ |_ _ _| | |_ _ | | | _| | | _ _ _|_ | | |_| |_ | | | |_ _| |_ |_ _|_ _ |_ _ | _ _| | _| |_ _ _ _ _| |_|_ _ | |_ _ | | | _|_ | | | | |_ _| _ |_ |_| _| _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _| | |_ _ _ _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | _| |_ _ _ _ _|_ | |_ _ |_ _|_ _ |_ _ _ _ | _|_ _ | |_ _ | | _| _| _ _ |_ _ _ | | |_ | _ _|_ | | |_ _ | _| _|_ | _| | |_ | | _ _ _| | | _ _|_ _ _ _|_ |_ |_ _ | _| |_ _|_ | | _| |_|_ | _|_ | _| | | _ _| |_ | |_ _ |_ _ |_ _ _| _| | | |_| _ _ | | | | |_ _ _ _ _ | | _ | | |_|_ _| _| _| | | | | | _ _| | _ _ _|_ | | _| _ _| _ _| _ | | |_ _ |_ _ | | | | _ _ | | _|_ _| | | |_ |_ _ |_ _ | |_ | | _ _|_ _ _| _ |_ _ | _| |_ _ _ _ _| |_ | _ _|_ | | |_ _ | | | | |_|_ _ _ _ _| |_ _| _ _ _| _|_ | | |_ _ _| | |_ _| | | |_ |_ _ | _ _ | _|_ _ _| |_ |_| _| | | _ _|_ | | | | | _ _|_| _| _ _|_ |_ _ | _| | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_| |_ _| | | |_ _ _| _| |_| | |_ _| |_ _ _ _ | | _ _ | _|_ | | | _| _|_ _ | | | _ _ _| _ _| _|_ | _ _ _|_ _ | _| | |_ _| | |_ |_ | _ _ _| | | |_| |_ | | | _ |_ | | |_ _|_ _ |_ _| _| | | | | _|_ _ _|_| | _| _| _ _|_ | | |_|_ |_ _ | |_| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | | _|_ _| | _|_ _| |_| _| _| |_ _ |_| |_ | _|_ | | | | _ _ | _ _| | | _|_|_ | _|_ _ _|_ | | _ | | _ | | | _ _| | |_ _ _| | | | |_ _ _|_ | | |_ _| |_ |_ _ _| | | | | | |_ _ | _| |_ _|_ | | _| |_ _ _ | _ | |_ _ | |_ _ _ | | |_|_ | | |_ _ | |_ _ |_ | _ _|_| |_ | |_ _| | |_ | |_ _| _| _ _|_ | _| |_ _ _ _ _| _ _ | +| |_ | | _ _|_| |_ _| | |_ | _ _ _| _|_ _ _ | |_ _ _| _| |_ _ | | | _ _ _ _ | |_ _ |_ | _ _|_ | | |_ _ | | | _| |_| | | _ _ | | _|_ |_ _ _ _|_ _ _|_| |_ _ | _ _ _| _ | | | _| _ _ _| | _|_ _ _| |_| | | |_ | |_|_ _ | _ _|_ _|_ | | _| |_|_ |_ _ _| _| _ _|_ _ |_ _| _| | |_ _ | _ _ | |_ _ | _|_ |_ _| |_ | |_ |_ _| |_ _| _| _ _|_ | | _| |_ | |_ _ | _| |_ _ |_ _ |_ | |_ | | |_ |_ _| |_ _| | _|_ | _|_|_ | | | _ _| | _ _ _| |_ _ | | _ _|_| _ _ _ _ | |_ _ | _| |_ |_ |_ _| | |_ _| _| _| |_ _| |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ | | |_ _ _| | |_ _ | | | | _ |_ _ _ | |_ _| | | _| | | |_ |_ _ | _ _ |_ _| _| |_|_ _ _ _ |_| | _ _ _ |_ _ _ _ _ _ _ _|_ | | |_| | |_ _|_ _ |_ _ |_ _|_ _| |_ _| | | _ _ _| _| _| | |_ |_ | |_ _ | _|_ _ _ _| _| _ _| _| | | | |_| | |_| | |_|_ _| | |_ _|_ _ _ _ _ | |_ _ _ _ _ _| | | _| | _ _ _| | |_ _ | | |_ _ _ |_ |_ |_ _| | _ _| |_ _| _ _| | |_| |_ | _ _ | | _|_ | |_ _ _| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ | _ |_ |_ |_ _| |_| |_ | |_ _| | |_ | | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ _ | | |_ _ _ |_ _ | | | | | _ | | _ _| |_ _| | |_|_ _ _ _ _|_ |_|_ _ _|_ _ _| | _| | _ _| |_ _ _ _| |_ _ _ _ _ | | | _ _|_ | _|_ _ _ _|_ _ _ _ |_| |_ _|_ | | _| |_ _ | | _| |_ _ |_ |_ _ | |_ _|_| |_| | | _ _ _ _| | _| |_ _ _ _ _| |_ _ _ _| _ _|_ |_| | _| | | |_ _|_ | | _ _ _ _ | | |_ _| |_|_ _ _ _|_| |_| _|_| _| | | |_ _ | | _| _|_ _|_| _ _ _| _|_ _| |_| |_ _ | |_ _ _ _ _ |_ _ _ _ | | |_ | |_| |_ _| | | |_ _ _ _ _|_| _ _| _|_ _|_ _ | _ _|_ _ | _|_ _ _ _ _ _|_| |_ _ _ _| | | | _ _| | |_ |_ _ | _ _| |_ _| | | | _ _| | |_ _|_ _ |_ _| | | _|_ | | | |_ | _ |_| _| | | _| |_| _| _ | |_ _ | _ _| |_ | |_ |_ _ | | +| | _ _|_ | | |_ _ | | |_ _| | _ _ _| _ | _| | |_ |_ _ _|_ | |_ _| |_ _ | | _| |_ _ | | |_ _| | _ _| |_ _| _ _| |_| |_ _ _ _ _|_ _ _ _|_ |_ _ |_ _ _ | _ _ _ _|_ |_ |_ _ | _|_ _ _|_| | | _| _ | | |_ _ _ | | _|_|_ | |_ _ _| | _ | | | |_ |_ _ | _ _ _|_ _ |_ _ _| | _ _ | |_ | _|_ _ |_ _| _ _| | _ _| |_ | |_ _ _ _| | _|_ | _| |_ _ _ _ _| _| | | | | _ |_ _ _|_ | | | | _|_ | | _| | | |_ _ | |_ _ | |_ _ _ _ _| |_ _|_ _ |_ _ | |_ |_| | | | |_ _ | _| _ _|_ _ _| | | _|_ _ _ _ |_ | |_ _ _ _ |_ _ _|_ _ _ _|_ _ _| _| |_ _ _ _| _ _| | |_| |_| | |_ _ _ | |_ _ _ _|_|_ _ _|_ _ | | _| _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| | | _|_ |_ |_ _ | | |_ _ | _| |_ _ | _|_ _ _| | | | | |_ _ _ _|_| _ _ |_ _| _ _| |_ | |_ _| |_ _ _| |_ _ _|_ _| _| |_ _ _ _ | |_ _|_ _ | _| | _ _| |_ _| _|_ | |_ _ _ _| _| |_ |_ | | _ _| _| _ _|_ _ _ _| _ _| | |_ _ _ _|_ _|_ | | |_|_ _ _ _| |_| _ |_ |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ _|_ | | _| | _| _| |_ _| |_ |_| | | |_ _ _ _ | _| | | |_ | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ | _| | | | _ _ _ _ | | |_| _| | | | | | |_| _|_|_ _ _ _ | |_ _| _ _ _ _ | _ |_| _| | | _ _| | | _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ | _ _| | |_ |_ _ | |_ _ |_ | |_ | |_ _ _| | | | | _| _| |_ _ |_ _ | | |_ _ _ | _| | _ _| _ _ _ _ |_ _ _| |_ _|_ _ _ _ _| | | |_ _ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _| _ _ _| | |_ _|_ _ | _ _ _| | _| | _ _|_ _ | _| | |_ _ _ _ _| |_| |_ _| | _|_ _ | _ _|_ _ _ _ _| |_ |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _| | | | | _| _ _ _ _ |_ _ | |_ _| _ _| |_ _|_ | | |_ _| _| _| _ _ _| _| | _| |_ _ _ _|_ _ |_ | _| |_ _ _ _| | | +| _| | _ _| |_ _| _ _| |_ _ _ _|_ _ | | |_ _| | | |_ _ _ _ _ _ _ | | | | _| | |_ _ _| | | | | |_ _ _ _| _ _| _ _ |_ | _ _ _ _ _ | |_ _| _| _ |_| |_ _ _| |_ |_ _| | _ _ _ | _| |_ _| | _| | _ _ _|_ _| |_ _ _ _ _ _ _|_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | _| _| _ _| |_ |_ _| _| _| | _ _| _| |_ _ | _ _|_ _ _ _ _ _| | | |_ _| _ | _| | | |_| |_ | _| _ _| |_|_ _ | _ | |_| _|_| |_ _| _ _|_ _ | |_ _ | _ |_ _ _| | _| _| _| |_ _ _| | | |_ _ _ _ _| _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ |_ | | |_ | _| | |_|_ _ _ _| _ _|_ _| |_ _ | | _ _ _ _ | |_ _ _| _ _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | _ _ |_| _ _| | | | |_ _ _ |_ _ _ _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | |_| _ _| | |_ |_ _ | _ |_ _ _|_ | | |_ _ | _| |_ _ | _ _| _ _|_ | |_ | |_ |_ _ _| | _| _| _| _| _|_ _| _ _|_ _ _ _ _ _ | | |_|_ _ | | | _ _| | | _ | | _| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ _ _ _| |_ | |_| | _| _| _| _| _| _| |_ | _ | | | | _| |_ _|_ _ _|_ _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _|_ | | |_ _| | _ _| |_ | | _| _| |_ _| | _|_ _ _ _ | _| |_ _ | _ | | |_ |_| _| _| | | _| | | | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_|_ | | _ _|_| |_ _ _| _| |_ | _ _| |_ _| |_ _ _|_ _ | _| |_ _|_ | _|_| | | _ _|_ _ _ _| _ _ |_ _ | | | _ _ | | _ _|_ _|_ _ |_ _| _ |_ _ | | |_ _ _| |_ |_ | | | _ _|_ _| _ _ |_ _ | _ _| |_ _| | | _| | | _|_|_ _ _ | _ _|_ _ _| _ _ _ _|_ _ _ _|_ | |_| _ _ _ _|_ |_| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | |_ |_ _ | _ |_ _ _ _| | _ _ _ _ _| | _ _ _| | _ _ _| _| | | _ _ _| | _| _| _| _ _ _| _|_ _|_ _ _ |_| _| | +|_ _ |_ _ _ _| _ _| | _ _ _ _ _| | _|_ _ |_ _| | _ _ _ | _| | | |_ _| | _| _ |_ | | |_ _|_ _| |_ _ | | |_ _| _ _| |_ | _| _| |_ _ | _ _| |_ | | _| _ _|_ _ _| | | _|_ _ _ _| |_ |_ _ _ _| | _|_ _ _ _ _ _ _ _ _ | _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ |_ | _ _ _ _| _| _| | | _| | |_ _ _ _ _|_| _ _ |_ _ | _ _| | |_ | | | |_ _ |_| | |_ | | _|_| _| |_ | | _ |_| | | |_ | _ _ _| _ _| _ _|_ _ _| _| | _| _|_ _| _|_ _| _| | |_ _ _| _|_| | _ _ _ _|_ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_|_ | |_|_ |_ _|_ _ |_ _ _| _ _ _ _|_ |_ |_| _ | | _| |_ _ |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_| |_ | | _ _| | | |_ _ _ _| _ _ | _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | |_ _|_ | _| | |_ | _| | |_ |_ | |_|_ _ _| _| _| |_| | _| | | _|_ | _ _| | | |_ _ _| _| | _ _ _| _ _ | | | _|_ _|_ _ |_ _| |_ _| |_ | | |_ | |_| | | _| |_ _ _ _ _| _| _ _ _ | _| _ _|_ _ _ _| _ _| | | |_ _ _ _ _ _ _|_ _ _ _| | _|_ _ _ _|_ _ _| _| _| | | | |_ _| |_ _ _ | _ | _| _ _| | | | | | _ _| _| | | | |_ | | _ _ _|_ | _ _| | |_ |_ |_ _|_ | | _| | |_ _ |_ _ |_|_ _ _| | |_ _| | |_ _| |_ | | |_ |_| | | | | | | |_ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ | _ _|_ | | |_ _ |_ _ _ _ _|_ | | |_ |_ _ _ | | |_ _| _| _| | | _ _| |_ _ _ _| _ _ _| _| | |_ _|_ _| | |_ _ _ _ _ _ | |_ _ _ _| _ _ _| |_ _| _| _ _|_ _ _| | | _|_ |_| _ _ _| | | |_| |_ | | | | _| _| | _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ _ _ _ _| |_ | |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| |_ | |_| |_ _ _ _ | |_ _| | _ | | | _ _|_ _ _ _| _ _|_ _ | | | | | _|_ _ _ _| _|_ _ | |_ | |_ _| +| _ _| _ _ | | |_|_ | _ | _| _|_ _ _ |_ _ | _| _| |_ _ _| |_ |_ | | _| |_ | | | | | |_ |_ _| |_ _|_ _ |_ _ |_ |_| | |_ _ _| _| |_ _ _| _| _ _| | _ _ _ | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ | | | | _ _ _| | | | | |_ |_ _|_ _ |_ _| _ _ _| | | |_| |_ | | | _|_| | _| |_ | |_ |_ _| |_ _ | | | |_ | | _| _| _|_ |_ | | |_|_ |_| |_ _ _ _ _|_ | | _ _| _ _ _| | _|_ _ |_ _|_ _ _ |_| |_| | _| _ _| | _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ _ _ _ _| | _ |_ | |_ _ |_ |_ _ _| |_ |_ |_ _| | |_ _ _|_ | | |_| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ _| _ _ | |_ | _|_|_ | | | _ _| _ _ _| | | _ _ _ _|_ |_ |_ | | |_ _ _ _ _ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _ _ _|_ _ _|_ _ _ | _| _| _| |_ | _ _ _ | | _| _ _|_ _| _|_ _ _| | | |_ | |_ | _ _ _| _|_|_ _ | _ | |_ _| | | |_ | | |_ _ |_ |_ _ | | |_ _ _ _|_ _ _| | |_ _ _ _| _ _| | | |_ _|_ | _ _ | | | |_ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ _ _ _| _| _| | _| | | _ | |_ _| _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ | |_ _| |_ _ | | _| | | |_ | | _ _ _ _ _|_ _|_| _|_|_ _ |_ _|_ _ _ _ | | | _ _ _|_ _ _ _|_ _ _ _|_ | |_| | | _| | |_ _| |_ |_ _ | _|_|_ | | | _ _| _ |_ |_| |_ _ | |_ _| | _ _| |_ _| _ _| _ |_| | _| |_ _ _| _ |_ _| |_ _ _|_| _| |_| | _|_ _ _ _ |_ _ |_ _ |_ _| | _ _ _| |_ _ _ _ | |_ _ _ | |_ _ _ |_ | _ _| | _ _ _ | _|_ _ _|_ |_ _ |_ _| |_ _|_ | | _| |_ _| |_ _|_ _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | | _ _|_ _ _| _ _| _ |_ _ | _|_|_ | | | _ _| _ _ _ _ | | | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ |_ |_| |_ _ _| _ _ |_ _| | _ _| | |_ _|_ | | |_ _| | | | _ _| | | | | | | | |_| _ _ _| _ _| |_ _|_ _ | | | +|_ _ _ _| _ _|_ _|_ _ |_ _| _|_ |_ _ _ |_ _ _ _| | | _|_| _| _ |_ |_ _ _| | |_ | _ _|_| |_ | |_| _| _ |_ _ _|_ _ | _| _ _|_| | _ _ | | | | | |_ _ | _|_| _ _ |_| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_| |_ _ _| | _|_ _ | | | | | | | | _ |_ _ |_ _ | |_|_ _|_ | | _| |_ _ _ |_ _| _| |_ _ _ _|_ |_| _|_ _ _ _ |_ _ _ _|_ _|_ _ |_ _ |_ _ _| _|_ _ |_ _ _|_ _ _ | | _ _|_| | |_ |_ _ | | |_ _|_ _ | | | _| _ _|_ _|_ _ | | |_| _ _ _ | _|_|_ | | | _ _|_ _ |_ | | _ _ _ _ | | |_ | |_ _ | | |_ _| _| _ _|_ _ _| | | _ _|_ _ _ | | |_ _ | _| | | |_ _|_ | _ | _| | |_ _ _| _| | _| |_ _ |_ _ _ _ _| |_ _| _| | |_ _ | | | | _ _| |_ |_ | | |_ _| _ _| _ _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | _ _ | | _ | | |_ _| _| _| | |_ _|_ | | | |_ _| _ _ |_ _ | _ _| | | | _| | _|_ _ | | _ _| |_ | | | _|_|_ |_ _| | | _ _| | _| |_ _|_| _ |_ | _ _|_ | _ | _| | |_ _|_ _ _ _ _| | _ _| | |_|_ _|_ _ |_ _ _|_ _|_ _ | | | |_ _| _ | | | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ _ _ _ _| | _| | | |_| | _ _| | _ _ _ _ | |_ _ | | | _| _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ _| |_ _ |_ _ _ _| |_ | |_ _ _ _ _| |_ _| _ _| |_ |_ | | |_ _|_ _ | |_ _ _ _| _ _| _| _ _ _|_ _| | _ _| |_ |_ | | | | | _ _ _|_ | | _|_ | _| _ _ _| | _ _ _ _|_ _|_ _ |_ _| | _| |_ _ | | | | _ _| | _|_ | _|_ | |_|_ _ _ | |_ _| | _ _| | | |_ |_ _ | |_ _ | | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_| | _ _ _|_ _ _ _| | | | _|_ _ _ _ _| |_ _| _ _ _ _| _ | | _| | | |_ _|_ |_ |_ _ _ | | |_|_ | _ _|_ | | _ _ _|_ | | |_| |_ | | | _| |_ _| | _ _| | | | | | _|_|_ _ _| |_| |_ _ _ _ _ _|_ _ _ _ _ _ _ |_ _| | +| | _| | |_ | |_ _ |_ | |_ | _ _ _ _ | |_ _| | | _| _ _|_ | _ _|_ | _| _ |_ |_| | _|_ | |_ | _ _ _| |_ _ _| _ |_| _ _| | | _| |_ _| | |_ _ |_ _ | | _|_ | |_ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | _| | | |_ _|_ | _ | _| | |_|_ _ _| _ _|_| _| | |_| | | |_ | |_| _| | | _ _| |_|_ | | | |_ |_ _ | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| _ |_ _ | |_ _ | | | | | | | |_ | _| | | |_ |_ _ | |_| |_ _| |_ _| _ _ _ |_ _ _| _ _| | _|_ _ _ _ _| |_ _| _ | _| | | | | | _| |_| | |_ _| _ _| |_ | _ _| | _| _ |_ _| | |_ _| | | | _ |_|_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _| |_ |_ _ _| |_ |_ | _ _ | | _| _ _|_| |_ | _ _|_ _ _|_ _| | |_ _ |_| | |_ | | | _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | _ _|_| |_ _| | | | |_|_ _ _ _ _ _| _ _ _ _ _ |_|_ _|_ _ _ _ _ | | |_| |_ | | | |_ | |_ _ _| | |_| | | | _|_ _| | |_|_ _ _ _ _| _|_ _| | _ _| | _| | _ _ _| |_ | | | _| _|_| |_ _ _|_ _ _ | _| _ _| | | |_ _ _ | |_ _ | _ _ _ _ |_ _| | | |_ _ |_ _| | | | |_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _|_ _ |_ _| |_ _ _| |_ | |_ | _|_ _ | | _| |_ _ | | | | _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ | | |_ _| _ |_ _ _ | | _ _| _ _ _| |_| _ | | _| _ _ _| | |_|_ |_| _ _ |_ _ | _ _| | _ _| | | _| |_ _ | _ _| | | _ _|_ | | | _|_ _ _ | | |_ _ _ _| | |_ _ _| | | |_ _| | _ _| |_ _| |_ _ |_ _| | _ _|_ _|_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ _| _ _| | _|_ | _|_|_ | | | _ _| _ _ _ _| | | _|_ _ _|_ | |_ _ _ _ | | |_ _ _| _ _ _ _ _ _ _| _|_ _| |_ _ _| |_ _|_ _ _ _ _| |_ | _ _| |_ _|_ _ |_|_ _ _ _| |_ _ | _ _|_ _|_ | | _| |_ _| | _| | | | | | |_| |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| +| _|_ | | |_ _ _| | _ _| | _| _|_ _| _ _ |_ _| | _ _| | _| |_ _ _ _ _| |_ _ |_| _| _ _|_ | | |_ _|_ _|_| _| _ | _ _ _| |_ | | _ _|_| |_| _| _ _| |_ _ |_ _ |_| | |_ _|_ _ _| |_ | _|_|_ | | | _ _|_ _ | | | | _| | |_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _| _| | _ _ _| | _|_ _ _ _| |_| _ _|_ | |_|_ _ _ _ _ _ _|_ | |_|_ | | _ _|_| |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| |_ | _| _ _| | |_ _| | |_ _ _|_ _| | | | |_| _|_|_ _ _ _ _| _|_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ | | _ | _ |_ _| _ _|_| |_| |_ _| | _| _| | | | _ _| _|_ | _|_| | _ _| _ | |_ _|_ _ _|_| |_ | | _ _| | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | | _ _ _ _| | | _| |_ _ | |_|_ _| _| _ |_ |_| |_ _ | _ _ _|_ _ _| _| | | _| |_ _ |_ |_ |_ | _|_|_ | | | _ _|_ _ _ _ _| | | | _ _|_ | | |_ _ |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_ _ | | |_ | | _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _ _ _ _ |_ | | | |_ _ _ _ _| |_ _ _| _| _ |_| _ _ | | |_|_ _ _ _ _| _| |_ _ _ | |_ |_ | | |_ | _ _ | _|_|_ | | | _ _| |_|_ _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| _ |_ _ _ _ |_| _ |_ | |_ |_|_ | _| | |_ _ _|_ | | | |_ _| _|_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ _| |_ _| |_ | | _| |_ | |_ _ |_ _| | _ _| _ |_ |_ |_ _|_ | _|_ _ |_ _|_ _ |_ _ | | | |_| |_ | |_ | _|_ _| _| _| | |_ _| |_ | _| | |_| | |_ _ _ |_ _| |_ _| |_ | | _|_| _ _| | | _ _ _| |_ | | |_ | | |_ _ |_ |_ _ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| _|_ | _|_ _ _ _ _| |_ _| | _| | _ _ _| | |_ _ _ _ _| _ _| |_| |_|_ _ _| | | _| _ _ _ _ | |_| _ |_ |_ |_ | _ _ | _ _ | | | |_ _ |_ |_ _ |_ _ _ | _| | | _ _ | | |_ |_ _ | |_ _| _|_| | |_| | | | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | +|_ | |_ _|_ _ | |_ | _ _| |_ | _ _ _|_ | | |_| |_ | | |_ _ | _ _ | | _| _| |_ _ _ _ _| |_ | _ |_ _ |_ |_ | |_ _ _ _| _| | | _ |_ |_ | |_ | | | _|_ |_ | | | _| _ _|_ _ |_ _ _ _ _| |_ _| _ _ _ _| |_| | | _| |_ |_ | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | |_ _| | | _ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| | _ _|_ | | |_ _ | |_ _ _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _| _|_ | | _ _| | _ _ _| _ _ _ |_ _| |_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | | |_ _|_ _| _| | |_ | _| _ |_ |_ |_ _|_ _ _| _| | | | | |_ _| |_ _ |_ _ | _| _ _|_ _ _| _ |_ |_| _| | |_ _| | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| |_| | | | _ _|_| |_ _ _ _| | | _ _| _| _ _|_ | _ |_ _ _| | _ _ |_| _| _| |_ |_ _ | _ _| _| _|_ _ _ _ _| |_ _| _ _ | _ | | |_ _| | _ _| |_ _| _ _| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _|_ |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_|_ _ _ _| |_| _ _|_| _ _ _| _| | | _|_ _ |_ _|_ _ _ _ | |_ _|_ |_ _ | |_ _ _ _| |_ | |_ | _|_ _ _ _ _| |_ _| _| _ | | _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | _|_ _| _ _ |_| _| _ _|_ | |_ | _| | _|_ _ | | | | | _ _| | | | _|_ | _|_|_ | | | _ _|_ _ |_| | |_ _ | | |_ _ |_ _ _|_| | _| _|_ _ |_ _ | | _| _| _ _|_ | _ _ _ _| | _ _ _ _ _| |_ _ |_ _| |_ _|_ | | _| |_ _| | _ _ _| _| _|_|_ _ _ | _| _ _|_ _|_ _ _ _ _ _ _ _| |_ |_ _| |_ _ _| |_ | | | | | _| | |_ |_ _| | | |_ |_ _ |_ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_|_ _ _|_ _ _ | | _ _|_ _ |_ _ _ _ _ _| _ _ |_ _ | _ _| | _| _ _| | |_| | |_ _ | | _| |_| _| _ _|_ |_ |_ _|_ | |_ _ _|_ _|_ |_ _ |_ _ _ _| | _ _ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_ | |_ _ _| _| | _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | +| _| _ _ _ _ _| | |_ | _| |_ _ | |_ _|_ | | _| |_ _ |_| | |_| _ _| |_ _| |_ _ | _ | | |_ |_ _ |_ _ | | | _ _| | | |_ _| _| _ _|_ | | | | |_ _ | | _|_ _ _| _| |_ _ _| | | _ _ _ _| _ _ | _ _ _ _| |_| _| |_ _ |_ _| | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | | _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | _ _| |_ _| _ _|_ | _ _ _ _|_ | _|_|_ | | | _ _|_ _ | | | | | | | |_ _ | |_ | | | _ _ _|_ _ |_ | _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ |_| |_ _ |_ _ _| |_| _| _ _|_ |_ | | _ _ _| | |_ | _|_ | | |_ _ |_| |_ _| _ _ |_| _| _ _|_ |_ |_ _| | _| |_ _ _ _ | |_ _ |_ _ _| | _ _| |_ _|_|_ _ |_ _ | | _ _| | |_| _| |_ _ _ _ _|_ |_ | _ _|_ _ | | _| |_ |_ | | _ _|_| |_ _ _ _ _ | _ _ | _ _| | | _|_ _| |_ _ _ |_ _ _ _| _ _| _ _| _| _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_|_ | | _ _|_| |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ _ |_ _ |_ |_ _ | |_ _ |_ _ _ | | _| |_ _ | _| |_ _| | |_ |_ _ | | | _ _ | _ _| _ _ _| | | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | | | | _| | | _ _ _| | | _| |_ _ _ _ _| | _|_ | | | _ _| | | | | | _| | _ _| | _| | _ _|_ _ _ _ _| |_ _| | _ _|_ _ | | _ _| |_ _| _ _| _ _ | | | _|_ |_ _ | |_ _| _| |_ _ _ _ _|_ _ | _| |_ _ _ | _ _| _ _| | |_ | | | |_ |_ _ | _ _ _ |_ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ _| _| |_ |_ |_ _| |_ _|_|_ | |_|_ | _ |_| | _| |_ _ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _|_ _|_ _ |_ _ _ _ _ _| _| _| |_ _| |_ | | _ _ _| | | |_| |_ | | | _| | _| |_ |_ _ _| | |_ _ | _| |_ _ _ _ _| | _ _ |_ _ _ _ | |_ _ |_ _ | | _ |_| |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ _ _ _ _| _| _| |_ _ | _|_|_ | | | _ _| _ _ _| | | |_| +| |_ _ |_ | _ _|_ _| | | |_ | | _| | | |_ _ _| | |_ |_ _ | _ _|_ | |_ _ _ _ |_ | _|_|_ | |_ |_ |_ _|_ | _| | |_| _ _| |_ _| | | |_ _ _ _ _|_ _ _| |_ _ | _|_| | | |_ | _|_ | |_ |_ _ _ _ _ _| _ _| _| _ |_ |_ | _|_ |_ _| |_ _ _ _ | |_ _ |_ _ _| | _ _| | |_ _ |_ _|_ _ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _ _| _ _| _ |_ _ _| | |_ _ _ _ _| |_ _| | _ _| |_| | | _| |_ _| |_ _ | | | |_|_ _ | _ _| _|_ _ _| | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | _ _| _ |_ _ _ _ | _| |_ _ _ _ _| _| | |_|_ _ | | |_ |_|_ _ |_ _|_|_ _ |_ | _ _ _| | | _| |_ _ _ _ _| _| | _| | | |_ _ | _| |_ _ |_ |_ _ _ |_ | | | | | | | _| | |_ | | |_|_ | |_ _ | | _ _| _| | _ _ _ _| | | | |_ _ _|_ | | |_ _ | _ | |_ _ _|_ _ _ |_ _| |_| _ |_ |_ | | _ _ | | |_ _ | |_ _| _ _ |_ _ | _|_|_ | | | _ _| _ | | | |_ | _ _|_ | | |_ _ |_ | |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| |_ |_| _ _| | _| |_|_ _ | |_ |_ _| |_ _ _| | _| |_ _ _ _|_ _| _ _| | | |_| _| _| |_ _ |_ _ | | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_ _ _ _ _ _| |_ _ _ _ | _ _ _ _|_ _ _ _ | |_ _ |_ _ _|_| |_| _| |_ | | | | |_ _ _ | _ | _ _ _|_ _| | _ _ _| |_ _ _| _ _| | |_ _ _| _| _ _| |_ _ _|_ _ | |_ |_ _ _ _ | _| _ _ _ _ _|_ _| _ _| _ _|_| | _| | |_|_ | | _ _|_| |_ _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _|_| _| |_ _ _|_ _ |_ | _ _ _| | _ _ _|_ _ _ _|_| _|_| | |_| | | _| | | |_ _|_ | _ _ _ _ | | |_ _ |_ _ |_ _ | _ _ | | |_ | | _ _| | | _| |_|_ _ | | | |_ _|_ | | _| |_ _ _ | |_ _ _ | | | _| | | | |_ _ _| _ _ | | | _| _ | _| |_ _ | _ _| | |_ |_| _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ |_ _ _ | | _| _|_ | |_|_ _ _ _ _| |_ _|_ _ _| |_ | | | | +| | _ _| _| |_ _ _ _| |_ _ _|_ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _| | _| _| | | _| |_ _ _| |_ _| _ _| | |_ |_ | | _ _| |_ _ _ _ _ _ _ _ | _| _ _|_| |_|_ | | | _| |_| | |_ |_ _ |_ | _ _| _ _| _| _ _|_ | |_|_ | | _ _ _ | _| |_ _ |_ |_ _ _ |_ |_ _| | | | _ _ |_ _ | |_| | _|_|_ | | | _ _| | _ | | | |_ _| _ | | | |_ _| |_| _| _ _|_ | _ _ | | | _|_ |_ _ _ _| |_| _| _ _| | _ _| | |_ | _ _ _| | | | | | | |_ | _|_| | _|_|_ | | | _ _| _ _ _| | | _|_ | | _ _|_| |_ _| |_ | | | |_ | _ _ _ _ _ _ _|_ _ _| | |_ _ _ _ _ _ _ _ _ _ _ _| _| |_ _ _ | |_ _ _ | _ _ | |_ _ |_ |_| | |_ |_|_ _ _| | | _| _ _| | | | | |_| |_ _| |_| | | | |_ | | _| _ |_ | | |_|_ _ _| _|_ _ _| _ _ |_ _ |_ _| | | _ _| |_ _| _ _|_ | |_ _ _ _ | |_ _| _| _| _ _|_ | |_ _| _ _|_ _|_ _ |_|_ _ _|_ | | |_|_ _ _ _ _| |_ _| | _|_ | |_| | | | |_ _| | _ _| |_ _| _ _|_ _|_ _ _ _| | _|_|_ | | | _ _| _| | | | |_| _| _ _|_ _ _| _|_ _| _|_ _ _|_ _| _|_ _ | _|_ _ _ _ _|_ _| _|_| _ _ |_ _ | _ _| | |_ _ _| | _| | _ _| | |_|_ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ | | _ |_ |_ | | _| |_ _| |_ _ _ _| _| |_ _ |_ | _ _| _ |_ |_ | | | |_|_ |_ _ |_ _ _ _| |_ _ _ | | |_ | |_ _ | | | |_ _ _| _ _ | |_ _ |_ | _| | _|_ | _ _|_ | | |_ _ | | _ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | | _|_|_ _ _| |_ _|_ _ _ _ _| | | _ |_|_ _|_ _ |_ _ _| | _ _| |_ |_ _| |_ | |_ _ _ _| |_| | | _ _| | _|_ _ | | |_ |_ _ | _|_ |_ _ _| |_ _| | _| |_ _|_ | | _ _| _ _| | | |_ |_ | |_ _ _| | | | _ _| | |_ | | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _ _ _ _| _| | | |_ _| | _ |_ _ _ | _ _ _ | _ _ _| _ _|_| |_| | +| | | _ _ _ _| _| | _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_| _|_ _ _|_ _| _| _ _ _ _ | |_ _ _ _|_ _|_ _ | |_| |_ | | _ |_ | _ _| _|_ | | |_ _ | | | |_ | | _| _| _| _ _| | | | | | _| |_ _ _ _ _|_ _ | | | _|_| | | |_ _ _|_ | | _| _| | | | _ _|_ _|_ _| _ _ _ _| | _ _| |_ _ _ _ _| |_ _| | _|_ _| _| | | | |_| | | | |_ _|_ _ |_ _ _| | | _ _| _| | | |_ _| |_ _ |_ | _ |_ |_ | |_ | | | _ _| _|_ _| _ |_| |_ _| | |_ | | | | | | | | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | _ _|_ | | |_ _ | | |_ _| |_ | | | |_ _ _ _| _ | _|_ _ | _ _ _ _ | |_| _|_ _ _ _ _ |_ _| |_ _| | |_ _ _ _ _|_ _| |_ _|_ _ _| |_| | | _ | _ _| | |_ _ _ _|_ | | |_| |_ | | |_ _ _| _| _|_| |_ _ | |_ | _ _ _| _| | |_| _ _| | |_ _ _ _| _ _| | _|_ _ | _| |_ _ | | _| |_ _ _ _ _| |_ | _ | |_ _ |_ _ | _|_ _| | _ |_ _ _ | _| _| |_ _ _| |_ _ _ _ |_ _ _ _| _ _| _ _ |_| _ _ _|_|_ _ _ _ _| |_ _| _ _ _ _| |_ | | | _ _| | _ |_ _ _ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| _| | |_| |_ | |_ _ | _| | |_ |_|_ | _| | _ _| | _| | _| | | _|_|_ | | | _ _|_ _ |_| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_| _| _ _|_ | | |_ |_ _ | |_ _ |_ _ _ |_ _ _|_ | | _| _| _ _|_ |_ |_ _|_ _ |_ _ |_ _ | _ _|_ _ _ _ _ _| _| _| | _|_ _|_ |_ | _ _| | _| |_ _ |_ | | |_| _| |_ _| | _ _| |_ _| _ _| | | |_ |_| |_ | _|_|_ | | | _ _| | _ _ | | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | | _ _ _| | _ _ | | _|_| |_ |_| _ _ |_ _ | _ _| _ _| _| |_ |_ _| _ _ | | _|_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _ _| | | | _| _| | | |_ | _|_|_ |_ |_|_ |_ _| | | |_ | | _ _|_ _ _| | _| | | |_ _|_ |_| | |_ _ | | |_ _ _ |_ _ | _|_ _| | _ _|_ _ _ | |_ _| | |_ _|_ _ _| _ |_ | | +|_ _|_ _ _ | _| _| | |_ _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | _ _ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | | _| |_|_ |_ _ _|_ _ | | _ _| |_ _| _ _| | |_ _ | | |_ _| _| | | _ | |_ _| |_ _| |_ _ _| _ _ _| |_| | _ _| | _| _ _ _| | | | | | _| | |_ _ _ _ _ _ |_ | _ |_| |_| _ _ _ _ _ _ _ _| | _|_ _| |_ _|_ | |_ _ _ _ |_ |_ _ |_| _| | | _ _| _| _ _ _ _| _ _ _| _| _ _|_ | | | | |_|_ |_| _ _ _ _|_ |_ | _| |_ _| |_ | |_ _|_ _| _| _ _ _ | _ _ _ _ _ _|_| |_| _| | _ _| |_ _| _ _|_| | _ _ _| _| _| |_ _ _ | _ _| _|_ _ _ | |_ _ | | _| | _ _|_| _ _ |_ _ | _ _| | | _| |_ _ _ _ | |_ _ | _ _ | _ _|_ _ _ _|_ _| _| _ _|_ _| |_| _ _| |_ _| _| |_ |_ _ _| _| _| | _| |_ _ |_ _ | _ |_ _|_ | |_ | | | |_ | | |_|_ _ _ _ | |_|_ _ _| _| | | |_ _ _ _ _| | | | | | | |_ _ _ _| | | _|_ _ |_ _| _|_ _ | | _| | _| _| _ |_ |_ _| | _ _ _| | |_|_ |_ _ _| _ _ _| _ _ _ | _ _| _| _|_ _| |_ _ | _|_| |_ _ _ _ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ _|_ | | _| |_ _ | |_ _|_ | | _|_ _| | | | | | | | | | |_ _ _ _ _| |_ _| | _ _|_ _ | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | |_ _ _ _ _| |_ | | _ _|_| |_ _ |_ _ _ _ _ _| _| _| |_ _ _ _ _| | |_ _ _ |_ _ |_ _ | |_ _ _ _| _ |_ _ _| _| _| | | _| | | | |_ _ _| | _ _ _| |_ | | _| | | _ |_ _ _ _| _ _| | | | | | _| _|_ _|_ _ _ _ _| |_ _| | | |_ | _| | _|_ | |_ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ | |_ _ _ |_ _| | |_|_ _ _ _ _ |_ | | _| | _ _| |_ | |_ | | | |_ _ _ _ _ _| | _| | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| _ _ _| |_ _ _| _| | _| |_ | |_ _ _ _ _| | | _ _| | | | |_ | | _| _ _| |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _ _ _|_| _ |_|_ _| _ _ |_ _ | _ _| | | | _ _ |_| _| _ _|_ | +| _ | _| | |_ _ | |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _|_ _ | _ |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ | _ _ _ | | |_ _ _ _| _ _| _ _|_ _ | _|_ _ _| | | | _| _ _|_ _ |_ |_|_ _ _ | |_ | _ _ _| | _| | | _| |_ _ _ _ _|_ _|_ _ _ |_ |_ _ _ _| |_ _ |_ |_| _|_ _ _| _ _ |_ _ | _ _| | | _ |_ |_ | | | |_ _ _ | _ _| | _| _ _| | | | | | _ _ _ _ _| | | |_ _ _ _ _|_ _ _| |_ _ | |_ _ _ _ _| _ _| _| | |_ _ _ _| _|_ | | _ _| _| _ _| | | |_ _ | _| _ |_ |_ _ |_ _ _ _| _ _| _ |_ _ _| _| |_ _ _|_ | | | |_ _ | |_ | _| | |_ _ _| | _ _ _| | | |_| |_ | | _| _ _ | | _| |_ _ | |_ _ | | | _ _ _ _ | |_ _| | _ _ _ _|_ |_ |_ _ |_| _| _ _| | _ _ _|_ | | |_ _ _| _| | _| | | | _ _| | | _| |_ _|_ _ |_ _|_ _ |_ _ _|_ | _ _ _ | | |_ | | |_| _ _| |_ _| |_|_ | _| _ _| |_ | _|_ _ |_ _ |_ _ _|_ |_ | _| _| _ _|_ | | _|_ _ _ |_ _|_ _ |_|_ _ _ _| | | _ _ _ _|_ _ _ _ |_| _| _ |_ |_ |_ _ |_ _ |_ | | | | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ _ _ | | | |_ |_ _ | |_ _ _| |_| |_ _ | | _|_| _| | | | |_ _ _ _ | | _ _ | _| | | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | _| |_ _ |_ _| | _ _|_ | | |_ _ | | |_ _ _ | _| | |_ _ _| _ _ |_ _ _ | _ _| | | _|_ | _ _ _| | | _ _ _| _|_ _|_ _| |_ _| |_| | |_ _ _ | _| | _| _| | | _|_ _| | | _ _ | | |_|_ |_| | _| | _ _ _| _ _ _ | _| |_ _| _|_ _| |_| _ _|_ _ | |_| | |_ _ | _|_|_ | | | _ _| _ _ _ | | _| |_ _| | _ |_ _ _ |_|_ _ _ _ | |_ _| _| |_ _ _| _ _| |_ _ | | _|_ _| _ _ _ | |_ _ | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | _| _ _ _|_ | | _| _| |_ | _ _ _ _ _|_ | _|_ _| |_ | |_| _| | _ _|_ |_ | | _ _ | _ _| |_ _ _ _|_ _ _ | |_ _ | | _ _ _| | | _ _ _| | | |_| |_ | | |_|_ _ | | _| |_ _ _ _ _| +| |_ |_| |_ _| |_ _ |_| |_ | _| | | |_ _|_ | |_ _ _ |_ | | |_|_ | | _ _|_ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | _ _|_| |_ _| _| |_ _ | | | |_ | _ _|_| |_ _ | |_| |_| |_| | _| _| | |_|_ | |_ _ | | | | |_|_ _ _ | | _ _ _ _ | |_ _| | _ _ _ _|_ |_ _ |_ | | | _ _ _|_ | | |_| |_ | | _| _ _|_ | | |_ |_ _ | |_ | _ _| |_ _ | _| | | |_ _| _| | _ _| |_ _ _ _ _ _ _ _ | _| _ _|_| |_ _| _ _| |_ | |_ _ _ _ | | | | | | |_ _ | _| |_ _| |_| _| _ _|_ | |_ _ _ _ | | |_|_ |_| _ _ _| _ _ _ _ _| | |_ _|_ _ |_ _|_| _| | _| | _ _|_ _ | |_|_ _|_ | | _| |_ _| |_ _ _ _|_ _ _| | |_ _| | | |_ _ | | _| |_ _ | |_ _ _| |_ | _ |_ _ _ |_ | _|_ _ | |_| | |_ _ _ _ _ _ | _|_ _| _ | |_| |_ |_ _ | _ _ | | |_ _ | | |_ _|_ _ | | _| _| _|_ | | |_ _ _ _| _ _|_ |_ | _ _ _ _|_| |_ _ _ |_ _ |_ | |_ _| | _| |_ _ _ _ _| |_ _ _ | |_ _ _ |_ _ |_ _ | | | |_ _| _ _ _ _ | |_| _| _| _ _|_ |_ _ |_ _ |_ |_ _|_ _| _ _ |_ _ | _|_|_ | | | _ _|_ _ | | | _ _ | | | |_|_ | | _ _|_| |_ _ _ | _ |_ _|_ _ |_ _| |_ _|_ _ | | _| | _|_ | |_| _| _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | _|_ | |_ | | _|_ _| | _ _| |_ _| _ _|_|_ | | | _|_ _ |_ | | |_ _ |_ _ _|_ | _ _| | | | _|_ _ |_ | |_ _ | _| _ _ _ | _ _| _| _| |_ _ | | _| | | | | |_|_ _ |_ _ |_ _ | |_ _|_ _ |_ _ _| |_ _|_ | | _|_ | _|_ _| |_ | _| _ |_ |_ | _ _ _|_ _|_ |_ _|_ _ _ _ _| |_ _| _ _|_ | _ _| | | |_ _ _ _|_ _| | |_ _ | | _| |_ _ |_ _|_ _ |_ | _ | _| |_| _ _ _|_ _| |_|_ _ _ _| |_| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _|_ _ _ _| | |_ _ | _ | | | |_ |_ |_ _ _| _ _ _ |_ _| _ |_ |_| _ _| _| | _ _|_ | |_ _| | |_ _ _ _|_ _ |_ | _ _|_ _ | |_|_ _ | | |_ _ | |_|_ _|_ | | _| |_ _ | _| | |_ _ _ _ _ | +|_| | _| _ _| | | _ _| |_ _ _| |_ _|_ _ _ _ _| | |_ _ | |_ _|_ _ |_ _| | | _ _ _ _|_ |_ _| _|_|_ | | | _ _| | | |_| | | _ _|_ | | |_ _ | |_ _ _ _| _|_ _| |_ _|_ | | |_ _ | |_ |_ |_|_ | |_ _|_| _|_ |_ _| | _ _| | _ _ _| |_| |_ | _ |_ |_ _ | | _| |_ _ | |_ _ _| |_ | _| |_ _| |_ _ | | |_ _|_ | | _| |_ _| _ _ _ _|_ _ |_| _ _| | |_ | _ _ |_| | _|_|_ _ _| _| | |_ | | _ _ _ | _ _| _|_ | | |_ _ | | _ _| | |_ |_| _ |_| | | |_ _| | |_ | |_ | | _| | _| |_ _ _ _ _|_ _ _ | |_ _|_ _ |_ _ _ _ | _|_| _ _ _ |_| |_ _|_ _ _ | | | |_ _| |_ |_ _| | | | _ | | |_ |_ _ | _ _ _ |_ _| | | | | _| | | _| | |_ _ _| _| | | _| _ _|_ _ _|_ |_ _ | | |_ |_ _| | |_ _ _|_ _| |_| |_ _|_ _ _ |_ _| |_ |_ | | _ _|_| |_ _| | _ _| |_ _|_ | _ _ _|_ _| _| _| | | | |_ _| _ _| | _ _| | |_ | _ _ _ _|_ |_ _ _ _|_ | |_ _ _ | |_ _ _| _ | _ |_ _|_ _ | _ _| | _| | _| _ |_ _ | | _| |_ _ | _| |_ _ _ _ _| |_ _ _|_ | |_| _ _ _| | | |_|_ _ _ _ _| |_ _| _ | | _|_| | | _ | |_ |_ | _ _|_ | | |_ _ | | | | |_ _ _ _|_ _ |_ _ _ _ _| _| _|_| | | | _| _| _| _ _|_ | | _ _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_| _ _| | _| _ _ |_ |_ _ _ _| _ _| _ _ _ _| | | | | _| _| _|_ _ _ _| _|_ | _|_ | _ _ _|_ _ _ _ | | _ _| | _ _| _| |_ _ _|_ _ _| | |_ _ |_| | |_ _|_ _|_ _ | _ _| |_ | | | _ _ _ |_ _ | |_ |_ _ _|_ _ _ _ _|_ _ |_ _ _ _| _| _ _|_ | |_ _ _| |_ _ | | _ _ _ _ _ _| _ _| | |_ _ _| |_ |_ _ _ _ _ _|_ _|_ _| _|_ _|_ _ _|_ | | _ | | _ | | | _| | |_ |_ _ | _ | _| _ _ _ |_ | | _| | | |_ _|_ | |_ _ _ | | | |_|_ |_ | _|_ _| | |_| |_ _ _|_ | | _ _ _| | |_ | _| _ _|_ | _| | _|_ | _ _ _| | |_ _ _ _ | |_|_ | |_ _ | | |_ _ _| | | |_ _| | |_| _| | |_ |_ _ | _ _| |_ | | | _ | +| _| | | | _ _|_ |_ | _ _ _ | | _ _ | _| _ _|_ _ |_ _| _ _|_ _ | _|_ _ _| |_ | |_ _ _ _ _| |_ _| _|_ _| |_ | | _| | _ _| |_ _| _ _|_ _ | |_ _ _ _|_ | | _ _| |_ _| _ _|_ | _| _ _ _| | _ _ _| _ _| | _ _|_ _ _| _ |_ | _|_ _| | | | _| | |_ _ _| | | | _| _ _|_ _ _| | |_ _ _ _| | |_ _ _ _| | |_ |_ _ | _ _ _ _ _ | _ _| | | |_ | | |_ |_ _ _ _| _ _ |_| _| _| | _| |_ _| | |_|_ _ | | _ _| |_ _| _ _| | |_ | | |_ _|_ | |_ | | |_ _ _ _| | _| |_ _|_ |_ | | | |_ | _ _ _ _ _|_ _| | | |_ _ | _| | _ _ _| _ |_ |_ |_|_ |_ |_ _|_| | | _ _| _| | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ | | | | | _| |_ _|_ | _| | _ _ _ | | _ _| | | _ _| _ _ _| | |_ |_ | | | _|_ _ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _| | _ _|_ | | |_ _ | | | _ _| _| | _ | _ _ _| | | _| | | |_ |_ |_ | |_ | | |_ |_ _ _| |_ |_| _ _ _ _| | | _|_ | | _ _| |_ _| | |_ _ _ |_ _| | _ _| | _|_ _| | |_ _| | |_ _ _| | _| |_ _ | | |_ _ _ _ _ _| |_ |_ _ | |_|_ _| | | _ | _ _ _ |_ _| _ _ _| |_ | |_ _|_ |_ _| | _ _| |_ _| _ _| | |_ |_ | | _ _ |_ _ _| _ _ |_ _ | _ _| | | |_ |_| _| |_ _ _ _ _| |_ _ | |_|_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ | | _| _| |_ _ _ _ _ _ | | | |_ _ | _| |_ _|_ _| _| _| |_ _ _| _ |_ | | | | _ _ |_ _| | | |_ | _|_ _ _ _| | _| _ _ _ _ _ _ _ _|_ _ _|_ |_| _ _ |_ _ | _ _| | _|_ _|_ _ _ |_ _ _| | | |_ _| _ _ _ _ | |_ _ |_ | _| |_ _ _ _ _|_ | _ _| | | _|_ _ _| _ _ |_ _ | _ _| | |_| _ |_ |_ |_ | _ _ _ _ | |_ _ _ _ _ _ _ _| |_ | |_| | _| |_| | _ _|_ _ _ | |_ _|_ _ _| | _ _|_ |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ |_ _ _ _ | _|_|_ _ _ | | _|_ _ _ _ _|_ _ _|_ _ _| _ _ _ _|_| _|_| _ |_|_ | | _ _| |_ _ _ _| _| |_ _ | | _ _| | |_ _| | | _| |_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _| |_ | | +| | _| | |_| | _ | _| | | |_ _|_ _| | |_ _ _ _ _ _ |_ _ |_ |_ _ _| |_ _| _| _ _|_ _ _| |_ | _ _ _ _ _ | | | | _ _ _ _| |_ _ |_ _ _ _| _ _| _ _ |_ _|_ _ | _ _ _| |_ _ _ _| _ _| | | |_ _ _| | |_ _ | _ |_ _ _| _ _ |_| _| _ _|_ | _ _|_ _| | | _| | _ _ _| | | _| | | _ _ _|_ _|_ _ _ | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ _|_| | |_ _| _| | |_ _ _ _| _ _ _| | | _| |_ | |_ |_ _ | _|_ _| | |_ _ _ _| _ _| _ | | _| |_ _ _ _|_|_ |_ _|_ _ | |_ _ _ _| _ |_ | | | |_ | | | |_ _ |_ _| _ _ _|_ _| | _ _| | | _|_ _ _ _ _| | | |_ _ _ | _|_ _ _ _ _ _ _| |_ _ _ _ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ _| |_ | | _ | | | _ _| | | | | | | _| | | |_ _ _| | _ _| _| |_ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _| |_ _| _ _|_ |_ | _|_| _|_ _| |_ _ | _ _| | _|_|_ |_| _ _| | |_ | | | |_ |_| _| _ _|_ _ _| _| _ _| | |_ _ _| _| | | |_ _ _ _| |_ _ | | _ _|_ | |_ _ _ _| _ _| _| _| _|_ |_ |_| | | _| |_ _ | _ _| _|_ _| | |_ _ _ |_ _| |_ _| | |_ | _| | | _| _ |_ |_|_ _ _ | | _ |_ _ _ _| _ _| _|_ |_ _ _|_ _ _ _| | _ _ _| | | |_| |_ | | |_ |_ | |_ | _ | | | _| |_ _ _ _ |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | |_ |_ _| _| |_ _ _ _ _ _|_ _| |_ |_ _ | | _ _ _| _| _|_ _ | _ _| _| _| | |_|_ _ | | _ _| | | | _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ | | | |_| |_ | |_ _ _ | _ | | _ _| | |_ |_ |_ _ | | _| |_ _ |_ | | |_ _ _| _ | | _| | | | | _ _ _|_ | | |_| |_ | | | _| _ _|_ | | |_ _ | | _| |_ _ | | _ | | | _|_ _ _|_ |_ |_|_ _| _ _ _ |_ _| _ | _ _| | _ _ _ _|_ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _ | _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _ | _| |_ |_ _ |_ _| | |_ _ _ _ |_ _ _| _| | |_ | _|_ _ _ _| | | _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| | | | +| |_ _| | | _|_ | | | _|_ _|_ _ _ _ _ | |_ _ _ _ | |_ _ |_ | | |_ |_ | _ _| | _ _ _ | | | | | _ _ _ _| | |_ _| _ |_ |_ | | _ | | |_ _ | | _ _ _ _ _| |_ _ _ | _| | |_ _| |_ | _ _|_ _|_ _ _| | | _| _ _ _|_ | | _| |_ _ _ _ _|_ |_| | _| | | | _ _ _| | | | _| |_ _ |_ | _ _ | | |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _| |_ _ _|_ _ |_ | _ _ _ _ _ _|_|_ _ _ _ _| |_ | | _ _|_| |_|_ _| |_ _ | | | | | |_ |_ _ | _ _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _ _| |_| _| | |_ _ |_ _ |_ _ | _ | | | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| _ |_ |_| | | |_ _| |_ _ _ _| | | | |_ _|_ | _ _ | _ |_ | _ |_ _ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| _ _| _ _|_ | | _ |_ _ _ |_ _| | | _ |_ _ _ |_ |_ _ _ _| | _|_ _| | | | _ _| |_ _ | | |_ _ _|_ _ _ _| _|_ | | |_ |_ _ _ _| _| | |_ _ | | | |_ _ _ _| |_ _ | |_ _ | |_ _ _ _| _| _| _| _ _ _| | | | | _| _ _| _|_ _ _ _| | _| _ _ _ |_ | _| _| _| _ _|_ | | |_ _| |_ |_ _ | | |_|_ | | _ _ _ _ | |_ _ | |_|_ _|_ | | _| |_ _ _ | |_ | | | | |_ | | | _ _ _| |_ | _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| |_ _ _ _| |_ _ _ | |_ _ _ _|_ | |_ _ |_ _| |_ _ | |_ _ _|_ _| | | |_ _|_ | |_ _| _| | |_ | |_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _|_ | | _| |_ _ _| | | |_| |_ | |_ | | | | _| | |_ _ _|_ | | _| |_ |_ | | _ _| | | | | | | | |_ _ | _ _|_ _|_ | | _| |_ _ |_ _ _ _ _| | |_ _| | |_ _ _|_ | | | | | | |_|_ _ _| | | _| | | _ _ _| | |_ | _| | |_ | | | |_ |_| |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | | | | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _ _ _|_ | _| |_ _ _ _ |_ _ _ _ _ _ _ _| _|_ _ _ | | |_ _| _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| | | +| _ |_ |_ _ |_|_ |_ | _ _ _ | | |_ _| | _| |_ _ |_ |_ _ _|_| | _|_ | _|_ | | | | |_ _|_ _ | | _ _|_ |_| _| _ _|_ | |_ | | |_ _|_ _ |_|_ _ | _ _ _ _|_ |_ | |_ |_ _|_ _ |_ _ | | | _ _ | _|_|_ _ _ _ | _|_ _ | _ _ _ _ _ _|_ _ |_ _ _ _| | _| _ _|_| |_ | _| | | |_ _ _ _| |_| | | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ | | |_ _ | |_ _ _ _| _|_ _| |_| |_|_ | | _ _|_| |_ _ _ | _ _ | _|_ _| | | |_ _ _ _| _| |_ | _ | | _ _| _|_ _|_|_ | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _| _ _|_ | _ _ _ _|_ _ | | _ _|_ _ | _|_| | | |_ | | | _|_ _ _| |_ |_| | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ | | | |_ _ | _| |_ |_ _ _ _ _ _ | _|_ _|_ _ _ _ |_ _ _ _ _ _ _|_ _ _ _ _ _| |_ | _| | | |_ _|_ _ |_ _ _| _ _ _| _ _| |_ |_ | _ | |_| |_ _ | | | |_| _ _ _ _|_ |_ | | |_ _ _ _ _| _| _| | | | | | _ _| | | |_ | | |_ _ _ | |_| |_ |_| | | |_ | | | | _| |_ _ _ _ _| |_ _| |_ _ _ |_ _ _ |_ _|_ _ |_|_ | _ | | _| | | _| | |_| _| | |_ |_ _ | _ _| _| | | | |_ _| | _| _ |_ | | | _ _| | | | | |_ _ _| _| | | | |_ _ |_ _ | |_ _ | | | _ |_ _|_ _ | _ _ _| _ _| | _ _| _| | | _ | _|_ _|_ _ _ _ _|_ | | _| | | | _| |_ _ |_ _ |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ | | |_ |_ _ | _ _| |_ _ _ | | | | | | |_ _ | _| _| _ _| | | _| _| _|_|_ | _|_| |_| | | |_ | _| | _ _ _ | | |_ |_ _ | _ _ _ |_ _ _| | | |_ _ _ _ _| | |_ _| |_ _ _ |_ _|_ | | | _|_ _ _ _ _|_ _ _|_ _ _| |_| | _| |_ _|_ _ _|_ | | _ _|_ _ _ _ | |_|_ _ _ _| | | _ _|_ _| |_ _ _| _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ |_ _|_ _ | | |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_| | _| | +| | _ _|_ | |_ _ |_| _| |_| | _ _| _ _ _| |_ _ _| | | |_ | | _ _| |_ _| |_ _ |_ _| |_| | _ _ _| | | | | _| _| |_ _ _ _ _|_ |_ |_ _ _ _ |_ _ | _|_ _ _| |_ | |_ | _ | |_ _ | | | |_ _ _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ _ _| _| |_| _ |_ |_| _ _| |_ | | |_ _ _ _| | | _ | _| _ _|_ _ _ _| _ _| | | | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ _| _ _|_ _ | |_ _ _ _|_ | | _ _|_ | | |_ _ | _|_ _|_ _ _ _| | _|_|_ | | _ _ _|_ |_ | | | _| | _ _| |_| | _| | | | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | _| | | |_ _|_ | _ _ _ | | | |_|_ _| |_ _ _ _ _|_ _| _ _ _|_ _| _ _ |_ _| | _ _| | |_ |_ | |_| _ _ _ _|_ |_ | |_ _|_ _ _| _|_|_ | | | _ _| _ |_ _ | | _ _| | |_ _|_ _ |_ _ |_ |_ _ _| _ _ |_|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _|_ | | _|_ _ _ | |_ _ _ |_ _ | | _ |_ |_ | | | | |_ | | | |_|_ |_ |_ _ _| |_ | |_ _|_ _ | _ _ _| _| _| | |_ |_ | | | | _| |_ _|_ _ _ |_ _|_ _ _| _ _| | |_ | | |_ _| |_ _ | _ _ _ | |_ _ _ | | | _|_ | |_ _ | |_ _| | |_ _ _| | | _|_ _ _|_ | |_|_ | | _ _|_ _| _|_ | | |_ _ _ _|_| _| _ _ |_ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _|_ _ _| _ _| | _|_ _ _|_ _ _ _ _ _| | _| _ _| |_ _ | _|_|_ _ _| |_| | _ _ _ _ _ _ _ _|_ _ _ _| | |_ |_ _ | _ _| |_ _ _| _ | _|_|_ | | | _ _|_ _ _ _| | | _ _| | |_|_ | | _ _|_| |_ _ | _| |_| |_ _|_ | | | | | _ _|_ _ _ _|_| _| _ _ _| |_ _ _ _ _ _| | _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | | _ _| | | | | | | |_ | _ _ _ _ _ _ |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _ | _ _ _| _| |_ _ _ _ _| _| |_ _ |_ _ |_ | |_ | _ _| _ _ _ _ _| |_ | _|_|_ | | | _ _| _ _ _| | | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | _|_ |_ | _| | | |_ _|_ |_ _| _ _ | | |_|_ _ _ _| | | | | +| |_ _ _ _ _|_ _ |_ |_ |_ _ _| |_| |_| | | | _| | | | _| | _| | |_ | | |_ _ |_ | |_ | | |_|_ |_|_ | |_ _ | | | |_ | | _ _ _ | | |_ _| _| _ _|_ _ _| | |_ _|_ | _ _| | |_ _| _ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _| _| _ _|_ |_ _ | | | | | | |_ _ _ _ _ _|_ _ | |_|_ | _ | _ _ | | |_|_ | |_ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| _ _ _|_ _|_ _ | _ _ _| |_ _| | _ _| |_ _| _ _| | _ _ | _ _ _| |_ _ _ _ _| |_ _ | _ _|_ _| |_| | | |_ | _| _ _|_ _|_ _| | |_ _|_ | _|_|_ | | | _ _| |_ _ _| | | | _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _ _ _ _ _ _ _ _ | |_| |_| _ _ _| | | |_| |_ | |_ |_ | |_ |_ _ _| |_ | | | _ _ |_ _ _ _ _| |_ _| _ _| |_ | | |_ _ _ _|_ |_ _ |_ _ | | | | _ _ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | _ _ |_ | | _ | _| | _| _ _|_ | |_ _| |_ _ | |_| |_ _| | _| _| _ _|_ _ _|_| _ | |_ _ | _|_ _ _| | | | | _ _| _ _ _| _ _ |_ _ _ _| |_ _ | | _| | |_ _ |_ | _| | |_ _|_ _ |_ _ | |_ _|_ _| | _ _| | | _ _| _ | _ _|_ _ _ | | |_ | _ _|_ | _ _ _| _ _| |_ _ _ _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | | | _ _| _ |_ _ _| _ _ |_ _ | _ _| |_ |_ | _| _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _ _|_| |_ _ | _| |_ _ _ _ _| |_ _| _ _ _| | | | | |_ _ _|_ | _ _|_ | | |_ _ | _ _|_ | _ _| |_ _| | |_ _ _| _ | _ _ _| |_ _ |_ |_ _ _ _| | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ | |_| |_ _| |_| | |_ |_ |_ _ _| |_ _ | | | |_ _| _ | | _| |_ _ |_ | | _ _|_ _ _ _ _| _|_ |_ _ |_ _ _| | | | | _|_ | | |_ _ |_ _ | | _ _|_ _ _| |_ _ _ _ _| |_ _| _ _| _ _| | | |_ |_ | |_ _ |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| |_ _ _ _ _| |_ _ _| |_ _|_ _ _ _ _| _ _|_| |_|_ _|_ _ |_ _ _ _ _|_ _| +| |_ _ _ _ _ |_ | _|_ _ _ _ | _| _ _|_ _|_ _| |_ _| | | |_| | _|_ | |_ |_ _| | | |_ | |_ |_| |_| |_| _ _| | |_ | _|_ _| | | |_ | | |_ _ | _| |_ | _ _| | | _ _ _| |_ | |_| | _ _| | _ _| | _| | _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_| |_ _ | | _| |_ _ _ _ _| _| | |_ _ |_| | _ _ _ _ | |_|_ _ _|_ _|_ _ _ _| |_ _|_ _ |_|_ | _|_ | |_| | | _|_|_ | | | _ _|_ _ _| | | | _ _ _| | |_ _ _ | _ _ _ _| |_ _ |_ |_ _ _ _| _ _| _ _|_ | _| | | _ _ | _| _ _| _| | _ _ | _| _| | |_ _| | |_ _| _ _ _ |_ _ _| _ _| | |_|_ _ _ _ _| |_ _| _|_ _ _ | | | | | | | | _ _ | _| _| | |_ | | _ | |_ _ | _ | _ _ _ |_ _ _|_ |_ _ | _| |_ _|_ | | _| |_ _ _ _| | _| _| _ _|_ _ _| |_|_ _ _ _|_ | | | _ _| | _ _ _|_| |_ | |_ _ _ _ _| |_ | |_ _ | _|_|_ _| _ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _| |_| | | _ | | |_ |_ | _|_ _|_ _ _ _| |_ _ _ | _|_ _ _ _|_ _ _| | _ _| | _ _ _ |_ |_ _|_ _ _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | |_| _ _| | _| | | | |_ _| _| _| _ _| | |_ _ _ _ _|_ _ | |_ | _ _| |_ | _ _|_ _| _ _ _|_ | | _ |_ _|_ _ |_ _| | _ _|_ _ | | _ |_ |_ | _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| _ _| |_| |_ |_ |_| _ _ _| | | |_| |_ | | | | | | _ _|_ _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | |_ _ | | _| | |_ _ _ _ | _ _|_ _ | _|_ _| |_ |_ _ _|_ _| | _ _| |_ _| _ _| _| | | | |_ _ _ _ _ _| | | _ _| |_ _ | | _ | | _ _| | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ _ _ _|_ | |_ |_ |_ _ | _ _| | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ _ _ _ _ _ | |_ _| | | _| _ |_| |_|_ _ | _ | |_ _ | _ | _| | _ _ _|_ | _ _ |_ _ _ _| _| _ _ _| |_ | _| |_ |_ _ _ _| _ _| _|_|_ | | | _ _|_ | | | | |_ _ _ _ | _ _ _ _ | | | _ _ | _| _ _ _ _|_ _ _ _ |_ _ _ | _ _ | +|_ |_ | | _ _| _| | _| | | |_ _| _ _ _ |_ _ _ _ _| |_ _|_ _ |_ _ |_ _ _| _|_ _| | _|_ |_ | | _ _| _| _| _|_| | _| | | | |_ _| |_ _ | _|_ | _|_| _| | _ _ | | | _ _|_ | | | | _|_ _ _| | _| _| _ | _|_|_ | | | _ _|_ _ _ _| | | _| |_| | |_ _ _ _ | _ | |_ _ | | _|_ _ | | _| |_ _ | | _ _ _ _ | |_ _ |_ _ | | |_ _|_ _ _| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ |_ _|_ _ |_ _| | | _ _ _ _|_ |_ _ | _ _ _| | |_ _ | | | _| | | |_ _| _| | | _|_ _ _|_ _ _ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | _ | _ _ _ | |_ |_ _ _ _| |_| _|_ _| |_ _| | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| | _|_ _ _| |_ _ _ | | _| | |_ _| | | |_ |_ _ | _ _| | _ _| | _ _ _ |_ _ _ _ | |_ _|_ _| | | | _ _| | _| _ |_ |_| |_ | | | | _ _| | |_ _ _ _ _| _ _ |_ _ | _|_ | _|_|_ | | | _ _| _| _ _ |_ | _ _ _| |_ |_| |_ | | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| _| _ _| | _ _ | _ _ | _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | | | |_| _ _ _ _| _| |_ _ |_|_ | _ _ _ _| | | _|_ | _ | |_ | _ _ _| _ _ |_| |_ _| _ _ _ | _| | |_ _ _| | _| _ _|_ | |_ _ _ _| | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| | | _| | _| | |_ |_ _ | | | |_ _|_ | | _| | | | | |_| _ _ _ _|_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| |_ _| _ _| _| _|_ _ |_ | | | _ _ _ _| |_| _ |_ |_ |_ | _ _|_ _ _ _| _ _| _ _| _| _|_ _| _ _ |_ _ | | | _ _| | _| | | | _| |_ _ _ _|_ _ _ | | _| _| |_ _ | | _| _ _|_ _ _ _| _ _| |_ _ _ _ | |_ _| _ _| _|_ | | |_| |_ | | | | _|_|_ | | | _ _|_ _ _ | | _| _ _ | |_ _| |_ |_ |_ |_| | _| |_ | | _ |_| | | |_ | _|_ |_| | _| | |_ _ _ |_| _ |_ _ | |_ |_| _ |_ |_|_ |_ | _ _ | |_ _ |_ _ _ _ _| |_ _| | _|_ _| | | | | | _ | |_ _ | | _| | |_ _| | |_|_ _ _ _ _| |_ | | | | _ |_ _ | | +|_ _ _ |_ _ _ _ | _| |_ _ _| | |_ _ _ _ _ _ _|_ | _ |_ |_ | |_ _ |_ |_ |_ _| _ _|_ _ _ | |_ _| | |_ _| _| _| | | _| | | |_ _ | _|_ | |_ _| |_ _ |_ _ |_ |_ _| _|_| | _| | |_| | | | _| |_ | _| |_ _ _ _ _| |_ _| _ _ _| | | | _ _| | _|_ | _ _| _| | |_ _| _ _|_|_ | _| | |_ _ _|_ | | | |_ _ | | _| |_ _ | |_ _ _| | |_ | _ _ _| |_ _ _ _ _ | _ _ _ _ |_ _ _|_| |_ |_ | | _ _|_ _ | | |_ _ _| |_ | _| |_ _ _ |_ _|_ _ |_|_ | |_ _ |_ _|_ _ |_ _ _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | | | | |_ | _| | |_ _|_ |_| _ |_ |_ _| _ | | | |_ _ _ _ | |_ _ _ _ _ |_| _ _| | _ _ _ _|_ |_ |_ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| _| | |_ _ _ | _| |_ _ | _ _| |_ _ _ _| |_| _| _ _|_ | |_ _ _| |_ _|_ | | _ _ | _ _ _| | | |_|_ _| | |_ _ _ _ |_ _ _|_ _|_ _ _| |_ _ _|_ _ _ _ _ _| | _| | |_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | _ |_| |_|_ _ | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_|_ |_ |_ _| _ _ _|_ _ | _| | _ _ _| | _ |_| |_ _|_| | | | | | _ _ _| _| | _| | | |_ _|_ | |_ |_ | |_| _|_ _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ |_ | |_ | |_ _ _|_ | |_ _| |_ _|_ | | |_ | | |_ |_ |_ _ _| |_ | | _ | _|_|_ | | | _ _| _ |_ | | | |_ _ _ _| _ _| _|_ |_ _ |_ _ _ _| _|_| _ | _| _| _ _|_ |_ | |_ |_ _ _ _ | | |_ _ | |_ | _ _ _| | | |_ _| | | |_ _| _|_ _|_ _ _ _ _ _ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | _ _ _ _ _| | |_|_ _ | _| |_ _ | |_ _ _ _ _| _|_ | | _| |_ _| |_ _ _ _ _| |_ _| | |_ _| | | | | _| | _| |_ _ | _| | _| _| |_ _ | | | |_ | | _| _| _|_ | _| _|_ |_ |_ _| |_ |_ _| | | _| |_ _| _| _ _|_ | _| | |_ _ | | | | _| | _ _| _ _|_ _ |_ _ _| |_ |_ | |_ _ _| | |_ _ _| _ _| | |_ _ _ _ | | _ _|_ _ _| |_ _| |_ | _| _| | +| _ |_| | |_|_ _ _| _ | _| _ _ _ _ | |_|_ | _ _|_ | |_| _ |_ |_ |_ | _|_ _| _ _ |_ _| | _ _| | _ _ _|_ _| | _ _|_ _ _|_|_ | | | |_ _|_ |_ | | |_ _ |_ _| | _ _| _ _|_ _| | _| _| _|_ _|_ | | _| _| | |_ _ _ _ | _ _|_ _ | _|_ _| |_ _ | | | _| | | | _| _ _|_ _ _ _ _| | _|_ _ _ _ | | |_ _ _| | |_ _ _|_ | |_ | _ _| | |_|_ | _ _| | | _ _| |_ _ _| | _| _ |_ |_ |_| | |_ _ _ _ | |_ _| _| _ _|_ _ _| | _|_ _ |_ _ _ |_ _ | | | | | _ _ |_ _ | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ |_ _ _| | |_ _ _ _| _| _ _|_ | _| |_ |_ _|_| _ | _| |_ _ |_ _ _ |_ |_ | | |_ _ _| |_ | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _|_| |_ | | _|_ _ _|_ | | | |_ _ _ _ | | _| |_ _ _ _ _| _ _ | | _ | | | | |_|_ _ | |_|_ _|_ | _ _| | _| _ _ _| _ _ |_ _ | _ _| | _ _ _ _ _ _ | |_ _ _| |_ _ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_| |_| _|_ _ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | _|_ |_ _ | _ _| | _| |_ | _ |_ |_| _| _| _ |_|_ | |_|_ _ | _| |_ _ _| |_ _|_ _ _ _ _| |_ _ _ _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | _| | | | _ _ |_ _ | | _| _ _ _| | |_|_ | | |_ _| _| _| _ _|_ _ _|_ _| _|_ _ _ _ _| |_ _| _ _ |_ |_| | | |_ _ _| | |_ _ |_ _ |_ _ |_ _|_ _| |_ | _| |_ _ _ _ _| | | | _|_ |_ _ | |_ _|_ _ |_|_ |_|_ _ | |_|_ _|_ | _|_ _|_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ _ _| | | |_ |_ _|_ _ |_ _| |_ _ _|_ | | _ |_ _ |_ _ | | |_ |_ _ | _ _ _ _ _ | |_ _|_ _ _|_| |_| |_ _ _ _ _| | |_ _ _ |_ _| _|_ _ |_ |_ _ _ _|_ _|_ _ |_ _ |_|_ _ _| |_ |_| _ _| | | | _ _| |_ _ _| | | _| |_ _ _ _ _| |_ _ | _|_ _|_ |_ _ |_ _|_ _ _ _ _ _| _| _ |_ |_| _|_ | _ _|_ | | | _ _|_ | | _|_| | _ _ _|_ | | | | _| | | +| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _| | _| _| _|_ _ _ _| | _ _ _|_ | | |_| |_ | | |_ _ _ | |_ _| _ _ _ _ | |_ _| | _| |_ |_ _| | |_ |_ | _| |_ | | _ _ |_ _ _ _| | _ _| | | | | _| _|_ _ |_ | | | _ _ _ _| |_| _ |_ |_ | |_|_ | _| |_| |_ _ _| _ _ | |_ _ | | | | _ | | |_ | _ _| _ _ _ | | _|_ | _|_|_ _ _| | _ _| | | | | _| | _ |_| _| _ _|_ |_ _ _|_ | _ | |_ | _ _| | | _ _|_ _ _ _ _ _ | | | _ _| |_| | | |_ _| |_ | | |_|_ |_|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | _ _ | |_|_ _ _| | _| |_ _ _ _ _| | _ _ _| _ |_ | |_ _ _|_ | | _ | | _ | | _| _| _ _|_ _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ | |_ _|_ _ |_ | | |_| | _| _| | |_ | _ | _|_ |_ _|_ | | |_ _| |_ _ _| | |_ _ | | | _| | _ _| _ _ _|_ | | |_| |_ | |_ _ |_ _ |_ _ | | |_ | _ _|_ _ _| | _| | _|_|_ | | | _ _|_ _ _ _| | |_ |_ | |_ | | | _ _ _ _ | | _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | _ _|_| |_|_ _| | |_| _|_ |_ |_| | | | |_ | | _| |_ _| | |_ _ _| | | |_ _| | | _ _ | _ _| _ _ _ _ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _| |_ _| _|_ _ _|_ _ _ _|_ _ _ _| | _ _|_ |_ _| | _ _| | _ _ _ _| _| _ _ _ _ _ | _| _| | _ _ _| |_ |_ |_ _|_ _ |_ _ _| _|_ |_ _ _|_ | _| |_ _ | _ | |_ _ _ _ _ | | |_| _ _ |_ _ | _ _| | |_ _ | |_ | _ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _| | |_ _|_ | |_ _ | | _ _ | |_ |_ _ |_ | | | |_|_ | | _ _|_| |_ _| _| _ _|_ _ _| _ |_ |_ | _ | | | | |_ _| _ _| | | | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ | | _| | |_ _| _| _ _ _ _ _| |_ | _| _|_ _ |_ _| _ _ _ _| |_ _ _ | _ _ _ _ |_| _| _ _|_ | |_ _ | | _ |_ _| | | _ |_ _|_ _ _ _ _|_ |_ _ _ _ _| | | | |_|_ _ | | +| |_ _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ | | |_ |_ | | _ _ _ _ |_ _ | _|_ _|_ | | _| |_ _ | | | |_ _ _ _ _ | |_ _ _ _ _| _ _|_ _ _ _ _ _| _ _ _| | | _| | |_ _|_ | | | _| _ _| | _ _|_ |_ _ |_ _ _ _| _|_| _ | _| _| _ _|_ | |_ _ | _|_ |_ | _ _| | _| |_ _ |_| | | | | _|_ _| |_ | | |_ |_ _ |_| |_ _ | | | | _| | | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| |_ | | |_ | _|_ | _|_| |_| |_ _ _ _ | | _| | |_| _ _| _|_ _| |_ |_ |_ _|_ _ _ _ | |_ | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_|_ | | | | |_ | _ _ _ _| |_ _| | |_ _ _|_ _ _ _ | |_ | |_| | _| |_| _ _| | _ _ _ _ _ _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _ |_ | |_ _ | | |_ _ _| | | |_ _|_ |_ _ |_ | _|_ | |_ _ _ _ _ _ _ _| |_ | _| |_ | _|_ _ _| |_| | | | | |_ _ |_ _ | _ |_ _|_ | | _| |_ _ | |_ _ | _|_ _| | _| | _| _ _ _ _ _|_ _ _ _ _| |_ _|_ _ _ _| | | | _| _|_ |_ _| |_ _ | | _| |_ | _|_ _ | _|_|_ | | | _ _| _ _ _| | | | _ _|_ | | |_ _ | | _|_|_ _ _ _ _ _| _ _ _| _ _ _|_ _ _|_ _|_ _ _|_ _ _|_ _ _ _ _| |_| _ _| |_ _|_ | |_ _ _ _ _ _ _ |_ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ | _ _| |_ _ _| _|_ | |_ _ _ _| _ _| _ _| _| |_ _ | |_| _ |_ |_ |_| _ _ | |_ _ | | _ _ | |_ _| | _|_ |_ | |_ | | | |_|_ | _| _ _| |_ _ _ _| _ _| | |_ | _|_ _ _| |_| | | _| | _| _ | |_| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _| |_ _ _ _| _ _ _| | | _ _| |_ _ _ _| | | | _ _ _| | | | | |_ | _ _|_ | | |_ _ | |_ _| _ _ |_| _| _ _|_ |_| | | _| | | | |_ _ _ | _ _| | _| | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | | | | | | _| | _ |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ | |_ _ | | | _| |_ _ _ _ _| | |_ _| |_ |_| _ _| |_ | | _ _ _ _ | |_ _ |_ _ | | |_|_ _ _ _ _| | +| _ _ _|_ |_ _ | _|_|_ | | | _ _| _| _| | |_ _|_ | |_ _ _ _|_ _| |_ _ | | _| _| | |_| _ | | |_ |_ _ | _|_ _ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_| _ _|_ _ _ _| |_ _ _| | |_ |_ _ _| | _| |_ | |_ _ |_ _ |_ _|_ _| |_ | _| |_ _ _ _ _| | _ _|_| |_|_ | | | _|_ _ _| _| | _| |_ |_| _ |_ |_ _| | | | | |_ | _ _ _| |_ _| _| _| | | | |_| | _| _ _| _| | | | |_ | _ _ _ _|_ _ | |_| | _|_ _| |_ _ |_ _ _ _| | | | | |_ |_ |_ | _| | | _| | | | | | |_ _ _ _| _| |_ _ |_ _ _ _ _| |_ _|_ | | |_ |_ | | | _ _|_ | | |_ _ | _| |_| _|_ | |_ _| _ _ |_ _ | _| | _ _ _ _| |_| | _|_ _ _|_ |_ |_ | _|_ _ _ | _ | _| | | |_ _|_ | _ _ _ _ _| | |_ _ | |_ | |_| _ _|_ |_ |_ _ _| |_| | | _ _ _| _|_ _| |_ _ _| _ _ _ _| | | |_ _ | _|_ _ _ | | _|_| |_| | | _| | _| | |_ _ _| | |_ |_ _ | _|_ _ | |_| | _| | _|_| |_ _ _| _ _ _ _ _ _ | _ | | _ _|_ _| |_| _|_ _ | _ _ _| | |_ _ _| | | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | |_ _| | _ _| |_ _| _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _ _ _ | |_ _ | _|_ _ _ _|_ _ _ _ | |_ _| _ | _ _| |_|_ | _|_|_ | | | _ _| | _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | |_ _ | |_ _ _ | _ _ | | _ _| _ | _|_ _ _| |_| _| _ _|_ |_ _ | |_ _ _| | |_| _ | | _ _| | _ _ _| _|_ |_| | |_ _| |_ _| | | |_| _ | _ _| | _|_ _ _ | | _|_|_ |_|_ _ _ | |_ _ _|_ | | _|_|_ | | | _ _| _ _ | | | _ |_ _ | |_ _ | |_ _| | _ _| _ _ _|_| |_ | _ _| | |_ _ |_ _| | _ _| |_ _| _ _| _ _ _|_ | | _| |_ _ _ _ _ _ _| | _ _|_| |_ |_ | | | | | _|_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| | |_| | | |_ _| | |_ _|_ _| _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | _| _| | | | | |_ _ _| _ _ _|_ _ |_ _| | _ _ _| |_ | |_ _ | | _| |_ _ |_ | _| |_ _ _| | | +| _ _| |_ | | |_ _ _ _ _| |_ _| _ _ _ _| | _| | _ | |_ _ _ _ | |_ _| | |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _|_ _| _ _ |_ _ | _ _| | |_ _| | | | | | | |_ _ _ _| |_ |_ _ _|_ | _| |_ _ _ _| _|_ | | |_ _ | | |_| | _ | _ _ | |_ | |_| _| _ _|_ | |_ _| |_|_ |_ _| | _| |_ _| |_ _ _| |_ | |_ _ _| |_ _| | |_ | |_ _ _| | _| |_ | |_| |_ | |_ |_ _ |_| _ _| | | |_ _ | | _ | | |_|_ | | | |_ _ _| | _ | |_ |_ _ _| _| |_ _ _ _ _ _ |_ _| _|_ _| |_| _| | _ _| |_ _| _ _| _|_ | _| _| _ _ _| | | |_| | _|_ _ | | _ _|_ _ _ _|_ _ _ _ _ _ |_ _ |_ _ | | _| | | |_ _ _| |_ _|_ _ _ _ _|_| | | _ |_ _|_ _ |_ _| _|_ | | | _| _| _ |_ |_| _| |_ _ _| _| _ _ _| | _ |_ |_ | | _|_ | _| | _ _|_ _| |_ _ _ _ _ _| | |_ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| _ _| | | _|_ _ |_|_ _| _ _| _ _|_ | _ _| |_ _| _| _ |_ |_ | | |_ _ | | _| _ _ | _|_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_ |_ |_ _ _ _| _ _| | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| |_ _ | | _ _|_ _ _ _ _| _| |_ _ |_ | | | |_ _ _ _|_ _ _ _ _| |_ _| |_ _ _ _| | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| |_ _| _ _| |_| | |_ _| _ _| | | |_ _| |_ _ _ | | _| |_ _ _ _ _|_ _ _| | | | | _ _|_ _ |_ _|_ _ _ _| |_ _ _| _| _ | _| |_ |_ |_ _ _| _| |_ _ |_ _|_ | _| | _ _|_ _| |_ _ _|_ _ _ _ |_|_ _ _ |_ _| |_ _ _ _ _| |_ _| _| | _ _|_ | | _|_ _ | | |_ _ _ _| _ _ _|_ | _ |_| _ |_ |_| |_ |_ | |_ _ _ |_ _ _ _| _ _| |_ _ _ | _|_ _ _ _ _ _ _| | |_| _ |_ |_|_ | | | |_| | | | _ _| _| | _ _ _| |_ | |_| | | _ |_ _ _ _| |_ _|_ _ | _ _ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| | | _| |_ _|_ |_ | | _| | _ |_ _ | _| _ |_ |_| _| | |_ _ _|_ | | | |_ _ _| | _ |_ _| | +| | _ _|_ _ _| | |_| _ _ _ _ _ |_ | _| _|_ _| |_ |_ _ | | _| |_ _ | _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _| | | |_| |_ | | |_ | _| | |_| | |_ _| | _ | _| | |_ _| | _|_ |_ |_ |_ _ | | _ _| |_ _| _ _| _| _| | _| | | | | _| | | _| |_ _ _ _ _| |_ _ |_ _ |_ | _| | | _|_ _ _| _ |_ | |_ _ _ _ _|_ _ _| |_| _| _ _| _ _| |_ _ _| _|_ _ _| _|_ _| | |_ | | | | |_ | _ _| |_ _| | |_ _ |_| | |_ _ _ _|_ |_ | _| _ _ _ |_ |_| _ _|_ |_ |_| _| _ |_ |_ | |_ _ _ _| _ _| | _| _ _|_| _| | |_ _ _|_|_ _|_ | | | | |_| |_ _ | _ _ _ _ | |_ _| |_ _ _| |_ | _| | _ _ | | _ _ | _ _ _| |_ _ _|_ _ | |_ _ | | _ _ _| |_ _| _| _| _ _|_ | | | | _ _ _|_ | | _| | |_ _ _| _| |_ _| | |_ |_ _|_ _ _ _ _ _| _ _ _| | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | |_ | |_ _ |_ | | _ _| _ _|_ _ | | |_ _ _| _| _ _|_ | _| |_ _ _ _| | | _| | | | _ | | | _ _| |_|_ _ _| _ | _| _ |_ |_ _ _ |_ _ | | |_ _ |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | |_ _ _|_ | | | |_ _ _ |_ _ _ |_ _ _|_ | | _|_|_ _|_ _ _ _ | _| _ _ _ _|_ _ | _ _|_| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | _ _ _| _ _| _| _ _| |_ | _| | _|_ _|_ _ |_ _ _|_ _| | |_ | _ _ _ | | | |_ _| | _ | | _ _ _ _ | | _ _ _|_ | _| | _|_| _ _| | _| _| _| |_| | _| | |_ _|_ _ _ _ _ _| |_ _ _ | _ _ _ _|_ _ _ _ _| _| _ _ _ _| _ _ _| | _ _ _| |_| _ _ | |_ | _ | | | _ | | | _| _| _ _|_ | | | _| _| | _ _| _ | | |_|_ _ _ _ _| _ _ |_ _ | _ _| | |_| _| _ _|_ | _| | |_ | |_ _| |_ | |_ _ | | _ | | _|_ _ _|_ _| |_ _ _ _ _ _ |_ _| | _| | _ _ _| | | _ _ _| _| | _ _| _ _| | _| _ _ _| | | |_ _| _| |_|_ _ _|_ _| _|_ | |_| _| _ _|_ | | | _| _ _ _ | | | |_ |_| | | |_ _| | | +|_| | _ _ _ _ _| | _ _| _ _| | _|_ _| _| _ |_ |_ | _ _|_|_ _ _| | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | | | | _|_|_ | | | _ _|_ _ _ _| |_ _ | |_|_ _|_ | | _| |_ _| _| _|_ | |_ _ _ _| |_ |_| _| | | _ _| | _ _ _| _| |_ | |_ _|_ _ _ _| _ _| |_ _ _| _|_ | _| | | |_ |_|_ _ | | _ _ | | _ _| | | | |_ _ _|_ _ |_| _| _ _|_ |_ | _| _ _|_| _| | |_ |_ | _ _ _| _| _ | | _| | | _|_ _ _|_| | | _|_| | | _ _|_ _ |_ _ _ _| |_ | _ |_ _| | _| | _ _|_ | |_ _| |_ _ | _| _| _ _|_ | |_ | | | |_ _ | | _ _ _| |_ | _ _ _ | | |_| _| |_ |_ | _|_ _ | | _| |_ _ | | | _ | |_| | | |_ _ _|_ _| _| |_ _ _| | |_ _ _ | |_ _| _ _| | |_| | _| | | _| |_ _ _ _ _|_ _| |_ _ | _| |_ _| _| | _ _ | _| | _| | | _| | _ _ _ |_ | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | | | | |_ | |_ |_| | | |_ _| _ _| | |_ _ | _| |_ _ _ _ _| | | | _ _ _ _| |_ _| | | |_ | | |_| | | |_ _ _ _ |_ _| |_| _| _ _|_ | _| | _ |_ _|_ _ |_ _ _ | _| | | _|_|_ | | | _ _| _ |_ _| | |_ | _|_ _ _ | | | |_ _ _| | | | | _ | | _ | | _ _ | | _ _| |_ _ _ _| _ | | _ _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | | | |_ _ | | | _| | |_ | _ _ _|_ _ | | _ _ _|_ |_ _ _| | _| | | |_ _ |_| |_ _| | |_ _ | | _| |_ _ | _ _|_ | | | _ | | |_ _ _ | | _| _ _|_ _| | |_ _ _ | | _ _ |_| |_ | |_ | _ _ _ _ | |_ _ _|_ _ _ _ _ _ _| |_| _ |_ |_ _ | |_ | |_ _| | |_ _| _| |_| | _| |_ _ _ _ _|_| | | _| _| | | _| _| | |_ _|_ _ |_ _| _ _ _| | | |_| |_ | | | _| |_ _ _ _ _| |_|_ | |_ _ _ _| | | |_|_ _ _|_ _ _| |_ _ _ _| _ _ |_ _ | _ _| |_ _ |_ _ | _| | |_ | | _ | _|_ _ |_ | _| |_| _ _| | | |_ _ _| _| _|_| _ | _|_ _ _| | _| |_ _ _ _ _|_| | | _ _ | _| | | _| | _|_ _| | _ _| | | +| _|_ _ _ _| |_ | _ _| | _| |_| _| _| _ _|_ | | _| _ _ | | | | | |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _ |_ _|_ _|_ _ _ _| |_ _|_ _ _ |_ |_ _| | | | _ | | |_ |_ _ | _|_ |_ | _| _ _ |_ _ |_ _|_ _ _ _| |_ _ _| _| _ | |_ _ |_ _ | | |_|_ _ _ _| | | | _|_|_ |_ | | |_| | |_ |_ _|_ _ _|_ _ _|_|_ _ _ |_ | | _ _|_ _ _ _| _| | |_ | | _ _ _| |_ | | | | _ _ _|_ _|_ | |_| | |_ |_ |_| _ _ | _| _| _| _|_ _ _ |_ _ | _ _| | _| |_| | | |_ |_|_ _ _ _ _| | | |_ _ |_ | _| |_ _ _ _ _|_ |_| |_ |_ _|_ _ |_|_ _ _ | _|_ | | |_ | | _| | |_ |_| | | | | _ _| | |_ _ _|_ | | | | | | |_|_ _ _ _| |_ _ _ _ _ _ | _ _ _ _ _|_ _ _ |_ _|_ _ | | _ _| _ _| | | _| | | |_ | _ _ _ _ _ _ _| | |_ |_ _ _| | |_ |_ _|_ _ | |_ _ _|_ |_ _ _ _| | _| _|_ _ _ | | _| _| |_ _ | | _| _ |_ _ _ _| _ _| _ _ | | |_ _| | |_ _ _ | | _|_ _|_ _ |_|_ | _|_ _ _| | |_ _ | _| _| | |_ _| _ _ _|_ _| _|_|_ | | |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| | _| |_ _ |_ _ |_ _ | _| | | | |_|_ _ _ _ _| |_ _| | | _| _ | | _| | _| | | | |_ | _ _| _| |_ |_ _|_ _| | | | | _| _| | | | |_ _ _ _ |_ _| | | | _| _| _ _|_ |_ |_ _ | | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ _|_ |_ _|_ _ |_ _| | | | _| | | _|_ _ _ _| | _| _| _| |_| _| _ _|_ _| | _ _| | |_ _| | |_ _ | _| | |_ _ _| | |_ |_| | |_ | |_| | |_ _| _ |_ _| _|_ | |_ _ _ _|_ _ |_ | |_ _| |_ _ | | _| |_ _ | | _ _ _ _ | | |_| _| _ _|_ | |_| _| | | _| |_ |_ | | |_ |_ _ | _| _|_ _| _| |_ _| _|_ _ _ _ |_ _ |_ _ | |_|_ _|_ | | _| |_ _ | |_ _ _ _ _| | _ _ _ _ _ | _|_|_ _|_ _ _ _ | | _|_ _ | _ _ _| _| | |_| |_ | | _|_ _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| |_| | _ _ _| | _ _| |_ _ _| _ _| _ _| | | _ _ |_ | |_ _ _| |_ _ _| |_ | |_ _ | _| |_ | | | +| | _ _ _ _|_ |_| | |_|_ _ _ _|_ _ | _| |_ _ _ _ _| |_| _| _|_ | | | |_ _| | _| | | |_ _|_ |_| | |_ _ | | |_ _ |_ | _ _ _ _| |_ | | |_ _ _ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ _| _ _| |_ | _| _ _ _ _ | | _ _ _| _|_ |_ _ | | | _ |_ _|_ _ |_ _ | _| _| |_ _ _ |_ |_ | |_ |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_| _ _| |_ _ _ _ _| _| _| | |_ _ | | | | | |_| |_|_ _ | _ _ | |_ _ _|_ | | | | _| _ _ _|_ _ |_| |_ _| | | | | |_| |_ | | |_ _| | _| | |_ | | _ _ _ _| |_ _| _ _| | | |_ _| _ _ |_ _ _| | | _ | |_ _ | _| | |_ _| |_ _ _| | | _|_ _|_ | | | | |_| |_| | _| _ _ _ | | |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ |_ |_ | | |_ | | | |_ _ _|_ | | | |_ _ |_ _ _| _|_ _|_ _ | | |_ _|_ | _ _ _|_ _ _ _ _ _ _ _ _ | | |_ _ |_ |_ _|_ _ _|_ _ _|_ |_ _|_ |_ | | _ _ | | |_ _ |_ _|_ _ _ _| | _ |_| |_ | _ |_ _ | |_ _ _ | |_ | |_ _ _| _|_ |_ _ | _ _ | | _ _|_ |_| _|_ _ _ _ |_ _ |_ _| | | |_ _ |_ | |_ |_ _ _ _ _ _| | | | |_ _ _| _ _ | _ _| _ _| |_ _|_ _| |_ | | | | | |_ _ _| |_ | | _ _| | | | _ _ _ _ _| |_| |_ _ _ _| |_ _|_ _ |_ _ | _ _|_| | | _| |_ _ _ _ _| | | _ _| |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_ _| |_ |_ _ | | |_ _ _ _|_|_ | | | | _ _| _ _|_| _|_ | | _|_ _| _ _ |_|_ | _ _| | | | _| _| | | _|_|_ _ _ |_ | |_ _ _| | _ _|_ _ _|_ _ _ _ |_ |_ _ _| _ _|_ _ _ _ | |_| | | |_ _| | |_ _ _|_ | | |_ _ | | _| |_ | _| |_ _ _ _ _| |_| _|_ _ _| |_ _ _|_ _ | _|_ _ | | _ _| | | | _|_ | |_ |_ _| |_ _ _| _| | _ _| |_|_ | | | |_ |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | | |_ _ | _ |_ _|_ | | _| |_ _ | | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | _|_ _ | _|_ _ _ _| _ _ _ _ _ _| _ _ _ _|_ _|_ _ _ | | |_ _ | _| _ |_ |_ _ | _|_ | | _| |_| +|_| |_ _ _| |_ | _|_ _ |_ _ | _ _| |_ _ | _ | | _| |_ _ |_ | _ _| |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _| _| _ _ _ _|_ |_| _| |_| |_ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ _|_ _ _| | |_ _ | | _| |_ _ | | _ |_ _ _| | | | | | |_ _ _ |_ _ | | |_ _| _| |_ _ _ |_|_ |_ _ | | | |_ _| _ | | _| |_ _ |_ | | | |_ _ |_ | _|_ _| |_ _| | | |_ _| |_ |_ _ _| | | | | | | _ | | | | | |_ _ _| _ _ |_ _ | _ _| | | | |_ _|_ | | _| |_ _ | | |_ _| _| | | | |_ _ _ _| _ _| _ _ _|_ | |_ |_ |_| _ _ | |_ | | _ _| | | _|_|_ _ _ _ | _|_|_ _ _ _ _ _|_ _|_ _ | _| | | |_ |_ _ |_| | | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ _| | | | | _| |_|_ _ | _|_ _ _ | |_ _ |_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | _| |_ _ _ _|_ |_ | _ _ _ _ | |_|_ _ _ _|_ _|_ _| _ |_ _|_ _ |_ _ _ |_ | _| | | _| _| |_ |_ _ _| |_ _ _|_ |_| _| | _ | |_ | _ _|_| |_ _| |_ |_ _ _ _| _| _ _ | _ _| | _| |_ |_| _|_ | | |_ | |_ _ | | _| _ _|_ _| | _ |_ _ |_ _|_ _ _ _| | | _| _ |_ |_| |_| |_ _| _ |_ |_ _|_ _ _ _|_ | |_ _| _ |_ |_ | |_ _ | |_ _ |_ _|_ _ _| | |_ _| _ |_ _| | _| | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ |_ | |_ _ _ _| | |_ _ _ _ | _ _ _| |_| |_ | _| _ _ _| _|_ | _ _ _| | | |_| |_ | | | | | | | |_ _ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| | | | _ _ | _| | _ _|_|_ _| | _| _|_ | | |_ _| | |_ _ _| | | |_ _ | | _ _ _| _ _ _|_ _ _ _ _ |_ _ |_ _ _|_| |_ | |_ _ _ _| |_|_ _ _ _ |_ | _ _ _ _ |_|_ _ _ _ _ _ _|_ | |_|_ | | _ _|_| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| |_ _ _| | | | _ _| | |_ |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ _| |_| _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ _| _| | _| _ _|_ | | | | | |_ |_ | +| _| _| _ _|_ _ _|_ _ | |_ _ | _| |_ | _| | | | |_ _ _ _ _ _| |_ _| | _ _| |_ _ | | _ _ | _ _| |_ _ _ _|_ _ _ | |_ _ | | |_ _ _| |_ | | |_ | | _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_| | _| _| | _| | |_ _ | _| | _| |_ _ _ | | |_ _| |_ _ _ |_ _ | |_|_ _ _ _ |_| |_ _| | | _ _| |_ _| | | |_ _ |_ _| | |_ _ _| _| | _|_| |_ _| _ _| | | _ _ _|_ | | _|_|_ _ _ _ | |_ _ _ _ |_|_ _ _|_ _ _|_ | | _| | _ _ _| | | |_| |_ | | | | |_ | | |_ |_ _ | _|_ |_| _|_ _|_ _ _|_ _ _ | | | | |_ _| _| |_ _ _| |_ | | | |_ | |_ | _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _| | _| |_ |_ | _|_| _ |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _ _| | | |_ |_ _ | _|_ | | |_ _ _ _| | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _ _ _ _ _ _ |_ _ | | _| |_ _ |_ | | | | | |_ _ |_ _ | |_ _ _| |_ _ | |_ |_ |_ _|_ | _ _| | _ _ _| _| _ _| _|_ | |_|_ | | |_ _ | |_ _| _ _ _|_ |_ _ _ _| | _ _| |_ _ _| _| _| | | |_| _| _ _| | _| |_ | _ _ _| _|_ | _|_ _| _ _ _|_ _|_| _| _ _|_ | |_ _ _| _ _|_ | _ _ _| |_ |_| _| _ _|_ |_| | |_ | _|_| _ _| | _ _ | _ _|_ | |_ _ _ _| |_ _| |_ |_|_ _| _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| |_ _| | _| _ _|_ _ _ _|_ _| | _| _ | |_ |_ _ | _|_| | |_ _ | |_|_ _|_ | | _| |_|_ | |_ _| _ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | |_ _|_ _ _ _| |_ _|_| | _ | | | | | |_|_ _| | | | _| _| | _ | _|_ | _| | |_|_ _ | _| | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _| | _|_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| | _ _|_ | | |_ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | | | _|_ _| _ | |_|_ | | _ _|_| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _| |_ _ _ _ _| | |_| | |_ _ _ _ _| | +| | _ _| | _| _| _ _| _ _| | | |_| _|_ |_ _| |_ _ _ _ | |_ _ | | | |_ _ _ _|_ _| | |_ _ _ _|_ _ |_ | _ _| | | |_ _| _| _ _|_ _ _| | _|_ _| | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ _ _| _ _|_ | | |_| |_ _ _ _ | _|_ _ _ _ _ |_ _ _|_ _ | _ _ _ _ _ _|_ _ _ _ |_ _ | _ _| | | | _|_ | _|_|_ | | | _ _| | _| | | _ _ _| _ _| _| |_ _| | _ _|_ _ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _|_ | |_ _ | | | |_ _|_ | | _| |_ _|_ | | |_|_ | | _ _|_| |_ _ | _ _ _ _ | |_ _| _| |_ _ _| _| | | |_ |_ _| | |_ _ _ |_ _|_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _|_ _ _ | |_ _| | | | | _|_ _| | _|_|_ | | | _ _| _ | | | | | _| | _| |_ | | _ _|_| |_ _| | |_ _ | _ _| _ _| _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _ _ _ | |_ _ _| | |_ _ _|_ | | |_ _|_ _|_ _| | | |_ _ |_| _ _| | _ _|_ _ |_| | _ |_ _ _ _| | _|_| | _ _ _| _| |_ _ | | | _ _| |_ _| _ _| |_ _ _ _ _ | _ _| | _| |_ | _ _ _| _| _|_ |_ _ _| _| | | _ _|_ _ | | | _ _ _ _| |_ | |_ |_ _ _ | | _| |_ _ _ _ _|_|_ _ | | |_ _ _ _ _|_|_ |_ | _| _| _| |_ _ _ _ _| _| |_| |_ | _ _|_ |_ _| | _| _| | _| | _ _| _|_ _ _ _ | _ _| | | | | | | | _ _| _| | | | |_ _ |_ _ _ _ | | | |_ | _| _| | _ _| | |_ | _| |_ _ _ _| | | _ _| |_ _| | |_ _ _| | |_ |_ _ | |_ _ | | _ _ _ _ | |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | _ _ _| _ _ |_ _ | _ _| | | |_ _ _| | |_ _ _ _|_| |_ | | _ _| | | _| _| _ _|_ _ _| | |_ _|_ _ | | _| |_ _ |_ _ _ _ _| |_ | | _|_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| | _ _| |_ _| _ _| _|_ _| _|_|_ | | | _ _| | |_| | | | |_|_ | |_ _ _ |_ _| |_ | _ _|_ | | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _|_| |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | _ _ _ | | _| _|_ | _ _ _ | +| |_ | _|_ _|_ |_ _ | | _ |_ _|_| _|_ _| _ | | _| |_ _ | _|_ _|_ _ _ _ _ | _| |_ _ _ _ | |_|_ | |_ _ |_ _| |_ | _ _| | _ | | |_ _ | _ _| | _| | | |_ _|_ | _|_ _ _ | | |_|_ _ _|_ | |_ _| | | | | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| |_ | |_ _|_|_ _ | |_ _ _ _ _| |_ _| _ | |_ _ _| | | | | | | |_|_ |_ _| _|_ _ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| _| | _|_ _ | | |_ |_ _ | _ _| | _ _|_ | | |_ _ | |_| _ | | _| |_ _ |_ _| | _ _ _|_ | |_| |_ _ | | |_ _| |_| | _| |_ |_| _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _ |_ _| | _ _| | | | | |_ _| _|_|_ _ _ _ _| |_ _| _ _ _|_ _| | | | _| _| | | | _ _|_ | | |_ _ |_ _| | | | _| _| | | | | | | _|_|_ | | | _ _|_ _ _ _| | |_ |_ _ | | _| |_ _ | | _| | | | | _ _| _ | _|_|_ | | | | | |_ _| | _ _ _ _ _|_ |_| _ _| | | | _ _ _|_ _ | _| _| | | |_ |_ _ _ _| _ _|_ _ _| _ _ |_ _ | _ _| | | | | | | _ _ _| _ _ |_| _ _ _| | _|_ | _ |_ | |_| _ _ _ _|_ |_ _|_ | | _ |_ _|_ |_ _ _| _ _ | _|_ _ _ _ _ _ _ _ |_ |_| _|_ | |_ _ _ _ | _| _|_ _ _ _|_|_ | | | _ _ _| _|_ _ |_| |_| | _|_ _ _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | |_ _ _| _ _ _ _| |_ | | _ _| _| | |_ | |_ _ _|_ |_ | _ _ |_ _ _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ | | _| |_ _ _ | _|_|_ | | | _ _|_ |_ | | _|_| _ _ _| | | |_| |_ | | | |_ _ _ _| |_ _| _ |_ |_| | | _|_ _| _| _| _ _| | _|_ _ _ _| | |_ _ _| | | _ | | _ _|_ _ _| | |_ _ |_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ |_ _ _ _| _ _| | |_| _ |_ _ _ _| |_ _|_ _ |_ _| | | | _|_ _ |_|_ _ _ _ _ _ _ _| _| | _ _| |_ _| _ _| _ _| | _|_|_ | | | _ _|_ | _| | | _|_ | | |_ _ | | | |_ _| _|_|_ | | | _ _| _ _ _ _| | | | _ _| |_| | |_ _|_ _ _| | |_ _ | _| +| _| |_ _ |_ _ |_ _| | |_ |_| _ _ _| |_ |_| | | |_| |_ _ _|_ | | |_ _ _ _ | | | | |_ _ | _| |_ _ | | _| | _ _| _|_ | _|_| |_ _ _| | | | | _ _|_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_|_ _ _ _| |_ | _| | |_| |_ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ _ _ _|_| | _ _ _ |_ _|_ _| _ _ _| |_ _|_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ | | _ _| |_ _| _ _|_ |_ _| | |_ _ _| _| | _ _|_ _ | _|_ | |_ _ _| | | _| _ _|_ _|_ _ |_ | | _|_ | _|_|_ | | | _ _|_ |_ | | | _ _| | | |_| |_ | | |_ _|_ | |_ _ _ _ _| _ _ _ _| | _ _|_| |_| _| _ _| |_ _| | _ _| |_ _| _ _|_ _ _| | | | |_ _ | _| | | |_ _| |_ _ _ _ _| |_ _| | _ | | | | | _| _| | |_ _ _|_ | | | |_ _ | |_ _| | | _ _ _| _|_ _ _ _ _| |_ _| | |_ _| | _ _ _| _ _ |_ _ | _ _| | | |_| _ _ _| | | _| _|_| | _| |_ _ | | | _ _ _|_ | | |_| |_ | | |_ _| | |_|_ _ | _| |_ |_ _ | |_ | | |_| | | |_ |_ _ _| |_ | | _| _| _ _| |_ | | _ _| | |_ _| | _ |_ | _ _| _| _| | |_ | _ _| _| | _| _| |_| | _| |_ | | _ _ _| |_ _| _| | _|_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ _ | | _| _ |_ | | |_ _| _| _| | _| |_ _ | _| |_ _| |_ _ _ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _ _| |_ _| _ |_| |_ | | | | |_ _ | |_|_ _|_ | | _| |_|_ |_| |_ _| | _| _ _|_ | |_ _|_| _ _ _| |_ | | _| |_ _ _ | | _| _ _ _|_| |_ | |_| | _ _ _| |_ _ |_ _ _ | _ _| | | _|_|_ | | | _ _| |_ _ _| | | |_ |_ _ _ _ | | |_ _| | | |_ _ _ _| |_ | _| _ _ _|_| |_ |_ |_ _ |_ _| _ _ | |_ _ |_ _ _ _| _ _| | | |_| |_ _ _ _ _| |_ _| _ |_ _|_ | | | | _ _| |_ _| _ _| |_ _| | |_ _ _ _ _| |_ _|_ _| | | _| | |_ _ _ _ _ _| |_|_ _ _ _ | _|_ _ _ _| |_ | +| | | _|_ _ |_| _| _| |_ |_ _ | _|_ _ _| _|_ _ _ _ _ _ _ | | |_ _ | | | |_ _|_| |_ |_ |_|_ _ _| | | | | | _| _ |_ _| |_ _ |_ _ _ _ _|_ _| | | _ _ | | _ _ | _ _ _ _| _| | | _ _ |_ _ |_ |_ _ _ _|_ _ _| |_ _ _ _ _|_ | | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| | |_ |_ _ | _ _ _ _| |_ _ _| |_ _ _ | _| _ |_ |_ _| |_ |_ _ | | |_ _ _| |_ | | | |_ _| _|_|_ | | | _ _| _ | _ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ _| _ _| _ _| | _ _|_ _ |_ | | _ _ _| | |_| | |_| | _| |_| | |_ _| _ _ _ |_ _ _| _ _| | |_|_ _ _ _ _| |_ _| _ _ _| | _| | |_ _ _ _| |_ _|_ | | _| |_ _ | _|_|_ |_ _ |_| _| _ _ |_| |_| _ |_ |_ |_| |_ _ | |_ _ _ _| _ _| | | | | | | | _| |_ | |_ _| | _ _ |_ |_ _|_ | _|_ _| |_ _ | _| _ | | | | | |_|_ |_ _| |_ _ _ |_ | _ _ _ _ _ _ _| | _ _| | | _ _ _|_ | | |_| |_ | | |_ |_ _ | | _|_ _|_ _ | |_ _ _ _ _ |_|_ _|_ _ _ _ _ _ |_ _|_ | | _| |_ _ | |_ _| | | _|_ |_ _| |_|_ _ _ _| | _|_ _| | _| _| _ _|_ _ _| _|_ _ | | _ _| | _|_ _ | |_ _|_ _ |_ _| _|_ _ _|_ _ | | | _| _| _| | | | _|_ | | _| _ _|_ _| | _| |_ _ | _|_ _ | | _| |_ _| | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| | _ _| | _| _| _ _|_ |_ | _| |_ | |_ |_ _ | | | | | |_ _ | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | _ _|_| | | _ | _ _| |_ _ |_ _ _| |_ |_ _| | |_ _ _| | |_ |_ _ | _ _| _ |_|_ | |_ _ _ _ _| | |_ _ | _| _ _|_| _|_ _ _ _|_ _| | |_ _ |_| _ _ | _|_ _ _| | _ _ _| | | | | _| |_ | | |_ _ _ _ _| |_ _| _|_ _ _ | | | |_ _ | | |_ _|_ _ |_|_ _ | _ _ _ _|_ |_| | | |_ _| _ |_ |_ | _ _| | _ _| | _| |_ _ |_ | _ | | |_|_ | |_ | | | _ _ _ |_ | | _ _|_| |_| _ _ _| _ _| _| | |_ _|_ _ | _ _ _ _ | | _| |_ _ _| |_ | | | |_ _ _ | |_ _ _ _| _ | |_ _| +| |_ _|_ _ _ |_ | | _ _ _| | |_ _| | |_ | _ _ _ |_ _ | _ _| | | |_ _| _|_ _ | _ _ _ _|_ _ | _ _|_ _ _|_|_ _ |_ _|_ |_ | | |_ _ |_ | _ | _|_ _|_ _ |_|_ _| _| |_ _ _ _ _ _| _| |_ _| | _ _| | _| _ _ _ _ | | | | _ _| | | | _ _|_ | _|_|_ | | | _ _|_ _| | | | | | |_|_ | | _ _|_| |_ _ |_ _ _| _ _| | | _| _| _ _|_ |_ | |_ _ _ _ | |_ _| _| _ _|_ _ _| |_ _|_ _ |_ _ _ _ _| |_ _| _ _ | |_| | | |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | _| | |_ _ |_ _| | _| |_ _ | | | _ _| _|_ _ _|_ _ |_| |_ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| | _ _| | _ _|_ _| |_ _ _| | | | |_ |_ _ | _ _ _ |_| | |_ | |_ |_ _ |_| _| _| _ _|_ | _ _|_ |_ | _ _ _| | |_ _| |_ _|_| |_| |_ _ | | _|_ |_ _ _| |_ _ |_ | |_ _ _ | |_| _ |_ |_ | | _| _|_| | | | |_ _|_ _ | _ |_ |_ |_ |_ _| |_ _| | _ _| | | | |_ _ | _|_ _|_ | | _| |_ _| _| _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ | | |_ |_ _ | _ _| |_| _|_ _|_ _ _ | | _ _ _ _ _ _|_ _ _ _ _|_ _ _| | | | _| _ |_| | | _| |_ _ _ | _ _ _ | |_ _ | | | _ _| | |_ _| |_ _| _|_ | |_| |_ _ |_ | |_ _| _ |_ _| |_ _|_ _| | _ _ |_ _| _| | _| | | |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| | _| _ _| | _| |_ _ _ _ _ _| | |_ | |_ | | _ _|_ _ _|_| |_ _| _ _| |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ _|_| |_ _ _ | | _| | _|_|_ | _ _| _| _ |_ |_ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ |_ _ |_ _ |_|_ _| _| | | _| | _ _| _ _ _ _ | _| | |_ _ _| |_ _| _ _| _ _ _ _|_ _|_ _ _| | | _| | |_ _ _ | _ _ | |_ |_ _ _ _| |_| _ _|_ _| | _ | |_ _ | _|_ _ _| |_ | | |_ |_| _| _ _|_ | | | _ _| | _ _|_ _ _| | | | |_ | |_ _|_ _ |_ _| _| | | |_ _| _ _| | _|_ |_| _ |_ |_ | | | |_ _ | |_ | _ |_ _|_ |_ | | | _| _| _ |_ |_ _| | _| _ | |_ _|_ _ | | | |_ _ | +|_ _ | _ | _| |_ _| | _| | | _|_ | | | _ _| _ |_| | _ _ _| |_| _ _ _| | | | | _ _ _ _| | _ _ _ _ | |_ _ | _ _| _|_| |_ |_| | | |_ | _ _ |_ _ | |_ _ _ _ | |_ _ | _ _|_ | _ _|_ |_ _ |_ _ _ _|_| |_ _| | | _| _|_ _ _ | _|_ _ _ _ _| |_ _|_ |_|_ _ _| | | |_| |_ | _ _|_ | | |_ _ | | _ |_ | _|_ | | _| |_ _ _ _ _| |_ _|_ | _|_ | _ _| | _ _ _ | | _ | |_ _ _ _ _ _ _ |_| _ _| _ _|_| |_ | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _ | |_ |_ _|_ _ |_ _ _ _ _| | _ _ _ _| |_| _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _|_ _| | _ _| | _| _ |_ |_ | _|_| | |_|_ | | _ _|_| |_ _ | |_ _| |_ | _| _| | _| |_ _ _ _ _|_ _| |_ | |_|_ _ |_ _|_ _ |_ _ _ |_ |_ |_ _| |_ _|_ _ | _ _ _| | |_ _|_ | _| _| _ _|_ | | | |_ _ _ _|_| |_| _ | _| | _ _|_ | |_ | |_ _ _ _| _| | | |_| |_ _| | |_| _ | | |_ |_ _ | _ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_|_ | | _ _|_| |_ _ _ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _| |_| |_ _ _ _| | | | | | | | _ _|_| _ |_ _ _ _| | | |_ _ | | _|_ _ _|_ _ _| _ _|_ | _ _ _|_ _|_ _ _ | |_ | _| _ _ | _|_ _ _|_ |_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | |_ |_ | _| |_ |_ _ _ | _|_ |_| |_ _ _ _|_ _ _ _ _ _ _| _ _| | _ _ _| _| | | |_ _|_ | | _| _ | | | |_ _| |_ _ _ _ _ _ _| | |_ | | | _ _ _| _ _ _| _| _ _|_ | _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | | _ _ _ _|_ | | | | _|_ _ _ _| _ _ _ _ _ _ |_ _ _|_ _|_ _ _ _ | |_ | | _| _| _ _ _ _ | |_ _ _|_ | | |_ | | |_ _|_ | |_ _|_ |_| _ |_ |_ | _|_|_ | |_ _ | |_ _| _| _ _|_ _ _| |_ _ | _| |_ _ _ _ _|_ _|_ | _|_ _| _| | | |_ | |_ | |_ _ | | _| |_ _ | _ _ | | | _| _| _ _|_ | | |_|_ _|_ _ |_ _| | | | _ _ | _| _| | |_| _| _| _ _|_ | _|_ | |_ _ _| _ _ |_ _| | | |_ _ | | +| | _| | |_ | | _ _| | |_ |_|_ _ _ _ _| _ _| | | |_ | _| _ |_ |_ | | _| | | | | |_ _ | | _ _|_ _ | | _| |_ _ | _| | | |_| | | | | _| | | _|_| | | | |_| |_ _ _ | _| |_ _ |_| | _ _| |_ | |_ | | _ | _ _|_ _ _ _| _ _| | _| | _ _| _ _| _ _|_ | _ _ _| |_ _ _ |_ _| | _ _| |_ _| _ _| | | | | | _ |_| | |_ _ _ _ _ _ |_ _| | | | _|_ | _|_| _ _ _| _|_ | _ _| | | _ _ _ _ _|_ _| _ |_ |_ _ | | | |_ _|_ | |_ _ | | | |_ _ | _|_ _ _ | |_ _ | _ _ _| _| _ |_ |_ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | | |_ _|_ _ _ _| |_| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ |_ _| _| _ | |_| _| _| | |_ _ _ |_ _ _ _|_ _ _| | _ | |_ _ _ |_ _ | _ _|_ | _ |_ | | _ _ | | | _ _| | _ _| | | _| |_ _ _ _ _|_| |_|_ | _ |_ |_ |_ _| _|_ _ _ _ _|_|_ _ _| |_| _ _ |_| _| | |_ | |_ | _|_ _ _ | | |_|_ | | _ _|_| |_|_ | |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | _ _|_ | | |_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| | _| _ _|_| |_| | |_ _ _ | |_ _ _ _ | |_ _| | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| _ _| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | |_ |_ | | _|_ | | | _ | |_ | _| | | _ _ _ _ | |_ _ | | |_ _ _ | |_ _ _| |_ _|_ _ _ _ _| |_ | |_ |_ _|_ _ |_|_ _ _ _ | _ _| |_ | |_ _| _ _| | _| _| |_ _ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| |_ _ | _ _ |_ _| |_| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_ _| | _| |_ _ | | _| |_ _ | | | |_| _| | |_ _ | _|_ _ _ _| _| _ _|_ |_| | |_ _ _ _ _| | _ |_ | _ _| | _ | | |_ _| |_ | |_ _ | _| | |_|_ _|_ | | | _| |_| _| | |_ | | |_ _| _| _ _|_| |_ _| _| _| |_ _ _ _ _| | _ _ _ _ |_ _ | _|_|_ | _ _| _|_ |_ | | _| |_ _ _ _ _|_ _ |_| _ _ _ _| _ _ _| _|_|_ | | | | +| |_ | | |_ _ |_ _ _ _| |_ _ _| _ _ |_ _ | _ _| |_ | | |_| _| _ _|_ |_ _| | _ _|_| |_ _| |_| |_ _| | |_ _ _| _| | | _| |_ _|_ _ _|_ | | _ _|_ _ _ _|_ _|_ _|_ _ | | _ _|_ _ _| | | _| _ _ _| | | | | | |_| |_ _ _| _ _ |_ _ | _ _| | | _|_ _|_ _ _ |_ _ _ _|_ | | _| _ |_ |_ | |_ _ |_ _ _ _| _ _| _ _|_| |_ | |_ |_ | |_ |_ _| | _ _ |_ _|_ _| | |_ _| |_ _ |_ _ _ _| |_ | _ _| |_ _ _| _ _ _ |_| _| _ _|_ | | | |_ _|_ _ _ _ _| |_ _ |_ _| |_ _|_ _ |_|_ _| _|_| | _ _| | _ _ |_| _| _ _|_ | |_ | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ | | _ _ _ _ | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| | | _|_ _|_ |_ | |_ |_ |_ | |_ _ _|_ _ _ _| | | |_ _| _ | _ _| | _ _ _ _| | _ _|_ |_ _ | |_ |_ | | _|_ _ |_| | |_ _ _ _ _ _| |_|_ | _ _|_ | | |_ _ _ |_ _ | _ | _ _| | | _| _|_ | |_ |_|_ _ _ |_ _| |_ | _ _|_ | | |_ _ |_ | | | | | _|_|_ | | | _ _| _ | | | |_ _ |_ _| | _ _| |_ _| _ _|_| _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | | _ _| | | _| _ |_ | |_ |_ _ _ _|_| _ _ |_ _| | _ _| | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _ _| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ | |_| _ _ _| | |_ _ _ _|_ _ _ _| | |_ _ | | _| |_ _ | |_ _|_ _ |_ _ | _ | | _ _ | _ _ | _|_|_ | |_ | |_ _ | _ |_| | _ |_ |_|_ _ | _ _ _|_ | |_ | _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _| |_|_ _|_ |_ _ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ |_ _| | |_ _ _| | | |_ _| | _| _ _| _ _| _ _ _| | _| |_ _ _ _ _| _|_| _ _ | | | | _|_ | _|_ | | |_ _| | |_ | | | |_ | _|_ _| | |_ _ |_| _ _|_| |_ |_ |_ |_ _| | | |_ | _ _|_ | | |_ _ | | | |_ | _ _ | |_ | _ | _ _| | | | |_ _| _| |_ | | | |_ | | _ _ |_ |_ _ |_ |_ _ _ |_ _ _ _ _| |_ | +| _ _|_|_ | _| _ _ _ | _ _ _|_ | | |_| |_ | | _| | | _| |_ _ _ _ _| _ |_| _ |_ |_ |_ |_ |_| | _| _| | | |_| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ | _|_| | |_ |_ _ _| | | |_| | | _| _ _ _ | | | |_| |_ | | |_ _ _ | |_ _ _ _| _ | |_ _| _| _ _|_ | |_ _ _ | | | | |_ _ _ | | _|_ |_ |_ _| _| _ _| | | _| _| _ |_ | |_ | | |_ _ |_| _ _| | | |_ | _| _ _ _|_ _| | _| |_ _ _ _ _| |_ | _ | _ _|_ | |_ | _ _ _ _ |_ _ | |_ _ _ _ _ _| | _ _|_ | | | _| |_ _ _ _ _|_ |_ _| |_ |_ | _|_|_ | | | _ _|_ _ |_ | | _|_ | | _ _|_| |_ _| _ | | | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| _ |_| |_ | _ | _ _|_ |_| _| _| _ | |_|_ | _| | |_ _ |_ _| | | _ _|_ _ _ | _|_ _ _ _ _| _| | | | | | | | |_ _ |_ | |_ |_ | |_| _ _ _ _|_ | |_ _ _ _ _| _|_ _ |_ _ _ _| _| | | |_ _ _ _|_| _| |_ _ _ _ | |_ _ _ _ _ _ _ _ | |_ _| | _ _| |_ _| _ _| _| |_| | | | |_ _ _ _ _| |_ _| _ _ _|_ _| | | | | _| _ |_ _ _ _| _ _| _ _ _| _ _ _ _ | _|_|_ | | | _ _| _ _ |_ | | _| | |_ | | _| _| _ _|_ _|_ _ | _ _ _| | | |_| |_ | | | |_ | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | |_ | | |_ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _| | |_ _ _| _| | | _ _ |_ _ | | | | |_ _| _| |_| | | | _ _ _|_ _ _| | _ _| | |_ | | | _ _|_ | _ _|_ _ |_ |_ | |_ _| | _| | | |_ _|_ | _ | | | |_ _| | _|_ _ _ _| |_ |_ _ | | | | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ |_ _ | _| _ _| | | |_ | _ _| | | _ _| |_ |_ _ | | |_ _ _ _ _ | _ |_ |_ |_| |_| | |_ _| |_ _ |_|_ | |_ _|_ _ _ _| | | _ _| | _|_ _| _ _| _| _ |_ |_ | | _|_ _|_ | _|_ | _ _| |_ _| _ _| | |_ | | | | |_ _| | | |_ |_| | _ _| _|_ _|_| |_ _| | _|_ |_ |_ _| _| _|_ _ _ _| |_ _ _ _ _ |_ | _ | | | +|_ _ _ _ _ _|_ |_ _ | _|_ _ | _ |_ _|_ | | _| |_ _ | | |_ |_ _ _ _ |_| _| _ _|_ |_ | | | | |_ _ _| | | | | _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_| | | |_ _ _ _| |_|_ _ _ | | _ _| |_ |_ _|_ | | _| |_ _ _|_ _|_ _ | | | |_ | _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_ _ |_| | |_ _ _| _| _ | _ _|_ _ _| _| _ _|_ | |_ _| | |_ |_ | | | | _| | |_ |_ _ | _ | _| |_ _ _| _ _ | | | | |_|_ _ _ _ _ | | |_| | | _ _| |_ _ _| _ |_ |_ | _ _| |_ _ _ _ _ | _| _ _| _ _|_ _ _| | |_ _ _ _ _| |_ _| _ _ | |_ | | | | _ _|_ | | |_ _ |_ _| | | | |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _| _ _| _| | |_ _| _ _ _| _| | |_| | _ _|_ _ _ _| |_ |_ | | | _ _| |_ | | _ _|_ | _ _ | | |_ _|_ | |_ _ _ | |_ _| _| | |_ |_ _ _| |_| |_ _ _ _ |_ _ _ | |_ _ | _| | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _ _ _| _ _| | _| | _| | |_ _ _ _ _| _ _ _ _|_ | _ _|_| |_ _ |_ _| |_ | | | | _ _ _| _ _ _| |_ _ _ _ _| |_ _|_ _ _ | | | | | |_| | | |_| _| |_ _ _ _ _| _ _ |_ _ | _|_|_ _|_ | | _| |_|_ |_| | |_ _ _ | _|_|_ | | | _ _| _ |_ _| | | | | | _| |_ _ | _|_ | | _|_|_ | | | _ _| | _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | _| _ _| |_| | | |_ | _ _ _|_ _|_ _|_ _ _ _|_ | _ _| | | | | | |_ _ _ _ _| | |_ _ | |_| _|_ _| | |_ _ _| |_ _|_ _ _ _ _|_ _| | |_| | |_ _|_ _ |_|_ | | _ _ _ _|_ |_ | | | |_ _| | | | | _|_|_ | | | _ _| _ |_ | | |_ _ | |_ _ | | | _|_ _ _ _|_ _ _ _| | _ _ | | |_|_ |_ | |_ _|_ |_ | _ _ |_ |_ | _| | _| _| | |_ | | _|_ _ |_ |_ _ _| _ _ |_ _| | _ _| |_ | _ _| _| _| _ _|_ | | _| | _| |_ _| |_ _ _ _| _ _| _| _| _| | | |_ _ _ _|_ _ | | |_ | _| _ _ _ _|_ |_ | | | _| _| |_ _| | _ _ _ _|_ |_ _| _| | | | | _ _|_| | +| _ _ _| _ |_ _| |_ _ _| | |_ _ _ _| | |_ |_ _ | |_ _ | | | _ |_ | | _| |_ _ _ _ _| | |_| | | | | |_ _| _|_ |_ | _ |_ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _| _| | |_| _ | _ _|_| _ _ |_|_ | _ _| | _| | | |_ |_ _ | _ _ _ |_ _| | | |_ _ | |_ _ _ | _|_ |_ _ _ _ | | _ _ |_ _ | | _| | | _ _ _| | | | | | _ _ | _| |_ _ _ _ _| _ _|_ _ _|_ _ _|_| | | | |_ _ _ _| | | _|_ |_ | |_ _ _ _ _ _| |_ _| |_ _ _ _ | |_ _| | _|_ | | | _ | _ _ _| |_ |_ | | | _ _ _| _ |_ |_ | | _| | _ _ _ _| | _ | _| _ |_ _ | |_ _ _| |_| _| | _ _| |_ _| _ _| _ _| |_ _| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_ _ _| | _| _ | | _ _ _| _ _| | _| | | _ _ |_ |_| _|_ _ _| |_ | | | |_ _ | | | | _ _| | | | | _ | |_ |_ _ _|_ _| _| _| | _| _| _ _| _ _| | _|_ _ _ |_ _ _ _| | _ _ _| _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ | | |_ _ | |_| |_ |_ _ _ _ | _|_ _ | _| |_| _ |_ |_ _ _ _|_ _ _|_|_ | |_ _ _ _ _| _ |_ _ _ _ | | _ _ _ _| _ _|_| |_| | _|_|_ | |_ _ _ _ _ |_ _ | | _| | | _ | | |_ |_ _ | _ _| | |_|_ _ _ _ _| |_ _| _| |_ _ _ | | | | | |_ |_ _ | _|_ | | | |_ _ _ _ _| |_ _| | _| | |_ _| | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ | |_ _| | | |_| _| | _ | _| | |_ _ _| | _ _ _ _ | |_|_ _ _ | |_ |_ _| |_ _ _| | _ _| _ | |_ _ |_ _|_| _| _| | _|_ | | | _ _ | | _ _ _| | _| |_ _ _ |_ _ | | |_ _ _| |_ | |_ _ | _ _| | | | |_ _ _ _ _| |_ _| _ _| |_ |_| | | | _| _ _| | | |_ _| _ _ | | _| |_| | |_ _|_ _ | | |_ _| _| _|_ _ | | _| |_ _| _|_ _ _| | | _|_ _|_ _ |_ | | _ _ _| | | |_| |_ | | _| | | |_| _| |_ _ _ _ _|_ _| _| |_|_ _ _ _| | | _ _ _| | |_ _ _| _| | _| _ _ _ | | | | |_ _| | | |_ _ _| |_ | | |_|_ _| _| |_ _ | | |_ _ _| |_ | _ _| | |_ _| | _ _ _| +| _ _ _ _| _| _| _| | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| | | | |_ _|_ _ _ _ _ | _ _ _| |_ _ _ _|_|_ _|_ _ |_| |_ |_ | |_ | _| |_ _| _|_|_ | | | _ _|_ _ |_ | | _ |_| _| _|_ |_ _| | | _ _ _| | | |_| |_ | | |_ | | |_|_ | | _ _|_| |_ _|_ | _|_|_ | _|_ | |_ _ _| | | _ _| _ _ |_ _|_| _ _ _| |_| | |_ |_ _ |_ |_ | |_|_ _ | | |_ _ _ |_ _ _|_ | _ _ _| _ _ | _| |_| |_ | _ _ _|_ _| _| _|_ | | _ | _ _ _ _ _ | _| |_ _ |_ _| |_| | |_ | |_ _ _ _| _| _| |_ | _ _ _| |_ |_ | _| | _|_ _| | _ _ _| | _| |_ |_ |_ _ | _| _ |_ |_ _ |_ _ _ _| _ _| | | _ _ _| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | _|_ _ _| _| |_ _ | | | | | |_ _| |_ _ _ _| | _ _ _| | | _|_ _ _| | |_ _| | | | |_ _ _ _| | |_| | |_ _| _| |_| _ _ _|_ | _| | _ _| | _| | _ _| | _ | _ _ _ _ | |_ _| |_| _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | | |_ |_ _|_ _ |_|_ | | _ _ _ _| | | _ _| |_ | _| _| _ _|_ | | _ _ _ _ | |_|_ |_ _| _ _ _| |_ |_ _ | | | | | | _ |_| _ |_ |_|_ _| _ _ |_ |_ | _ _| _| | | | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ |_ _ |_ | |_ _| | | _ _ _| |_| |_|_ | | _ _|_| |_ _ _|_ _ _ | _ _ | _| | | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | | | |_ _| _ _| |_ _ |_ _|_ |_| | |_ _ _ _ _|_ _ | | _| |_ _ | | | | | | | _ _| | | | _ | _|_ _| _ | _ _ _| _ _ _|_ _ |_ _| |_ _| | |_ _|_ _ | | |_ |_ _ _ | _ | |_ _| _| _ _|_ _ _| | |_| | | |_ _|_| _ _ _ _ | _ _ | _| _ _ _| |_ |_ | _ _| |_ _ _ _| |_ | |_ |_ _ _| |_ _ _ _ _| |_|_ _ _ _| _| |_ _ _ | |_| |_ | |_ | _ _| | _ | _| _| | |_|_ _ |_ | |_ _|_ | | _| |_ _| _| |_ | | | _ | _ _ _ _| |_ _ _ | |_|_ _ _| _ | _| | _ _ _|_ | | _| _| | _|_ _ _|_ _ | |_ _| _| _ _|_ _ _|_| | _ _ _| | | | | |_|_ _ | _ _|_ _ _|_ |_ | |_ _ | |_ _ | | +|_ _ _ | |_ |_ | |_ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _ | | | _|_ | | |_ _ _ _ |_ _ _| | _| |_ _ | | | | | _| |_ _|_ | _| |_ _ | _| |_ _|_ | | _| |_ _ _| |_ | _ _|_ | | |_ _ | _|_ _ _ _ _| _| _| | _ _| |_ _ _ _| | |_ _ _| | | _ _| _| _ _ _| | _ _| |_ _| _| |_ | | | _| _ _ _ _| | | _| | _ _|_ _ _ _ |_ _| |_| _ _ _| _|_ | | |_| |_ _ _| _ _ _ |_|_ _ _|_ | | _ _|_ | |_ | | _ _| | | |_ _ |_ |_|_ _ _ _| _| | |_ _ _|_ | _ |_ _ | |_ |_ |_ _ _| _ |_| _| _ _|_ | |_ |_ _| | |_ _| |_| _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ | | _ |_ _ _ _| | | _ | _| |_ _| | | | | | | _ _ _| _ _ |_ _ | _ _| | | _| | _| | _| _|_ _ _|_ | _ _|_ _ _ _ _|_ _ _|_ |_ _ | _|_ | |_ | _| | | |_ | | _|_ _| _ _ |_ _| | _ _| | _| | | |_ _| | | _|_|_ | | | _ _|_ _ _ _| | | | _|_|_ | |_ _ |_ _ | | |_ | | _ _ _| _|_ _| _| | _| |_ _ _ _ _|_| _ | | _| |_ _ | _ |_ _ _ _| _| _ _| |_ _| | | | | _| _| _ _|_ | _ _| | _| _| | | | _ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| _ _|_ _ _| _|_ _ _ _| |_ _| _ |_ |_ | _ _|_ | | |_ _ | _| _ _| | _ _| | | _| |_| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _|_ _ | _ |_ |_ _| _ |_ | | |_ _| _ _ _ _| | |_ _ _|_ | | | | |_ _ _| | | _ _| | _|_| _| | | _| _|_ _ | | |_ _ | |_ _ |_ _ _| | |_ _ _ _ | |_ _ _ _|_ _| | | |_ | _ _| | _ _ _| _|_ | | |_|_ _ _ _ _ _ | _|_ _ _| _|_ _| _ |_ |_ | |_ | _| _ _ _ _|_ |_|_ | _ _ |_ _ _ | |_ _ | _ _ _| _ _ | _|_ |_ | | |_ | | |_ _ _ _|_| |_ | |_ _ | | | _| | _|_ _ _| | |_ |_ _ | _|_ |_ _ _| _|_ _ _| |_ _ | |_ _|_ _ | | | |_ _| |_ _ |_ | |_ | | _|_ _ | _ | |_ | _ _| | | _ _ _ _|_ _ | _ _| | | | | _ |_| | _ _ _ _|_ _|_ _| _| | _| | | +| | _| |_ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _|_ _|_ | _|_ _|_ _ _ _ _| |_ _ _| | _ _ _ _| |_ |_ _ _ _ _|_ _ _ _ | _ _| | |_ _ _| | |_ |_ _ | _ _| _| | _ _| |_ _| _ _| | _| _ _ _| _| _| | | |_ _ | _ |_|_ _|_ _ _|_ | _ |_| |_| _|_ _ _ _ | | _ _|_ _ | |_ _ _ _|_ _ _ _ |_| | |_ _ _| _ _ |_ _ | _ _| | _| _ _ _| _|_ | _| _ _ _ _ _ _|_ _ _ _ _| | _ | |_ _| | | |_| _ _| |_ _| | | | | _ _ _| _ _| _|_ | | _|_ |_ _| | |_ |_ _| | | _ _| | | _| |_ _ _ _ _| _|_ |_ |_ _|_ _ |_ _ _ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _| _ _ _| | _ _| | | |_ _ _ _| | _|_ _ _|_| |_| _ _ _|_ | | |_| |_ | | _| _| | | _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | _| | |_ _| | | |_ |_|_ _| | | |_| _ _ _| | | |_| |_ | | |_ _ _ | _ _| | |_ _ _ _ _| |_ _| _ _ _ _| | | | |_ _ _ _ _| | _ _| _ _| | _ _ _|_| _ _ _ _| | | _ _| | |_ _ _ _ _ _ |_ _| | |_ _ _|_ | |_ _| _ _| | | |_ _ |_ _ | |_|_ _| | _| |_ _ _ _ _| | _ _ _| _| _ _ _|_ | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _ _ _ _| _ _ _ |_ _| _| _ _|_ | _| | _ _| |_ _| _ _|_ |_ _ | | | | |_ _| _| _| _ _|_ |_ _ |_ _ | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_| _ | _| | _ _|_ | _| _ _ _| |_ |_ _|_ | _| _ _| | | | |_| | _| | |_ | | | |_ _ _| | | |_| _| | |_ _ _| |_ _ _ |_ | _ _|_ | | _|_ _ _ _ | | | | | | _|_ | _|_ |_ _ | | | | |_ | _| |_ _| | |_ _ |_| _| _ _|_ | |_ | | | |_ _ _| |_ | _|_ | |_ _ _ |_ _|_ _ | |_ _ | _ _ |_| | | | | | | _| |_ _ _ | |_ | |_ | _| |_ _| | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | | _ _ _ _|_ |_| | _| _ | _|_ _| | | |_ _ |_ _| | _|_| |_ _ _|_ | _ _| | | | |_ | |_ | |_ _| | _ _ _| |_ | | |_| | |_ | | _| |_ _ _| _ _| _ |_ |_ | _| | +|_|_ _ | |_ _|_ _|_ _|_ _| _| _ _ _ | _|_ |_ _ _ _| _ _| _ _ _| |_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _ _|_| _ _ |_ _ | _ _| | _ _ _| _| _ |_ |_| _ _ _ _ | |_ _| | _| _|_|_ _ _ | |_|_ | | _ _|_| |_ _ |_ _ _ _| _ _| | _| | _| _ _ _| _| _| | | _ _|_ _| _| _ _| |_| | _|_ | | _|_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| | _ _ _| | | |_| |_ | | |_ _ | _|_ _ _ _| |_ | _ _ _ _ | |_|_ _ | | _| | _ _| |_ |_ | | _ _| |_ | | | _ _| | | | |_ _| | | _| _|_ _|_ _ |_ | | | _| |_ _ _ | _ _ _ _| _ _ | |_ _ | _| | | | _| | |_ | | _|_| | _| _ _ _| |_ _ _ _ _| | _ _| _| _ _|_|_ _ _ | |_ |_ _ | _|_ _|_ | | _| |_ _| |_ _ _|_ | _| |_ _|_ _ | | | |_ _| _ | | _| | _|_ _|_ _ | |_| _|_ _ _ _ _|_|_ _ _ _ _ _ _| |_ _|_ | | _| |_ _ |_| | | |_ _ _ _ _ | _ _| _ _ _ _|_ _| |_ _ _ | | | _| _ _|_| _ _ |_ _ | _ _| | |_ | |_ |_ _ | | | | _ _| _ | _| | _ | _ _| |_ _| | |_ _ |_ _ _ | | |_ _| _ _ _| | _ _ _|_ _ _| | _| | | |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ | _| | _ _ _| | |_ | _| |_ _ _ _ _| |_ |_ _ _ _| _ _| _ _ _| | |_ _| |_ _ _ | _| |_ _ _ _ _|_ |_ | _|_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_ |_ _| _|_ _ _ _ _| | _| _ |_ |_| _ _| _ | |_ _ _ _| |_| | _| _| | | | | _| |_ _|_ | | | |_|_ _ _| | _|_ _ _ _ _ _| _ _|_ | _ _|_ _|_ _ _ _ | | | |_| | | | |_|_ _| |_ _ |_ _ |_ _ _| | |_ |_|_ _|_ | |_ _ _ _|_ _|_ _ | | _| |_ _ _ _ _|_ _ | |_ _| _| _ _|_ _ _| | | | | |_ _ _ _|_ _ _| |_ | |_ | | | | |_| |_ _|_ |_ | _ _| |_ _|_ _ _|_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ _| |_ | | |_ _ | |_ _| _|_|_ | | | | _|_ _ _ _ | | _|_ _ _ |_ _ _|_ _|_ _ _| |_| _ _| | | _ | _|_ _ _|_ |_ | |_ _|_ _| | _ _| |_ |_ _ _| _|_ _ | +| _ |_ | _ _ _ _ | |_ _| | |_ _|_ | _|_ |_ _ | | |_ _ | |_ | |_ | _|_ | _|_|_ | | | _ _| _ _ _| | | | _ _|_| | | _ _ _|_ | | |_| |_ | | _ _ |_| _| _ _|_ | _ | | _| |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ _ | | |_|_ | _|_ |_ _ | |_ |_ | |_|_ | _ _ | _| | _| _ _|_ _| _| |_ _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | |_|_ _|_ | | _| |_|_ | |_| _ | |_|_ _ _| _ | | _| |_ _ | _| |_| _|_|_ _ _ _ _|_ _ | |_| |_ | | | |_ _| |_| _ _| | | |_| |_ _ _| | |_ _|_ _ _ | |_ _ |_ _| |_ |_ | | |_ |_| | | | |_ _ _ _| _ _| | | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _ _ _ _ _ | | _ |_| |_ _ _ _| | | _ _ _ |_ _|_ _ | _| | |_| _| | |_ |_ _ | _ _ |_| |_| _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | |_ |_ _ | |_ _ | | |_ _ | | _ _| |_ _ | | _| _ |_ |_| _| _| |_| | | | | _ _ _|_ | | |_| |_ | | | _| |_| _| |_ _| | |_ _| | _| | _|_ | | | |_ | | _ _| | |_ |_ _ | _| | |_ | _ _ _|_ _ |_|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ | | |_ _|_ | |_ _| _ | | |_ _| _|_ | |_ _ | |_ _| | |_ _| _ | _| _ _ _ _ | | |_ _| |_| _|_ _ _|_ |_ _ _| |_ _ _ _ _ | | | | _|_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | | |_ _ _ |_ _ |_| _| _ _|_ | _| _| | | | |_ _ |_ _ |_| _| _ _| |_| |_ |_ _ | _ _| | |_ _ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_|_ | | |_| _|_ | | |_ _ |_ _ | _|_ _|_ | _ _ | | _ _ |_ _ |_ | |_ _ _ _ | _| |_ | _ _| | _ | _ _ _| |_ _| | |_| | _| _ _ _| _|_ _ _ _| _| | |_ _ _ _ _ _ _|_ _ _ _ _| _| _ _ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| |_| _| _ _|_ _ _| |_ _ _ _|_ |_ |_ _ _ _ _| |_ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ |_ | | |_ |_|_ _ _ | |_ |_ _|_| _ _ |_|_ | _ _| | _|_ _|_ | | _| +| | |_ _| _ | | _| |_ _ | _|_ _ _ _ _| _ |_ _ _ |_ _|_ _ |_ _| _|_ _| |_ _ |_|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | |_ _ _ _ _| |_ _ |_ _|_ _|_ | | _| |_ _ | | _| |_ _ _ _ _|_ _| | |_ _ _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ _|_ _ |_|_ |_ _| | | | | |_ | |_ |_ _|_ _ | |_ _| _ _ |_ _ | _ _| |_ | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| | |_| _| | |_ |_ _ | |_ _ _ _| |_ _|_ _ | |_ _| | |_ _ _| | |_ |_ |_ | _ _ _ _ | |_|_ | | _| |_ _ | |_ | |_ | | |_ |_ |_ _ | | _ _ _ |_ _|_ _ |_ _ _|_ |_| _| |_ |_ |_ _| |_ _|_ _ | _ _| _ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_ _ _ _| |_ _| | | | | | |_ _ _ _ _|_ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ | _ _ _ _| | _ | _|_|_ | | | _ _| _ |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_|_ | | _ _|_| |_ _|_| | |_ _ _ |_ _ _| |_ |_| _| _ _|_ | |_ _| _| _|_ | |_ _ | _ _|_ _|_ | | _| |_ _| _| _| _|_ _ | |_ _ _ _ _| | _ _ _| |_| |_| _| | | | _| |_ | _ _| |_ | |_| _|_| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _|_ _ _ _ _| _ _ _|_ |_|_ _|_ _ |_ _ |_ _ _| |_| | _ _| |_ |_ _ _ _|_ _ _ _| _ _| _|_ _|_ _ |_|_ |_ _ _ | |_ _ _ |_ |_ _|_ | _ _| |_| |_| | | |_ _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _| _|_ _ |_ _ _ _| | | _| |_ _ _ _ _|_| _|_ _ _|_ _|_ _ |_| |_ |_ |_| |_ |_ | | _ _|_| |_ _| _|_ _|_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ |_| | |_ _| | | |_ | _|_ _ _ _ _ _ _| | |_ _| | _ |_| _ _|_ | _ _| _| |_ _ _| | |_ | _| |_| | | | | _|_ | _| |_ |_ _ | |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ | | _| |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | | _ _| | _ _ _ _| _ _ _|_ _ | _ | _ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ _| | _ _|_ _|_ _ | _ _ _|_ | | |_| |_ | | | | | |_ |_ | +| | |_ _ |_ _| | |_ _ _| | | | _ _ |_ _ |_ | _| | _ _ |_ _ |_ _ | _| _|_ _ _ | _ _ | _ _ _ _ _|_| |_ |_ _ |_ _| | _| _ | | |_ |_ _ | |_ _ |_ | _ | _ _|_ _ |_ | | | |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ | | | | | _|_ _ | | _| | _|_|_ _ _| _|_ |_ _|_ | _ _ _|_ _ _ _ _ | | |_| |_ | | |_ _ _| _ _ | _|_|_ | | | _ _|_ _ _ | | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | _ _ |_ _| | _ _| _ _ _| | | _ _|_ | |_ _ | | _| |_ _ | | |_ |_ _ | _ _| | | | | | | | | | | |_ _| | |_ _ _| _ _ _ _ _ _ _| _| |_ | |_ _ |_ _ | _ _| _ _|_ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| _| |_ |_ _|_ _ _ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | _ _| | |_ _|_ _ _ _ _| |_ _| _ _| _| _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ | _ _|_ | | |_ _ | _|_ _| |_ _ | _ _| _| _| |_ _ _ _ _| _ |_ _ _| | _| _| | | _ _| | |_ |_ _ | _ _ | | | | |_ | _| | |_| _ |_ |_ | | _| | | | | | | | | |_ _ _| _| _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ | _ _| |_ | _ |_ _ | | | | _| _| | | _| _| _ _ _ _ | |_ _ | _ _ |_ |_ _ | | |_ _|_ _ | _| _| _ _ _|_ _ _ | _| _| |_ _| | _ _| | | _| | | | _ _| _| | | | |_ | | _ _ _| _ |_ _ | _ _| | |_ _ _ _ _ | | _ _ _ _ | |_ _ | |_ _ | _ _|_ |_ _ _|_ | | |_ _ | _ _ _ _ _| | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _|_ |_ _| _ _| | | | | |_ _ _ _ _| _ _ |_|_ | _ _| |_ |_ |_ _| _| |_ | | _| _ _ _|_ _ _| |_ _| _ _ _|_ | |_ _ _| |_ _ _ _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ | _| | | |_ _|_ | _|_ _ | | |_ _| |_|_ | _|_| _ _ _|_ _| |_ _ _| | | _| |_ _ | | _| |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _|_ _ | _ _| _ _ | | |_ _ | _ _|_ _|_ | | _| |_ _| |_ _|_ _ _| _| +|_|_ | | | _ _| _| _ _| | | | | _| _| |_ _| | | _| | | _ _ _| | _ | |_ | | | |_ _| _ _|_| _ | _| _ |_ |_| _ | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| |_ |_ _| _ | |_ | | | _| | | |_ _|_ | | |_ | _| | |_ _| |_| | | |_ _|_ _ _| | | | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | | _| |_ _ _| _|_ _ |_ _ _ _ _| |_ _|_ |_| _| _| | |_|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ | | _ _ _| | _| |_| | | _ _ _ _| _| | |_ _ _| | | |_ | | _ _|_| |_ _ _| | |_ | |_| |_|_ _|_ _ | _|_ _ _ _ _ | _ | _ _ _| | _ _ _| | _ | | _| |_| | _| |_ _ | _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | |_ _ | | _ _ _| _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| |_ | | | _| _ _ _ _| | _ _ _| | _|_ | | |_ | _|_|_ | | | _ _| _ _ _ _ | | | | |_ _| | _ _| |_ _| _ _|_ | | |_ _ | | | |_ | |_ _| _ _ _| |_ | _ _ _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _| | | _| | _| | |_| _| _ _|_ | _|_ |_| |_| | |_ _ | |_ _| _ _ _| _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| |_ _| _| | _ _|_ _ _|_ _| _ _ _| | | |_ _|_ _ | _|_ _| _| | _ | | _| |_ _ | _| |_ | | | | |_ _|_ | _ _ _| _| _| | | _| |_ _ |_ _ _ _|_ |_ | | |_ | |_ _ _| |_ _| | |_ | |_ _|_ _ | _| _ _ _| | _ _ _|_ |_ _|_ | _ _| |_ _ | | _| |_ _ |_|_ | _|_ _| |_ | | | _ _| |_ _| _ _| | | _ _ _ _| | | |_ |_ | _|_|_ | | | _ _| | | |_| |_ _| |_ _ _ _ _| |_ _|_ | | |_ | | | _ _ _|_ | | |_| |_ | | | | _|_ _| _| _| _| |_ _ _| _ _ | |_ _ |_ _| | _|_ _ | _|_ |_ _ | | _|_ _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ _|_ _ _| |_ _|_ _ _ _ _|_| | | _| |_ _|_ _ |_ _ | |_ _ |_ _ | | |_ _ | | _| | | _ _ _| | |_ |_ _ _ _|_ _ | _|_|_ | | | _ _|_ _ _ _ | | _| | _ _|_| |_|_ |_ _|_ _| | | _| | |_ |_ _ | _ _ _ |_ | +| _ _| |_ _| |_ _ _| _ | | |_| |_ _ | |_ _ | | | |_ | |_ | _ _| | _|_ | _| |_ _|_ _ |_ _ _ |_ _| |_| _| _ _|_ |_ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ _ |_ |_ |_ _ _| |_ _ _| |_ _|_ _ _ _ _| | | |_ _|_ |_ _|_ _ |_ _ _ _|_ _ | | _ _|_| |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ |_ _ | _|_ | | |_ _| _ _ _ _| | |_ _ _| |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _|_ _| _ |_ | _| _ _|_| |_ |_ _ _| | _| _ | _| | | | _ _|_ | | |_ _ | _|_ |_|_ _ _ _ _ _ _ _|_| _ _ _ |_ _| | | |_ _ | |_ | |_| |_ _| |_ _| _| _ _|_ _|_ _ |_ _| _ _ _ | _|_|_ | | | _ _| _ | | | | | _| _ _|_ _ _| |_ _| |_ | _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| _|_ | | _| |_ _| |_ _ | |_ _ _| |_ _ | _| | | |_ | |_ _ _ _ _| |_ _|_ | | _ | | | |_ _|_ _ _ |_ _ _ _| _ _| _ _ _| |_ _| _ _| | | | | |_ | |_ | | | _ _|_ _ | | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | | | | |_ _ | _| |_ _ _ _ _|_ _|_ _ _ _ _| |_ _|_ _ _ _ _ _ _| | |_ _ |_ _ | _|_|_ | | | _ _|_ _ _| | |_ |_ |_| _| _| | _| _|_ | _ _| |_ _ | _ _| | _ _ _| _| _| | |_ _ _| | | | _| |_ _ _|_ _| |_ | | _|_| | _ _ _| _ |_ _| _| | _| | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _ _ | |_ _|_ | _ _|_ _ _| _| _ _ _|_ _ _ | _| | |_ _ _|_ | | _ _| | _ _|_ _ _|_ |_ _ _ _| _ _| _ _| |_ _ | | _|_ _ _ _| _|_ _ _ _ _| |_ _| _|_ _| |_ | | |_ | _ _ _|_ _ _ _|_ _|_ _|_ _| |_ _ | _ |_ _|_ | | _| |_ _| | _ _ _| |_ _ |_ | _ _| | _| |_ _ | | _ _| | | | _ _|_| |_ _ |_ _|_ _ _ | |_ _ _|_ | _|_|_ | | | _ _| _ |_ _ | | | | |_ _ | _ _ | | _ _ |_ _ | | |_| | _| _ _ |_ _ | | |_ |_ _ |_| | |_ _| _ _| | |_ |_ _ | _ _| | |_ _ _ _ | | |_ _ _ _ _| |_ _|_ | _| | | | | _|_ | | |_ _ | |_ _ _ _ _| _|_|_ _|_ | |_|_ | | _ _|_| |_ _| _ _| +| | | _ _ _| | | _|_ _| |_ |_ |_ _ |_ _ | | |_ |_ | _|_ | _| _| _|_ |_ _ _ |_ _ | | | _ | _| |_ _ _ _ _| | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ |_ | | _| _ |_ |_ |_ | _ _ | _ _ _|_ _ _|_ _ _ |_ _ |_ | _| | |_ | _ _| _|_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_|_ | | _ _|_| |_ _| |_ | |_| _| |_ _ | |_ |_| _ |_ |_| _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ _| _ _ _| |_ |_| | _| _ |_ |_ |_ | | | | _| |_ _| | | _| | _ _| |_ _| _ _| _ _|_ _ | | | _| _ _ _| |_ | _| | _ _| | |_ | | |_ _ _| _ _|_ | |_ _| _ _ _ |_ _|_ _ _| | _|_ _ _ _ _| |_ _| _| |_ | |_| | | _ _| |_ | _| |_ | _| | | _ _| | _| | | |_ _|_ | |_ _ _ | | | |_ _ | | | |_ |_ _ | |_ _ | |_ _ _ | |_ | | | _ _| |_ |_| | | _| _ _ | |_ _| | _|_ _| |_ _ _ _ | | _ | | |_ _ _ _| _ _| | |_| | |_ _| _| | |_ _ _| | _ | _| | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| |_| |_|_ |_ _| |_ _ _ | _ |_| _ _ | |_|_ | _ _ |_ _ | _ _| |_ | |_ | _|_ _ _ _ _| |_ _| _ _ |_|_ | | | _| _| _| _| _|_| | | | | _ _|_ | _ _ _|_ _| |_ _ _ | _ | | _| _ | _| | |_| | |_ _ _ | |_ |_ _| | _ _|_ _ | |_ |_ _ |_ |_ _ _ _| | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| | _| | | |_ | _ |_ | _ _ _| _ _ _| _ _ _ | |_ | _| _ _ _ | | | | _ _|_| | _ | _ |_ | | | |_ _ |_ _| | |_ _ |_ _ | | _ | _ _ | | | | | _ _ _ _| |_| | |_ | |_ _ | | _| _ _ _ _ | | _| | |_| | | |_ |_ _ | _ _ _ |_| _ | | | | |_ _ _| | | | | _| | _|_ | | |_ _ | | _ _ _ |_ _|_ _ | | |_ _ _ _ _| |_ _| _ _| |_ | | | | | _| | | _| |_ _| | | _|_ _ _|_ _ _|_ |_ _ _| _ _| | _| _ _|_ | _| _ _| _|_ | | | |_ | _ _| _ | _| |_ _ _ | _ | _ _ _|_ _| _|_ _| |_ | _ _| |_ _| _ _| |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | +| |_ | |_ _ | | | _| _ |_ |_ |_ |_ _| |_ _| | _|_ _| | | | |_ _| _|_ _ _ |_ |_ _ _ _| | |_ _| _| |_ _ | _ _ | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| _|_ _ _| _| |_| _| _ _|_ | _|_ _| | |_ _ _ _ _ _ | _ |_| _ _| | _|_|_ _ _|_ | | |_ _ _ _| |_ _ _ _| | | _|_|_ | | | _ _| _ | _| | | |_ | _ _|_ | | |_ _ | | | |_ | |_ _ _| | | _| _| _ _|_ | | | | |_ _|_ | _ _ _ _ | | |_ _ | |_ _ _ _| _| _|_| _| _ _|_ |_ _ _|_ _| | | _ _| _|_| |_ | |_ _ _ _| _ _| | _| _ _ _| |_ _| |_ |_ _ |_ _| |_ _| | | _|_ | _|_ _|_ _| | _ _ _ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | | _ _ _ _ _ |_ _ _ _| |_ _ _| |_ | _| _| |_ | | _|_ _ |_| | | |_|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _| |_|_ | | _ _|_| |_ _ | | |_ | | | | |_ | | |_ _ |_ _| _| | _|_ |_ _ _ |_| _ |_ |_ _|_ _| | | |_ |_ _|_ _ |_ _ | | |_|_ | _|_ _| _| |_ | | _|_ | | | _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ |_ |_ |_ _ |_ | _ |_ _| |_ _ _| | _| |_ _ | _|_ | | |_| |_ | | |_ _| | _ _ _ _ _ | _ _ _ _ |_ _ _|_| |_ _| _| _| |_ _ |_|_ | | | | _ | |_ | _ _ _ _|_ |_ | | | |_ _| | | _|_ _ _| | | _|_ _ _ _ _ _| _ _| | | | _ _| | _| |_ |_ |_| | _ _| |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| | _| _| | | | |_ | | | | | _ _ _ _| | |_ _ _ _ _| | | _ _ | _| | | |_ _ _ _ _| | | |_| _ | |_| |_|_ |_ _ |_ _ _| _|_ _ |_ _ |_ _| | _| |_ _ |_ _| | |_ _| _ |_ |_| | |_ _ | _| | | | |_ _ | | _| |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ _| | |_| |_| | |_ _ _ | | | | | | | | | _ _| |_ _| _ _| | |_ | _ _ _ _ |_ _| | _ _ | | _ _| | _ _ _|_| |_| |_|_ _| | | | | | |_ | _ _ _ _ | |_ _ _ _ | _ _| | | |_| _ _|_ | | |_|_ | _|_| | |_ | | | | _| _|_ _ _| | | | |_ _| _ _| | _ _| _ |_ |_| _ _ _| _ _| |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | +| |_|_ _ | | | |_| _| _ _|_ |_ | | | |_ _ | _| _ | _| | |_ _ _|_ _ |_ _|_ | _ _| | _ _| |_ | | |_ _| |_ _| | _| | | |_ _|_ | _|_ _ _ _| | |_ _ | | | _ _ _| | _| |_ _ _ _ _| | _ _ _| |_ _ _ _ | |_|_ |_ | | | _ _| _ _ _ _ _ | | |_| _ _ _ _|_ |_ _ | | |_ _ _ _ _| |_ _|_ _ | |_ _| | |_ |_ _| | _ _| |_ _| _ _| | |_ _ |_ | | _ _| | | _| |_ _ _ _ _| | |_ _|_ _ _ _ _|_ | _ _| | |_ _|_ _ |_ _|_ _ _| | | |_ _ | _| |_ _ _ _ _ _ _ _ _ _ |_ _| | _ |_ |_ |_ _ _ | | |_ _ |_ _ | | _|_ |_ |_ _| | _ | _ | |_ | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | |_ _|_ |_ | _|_ _ _ | _| _ |_ |_| |_ | | _| |_ _ _| | _|_ _|_ _ _ _| | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | _ _|_ | | |_ _ |_ _|_ _| _|_ _| |_ _ | |_ _ | | |_ | | _ _ _| _ |_| _| _ _|_ |_ | _|_|_ | |_ _ |_ _ | |_ _|_ _ |_ _| _ _ _| _ _ _|_| |_ _ |_|_ | _| | _| | | |_ _|_ | _ | | | | |_|_ | _ _|_ | |_ _ | | _|_| _| _ _ _ _ |_ _ _|_ | | | _ |_ _|_ | | _| |_ _ | _|_| |_ | _| |_ _ _| | _| _ |_ |_ |_ |_ _ _ | |_ _ |_| |_| | _| | |_ |_ _ _| |_ | _| _ _ _| | _| _ _ _| |_ | _ _ |_ _ | _ _| | _|_ | | _|_ _ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | | | | | | _| |_ | |_ | |_|_ _ | | _| |_|_ _ _ _ _ _| |_ _ _| |_ _ _| |_ |_ _ _|_ _ _ |_ _| _ _| |_ | |_ _ _ |_ _ _ |_ |_ | _|_ _ _| _ | _ _|_ |_| _| _ _|_ | |_ _ |_ | _| | |_ _| | |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| | _| _| _ _ | | | | | | |_| | | |_ _ _ _| _ _| | _| | | |_ _ | | _|_|_ | | | | | | _ _| | _| _ |_ |_ _ | |_ _ _| |_ _| | | | | |_ _ | | _| |_ _ | _ _|_ | _|_ _| | _|_ | |_ _|_ _ |_ _ _ | | |_ _| |_ | | |_ _ _| _| | | |_ | _ _| _ _| _| _| _ _|_ | | _ | | |_|_ | | |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| | +| |_ _ | _| | | | _| |_ _ _ _ _| | | | |_ _| _ _| | _| | |_ _| |_ |_ _ _ |_ | _ _ |_| |_ | | | _| _| |_ _ |_ _ _| |_ _ _| |_ _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_ _|_ _|_ _| | | |_ _ _| _ | | |_ | | _| |_ _ | |_ _|_|_ | | | | _ _| | |_ |_ _ _| |_ | | |_ | | _ _ |_ _| | _ _ _| |_ _ _ | |_ _ _ _| _ _| _ _|_ _ _ _ _| | |_ | _| | |_ _ | _ |_ _ _ | _ _ _ _| | | _ _| _| _ |_ _ _ | _ _| |_ _| | | |_ _ _ _| _ _ |_ _ | _ _| | | _ _|_ |_ _ | |_ _|_ _ |_ _ | |_|_ _ _| _|_ | _|_ |_| | | | | _|_| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ _ _ | _|_ _ _ _| _| _| _ _|_ |_ | |_ _|_ _ _| |_ | |_ | | _|_ _ |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | |_ _| | _ _| |_ _| _ _| _ | _| _ |_ |_ |_ _ | | | |_ _ _| |_| _ _ _ | | _| |_ _ _ _ _| _|_|_ _ _ _ _| | _ _| _ _| |_ | _ |_ _ |_ _ | _|_ _ _ _ | |_ _ |_| | _| |_ _ _| |_ _|_ _ _ _ _| | |_ _| |_ |_ _|_ _ |_|_ _ _ _|_ _ _| | _| |_ | | _|_ _ |_ _| | | |_ _| | | _| | |_ |_ _ | |_ _ _| | _| | _| | _ |_| _| _ _|_ |_ | _ |_ | _|_ | _ _| | _|_ |_| _| _ _|_ _ _| |_ _| _ _ _|_ _| |_| _ |_ |_ _ | | | |_| |_ | |_ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | | | | |_ _ _ _ _| |_ | |_ _ _| | | |_ _ _ _ | |_ _ _|_ _ | _| _ |_ |_| _ | | _ |_ _| _ _| _ _| | _| _ | |_ _ _ _ _ _ _|_ |_ _| | _ _| _| | | _| _| |_ _ _ _ _| | | | | | _|_ | | _| _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _ _| |_ _| |_ _|_| |_ _ _| | |_ | | | |_|_ _ _ _| |_ _|_ _ |_ _|_ _ _ _ _| |_ _| |_ _ _ _| |_| _| _ _|_ | _|_ _ | | _ _| |_ _| | _| | |_ _ _| _| |_| | _|_ _ _ _| | | |_|_ |_ _ |_ _ | _| |_ _ _|_ _|_ _ | |_ _ _| _|_| |_ | | | | _ _| _| |_ _ _ _ _|_ _| | |_ _|_ _ |_ _ _| _| | | |_ _|_ |_ |_ _ _ _ | | |_ _ | | | +| _ _| |_ | _| | |_ _ _ _ _ | | |_ | _ _| _ _| | |_ _ _ | _| |_ _ _ _|_| |_ _ _ | | |_ _ _|_| _| |_ _ | |_ | | _ | | | _ _ | | |_ _ |_ |_ _ _ |_ _ | _ _ _ _|_ _|_ | | _ _| |_ _| |_| | | _|_ |_ _ _|_ | | |_ | _ | | _ _|_ _| |_ | _| _| _ _|_ _ _| | |_ | |_ _| |_| _| | | _ |_| _ |_ |_ _| _ _ | | |_ _ _ _ | |_ | | | | _|_ | _| | | | | | |_ _ _ _|_ _ _ |_ |_ _| _ _| | _ |_ | | _ _| | |_ | | | _ _ _|_ | | |_| |_ | | |_ _ _ _ _|_ |_ _| | _ |_ _ | |_ _ _ _| |_ _ |_|_ _ _ | _|_ |_ | _ _|_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | _ _| | |_ | _| _| |_ _ _ _ _| _| | | _ _ _ _|_ |_ | _| _|_ _ _| _ _ _| |_ _ _ _ | |_|_ _ _ _| | | _ _|_ _ | |_ _ _ _| _ _| _| | _| _| _ _|_ | | _ _|_ _|_ | _ _| _ _| |_| | |_ _ _ | | _ _ |_ | | | _| _ _| | |_ _|_ _ | _ _| |_ _ _ _ _| |_ |_ |_ | | |_ _ _| | | _ _ | _ _ _| | _ _| _|_ _ _|_ _ |_ _ | | _ _|_ _ _|_ _ _| |_ _ |_ _ _ _| |_ | | | _|_ | |_|_ | | _ _|_| |_ _| | _ _|_ _ _| |_ | | _| |_ _ _ _ _| | |_| |_ _| _| _| |_ |_ _|_ | | _ _| | _| _| | |_ _ | _ _ _| _| _ _|_ | _| |_ _|_ | | _| |_ _ _ _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _| | | _ _ _ _ |_ _|_ _ _ _ _|_ |_ _ |_ _|_ _ | | _| | _| _ _|_ |_ _| | _| | | _ _| | |_ | |_ | | _ _ _ _| _ _ |_ _ | _ _| | | _ _|_ |_|_ | |_ _ _ | | _| | | |_ | |_ _ |_ | | | | |_ _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | | | | | _| _ _ _ | _| _ |_ |_| | |_ _ _| | |_ _|_ _ |_ _ |_ _ _ | |_ _ _ | _ | _|_ _ _ _ | | _| |_ _ _ _ _|_ |_ |_ _| | | _|_ _ _ _| | _| _| | | | _|_ |_ _ _ _| |_ | | |_ _ _ _ _| | _ _| _| _ _ | | | _ _| _ |_ |_| _| |_ | | |_ _ _ _ _ _ _ |_ |_ _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _|_ _ _ _ _ _| |_ _|_ _ |_ _|_| +| | _ _| _|_ | |_ | _| _ _|_ |_ | | | |_ _ _ _| |_ _ _ _ _|_ _ _|_ | _ _ _ _|_ |_ _| |_ | _ _ _| _ _| | | _| | | |_ | |_ _| | |_ _|_ _ _ _ _ |_| _ _| | _ _| | | | _ _ _ _|_ _ _ |_ _ _ _| _| | | _|_ _ _ _ | | |_ _|_ | | |_| _ _ _ _|_ |_| | _ _| | _| | |_| _| | |_ | | _|_ _| _| _| _ _|_ | |_ _ _|_ | |_ _|_ _ |_ _| _| |_ _ _ _| | | _| _| | _| | | |_ _| |_ _ _ _ | |_ _ |_ | _| _ _| |_ |_| _| | | | _| | | _| |_|_ _ | | |_ _|_ | | _| |_ _ |_ _ | | _|_|_ |_ _ | |_| _ _ _ _|_ | _ | | |_ _ |_| _|_ | _ _| _ |_ _ | _|_|_ | | | _ _| | |_ | | _|_ | | _ _|_| |_|_ | | |_ | |_ _ | _ _ _ |_ |_ _ _| |_ | |_ |_| | | _ _|_ _ | |_ _ | _| |_ _ |_ _ |_ | |_ | | |_ _ _ | | | |_|_ |_ _| _| |_ _ _ _ _|_|_ _ | | _|_ _ _| _ _|_ _ |_ | | |_ _ _| | _ _|_ _ |_| |_| | | |_ | |_ _ _ _ | |_ | _|_ _ _ _ _|_| _ _ _ |_ _|_ _ _ _ _|_ _ _| | |_ _ _ _ _|_ |_ _ _ _| _ _| | _ _| | | | _ _ _ | | | _| _|_ _| _|_ _| |_| |_ _ _ |_ | _ _|_ | | |_ _ | |_ _ _ _| _| | | | |_ | _ | |_ | _ | | _| | _|_ _ _ _ _ _|_| |_ | _| _ _|_ | | |_ _ _ _| _ | _| |_ _ _ _ _|_ _ _ _ | | |_ |_ _ | _ _ | | |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | _ _ |_ _| |_ | _| |_ _ _ _ _| | |_ _ _|_ _| _| | | _| | _| | | | _ _ _|_ | | |_| |_ | | | |_ _| _ _| | |_ | _ | |_ _ _| | |_ | |_ _ | _ _| |_ _ | | _| | | |_ _|_ | _|_ | _ | | |_|_ |_| | |_ _ _ _| |_| | _| _ _|_ | |_ _| _|_ _ | _ |_ _ | _| | |_ | _ _| |_ _| | |_ _ _ _ | _| | |_ _ _ _ _ _ _| _| | | | | _ |_ | | | _ _|_ _| | | | |_| _ _ _ _|_ |_| |_| | | _ | | _ |_| |_| _ _ _|_ | | _|_| | | _ _|_ | _|_ |_ _| |_ |_ _ |_ | | |_ |_ _ _ _ | _ | _ | | _ _ _ _ _ _ _ _ _ _ _ | _ _ |_ _ _ | +| |_ | | _ _ _| _| | _ _ _ _| | |_| _|_ _ |_ _ _ | _ _ _ _ | |_ _ _ _| |_ |_ |_ | |_ _ | _|_ _ | |_|_ _ | |_ |_ _ _ _ _|_|_ _ _ _ | |_ _| _|_ _ _| _ _| _|_ _ _| |_ _ _ | _ _ _ |_ |_ | | _ _ _ _ _ _ _| | _ |_| | |_ |_ _ _| |_ | |_ | _|_ | | |_ _| _| _| |_| _| | _ _ | | _| |_ _ _ _ _|_ _ _ _ _ _| |_ | |_ _ | | _| | _ _|_ _| _| _|_| _| | |_ _ _| _| _| |_ _ |_ _|_ _| | | _| |_ | | _| | | | | _| | _ _| | |_ _| | | |_ |_ _ | _ _| _|_| |_ _ _ _ _| _ _|_ |_ _ _| |_| |_ _| |_ |_ | |_ _ _| _ _|_ _ _ _| | | | _|_ _ _ _ _| |_ _| _ |_ _|_ | | | | _ _|_ | | |_ _ | | | | _| |_ | | | |_ _ | | |_ _| _| _ _|_ _ _|_ |_ _|_ _| | _ |_ _ _ |_ _ _|_ | | | | _|_ | | _|_ _ _| |_ |_ _|_ _ |_ _ | |_ _ _ _ _ | |_ _|_ _| _ |_ | | | | _| _| |_ _ |_| _| | _ _ _| | _| _|_ | | |_| _ | | _| | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_ _ _ _ | |_|_ | _ _ _| | _ _|_ _ _ _| | | | | _| _| |_ _ _|_ _ _ _| _| _ |_ |_ |_ |_ _| | _ _| |_ _| _ _| |_ _ _| |_ _| | |_ | |_| | | _|_ | | | |_ _|_| _| | _ _ _ _ | |_ _ _|_ | | _ |_ _|_ | _ |_ _| | |_ _ | _ _ _ _| | |_|_ | | _ _|_| |_ _| | | | _ | _|_|_ | | | _ _|_ _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | _ _ _ _| | _ _ | _ _|_ _| _ _ |_| _| _| |_ | |_ | |_ |_ _ | _|_ _|_ | | _| |_|_ | _| | _| _| _|_ _| |_ _ | |_| _|_ _| _|_ | |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | _ _ _| _|_ _|_ _ |_ _ _| | _ _ _ _|_ |_ | |_ _ _ _ _| _ | |_ | | | | _ _ _| | _ _| |_ _ |_ | | | _ |_ _ _ _ _|_ _ |_ | _ _| | _| _| _|_ _| |_ | | _| | |_ _| _ _ | |_ _|_ _ _ _ _| |_ | | _|_ _| _| |_ |_| _|_ _ _| _ _ |_|_ | _ _| | |_ _ _ _ _|_| |_ _ |_| _| |_ _ |_ _| |_ | | | _|_ |_ _| | |_ _| | | _ _ _ _ | |_ _ _ _|_ |_ | _ | +|_ | | | |_ _ _| _| | | | | |_ _ |_ | | | |_ _ | | |_ _ | | _| |_ _ | | _ _|_ _ _| | | _|_ _ _| | |_ | |_ | |_| | _| | _ _ _ | | _| |_ _ | | |_ _ |_ | | | _ _ _ _|_ |_ _|_| | |_ |_ |_| |_ _ _| _ | | |_ | | _| | _| _| _ _|_ _ _|_ _ _|_ _ |_ _|_ _ _| _| _ _ _ _ _|_ _ | | | |_ _ _ _ | _ _ _ _ _ |_ _ _| | _ _| | |_ _ |_|_ | _ _ _| _ _ | |_ |_ _ _ _ _|_ |_ _ _| | | _ |_| _| | | | |_ _|_ |_| |_| | | |_ _ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ _| _ _| | _| _| _ _| _ _| | | | _|_ _ |_ _ _ _ _ _ _ | | |_ | | | |_ _ |_ _ |_ _ _| |_| _| | _ _| |_ _| _ _|_| | |_| _| _| | |_ | | |_ | _ _| | _ _ _ _ _ _ _| | _ |_| |_|_ | | | _| | _ | |_|_ _ | _ | |_| _ _ _ _|_ |_ | | |_ _ | |_ |_ _| _| |_ _|_ _ | | | |_ _| |_ _|_ _| _|_ _ _| _| _| _|_ _ _ _|_ _ _| _ _ _| | _| | | |_ _ |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | _| |_ _ |_ _ _ _| |_ | _ _ _| |_| | | | _ |_ _ _ _ | |_| _| _| _ _|_ |_| | | |_ |_ |_ _ _ _| _ _| _| _ _ _ _|_ _ _| |_| _|_ _ _| |_ | | |_ | _ | | _|_ _ | | _| |_ _ | | | | | | _ _ _ _|_ |_ | |_ |_| | | |_| | | _ _|_ | _ _|_ | | |_ _ | | | | | | |_ _ _ _ _| |_ _| _ _ _ | |_ | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _| |_ | |_| | _| _| _ _ _|_ | | _| |_ |_ | |_ |_ _|_ _ _ _| | |_| _| | |_ |_ _ | _ _ | |_ _| _| _ _| | _ _|_| _| _ |_ | _ _ _| _|_ _ _ _ | | _ _ | _| |_| |_ _ _ | | |_ _ | | |_ _ _| |_ | | _ |_ | _| | | | | | | |_| | _ _|_ | | _ _| | | | _ _|_ _| _ _ |_| _ _ _| _| | _ _| | | | _| _ |_ |_| | |_ | |_ _ | |_| | |_ | _ _ | | _ _|_ _ _| |_ _ |_ _|_ |_ | | | _ _ _| | | |_| |_ | | | |_ _ | | _ _ _| _|_ |_ _ |_ _ _|_ |_ _| |_ _|_ | | | _ _ _ _ _| |_ _ | | _| |_ _ |_ _ | _|_ | | +| _| |_| | _ _ _| _| | |_ _| | _ _ | |_ _| | _ _| | |_ _| | |_ _ _|_ | |_| | _ _ _| _|_ | | _|_ _ _|_| | _| |_ _ _| _ _|_ _ _ _ _|_ _| |_ _ _| | | _| | | | | | | |_ _ _| |_ |_ _ _ _| |_ _ _ _ _| _| _ _ _ _| | |_ _ _ _|_ _|_ _| | _ _| | | _ _ | _ _ _| _ _ |_ _ |_ _| | _ _ _| | | |_ | | | _ _|_ _ | _ _|_ _ |_ | _ _| | _ _| _|_ _ | | |_ | | | _| _ |_ |_ | _ | | |_ |_ _ _|_ _ _ _|_ | _|_ _ _ _ _| | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | _| | | | | _ _| | | _| _ _| | | |_| _ _ _|_ _ _ _ _| | |_ | | | | |_ |_ _| | | _| _| _ |_ |_ | |_ _ _ _| _ _| _ |_ _ _| _| | | | _| |_ | _|_ | _|_ _ | | _ _ _| |_ _ _ _| | | | |_ _|_ |_ _| _| | _ |_| | | |_ |_ _ _| |_ | | _| _ _| | | _|_ _| _|_ _| |_ _| | | |_ _ |_ | _ _ _| _ _ | _| |_ _ |_ _ | _| _| | _| |_ _ _ _| _| _ _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| |_ _ _| | | _ | | _ | | | |_| _ _ _|_| | | |_ _ _ | _| |_ _ | _| |_ _ _ _ _| _|_ _| _| _| _ | | |_ _ | _ _ _| _ _|_| _|_ | _| _| | |_ |_ _|_ _ _|_ _ _| | |_ _ _| _ _ _|_ _| | |_ _| |_ _ _| | | |_| _| _| | _ _|_ _| | _ |_ _| | _ _| |_ _| _ _| | |_ _| | |_ _ _ _ _ _ _ _ | | _ _|_ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | | |_ _| | _ _| | _|_ _ _| |_ _|_ _ _ _ | _|_ _ _ _|_ _ _ _ _|_ _ | _ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ _| _|_ _ |_ _| _ _ _|_ _ |_ _ _| | _ _ _| _ _ |_ _|_ _| | |_ _ _|_ _ _| _ |_ _ _| |_ _| |_ _| _| _ _|_ _ _| | | |_ _ | _| _|_ | |_ |_ |_| |_ | _| | |_ _ _ _| | |_ | _ _ _| | | _ _ _| _| | |_ | | |_ _|_ _| _| _ _|_ | |_ _|_ _| _|_ _ _| |_| _ _| | |_| |_ _ _ _ _ _ | | | | _ |_ |_ _| |_ _ | |_|_ _|_ | | _| |_ _|_ _ _| _| |_| _ _ _|_ |_ _ _ _ _ | _| |_ | _| |_ _ _ _| _ _ _| _| | |_ _ _| _| | _ _| | |_ | | | +|_ _|_ | |_ _ | _ _ _| | _| _|_ _ _| |_ |_ | _ _| | _| _| _ _ _ | | | _|_ |_ _ _ _ _ _|_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | | | | | | |_ | |_ _| _| _ _|_ _ _| _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| _| | | | | _| | | _ _ _| | | |_| _ _| |_ |_ _ | |_ _| _| | |_ _ _ _| |_ _ _ | |_ | |_ | _|_ | |_| _| | |_ _ | | |_ _ _|_ |_ | | |_ | |_| | | _ _ _ _ | |_ _| | _ _ _ _ | |_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _ _ _|_ _| | |_ | _| |_ | |_ | | |_ _ _| _ _ |_ _ | _ _| | |_ _| | | |_ _|_ _| |_ _| |_| _| _| _ _|_ |_ _ | _| | |_|_ |_| _ _ _| _| | | | _| | |_ _| |_ _ |_ _ |_| | | _| | _ _| | | |_ | _| _ _ _| |_ | | _| _| _| _| _ _|_ _ _| |_ _| | _ _| _|_ _ _| |_ | | |_ | _|_|_ | | | |_ _ | _|_ _ |_|_ _ _ | |_ _ |_| |_ | | _| | | | _ |_| | _ _| | _| | |_ | _|_|_ | | | _ _|_ _ _| | | | _ _ _ | _| | |_ | |_| | _| |_ _|_ _ _| |_ _| | _ _| _|_ _ _| _| | |_ | _ _ | _ _ | | | _| | |_|_ _|_ _ |_ _| | | | | _ _ _| _ _| | | _|_ |_ | | _ _ _ _ | | _| | _ _ _| _ _ |_ _ | _ _| | _|_ _ _ _| _| |_ _ | _ | _|_ | |_ |_ _ _ _| _ _| | | | _ |_ _ _ | |_ _ _ _| | | _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | | |_| |_ | | | _ _|_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _| _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ |_ _ |_ _ | _ _| _ _ _| | _ _ _| | | _ _ _| |_ _ _ _ | |_ _| _ _ | | |_ |_ | _ _| | _ _ _| _|_|_ | | |_ | | _ _|_ |_| _| _ | |_ | | _ _ _ _| |_ _|_ _ | _|_|_ _| _ _ _| | | | | _| | | _| |_ _ _ _ _| | _| _ _ _| _ _ |_ _ | _ _| |_ _ _| _ _ _ _ _|_ _| | _|_ |_ _ |_ _| | | | _| | |_ |_ _ | _ _ |_ _ |_ _ | _ _|_| _ _ _ |_ _| _| | _|_|_ |_ | _ _ _| |_ | _| | _ _ _ | | |_ _| _ _| | | +| _ | | | | |_ _ _ | | _ _| | |_ | _ _|_ | |_ | | _ _ | _| | | _ |_ _ _ _| | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| _| | |_ | |_|_ | |_ | _ _| | _| | |_ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ | | | | | | |_ _ | |_|_ _|_ | |_ | | | |_ |_ _ _| _| _| _ _ |_ |_ | |_ _| | _| | | | _| | |_| _| | _|_ _ _ _| |_ | _ _ _| | _|_|_ _ _|_ _ _ _| |_ _ | | _| |_ _ | |_ _ | _ _ _| _ |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ | _ _ _| | | |_ |_ _ _| | | |_| _ _ _| | | |_| |_ | | | _ _ _| | _ _ _ _|_ |_ _ | | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_ _ _ _ | _ _ _| | |_ | |_ |_ | | |_ _ |_| _ _| |_| _| | |_ | | |_| _| |_ |_ | _ _ _ _|_ _|_ _ _| | _ _| | _ | |_ _ _ _|_ |_ _ _ | _ _ _|_ |_ _| | | |_ _ _ _ _| |_ _|_ _| | | _ |_ _ _ _ |_ | |_ | | _| | |_ _ _|_ _ _| | |_ _| | | |_| _| | |_ _|_ _ _ _ _| |_ _| _ _ |_|_ | | | | | _ _ _| | | | | _|_ _ _|_ |_ | _ _ _ _|_ |_ | |_ |_ _ | _| _|_ | |_ _| | _| |_ |_ _|_|_ _ _ _|_ _ _ _|_ _ | _| |_ _|_ _ | _| _ _ _|_ _ _| _| | _ | | _| | | | | | _ _ _| _| | |_| |_ | | | |_| _ _ _| _| | |_| | | | |_ _|_ _ _| |_ _ _ | | |_|_ | | |_ _ _ _ _|_ _|_ _ | | |_ _| _| _ _|_ | | | _ | | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_| _|_ | | _| |_ _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ | |_ _ | _ _| | | |_ _ _ _ _| |_ _ |_ | |_ _|_ _ |_ _ |_ | _| |_ _ |_ | |_ _| | | _|_ | _|_ | |_ _ _ _|_ _ |_| |_ _| | | _| _|_ _| | _| |_ |_| _ _| _| | | _ _|_ _ | | |_ _ _| | _ _|_ _| |_ _ _ _ _ _ | | | | _ _ _| _| | |_| |_ | | | | _ | _| | | | | _ _ | _| | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ | _| | | _ _ _| _ |_ | _| _| |_ _ | | |_ _ | |_ _ | |_ _ _ _ | _| | | | _ _| | |_| +| | | | |_ _| _| _| _| |_ | _| | |_ | |_| | _| |_ _ _| |_ _ _| |_ _ _| |_ |_ _ |_| _ _| | | | | _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _| |_ |_ _ | | | | |_ | _|_ | | |_|_ _ |_ _ |_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_| | | |_|_ | _| | |_ _ | | | _| | _ _ | _ _ _| _| _| _| | |_ | | |_| _ _|_ _|_ | |_| _ _|_ _| _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | |_ _ _| | | | _| | | _ _ _| | | _| | | |_ _|_ | _ _ _ | | | |_|_ _ _ _| |_|_ _ _ _ | |_| _|_ _ _ _ _|_|_ _ _ _ _ _ _| |_ _|_ | | _| |_ _ | _ _|_ _ _| |_ | _| | |_ _ _ _ | _| | | |_ | |_ _ | _| | | _ _| |_ _ _| _| |_ _| |_ | |_ | | | _| _| _| | _| |_ _ |_ _ _| |_ _| | | _ _ _ _ | |_ _ _| _| | _ _|_ _ _ _ _ _| | _| _ _| |_ | _| | |_ _ | _ |_ | | _|_ _|_ _ | _ |_ _ _ _| _|_ _|_ _ _|_ _ | _ _ |_|_ | _ _| | |_ | | _ _| _ _ |_ | _ _ _ _ |_ _ _|_| |_| |_| _ _ _ _|_ _ _|_ _ | _| |_ _ _| |_ | |_ |_| _ |_ _| | _ _| _| _ |_ _ |_ | | _ _ _ | |_|_ _ _| |_ | | _ _| | |_ _| _ _ |_| |_| _|_ _| | |_ _ _| | |_|_ |_ _ | _ |_ _|_ | | _| |_ _| |_ _ | _ _|_ _|_ |_ | | | _| | |_ _ | _|_ _|_ _ |_ _| | | | _ _ _|_ _| | | _| |_ _ _ _ _|_ _| |_ _| |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_ | | |_ |_ _ | _|_ |_ _ _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_|_ | |_ _ |_|_ | _|_|_ _ _ | | _ _ _| | _| |_ _ _ |_ _ |_ _ |_ _ _| | | | |_ _ _ |_| |_ _| |_ _ |_ _| _ _ _| _ _ |_ _ | _ _| | _| _| | _|_ |_ |_| | _| _ _| | | _|_ _ _|_ _ _| | |_ | _ _| | _ _ |_ |_ _ _ _| | |_ | |_ _ | _ |_ _|_ | | _| |_ _| |_ | |_ _| |_ _| |_ _| | _ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | _|_ _ _ _ _ _| _ _|_ _ |_ _ _ _ _|_ _ _|_ _| | | | _ _| | |_ _ _|_ _ |_| | | | _| |_ | +| |_ _ _| |_ |_ _ _ _|_ |_| | |_ _ _| | _ _|_ _|_ _ _ _ |_ _ | _| _ |_ |_ _ |_ | | | | |_ _| | _|_ _ | | _|_|_ | | | _ _| _ _ _| | | | _ |_ |_| _ _|_ _ _|_ _ _|_ _ |_ _| _ _| | _|_ _ _ _| | | _|_|_ | | | _ _| _| _ _| |_ |_ | | |_ _ |_ _| | _|_ _ _| |_| | | |_ | | | |_|_ _ | |_ _ _|_ | _|_ | |_ | _| _ _ _ | |_ |_ _| | | |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | | | _| |_ _ | _| |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | |_ |_ _ | |_ _ | _| _ _|_ _ _|_ _ |_ | _ | | | | _| |_ _|_ _ _|_ _ _| | | _|_ _|_ _| _| _ _ _ _ _ _ _|_ _ _ _|_ _ | | _| |_ | |_ |_ _ |_ _ _ _ | |_ |_ _ | | _| |_ _ | _|_ |_| _ _ |_ _ | _ _| | |_ | _ _|_ _ _|_ | |_ |_ |_ _| |_ _ | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | |_| |_ | | |_ _| | _ _| | _ _| _| |_ _ _| | _| _ |_ |_ | | | _ _ _ _ | |_|_ _ _| |_| _| _ _|_ _ _| |_ |_ |_ _|_ _ _| _| _| |_ _ | | | | |_ _| |_ | _| |_ _ | | | _ _| | |_ _| | _|_ _ _ _ | | | _|_ _ _ _ _ _|_ _ _ _ _| | |_ _ _| |_ |_ _| | |_ |_ _ | |_ _ | |_| _ | |_ _ _|_ | |_ _|_ _|_ _ | |_ | _ |_ _ | _| | |_ _ _| _| | _|_| | |_ | | _ _ _ |_ | _ _ _ _ |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | | |_|_ | | _ _|_| |_ _ _ _ | |_ | _|_|_ | | | _ _|_ |_ _| | |_ | | | |_ _|_ | | | _ _ | | | |_|_ _ _ | |_ | _| | |_ _ _ | |_| | | | | _| | _| | |_ |_ | | _| _ | | |_ _ _ _ _| | |_ | | |_ _ |_| _ _ _|_ | | |_| |_ | | | | _| | | _ _|_ | |_ | | | _|_|_ _ _ | |_ | _|_ _ _|_ |_| _ _|_ _ _ _ _ _ _|_ _|_ |_ _| |_ |_ _| | |_ |_ _ | _ _| | _| _|_ | _|_ | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_| |_| | | |_ _ _ _ |_ |_ _ _| | |_ _ | +| _ _ _ _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _| | _| _ _|_ |_ _ _|_ _ _|_| | | | _|_ _| | _| |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | _| _ _|_ | _ | _ _ _ _ | |_ _ |_|_ _ | |_ _ _ | _ _|_ |_ _ _ _ _| |_ _| |_ _ _ _|_ | | _| _| _| _ _|_ _ _|_ _ _ | | _|_|_ | | |_| |_ _ _| | | _ _ | | | |_ _ _|_ |_ _ | | | | | _ _| |_ _ _ |_ _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ | | | | | | | |_ _ _| |_ |_ _ _ | | _ _ | _| _| | |_ | | _ | |_ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_|_ | | _ _|_| |_ _ _| | _| _ | _ _| _| | | | |_ _| |_ _ _ | _ | _| _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ | |_ | | _ _|_ _ _ _ _| | _| | _| | |_ _ _| | | _ |_ _|_ | | |_| |_ | |_ |_| | _ _| _ |_ _ _ | | _| | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ | | _| |_|_ |_| | | |_ _ _ | _| | _ |_| _| _ _|_ | _| |_ _ | | _| |_ _ | |_ _ _| | | _ _ _ _| | | | _| |_ | _ _ _| | | | | |_ _| |_ | _| _|_ _ _|_ | |_| |_ |_ _ _| | |_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _|_ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _| |_ _|_ _ | |_ _| _ _ | |_ _ |_ _| _| _ _| | _|_ _ _| |_ _| |_ _ _ |_ | _| | | _ _ _ | |_ | _ | _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| |_ | _ _|_ | | |_ _ | | | | _|_ _ _ _ _| |_ _| _ _|_ | | | | | |_ _|_ _ _ _ _| | | | |_ _|_ _|_ _ |_ _ | _ _ | _| |_ _ _ _ _ _|_ _ |_|_ _| | _ _|_ _ _|_ _|_ |_ | |_ _| _ _| | | | _ | | _ _|_ _ |_ _|_|_ _ |_ |_ _ | | |_ _|_ | | _| |_ _| | |_ _ _| |_ _ _ _ _| |_ _ |_ _ _ _ |_ _|_ _ |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ _ _| _ _| _ | | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ _ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | _| |_ _| | | | |_ _ | _ _| | _ _| +|_ _ _| |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _| |_ _ _ _ _| _ _ _ _ | _| |_ _ | _ _| |_ |_ _ _| _ | _ _ _ _ _|_| |_ |_ _ _ _ _| | _|_ _ | | _| |_ _ |_ | _ |_ | _ _| | | |_ _ _ _ _ _ | _ _| | | _ _ _| |_| _|_ _ _| | _ | _ _ _|_ _| |_ _ _ _ _ | | _| |_ | _|_ _|_ _ |_| | |_ _ _ | _|_ _ _ _ _|_ _| |_| |_ | | | _| | _ _| |_ _ | _|_|_ | | | _ _| _| _ _| | |_| |_ _| |_ _|_| |_ | | |_| _| _ _| | |_ _| | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| | _ _|_ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ | _ _|_ | | |_ _ | _|_ | | |_ _ _| _| _| | _| | | _ | |_ _| _ _|_ | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | |_ _ _ _|_ _ _ _ _ _ _ _|_ | | | _| | _| | |_ |_ |_ _ _ |_ _|_ | | _| |_ _ _ _| | _ _| _|_| |_ _ _|_|_ _ _| | | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | |_ |_ _ | |_ _ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _|_ _ | _| | |_ _ _| _ _ |_ _ |_| _| |_ _ | _ _| | |_ | | |_ _ | _| |_ _| | |_ _ |_ | | | _ | _ _ _| | | | | _ _ _|_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| _ _ |_ _| | _ _| | _| |_ _ |_ _ | | _| _ _| | _ _ _ _|_ |_ | | | _| _| | |_ _|_ _ | _|_ | | | _| | _ _| | | | | | | | _ _| _| | | | |_ _ _ | _ _| |_ _| | _ _| |_ _| _ _| |_ | |_ _ _ _ _ _ _ _ _ _| | | _ _|_| |_ _ | _ | _ _| | |_ _|_ _ _ _ _ _ |_ _ | |_| |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _ _| | |_| |_ | |_| | _ _|_ _ _ | |_ | | | | |_ | _| | |_ |_ _ | |_ _ |_ _ _ | _|_| |_ _ |_ _ |_ | _ |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ | | |_ | _ _|_ | | |_ _ | _ | | _ _ _| |_| | | _| | | |_ _|_ | | | _ _ _| | |_ _ | | _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ _| | |_ _ _ |_ _| |_|_ | _| | |_ _ | | +| | | _ _|_ _ _| | | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _ _ _ _| |_ _ _ _ _| | |_| |_ | | _| | | _|_ | |_| _ | _| _ |_ |_ |_ _ |_| _ _| | |_ _ _| _| | _| | _| _|_ | _|_ | _| _ | _ _| | |_ _| _| _ |_ |_ | | _| | | | | |_ _ _ _ _| _ _| |_| |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_|_ _ | | | |_ _ _ |_ _ _ _ _| |_ _| |_ _ _| _ | | _|_ _| _| _ |_ |_|_ _|_ |_ _ | _ _| _ _| | |_ _ _ _ | |_ _ _ _ _ |_| _ _|_ | _ |_ _| | _|_|_ | | | _ _|_ _ _ _| | | | | |_ _| | _ _| |_ _| _ _| _ |_ _ | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| _ | _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _| | | | _ _ _ _ | |_ _| _ |_ _ _| | | | |_ _| _| | _| _| | _| _| | |_ |_ _ | _ _ _ | | | |_ _ | _ | | |_ | | _|_| |_ | _|_|_ | | | _ _|_ _ _ | | | |_|_ | |_|_ | | _ _|_| |_ _| | |_|_ _| _| _| | | | |_ | | _ _ |_ | _| | _ _| |_| |_ _ _| _| _ _|_ | |_ |_ | | | _| | | _| _ _|_ | | _| |_| | | |_ _| |_ | _|_ _| | |_ | _| | | | _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ | | _ _ _| _|_ _ _| | | _ _| |_ |_ | _|_ _ _| |_ | |_ _|_ _| _| _|_ | _| | | _| _|_| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ |_| | | | | _|_ _ _ _| _ _| _ _|_ _| | _ _ _ _ | |_ _| _| |_ _| _ |_ |_ | | | |_ _|_ _ _ _ | _ | _ _ _| _ _| |_ | | | _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ _ _| _| |_ _ _ _ _|_ _ _| _|_ _ | _ _ _|_ _ _|_ _| _| | _|_ | |_|_ | | _ _|_| |_|_ _ |_ _| | _ _| | | _| |_ |_|_ |_ _ _|_ |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _|_| _ |_ _ _|_ _ _| |_ _|_ _ _ _ _| |_ _|_ _ _ |_ _|_ _ |_ _|_|_ _ | | | |_ | _|_|_ | | | _ _|_ _ _ _ | | _ _ _| _| _ _| | | _ _| | _ _|_ |_ _ | +| _| | _ | _ |_ _|_| | | _|_|_ | | | _ _| | _ _ _| | | | | |_| | | | |_ _ _ _ | |_ _|_ | | _| |_ _ _| |_ _| _ _|_ |_ _| |_| _| _ _|_ |_ _ _ _|_ |_|_ | _| _| _ _ | | | _|_| _ _ _ |_ _ |_|_ | | | |_ _ | _|_ _ |_| _| _ _|_ | _| |_ |_ |_ _ _| _ _ |_ _ | _ _| | | | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | _ _| _|_ _ |_ _ _ _ | _ _ _ _| | | _|_ _| |_ _ | | _| _ _|_ | _ _ _| _ _| | _ _| _ _| |_ _ _ _| _| |_ _ |_ _ _ |_ |_ | | _| | | | _ _| |_ _ _ _ _| |_ _| _ _| _ _ _| | |_ _|_ _ _ |_ _ _ _| _ _| | | |_ _ |_|_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ | | |_| _| |_ _ | _|_|_ | | | _ _| | _ _ | |_ _ _|_ _| _ | | _| |_ _ | |_ _ _ | | _|_ |_ _ _| |_| _|_ _| | |_ _ | |_|_ | | _ _|_| |_ _| |_| |_ _| _ _| |_ _| | _| | |_ _| _ _| _|_ _ _ _ _| |_ _| _ | | | | | |_ | |_ | _ _|_ | | |_ _ | |_ _ _ _ _|_ _ _ _| | |_ | | | |_ _| _| _| | |_ _| | | _ _|_ _ _|_ | _| _|_ _ | | |_ | |_ | |_ | _|_ _ _ _| _ _| _|_ _ | _|_ _ _ _ _|_ _| | | | _| |_|_ | _| | | | _| |_ | _|_|_ | | | _ _| _ |_ | | | | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_|_ _ _|_ _| _ |_| _ _ | | | |_ _ _ _| |_ | | _| _| _ _|_ _ _|_ | _ _ _| | | _ _|_ | |_ _| _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _|_ _| |_| |_ _|_| _ | | | |_ _ _ _ _|_ _ | | _| |_ _ | |_ _| _| _ _|_ |_ _| |_ _ _ _ | |_ _| | _| _ | | _ _| _ _|_ _| |_ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _|_ | _|_ | _ _|_ | | |_ _ |_ | | |_| |_ | | _|_ | _| | _ _| _ _ _ _|_ |_ _ | _|_|_ | | | _ _| | _ _ _| | | _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| _ _ _| |_ | | _ | | | _ _ | _ |_ _ _ | | _ _ | _|_ _ _ _ _| | |_ _| |_ _ _ _ _| |_ _| _ _ | |_| | | _ _ |_ _ | _ _| | | | _ _|_ _| |_ | _| +|_| _| |_ _|_ |_ | _ _| | |_ _ _ _ _| |_ _| | _ _| | | | |_ _ _ _| |_|_ _|_ _| | | | |_ _ | | |_ |_ _ | _ _ | | _ | | _ | _| |_ _ _ _ _| _ _ _ | | _ | |_ _ |_ _|_ _ _| _ _ _ _| | | |_ _ |_ _|_ _ _ |_| _ | | _| |_ _ _ _ _|_ | | _| _| _ _ _|_ | | |_| |_ | | |_ _|_ |_ _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_ _ _ |_ _ | _ _ _|_| |_ | | | _| _ |_ |_| _| _| |_ _ _ _ _| _ _ |_ | _|_ _| | |_ _ _ _ |_ _ _| | | _ | | _ | | | | _|_ | |_ | |_ _ _| | _| | | | _ _ _| |_ _ _ _ | | _ | | |_|_ _ _ _ |_ _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_ _|_ |_ _ _| _|_ _ _ _ _| |_ _| | |_| | | | | _ _ _ |_ _| | |_ _ _|_ | | |_ _ |_ _ _|_| _| _ |_ |_ | | |_ | _|_ | _ _|_ | | |_ _ | _ _| _ _| _ _| | | _|_ | |_ | | | |_ _ _ _| | _ _|_ |_ |_ _ _| |_ | |_ |_ _| | _ _| |_ _| _ _| |_ _ _| |_| |_| _| |_|_ |_ _ |_ | | | |_ _| | | | |_| |_ _ _ _ _ _| | |_ _|_ |_| |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | | | |_ _ | | | |_ _|_ | _| _|_ _ _ _ _| |_ _| _ _ |_ | | | | _| | | |_ _|_ | _| |_ | | |_ _| | _ _ _| _ _ _| |_ | | |_ | | | | | _ _ | _| |_| _ _| | _ _ _ _| |_ _ | _| |_ | _| | | | _ _| _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| _| _ |_ |_ | _ _| | _| |_ _|_ _ |_ _ _ _ _| | |_ _ _|_ | |_ | | _| |_ _ _ _ _|_ _ |_ | _| |_ _ | _| _| |_ |_ | | | _ _ _ _|_ |_ | | _| _| _|_|_ | | | _ _| _ _ _| | | _ |_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| |_ _| | _ _| |_ _| _ _| | |_ _|_ | | _| |_ _ | | | _|_ _ _ _| _ _ _ | | _ |_ _ _ _ _| |_ _| | _ _| | | | | | | |_ _|_ |_| _ | _ _| | |_|_ |_ _ _ _| |_| | | | | |_ _|_ | |_ _|_ _ _ _ _ |_ | _ _| _ | _ _| _| | | |_ _ | _ _ | _|_ | | |_ _ _| |_ | | | |_| |_ | |_ _|_ | _ _ _|_ _ _| | | +| _| | _ _ _ | _| | | | | | _ _ _ _ |_ | _ |_ _|_| |_ | |_ _ _ | | |_ _| |_|_ | | | |_|_ | | _ _|_| |_ _| | | |_ _| _| |_ | _| _ _ _ |_ _|_ _| | | | |_ _ _| _ _ |_ _ | _ _| |_ _|_ | |_ |_| | |_ _ _| |_ | |_ _ _ _ | _ _| | | _| |_ _ | |_ _|_ | | _| |_ _ | _|_ _ _ _ _| | | | _|_|_ | | | _ _|_ _ _ _| | | | _|_ | | |_ _ | _ _ _| | | _ _ _ _|_ |_ | |_| _| _ _|_ | | |_ _ | | _ | _|_ |_ _ _|_ _ |_| _| |_ |_ | _ | _ _| | |_ | |_| | _| |_ |_ _ |_| | | |_ | | _ _|_ _ _ _| | _| _ |_ |_ _|_ _| | | |_ |_ _|_ _ |_ _ _ _| _| | _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_ _ _| | _ _| _ _ _ _ _| |_ _ _| |_ _| |_ | | | _ _| | _ | | | |_ |_ _ | _ |_| _| _ _|_ | _| |_ | | |_ _| | _ _| |_ _| _ _| | | | |_ _ | |_ _ _ _| | _| | |_|_ _ _ _ _ | _|_ _| _| | _| _ |_ |_ _| |_ _ _ |_ _ _ _| _ _| |_ |_| |_| _| _ _|_| _|_ | _ _ _ _ |_ _|_ _|_ _ _ _ _| | |_ _|_ _ _| |_ _| _ _| _ _ _ | | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _ _ _| |_| _ _| | | | | |_ | _ _ | _| | _| | _ _|_| |_ _ _| |_ _|_ _ _ _ _| | _|_ | | |_ _|_ _ |_ _ | _|_ _ _ _| _|_ _ _| |_ _|_| |_ | | |_|_ |_ |_ | _|_| _| _ |_ _| | | | _| | _| |_| |_ | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| _| _| _ _|_ | _ _ _| |_ | _ _ _ |_ _ | | | |_ _ _ _ | | _| | |_ _ _ _ _ _ _ _|_ _ |_ _ _| | |_| _|_ _ |_ | | | |_ _ _| |_ | | | |_ _ |_ _ _ _ _| |_ _| | | | | _ _| | | |_ | | | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ | | |_ | _|_ _ _ _| _ _| _ | |_ | | |_ |_ _ | _|_| | _ _ _ _| _ _ _|_ _| _| _ _| _ _ _ _| | _ |_ _|_| |_ |_ _|_ _ _ _ _| _| _| _ |_ _|_ _ |_|_ _| | _ _| | _| | |_ |_ | |_ _ _ _ | |_ _ | | _| _ _| |_ _ |_ _| |_ _| |_ _| _ _| |_ _ | | _| _ |_ |_ |_ _|_ | | _| |_ _ |_ _|_ | _ _|_ | +| |_ _ _| |_|_ | | | | |_ _| | _|_ _ |_ |_| | _| _ |_ |_| |_|_ _ _ |_ |_ _| | | _ _| _|_ | _ _|_ | | |_ _ | |_ _| _ _| |_ | _| | _|_ _ |_ _ _ _ _| |_ _| | _ _ _|_ | | |_| |_ | | _| |_ | | _|_ | | _ _| _|_ | |_ _| |_ _ | | |_ _ | _| | | |_ _ _| | |_ |_ _ | _ _ |_| _ | _ _| | |_ _ _ _ _| |_ _|_ _ _ | | | | |_ | _ _| |_ _| _ _|_ | _ _| |_ _ _| |_ | | | _| |_ _ _ _ _| | _ | |_ _ _|_ _ _ _ _ _ _ _ |_ _ _ _ _|_ _ _ _| |_ _| |_| | _|_ _ _|_ |_ | |_ |_ _ _ _| | | | |_ _ _ _ _| _ _ _|_| _| _ _|_ |_ | _|_|_ | |_ _ |_ _ | | |_ _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | _ _| | | | _ _ _ _ _ |_ _ _ _| | _ |_ |_| |_ _ _| _ _ _| _|_ | |_ | _ _| | | _| _| |_ _ _ _ _| | | | _| |_| | |_ _ |_ _ _ _| _ _| | | | |_ _|_ _ |_|_ |_ _ _| _| | | |_ _ | | _| | |_ _ _| | _|_| _| _ _|_ | _ | _| |_ _ _ | | |_|_ _ _ _|_| _|_ _| _ _ _| |_|_ _ _| _ |_ | _ _ _ _ | |_|_ | _ _ _ _|_ |_ | | |_ _| | | |_| |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _ _ |_ _ | _ _| | | |_ _ _| |_ _ | |_ _ _ | |_| _ |_ |_ |_ | _ _ | | |_ |_ _ _| |_ _ _ |_ _ | | | _ _ _| _ _| _ | _| _ |_ |_ |_ _ _ _ _|_ _ |_ _ |_ _ | _ _| | _|_|_ _ _| | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ |_ | _| |_ _ _ _ _|_| | _| _| | _| _ _| | | | | | | | | |_| | | |_ |_ _| | _| _| _ |_ | _ _| | | _| _ |_ | | |_ _| _| _ _|_ _ _|_| |_ _ _ |_ | _ |_ _|_ _ _| |_ _ _| |_ | _| _|_ _|_ _ |_ _ _| _|_|_ | | | _ _| _ _ |_ | | _ _|_|_ | |_ | _ | | |_ _| |_ | | |_|_ | | _ _|_| |_ _| _| | _| | _ _ |_ |_ _ _ _ _|_ _ _ _| | _| _ |_ |_ _ |_ _ _ _ _| _|_ _ _| _ | |_ _ | _ _| | _| | | _| |_ | _|_ _ |_ | _| |_ _ | | |_| _ _| |_ | _| | | _ _| | |_ | _ _ _| | _| _| _ _|_ |_ | | | |_ |_ _ | _ _ _|_ |_ | _| +| |_| _ _| | _ _| |_| |_ _ _ _| _ _| | |_ _ |_| _| _ _|_ | | _ _ |_ _ | _ _| | | | _ _|_ |_ _| | _ _| |_ _| _ _| _ | | _| _|_| |_ _ _ _ | _ |_ _ _ _| _ |_ _ | _|_ _|_ | | _| |_|_ |_ _|_ _| |_| | | |_ _ _ _| _| |_ _ | _| | |_ |_ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _| | |_ | _ _ _| _ _ _ |_ _ _| | _|_ _| |_ |_ _ _ _| _ _| _| _|_ | _| _| _ _|_ _ _| | | |_ _ |_ _ _| |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ _|_ _ _ _|_ _ _ _ _| _|_ _ _ _| |_ | | |_ _ _ | |_ _ _ | _| |_ _ _ _ _| _|_|_ _ _ _ _| | _ _| _ _| | | | | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ | | |_ _ _| _ _ |_ _ | _ _| | | _ _|_ | | | _ _ _| |_ _ _| |_ | | _ _| | | | |_ _| _| | | | | _| _|_ _ | _ _ | | | |_|_ _ _|_ | _ _|_ _ | | _ _ _| _|_ _ _| _| | |_ _ _|_ _ |_ | |_ | _| |_ _ _ _ _|_ | | |_ _ _ _ |_ _|_ _ |_ _| _ _| _ |_ _ | |_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| |_ | |_ _| | _ _| | | | _| _| | | |_ _ | _|_|_ | | | _ _| | | _| | | _ _ _|_ | | |_| |_ | | |_ _ | | _ _ _| | | _ | | |_| _| _ _|_ | |_ _| | |_|_ _ _|_ _ |_ | _ _ _| | _| | _ _| | |_ _ _| _| _ _|_ |_ _| _ _ | |_ _ |_ _ |_| | _ _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | _| | |_ _ _ _ _ _| | | _|_ _| | _ _| _ _| |_ _| |_| |_ _| |_ | |_| |_| _| _ _| _ _|_ |_ | | |_| _ | | _ _| |_ | | |_ | _ _| | _| _ | | _ |_ | |_ _|_ |_ | _ | _| _ |_ |_|_ | |_ _ | |_ _ _ |_ _ _ _ _| |_ _|_ _| _ _| | |_ _ _ _ _ _|_ |_ _| | _|_ _|_ _ |_ _ | |_ | _ _|_ | | |_ _ | | |_| |_ | | | _ _|_ _ _ _ | |_ _ | _|_| _| _ _|_ | | | _ _| | _ _| | |_ _| | | _ _| | | | _|_ _ _| |_ |_ |_ _| | |_ _|_ _ _|_ | |_|_ _ | _ _|_ _ |_ _ _| | | | _| |_| | _| | | _ _| | _| |_ _ _ _ _| _| | |_|_ | | _ _|_| |_ _ | _| | | | +| |_ | | | | _ |_ |_ _ _| _ _| | _| _ _ _| _| |_ _ _ _ _| _|_ | | |_| |_ | |_ _| | _ _ | |_ _ _ _| _ _| _ _| |_ _ _|_| _| _|_ |_ | | | | | _ _| _| _| | |_ _ _ | | |_ |_ _ | _ _| _ _ _|_ | | | _ _ _| _| | | _|_| _|_ |_|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ | | | | _ _|_ _ |_ _ | | | _| _ |_ |_ | | | | |_ _ |_ | | | _ _| | _ _ | _| |_ | |_ _ _| | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ _ _ | |_ _| | _ _ _ _|_ |_| |_ | |_ _|_ _ | | |_ _ _ | | _ _ |_ | | | _| _ _| | _| |_ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | _| | | _ _ _| | | |_| |_ | | |_ _ _ _ _|_| |_ _ | _ |_| _ |_ |_ |_ | _|_ |_ | |_ _ _|_ | | | | |_ _ _| | _| | _ _| |_ _|_ _ |_ _ | |_ _ _ _| | |_ _ | | | | |_ | _ _ _| _ _ _ _ _|_| | |_ _ _| _ _| |_| | | _| _ | |_ _ | |_| _| _ _| |_| | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _|_ _ _|_ _| | | _| | | |_ _ _| | |_ _|_ _ |_|_ _ _ _ _| |_ _|_ _| |_ _| | |_ |_ _ |_ _|_ | | _| |_ _| _|_| | | _ _| | | |_| | _| |_ _ _ _ _|_| | _ _| |_ _ _ _ | |_|_ | | | _| _ |_| _| | | _ _| |_ _ | _| |_ _ _ _ _| _ _| | _| |_ _ |_ _ _|_ | | | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _ _|_ |_ |_ _ _ | _|_ _ _ _ _|_ _ |_ | | | |_ _ _ _|_ | _ _ _| _| | | _| _ |_ | | |_| | _|_ _| |_ _ _ | _| | | | |_ | _|_ _| _|_ _|_ _| | _|_ _| |_ | | | | _| _| _ _|_ | _| | _ _| | _ | |_ _ _ _ _ _| _| | | _ _|_| |_ _ |_ | | _ _| |_ _ _ _ |_ _ |_ | |_ _| | _ _| |_ _| _ _| | | | _| |_ | | _ _ | _| |_ _ |_|_ | _| |_ _ _ _ _| |_ _|_ _ |_ _ | |_ _| _ _ _|_ | _ _|_ |_ _ _ _ _ | _ _| | _ _| | | _| | _ | | _ |_| | _ _| _| | _| | | | | _| | |_ |_ | | | |_ | _ _ _ _ _|_ |_ | _ _|_ | | |_ _ | _| _|_ | +| | |_ _ _|_| | | _ _|_ | | |_ | | | |_ _ | | |_ _ _ | _| _ |_ _|_ | | _| |_ _ |_| | | | |_| _ _| | |_ _ _ _ | _ _ _| _|_ _ |_ | |_| |_| | | | | | |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_ _| | | _ _ _| _| |_|_ _| _ _ _| | |_| _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_| |_| | _| | _| |_ _ |_ _| |_ _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ | |_|_ | _|_| | |_ _| _| |_ _ | _|_ _| _ _| | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ | | _| |_ _ | | |_ _ _| |_ |_ | | |_ _ _ _|_ _| |_ | | |_ _ _| | _ _|_ _ |_| |_| | | |_ | _| | _| _| | | |_ _ | _|_|_ | | | _ _| _ |_| | | _| |_ | |_|_ _ | |_|_ _|_ | | _| |_ _ |_ _ | | | | | _| _| _ _|_ |_ | | | | _| _| | _ _ |_ _| | |_ _ | | |_ _ _| _ _ _ _ _ | |_ _ | |_ _ _ | _ _| _| | | | |_ _|_ _ _| | _ _ _| _ _ _ _ | | |_ | |_ _ _ _| |_ _ | |_ _|_|_ _ _| _| _ _| | | | _| |_ |_| _| |_|_ | _|_|_ | | | _ _|_ _ | | | | _ _| | _ _ _ _ _ | | | | | | | | _ _ _ _| _ _ |_ _ _ _ _| _ | _| |_ _ _|_| |_ _ _ _| |_ _ | | |_ |_ _ | _ _ _ |_ | _|_| |_ | | |_ _ | _ _ |_ _ _ _| _ _ | _| |_ _ | |_ _| | |_ |_| _| _| | | _| | _ | |_ _ _ _ | | | |_ _ _|_ | | _ _ _ _| | | _|_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _ _|_ _| |_| _ _| | _ _ _| _ _| | | _| |_ |_ _|_ _ _| _ |_ |_ _ _|_ |_ _ _|_ _ _|_ _ |_ _| |_ _ _ | | | _ _ _|_ _ _|_ _| _| _| |_ _ _ _ _| |_ _| _|_ _| | | _ _| |_| _ _ _ _|_ |_ _| _ |_ |_ |_ _ _|_|_ _| |_ _ _ _ | _ _| | | | | |_ _ _ _| _ _| | _| | | |_ |_| _|_ _|_ _ |_|_ _ _| | | _ | |_ | | _ | _ _ _ | | _| |_ _ _| |_ _|_ | | _ _ _ _| |_ | _ _| |_ | | _| _|_ _| | | | |_ | | _| | _ _| _|_| |_| |_| | | _ _ _ _| | | | | |_ | | | |_ _ _ _ |_ _| | _ _| |_ _| _ _| | |_ _ | | +|_ _| _ _ | | |_ _ _ _ _|_ _|_ _ _| | | |_ _ | | |_ | | | |_ _|_ _ _| | |_ | | |_ |_ _ | _ _| | | |_ | |_ _ |_ _|_ _ |_ _ |_ _ | |_ | |_ | | | _| _| | |_|_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _| _| |_ _ | _| |_ _ _ _ _| _ _ _|_| |_ |_ |_ _ _ _| _| _ |_ _ _ _| _ _| _ _ _| | _| | _|_ _ _| _ _| |_ | | | _| |_ _ _ _ _|_ |_ _ | _ |_ _ | |_ | _|_ _ _| |_ _ _| _| | _ _| | | | _ _| _|_ |_ | | | _|_|_ | | | _ _| _ | _ _| | | |_ _| | |_ _ _|_ | |_|_ _ | _ _|_ _ _| _|_ _ _ _ |_ _ _ _ _| _| |_ _ |_| _| | _ _ _| | _| _|_ | | | | _|_ _ _| | |_ _|_ _ |_|_ _ _ _ _| |_ _| _ _| | | | | | |_ | |_ _ _| | |_ _ _ | | |_ |_ _ | _ _| _|_ | |_| |_| _| |_ _ _ _ _|_ _| | |_ _| _| _| | _ _ _ _ _|_ |_ _|_ _| | _ _ _| | _ _|_ _ _| | | | _|_ | _|_ _ _ _| |_ |_ _ | |_ _ | |_ _ | | _| |_| _|_ | _ | | |_ _|_| _ _ _ | |_ | _ _| | | _ _ _|_ |_ _|_| | |_ _ _ _ _| |_ _| _ _ _ _| |_| | | | | _|_ _ | _ _ _|_| |_| | |_ _| |_ _ _ _| | |_ |_ _ | |_ | | | _| _| _ |_ |_ _ | | _| |_|_ | | _ _|_| |_ _ | |_ _ | | | | |_ | _| | _ |_ | _ | |_ _ _|_ _ _| _| | | _| |_ |_ | | |_ |_| | | | | _|_ | |_ _ | | | | | | _ | | | | |_ _ _ _| |_ _ _ | |_ _ | _|_|_ | | | _ _| | _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _ _|_ |_ | _|_ _ | _|_ | |_ _| _ _ _| _ _ |_| _| _ _|_ _ _ _ | _ _ _ _ | |_ _ |_ | | _|_ _| _ _ | _ _ | | | |_ | _| _|_ _ |_ _ _ _ _ _| |_ |_ _ _| |_ |_| _| _ _|_ | | _ _ _ | _|_ _ | _| | _ _| |_ _|_ _|_ | _| | |_ _ | |_ _ _ | _| | _ |_ _ _ _ _ | | |_ | |_ | |_ |_ |_ _| | | _| _| | | _ _ _ _|_ |_ _ | | _| _ _ _ _|_ |_|_ _ | | _| |_ | | _ _ | |_| | _|_ _|_ _| _ _| | |_ _ _ _ _| |_ _ | _ _ _| | _| _| _| |_ _ _ | | | _ _ _|_ _ _ _| _ _| | _| _| | | +| _ |_ _ _ _| | _ _ _ | _ _ _ | |_|_ _ | _ _| _| | |_ _ | _|_ _ | |_|_ | | _ _|_| |_|_ _ | _ _ _| _ | |_ _ | | _| | _|_ _| | | |_ _|_ _ _| | |_ _ | |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _|_ _| | | _ _ | _|_ _ _ | _| | | _| |_ _ _ _ _ _|_ _ _ _ _ | | | |_ _ _ _|_ | | | | | _ _| _|_ | |_ _ _ | | _ | | | | | | |_ _|_ _| |_ _ | | _ _ _| | _| _ _|_ | | |_|_ |_ | |_ |_ _ _ _ _| |_ _| | | _|_ _ | | |_ _| | _| _ _ _| | _ |_| | _ _ _| _ _ |_ _ | _ _ _| _|_ _ _| _| _| _|_ _ _ _|_ _ _| _ _ _| | |_ | _ _ _ _| | |_ _ _ _ |_ _ _ _ _ | _| _ _|_| |_| _| _ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_|_ |_ _ |_ | _ _ | _| _ _ _| _|_ _| | _ _ _ _ _| _ _ |_ _ | _ _| | _ _ _ _| _ _| | |_ _| _| | | _| _ |_ |_| _ |_ _ _| | _| | _ _ _| _| | _|_| _|_ _| | _ _ _ _| | |_| | _|_ | _|_ _| _ _ |_ _ | _ _| | _| _ _ _ _| _ _ | _ _ _ _| |_ |_ _ |_ _| |_ _| _ |_ | |_ _ _ _| _ _| | | |_ | |_| |_ _| _|_ _| _ _| _| _ _|_ | _|_ | | |_ | _ _|_ | | |_ _ | | |_ | | | _ _| _| |_ |_ _|_ | | | | |_ _ _ _ _ _| _ _|_ | _ _ _|_ _ _ _|_ | |_| | | | _| _|_| _ _| |_ _| _|_ |_ _| | | | | | _ |_ |_| |_ _|_ | | |_ _ _ _ _| |_ _| |_ | _ _ | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| |_ | |_ | _| | | | |_ |_ _| _ _ _| | | _| |_ _ _ _ _| _ | |_ _ | | _| |_ _ |_ |_| | | |_| _ _ _| _ |_ | |_ _| |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_ _| _ _|_ _ | _| |_ _ _ _ _| |_ _ | |_ _| |_ | |_ _ |_ | | _ _ | |_|_ |_ _|_ _ |_|_ |_ _|_ _ _|_ _| _| | | _ |_| | |_| _| | _| | | | | | | | _| |_ _ _| |_ | _| |_ |_ _ _| |_ | _ _| |_ | |_ _| | | | |_ _ _ _| _ _ |_ _ | _ _| | | _ _ _ _ |_ _ _| | | _ _|_| _| |_ _ _| _ | | |_ _| _ _ _ _ | | |_ _ | | _| | | +| |_ _| |_ _ | |_ _ _|_ | _|_ | _ _|_ _| _| | | | _ _| |_|_ _ | _|_ | _ _|_ | | |_ _ | _|_ _| _ _| _|_| _ _| | | | _|_ _ _ _ | | | _ _ _ | _ _ _ _|_ _|_ _ _ _ |_ _ _ _ _ |_ _ |_ _ _ _| _ _| | |_ _ _ _ _| | _|_ _|_ _ |_|_ _ _ _| | _ _|_ _ _ _|_ _ _ | _ _ _ _ | |_|_ | |_ |_| _ _ |_| | |_ _| | |_ | | _| |_ | |_ _ | | | |_ | | | | _| |_| | _ _ _ _|_ |_ | |_ _ | _ _ _| | _| |_ _|_ _ |_|_ _| |_ _ _| _ | _ | | |_ _ _ _| |_ _ | | | _| | | _ | |_ | | _| |_| _ _ _|_ | | |_ _| _ _ _| _ _ | _| |_ _ |_ _ | _| _| | _| |_ _| |_ _ |_| | | _ _| |_ |_ _ _ | |_| | _| _ |_ |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | _ |_ | | |_ _| _| | |_ _ |_ |_ _ _ _ |_ _ | | _ _ _|_ | | |_| |_ | | | | _|_ |_ |_ | _ | |_ _| _| _ _|_ |_ |_ _ | | _|_| | _| | _ _ _| | _ _ _ | _ |_ _| | | _| | _|_ | | | _ _ _|_ | | |_| |_ | | _ _|_ _ _ _ _ _| _ _| _| _ |_ |_ _ |_ _ |_ | _| _ _|_ | _ _ _|_ | _| |_ _| |_ | |_ _ _ _| |_ | | _| |_ _ _ _ _| |_ | |_ | |_ _| | _ _| |_ _| _ _| |_ |_ _ _|_ _| _|_ _ |_ _ _ _ _|_ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _ _| | |_| _| | | _ _ | _| | | _ _ _| |_ | | | _ _|_ | | | _ |_ | _| | _ _ _ _|_ |_| |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | |_| _| _ _|_ _ _| |_ _| _|_ _|_ _ | | _ _ _ _ _ |_|_ _ _ _ _ _ _ _ |_ | |_ _ _| | |_ _ _|_ | | _| _| | | _| | _ _| _| _| | _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | _| | | _ _| |_ _ _| _ _ _ _| | | _ _|_ _|_| |_ | | | | | | |_|_ _ _ _ | | |_ _ | |_ _ _ _ _ _ _|_ |_ _| |_ |_| _ _|_| _| _| |_ | |_ _| | | | | | | _| _| _ _|_ _ _| | |_ |_| _| _ _|_ _ _| _ |_ | |_ _ _ _| _| |_ | _ _ _| | | |_| |_ | | |_ _ | | _| _ _ _ _| | _ _ _| _| |_ _| | |_ _ _ _ _| |_| |_ _|_ _ |_ _| |_ _| | +| | | |_ _ | |_ |_ _ _ _|_ _ _ _|_ |_| _ _ _| _| | | | |_ _ _ _ |_ | |_ _| | _ _| |_ _| _ _|_ _ _ | | | | | _ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| _ | |_ _ _ _ _ _ _ | | |_|_ |_ _ |_ _ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ |_|_ |_ _ _ _ | | _ _| |_ | | | | |_ _ _| _|_ _| _|_ _| |_ _|_ _ _|_ | | |_ _ _| |_ | |_ _ | |_| _ |_| |_ _ | | |_ _ |_ | | | _ _ _ _|_ _|_ |_| |_ |_| _ |_ |_ _ _| |_ | |_| | _| | _|_ _| _ |_ _ | _ _|_ _| | |_ _ | _|_ _ |_|_ _ _ | |_ _ |_| |_ | | _| | | | _ _ _| _ _|_ _ _|_ | _ _| _ _ _|_ _|_ _ |_| _| _ _|_ | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _| | _ _|_ _ _ _| _ _| |_ | _ | | |_ | |_|_ _ | _ |_ _|_ | | _| |_ _| |_ | | _| _|_| |_ | _| |_ _ _ _ _| _| | |_|_ _ _ | | | |_ _ | _|_ | |_| |_ _ _ _ |_ _| |_ _| | |_ _| | |_|_ _ | | |_ _|_ | | _| |_ _ | _ _ | _ _| _ _| _| _ _|_ | _| |_ | _| |_ _ _ _ _|_|_ _ _ | _ _|_ _ _ _ _ _| | _ _ _ _|_ |_ | |_ _ _ _| _ _ | _| _|_ _ _|_ _ _ _| _ _| |_ | | | _ _ _ _ _ | _ |_ | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ _|_ _| |_ _|_| _| | |_| _ |_ |_| | |_ _ _ _ _| | | | | |_ _|_ _ _| |_ _| _ | _|_ _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ _| | _ _ _ _| |_ _ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _|_ | _ _| _ _ | _| | | | _| |_ _ | | |_ _|_ _|_ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| | _| |_ _| |_ | | _|_ |_ | _ _| | _ _| | _ _|_ _ _| | |_| |_ _| | _ | _| |_ _ _| | |_ _ _ |_ |_ _ _ _ |_ | | _ _ _| |_ _ _ _|_ _ | | | |_ _| | | _ _| | _| _ _| | | _ _| | _ _| _| _ _|_ | | |_ | | | |_ _ | |_|_ _|_ | | _| |_ _ | |_ _| _| | _ _|_ _ | _ _ _| |_ _ | | | _ | | _ _|_ _ _ _ | |_ _ | _ _ _| +| | |_ _| _ _|_ _ _| _| _ _ _ _ | |_ |_ _ | _ _ _| |_ _|_ _ |_ _ _| _|_ | |_ _ _ _| _ _| _ _| _ _| | | | |_| |_|_ | |_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _|_ _ | | | _ _|_ _|_ _ |_ _ |_ _ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _|_ | _ _ _| _ _ |_|_ | _ _| | |_ | |_ _ _ _| _| _ |_ | _|_ _ _ _ | |_ _| |_| _| _ _|_ _ _|_ _|_ _ _ _| _ _ _| | | | | | _ _| | | |_| | | | _ _ _ _ _| _| _| _| _ _|_ | _ |_ _|_ _ | | _ _| | _| _ _| | _ _ _|_ _| _| | | _ |_ _ _ _ |_ | |_ | | _| | |_ _ _| | |_ _ _ _ | _ _ | |_ | _|_| _ | _ _| | _| |_ _ _ _ _| | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ _ _|_| _ _ |_ _ | _ _| | | |_ _| |_ _| _ _|_ _ _ _ _ _| | |_ | | |_ |_ _ | _ _| | |_ | |_ _|_ | | |_ _ | _|_ |_| |_ _ _ _| | |_ _ _| | _| | |_ _ _| _ _ |_| |_ _ _ _| | _| _|_ _| | |_ _ _ _| | |_ |_ _ | _|_ _| | | | | _| |_ _ _ _ _|_ _ |_| _| |_ _ _ _ _ | _ | | |_| _ _ _ _ | |_ _ _ _ _| |_ | |_ | | _ | | _ _|_| _| _ | _ | | | |_|_ | | | |_ _ _ _| |_ |_ _|_ | |_ _| _|_ |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ _| |_ _ _ |_ _ _ _| _ _| _| _ _|_ | |_ _ | |_ |_ _| |_ _ _ | |_ _ _ _| _|_ | _| _| _ _|_ | |_ _ _ | | | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_ _ | _|_ | |_ _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _ _|_ _ _ _| _ _| | |_ _| _| _|_ _|_ _ _ _ _| _ _ _| | | _ _ _| _| | _ _| _ _| | | _ _ _|_ |_ | |_| _|_| |_ _ _ | _|_ | _|_ _ _| | _| | _| _ _|_ |_ _| _|_|_ _ _| | | _ _|_ | |_ _ | | | |_ _| | _| |_ _|_ _ | | |_ | _ _ _ | | | |_| | |_ _ | _| | | _ _ _ _|_|_ _ | _| | | _| |_ _ _ _ _| |_ _|_ _ _| | | | _| | | | _ | | |_ |_ _ | |_ _ | _| |_ _| _| | |_ _ | |_ _ _ _| |_ | |_| | _ _| |_ _| _ _| |_ _ _ | +| _| _ _| _ _| _| |_ _ | | _| |_ _ | _| | | _ _ _ _ | |_ _ _ | |_ _|_ _ _ |_ | | |_ _ |_ _ |_| | |_ | | | _ _ _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _ _ _ _| | _| _ _ _ | |_ _ |_ _ | |_ _| | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| _ | | | _ _ _| | | |_| |_ | | _| |_ | _ _ _|_ _ |_ _ _|_ _ _ | _| |_ _ | | _ _| | _| _ _ _ _| _ _ |_ _ | _ _| | |_ _| | | _ _| | | | | |_ _ | _| _ _ _| | _| |_ _ _ _ _ _|_ _| _ _ |_|_ | _ _| | | | |_ _| _|_ _ |_ | _| | _|_ _|_ _ | _ |_ _ _ _| _|_ _|_ _ _|_ _ |_ _ _ _ _ _|_| |_| | | | | _ _ _ _|_ |_ _ _ _| |_ _ _ _ |_ _| | | _| | | |_ _|_ | _ _ _ _ | | |_|_ _ _ _| | _ _ _| _| | |_| |_ | | |_ | _| _ _| _ _ _ _ | |_ _ | | |_|_ | | _ _|_| |_|_ |_ _ _ _| |_|_ _ | | |_ _|_ _ _ _ _ _ |_ _ _ _ _|_ _ | | _|_|_ _ _| | _ _ _ _ _| | _|_ _ _ _ _ _ _| | | |_| | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| _| |_ _| |_ _ _ | | _| _|_ _ |_ | _| _| | | | |_|_ |_ _ | | _| |_ _ | _ _ _|_ _ |_| _| | _|_ _| | _ _ _| _|_ _| | |_ _| |_|_ _|_ _ |_ _| _| _ _ _ _|_ |_ _ _ _ _|_ | _| | | _ _| | | | _|_|_ | | | _ _| _ _ | |_| |_ _ | | |_ _ | | |_ _ |_ _| | _| |_ _ _ _ _| | |_ _|_ _ _|_ _ | |_ _|_ _ | | | _| | _| |_ _ _ _ _|_ | _| |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ |_ _ |_|_ |_ _ |_ | _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| | | _ _ _ _| |_| | |_ _ _ _ _ | | _|_ _ | _| | |_ | | _ | _|_ _ |_ | _| |_| _ _| |_ |_ _|_| _| _ _| _ _ _|_ _| |_ _ |_ _ | | | _| | | | |_ | _ |_ _ _ _ | _|_ | | |_ _| _|_ |_ _ | |_ _| _ |_ _| | | | | |_ _ | | | | | | _| |_ |_ _|_ | |_ _| _ _ | |_ _| |_ _| | | |_ | _ _ | | | _ _| |_ _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| _| _ _| | | _|_ _ _ _| | | _ _ _ _| _ _|_ _|_ _ _|_ _| | _ _| _ _ _| +| | | | |_|_ | |_ _| | |_ _ _| _| | | _|_ _|_ _ _ _| |_ _ _ |_ _ _ _|_ _ _ _ _ _ |_ _|_ _ |_ _ | | _| | |_| | | |_| _ | _| _| |_ | _|_|_ | | | _ _|_ _ _ _| | | |_ _ _ _| |_ _|_ |_ _ | | | _ _| | | _| | |_| _| |_ | _|_|_ | | | _ _| _ | _| | | | _| _|_ _| | |_ _ |_ | |_ _|_ | | _| |_ _ _ | |_ _ | _ _ _| _ _ | _| |_ _ _| | | |_ | _|_ _| | _ _ _| _| | |_| |_ | |_ _ | | |_ | | _ _|_| |_ _| |_ _| _| | | |_ _ _ | | _ _ _| | | |_| |_ | | | | | |_ _ _ |_ _| | |_ |_|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_|_ _ |_ _ | _ _| | _|_ | |_ | _ _ |_ _ | |_ | |_ | | _ _| |_ _ _| |_ _|_ _ _ _ _| |_ | | |_|_ _|_ _ |_ _ _|_ _ | _ |_ _|_ | | _| |_ _ |_ _ _ _ _| _ | | _| |_ _ |_ |_ | _ _|_ | | |_ _ | | _ _ _ _|_ | _|_ _ _| _ | |_ _ _ _| _ | _ _|_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_ _ |_ |_ _| _| | | | | _| | _|_ _|_ | _ _| | |_ _ _ | _| | |_ _ _| | | |_ | _ _ _| _| _| | _ _ _|_ _ | _ _ | _| _|_ _ | |_ _ |_ |_ _ _| |_ | | _| |_ _ _| | | _ _| |_ |_ _ _ _ _| |_ _|_ | | |_ | | _ _| |_ _| _ _|_ | _|_ |_ _ _| |_ _ _ _| _ | |_ _ | _ _ |_| | _ _ _ _ _|_ _| | |_|_ _ | |_ _ _| _ _ _|_|_ |_ _ | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ |_ _ |_ _ |_ _| _ | |_ | | _ _|_ | _|_|_ | | | _ _|_ _ _ _ _| | | _|_ _ |_ _| _| _ _ _ _|_ |_ _|_ _ | _| |_|_ _|_ _ _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| | _| _ _ _| | | _| | _|_ | | |_ _ |_| | | |_ _ _| |_ _ _| |_ | _ _| _ |_| | | | |_|_ | _| |_| | |_ | _|_ _ _ | _|_ _ _|_ _| | |_ _ _| | _|_ _ _ _ _ _ _| | | _| | _| |_ _ | | _|_|_ | _| |_| |_ _| |_ _ |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ |_ |_ _| _ | +| | |_ _|_ _ |_|_ _ | |_| _| | _ _ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ |_ _ | _| | |_| | _|_|_ _| | |_ | _|_ |_ _ _ _ _| |_ _| _ |_| _ _ | | | _ _ _ _|_ |_ _ |_ _ _ _| |_ | _ _| | |_ _| |_|_ _| _| _ _|_ _ _ _ _| |_ _| | _| | _|_ | | | | | |_ _ |_ _| | _| | _|_ _ _| | |_ |_ _ | _|_ _| | | | _ _| | |_ _| | |_ | | | | _| |_ _ |_ _ |_ _ | _ |_ _|_ | | _| |_ _ _ _|_ | | _| _ |_ | | | | | _| | |_ |_ _ | |_ _|_ _ | _|_|_ _|_ | | _| |_ _| | |_ _ | _ _ _ _|_ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_| |_ | | _ | |_ |_|_ _ |_ | | | |_| _| |_ _ _|_ _| _|_ | | | _ _ | | _ _| |_ _| | _ _ |_ _ |_ _ _| | | | | | | |_ |_ _ | _ _ _ _ |_ _| | |_ _ _| | | |_ |_ _| | _ _| |_ _| _ _| |_ _ _| |_| |_ _ |_ _| _| |_ _|_ _ | | | |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _| |_ |_ _| |_|_ _ _| | |_ _ _ _|_ _ _ _|_ _ |_ | _| _ _ _ _| | | |_ _| _ _ _|_ | _|_ _ _ _| | |_ |_ _ _ _|_| _ _| |_ _|_ | | |_ _| _| _ _|_ _ _| |_ _|_ _ _ _ _ | |_ _| | |_| _ _ _ _ | | |_ _| |_ _ _| |_ _ _| _ _| | | |_ _ | | _ |_ | _ _ |_ |_ _| _ _|_ |_ | _ _|_| _ _ _ _ | _|_ | | |_ | _| _|_ |_ _ _ _ _| |_ _| _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _| |_ _ _|_ | _| | |_ | | |_ | | _|_ _ _ _ _| |_ _| _ _ _ _ | | | |_ _ |_ _ |_ |_ _ _| |_ | | _| |_ |_ _ _ _ | | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | |_ _ | _ _|_ _ _ _| |_ _|_ _ _| _ _|_ _ _ _|_ _ |_ _ _ |_ _|_| | | |_ _ _ _|_| |_ _ | | | _| _ _|_ | _| | |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | |_ _ _| | |_| |_ _ | _| | _| _ _ _ _|_ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | _| | +| _ _ _ _ _| _ | | |_ | | | | | | | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| _ _| | | _|_| _ _ _| _ |_| _| |_ | |_ _ |_| _ | _ _ _ _ | |_ _ |_ _ _| |_ _ _ _| |_ | | | | | _|_ | _ _ _ _ _| |_| _|_ _| _ _ _ | | _ _| _| | _ _ _| |_| |_ _ | |_ _ |_ | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ _ _| | |_ |_ _|_ _ |_ _ _ _| |_| | | | | _|_ _ |_ _| |_ |_ _| | |_ |_ _ | _ _ | |_| _| _ _|_ | |_| |_ _| |_ _| _|_ _ _|_ _ _ _| | | _ _ | | |_ |_ _ | _ _ | | | _ _ _ _ | |_ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _|_ | | _| |_ _| | | _| _ _ _| |_ _ _| _| _| _ _ _| _ _ _ _|_|_ _| | |_ _ _ _ _|_ _ |_ _| | | _ _ _| | _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | _ _|_ _ _ _ |_| | | _|_ |_ _ _ _| _ _| _| _| _ _| _ _| |_ _ | | _ |_ _ |_ _| | | |_ _ |_ _| | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ _|_| _|_ |_ _ _|_ |_ _ _ _ | |_ |_ | _ _ _ _ | |_|_ _| | _| _ _ | | | |_ _ |_ _ | | | | _| | | _|_ _ | | | | |_ | | _| |_ | _ _| | _ | _ _ _| _ _ |_ _ | _ _| | |_ |_ _ | | |_ _| |_ _| _| _ |_ |_ _ | | |_ _| |_ _ | | | _|_ _|_ _| _ _| | _ _| _| | _|_| _ _ _| _ _|_ _ _ |_ _| |_| _| |_ _ _ _ | | | |_ _ | | _ _| | | | | | _ _| _| | | | |_ _ | | |_ _ _ _ _ _| |_ _ _ | | |_ | | _ _ _ _ _| _ _ _| | | _ _|_| |_ _ _ |_ | |_ _| _| _ _|_ _ _| |_ _| _| _| _ | _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_|_ | |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ |_ _ | _ _| |_ | _| | _| _ _| | | |_ _| _ |_| | _ _|_ _ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ _ | | _ _| | _| _| |_ _| _ _ _ _| | _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| | |_ |_ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| _| | +|_| _ | |_ _| |_ _ _ _| | | |_| _| | | |_|_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | | _ |_ _| |_| _ _ _| |_ | | _| _|_ |_ _ _| | | _ _ | _| | _ _| _ |_ |_ | _ _|_ _ _| | |_| | | | |_ _ | | | | _ _ _ _|_ |_ _ _ _|_ |_ | |_ _|_ _ _ _| |_| _ |_ |_ _ |_ _ _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| |_ _ _|_ _ | _ _ _ _| |_| _|_ _ |_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _| |_ _ _ _ _| | _ _ _|_ |_| _| _ _ _ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_ _ | | _| |_ _ |_ | _| | | _|_|_ | | | _ _|_ _ _ _| | | | | | | |_ |_ _ | _|_ _| | _ _| | _ _ _| _ |_|_ _ _ _| _ _ _ _ | |_|_ _ _ _ | |_ _ | _| |_ | _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | | |_ | | | | | |_ _ _ | | | |_|_ _ _| | | | _ _| | _ _| |_ | | |_ | _|_|_ | | | _ _|_ |_ _ _ _ | _|_|_ | | | _ _|_ _ |_ | | | _| | | |_ _|_ | | | _| _| | |_ _| | _ _ _| _ _|_ _ _ _| | _| | |_ _ |_ _ | | _| |_ _ |_ _| | | _| _ _ _| |_ _ |_ _| | | |_| |_ _|_ | |_|_ _ _ |_ _| |_ _| | | _|_ |_| | _| _|_ | _|_| _|_| | _ _ _| | | |_| |_ | | | _| _ _| | |_ _ _ _ | _| _| _ _|_ | | |_ _|_ _ |_ _ _ _|_ _| |_ _ _ | _ _ | | |_|_ _|_ | _ _ _ _ _|_| _ _ _ |_ _ _ _| _| | |_ _| _ _| | | | _|_ _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ |_| | | _| |_ _ | | _ _ _ _ |_ | |_ |_ _|_| _ _ _ _ _|_ | _ _| | |_ _| _ |_ |_ _| |_ | _ _| | | _ | | |_ _| | _| | |_ _ _|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | |_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_| |_ | | _| | _| | | _ _ _ _ _|_ _ _| | | _|_ | _ _| _ |_ | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_| _ _ |_|_ | _ _| |_ |_ _|_ _ _ _ | |_ _ _|_ | _| | | |_ _|_ | |_ _ _ | | | |_ _ | |_ | | _ _|_| |_ _| | | _|_|_ | | | _ _| _ | _| | |_ _| |_ | |_ _| +| _| |_ _| _ _ _| _ _ | |_|_ | | _|_|_ | | |_ _| | _|_|_ | | | _ _| _ | | | | _| |_ |_| _ _|_ _ _ _ _ _ | _| |_| _| _ _|_ _ _ | |_ _| | | | | _| _| _ _|_ |_| | _ _ |_ |_ | | | | | _| | |_ |_ _ _| |_ | _ _| |_ | |_ _ _ _ | | |_| _| _ _|_ | _| _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _|_ _ | _ _| | _| _ |_ |_ _ |_ | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | _|_ _| _ _ |_ _ _ _| |_ |_ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | |_ _ _| _ _ _ _|_ |_ |_ _ _ _ _| |_ _| _ | | | _| | _|_| | |_|_ | | _ _|_| |_ _ _| | | |_ _ | |_ |_ _ | | _ _ _|_ _ |_ _| | _ | _| |_ _ | |_ |_ _ |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ |_ _|_ |_ _ _| |_ _ _| | | _| _| |_ _|_ _ |_ _| _|_| _| |_ | |_ _ _ _| _|_ |_ _ |_ _ _ _ _| |_ _| | | | _|_ _ _ _ _| |_ _| _ _| |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | |_ _ _|_ |_ _|_ _ |_ _ _ | | |_ _|_| _ _ _| | _ _| _ _|_ _| | |_ _ _| | | _ _|_| | _| _ |_ |_ | | | _|_|_ _ _ | | |_ _ _ _ _ _ _ _|_ _ _ _| |_ _| _| |_ _| |_ _ |_ _ | |_ _ | _|_|_ _|_ | | _| |_|_ _| _ _|_| _ |_ _ | _| |_ _ _ _ _| |_ _ _ _ |_ _ | | _ _ _ _|_ |_ _|_| | |_ _|_ _ |_ _ |_ _| _ | _ _ _| _ |_ | _ _ _| | | | _| | | | |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| _| _| _ _ _| | |_ _ |_ |_ |_| | | | _ _ _| _ _ | _ | | _| | _| _| _ _|_ | | _| | _|_ | _|_ | _| |_ _|_ _ |_ _ _ _| _| _ _|_ | | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _|_| |_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ |_ _|_ | | _| |_ _ | |_ _ _| |_ _ _| |_ _ _| | | |_ | | | | |_ _ _|_| | | _|_|_ | | | _ _| _ _ _ _ | | _ _| | | |_| |_ | | |_ _ _ | |_ _ _|_| _ | _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ _ _|_ | | |_ _ |_ |_ _ _ _ _| |_ _| _| | | | | | | _|_ | |_ _ | +| | _ _ _ _| |_ |_ _ _ _| |_ |_ _ _|_ |_ _|_ _ _ |_|_ _ _ _ _| |_ _|_ _| _|_| | | | |_ _| | |_ | | _ _ _ _ | |_|_ | _ _ _ _| _ _ |_ _ | _ _| | | |_|_ | _| |_ _ _ _ _| _|_ | _| | | |_ _| |_ | _|_ |_| _| _ _|_ _ _| | _ _|_ _ _|_ | | _| |_ | _| |_ _ _ _ _|_ | _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ _ _ _ _ _ | |_| | _ |_| _| _ _|_ |_ _ _|_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | _ _| | _ _ _| | | |_| _ _| | _ _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| | _ _ _| | _ _ _|_ | _ _ _ |_ _ _| _| | |_ _ _| |_ _ _ |_ | _ _|_ | | |_ _ | _|_| | | _| | _ _| | |_|_ _ | _ _| _|_ |_ _| _|_|_ _ _| | | _|_ _ |_ | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _|_ _ _| _ |_ |_ _ _|_ _ _ _ _ _ | |_ _ | _ |_ _| | | | _ _ _|_ _ _| |_| _ _ _ | | | | | | | |_ _| | _ _ _ | _| | |_ _ _ _| |_ _ | | _ _ | | _|_ _ _ |_ _ _ |_ _ | | |_ _|_ |_ _ _ _ _ | |_ _| | _ _ | | _| _ _ | | | | |_ | |_| _| _ _|_ |_ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ _ | | _| _|_ | | |_ _ |_ | _| | | _ _ | | |_ |_ _ | _|_ _ _ _| |_ | _| |_ _ _ |_ _ _ _ |_ _ | | |_ _ _| |_ |_ _ _ _| |_ _ _ _ _| _ | | _ _| |_ _ | _| | _| |_ _ | _| | | |_|_ _ _|_ _| | | _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| _| | | | | | _ _| _ _| | | | | _| | |_ _ |_ _ _ |_| | | | | | | | _| |_ _ _ _ _|_ _| | |_ _| |_ _ |_|_ | | _ |_ _ | | | _|_ _ _ _ _|_ _|_ _ | _|_|_ | | | _ _|_ _ _|_| | _|_ | | |_ _ | _ _| _ _| _|_|_ | | | _ _| _ _ _ _ | | |_ | | | |_ |_ _ | |_ _ |_ | | | |_ _ |_| | | |_ |_| | |_ |_ _ | _ _| | |_ _ _ _ _| |_ _|_ _ _ _ _ | _| |_ _ _ _| |_ _|_ | | _| |_ _ |_ _|_ _ | | | |_ _ _| | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | | _ _| |_ _| _ _| |_ _ _ _ _ _ | | _|_ | | _|_ _| |_ | _ _| | | +| |_| _ _ _ _|_ |_ _ _ _ _|_ |_ _ |_ _ _ _| _ _ _ |_| _ _ | _ _| _| |_ _ _|_| |_ _ _|_ |_ _|_ _ | | _| |_ _ | |_ _| _ _ _| | | |_| |_ | | |_ _ | | |_ _| _ _| | |_ _ _|_ _|_ | _|_ _|_ | | | _ _| | _| _ _ _| | _| _ _|_ |_ _ _| | | |_ _ _ _ _ _ _| | _ | _| | | |_ _|_ | |_ _ _ | | | |_ _ _ | | _ | | _|_ | | _| |_ _ _ _ _| |_| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| | | |_|_ _ | |_|_ _|_ | | | | _ | | _ | | | _| _ |_ _ _ _| _ _| _|_ | |_ _ _| _ _ _| |_ _| _ _ _ _|_ | _| _ _ _ _| _ _| _ |_ |_ _| |_ _| | _ _| |_ _| _ _| _ |_ _ | _|_ _ _ _| |_ _ _ _ _ _| | _ _ _ _ _ _|_ _ _ _ _ _| | |_| _ |_ | | |_| _| | | |_ _|_ | |_| _ _ _ | | |_ _| | _ _ |_| _| _ _|_ | | _ _ _ _ | |_ _| _ _| | | |_ _ _ _ _| | | | | | _ _ _| | _| _ _| |_ _|_| | | | | |_ | |_|_ _ | | |_| _ _|_ |_| _ |_ |_ |_|_ _| | |_|_ _ _ _ _ _| |_ | _| | _ _| | _| _ _ _| _ _ |_ _ | _ _| |_ | _| | | _ _ | | | | | | |_ _| _| |_ _ _ _ _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | |_ _|_ _| |_ |_ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ | _|_ |_ | | _| |_ _ _ _|_ _| _ _| |_| _| _ _|_ _ _| _ _|_ _ _ | |_ _| | | | _ _| | _| | |_ _ | _ _| | |_ _| |_ | _ _ _| | | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| _| _| | |_ |_ | _ | _| | _|_ _ _ |_ _ | _ _ _ | _|_ _| |_| | | | |_ _ | _ |_ _| | |_ | |_ |_ _ |_ |_|_ | _ _| | | _| | _ _ _ | | _ _|_ _ _ _ _| |_ _| _ |_|_ _ | | | _ _| |_ _| _ _| | _|_ _ |_ _ _ _ _| |_ _| _ _ _ _| _ | | _| | | |_|_ | | _ _|_| |_|_ |_ _| |_ _| _ _| _|_| |_ |_ | | |_ _ | | | | | | |_ _ _ | | _ _ _ _ _|_ _| |_ _ _| | _| | |_ |_ _ | |_ _ _ _|_ _| | | |_ _ |_|_ |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ |_ _ _ _| _ _| _| | | _ _| |_ | | | _| _ |_ |_ | _ _|_ | +|_ _ _ _ _| |_ |_ _ _| |_ | | | | _ _ _| | |_ |_ _ |_ _|_ _ _ _| | _ _ _| _ |_ |_ _ _ _ _ _ | _| | |_ _ _|_ | | | |_ _ | _|_|_ _|_ | | _| |_ _| _|_|_ | _ _| | _ _| | |_| _ _ _ _ | | _ _ _ _ _ _|_ _ | _|_ _| | _|_| | _| |_ _ |_| _ | _|_ | _ _| | _| _ _| |_ _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _| |_ | | | | | | |_ |_ | _|_ _|_| _| | | |_ _|_ | | _ |_ | | |_|_ |_ |_| |_ _ _| | |_ _ | | | |_| | | |_ _| | | | | |_ _|_ |_ | | _ | | |_ _ | | | _ _ _ _| |_ |_ _ |_ _ _|_ _ _| |_ _ _| _| _ _|_ | | _ _ _|_ _ _ _| _ _| |_ |_ _ |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _| _ _| | | _| |_ |_ _ _| |_ _|_ _ _ _ _| | | _ _| |_ _|_ _ |_ _ _ | | _| |_ _ _ _ _|_| _ | | _| |_ _ | | _ _| _ _ _ _| |_| |_| |_| |_ _ _ _ | | _ _| |_ | _ _| |_ _| | _| |_| _| | |_ _ _| | _| _| _ _|_ |_ _ _ _|_|_ _ _ _ | |_ _ _ _| | | _| _ _| | _| _ _ _| | | |_| |_ | | | |_ _ _| |_ _| |_ _|_| |_| |_ _ | |_ _ | | | | |_ _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ | |_ _| | | |_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ | _| _|_| | _| _| | _ _| _ _| _ _| | _ _| _ _| _ _ _ |_ _|_ _ | |_| | | |_ _| _|_ _ |_| | | | _|_ _ _ _ |_ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | _|_ _ _| | | | | _|_ _ _|_| _ _ |_ _ |_ _| | | |_ _ _ _ _ _ _| | |_ | | _ _|_ _ _ | _| |_ _| | |_ |_ _ _| | _ _| |_| _ _|_| _ |_ |_ _| _ _ _ | | |_ | |_ _ _ _| |_| _ _ _| _ _| | _|_ _ | _ _| _ |_ _ _ _ _| _|_ _| |_ | | |_ | _ _|_ | | |_ _ | _ _ _| _ _| | _ |_ |_ |_ _|_ _ |_ _| | | | | |_ | | |_ _| |_ _ | _ _| _ |_ |_ | _|_ | |_|_ | | _ _|_| |_ _ _ | _|_|_ | | | _ | _| |_ _ _ _ | |_|_ _ _ _| | | _ _| |_ |_ | | |_|_ _| | _|_ _ | _ _ _| |_| _| _ _|_ |_| | | | | +| _ | | _ _|_ _ _| _| _ _|_ _ _| _| |_ _ |_ |_ _|_ _ _ | _ _| | | | _| _| _ _|_ | _ _ | |_ | _| _ _ | | | _| _| | | _| | |_ |_ _ | _ _ _|_ _ | | _ _| | _ _| _ _| | |_ _ _| _ _ | |_|_ |_ _ _| |_ _ |_ _ _ |_ |_ _ _| | | _| _| | _ _| |_ _ _| _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _| | | | |_| |_| | |_ | | | | | |_ _ _| |_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ _| _| |_ | _|_ _ _| |_| | | |_ | |_ | _ _ _|_ _|_ _ _ _ _ _ _| |_| |_ _|_ _|_ _ |_ _| | | _ _ _ _|_ |_| _ |_ _ _ | _ _ _ _|_ |_ | _| |_ _ _ _ _| |_ |_| _ _ | | | |_|_ | _ _|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _| | | | | | | _| _ | | _ _ | _| _| | |_ | _ | | |_ _ | _| | |_ |_ _ _ |_ _| | |_ _ _|_ | | |_ | | | _ _ _ _|_ |_ |_ _ _| _ _ |_|_ | _ _| | | | _|_ |_ _| | | | |_ |_ | | _ _|_ | _| |_ _ _ _ _| _| _ _ _ _ | _| |_ _ | _ _| _ _|_ | | | |_ _ | _| |_ _|_ | | _| |_ _| _ _ _|_ _| _| _ |_ |_ | |_ | | _|_ |_ _|_ _| |_ _| |_ _ | _|_|_ | | | _ _| | | | | | |_ |_ _ | | | _ _|_ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _|_| _| _ _|_|_ _| _| | |_ |_ _ |_ | _| | _ _| | | |_ _ |_ | _ |_ | _|_ _|_ _ |_ _ _ | | _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | | | | _| | | |_ _ _ |_|_ | |_| |_| _ _ _| | | |_| _ _| | |_ | _| _ _ | |_| _| |_| _ _ _ |_| | _|_ |_ | | |_ | |_ _| | |_ | | _| _ _ _ _|_ | | _ _| _ _| _|_ _| |_| _|_ |_| _ |_ |_ |_ | | |_ _ _ _ _ _| |_ | _| | |_ _ _ _ | |_| _ |_ |_ _ _ |_ _| | _ _| |_ _| _ _| |_ _ | | |_|_ | _ _|_ | |_ | _ _ _ _ _| |_| |_ |_ _| |_ | _ _ _| | _| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ | _|_ _ _ _ _| |_ _| _|_|_ |_ |_ | _| |_ _ |_ _ |_ | |_ | _| | _|_| _|_ _ |_ _| | | _ | |_ _| | | _| |_ _ _ _ _| _|_ | | | +|_ | |_| | _ | | _| | _ _| _ _ _ _ _| | _|_ _| _ _ |_ _| | _ _| | |_ _| _| |_ _ _ _ _| _ | | | _| | | | |_ |_ | | | _| | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ |_ _|_ _| | |_ _ _ _| _| _|_ | _ _| | _| |_ _ | |_ _ |_ _ | |_ _ |_ _ | _ _ _|_ _| _| | |_ | _|_ | _| _| _|_ |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ | | |_| _ _| |_| _| |_ _|_| |_ _ _ _ _|_ _ _ | | _ _ | | | | | | _ _|_ _ | |_ _ _ |_ _ | _|_ _ _ | | _|_|_ | |_ |_| | | _ _ _ _ | |_ _ |_ | _ _ _ _ |_ _ | _|_ _ _| |_ |_ |_ _ | | |_ _ _| |_ | | |_ _ _ _ _|_ | _ _|_ |_ | |_ _|_ _ |_ _| _ _ | |_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _|_ _| _| |_ _ _|_ _| | _| | |_ _| | |_ _ _ _|_ _ | |_ | |_ _| _ _| |_ | |_ _|_ |_ _ | | _ _| _ _ | | | | | | | |_ _ _| |_ | | _ _ _|_ | | |_| |_ | | |_| | _|_ | _|_ _| _ _|_ | _| | | | | |_ | _ | _ _ _| | | |_|_ _ _|_ | _| |_| | _| | | | _| | |_ _| | | |_ |_ _ | _ _ | | | _| _ _|_ | | |_ _|_| |_ _| | _ _|_ _ _ _ | |_ _ _ _ _| |_ _|_ _|_ _| | | | | |_ _|_ | _| |_|_ | _ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | |_| _ _ _| | _ _ _ |_| _| _| | | | _| |_ |_ _| _ _| | |_ |_ |_|_ |_ _ _|_ | | _ |_ _ _ |_ |_ _ |_| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_ _|_ _ |_ _| _ _|_ _|_ _ _ _ _ _ _|_| _|_ | |_ | | _|_ | _| _ _ _| _|_ _ _| | |_ _ _ _|_ _ _ _ _| |_ | | | _ _| | | | | | | | |_ _ | | _| | | _ _| | _| _ | |_ | _| _| _ _|_ |_ | |_ _|_ _ |_ _ | _| | | _| _ _ _| _| |_| _| _ _|_ | | _| _ _|_ _ _ _| _ _| |_ _ _ |_ _|_ _ |_|_ _ _ _|_ | | | _| _ |_ |_ |_ | _| | | | | _ _| | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| | | _ _ | |_ _ _ _ _| |_ | |_ _ _| _| | | | _|_ | | |_ _ _ _| |_ _ | |_ _ | |_| | |_ _ _ _ _|_ | |_ _ _ | | _ |_|_ | +| _|_ _ _| | |_ _| | | _|_ | | _ _| _ | _| | _ _ _|_ | | |_| |_ | | | | |_ _ _ _ _ | | | |_ _|_ | | | _| _|_ _| |_| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _ _|_ |_ _ | _|_ | | | _|_ _ _| | |_ _ _|_ | | _ _ _|_ | _|_ _| | _ _ _| | | | | | _ _| | _| |_ _ |_| _ _|_ _ _ _ | |_|_ _ _ _| | | _ _| _ _| | _| _ _|_| _|_ | _ _ _| _ |_ _ _ | |_ _|_ | |_ _|_ _ _| | |_ _ _ _|_ _ _ | _ | _| | _ _|_ _| |_ _ _ |_ _| | _| |_ _ | | _| |_ _ | | _|_ _| |_ |_ _ | |_ _| _| _ _|_ _ _| |_ _ | |_ _| _| _ _|_ _ _| |_ | |_| _ | _|_ _| |_ |_ _ | _ |_ _ | _ |_ _| _ _| | | | _|_|_ | | | _ _| _ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | |_|_ _ _ _ | |_ _| _|_ | | _ _| _|_ _ _| |_ _ _ _|_ _|_ _ _ | | | | | |_ | |_ _| _| _ _|_ _ _| |_ _ |_ _|_ _|_ | | _| |_ _ |_| | _ | | _ | _| | _| _| |_ _| |_ | |_ _| _|_ _ | |_|_ _| | _ _ | | | _| _ _|_ _|_ _|_| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | _| |_ _ _ _ _|_|_ |_ _ | | _| |_ _ _ | _ |_ _| |_ | _| _ _ | _| | _ _ _|_| |_ _ _ _| | |_ | _|_ |_| | _| | | |_ _|_ | _ _ _ _ _| | |_ _ |_ |_ _ | _ _ _ _ _| | _| |_ _ _ _| _|_|_ _ _ _|_ _ | |_ | |_ |_| _| | _ _| _ | _| | | |_ _ _|_ |_ _ |_ _ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _| | _| |_ _ | | |_ _| _ _ _| |_ _ _ _| | | _ _ _ _ | |_ _ _|_|_ _ _ _| | | | |_|_ _ _| _ _| |_ _|_ _| | | |_ _ _ _| | |_|_ _ _| | _| |_ _ _ _ _| | | _ _ |_ _ |_ _| _| | | | _ _ _ _ _ _ | _| |_ _ _ _ _| | |_ _ _ _ _ | | |_|_ _| _| _ |_ _ | | | _| _ _| _| _ _|_ | | _|_ _|_ _ |_ | | | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| | _| |_ _| | | _|_ _| _ _ _ | | _ | | |_|_ _ | _ | |_| _ _ _ _|_ |_ _ | | |_ _ _ _ _| _ _ _ |_|_ | |_ _ |_ _|_ |_ _ |_| +| | _ _| _|_ |_ _|_ |_ _|_ | _ _| |_ _ |_ _ | | |_ _|_ | | _| |_ _| |_ |_ |_ _| |_ |_ _ _ _ _| |_ _| _| _ |_ |_ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ | _| |_|_ _| | |_| |_| | |_ _ | | | _ _ _ _|_ _| _ _ _|_ _ _ _ _| |_ _ | | |_ _ _| | |_ _ _ _| |_ _ |_ _ _| | _ _ | _| |_ _ |_ _ |_ | |_ | _ _| | | | | _ _ _| |_ _ | _ | | |_ | | _ _ _|_ _ _ _ | _|_ _ _| _ _ _ _| |_ | |_ |_ _|_ _ _ _ _ _|_ _ |_ _ _| |_ _ | _| | |_ _ _|_ | | | | _ _ _|_ _ _| _| |_ | _ _| | _ _ _| _ _|_ | _ _| | _ _ _ _ _| _| |_ | | | | | _ _ _|_ _ _| _| | |_ _ _| | | | | |_| _ _| |_ |_ _ _ _ _| |_ _| _| | |_ _ | | | _ |_ _ _ _ _ _ _|_ _ | | | |_ _ _ _| _| |_ _ | |_ _ | | |_ | | | _ _ _ _|_ |_ _ _ _ _ _ _ _| _ _|_| |_ |_ | _ _| | _ _ _| _| | _| _| | |_ |_ _ | _ _| |_ _| | |_ |_| _| |_ _|_ | _ _ _| _| _ |_ | _| | |_| _ |_ _| _|_ _ | | |_ _| _ _ _ |_ _ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ | _ _ _ _| _ _|_| | | _| | |_| |_ _ _ _ _| _ _| _|_ _ |_ _| _| _| _ |_ |_ | _|_ | |_ _| | | _|_ _ _| |_ _|_ _ _ _ _| _|_ | |_ _|_ _ |_ _| _ | |_| _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ | |_ _ _| |_ _ _ _| | |_ |_ _ _ _ _|_ _|_ _ _ _ _ _ _ _|_ _ _| |_ | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ |_ _ | _|_ |_ _ | |_ _ | |_ _| |_ _ | | _| |_ _ | _ _ _ _ | | | |_ | _ _ _ | | _ | _|_ _|_ _ |_ _ |_ _ _ | | |_ | _ _ _ | |_|_ | | _ _| | _|_ _| | |_| | | | _| |_ _| _ _ |_ |_ _ | | _|_|_ _|_ _ |_ _ _ | _| |_ | | | |_| |_ _|_ | | _| |_ _ _ _ _ _| | _ _| | | | | | _|_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _ | | _ _| | _ _ _| _| _| _|_| |_| | | |_| | | _ |_| | | |_ |_ _ _| |_ | |_ _| |_ _ | _ _ _| _|_ | _|_ | |_ _ _|_ | |_ | +| |_ | | _ _|_ | |_ _ |_| | _ _| | | _| _| | |_ _ _ _| | |_ |_ _ | _ _ | | | _|_ _ _ _| _ _ _| | | _| _ _|_ | |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| _ | | |_ _| |_ _ _ _ | |_ _| _|_| |_ | _| | | |_ _ _ _|_ _ _| _ _ |_ _ | _| | |_ | _ _| | _ _ |_ | _|_ |_ | | | | |_ |_ _ _| | | | | _|_ | | | _ _|_|_ | |_ _ | | | |_ _ _| | | | |_ _| | _| | | | _ _| _ _ _ _|_ _ _ _|_ _| _ _ _| | | | _| _| _ _ _ _ _ _ | | _|_| |_ | _|_ | | | |_ _| |_ | _ _ _| _|_ | _|_ | | |_| _|_ | _|_ | _|_ _ _ _| _| | | | | | |_ _| _ _ _ | | | |_|_ | _ _|_ |_ _|_ | |_ | | _| | | | _ _ _ | _| _ _|_| |_ |_ | _ _| | | _ |_ _| | | |_ _ _ |_ |_ _ _|_ | | | |_ _|_ | | _|_ _ _| |_ | _| _ _ _ |_ _| _ |_ |_ | |_ | _|_ | _| |_| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | |_ |_ _ _| |_ _ _ | |_ _ _| _| | _| | | | | _|_ _ _ _| _|_ _ |_ _| |_ _ _ _ _ _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | |_| |_ _ |_ _ |_ | |_|_ _ | |_ _ _| _ _ _ |_| | |_ _ |_ _ |_ _| _| _ _|_ | | | | | | _ _|_ |_ | | | _ _ | _ _ _| | | | | | _ |_ _ |_ |_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | _|_ _ _ _ _ | | |_ _ _ _ | |_ _ _ _| _ _ _ _ | _ _| _|_ _ _ _ _| |_ _| | _|_ | |_ | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | | _ _|_| |_|_ _| |_| | |_ _| |_ _| _| | |_ _ _|_ | | |_ _ _| | _ _|_ _| |_ | |_| | | |_ | _ _ _|_ _ | | |_ _| |_ | | | |_ _ | |_ | _|_ _| _ _| |_| _ _ _|_ | |_ _| |_ _ |_ |_ _ _ _| |_| _|_ _| |_ _ _ _ |_ _ | _|_| _| _ _| |_ _ _| _ |_ | |_ _ _ | | _|_ | _| |_ _ _| | _| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_|_ | _ _|_ _ _ _| |_ |_ | _| _| | _ _| |_ | | _| _| _| _| _ _|_ _ _| | |_ _ | |_ _ |_ |_ |_ _ _ | _ _ |_ | _|_ | | +| |_|_ |_ _ |_ _ _|_| |_| | | | |_ _|_ | | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| | |_ _ _ | |_ _ _ _ | |_ | |_ _ _ _ _|_ | | | |_ _|_ |_ _| _ |_ | | |_ _ _ _| | |_|_ _ | | | |_|_ |_ _ _| |_ | _|_ _| |_ | | |_| | _ _ _| _| | |_ _| _|_ _ _|_ |_| _ _|_ _ _|_ _ _ _ _|_ _ |_ |_ _| _ |_| |_|_ _ | _ | |_| _ _ | _|_ _| | | | | | _|_ _| | | _|_ _| | |_| | | | _ _| _ _ |_ _ | _ _ _| _ _ _| | |_ |_|_ _ _|_ _ |_ | | |_ _ _ _|_ _ _| | |_|_ _| | | | _| _| |_ _ |_ _ | |_ _| |_ _ |_ _| |_ _ _ |_ _| |_ _ |_| _ _ _| _ _| | | | | _| _ |_ _ _| |_ _| _ |_ | _| |_ | | | _| |_ _ _| |_ _|_ _| _ | _| _| _ |_ |_| _| | _ _| | _| |_ | _|_|_ | | | _ _ | | | | _|_ _ |_ _| |_ _| _| _ _|_ _ _| _ _| _ |_ | _| _ _|_ |_|_ _ _|_ _ |_|_ _ |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ |_ _ _ _|_ | _ _ _| | _| _| | | |_ _ _ | |_|_ _ _ |_ _ | | _ _ _ _ | |_ _| | |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | | |_ _ _ _ _| _ |_ _ _| |_ _ _ _ _| | _ _ _ _ _ |_ _ _|_ _ _ _ _ _ |_ | | _| |_ _ _ _ _| | _|_ _| | | | | _| | |_|_ _| _| |_ _ _| _| |_|_ _|_ _| |_ _ _ _| |_ _| | _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _| |_|_ | | _ _ _|_ | | | _| |_ _ | | _| |_ _ | | _| |_ | _ | | _ _| _| |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | | _ _|_ | | |_ _ | | _| _| |_ _ _ _ | | | _|_ _ | _| | |_ _ |_ _ _| | _ _ _ _|_ |_| | _| | | _| _ _ _ _| | _| |_ _| _| _| | _| | |_| _| _ _ |_ | _ _ _ _ _| |_ | _|_ | _| _| _ _ _|_| _| |_ _ _ _| _ | | |_ _ _| |_ | _| _| _ _| _ _ _| |_ | |_ | | |_ _| |_ | _| |_ _ _ _ _|_| _| |_ _| | _| |_ _ _|_ _|_|_ |_ _ _|_ _ |_ |_ _ |_| | | _ _ |_ |_| _|_ _ _ _| | | _ _ _ _|_ _|_ _ _| | _ _| | _ _ _ _|_ _ _| _|_ _ _ _ |_| _|_| | _|_| |_ | | |_ _| | +| |_ _ |_ _ | | _ _ _ _|_ |_| _|_ _|_ _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ |_ _|_ _ | |_|_ |_ | _ _| _ | | |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ |_ _ _ |_ _| |_ _| | _|_ _|_ _ |_| _ |_ |_| | | | _| |_ _ | | |_ _| | |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | _| |_ | | _ |_| | | |_ |_ _ | | | | | _|_ _|_ _| |_ _ _ _|_ _ _ _ _|_ _ _ _|_ _ | _| | _| |_ _ _ | _ | _ _| _|_ _ _ _ | |_|_ | | | | _| _ _ _ _ | | |_ _ _ _|_| |_ _ _|_ _ | | _| | _|_ | | _|_ _ |_| _ _ _|_ |_ | | |_ _ _ _ _ |_ | _|_|_ | | | _| |_ _ _ | |_ _ | | | | | | | _| |_| |_ |_ _ | _| | | | |_| _| _| _ _|_ | |_| |_ | | | | | |_ _ _ _ _| |_|_ _| | _| |_ | |_ _ _ |_ _ |_ | _ _| | | _ _ | | |_| | |_ _ |_ _ _ _ _| _ _ | |_ _ |_ | | | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ |_ | | | | | _|_ _ | | | | | _ _ _ _ _ _|_ _|_ _ | |_ _ |_ _|_ _ | | _| |_ _ | _| | | |_ _|_ | _ _ _ | | | |_|_ | |_ _ _ _ | |_ _| | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | | |_ _ _ _ _| |_| | | _|_ _|_ _|_ _ _|_ _ _ _ _ _ _ _ _ _| |_ _ _ | |_ _ | _ | _ _| | | |_ _| | _ | _|_|_ | | | _ _|_ _ |_ | |_ _| _|_| |_ _| |_ _ _ | | | | _|_ _ _| _ _ _|_|_ _ _|_ |_ _| | _ _|_ _|_ _|_|_ | _| _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _| | _ _| |_ _| _ _| |_ _|_ _| _ |_ |_ _| | | _ _| _|_ | | | |_ _ | | |_ _ _| |_ | | |_ | |_ |_ _ _| | | |_ _| _ _ _| _| _ _| _|_ _| _| _| _ | | |_ | _ _ _ _|_ |_ | _ _|_| _| |_ _| _ _ _| _|_ _ | | | |_|_ | _ _| _|_ |_ |_ _ |_ _ |_ | _|_| _| _|_ _ |_ _|_ _ _|_ |_ _ | _ _ _| _ _ _|_ |_ _|_ _ _ _ |_ |_ _ |_ _ _ _| | _| |_ _ _ _| | _ _ _| | _ | |_ _| | | _ _ _ _ | |_ _ _| _| | | _| | _ _ _ _| _ _ |_ _ | _ _| | | _ _| |_ _|_ _ _ | _| +| |_ |_ _ |_ |_ _ _| |_ |_ |_ _ | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_|_ | _ _ _ _|_ _| | _ _| | |_ _ _ _ _| |_ | _ _ _ | _ _|_ _|_ _ _|_ | _ |_ _ | _ | _ _ _ _| | _ _|_| | | | | _ _| _| _ _|_ | |_| | | | _| | | |_ _|_ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | | | |_ | | _| _| _|_ _| | _|_| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | | _ _ _|_ _ | | |_ | | | |_| _ | _| |_ _ | | | |_ | _| |_ _ _ _| |_ _| _ |_ |_| _ _ _|_ | _|_ _ |_ _|_ _ _|_ | | | _ _ _|_ _ _| _ _| | | | | |_ _ _| | |_|_ _ _ |_ |_ _| _ _| |_ | |_| | |_ |_ |_ | _| |_ _ _|_ _| | | |_ _ | _| |_ _ _ _ _| |_ | | _| |_ _|_ | | _ | _ _ _ _ _|_ _|_ _| |_ _|_ | | | |_ | _| |_ _|_ _ _|_ | |_ _| | |_ | _ _| | _| |_ _ |_ |_ _| | | | _ | _| _|_ _ _ _| _ _| | _ _ _ _| _| | |_ _| |_ | _| | | | | | | | | _ | _ | |_ _| | | |_ _| | |_ _ _| | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_|_ |_ _ |_ _|_ _ _| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| _| _ |_ _ _| |_|_ | _ _ _ _ | |_ _ _| _ | |_ _ _ _ _|_ _|_ _ | |_ | | |_ | |_ _ | | | | |_ _ _ _ _| |_ _| _ | |_ | | | _ | | |_ _ | | | | _| | |_| _ _ | | _ _ _ _ | |_|_ |_ _|_ _| _ _ _ |_| _| _| _| _| _ _|_ | |_ _ _ _ | | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_ | |_ _ _ _| _ _| _ _| | _ _ _| |_ | |_ _ _| | |_ _ _ _| |_ _|_ _ | |_ _| _| _ _|_ _ _| | | |_ |_ _ _ _ | |_ _| | | _ _ _| | | | | _ _ _| _| |_ | | | |_ |_ _ _| |_ | | | _ _ _| | | | |_ _ |_ | _ |_ _| | | |_ _ | |_ | | |_ _| _| | _| | _|_ | _|_ _ | _|_ _ _ _ | _ | |_|_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _ _| | | | _ |_ _ _| _ _ |_ _ | _ _| |_ |_|_ _ |_ |_ _ | | _| |_ _ | _|_ |_ _| _| | | | _ _ _| | | |_| |_ | |_ _| _|_ _ _ | |_|_ | +|_ | _ _| |_ _| _| _ _|_ _ _| _| |_ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ | | | | _ _ _| | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | _ _| | _|_ _| _ _ |_ _ | _ _| | | | | | | _| |_ _ _ _ _| | _| | | | | _|_ _ _|_ _| _|_ _| _ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ |_ |_ _ _ _|_ _|_ _ |_ _ |_ _|_ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_ _ | | _| _| |_ _|_ _ _|_ |_|_ _|_ _ | |_|_ _ _|_ _ _|_ | |_ _| | _| _ _|_ | | |_| |_|_ _ _ |_ _ _ _| _ _| _|_ _| _ _ |_ _ | _ _| | _|_ _ _ _| _ _|_ _ _ _ _ _ _ _ _ _|_ _ _ | |_ | |_ | _|_ | _| _|_| |_ _ _|_|_ | _| |_ _ | _ | | | |_ |_ _ | _|_ | _|_ _ _ _|_ _ _| _ |_ |_ _ _ _| |_|_ _ _|_ |_ _ _| _ _ |_ _ | _ _| | | _| | _| _|_ _ _| | | _| _|_ _|_ | |_|_ | | | _ | | | |_ _ _ |_ _|_ _ _| |_ _| | _|_|_ _ _| |_| |_ _ _|_ _ |_ _|_ _ _ _ _|_ _|_ | | _| _ _ _| | | | | | _ _ | _| _| | |_ | | _ | |_ _ | _ | _ _ _ _| |_|_ |_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_| _| | _| _ _ _ |_ _ _ |_ _ | | _| |_ _ | _| |_ _|_ _ | | | _ _ _|_ | | | | | _| |_ _ _ _| | | |_ _ _ | _ _ _ _ _| _| | |_ _ _| |_ |_| |_ _| _ _| | _| | | _| | _| | | |_ _ | | _| |_ _ |_ | _ _ _| _ _|_ _ _|_ _ _| _| _| |_ _ _ _ _|_ _ | | |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_ _|_ |_ _ | | |_ _| | _|_ _ _ _| _|_ | _ _|_|_ |_| _ |_ |_ | _|_ | _ _| | _ | _ _ _ _|_ _|_ _ _ _ _| | _ _| | |_ _ | _| | | |_|_ _ | |_ _ _ | | | |_ |_| _| _ _| _ _|_| |_ _ |_ | |_ _|_ _| | _|_ |_ | _|_|_ | | | | | | | _| _ _ _|_| |_| _ _| | _|_ | |_ _ _ _| |_ |_| |_ _ _| | | | _| | |_ | | _|_| | _| _ _|_ _ _| |_ _|_ |_| _ _ _| | | |_| |_ | | _| _ | | | | _| | |_ _ _|_ | | _ |_ | _| _| | |_ _ | |_|_ _|_ | | _| |_ _ | | |_ _|_ _ | | +| | |_ |_ | _ _| | _ _ _ _ _| _|_ _ | | _| | | |_ _|_ | _ _| | | |_ _ | _| |_ _|_ _| |_ _ _| |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _| | _ _ _| | | |_| |_ | | | |_ _ _| |_ _ _ _ _ _| _ _| | | |_ _ _ | |_ |_ _ |_ _| _ _| | _|_|_ | | | _ _| |_ _ _| | | _ _|_ _ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ | | | |_ _ _| _| _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ |_|_ | |_ _ _ _ _| _|_ _ _| _ _ _ _ _ _ _ _|_ | _|_ _| _ _ _|_ | | |_| |_ | | | _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _|_ _ _ _| |_ | | | |_ _ |_ _ _ _ _|_ |_ | | |_ _| | | |_|_ | | _ _|_| |_|_ _ _ _| _ _ |_| _| _ _|_ |_ | _ _| _ _ _ _ | _ _ _| | | |_| |_ | | |_ _ _| |_ | _ _ _|_| | | _|_| _ | _|_ _ _|_|_ _| _|_ |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | _ _| | _| | | _| |_ _| _| |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| |_ _| | | _ _ _ _|_ | | |_ _ | _| | _|_|_ | | | _ _|_ | _ _ _ _| _| _| |_ | | |_ _ |_ |_ _| | |_ _ _| | | | | | _ _ _ _| | | | |_ _| | | | | |_ |_ _ | _ _| |_ _ _ _ _| | | | | | _| _ |_ |_ _| _ _| _| | |_ _|_ _ | | _| | | | _| | |_ _ _|_ | | _|_ _ | | _ _ _ _ | |_ | |_ _ _ _ _ |_ |_ _|_ _ | | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | | _| | |_ _|_ _ |_ _ _ _ _| | | |_ _ | |_ _ _ _| _| _ _|_ | | | | _|_ | _|_ |_ _ _ _| | _ |_| | _ _| | | | | _| | | | | | _ | |_ _ _ _ _| |_ | | | _| | |_ _ _| | _ _| | _| | | | _| | _ _| | |_ _ _ _ _| | _|_| | | _|_ _| _ _ |_ _ | _ _| | | _ _| |_ _ _ _|_| _ _| | _| |_ | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _|_ _ _ _ | |_ _ |_ |_ _ | | |_ _|_ | | _| | | | |_ _ _| | | _| _ _ _ | | |_ |_ | _| |_ | |_ _| | | | _ | | |_ |_ _ | _|_ | _| _ |_ | +| |_ |_| | _|_ | _|_ _ |_ _ |_ _ | _|_ _ _| |_ _|_ _ _ _ _| | |_ _ _| |_|_ _|_ _ |_|_ _| _ _ _ _|_ | _| _ | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | | |_ _ | |_|_ _|_ | | _| |_|_ _ |_ | _|_ _ _| |_ _ _ _| |_ _ _|_ _|_ _ | |_ _ | | _| |_|_ _ _ _ _| |_ _|_ _ |_ _ _ | | | | | _ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | |_ _ _ | | _|_|_ | | | _ _| _ | _| | | | |_ _| _ _| | |_ _ | _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ |_ _ | | |_ _| _ | | | _ _ _ _ | |_|_ | | |_ _ | _ _|_ _|_ | | _| |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| |_| |_ _| _ _| | _ _| _| _|_| |_ _ | | |_ | _ _|_ | | |_ _ | | _ _ _| | | _| |_ _ _ _ _|_ |_ _ |_ _ | | |_ _ | | | |_ _|_ | | _| |_ _ _ | | _| |_ |_ _ _ _ _|_ _ | | |_ _| |_ | | |_ | _| _ _|_ _ | | |_ _ _| |_ | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _| |_ _ _| |_ | | _ |_ _ _ _ | |_ _ _ _ _ |_| _ _| _ _| |_ _ _| |_| |_ _| _ _| | | |_ _ _ _ _| |_ _| _ _ _|_| | | _ _ _| | | | | |_ _|_ _ |_ _ _| _| _| _ | _| | | |_ _|_ _| |_ _|_ | |_ _|_ _ _ _| |_|_ | | _ _|_| |_ _ _ _ _ _ _| |_ _| |_| |_| _| _ _|_ | | | | |_|_ |_ _ _ _ _| _|_ | _|_|_ | _| _ _ _ | | _| | | |_ _ | | _| |_ _ |_ |_ _ |_ _ _| _ _|_ _| | _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| | | _|_ | _ _|_ _ _ | _ _| |_ _| | |_ _ | | _| |_ _ _ _ _| | | |_ _| |_ _ |_ _ | _ _| | |_ _ _ _| _| | | | | |_ | _|_|_ _ _| |_ |_ _ _ _ _ _ _|_ _ _|_ _ _ |_ | _ _| | | | _|_ _ _ _| | |_| _ _|_ | _|_ _ _ _ _ _ _ | _ _|_ | _ _ _| | | |_| |_ | |_ _| |_ _ _ | | | _ _| |_ _ | _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_|_ _ _ _ |_ _| | | |_ | | | |_ | |_| | _| | _| | | _ _ | _| | | _| _|_ _ _ | |_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ |_ |_ _ _| +|_ | | |_ _| |_ _ |_ _ | |_ _| | | | _ _ | | _ _ | _|_ | _| | _| |_ _ | | |_ _ _| |_| |_ _ _| | | |_ |_| _ | _|_|_ | | | _ _|_ _ _ | | | | | | | | _| | | | _| | |_ |_ _ | _|_ _|_ | | |_ _ | _ _| |_| | _ |_ _| _ _| _|_ |_ _ _| | _ _ _ | | | _ _ _| |_ |_ | |_ _ _| | |_ _ _| | | _ | | _ _|_ _ _| | _ _ _ _ |_ _ _ _ _| |_ _|_ _ | |_ _| | | _| _ _| _ | |_ _ _| _|_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _| |_ |_ _|_ _| | | | |_ _| _ | | _| |_ _ | | | |_ _| | | _| | |_ |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _ _| |_ | _ _| _ _| _ _| |_ _ _ _| _| _| | _| | | |_ _| | _ _| |_ _| _ _| |_ _ | _|_|_ _ _ _ _ _ _ _ _ | _ _| _| | |_ _| _| | _|_ _ | | |_ |_ _ | _ _| _ _| _ _ _| _ _ |_ _ | _ _| | _| |_ _|_ _ _|_ | | | _ _ | |_ _| _| _ _|_ _ _| |_ | |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ |_| _ |_ |_| |_| | |_ _ | _| |_ _ |_ _ _ |_ |_ | _ | _| _| _ _| _ _| | | _ _| _|_ _| _ _ _| | | _ |_ |_ _ | | | |_ _|_ | _ |_ _ _ |_ | |_ _ |_ _| _| | | _ _ _ _|_ |_ _ | _| _ _ | |_ _ _ _|_ | | |_ _ | | _ | _ _|_ _ _ | | _| |_ _ _ _ _|_ |_ _|_ _ |_ _ | | _ _| |_ _ _| | | | |_ | _ _| | | | | _|_|_ _| | |_ _ _| _ _| _| |_|_ | | | | _| _|_ | _ _| | | | | |_ _ _| _| | | | |_ _ _ | | _| _ |_ _| _| | _ |_ | | _ _| |_ _ _ _|_| | |_ | _ | _|_ | |_ | |_ |_ _ |_| |_ | | | _ _ |_| _| | |_| | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | |_ | | | |_|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ | |_|_ _ | _|_|_ _|_ | | _| |_ _ |_| _|_ _| _| | | | | _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | | | _|_| | _| | |_|_ | |_ |_ _| _| |_ _ | |_ _ _| |_ _ _| |_| _|_ _ | |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _ | +| | | |_ |_ | | |_ _ |_ _| _ _| |_ _|_ _| |_ _|_ | |_|_ _ _ _ _| | _| |_ _ _|_ _ | |_ _| _| _ _| _ _| | _|_ | |_ | | _|_ _ _ _| |_ _| _ _ _| _| | | | | | | |_ _ | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ |_| | |_ _| _ _| | _ _|_ _ _|_ _ |_ _ _ _| |_ _ _ _| | _ _| |_ _ _| |_ _| _| _ |_ |_| _|_ | _ _| _ _ _ _|_| |_ | |_| | _ _ _ | |_ _| | |_ _ _ |_ _ _ _ |_ _| | _ _ _| |_ | | |_ _| |_ |_| _ _| |_ |_ _ _| _|_|_ | | | _ _| | | |_| | | | _ _| _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ | | _|_|_ _|_ | |_|_ | | _ _|_| |_|_ | _|_|_ | | | _ _| _ _ _| | |_|_ _ | _ _|_ _ _| | | | |_ _ |_ | _ _ _| | | | _|_ _ | |_ | |_ _ _ _| _ _| |_ _| | | _ _ _ _ | |_ _ _|_| | |_| _|_ _ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| | _ _ _| | | |_| |_ | |_ |_ | _ _ | |_|_ _ _ _| |_ | _ _| | _| |_ | |_ |_ _ _ _ | _|_|_ | | | _ _|_ | | | |_ _ |_| _| _ _|_ | _ _| _| |_ _|_ _ _|_ | | _ | | _ | |_ | | | _ _| | _| | _ _| | |_ |_ _| _ | | |_ _ | |_ _|_ _ _| | | _| | _|_ |_| |_ _| _|_ _ |_ _ _| | |_ _ |_ _ |_ _ _ _| |_ | | | | _| | _| |_ _ | | | _ _| |_ _| _ _|_| |_ _ _| _ _ _ |_ _| | _ _ _ _ _ _ |_ _ | |_ _ | |_ _|_ _| _ _|_ |_ _ _| |_ _| |_ _ _| |_| |_|_ _ _ | | _| | _ _ _| _| |_ _ | |_| |_ _| | _|_ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _ |_ _| | | | _| | _ _| _| |_ |_| _| | | | _| |_ | _ |_ |_ _ _| |_ _| _ _ _ |_ _ _ _ _ _|_ _ _ _ | |_ _ | _| _| _|_ | |_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ _ _| | | | | | |_ |_ _ | _ _| | _| | _|_| | | |_ |_ _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| |_ _|_ _ _ | |_ _|_ _ | _ _|_ _ _ _ _|_ | _|_ _ | _| _ |_ |_ | | |_| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ _| | | +| | |_ |_ _ _|_ _ _|_ _ |_ | _ _ _| | _ _ _| _ | _ _|_ _ _ _ | |_|_ _ _| _ _ | |_ | _ _| | _| | _ _| | | _ _ _|_ | | _ _| | | _ _ |_ _ _ _ _| |_ _| |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _| _ _| _ _| _ _ _| _ _ |_ _ | _ _| |_ _ _| _ _| |_ |_ _ _| _ _| | _| _| _ _|_ | |_ _ | | | | _ | | | _|_ _ _| _ |_ _ | _ _| | | _| |_ | | | _ |_| _ |_ |_| _|_ _ |_ _ _ | _ _ _|_ |_| | _ |_ _ _ _ _| |_ _| _|_ _| |_ | | _|_ | _ _ |_| | _|_|_ | | | _ _|_ _ _ | | | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ _ _| |_ _| _| | |_ | _| | _ |_| | _ _ _|_ _| |_ _|_ _ |_ _ _|_ _ | | _| |_ _ | _|_ | _| _ _ | | | | |_ _ _| _| |_ _ | | _| |_ _ |_ _ _ _| |_ | | _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ |_ | |_ _ | _| |_ _|_ | | _| |_ _ |_| | _ |_|_ _ _ _ | | _|_ | _|_ | | |_| _|_ | _ | | |_ _ _ _ _| |_ _| _ |_|_ _| | | | | | _| _| |_ _ _ _ _|_ | _| | _ _ _ _ | |_ | |_| | _| |_ | |_|_ | _|_ | | |_ | | | |_ | _| |_ | |_ _| _ _ _ _ |_| | | _|_ _ _|_ | |_ _ _ _ _ | _ _ _ _|_ _|_ _ |_| |_ |_ | _ _|_ _ _| | |_| | |_ _ _| | |_ |_ _ _ _| _ _| _ _| _ _ _ _ _ _| | _ _ _| | _| _ _|_ | |_| _ _| |_ _| _ _ _|_ _ | _ _|_ _ | |_| _ |_ |_ _ _|_ | | | |_ _| _ _ _| | | |_ | | | _| |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ |_ | _| | _| _| | _ _| _ _|_ | | _| | | | | _|_ _| _| _| _ |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ _ | | | _| |_ _ |_ | _ _|_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ |_ _ | _|_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| | _|_ _ |_ _ | _| | |_ _ | |_ | _|_|_ | | | _ _| _ _ _ | |_| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ _| _| | _| _ _|_ | _| | |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _ _ _| +| |_| _| _ _ _ _ | |_ _| _| _ _ | | | _ _| _|_ _ _ _| _| |_ _ | _ |_ _ _ _| | _|_ | _|_ | | |_ | |_|_ _| _ _ |_|_ | _ _| | |_ _|_ |_ | _| _ |_ |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _| | | | _ _| _ _ _|_ | | |_| |_ | | _ _ | |_ | | |_ | | | _| |_ _ _ _ _| | |_ _| |_ _| | | | |_ _ _| _ _| | | | |_| |_ | | | |_|_ | |_ _ _| |_ _| _| _| _ _|_ | | _ _|_ _ | _| _ _| |_ | | | |_ | _ _ _ _ _ | | | | _ _ _ _| |_ | | |_ _ |_ _ _| |_|_ _ _ _ _| |_ _| _ _ | | _| | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ | _ _ _ _ _ _|_ |_ _ _| |_ | | _| | |_ _ _ _ | | _ _ |_ _ _ _ _| | | | |_ _ | _| | |_ _|_ | | | |_ _| |_ _ | |_ _ _ _| | |_ _ _|_ | | _ _|_ _ | | | |_ | | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _| | |_ _ _ _| | |_ |_ _ | _ _|_ | | _ _| _| | |_ _| |_ _ |_ _| | _| _|_ _| _| | |_ _ _ _ _ _ | _ _ |_ _ _ _|_| |_| |_|_ | |_ _ _ _| _ _|_ | |_| | | _| |_| | _|_ _ _|_ |_ | |_ | _|_ |_ _| | | |_ _ |_ _| _| | | |_|_ |_ _ | _| | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _ |_| |_ _ |_ |_ | | |_ | _ _| | | |_ | _ | | |_|_ | _ _ _| _ _ |_ _ | _ _| | |_ _ | _|_ |_ _ |_ _ |_ _ | _ _| |_ | _ _ _|_ _| _ _|_ | |_ _ _ _ _| | |_ | |_ _ | | _| | _| | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _|_ _ _| _|_ _| |_ | |_ _| _ _| | |_ _|_ |_| |_| | | | _ _ _| _| _ |_ _ | | | |_ _| _ | | _| |_ _ | _ _| | | | _ _ _|_ _| |_ _| | _| _ _ | _|_|_ | | | _ _| _ _ _ | | |_ | | _ _|_| |_ _ |_ _ | _|_|_ | | | _ _| _ _ _| | | _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | |_ _ |_|_ |_|_ _| _ _| | _| |_ _ _ _ _| |_ _| _| |_ | _ _| | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _| |_ _ _ _ _| | | | | _| | _| | | |_ _|_ | | _ |_ | | |_|_ | _| | | +| | _| |_ _ | | _| |_ _ | | _| | |_ | | |_ _ _ _ |_|_ |_ _ _| | |_ | | | | |_ _| |_ _ |_ _| | | | _ _ _| _| | |_| |_ | |_ |_ _| |_| _| _ _|_ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| _ | _| |_ _ _ _|_ _ | _ _|_ _|_ | | _| |_ _ |_| | | |_| |_ _ | | |_ _| |_ _ _ _ _ | _|_ _ |_ _ _ _|_ _| |_ _|_ |_ |_ _|_ | | _| |_|_ _ _| | | _ _ _ | | _| |_ _ _ _ _| | _ _ _| | |_ | _ _|_ _ _| _| _| | | _ _ _ _| | |_ _| _ |_ |_ | |_ _ _ _| |_ _ _ _ | _ _| | | | |_ _ _| |_ | | |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_| |_|_ _ _ _ | | | | _ _ _|_ _| |_ _ _| | | |_ _| |_ | _ _| _|_ _ _ _| _|_| _|_ _ | _ _|_ _ _ _ _|_ |_ _ _ | | | _| _ | _| | |_| | _ _| |_ | | | |_| | _ | _| | |_ _ _ _| _ _| _| _| | _|_ _ _ _ | |_|_ | | _ _|_| |_ _| _| | |_ _ _| | |_ | | |_ _ |_ |_ | _ | | | | | | | |_| |_ | _| _ |_ |_ | |_ |_ |_ _ _ _ _ _ _ | | _ _|_ _|_ _ _ _|_ _ _ _ _| _|_ _|_ _| |_| _ _ _ _|_|_ _ | |_ | |_ _ _|_ _ _|_ _| | _ _|_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _| _| _ _|_ _ _ _| _|_ | | | | | | | | | _|_ _|_ _ |_ _| _ _ _| | | |_| |_ | | |_ _| | | | | _ _ _ |_ _ _ _ _|_ _ _ _ | | |_| |_ _| _ _ _ _|_ _ _| _ _ |_ _ | _ _| | | | | |_ _ _ _ _ _ _|_ | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| _ _ _| _ |_ |_| | _ _| | _| |_ _ _ _|_ _ _ _ _| | |_| _ _ _|_ _| _|_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ | |_ _ _| _ _ |_ _ | _ _| | | | | |_|_ _ _ _ _| |_ _| _ _| |_ | _| | | _ _|_ | | |_ _ | | _|_ _ _ _ _| |_ _|_ _ _|_ _ | | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _ _|_ _ |_ _ _ _ | _ _| | | _ _ _ _ |_ _| _| |_ _ _| |_ |_| _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | _ _ | _ _| | | |_ _ _|_ _ _| |_ _|_ _ _ _ _|_ | | | | _|_ _|_ _ |_ _ _ _|_ | +| |_ _ | _| | |_ _ _| | |_| | | |_ _ _| |_ _|_ _ |_ _ | _ _ |_ _ | | | _|_| |_ _| |_ |_ | | |_ _ _ _ _|_| |_ _ | _ |_ _|_ | | _| |_ _ _ _| | _| _| |_ _ _ _ _| | | _| | | |_ _|_ | | |_ | | |_ _ _ _| | |_ _|_ _ _ _ _| | _ _ _| | |_ |_ _ | _ _| |_| | |_ _ _| | |_ |_ | _| | | |_ | |_ _ | | _ _ _ _|_ |_| | | | _| | |_ |_ _ | _ _ _| | | _ | | | |_ _ _ _ | _|_ _| | _ _|_ |_| | | _| | _ |_ _|_ _ | | _ _|_ |_| _| _ _|_ |_| | _ _ _ _|_ |_| _|_ | | | _ _| | | _| _ |_ |_| _| | | |_ _|_ | | _ |_ | | |_ _ _ _|_ _ _ _ _| |_ _| | | |_ _ _| _ _ |_ _ | _ _| | |_ _ | | | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | |_ _| |_ _ |_ _|_ | | | _|_ _| | |_ _|_ _ _ _|_ | |_|_ | |_ |_ | | | | |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _|_ _ _|_ | |_ _| |_ _ |_ |_ | | | |_ _ _|_|_ _|_ _| _| |_ _ _|_ _ |_| _| _ _|_ | | |_ _|_ _ _ _| | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | _ _ _ _|_ |_ _ | _ _ _ _ |_ _ _|_ _ _ _ _| | | | _| _| |_ _| _| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| |_ |_ _ _ _ | _ _ _| | | | |_|_ _| |_| | |_|_ | |_ _ |_ _ | |_|_ _|_ | | _| |_ _| | _|_ _|_ _ _| _ |_ | _ _ _ _ | |_|_ |_ _ _| _ |_ _ _ | | |_ _ |_| | |_ | _|_ _ _|_ _ | _ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | _|_ _ _| _| _ _|_ |_ _ | _| |_ _|_ _ _ | _ _ _ _ | |_ _ _ _ _ | _ _| | | _|_|_ | | | _ _| _ _ _ _ | | | | |_| _ _ _| | | |_| |_ | | | |_ _|_ _ _ _ _ _ _ _|_ | _| _|_ _| |_ | | _ _| |_ _| _ _| | |_| _ _ | | _ |_| _ _ _|_| |_ | | |_ _| _ _ _ | _| |_ _ _ _| _ _| _|_ |_ _ _ _ |_ _ | | |_ |_ _|_ _ _| |_ |_ | _ _| |_| _ |_ |_ |_ _ _ | _ | | _|_|_ | | | _ _|_ _ _ _| | | | _ _| |_| | |_ _|_ _ | |_ _ _| _ _ | |_ |_ _ _ |_| | | | _| _|_ _ |_ | | +| _ |_ | _| | _ _ _| | | |_ _ _| _ _|_ _ |_ _ |_ _| | _| |_| | | | _| |_ |_ |_ _|_|_ _ _ | _ _ _ _| | | |_ _| | |_ |_ _ | _ _| | |_ | _ _ _ _| |_ _ _| |_ _|_ _ _ _ _|_ _| |_ |_| |_ _|_ _ |_ _ |_ _ _ | |_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | |_| | _| | _| _| _ _| | | _|_ _|_ _ | | |_ _ _| |_ | | | |_| |_ | |_|_ | | _ _|_| |_ _ |_ |_| | |_ |_ _ |_ _|_ _ _ _ |_ | _|_ _ _| |_ _|_ | |_ |_ _ _| | | |_ | _| _| |_ _ _ _ _| _|_ _ _| |_ | _ |_ _ | | | | _| _| _ _|_ |_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_ _ | | _ _ _ _|_ |_ |_ _| _ _ _| | | |_| |_ | | | | | | | |_ | | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_| _ _| | |_ _ _ _|_ |_ _ _ | _| |_|_ _ _ _ _ | _|_ _ _ _|_ _ _ _|_ _|_ | |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _|_ _ _ _ _|_ _ _ _| _| _| | |_ | | _ _ _ _ | |_ _|_ | _| _| _| |_ _ _ _ _|_|_ |_ _ | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _| |_ | _|_ |_ _ _ _| _ _ |_ _ | _ _| | | | |_ _| _| |_ _ |_ |_ _|_ _ | _|_|_ | | | _ _| _ _ _ | | | | _ _ _| _ _ |_ _ | _ _| | |_ _| _ |_ |_ _ _ | | |_| | |_ | _ _| |_|_ | | | |_ |_ _ | _ _ | | | | |_ _| _ | | _| |_ _ | _| | | |_ _ | | | |_ _|_ _ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | | _ | _| |_ _ _ _ _| |_| | |_ _ _ | | |_ _ | _ _ _| _ _ |_ _ | _ _| | |_|_ _ _ _ _| |_ _| _ _ _ _| _ | | | |_ |_ _ | | | |_ _|_ | | _| |_ _ | _ |_ _ | _ _| | _ _ _| _| _ |_ |_ |_ _ _ _| _ _| | _| | _| _| |_ _|_ _| |_ _ _| _| _ |_ |_| _| | | |_ _|_ | | | |_ _ _ | | |_|_ |_ _ _ _ |_| _| | |_ _| |_ | _ _ _ _|_ |_ _| | _ |_| _| _ _|_ | |_ _|_ |_ |_ _ _ _ _| |_ _|_ _ _ | | | | | |_ _ |_ _ _| |_ _ _ _ _ |_ _ _ _ _ _ |_ _ _ _|_ _ _ _ _|_ | | | |_| _ _| _ _| | _|_| | +| | |_ | | | | | | | | |_| _ _ _| _ _ _| | _ _| |_ | _| |_ _ _| |_| _ _ _|_| _| _|_ _ _ | |_ _ | _| _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ | |_ _| _ _ |_ _ _ | | _ _ | _ _ _ _ _|_ _ _ _ _ _ | |_ _ | _ _ |_ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _| | |_ _ _| _| | | | | | | _ _ _ _ _| |_| _| _ _|_ _ _| |_ | _| |_ | _ _|_ | | |_ _ |_ |_ |_ _| _| |_ _ _ |_ | | | | _ _| _|_ | | |_ | | | _| |_|_ _|_ | |_ _ _ _ _ _ _ | _| _ _|_ _ _|_ |_ _ |_| | | | |_| _| |_ _ _ _ _|_ _ | | _ _ | | | | | | _ _|_ _ | |_ _ | | |_ _ _| |_ |_ _ |_ _ | |_|_ _|_ | | _| |_ _| | | |_ _| |_ |_ _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_|_ _| | | |_ _ _ _ |_ |_ _ _| | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_|_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _| | |_ _ _ _ _ _ | | |_| _|_ |_ |_ |_ _ | | _| |_ _ | _|_| | | | |_ | _ _ _ _ _| _ _ _|_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_|_ _ | _ _|_ _ _| |_ |_ | _ _ _| | | |_| |_ | | | | | _ _| _| |_ _|_ _ _ _ | |_ _ _ _ _| |_ _| |_| _| | | | |_ _| _ _ _| _| | |_| |_ | | | _| _ _|_ | | | |_ _ _|_ _|_ _ _ _ _ _ _|_ | |_|_ | | _ _|_| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _| |_ _ _ _| | _| | _ | _ _ |_|_ | | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _ _|_ | | _ _ _ _ |_ _ _|_ _ _ _ _ _|_ _ _| | | _ _ _|_ | | |_| |_ | | | _ _ _ _ | _ _ _ _ _| _|_ _| |_ _ |_ _| | _|_ _ | | |_ |_ _ | _|_ | | |_ | _|_ _| _| _| _ _|_ | |_ | | | |_ _ | | |_ | _|_ | _ _ _ _ _ _| _| _ _|_ |_ _ _| |_ _|_ _ _ _ _| | |_ _ _ _ |_ _|_ _ |_|_ | | _| | _|_|_ _ _ _| |_ _ _| |_ |_ |_| | _| _| |_ _ _ _ _|_|_ |_ _ | | _ _| _ _ _ |_ _ _| | _|_ _| |_ | _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ |_| |_| | _ _| _ _ _| +|_ _|_ _| | |_ _| |_ _|_| |_ |_ _ |_ |_ _ | _| _ _| _|_ _ |_| _ |_ |_| | | |_ _ | _| |_ _| | _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ _| | | |_ _|_ _|_ | |_ _ _ | _ _ _ _ | |_ _ _ _| | | |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| | |_ | _ _ _| | | |_| | _| | _ _| _ _| _ _| | _ | _| _|_ _ _|_ |_ _| | _ _| |_ _| _ _| _ _ _ _| _| |_ _ |_ | | |_ | |_| | _ _|_ _| | |_ |_ _| |_ | |_| _ _| | |_ |_| _ _ | |_ _ _| | | _ _ | | _|_ | _|_|_ | |_ _ _ _ _ | |_ _| _| |_ _|_ _ _| | |_ _ _ _|_ _ _ | |_ _| _| _ _|_ _ _| _|_ _| | | | _| | |_ |_ _ | _ _| | _ _ _ _| _ _| | | |_ | _|_|_ | | | _ _| _| _ _| | | |_| _| |_ _| | | | |_ _ | _ _| _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | _| | | |_ _|_ |_ _| | _| | |_ _ _ _|_ _ _|_ _| |_ _ _| | | _| | | | |_ _| | |_ _ _| | | | | |_ _| |_ |_| | |_ _ |_ _ _ _ _| _ |_ | _|_ | _|_|_ | | | _ _| _ | _|_| | _ |_| | | _ |_ | | |_ _ | _| |_ _|_ | | _| |_ _| | |_ | | _|_ _ _ _| _| _ | | _ | |_ | | _|_ _| |_ |_ _ | _ |_ _|_ | | _| |_|_ | |_ _ _ _ _|_|_ _ _| _ | _| _ _ _ _ | |_ _| | _ _|_ | | |_ _ | | _|_|_ | | | _ _| _ | _| | |_| | |_ _ _ _ _|_ _ _| | |_ _| | | _ _| | |_| | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | | _| |_ _ | |_ _|_ | | _| |_ _ _ _ _ |_ _| _ _ | |_| _ |_ |_ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _|_ | | |_ | _| _| _| |_ _ _ _ _|_ _ _| | |_ _|_ _ |_|_ _ | |_ _ |_ _ _ | _ | _| |_ _ _ _ _| _ | | _ _ | |_ _| | | _ |_ |_ _ |_ _ | | |_ _ _ _|_| | _ _ _| | _| _| _ _|_ _ _| |_ _ _| | | |_ _ _ _ |_ |_ | | | | | _ _|_ _ |_ _ | | | _| _ |_ |_| |_ | _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ | | | |_ |_ _| _ | +|_ _| _ _ _| | _| _ |_ |_ _| | _| |_ _ |_ | _ _ | _| _| _ _|_ | |_ _| |_| | _| | | _ | _| | _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ |_ |_| |_ _| | | _ _|_ _ _ _ |_ _ | | _| |_ _ | _ _| | | | _ | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _| | _|_ _ | | | | |_ | |_ _| | _ |_ _ |_ | _| | |_ _| | _| _ _ _ _ _| | |_ _ _ _| _ _| |_ | _ _ _| | | | | | _| | |_| _|_ | _|_ _ | _|_ _|_ | _| _| | _ _| _| _| _| _| | _| |_ _ | _|_| |_ | |_ _| | |_ _| _ _ |_ |_ _ | _ _| | |_| _ _ |_ _ _ _ | _|_ _ _| | _ | |_ | _ _| | _| _ | _ _| _|_|_ _|_ | |_|_ | | _ _|_| |_ _| | _ | _ _| | _ _|_ _ _ _ _| |_ _|_ _ _ _ _| _ | | |_ | | |_ _ _ |_ _| |_|_ | _| | |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ _ _| |_ _|_ _ _ _ _| _ _| |_|_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _|_ _ _| | | | |_ _| _| _ _ _| | |_ _| |_ | _| _| _| |_ |_ _ | | _ _ _ _|_ | | |_ _ _|_ _ _ _|_ _ _| | | _ _| | |_ | | _| | |_ |_ _ _ | |_ _ _| |_ | _ _| | |_ |_ _ | _ _ |_ _| | |_ _ _ |_ _ _| | | _ _| | |_|_ |_ |_| _ |_ |_| _ _| | | |_ _ | | |_ |_ _ | _ _ _ | | | | | |_ _| _ | | _| |_ _ | |_ _| | _ _| |_ _| _ _| |_ _ _ _ _| |_ _| _| _| | _| | _| | _ _ _| _ _ |_ _ | _ _| | | | _ |_ | |_ |_ _ | _|_|_ | | | _ _| _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | | _| | | |_ _ _| | |_ |_ _ | _ _ _ | _| | _| |_| _| _ _|_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| | | | | |_ | |_ _ _ _| _ _|_ _ | | |_ _ | _|_ _ |_ _ |_ _| | | | |_ | _ _ _ _ _ _|_ _ _| _ _ _|_ | _|_ _ _|_ _ _ _ | _ _| |_ _ _| _ _ |_ _ | _ _| | | _ _| | _ _ _ | | | |_ |_ _ |_ _ _ _|_ _ _| _| |_| | _| |_ _ |_ _| |_ _| _| _ _|_ | | |_ _ _ | _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _ _ _| | | | | |_ | _| | +| |_ _ | _| |_| _| _ _|_ | | _|_ _ _|_ | | | | |_ |_ _| _| |_ _ _ _ _|_ | | _ _| _ _| | |_ _|_ | | | _| _ | | | _| |_ _ _ _| _ _| _ | _ _| |_ | _ _|_ _|_ _|_ _ _ | | _| _| | |_ _ _|_ | | | |_ |_|_ |_| | _| | | |_ _|_ | _|_ _ _ | | |_|_ _ |_ _ | _| | _| |_ | |_ _ _ _|_| |_ | _| |_ |_ _ _ | |_ _| | _ _| _|_ _ |_ | | |_|_ _|_ _ | | | | |_| | | _ _| _| | _|_ _ _ _|_ _| _ _ _ _ _ _| _| |_ _| | |_ _| _| _| _|_ _ _|_ | | _ |_ _ |_ _ _ _ |_ | _| | _| _| _ _|_ | | |_ _| _|_ _ _ _ _ _ _| | _ _ _|_ _|_ | | | _|_ | _|_ | | |_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | | | | _| |_ _ _ _ _ _| _ _ _ _ | | _|_ _| |_ |_ _| _| _ _| | | _ _| | _ _|_ |_| _| | | |_ | _|_|_ | | | _ _|_ _ _ _ _| | _ | | | _ _ | | | |_ _ _ _ | _ _|_ _ | | |_ _ _| |_ | _| _ _ | | |_|_ |_ | | _| | _ _ _| | _ |_ _ _| _| _ |_ | | | |_ _ | | |_|_ _ _ | _ _| | _ _ _| | | | _| | | _|_ _|_ |_ _ _ _| | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _| |_ _ _ _| _ _ _| |_ | _|_ _ |_ |_| _| _ _|_ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ |_ _ _ _| _ _| | _ |_ _ _ _ |_| | _| _|_ _| |_ |_ | _ _ _| | | |_| |_ | | | | | _| _|_ _ _ _| _|_|_ _ _ _ _| |_ _| _ _| _ _| | | | | _ _|_ | | |_ _ | |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | | | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| | |_ _ | _| |_ _ _ _ _| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | |_ _|_ | _|_ |_ |_ _ |_ |_ _ | | _|_ _ | |_ _ _ _ _ _|_ | _| | |_ |_ | _| _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | | _ _ _| _| | |_| |_ | | |_ | _|_ _ _ | |_| | |_| _| _| |_ _ |_ | |_| | _|_ _ _| _ _| |_ | | | _| |_ _ _ _ _|_| |_ _ _|_ _| | |_ _ | _|_|_ | | | _ _| _ |_ _ | |_ |_ _ _ |_ _|_ | |_ _| _| | +| |_ _ _ _| _| | _| |_ _ _ _ _| |_ _ _ | |_| |_ _| | _ _ _ _| _ _ _ _ _ _ _ _ _| _| |_ _ _ _| _ _ _ _| | |_ _| | | | | |_ _|_ |_| | | _ _ | | |_ _| |_ _ | _ _|_ _ |_ _ _ |_ | | |_ _ | |_ _ _ _ _| | | | _| | _ _| _|_ _ _| |_ _|_ _ _ _ _|_ | |_ |_ _|_ _|_ _ |_ _| | |_ _| _|_ _|_ _ _ |_ _ _ _ _| _ _|_ _ _ _|_ _ |_| _ _ _|_ | | |_ _ _ _ _ _|_|_ _|_ _ |_ _ _| | | | | |_ _ _ _|_| |_ _ |_ | | _ _ |_ _ _| _ _ |_ _ | _ _| | _ _ _| | _ _ _ _ | | | | |_ _ |_ | _ | | | | |_ _ _| _|_ _| | _| |_ |_ _ | _ _ _ _ | |_ _ _ _| | |_| |_ _| |_ _ |_ _| _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _| | |_ _ _ _ | _ _| _ _| | _| | _| _ |_ |_ |_ _ | _ _| | | | _ _|_ _| |_ | | _| | | |_ _ _ _ _| |_ _|_ _ _ |_ _ | |_ |_ _| | |_ _|_ | |_ _|_ _|_ _ |_ _ _| |_ _ _ _ | |_ _| _| _ _|_ _ _| | _| | _ _|_ _| |_ _| |_ _| | _ _ _| |_ |_| _ _ _| _| | | | | |_| |_| _ _| |_ _|_| _ _ |_|_ | _ _| | |_ _| |_ | | |_ _ _| _ _ |_ _ | _ _| | |_ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _ | |_| _ | |_ |_ _ |_ _ _ | _| |_ _ _ _ _| _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ | _|_|_ | | | _ _| _ | | | |_ _ _ _ | | | | |_ _ | |_ _ _| | |_ | |_ _| _ |_ |_ | |_ _ | _|_|_ _|_ | | _| |_ _| |_| _|_ | |_ _ _ _ _ |_ _ _ _ _ _| _| _ _ _| |_| _| | _ _| |_ _| _ _| |_ | | | _|_|_ | | | _ _|_ _ _| | | _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _| | |_ | _ | | | _| |_ _ | | _| _ |_ _ _ _| _ _| _ _|_ _| _ | |_ _ _|_ _ _ |_ _ _|_ | |_| |_ | _ _| |_ _ _| _ _ _ | | | |_ _ _ |_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _ | | |_ _|_ | | _| |_ _ |_ _ | _| |_ _ _|_ _ _| _| _|_ _ |_ | | _|_ _ _| | | | | | _ _| _|_ | |_ _ | _ _ _ _| |_| _ _ _| _| _|_ _ _ _ _| |_ _| _ _| |_ | | | | | _ _ _| _ _ _|_ | |_ _| +|_ | _| _| _| |_ _ _ _ | _ _ |_ _|_ _ | _ _| | _ _ | | _ _ _ _ | |_ _| _| |_ _ _ _ _ _ _ _ _|_ _ _ _|_ _|_ _ _ _ _ _ _| |_ _ _| |_ _|_ _ |_ _ | | |_ _ _ _|_ _ _| | _| | |_ _ _ _| | | | | | | | | |_ _| | | |_ _ | | _ _ | _ _ _ _| _| | | _ _ |_ _ | _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | |_ _ |_|_ |_ _ _ _ | | _ _ |_ _ | | _|_|_ _|_ _ | _ _|_ | _ _|_ _|_ _ _ _| | _ _ _| | | |_| |_ | | | |_ _| | |_ _ |_ |_ | |_ | _|_ | | | |_ _| | | _ _ _| _ | |_ _| _ | |_ _|_ _ | | _| |_ _ | | _ |_ _|_| _| |_ | | |_ _ |_ _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _|_ _|_ _| |_| _ _ _| | | _ _| | |_ _ |_| _| _ _|_ | | | |_| |_ | |_ _|_ | _ _ _|_ _ _| | | _| | |_ | _ _ _ _ _ _ _| | _ _ _| |_ | _ _|_ _| |_ _ _ _ | |_ _ | _| _ _| |_ | _ _| | _ |_ _| |_ _ _ _| |_ _ _ _ _ _| _ |_| _ |_ |_ |_ _ | |_ | | | | |_| | | _| | | _ _ _|_ | | |_| |_ | |_ |_ | |_ _| | | _ _ _| | | |_| |_ | | | | _ _ | |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _ _ |_| _| |_ |_ | |_ _ |_ | |_ | _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ _ _ _ _| |_ _| _ _| _|_ _| | | | _ _|_ _| |_ _|_ _ |_|_ |_ _ | | | | |_ _| _| _ _|_ | | | _| | | _ _ | | |_ |_ _ | _ _ _ | |_ _|_ _ | | | | _ _ | |_ |_| _ |_ |_ _ |_ _ _ _| _ _| _| |_ | |_| | |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _ _|_ | _| | | |_ _|_ _ _|_ |_ _|_ | | _ _ _ _ | | |_ _| | _ _ _ _|_ _| |_ _ _ | _ _ _ _ _ |_ |_ | | | | | _ _ _|_ _| |_ _ _|_ _| |_ _ | | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ |_ _| | | |_ _ | | |_ |_ _ | _ _| |_ _ | _ | _ _ _| | _ | | _| |_| _ _ |_| | |_ _| | |_ | | _| |_ | |_ | _ _ _ _|_ |_ _ | | _ _ _ _ _| | _ _| | _ _ _|_| |_ | | _| _| _ _ _ _| |_ _ | +| _| |_ |_ _ _ |_| _ _ _| | | |_ _ _ _ _| | | |_|_ _ | | |_ _ | | _| |_ _ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ _ _ | _ _ |_ _ | _|_ _ _| | | _ _ _|_ | | | _ _| |_| |_ _| |_| | |_| |_ _|_ _|_ _ _ |_| |_ _|_ | |_ _ _ _ _ _| _| |_ _| | _ _| | | |_ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ |_ _ | | _ _ _| | |_ _| _ _| _ _| | |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ |_ | |_ _|_ | | _| |_ _| | _ _| _ _ _| _|_ _| |_ _| _ _| | | |_ _ | |_ _ _ _ _ _| _ _| |_ _| |_ | |_ _| | |_ _ _| | |_| | _| _ _ _| _ _|_ _| |_ | |_ | | | _| | | |_ _|_ |_|_ | _ | | |_|_ | _ |_ |_| _ _| _| | | |_ _| | _ _| _| |_ _ _ _ _| |_ _|_ | | _| |_ _ |_ _| _ _ _ | _| | | | _|_ _| | | | | _ | |_ _| _ |_ |_| | _ _ _ _| | |_ _ | _| |_ _ | | | _|_| | | _|_ | _|_| _|_ _ | _ | | |_ _ _ _ | _|_ _| _| _ _|_ | _ _| | |_ | |_|_ | | |_|_ _ | |_|_ _ | _ |_ _|_ | | _| |_ _ _ |_ _ _ _| |_ _ | _| |_ _|_ | | _| |_ _| | |_ _ _ | | _| | |_ _ _ _| _ _| _ _| _ _ _ |_| _ _| |_ _|_ | | _|_ | |_ | _|_ | |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| | _|_ _ _ |_ _ _ _ _ _ _| | _ _ _| |_| _|_ _ _ _ | |_ _ | _ | | | |_| |_ | _| |_ _ _ _ _| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _|_ | |_ _| | | |_ _| | _| |_ _| _| _ _|_ | _| _ _| | |_ _ | _|_ _ |_ _ | _ | _ _ _ _ |_ _ _|_| |_ | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ | |_ _ _| _| | _| |_ _ _ _ | |_|_ _ _ _| | | |_ _ _|_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _|_| | | _ _| | | _|_| | |_ _|_ _ | _ | _| _ | _ _| | _ _| | |_ _ | | | | _|_|_ | | | _ _| | |_ | | _| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | | | _|_ _ | | | |_ | | | | _ _ _ _ | | _ _| |_ | | | | |_ _ _| _| | | _|_ _ _| |_ | |_|_ _| _ _ _ _ _| | | | _ _| | _| _ |_ |_ _| | _| |_ _ _ _| | | +| |_|_ _ _| |_ _ | _ _ _ _|_ |_ _ _ _ _ _ |_ _|_ _ _ _ _|_ _ _ | | _ _ _| | | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_ _| _ _ | | |_ _ _ _ _| | |_ _ _ _ _ _ |_ _|_ _ _ _|_ _ _ _|_ | |_ |_| | _ _ _ | | _ _ _ _ _ | |_ _ _ _ | |_ _ | _ _|_ | _ _| | _| _|_ | | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _| _ _|_ | _ _| | _ _| | | _ _| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_ _ | | |_ |_ _ | _|_ _| | _| _ |_ |_| _|_ _|_|_ |_ _ _| _ _ |_ _ | _ _| | _ _ | |_ | | _|_ _ | | | | _|_ |_ _ | | _ | | _| _| |_ _|_ _ _| |_ _|_ _ _ _ _| _|_ _|_ _|_ _|_ _ |_|_ | _ _|_ | | _ _| _|_ _|_ _ |_ _ | | |_ _ _ | |_ | | | |_ |_ _ | _ _ _ | | | | | | | | |_| _ _ |_ _| |_ _ _| _ _| _| _ _|_ | _|_ | _|_ _ | |_ _ _| | | |_ | _ _|_ |_ _| |_ _ |_ _ |_ |_ _|_ _|_ _| | | | |_ _ | _| |_ _ _ _ _|_ | _|_|_ _ _| _ | _|_ _ _ _|_ _ _ _ _ _|_ | | | |_ |_ _ | _ _ | |_ _| | |_ _ _| | |_ |_ _ | _|_ | |_ _|_ | _| _ | | | |_ _ _| _|_ _ _| |_ _ _ _|_ |_| _ |_| _|_ _ _| | _| | | |_ _|_ | | _ |_ | | |_ _ | |_ _ _| |_ | | | | |_| _ |_ |_ _ _ |_| | | | | _ _| |_ _| | |_ _| _| | |_ _| _ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ _ | _|_|_ | |_ _ _| _| _| |_ _ _ _ _|_ | |_ _ |_ _|_ _ |_|_ | _ _| | |_ |_| |_ _ _| | _| _ |_ |_| | _| | | |_ _|_ | |_ _ _ | | | |_ _| |_ _ _ _| _| _| | _ _ _ | _| |_ _ |_ _ | _|_ _|_ _ _ | _|_ _ | _|_ _ _| |_ |_ _ _ _| |_ _ _ _ _| _|_ _|_ _ | _ _ _|_ _|_ _ _| _| |_ | |_ _ _ _| _ |_ _|_ |_ _ _ _ _| |_ _|_ _|_ _|_ | | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ _| | | |_ |_| _ _|_| _ _ |_|_ | _ _| | |_ | |_ _ _ _| _| _| |_ _| _| _ _|_ _ _| |_| _ _ _|_ | | _| |_ _ _ _| |_| _| _ _|_ |_ | |_ _|_ | | | _ _|_ | +| | | _ _ _ _|_ |_ |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| |_ _| | | | _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ _ _ _|_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _| _|_ | _| _ _| |_ _| | | _ _| _ | | _| |_ _ |_| | _ _| |_ | | | |_ _ |_ _| | | | | | _|_|_ | | | _ _| | | |_| | |_| | | |_ | |_ |_| _| | |_|_ |_ | | |_|_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _ _| |_|_ | | _ _|_| |_ _| | _| _| _ _|_ | | |_ _ _ _ | _ _ _| | | |_| |_ | | |_ _ | |_ _ | | _ _|_ | | | | |_ _| _| | | | | |_ _| |_ |_ | | | _ | | _ _ | _ _|_| _ _ _ _ _ _ |_ _ | |_ _ _ _ _| |_ _ _ _ _ _ _ _ _| _ | | |_ | | _ _| | | _| | |_|_ | | _ _|_| |_ _| |_ _|_ _| |_| _ _| | _ _|_ _ _ |_ _| _| |_ _ _ _ _|_ _ | | |_ _ |_ _ _ _ | | | | | _| |_ _ |_ |_ | | _|_ _ |_ |_ _ _ _ | | |_ _| |_|_ | | |_ | _ _| _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | |_|_ | | _ _|_| |_ _|_ _ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _| _ _ _ _|_ _| |_ _| |_ _|_ _ |_ _ _| | _ _ _ _|_ |_ | |_| _|_ _| _|_ _ | | _|_ _ _| |_ _|_ _ _ _ _| _| | |_ | |_ _|_ _ |_|_ _ _ _|_ |_ _|_ _| | |_ _| _| _ _|_ | |_| _| |_ _ _| | _ _| _ _| | |_ _ _| |_ | _ _ _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | |_ _ _ _ _| |_ _ _|_ | |_ _ | | _ _|_| _ _ _ _ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ | |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_ _ _ _ _| |_ | |_ _ |_ _|_ _ _|_ | | | _| |_ _ | _| | |_|_ _ | |_ _| _| _ _|_ _ _| _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_ _ | | | | |_ _| _ _ _ | | _| | _ _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _ _| _|_ _ _|_ |_| _ _ _|_ | | |_| |_ | | _| |_ | _ _ _| _| |_ | _ _| | | _ _ _ |_ _ |_ _|_ | | |_ _ _ _ | | _| |_ _ _ _ _| _|_ | _ _| _| | | | | +|_| |_ _ _| |_ | | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ | | | _| |_ |_| | | _|_|_ | | | _ _| |_ _ | | | _| |_ _| | |_ |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _| | _ | _| _ _| | |_ _ | | _|_ _ _| | | _| _ _ _| | | _|_| _ |_ _ | | | _ _|_ _ _ _ _| |_ _| _|_ _| |_ | | _ _| | |_ _ _| |_ _|_ _ _ |_ _|_ _ | | | | |_ _ | | | |_ | | _|_|_ | | | _ _|_ _ | | | | |_ _|_ _ |_ | _ _|_ | | |_ _ | | | _| |_ _ _ _ _| _| | _ _ | |_ _ | |_|_ _|_ | | _| |_ _ |_|_ |_ _| |_ _ _ |_ _|_| |_ |_ | | _|_|_ _ _| _ _|_ _ _ _|_ _| | | | |_ _| _| |_ _|_ _ _ _ _ _ | | _ _| _ _| |_ _ _ | _ _ _ _ _| _ | |_ _| | _| _| | | |_ _|_ | |_ | _ _|_ | | |_ _ |_ |_| _ |_ |_ | _| _| _ | |_ _ | |_ _ _ _ _ _ | _|_ _ |_ _ |_ _ _| | | | | | | _| _ _| _| |_ _|_ _ _ |_ | _ |_ |_ |_ _| | | _ _| | |_ | | |_ _ _ _|_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ _|_ | | |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ _ _ _ | | | _ _| |_ |_ _ | | |_ _ _| |_ | |_| |_ _ | _ _ _| _ | | |_ _ _ _| | _ _ | | | | | | _ _|_ _ | |_ _ | _ _| |_ | _| _|_ | _| |_ _ _ _ _| |_ | | |_ _ _ |_|_ |_ _ |_ _ _|_ | _| _|_ _| _ _|_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| _ _| | |_ _ _ _|_ _| _ _|_ |_| | | | |_ _ | _| _ _|_ _ _| |_ | | | | | | |_ _ _| |_ | | _| |_ _ _ _ _| _ | | | _ _ | _| _ _| |_ _ _ _ _ _ |_ _ |_ _ | | _|_ _ | | _ | _ | | | |_ | _ _| | | _|_ _ |_ | |_ | _ _| | _ _ _ |_ |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | |_ _ |_ _|_ | _ _| _ _| | |_ _| _| |_| _ |_ |_ |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _|_ _ _ |_ _ _ | |_ |_ _ | _ |_ _|_ | | _| |_ _ _ | |_ _ | _| _ | |_ | _|_| |_ _ _| _| | _| _| | |_ _ | _| | |_ _ _| | _ _ | |_ | | | _|_ | | | +| _| _| _ _|_ _ _| | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| _ _| | |_ | | _| _|_ _|_|_ _ _ _ _| |_ _| _ _|_ | | _| | _| |_ _ _ _|_ _| _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ |_ _ |_ |_| _|_ | |_ | | _| | | |_| _ _ _ _| | | |_ |_ _ _| | | |_ |_| |_ _| |_ | _ _ _ | _ | | | | _ _ _ _| |_ _ | | | |_ _ _ | |_ _ _ _ _| |_ _| | | | | |_ _| | | |_ _ _ _ _| |_ _|_ _ _ _| |_| | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| | | |_ _ _| _|_ | | |_ _|_ _| | |_ _ _| | |_ |_ _ | _ _ | _ _| | _| _ |_ |_ |_ _|_ _ _ | | | _ _ _ _ | |_ _ | _| _ |_ _ _ _ | |_ _ _| | | | _ _| _ _ _ _| |_ _| _| |_ _|_ _ _|_| _| | |_ _|_ _ _ _ _|_ |_ _| | _ _| |_ _| _ _| _| _| _ _|_ |_| | _| _| |_ _|_ _ | |_ |_| _| _ _ _|_| | _|_ |_ | _ _| |_| |_ _|_ | | _ _| _ |_ _ | _| | _|_ |_ _ | _ _| | | | | |_| _| _|_ _ | |_ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| | _ _| |_ _| _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ | _ _|_| | |_ _ |_ _ _ | | |_ _| _| _ _|_ _ _|_ | | _| |_ _ | |_ _ _| | _|_ _ |_ _| | |_ _|_ _ _| | |_ _ _ _|_ _ _| | | _ _|_ _ _| |_ _ _ | |_ _ | | |_ _| _ _| _ _ _ _| |_ _ _ |_|_ _| _| _ | _ | _| | | |_ _|_ | _| |_ _ | | |_|_ | |_ | | _ _|_| _ _ |_ _|_ _| _| _| |_ _ _| | | |_ _ _ _ _| _ _| | | | | | | | _ _| _| | | | |_ _ _ | _ _| | | |_ _| | |_ _ _ _ _|_ |_| _ _ _ |_ _ _| | _| | |_| | _ _|_ _|_ _| _| | | |_ |_ _|_ _ _ _|_ _ |_ _ _ _| | _|_ | _|_ | |_ _|_ |_ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_ _ | | | _ _| | _|_ _ _| _| _| _ _|_ | |_ | | |_ _|_ | _ _ | _ | | |_ _| | | _| | |_ _|_ _ | _| | |_| | | |_ |_ _ | _|_ _| |_ _ _|_ _|_ _ _| _ | _ _| _ |_| _| | _| _|_ _ | |_|_ _ |_ | | _ _| | | _ _|_ | |_ |_ _ |_|_ | +| | _ _| | _| | _| |_ | | |_ _| _|_|_ | | | _ _| _| _ | | | | _ _| _|_ |_ _|_ | _ _ _ _ _ _ _ _ _ | _ _ | _|_ _| |_| _|_| _ _ |_ _ | _ _| | | | | | _|_|_ | | | _ _| _ _ _ _ | | | |_ _ |_ |_ _ | _ | | _| | | | _|_| | _| _ _| | | | _ _| | |_ _|_ |_ _ _|_ _| |_ _| |_ _ |_ _| |_ _| | |_ _| _ |_ |_ _| |_| | | | _ |_ _|_ _ | _ _ _| | |_ _|_ | |_ _|_ _ _ | | _ | | | | _ _ _| |_ |_ _|_ _ | | |_ _ _ _| _ _| _ _|_|_ | _| _|_ | | | |_| _ _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _| _| _| _ _|_ | | _ _ |_ _|_ |_ _ | | _| |_ _ |_|_ _ _|_ | | _| |_ _ | | _|_| _|_ | | | _ _ _ _|_ |_| _|_ _| _| _ _ _| | _| | _ _ | _| _ |_ _ _ _| _ _| _| _| |_ _ _ _ _| _|_| _|_ _ _ _| _| _| _|_ _| |_ _ _ _| |_ _ _ _ _| | | |_ _ _ | _ _|_ _ _ _ _|_ | _| |_ | _|_| | | |_| |_ | |_ _| |_ _| _|_ _ _ | _|_ | |_ _|_ | _|_ | _|_|_ | | | _ _|_ _ |_| | |_ | _ _|_ _ _ _| _ _| | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _ _ |_|_ _ | _| | _ _| | _ _| |_ | _ _| | | _ _ |_ _| | _| _| | |_| _ _ _|_ _ |_ _ | | |_ _ _ _ | _|_ _ _| |_ | | _ _|_| | _| _ _ _|_ _ _| |_ |_| _| | |_ _|_ _ |_ _ _| _ _ _ _|_ |_ _ | | _ _ _| _| | _| | | |_ _ _| |_ _|_ _ _ _ _| | _| | | |_ _|_ _ |_ _ _ | |_| _ _ _| | | _ _ _| _| | |_ _ _| _|_| | _ _ _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _|_ | | | _ _| _|_|_ _ _ _ | |_ _ |_ _ |_ | _ _| | _|_ _ _|_ |_| |_| | _|_ _| |_ | | _ _ _ _ | |_ _ |_ | |_ _| |_ _ |_ _| _ _ _ _ _ _| |_ | _| | _|_|_ | | | _ _| _ _ _| | | | _|_ | | |_ _ |_| |_| | | |_ _ | |_ _| | _| |_ _ _ _ _| | |_ _|_ _ _ _ _|_ _ |_ _ _| |_ _|_ _ |_|_ | | | _|_ | _ _|_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | _ _ _ _ | |_ _| |_ _ |_ |_| _ _ _|_ _ _ _ _| _| | _ _ _| _| | | |_ _|_ _ | | |_ _ _|_ _ |_| +| |_ | _|_ _| |_ _ _| | |_ _| | |_ _ _ _ _| |_ _| | _ _| _| | | | | |_|_ |_ _ _ _|_| |_ | _| _| _ _| | _| |_| _ |_ |_ _ _|_ | | |_| |_ | |_ | |_ _|_ _ _ _ _| |_ _| _ _ _ _| _ | |_ _ _| | | | | _| | | | |_ | | | |_ _ _ |_ _ _| | _ _| |_| |_| _ _|_ _| |_ _ | _ |_ |_ _ _ _| |_ | | _ _|_ |_| _| _ _|_ | _| _| |_ _ _|_ _ _ _ _ _| | _|_ _| _ |_ _| _| _ _ |_ _|_ _| |_ _| |_ _| |_| _ |_ |_ _ _ |_ _| | | _ _ | | | |_ _ | _|_ _ _| _ _| | | |_|_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | _| _| |_ _ _ _ _| |_ _| _ _ _ | _| _| | |_ _ _|_ | | _ | | _ _|_ |_ _ _|_ | | |_ _ |_ _ | | _|_ _ _| |_ | | |_| | _| |_ _ | _|_ _ _|_ _| _| |_|_ _ _ _| _ _ _ | | |_|_ | | | _ _ _ | _ _| _ |_ |_ _ _| _| _ | _ _| | | _ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| | _ _|_ _ _| | _|_ | | _| |_ _ _ _ _| _ | | | | | | | | | |_ _ _|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | _|_ _ _ _ _ | | |_ _| _| | | |_ _|_ | |_ _| _ _ | | |_ _ | |_ _ _| | | _| |_ | _| | | _|_ | _| |_ _| | _ _| | | _|_ _ _ _ _ | |_ _ _ |_ _|_ _ _ _ _ _ _| _ _ _| _ _| |_ |_ _| | _ _ _| | | _ _| _| _|_ _|_ _ _ | |_ _ |_ |_ _ _| |_ | | | |_ _ | | | _| | _| |_ _ | | _ _ |_ |_| | | | |_ _ _ |_ |_ _ | _|_ |_ _ | | | |_ _| _ _ _| | _|_ _ |_ _|_ _ _ |_| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _|_ _ |_ _|_|_ | _ _|_ _ _ _ _ | _| |_ _ |_ _ _ _| |_ |_ |_ _ _ | |_ _ _|_ _ _| | | _ |_ |_ | _ | | _| |_ _ |_ | _| |_ | | _|_ _ |_ _ _ _ | _ _|_ _ _|_ | |_ _ _ _ _| |_ _| _| | | | _ _| |_ | _ _| |_ _| _ _| | _|_ _|_ _ |_ _| | _ | |_ _ _ _ _|_ _|_ | | _ _ | _ _ _| | _ _ _ | _|_ _ | | |_ _| | _| |_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ | | _| |_ _ | |_ _ |_ | | | | _ _ |_ |_ _ _ _| _| | _| |_ _ | | |_| |_| _ _ _ _ |_ | +| _| |_ _ |_ _| _| _ _ _|_ |_ _| _ | | | _ _| |_ _| _|_ _| |_| _|_ _ |_|_ _| _ _ _ _|_ |_| |_ _| | | _| | | _| _| _ _|_ |_ | | |_ _|_ | | _| |_ _| _ _ _ _| _ _ _ _ _ _ _| _|_ _| |_ | _ _| | |_ | _|_ _|_ | | |_| _ _ _ _ _| | | | |_ |_ | | _ _ _ _|_ |_ | | | | |_ _ | | _ _| | | |_ | _| _| |_ _ _ _ _|_ | _ _ _| _ _ |_ _ | _ _| | | _ _ _| |_ | _| _ _ |_ | | _ _ |_ | _| _| _ _|_ | | |_ _| _|_|_ | |_ |_ _|_ _ |_|_ _ | _ | | | _| |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| |_ | |_ _ _ | _| |_ | | |_ _|_ | | _| _ _| _| |_ | |_| | | |_ _ _ _ | | | | _|_ _ |_| |_ _| _| _ _|_ _ _| _|_ |_ |_ _| | | _ _| | |_ _ _ _ | _| _ | |_ _|_ _ |_ _ |_ _|_ _| |_| _ _ _ _|_ | | _ _ _| | | | | _| | |_ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | | | | | |_ |_ _ | _ _ _ _| | |_ _ _|_|_ _ _|_ |_ _|_ _ _ _ _ _ _ _ _ _ _| _| _ _ _| |_ _ _ | | | |_ _|_ _ |_ _ _| |_ _|_ _ _ _ _| _ _ _| _ _|_ _|_ _ |_ _| _ _| _| |_ _ _| |_ _ _|_ |_ _| |_ |_| _ _| |_| | _ _ _|_|_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| |_ _ _| _ _| | | _| _|_ | _ _| |_ _ _| _|_ _ | _ _ |_ | | |_ _| _| _ _|_ _ _| _|_ _| | | |_ |_| |_ |_ |_|_ _| _| | _|_ | | | | |_ | | _ _| |_ | |_ _| | _|_ _ |_ _ | | |_ _|_ _ | | | _| _ _|_ _|_ |_ _|_ _ _ |_ _ | _ _|_| _| _ _ _| _ _ |_| | _ |_ | _ _|_ _ _| | | _ | | _ | | _ _ _ _|_ _|_ _ | | _ _| _| _ _|_ | |_ _| | |_ _ _|_ | | _| |_ _ |_ _|_ _ _ |_ | | _ _| | | | _ _| | _ | _ _ | _ _ _| |_ _ _| |_ |_ _ _ _| _ _| _ _| |_ | | _ |_ _ | | | _|_ | _ | | _ _ | _| _| _ _|_ _ | _| | | _| _ _| |_| | _ _| | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | |_ _ _| _| |_|_ | _ _|_ | |_ _|_ _| |_ | | _ _ _|_ | | | | _| |_ |_ |_ | | | _ | | | +| | | |_ _ |_ |_ _ | _ _ | _| _ _|_ _| | | | | _| _ |_ |_ | |_ _ | | |_ _ _| |_ | | |_|_ |_ _ _| | _| |_ _ _ _ _| | | |_ _ | | | |_ |_ _ | _ _ | | _| _ _ _ _ | |_| _ |_ |_| |_ |_ | |_ _ _ _ _ _|_ |_ _| _ _ _ |_ _|_ _|_ _ _ _ _| |_ _ _| |_ |_ _| _ _|_ _ | | _|_| | |_|_ _|_ | |_ _ | _ _|_| _ _ _| | | |_| |_ | | |_ _ | _| _| _ _| | | _| |_ _| | _| _| | _| |_ _ _ _ _| _| | |_ _ _ _ _|_ | | _ |_ _ | | |_ |_ _|_ _| _ _ _ _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| | |_ | | | _| | _| |_ _|_ _ _ _ _| | |_ _ | _|_ | | _|_ _ _| | |_ _ _ _| | | | |_ _ _|_ |_ | _ _| | | _ _ _ _| |_ |_ |_| | _|_ _|_ _ _| | |_ _ _ _ _ _|_ _ _|_ _ _ | |_ _ | | _ _ _ _|_ |_ _ _| | |_|_ _ | | _| | | | | | | | |_ _| | | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ |_| |_ | |_|_ | | _ _|_| |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ _| _ |_ |_ |_ _| | | |_ |_ |_ _ | | _ _ | | _| | |_ _ _ _ _ |_ _ |_ _ | _ _| | _|_ _ _ _| _| |_ | | |_ _ |_ | | _| _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _| | | |_ |_ _ _ | | | | _ _ _| _| | | |_ _ | | |_|_ | _ _| | | _ _ _ _| | _|_ _ _|_ | | |_ _|_ _ _ _ _ _ _|_ _ _ _| | | | _| | | |_| _ _|_ _ _| | _|_ _ _ _| _| | | |_ |_ _ | |_| |_ _| |_ _| _ _ _ |_|_ _ _ _| |_ | | | _ _ _| _| _ _ _| | | _|_ |_ _|_ | _ _ _|_| |_ | |_| | _| |_ | _ _ _ _ _ |_ |_ _| |_ |_ _ _ _ _| | _ _| _ _ _ _ _| | | | | _ | _ _ | _| | _ _| _|_| _| |_ _ | | | | _| | | |_ _ _| _| _ |_ |_ | | | | |_ _ |_| _| _| | _ _| | | | _| _|_ _| |_| |_ | |_ |_ _|_ _ _ _ | | | _| |_|_ |_| | _ _| |_ _ _ _| |_ _| |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | _ _| _ _ _ _ _ _ _ _ |_ _| | |_ _ | _ _| | | |_| |_ _ | | | _| | _| _| | | | _|_|_ |_ | | +| |_ _|_| | |_ | _| |_ _ | |_ |_ _| | | |_| | | | |_| _| _ _|_ | | |_ _ _| |_ _| _| _ _|_ _ _| | |_ _ |_ |_| _ _| |_ _ _ | | | |_ |_ _| |_|_ | | _ _|_| |_|_ | |_ _ | | _| |_| _| _ _|_ | | | _| _|_| |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _|_ _ |_ _ _| _ _ |_ _| | _ _| | | _ _| | |_ |_| | | |_|_ _ _ _ _ _ |_ | |_ _|_ | | _| |_ _ | | | |_ _| _ _| | |_ |_ | _| | _| | |_ _ _ _| _| |_ _| |_ _ _ _ _| |_| | _ _ _| | |_ | | _ _ _| | _ _ _| _| | | |_ _|_ | |_ _ _ _ | | |_|_ |_ _| _| |_ _ _ _|_ _ _| | | _ _ _ | | | |_ _ _ _|_ _ _|_ | _ _ _| | | _ _ _ _| |_ | _| _ _ | |_ | _|_ _ _ | _ _|_ _ _| _| _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ | | |_ _ _| |_ | _ |_ _|_| _| | _| _|_| |_| | | |_ _|_ _ |_ _| |_ _ | _|_|_ | | | _ _| |_ _ _| | | | |_ _| |_ _ _| _|_ | _ _|_ | | |_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| _| _ _|_ | | _|_|_ |_ |_|_ | |_|_ _|_ | |_|_ _ _ _|_ _ _| | |_ _ _| | _ _| | _ _| | _ | _ _ _ _ | |_ _ _| |_ _ | |_ _ | _ _| _ _|_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ | _|_ |_ |_ _ |_| | |_|_ _ _ | _| | | _| |_ |_ _| |_ | _|_ | _|_| | | | _ _| |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ _ _| |_ _| |_ |_ | _ _ _|_|_ _ _ | |_| | _|_|_ _ _ _ _| _|_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | |_| |_ _ | _ |_ _ | |_| | |_ _| | | _ _| | | | | | _|_ _ _|_ |_ |_ _ _| _ _ |_ _ | _ _| | | |_ _ _ _ _ _ _| _ _ _ _ _ _ _ _|_ _ _|_ _ _| _|_ _| | _|_| | _ |_ |_ _| | _| |_ |_ | |_ _ | _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ _ |_ _ _| | _ |_ _|_| _| _ _ | _| _| |_ _ _ _ | |_ _ _|_ | _ _ _| _|_ | _|_| _ _ _ _ | | _| | | |_ _|_ | |_ _ _ _ | | |_ _ _ _| | _ _ _| _ _ |_ _ | _ _| |_| | | |_ | | | | | _| | | |_| |_ _ _|_ |_ _ | |_| |_| | _| _| | +|_ _ _ |_ _ _| | | | _| | | _|_ _ _| | _| _| | | | _| |_ _ _ _ _| | _ _ |_ | _ _| | _ _| _ _| _ _| |_ |_ _ |_ | |_ _ _ _| | |_ | |_ _ |_ | _ _|_ | | |_ _ | |_ _| | |_ _ | _| |_ _ _ _ _|_| | | _| _ |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | | _ _| _ _ _|_ | | |_| |_ | | _| | _| _| _| _| |_ _ _ _ | |_ _ | |_ _ _| | |_ |_ _ | _ _| |_| | |_ | |_ _| | _| | _| |_ _| |_ | |_ _ _| _|_ _ | _|_ | | _| _| _| | | _ _| | |_| |_ _ | _|_ _ _ |_ _ _| |_ _|_ _ _ _ _|_ | |_ _ |_|_ _|_ _ |_|_ | _|_ _ _ _ _ _ | _| |_ _|_ _ _ _|_ _|_ _ _ _ | | _ |_ | _| | _| _ |_ |_ | _|_ _ _|_ _ _|_ _ |_ _ | | _ | _|_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| |_| _| _ _|_ _ _| |_| _ _ _| | _|_ _|_ _ _ _ _| | |_ _ _ |_ |_ _ |_|_ _ _ _ _| |_ _| _|_ _ _ | | | | | | |_ _ | | | |_ _| | _ _| |_ _| _ _| |_ |_| | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _| |_ _ _ _ _|_| |_ _ _ _ _| | | _ _| |_ _ _ | |_ _ _ _ | |_ _| _| |_ | | _ _| _ | | | _| | _|_ _| _ _ |_ _ | _ _| | | _|_ _ | | | _ _| | _ | _|_ | _|_|_ | | | _ _| _ | _|_| |_ _| | | | _| _| |_|_ _ _ _| |_ | | | _| | | _ |_ | _| |_ _| |_ _ |_ _ |_| | | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ |_ |_ | | |_ _ _ | _|_ _|_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | |_ | | _| |_ | _ _| | | | _| | _| | _|_ _ _ _|_ _| | |_ _ _|_ _ _ _ _ | _| _ _ _|_ | | |_| |_ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| |_ _| |_ _| | _|_ _| |_ _ |_|_ | | | | _| |_ _ _ _ _| _|_ _ |_ |_ _ | |_ _ _ _ |_ |_| _ _ _|_ | _| | | | | |_| _ | _| |_ _ | | |_ | |_ _ | | _ _ _| _ |_ | |_|_ _ _| |_ _|_ _ _ _ _|_ | |_ _ |_|_ _|_ _ |_ _ _| _ _ _|_ | | |_| |_ | | _|_ | | _| | |_ |_ _| _|_|_ _ _ | | _|_ _ |_ _ _ _ _|_ _|_ _| _| +|_ _| |_| _ _|_|_ _ _ _| _|_| |_ _ | |_ _ _| _ _| | |_ _ |_ | |_| | | _|_ | _|_ |_ _ _| _ _| _ _ _ _| _| _| | _ _ | _| _| _ _| |_ _| | _ _| |_ _| _ _|_ | | _|_ | _| |_ | _ _ _ _|_ _ _|_ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_| | |_ _ | _|_ _|_ | | _| |_ _ | |_ _| _| _| _| _| _| |_ _ | | | | |_|_ | | _ _|_| |_ _ _| | | _| | _ _| | _|_ |_ | _| _| | _ _ _| _ | |_ _ |_ _| |_ |_ _ _| | | |_ | |_|_ | _| |_ _ | |_ _ | | _ _ | | _| |_ |_ _ _ _ |_ _ | _|_ |_| | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | | _|_|_ |_ _| _| _ _|_ | |_ | _ _ _ _ | |_ _ |_| |_| _|_| |_ |_ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| _ _| | _ | _ _|_ | | | _ _|_ _ _ | |_ _| | | | |_ | _ _| | | _ _ | _ _ | |_ |_ _ _ _| |_| | |_ _| _ _| |_ _|_ _ | |_ _ _ _| _ _| _|_ |_ | |_ _|_ | _|_|_ | | | _ _| _ |_ | | | |_ | | _ _ _ |_ | |_ _| |_ | |_ |_ _ _ | | _| |_ _ | |_ _ _|_|_ | _| |_ _| | | | | _ _ _| | | |_| |_ | | _ _| _ _|_| | | |_ _| _| |_ _|_ _ _ _ _| |_ _| | | _|_ _ | | _| _ _|_ _ _|_ _ _|_ | _ _ _ _|_ |_ | |_ |_| |_ | | _|_ _ _|_ |_ | | |_ _ |_| _|_| | | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| _ _|_ | | |_ _ _|_ _| |_| | _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _ _|_| |_ _ _ _| _ _ _ _ _ _ _ _| _| | _ _ _ _ | |_|_ |_ _ | _ _|_ _|_ | | _| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | | | |_| _|_ _ _ _| | | _ _| |_ | |_ _ _| |_ | | | _|_ _ _| | _ _ _| _| |_ |_ _ | _| | _| | | | |_ _ _| |_ _ _| _| | |_ _| | | |_ _ _ | | | _ _ _| |_ | |_ _ | | | _ _ | | _| |_ |_ _ _ | |_ _ |_ |_ _ | _ _|_ _|_ | | _| |_ _ |_| |_ | |_ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ | +| _ _|_ _|_ _| _ _ |_ _ | _ _| | _| | |_ _ _| | |_ |_| _|_ | |_ _ _| | |_ _| |_ _ |_ _ | | | |_ _ _ _ _|_| _|_ | | _ _|_| _| | | _ _| | | |_ _ _ _| _ _| | | | | | _|_ |_ | | |_ _ _|_ | |_| _ _ _ _|_ |_ |_| |_ | _|_|_ | | | _ _| _ |_| | | |_ _ _| | | _| | |_ _ _| | |_ |_ _ | |_ _ _|_ | | _ _|_ |_ _ _| | | |_|_ _| |_ | _ _|_ | | |_ _ | _| |_ | |_ | _|_ |_ _ _ _| _| _|_ _ | | |_ _ | |_ _ |_ _ _ _ | | |_ | | |_ _ | | |_ _ _ _ _ _|_ _ | | |_|_ _|_ | |_ _|_ _ _ _ _| _| | _ _ _ _ _| | | _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| |_|_ | _ | | _| |_ _ _ _ _| | _|_ _ | | _| |_ _ |_ | |_ _ _ _ _| | _|_ |_ _ |_ | _|_|_ | | | _ _|_ _ |_| | | |_ _ |_ | _|_ |_ _ _| | _| | | _ _ |_ _|_ _ _|_ _|_ _|_ _|_| | |_ _|_ _ |_ _|_ _ |_|_ |_ |_| _ |_ |_ | _ _| _ _ _ _ | |_ _ _ _ | | |_ _ |_ |_ _|_ | |_ _ _ _ _| |_ _| | | _| _| | |_| |_ | | | |_| |_ _ | | | _| | _ _| | |_ _ | | | _ _|_ _ _| | _| |_| | _| | _ _ _| |_| | |_|_ _ | | | |_ _|_ | | _| |_ _| _| | _|_ _|_ _ |_ _ _ | | _ |_ | _ _ _ _| |_ _ _ _| |_ |_ | _ _ _ _ | |_ _ _ _| |_ | |_ _|_ _ | _| |_ _ _ _ _ _ _|_ _ _|_ _ |_ | _ |_ _ _| | | |_ _| | _|_|_ | | | _ _| _ | _ _| | _| |_ _ _ _ _| |_ |_ _| _ _ _| _|_ _ |_ _ _| |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _ | | _| |_ _ | _| | _ _ _| | |_ |_ _ | _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ |_| | | |_|_ | _ _ _ _| _ _| | | | _ | _|_ | _ _ _| |_ _ _|_ | |_ _ | _ _| | _ | _ _ |_ _| | |_ |_ _ _| |_ _| | | _|_| _ | | |_ |_ _ _ _|_ _ _ _| |_|_ _ _ _| _|_ _ _ |_ _|_ _| | |_ _|_ _ _ _ _|_ _ | | _| _ _| | _| _| | _ | | | |_ |_ _ | _ _ | |_ _ _ _ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | +| _ | _| _ _ _| | | |_| |_ | | | |_ _ |_ _ _| _| _| _|_ | | _| |_ _ |_ | | |_ _ |_ |_ _|_ _ |_ _| _ _ _| |_ _| | _ _ _| | |_ | | |_ _| | _ | | |_ _| | _| | |_ _ _ _| _| |_ _ | |_ _|_ _ _ _ _| |_ | _ _| |_ _ _ _ _| |_ _| _ _| | | | | | |_ _ _ _|_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _| | | _| _ _ |_ _| | |_ _ | | |_ _| | _ _| |_ _| _ _| |_ | |_ |_ _ _ _ _|_ | _ _ _|_ _ _ _| | _|_ _ |_ _ | |_ | _| | | | | _| |_ _ | | |_ _ _| _ _ | |_ _| _ _ | |_ _ _ _ | |_ _| _|_ _ _ _| _ _| _|_ _ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _ _| | | | | |_ | _ _ _ _ _|_ _ _| | |_ _ _|_ | | _| |_ |_| | | |_ _ _ _ _| | _|_ _ _ _ _| |_ _|_ _ _ _|_ _ | |_ | | _| |_ |_ _ _| _ _| |_ _ |_ _|_ _ |_ _| _ _ _| _ _ |_ _ | _ _| | _ _ | _| |_ |_ _ _ _| _| _| _ _|_ | | | |_|_ _ _ |_|_ _ _ _ | |_ _|_ _ |_ _ | _ _ | |_ _ _| | _ _ _ _| | |_ |_ _| | _| _| |_ | _ _ _| | | | |_ _ | _ _| |_ _ _| | |_| _| _ |_ _| | | _| _ _|_ _|_ _| _ |_ | |_ _ _| | _|_ _ | | |_ |_ _ | _ _| |_ |_ _ |_ _ | | _| | | _| _| |_ | _ _| _| _ |_ |_ | |_ _ | | _| |_ _ | | _ _|_ _ _|_ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| | | |_ _ | _| |_ _ _ _|_ _ _ _ _ _| |_ _| | | _|_ _ | | | |_ _ |_ | _| |_ _ _ _ _| |_ |_ _ _| |_ | _ | _|_|_ | | | _ _| _ _ |_ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | |_ _ _| | |_| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | _|_|_ | | | _ _| _ _ _| | | | |_ _| |_ _ _| |_ _ _ _|_ | | | | | |_ _| | _| _| _| |_ _ | | |_ _ |_ | _|_ | _ _ _|_ _| |_ | | _|_ _|_ _ |_ _ _|_ |_ _ _ _ _|_ _|_ _ _ | _ _ _ _ | |_ _ _| | | |_ _ | _| _ _ _ _| |_ _ _ _ | |_ _ | | | | | _ _|_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ | |_ _ _ | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | +| _| |_ |_ _ | _|_|_ _|_ | | _| |_|_ | _ _|_ _ _ _| _| _|_ _| |_ | |_ _ | | |_ _| | |_ |_ | | _ | |_ _ |_ _ | _|_ _ | |_ _ | _| |_ | | | | _ _| |_ _| |_ _|_ _ |_ _| _| _ _ _| _|_ | | _| |_ _ | _ | | _ _|_ _ _| | _ _| _ _| _ _ | |_ | _| _ _|_| |_| _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ |_ _ |_ _ | | | _|_ _|_ _ | |_ _ _ _| _ _| | _|_ _ _ _ _| | |_ _ _ _ _|_ _ | _ _ _| _|_ _ _ |_ _ |_ | | |_|_ _ _| |_ _ _| |_ _ _| |_ | _ _| | _| |_ _ | |_ _ | | | | _| |_ _ | | | _ |_ | | | _ _ _ _|_ |_| _ | _|_|_ | | | _ _| _ _ |_| | | _|_ _ | _|_ _ |_ | |_ | _ _ _ _ | | _| | _ _ _| | | |_ | | _|_ | | _| _ _| _ |_ _ _| _ _ _ _| _|_ | _ _ _| |_ | |_ _ _ _|_ _ _ | |_ | | | | _ _ |_ _ _ _| _ _ _| _| | |_| |_ | | |_ |_ _ _ _|_ _ _ | _ _ | _| |_ _ _ _ _| |_ _|_ _ |_ _ | | _ _| _| |_ _ |_ _ | | | _ _|_ _ | |_ _| | | _| |_ _ | _ _ _| _|_ | _| | | _ |_ _ _| |_| | _|_ _ _ _ _|_ |_| _| _|_ | _| | |_ _| _ _ _ |_| _| _ _|_ | |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _| _| | |_ _| _| | |_ _ |_ | | | |_| _| _ _|_ | | | _| | |_ _ _| _| |_| | _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ _ _ _ _ _ _| | _ _ _ _| _ | | |_ _ _ _| |_ _|_ | _|_ _ _|_ _ _|_ | _ _ _ _|_ |_ _ _|_ _ | | | |_ _ _ _ _| |_ _| _ _ | |_ | | | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _|_ | _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ _ _ _| |_ _| | | |_ _ | | | | | | |_ _ | _| _ _ | |_ _| | | | |_| | | |_ _ _| _| |_ _ _ |_ _|_ _ |_| _|_ _ | | | | _ _ _ _|_ |_| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| _ | | _| |_ _ | _ _| |_ _| | | _| |_ | _ _ | | _| |_ _ | | | |_ _| |_ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_| |_ | _| | | | _ | _|_|_ | | | _ _| _ _ _ _| | +| | _| |_ _| | | _ _| | |_ |_ _ | |_ _ | _ _ _| | _ |_ |_ |_ _ _ _|_ | _ _ |_ _| _|_ _| | |_ _ | _ _| | _ _ |_ _ _| |_ _|_ _ _| | _| | _|_ _ _ _ | | |_ _ |_ | | _ _ _| _| |_ _ _| | |_ | |_| | _ _| _ _| | | _| _ _| _ _| | | | | _| _ |_ |_ |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| | _ _| | _ _ _| |_ | _ _ |_ _| |_ | | | |_ _| _ _ _ _ _| |_ | _ _ _ _| | |_ _ _ |_ _ _ |_ _ _ _| | | | | | | _ _| | _|_| | | | | | |_ _ _|_ | |_| _ _|_ _|_ _| |_ _ _| | |_ _|_ _ _|_ | | | |_ _ _| |_ | | | |_ _ _ _ _| |_ _|_ _| |_ _ | | | | _|_ _ | _| _| | |_ _ | | _| | |_ _ | |_ _ _ _| | |_ _| | | | | _| |_ |_| _ _ _ _|_ _ _ _ |_ _ | _| _ |_ |_ _ _| _ _ | |_ _ _ | |_|_ _ _| |_ |_ _ |_ _ | _ |_ _|_ | | _| |_ _ _ | _ _ |_ _ _| _ | | |_ | _ _ | | _ _ |_ _ | |_ _| | |_ _ _|_ _ _ | | |_ _|_| _ _ |_|_ | _ _| | | | |_ _ _| | _ _ _| _|_ |_ |_ |_| _ _ _| | _|_ |_ | | _| _| |_ _ |_ _| _|_ _ _ _ _ _ _| | _| |_ _ _ _ _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_ |_| |_ _ | | | |_ _ _ | | | |_ _| | _| |_ _ _ _ _| _| | |_ _ _ _ _ | | |_ _ _ | _|_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| _ _ |_ _ | _ _| | | | | | _| |_ |_| _ |_ |_ _| | _ _ _ _ | |_ _ _ _| |_ | _ _ _ |_| |_| | | _ _| _ _ | _| _| | _ _ _| |_| _| | _ _| |_ _| _ _| |_ _| | _|_|_ | | | _ _|_ _ _| | | _| | _ _| |_ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ | _ | _ _|_ _ _| _ _|_| |_| | |_ _| _ _| | _ _ |_ _| _ _ _| |_ | |_| _| _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | | | | | _ _| | | | _| _| |_ | _| |_ _ _| | | _|_ _ |_ | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _| | | | _| | |_ _| |_ _ _ _ _| |_ _| _ _| | | _ _ _| +| | |_ _ _| _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ _ | |_ |_ | | _| | _ | |_ _ _| | _| _|_ | |_ | |_ | _|_ _ _|_ |_| _ _ _ _ _ _|_ _ _|_ _ _ _| _| |_ _ _| | _|_|_ _ | | | | | _ _|_| | _|_ _|_ _ |_ | _|_ _ | |_ | | | |_|_ _| |_| _| _ _|_ | _| |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | | | |_ |_| |_| _ |_ |_ _ _|_ _ |_ | _| |_ _|_ _ |_ _ | | | _ _| |_ _ | | | _|_ _ _ _| _ _| _ _ _ | _|_ _ _|_ _|_ _ _ | |_ | _ _| | | _| |_| | |_| _ | | | _| _ _ | _| | _| | | _ _ _ _ | | |_ _| _| _ _|_ _ _|_ _| |_ _ _ |_ _ _| _| |_ _ _| |_| |_ _ | _ _|_| _|_ _| | | _| | |_ _ | | |_ _|_| _ _ |_|_ | _ _| | | |_|_ _ _| | |_ | | _ _ _ _ | |_ _ _| |_| _| _ _|_ | _ _| | _| |_ _ | _|_ _ | _ _| |_ _ _ _ _| | | | | | | |_ |_ _ | _|_ |_ _ _ |_ _| | |_ | | | | |_ | |_| _ _ _| | | |_ _|_ _ _ |_ | _|_| | _ _ _| | | |_| |_ | | |_| |_ _ _ _ _|_ _ | | | | _ _| | | |_ |_ _ | | | |_ _|_ _ _| _|_ | |_ _ _ |_ _ | | _ _ _ _ | |_ _ _ _ _ _ _ _ _|_ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _|_ |_ _ | |_ | | | _ _| | _| | |_ |_ | _|_ | | | | | _| _|_| | _|_ _ |_ _ |_ | _|_|_ | | | _ _| _ _ | | | | _ _ _| | | |_| |_ | | _| | |_ _| | _| _| _| _ _|_ | | |_ _ | | _| |_ _ | | _ _|_ _ _| |_ | _| _| _| | | _ _| | |_ _ | |_| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ | | _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | _| | _ |_ _ | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _|_ _| | | |_ | _ _ _| _ |_ |_ | _ _| _ |_ | | | _ _| _ |_ | |_ |_ _|_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _|_| |_ | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | _|_ _ | | | | _| | | | _| | _|_ _ _| _| | | | | _|_| | | | _ _|_ _| | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ _| | | | |_ |_ | _ _ _ _| _ _ _|_ | _|_ _ | | +| | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_ |_ | |_ _ _ _| | | | |_ _ _ _ _| | _| |_ _| _| | | | _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _ _ _| | | _ _|_ _ _| | _| | |_ _ _|_ _ _ | | _ _| | | | |_ _ |_ _| | |_ _| |_ _ _ | | _| |_ _ _ _ _|_| | _| | | |_ _|_ | |_ _ _ _ _ | | | |_ _| | |_ _|_ | |_| _| _ _|_ | | | _ _| _|_ |_ _ _ |_ _ | |_| |_ _ _| _ _ | _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_| |_ | | |_| _| _| _ _| _|_ | | | | | _| |_ |_|_ _ _| | | _ | | _| |_ | _ _| | | _| _ _|_ _ _| _| | | _ _| _| _ |_ |_ |_ _| _ _ _| _ _ _| | | _| _ _| |_ _| | _ _ _|_ | | |_| |_ | | |_ | _ |_ _ |_ _|_ _ | | _| |_ _ | _| _| |_ _ _ _ _| |_ |_ _ _| | |_ | _ _|_| |_|_ | _ | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | | | _ |_| _| | _|_ |_|_ | | _| _ _| | |_ _ |_ _ |_ _ | | _ _|_ _ | |_|_ _|_ | | _| |_ _ _ |_ _ _ _| | | | |_ _ _ _|_ | |_ _| | | | | _| | _ _| | |_ | _ | |_ _|_ _ | | _| |_ _ | | | _ _ _ _ | |_ _| _ _ | _|_ |_ _ _ _| _ _| _| |_ _ _ _ _ _ _| | _| |_| _| _ _ _| _| |_ |_| |_ _ |_ _ _ | |_| |_ _| |_ | | _ _| |_ |_ |_ _ |_ _|_ _ _ _ _| |_ _|_ _ _ _ _| | | | | |_ _ | | | |_ _|_ | | _| |_ _| _| |_ _| _| _| |_ _ _ _ _| | | | _| | |_ _ _| _| |_| | _ _| | _| | |_ _ _| | |_ _ _| _| |_ _ _ _| |_| _| _ _|_ | |_ _ _ _ | | |_ _ | _| |_ |_ _ _ | | _ _ _ _ |_ _ _|_| |_| _| | |_ _ |_| | _| | | |_ _|_ | |_ _ _ _ | | | |_ _ | | | _| |_ | |_ |_ _| _| _ _|_ | | | |_ _| |_ _ _|_ _ _| _| _ _|_ | |_ _ _ _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | _ _ _ _ _ |_ _ _| _ _ | _|_|_ | | | _ _| _ _ | | | | | _ _| |_| | | | _| | | | | | _ _ _ _| _| | |_| |_ |_| | | _|_ | _ _|_| _| | | |_ _|_ | | |_ | _ | | |_|_ _ | |_ _ _| | _| _|_ _ _ | _| _ _|_| |_ _ _ _| | | +|_|_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _|_ _ | | | |_ _| |_ _ _ | |_|_ _ _| | _ _| _ _|_|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _|_ | _ _| | _|_ _| |_ _ _| _ _ |_ _| | _ _| | | _|_ _ |_ _ _ | |_ _ _|_ |_ _ | | |_ | _ | _|_|_ _ _| |_ _|_ _ _ _ _|_ _| _ _ _ |_ _| |_| _ _|_ | _ _| | _| |_ _ _ _ _| _|_ |_| _| _ _ _| | |_ _ _| |_ _ _| _ |_ | _| | _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | _| |_ _ _ _ _| _| | |_ _ _| |_| |_ _| |_ _ |_ _ _ _ _| |_ | | |_ _ _ | |_ | _|_ |_ _ _| | _| | _ _ _| |_|_ | _| _| _ _|_ | |_ _ |_ _ |_ | _ |_ | | _| _ _| _ |_ _ | _ |_ _|_ | | _| |_ _| | | |_ _ _ _| _ _| | |_ _ _|_ | |_ | |_ _ _ |_ _| | _| _ _ _| | | _|_ | | |_ _ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _ _|_ _| _| _ _| _ _| _ _ |_ _|_ | _|_| | | _ |_ _ | | |_ _ _ _ | | |_| _ | | |_ |_ _ | _ _ _| _| | _|_ _|_ _ | _ _ _ _ _| | _ _|_ _ _|_ _|_ | | _| _| _|_ | |_| | _| | |_ _ _| _| | _|_ _ | | _| |_ _ | |_ _|_ | _|_ _ _ _ | | |_ _ | _| |_| | | _|_ |_ _| _| |_ |_| _| | |_| _ | |_ _ _ _ _|_ | | | |_ | | |_ |_ |_ |_| _ _ _ _ | | _ | _|_ _| |_ _| | _| | | | |_ |_ _ | _ _| |_ |_ | |_ _ _ _| _| |_ | |_ _ _ _ _ | | |_ _| _ _| | _ _ _| _ _| | _ _ _| |_ _ _ | | _| |_ _ _ _ _|_ _ _ | |_ _|_ _ |_|_ | _ _| | | | |_| |_ _ _| | _| _ |_ |_ |_ |_ |_ _ _|_ _ _| |_ _|_ _ _ _ _|_ _ |_ | | |_ _|_ _ |_ _| | | | | | |_ _|_ | _| |_ _ _ _ _| |_ _|_ _ |_ _ _ _ | _| |_ _ _ _ _| | _ _ _| _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _|_ _ | _ _| _ _ _| | |_ _ _ _ _| |_ _| _ _| | _|_| | | | |_|_ |_ _ _ _| |_| |_ _| |_| | | | | | _ _| |_ _ _| _| _| | |_| _ _| |_| _ |_ _ _| |_ _|_ _ _ _ _| | | |_ _| _|_ _|_ _ |_ _|_ _| _ _ _| | _| _ | _| _|_ | | |_ _ | _| _| | +| _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ _ _ | |_|_ _|_ | | _ _ _ _ |_ _|_ _ | | | | _ _ _| | _| | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_| | | | | | |_|_ _ _ | | _ _ _| | | |_| |_ | | |_| _ _ _ _| |_ _| | |_ _ |_ |_ | |_ _| _| |_ _ _ _ _| | _ _ | | _ _ _|_ _ _ _ _ _|_ |_ _ _ _ _ _| |_ | |_ _ | | _|_ | |_ _ _ _| _| |_ | _ | _ _ _| |_ | |_| _| | | |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ |_ _ | _ _ | _| |_| _ |_ |_ |_ | | | _ _| _ |_ |_| |_ _ _ _ _|_ _ _|_ _ |_ _ | _| _ _| |_ _ |_ _ _ _| | _| |_ _ _ _ _|_ | | _ _| | _| | |_ _ _| | | _| _ _| _| _| | |_ _ _| | |_ |_ _ | _ _ |_ _ _| _| _| _| | | |_ |_| _ _| | _ _|_ _ _ _ _| | | | _ _| |_ _| _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _| _ _ _| | _| | _ _| |_| | _|_ _ _ _| |_| |_ _ _ _| |_| _ _| | _| | _| | | |_|_ | | _ _|_| |_ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _| _ _ _ _|_ _ _| |_| | |_ _ _ _ | |_ | _| | |_ _ _| | | |_ _ _ _ _| | _ _ _ |_|_ _|_ _ |_ _| _| _ _|_ _|_| | _ _| _ _| |_ _ _| _| |_| |_ _ _ _| | | | | _ _| _| | _| |_ _ _ | |_ | | _ _| _ _| _| _| |_ | |_| _ |_ |_ _|_ | |_ | |_|_ | | _ _|_| |_ _ _| |_ | |_ _ _ |_ _ _| _| | | | | _| _|_| | |_ | |_| _ | |_ _ _ _|_ | _| _ |_ _| | |_ | _ _ _ _ _|_ _| | | |_ _ | |_| _ _| | |_ | _| | _ |_| _| _ _|_ | |_ _ |_ | _ | | | _ _ | | _ _ _| _| _ _ _ _ _| _ | | | |_ _|_ | _ _ | |_ | _ _ | | _ _ |_ _ |_ _| | |_ _ _ _ _ _|_ _ _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _| |_ _ _|_ _ | |_|_ | _| _ _ _| _ _| _ _ _| |_| | |_ _ _ |_ |_ _ _ _ _| |_| |_ _| | _ _|_| _ |_| _| _|_ |_ | _| _| _ _ _ | | _ _ | _ _ _ _|_ _ |_ | _ _ |_ _ | |_ _ | _ _| _ | _| _| _ _| |_ _| _ _|_ |_ _ | +| | | _| | | |_ _|_ | | | _| _| | |_ _| _ |_ _|_ _ | | | |_ | _| _| _ _ |_ _| | | _ _| _ _|_ _| _|_ _ _ _ | | _|_|_ | | | _ _|_ _ _ | | | |_ _ _ _|_| | |_ _|_ _ _ _|_ |_ _ | _|_|_ _|_ | | _| |_ _ | _| |_ _ _ _|_ _|_ _ |_ |_| _| _ | | _|_ |_ _ |_ _| | |_ _ _|_ | _ _ _ _ | |_ _ | _ _ _ _|_ |_ _|_ | _| |_| | | |_ | _ _ _| |_ _ |_ | |_ _ _ _| _| | _| _|_ _ _ | _| |_ | _|_|_ | | | _ _| _ | | | | | |_|_ | | _ _|_| |_ _| _| _| _ _|_ |_| | _|_ _| _| _| _ _|_ | | | _ _ _ _ | |_ _ |_|_ | |_ |_ _ | | _ |_| | |_ _ | _ |_ |_ | _|_ _ _ _| _ _ _|_ _ | | |_ _ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _| |_ | | |_| _| |_| | |_| _| _| _|_ _| _ | _ _ _|_| |_| _ _ _| _ _| | _|_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ _ |_ _ | | | _| |_ | _| _ _|_ _|_ _ _ _ _ _| _ _ |_ _ | _ _| | |_ _ _ _ | |_ | _ _|_ | | |_ _ |_ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _ _| | | _|_ _ | | | | | | | | | | | _| _ _ | | | | |_ | _ _ _ _ _ _|_ _ _| |_ _ | |_ _| _ _ _ _ _| | | | _ _| | _ _ _| _|_ _ _ | _ |_ _| |_ _| |_ | _| | |_ |_ _ | | |_ |_| | | _ _| _|_ | _|_ | _| _| _ _|_ | |_ _ _|_ |_|_ | _ _|_ | | |_ _ |_| _| _|_ | _|_ _ _|_ | |_| |_ _| |_ | | _ _| | _ _|_ _| |_ _ _ | | | | _ _| | _| _|_ | | | |_ _ |_ _| _ _ _|_ _| | _ _| |_ | |_ | | | _|_ _ _| |_ | | _| |_ _ _ _ _|_ _ |_ _| | | | | |_ _| _ _ _|_ _|_ _ _ _ _| _ | |_ _| | |_ _| _ |_ _| | _|_ |_ _| | |_| |_| _ _ _| | _ _| |_ | _ _ _ _|_ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ | _ _| | | | _ _| |_ _ _ _| _ | | _ _| _ |_ |_ _|_ _ | | _ _|_ | | _| | _ _| _| | _ _ _| | | _| |_ _|_ | | | _| |_ _ |_ _|_ _| | |_ _ _ _ _ _ | |_ _| | _ _| | |_ _ _ _| | _ _ | | | _| |_ _ _ _| _ _| _ _ _| | _| +| | |_|_ _ _| |_ _|_ _ _ _ _| | |_ _ _|_ |_ _|_ _ |_ _| |_| _ _ |_ _| |_| | | | | _| _ _ _|_ | _ _|_| | | _ _ |_ _ _ _| |_ |_ _ _ _ _| |_ _|_ _ |_ |_ | | | _| | _|_ | _ |_ _ |_ _| | | _ | | |_ |_ _ | _|_| _|_| _ _ |_ _ | _ _ _| _| | _| | | |_ |_ _ |_ _ _ | |_ _ _ _ | |_ _ | | _| |_ _ | |_ _ _| |_ | | _| | | _|_| | |_ | |_ | | | _| | | _ _| | | |_ _ | |_ _ |_ _ | | | | _|_ _ _ _ _| |_ _| _| |_ | |_| | | |_ | _ _|_ | | |_ _ | | _| |_ _ _ _ _| _|_ | _ _| _| |_ _ _ _ _|_ _| |_ _ | | _| |_ _ |_ | _|_ _ _ _| _| |_ | | |_ |_|_ | |_ _| | | _|_ _ _ | |_ _ _ _ | |_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | | |_|_ |_ |_ _ _ _| _|_ _ | _ | | _| | _| _ |_ |_ |_ | | |_ _ _ | _| | | |_ _|_ | | |_ _ | | | |_|_ _ | _ _| | | | | |_ _| | |_ _| _ _ _ |_| |_| _ _ _| _| | |_| |_ | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| _| | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _| _| |_ _|_ _ _ | | |_| |_ _| |_| | |_ _ | | _ _ |_ _| | |_ | | | | _ _ _ _ | |_ _ _| _ _| | _ _ _| | | _| |_ _| | | |_ _ | | | | |_| |_ _ _ _ _| _ _ | |_ _ _|_ | _| |_ _ | | _| | | |_ _ _|_| _ _| | _| |_ _ _ _ _|_ _ | |_ _ |_ _| | _ _| |_ _| _ _| _| _| | |_ _ |_ _ _ _|_ _ _ _ _|_ | | | |_ | | | _ |_| _|_ | _ _| |_ |_ _| | |_| _ _| _| | |_ _ |_ _ |_ _ | _ | | | _ _| | | _| | | | _ _| _| | | | |_ | | _ _ _| _| _| | |_ | _ _| _ _ _ _ | |_ _| _| |_ _| _ _ _| _ _ _ _|_ | | _ _| _| _ _|_ | _| _| | | _ _| | | _| _|_| _ | |_|_ _ _ _ | _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _|_ |_ _|_ | _|_| | | |_ _ _ _ |_ _| | | _| _| _ _|_ | | _| |_ _ _ _ _|_ | _| |_ _ _ _|_| _|_ _ _ _| | _ _ _|_ _ _ _ _| | |_ | |_ _ _ _ _| |_ _ _ _ | |_ _| | _ _|_ | _ _|_ |_ | |_| | | |_| |_ _ _ | | | |_ _ _ | |_ | +|_|_ _ | | | _ _ | _| _|_ _ _ |_ _ _ _ |_ _ | | _|_ | | _ _ | | |_ |_ _ _| _ _ |_ _ | _ _| | _| | | |_| _ _| | |_ _ _ | _ _ _ | _ _|_ _|_ _| |_ | _| | | _ _| _|_ | |_ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _|_ | | |_ _| _ _ _| | _| _| |_ | |_| |_| | _|_ _ _ | _| _| | |_ _ _| | | | _| _ _|_ _ _| _|_ _| | | |_ | | | |_ | | |_ _| |_ _ | |_| _ _| |_ _| | | _ |_ _ |_| | | |_ _ | _ _ _ _ |_ _ _ _| |_ _ _| |_ |_ _| | _ _| |_ _| _ _| | |_ _ _ _ _| _ _ | | | | |_ _ _ _ | _ _ _| | |_ _ _| | | _|_ |_ _ _| | |_ _| | | | |_| _| _ _| | _ |_| |_ _ | |_ _|_ _ | | | |_ | |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _|_ _ | | | | _ _ _| _ _| | _|_ _|_ | |_| _| _ _|_ |_ | |_ _|_ _ |_ _|_ _ _| |_ _|_ _ _ _ _|_ _ _| _|_ |_ _|_ _ |_ _| | | _|_|_ _|_ |_| _|_ _ _ | _ _|_ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _ _ _|_ _ | | |_ _ _ _| _ _| | _| | _|_ _ _ _| | _|_|_ | | | _ _|_ | | | | _ _ _ _| |_ _ _ | |_ _|_ _ | _|_ | |_ |_ _| |_ _| |_ _ _| |_ | | |_| _ | | _| |_ _ | _| _ _|_ | _ _| | |_|_ |_ | _|_| | | _| | | | | | |_ _ _| _ _ _ |_| |_ _| | | _| _|_| |_ _| | _|_ _|_ _ |_ _ | | _ _| |_ _| _ _ _|_ _|_ _ | | |_ _ _ _| _ _| | _ _ _|_ |_|_ |_| _ _ _ | | | | _ _| _| | _| |_|_ |_ | | _ _| | | |_| _ _| | _ _ _| _| |_ | _ | | _ _| _|_ _|_|_ |_ | | |_ | |_ _ _| |_ _| | |_ | |_ _| |_| |_ _ _| | | | |_ _| |_ |_ _ | | _| |_ _ | | _ _ _ _| |_ | | | |_ _ _| _|_ | | _| _ _| _ _|_ | _|_ _| _|_ _| |_ _|_ _ | _ _ |_ _ |_ _ | | _|_|_ | | | _ _| _ | | | | _ _ _ _| _ _|_ _ _ |_ _|_ _ |_ _ | _ _| | | _| |_ _ _ _ _| |_ _| |_ _ | _ _ |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_ _| | | |_ _ | _| |_ _ |_| | _ _| |_ | _ _| _|_|_ _ _| |_|_ |_ | | |_ _|_ _|_ _ |_ _ _| _| +| _ _| |_ |_ _| | |_ _ _ _ _ _ _| | _ _| | _ _| | |_ _ _ |_ _| |_ _| _ _| _ _ _| | | |_| |_ | | | _| |_ _|_ | |_ | | _| _| _ |_ _ _| _ _ _| _ |_ |_| | _ _|_ _ |_| _ _| |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _ |_ _| | |_ _ | | | | | | | | | | _| _ _|_ _|_ _ _ |_ _ _| | _| | _ _ _| | | _ _| | _ _ | _| _ | |_| | |_| |_ _ _| | | |_ |_ | _|_ |_ | | _ _| |_ _| |_ | |_ _ _ _|_ _ |_| |_ _ | |_ _ _ | _| _ |_ |_ |_ |_ _ _ _| _ _| _ |_ | | _ _ | _ _| | | |_| |_ | | _| |_ _| | _| _| | _ _ |_| | | _ _| _ _ _| |_ _ | |_ _ _| _| _|_ | _|_ _| _| | |_ |_ | |_ _| |_|_ | |_| |_ _ | _|_ _ _ _ _ _ _ _ _| _ _ _| _ _| _ | | | _ _ _|_| | | |_ _ | | |_ _ | |_ _ |_ _ | | _| |_ _ _ _ _| | |_ _ _ _|_ _ _ _ | | _ _ | | _ _ | | _|_ | | |_ _ | | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | _ | | |_ |_ _ | _ _ |_ _| | | _ _ | | | |_ _ | |_ _ _ | |_| |_ _ _ _ _| |_ _| _ | |_ _| | | | _ |_ _ _ |_ _|_ _ | |_ _| _ _| _|_ | _| _| _| _ |_ |_ _|_ |_ _| | |_ _ _|_ | | |_ | _| | | | |_ _ |_ | |_ _ |_ _ | _|_ _ _|_| | _ _ _ _ _ |_ _ _|_ _ _ _|_ _| _| | | |_ _ | |_ | | _ |_ _ |_ _|_ _ |_ | |_ | | _| _ _ |_ _| | | _ _ | | | |_ _ _ |_ _| _ _ _ | _ |_ _| |_ _| |_ | _| | |_ |_ _ | |_ _|_ _ _| |_| _|_ | | | | | _ _ _|_ |_ | | | _| | _ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | |_ | | |_ _ | | |_|_ _ _ _| | _| | |_ _ _|_ | | |_| _ _ _ _|_ |_ |_| |_ _|_| _ _ _| _|_| | | _| |_| | _| | _ _ _|_ _|_ _ _ _| _ _| | | _| | | _| |_ _ _ _ _| |_ _| _| |_ | |_| | | |_ _ _ _| | _ | |_ |_ _|_ _ |_ _| _ | | |_ _ _| _ _ | |_ _ | | | _| | _|_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ | | | _| |_|_ _ _|_ _ _| | | _| _ _ _| | | | _ _ _ _ _|_ _ _| _| _|_ _ _ _ _ |_ _ _ |_ | +| | | _ | | _| |_ _ _ _ | |_ _ | _ _|_ | _ _| | _ _ _| _ _| | |_ _ |_ _ | _|_|_ _|_ | | _| |_ _| | | | | | _| |_|_ | |_ _ _|_ | | _| _| _| _ _|_ | |_ _| _ |_ | |_ | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ |_ _| _ _| | | | | | |_ _ _|_ | |_ _| _ _ _ |_| |_ _ _| _| | | _ _ _| | | | | _|_ | _|_ _ _| | |_ _ _ _|_| _| _ _ _ _| | _ _|_ _ _ _|_ _ | |_| |_ | | _| _| | _ _ _ _ | _ _ _| |_|_ _| _| _| _ _|_ |_ | _ | | | |_ _| | _|_ _ _ | | | _ _| | | _| _|_|_ _ _|_ |_ | | | _|_ | |_ _ _ _| | _ _| | |_ |_ | _ _ _| _ _ |_ _| _ _ _| |_|_ |_ | |_ _ | _| _ _|_ | | _ _|_ | _ _ _ _ | |_ _ _ | | |_ _| |_ | | |_| | | |_ _| | |_ _ | | |_ |_ _ |_ | |_ | _ _ _ _|_ _ _ |_ | | _ _| |_ _| | | |_ _|_ _ _ _|_ _ | |_ _| _ _| | | |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| |_|_ | | _ _|_| |_ _ _|_|_ | |_ |_ _|_ _ |_|_ _ _|_ _|_ _ | | _ _ _ | _| | |_| _ _|_| |_ |_ | |_ _ |_| _ _|_ |_ _ | | | _ _ _ _| |_ _| | _| _ _|_ | | | _ _| _ | | | |_| | | |_ |_|_ _ _ | |_ _| | |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| |_ _| _ _| | _| _| _ _ _| | | _ _| _| |_ _ _| |_| _| _| | | | _|_|_ | |_ |_ _|_ _ |_ _ | | _| | |_| |_ _ _ _ _| _ _ | |_ _ _|_ | _| |_|_ | _ |_ |_ | | | |_| | |_ _ | _ _|_ _| |_| | | |_ | _| _ _|_ _|_ |_ _|_ _ _ _ _ | | _ _|_| _| _| | | _|_ _| |_ _ _| |_ _ | _| | | _|_ |_ | |_ _ _ _ _| |_ | | | _ |_ _ | _|_ _ |_ _| | _| _ _|_ _|_ _ _ _ _ _| _ _ |_ _ | _ _| |_ | _| |_ _ _ |_ _ _ _ _ |_ _ _ _| |_ _ _| |_ | _| _| | |_ _|_ |_ |_ _ _| | _ _ |_| |_ |_ | _|_ |_ _|_ _ |_ _ |_ _ _ _| |_| | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_ _|_| | _ _ _ _ _| _ _ _ _| | | |_ |_ _ _ | |_| |_| _ _ | _ _ _ _| _| _|_ _ _ | | |_| _|_ _ _| +| |_ _ |_ _|_| |_| _| _| |_ _ |_| | _ _| |_ | | _| | | |_ | | |_ _ _ _| _| | _ | | | |_ |_ _ | _ _| | |_| |_ |_ _ | _ _ _ _ _ _| |_ _ | _| |_ _ _ _ _|_ _ _ _ _|_ |_ _| _|_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ |_ _ _ _| |_ |_ | _|_|_ _ _| | | _ _|_ _ _ _ _ _|_ _ _|_ | _ _ _| | _| _ _|_| |_ |_ _ |_|_ _ _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ | | _| |_|_ |_ | |_ _ | | |_| | | _ _| _ _| | _| _| |_ _ _ _ _| _|_| | | | |_ _|_ _ |_ _ _ | _ _| | |_ |_ _ _ _| _|_ _ | |_|_ |_ _| |_ _ _ _ _| _ _ |_|_ | _ _| | | _| _|_ _ | |_ | |_ _ |_ _ | _|_ | _|_ _ _|_ _ _| _ _|_ _ _ _ _|_ _ _ _ _| |_ _ | | _| |_ _ | | |_ _|_ _ |_ _ |_ _|_ _ _| |_ _ | | _|_ _ _ _| |_ _ | _|_ | |_ | _|_ |_ _ _| _ _ _ |_ _|_ | _| | | |_ | _ _ _ _ | |_ _ _ | | _ _| |_ | _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ | _ _|_ | | |_ _ |_ _ _ _ _| | | _ |_ _ | | _ | |_ _| |_ |_ | | |_ _| _ |_ |_| _|_ _|_ _ _| | _ _ _| |_ _| | | | | _|_ _ |_ _ |_ _ _ _ _| |_|_ _| | |_ _| | | | _| | |_|_ _ _| _ _ |_ _| | _ _| | |_ |_ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| _ _|_ |_ _|_ | _ _| |_ _ _| _| | |_ _ |_ | |_ | _|_ |_ _ _ _ _| | | _ |_ _ | | |_ _ | |_ _ _| _ _ _ |_| |_ _| | | _| _|_| |_|_ | _ _|_ |_| | | |_ | |_ _| | _ _ | _| _| | |_ _| | |_ _| _ _ _ |_|_ _ _ _| | _| | | | _ _ _| _| _|_ _ _ _ _| _ |_ |_| |_ _ _|_ _ _| | _ _| _ _|_| | _ | | _ _|_ _ _|_| |_| | | _| | | _ |_ _ | | |_ _| _ _ _ |_| |_| _ _ _| _| | |_| |_ | | | | | _ _ _ _ _ _ _ | | |_ _ _ | _| _ |_ |_| | |_ _| _| _ | _ _|_ _ | _ _|_ | |_ _ _| _| |_ _ _ _ | | |_ _ | | _ _ _ _|_ |_ | |_ _| _|_|_ | | | _ _| _ _ _ | | |_ _ _ | | | _ | | _| _ _| | | | _ _ _ |_ | |_ _ |_|_ | _ _ _| | | _|_ | | |_ _ _|_ | _| +| |_ _ | | |_ | |_ |_ _ _| _| | _| _ _ _| | | |_ _ _|_ | | _| | | |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ |_ | | _ _|_| |_ _ | _ | | |_ _| _ _ _ | _ _ |_ _ _ _ _ | _| | | |_ _|_ | |_ _| _ | | |_ _| _ _ _ |_ |_ | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _ _ _| _| |_| _ |_ |_ _ |_ _ |_ _|_ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ | _ _ |_ | |_| |_ |_ |_ | |_ _ _|_ | |_ |_ | _| _ _| |_ _ _ | |_ _ | _|_| | _| |_ | _ _ _| _ _| |_ _|_ _ |_ _ |_ _ | _ _ _| | | |_| |_ | | |_ _ _ _ _ _| | | _|_ | _ _| |_| _ |_ | | _ _ | | _ _ _ _ | |_ _ _|_ _| | |_ _ _|_ | | _| _ _|_ _ |_ | _ _ |_ |_ _|_ _ _ | |_ |_ _ _| _ |_| _|_ _ _ | _|_ _ _ _| |_| | _| _ _| | | | | |_ _ | | _| |_ _ | _ _|_ | _| | | |_ _ _ _|_ | _|_|_ | | | _ _| _ | _| | |_ _ | | |_ _| | _ _| |_ _| _ _| | _ _ |_| |_| | _ _ _| | _ _| | _|_ | |_ | |_ |_ _| |_ _ _| _| _ _|_ | |_ _ _| _ _ |_ _ | _ _| | _ _|_ _| |_ _ _ | |_ _ | |_ _ | | _ _| | | | _ _ | |_ |_|_ | _ _ _|_ | | |_| |_ | | | | | _ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | | | |_ _ _|_ _ _ _ |_ | _| _ _ _|_ | _ _ | |_ | |_ _ |_ _ _ _| |_| |_| | _ _ _| | |_ _ _ _| | _ _ _ _ _ |_ _ _|_ _ _ _|_ _| _| | | |_ _ | |_ _ _ _ _| _| |_ | |_ |_| _|_ _ _|_ _ _ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | |_ _ _| _ _ |_| _| _ _|_ _| _ _ _ _ | | |_ _| _ | |_ | |_| | _ _ _ _ | _| | |_| _|_ _|_ _ | |_ _|_ _ _ _ _ _|_ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _| |_ _| | | | | |_|_ _ _| _| _| _ _|_ | | _ |_ _ _| _| | _ _| |_ | _| _ _ _| _|_ | | _| _ _| | |_ _ | | |_ _ _| |_ | |_| _|_ |_ _ _ _ _| |_ _| _| |_ | _ _| | |_ _ |_ _ _|_ _| _| |_ _ _| | _ _| |_| |_| |_ _| _|_| _ | | _|_ _ | _| |_| | _ _|_ _ _ |_ |_ _|_ | +| |_ _ |_ _| |_| _|_ | _ |_ _ | | |_ | _ _ | |_ | _ _ _| |_ | |_ _|_ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _|_ | | |_ _ | | |_ |_| |_ | |_ |_ |_ _ | | |_ _ _| _ _ _ |_|_ _ _| |_ _|_ _ _ _ _| _ |_ | |_|_ _|_ _ |_ _ _|_ | | _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| _| _| _ _|_ | _| |_ | | _| _ _| | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | | _ _|_| |_ _ _| | _ _|_ | | | |_| | _ _| |_ | | _ _|_| | |_ _ _ _ _ _ _ _| _ _| | | _ _| |_ _ _ _|_ _ _ | _|_ _ _ _ _ _ _ _ _ _ _| _|_ _ | _|_|_ _|_ | | _| |_ _ _ _ | _|_ _ _ _ _| |_ _ _ _ _ _| _ _|_ _|_ _ _ _| | |_ _ | | _| |_ _ | _ _ _| _| _ _ _ | | |_ |_ |_ _ _ | | _|_ _ |_ | |_ _ _ _ _ _ _ _| _ _| | _|_ _| _| _ | | _ _ _ | _| _ _|_ _|_ | _ _| |_ _| | _| | |_ _ _| _| |_| | _| |_ |_ _ |_ | | _|_ _ _ _ _| |_ _| _ | | |_| | | _|_ _|_ _ | |_ _ _ _| _ _| _ _| | | | | _| _| | | _ _|_| | | | |_ _| _|_| _| _ _|_ | _| |_ _ _ _ _| | _ _ _|_ | | |_| |_ | | _ _ _ |_ _ | _| _ _| |_ | | | |_| |_ _| _ _| | |_| |_|_ |_ _ | |_ _ | _ _|_ _|_ | | _| |_ _| | |_ | |_ _ _ _ | _|_|_ | | | _ _|_ _ |_ | | | | |_ _|_ _ |_ _ | | _| | |_ |_ _ | _ _| | |_| |_| _| |_ _ |_| _ _| | _| _| | | _ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| |_ _| _ _|_ _ | _ | |_ _|_ _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | |_ | | _| | | | _ _ _|_ | | _| |_ _ _ _ _| _| |_ _ _ _|_ |_ _| | |_ _ _ _|_ _ |_ _| | _| | |_ |_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | _ | | |_ |_ _ | _ _ |_ _| |_| | | | _ |_ _| _| |_ _ _ _ _| |_ _| | | _| |_ _|_ _ |_ | | | _| _ _ _| _ _|_ | _| | | | _ _| |_| _| _ _|_ _ _|_ |_ | _ | _ _ | _ _| _| |_ _ _| |_ | |_ _ | _ _ _ |_ | | | | |_ |_ | |_ _ _ _| |_ | |_|_ _| _| | |_ | | | _ | _| | | | | +| _ _| |_ |_ | | _ _| |_ _ _ _ | | | |_ | |_ | _| _ |_ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _ _| |_ _| _ _| _| _| _| _| | |_ _ _| _ _|_ | _ _ _|_ _ |_ _ | | | _ _ | _| | |_ _ _|_ _ |_ |_ _ | | _ | |_ _ _ |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| |_ _ | | _| |_ _ _ _ _|_ | |_| _| | |_| | _ _| | |_ | _|_|_ | | | _ _| _ | _| | | _ _|_ | | |_ _ | _| _| | |_ | | _| | _| _| _| | | _ _ _| | | | | | | | _ _|_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| | | | | | |_ |_ _ | _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | |_ _ _| | |_ | | | _ _ | _| | | _| _| _ _| |_| _ _ _| |_ _ _| _ _ |_ _ | _ _| | | _ _ _| |_ | |_| |_ | _ | |_ _| _ _ _ |_| | |_ _ _ _| | _| | _ _ _ | | _|_ |_ _ _ _| |_ |_ | |_ _ _| _ _ _| | _| | _ _|_| |_ _| |_ _| |_ | | |_ _ | | _| | |_ _ _| | | |_ | _ _|_ |_| |_ | _| _|_ _ |_ | |_ _| _ _ _ |_ _ | _ |_ _|_ | | _| |_ _ | _ _ _| |_ | | _ _| | |_ _|_ _ _ _ | | _ _|_ _|_ _ _ _ _ _ _|_ _| |_ _ _ | | |_ |_ _ | _ _ | |_ _ _ _ _|_ _ _ _ _| |_ _| _ _ _| _| | | | _ _ _ _ _| _ | | |_ _ _ _| | | | _| | _ | | |_ _ _| _|_ _| | | |_ | | | |_ _ _| | | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| _ _ | | | | |_|_ _ _ _ _| _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _ _ | |_ _ _ _ _ _ _ _|_ _ _|_ | | _ | _ _ _| _ _ |_ _ | _ _| | |_ _| | | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| |_|_ | | _ _|_| |_ _ _|_ | | | _| |_ |_ | |_ | _| _ _ | _|_ _ |_ _ _ _ |_ _ _| |_ _|_ _ |_ |_ _ _|_ _ _|_ _| | | _ _| _ _| | _| | _ _ _ | | _| |_ _ | | | _ _| |_| _ |_ |_ _ _ | |_ _| |_ _ | |_ _|_ _|_ _ _ _ _| | _ _ _ _|_ |_| | _ _ _| | _|_|_ _ _ _| | | _|_ _ | |_ _|_ _| | +| | _ _| _| _|_ _ _ _|_ _ |_ _ _| |_| |_ |_| | | _|_| _| _ _|_ _ _ _| _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| |_ _ |_ _ _ _| _ _| _|_ |_ _ _| _| | |_ | _ _| _ _| |_ _ | | | _ _| _|_ _| | |_|_ _ _ _ _ _ | _| |_ _ _ _| | |_ |_| _ _ _ |_| _|_ _ _ | _|_|_ | | | _ _| | _ | | | _| |_| | |_ _ _ _ | _| _| _|_ |_ _ _| | | _|_ _ _| |_ _ _ _ _| |_ _| | _| | _|_ | | _| | _ _| |_ _| _ _|_ _ _| _| |_ _ _| |_ _ _|_ _ _| _| _|_|_ _ | | |_ _|_ _| _| |_| | |_ | _ | |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | |_ _| | |_ _ _| |_ _ _| |_ |_| _| | _ _| _| | _ _| | _ _ _| | | |_| |_ | | |_ _ | _ _ _|_ _ _ |_| |_ _|_ _ _ _ _ _|_ _ _ _|_ |_ | | | _|_ | | _| | | |_| _ _ _ _|_ |_ |_|_ _ |_ _ _| |_ _| _ _| | | _| _ |_ |_|_ _ |_ _ |_ |_| |_|_ _|_ _ |_|_ | _| | _ | |_ | | _ | _| _| | | |_ |_ _ |_ _ | | |_ |_ | | _ _ _ _| | |_ _ _ _| | |_ |_ _ | |_ _ | |_ _ |_ | _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _ _ | _|_| |_|_ | | _ _|_| |_|_ _ | _ | _ _ _ _| | | _ _|_| |_ | _ | |_ _| | | _| | _| | | | _|_ _|_ _| | _ _ _ _ _ _ |_ _|_ _|_ _ _|_| _ _ _ _| |_ | | _| | | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ | | |_ _ |_|_ _| |_ _ _ _ | |_ _ |_ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| |_ |_| | _ _ _| _| | |_| |_ | | _ | _|_ _|_ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ | _ _|_ | | |_ _ | _ _| | |_ | | _| | |_ | | | |_ | | _ _|_| |_ _ _ _ _ |_ _ |_ |_| _ _ _ | _ |_| _| _ | | |_ _ |_ | _| _ _|_ _| |_ _| | | _ _ _| | |_ | _ |_| _| _ _|_ | _ _| | _ _| | | _|_ | _ _ _ _ | |_ _ _ _ _| |_ | |_ _ | | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ | +| |_ | | _| _ _ _ _ _| _ |_ |_ |_ | | |_ | _| |_ _ _ _ _| _ _ _| _| | | |_ _|_ | _ _ _ | | | |_|_ |_ _ _ | | | |_ _ _| _ _ _| |_ _ | | |_ _ |_ _| | | |_ _| | _ _| _|_|_ _ _ _ | |_ _| |_ _ _ _ | _ _| _|_ _ _| |_ | _| | | |_ _ _ _ _| |_ _|_ _ |_ _| |_ | | _ _| | _|_ | _ _| _| _ _| _| | | | | | | _ _ _ _| _ |_ _ _ _ _| | _ _ _| |_ | |_ _ _ _| _ _| _ _ _ _| |_ _ _ _| _ | _ _ _| _| _| | | | | | _|_ | |_ | | |_ _|_ _ _|_| _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _ _ | | | | | _ _ _|_ _ | _| _ |_ |_ _ _| _|_ _ |_ _| | | |_ _ | | | |_ _|_ | | _| |_ _ | |_| _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _| | |_ _ _| |_ | |_ _|_ _ _ _ _| |_ |_ _ _ _ _ _ | | _ _ _ _| | _| _| _ _|_ | |_| _| _| _| _ | |_ _ |_| |_ _| | |_ _| _ _| | | | |_ _| _ _| |_ |_ | |_ | | | |_| _| _| |_ _ | _| _|_ _ _ _ | |_|_ | | _ _|_| |_|_ _ | | | | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _ |_ | _ _|_ | | |_ _ |_ _|_ _| |_| | | | _ _| | |_ _| _ |_ |_| |_ _ _|_ _ _| _| _| | | | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ _ _ _| | | |_ | |_ _| _|_|_ | | | _ _|_ _ |_| | | _| |_ _|_ _ |_ _ | _ _ _ | _| |_ _ | | | |_ _ | | | _|_|_ | | | _ _|_ _ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ _ | _ |_ _|_ | | _| |_ _| | | _ _ |_ _ _| _ | | | _|_|_ | | | _ _|_ _ _| | |_ _ | | |_ _| | _ _| |_ _| _ _| |_ _ |_ |_ _|_ | _| _| | |_ |_ _|_ | | |_ _ | | _ _ _|_ _ | | _ _| | |_ |_ | |_ |_ | | |_ | _| |_ |_ _ _| _ _| | _ _| | | | _ _|_ |_| | _| _| |_ _ _ _ _|_ | | | _| | | | _ _|_ _ | | _| |_ _ | _ _ _|_ _ _| _| | | | _ |_ _|_ _ | | | |_ _| _ | _| +|_ | | | | _ _| | _ _ |_| _| _ _|_ |_ |_ _|_ | | |_ |_ _ _ |_ _ _ |_ _ _| |_ _|_ _ _ _ _| _ | _| | |_ _|_ _ |_|_ |_ |_ _|_ _ |_ _|_ _ | | | | _ _|_ _|_ _ |_ _ _| _|_|_ | _| | _ _| |_| _ _ _| _| |_ _ | | _ _ |_|_ | _| _ _ _ _|_ |_| _ _| |_|_ _| _ _ _ _| _ _| _ _ _ _| |_ _ | | | _| | | | |_ _|_ _ _| |_| |_|_ _| |_| |_|_ | | _|_ |_ | _ | |_| _ |_ |_ |_ _ _ | | |_|_ |_ | _ _ _| _ _| |_ _ | | _ _| | | _|_ _| |_ _| |_| _ _| _ _| | |_ _ _ _ _ |_ |_ _ | _|_|_ | | | _ _| _ |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ |_ | _|_|_ | | | _ _| | | | |_| |_ _| |_ _|_| |_ _ _ _| _| | _| _ _|_ | |_ _ _ |_ | | _|_| | | _| | _|_ _ | | |_ |_ _ | _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _ | |_ | _|_ | _ _ | | _ _|_ _ _|_ _ _| | |_|_ _ _| _ | |_| _| |_ _ _ _ _| | _ _|_| _| | _ _| | | | _ _| | _| _ _|_ _ _ _| _ _|_ |_ _ _ _| |_ | |_ _ | | |_ _ _| _|_ _ |_ _| |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ _| | | | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | | | _|_ _| | _ _| |_ _| _ _| _ _ |_|_ | _| | | | _| | _| _| _ _|_ | | |_ _ _| |_| _| _ _| | | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | _| | _ _|_ |_ |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | _ _ _ _ _ _| _ | |_ _ | | |_ _ _| | | | |_ _| _ _| | |_ _ _ _ _| |_ _| | _ _| | | | | _ _|_ | | |_ _ | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ |_ _| |_ | _ _| | |_ |_ _ | _|_ |_ _ _ |_ _| |_ |_ _ _ _ _| |_ _| _ _ |_|_ | | | _|_ _|_ _ | |_ _ _ _| _ _| | _ |_ _ _ | _ _|_| _| | | | | | _ _| |_ _| _ _| |_ _ _| _ _ |_|_ | _ _| | |_ _ _|_ | _| _|_ _ | |_|_ _ _ _|_ _ _ | |_ | | |_ _ _|_ |_ | _|_ _ _| | | |_ |_ _ _ _ _| | | | | | | | |_ _ _| | |_ _ _| | _|_ _ _ _ _|_| _| |_ _ _|_ | _|_ _| | | |_ _ |_ _| |_ | +| | | |_|_ _| |_|_ _ | | _| |_ _ _ _ _ _ |_ _ _ _| |_ | |_ _ _ _ _ _ _|_ _ _ _ _ _ |_ _ _ |_ _| |_ _ _|_ _ |_ |_ _ | | |_ | | _ |_ _ _| | _|_ _|_ _ _ _ |_ _ _ |_ _ _ | |_ |_| |_ |_ | |_ _ _ |_ _ _|_ | | _|_ | | | |_ |_ _ _| |_ |_ _ _| | _ _ _| | |_| _ _| | _| _| _ |_ |_ | |_|_ | _| | | |_ _ _| _ _ | | _| _ |_ | | _ _| |_ _ _| _| _| | | | |_| _| _ _|_ | | | |_ _|_ _ |_|_ |_ _ |_ | | _ _| | _| | | | | _|_|_ _ _ |_ | |_ | | | _| _ _|_ _ _| _ |_| _ _ _ | |_ _ _ _ _| |_ _| |_|_ |_ | | | _| _ _ _ | _| _ |_ _ _ _| _ _| |_ _ _| | | |_ _ _ _ _| |_ _|_ _ _| |_ _|_ | | _|_ _| _| _ |_ |_| _ |_ | _| |_ _ _ _ _| | |_ | _| |_ _|_ _ |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_ _ _| _|_ _ _| | _ _| | |_| | _| _ | _ _|_ _|_ _ | | | |_ | |_ | _ _ _|_| _ | |_ | | | _| |_ | _ _| | _ _ _ _ _ _ _|_ | |_| _ _ _ _|_ |_ _ | | | | | _ _ _| | _ _| | |_ _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ | _| |_ _| |_|_ | |_ | _|_|_ | | | _ _| _ _ _| | | | |_ |_ _ _ _|_ _ _ _| _ _| _| | | | _ | | _| | | | | | _| |_ _ _ _ _|_ _| _ _ _ _|_ |_ |_| |_ |_ | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| | | _|_| _ _ _| _| _ _ _ _ _ _ _ _| _| _ _ _| |_ | _ | |_ _| |_ _| | | | _ _ _| | | _| _ _| | _| _ |_ _ _ _ |_ _| | _ _|_ _| |_| _| | _ _| |_ _| _ _| |_ _ | | _|_|_ | | | _ _|_ _ _| | |_ _ | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ | | | _ _| |_ | _ | _ _ _ _ |_ _ _|_| |_ _| |_ _| |_ | | |_|_ _ |_ _ | _| | _ _ _| | _| | |_ |_ _ _ _| _ _| | | _ _ _| _| | |_| |_ | |_ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _ | |_ _ | | | | | _ _ _ _ | |_ | |_ |_| | _ _|_| |_| | |_ _| | _ | _|_ | _|_ _| _ _ |_ _| | _ _ | | _ _| |_ _| _|_|_ | | | _ _| | | +|_ _|_ | _ _|_ _ _ _ _|_ | _ _ _ _| |_| | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ | | | _ _| _ | _| _ _| | | | _| |_| | _ _ _| | | _|_ _ _ _ _ _ | |_ _ _ | |_ _ _ _ _ _ _|_ | | | | | | _ |_ _ _ _ | |_ _ _ |_ _| | |_ _| _| _ _|_ _ _| | |_ _ | |_ _|_ | |_ | | | _| _| _ _|_ | |_ _ | _|_ |_|_ | _ _| | _| | | _| _ _|_ |_ _ _ _ _| | |_ _ _ _| |_ | _| |_ _ _ _ _|_ _|_ _| | _ |_ _ | | |_ _ _| | | |_ _| _|_ _ _|_ _ _ _ _ _ _ _| _ _ _|_ _ _|_ _ | _ _ _| |_ | _| |_| | | _ _ _| |_ _ _ |_ _ _| |_ | | |_ _|_ | | |_ _ _ | | |_|_ | | _| | | | _ _ | | |_ |_ _ _| |_ _ | | _| _ _|_ |_ |_ _ _| | _ _ _ | |_ _ |_ | _ _ _ |_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ | _|_|_ | | | _ _| _ | | |_ | _ _ _| _ _ |_|_ | _ _| |_ _ _|_ _ _| |_ _| | _ _ |_ _| | | |_ _ |_ | |_ _| |_ _ _ _ _| _|_ | | | | | _ | |_ | _| | _ _ _ _ | |_ _|_ _ _ _ _| |_ | | | |_ | |_ _ | _|_ | _ _| | | _ _ | | | _| _|_ _ _ _| _ _| _ _| _ _| | | | _|_ _ _| | |_ _ _ _ _| |_ _| _| | | | _ _| | |_| |_ |_ |_ _ _ _ _ _ | | |_ _ | |_ _ _| _| |_ |_| |_| | | | |_ _ _ _ | |_ _ _| |_ | _ _|_ |_ _ _| | | _|_ |_ | _|_|_ | | | _ _|_ _ _ _| | |_| _|_ _ _| | _ _ _| | |_ _ | _ | |_ | _ _ _| _ |_ |_| |_ _ _| _ _ _| | _| |_ _| | | |_ | | |_ _ |_ |_ _ _ _| | | _ _| _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | |_ _| |_ _ _ _ _| |_ _| _ _ |_|_ | | | | _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | |_ _|_ _ _| |_ | |_| | _ _| | _| _ |_ |_|_ _ |_ _ |_ |_| |_|_ _|_ _ |_ _ _ _| | |_ |_ _ | | | | | | | |_ _ | | | | | |_ _ | _ |_ _|_ | | _| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | _|_ _ | |_| _ _ | _| _| |_ _ _ _| _| _ |_ | |_ _ _ _| | | | _|_| | _ _ _| | | |_|_ _| | _| | | _ _ _|_ |_ _ _ _ _| |_ _| | _| +| _ | | | _ _ _ _ | |_ _| |_ | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| |_ _| _| _| |_| | _| | _ _| | | | _| _| | | _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _| _|_ _ _| | | | | _ _| | _ | | _ |_ | _ _| | _ | _ |_ _| | _| | _ | | | _| | _| _| |_ _ _ _ _| | _ _|_| |_ _ | | | _ _| _ _| _| |_ _ _ _ _| _ | _ |_ _| |_ | _ _| |_ | | | _ | _|_|_ | _ _| | _| | | _|_ _|_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ _| _| | _| _ _| |_ _|_ | _ _| | | _| _ |_ |_| _|_ _ _ _ _| | |_ _ |_|_ _|_ _ |_|_ | |_ _ _|_| | |_ _ _ _|_ _|_ _| _ |_ |_| _| _| |_ _ _ _ _| _|_ _| |_| | |_ _| |_ _ | | _|_ | _|_ | |_ | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _|_ _ _ _ _| |_ _| _| |_ | |_| | | | | | _ _ _| | | |_| |_ | | _ _ _ | | | _ _| | | | _| | _|_|_ | _| _|_ | _ _ _ _ | |_ _| |_ _ _| | |_ _| | | | | |_ _ | | _| |_ _ | _ | | _ _|_ _ _| | |_ _ _| _| | _ |_| | | |_| | | _| | |_ _|_ |_|_ _ |_ | | |_ _ |_ _ _|_ _ _| |_ |_ | | | _ _ _ | _ _ _ _| |_ _ _| |_ |_ |_ _ _ _ | _ _ _ |_ _|_ _ |_|_ |_ _ _| _ _|_ _ _ _ _| | |_ | | | |_ _| | |_ | _ _|_ _ _|_ _| |_ | _ _|_ _| |_ | |_ _ _ _ _| |_ _| | |_| _ | | _| _ _ |_ _ | _ _| | |_ _ | |_ |_ | | |_ _| _| _ _|_ | |_ _ _| |_ |_|_ _ | _ |_ _|_| |_ |_ _|_ _ |_ _ _| _| _ | |_ _| | _| _| _ _|_ | |_ | | | |_ _ | _| _| _ _ |_ _ | _ _ _ _ |_ _ _|_| |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ | _| _ _ |_|_ _ _ _| | | |_| _| _ _|_ | |_| _| _| _| _ | |_ _ | _ _|_ |_ _| | |_| | | |_ _| | _| _|_ _| |_|_ _ _ _| |_| _ | | | |_ |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _|_| |_ _|_ _ | _ _|_| _| _| _ _ |_| _| _ _|_ |_ _ |_| | | |_| _ | |_ _ | |_|_ _|_ | _ _| | | _|_| | | _ _ _| _ _ _ _ | | |_ | +| | |_ _| _ | | _| |_ _ | |_ |_| |_ _| | | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _ _ | _| _| _| | _|_ | | | |_|_ _ _| | | |_ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | | | |_| |_ _ _| |_ | |_| | | | | |_ | _|_ |_ _ _|_ _ | | | _|_| _| | | |_ | |_ | |_ _ _ _| _|_ | | |_ _ | | | |_ _ _ _| |_ _ |_ _ _ |_ |_| | _| _ _| | _| |_ |_ | |_ |_ _| | _|_|_ _ _ _ _| | _ _|_ |_ _|_ _ _ |_ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _| |_ _| _ _| | | |_ | | |_ _| _| _ _|_ | | _ | _ _| | | | |_ _ _| |_ _ | | | |_| _ _| | _ _ | _| _| _| _ _|_ | |_ _ _ | | |_ _ | |_ _ _| |_ _ _ _ _ | |_| _ _ _| _ _ _ _ _|_ _|_ _ _ | _| |_ _ _ _| _ _| _ |_ _ _| _ | _ _ _ _ _ _ _ _| |_ _ _| |_ | |_ _ | _|_|_ _|_ | | _| |_|_ _ |_ _| | | _| | |_ _ | |_ _ _ _|_| _| | | |_ _| | _|_ |_ | _ _| _ _ _ _| | |_ _| _| | |_ _ _| | |_ | |_| | | _ _ _ |_ | _ _| | _|_ _|_ _ | | |_ _ _ _| _ _|_ _ _ _ _ _ _ _ _|_ _ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _|_| | | | _ _| _|_ _ _ _| _| _ |_ |_ |_ |_ _ _ _| _ | _| _ _ |_ _ | | _ _ _| | _ _ _ _ | |_| _| |_ _| | _|_ |_| | _ | | _ _|_ _ _|_ | _ _ _|_ _ _|_ | _ _ | _ _ | | |_ _|_ _| |_ _| _| | |_| |_ | |_ | _|_ | |_ _ | |_ | _| |_ _ _ _ _|_| _ _ _ _|_ |_ | _ _| | _| _ |_ |_ |_ _ |_ _ | | _| _| | _ _| | _| |_ _ _ _ _|_ |_| |_ |_ _|_ _ |_|_ | _ _| |_ _ _| |_ _ _| | _| _ |_ |_| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _ | _|_ _ _| |_ _ | _ | | |_ _| _| |_ _ _ _ _| | _ _|_| _| | _ _| | | | _ _| | | _|_ _ | _|_ _ _ _| _ _ _ _|_ _ | _|_ _ _ _ _ _ _ _ _| |_ | |_|_ | | _ _|_| |_ _ _|_|_ | | | _ _| _ _ | |_| | _|_ | | |_ _ | |_| | _ _ _| _ _ _ _ | | _ _|_ _ _ _ _ _ _|_ _ _|_| |_ _|_ _ _ _| | |_ _ | | |_ | | |_ | _| |_ _ | | _ _| _ _| _| | | _| +| | |_ _ |_ _| | |_ _ _| | | |_ _ | _ _| | _|_ _ | _|_|_ | | | _ _|_ |_ _ | | | |_| |_|_ _ _|_ _ _ _ _| | | | | |_ _ _ _ _| |_ | | | _ _|_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| |_ _|_ _ _| _| _ _ _ _ _| _ _|_ _ _|_ _ _| _ |_ _| _ | _|_ |_ _ _ | _|_|_ | | |_ |_ |_ |_ _ | | _ _| |_ _| _ _| _| | _ _ _ _|_ |_ | _ _| _| _| _|_ | |_ | | |_ _| _| |_ _| _ _| | _ _ | _ | |_ | _ _ _ _ _| |_ |_| _ _| _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| |_ _| | _ _ _|_ |_| | | | _| | | | _| |_ _ _ _ _|_ _| | |_ | _| | |_| _ |_ _ _| _ _| | |_ _|_ _ |_ |_ _| | | | _| _| |_ _ _ _ _|_ | _| |_|_ _| | | | |_| | _ _ _ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| |_ | | |_ | _| | |_ _| | _ _ _|_ _| |_ _| _ | _| _ |_ |_| _| | | | | | |_ |_ _ | _|_ |_| | | |_ _ |_ _| | | _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _| | |_ _ | | _| _| _ _| | | _|_ _|_ _ _ _| | | | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | _| |_ |_ _ | | |_ _ _| |_ | | _ _|_| | | |_ _ _ _ | _| _| _ _|_ | _ _| _ _ |_ _| |_ _ _| | _ _ _| | |_ _ | _|_ _ | _ _ _| _| _| |_| | | |_ _ _| |_ _|_ _|_ _ | |_ _| |_ | _ _|_ _ |_ _| _ _| | | _| _ |_ |_ |_ |_ _|_ | | _| |_ _| _| |_ _ |_|_ | | |_ _ _ _ _ |_ _ _| |_ | |_ | _|_| _| _ _|_ |_ _ _ _ _| | |_ _ _| |_ | | _ _| |_ _| _ _ |_ _ _| | | _ | |_ _ | |_| _ _| | _| | _| | _ |_| _| _ _|_ | | _| | | |_ _|_ | _ | _| | |_ _ _ | |_| _ _ _ _|_ |_ | | | |_|_ _ | |_ | _ _ _|_| _ | |_ | | | _| |_ | _ _| | | | _ _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _|_ | _ _|_ | | |_ _ |_ _ _ _ _| |_ _| | _ _ | |_ | | | _ _| |_ _| _ _| |_ | |_ _ |_ _| | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ _ | | _|_ _ _| |_| | | | _| |_ _| | |_ | | | | | _ _| _| |_ _| | | | +|_|_ | | | _ _| _ | _| | | | | |_| |_ | | |_ _ | |_ _ _ _ _| |_ _| _ _ _|_ | | | |_ _ _| | _ _ _ _ | |_ _|_| |_ _ _ _| |_ | _ _| |_| | | |_ _ _ _| _|_|_ | | | _ _| _| _ | |_| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ |_ |_ _|_ _|_ | |_ _ _ _ _ _|_ |_| _| |_ | |_ _|_ _ _ _| _ _| _|_ _ |_ _ _| |_ | | | | |_ _ |_ _ |_| | | |_|_ _ _| _| | _ _ _ _| | _ _|_ _ _| | | | |_ | _ _ _ _|_ |_ |_| | _ _| _| | _|_|_ | | | _ _| |_ _ _| | | | | _ _| | | | _ _| | _| | |_ | | | | |_ _ _ _| _ _|_ | | | _|_ _ _|_ _ _ _| _| _ _|_| _ _ |_ _ | _ _| | |_ _ | |_ | | _ _ _| |_ _ _ _|_ _| |_ |_ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_|_ | |_|_ |_ _|_ _ |_|_ _ | _ _ _ _|_ |_| _| | _| _| _ _|_ | | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | |_| |_ _ | | _ _| | |_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | _ _|_ _| |_ | | _| _ _ _|_ | | _ _| | _| _ |_| |_| | |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _ _ _ _| |_ _| _| _ _|_ _ _| |_ | _ _|_ _|_ _ |_ _ | | _| |_ _ _ _ _| | _| | | | _ _| | _ | | | _ _|_ _| | _ | |_| _ _ _| _| _|_ _| |_| _ | _|_ | | _ _ _| | |_ _ _ |_ _ _| |_ _ | _ _| _ _| | | |_| _| _ _|_ |_ | _ | | |_ |_ _ | |_ _ _ | _| | | |_ | | |_ _ | |_ | _ _|_ _ _|_ _ _|_ | _| |_ _ _ _ _|_ | _| | |_ _| | | _| | |_ | |_ |_ |_| _ _ | |_ | | _ _| |_ | | | | | _|_ _ _| |_ | | _| |_ _ _ _ _| |_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _|_ |_ _ _| |_ |_ _| |_ _ _ | |_ | |_ _| |_ _ _ _ _| _|_ | | | | | _ | |_ | _| |_ |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | |_ _| | _ _| |_ _| _ _| | _ _ _ _ _| | _| |_ _ _| |_| _ _ _| _ _| | _ |_ _ _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | |_ _ _ | | _| | |_ |_ _ | | | |_ _| |_| | | |_ _ | _| | | +| _ _| |_ _| _ | | |_| | | |_ _|_ | | _| |_ _ _ |_ _ _ |_ _ _| _ | _ _|_| |_ _ _ |_| |_ _ | | _| |_ _ | | _ _ _ _|_ |_ _| | | _|_ _| | _|_ |_ _ _ _ _| |_ _|_ _ _ _ _|_ | | | _| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ | _ _ |_ _ |_| |_ | _ _| _ _ _| _| _ | |_ _ |_ _ | | |_ _ _ _| _| _ _|_ _ _|_ _| |_| | _ _ _ |_ _ _ _| |_ | _ _ _| |_ _ | _ |_| | _ _ _ _ |_ | |_ |_ _ _| |_ | | _|_ | | | _| |_|_ _ _ _ _| |_ _| _|_ _ _ | | | | | | |_ | | |_ _ _| | | |_ |_|_ | | |_ |_ |_| | _ _|_ _ | |_ _ | _ _ _ _ | |_ | | _ _ _| | | |_| |_ | | _ |_|_ | _|_ _| _| | |_ _ _ _| _ _ |_ _ | _ _| | | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _ _ _| | _ |_ | |_ _ | | |_ _ _| |_ | | | | _| |_ _ _ _ _| |_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| | |_ _ _ _|_ _ _| | _|_ _ | | | | | | | |_ | | | | | _ _ _ _|_ |_| |_ _ _| _ _ |_ _| | _ _| | | |_ |_| _| _|_ | |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ _ _ _ |_ | _ _| | _| _ _| _| | _ |_ |_ _ |_ | |_ _ | _ | |_ _ | |_ _ _|_ _ _ _| _| | |_ | | _|_ _| | |_ |_ _ | |_ _|_ _ _| _| _| _| _| _| |_ _| _| |_ _ _ |_ _ |_ _ _| |_ | | | | | | | | _| |_ _ _ _ _| | |_ _| | |_|_ | | _ _|_| |_ _ | _| | |_| _| |_|_ _| |_ |_| | |_ _ _ | | | |_ | _ _ | | | | |_ _| _ _| |_| |_| _| |_| _| |_ _ _| |_ | | | |_ | |_ | _ _| | | | | | | | _ _| _| | | | |_ | | _ _ _ _ | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | _| _| _ _|_ _ _| | _ _ _ | _| _|_ | _ _ _ _ | |_ _| |_ _ _| | |_ _| | | |_ |_ |_ _ _ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | _ |_ _ _ _| _ _| _ |_ _|_| | _ _ _ | _| _ |_ |_ _ _ | | |_ _ |_ | _ _ _ _| |_ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _|_ _ _ _ _ _| |_ |_|_ | | _ _|_ _ _|_| |_ _ |_ _|_ _ |_ _| | _| | +| | _ _ _| | _| | _ _|_| |_ | | | |_ |_ _ | _ _ |_ |_ | |_| | | |_ _| _ |_ |_ _| | _| | |_ _ _|_ | | | |_ _ _| |_ | _|_ | | _ _ _|_ | _ _| _ _ | _ _ _ | | _ _|_| |_ |_| |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _|_ _ _ _ _ _|_| | _ |_ _ _| _| | _| _ _ _| _|_ |_ _ | | | _ |_ _|_ _ |_ _| _ _| | _ _ _ _| _ _ _ _| | _ _| | _| | |_ _ | |_| _ _| | _| _|_ _ | | _| _|_ |_| _| _ _|_ _ _| |_ _ | | | |_| | _ _ | _ _ | |_ |_ _ _ _| |_| |_| | _| |_ _ _ | | |_ |_ _ _ _ _|_ |_| _| _|_| | _| |_|_ | | |_ _ | | _| |_ _ | |_ _ | _|_|_ _|_ | | _| |_ _| | _|_ | | | |_| | | _ _ _|_ | | |_| |_ | | | |_ _| _ _ | _|_|_ | | | _ _| _ _ _ | | | _ | | | |_ | |_ _ | | |_ _| _| _ _|_ _ _| | |_ _| |_ | _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _|_ _| | | | | _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| |_ _ _| |_ | | _ _ _| _| | |_| |_ | |_ | |_ |_ _ _| |_ _| _ _| | |_ | _|_|_ | | | _ _| _ | _ _| | _|_| |_ | _| _|_ | _|_| | _ _| | _|_ |_ _ _| |_ | |_ |_ | | _|_ | |_ _ |_|_ | _ | _ | | _| _| | | |_|_ _ _ _|_ |_ _| | | | _ _ |_ |_ |_ |_| _|_ | | |_ _ _| _| |_ |_ _ | | _|_ _ _|_ | |_| | | | |_ _ _ _ _ |_ _ _ |_ | _ _|_ | | |_ _ | | |_ _ _| _| _| | | _| |_ _ _| |_ _ _| | _| |_ |_ | _|_ _ |_ _| | _|_ _ | | | | | _ _ _| _| | | |_ |_ _| | |_ _ _ |_ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | _|_ _| |_ | _|_ _| | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | | _ _| | | _ _| |_ _|_ _| _| | | |_ _| | _|_ |_ | _ _| _ _ _ _| | | | | _ _ _ _|_ |_ | |_ | _|_|_ | | | _ _| | _ | | | |_ | | | _| _ | | |_ _| | _ _|_ _ _| |_| | _| _ _|_ | | |_ _|_ _ |_ _| _| _ _ _ _|_ |_| _ | _|_|_ | | | _ _| _ _ | | | _| _ _ | |_ _ _|_ _ _ _ _|_ _ | | | |_ _ | |_ | |_ _ | | | | +| |_| | _ _| | | _| _ |_ |_ | |_|_ | | _ _|_| |_ _| | _|_ _ _| |_ _| _| _ _|_ | | _|_ | _| _ | _| | |_| _| _ _|_ _ _|_ _ | | | | _ |_ |_ _ _ _| | _|_ _| | |_ _| _| _ |_ |_ | | _| _| | _|_|_ | | | _ |_ _ _| _ _ |_ _ | _ _| | | |_ _ _ | | _| |_ |_ _ | | _ |_ _ _| | | | | | |_ _ _ |_ _ |_ | _|_ _ |_ _ _ _| _ _ |_|_ | _ _| |_ _ _| _| | | | _| | _|_ _| | | | |_ _| _| | | _ _| | | _ |_ _ _ | |_ _ _ _|_|_ _ |_ _|_ _ |_|_ |_ |_| _ |_ |_ | |_ |_ _ | _ _| _ _| _ _ _ _ _| _| _ | _| |_| _|_| | | _| _| | |_ _ _| _| | _| | | _| | |_ |_ _ | |_ _ _ |_| | | | |_ _ _ _|_ _ | _|_ _|_ | | _| |_ _ | | | |_|_ _ _ _ _| |_ _| _ _ | _| | | | |_ _| |_| |_| | |_ _| _ _| |_ | _ _| | _ _ _ _ _|_ | |_ |_| | |_ |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | |_ _ _ | | |_ _| _| |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| |_ _ | _ |_ _|_ | | _| |_ _ _ |_ _ | | | | |_ _| _ _|_ _ _ _ _| |_ _| | | _|_ _ | | |_ _| |_ _|_ |_ _| |_ _ |_ _ | _| | |_ _| | | | |_ |_| _| |_ _ _ _| _ | | _ _| | _| | | | | |_ _ | |_|_ | _ _| _ |_ _| | _|_|_ _|_ |_ _ _| |_ _ _ _| |_ _| | |_ | |_ |_ | _ | |_|_ _ _ | |_|_ |_ _ |_ | | | _ _| |_ _ |_ |_ _| | _ _| |_ _| _ _|_| | _ _ _| _| _|_ | | | _| _ |_ _ |_ _ _| _| _| |_ _ |_ _ |_| | _ | | | | | | |_| | _ _ _|_ | |_| |_ _ | | |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| | | _ _| _ _|_ _ _| | |_ _ _ _ | |_ _ |_ _ _| | _ _| |_ | _|_| | |_ _ _ _ _ _| _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _| | |_ _| |_|_ _ _| |_ |_ _| _|_ _ _ _ _| |_ _| _ _ _| _|_ | | _ _|_ | | _|_ |_|_ _|_ _ |_|_ _ | _ _ _ _|_ |_ _ |_ _ _ _ _| | |_ _ _ | |_ _ | | |_ _ _| |_ | | _|_ _ _ _ _| |_ _| _ _| _| _| | | | _| | _| |_ _ | | _ _ _ _ | |_ _| | |_ _| _ _|_ _ _|_ _ _ _| | | | | | +| |_|_ _ _ _| | _| _| _ _|_ | |_ | _ _|_ | | |_ _ | |_ _ _ | _|_ _| _| |_ _ _ _ _|_ _| _| | | _| |_ _|_ | | | _ _| | _ | _ _ _|_| |_ _ _|_ | | _ _ _| | | | |_ | _ _| _| _ _|_ | | | |_ |_| _|_|_ _ _ _ _| |_ _| | | _ _ _|_ | | |_| |_ | |_ | _ |_ _|_ _| |_ _| | _| |_ _ _ | | |_ _| |_ _ _ |_ _ | _| |_ _ |_ _ | _ _ _| | | |_| |_ | | _ _ _|_| _|_|_ _ _ |_ _ _ _ _ _|_ |_ _ _ _ _ _|_|_ _ | _| |_| | |_ _| _|_ | _ _ | _|_ | |_ _ _ _| _| _| _ _|_ | |_ | | _ _|_| |_ _ |_ _ | | _ _ _| | | | |_ | | _ _| | |_ | | _| _ | _ _| | | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ | | |_|_ _ _ _ _| | |_ _ _ | | |_ |_ _ | _|_ |_ _ _ _ _ | _ _ _| |_| |_ _ _| |_ _ | | | _| _|_ _| |_ | _|_ | _|_ |_ _ _ | _ _| _| _| | | _| | | |_ _|_ | |_ _ _ | | |_|_ | | |_ _|_ _| |_ _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _ _ _| |_ |_ _| | |_ |_ _ | _ _ | |_ _| | | | | _|_ _ _| _ _ _ _ _ _ _ | | |_ _ _ _| |_ _ _| |_ _ _ | |_ | | _|_ _ |_| |_ _| | _| _| |_ _ _|_| _| _|_ _ | _| _| _| |_ | _| | _| _ _| | _ |_ | _|_ _|_ |_ _ _ |_ _ _ | |_|_ _ _ | |_| | | |_ _ | |_ _ |_|_ | | | |_ |_ | _ |_ _|_ _ |_ _ |_| _| | | | | |_ _ _ _ |_ |_ |_ _ _ _| _ _| _ _ _|_ _ | |_ _ _| _| | | | | | _| |_ _ | | _ _ _| _| |_ _ | |_ _ _| |_ _ _| |_| | |_ _ _|_ _ | _|_ | |_ _ _| | | _| _ _|_ _|_ |_ _|_ _ _ _ | | _ _|_| _| | _| | _ _| | _ _ _| | _ _ _| _| |_ _ |_ |_ _ _ |_ | _| |_ _ |_ _ _ _| _ |_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | _ _|_ _| |_ | _| _ _|_ _ _| | |_ _ _ _ _ _ | _ _ _| |_ _ _| |_ _ _ |_| | | _|_ _ _ _ _ |_ _ | | |_ _ _| |_ | _| | _ _ _ _|_ _ _ _ _ | | |_ _| _| _ _|_ _ _| |_ _ _ _| | | _| _|_ |_ _ _| |_| |_ _ _ _ _| _| | |_ _ | | _| |_ _ | _| _ _| | _ | | _ _|_| |_| | +| |_ _ | _ | |_| _| |_ _ _ _ _|_ |_ _| | _ _| |_ _| _ _| | | _ _| _ _ | |_ _ | _ _ _ _| _| |_ _ |_ _ | | |_ _ | _| |_ | |_ _| _ |_ | _ _|_ _| _ _ _| | | |_ _| | |_ | _| |_ _ _ _ _| |_ _ |_ |_ _ _| _ | _ _ | |_ _ | _ _|_ _|_ | | _| |_ _ _| _|_ _ _ _| _| | _|_ _ _ _ _ |_ _ _|_ _ | _ _ _ _ _ _|_ _ |_ |_ _ |_|_ _ | |_|_ _|_ | | _| |_ _ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | | _ _|_ _ _ | |_ _| | | | | | | | | _ _ | _| |_ _ _ _ _| | _ _|_ | | |_ _ |_ _| | |_ _ | _| | |_| | _| |_| |_ | |_ |_ | | _| | |_| | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_ _ | |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ | | |_ | _ _|_ _| _ |_ |_ _ _| |_ _ _| |_ | | _| |_ _| |_ _ |_ _ |_ _ _| _| _ _ _| | |_ _ _| |_ _|_ _ _ _ _| |_ _ _ _| _|_ _|_ _ |_ _| | | _ _ _ _|_ | _|_ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_|_ | | _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_|_ _ |_ _|_| |_ _ | _| | | _| |_ _| |_ |_| _ |_ |_ _ _ |_ _|_ |_ _| | |_ | _ _ _ _|_ _ _ _ _| | _ _| _ | |_ | |_ _ _|_ | | |_ _|_ _| | |_ | | _|_ _ _ _| |_ | _ _ _ _|_ _|_ _ | | | _ _| | |_ _| _ _| | _ _| _ _| |_| |_ | | _|_ |_ _ _| _ _ _ _| _| |_ _| |_ _|_ _ |_ _ _| _| _ | _ _| | |_ _ _ _| | | | _ _ _| |_ _| | |_ _ _| | _| _ _ _| | _| | | |_ _| _| _ |_ | |_ _ _ _ _| | |_| | |_| | _| |_| | |_ _| _ _ _ |_|_ _ _ _| | |_ _| | | _ _ _| _| | _|_ _ | |_ _ _| | | | _ |_ _ _|_ | | _| _| | | | |_ | | |_ _ |_| | _|_ _| | _|_ _ | | | | | | | |_ | | | | | _ _ _ _|_ |_ _| | _ _ | _| |_ _ _ _ | |_|_ _ | _ |_| _ |_ |_ | | _|_ | _ _ _ _ | _ | |_ _| _| _ _|_ _ _| | _|_ | _ _ _ _ | |_ _| |_ | _ _| | | _ _ _| | |_ _ _|_ | | _ _| | | _ |_ |_ | _ _ _ | | | _| | |_ _ _| | | | | | |_ _| |_ _ _| _| _ |_ | | +| _ _| | | |_ | |_ | _ _ _ |_ | |_ _ _ _| _ _| _|_ _ _ | | _ |_ | | |_ _| _|_ | _ _|_ _ | | | | |_ |_ _|_ | |_ _| _ _| _ _|_ |_| _ _ _ _| |_ _|_ _ | | _| | |_ _ _ _ _| |_ | _ |_ _ _ _| | |_ |_ _|_ _| | _ _ _| | |_ |_ _ | _ _ _ _| | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _| | |_ _ _| | |_ |_ _ | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_|_ _| _ _ |_ _ | _ _| | |_ _ _|_ _| | | |_ _ | | |_ | _| _ _ _| | _ _| |_ _| _ _| _| _|_ _| | _ _|_ | |_ | | _| |_ | |_ _| |_ _ |_ _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| | _| _| | _ _ _| _| _ _|_ | | |_ |_ _ _| |_ |_ _|_ | |_ |_ _ |_| | _ _ _| | | | _|_ | | | _ _ | _| | _ | | | _ |_ _ | | |_ _ _| |_| |_ _ |_ _|_ | |_ | _|_|_ | | | _ _| _| _ | | |_ _ _| _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ |_ |_| _|_ _ _| _|_ _ _|_ _ _ _| _| _| _ _|_ | | | |_ _ | |_ | | _| |_| _|_ _| _ _ |_ _ | _ _| |_ _ _ _| | |_ _ _|_ _ | _ _|_|_ | _ _ _|_ _ _ _|_| | _ _ _ _|_ |_| |_| _ _ _ _ _ _ _ _ _| _|_| | _| _ _| _ |_ _ _| | |_ _ _ _ _| |_ | | _|_ _ _| | _ _ _| _ _ _ _| _ _ |_ _ _ | |_ | | | _ |_ _|_ _ |_ _| | _|_ _|_ _| _ _ _| | |_ | | _ _|_ |_ _ | _ _|_ | |_|_ | |_| _| _ _|_ | _ _| | _|_ _ _|_ _ |_| |_ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | _ _ _| |_ _ | _ | |_ _ |_ _| | _ _ _|_ _|_| | _| _ _ _| | | | | | _| | |_ |_ _ _|_ _ _| | |_ _| | | _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| |_ _ _| |_ |_| _|_ | _| | |_ _ _| _| |_ _ | | | |_ _| _| _ _|_ | | |_ | _|_ _ | | _| | | |_ | _ _| | _ _ _| |_ | _|_ _ | | _| |_ _ | | _|_ | _|_| |_ _ | _|_ _| _ _ |_|_ | _ _| | _| _ _|_ |_| | | _ | | | | | _| _| _ _| | | | |_ _|_ _ |_ _ |_ _| _| _ _|_ | +| | _ _| | |_ _ |_ | _ _ _|_ | | _| |_ _ _ _ _| | |_|_ | | | |_|_ |_| _| |_ _ _| |_ _| _ _ _|_ _| | |_ | _ _ _ _| | | _ _| | _ _ _ _| _| _ _ _ _|_ |_ | _ _|_ _| _|_ | | | |_| _ _| | _| | _|_ | _| | |_ _ _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | _ _ _| | | |_| |_ | | | | _ _ |_ _|_ _ _| | |_ | _|_ |_ _ | |_ _ _ _| _ _| | _| | | _| | _|_ _ _ _| |_ | |_ _ _ _| _|_ _ _ _ _|_ _ |_ | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | |_ _ _ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ |_| _| _|_ | | _| |_ _ _ _ _| |_ _|_ _ |_| _ |_ |_ _|_ _| _ _ _|_ | |_ _ | _ _| | |_ _ |_ _| |_ _| | |_|_ _ _| | | | |_ _| | | |_ | | |_ _| _| _ _| _ _| | _ _ _ _| | |_ _ _ _ _| |_ _|_ _ _ _|_ | | | | |_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _ _|_ |_ _ _ | _| _ _ _ _ | | | _| |_ _ _ _ _| |_ _|_ _ |_ _| _|_ _ _|_ | | _ _ _|_ | | |_| |_ | | _ _ _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_|_ _ _ _| |_ | _ _ _ _ _| _ _ |_ _ | _ _| |_ | | |_ _| _ _ _ _ _|_ _| |_ _| | | | |_ _ _ _ |_ _ | | | | _ _| _| | _ |_ _| _| _|_| | |_ |_ _ | |_ _ _ | |_ _ _ _ | |_ | | |_ |_ |_ _| | | _ | |_ | | |_| _| |_ _ _ _ _| | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ | | _ _| | | _|_ _ |_ _ | |_ _ _ | | _| | _| |_ _ _ _ _|_ _|_ _ _ |_ |_ _ _| _ _ |_|_ | _ _| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _| _| _ _|_ |_ | |_ |_ _ _|_ | | _|_ | _| |_ _ _ _ _| |_ | | |_ _| | |_ _ _| _| _|_ | _|_| | _ |_ | |_ | _| | |_ _ _| | | |_ _| |_ _ |_ _ | | | _ _ _| | | |_| |_ | | | |_ _ _ _ _| _|_| |_ _ _| |_ | | _ _ _| _ | | |_ _ | |_ _ | | _| |_ _ _ _ _| +| |_ | _|_ | _| _|_ _| _ _ |_| | _ _ _ _ _ |_ _|_ _ |_ _| | _ _ _ _| _| |_ _ | _ _|_ | _| |_| |_ _ _|_ _| _ _ |_|_ | _ _| | |_ _ |_ |_ _ _| |_ |_|_ | _ | _| _| |_ _|_ | |_ | |_ | | | _ _| | | _ _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | |_ _ _ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _| | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| | | | _|_|_ | | | _ _|_ _ | | | _|_ _ | _|_|_ _|_ | | _| |_ _| | |_ _ _ | _ |_| _| | _|_ _| | |_ _ _ | | |_ _ _ | | | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | | _| | | |_ _|_ | | |_ _ _ | | | |_|_ |_ | |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_ |_| _| |_ _ |_ | |_ | _ _ _ _| _ _ |_| _| _ _|_ |_|_ _ _ _| _ _ _|_ | | | _ _|_ | |_ _ |_ _ _| | |_ _ _ _ | |_ | _ _|_ _| |_ |_ | _ _| | _| | _ _| | | _ _ _| |_ _ | | _ _ _ | _| _ _|_| |_| |_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| |_ _ _ _ _ _ _ |_ _ _| _ | | _| |_ | |_ | | _ | |_ _ _ |_ _ _ _ _ _ _ _ _ _| |_ _ |_ _|_ _|_ | | _| |_|_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _|_ _ _|_ _ | _ _ _|_ | | |_| |_ | | _|_ _|_ _ |_ _ _ | _ _ _ _|_ |_ | | |_|_ _ | | | | _| | | | |_ _|_ _| _| | _|_ _| | | | | | |_ | _ _| | _ _ |_ _|_ _ | |_|_ | |_ | | | _ _| | _|_ _|_ _| | _| |_|_ _ | _ _ _ _ _ _ _|_ | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_|_ _ _ _|_ |_ _ _ _ |_ _|_ _ _|_ _ _ _ _ | _ _ _ _ | |_ _| | _ _ _| _| | |_| |_ | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _ _| | |_ | | | |_| _| | _ _ _| |_ _ _| | |_ _| _ _ _ _| |_ _ | | _| _| | _|_ _| |_ _ |_ _| _ | |_ _| | _| _ _ | | | |_ |_ | | |_ _ |_ _ |_ _ | |_|_ _|_ | | _| |_ _ | |_ _|_ _| _ |_ |_| | |_ | _|_ _| |_ _ |_ _| _ _| | | | |_ _ _| _ | +|_ | | | _ _|_| _| | _| | | _|_ _ _| |_ _ _ |_ _ | | | | _ _ _| _ | | | | _ _|_ _ _|_ _ _| _ | | _ _ _| | | |_| |_ | | | _| _| _| _| _ _|_ _ _| _ _| _|_ _| _| |_ | | | | _| | _| |_ _| |_|_ _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _|_ _ |_ _ | _ | | _|_|_ | | | _ _|_ | | | |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_ |_ _ _ _ _| |_ _|_ _ _| |_ _| | | _ _| | | _ _| | |_ |_ _ | _|_ |_ _|_ _| _|_ _ _| _ _| _|_ _|_ _ |_|_ _|_ _ |_ _| |_ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _ _| |_ _|_ _ _ _ _| |_ | | | _|_ _| |_ _ _ _ _ _| |_ | _| | | |_ _|_ | _ _ _ | | | |_ _ _ |_ |_ _ _ _| |_ |_ | _| _| _ _ _|_ | | _| |_ _ _ _ _| | _| _|_ _ _| |_| _|_ _| _|_ _ _ |_ | _ _|_ | | _|_ |_| | _ _ _|_ _| | _|_ | _|_ | | |_ | | |_| |_ |_ |_ |_ _|_ | | _| |_| _| _ |_ |_ |_| |_| _| | | |_ _|_ | _ _ _| | | |_|_ | | _ _ _ _| |_ _ _ |_ _| | |_ _ _| | |_ | |_ _| | _|_ | _ |_ | _ _ _ _ | |_ _| | _| _| | |_ |_ _ | _ _| | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _| _ _| |_ _ | _ |_ _|_ | | _| |_ _ | | |_ _ | _|_ _ _| |_ |_ |_ _ _| | _| |_ | _|_ _ _|_ _| _ _ _|_ _ _|_ _ _ _|_ _| | | | | | _ _| | |_| _ _|_ _| | _ _|_ | | | |_ _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _ | | _| |_ _ | |_ _ | _ |_ _|_ | | _| |_ _| | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ |_| |_ _| | _| _|_ _ | _| |_ _ _ | | _ | |_ | _ _|_ _ _ _ |_ | _| | | _ | |_ _| |_ | | |_ _ |_ | |_ | | _| | _ _ | | | | | | | |_ _|_| | |_ | _| _| | |_ | | | |_ |_ _ | _|_ _ _| _| _| _ _|_ | |_ | | | _ |_ |_ | _ | _ _|_| |_ | _ _ _ _| | +| _| |_| | _ _ _|_ |_ _| | | | | | | | _ _|_ _ _| | _ _ _| | |_ |_ _ | _| |_ _| |_ | | _ _ _ _ | |_ _| |_|_ _ | |_|_ _|_ | | _| |_ _| | | | | _ _| | _| _ | _ _| _ _ _| _ _ _ _| | | |_ | | _ _| | |_ _ _ _ _ _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _| _ | |_ _ |_ _| _| |_ _ _ _ _| |_ _| _ |_|_ _| | | | |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ _| _ _| _ _ | _ _ | | _ _ _ _| |_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_| _ _ _| _ _ _ | |_ _ _ | |_ _ _ _ _ |_ _ | | _ _| | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ | | _ _ | _ _| _ _| | _ _ _ _|_ _ _ _ | _ _| |_ _ _| |_ _|_ _ _ _ _| | | |_ _ |_ _|_ _ |_ _ |_ _ _ _| |_ |_| _|_ _|_ _ _ _ | _|_ _ _ _ _ _ _ _ _|_ _| | _| _ _ _ _|_ |_ |_ _ _|_ _ _| _ _|_ | _ _|_ _|_ _ _ _ _| _| | _|_ _ _ _ _|_ _| |_ _ |_ _| | | |_ _ _|_ _ _| _| _| _| | | | | _| _| _ _|_ |_ | |_ _ _| |_ _|_ _ _ _ _| | _|_ _ _| |_ _|_ _ |_ _|_ | _ _ _ _|_ |_ | | _ _| _| | _| _| _ _ _|_ | | |_ _ |_ _ | | _| |_ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ | _| | _|_|_ | | | _ _| _ | _| | |_| _| _ |_ |_ |_ _| | |_| | | |_ |_ _ | _|_ _ _ | |_ _| _| _ _|_ _ _| | | _|_ | |_ _|_ | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| |_ |_ | _ _| | _|_ _ _| _| |_ _ _| | |_ | | _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _| | | | _|_|_ | | | _ _| _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | |_ _ _|_ | |_ _| | | _| | | |_ |_ _ | _ _ |_ _ | _|_|_ | | | _ _|_ _ _ _|_| | _ |_| _ _| | _ _|_ _ _| _| | | _| | _ | |_ | _| _| | _ _ _|_ | |_ _ | |_ _|_ _| _ _|_ |_ _| | | |_ | |_ | | |_ | |_ _| |_ _|_| |_ | _ | _| | _| |_ _ _| _|_ _| |_ | |_|_ | | _ _|_| |_ _ | | _| |_ _ _ _ _| |_ _| _| _ _|_ |_ _| | |_ |_ _| _| | | | | +|_ _|_ | |_ _ | _| | _ _|_ _| | |_ _| | | | _ _ _| | _ _| | _| _| | | |_ _ |_ |_| |_ _ | | _| |_ _ | _| | | | _ | | |_ |_ _ | _ _| |_ | _|_ _| |_ _| _ _|_ _ | _|_ _ | _|_|_ | | |_| | |_ _| _ _ _ _ | | _| | | |_ _|_ | _ _ _ | | | |_ _ | _| | | _ _| | _ _| _ _| _ _| _ _ _ |_ _ _ _|_| |_ |_| _| | | |_ _|_ | | _ _ _ _ | | |_ _ | | | _ _| |_| |_ _| _ _| | _| _ |_ |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | _ _ | _| |_ _ _|_ _|_ _ | | _ _| | | | |_ _|_ | _| | _|_|_ | | | _ _| _ _ _ | |_| |_ _ | |_ _| | |_ _ _ _ _ _| |_| _ _ _ _ | |_|_ _ | _ _ _ | | _ _ | _ |_ _| |_ | | | _ |_ _ | | _ _ _ _|_ |_ _|_ _ | |_ _ _|_| _ | _| _ _ _ _ | |_|_ |_ _ _| |_ |_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _|_ _ |_ _ |_ | |_ |_ _ _ _ _|_|_ _ |_ _ _ _ _ _|_ _ _|_ _ _| |_| | | | _| |_ _ _ _ _| _|_| _| | | _ _ | | _|_ _ _ |_ _| |_ _ | | |_ _ _| |_ | |_ _| _ _| _|_ _| _| | |_ | _ |_| |_| | | _| _| | |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | _|_|_ _ _ _ _| |_ _| _| _|_ _ _| | | _| _| |_ | | | _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ | _ _| | _| _ | _| | |_ | _ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | |_ _ |_ _ _ _ _| _ _ _ _| | _ _ _| _|_| |_ | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _| _ _ _| |_ _ _ _ _| |_ _| _| | | | _ _| | | _ _|_ | | |_ _ | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _| _ _ _ | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | |_ _ _ _ _| |_ _| _ | |_ _ | |_ |_ |_ _ | | _ | _ _ _| | _| | |_ |_ |_| _ _|_| _| | | _| | | _ _ _| |_ _ _|_ | _ _ _ _ _| _ |_ _| |_ _ _| | |_| |_ _ _| |_ _| _| _ |_ |_ _| _|_ |_ | _| _ |_ _ _ |_ | |_ | _ _|_ | | |_ _ | | | |_ _ _ _ _ | |_ _ | | |_ _ _ _ _|_ _ |_ | | _| _|_ _ _|_| |_ _| +| _ | | | | | | |_ _ | | | |_ | _| _| |_ _ | |_ | _| _ _| _|_ _ _ _| | _| | _| | |_ _ _|_ | |_| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ _ |_ _| | _ _| _ _| |_ _ _ _ |_ _ _|_ | | _| |_ | _| |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _| | _| | _ _| |_ _ _ _ _ _ |_ _ _ _| |_ | _| _ |_ |_ |_ _ _| |_ _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_ _| |_| | _ _| _ _| |_ _ _ |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _| |_ _ | |_| _| | _| _| |_ _| | | | _ _| _ _|_ _| |_| |_ _ |_ _ _ _ _| |_ _| _| |_ | _ _| | _|_ _ _ | | _| |_ _ _ _ | |_ |_ _ | | _| |_ _ | | | | |_ _|_ _| _| |_ _|_ _ _ _| _|_ | | | |_ _ | | |_ _ _| |_ | | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _|_ _ _|_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| _ _| | |_ _| _ _ | | _ _ _ _ | | | _ _ _ _ _ | _| _| | | |_ _ _ _ | _| | _ _| |_ _|_ | |_|_ _ _ _ _ _| |_ |_ _ _| _ | |_ _| _| _ _|_ _ _| | _ _ | | _ _ _| |_ _| | _| _| _| |_ _ | _| _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ _| _ | _ _ _ | _| _ _ _| |_ |_ _ | |_ _ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ | _|_| | | |_ _| _| _| _| | _| | _|_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _ _ _| _ _ |_ _ | _ _| |_ | |_ | _| | | |_ _ | | _|_|_ | | | _ _| _ _ _| | | | | |_ _ _ _ _ | _ _ _ _ _ _ _ _ _| |_ _ _| |_| _| | _ _| |_ _| _ _| |_ _|_ | _|_|_ | | | _ _|_ _ _| | | _| | |_ |_ _ |_| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _ _ _ |_ | | | | _ _ _| |_ _| | _| | |_ _| |_ _ | | | | _|_ | |_ | | _ _ _| | | | _| |_ _ _ |_ | _ | | | | | | |_ _ _| _ _|_|_ _ _ | _ _| | | _| _ _|_ | | |_ _|_ _| _ _ _|_ _ _ _ _ _ _| | |_ _| | _ _| |_ _| _ _| | |_ | _ | _| |_| _ _|_ _ _ _ _ _ _ _ | _ _| |_ _| _ _ _ |_ | +| | | | |_ _| _| | | |_ _| _|_|_ |_|_ |_ |_ _ | |_|_ | | |_ _| |_ _ _ | |_ _ _ _| | | _| _ _ _ | | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | |_ _ |_ | _ _| | _|_ _ _ _ _ | |_ _ _ _| | _|_ _ _|_ _ _|_ |_ _|_ |_ | | _ _ | _| _| | |_ | | _ | |_ _ | |_ _ |_ | |_ _ _ _ | |_ _ | _ _|_ _ |_| _| _ _|_ | | _ | | _ _ | _| | |_ _ |_ _ _ _ |_ _ | _ _| | _ _| _ _| | _ _| | _| |_ _ _ _ _| _| _ _ _ | _| _ |_ _ _ _| _ _| _ _|_ | _|_ _ _|_ |_ _ |_ _ _| _ _|_ _ _ _ _|_|_ |_ _| _ _ _ _|_ |_ |_ _ _| _ _ _ _ _| _| |_ _ _| |_ | _ |_ | | |_ _ | _| |_ _ | _| | |_ _ _|_ | | _|_ _|_ _ _ _ _ _ |_ _ _ _ | |_ _ | |_| | | _ _| |_| _| _ _|_ _ _| | | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | | _ _ | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| _ _ _ _| | | _ | | |_ |_ _ | | _| |_ _| |_ | | _ _ _|_ _ |_ |_ | _ _| _| _ _| |_ | |_ _ | |_ _ _ _ | |_ _ _| | _| _|_ | _ _| | _| _ _| | |_ |_ _|_ _ | |_| _| _|_ |_ _ _| _ _ _| | |_ _ | |_ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _|_ _ |_ _ _ _|_ _| _ | | | |_| _ |_ |_ _ |_ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ _ |_|_ _ _| | |_ _| _ _ _| | _|_ | |_ _ | _|_|_ | | | _ _|_ _ |_| | | | _| |_ | _ _ _| | | |_| |_ | | _| |_ _ _|_ _ _| |_ _|_ _ |_ _|_ _ _ _ _| |_ _| _ _| |_ | | | |_ _|_ _ |_ _ | |_| | |_ _ _ _ _| _| _ |_ |_ _ |_ _ _ _| _ _| _ _|_ |_ _ _ |_ _ _ _ _| |_ _| _ _ |_|_ | | | _| | | | |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ |_ _ |_ _ _| _| |_| _ |_ |_| _|_ _ |_ _ | _ | | |_ _|_ _ | |_| |_ _|_ _ | _| | |_| |_ _ |_ | | | | | |_ _ _| |_ _| |_| | | | _ _|_ _| _ _ |_ _ | _ _| | _| |_ _ _ _ _|_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _ |_ _ _ _| _ _| _ _|_| _|_ _| | _ _ |_ | _ |_ _ | _ _|_ | |_ |_ _ _| _ |_ |_| | +| |_ _ _| |_ |_|_ _|_ _ |_| _ _ _ _ | |_ _ _ _|_ _ _ _ | |_ _ _|_ _ _|_ _|_ _ | |_ | | _ _ | _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ | | | _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _ | |_ _| | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| | _|_ | | _ | _| |_ _ |_| | _ _ _ _| _| |_ _ _ _ _| _ _| |_ _| _| |_|_ _ _ _|_ | |_ | _ _ _ _ _| | | | _|_ | | |_ | | _ _ _| |_ _ _ _| _ _| | | |_ _|_ |_ _|_ _ _ | | |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _ _| |_ | |_ _ _ |_ | | | _ _| |_| _ |_ |_ _ _|_ | |_ | | |_|_ _ _|_ | | | |_ _ _ _ _| |_ |_ _ | _ _|_ _ _ | _| |_ _ | |_ _ _| _| _ _| _ _| | _ _ | _| |_ _| _ _ | | _|_|_ | | | _ _| |_ _ _| | | | | _|_ _ | |_ _ _| |_ _ | _|_|_ | | | _ _| _ _ _| | | _ _| | _ |_| |_ | | | |_ | |_ | |_ _| _| |_ | | |_ _| | | _| _| _| | | | | | | | |_ _| _| | | | _| |_ _ | | _| | |_ _ _| _|_ | _|_| |_ _ | | _ _ |_ _| | | | _| |_ _ |_| _ | | _ _| | |_ _ | _| | | |_ _|_ | |_ _ _ | | | |_|_ _ _ _ |_ _ | | | | |_ | |_| _| _ _|_ | _| _ _| | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| |_ | |_ |_ _ | _ _| | _ _ _ _| | |_ | _ _|_| _ _| |_ _ _ _ _| |_ _| _ _ _ _|_ | | | | |_ _ | |_ _ | _|_|_ _|_ | | _| |_ _| _ _ | _|_ _ _ | |_ _ | _ _ _ _| | _ _| _ _|_| |_ _ _ | |_ _ | _ _ _|_ _|_ _ | | _| _| _ _|_ | |_ |_ _| | |_ _ | _| _ _ _ _ _ |_ | _ _ _ _ |_ _ _|_| |_| _|_| | |_|_ |_ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _| |_ _ _| _ _|_ | _| _| _| _ _|_ | | |_ _| |_ _| _| | _ _ _ |_ | |_ _ _ _ _| | | | |_ |_ |_ _ | | |_| | | |_ _ _ |_ | _ _ _|_ _|_ | _ _ _|_ | | |_| |_ | | | | | | _ | | | |_ _| _ | | _| |_ _ | | _ _ | _ _| | |_ _ | _| _ _ _|_| |_ _ _| |_ | _|_|_ _ | _| | | _ _ _| |_ | _ _| +| _ _ _ _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ | _ | | | _ _ _ _| | | | |_ _ _| |_ _ _| |_ |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | _| | | | |_| | | |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _ _ _| |_ _ _ _ | |_ _ _ _ _ |_| _ _| |_ _ _ _| |_| | _|_ _ _|_ | | _|_ _ _ | | |_ _ _ _ _| _| _ _ _| _ |_ _ _ _ | |_ _| _|_ _ _ | _ _| | |_ _ |_ _| | | |_ _ | |_ | | | _| | |_ _|_ _ _ _ _| _ _ | | | |_ _|_ _ |_|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _|_ _ _|_ _ _|_ _ _ _| |_| | _ |_| _| _ _|_ | _ _ |_| _| | |_ | _ _ _| | | | | | | | | _| _| _|_ |_ _ | _|_ _ _| | | |_ _ _ |_ _ |_ | _|_ | | |_ _ _| _ _| | _| | |_ _ _ _ _| |_ _|_ _|_ _ _ | | |_ |_ _ |_ _| _ | _|_ | |_|_ _ _ _ _| |_ _| | _ _| | | _| | _| _| |_ _|_ _ _ | | | |_ _|_ | _|_ _ _ _ _ _|_| _|_| | | |_ _| |_ _ _| _| _| | | |_ | | | |_ _ _| _|_ _ _|_ |_|_ _ _| | | | |_ _|_ _ _ |_ _| |_ _ |_|_ _ _|_ _| | | | _|_|_ _ _ _ _ |_ _ _ _| | |_ _ _ _|_ _|_ _ |_|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _ _ _ _ _| |_ _| |_| |_ |_| | _| |_ _ _ _ _| | | | | | _| | | |_ _|_ | | _ _ _ _ | | |_ _ _ _ |_ _| _ _|_ |_ | | |_ | _ _| | _ _|_ | _ _| | _| | | _ _ _ _| _ | _ _ _| |_ _ _ _|_ _| | | _ | | |_ |_ _ | _ _| | |_ _ _ | |_ _ | |_| | |_| _ _ _ _| | | _| _ |_ |_ _ _ _ _| |_ _| | _ _ |_ _| | | _| |_ _ _ _ _| _|_ |_ |_ _|_ _ |_|_ | _ _| | |_ _| |_ _ _| | _| _ |_ |_ | _|_ _ | | _| | | |_ _|_ |_ _ | | | | |_ _ |_ | _ _| _ _|_ _ | _| |_ _ _ _ _|_|_ | | _ _|_| |_ _ |_ _ | _| | | _ _ _ | _|_ _|_ _ _ |_ |_ _ _| | _ _|_ _ _ _ _ _ _| | _ _ _ _ | |_ _ | _|_ _|_ | | _| |_ _| | |_ _|_ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | _| _ |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ _| | _ _| _| |_ _ _| | |_ _ | | _|_| | +| | _ _| |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _| | |_ _ _| | _|_ |_ _ | _| _ |_ |_ | | | |_ _|_ | | _ | _| | |_ _| | |_ |_ | | _|_ _|_ _ |_ _| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | |_| _ _ _ _ | | _| |_ _ |_ _ _ |_ |_ | |_ | _ |_ | |_| _ _ _ _| | |_ _ _| | |_ | | _ _ _ _ _|_ | _ _| _ | _| _| |_ _ | | _ _| _|_ | |_ | |_ _ _ _ _|_|_ _ | _| _| | _|_ _ _|_ _ _ | _ _ | _ | | | | _| _ |_ _ | |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _ _ |_ _| _ _ | |_ _ _| | _| _| |_ _ _ _ _| |_ _ _| _| _|_ |_ _| |_ | | | |_| |_ _| |_| | |_ _ _| _| |_ _ | |_|_ _ _ |_| | | |_ _ | | |_ | _| |_ |_ _ _| _ _ _| | |_ _ _|_ _ | | _| | |_ _ _ _| |_ _ | |_ _ |_| _| | _ |_ _ _ | _ _ _ |_ _| | |_ _ _| |_| _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ |_ _| _| | | _ _ _|_ | | | |_ |_ _|_|_ _ | _| _ _ |_ _| _ _ _|_| | | | _ _ _ _ | |_ | |_ |_ _ |_ _| _ _ _| |_ |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | _ _ _ |_ | |_ | | | | | |_ _| _ _ _ _|_ _ _|_| | |_ _ _| |_ _|_ _ _ _ _| | | |_ _ |_ _|_ _ |_ _ | _ _|_| _ |_ _ | |_ _ | |_ | |_ | _ _| | |_ _ _ _| |_ _| _ _|_ | | |_ _| _ |_ |_| _ _ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | _ _| |_ _ _ |_ _ _|_ |_ _ | | _| _| _| _ _|_ |_| | | | _ _| | _ |_ | _| | |_ _ _ | _ _ _ _| _ _ | |_ _ | |_| _ _| | | | _| | _ |_| _| _ _|_ | |_ _ | _|_|_ _ _| |_ _|_ _ _ _ _| |_ _| |_ |_ _|_ _ |_ _ | | |_|_ | | | |_ _ | _ | |_| |_ | | |_ _ |_ _| |_ _ | |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | | _| _| | |_ _ _| | |_ |_ _ | _|_ _ _ | _|_|_ | | | _ _|_ _ | | |_ _| | |_ _ _| _ | |_ _ | _|_ _ _| |_ | _ _| | _ _| | | _|_ _ _ _| _ | _|_|_ | _| | +| | | _ _|_ _ _|_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_| _ _ |_ _ | _ _| |_ _ |_ _| _| | _| _ _|_ | | |_ _|_ _ _ _ _|_| | | | |_ |_ _|_ _ |_ _ |_ |_| |_ | _ _ |_ _ |_ |_ _ | _|_|_ | | | _ _| | _ _ _| | | _ _| | _| _ _|_ |_ _ _| | | _ | | _ | | _ _|_| | _|_ _ _ _| |_ | | | _ | _| _| _| _ | _ _| | _ _| _|_ |_ _|_ _ _ _|_ _ _ _ _ | | | _| |_ _ | _ _ _ _ _|_| _|_ | | _ _ _ | | |_ _ _|_ _ _| |_ _ _| |_ _|_ | _ _| |_ _ _ | _| _| _|_|_ | | | _ _|_ _ _ | | | | | _|_ _| | _| _ _| | _| |_ _ | _| | | |_ _ _ _ _ | | _ _ _| _|_ | |_ _|_ _|_ _ _|_ _ _ _|_ | |_ |_ _| _|_ _ | |_ _ | | |_ | | |_ _ | |_ _ _ _|_ _ _ _|_ _ |_ |_ _ | |_ _ | | _ _|_ _| _ _| | | |_ |_| _ |_ |_ _ |_ |_ | | _ _|_ _ _ | |_ _| | |_ _ _ _| _| _ |_ |_ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _ _|_| |_ _ | _| | | _| | _ _ _ _ |_ _ _ _ | | _ _| | | | | | |_ _ | | _| |_ _ _ _ _ _| | _ _| | | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_|_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ | | _ _ _| | _| | |_ _| |_ | | _| | _ _ _ _ | _| _ _ _| | _ _ | | _ _|_ _|_ _ |_ _| |_ _ |_ | _ _ _ _|_ | | |_ _ | | | _| | _| |_ |_ _|_ _ |_ _ _ _ | | _ _|_ _| _| _ _|_ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _ _ _ _| _|_ _ | _| _ _| |_ | _| |_ _ _ _ _| _|_ _|_ | | _| |_| _|_ _|_ _ |_ | | |_ |_| | | | |_ _ _ _| _ _| |_ | | _| | |_ _|_ _ _| |_ | | _| |_ _ _ _ _|_ _ | |_ _| _ _ | | _ _ | _ | |_ _ | | |_ | | |_ _ | |_ _|_ _ |_ _| |_| |_ | _|_ | |_ _|_ | | _| |_ _| _ _| _| _|_ | |_ | _ _|_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_ _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| |_ _|_ _ _ _ _| |_ _|_ _ _| |_ _| | | _ _|_ | _ _| _| |_ | | |_ _| _| _ _|_ _ _|_ | | | | _|_|_ _ _ | |_ _|_ _| _ | _| _| +| _| |_ | _ _ | _|_ _ | _|_|_ | | | _ _| _ _ _| | | _ _| | | |_| |_ | | _| | |_ | _| |_ _ _ _ _|_ | _ | | _ _ _| _|_ _| _ _ |_ _ |_ _ _| _| _|_| | | |_ | | | _|_ _ _ _ _| |_ _| |_ _| |_ | | |_ | | | | |_ _ _ _ _| _ _| | |_ | |_| | _| |_ | | | |_ | _ _ _ _|_ |_ |_| |_ _|_ _| _| _|_ _| |_ |_ _ _ _| | |_ _ _ | _| _ _ _ _ | |_ _ _| |_ _ _ _| |_| _ | _| _ _ _|_ _| |_ | _ _| | |_ _ _ _ | |_ _ |_ | _ | | | _ _| _ |_| | _|_ |_ _ _ _ _| |_ _|_ _ |_ |_ | |_ |_ _ | _|_ _ _| _|_ _ _|_ | | |_ _ |_ |_ _ |_ _ |_ _ | | |_ _ | | _ _ _ _ | |_ _| _ _| _|_ |_ _ _| _| |_ _ _| | |_| _ _ _| |_ _|_ _ | _ _ _ _ | |_|_ |_| _ _| | _ _| | | | _ _ | | | _| |_| _| _| _ _|_ | |_ _ | _|_ _| _ _ |_ _ | _ _| | | | _ _ |_| _| _ _|_ | | |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ | _ _ _| | | |_ | |_ _ | |_ _ _ _| _ _ |_|_ | _ _| | _| | |_ _ _| | |_ _ |_ _ _| _ _ |_|_ | _ _| | |_| _| | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _| _|_ _| |_ _ _ _| _| _| _| |_ _ |_ _ | _ _ _| _| _ |_ _| | |_ _ _ _ _ _ | |_ _ _ _| |_ | | | _| _ _| | _| _| _ _|_| |_ | |_ _| | _ _ _| |_ _ | _| | |_|_ | | | _| |_ _ _ _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | _ _ _ _ _| _|_ _ _| |_ | | |_ _ | | _ |_ _ _| | | | _| _ | _ _| _| |_ |_ |_ _| |_ _|_ _ | _ _| _ _| | | | | | _ _| _| | | | |_ | | _ _ _|_ _| | | | _|_ _| _ _ _|_ _ _|_ _ | | _|_ _| | _ _| | |_ | |_ _ | | _| _|_ _ | |_ _ | |_ _| _ _| _ _| |_ | | _|_ | | | | _ _| | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ | _ _ _ _ _ _ |_ | _ _ _| |_ | | | _| _| _| |_ | _ _| | _ _ _ |_| | |_ |_ _ _ _ |_ _|_ _ | | | |_ _| | +|_| _| _|_ |_ | | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ _ _ _| |_ _|_ | | _| |_ _ | |_ _ _| | _ _ | _ _ | | | | |_ _|_ _ _ | |_ | | _| | _ _| | | _| _ _ _ _|_ _|_ _ |_ _ _|_ | _| _ _ _ _|_ _ | |_ _ _| |_ | | | | | |_ | _| _|_| |_| | _|_ _ _|_ |_ |_ _| | |_ _| |_ _ _| |_ |_ |_ | _ _ _| | |_ | |_ _| _|_ _|_ _ |_ _|_ |_ _ | | _| |_ _ | | _ _ _ _|_ |_ _| |_ |_ _ | _ |_ _ _| | | |_ _ | | _| |_ _ | | _|_ _|_|_ | _|_ _ _ _| | _| _ _ _ |_ _ _ _|_ _|_ _| |_ _ _| |_ | _ | | | _ _ | | |_ _ |_| _| |_|_ | | | _| | |_ _|_ _ |_ _|_ _ | | _| |_ _ | |_ _ _ _ _| | | |_ | | _ | |_ |_| _ |_ |_ |_ | |_ _ | | _| |_ _ | | _| | |_ _ _|_| |_ | |_ _| | |_ _ | _| |_ _ _ _ _| _ _| | | _ _ _| | | |_| |_ | | |_|_ _ | | _| |_ _ _ _ _| _|_ |_ |_ | | _|_|_ | | | _ _|_ _ _ _ _| | | | _ _| | |_ _ | _|_|_ |_ _| | |_|_ | _ _ _| | | |_| |_ | | | _|_ |_ | _|_ | _| _ _ _| | | |_| |_ | | | | | | | | | | | | _|_|_ | | | _ _|_ _ _ |_| | |_ |_ _ | |_ _ | _| |_ _ |_ _ |_ | |_ | | _ _ _ _|_ |_| |_ _ _| _| | _ | | | |_ _| |_ _| | | | _| |_ _ _ _ | |_ _ _ | | |_ _ _| |_| _| _ |_ _| _| _| _ |_ | |_ _ _ _|_ _ _ _ | _ _| | | |_ |_ _| _| |_ _ _ _| | | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ | | | |_ _ _| _ _ |_ _ | _ _| | _| |_ |_ |_ _| | | | | |_ _| |_| | |_ _ _ _|_ _ _| _| |_ | |_ _ |_ _ | _ _| _ _|_ |_ | | |_| | |_ _|_| |_ _| | |_ | |_ _| |_| |_ _ | | _| | | | | _ _| _ _ _ _ | |_ _| | |_ | _ _|_ _ _| _ _ | |_ _| _| _ |_ _ _| _| _| |_ | | |_|_ _| | |_ _ _| |_| | | | _ _ _| | | | | _|_|_ | | | _ _| _ | | | | | _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _ | | _ _| | | |_| _ |_ |_| |_| |_| |_ | | | | _| _|_ | _|_ | _ _|_ _ |_| _| _|_ _ |_ _| _ |_ _| | | |_ _ |_| | +| _| _| _ _| _|_|_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_ _ _| | _| | |_ |_ _ | _|_ _| |_| | | | | _|_ _| |_ _ _ _ | _|_ | | |_| | | _| _ _| |_ | _| _ _ _ _ | |_ _ | _ _| |_ _ _ _| _ | | _ _| _ |_ |_| | | |_| | | | | _| | _ _|_ _ _ _|_ _ _ _ _| _|_ _ _ _| |_ _| _ _|_ _ |_ _ _ _|_ _ |_ |_ _ _| |_|_ _ | |_ _ | _|_ _ _ |_ _| | |_ _ _|_ | | | |_ _ _| |_ | _|_ _ _| | |_ _| | _|_ _|_ _ |_ _|_|_ _ _| _| |_| |_| |_| | _| | _ _ _ _ _| | | _ _| _ _|_ _ _| _ _ _ _| _ |_ |_| | |_ _| _| |_ _| _|_ _ | _ _ _| _| _|_ _ | | _ _| _|_ _ _ _ |_ _ _ _| | |_ _ _|_ | | _ |_ _ |_ | |_ _| | | | | | | _| _| _ _|_ |_ _| _| | |_ _ _| | | | |_ _| |_| _ |_ |_| |_ _ | | _ | | |_ | _ _ _ _ _ _ _| |_ _ | | |_ _|_ | | _| |_ _ | _| | |_ _ | _ _ _| |_ | | |_ _| |_ _ _ _ _| |_ _|_ _ | | | | _| _ _| _ |_|_ _ _ | | _ _| | | _ |_ _ | _| |_ _|_ | | _| |_|_ _|_ | | | | | |_ _ | | | |_ _|_ | | _| |_|_ | |_ _| | | |_ _| |_ _ _ _ _| |_ _|_ _ |_ _|_ | |_ | _ _| |_ _ _ |_ _ _| _| | | | _|_ | | _ _ _ _| |_| _ _| | _ _ _|_ _ _ | |_ |_|_ _ | |_ _ _ _ _|_ _|_ |_ _ | | _| |_ _ | | |_| |_ | _ _| _| | |_ _| |_| _| _| _ _|_ | | _ _ | | | | _ _|_| |_ | |_ _ | | |_ |_ | _ _|_ _| | _| | | |_ _|_ | | | | | | |_ _| |_ _| | _ _ _| _| | |_| |_ | | |_| _| _| | _| |_ _| | |_ | |_ _ _ _ | _ _ _| | _ _ _| | _ | | _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ |_ | | | |_ _| |_ | |_ _| | |_ _ | | _| |_ _ |_|_ _|_ | |_ |_ _ _ _ _| |_| _ _ _| _ |_ | |_ | |_| _ _ |_ _|_ _ |_ _| |_| | | _| _| | |_ |_ | | _| |_ _ _ _ _| |_ _| |_ _| | | | | | |_| |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| | |_ _ | | |_ | _| | |_| _| _ _|_ | | _| _| |_ _| | | |_ _| |_ _ |_|_ |_ _ _| _|_ _ _ |_ | _ _| | _|_|_ | | | | +| |_ _ _| |_ _ _ _ | | | _ _| |_|_ _ _| _ | _| _ |_ |_ | _|_ | |_|_ | | _ _|_| |_ _ _ _ _| |_ _ _|_ _ _| _ _ _ _ |_ _ _ _|_ _ _|_ | |_ | | | | | |_ _ | | _| |_ _ | | | |_ _ _ _ |_ _| | | | _| _| _ _|_ | |_ _ | | | |_ _| | |_ | _ _ _ _ | |_ _| | _ _ _ _|_ |_ _| | | | _| | _ _| | _| _ |_ _ _ |_ _ _ _| | |_ | | _| | _| | _ | | | |_| _| _ _|_ _ _| | |_ _| _|_ _ _ _| |_ | _ _ _| _ _ _ _ _ _ _ _ _ _ | _| _ _|_ _| _ _| _ _| _| | | _ _| _| | |_ _| _| _ _|_ | | |_|_ | |_ _ | |_ _ |_ _| | _ _ _| |_ | | | | |_ _ _ | |_ _ _ _| | _| _ _ _ | | |_ |_ _ |_ | _| _| | | | | _ _| | _| |_ _ _ _ _|_ _| _| | _| _ _| _|_ _ _| |_ _ |_|_ _| _ _|_ | |_ _ _| |_| |_ |_| |_ _ | _ _ _ _ | _| | | |_| | | |_ |_ _ | _ _| |_ |_ | |_ | _ _|_ _ _| | _ |_ _ _ _ | _ _ _ _| |_ |_ _|_| |_ |_ | | | |_ _ | |_ | | | |_ _| |_ _| | |_ _| | | |_ |_ _ | _ _ |_| |_| |_| | _| | _| | | | |_ |_ _ | _ _| _|_ | _|_ _ _ _ _ | _ |_ |_ _ _ _| |_ | | _ _| _| _|_ _ | | |_|_ _ | _ | |_| _ _ _ _|_ |_| _ |_ _ | | |_|_ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _ _| | | _ _ | |_ _ |_ _| | _ _| | _| _| |_ _ _ _ _|_ _| | |_ _| | | |_ |_ _| _| _ _| | _| _| _| |_ | _|_ _ _| |_ _|_ _ _ _ _| | |_| | |_ |_ _|_ _ |_ _ | |_ _ | _ |_ _|_ | | _| |_|_ _|_ _| _| |_ _ _ _ _| _|_ _ _ _ _ | _| |_ _ | |_ | |_| |_ _| |_ _| _| _ _|_ _|_ |_ _|_ _ _ | _ | _ _|_| _| _| _| _|_ _| |_| | | _|_ _ _ _| | _| | |_ _ _|_ | | _ _ _ _| | |_ | _ _ _ _|_ |_ _ _ | | | | | | |_ _ _| | _| | |_ _ |_ _ | | _| |_|_ _ _|_ |_ |_ | | |_ _ | _ _ _ _ _ _ _| | | |_ _|_| |_ | |_ | _| | | |_ _|_ | | _ _ _ _ | | |_ _ | | | | |_ | | | | | | _| |_ _ _ _ _| |_ _ _|_ |_ | | | _|_ | |_ |_ _ |_| | _ _ _ _ _ _ _| |_ |_ _| | | |_ _ _ _ _| |_ _| | +| |_| _ _| | | _ | |_| | | |_ _ _ _ |_ _| |_| _| _ _|_ | |_ _ _ |_ | _ _|_ | | |_ _ | _ |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | | | |_ _| | _| | |_ _ _|_ | | |_ _|_ _ |_ _ | _ _| | | | _| |_ _ _ _ _|_ | |_ _| |_ _ | | |_ | |_ _ | | _| |_ _ | | |_ _ _| |_ | _|_ |_ _| _|_ _ _| | _|_ _ _ _| _ _| _ _ _ | _|_ _ _|_ _|_|_ _| | _ _| |_ _ _| | | _ _| |_ | | _ _|_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| |_ _| _ _ |_ _ _|_| | |_| | | |_ _ | |_|_ _ | _| |_ _ _ _ _| |_ _ _ _| |_| |_ | |_ _ | |_ _ | _|_ |_|_ _ _|_| |_ _ _|_ _|_ _ | | | | _ _ | _| | | | _ _| | | | |_ | _|_|_ |_| | | |_ _ | _ _ | | _| | | _ _ _ _| |_ | |_ _ | | |_ _ _ _ _|_|_ _ _ | |_ _ _| _| _| _ _|_ _ | | _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _ _|_ |_| | |_ _ _ _| |_ _|_ |_ | | _ _ _ _ _ _| _ |_ |_ | | _| | |_ _| _| | |_| | _ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ _| |_ | | _ _| |_ _ _ _| _| _ |_ |_ |_ | | _ _| _ |_ _| | | _ |_| | | |_ |_ _ _| |_ | |_ _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| _ _ _| | | | |_| |_ _ |_ | | _| | _| | | |_ | _ _ | _| | | _|_|_ | | _| _|_ _| _ _|_| _| | _| _| |_ | | | _ _ | | _ _|_ _ _|_ |_ _| _ |_ _ | _| _| |_ |_ _| | |_ |_ _ | _ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _| | |_ | | |_ _ _| _ _|_ | |_ _| _ _ _ |_|_ _ _ _| |_ _| _| | _ _ _| _| _ _ _ _ _ _| _| | |_ | _ |_| |_| _| _ _ _ | | | | _ _ | _ _| |_ _ _| |_ | _| |_ _| |_ | | | _ _| _| |_ _ _ _|_ _ | | _| _| _ _ _ _ _|_ | | | |_ _ _|_ _ | _ | |_ |_ _| _| _ |_ |_ _| |_ _ _| |_ _|_ _ _ _ _| | | |_ _ |_ _|_ _ |_ _| |_| |_ | | | |_|_ _ _| |_ _ _ _ _ _ | | |_ _ _| |_| _|_ _| | |_ | | _ _ _| _ _ |_ _ | _ _| | |_ _ | _ _ _| | +| |_ | | | | | | | | |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _|_ _ |_ |_ _| | _ _| |_ _| _ _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | |_ _ _ _|_| | _| | _ _ | |_ |_ _ |_ _ |_ _|_ _|_| | |_ _| _ _ _ _|_ | _ | | | | | | _ _| | |_ _ _| | |_|_ _ | _ _|_ _ _| _ |_ _| _| _ _ | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | | _| | _ | |_ _ | _| _|_ _| | _| _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _|_ | | |_| _ _| |_| | _|_ _|_ _ |_|_ | | | |_ _ | _ _| _ _ | _ _| | _|_|_ _ |_ _| _| |_ | _| | | _| | _| _ | |_ _| | | |_ _ _| |_ _ _| |_ | _ _| | |_ _ _|_ _| | _| | |_ |_| | | | | _ _| |_ | |_|_ | _ _ _ _|_ |_ _ _| |_ _ _ _ _ _ _ _ | _ |_ _ _| _|_ | _|_ _ _| | |_ _ |_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _|_ _ _|_| |_ _ _ | | _ _| |_ |_ _|_ _ _ | _| _| _ _|_ |_| | |_ _| | |_ _ _ _ _| |_ | |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _|_ _ _| |_ _ | _ | _ _| _| _ _|_ |_ | | _| | |_ _ _ | |_ | | _| _| _| _| _ _|_ _ _| |_ _ | _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| _ _ _| | | | |_ _ _| |_ |_ _|_ | | | |_|_ _ | | |_ _| _| | |_ _| |_|_ _ _ _| | _ _| _ | | _ _ _| _| | | _| | | |_ _| |_|_ _| | |_ _ _ _ _ _ | _| _ _| _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| |_ |_ _|_ _ | | | |_ _| |_| _|_ _|_ _| | _ _ _ _ _ _ |_ _ _ _ _ _ _|_ | |_| _ _| | _| _| |_ _ | |_ _ _| _ _ |_| _| _|_ |_ | |_ _ | | | _ _ | _| | | |_ _ | | | _ _| _| _ _|_ _ _| | _| |_ |_ _| |_ _|_ | |_ _ _ _ | |_ _| |_ _| | _| _ _|_ _ _ _ _|_ |_ _ _ _ _| |_ |_ | | | _ _| _| _ _|_ | | _ _ _ | | _ _ | | _ _|_ _|_ _ |_ _| |_ _ | |_ _ _|_ |_ | _ _ _ |_ | | _| _ _ _|_ |_| _ |_ |_|_ _ _ _|_ |_| _|_ | _ _ _|_ | | |_| |_ | | | | |_ _| | |_ _ _ _| +| | |_ _ _|_| | |_ _| _| _| _ | |_ _ |_ _| | | |_ _ _ | _ _ _|_ |_ |_ |_ _ _ _| _ _| _ _| |_| | |_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _ _ _ | |_ _ | |_ _| | _| | _ _| |_ _ | _ _|_ | | _ _| _ _| | _| | _| | | _| |_ | _| _ |_| | | _ |_| | _ _ | _| |_ _ | | _| | _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | | |_ |_ _| |_ | _ _ _ _| _| |_ _|_ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ | _ _|_ _|_ | |_ | | _|_ | _ _ |_ _ | | _| |_ | | |_ _| | | |_| |_ | |_ _ _ | _ _ | | _|_ _|_ _ | | |_ _ _ _| _ _ _|_ _|_ _ _ _ |_ _ | _| _ |_ |_| |_ |_ | _ | |_ _ _| |_ _| _| _| | | |_ _ _ _| _|_ _ | |_ _ _| |_ | | _ _| _ |_ | _ _| | | _ _ _| _ _|_ _ _ _ | _| | _ _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ _ _ _ _ _ _|_ _| | _| _ _|_ _ _|_ _ _ | | | _| |_ _ _ _ _| _|_ _ _|_ _| _ |_ | |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | | _ _ _| | | | |_ _| _| |_ _ _ _ _| _| | | _| |_|_ |_ _| _ _|_ _|_ _ _|_ _| | | | _ _ _ _ _ |_ _ _ _| | | | | _|_|_ | | | _ _| | |_ | | _ _| _ _|_| |_| _ _ _ _|_ |_ | | | |_| |_ _ | _ _|_ _ _ _| _ _| | | _ _| | _|_ _ _ _| | | |_ _ | _ |_| | | | |_ | | _ | | |_ _ _ _ | |_|_ | | _ _| | _ _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _ _ _ |_ _| | | |_ _ |_|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_ | |_ | | | | | _| | | | _ _ _|_ | | _| |_ _|_ |_|_ | | | | | |_ _ _| |_ _ _| |_ _ _|_ _|_ _ _ _ _| | _| _ _ _ _ _ _| _ _| |_ _ _ _|_ |_ _ _ _ _|_ _ _| | | |_ | _ _ _ _ _ |_ | _|_ |_ | |_ _ | |_ | _| |_ _ _ _ _| | | |_ _|_ _| _| |_ _ _ _ _ _ | |_ _ _ _| | _ _| | |_ _ _ _ | | |_ _| | _|_ _ | |_ _| _ _ |_| _| _ _|_ | | _| _ _| _| | |_ _ | _|_ _|_ | | _| |_ _| _ _ _| _ | _| +|_ _| _ _ | | |_ _ _| _| _| _| |_ _ _| | _| |_ | |_ |_ _|_ _ |_ _ _| _| |_ _ | | |_ _ |_ _ _|_ _ _ _ _|_ | _|_|_ | | | _ _|_ |_ _| | | | | | | _| _ _| | |_|_ |_ _| |_ _ _| | | _ _| _|_ _| | _| _|_ _ | | _ _| |_ | |_| _ _|_| _| | | | | |_ _ _| |_ | | _|_ | _| |_ _ |_ _| |_ _ _ _| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ | | _| |_ _ _ _ |_ |_ _| | _|_ _ | _| | | |_ | _|_|_ | | | _ _| _ | _ _| | | _| | _ | | | _| |_ _ _|_| _ _ _| | |_| _| _|_| |_ _ | | |_ _|_ | | _| |_ _ _| | |_ |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _| | _| _ _|_ | | | _| _| | | |_ _ _ _|_ |_| _ _ _|_ | _|_ _ _ _ _ _ _| _|_| _| _ _|_ _ _| |_ | | |_ _ _| |_ _ | | |_|_ _ | | _ _| _ _| | | | | _ | _ | _| _ _|_ _ _ _| _ _| _ _ _ _ _ | | | | | _| | | _ _ _ | |_ _|_ | |_ _| _ _ _|_ _ _| _ |_| _| _ _|_ | |_ |_| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ |_ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| |_|_ | | |_| _|_ _|_ _ | |_ _ _ _ _ |_| |_ _| |_ _ |_| | | | _ _ _ _ | |_ _ _| |_ _ _| _ _ |_ _ | _ _| | |_ |_ _ _ _ _| |_ _| _ |_ _|_ | | |_ | |_| _ |_ |_ _ _| |_ | | | |_ _ _ _| _ _|_| _ _ |_ _ | _ _| | |_ | _| | | | _ | _ _ _| |_ |_ | |_| |_ _ _ | |_| | |_ _|_ | | _| |_ _ | _| | _| |_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ _ | _ _ | _|_|_ | | | _ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ | |_ _| _|_|_ _ _ _ | |_ _ _ | |_ _ _ _ _ _ _|_ |_| |_ _ | _| _ |_ |_ | _ _ _ _ | | |_ _ _| _ _ |_ _ | _ _| | _| | _ _ _| _ _ |_ _ | _ _| | |_ | |_ _ _|_ | _ _| | |_ | _ | |_ _ |_|_ | | |_ _ _ _ _| |_ _|_ _ _ _ _ _ |_ _ _ _ | |_ _ _ _ _ _| | | _ _|_| _ _ |_ _ | _ _| |_ _ _ | |_ _ _ _ _ | | _ _|_ _ _ _ _|_ _|_ _ _ _| _ _| | | _| | |_| _ | | |_ |_ _ | _ _ _ _| | |_ | +| _ |_ _ _ _| | _ _ _| _| _| _ | _ _| |_ _ _| _| | _ _ | |_ _ _ | | |_ |_| |_ _|_ _ |_ _ _ _ _ | _ _ | |_ _ _ _ _| |_ _| _ _ _| | _ | | |_ _ _| | _ _ |_ _|_ _ | _ |_ |_ _| |_ | | | _ _ _| _| |_ _| | | | _| | _|_ _ _ _| |_ _ _| | | | |_ |_| | | _|_ _| |_| | _| _|_ _ _|_ | | |_ _ | | | | _| _|_|_ | | | _ _| |_ _ | | _ _|_ _ _ _| _ _ |_ _ | _ _| | |_| _ |_| |_ _| | _| |_ _ _ _ _| |_ _| | | _|_ _ | | | |_ _| | _| |_| |_ |_ _ | _ _ _| | | _ |_ _ _| _| _ _|_ _ _ _|_ _ | | |_ |_ _ | _ _| |_ | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _| |_ _ _ _ _|_| | | _| |_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | _ |_ _ | | _|_ _ |_ _ _| | |_ _ _| | _| | |_| _| | |_|_ _ _| | | |_ | |_|_ | | _ _ _ _ | | |_ _| _ | | _| |_ _| |_| | | | _| _| |_ |_ | _ | |_ |_ _ |_ |_ | _ _ _ _| | _| |_ _ _ _ _| | _| _| | | |_ _|_ | | | |_ _ _ | | |_ _| _ | | _| | | |_ _|_ |_| _ |_ _ | | |_ _| |_ _ _ _|_ |_ _ _ | | |_ | _ _ _| | | _|_| | _| _ _ _| |_ _|_ _ | | _| |_ _ | _| _ _ _| | | |_| |_ | | |_| |_ _ |_ _ _|_ _ |_ _ _| |_ | |_| _| _ _|_ | | _ _|_ _ _| | |_ | _ _ | _ _ _| | | |_| |_ | | | _| |_ _ _|_| |_ |_ _| | | _|_ _ _|_ _ |_ |_ _ _| | _ _ _ _ _|_ _|_ _ _ _|_ | |_| _|_ | | | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _ _|_ _ _ _| |_|_ _ _ _ _| |_ _| | _| _| _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _ _ _| _| | _| _ _|_ | |_ _ | | _| |_ | _ _ _|_ | | |_| |_ | | | | | _ _ _| | | |_| |_ | | | _|_ | _| | |_| | |_| |_ |_|_ | _| | | |_ | |_ _ _| _ _| |_ _ |_ |_ _ _ | _| |_ _ | _ | _| | | _ _ _|_ | | |_| |_ | | | _ _|_| _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ | +| |_ _| |_ _ |_ _ | _| |_ |_| _|_ | _ _ _| _| |_ _| | _| |_| _|_ _|_|_ |_ _ _|_ _ |_ |_ _ | | _ _| | |_ _ _ |_ _ | | |_ | _|_ _| |_ |_ _ _| |_| _ | _| | _ _|_ |_ _ _ | | _| | | _ _ _|_ |_ _ | | | | | | |_ _| _ _|_ _ _ _ _| |_ _ _|_ _|_ _ _| | _|_ | | | |_| _ | |_|_ _|_ _| _ _| | | |_ |_ _ _ _ _| |_ _|_ _ _| |_ _ _ | | | _ | _ _ _| | | |_| |_ | | _ _| |_ | _ _| _| | _ _ _ _ _ _| _ | | |_ _ _ _| |_ _ |_ _| |_ |_ |_ | | _ _|_| |_ _ |_ |_| _ _ _| | | | | | | |_|_ | | _ _|_| |_ _| _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| | _ _ _ _ _ _| _| _|_| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _|_| _|_ _ |_| |_ _ | |_ _ | | _|_ _ _| | _|_ _ _|_ |_ _ |_|_ _ | _ _ _|_ _ _|_ _ _|_ _ _ _ | _|_ _|_ _ |_ _| |_ _| _| |_ | | |_| |_ | _| | | |_ _| | |_ _| _| |_ _ | | | _ _| | | |_ _ _ | _|_ |_ _ _| |_ _|_ _ _ _ _| | |_ _ _ _ |_ _|_ _ |_ _| _|_ _ _| |_ _|_ _ _ _ _| _| _| | |_ _|_ _ |_|_ _ |_ _| | | _|_ _| _| _| _ _ |_ _ | _ _| | | _| | _| | _| | |_ _ _|_ | | |_ _ |_ _| |_ _|_ | | _| |_|_ _| |_ _ _| _ _ _ _ _ _| _ |_ |_| | _| |_ _ _ _ _|_| | _ _ | | | |_ _ | |_ _ | _|_|_ _|_ | | _| |_ _| _| _ _ |_ _ | _ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _| _ _|_ | | | _| | | |_ _|_ |_| |_ _ | _| | |_ _| | _ _ _ _|_ _ | _ | _| |_ _| | _|_ _ | _|_|_ | | | _ _| _ _ _| | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _| |_ _ _ _ _|_ _| | |_ _ _| | |_ _ | _|_ _|_ | | _| |_|_ | |_ _ | _| |_ _|_ | | _| |_ _ _ |_ _| _| |_ _ _|_ _ _ _| | |_ _ _ | | _| | |_| _| | _ _ _|_ _ |_ _ _ _|_ |_ | _|_ _ _| _| | | | | | _| |_ _ |_ _|_ _|_ | | _| |_ _ _ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| +| | | |_ _ |_ _| | |_ _ _ _ _| | | | _ _ _| _ _ _|_ |_ _ _|_ _ _ |_ |_ _ |_ _ _ _| | _|_ |_ _|_ | | | _ _|_ _| | |_ | _| _ |_ |_| _ _ _ _|_ |_ |_ _| _|_ _ _ _ _|_ _ _ _| | | _| |_ _ | _ _| _ _| | | |_| | |_ _ _| _| _ _ _ _ _ _| _ _ |_ _ | _ _| | | |_ _| | |_| _| |_ _|_ _ | | _|_ | _| | _ _ _ _ |_ _ _ _ | | _ _ _| |_ _| |_ _ | |_|_ _|_ | | _| |_ _ _ | _|_ _ _| | _| |_ _ _ _ | | | | | |_ |_| _ |_ |_ _ _ _|_ _ _| | _ _|_ | | |_ _ | | |_ |_ _ | |_| |_ _| |_| |_ _| |_ | _ _|_ | | |_ _ | | _ | | | | | _|_|_ | | | _ _| _ _ _ _ | | | | |_| _|_ _| _ _ |_ _ | _ _| | _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ |_ _ |_ | _| | _|_ | |_|_ _ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ |_ _|_ _ _ |_ _ | _ _ _ _ _|_| _|_ _ |_ |_ _| | _| | _ _ _ _| _| |_ _ |_ _|_ | _ _|_ |_ | | |_ | | | _ _| _ _ _ _ _ _ _ _ |_ _| | _ _ |_ |_ _ |_ _ |_ | _ | | _ _ | _ _| _| _|_ _ _ | _|_ _ | _| _ _| | |_ | _ _ _| _| |_ | | | |_| | _| | _| _| |_ _ _|_ | _| _| _ | |_|_ _| | _ _| | | |_ |_ _ | _|_ |_ _ _ _| _ _ |_| _| _ _|_ | | |_ _ _ _ _ | _|_ | |_ _| |_| | | _| |_ _| | | _ _ | | |_ |_ _ | _ _ | | | |_| |_ | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _|_ _ _ _ _| |_|_ _ _| |_ _|_ _ _ _ _| _| _ _|_ |_ _|_ _ |_|_ _ _ _| |_ |_ _| | |_| |_| _| _ | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | _ _ | _| _| _| _ _ _| | _| | |_ | | | |_ |_ _ | |_ _ | |_| _ | | | |_ |_ _ | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | |_ _ _| _| |_ _ | _ _| _ | _ _ _|_|_ _ _ |_ | | |_ _ _| | | _| | _| _| | |_ |_ _ | _ _| _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| | +| | |_ _| _ _| | _|_|_ _ _ | _ _| | |_|_ _ | _ _| | _ |_ _ _ _ | | _ _|_ _ _| _ _| | | | _ _| _ _ _ _| |_| |_ _ _| _ | | | | |_| _| _ _|_ |_ _ _| |_ | | |_ _ _ |_ _ | _ | |_|_ |_ _| | | |_ _ _ _|_|_ | |_ _ _ _ _| _| |_ _| _ _ _| | | |_| |_ | | _|_ | _ _| _|_ _ _ _ _|_ _| | | |_ _ _| | | |_ _ _ |_ _| _ |_ |_| _ |_ |_| _ _| | |_| _ | | |_ |_ _ | _|_ | _ | | | _ _ _| _| |_ _ _| _| _| _| _ _|_ |_| _ _ | |_ _ | _ _| |_ _| _ _|_ _ |_ _| |_|_ _ _ _|_ | _ _ _| |_ _| | _ _| |_ _| _ _|_ _| |_ _| | | |_ |_ _ _ _ _| |_ _| _ _ _ _| _ | | |_ _ _ | _ _ _|_ | | |_| |_ | | |_ _ _| |_ | _|_|_ | | | _ _| | | |_| | _| |_ _ |_ | | | | |_ _|_| _ _ _|_ _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _ | | _ _| _ _| |_| _ _ | |_ _ |_ _ |_ | | _| _| | | _ _ _| | | | | | _ |_| | | _| _|_ _ | |_ |_ _ _ _| _ _ _ _ | |_ _ | | | | _ _|_ | _ _ _| | _| | | |_ _| _| |_| | _ _| _| _ _ | |_ _ _| | | | | | |_ _| | _ _ _| _| _| |_ _|_ | | | | | | | |_ _ _ _ _ _| | _ _ _| |_ _| | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ |_ _ | | _| |_ _ _ _ _| |_ | |_ _ |_ _|_ | |_ _ _ _| _|_ | _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _|_ | | _| |_ _ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| _| | | | _ _| _ _| |_ _ _ _ _ | | | | _ |_ | _|_ _ | _| _ _|_ _ _| _ |_ |_ | | _|_ |_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_| _| | _ _| |_ _| _ _| |_ _ |_ | _|_|_ | | | _ _|_ _ _| | | | | | |_| | _|_ | | | |_ _ _ |_ | | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ _| |_ | |_|_ | | _ _|_| |_ _ _ _|_ _|_ _ | | | |_ _| | _ _ _| | |_ _| | |_ _ |_ _|_ _| |_| | _| |_ | | | _ _ |_ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| | |_ | _|_|_ | | | _ _|_ _ _| | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ | _| +| _| _ _| _|_|_ _ _ | |_ _ _ _| |_ _ _| | | | _| | |_ | | _|_| | _| _ _|_ _ _| |_ _|_ | | | _ _ _ _|_ |_ |_ _ _| | | |_ | | _| |_ _ _ _ _|_ | _ _|_ _ _| _|_ _ |_ _ _ _| _| | | |_ | _ _| | _|_ _|_ _ | | _ _ _ | _ _ _|_ _ _|_ _ |_ _ | _|_|_ _|_ | | _| |_ _| _| | _ _| _ |_ _ _ | _|_ _| | _ _ _|_ _|_ _ |_ _ _ |_ _| | _| _| _ _|_ | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _| |_| |_| | _| _| | |_ _| | _| |_ _ _ _ _| _| | _| |_ _ | |_ _ _ _| _ _| | |_ | | _| _ _ |_| _ _|_ _ |_ _ _ _ |_ _ _ _| _ _| _ _ _ | _|_|_ | |_ _ _ _ |_ _ _ _ _| _|_ _| |_ |_ _|_ _ | _ _|_ _|_ | | _| |_ _ _ | _| |_ _ _ _ _| |_ _| _|_ _| |_ | |_ |_| _ |_ | |_ _| |_ _ _ _| | |_ _ _ _ _ | |_ _| _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | |_| | | | _ _| _| | _| |_ _ | _ |_ _ _| _ _| | _| |_ _ | _| | | | | |_ | | |_|_ _| _| _ |_| | _| _ _ |_ _ | | _| |_ _ |_ _| | |_ _ _ _ _| | _ _| _| | | _ _ | _ _ _|_ _ _ _|_ | | | | _| _ _| |_ _ _|_| | _ _ _|_ _ | _ | | _ | | | |_| | |_ _| _| _ _ _ _ | | | _| | | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _| | |_ | _ _ _ | _| |_ _ |_ | _| | _ _ | |_ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ |_ _ | _ _ | _| | _|_|_ | | | _ _|_ |_ | | | |_| _| |_ _|_|_ _ | | | _ _ _ | _ _ _|_ _|_ _ _| |_ | | |_ _ _| | _| | _ _ |_| _ _| | | | _ |_ _ _| | | _ _| |_|_ _ _| _ | _| _ |_ |_ | |_ _ _ _| _ _| _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _| |_ _ _| |_ _ _|_ _ | | |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | _|_ | _ _|_ | | |_ _ | |_ _ _ _ | |_ _| | | |_ _ | |_ _ | | _ _| | _|_ _ |_ _ _ | _| _ _|_ _|_ |_ _ _ _| |_ _ | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| | | |_ _ _ _ _| |_ _| _ |_|_ | | | | _| | | |_ _|_ | |_ _ _ _ _ | | |_ _ _|_ | +| | | | |_|_ | _ |_ _|_ _ | |_ _| | _|_ _|_ _ | |_ _|_ _ _ _|_ _ _|_ _ _ _ | |_ _ | | | |_ _ _| |_ | |_ _ | _|_| | | | | |_ _ |_ _ |_| | _ _ _|_ _ | |_ _ | _| | _| |_ _|_ _ _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ | | _ _ | | |_ |_ _ | _ _| _ _ _ _|_ | | _ |_ _ _ _|_ _ | | _ _|_ _ | | | _ _| | _| |_ _ _ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ |_ | | |_ |_ _ | |_ _ _ _| |_ | | _ _| |_ _ _|_ | | |_ | | | |_|_ | _| |_ _ _ _| |_ | | _ | |_ _ _ | |_ _ _ | | |_ _| |_ _|_ _ _ _ _| | _ _|_ |_ _ _ _ | |_| _ |_ |_| | _ _| | | _| | |_ |_ _ | _ _| _ _ | _ _ | | | | | _ _ _ _| |_ _ |_ |_| _| _ |_ _ | _ _| | | _| | |_ _ |_ _ _| _ _| _|_|_ | | | _ _| _ _ _ _| | | | | | _|_ _|_| _|_ | _| |_ _ _| | |_ |_ _ | | | | _|_ _ | _| | | _| |_| | _ _|_ _|_| _ _ _| _| | | _| | _ _ | | _| | |_ _ _|_ | | |_ _ | _ |_ _| |_ | | | _| | |_ _ _| | _ _ _ _ | |_ _| |_| |_ |_ | _| _ _ | | | _ _ _| | | |_ _|_ |_ | |_|_ | |_ _ _ _| _| |_ _ _ _| |_|_ |_ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_| _| | |_ | | | _| | _|_ | | | _| | | _|_ | _|_ | _| |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | |_|_ | | _ _|_| |_ _ | |_ _ _ _ _| |_ _| _ _ _|_ _ _| | | |_ | | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ |_ | | _ _|_| _| | |_ | _ _| _ _ _|_| |_ |_ _ _ | |_| | | |_ _ _ _ |_ _| |_| _| _ _|_ |_ _ | _| | |_ _ | _| |_ |_ _ _ |_ | _ _ _ _ |_ _ _|_| |_ |_ _ _|_ _ _ | |_|_ _|_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ | |_ _| | _ _| |_ _| _ _|_ _| | | _| | _|_|_ | | | _| | | | _ _|_ _ _ |_ _ _ _| | |_ _| _ _ _ |_ _| _ |_ |_ | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ _ |_ | _ _ _| |_ _ _|_| |_ _ _ _| |_ _|_ _ _ _ _| _ |_ _ _|_ _|_ _ |_ _ _ | +|_ |_ _|_ _ |_ _| |_ _| | |_ _| _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_|_ _ _ _ | |_ _| _| _ _|_ _ _| _ _| | _ _ _|_ _| |_ | | _| _ _|_ _ _|_| | _ _ | | _ _| | _ _ _| _ _ _| _ |_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | |_ _| |_|_ | | _ _|_| |_ _| _ _ _ _| |_ |_| _ _| _ _| | _| |_ _ _| | |_ _| | | |_ _ _ |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _|_ |_ _|_ |_ | _| | _ _ |_ | |_ _|_ _| | |_ _ _ _ _ | |_ | |_ |_ _|_ _ |_|_ | | _ _ _ _|_ |_ _|_ | | _ _|_ _|_ _ | |_ _|_ _ |_|_ | _ _ | |_ _|_ _ _ | | _| |_| _| _ _|_ |_ _ _| | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ |_| |_ _ |_ _| | |_ _| _ |_ |_ _ _| _|_ | | | |_| |_ | | | | _| | | |_ | | _ |_ |_ _ _ _ _| |_ _| _| |_ | | | |_ _ _|_ _| |_ _ | | | _|_ _ _ _|_| | _ _ _| | |_ |_ | |_ | _|_ _ _|_ |_ _| _ _ _ | _ _ _ _|_ _ _ _| | |_| _ _| | | _|_ _ _ | |_| | | | |_ _ _ _ _| |_ _| | _|_ _ _ _ _|_ _ | | _| |_ _ | |_ |_ | |_ _| |_ _ _ _| | |_ _ _| _|_ _ _ _ | | | |_ _ _ _ _ _ _ _|_ _ _|_ | |_ _ _ _ _ | |_ _| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| | |_ |_ _ | | _ _| |_| _| |_ _ _ _|_| | | | _|_ _ _ _|_ _ _ _|_ _|_ | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _ _|_ | _ _|_ | | |_ _ | |_ |_ _ _ _| | _| _ _ _| |_ |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| | |_ | _ _| _| _| | | | _| _ |_ |_ | | |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| | _|_|_ |_ _|_ _ |_|_ | _ _| | _| _| |_ _ _| | _| _ |_ |_| _ |_ _ | |_ _|_ _ | | _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | | _|_ _ _|_ _ _ _| _ _| _| _| _| | | |_|_ _ _ _ _| |_ _| | _|_ _|_ _ _ | _ _ _ | _|_ _ _ _ _ _ _| | _| _ _|_ | | | _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ _| _| _|_ | _ _ _|_ | _ _| _| _ |_ |_ | | _ _ | _|_ |_ _ |_ _ _ _ _|_ _ | | | +| |_ | _ _|_ _ | | _ _| |_ _ | _| _ _|_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ | _ _| | _ _| _| _ _|_ _ _ | _| _| | |_ _ | _ _ _ _| | | | |_ | _ |_ _| |_| _ _ _| | | _| _ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _|_ |_ | _ _|_ | | |_ _ | |_ _ _| |_ | | _| |_ | _|_ _ _ _| | _ _| _ _ |_| |_ | _ _|_ _ _ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _ _ _ _| _ _ _ _| |_ |_ _| | | _| | | | | |_ _ | | _ _| | |_ _| | | _| |_ _ | _|_ _ _| |_ | | | _|_| _ | |_ _| | _ |_ _ | | |_ _ |_ _ _ _ _ _| _ _|_| |_ _ | _| |_ _ _ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | | _ _|_ |_| _| _ _|_ | _| _| | | |_ _|_ | | _| |_ _| |_ _ _|_ _ | |_ |_ |_| | _ _ _ |_ _ _ _|_ |_|_ _| |_| _ _ |_| _| |_ _ _| | |_ _ _| |_ _ | | | | _ _| | | _| |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _|_ | | |_|_ | _| | _| | | _| |_| | _| | | | _ |_ _| | |_ _ _| | | |_ _ _ _ _| | _ _| |_ _ |_ _ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| _ |_ _ _| |_ | _| | | |_ _|_ | _| |_ _ _| | |_|_ | |_ _ _ _|_ _| |_ _ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ | | | |_ _|_ | | | _| _| | |_ _ |_ |_ _| | _ _| |_ _| _ _|_ |_| |_ | | _ _| | _ _| _ |_ |_ |_ _ | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _| | | | _ |_ | | _|_| |_ _| _| _ _|_ |_| | _| _| _| _ |_ _ |_ _| | | |_ _ _ _ | _| | | |_ | |_ _ | |_| _ _| |_ | | _| | _ |_| _| _ _|_ |_ |_ _ | _|_ |_ |_ _| | | | | _| | | |_ _|_ | _ _ _ | | | |_|_ | |_|_ | _| _ _ _ _ | | |_ _ _ | | | _ _|_| | _ _ _ _ | |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ _ |_ _ _ _ _| | | | _| | | |_ _|_ | _| _ _ _ | | |_ _ |_ _ _| | |_ _| _| |_ | _| _| _ _|_ | | |_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | +| | | | _ _| | | _ _|_ _ |_| _| | _ _|_ |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _ | |_ | _|_ | | _| |_ | _ | _ _|_| _| _|_ _ _ _| |_ |_ _ |_| | |_|_ | |_ |_| _ _|_ _ _ _ _ _ | | _| |_ | _ _|_ | _|_|_ | | | _ _|_ _ | | | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| |_ _ |_ _ _|_ _ _| _| | |_ _ _ | | |_ | _|_ |_ _ _| _| | _ _ | _| | | |_ _|_ |_| |_ _ |_ | | |_|_ _ _ _ _ _| _ _ |_ _ | _ _| | _|_ _ |_ _| |_ | _| | _ _ _| |_ | _| _ _|_ | |_ _| _| _ _|_ _ _| |_ _| | _ _| | _| | | | _|_|_ | _ _| | |_ _ |_ _ | _| _ _ _ _ |_ | _| |_ _ _ |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _| _|_ | |_ | _| _| |_ _ _ _ _| _|_ _ _| |_ |_ | | |_ |_ _ | _ _ |_ |_ | |_ _ |_| |_ _ | _| _ _ _ _| _ |_ |_ |_ _ _| |_ _ _ _|_ | | |_ _ | | |_ |_ | | |_ _|_ _ _| |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _ _| | |_ _ _|_ _| |_ _| | | _| _ _| _| _| | |_| |_ _|_ _ | | _| _| |_| | | _| | _| | | |_ _ |_ _ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ | | _ _| |_ _ _| |_ _|_ _ _ _ _|_ |_ _ | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _|_ _ _ _ _| | |_ _ _|_ |_ _|_ _ |_ _ | _ |_ _ _ _| _ _| _ |_ _ _| | | |_| |_ | | _| _| _ _|_ | | | |_|_ _| | | _|_|_ | | | _ _| _ _| |_| | | _ _ _ _| |_ |_ |_ _|_ | _| | _| |_ _ _ _ _| _|_| _| _ | | _ _ _| | _| |_ | _ | | | | _| |_ _|_ _ _|_ _ _| |_ | | _| | | | |_ _ _| |_ | | _| |_ _ _ _ _| | _ _| | | _ _| _ _ _| _|_ _| |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_|_ _ _| | _| _ _ _ |_ _|_ _ |_ _| | | | | _ _| |_ _ _| | _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | _| | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _| _ _|_ | _ _|_ _ _ | | | _| |_ _ _ _ _| |_ _| _|_ _ _ _ | |_|_ |_ _ | | _ _| | | +|_| | |_ _| | _ _| | | _ _ _ | _| _|_ | _| _|_| | _|_|_ | | | _ _| | _ | |_ _ _ _|_ _ _|_ _ |_|_ _ _ | | | _|_ | _ _ _| | |_ | _ _ _ _ _ |_ _ _ _| | _| |_ | | _ _ _ _ | |_|_ _| _| _|_ _ | |_ _ _ _ _| |_ _|_ _ _ _| |_| | | _|_ _|_ _ | | |_ _ _ _| _ _| _|_ | |_ |_| | _ |_ _ | _ _ |_ _|_ _ | |_ | _ _ _| _| _| |_ _ | |_ _ _| |_ _|_ _ _ _ _| _| _ _| |_ _|_ _ |_ _ _| _ _ _| | | |_| |_ | |_ | | | _|_ | | | |_| _ |_ |_| | | _| | _ _| |_ | _ _| | _ | | |_| | | | | |_ _|_ _ _ _ _| | _ _| _ _ _| _| |_ _ _| _ _ |_ _ _|_ |_ | | | _|_ | |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ _| |_|_ _|_ | |_ | _ _ _ _| _ _ | | |_ _ | |_|_ | | _ _|_| |_|_ |_| _| | |_ _ _| _ _ _| | |_ _ | _| _| _ _|_ | |_ | | _ _ _ _| _ |_ |_ _| _ _| |_ |_ | | _| _ | _ _| | | |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _ _ _| _| | _| _ |_ |_ _|_ _| |_ _| |_| _| _|_ |_ | | | | | | _|_ _ _|_ | | _| _| | | _| |_ _| _ _| | _| |_ _ | _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _| | |_ | _ _ _ | | _ _ | _ _ _|_ _ _| | _ _ | |_ _ | | |_ _ _| |_ | | _ _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _| _ | _|_ _ _ _| _ _ _|_ _ |_ _| | |_ _ | | |_ _| | _ | |_ | | | |_| _| |_ _ _ _ _| |_ _|_ | _ _| | | |_ _ _ _ _| |_ _| | _ _|_ | | | _| | _| _| _| | |_ _ | |_ _ | | _ _ _| _| | |_ | _ _| |_ _ _| _| | | | |_ _| |_ _ _ | _ | _| _ _| | | | | |_ _ _| _| | | | |_ _| _| _| _ _|_| | _| | _ |_ _ _ _ | _ | | _ _ | _ _| | |_ | | | _|_ _ |_ |_ _ _ _| _ | _| _ _ |_ _ | |_ _ _| | |_ _ _| _ _|_ _ _ _ |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _| |_|_ _ _| | _ _ _| | _ _ | _| |_ _| | _| _ _ _ _|_ _ | |_ _ | |_ _| | | |_| |_ _ _ _ | _ _ _ _|_ _ | | _| |_ _ | | _| _| |_ | | | +| _|_ _ | |_ |_ | |_ _ | _|_ |_ _ |_|_ |_ | _ _| | |_ _ _ _ _| |_ _| |_|_ _| | | | | | | _ _ _ _ | |_ _ |_ _ _| | | |_|_ _ | | |_ |_ _ _| _ _ |_ _ | _ _| | | _ |_ _|_ _ | | _| |_ _ | _| | | _ _ _|_ _ | | _ | | | | _ _ _| |_ _ _ |_ _| | | _ _ | | | |_ _ |_ | | | _|_ _ | | _| | |_ _ | | _| |_ _ | _ _ _| | | _ _| _| | _| | _ _ |_ | | | |_ _| | _ _ |_ _ _ |_ _ | _|_|_ _|_ | | _| |_ _ _| |_ _| _ _|_ | |_| _| _ _|_ | | |_ _| | | _| _|_ | _|_ | |_| |_ _|_ | | |_| | |_| | _| | | |_ | _ _ _ _ | | _ _ _| | | | _ _| _|_ |_ _ |_ _| _| | | |_ _|_ |_ _|_ _ _ | | |_ _ _ | |_ _ _ _| |_ _ |_| |_ _ | | _| | _ _|_ _ _|_ | _ _|_ | | |_ _ | | _| _| | _ | | | _ _|_ |_ _| | | _| |_ _ _ _ _|_| _| | | | _ _ _| |_ | | _ _| _ _|_ | | |_| _| | | _| | |_ _|_|_ | | _|_|_ | | | _ _| _| _ _ | | | _ _ |_ |_| |_| _| _ _|_ | _ | _ _ _| | _| |_ _|_ |_ _| | | | | |_ _| | | | |_| _| _ _| _ _| _ _| _|_ _ _|_ | | | | | |_ | _|_|_ | | | _ _| _ _ _ _ | |_ | _ _| _| | | |_ _|_ _| _| |_|_ _ _ _ _ _ _|_ _ |_ _ _ | |_ _| _| _ _|_ _ _| | | _| | | |_ | _|_|_ | | | _ _|_ _ _ _ |_| | _| _ _ _ _|_ _ _ _ _ | _ _|_| _ _ _| | | |_ | | |_ _|_ _ |_ _| _| |_ | | _|_|_ | |_ _ _ _|_ _ | | | _| | |_ _ _ _| _ _| | |_| | _ _| | |_ | _| | | _| _|_ |_ _|_ _| _|_ | |_ _| | | |_ _ | | | _| | | _|_ | _ _ _| _| _| | _| | | _ | |_ _| _ _|_ |_ | | |_| | |_ _ _| |_ _| | |_ | |_ _ _|_ | | |_ | _ _| _ _| | | | _ | | | |_ _| | |_|_ _ _ _|_ |_|_ _ _| |_ _ _| | _ _ _ _ |_ _| |_ _ _| | _ _ _| | | _ _ _| |_ _|_ | _ _| _ _ _|_ _ _ _ | _|_|_ | | | _ _|_ _ |_ | | _ _|_ _ | _ | | _ |_ _| _| |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_ _ |_|_ | | _| |_|_ |_ | _ | | |_ _ _| |_ |_ _|_ _ _| | |_| | _ _|_ | | |_ _| +|_ | | | | | _|_ _| |_ | _|_ |_ _ |_ _ | | | |_ |_ _ _ _| _| | | _|_ _| |_ |_ _ | | _| |_ _ |_ | | _ |_| |_ _ _| | |_ _| _| _ _ _|_ | | |_| |_ | | |_ _|_ _ _ _| | |_ _ _| _ _ _|_ _|_ _ _| |_ |_ _|_ _| |_ _| |_ _| |_| _ |_ |_| _ |_ _| _|_|_ | |_ |_ _|_ _ |_ _ _ _|_ _| _ |_| |_|_ |_ _|_ _ |_ _|_ |_ | _|_ _ | _ _|_ _ _ | | | |_ _ _ _| _ _ _ _|_ _|_ _ _ _| _|_| _ _ | _ | _| | _ | | | |_ |_ _ | _ _ | | _ _ _| | _| |_ _ _ _ _| | |_ | _| | | |_ _| |_ _ |_|_ | |_ | | |_ | |_ _ _| |_ _ _| |_ _| | | |_| _ |_ _| | |_ _ | _|_|_ _|_ _ _| _|_ | | |_ _ |_ _ _| |_ _|_ _ _ _ _| _ | | _ _|_ _|_ _ |_ _| | | _ _ _ _|_ |_ _ | | | | | |_ _ _ _| |_ _ | |_ _| | _ _| |_ _| _ _| _|_ _| _| | | |_ |_ |_ | | _ _| | |_ _ _| _ _ _|_ _| |_ _ _ _| _| | | |_|_ _ _ _|_|_ _| _| | | | | | | _| | |_|_ _ _ _ _| _ _| | _ | | | | | | | |_ _ _| _| _| |_ _ _ _ _| | | |_ _ _ _|_ | | |_ _ _ | _ _|_ _ _|_ _ _ |_ _| |_ _ |_ |_| |_ _ | | |_|_ | _ | | | _| | _|_ _ _ _ _| |_ _| _| | | | | _|_ | | | _|_ _|_ _ _ _ _ _ |_ _ _ _ | |_ _ _ _| _| _ | |_ | _ _| | _ _ | _|_| | _| |_ _ |_ _ _ _ _| |_ _| | | |_ | | |_ | _ _ _ _ | |_ _| | _ _ _ _| | _ _| _|_ | |_| |_ | | |_ _ |_ |_| _| _| _ _ |_ | | |_ |_| | _| | | | | |_| _| | _|_ _ _ | | _ _| | |_ |_| | _ _|_| _| | | | | _| _| | _ _| | | _| | | | |_ _| |_ | | | _ _ _| _|_ _| _| | |_ |_ _| |_| | _| _| |_ | |_ _ _ _ _|_ _ _| |_| _| |_ | |_ _| | | _ |_ _| _| |_ _|_ |_| |_| | _ _| | |_ _ _ _ | |_ _ |_ _ _ _| _ _|_| _ |_ | _ _| _ | | | | | |_|_ _| _ |_ | _ | | _ _ _| _ _ | | _|_ _ _ _ _| |_ _|_ _ _ _|_ | | | | | | | |_ _|_ _| | | _ |_ _ _ _ | |_|_ _ _ _ _| | _ _|_ _|_ | | | |_ _ _ _| _| | | |_ _| _| _ _|_ _ | _ _ | | | | |_ | _ | |_ | | +| _| |_ _ _|_| | _| | _| _|_ _ _ _ _|_ | _| | | | | _| | | | | | |_ _| _| _ |_ |_ _| | |_ _ _| _| | _|_| |_ _| _| |_ | _|_ _ _|_ |_ _ | _ _|_ _|_ | | _| |_ _ _ _ |_ | _| | _ _ _| _ _ |_ _ | _ _| | _ | _ _ _ |_ | _| _| _ _|_ |_ |_ _ |_ _ _ _ _| | | _ |_ _ _ | _ _ _| |_ | | _| _ _ |_ _ _ _ _| _|_ _| | |_| _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ | _| | |_ |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _|_| | | |_ _ _ | _ |_ |_|_ | |_ | |_ | |_ |_ _ |_ _ _ | |_|_ | |_ _ _ _ _ _ _| _| _ _ _| | _| _ _ _ _|_ _| | | _ _ | _ _ _| _ | |_| _ |_ _ | | _ _ | | _|_ | |_ | _ | |_ _ | _|_ _ _| |_ | | | _|_ _ _|_ | | |_ _ |_ | _|_ _ _ _| _ _| | _| _ | | _| | _| | | | _|_ _| _| |_ | _| _|_ |_ _ |_ _ _ _ _| | | |_ _| _|_ _ |_ _ |_ |_| _|_ _| |_| | |_|_ _| |_ _ _|_ _ _ | _ _ _| | _| | _| | | |_| _|_ _ _ | | | | _ _ | |_ _ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ | |_ | _ _|_ |_ |_ _|_ _ |_|_ _| _| | | |_ | |_ _ _ _ _ _ _ _ _ _| | | |_ _|_ _| |_ | | | _|_ |_ _ _ _ _| |_ _ _ | _| |_ _ | |_ | | |_ _| _|_ | _|_ _ | |_| | _ | | | _| _| _ _ _ | _|_ _|_ |_ _ _| |_ |_| _ | | _| |_ _ | | _ _| | |_ | _ _ | |_ | |_ _| | _ _| | _| _| _| _| | _| _| |_ |_ | |_ _| _|_| |_| | | _| _|_ _| _ _ |_|_ | _ _| | _|_ | |_ _| |_ _| | _|_ _|_ _| _|_ _ _ _ _| |_ _| _|_ _|_ _ _| | |_| |_|_ _ | _| |_| _| _|_ |_ | _| _ _|_ _|_ |_ _|_ _ _ _ |_ | _ _|_| _| _| _| | _ _ _| | |_ |_ _ | | | | _ _| _| _| | _ _| _ | | _| |_ _ | _ |_| | | _ _ _| |_ |_ _| _ _ |_ _| | | |_ _| _ _ _| |_ | |_| _| |_| _ _ _| | | |_ _| | | _ _ _ _ _ _| | _ _ _| |_ | |_ | |_ _ | _ _|_ |_ |_ _ _ | _| |_ _ | | | _ |_ | | _| _|_| _|_ |_ _ _| _| _| |_ | _ _| | | _ _| |_ |_ _| | | | |_| _| | | |_ |_ _| +| _ _ _| | _| |_ _ _| |_ _| _ _ _ _ _| _|_ _| |_| | |_ _ _|_ _| |_ _| |_ _ _ _| _| _ _|_ | | _| _ _| | | | _| _ _ _ | _|_ _ _ | |_ _| | _ _ _| | |_ |_ _ | _ _ | | |_ | | _ _ _| | | |_| |_ | | |_| | | | _ _| _| | _| |_ _ _ _ _| _ _ _| _ | _ _ |_| |_| | |_ | _ |_ _ _ _| _| | |_ |_ |_ _ _| _ _ |_ _ | _|_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | _| |_ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| |_ |_ _ _| | | |_ _ _ _ | |_ _ _ _ _|_ _ _ |_ |_ | | _|_ _ _ _ |_ _ _| | _| _| | _| |_ _| _ _ _ | | _|_ _ _ _| |_ _ | _|_ _|_ | _|_ | _|_|_ _| _| |_ _|_ _ |_ _| _|_| | |_ | | |_ _| _| _ _|_ _ _| _|_| _ | |_|_ _|_ _| _ _| | | |_ | _ _ | | |_ _ _ _| | |_ _ _ _|_ |_ | |_ _| | _| _| |_ _ _ _ | |_ _ _ | _ _| |_ _| |_ | |_ _ |_ | | | _| _ |_ | |_ _ _ _ _ _ _| _ _ |_ _ | _ _| | | _| | | _|_|_ |_| | | | |_ _ _|_ _| _ _ _|_| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _|_ _| |_ |_ |_ _ |_ _ | _|_ _| |_ |_| | _ _ _ _ | |_ _| _| | _| _ |_ |_ _| |_ | _| _| _ _ _ _|_ | _|_ _ _| | | |_ _ _| |_ _ |_ _| |_ _ |_ _| | |_ | | |_ _|_ _ _| _ _| _ _|_ _| _| _| _ |_ |_ | _| | |_ _ _| | | _| _ _|_ _ | |_| |_| | | |_ | | | | _ _| _ _|_ _ | |_ _ _| _| |_ |_ |_ _|_ |_ _ _ _ _ _| | _ _| _ _ _|_ | | |_| |_ | | _ _ _| _ _ _|_ |_ | |_ _ | _ _ _| _ _ _ _ | |_ _ _ | |_ _ _|_ |_ _ _| | _ _| | _| |_ _|_ | | |_ _| _ _ _ |_|_ _ _ _| | _| | | _ _ _| _|_ _ | | _ | | |_ |_ | |_ _ _|_ _| _ _ _ _ _| _| | |_ |_ _|_ _ _| _| |_ | | _| | |_ _ | | _| _ _|_ |_ | _| |_ _ |_ _ | | _|_ |_ |_ |_ _ | _|_| |_ |_ |_ _| |_ _ | | _ _|_ _| _ |_ |_| | | |_ | _| | _ _|_ | |_ _ | |_ _ _| _| |_ |_| | | | | | _| _|_| _ _| | | _ _ _| |_ _ | _|_ | _|_| | | | _ _ _| | | | |_ | | _| _| | | | +|_ _ | _| | | _ _ _ _| | _ _ _| | | |_| _ |_ | |_ _ _ _ | _| |_ | | _| |_ _ _ _ _| | |_ _| _| _|_ _ _| | | _ _| | | | _ _|_ _|_ _ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| | _| |_ _ | | | |_ _|_ | | _| |_|_ | | |_ _ _| _| | |_ _ _| | | | _ _| | | | _ _| _| _| _ _|_ | _ _| | | |_ _| _ _ _ | _ _ _| | | |_ _ _| | _ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_| | |_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | _| _| _ |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ _ _| _ _ |_ _ | _ _| | | _| _| | | | _ _ _| _ _| |_|_ _ _ | |_ _| | _ _ | _|_| _ | | _ _ | |_ _ _ _ |_ | _| | |_ | | |_|_ | _ _| | | _ | _|_ _| |_ _|_ _ | | _|_ _| |_ |_ _ _ _| |_ _|_ _ |_ _ |_ _ _ | |_ | |_ |_ _ _|_ _| _|_ _| _| _ _| | _ |_ | | _ _| | | | | _ _| |_ _ _|_ _| _| _ _|_ | |_ | _ _ _| | | |_| |_ | | | |_ _| |_ _ _ |_ | |_ _| _|_ _| _ _ |_ _ | _ _| | | |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ | _ _ _|_ _ _| _| _ _ _| | | _ |_ |_ _|_ _ | | _| |_ _ | |_ _| _| _ _|_ | _| | |_ |_ _ _ _ _ _| _ _|_|_ _ |_ | | | | | _ _| _ _ |_ | | |_ _ |_| | | _|_|_ _ | _ _ _| | | _ _ |_|_ _| _| _ _|_ | | | _| _| _ | | | _| | | _ _ _| | _|_ | | | |_| _| |_ |_ | | |_ | _| | _ _ _| _| _| | _ _ _ _ _| | | | |_ _ | _|_ _|_ | | _| |_ _ _ |_ _ _| |_ | | | | _|_ _ | _|_ _ | | _| |_ _ _|_ _|_ _ | | _ _| | _|_ _ _|_ | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | |_ |_| |_ _ | |_ _ _ _ _| |_ _| | _| _|_ _ _| _ _ _ |_| |_ _ _ _| _|_| _|_ _ _| _ _ | |_ _|_ | | | | _|_|_ | _ _ _ _ | | _ _| | | | _|_|_ | _ _ _ _| _ _ _ _| | | _| _| _|_ _ | | | |_ _ _| _| _ _|_ | | _| _| | _|_ | | |_ _ _ |_ _ _ _ _ | | | | _| _| | |_| | | | _ _|_ |_ _ | _| _|_ _| |_ _ |_ _ | | _ _ _|_ _|_|_ |_ _|_ | | | | | | +| |_| | _ _|_| _ _ |_ _ | _ _| | | _| _| _ _|_ | _ _| |_ _ _| | _| | | |_ _ | _| | | |_ _ _| _ _ |_|_ | _ _| | |_ _|_ _ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ _| | | |_ _ | | |_ |_ _ | _|_ _ | |_ _| |_ | | _ _| |_|_ |_ |_ | |_|_ _ |_ _ _| | | | | | | _ _| |_ _| | | | |_|_ _ | |_|_ _|_ | _ _| | | _ _| | |_ | _|_|_ | | | _ _| _ _ _ | | |_ _ _| _ _ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _ _|_| _| _ |_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _| | | |_| |_ | | | _| |_ _ _|_ _ _ _ _| | _ | |_ _|_ _ | _|_ _ _|_ _ _ _ |_ _|_ | _|_ _|_ _ _ _ _ _ | | |_ | |_ | | |_ | _|_ | _|_ | | |_ _ _| _ _ _ _ _|_ _| | | | |_ | _| _ | _ _ | |_ _ | _ _|_ _|_ _ | | | | | _ _ _| |_| | _| | | |_ |_| _| | | |_ | | |_ _| | _ | _ _ | _| |_ _ _ _ _| |_ | |_ _ | |_|_ _|_ | | _| |_|_ | _| | |_ _ _ _|_ _ | _ _ _| | | |_| |_ | | | | |_ | | _|_|_ | | | _ _| _ |_ | | _ |_ _ _| |_ | | |_ | _| _ _| _| _ _|_ |_ _ _| | |_ _ _| _| |_ | | _| |_ _ _ _ _| | _ _ _|_ _ _ _ | |_ _ _ | | |_ _ _| | | |_ _ _ | _ |_ |_ _| |_ | |_ |_ _ _| _ _ |_ _ | _ _| | _| | | |_| _| |_ _ _ _ _| | | |_ | _| _| | | | _| _| | _| _ |_ _| |_ | | _ | | | | |_ _ _| |_ _| |_ _ | | _|_ | |_| _ | | _ _ _|_ _|_| |_ _| | |_ _ _| | |_ |_ _ | _ _ _ _ _|_ _ _| | |_ _ _ _ _| | |_ | | | | _| | _| _ | |_ _| | | _ _|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | |_ _ | | _| | _ | _| | _ _|_ |_ | _ _ _| | |_ _ _|_ _ _ _ | |_ | _ _ _| _| | | | _ |_| | | |_ _| | _ _|_| _ _ |_|_ | _ _| | _| | | _ _|_| _ _ |_ _ | _ _| | | | _ |_ _ | | |_| _ _ _| _| |_ _ _ _ _| |_| _|_ |_ _ |_ _| | | | _ _| _ _ _ | |_ _| |_ | _|_ | |_| |_ _| | _ _|_ _| | | | _|_ |_ | |_ |_ _ |_| |_ _ _ | | _ _ _ _ _ _|_ _| |_ _| | +| |_ _ _| | _ _ _| | | |_| |_ | | |_| _| |_ _ _ _ _| | | _| _ _ _|_ _| |_ | | _| |_| _|_ _| | _ _ _| _| | |_| |_ | | |_ _ |_ _ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ | _| _| | | _|_ _ | | | | _|_ | _ | _ _| |_ _| | |_|_ | | _ _| | _| |_ _ _| | |_ _ | | | _| | | | _| |_ | |_ _ _ _|_ _ _| | _ _| |_| | | _ _ |_| |_| _| | | |_ _|_ |_| |_ _ | _| | |_ _| | _ _ _|_ _| _|_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_|_ _ | _|_|_ _|_ | | _| |_ _| _| _ _ |_ _ | _ _| |_ |_ _| _ _ | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _|_ _ _|_ _ _| _| |_ _| |_ _ |_ _| _ _| | | _ _ _ _ | _|_ _| |_|_ _|_| _| |_ _| | _| _ _| | |_ _ _ _ _ _ | |_ | | | |_ _ | | | |_ _ _|_ _ _|_ _| | |_ | | _| | | _| | _ _ _|_ | |_ _ | | |_ _ _ _ _ _| | |_ _| | |_ _ _| | |_ |_ _ | _ _ |_ _ _| _ _ _ |_|_ _ |_ | |_ _|_ | | _| |_ _| |_ _| |_ _ _ _ _| |_ _| | _|_ | | | |_ |_ _ | _|_ _ _|_ _| | _|_ |_ | | | |_ _ _ _ _| | | _| _ |_ | | _| | |_ |_ _ _| | _ _ _ | _| |_ _ |_| | |_ _ _ _| |_ | | |_ _|_ |_ _ _ _| |_ _ | | _ _ _| | | |_| |_ | | | _| |_ _|_ | |_ | _ _| _|_| | |_ | | | | |_| |_| _| | | | | | |_ _ _| _ _|_ |_ _ _| |_ _ _|_ _ _ | _| | | | | _ _|_ |_ _| | |_ _ _ | | _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _ _ | |_ _ _ _ | _|_ _ _|_| |_ _| _ _|_ | _|_ _|_ _ _ _ _| | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | |_ _| _|_ _|_ _| | _| |_ _ _ | |_ _ _ _ _ _|_ _ | _ | _ | | | _| |_ _ _ |_ _ _| | | |_ | | _| |_ | _| | | _ _ _| | | |_| |_ | |_ |_ _| |_| _ _ _| _| | |_| |_ | | _|_ _|_ |_ _| | |_ |_ _ _ | |_ |_ | _ _ _| _ _ _ |_ _ |_ | |_ _| | _| |_ _| | |_ | _| | | |_ | _|_ _| | _|_|_ _ _ |_ |_ _ _ _ _ |_ _ _ _ _ _|_ _| | | _ _ _ _ | |_ _ _| | +| _ _ |_|_ _ | |_|_ _|_ | | _| |_ _ | |_ | |_| | |_ |_ | _ |_| _| _| | | | _ _| _ |_ _ | _ |_ _|_ | | _| |_ _ _| _|_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| _| | _|_ _ _| | | | |_ | _| | _| |_ _ _ _| _ |_ _ | | |_| |_ | | | _| |_ | _|_ _ _| |_| | | | | | |_ _| _| |_ _ _ _| _ _ |_ _ | _ _| | _| |_ _|_ _ _|_ _ _ _ _| |_ _|_ _ _ _ _| _| _ _|_ |_ _|_ _ |_ _ _ _ _ _ _| |_ | _|_|_ | | | _ _|_ _ _ _ | | | _| | | | | | |_ |_ _ | _ _ _ | | |_| |_ | | _|_ | | |_ _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | |_ _ _|_ |_ | | |_ _ |_| _ _| | _| _ _ _|_ _ _ _ _| |_ _ | | _| _|_ | | _ _| |_ _ | |_ _| _|_ _| _ _| | _| | _ _ | _ _| |_ |_ _|_ |_| |_ | |_ |_ | | _| _| |_ |_ _|_ _ |_ _ _ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_| _ _ _| | |_ _ _| | _|_| | | |_ |_ _ | |_ _ |_| _ _ _ _ | _ _| _| |_ _|_| |_ _ _| |_ | _ _ | _| |_ | | | | |_ _ | _| |_ _| | | | |_ _ _ | | | |_ | |_ _|_| | | | | | |_|_ _ _| _| | _| |_ |_| _ |_ |_| | | | _ _ _| _ _ | _| | |_ _ | _|_|_ _|_ | | _| |_ _| | | | |_ | | | | | _| _ _| |_| _| |_ _|_ |_|_ | |_ _|_ _ _| | _ _| | _| | _| | _ _ _ |_ | _|_|_ _ _| | | _ _ _| | _ _|_ _|_ _ _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| |_ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ |_ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ | | | | |_ _ _|_ _ | |_ _ _ _ |_ _ _ _|_ _|_ _ _| _| _| |_ _ | _| |_ _|_ | | _| |_ _ | |_ |_ _ | _ |_ _|_ | | _| |_ _ _ _ _ _| _ |_ | _ | _|_ |_| |_ _ |_ _ | _ _ |_ _ | |_ | |_ _ _|_ _ _|_ _ _ _ |_ _ _|_| _| | |_|_ | |_ _ |_|_ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ | _| +| |_ |_ _ _| | | | _ | | |_ |_ _ | _|_ | | | |_ | |_ _|_ | |_ |_ _ _| _| |_ _|_| | _ _| _| _| |_ | _ _| | |_ |_ _ | _ _ _ _| | _| | | |_ _|_ | |_ _ _ |_ | | |_ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| | | _ _ _| |_ |_ | _| _| _|_ _ _ | _|_ _ _ _|_ _|_ | | | | |_ _ | _|_ _ _ | | _|_| |_| | | | | |_ | | | _ _ _| | | |_| |_ | | |_ |_| _ | _ | _ _| |_ _ _ _ _ | | | | | |_ _ |_ _ | | | _ _ _ _|_ |_ _ _ _ _ _| |_ _|_ _ _ |_ | | | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _|_ | | _| |_ _ _ |_ _|_ _ _ _ _| |_| | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | | |_|_ _ _|_ |_ _| |_ | |_ | | | |_ _ _| _ _ |_ _ | _ _| | _ _| | | _|_ _ _ _|_ | |_ | _| | |_ | _| | |_ | _|_ _|_ _ | _| _|_ _ _ _ _ _ _|_ _ _ _ | |_ _ | | | | | _| |_ _ _ _ _ | | | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ |_ _ | _| | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ _| | | |_ | _| _| _ |_ |_| _ _| |_ _ | | |_ _ |_ _ _| | _| | | |_| _ _ _| | | |_ |_ _ _| |_| |_| _|_ |_| _ _| | |_ |_ _|_ _ _ |_ | |_ |_| _| _| _ _|_ | |_ _ _|_ _ _ _ _|_ _|_ _ _| _| | | _ _ | | |_ |_ _ | _ _| | |_| _|_ _ _|_ _ |_ | _ _ _ |_ _ _ _ _ _ _ _|_ |_| _ _ |_|_ | _ _| | | _| | | | | |_ | _| _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| _| _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ |_ | | | _|_|_ | | | _ _|_ | | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ |_ _| | | | | | | |_ |_ _ | _ _| _ | | _| | | | |_ |_ _ | _ _ |_ _| _|_ _| | _| _| _|_ _ _ _ _| |_ _ |_ _ |_ | | |_ _| | _ _ _ _ | |_ _| _ _ | | _ _| | _|_ |_ _ |_| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | | | +|_ _ | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _|_ _| | |_ _ _ |_ _| | _ _ _| _|_ _ _ _ _| | |_ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_ _ _| |_ _|_ _ _ _ _| | |_ _ | |_ _|_ _ |_ _| | |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _ _|_ _ | |_| | | _ _ _|_| _| _|_ _ _|_ _| | _ _| | _ _ _ _ | |_ _ _| | |_ | _| | _ _|_ _| |_ _ _ _ _ _| | _|_ _ _ _|_ |_ _ | _|_|_ _|_ | | _| |_|_ |_ |_ | | | | |_ _ _ _ _ | _ |_ _ _| | _|_ _|_ _ _|_ _ _ | | | |_ _ _| |_ | | _ _ _ _ _ _ _| | _ _|_| |_ | |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | |_ |_ _ | _ _ |_ _ _ | _ _| | | _| _|_|_ | | | _ _|_ _ _ _ | | |_ _| |_ _ _ |_|_ _ | | _|_ _ _ |_ _ _|_| | _ _ _| | | |_| |_ | |_ _ _ _| | _| |_| | _|_ | |_ |_ _| _|_ _ |_ _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_|_ |_ _ _|_| |_| _ _| | _ | | | |_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ _| | | | _| _| _| _ _|_ | | | _| _| | | _ _| | _| | | _|_|_ _ _| _ _ _|_ _ |_ | _ _ _ _| _| |_ | |_ | |_ | | _ | | _| | | _| _| _| |_ _ _ _ _|_ _ _ | | | _ _ _ _ | |_| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _|_ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _ | | | |_| |_ | | | |_ _ _| | |_|_ | | | _ _ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | _| | |_ _ _ _| _ _| _|_ _ | | |_ |_ _| | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ | | |_ _|_ _ _ _ _| |_ _| | _|_ _| | | | | _ _|_ | | |_ _ | |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _| | _|_ _| |_|_ | | _ _|_| |_|_ | _| _ _|_| _| _ _ | _ | _|_ _ _ _ |_ |_ | | | |_ _ | | _| |_ _ | _ |_ _| | _ _| | | _ _|_ |_ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| _ _ | | | | | | +| | _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ _ _ | | _ _| |_ _ | |_ | _ | |_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | _ _ | _| _ _|_ _ |_ _| _ _|_ _ | _| | | |_ _|_ | _|_ |_ _ | | |_ _ | _| | |_ | | |_ _ _ | _| |_ | | _ _ _| | |_ |_ _ | | _| |_ _ | _|_ |_|_ |_ _|_ _ _ _ _ _| _ _ _| | | _| | _ _|_ _| | | | | | |_ |_ _ | _ _ | |_ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| |_ _| _| _ _|_ _ _| | | | | |_ _ _| |_ _| _ |_ |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_|_ | | _ _|_| |_ _ _| _| |_ _ _|_ _|_ |_ _ _ _ _| |_ _|_ | _| _| | | |_ | _ _ _ _ _ |_ _ _|_| _ | _| _ _ _ |_ _ | _|_|_ _|_ | | _| |_ _ _ | | _| _ _|_ _| _ _|_ _|_ | | | | | _ _|_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ |_ _ | _ _| |_ _| | |_ _ _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _|_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | _| |_ _| _| _| |_ _ _ _ _| | | | | | _| | | |_ | _| | | |_|_ _ _ | |_ _ _ _ | | _| | | _ _ _|_ |_ _ | | _| |_ _| |_| | _| |_ _ _| | |_ |_ | |_ _ _ _ | _ | | |_ _|_ _ | | _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ |_ _|_ | | _| |_|_ _ |_|_ _ | | |_ _| | | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _|_ | | | | _ | | |_|_ _ | |_ _| _|_ | _|_ |_ _| | | _|_|_ | | | _ _| _ | _| | | | |_ | | | | _ | _ _ _ _ _ _ _ _|_ _ |_ _ _| |_| _| | _ _| |_ _| _ _| |_ | _ | _|_|_ | | | _ _|_ _ |_| | | |_ _ |_ _| | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ |_ | _ _|_ | | |_ _ | _| _|_| _ _ _|_ _ _| _| | _|_ _ _ | |_| |_ _|_ _|_ _ _ _| | |_ _ _| _| | | | | |_| |_ | | |_|_ |_| _ | _|_ |_ _ |_ | _|_|_ | | | _ _| _ |_ _ | | | | _ _ | | | | | | | +| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _ _ _ _ _| | | | _| | _ _|_| _| |_ _ _ |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | |_ _| | |_ _ _ _ _ _ |_ _ |_ |_ _ _| |_ _ _| |_ _|_ _ _ _ _| _ |_ _ _ |_ _|_ _ |_ _| _|_ _|_ _ | | |_ _ _ | |_ _|_ _ _ _ _|_ | _| | _| | |_ _ _| | | | |_ | _| _ | _ |_ | _ _ _|_ _|_| _| |_ _ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _| | _ _ | _ _| |_ _|_ _ |_ _ _ _| _| _ _|_ | |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | |_ | _ _|_ | | |_ _ | _ |_ _ _ _ | |_ _ | _ | _ _ _|_ _| _ _ _| |_ |_| _| _ _| |_ _ | | | |_ _| _ | _| _| | | _ _| | |_ |_ _ | _|_ | |_ _| _ _ |_ _ _ _| | |_ | |_ _| | _ _|_ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | | |_| |_ | | _ _| | _ | _| _| | | |_ _|_ | | _| | _ | | |_ _|_ _ _ | | |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| |_ | | | _ _| |_ | |_ _ | _ _ _| | | |_|_ _ | |_ | | |_ _|_|_ | _ |_ _|_ _ | | | |_| | _| |_ _ | _ _| _ _| |_ |_ | _| _| | |_ |_ _ |_ | _| |_ | _|_ |_ | | | |_|_ _ _ _| | |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_ | | |_ |_ _ | _|_ _ |_ _ | _ _| |_ _| | | |_ | | _|_|_ | | | _ _| _ | _| | _|_ _ _ _ _|_ _| | |_| _|_ _|_ _ |_ _| _ _ _ _| |_ _ _ | | _ _ _|_ _ _ _ _| |_ _| _| _| | _| | |_| _|_ | | | | |_ | _ _ _ _ | | _| _ |_ |_ | |_ _ _ _| _ _| _ _|_ | | |_ _|_ _ _ _ _| |_ _| _ _ _| |_ | | | | |_| _ _| | | |_ | _|_|_ | | | _ _| _ _ _ _| |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_|_ |_ _| | _ _| |_ _| _ _| | _ _ |_ _ | _ _ _| _| | _ _|_ _|_ _ |_| _ _ _ _ | _ _| _ | _ | |_ |_ _|_ | | _| |_ _ _ | _|_ _|_ _ _ _ | | |_ _|_ _ _ _ _| |_ _| _ _| |_ | | | | |_ _| |_ _|_| |_| | +| _| |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _| _ | | | _|_| | | | _|_ _ _ _ _| |_ _ _|_ _ _ _ _|_ _ _ _ _ | _ |_ _ _ _| _ _| _ _|_ _| | _ |_|_ _ _ _ | |_ _ | _| _| | _ _| _ | | _ _ | | | | |_ _ |_ | _ | |_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _| _| | _| | _|_| | |_| | _|_ |_ | |_ _| |_ | |_ _ _ | | _| _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| _ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | _|_ |_ _|_ _ _ | _ | |_ _ _ | _| |_ _ _ _ _|_ | | | |_ _|_ | | |_ | _ | | |_ _ | |_ _| | _ _| |_ _| _ _| | |_ _ _ | _| |_ _ | |_ |_ _| |_ | _ |_| _ |_ |_ |_ _ | _ _| | |_ _| | | |_ _ |_ _| |_ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ _| _| | |_| _ _| | | _|_ | _|_ | _ _| | | | | | _|_|_ | | | _ _| _ _ | | | | _ |_ _|_ | | _| |_ _ | |_ | |_ |_ _ _| |_ _|_ _ _ _ _| |_ _ | | | |_ _|_ _ _ _ _ _ _ _| | _| | | |_ _|_ | |_ | _ _ | | |_|_ | | | |_ | _|_ _ |_ | | |_ _| | _| |_ _ _ _ _|_ _ _ _|_ |_| _ |_ _ |_ _ _ _|_ _| | |_ | |_ _ | _| | | |_| |_ |_ | |_ _ _| |_ | _| |_| _ _| _| _|_| |_ |_ _| |_ _ _ | | _| | _ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| | | _ _ _ _ | | _|_|_ | | | _ _|_ _ |_| | | |_ _ | |_|_ | | _ _|_| |_ _| | |_| |_ | | | _|_|_ | | |_ _ _ _ _| |_ _| | _| | _|_ | |_ _ | _ _ | _|_ | | _ _ |_ _ | | _ _ _ _|_ |_ | | |_ _| | _ _ _ _ |_| | _| _|_ _| |_ _ |_ _ _| |_ |_ _ _|_ _ | | _| | _| _| _ _|_ | | _ _ | | |_ _ | _|_ | _ _ _ | _ _ _ _ | _| _ _ _| |_ |_ | |_ | | | _| |_ _ _ _ _| |_ _| | _|_ _ _ _ | | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _ |_ _|_ _ | | |_ _ _ _| _ _| | |_| | _ _| | |_ _ _ |_ | |_ |_ _ _ _ _| | _| |_ _ | | _ _| _|_ _| | | |_ _ | | |_ |_ _ | _|_ | _| _ _| |_ _ | _ | | _ _| | _ _ _|_| |_| |_ _| _| _ |_ | | +|_| | _| | | |_ _|_ | | | _ _| | | |_ _ | | _| _| |_ _ |_ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _|_ | | | |_ _ | _| | |_ _ _ _| _| |_ _ | |_ _ _| |_ | _ |_|_ _| | |_ _|_ _ _ _ |_ | | | _| _ _| _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | | _| |_| | | _ _|_ _ _ _ _ _|_ | _|_ _ _ _ _|_ _|_ _ _|_ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ _| _|_ | _|_|_ | | | _ _| | | |_| | _| |_ _ |_ _ _ | _|_ |_ _ _ _| | |_ _ |_ _ | | |_ _|_ _ _ _ _| | _ _|_ _| |_ _|_ _ |_ _| | | |_ _ _ _| _ _| |_ | | |_ _ _| _| | | |_ _ | | | _| _| _ _|_ | | |_| |_ | | |_ | _|_|_ | | | _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ |_ _|_ | | | | _| _ _|_ _ |_|_ | _ _| | _| |_ _ _ _ _| |_ _| | _ _ | | | | |_ _| | | _| | |_ |_ _ | _ _ _|_ _ _ |_ | | _ _ | _ _| |_| | | _ | _ _ _ _ _| _|_ _ _| |_ _|_ _ _ _ _|_ |_ _| | |_ _|_ _ |_ _ |_ |_ _| | _| _|_ | | _| | | |_ | | _ _ _ _ | |_ _ _ _|_ | | |_ |_ _ _ | _|_| _|_ _|_ | _|_ _|_ _ | _| _ _|_ _ _ _ _ _|_ _ _|_ | | _ _| _ _ _ _|_ _ _| | _ _ _ |_ _| | |_ _ _ _ | _| | | |_ _|_ | | |_ _ _ | | |_ _ _ _| |_ _ | | _| |_ _ _ _ _| |_ _|_ _ _|_ _ | |_ _ _| _|_ | _ _|_ | | |_ _ | _|_ | | _| |_ _ _ _ _ _| | _ _ |_ _ _ _ |_ | | _ _ _| |_ _| |_ _ |_ _| | | | | |_ |_ _ | | |_ _ _| |_ | _|_ |_| _| | | |_ _ |_ | |_ _| _ |_ |_ _| _ _| _|_ _ _| | |_ _ _| | _| |_ _ _ _ _| |_ _ | |_|_ _|_ _ |_|_ | _| | | |_ _| | _ _ _| | _ _| _ |_ |_| _| | _| |_ _| _ _| _ _ _ _ | _ _ _| _ _ |_ _ | _| | | |_ _|_ | |_ _ _ | | | |_ _ |_ _ _ |_ _| | | _ _ | | | |_|_ _ _ _| |_ | _|_ _ _ _| _| |_ _ _ _ |_ _ _ _ _|_ _ _|_ |_ _| |_ _ | _ _ _| |_ _| | |_|_ | | _ _|_| |_ _| | | _| | _|_ _| | | | | | | _ _| | _| _ |_ |_ _ | | _| _ _|_ | +| _|_|_ _ _| |_ _|_ _ _ _ _| | |_ _ _ _| |_ _|_ _ |_ _|_ |_| _ _ |_ _ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_ |_ _|_ _ |_|_ |_ _ _ _| | _ |_ _ _| _| |_ | _ _|_ | |_ |_ _ _ _|_|_ _ _ _ | |_ _| |_ |_ _ | _ _| _|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ | |_ _| _| _| | |_| _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _|_ _ _ _| | _ _|_ _ _ _ _| |_ _| _|_ _| |_ | | |_ | | |_ _ |_| _| |_ _| _ _ _| |_ | | _| _| _|_ | _ | _| | |_ _ _ _ |_ _ |_ _ |_ _|_ | _ | | |_|_ _|_| |_|_ _ |_ | | |_ _ _ _|_ _|_ _| | _| |_ _ _ _ _| _|_ | | _| |_ _| |_ _ _ _ _| _ _|_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | |_ | | | | | |_ | | _ | |_ _ |_| |_ | |_ _ _ _ _ _ |_ _ _ _ _ _ _| |_ _|_| |_ | _|_ | |_|_ | | _ _|_| |_ _ | _| |_ _|_ | |_ _|_ _ _|_ _| | |_ _| | _ |_ |_ _ _ _| | _ _ | _| | | _ | |_ _ | |_ _ | | _|_ _ _|_ _| _| |_ _| | _ _| | _| |_ _ | | _| |_ _ | _ _ _| | | _ _ _ _| |_ _ _| | | | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _| _ _ _ _| | | _ _| | | _ _| _ _| | |_ _ _|_ _ _| |_ _|_ _ _ _ _| | | | | _|_ _|_ _ |_ _ _ _| | |_ _| _ _ | _ _ |_| | | _ _ _| |_ _| | _|_ _| | _ _| |_ _| _ _|_ | | |_ |_ _ | _ _ | |_| _ |_ _ | |_ _ _| |_| _ |_ |_ |_ _ _|_ | _| | |_ _|_ |_ _ _| |_| _| _ _|_ _ _|_ | _| _ _| |_ _| | |_ | | |_ _| _| _ _|_ | _|_ _| _| _ |_| | _| _| _| |_ | _ | | | _| |_ _ _ _ |_ _ | |_| _|_| |_ _ _ _| | | _| _| _| _ _|_ |_ | |_ |_ _ | _ _ _| _ _ |_ _| _ _ _| | | |_|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _ _| |_ | _|_|_ | |_ |_ _|_ _ |_ _ |_ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_ _ | _| _ |_ |_ | |_ | _ _|_ | | |_ _ | | |_ _ _|_ |_| | _| |_ _| |_ _ _ _| |_| _| _ _|_ | _| _| |_ _ _ _ _| +| | _ _ | | _ _ | _| _|_ | _ | _ _ _ _|_ _ | |_ | _ | |_ |_ | | | _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _| _ |_ _ |_ _ _ _ _| | |_ _| _ | | _| | _| _| |_ |_ _|_ _ | | _| |_ _ | | | | | |_ | _|_ | |_ | | _|_|_ | | | _ _| _ _ | | | _ _|_ _ | | _| _|_ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | |_ _|_ | | _ _ _ _ | | |_|_ |_ _ _| | | |_ _ _ |_ _ _ | | | | _ _ _ _| |_ |_ _| |_ | |_ | | _| _| | | _ | |_| _| |_ _ |_ _| | | | | |_|_ _ _| |_ _ _| _ |_ | _ _| | | _|_ _| | |_ _|_ _ |_ _ |_ | _| |_ _ | |_ | _ _ _ _ | | |_ _ _ _ | _| | | |_ |_ _ | _ _ _ _ _ _| _ |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ | _| |_ _| | | |_| | |_ _| | |_ | _ |_ |_ | |_ _ | _ _ |_ |_ _ _| | _| _ |_ |_ _ _ _ |_ | _ _|_ | | |_ _ | |_ | |_ | _|_ _ _ _ | |_ _ |_ _ _ _| | _| | _ _ |_ _ |_ _|_ | |_ _ _|_ _ _| _| |_ _|_| _ _| | |_ | | _ _ _ _ _|_ _ _|_| | |_ | _ _| | |_ _ _|_ | | |_ _ _ _ _ _| _ _ |_ _ | _ _| | _|_ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _ _|_ _ _ | | _ _ _ |_ _|_ _ _ _ _ _ _ | |_ _ _ _ _ _|_ | |_ _ _ _ _ |_ _ | | | _| | | _|_ | |_ _| |_ _ _| _| _ |_ |_ _|_ _ _ _ |_ _ _ _| _ _| _ _| | |_|_ | | _ _|_| |_ _ |_ _| | | _| |_ _ | _| _| _ _|_ |_ _ _ _ _ _|_ _| |_ | |_ |_| _ _| _ _| | | _ _ _ _ _|_ | | | _| _ _| | | _| |_ | _| |_ _ _ _ _| | _ _ _| _ |_ | | | _|_| _| |_ | | | | |_ | | | _ _ _| |_ | _ _| |_ | | _ _ |_ |_ | | |_ _| _| |_ _ _ _ _| _|_ | | _ _|_| _ _ _| _| | |_ _ | _|_|_ _| | _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | | |_ _|_ _ _ _ _| | | _ |_ _ | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | |_| _| _ _|_ | _| |_ _| | _ _| |_ _| _ _| | | _ _ _ _| _| | | | _ |_ _ _ _ | | _| |_ _ _ _ _|_ | |_ _ _ _ _ | +| | | | | _|_ _| | |_ _ _ _ _ _| |_ _ | _ _ _ _| | | |_ _| |_ _ | | | |_ _| | |_ _ | _|_|_ | | | _ _| |_ _ | | |_ _ _ _|_ |_| |_ _ _ _| | _ | _| _| |_ _ _ _| | | | _| _ _| |_ |_ _ _| _ |_ | |_|_ _ _| | | |_ _| | |_ | |_ _ _ _| |_ |_ _|_ _ _ _ _| |_ _| _ _| | _| | | | _ _ _| _| _| |_ _|_ | | | | | |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _| |_ _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_|_ |_ _| |_| | _ |_| |_ | _ _| | |_ _| _ |_ |_ _ _ _| _ _ _| | | | _| | _| |_ _| | _|_ _ | _| _ _| |_ _| |_ _ _ _ | | | _| _| _| |_| _ _| |_|_ | _ _|_ | _ _|_ _ |_ _ _| | _ _ _ _| |_ |_ _ | | _| | |_ | _|_ _| |_ | |_|_ | | _ _|_| |_ _| _ _ _| | | _| | | |_ _|_ | | |_ _ _ _ | | |_ _| |_ _ _| | | _|_|_ | |_ _ _ _|_ |_ _| _ _| | | | _ _|_| |_ _ |_ | _ _| _| _| _ _|_ | _|_ |_ _| | _ _| |_ _| _ _| _ _|_ | |_| _ _ | _| |_ _ |_ _ _ |_ _|_ | | |_ _ _ _| _ | _ _|_ _ _ _ | |_ _| |_ _ _ | _ _| _|_ _|_ _ _| _ _ |_ _ | _ _| | _ _|_ | _| _ _ _ _| |_ _ _ | _ _ _| | | |_| |_ | |_ |_ |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _|_ |_| _ _ | |_|_ _ _ _ |_ _ _| | _| | _|_| | |_ _| | _ _| |_ | _| _| _ _|_ | |_ _ _ _ _ | | | | |_ _ _|_ | _ _|_ | | |_ _ | | _ _| |_ _ _|_ | | | _| |_ _ _ _ _| |_ _ _ _| _| |_ |_ |_ _ |_ | _| _| _ _| | |_ |_ | |_ | |_| | _| | |_ _ |_ |_ _ | _ _| | | | | |_ _ |_ _| _| | | | |_ _| | _| _ |_ | | | _ _| | | _ |_ _ _|_ | | | | | |_ | _ _| _ | _ _|_ | |_ _ | | |_ _|_ _| | | _ |_ _| _|_|_ _| _| |_ _ _ _ _|_ | |_ _ _| _ _ _| | | | | _ _ _ _ _ |_| |_| | _ _ _| |_| |_ _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| | | _| |_ _ _ _ _| | _ _ |_ _ _ _| _ _| _ _|_| | _ _ | |_ _ _|_ _| _ | | _| | |_ _ _ | _ _ _|_ | | |_ _ _| +| _| | |_| _ _|_|_ _ _ _ | |_ _ |_| | _ | _ _| |_| _ _ _|_ _| |_ _| | _ _ _| |_ _ _ _ _| |_ _|_ _ | | |_| | | _ |_ |_ |_ _ | _ _|_ | |_ | | _| | | _ _ _| |_| |_ _ | _ | | _ _ _ _|_ | |_ _ _ _ | |_ _ _| | | |_ _| | _ _ |_ _ | _ _ _ | _ _ _ _ | _| _ _|_| |_| _ |_ | | _ |_ _ _ _ _| | | |_ _|_ | _|_|_ | | | _ _| _ _| _ | | _ _ | | _ _ | _| | |_ _ |_ _ _ _ |_ _ | |_ _ | _ _|_ | | _| | | | _ _|_ |_| _| _ _|_ | | _ _| _ _|_ _ _| | _ _| | _|_ | |_ _| |_ |_ _ _ _ _ _| _| | _| |_ _| _|_ _ |_ | _ _ _ _| |_ _ _|_ _ _ _| | _ _ _| _| _ |_ |_ _ _| | |_ _ |_| _| | | _ _ _| _|_ | _ _|_ | | |_ _ |_ _ | | |_ _ _| |_ _|_ _ _ _ _| _| _ _| |_ _|_ _ |_ _ _| _|_ _ _|_ _ _ _ _ |_ |_ _| | |_| _|_ | | |_ _ |_ |_| | _ _| _| |_ _ _ _ _|_|_ _ |_ |_ |_ _ _ _| _ _| | _| _ _ _|_ |_ _| | _|_ _ _| | | _ _ _ _ _ _ _| | | | _ _| _|_ _ _ _| _| |_ _ | |_ _ | _|_ |_ _| _ | _ _ _|_ | | |_| |_ | |_ _ _ _ | | _ _ _|_ | | _ | |_ _ | _| |_ _|_ | | _| |_ _ |_| | _ _| _| | | _|_|_ | | | _ _| _ | _| | _ |_ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| | _| |_ _ | |_ _ |_ | _ _|_ _| | | _ _|_ | | _| | _| | _| | _| |_ _ _ _ _|_ | _ | | _| |_ |_ _|_ _ |_ _ |_ _| | _ _| |_ _| _ _|_ _| _ _ _ _ _ | | | |_ _ | _ _ _| |_ _ _|_ _| _| | |_ _ _ | | _| |_ |_ _ _| _| _| _| _| | | | | | _|_ _ _| |_ | | _| | _| | _| | | _ _| _ _|_ _ |_ _ _| _|_ | | |_ _ _ _|_| _| _ _ |_ _|_ |_ | | |_ |_ | _| |_| |_ _| |_ | | |_ _ |_ |_ _| | _ _| | _ _| | _| | | | _|_|_ _ _| _ _|_ _ _ _ _ _ |_ _ _ _ | |_|_ _ _ _| | | _ _| | |_| | _|_ |_ _ | _| _| | | _ _| | _ _| | _| |_ _ | _|_|_ | | | _ _| |_ _ | | | _ _| | |_ _ _ _ | | |_| | |_ _ _| | | |_ _ _ _|_ _ | |_ _ | _ |_ |_ |_|_ _ |_ | | |_ _| _| | |_ _|_ _ _ | +|_ _ |_ | | |_ _ _ _ _ | _| |_ _ | | _| | | |_ | _ _ _| _ _ |_ _ | _ _| | | _ _ _ _ _| _ _ _ _ _ _|_ |_ _ _| |_ |_ _ _ |_ _ | |_ | | _|_ _ _| | |_ |_ _ _ |_ |_ |_ | | | | |_ _ _| _ _|_| _ _ |_ _ | _ _| | |_ _ _|_ _ _| _| _| | _| |_ _| | _ _| | _ _| _ |_ |_ |_ _ _| _|_ _| _ _ |_ _| _ _| | |_ _ _ _ _| |_ _| _| _ _| _| | |_ | |_ _|_ | |_|_ _ _ _|_ | |_ | _ _ _ _ _| | _ _| |_ | _ _|_ _| _| |_ |_ | _| _| |_ _ _ _ _| | | _ _|_ _| _ _ |_|_ | _ _| | | _ _| |_ _ _ _ _ | | |_ _ _ _ _ _|_ _|_ _ _ _ _ _ |_ | |_ _ | |_ _ | | _ | | _ _| _ _ |_| _| _ _|_ | _ _| _ _ _| _| _| |_ _ | | _ |_ _| | _ _| |_ _| _ | _| | |_|_ _ | | _ _ | _ _| |_ |_ _| |_ _ |_ _ |_ | | _|_ _ _ _| _ _ |_ _ | _ _| | | _| _ _| |_ _| _ _| |_ _ _|_ _ | |_ _ _ _ | _ _ _| _| _ _| _ | | |_ _ |_ | _ | | _ _| |_ _ _ _ _| | | _| _ _ | |_|_ _| | | |_ _ _ _ |_|_ |_ _ _| | |_| _ _|_ | |_ | _| |_ _ | _|_ _|_ | | _| |_ _ | | | | |_| | | |_ | |_ _| | |_ _| | | |_ |_ _ | _ _|_ _ _ _| |_ |_ _ _ _ _| |_ _|_ _ | | _|_ | | | |_ | _ _| | |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ |_ _ _|_ | | | _ _| |_ | _ _ _| | | _| _| |_ | | | |_ _ | |_ _ _ _| _|_ _| | |_ _ _| | | _| |_ _ |_ _ _ |_ _ _ _| _ _| | _| |_ _ |_ _ |_| | |_ | | |_ _|_ _ | |_ | | _ _ _| | _|_ _ |_ _ |_ _ _ _|_ _ _ |_ | |_ _| _| |_ _ _| | |_ _ | _| _| | | | |_ | | | _|_|_ |_ _| _ _ _ | _ _ _| _ _| |_ _ _ _ | | _| |_| | _| _| |_ |_| _| |_| _ _ _ _| _| _| _| _|_ | | _ _|_ _ _ _|_ | _|_ _| | | | |_|_ _ _ | |_ _ _ _ _ |_ | | _ | _| |_ _ |_ _ |_ | |_ | | |_ _ _ _| |_ |_|_ _ _| | | |_ | |_| |_ | | | |_ _ _|_ _ _ _ _| |_ _| _| | |_ _ | | | |_ | _|_ |_ | | | |_ _ _| |_ _ _ _ _| |_ _|_ _ |_ _ _ _ _|_| |_ _ |_ | |_| _ _ _| _| _|_ _ |_ _ | |_ _ _ | | | +| |_ | | |_ _ _ _ | |_ _ _| | | _| _| _| | | | _ _ _|_ | | |_| |_ | | |_ _ | _| _ _| _ _| _ _| _| _ |_ |_ |_ _ _ _ |_ _ | | _| _ _ _| |_| |_ _ _ _ _|_ _ _ |_ |_ _| _|_ _ | | | _ _ _|_ | | |_| |_ | | |_ _| _ _ _ | _ _| _| |_ _ _ _| |_| _| _| _| _ _|_ | |_ _ _ | _ _ _| | | |_| _ _| | _ _ _ _ _ _ _ | |_ _ _| |_ | |_ |_ | _ _|_ _ _ _ | |_ _| _|_ _ _ | _ _| | _ _| _| | _ _ |_ _ _ |_ _ _|_ | |_ | _ _ _ _ _|_ | _ _ _| _| | |_| |_ | |_ _| |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _ _| | | | |_ _ _ _| _|_ _ |_ | |_ _ | | _| |_ _ _ _ _ _|_ _| _ _ _| _|_ _ _ _| | | | | | |_ _ _ _| _ _| _| | _|_ | _ _| |_ _| | |_ _ _ _ | | _ _|_ _ _| _ _ _| | _| |_| | _ _ _| | | |_| |_ | | |_ |_ _ _ _| _ _| _ | | _ _|_ | _| _ _| |_ _ _ | |_ _ | _| _|_ _|_ _ |_ _ _| |_|_ _| _|_ _ _ _ | | | | _| | _| |_ _ | |_ _|_ _ |_ _ | _ _ |_ _ | | | _| | _ _|_ |_ _| _|_ _| | |_| _ | | |_ |_ _ | |_ _| |_| |_ _ _| |_ _ _|_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | _|_ _ |_ _ _ _ | | | _ _ _| |_ | _| | _ _| |_ _ _| | | _|_|_ | | | _ _|_ _ _ _ | | |_ _ |_ _ _ _ _| | | | _| _ | | _ | _ _ _| _|_ _ | | |_| |_ _ | |_ | | _ _|_| _| _ _ _|_ _ _ | _|_ _ _| _ _| | _ _| | _ _| | |_ _| |_ _ | _ _|_ | _| _| |_ _ _ _ |_ |_ _|_ _ | _| |_ _|_ _ | | _ _ _ _ | _| _|_ _ _ | |_ _| | |_ |_ _|_ _| _| _| |_ _ _ _|_ _|_ _ _ |_ | _| |_ _|_ _ | | _ |_ |_ | _ _| | | _| _ _|_ _|_ |_ _|_ _|_ | | _ _ _ _| _| | |_ _ |_ _| | _ _ _| |_ _ _ | |_ _|_ _ _ _ _ _ _|_ _ | | |_ _| | | | |_ _ _| _| | | | _|_ | | | | _ _ _ _|_ |_|_ | _ | | | | | | _ _ _| |_| |_ _ _ _ _ | | _ _ _ _ _ _|_ |_ _ _| |_ | | | _ _ |_| |_ _ _ | |_ _ _ | |_ _ _ _ |_ _ | | _ _ _ _|_ |_ | _| | | _ _ _| _|_ _ _ _ _| _ | |_ _ _|_ _|_ | +| |_| _|_ _ _ | | | | _ _| _| | |_ _| |_ |_ | |_|_ _ | | |_ _|_ | | _| |_ _ | |_ _| | _ _| _|_ _| _| _| _ _|_ | _ _ _ |_| _ _| |_ _| _ |_ | | _ _ _ _ | |_ _ |_ _ _ _ _ _|_ _| |_|_ _ | _ |_ _|_ | | _| |_ _ _|_ _| |_| | | _|_ _ |_ _|_ | | | | _| |_ _ _ _ _|_ | |_|_ _ | |_|_ _|_ | |_ | | _ _ _| _ _ |_ _ | _ _| | |_ |_ |_|_ |_ _ _ _ | _| |_ _ | | _ _| _|_ | | |_ | | | |_ _|_ |_ _ | _ | |_ | |_ _| _ _ _ _ | |_ _ | _ |_ _|_ | | _| |_ _ |_| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | |_|_ _ _| _ _ _ _| | |_ | | _ _| |_ _ _ _ _ | _ _| |_ |_ _ | | _ _ _ | _|_ _| |_ _| | | _ | | |_ _ |_ _ _| | | _ _ _| | |_ _ _ _ | _| | _ _ _| _| | _ _|_ |_ |_| | |_ _ | _|_|_ _|_ | | _| |_ _ _ | | | | |_|_ |_ _|_|_ _| _|_ | | | _| | |_ _| |_ _ _|_ _ _ _ |_ _ | _|_ _ | | | | _ _|_| |_| |_ _ _ _ _|_ | | |_ _ _ | |_ _ |_ _| | _| |_| | | | _ _ | _ | | |_ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| | |_| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | _ _ _|_ _ _| | _ _|_| |_| _ |_ |_|_ | | |_ | | _ _| | |_ _ _ _ _| |_ _|_ | | | | | |_ _| | _| | _ | |_ _| _| | _| |_| _| | _ _ _|_ _ |_ _ _ _| | |_| _|_| | _ _ _| | | | | | | | | | _ _|_ | _|_|_ _ |_ _|_ _ |_|_ _ | | _ _|_ _| _| |_ _ | _| _ _| | _ _| | |_ |_ _ | |_|_ _ | | _ _|_ _| _ _ |_ _| | _ _| | | |_ | _ _ _|_ _ _| | | _ _ _ | _ _ _ _|_ _ _|_ _ _| | _| _ _|_ | |_ _ _ _| | |_ _| _ _ _ |_|_ _ _ _| | |_ _|_ | _ _ _|_ |_ | | _ _ |_|_ _|_ | _ _| | _ |_ | _ _ _ _ | |_ _ |_ _| | | |_ | _| | | _| _ _ | |_|_ _ | _ | |_ |_ _ _| |_ | _| | |_ _| | | | |_| _| _ |_ |_ _ _| | | | |_ _ _ | _| _| _ |_ |_| |_ _| |_ |_ _ |_ _| | | _|_ _|_ _ | | _ | | |_ _ _| |_ |_|_ | |_ _| _ _ _|_ _ | |_ _| | | | | _ _| _| +| _ _ _| | |_ _| | | | | | | | | | |_ |_ | |_ _ _| | |_ _ _ | | |_ |_ _ | |_ _ | | | |_|_ | | | _| |_ _ _ _ _|_ _ _| | _|_ |_ |_| _| _ _|_ |_ _ | | _| |_ _ | | _ _ _ _ | |_ _ _| | |_ _| | | |_ |_ _ | _ _ | _| _| | | | | |_ _ | _ | |_ _| |_ |_ _ _| |_ _ _| | |_ _ | | | _| | | _ _ _| | | |_| |_ | | |_ _|_ |_ _ _|_ _ _|_ _ _|_ _ _ _|_ _ _ _ _ | | |_ | | | | |_| _| |_|_ | | | | | _| _| | _|_ _ | | _| _| | | |_ _ | | |_ |_ _ | _ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _| _ _ |_ _ | _ _| | | | |_ _ _ _| _ _ |_ _ | _ _| | |_ _| | |_ | | |_ _ _ |_ | _| | | | _|_ _|_ _ |_ _| _| _|_ | | _ _|_ | | _|_| _| | _ _ _| |_ | _ _|_ | |_ _ _| | | _| | |_ |_ _ | _ _|_ |_ _|_ _ |_ _ _ _ _ _| _| _ _|_ | |_ |_ _ _ | |_ _ | | |_ | _ _ _| | _ _ | | |_ _|_ _| _| _ |_ |_ | _ _ | | | |_ | _| _ _| | _| _| |_ _ _| |_| |_| |_ _| | _|_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| |_|_ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _| | _ |_ |_ _ | _| _| _ _|_ | _| | | | |_ | _ _ _ _| _ _ _ _ | |_ _| _|_ _| |_ | |_ _ | | | | |_ | | _|_ |_ | |_ _|_ _ | _ _| |_ | _ _|_ _| _| _ |_ _ | | |_ _|_ _| _| |_ _|_ |_ _|_ | _ _|_ _ _ | |_ _ _ |_ _ | | |_ | | _ _ _|_ | | _|_ _| | | | | | _|_|_ _ _ _ _| _|_ _ _| | |_ | _ _ _| | | |_| |_ | | | | _|_ _ | | |_ _|_ _| _ | | | _ _ _ _ | |_ _| | _|_ _|_ _ _ _| |_ _ _ _|_ _ _ _ _ _ _|_ | |_| _ _| | | | _|_ _ | |_ | |_| _ |_ _ | | | | | |_ | | _|_ _ | | _| |_ _ | | _|_|_ |_|_ _ _ _|_ _ _| _ _| | _ |_| | | |_ |_| _| _ _|_ _ _| _ _|_ _ _ _|_| |_ |_| _| _ _|_ | |_| _| _ _| _| |_ _| _| _| _ _|_ | _ _ _|_ |_ _ | | _ _| | _| | |_ _| | |_ _| |_| _| _ _|_ _ _| _ _| _ _|_ _ | _ _| |_ _| _ _ _| | |_ _|_ _ |_ | +|_ _ | _| |_ _ _ _ _| |_| |_ _ _|_ | |_ _ _|_ _ _ _ _| | _|_ _ | | | |_|_ | | _ _|_| |_ _| _|_ _ |_ _| _| |_ | _ | | _ _| _|_ _ _ | _| _| |_ _ _ _ _| _| | |_ _ _| _| | |_ _ | | _| |_ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _| _| |_ |_|_ | _ _|_ _| _ |_ |_| |_ _ _| _| _| |_ | _|_ _ _| |_| | | |_ | |_|_ _ |_ | |_ _|_ | | _| |_ _ _ _| |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | | _| | _ _| _ _| |_ _ _ _| _ _|_ _| _| _|_ _ _| | |_ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_| | | _|_|_ | | | _ _|_ _ _ _ | | | _ _ _|_ | | |_| |_ | | | | |_ | _ _ _|_ | | |_| |_ | | _ _| _|_ _ _ _| |_ _| _ _ _ _| _ _|_ _|_ _ _ _ _ |_ _ |_ |_ _ |_ _| | _ _|_ _|_ _ _ _ _| |_ _ |_ | | | | |_ _ _ _ _|_ _ | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ | |_ _ _ | _ _ _| |_ _ | |_ | _ | _| | _| | |_ _| _| | | _ |_| |_|_ _| _ _ |_| _| _ _|_ |_| | | _ _| | | |_ _ | | _ _| |_ _ |_| _ |_ |_ _ _| | | _| _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | |_ _ _ | |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _ |_ _ _ _| | | _| _ _| | | _| |_ _ _ _ _| |_ _ _| |_ |_ _| _ _ | | _| | _| | _ _| _ |_ |_| |_| | |_ | |_ |_ _|_ | _| _|_ | _ _ _| | _ _ _|_ |_| _ _ _| _| | | _| | _| | | _|_ |_| |_| | _| | | _ _ _ _|_ _ | _ _| | | |_ | | |_ _ | _ _| |_ _| _ _ _|_ _|_ | |_ _ _ | |_ _ _ _ _ | | _| | |_ _ | _| |_ _|_ | | _| |_ _| | _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ _| | | _| | |_ _ _|_ |_ _| | | _| |_ |_ _| |_ _ _|_|_ | _| | |_ _ _| | | | |_ _ _ _ | _ _ _ _ | |_ _ | |_ | | _| _| | | _ _| | _ _ _ | | _ _ | _ | _| _| |_ _ _ _ _| |_ | |_ _ | _| | |_ _ _ _| _| |_ _ _ _ _| _ _| |_ | _| | |_ | |_| _|_ _| |_ _| _| | _ _| _ _| | | _| _ _ |_| _ _ _ _ _|_ | _ _| | | |_ _ _ |_ _ _| +| |_| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ _ _| _|_ | _ _|_ | | |_ _ | |_ |_ _ | | |_ | | | | _| _ _| _| _ _ _ _|_ | |_ | _ | | _| | _ _ | |_ _| | |_ _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_ |_ |_| _ _| | _ _ |_| _| _| _| _ |_ |_ _ | _|_ _ _ | | _|_|_ | |_ _ _| | _|_| | | |_ |_ _ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _| |_| _ _| | |_ _ _| | _ _ _| |_ | | | |_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| | |_ _ _ _ _| |_ _|_ _ _ |_ | | | |_ _ | _ |_ _|_ | | _| |_|_ _ | |_ _ |_ |_ _|_ | | _| |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | |_ | | |_ _ | | | _ _ _ _ | |_ _| _| | _|_ _| |_ | _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_| | |_ _| |_ _ | _|_ _ |_ _ _| |_| _|_ | |_ _ |_ | _ _ _| |_ |_| _| | _ _ _| | | _| |_ _ _ _ _| _| | _ _ _| |_| _ | _|_ |_ _|_ _ _ _| _| _ _|_ | _ _| | | _|_ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _ _| _ |_ _| | _| | | |_ _|_ | _|_ _ _ | | |_ _| _| _ _ | | | |_ _ | | _| | |_ | _| _|_ _ |_ _ |_ _ _ _| |_ | | _|_| | | _| _| _ _|_ | _ _| |_| _|_ _ _ _ _ _ _|_ |_ _ |_|_ _ _| |_ |_ _ _ |_ |_ _ |_ |_ _ | | _|_ _| |_ _| |_| _ | _| _ _|_ _| | _|_ _| | _ _ |_ _| | _ _| |_| _|_|_ _| | | _ _|_ |_ _ _ | | _|_ _ _ |_ _|_ _ | |_ _| | | _|_|_ _| | |_ _| | | |_ |_ _ | _ _| _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ |_ _| | _|_ _ _ _ | | _|_ _ _ |_ _ _ _|_ _ _ _ | _| | _| _ _ _ _| | | | _ | _ _|_ _ | | _| |_ _ | | _ _|_ _|_ _ _ _| |_ | _|_ | | | | | | | _|_ |_|_ | |_ | _ |_ _| | | |_|_ _ | | _ _ | |_ | _ _ _| | _ _|_ _ _| | _ _ _ |_ | | | | |_ _ |_ _ |_ | _| _|_ _ _| | _ _ _ _| _ _ |_|_ | _ _| | _| _| |_ |_ | +| |_ _ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ | |_ _| | _ _| |_ _| _ _|_ | |_ _ _| | _| _| _| | |_ | _ | _| _| | |_ |_ _ _| | | | | | | |_ _| _ | | _| _|_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ | _|_ | | _| | | |_ _ _| _| _ _ _| |_ | | | _| | _ _|_ _| |_ _ _ _ _ _ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _ _ _| _ _ |_ _ | _ _| | |_ _ |_ _ _|_ _ | _ _ _| |_ | | | _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | | | | _ _ _ _ _ _ _| | _ _|_| |_ | | | | | | | |_ |_ _ | _|_ _| | _|_ | | | |_ |_ _ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _ _|_ _ _|_ | |_ _ | | _| |_ _ | | | _ _| | _| _ _| _| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ | | _| | | _ |_ _ _ |_ |_ | | |_ _ |_ _ _|_ _ _ | _|_ | | |_ _ _ _ _ _|_|_ _ |_ _ |_ _| _|_| _ |_ |_ | |_| |_ | _ _ | _| |_ _ _ _ _|_ | |_| | _ | _| | | |_ _|_ | |_ _ _ | | | |_ _ |_ | |_| _ _|_ _ _| |_ _|_ _ _ _ _|_ |_ | _| |_ _|_ _ |_ _ _ _|_ _| |_ _ _|_|_ _ |_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ |_| | _ _ _| | |_| _| |_ _ _ _ _|_ _ | | _| | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ | | | _ _| | _| |_ _|_ _ _ |_ | |_ | | _| |_ _| _ _ |_ _ | _ _| | |_ | | _ _|_ | _| _| _ | | _|_ _ _ _ _ _ | _|_ _| _ _ _ _ _|_ _ _ _ |_ _| | _ _| | | | _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| |_ _ | _|_|_ | | | _ _| _ _ _| | | |_| _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | |_ |_ _ | _ _| |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _ _ | |_ _| _ _ | | | | |_ _| | _ _| | |_ _ _|_ | | | | _ _ _ _ | |_ _ _|_ | _|_|_ _| |_| |_ _ _ _ _| | |_ | _| |_ _ _ | | |_ _|_ _ _ _|_ _| | |_ | _ _ _|_ _| | | _ | |_| | _| | | |_| | |_| |_ _ | | | _| |_ |_ _ | _ _| |_ | _ _ _| _| | |_| |_ | |_ _ _| | |_ |_ _ | +| _ _ | _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ | _| _ _|_ _ _ _| _ _| _ _| |_ | _ _|_| _| | | | |_ |_| | | |_ _ _| | _| _| _| _ _ _|_ _|_| | | _ _| |_ _| |_ | |_ _|_ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | |_ _ _ _ _| | _|_ _| | _ _ _| | |_ _ | _|_ |_ |_ _|_ _ _ _ _ _| _ | _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _|_|_ | | | _ _| |_ | | _ _ _|_ | | |_| |_ | |_ | |_ | _ _| |_ _ _ | | _| |_| | | _|_ | |_ _ _ _| _| |_ _ _ _| _ _| _ _ _| | |_ _| | | | |_ _ _| |_ _| _ |_ |_| _| |_ _| | | |_|_ | | _ _|_| |_ _ _ _|_ |_ | |_|_ | | _ _|_| |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _ _ _ _ | |_ _ _| | |_ _ _| _| |_|_ _ _| _| | |_ _| | | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ | _| | |_ _| _|_ _|_ _ | |_ _ _ _ _| _ _ _ _|_ _ _ _ _| |_ _ |_ _| | _ _ _ _ | |_ _ | |_ | |_ _ | _| _ _|_ | |_ _ _| _| |_ _ | | |_ _ _ _ _ _ | | |_ _| | | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ | |_ _ _| _ _ | | _ _ | _ _ |_ _ _| | _ _ _ _ _| _ |_| _ _ | | | _| _ | _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_ | |_ _ _ | |_ | |_ _ _ | _ _ _| | |_ _ |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ _| | | | _| _|_ _ _|_ _| _ _ _ _| _ _ _|_ _|_ _ _ _ | | | |_| |_ | | | | |_ _ | | | _ _| _| | | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _| | |_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | |_|_ _ _ _ _| |_ _|_ | | |_ _ | | | |_ _ _| _ _ | _|_|_ | | | _ _|_ _ _ | | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _ _| _ _ _| |_| _ _ _| |_ | _| _ _ _ | | | _|_ _ | | _| |_ _ | | | | _ |_ |_ | _ | _| _| _| | |_ |_ _ _ _|_| _ _ |_ _ | _ _| | | _| | | | | _| | | | | |_ _ _| |_ _ _|_ _ _ | | _ _ _| | _|_|_ _ _ _|_ _ |_| |_ | | | |_ _ | | |_ _|_ | | _| |_ _ _|_ | | _ _| +|_ _ _| |_ _| |_ _ _ _|_ | _|_|_ | | | _ _| | | |_| | |_ | |_ |_|_ _ _ _ _ _| | |_ _ |_ _ | | _ _ _| | | | |_ _ _|_ _ _| | | |_ _| _|_ | _ _ _ _ _ |_ _| | _ |_ |_| |_ _ | | _| | | |_ _|_ | | |_ _ _ | | |_|_ |_ _ _ _ | |_ _ _ _| _|_ _ | _|_ _ _| _|_ |_ _| _| _ _ _ _ _ | |_|_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _ _| |_ _| _|_ _ | |_ _ | _ _|_ _|_ | | _| |_ _ | | | | | | _|_ _ _ _ _| | |_ _ _ _| _ _ _|_ _ _ _ _ _ |_| | | | | | |_ _ | |_ _ _ _| |_ _|_ _ |_ _ _ _| _| _ _|_ | |_ _ _ _ | |_ | _ _|_ | | |_ _ |_ _ _ | |_ | _ _|_ | | |_ _ | _| _| _|_|_ | | | _ _|_ _ _ _ | | | |_ _ | | _| |_ _ | | _| | | | | _ _ _ _| |_ | _ _| | |_ _| _| | | |_ _|_ | | | | _ _| | |_|_ | _|_ _ _|_ _ |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _ _ _ _ _|_| _ | | _| |_ _ |_ _| | |_ _ | _| |_ _ _ _ _|_| | | _ _| _| |_ | | | | |_|_ |_| _|_ _ | | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | |_ _ _| | | | _|_ _| _ _ _|_ _ _ _ _ | |_| _ | |_ _| | _| |_ _| | | | _|_ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _|_ _ _| | | | | _| |_ | _ | | |_ _ | |_ _ | | _| | |_ _ _| | | _ | | _ _|_ _ _|_ _ _| |_ |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ |_ _|_ | | _| |_ _| |_ | _ _| |_ _ _| |_ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _| |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _| | _ |_ | _ |_ _ _| _ _|_| |_ | _| _ _| |_ _ _ _ _| |_ _| | _ _ _|_ | | | _ _|_ | | |_ _ | |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _| _ |_ |_ _ |_ _ _| | | _ _ | _| | | |_ _| | |_ _ _| | _|_ |_|_ | _ _|_ | _| | |_ _| _| |_ _|_ _ | _ _ _|_ | | |_| |_ | | _|_ _| |_ _| |_| |_ _| |_ |_ _ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ | | | | | _| | | |_ _ | | |_ |_ _ | _ _ |_ _|_ | +| _ _| | |_ _ _| |_ _ _ _ _| |_ _| _|_ _| |_ | | _ _| |_ _ _ _ | |_ |_ _|_ _ |_ _ _| |_ _ | _|_ _ _|_ |_ _| _ _ _ |_ _|_ _ _ _ _ _ _| _ _ |_ _ | _ _| | | _ _|_ | |_ _ |_|_ |_ _ _| |_ _|_ _ _ _ _| | |_ _ |_|_ _|_ _ |_ _ |_ _ _ _|_ _ | |_ _ _| | _ _ _ | | | _| |_ |_| | | | _|_|_ _ _| |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ _ _| | _ _ _ |_ _ |_ _| | _| | _ _ _ | | |_ |_ _ | _|_ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_|_ _| |_ _|_ _ |_|_ _ |_ | _ _ |_ _ _ | _| |_ _ _ _ _|_ _ | |_|_ |_ _| | _ _| |_ _| _ _| _|_ | |_ |_ _| | _ _| |_ _| _ _|_ |_ |_ _ _ _ _| |_ _| | |_| _ | |_ | _| | |_ _ _|_ | | | |_ _| | |_ _| | | _ |_ _| | | | |_ _ |_ _ _| |_ _|_ _ _ _ _| _| | |_ _ |_ _|_ _ |_ _| | _ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ _ _ |_ _| | |_ _ _| _| | | _ _ _ _|_ _ _ _ | _ _ _|_ |_|_ _ _ _ _|_ _ | |_ _| | | |_ _ |_ |_ _ |_ _ |_|_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | |_| _| | |_ | _ _| _ _ _ _ | |_ _| _| |_ _| _ _ _| _ _| | _ |_ | | _ _ _| | | _ _ _| _| | _ _| _ _| | | _ _ _ _ _| |_ |_| _| _| | _|_ | |_ _| | |_ | _| _ | _| | |_ | |_| | | _ | | | |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ |_ _ | _|_ | _ _|_ _| |_| _ _ |_ |_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _| | |_ _ _ |_| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | _| _ |_ _| _|_ _ _|_ _| _ _ _ _| _ |_ |_| |_ | | |_ _ | | _ _ _ _| | | | _ _ _| |_| _| | _ _| |_ _| _ _| | _ |_ | _|_|_ | | | _ _|_ _ |_| | | |_ _ _| |_| _| _ _|_ |_ _ _ _ _ | |_ _ _| |_ _ _| |_ _ | _| | | _|_ _| |_| | |_ _ _ _ _| | _| |_ _ _| _ | | _ _ |_ _ | _ _|_ _|_ | | _| |_ _ _ |_ | |_ |_ _ | _| | |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ | +| |_| _ _| | |_ _ |_ _ _ _ | _ _ _ | | | | _ _ _ _| |_ | _|_ | | _| |_ _ | | |_ _ |_ |_ _| |_| _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| |_ | | |_ _ _ _ _|_ | |_ _ | | | | _ _ | _ | | |_ _ |_ _ _ | |_ _ | _ _ |_ _ |_ |_ _ | | _|_ _ _ _| | | |_ _ _|_ _ _ _|_ _|_|_ _ _ _ _ _ | | _| | | |_ _|_ | |_ _| _ | | |_|_ _ _ _ _|_ _ _| |_ | |_ _ |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ |_ | |_ _ | |_ _ _| |_|_ |_ _ | _ | |_ | _ _ _ | |_ _|_ _ | | |_ _ _ _| _ _| | _ _ |_ _ | | | |_ _ _ _| _ _| _|_ |_ |_ _ _ _ _ _| | |_ _|_ _| |_ | | _| _ | | | | | |_ _| _ _| |_ |_ | |_| _| | | | | _ _| _ | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | | | | | | |_ _|_ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| |_ _ | _ _|_ _ _ | | | | _| |_| | |_ _ _|_| _ | | | _ _ _ _ | |_ _| | _|_|_ | | | _ _ |_ _ |_| _ _ _| |_ _ _ _ | |_|_ _ _ _| | | _ _| _|_ | |_ | |_ _| | _|_ _ | | _| |_ _ | | _ _ _ _| |_ |_ | |_ |_ _ _| |_ _ | _| | |_ | | _ | _|_ _ |_ | _| _| _ _| | |_ _ _| _| |_ _ | |_|_ | |_|_ | | |_ _ |_ _| _| | _|_ _ _| |_| | | _|_| | | | | |_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | | |_|_ | | _ _|_| |_|_ _ _ _ _|_ |_| _ _| _| _|_ | | _|_|_ | | | _ _| _ _ _ | | _ _|_ | | | _| | | |_ _|_ | |_ _ _ _ _| | |_ _ _ _| | |_ |_ _ |_ _ _ _| | _| _| _ _|_ |_ | |_ _|_ _ |_ _|_ |_ _ |_ _ _| _| _ |_ |_ | |_ _ _ _| _ _| | | | |_ | |_|_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | | _| |_ _ _ _ _| | | _|_ _ | _| _ |_ |_ | | _ _|_ _| _ _ _|_ _ _| | _ _ _ _ |_| |_ _| |_ |_ |_ _|_ _ |_ _| | _ _ _| | |_ |_ _ | _ _ _| | _| _ _| | | |_ _ |_ _|_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| +|_ | |_ | |_ | |_ |_ _| |_ _| _ _ _| | |_ _| _ |_ |_| | _ _| | |_ _ _| | | |_ _| _ _| | | | |_ _ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _|_ | | _| |_ _ |_ _ |_ | | |_| | |_|_ _| | |_ _|_ _ _|_ | | _|_ | | _ _| |_ | | | |_ _ _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| |_ _|_ _ _ _ _| | _ _| |_ _|_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _|_ _ | | | | |_ _ |_ |_ _| | |_ | _| | |_ _| | _ _|_ _| | | _ _ | | | |_ _ | | | |_| _|_ _ | _ | | |_|_ | | _|_ _ _| |_ | |_ |_| _ |_ |_ | | _| _|_| | | | |_ _|_ _ | _ |_ |_| _| _ _ _| |_| | |_ _| _| _|_ _| | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | | | | _ _| | | |_ _| | | _|_|_ | | | _ _| _ |_ _ | | |_ _ _|_ |_ _| _ | _| | | | _| _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _| |_ _| |_ _ |_ | | | _ _ _ _| _| |_ _ |_ _ |_ | |_ | _| | | | _|_ _ _ _|_ _ _| | |_ _ _| | | |_| _ _ _ _|_ |_ _ | |_ _ _ _ | | _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| _ _| |_| | _ _ _| _|_| |_|_ _ | | | | _ _| | | |_ _ _|_ _ _ _| _ _| _ _| |_ _ | | |_ _|_ _| | _|_ _ | _|_|_ | | | _ _| _ _ _| | |_ _| |_ | _ _|_ | | |_ _ |_ _ _| |_ | _ | | _|_ | | |_ _ _ _ _| |_ _|_ |_ |_ | | | | | _ |_ |_ _|_ _ _| |_ _|_ _ _ _ _| | |_ _ _ |_ _|_ _ |_ _ |_ _ _ | |_ _ |_| _ _| | | _| |_ _ _ _ _| |_ | _ |_ _ | |_ |_ _ |_ _| _| _ _|_ |_ |_ _ | | |_|_ _ _| _ _|_ _ | | _ | _ _| _| _ _ _| |_| _| |_ |_ _ _ | _| |_| _ _ _| _| | _| _ _|_ | | |_| _ _ _ | | | _ _|_| _ _ |_ _ | _ _| | |_ |_ _ _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ | _|_ _ _| _ _ _| |_ | _| | _|_|_ | | | _ _| | _| | |_| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | +| _| | _| |_ _ | | | _ _| | |_ | _ _|_ |_| _| _ _|_ | |_ _ _| |_ _ _ _|_| |_ | _| _ _| _ _ _ _| |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | |_ |_ _ | _ _| _|_ |_| |_ _ _|_ _| _| |_ _ _ _ | |_ _ _| _ _|_ | _ _| _| |_ _|_ | _ _| | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | | | | | _ _ | | _ _ _| | _| _ _ _ |_ _ | | |_ _ _| |_ | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| _ _| | _| _|_|_ | | | _ _| _ | | | | |_ _| |_| | |_ _| |_|_ _|_ | _ _| |_| |_| _|_ _ _| |_ _| |_ |_ | _|_|_ | |_ |_ _|_ _ |_ _| _|_ _ _| _ |_ _| | |_ _|_ _ |_|_ | | _ _ _ _|_ |_| | | _| _| _ _|_ | | | |_ _ _ _|_| |_| _ | _| | _ _|_ | |_| _ |_ | |_ _ _ _| | _ | | |_ _ _ _ | |_ _ |_ _ _| | _ _| |_ _| | _ _| | |_ _ | | | |_ _ _ _ _| |_ _| _ _| |_ _ _ | | | | |_| | | | | _ _| _|_ |_| _|_ _| |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ | | | _|_ _ _ _| | | _| | _| | |_ _ _| | | | | _|_ | | | _| | | |_ _| _ |_ | _| _ _ | | | |_ _ _ _ _| |_ | | |_ _ | _ _|_ | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | |_ | | _|_ _ | _ _ _ _|_ _| _|_ _| | _ _|_ _|_ _ _ _ | | |_ |_ | | |_ _ |_ _|_ _ | |_| | |_ _ | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | | | |_ _| | _ _| |_ _| _ _| _| _ _|_ _ _| | |_ _|_ | _| _| _ _ _ _ _ |_ _ _| _|_ _| |_ _|_ | |_ _ _ | | _ _ | _| | | |_ _ |_ _ _ |_ _ | |_ |_ |_ |_ | | | | | |_ _ _ _ _ _ |_ _|_ _| _| _| |_|_ _ | |_ | _| |_ _ _ _ _| | | _ _| |_ _|_ _ |_ _ | | | _| | |_ _| _| |_ _ _ _| _ |_ |_ _|_ |_ | | | _| | |_ |_| _ |_ | _| |_ _ _ _ _| |_ _ | _ |_ _| |_ _| | _ _ _| _| | |_| |_ | | | _|_ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | |_| | | | | _ _|_ _ _|_ | |_ _ _ _ _| |_ _| | _| | |_ _| | | _|_ _|_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | | | | +|_ | |_ |_ _ | _|_ | | |_| _| | | | _| _| |_ _ _ _ _|_ _ _ _ _ _|_ | _ | | _| | |_ | _| _ _ _ _|_ |_ _ _| | _|_|_ | | | _ _|_ _ _ _ | | | | |_|_ | | _ _|_| |_ _ |_ _ |_ _|_ | | |_ _ | _| |_ _ | _|_ _ _|_ | |_ _ |_ | | | _| | | _| _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _|_ _|_ |_ _|_ | |_ _ _ _ _ _| | _| _| _| |_ | |_ _| _| _ _| _ _|_ _ _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | |_ _ _| _|_ _ _ _ _ _ _| |_ _|_ _ _ _| | | | | | _| _| _ _|_ _| _ _ _| _ _ |_|_ | _ _| | _| _|_ | | | | _ _| | _|_|_ _ _ _ _| _| |_ _ |_ _ | | | _ _ _ _|_ | | |_ _ _|_ _ | | |_ _ _| |_ | | | | _| |_ _ _ _ _|_| |_|_ | _ |_ |_ |_ _| _|_ _ _ _ _|_|_ _ _| _ _|_ | _| | |_| | |_ _| _| | _| |_ _ |_ |_ _ _ |_ | | |_| |_ | | _ _| | | | |_ _ _ _ _ | | | | _ _ _| |_| |_ _| | _|_|_ _| |_| _ _| |_ |_ _ _ _|_ |_ _| _|_|_ | | | _ _| |_ _ _| | |_ _| | |_ _| | | _ _ _| | | _|_ | | | _| _ |_| |_|_ _ | _ | |_ | _|_|_ |_ _| _|_ _ | | | |_ _| | | _ | | _ _|_ _ _| _| _ _|_| _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ | |_| _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| | _ _| |_ _ _|_| | |_ _ _ _ _ _|_ _ |_ _ | |_ _ _ | | _ _ _ _ _ _|_| |_| | |_ _ |_ _ _ _| _ _| _| _| | _ _ | _|_ _ _ _| | _| _| | |_ _| | | _ _| _ |_ |_| _ _| | | | | |_ _| | |_|_ _ _ _|_ | _ _|_ | _ _| | |_ _ _| _ _ _ _|_ _ _|_| | |_ | | _ _ _ | | _ _ |_ |_ |_ _ _| | | | | | |_ _| _ |_ _| | _| | |_ _ |_ _| | | | _ _| |_ |_ _ | _| _| _ _|_ | _ _| _|_| | |_| |_ _ _ |_ |_ _ _| | _ _ _ | | |_| |_ _ _ _ _| _ _|_ _ | | |_ _|_ | | _| |_ _ _ |_ _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_| | _|_ | | _| | _ _ _| _ _| _ | _ _ | _ _| | | _ _ _| |_ | | _| | | |_ _|_ | _ | | | | |_ _| |_ | +| _|_ | | _ _|_| |_ _|_| | _| _|_ |_|_ | |_ _ |_ _ _ _ _ | |_ _| _| |_ |_ _ | | | |_ _ _| |_ | | _ _| |_ _ _ _ _| |_ _| _ _ _ | | _| | |_| |_ | _ _|_ | | |_ _ |_ _ |_ _ |_| | |_ | | |_|_ _ _| _| _| |_| | _| _ _| _ _| | | | | | |_ _| | | |_ |_ | _|_|_ | | | _ _| _ | | | |_ _ _ | | _ _ |_ _ _ _ | |_ _ _|_ |_ |_ _ |_ | _ _| | | | | _ | _| | | |_ _|_ |_|_ | _ | | |_ _| |_| _ _ _ _| |_ _| _ _ | | |_ _|_| |_| _|_ _| |_ _| _ _ _| | | |_| |_ | | _ _| _ _| |_ _ _|_|_ _ _|_ _ _ _ | _ _ _ _ _ _ _ _| | _| | _| _ _| | _| |_ _| |_ _ | |_ _| _| _ _|_ _ _| _| | |_ _ _ _ _ _| |_|_ | _ _|_ | | |_ _ _ |_ _ | _ | _ _ _ _|_ _ _| | | _| | | | _| |_ _ _| | | _| _| | | | |_ _|_ | | _| |_ _ | | |_ _|_ | _ _ _ |_ _| | |_ _| _ |_ |_ |_ _ _| _ _ |_ _ | _ _| | |_ | _ _| |_ | |_ |_ _ _ _ _| |_ _| _ _|_ |_ _ | | |_| _ _|_ _ _ _| |_ _| _ _| |_ _ |_ _| | | _| |_ | | _ |_| | | |_ | |_ _ _ |_ |_| _|_ | _| |_|_ |_ _ |_| |_ | |_| | | _ _ _ _|_ | | |_ | |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | |_ _ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | | _ _ _|_ _| | | | _ |_ | | | _| _ _| |_|_ _ _| _ | _| _ |_ |_ _ | _| |_ _ _ | | |_ _ | _|_| _ _|_ _ _ _ _| _|_ | |_ |_| | _ _| | | | _| _| _ _|_ | |_ _ _| |_ |_ | _| |_ _ _ _ | |_ _|_| | _| | _ _| _ _ | | | _ _ _ _ | |_| _| _| _| |_| | |_ |_ _ _ |_ _ | _|_ _| |_ | |_ _ _ _| |_ _| |_ |_|_ _| _ _| | | | _|_| _ _| | _| _ _| | _| |_ _ _ _ _| |_ _ _ _ | |_ _ _|_| |_ _ _ _| _ | |_| | | |_ _| | |_ _ _| _ _ _ |_| _ _| |_ _|_ _ | | |_ |_ _ | _ _ _ _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ |_ _| |_| |_| _|_ _ |_ _ | |_ _| | _ _| |_ _ _ _| |_| _ |_ |_ _| |_ _ _| |_ _|_ _ _ _ _| | | | |_ _| |_ _|_ _ |_ _ | +| | _ _|_ | | |_ _ | _| _ _| _ _| | |_ | | |_ _ | _ | | _| |_ _ |_ |_ |_ | _| |_ _| _| _ _|_ _ _| |_ | | |_ _ _ _ _ _ _| _| _|_ _| |_ _ _ |_ _| | _ _| |_ _| _ _| _ _|_ | | _| _| _|_| |_ | _ _ _ | | _| _ _|_ _| _| _ _| | |_| |_| | |_ | _|_ _ _ _| | |_ _ _ _ _| |_ _| |_ | | | | | | | |_ |_ _ _|_ _ _ _ _| _| |_ _ | | | _ | _| _|_ | _|_| _| |_ _ _| |_ _ _| |_ _|_ _ _ _ _| _|_| | |_ _|_ _ |_|_ _| _ _ _ _|_ |_| _ _| | _|_ _| _| _ |_ |_ _ _ _|_ |_ |_ _ | _|_|_ _|_ | | _| |_ _ _ _| _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| _| _ |_ _| _|_ _ |_ _ _| _|_ | _ _| | | _ _|_ _ |_ |_ | |_| _ _ _ _|_ | |_ _ _ _ _| _|_ _ |_ _ _ _| _| | | |_ _ _ _ _ _ _ _ |_ _ _ _| _|_ _ _|_ _ _ _ |_| | | | |_ _ _ _| |_ _ | | |_ |_ _ | _ _| _ | |_ _ _ _|_ |_ _ _| _| _ _|_ | | _ _ _|_ | | |_| |_ | | _ _| | _ _|_ _ _| | _ _ _| _ |_ _ _ _ _ | _ _ _| |_ | |_ |_ _ | _ _|_ _| _| _|_ _ | | |_ _ | | | |_ | | _| _| _|_ _ _ |_ _ _ |_ _ |_ _ _|_ _ | | _|_ _ _ _ _|_ _ _| |_ _| _ _| _ _| |_ _| |_ | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _|_| |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| |_| |_ _ _ | | |_ _| |_ _ |_ _ _| | |_ | | |_ _ _ _ |_ _| |_| _| _ _|_ | | |_ |_ | | |_ _|_ _ |_|_ |_ _ | _ _ | |_ | _|_ | | _| | _| |_ _| | _| |_ _ _ _ _| |_ _ |_ _ |_| | | |_ _ | _| |_ _ | _|_ |_ _|_ | _|_ |_ _| |_ _ | | _ _|_| _| _| _|_| | _| |_ _|_ _ _| | _|_ _| _ _| _| | _| | _ _| _|_ _ _ _ | _ _| | | |_| | | | | |_ _ | _| |_ _ | _| _ |_ _ | | _ _ _ _|_ | | _ |_|_ _ _| |_|_ _ _ _| | _ _ _ _ _ |_ _ _|_ _ _ _ _ _ _ _ | |_|_ | | _ _|_| |_ _ | _| | | |_ _|_ |_ |_ _ | | | |_ _| _| | _ _|_ | | _| |_| _ _| | | _ _| | |_ _ _ _ _| _| _ _|_ | | | | _ _ | _ _ |_ _ _|_ |_ _ _ | |_ _ | | +| |_ _| | _ _| |_ _| _ _| | _ _| _| | _| _| _|_|_ | | |_ _| | |_ _ _| | | _ _|_ | |_ |_ | _ _| | _| _ _ _| | | | _ _|_| _ |_ _ |_| _| _ |_ |_ | |_ _ |_ _ _ _| _ _| _| |_ | _| |_ _| _|_ _ |_ _|_ _ | | | |_ _| _ _ |_ _ | _ _| | _ _ _ _| | _ _| |_ _ | _| |_ _| _ _ _|_ _| |_ _|_| |_| |_ _ _ _| _ _ _ |_| |_ _ _| _| | |_ _| | | |_ |_ _| |_ _ |_ _| | _ _ _ | | | _ _ | _ _|_| _ _| | |_ _ |_ _ | | |_ _ _| |_ |_ | | |_ _ _ _ _| _| _ _|_ |_ _ _| |_ | | _| | | _ _ | | |_ |_ _ | _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_| _| | |_ _| | | _ _ _|_ | | | _|_ | _|_ |_ _ _ _ _ _| _| | |_ |_ _ _| |_| |_ _ _ _ |_ _ _ | |_ _ | _| | _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _| _ _| | _| | | |_|_ | | _ _|_| |_ _| |_ _ _ | |_|_ _ | _| |_ _ _ _ _| |_ _ | _ _|_ _|_ | | _| |_ _ |_| | _ _| _|_ _ _ |_ | | | | _ _ |_| _ |_ |_ | |_ _ _|_ _|_ | _ _ _| _ _ _|_ _| | |_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_ _ _| _ _ _ _| |_ _ _| | _ | | | _ |_ _ _ _| _ _| | | | | |_ _|_ | _|_|_ | | | _ _| _ _ _| | | _|_ | | |_ _ | | _ _ | _|_|_ | | | _ _|_ _ _ | | | | |_ _ _ |_ |_ _|_ _| |_ |_ | | |_ | |_ _|_ _ |_ _ | _ | _| |_ _ _ _ _| |_ |_ |_ _|_ _ _| _ |_ _ | |_ _ |_ | | |_ _| | |_ _ _| _| |_ | | | |_ _ | |_ _ _ _ _ | |_ |_ _ |_ | | |_ | | |_|_ _ _| _| _| |_| | _|_ _ | _ _ _ _ _| | _| _ _ _| | |_ | _ _| | | _ _ _|_ _ _ _| _ | _|_ _| _|_ _ |_| |_| | _|_ _ _ _ _ _|_ | _| _| _| | | |_| |_ _ _ _| | |_ |_ |_| |_ |_ |_ _ |_ |_ _ _| |_| |_ _| | _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ | _ _|_ | | |_ _ | |_ _ _| |_ _|_ _ _ _ _| _ _| |_ _|_ _|_ _ |_ _ | _ | |_ _| | | | _| | | _|_ _ _ _| _|_ _ |_ _ _| _| |_ _ _ _ _| |_| | | |_ _| | |_ _ _|_ _ _ |_ _ _ _ _ _| | | +|_ |_ |_ _ _ _| _ _| _ _|_| |_ _ | |_ _| _| _ _| | | _ _| |_ _| | | _ _ _ _|_ |_ | |_ | _|_ _| _ _ | |_ | _ _ _| |_ | _| | _| _| _ _|_ | |_ _ _ | | | | |_ _ _ _ _| |_ _|_ _ _ |_ |_ _ _ _ _ _|_ _|_ _ _ _ _ | | |_| |_ | |_ _| | | | | |_ _ | _| |_ |_ _ _ _| _ |_| _| _ |_ |_ | _ _ _| _ |_ _ _|_ _ _ _ _ | |_ | _| _| |_ |_ | | |_ _ | |_ _ | _| | |_ _|_ | |_ _|_ _ _ _ | _|_ _ | |_ _ _| |_ _| _| _ _|_ _ _| _ _|_ | _ | _| |_ _ _ _ _| _ _ _|_ _ _|_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| | _ _| | | | _ _ _ _| |_ |_ _| |_ _ |_ _ _ _ _| _| _| | _| _| _ _| _ _| | |_ _ _ |_ _ _ _| | _ _ _|_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| | |_ _| _|_ | _ _|_ | | |_ _ | | |_ _|_ _ | | |_ _ _ | | _| | _ | | | |_ |_ _ | _ _| |_| |_ _ | |_ _ _| |_ _|_ _| |_| _| _ _|_ |_ _| | _ _ _ _ | |_ _ | |_ |_ _ _ | | | _| | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| _ _|_| _ _ |_ _ | _ _| | |_ |_|_ _| |_ _| _ | | | | _| |_| |_ _ | |_ _ _ _ _| |_ _|_ _ _|_ _ | | | | _ _| |_ _| _ _| _| _ _| |_ _ _ _ _| |_ _| | _ _ _|_ | | _|_ _ |_ _ | | _ _ _ _|_ |_| | | | | _| _| _ | |_ _ |_ _| | | |_ _ _ _ _ _ | | _| _ _ _ _ _ _| _ _| |_ _ |_ | | |_ _ _ _ _ _ _| _| _ | | |_| |_ _ | |_ |_ _ |_ |_ | _ _| | | | |_| _| | |_ | _ _ _ | | _| _ _|_ _| | _ _ _| | _ | |_ _|_ _ | _|_ _| | _| | |_ | | | | _ _ _| | | | _ _ _| |_ _| _| | _|_ _| |_| | _| |_| _| _| |_ | |_ | | _| _| _| _| |_ |_ | | |_ _| _| _ _| _ _| | |_| _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| | _ _| |_ _| _ _| | | | _ _ | _| _| | |_ _ _ _ _ |_ _ | | _| | _ _|_| | _|_ _|_ _ _ | |_ _ _ _| _ _ | |_ _ _ | | _ _| |_ | _|_|_ _ _ _ | |_|_ |_| |_| _ _| | +| _| _ | _ | | |_ _ | _| | _ _|_ _ _ |_ _|_ |_ _ _ _|_ _|_ | | _| | |_ | _ _|_ _|_ _ _|_ _ |_ _ _| _ _|_ |_|_ _ _ _| _| |_ _| | _| |_ _ _ _ _| | _ |_ _|_ _| |_ _|_ _ |_ _ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _|_ | | _| |_ _| _|_ _|_| |_ _| _ _| | _|_ |_ _ | | | | _| _| _ _|_ | |_ _ | |_ _| _ _ _ _ | |_ _ _ _| |_ _ _| _| |_ _| |_ _ |_ _| _| |_ _ _|_ | _|_ _ _ _ | |_|_ |_ _ | _ |_ | _ _| | _ _ | | _ | _| | |_ _ | | _| _| _ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | | _|_|_ | | | _ _|_ _ _| | | |_ | | _| | _| | | | _ |_ _ | |_ |_ | | _|_ _ |_| _ _ _|_ | _| | _ _| | | | _ _| | |_ | _ _ _ _ | |_ _| | _| | |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| |_ _ |_ _| | _ _| |_ _| _ _|_| | |_ _ _ _|_ _| |_ | _| |_ _ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_ | _| |_ _ | |_ | _ _ _| | _| |_ _ _ _ _| _ _|_ _ | | _| _| | _ _| | |_ _| | |_ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | _ _ _|_ | | |_| |_ | | | _| |_ _ | | | |_ _|_ _| |_| _| _| | _| |_ | |_ | _ |_| _ _ _|_| |_| _ _ _| _ _| _|_ | | |_ _ | | _ _ _ _| | | | _ _ _| |_ _ | |_ _ |_ |_ _ _| |_ | |_ _ _|_| _|_ _ |_ _| _ _| | _| |_ | | | _ _| _ _| |_ _ _| _ _ | | | _ _| _| _| |_ _ _ _ _ | _ _ _| | | |_ _ _ _| | |_| _| |_|_ |_ | | | _ |_ _ _| _| |_ _|_ _| | | | | |_ _| _ _ |_ _ | _ _| | | |_ _ _ _| | | _ _| |_ _ _| |_ _| | |_ _|_ _ | | |_ _ | _|_ _ | | _| |_ _| | _| _ _|_ _|_ | | _| |_ _ _ | |_ |_ _|_ _| _| _ _ _|_ | | _| |_ | _ _| | _| | _ _| | | _| | |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _ _| _ _| _| | | | |_ _|_ | |_ _ _ _| | | | | | | | _ _| | | | _|_|_ | _|_| |_ _ _ _ |_ _|_ _ | | | _ |_ |_| _ _| | | | _| |_ _ _| _ _ | _| |_ _ |_|_ _ _|_ |_ | _| +|_ | | |_ | |_ _|_ _ |_ _ |_ _ _| _ _ |_ _ _ _| |_ |_ |_ _|_ _| |_ |_ _ | | _ _ _ _ | |_ _ |_ |_ _| | _ _ _| _ _| _ _ | | |_ | _ _ _|_ |_ _ _ _ | | | _ |_ _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ |_ _ | _ _ _ _| _ _| | |_| | | |_ _| | | |_ | _| |_ _ _ _ _| _ _| | |_| |_ _ | | _| |_ _ |_ | |_ _ _ | |_ _ | |_ |_ _ _| |_ _ _ _ _| |_ _ | | _| |_ _ | |_ _ |_| | | | _|_ | _|_ | _| |_|_ | |_| _| |_ |_ |_ _| | |_ | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | | | |_ _ _ _ _| |_ _| _ _ |_|_ | | |_ |_ _|_ | | | |_ _| | |_ _ |_ _ _| | |_ _|_ _ |_ |_ _ | _|_ | |_ | _| |_ _| |_ | | _|_ _| _ _ |_ _| | _ _| | _ _| _|_ _ _| | _|_|_ | | | _ _| _ | | | | _ |_ _ | _ _| |_ | |_ _|_ _ _ _| _ _| _ _|_ _ _ |_ _ _ _ _| _|_| _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| _| |_ | _ _| | |_ _ _|_ |_ _ | | |_ _ | _| | |_ _ _| | _|_ _ _ _| |_ _ | |_ _|_ _| | |_ _ _| | | _ | | _ _|_ _ _| |_ _ | _|_ _|_ | | _| |_|_ | | |_ | | | _|_ _ _ _|_ |_ _ _|_ |_ _ _| | | |_ _ _|_ _| |_ _ _| _| _ |_ |_ _ | | | |_ _ | |_ _|_ _ |_ _|_ |_ _ |_ _ _| _| _ |_ |_ _ _ _ | |_ _| _| _ _|_ _ _| | _ _ _|_ | | _ _| _ _| |_ _ _| _|_ _| | |_ _ |_ | _ _| | _| |_ |_ | _ | | _|_ _ _ | |_ _ | | _| | | | _ _|_ _| _| |_ _ | | _|_ |_ |_| _ _ _| _|_ _ _ _ _|_ _|_ _|_ _ _|_ | | |_| |_ | | | |_ _ _ | _|_ _ _ _| |_| _ |_ |_| _|_ _ _ _|_ _| |_ _| | _ _ |_ _| _| | _| | | |_ _| _ _ _ |_|_ _ _ _| |_ | |_ | _ _ _| | |_ _ _| |_| |_ | _|_ | _|_ | | |_ | | _| _| |_ _ _| | | | | | _|_|_ | | | _ _| _ | _| | |_ _|_ _| |_ _ _| | |_ _ |_| |_ | _ |_ _ _ _ | | |_ _| |_ _| |_| | _ _| | | |_ _ _| |_ _ _| | | _ _ _|_ _ _|_ _| |_|_ |_| _| _| _|_ | | |_ _ _ _ _|_ _ | |_ _ _| | | _ | _ _ | | | | +| _|_| |_ |_|_ | |_ _ | | _ _ _| | | |_| _ _| | _|_ |_ |_| _ |_ |_ |_ _| |_ _ | | _| |_ _ |_ |_ |_ | | | _ _| | | |_ _|_ | |_ | | _| _ _| _ _ |_ _| _| _ _ _| | | |_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_|_ | | _ _|_| |_ _ | | |_|_ _ _ _| | |_|_ | _|_|_ | | |_ _ _ _| _ | _|_ _ _|_ _| | |_ _ _|_ | | _| | _ _|_ _| _| | |_ _ _ _| | | | | _ _ | _ _ _| |_ |_ _ _|_ | |_ | |_ | | | |_ _| |_ _ |_|_ |_ _ | |_ _ _| _| _| _| _ _| | _| | | |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| |_ | |_| | |_ | | _ _ _ _ |_ _ _|_| |_ | _ | | |_| |_ _ |_ |_ |_ | _ _ _ _ _ |_ _| _|_ _| | |_ _| | | |_ |_ _ _| | | |_| _ _ _| | | |_| |_ | |_ _ |_ _ | _| |_ _ _ _ _| |_ _| |_ |_ _| | | |_ | | |_| |_ | | _|_ |_ _ | | | |_ _| | | | _ _ _| _|_ | _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ _ _ _| |_| _ _| |_ | _| | |_ _| | | | _| _| _ _|_ _ _ | |_ _ _| |_ |_| _ _| _| | _ _ _| | |_ | |_| | _| _ _ _| | |_| _| | |_ |_ _ | _|_ |_ _| |_| _ _ | _ |_ _ _ | |_ | | | | |_ _| _| _| _ _|_ | |_ |_ _|_ _ |_ _ _ | _|_ _ | |_ |_ _ |_ _| _| _ _|_ | _ _ _|_ | _ _| | | _ _|_ _ _ _ _ _ _| _|_| | | _ _ _| _|_ | | | | | | | | | |_ _ _| _| | | | _| |_ _ |_ _ |_ _| _| | | | _|_ |_ |_| _ _ _| _| | _| _|_ _ _| | |_ |_ _ | _ _| | | _ _ _ _ | |_ _ _ | |_ _|_ | | _| |_|_ |_| |_|_ _ _ | _| _| _ _|_ | | _ _| _ _ _ _ | | | _|_ _ _|_ |_| _ _|_ _|_ _ _ _ _ _ _|_ | |_| _ _| |_ _ _| _|_ _ | |_ _ _| | | | _| |_ _| |_ _ |_ _| | | |_ _| | |_ _ _ | |_| | | |_|_ _ _ _ _| |_ _| _ _ |_ _| _| | _ _ |_ |_ _ |_ _|_ _ |_ _ _| _| | _| | | _| |_ _ |_ | _ _ _| | | |_| | _|_ _ _| |_ | | |_ _ | _ _| | _ _ _ _| _|_ _ | _ _ _| |_| _| _ _ _| | _| _ _| | |_ | | |_ _ _| | | | +| | | |_ | _ _| | | | | |_|_ _ | _|_|_ _|_ | |_ | | |_ _ _ _| _| _ _|_ | | |_ _| | |_ _ _| | | _| | | |_ _| | | _ _| | |_| _| _|_ _ _| |_ |_ _ _ _|_ | |_ _ _ _|_ | _ _| | _ _| _ _ _ | _|_|_ | | | _ _| | _ _| | |_ |_ | _ _|_ | | |_ _ | |_ _|_ _ |_ _ _ _ _| | |_ _ _ _ _| |_ |_|_ | _ _| _|_ _ _ | | | _| _ _ _ | | | |_ _ _ _ _| |_ _ _ _ |_ _| | |_| | | _| | | _ _| _| _ _ | | |_ _|_ _ _| |_ | | |_ _ |_ |_ |_ |_ _ _| _|_ _ | |_ | | | _ _|_ _| _| | | |_ _|_ | _| _ |_ | | |_ _ | _|_ _ |_ _ _| | |_| |_ _ _| | _| _ |_ |_ _| | |_ _ _ _| | |_ _ _ _ | | _ _| | |_ _ _| _ | _|_ _|_ _ | |_| _|_ _ _ _ _|_|_ _ _ _ _ _ _| |_ _|_ | | _| |_ _ _ _ |_| | | _|_ | _ _ |_ | | _| _ _|_| |_ |_ _|_ | | _| |_ _ | | _ _| | | |_ _|_ _ |_|_ | | |_ | _ _ _| _ _| | | _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _ _| | _ _|_| _ _ |_ _ | _ _| | _|_ _ _|_ _ _| | | | | _ _ _ _ _ _| |_ _|_ _ | _ _|_ _ _ _ _| | | _| | _| | _|_ _ _| | | | _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ | |_| |_| |_ _ _ _ | |_ _|_ _ _| |_| |_ _| |_ _ | _| _| |_ _ _ _ _| | | _ |_ _ | _| | _| |_|_ _ | |_ | _| |_ _ _ _ _| | _| _|_ | _|_| |_| _ _ _| _ _ |_ _ | _ _| | | | | _ _ _| _ _| |_| | |_ | _| |_| | |_ _ _| | | |_|_ _ _| |_ |_ |_ | _|_ _|_ _ |_ _|_ |_ _ | | | | | | _| | |_ | |_ _| | | _ _|_ |_ _ | | _| |_ _ | |_ _ | | | |_ |_ _ | _ _| _ _ _|_ _| | _| |_ _ _ _ _| _| |_ _ | | _| | |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | _ _ | _| | |_ _| _ | | |_| | _| | |_ | | |_ _ _ _ _|_|_ _ | |_ _ _|_ | _| |_ _ _ _ _ _ _ _| _ _ _| | _ _ _| |_ |_ _| _| |_ _ _ |_ _ | |_ | |_ _ _| |_ _ _ _|_ _ _ _ _| | _ |_| |_ _ _ _| | _ _ _ _|_ |_| | _| _ _|_| _ _| |_ | _ _ _| _ |_| _ |_ |_| | _| | _| | _| | | | _|_ | _ _|_ _| +| | | |_ |_ _| | |_| |_ |_ _ _ | |_ _ | | | | _| |_|_ | | _| |_ _ _ _ _| | |_ _ | _| _ _ _ |_| | | _|_ _| _ _| |_| | | | _ _|_| _|_ | _| _| _ _ _ |_ | _ _ _ |_ | _| | |_ _| | |_ _ _ _ _| |_ _| | | | | | _| | | | |_ _| | _ _| |_ _| _ _| | _ _ |_ _ _ | _ _| | | _ | _| _| | | |_ | | _ _|_ _|_ | | | |_ | _ _| | |_ _ _ _ _|_ _ |_| _ _ _ _ _ _|_ _ _ _|_ _ _ |_ | |_ |_ _ _| | | | | _| _ _ | |_ |_ _|_|_ _|_ | |_ _ | _ _ _| _ | | | | |_ _| | |_ _ _| |_ _|_ _ _ _ _|_| _| |_ _ |_ _|_ _ |_|_ | _ _| | |_ | _| | _ |_| _| _ _|_ | | | | _ _|_ _| _ _ |_|_ | _ _| | | | _ _| _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ |_ | | |_ |_ _ | _ _ _ | |_ _ _| |_ _ |_ _ _| |_| _| _ |_ |_ | | | |_ |_ _ | _ _| _|_ _|_ | _ |_ _ | | |_| _|_ _ | _|_ _ | | |_| _| | | |_ _|_ | _ _ | | | | |_ _ |_| | _ _ _|_ | | |_| |_ | |_ _ _ | _ |_ | |_ | | | | _ | _| _ _ _ _|_ | _ _ _ _ _ | | |_ _ _| |_ _ _ _| _ _ _| |_ _| | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _|_ | |_ _ _| _ _ |_ _| _ _ _ |_ |_ | |_ _| | | |_ | _ _ |_| |_| | _ _ _| |_ | _|_ |_ _ _| | | | | | |_ _ _ | _| |_|_ |_ _| |_ _ |_ _ | _ _ _| | | |_| |_ | | | |_|_ _ | _| | _ _ _| |_| | _| _| |_ |_ | _|_| | _ _ _ _|_ |_| | _ _ _|_ _ _ | |_ _ | | _| | |_ | |_ | _| | |_ | |_ | | _|_| | _ _|_ _| | |_ _ _| | | | | | |_|_ | | _ _|_| |_ _| _ _ _| | |_ | _ _ |_ _ _|_ _| | |_ _ |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ |_| | | _|_ _ _ _ |_ _|_ _ _ _| _ _ _|_ _ _|_ _ _| _ _ _ _ _| _ |_ | _| |_ | _ _ _ | | |_ | | |_| _ |_ |_ | _| |_ _ | | _ _| | _ _|_ | _ _| _ _ _ _ | |_ _| |_ _ _ _| |_ _|_ _ _| |_ | |_ _ _| _ _ _ _ _| _| |_ _ |_ _| | _| _| _ _|_ |_|_ | _| | |_ _|_ _|_|_ _ _|_ _ _| |_| _ _ | +| _|_ _ _|_ _|_| _ _|_ | _ _|_ _ _ _ _|_ | |_| |_ |_ _ | _|_ | |_ _ _| _| |_ | | |_ _ _ _ |_ _ _ _| _ _ _ _| |_ | | | | |_| _ _ _| _ _| | | _| |_ |_ _ |_ | | _ | _| | |_ _ | |_ _ _ _|_ _ _ |_ | | _|_ _| | |_ _ _| |_ _ |_ _ |_ _ _ _| _ _| | | |_ _ _ _ _ _| | | | | |_| _|_ _| _|_ | | |_ | |_ _|_ _ _ _| _| |_ _| |_ _ _| |_ _| _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | | _|_ | _ _|_| |_ | _| | _| | |_ | _ _ _| _ _| |_ |_ _| _ _ _ _| | |_ _ _|_|_ _ _|_ _|_ _ | _ _ _ _ _ _ _ _ | | _ | _|_ _ |_ _ | |_| _ _| | | |_ _ _| |_ | | _| |_ _ _ _ _| | |_ |_ |_| _ _ _| | | |_| |_ | | | | | | |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_|_ | | _ _|_| |_ _| _ | | _ _ _| | _| | _| _| _ _|_ |_ | |_|_ | | _ _|_| |_ _ _| |_ _| _ _| |_| | _| _| | _ _ |_| |_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _ |_ _ | _ _|_ _|_ | | _| |_ _ _| | | |_ _|_ _ _| |_| |_ _ _|_ _ |_ _ _ _ _ _ _|_ | | _ _ _|_ | _ _| | _ _ | _ _ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ | | _ _ _ _ | | _ _| | _ _|_ | | |_| _ | | |_ | |_|_ | |_ _| _| _| | | _ _| | |_ _ _|_ |_ _ | _|_ _| |_ | |_ _| | _| _ | |_ | | _|_ _ |_|_ _ | |_|_ _|_ | | _| |_|_ _ _| | |_ _ _| |_ _| _ _|_ _ _| |_ _ | | | | _ _|_ _ _| |_ | | | _ _ _ |_ _|_ _ | | | | | _|_ _ _|_ |_| | |_ _ _| | _ _|_ _ _ _ _|_ | | | _| _ _ |_| | |_| | | | |_ | _ _|_ | | |_ _ |_ _ |_ _ _|_ | |_|_ | |_ _| _ _| _| _ _|_ |_ | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _| |_ _| |_ _ _| | |_ _ | _| |_ _| _| | |_ _| _| _ _|_ | | |_ | | | |_| | | _ _| | _ _| | |_ _ | | _| |_ _ | | _ _ _ _|_ |_ | _| _ _|_ _ _| | _ _ _| _ _ |_ _ | _| | _ _|_| _| |_ _ _ _ _| |_| | | | | _ _ _| _ _ _ _ | |_ _ _ _ | | +| | _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_ | | _ _|_| |_ _|_ | | _| | _| | | |_ _ _| _ _ |_ _ | _ _| | | |_| |_ |_ _ | _| _ _ _|_ _ _| | _|_ |_| |_ _| |_ _ | |_ _| | _ _ _ |_ _ _ |_ _|_ _| _| _| _ |_ |_ | _ _ | _| | |_|_ | | _ | | | | |_| | _ _| _ _ _| _ _|_ | | | _ _ | |_ _ _ _ _|_ _ | |_| _ |_ |_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | | | _| _ |_ |_| | _| _ _|_ _ _ _| _ _|_ _ _ | | _ _| | _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _|_| |_ | _ _| _ _| |_ | | | | |_|_ _ | _| | | | |_ _ _ | _|_ | | |_ |_ _ | | | |_ _|_ | | _| |_|_ |_ _|_ _ |_ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ | _ _|_ | | |_ _ |_| _|_| | | _ _|_| | _| | _| |_ _ _ _ _| _|_ | _ _|_ | | |_ _ | |_ |_ _ _ | _ _| |_ _ _| | _|_ _ _|_ _| |_ _ _ _ | _ _ _ _ _ _ _|_ | _| | |_ _ _ |_ _ |_ _| | _ _ _| | |_ |_ _ | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| _ _ |_|_ | _ _| | | |_ _| _ _ _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ _ _| _|_ _| _ _ |_|_ | _ _| | _ _ _ _|_|_ |_ |_ _ _| _| _ _ _|_ _ |_ _ _| | | |_ | _|_ _ _ _ | _ |_ _| _ _| _| |_ _ | | |_ | | _ _|_ _|_ _ |_ _| | |_| _ | | |_ |_ _ | _ _ |_ _ _ _ _|_ |_| _ _ _ | _ _ _ _|_ _|_ _ | _| _ _|_ _ _| | | | | | |_ _ _ _ _|_ | |_ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | | |_ _ _ | | | | _|_| | |_ _| | _ _| |_ _| _ _| _|_ | _| _| _ _ _| |_ | |_ | | | _ _ _ _| _| | | _| _| _|_|_ | | | _ _|_ | | | | _|_ | | _ _|_| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _ | | | | _ _| |_ | |_ _| | _ _| _|_ _ _| |_ _ _ _ _| |_ | | | |_ _ _|_|_ | _|_ _| | _| |_ _| | |_ _ _| | | |_ _ _| |_ | _ _| | _| _ _ _| | | _ _ _|_ | | |_ _| _|_ _ _ _ | | _ _ _ _ |_ _ _|_ _|_ _ _ | |_ _ | | _| |_ _ | | _| | +|_| |_ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ | | |_ _ | _| |_| |_ | |_ | |_ _| | _ _ _|_ | | |_| |_ | | |_|_ |_ |_ _| | |_ _| _ _ |_| | |_ | | _| _ _| | |_ |_ _|_ _| |_ |_ | _ _| | _ _|_| _| _| _ _|_ | | | | _| |_ |_ _|_ _ |_ _| |_ _ |_ _|_| |_ | |_ _ _|_ _ | _|_ _ _ _ _| | _ | |_ _ _| _ _ _|_ _| _ _|_ | | _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| _|_ _| _| _ _|_ | | | _| _ _ _ _ _|_ _| _ _ |_|_ | _ _| | | |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_| _| | _| | _ _| _| | |_| | | _ _ _|_ _| | |_ | |_ _ _| | | | _| | | _ _| | _|_ _ | | |_ |_ _ | _ _ _ |_ _ | | _ _|_ | _|_|_ | | | _ _| _ _ _ | | | | |_ _| | _ _| |_ _| _ _| _| _ _ _|_ | _ | |_ | |_ _ _ _ _|_ _ |_ _| | _ _| |_ _| _ _|_ | | | _|_ | _|_| | _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _|_ _ _ _ _ _ _ _ | | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| | | |_| |_ | | | |_ | | | _ | _| | | |_ _|_ | _ _ _ _ _ | | |_ _ _ _| | _ _ _| | | |_| |_ | |_ _ | | _ _| _ _ _| _|_ _ _| | | _ | |_ | | _ _ | _| | | | | _|_ _| _| | | | |_ | |_ _| _ _ _ _ _| _| | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _| | | _ | |_ |_ _|_ _ _ _ _ _ _|_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _ | |_ _|_| |_ _ _|_|_ _ _ |_ _ _ _| _ _| _ _ _ _ _ _| _| | |_ _ _|_ |_ _| | |_ _ | _ _ | _| | |_ _ |_ _ _ _ _| |_ _| _ | |_ _| | | | | _ _|_ | | |_ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _| _ _| |_ _|_ _| | | |_ _ _ _| | _ _ _| | |_ _ _| _ _| |_| |_| |_| | _|_ _ _ _ | |_ _ _| | _| |_ _ _| | | | _| _ _|_ _ _| | | _|_ | | _ _ _| |_ _ | _ _|_ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _|_ | |_ _ _| | +| _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _ _| |_ _| _ _|_ | |_ | |_ |_ _| _ |_ _ | _ |_ _|_ | | _| |_ _ |_ _| | _|_ _ _ _ | | | _|_ _ _ |_|_ _ _ _|_ _ _| |_ | | _ _ _ _|_ |_| _| | _ _| | _ _ _ _| _| |_ _ _ _ _|_ _| | |_ _ _| _ | |_ _ |_ _ |_| _ |_ | |_ _ _ _ _| | | | _ | _|_ _| |_ _ | | _| |_| |_ _| _ _ _ _ _|_ _| |_ _| _|_|_ | | | _ _| |_ _ _| | | | | | | _| |_ _ _ _ _| | |_ |_ _ | | | _ _ _| | | |_| |_ | |_ |_ | | _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | |_ |_ _ |_ | _ | |_ | |_ _| _ _ _| |_| _| | _ _| | _| _| | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| |_ _| _| _|_ _ _ _ _| |_ _| _ _| _ _| _| | |_ _|_ _ _ |_ _ _ _| _ _| _| _ _ _| | _| |_ _|_ | |_ | |_| | _| _|_ _ |_ _ _ _| _ _| | _| | |_ _|_ | | _ | |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | _ _| _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ _| |_ _|_ | | _| |_ _| | | | | | | |_ _ _| |_ _|_ _ _ _ _|_ _| _ _ | |_ _|_ _ |_ _ _|_ _ | | | |_ _|_ | | _| |_ _ _ _| |_ | | | _ _ _| |_ _| _| _|_| | |_ _| | _| |_| _ | |_ _ _| | | | | _ _ _| _| | | | _| _|_ _ _ _ _ | |_ | _| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_| |_| | | |_ | | _ | |_ _| | |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| | _| _ |_ |_ _ _ _ | _ | | | | |_ _ _ | _ _ _|_ |_ | | _ _ _ | _|_|_ _ | |_ _ | |_ | |_ _ _ |_ _ _ _ | _| | |_| _ _|_| |_| _| | _ _| |_ _| _ _| |_ _ |_ _ _| _|_|_ | | | _ _| _ _ _ _| | | _| _ _| | |_ | _ _| |_ _|_| _ _ |_ _ | _ _| |_ |_ | | _ _|_ |_ | | _| _ _|_ _|_ _ _| | | _ | | | |_ _ _ | | | _ _| | _| _| | |_ _ |_ _| _ _ |_ _| | | _ _|_ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _| _ _ _ | | _ | | +| | |_ _ | _| _|_|_ | | | _ _| _ | | | |_ _ |_ _ _ _| _ _| | _ _| |_ | |_| | _ _| _| _| | |_| | | |_ |_ _ | _ _| _|_|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| |_ _ _| |_ | |_| |_ | |_ _ _ | | |_ _ _| _ | |_ | _ _| _| | _ _| | _| _| _ _|_ | _ _ _| | _|_ _|_ _ | |_ _ _ _| _ _ _|_ _ _|_ _ _| _ |_ _ _ | _ _ _ _|_ |_ |_ _ _ _ _| |_ _| _ | | _ _ | | |_ _| | | |_ _ _ |_ _ | | _| _| | | | |_ _ | _|_|_ _|_ | | _| |_ _ _ | | | |_ _ _ _| _|_|_ | | | _ _|_ _ | _| | | |_ _| _| | | | |_| |_ | |_ |_| _| _ _|_| _| _| | | | |_ |_ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| | _| | _ _ _ _ _ _ _ _| _| _ _ _| |_ _ _ _ | | _ | | |_ _ | | _ _|_ _|_ _ | _ _| _| |_ _| |_ | | _ _ | | _| | |_|_ | | |_ | _ | |_| _|_ | _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | |_ _ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ | |_ | _|_|_ | | | _ _| | _ _| | | _ _| | _| | |_ |_ _ | _ _| _| | | | | _ _ |_ _ | _| | _| |_ _ |_ _ |_ _ _| | _|_ _| | |_ |_ _ | _ _ | | _|_ _ | _|_ _ | | _| _ _|_ _ _ _|_ |_ |_ _| |_| | _ _ | |_ _ | |_ | |_|_ _| _|_ _ | |_|_ |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ |_ _ _|_ |_| |_ _| | | |_ _ _ _|_ _|_ _ | _|_| | _|_|_ | | | _ _| | _ | | |_ _| |_| _| _ _|_ | _ | | | | | |_ _| |_ _|_ _ |_ _|_ _ | |_ | |_| _ | _| | _ _ _|_ _ | |_ _| | | _ _|_ | _|_ |_ | | |_ _| _ |_ |_ | |_ _ _ _| _ _| _| |_ |_ _ _ |_ _ _ _ _| |_ _|_ _ | _ | | | | | | |_|_ _ | | |_ | | _ _ _| | | |_| |_ | | _|_ _|_ _| | _| | | |_ _| _ _ _ |_|_ _ _ _| |_ | | | |_| |_ _ _ _| |_ | _| _ _|_ | | | |_ _ |_ _ _|_ _ _| _|_ _|_ _ | _|_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | | _|_ _ | | |_| |_ | | | +| |_ _| _ _|_ |_ _ _ _ _| |_ _| _ _ _|_ _| | | | | _|_ | | |_ _ _ |_ _| |_ | |_| | |_ _ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _| _ _|_ _ _| |_ | | _| |_ _ _| |_ |_|_ _ _ | |_ _ | | | | _| _| | _ _| | | _| |_ _ _ _ _|_ _ | _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _| _ | _|_ _ _| |_ | | | _ _ |_ _| _|_ |_ _ _| |_ | _| |_ |_ | | | _ _| |_ _ | _| |_ _ _ _| | | _ _| | |_ |_ _ | _|_ |_ _ _ _ |_ _ _ _ _| |_ _|_ _| _|_ | | |_ |_ _| |_ _| | _|_ _|_ _|_ _| _| | _ _ _| _| _| | |_|_ |_ | _|_ _ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | |_|_ | |_ _| _ _ _ _ | |_ |_| _ |_ |_ _|_ _| | | |_ |_ _|_ _ |_ _| | _ _ |_ |_ _ _| _|_ | | | _ _| |_ _| | | _|_ |_ _|_ _ |_ _|_ _ _ _|_ |_ | _ _ |_ _ _| | | _ _| | | _|_|_ | | | _ _|_ |_ | | | | |_ _ _ |_ _| |_| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | |_ _| | | |_ _ _ _ _| |_ _| | | |_ _ | | | |_ | _|_ | |_|_ | | _ _|_| |_ _ | |_ _|_|_ _| _| | _ _|_ _| _|_ _ _|_ _ _ _ _| | _ _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _|_ _ _| | _ _ |_ _| _| | _ |_ _ _ | _| |_ _ _|_ _| |_| _| | _| | | _ _ _| _ _| |_ _|_ _ |_ _ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ _|_ |_ | _|_|_ | | | _ _|_ _ _|_| |_ |_ _ |_| _ _| _| _ _| | | _ _ | _| |_ _| | _ _| | |_ _ _ _ _| |_ _| |_|_ _| | | | | | | | | _| |_ _ _ _ _|_| | | | _ _|_ _ _ _ _ | |_ _ _| | |_ _ _|_ |_ _| |_ _ | | |_| |_ |_ _ _ _| | | | _|_| |_ |_ _| |_ _ _| _| _ _|_ |_ _ |_ _ | | |_ _ _ | _ | _ | _ _ _| _ |_| | _|_ _| |_ |_ _|_ _ |_ _ | | _| |_ _ | _| |_ _|_ | | _| |_ _ | |_| _| |_ _ _ _|_ _ _| _ _|_ | _ _ _ _ _ _|_ _| |_ _ |_| |_ |_| |_ _ | |_ _|_ _| _ |_ | | _ |_ _ _ | |_ _|_ _ _ _ |_ _ | _|_|_ | | | _ _|_ | _| | | |_ _| | |_ _ | _|_ | +| | _ _| _ _| _ _ | _ _ _ | | _ _|_| |_ | | | | |_ _|_ _ |_ _ | _ | |_ |_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _| | _ | _ _| | |_ |_ _ | | _| _| | |_|_ | | _| |_| |_ | | _|_ |_ | | |_ _ _ _| _ |_ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _| _| _ _|_ _ _| | | | | | |_ _ _ | | | _| _ |_ |_ _| _| _| _| |_ _| _| _ _ _| | | | _ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _| _ _ |_ _ |_ |_| |_ _ _ _| |_ | |_ |_| | _ _|_ _ _ _ _| |_| _|_ _|_ _ | |_ |_ | |_ _ |_ |_|_ _| _ _ _ _ | | _| _ _|_ _ _ _| _ _| | | | | |_ | _|_ | |_ _ | | _| |_ _| _| _ _|_ |_ | _|_|_ | |_ _ |_ _ |_|_ _ _ _|_ | | _ _ _|_ _| | | | _ _ _ | | | |_ _ |_ _ _ |_ _ | | _ |_| _|_| | |_ _|_ | | |_ _|_ _ _ _ _| |_ _| _ _|_ _ _| | | |_ _ _ _ _ _ | _| | | |_ _|_ | _ _ _ | | | |_|_ |_ | _| | _ | |_ _ _ _| | | | _ _|_| |_| _|_ _ _ |_ | _ _|_ | | |_ _ | |_ _ _ _ _ _ _ _ _ _|_ _ _ | | _ _ _ | | _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | _|_ _ _|_ |_| _ _|_ _ _|_ _ _|_ _ _|_ | _ _ _ _|_ |_| | _|_ _ _|_ _ _ | _|_ _ _ _ _ _ _ _ _ _|_ _| | | |_ _|_ | _ | _| | |_|_ _ | _| | |_ _ _ _ _| |_ _| |_ _|_ _ | | | |_ |_ | | _ _ _ _| _| |_ _| | | | _| | _ _| | _| | | _ _ _ _| _| | | _|_ _| |_| |_ _| | |_ | _ _ _ | |_| | |_ _| _ |_ | _| _ _| | | _|_ _ _ _ | | _|_ _ |_ _|_ _ _|_ |_| _ _ | |_ _|_ _ _ _ _| _ _| _ _| | _| |_ _ _ _ _|_ |_ | _|_ _|_ _ |_ _ _| _|_ | | | |_ _ _ _| _|_ _ |_| _ |_ |_ _ _ | |_ _ | | |_ |_ _| | | | _ _| | |_ |_ _ | _|_ | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ | _ _|_ _ _ |_ | _| |_ |_ | | |_ | | |_ _ | | _|_ _|_ _ | |_ | | | |_ | |_ _ _ _|_ _ _| | |_ _ _| | | |_| _ _ _| |_ _| _| | +| | | |_ _| | _| _|_ _ _| |_ |_| |_| _ |_ |_ _| |_| |_ _ _ _ _| _ | | |_ _| | _ _ _ | |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ |_ |_ | _|_|_ | | | _ _| | _ _ _| | _ | _|_ |_ _| _| |_|_ | | _ _|_ _| _|_ |_ _| | _ _| | | _| _| |_ _|_ | | | _| |_ |_ _|_ _|_ | | |_ _| |_ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ | _ _| | _ _ _| |_ _ _|_ |_ _ _ _| _| _| _ _|_ | _| _|_ | _ _ | | |_ _ | |_ _| | _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| |_ _ _ _|_ _ _|_ |_ |_| _ |_ |_ |_ _ _ _|_|_ | |_| _ _ _ _|_ |_ _ _ _| | | | | |_ | | _| | | _| |_| |_ _|_ | | | _ _ | | |_|_ | |_ | | | | | |_ _| | |_ _ _| | | _| |_ _ _ _ _| _|_|_ _ _ _ _| | _ _| _ _| | _ _ _ | | |_ _ | _ |_ _ _| | | |_ _ _| |_ |_ _ | _| | _ _| | | | | _ _ _| _ _| |_ _| | |_ _|_ _ _ _ _ |_ _ |_| | _| _ _ _| |_ |_| _ _ _ |_|_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _| | | |_ |_ _| _ _ |_ |_ _| _| _ |_ |_ _ | |_ |_ _| | _ _| |_ _| _ _|_ _ _ |_ | _ _ _ _ | |_|_ |_ _| _ |_ _|_ | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ _ _| |_ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _| |_ | |_ _ _ _ _ | |_| |_ _ _ _ _| |_ _ _| _|_ _| _ _ |_ _ | _ _| | |_ _| _|_ _ | | | | |_ | | | | | | |_ _| _| _ |_ |_ | |_ | | |_ _ | | |_ | |_ _ _| |_ | |_ | | _ _|_|_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | _| _ _ _| _ _ _ |_ _ _| | | |_| | |_ _ _ _ _ | | | | _|_ _ | |_ | | | |_ |_ _| _|_ | _| _| _ _|_ | | _| _ | |_|_ |_ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| |_ | | | _| | _ _|_ _| | _|_ _| | | | | | _ _ _|_ _| |_ _| |_ _ _ _| | _ _ _| | | _| | |_| _ _ _| |_| | | | | |_ _ | | _| +| |_ _|_ _ |_ _ | | _ _ _ _|_ |_| _| _| _ _|_ | |_ _| _ | |_ _| | |_ _ _ _ _| | _ _ _ | _|_ _ _ _ _ _ _ | |_ _ _ _| _ _| | _|_ |_ _ _| _|_|_ _ _ _ _| |_ _| _ _ _| | _ | |_ | | |_ _ _ | _ |_ | _ _|_ | _ _ _| _ _| | _ _|_ _ _|_ _ _| _ _ _ | | | |_ |_| _| _| |_ _ | | | | | | |_ |_ | _|_|_ | | | _ _|_ _ _ | | | | | _|_ | _|_| |_| _ _ _| _ _ _ | | | | _| |_ _ _ _ _|_ _ _ _ _ _|_ _|_ _| _ _ _ _|_ _ _ _|_ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _ | _ _ _ _| | _| _| _ _|_ |_| _ _ | |_ _|_ _ _ _ _| |_ | |_ | | _|_|_ _ _| _|_ |_|_ _ |_ _|_ _ _|_ _ _|_ _ _ _|_ _|_ _| _ |_ _|_ _ |_|_ |_ |_ _ _|_|_ _ | _| | _ _ | | |_ _ _ | | _ _ |_ | | | _| _ _| |_| | | | |_ _ _| | |_ _| | _|_ _|_ _ |_ _| _| |_| | | _| _ _| |_ |_| _ | | | | | | _|_ _| | |_ _ | _| _ _|_ _ _| _ _| _ |_ |_ _|_ _ |_ | | | _ _ | _| _| | |_ | | _ | |_ _ | | | |_ | | _ _| |_ | |_ _ _| _| _ _|_ | |_ _ _ |_ | _|_ _ _ _| _ _| | _ _|_ | |_ _ | | _| |_ _ | | _ _| _ _ _ | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | _ _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _|_ _ _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _ | _ _ _| _|_ _ |_ _ _ |_ _ | |_ _ _ _|_ |_ | |_ | |_ _| _ |_ |_ | _| _ _ _| | | |_| |_ | | _ |_ _ _ _ _| |_| | |_ _ _|_ _| |_ _| |_ _ _ _| _| _ _|_ | | |_ _|_ _ _| | |_ | |_ |_ _ _ | _| _ _ _|_ _ _ | |_ _|_ _ | | | |_ _| _ | | | |_ _| _ _ _|_ _ |_ | _ _| | | | | |_ |_ _|_ | _ _| |_| |_| | | |_ _ _| | _ _ _| | _| | | _| | _| _| |_ _ _ _ _| | |_ |_ _| | | _ _| |_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_| _ _ _ _|_ |_ _| | |_ _ _| _ _ |_ _ | _ _| | | |_ _| | _|_ _| _ _ _ _| _ _ |_ _ | _ _| | | | _| | _| _ |_ |_| |_ _| |_ _| _ _| | | | +|_ | _|_ _ |_ |_ _ _| |_ | | _| |_ _ _ _ _|_ _ _| _| |_ _| _ _ _|_ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _ _ | | |_ _ _ _ _ _ _ |_ | _ _ _ _ | _ _|_ |_ _ _|_ | |_ _| | | |_ _| |_ _| | _ _|_ _ | _ |_ _ _| _ _ |_| _ _ _ _ _ |_ _| | |_ | | _| _| _| |_ _ _| | | | _|_ _| | |_ _ |_ _ _ _ _| |_ _|_ _ |_ |_ | |_ |_ _| |_ _ |_ _ _ _ | |_ _ | _| |_ _| |_| | |_ | _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_ _ _ | _| _ |_ _ _ _| _ _| _| |_ _| _ _| |_| _ _ _| | _| |_ _ _ _ _| _| | _| |_ _ | _ | | _ _|_ _ _|_ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ | | | |_ _ _|_ _ | |_ | _ _ | | | | | |_ | | |_ | | |_ _ _| | _ _|_ _ |_| |_| | | |_ | | _ _| | | _| | _|_ _ _ _| |_ | _ _ _| _ _ _ _ _|_ _ _|_ | |_ | _| _| _| | | |_| | _| | _ _ | |_| _ _| | |_ _ | | _ _ _ _| _| _ _|_ | | _ _ _| | |_| |_ _| | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| | | | |_ _| | | _ _| | | | _ | _| |_ _ _ _ _| |_ _ _| _| _| | | |_ _| _ _ _ _|_ _| | |_ _ _|_ | | |_| _ _| _ | | | | _| | | |_ _|_ |_| |_ _ | _| | |_ _ _ |_ | | _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| | | _ _| | |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| | | | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | | | _ _ _| |_ |_ _| | |_ |_| _| _ _|_ |_|_ |_ _ | _| |_ _|_ | | _| |_ _| | | _ |_ | |_ _ _ _ | _| |_ | | _| |_ _ _ _ _|_|_ |_ _ | | _ _|_ | | _|_ |_ _ _|_ |_ _| |_| | | |_ _ _ |_ _| | | |_ _ |_ _| | | | | | |_ _ | _ _ _| | |_ | |_ _|_ |_| _| _ _ _|_ _ _ | _| _| |_ _| | _ _|_| | |_| _ _|_|_ _ _| | | | |_ _ |_ _ |_ | | _ _| |_ _| _ _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_| | | | _|_|_ | | | _ _| _ _ |_ | | |_ _ _| |_ | _| | _ _ _|_ | | |_| |_ | | |_ _ _ _| _ |_ |_ | _ _ _| _| | |_| |_ | | _| |_ _ _| _| _ _|_ | _ _ _| _ _| | |_ | +| _| | | _ | |_ _| _| _ _|_ _ _| | |_ _| | _ _ | | _ _ _ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _|_ _ |_ _ _ _ | | |_ _| | |_| | | _ _|_| _ _ |_ _| | _ _| | |_ _ | | |_ _ |_ _ _| | | _| _ _ _|_ | | _|_ _ | |_ _ | | | _|_ _ |_| _|_ _ _ _ _|_ _|_| _ _ _|_ _ | | | _ |_ _ _ _|_ _|_ _| |_ | |_ | | |_ _ |_ | | _ | |_ _| | _ _| _ _|_ |_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _|_ | | |_ _ _ | | |_|_ _| _ _| | _|_ |_ _ | _| |_ _ _ | _ _| _|_ _ _|_ | |_ | |_| | | _ _ _ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _| | | |_ _ |_ _ _| | |_|_ _|_ |_ _| |_|_ | |_ _| _| |_ _ |_| _| | _ _ _| | _| _|_ | | | | | _| | | | _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | |_| _ _| |_| |_ | |_ _| | | _ _| | _| _ _|_ _ _ _| |_ _ | | _| |_ _ _ _ _| | | | | _|_ _ | _ _| |_ _ _ _ | |_ _ _ _ _ |_| _ _| |_ | _ _| | |_ | | | |_| | |_ _ _| _ _ _|_ _ _ | | _|_ _ _| | |_ _|_ _ |_ _ | _ _ | _| _ _ _ | |_ _ | | | |_ _| |_|_ _ _| |_ _|_ _ _ _ _| _| _ _|_ |_ _|_ _ |_ _ | |_ _| _ _| | _|_|_ | | | _ _| _ _ | _| | _| |_ _|_ _ _ _|_ |_ _ _ _ | _|_|_ | | | _ _| | _ _ _| | |_ _| |_ _ _ _ | |_ _ |_ _ _| | _ _| |_ _| | _ _|_ _|_ |_ _ | _| |_ _ _ _ _| |_ _| |_ | _ _| | |_ |_ _ | _|_ | _ _|_ | _ _| |_ _ _| | _| | | |_ _ | _ _ _ _ _| _ _|_| | _ | |_ _ _ _ _ _ _ _ _| | | _| _ _|_ | | | | |_ _| _|_|_ | | | _ _| |_ _| | | _ _| | | | _ | | _| |_ _ _ _| _| _| | | _| |_ _ |_ _ _ _|_ | _ _| | | | _| _ _ _ _ | | | |_ | _|_ _ _ _|_ | | |_ _ |_ | |_ _ | _| | | _|_ _ |_ _ _ _| _ _| _| _ _ _|_ _|_ |_ _ _ _ _| |_ _|_ _ | _|_ | | | | | _| _ _|_ _ _|_ _ |_ _ | | |_ _|_ | | _| |_ _ _ _ |_ | | _ | |_ _ | _ |_ _|_ | | _| |_ _| | | _| |_ _ _ _ _| |_ _ | | |_ _| | _| +|_ | |_| | _|_ | _ _| | | |_ |_ | _ _| | | | _| | |_| _ _ _ _|_ |_|_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_| | | _ _ _ |_ _ | _ _|_ | _ _| | |_ _ |_ _| | _ _ _|_ | | |_| |_ | | _ _| | | | _ | _| | | _|_|_ _ _ _ | _|_ _ | _ _|_ _ _ _|_ _ |_ _ |_ _ _ _| |_ _| _ | |_ _ _ _ | | | | _|_ _ _ |_| | _ _ _| _ |_ |_ _ |_ _| |_ | |_ | _|_| |_ _ _ _| | _ _ _| |_ _ | | _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _ _ _ _|_ _| |_ | |_ _|_ _ |_ _| | |_ _ | |_ _| |_ |_ | |_ _ | | | _ _ _| | | _|_ _ _| |_ _ _| |_ _ _| _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _|_|_ | | | | _ _| |_ _ _ _| |_ _ |_ _ | _|_ _| _|_ _ _| _| _| _|_ _ _ _|_ _ _| _ _ _| | | | | | | | | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_|_ _ _| |_ |_ | |_ _ _ _| |_ | _|_ |_ | | _ _ _| | | |_ _ _ _ _ _| |_| | _|_ _ |_ _| | _ _ _ | | _| |_ _ |_ _ _ |_ |_ | _| | | |_| | _| |_ _ | | |_ | _| _| | _ _ |_ _|_ _ _| | |_ _ | |_ _ | |_ | | | | |_ |_ _ |_| | |_| | | | | _ _| _ _| |_ _ _ _ _ | | | | _ |_ | _|_ _ | | | |_| _ _| |_ _ _ _ _| |_ _| _ |_ _|_ | | |_ _ _ _ _ _ | |_ _ | |_ _ _ _ _| |_ _| | _| |_ | | |_ _ _ _ _ _ | _| |_ _ |_ |_ _ _ |_ | |_ | _| | _ _ _| | |_ _ | | |_ | _ _ _|_ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ _ _|_ | | _| _ _ _|_ _| |_ | _| | |_ _ |_ _ |_ | | | | |_ | _ _ _ _ | |_ _| |_ _| _ |_|_ |_ _|_ _ |_ _ _ _ _| |_ _| |_ | |_ _|_ | _|_| |_| | | | |_ |_ | _ _ _| _ |_ _| _| | _| | _| |_| | _| | _ _ _|_| | |_ _ | | _| | _| _| | | _| _ _| |_ _ |_ | |_ _| |_ _| | |_ _|_ | _ | _ _| | |_|_ |_| _ |_ _ _| | _ _ _ _ _ _ _| | _ _ _| |_| _ _| | _ _ _ | | | _| | |_ _ _ _| | |_ |_ _ | _ _ |_| | | | | | _| | | | | | | |_ |_ _ | _|_ | |_ _ _ |_ _ _ |_ _|_ _ |_ _ _| +| | |_ _ _|_ | _|_ | _|_ | |_ _| _|_| | | | | | |_ _ _ _ _| |_ | _ | |_ | _|_|_ | | | _ _| | | |_| | | |_| _ _ _ _| | | _ | | | _| | _ |_| _ _|_ _ | | |_ _|_ | | _| |_ _ | | | | | | | | _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| _| |_ _|_ _ | | | |_ _|_| | | | _| | _| _| _ _|_ | |_ _ _ _| |_ | | |_ _ _ _|_| _ _ |_ _ | _ _| | _ _| | | |_ |_ | _|_|_ | | | _ _| _ | _| |_ _ | |_ _ _ _|_ _ _|_ _ _ | |_ _ | _|_ _ |_ _| _| _| _| _|_ _ |_ _| |_ | |_ _ _| |_| | |_ _ | _ _| _ | _ _ _ _ _| |_ | _|_|_ | | | _ _|_ |_ | | |_|_ _ |_ _ _ _ _| |_ _| |_ | _| _ _ _ _|_ |_ _ _| _| | _ _ _| _ _ | _| |_ _ |_ _ | _| _| | _| | |_| | |_ _| | |_ _ | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ _ _|_ |_ |_ | _| _ _| | |_ _ | | | |_|_ | | |_| _| |_ | _ _ | | _| _|_ _ | |_ _ | |_ _ | _| |_ _ _|_ | | _ | | _ | | |_ _ _|_ _|_ | |_ |_ _ |_ |_| _|_ |_ _ _|_ _| | _ _ _ _ _ _|_ _| | _|_| _ _| | | _|_ _| | | | |_ | _|_ | | |_ _|_ _ | | | _ _ _ | _ _ _|_ _|_ _ _| |_ | | |_ _ _| | |_ _|_ _ |_ |_ _ _ _ | _ _ _ _ _|_ | _ _ _| |_ |_ _ _ _| | | _ _| | |_ _ | _ _ _ _ _| |_| |_ _ _| |_| _ _ _ _ _|_ _ _| | | _| _| | | | _|_ | _| | | _ _| | _| _| |_ | |_ _ _ _|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _| |_ |_ | _ |_| _| _| _ _| _ _|_ _ |_ _ _| |_| | | |_ | | _ | | _| |_ _ | _ _ _| |_ | | _ |_ _ | _ _ _ |_| | _ _ _| _ |_ _ _ | _|_ |_ _ _| |_ _ | |_ |_ _ |_ |_ _ _ _| | _| _ _|_ _|_ |_| _ _ _ _ _ _ _| | _ _ _|_| _| _ _| | _ _ _| _| _ _| |_ _ | | _ _|_ _ _ _ _ _|_ |_ _|_ |_ _|_ _ |_ _ _ _|_ | | _ _| |_ _ _| | | _ _ _| _ |_ |_ | _|_| _ _ _| _|_ | _|_ _ _ _ | |_|_ | | _ _|_| |_ _ | |_ _| | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _|_ | _| _| | _|_ | |_ _ _ | +| |_ _ _ _ | |_ _| |_ _ |_|_ |_| _| _| | | | |_| | | _ | | _ _|_ _ _| | _| | | |_ _ _ _ _| |_ _| _|_ _| |_ | | |_|_ | _ | | _ _| | | |_ _| | | |_ | | _|_ _| | |_ _| | | |_ |_ _ | _ _|_ _| |_ | | _|_ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| |_ | | _| _ _|_ _| | |_ | | _ _| | | | | |_ | | _| |_ _ _ _ _|_ | _ _ _| | | | | _ _ _| | | |_| |_ | |_ _ _ _| |_ _ _ _| _|_ _ _ _ _| |_ _|_ _ | | _|_ | | | _| |_ _ _| _ _ _ _ | _ _| _ _| |_ |_ |_ _ | | _ _ _| _|_ _ _| | _ _ _ _ _ | | _ _| | | | |_ |_ |_|_ _ | | _ _|_ _ _| |_ _ _ _ _| |_ _| _ _|_ _ _| | | _ _ | _ _ _| _|_ | |_ |_ _ _| |_ | |_ | |_ _ | _|_ _ |_|_ _ _ | |_ _ |_| |_ | | _| | | _|_ | |_ _ _ _ _ _ _| | | |_| | _|_|_ | | | _ _|_ _ _ _ | | | | |_ _ _| |_ | _ _| | _ _ _ _| | | | | | | _ _ _| |_ |_ _| _| |_ _ _|_ _ _| _|_ _ | |_ _| _| |_ _ _ _ _ _ | |_ | |_| | _| |_ _ _ _ _| |_ _ | | _ _|_ _| _| |_ _ _ | _|_ _| _ _ _ _ | |_ _ _ _ | _ _|_ _| _ _ _| | | |_|_ |_ _| |_ _|_ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ |_ | | _ _|_ _ | |_ _ _ _| _ | _| _ _ _ _ | |_| _ |_ |_| _ |_ _ _ _| | | _| | |_|_ _ | _|_ |_ | |_| _ |_ |_ _ | | | _ _| |_| | | | | | _| | |_ _ _|_ |_ _| | _| | | _| _| _|_ | _ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | |_ _| | |_ | |_ |_ _ _| _| |_ _ |_ _ _ | | | _ _ _|_|_ |_| |_ _| | |_ _ _|_ | | | | | _|_| |_| | _ _ _| | | | | | _| | | _ _| _|_ _ | |_ _ |_ _| | _ _ _ _| | _| |_ |_ |_| | _ _| |_ _| _ _ _ |_ _ _ _ _| | _ _|_ | _ _ _| | | _| |_ _ | _ _ _| | _ | | | | |_ | _ _ _ _ | |_ _ _ _ _ _ | |_ _ | _ _|_| |_ |_ _ _| _ _| |_|_ _| _| _ _|_ | |_ _ |_ _ |_ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| |_ | |_ _|_ _| |_ | _ | +| _ _| _| |_ | | |_ _ |_ _|_ | |_ _ _| | | _| |_ | |_| | _ _| | | _| | _ _ _ _ |_ _ | | | | _ _ _ _| |_ | |_ _| | |_ | | _ _ _ _| |_| | |_ _|_ _ _ _ _|_| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | | |_ _ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| | |_ |_ _| _|_| _|_| |_ | | |_| | |_ | |_ _ _ _ _ | |_ |_ _ _ _ _|_ _| |_ _ | _| |_ _|_ | | _| |_ _ | _| | _ _| _ _ |_ _ _ _ | | | _ _ _| |_ |_ |_ |_ | | _ _| |_ _ | | _ _| | | _ _ | |_ _| _ _ _| | | | _|_ _ _| _ _ |_|_ | _ _| | |_|_ | _|_ | | _| | _ | _ _|_ _ | _ _ |_|_ | _ _ _ _| |_ | | |_ _ _ _ _|_ | _| |_ _| _| _ _|_ _ _| |_ _ _|_ _| | | _ |_ _ _ _ |_ | |_ | | _| | |_ _ _|_ _ _ _ | _ _| | _|_ _|_ | | |_ _ _ _ _| |_ _| _ | _ |_| | | |_| _| _ _|_ _ _| | | _ _ _| | _| | | _|_| |_ _ _ | _|_ _ _| _| _|_ _ _ _ _ _ _|_ | _|_ | | _| _| _ _| |_| | _|_ _ _|_ |_ | _ _ _ _|_ |_ _|_ | _ _ _|_ _| | _ _ _ _|_ | _|_ _ | | _| |_ _ | _ _|_ | _ _ _| |_ _| |_ _ | | _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_| | |_ | _ _|_ _|_ _ | | | |_ _| _ | | _ _| _| _ _|_ | _|_ | _ _| | | | | |_ _| | _ _| |_ | _| _| _ _|_ | _|_ _| |_ | _|_ _ _ _|_ _|_ _ | |_ |_ |_ |_ _ | |_ | |_|_ _ _| _| _ _|_ _ | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _|_|_ | | _| |_ _| | _ _ _|_ | _| | |_ _| |_|_ _| _ _ _ | | _| _|_ _ _ | | | |_ _| |_|_ | _| _| | | _ _| | | |_| | | | _| | | |_ _ _ _ |_ | |_ _ _ _|_ | | _|_ _ _ _ _ | | _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | | | _ _|_ _ |_ | |_ | | _ _|_ | |_| |_ _| |_ _| |_ _| |_ _ | | _| |_ _ | _| | |_ |_ | | |_| _ |_ | _ | |_ | _ | _| _| |_ _ _ _ _| | _|_ _ |_ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_| | | |_ | _ _| |_ _ |_ | | +| | |_ |_ _ _|_ |_ _| | _|_ | | |_|_ _ _ _ _| | | _ _ _|_ _ _| | |_ _ _| | | | | |_ _ _ _ _ _ _ _| | |_ _| _ |_ |_| | | _ _| | | | | _| _ |_ | |_ _ _ _ | _ _ |_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ |_ _ |_ _ _|_ _ _ | _|_|_ | | | _ _|_ | _ _| |_ | |_| | _ | _ _| |_ _ _| |_ |_ _ _| | | _| | | |_| |_ |_ | |_ _ _| | | | | _ _ _ _ | | _| | |_ _| | | |_ |_ _ | _ _ _| | | | | _ _|_ _ _| | _ _|_| |_| _ |_ |_ | |_| | _| |_ |_ _| _ _ |_ | _|_ _| | _|_ _ |_ _ | _|_ _| _| | _ _ _| | | |_| |_ | | _| | |_ _| | | _|_ | |_ | | _| |_ _ |_ _ _ _| _| _ |_ |_| |_|_ _ _ | _ |_ _| |_ | _ _| | _ | _|_ _ _ _| _|_ _|_ _ | _ |_ _ _ _| _|_ _|_ _ _|_ _ | _ _ |_ _ | _ _| | | | | |_ _| | _ | | _ _ |_ | | _ _ _| |_ _ _| | | _ _| | |_ | | _| | | | |_ _| _ _| | | |_ | _ _ _| |_ _ _ | _ |_ _ _| |_| |_ _|_ | |_ _ _| _ _|_ _ _ _|_ _ _ _ _| |_ _ _| |_ | | _ _|_ _ | _ _ _|_| _ _ _ | |_ _ _| | |_ _ _| | |_| | _| | _ _ _| | |_ _ | | | | | | _| |_ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| | | |_ _ _ _ | |_ _| | | |_ _ |_ _| | |_ | _| |_ _ _ _ _|_| _|_ _ _ |_| |_ _| |_| |_| | _ _|_ _ _| | _| |_ _ _ _ _| | | _| | |_ | _ _ _ _ | |_ _| _|_ _ _ _| |_ | |_ | _ _ _| | |_ _ _| |_ _| _| | | |_ _|_ | | _ |_ | | |_ _ _ _ _ _| |_ _ _| | _ _| |_ _ | _ |_| | _| | | | | _ _ _|_ _| |_ _ _ _|_| |_ | | | | |_ | | _ |_ _ _| | | |_ | | | | | _| | | |_ |_ _|_ _ |_ _ _| _|_ _ | _ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | |_ | | |_ _ |_ _| | _| | | |_ _ _| _| |_ _ _| _ _|_ |_ _ | | _| | |_ _ _|_ | | | _| |_ _ _ _ _| |_ _ _| | | | | | | | | _|_ | |_ _ _ | _| | | |_ | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _ _| _|_ | _|_ | | | | | | | +|_ | |_ _ _| _|_ | | |_| _ _|_ _| _ _ _ _ _ _ |_ _| |_ _ | |_ _ _| | | | |_|_ _ _ _ | | _ _|_ |_| _| _ _|_ | _| | | _| | |_ _| _| _ _|_ _ _ _| _| | | _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| _|_ _| _ _ |_ _|_ _ _ _ _| |_ _| _ _| | |_ _ | _|_ _ _| | _| | |_ _ | _ _|_ _ _| _| | |_ | |_| |_ |_ |_| _| | _ _| | | | | |_ _ | | _| |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | |_ _| | _ _ _ _ |_ _ | _| _| _ _|_ | |_|_ | _| _|_ | _| | | | | | _ _ _ _| | | _ _| | |_ _ _ _ |_ _ | |_|_ _|_ | | _| |_|_ | |_| | | |_ _|_ _ |_|_ | | | | | _ _ _| | _| _ _| _| _ _|_ | _ | _ _|_| | |_ | |_ | _|_| _| |_ _ |_ _ _|_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ | | |_| |_ | | |_| |_ _| |_ _| |_ _| |_| |_ |_ |_| _ |_ |_ | _| |_ |_ | |_ _ _ _| | _ _| _| | | _ _| | |_ | |_ _ | _ _| | |_| |_ _ _ _ | | _| _| _| | | |_ _| |_ | _ _ _ _ | |_ _| |_| _| _ _|_ _ _| |_ _ _| | | _ _ _|_ | |_ _ | | _| _ _ _ _| | | _|_ |_ _ _ _| |_ |_ _ | | | | | | | | |_ _ _|_ |_ | _|_|_ | | | _ _|_ _ _ _ | | | _ _ _ _| | _ _| _| | | _|_|_ | | | _ _| _| | |_ _ | _ _ _|_| _ _ |_ _ | _ _| | _| _| | | | | |_ _ _ | | _ _|_ _ _ _|_ | |_ _ | | _| |_ _ | | _ _ _ _|_ |_ |_ _| |_ _ | |_ _ | | | |_ _ _| |_ _|_ _ _ _ _|_ | | | | _|_ _|_ _ |_ _ _ _ _| _| | | | _| | |_| _|_ |_ | |_ _|_ _ | _ | _| _ | _ _| | _|_ _ _| |_ | |_| | | | _ | |_ | | | |_| | |_ | | _| _ _ |_ _ _ | | _| _|_ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ |_ _ _| _|_ _ _ _| |_ _ _ _ _ _| | _ _ _ _ _ _ _ _| _| | | _| _ _ | _| |_| | |_ _ _ | _ _| | _| _| |_| | |_| | |_| _| |_ | |_ _| | | _| |_| _|_ _| _| | | |_ _|_ | _ _ _ _ | | |_ _ |_| | _| | | |_ _|_ | _ _| | | |_ _ _ |_ _ |_| |_ _| |_ _| | | | |_| +| | | _ |_ _ _| |_ _| | _|_ _ _ _ _| _ _ |_ _ | _ _| | _| | |_ _ _| _ _|_| |_ _ _| _| |_ _ _ | | | _| |_ _ _ _ _|_ _ _|_ _ _ |_ | _| |_ _ _ _ _| _ _ _| _| | | |_ _ _ _ _| _|_ _ |_ _ _ _| _ _| _|_ _ _ | _ _ _| | | | _ | _ _ _ _ _| | _ _| |_ _| | _ _ |_ | |_|_ _ _ _ _| _ _ |_| _| _|_ | |_ |_ _ _ _ _| _| _| | |_ | |_ |_|_ _| | |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _|_ | _ _ | _| | | _| |_ _ _ _ _|_ _ _ _| |_ |_ _ |_ _| _| |_ _| | | | _ | _|_ |_ _ _| |_ _ |_ _ | _| | | | _ | | |_ |_ _ | _ _ _| |_|_ _ _ _ |_ _ |_ _ _| | | | | _ _| | _| | _| |_ _ _ _ _|_ _| | | _ _|_ |_ _ _|_ _ _|_ _ |_ _ _ _| | _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _|_ | | _| |_ _ |_ |_ | |_ |_ _ |_ _ _|_ _ _| _| _| _ _|_ |_|_ |_ | | _|_ | | _|_| | | _| | | | | | _| | _| | | _ _| |_ _ _| _ _ |_ _| | _| _| _|_ _|_ _ _ _ _ _| _ | | _| |_ _ |_ _ _ _| | | | _ _| _| | | _|_|_ _ _ _ | |_|_ _ | | | | _ _ |_ _ | | | |_| _ _ _ _|_ |_ _ _| |_ _ _| |_| | |_ |_| | _| | |_ _ _ _ _| |_ _| _ _|_ _ _ _| | | _| | _| | | |_ _| |_ _ _ _ _| |_ _| | _ | |_ |_ |_ _ _| | _ _ _| _| | |_| |_ | | _ _| _|_| |_| |_ _|_ | _ _| |_ _ _| _ _ | |_ _ _| | |_ _ _|_ | | | |_ _ _| |_ | | _ _ _ _| | | | | | | |_| |_ _ _| |_ |_ _ _ |_| | | | _| _|_ _ | | |_ _ _ _| _|_| | | | _|_|_ _ _ _ _ _| _|_ _ | _ _ _|_ _|_ _ _| _| |_ | | | _ |_ |_ | _|_ _| | |_ _| | _| | _| _| |_ _ _| |_ |_ | |_ _ |_ _|_| | | _| _ _ | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | |_ |_ _ | _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ | | _|_ | | _|_ _ _ |_ | _ _| | |_| _| _|_ _ |_ | |_ _ _| _| |_ _ | |_ _|_ _|_ | | _ |_ _ _| |_ _|_ _ _ _ _|_ _ _| |_| |_ _|_ _ |_ _ |_ _ _| |_ _|_ _ _ _ _| | |_ _ _| |_|_ _|_ _ |_ _ | | _| _| _|_ _ _|_ |_ | +|_ _ _| _ _ _ _ _|_ _ _ _| | _ | _ _ _|_ | | |_| |_ | | |_ _ _ _ _| _ |_ |_ _| | _| _| | |_ _| | |_ _ _ _ _ | _ | _| | _| |_ |_ _ |_ _ _ |_ _ |_ _|_ _ _ _ _ _ _ _ _ _ | |_ | | |_|_ |_ _|_ _ | _|_| _| |_ |_ _ _| _ _ |_|_ | _ _| | | _ _| |_ |_ _| _ | _ _ _| | | _| |_ _ |_ _|_ _ | _ _ _| _| _| | _| | | | _ _| |_ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ |_|_ | | | _| | |_ _ _ _ |_ _ |_ |_ | | _ | |_ _ _ _ |_ _ _|_ _ _| _ _| | |_ _ _ _| _ |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _ | |_ _ |_ | |_ |_ |_ | _| |_ | |_ | _ _ _ _ _| |_| _| | | _ _ _ _ | |_ _ |_| _ _| | _|_ _ |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ |_ | | |_ |_ _ | _ _| _|_ |_ _ _|_ |_ | | | _| |_ _ _ _ _| |_ |_ _|_ _ _| |_ _| | | |_| | |_ | | | | | | _ _|_| _|_ _ _ _| | _ _ _ _ _| | _ _ _|_ _ _ _ _ | _ _ _ _ _ |_ _| | |_ _ _| | | _ | _| | | | | | | _| |_ _ _ | |_ _ _|_| _ | | _| | |_ |_ _ |_| |_ _|_ _ _ _ _| |_ | _| _ |_ | |_ |_ _|_ _ _ _| _ _ _ _ _ _| | | |_ _ _ _ _ | |_ | _| | | | _| |_| _ _ _| | | | _ _| | |_ _| _| _ _| _ |_ _ | | |_ _|_ | | _| |_ _ |_ _ |_ _ | _| _| |_ _ _ _ | _| | _| |_ _ | | _|_ | | | |_|_ _ | _ _|_ _ _|_|_ | | _|_|_ _|_ | | | _ _ _| _ _ _ _|_ _ _ _ _|_ | | | |_| _ _| _ _| | |_ _ _ |_ _ |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_|_ | _ _|_ | |_ | _ _|_ _ _ _ _| |_ _ _| _| _ |_ |_ _| _|_ |_ _ | _| | | _|_ _ |_ _| | _ _| |_ | _|_|_ | | | _ _| | _ _ _ | | _|_ | | _ _|_| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | _| _ _ _ _| |_ | _ |_ _| | | | |_ |_ _ _| | | | _|_ _ _| _| _|_ | |_ _ | _ _| | | | _ _ | | _ _ | | _ _ _ _|_ _ | _ _ |_ _ | | | | _ _ | _|_ | | | | _ _ |_ _ | | |_| | _|_ | _ _ | _ _| | +| _ |_ | _ _ _ _ | |_ _ | |_ _ | _ _|_ _|_ | | _| |_|_ _ _ |_| _| _ _|_ | |_ |_ _ | |_ _ _ _|_ |_ _|_ |_ | | | |_ _ _|_ _ _ | | _ _|_ _ _ _|_ _ _ _ _ _ | | _ _ _ _ | |_ _|_ | |_ _|_ _ |_|_ |_| _ _ _ _| | | |_ _ _| _ _ _| | | |_| |_ | | |_ |_ _|_ | | _ _| |_ _ | _|_|_ _ _ _ _ _|_ _| _ _ |_ _ | |_ |_ | |_ | |_ _| | _| | | |_ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _|_ _| |_ _ |_| |_ _|_ _ |_ | |_ | _|_ |_ |_ | |_ _ | | _|_ _ |_ _ _| _ _ |_ _ | _ _| |_ _ | |_ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| |_ _ | _| | |_ _ | | | | | |_ | |_ | |_ |_ |_| _ |_ |_ _| | |_ _ | | _| |_ _ |_ | | | | |_ _|_ _ |_ |_ | _|_|_ | | | _ _|_ _ _ _ | | |_ | | |_|_ | | _ _|_| |_ _ |_ _ _ _ _ _| _|_| |_ _| |_ | _ | _ |_ _ _| _ _ |_ _ | _ _| | |_ | |_ _ _| |_| | |_ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ | | | | _ _| | _ _|_| |_ | _|_ | | |_ _| | | | _| _ |_ _|_ _ | | | |_ _| _|_ |_ |_ |_ | _ _ | | _ _|_ _ _| |_| _| _ _|_ | |_ |_ _ _ _| |_ _ | _ _ _ _|_ _ | _ _| | |_ |_| | | _|_ _|_ | | _ | |_ _| |_ _|_ | _ _ _| _| _| _ _| _| _| | | |_ _ | | |_ |_ _ | _ _| _ |_ _| _|_ _ _ _ |_ _| |_ _ _| | | | |_ _|_ _|_ | | _ |_| | _| _ _ _| | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| |_ |_| |_| | _ _|_ |_| _ _ |_ _ |_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | |_ _ _ _|_ _|_ |_ _ | | _ _|_| _ |_| _| _ _|_ |_ _ _| |_ | _| |_ | |_ _ |_ | _| | |_ _ |_ _ _ _ _| |_ _| _ _| | _ | | | | _ _|_ | | |_ _ | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| | | _| _ |_ |_ _ |_ |_ | | |_| | | | _ _| _ _| | |_ | _ _ _ _ _| _ _| | |_ |_| | _| | |_ _ _|_ _| _| |_ _|_ | _| _ _|_| | _| |_| | |_|_ _| | |_|_ _ _ _ _|_ |_ _| |_ | _ _| | |_ _ _ _| _| _ _|_ | | _| +| | |_ _| _ | | _| |_ _ | | _| | _ _ _ | | |_ |_ _ | _ _| | _| |_ _ _ _ _| |_ |_ | _| | _ _ | _|_ _| |_ |_ _| |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ | | _| |_ _ | _|_ _ _ |_ _ | | |_ | _ _| | |_ | |_ _ | _| |_ _|_ | | _| |_ _ | _ _ | | | _ _| | _| | | _ _ _ _ | |_ _| _ |_ _| | | | | |_ | |_ _ _ _|_ | |_| |_ | _| | | |_ _|_ |_ |_ _ | | | |_ _ _ |_ |_ | |_ | | _ | _| _|_ _ |_ _ |_ _ _| | |_ | _| |_ _| | | _ _ _|_ | | |_| |_ | | |_ _|_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _|_ | | | _|_| | | |_ | |_| | _ _| _| _ _| _| _| _ _|_ | | | | | _| | |_ _ _|_ | | _| | | _|_ |_ | |_ |_ _ _|_ _ _ _ _| |_ _| | |_| _ | | |_ |_ | _ _|_ | | |_ _ | _ |_ _ _ _ _ | |_ |_ | |_ |_ _ _| | _ _ _|_ | | |_| |_ | | |_ _| _ |_ | |_ _ _ _ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_|_ _ _| | _ _|_ _ | | _|_| | _|_ _| _| | | _| _| _ _ |_ _| | | |_ _ |_ | _ _ _|_ | | _ _| | |_| |_ _ _ _| _| |_ _ _ _ _| | _| | | |_ _ |_ _ _| _ _ |_ _ | _ _| | _|_ | |_ _| |_| _ _| | |_ _ _| _ _| | | | _ _ _| | | | | |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _ _ _| _ | | | |_ _ _| _ | _| | |_| | _| _ _ |_| |_ | | _| |_| _ _| _ _ _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ | | | |_ | | _ _ _|_| |_ _ |_ | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _ _|_| |_ _ | _ |_ _ _| _ _| | _ _ _| | | _| |_ _ _ _ _| _ _ _|_ _ _| | _|_ |_|_ _ | | _|_ _|_ _|_ _ |_ _| _ _ | |_ _ _| |_ _ _| |_| _| | _ _| |_ _| _ _| | | |_ _ | _|_|_ | | | _ _| _ |_ _ | | |_ _| _| _| _ _|_ | _| _|_ _| |_ | |_ | | | _ _|_ _ | | _ _| | _| | | |_ |_| _| |_ _ _|_ _ _ _ _ _ _ _ | _ _|_|_ _ _ _ _ _ _| |_|_ |_ _ _|_ _| _| |_ _ _ _ | |_ _| | | _| | _ _|_ _ | |_|_ _ _| _ |_ |_ | +| | |_ _ |_ _| | |_ _ _| | | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _ |_ | _|_ _ _| |_ |_ _| | _| _ _|_ _ _| | _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | |_ _ _ |_ _| _ _| | |_ _| _| | _| |_ |_ _| _| | | | _ _| | |_ |_ _ | _|_ | | | | | |_ _| _|_| |_ _ | | _| |_ _ |_ _| | _| _|_|_ _ _| _|_ _ _ _ _ _|_ _ _ _|_ _ _ _| |_ _|_ _ _ _ _| _| _| _ _|_ _|_ _ |_ _ | | _| | |_ _ _|_ _| _| _| _| |_ _ |_ | | | | _| | _ _|_ |_ _ | _|_ _|_ | | _| |_|_ | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | | _ _ _| | |_ _ _| | | | |_ |_ _ _| _| _ _ _| | _| |_ _ _ _ _| | | |_ | _| _ _ _ _| | | _| |_| _ _ |_ _|_ | | | _ _ _ _ _ | _| | |_ _|_ _| |_| | _| |_ _| | _ _| |_ _| _ _| | |_ _ |_ _ _ |_ _| _| _| | _ _| _ |_ _ | _ _|_ _|_ | | _| |_|_ | _| _ _|_ | | _ _ _|_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | | _|_ _| _ _ |_ _ | _ _| | | _|_ _ _| _| | | | |_ _ _ _|_ | _|_|_ | | _ _|_| _ _ |_|_ | _ _| |_ _ _| |_| _ | |_ _ _ | _ _|_ _ | | |_ _| | | _ _ _| | | |_| |_ | | _ _ _| _ _ _|_ |_ | _| | _ _ _| _ |_| | | |_ _ | _|_ |_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ | | |_ _| |_|_ | _ _| | |_| | | _|_ _ |_ | | _ _ _|_ _| | _ _| | | | | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| | | | | | | | | _ _ _ _|_ |_ | | |_| | |_ |_ _ _| _|_|_ | | | _ _| _ _ | | | | _|_ | | |_ _ | | | | |_ _ _ _ _| _|_ _ _ _| | _ _ _ _ _ _ _ _| _| _ | |_| | _ _| _| | _ | _ _|_ _ _ _| _ |_ _|_ | | _| _ |_ |_ | |_ _ _ _| _ _| | _|_ _|_ _ |_|_ _ _ _ _| |_ _|_ _ | |_ _ _ | | | |_| _| |_ _ _ _ _|_| _| _ |_ | |_ |_|_ _|_ _| _ _ |_|_ | _ _| | | _| | |_ |_ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _ _ _ | | _|_ | | |_ _ | _| |_ _ | |_ _| _ _|_ |_ |_ _|_ _ | | | |_ _ | | +|_|_ | | | _ _|_ |_ _| | | | |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ _|_ _| _ _ |_ _ | _ _| |_ |_| | | _ _ | _| |_ _ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| | _ _|_| | | _ _| | | _ _|_ _ |_ | | | | | | _ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _|_ _|_ _ |_ _ _ | _| | |_ _ _|_ | | _ _|_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _ | |_ | |_ _| _ _ _ |_ _ |_ _|_ |_| | | | _ _ _| | _ _|_ _| | |_ |_ _ _| |_| _| | _ _|_ _| | |_| _ | | |_ |_ _ | |_ _| _| _| | | |_ _|_ | | |_ _| _ | | |_ _| _| |_ _ _ _| |_ | |_ |_| | | | _ _ _| _ _| | | |_ _ _ _| | | | | | | |_ |_ _ _ _ _ _|_ |_ _ _| |_ _ | _| | |_ _| _ _| | _ _| | | |_ |_| _ |_ |_ _ | | _|_ _ _ _| _ _| | _| _ _| | | | _ _ _| _| | _| _ _| _| _| | _ | | | |_ |_ _ | _ _| _ _ _ _|_ | |_ _ _ _| | _ _| | | _|_|_ | | | _ _| _ | | | | | _ _| | _| _ _ _|_ | | |_| |_ | |_ | _ _ |_ |_ _| |_ _ _ | | |_ _ _ _ _| | | _ _ _| | | |_| |_ | | | _ |_| _| |_ | |_ _ _ _| _ _ |_|_ | _ _| | |_ _ |_ | |_ _|_ | | _| |_ _ _ |_ _ _| |_ | |_ _ |_ _ | _|_ | _|_|_ _| | _| | _ _ |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _| | | _| _ _| | | | _ _|_| |_ _ |_ _|_ _| _ _ |_ _ | _ _| | | |_ |_ _| _ _| |_ | | _|_|_ | | | _ _| _ _ _| | |_ |_ _ _ |_ _|_ | |_ |_ _ _| |_ |_ _| | _| _|_ _ |_ _ _ _ _| |_ _| |_ _ | | | | |_ | _ _| |_ _| _ _|_ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ _|_ _ _| |_ _|_ _ _| _| | |_ _ _| | _ _ _ | |_ _| | _|_| |_| _| _ _|_ | | | _ | | |_ _ |_ _ |_ _ _ _ _ _ | _ | | | _ _ _| |_| |_|_ | |_ | _ _ _ | | _| _ _|_ _|_ _ | _ _ _|_ | | |_| |_ | | _| _|_ |_ | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _| _| | |_ |_ | |_|_ _ _| _| _| |_| | _| _|_| _ _ |_ _| | | |_ _ |_| | +| _ _| |_ _| _ | |_ | | | | | _ _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _| _ _ _|_ | | |_| |_ | | |_ _ _| _| | _| |_ _ _ _ | _ _ | _|_|_ | | | _ _|_ |_ | | | | |_ |_ _ | | |_ _ | |_ |_ | | _ _ _| |_| | |_ _ _|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | | |_ _ |_ | _| _ _ _ | | |_ _ |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| | |_|_ _ _|_ _ _| | _ _| _ _| | _ _ _ _ _|_ _| |_ _ | _ _|_ | _| | | | _ |_ | | _| | _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _|_ _ _| |_ _|_ _ _ _ _| |_ _ | | | |_ _|_ _ |_ _ _| | _ _ _ _|_ |_| | _| _ _| |_ _ | |_ | _| | |_ |_|_ |_| _ _| | _| |_ _ _ _ _| _ _ |_ _ | _ _| | _ _| | _| | _ _| | _| | | | | _| _| _ _|_ | _| | |_ _ _ _ | | |_ _ | | _ _| | |_ _| _ _ _| _|_ | | |_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ _ | |_ |_ |_ | _| _ _ _ _|_ _ _ _ _| |_ _| _ _ _|_ _| | | | | | _| |_ |_ _ | _|_ _|_ | | _| |_ _| | |_ _ _| | _ _|_ _|_ _ | | _ | |_ _ | |_|_ _|_ | | _| |_ _ |_ _ _| |_| _| | _ _ _|_ | | |_| |_ | | _ | | _| | | | |_ |_ _ | _ _ _ _ _|_ _ _| |_ _ _ _| | | |_|_ _ _| | _|_|_ _ _ _| _| _ _ _ |_ _ _ _ _ _ _ _ _| _ _ _| _ _| _ | _|_ _| | | _ _| _ _|_ |_ _| _ |_ |_| _| _| _ _ _| | | |_| |_ | | | | _| _ _| _ _ |_ |_ _ _ _ _| |_ _| _| | |_ _ | | | | | _ _ _| _ _ _|_ |_| _| _ _|_ _ _| |_ _ _ _| _ | |_ _ _ | _ | |_ _ _ |_ _|_| |_ |_ _ _ _| _ _| _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _ _ | |_ _ _ _| _ | _| _ _| | _ _| |_ _ _ | _| |_ _ _ _ _|_ _| |_ _| |_ _|_ _ |_ _ _| | |_ _ | _ _| | |_|_ |_ _| _| _ |_ |_ | |_ | | |_ _ | | |_ _ |_ _ _ _ _| _ _ |_ _ | _ _|_ _|_ | | _| |_ _| _ |_ | |_ | |_ _|_| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _| | _| _| _| |_ | _ _ _ | | _| _ _|_ _| | _ _| | | _|_|_ | | | | +| | _ _ _ _| | |_ |_ _|_| |_| |_ |_ _ _ _| _|_ _ |_ _ _ _| _ _| _ | _| |_ _ | _ _|_ _|_ | | _| |_ _ |_ _ |_ |_ |_ _ | | |_ |_ _|_ _ _ _ _| |_ _| _ |_| |_ | | | | |_|_ _| _ _| |_ _| |_ | | | | |_ _| _ |_ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | |_ _ _ | |_| _| | | |_ | _ _| | _ | _| |_ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _|_|_ _ _ _ | |_ _ _| | | | _ _| | _ _ _ _ | | _| | | _ _ _| |_ _ _| | | | | |_ | | |_ |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _ _ | _ _ _| | |_ |_ _ _ _ |_ _ | _|_ _ _| |_ | |_ _| _| | _| | | _| |_ _| _| |_|_ _ _| | | | |_ _ | _ _ _| | | |_| |_ | |_ _ _| | _| | |_|_ _ _ _|_ _| | | | _| |_ _ _ _ _| | |_ | | _ _ |_ _|_ _ |_ _| | |_ _ |_ _ | | | _|_ _|_ _ |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | | | | _| | |_ _ _ _| _ | _| _ _ _ _| | _ _|_| |_ |_ | | | | _| | |_ _ _| | |_ |_ _ | _|_ | |_|_ |_ _ _| _ _ _| |_ _ _| |_ _| | | | _ | | |_ |_ _ | _ _| _|_| _| _| |_ _ | _|_ _|_ | | _| |_ _| _| | _|_| | |_|_ | | _ _|_| |_ _ | _ | |_ _ _ | _|_ _|_ _ _|_ _ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | | |_ _| |_ _ _ _|_ _| |_ | |_ _| _| _ _|_ | | |_ |_ _ | |_|_ _|_ | | _| |_ _| | | | | |_ _| _|_ _ _ |_ _| | _| _ _|_| |_ | | | _| |_ | | _ _| | |_ _ _|_ _ | | | |_ _| _ | |_| | _| | _| _| _ |_ |_ | | | | |_ _ | | |_ _|_ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | |_| | |_ _ _| |_ |_ _|_ _ | | | |_ _| |_| _| | _| | | _ _| |_ | | _ _ _ |_ | _ _ _ _ |_ _ | _ _| | |_ | |_ _ | | _ _| _| _ _|_ | | |_ _|_ _ _| | |_ | | |_ _ _|_ _ |_ _| | _ _ _| | |_ |_ _ | _|_ _|_ | |_ _ _ _ _| _ _ | _|_|_ | | | _ _| _ |_ | | | | |_ _ _| |_ _| _| _| | |_ _|_ _ | | | |_ _| _ _ |_|_ | _ _| | |_|_ _ _ _ _| |_ _| | +| |_ | _| |_ _ _ _| _ |_ |_ _| _|_ _ _ _ _ _ _ _ _ |_ | | |_ _| |_ _ | _| | _ _ _| | |_ |_ _ | |_ _ _| _ | |_ | | | |_ | | _ | _ _| |_ _ |_ _ _| |_| | |_ _| _ |_ |_ _| |_ _| | _| _| _ _|_ _ _ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| | |_ _ | _|_ _ _| | | | _|_ _ _| |_| _| _ _ _ _| _ _ _ | _|_|_ | | | _ _| _ | | | | | _ _ _ | _| |_ _ | _| |_ _|_ | | |_ _ | | _| |_ | _|_ _|_ _ |_ _ _ _|_| _ _ _|_ _ _ _|_ _ |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _|_ | |_ _ _ _ _|_| | _|_ | |_ _ | |_ _| _| _ _|_ _ _|_ | _| _| | | _|_ _ _|_ |_| _ _ _|_ | _ _ _|_ _|_ _ _| _|_ _ | | | |_ _|_ | | _| |_ _ | _|_ |_ _|_ _ |_ _ _ | _ _| | |_ _ _ | _|_|_ | |_| _ |_ _ | |_ _ | | | |_ _ | | _| | | | | | _ _ | |_ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _| |_ _ _|_| | | | _ _| | |_ | _| _ _ | |_| |_| _ |_ |_ _ | |_ | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ |_ _ |_ _ _ _| |_ | _ _ _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _| _ _| _| | |_| _| | |_ |_ _ | _ _|_ | |_ | _ _|_ | | |_ _ | _| |_ _ _| _ |_ _ _ | |_ _ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _|_ _ |_ _ _| _ _ _ _|_ |_ |_ | _| |_ _ _ _ _| | _|_ _| | |_ _ _| | |_ |_ _ | _|_ | |_| _ _ _ _ _ _ _| _| _| _|_ _| _| _ |_ |_ |_|_ _ _ _|_ _ _| |_ | _| |_ | | _ _ |_ _| | | |_ _ |_ _| | | _|_ | |_ _ _| _| _ _|_ |_ _| | |_ _|_ _ |_ _|_ | _ _ | _ | _|_|_ | | | _ _| _ | _ | | _| | | _|_ |_ _ | |_ _| | | |_ _ |_|_ |_ | | | |_ _ _ |_ | _| | | _ _ _ | |_ | _ | _ _| |_ | _|_ _ | | | _ _| | |_ | _| |_ _ _ _ _|_|_ |_ _ | | _ _| | | |_ |_ _|_ _ | | _| _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _|_ | _ _ _|_ _ | |_ _ _ _ _| |_ _| _ _ |_ |_| | |_ _| _ _ _|_ _ _| |_ _ _ | _ _ _|_ _|_ _ _ _ _ | | |_| |_ | | | _ | _ _ _| | +| |_ _| _| _ |_| _| _ _|_ | |_ _ | _ _ _ _ | |_ _ |_ _|_ _ |_ _ |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | _|_ | _ _| | | |_ _| |_ _| _|_|_ | _ _| _| _ |_ |_ _|_ _ | | _ _|_ | |_ |_| | |_| _| |_ _ _ _ _| _ _ _| _| | | |_ _|_ | |_ |_ | | | |_ _ |_ _| _ _|_ _| |_| _|_ _|_ | _ |_ |_ |_ _ _| |_| |_ _|_ _ _ _ _| |_ _| _ _ _|_ _| | | | | | | | |_|_ _ _|_ | | |_ _ _ _ | | |_ _| | |_ _ |_ _|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | | | _ |_ _ _ _ | |_ _ _ |_ _|_ | _|_ | _ _| | | _ _ | |_ | |_ _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| | _| | | | |_ |_ _ | |_ _ |_ _ _ | |_ _ | _|_ _ _ |_ | | |_ |_|_ _ _ _ _|_ |_ _| | _|_ _| _ _| | | | | |_| | | _|_ _|_ _ _| _ _ _ _ _ _ |_ _ _ _ _ _ _ _ |_ _ _ _| _ _| | _ _ |_ _ _ _ _|_| _| | | _| | | | |_ _ | _| _| _| _ _|_ | | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| |_ _ _ _ _| _| | _|_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| | |_ _| | _ _| |_ _| _ _| | _ | | | _ _ _|_ _|_ _ | | | |_ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ | _ |_ _ |_ |_ _ _| |_ | | | | |_ _ |_ _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _ _| _ |_ | | _ | | _ _| _| _ _|_ | | _ _ _ _ | |_ _ _|_ | | | | |_ _ |_ | _|_|_ | | | _ _| |_ | | |_ _ | _| |_ _ _ _ _| _|_ _ |_ |_ _ | _|_ _ | | | | |_ _ _ _ _| |_ _| _ _ |_ _| | | | _ _|_| | | _ _| _ _|_ _ | _|_|_ | | | _ _ | | |_| |_ _ | _| _| | |_ _|_ _ | _|_ | | | _| | _ _| |_ _| | _ _| | |_ _ _ | | | | |_ _| _ _ _ _ _| _ _|_| | _| | |_ _ _ _ _ _ _ _|_| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | |_ _ _ _ | |_| _ _ _ _ | _| _| | _ _ _| |_ _| _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ |_ _|_ | | _| |_|_ _ | | | |_ _ _ _| +| |_ _ | _ _ _| | _| |_ _ _ _ _|_ _ _ _| |_ _ | | _| |_ _ | | _ | |_ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | | | | _| |_ |_ _ | | _ _ _| _ _ _| _| _ _|_ | | _| |_ _ _ _ _|_ _ | _| |_ | |_ _ _ _ | |_ _ _ |_ _ _| |_ _|_ _ _ _ _|_ |_ _ _|_ |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ | _ | _| _ _|_ |_ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _ _ _| _ _|_| |_ _ |_ _|_ _ _ _ _ | |_ _ |_ _ _| | _| | _| _ _ _| _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | |_ _|_ |_| | _ | | |_ _ |_|_ | | _| _ | _| |_ _ | _| _ | |_ | _|_ | _|_ |_ | |_ _| _|_ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | | _ _| | | _ _ _| _| | | _| _ _ _ _ | | _ _| | | _| _ _|_| |_ _|_ _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | | |_ _ _ | | _ _ _ _| |_| _| | | | |_ _|_ | | | |_| | _| |_ _ _ _ _| _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _ _ |_| _| _| | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ _|_ _ _ _| _ _| _ _ _|_ _| | | | | | | _ _ |_ _| | | |_ | | |_ | _|_|_ | | | _ _| | _ _ _ | | |_ _| _| _| |_ _| _| _ _|_ _ _|_ _| |_ | |_ _ _| _ _ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _| |_ | | |_ _|_ _| |_| _| |_ _ _ _ _|_| _ | | _| |_ _ | | | |_ _ _| |_ _| |_ _ _ _ _| |_ _| _| | _| |_ _ _ | |_ _ _| |_ | | | _|_ _ _| | _| _| |_ |_ _ _ _ _ _ | _| | | _ _ _| |_ | _ | |_ |_ |_ | | |_ _ _ _ _| |_ _| _ _|_ _ _ _| _ _|_| _| _|_ | _| | | _| _|_| _ _|_ | _ _ | _| _ _|_| _ |_ _| _|_ | | _| |_ _ |_ _ |_ | | | |_ _|_ | _ _ _ _ | |_ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | _ | _| |_ |_ |_ _ | | |_ _ | |_| _ |_ |_| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | | |_ |_ _ | _|_ |_ _ _ | +| _ _| |_ _| | | |_ _ _ _ _ | _ _| | _| | |_ _ _| | |_ _| | | _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | |_ _|_ |_ | | _| |_ _| _ _| | | _| |_ _ _ _ _| |_ _| |_ _ | _ _ |_ _| | |_ _ |_ | _| | | _ | |_ _ _ _ _ _ _ _ |_ _ _ _|_ | | | | |_ _ | _|_ _ _| |_ |_ _| _| | |_ _ _ _ _| |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| _ |_ |_ |_ | |_ _ | | | | _ _| | _| _ _| | _ _ _ _| | | | | _ _ _ _| | | |_ _ |_ _| | |_ _ _| | | | |_ _|_ _ _ _ _| |_| | |_|_ _|_ _ |_ _ |_| | |_ _ | |_ _ _| | | | _|_ _ _ _| |_ _| |_ _ |_ _ | | _ _| | _| | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ | _ _| |_ _ _ _| _| _ _| | _| _ _| _|_|_ _| | _ _| _ _|_ |_ | _ _ |_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _|_ _ |_ _| | | _ _ _ _|_ |_ | |_| | |_ | | |_ _| | _| | |_ _| _ | _| _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| _ _ _| | | _ _|_ | | |_ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_ _ _ |_ | | |_ _ | _ | | |_| | | |_ _| _ _| | | _|_|_ | _| |_ _ |_ _ _ _ _| |_ _| _ _| | _ | | | |_| |_ |_ |_ | _ _| | _ _ _ _ | _| _| |_ _ | |_ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | | _| _ _ _ _ |_|_ | |_ |_ _ _ |_ _| | |_ _ _| | | |_ _|_ | | |_ _ | | | |_ _ | _|_ | | | _|_ | _ _ _| |_ _ _|_ | |_ _ | _ _| | | _| |_ _ |_ | _|_ _|_| _| | |_| _ |_ |_ _|_ _| |_ _ _ _| _| |_ _ _ | _ _ _| _|_ | _ _ | _ _ _| | | _ _|_ | |_ _| _| |_| | _| _ |_| | _| _ _ _| |_ | _ _| _| |_ _ _ | |_ _ |_ _ _| |_| | _ _ | | _ | | _| |_ _ | _| _ _ _ | _| _|_ _ _ _| _ _| _| |_| |_ | | |_ _ |_ _ _| _ _| _|_ _ _| |_| _| _ _|_ | | _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ | | |_|_ | | _ _|_| |_ _ | | | +| | _ _| _ _|_ |_ | | _ _ _|_ _|_ | _| | _| _ _ _| | | _ |_ | _ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_|_ _|_ | _|_ | |_| _|_| |_ _ _|_| | |_ | _ _ _ _ | |_ _ | | | _| _ _ _| _| _| _|_ | |_|_ _| | | | _ _ _ _ | |_ _ | | _ _ _| | |_ _| | |_ | | |_ _| _| _ _|_ _ _| | |_ _ _ _ |_ _ _ |_ _ | | | |_ _| _ | | _| |_ _ | |_| _| _ _|_ |_ |_ _| _ | |_ _| |_ | _| | | _|_ | |_ _| _ _ _ _| |_ _|_ _| | | _|_|_ | | | _ _| _ |_ _| | |_ _|_ | _| _ _|_| _| |_| _ _ |_ _ |_ | |_ _ _ _| | _ _ _| | |_ | _ _ _ _ | |_ | | |_ _ |_| | | _ _|_ | _| |_ | _ _|_ _| _|_|_ | | | _ _| _ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ | | | | _ _ _| _| | | |_ _ |_ _ _ _| _| |_| | _| _|_| _ _| | _| _ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | | _|_ _ | _|_ _ _| |_ | |_ | |_ |_ _|_|_ | | |_ |_ | |_ |_ _ _|_ | _| | | |_ _|_ | |_ _| _ | | |_ _ _ _ | _| |_ _ _| | _| |_ _| _| | | |_ _|_ |_| | |_ _ | | |_ _| | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _| _|_ _ _| | | |_ _|_ _ |_|_ | | |_ _ |_| | _ _| _| | |_ _ _ _ _|_ | _ _| | | _ _ | |_ _ _| |_ _ _| |_ _|_ |_ _ | _|_ | _|_ | |_ _ _| _| _ _ _| | | _| _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _ _ _ _| | |_|_ |_ _| | | | _ |_ | |_ |_ | | | _ _| | _ _ _|_ |_ | _ _| |_ _| _ _| |_ _| | | |_ _ _ _| |_ _| | |_ _ _| _| |_ _ | | |_ _ |_ | _|_ | | |_ _ _ _| |_ _ _| |_ _ |_ _ _ _| _ _| _| _ _|_ | _ | | |_ _ _ _ _| |_ _| |_ _ _ | | |_| |_ _ | |_ _ | _| |_ | _| | | | _ _| _| _ _|_ _|_ | |_ | |_ _ _ _ _ _| _|_ _| _|_ _ _ _ |_ | | | | _ _ _|_ _| _| |_ _| | |_ _ _|_ | | | | | |_ _|_ | | | _ _ | | |_ _ | | _ _ _|_ _| |_ | _ _| |_ _ _ | | _| |_ _ _ _ _| | | _ _|_ _ | _|_|_ | | | _ _|_ _ _| | | | | |_ | _ _|_ | | |_ _ | |_| | | +| |_ | _| | _| _|_ _| _ _ | |_ _ _ | |_ _| _| | _| | _| | _|_ | | _| | | |_ _|_ | |_ _| _ | | |_ _| | | _ _ _|_| |_ | | | |_ _ |_ _ _ |_ | | | |_ |_ _|_ _ |_ _ |_ _ _| _ |_ _ _| _| _ _| | | |_ |_ _ | | _| |_ _ |_ _| _ |_ _ _ | |_ _| | | |_ | _ _| | _| _ _|_ _| _ _ |_ _ _ _ |_ _ _ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| |_ _ _ _ _| | | _ _| _|_ _ |_ | | |_ _ _| | _ |_ _ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _| |_ _|_ _| |_ _ _ | | | _| | |_ |_| _ _ _| _ _ _| |_ _ _| | |_ _| | _ _|_| | | | _|_ _ | | _| |_ _|_|_ |_ | _| | | | | | |_ _ _|_ _ _ _ |_ _ _ _ _| |_ _| _| | _| | | | _| _ _ _ | _| _|_ _ _ _| _ _| |_ | | | | | _ _|_ _ | _| _| | |_ | | _| |_ _ | | _| _ _|_ _| _| _ _| | | _| | _ | _| _| _|_|_ | | | _ _| | _ _| | | |_| |_ _| _ | |_ _| _| _ _|_ _ _| _|_ | |_ | _ | _|_|_ |_| _|_| _| | | _ _|_ _ _| |_ _|_ _ _ _ _| | _ _| |_ _|_ _|_ _ |_ _ |_| _ | _ _| |_ _| |_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_ _| _| _| | | |_ _|_ | _ _ _ | | | |_ _ | | | _ |_ _|_ | _ |_ _ | |_ _| _ _| _| | |_ _ |_ _ _ | | _|_ _ _ _| _| _ |_ _|_ | | _| _ |_ |_ _ |_ | _|_ _| |_ _ |_ _| | _ _ _| _| | _ _| _|_ | _| | | |_ _|_ |_ |_ _ | | | |_ _ | _| | _ | _ _| | |_ _| _| _| |_ _ |_ _ _|_ | _ _| |_ _ _| _ _ _| _ _| _ _| _ _| _| _ _ |_ | | | _ _ _| _| |_ _ _ |_ _|_ _ |_| _|_ _ | | | | _ _ _ _|_ |_ | |_ |_ _ |_ _ _| _| |_ _ _ _ _| | | |_ _|_ _ _ | _ _|_ _ _ _ _ _|_ _ _|_ _ _ _ | |_ _ _| | | | _| | _| |_| |_ | |_ _| _ _ _ |_ _ _| _ _| | | | _ | _ _ _| _ _ _ _ | _|_| |_|_ _| _ _ _ | | _| _|_ _ _ | | | | |_ _|_ _ _ _ _| |_ _| | _| |_ _|_ _ |_|_ | | _ _ _ _|_ |_| | |_|_ _ |_ _| | |_ _ _ _ _ _ _|_ _| _ _ | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ _ |_ _| | _ _| |_ _| _ _|_ _ _| | +|_ | | |_ _|_ _| _| | _| | _| |_ _ |_ _| | |_ |_ _ _| |_| _| |_ | | |_ _ _| |_ _|_ _ _ _ _| _ | |_ |_|_ _|_ _ |_ _| _| _ _ _ _|_ |_| |_| |_ _| _ _| | _| _| _| |_ _ _ _ |_ |_ _ | | _ _ _ _| | _ _ _| | |_ _ _| | |_ | | _| | |_ _ _|_ | |_ |_ |_ _ |_ _ _ _| |_ | _|_ | _|_ _|_ | _ _ _| | | |_ _ _| | | _|_|_ | | | _ _| _ _ _ | | | |_ _ _ _ _ |_ _| | | _ _|_ _ _ _|_ _ |_ _| |_ | _ _ _|_ | | |_| |_ | | _ _| _| _ _ _| | _ _ _| |_| |_ |_|_ _ _|_ _ | _ | _| | |_| _ _| | _ _|_ _ _ _ _ |_ _|_| |_ _ _| | |_ _ _| | | _|_ _| | | _|_ | | | |_ | _ _ _ _ | _ _ |_ | | _ _ _| | _|_ _| |_ | | |_ _|_ | | | _ _ | | |_|_ _|_ _ | |_| _ _| | | | |_ _ _| _|_|_ _ _|_ _ |_ _| |_ _| _ _ |_ _ | _ _| | | | _|_ |_| |_ |_ _ _ _ _| |_ _|_ _| |_| | | | |_ _ | | | | |_ | _ _| | _ _ | _ _ _ _| | _| | |_ _| _ _ _| _| |_ | |_| |_ _ _ _ | | _ _ | | _ _ _| | _| _ _ _ |_ _ |_ _ _| _| | _| | _| _| _ | | | _ _ | _ _| |_ _ _ _|_ _ _ | |_ _ |_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _|_ _| | _ _ | _| |_ _ _ _| | | |_| _ _ |_ _|_ _ |_ _ _ | | | | |_ | _ _ _| | |_ _| | _|_| |_| _| _ _|_ | | | |_ _|_ |_ | | |_ _ |_ _ _ | _ _ _| | | |_ |_ _ _| |_ _|_ _ _ _ _| | | _| | | |_ _|_ _ |_|_ _ _| | | | |_ | | _ _ _| _|_ | |_ _ _| _ _ |_|_ | _ _| | _ _| |_ _ | | |_ _| _| |_| _ _ _| | _| | | | _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | |_ | _ _|_ |_| | | |_ _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | _|_|_ _ _| | | |_ _ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _| | | |_ _ | | |_ _ | _ _| | | | _ _ _|_ _| |_ _ _ _|_| |_ | | | | |_ | | _ | | | | _|_ _|_ _ |_ _ |_ |_ _ _| |_ | _|_ _ |_ _| _ _ _|_ | | |_ | | _| | _| _ _ _ |_ _ _ _ _ |_ _ _|_| |_ | | _ _|_ _ _ _| _ _| | _| _| +| | | |_ | _ _ _|_ |_ _| |_ _ _| | | _ _| |_ _| _ |_ |_ | | | |_ _ _ _| |_ |_ _ _ _ _ _| | _|_ | _ |_ _ |_ |_ _ _| |_ | _ _| _ _| _ _|_ _| _| |_ _ _| | _| | _ _| | |_ _ | _ |_ _ | | _|_ _ _ | |_ | | | | _| | _ | | | _| _| |_ | _ | |_ | |_ _| |_ _ |_ _| _|_ _ | |_|_ _|_ | _ _| | |_ _ _ _ _| |_ _| _|_ |_ _ |_| | |_ |_| | |_|_ | | |_ | _ _ _ _ | |_|_ | | _ _|_ _ | _ _|_ _|_ | | _| |_ _ | | | _ _| | _| |_ _| _ |_ |_ |_ _ _ _ | |_|_ | |_| _| |_|_ |_ | _ _ _| _ _ _ |_ _| _ |_ |_ | _| | _ _ _ _|_ _|_| _ _|_|_ _ |_|_ _| _ _| _ | | _| | _ _| _| | | | _ _ |_| _ |_ |_| _|_ _ _ _ _|_| _| _| _|_ _|_ _ |_ _| |_|_ _| | _|_ _|_ _ | _| _ _ _ | _ _ _ _|_ _ _ _ | | | |_| |_ | | | |_ _ |_ _ _ | | | _ _ _ _ _ _ _| _| _|_ _| |_| _ | |_ | | | _|_ | _|_ | _| | | _| | _| _ | | _ _ _| | _ _|_ _ | _ | |_|_ _| | |_ _ _ _ _ _| | _| _| _| _ _| | _|_ | | | |_ | | | | _| |_ _|_ | |_ _ _ _|_ _ |_ | _ _| _ _| | | | _ _| | _ _ | _| _| | |_ | | _ | |_ _ | _ _|_ | _|_ |_ _ | _ _| _|_ _ _| |_ |_ _ |_ _ | | | | | | | _|_ _ | _| | _ _| |_ _ _ | _| |_ _ _ _ _| | | _ _ _ _ |_ _| | | _|_ | | |_| _ |_| |_ _ | | | _ | | _ _ | | |_ | _|_ | _ | |_ _ | | | _|_ _| | | |_| _ _ _| |_| | _ _ _| | | |_| |_ | | _ |_ _ _ |_ _|_ _ |_ _ _|_ _ _| _ |_ _ _ _| _|_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _|_ | | | | | _|_ _ _|_ | _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _|_ | |_ | | | _| _| _| | |_ | | |_ | _| |_ _|_ _ | _ | _| _ | _ _| | _|_ _ _| |_ | | | | | |_|_ _ _|_ _ |_ _ |_ _|_ _ | |_ _| _| _ _|_ _ _| | _ _|_ _ | |_ _| _| _|_ |_ | |_ _| |_ _ _| _ _|_ |_ | _ _| | _| _ |_ |_| _|_ _ _ _ _ | | |_ _| | _| | +|_ _|_ | |_ _ | _| _ _| |_ _ _|_| | |_ _| _| _| _ _|_ |_ _ _|_|_ | _ _ _ _ _|_ _ _ _ _ _ |_ _| _ _| | _| |_ | |_ _| _| _ _|_ _ _| | | | | | | _ _ _|_ _ _ _| |_ | | |_| _ |_| _ _| | | | _| | | | | | |_ _ _|_ _ _| |_ |_ _| |_ | | _ _|_ |_ | | | | |_ | | | |_ | | |_ _ |_ _| | |_ _ | | |_ | | | _ _ _ | _| _ _ _ _ _| | _| _| _|_ _|_ _ _| | | | | |_ _ | | _| |_ _ | | _|_ _ _| | _ _ _ | | |_ |_ _ | _|_ | | _| _ _ _| _| _ _|_ | _ | _| |_ _ | |_ _ _| |_ _ _ | | | | _ _ _| _ |_ | _| _ _|_ | | |_ _ | | _ _ _ _ _|_ _| _ _ |_ _ _ _| |_ _| | |_ _ _|_ _ _ _| _| _|_ |_| _| _ _|_ | | _ _ _ _ |_ _|_ | | |_ |_ _ | |_ _ |_| _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _|_ | | _| |_ _ _ |_ _ |_ |_| |_| |_ _ | _ _| _| _| _ |_ |_ |_| |_ | | |_ _| |_ _ |_|_ |_ _| |_| | _|_ _ _| _| |_ _ | _| |_| _ | | | | | | | _ | | |_ _ _ _ | |_ _ _|_ | | _| _ _| |_ _ _ _| |_| | |_ _| | | |_ _ _| _ _|_ _ _ _ | |_|_ | |_ _ | | _ _| _|_ _ |_ _| | |_ _ _ _ _|_ |_|_ _ _|_ _ _ _| |_| | _| | |_ _ _ |_ | | | _ _ _ _|_ |_ | _ _| | | | |_ | | _ _ | | | _| | _| | | _ _| |_ _ _ | _ | | |_ _ _ _ _ _ _|_ _| _ |_|_ _ _ _| _ _ _| |_ _| | | |_ _| _| |_|_ _|_ _ _| _ |_ _| | | _ _| | _|_ _ _ _ _ _| |_ |_ _ | |_ _ |_ _ | _| |_ _|_ | | _| |_ _| _| _|_ _ _ |_ _ _ | _ _ _| |_ | _ _| | _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | _ _ _ | |_ | |_|_ _| _ _ |_ _ | _ _| | _| _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_|_ |_ _ _| _|_ _ _ _| |_ _| _|_ _ | _ _ _|_ _|_ _ _| _| |_ | | | _ |_ |_ _|_ _| |_ _ _ _ | |_ _ |_ | _ | |_ | _ _| | _| | _| _ _ _| |_ _ _| _|_ _| |_ |_| | _ |_| _ _ _ _ _ _|_ | | | |_| _| _ _|_ | | _ | | | |_ _|_ _ |_ _ _ | +| _ | | _| | | |_ _ |_ _ _| _ | | | |_| _| |_ _ _ _ _| | _ | | | _ _ _ _ | |_ _ _| |_ _ _| | |_ | |_ | _ _| | | _ _|_ _| |_ _| |_ _|_ _ | _ |_ _ _| _ _| | |_ |_ |_| _| | _|_ _ | _|_ _| |_ _| _| _ _ _ _ | | _| _ _ _ _| |_ _ _ _| _|_ _ _|_ _ _|_ | |_ _|_| | |_ | | | _|_ _| | | |_| | _| |_ _ _ | | | |_ _ _| _ _ _ |_|_ _| _|_ _ | | _| _ _| |_ _| | _| | |_ _ _|_ | | | |_ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| |_ _ | | _| |_ _ _ _ _|_ | |_|_ _ _| _| |_ | _ _ | |_ | |_|_ _ _ _|_ _ _|_ _ _| _ _ _ _| | | |_ _|_ _ | | | _ _ _| | | |_| _ _| | _ _| | _ _ | | _|_ _| |_| | _| |_ _ _ _ _| |_ _| |_ |_ _ | _|_| | |_ _ _ _| | _ |_ _ _| _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | |_ |_ _ | _ _ |_ |_ | | _ _ _| | | | | | _| _| _ _|_ |_ |_ | | |_ |_ | | |_ _ |_ |_ _ |_ | _ _ _| | _| |_ |_ |_ | |_| | | _| |_| | |_ _|_ | | _| |_ _ | | | | | |_ | _ _| _ |_ | |_ _ _ _ _|_ | | | | _ _ | _| |_ _ | | _| | |_ | _|_ | _ |_| |_ _ _ _ | |_ _ _ _ _ |_| _ _| _|_ _|_ |_| | | _| | | | |_ _ _| |_ |_ _| | _ _| | _|_ _| |_ _ | |_ |_ | | | |_ _ _ |_ | _ _| _|_ _| |_| _ _ | _ _ _ _ _|_ _| _ _ |_ _ | _ _| | | |_| | | | |_ _ _ _ | |_ _| |_ | _| | _ _| _ _ _ _| |_ | |_ _| |_| | |_ _| | | | | | | |_ |_ _ | |_ _ | _ _ _ _ | _ |_ _ _ _| _| _ | | | | _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _|_| _|_| | |_ | | | _ _ _| | | |_| |_ | | |_ _|_ | |_ | _|_|_ | | | _ _| |_ _ | | | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | _ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | | |_|_ | _ _|_ | | _ _ _ | _| |_ _ |_ | | | | | | _|_ | _|_ | | |_ |_ _| | _ | _ _ _| _ _ _|_ _ _| _|_| _| _ _| |_ _ _ _ |_ | |_ _| _| |_ _ _ _ _|_ _| |_ _| | | |_ |_ |_ _ | | | +| | | | |_|_ _| | | |_|_ | _ _| _| |_| |_|_ | |_ _| _ _ _ | | | |_ _| _ | | _| |_ _ | | _|_ _ |_ _| | _ _| | _|_ | _|_ _ |_ _ _ _ _ _ _|_ _ _ _| | |_ _| _ _ _| _ _|_ |_ |_ |_ _ |_ _ | | |_ _ _ |_ | _| _| |_ _ _ _|_ | _| _ |_ |_| _ | | _ _ _ _ | |_ _| | _ |_ _ _| | |_|_ _ _ |_| |_|_ | |_ |_ _ | _ _| | | _ _ _| _ _| | _ _ _| _ _|_|_ _ | |_ |_ _ _ _| | _| _ _ _ | | |_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | | |_ _ _ | _ | |_ | _ _ _ | | _| | | |_ _| _|_ _ _| | _ _ _ _ | |_ _ _ _ |_|_ _|_ _ _ _| | | | |_ _ | |_|_ _|_ | | _| | | _ _ _|_ _ | | | | _ _ _|_ _ | |_ _ _| _| _ _|_ _ _| _ _|_ | | |_ _| _ _|_ |_ | | | |_ | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | |_|_ | | _ _|_| |_ _| | | | | | | _ _| |_ _| |_ | _| |_ _ _ _ _| _| _|_|_ |_ _|_ _|_|_ |_ | |_ | | | |_ _| | _ _|_ | _|_ _ _|_ | | | _ _|_ |_ _ _ _ _ _ _|_ _| |_ _ _| | | |_ _| _| | | _| _| _ _|_ | _ _| | | |_ _|_ _|_ _ |_|_ _ _| | | | | | _|_ | |_ _ _ _| | | |_ |_ _ _ | _| |_ _ |_ _ _ |_ |_ | _| _ _ |_ _ | |_ _| | |_ _| _| _ _|_ _ _| | |_ | | _| _ |_ |_ |_ | | | | |_| |_ _ | _| _| | _| _ |_ |_| _ |_ _ | | | _ _ _|_ | | |_| |_ | | |_| | _| |_|_ _|_ _ _ | _| |_ _ | | _ _ _|_ | | | _ _ _ _|_ |_ _| | _| _| |_ _ _| _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _ _ | |_ | _ _| | | |_ _| _| | |_|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _ _| | | | | | |_ _ | _|_|_ _|_ | | _| |_|_ _ _ _|_ | |_ _ _ _ _| |_ _| | | | |_| | | |_ _| |_ _ |_ | | | _|_|_ | | | _ _|_ _ | | | | _|_ | | _ _|_| |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ _ | |_ _ _ _|_ _ _| |_ _ _|_ _ _|_ | | _|_ _| |_ |_ _| |_ _ |_ _| |_ _ _ |_ | |_ _ |_ | _ _ _| _ _ |_ _ | _ _| | _ _ _| | _|_ _ | |_ _ _ _ |_ _ _ | _|_|_ |_ |_| _ _| | _| +| |_ _ _| |_ |_|_ _|_ _ |_ _| |_ |_ |_ | |_ | |_ | _ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _| _ | | _ _| |_ |_ _| |_ _ |_ _ _| _ | | | | _|_ _ _ _ _ | |_ _ _ _ _ _ _|_ _ _ _ _ _| |_ _ | _ _ _ _| | |_ _ _|_ | | _ _|_| _| _ _|_ | | |_| _ | | _| |_ _ | |_|_ |_| _ _|_ _ _ _ _ _ _| | |_ | | _ _|_| |_ _|_ _ |_ | _ |_ _ | _|_| _ _ |_ _| | _ _ |_ | |_ _| _ |_ _| | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | | |_ | |_ _| _| |_ _|_ _ _ | | | _|_ _ _| |_ _ _ _ _ _ _|_ | |_ _ | | _| |_ _ | _|_ _ _ | |_ | _| | |_ _| | |_ _ | | | | | |_| | | _|_ |_ _| | _| _|_ | |_ |_| _|_ | _ _ | |_ | |_ _|_ |_ _|_ | | _| | |_|_ _ _| _| |_ _ | | _|_|_ | | | _ _|_ _ |_ | | _|_ | _ _|_ | | |_ _ | | |_ |_ |_ | _|_ |_ _ _| |_ _ _ _ _ _| _| _ _ _| _ _ | |_| _| | |_ | |_ _ _| | | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _|_ |_ | |_ |_| | |_| _| |_ _ _ _ _| | _| _| |_ _ _ _ _ |_ |_ _ _ _ _|_ _ _|_|_ _ _ _ | |_ | _ _ _|_ _ _ _ | |_ _ _|_ | | _ | | _ | | _ _|_ | | |_|_ |_ _| |_ | _ _| | _| _|_| | | | _| _| _ _|_ |_ | |_ |_ _ _ _| _ _|_| _| _| |_| _| _ _|_ | |_ _| |_| | |_ _ | _|_ _|_ | | _| |_ _ _ _| |_ _ _ _ | | |_ _ _| | |_| |_| | | | _|_ _ _| |_ | _| |_ _|_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _| | | | _ _| |_ _| |_ | |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ |_ | | _| |_| _| | | _ _ | | |_ |_ _ | _ _ _ _ | | _ _ _ _ _ _|_ _| | |_ _ _| |_ _|_ | | | _|_ _|_ _ _ _ _| |_ _|_ _ _ _| |_| | | | _ _|_ | | |_ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| _ _|_| |_ _ | _ | | _ | _ _ _| | | | _ _ |_ |_ | | |_ _ |_| | | _| | |_ _| | _| |_| _ _ _| _| | |_| |_ | | | _ _ _|_| _ | |_ | | _ _| |_ | | |_ _ _ _ _| | | | _ _| | | +| _ _ _ _|_ |_ _ _ | |_ _ _ _| | _ _|_ | | |_ _|_| _ _|_ | _|_|_ | | | _ _| |_ _ _| | _ |_ _| | |_ |_ _ _| | |_ | | |_ _ |_| _| |_ |_ _|_ _|_|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_| _| | _| | | |_ _| | _ | _| |_ _ _ _ _|_| |_ |_ _| | |_ _ _| | |_ _ _| _|_ _| _ _ |_ _ | _ _| | | _ _|_ | | |_ _ _| | _| | | | _| | _ _ _|_ | | | |_ | |_ _ _| | | |_ _| _ _ |_ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| _|_ _| _| |_ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _| | |_ _ _| | | _ _ |_ _|_ _ | |_ _| | | _|_ _ _| |_| | | |_| | |_ | |_ _| |_ |_ _| _| |_ _ _ _| _|_ |_ | |_ _|_ |_ |_|_ _ _| |_ _ _ _|_ | | | | | | | | _ _| _ _| _| | |_ _ _ _ _| |_ _|_ _ _| |_ | | |_ | |_ _| | _ _| |_ _| _ _| | | | | | | |_ _ | |_ |_ |_| | | _ _ _|_ _ | | |_ _ |_ |_| _|_ | _| |_ |_ | _|_| | | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ _ _| | _| |_ | | |_ _ _ _ _|_ | |_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ | _ _ _| _ |_ |_ _| |_ _ _ | |_ | |_| | _| |_ _ _ _ |_ _|_ | _| |_ | |_ | _|_| _ _|_ _ _ _| | |_| _| |_ _ _ _ _| | |_ | | | _ _ | _ _ _| | | | _| |_ _ _ _ _| | | _| _| _|_ _| | |_| _| | |_ |_ _ | _ _ _| _| |_ _ _ | _| | | _| _|_ _| | |_ _| _| _ _|_ _ _| | | _| _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ |_ | | |_|_ | | _ _| | |_ |_| _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _|_ | | | | _| _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | |_ _|_| _ |_ _ _| _| _ |_ |_| _ _| | |_ | _ _ | | | | | | _ _ _| |_| _| | _ _| |_ _| _ _| |_| |_ | | _|_|_ | | | _ _|_ _ |_| | | | _|_ | | |_ _ | | | | |_ _ _|_ _ |_ _ _ _ _|_ _ _|_ _ _ _|_ _ _|_ _|_ | | |_ _|_ | | _| _ _|_ |_ _ | | |_ _|_ | | _| |_ _ _ | _ _| _ _| _| |_ | | | |_ _| _ | _|_ _| |_ | | | | +|_ _ _| |_ | _|_ _|_ _ | | | _ _ _ _|_|_ |_ _ | |_ | |_ _ _ _ _| |_ _| _ _|_ |_ _ | |_ |_ _ | | | _ _ _|_ _ |_ _| | | |_ | | _ _ _| _ _ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| |_ _ _| |_ |_ _ _ _| | _| | _ _ _ _ _ _ | | | | _ _| _ _ | | | | | | _| _ _ _| | | |_| |_ | | _| | _ _| |_ _| _ _| | _| | _|_ _ | _|_ _ _ _ _ |_ _|_ _ _ _| _ _ _ _|_ _|_ _ |_| |_ |_| | _| | | |_ _|_ | | | _ _ | | | |_ _ | | _ _ _ _ _| |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| _ _ | | | | | | |_ _ _ _ _| | | |_|_ _|_ _ _ | | _|_|_ | |_ |_ _ _|_ |_ _ | | | _ _ _ _| _| _ _| |_ | _ |_ _| _ _ _|_ _ _ | |_ _| | |_ _ _| |_ _|_ _ _ _|_ _ _| _| |_ _ _ | _ _ _|_ | _ _ _| |_ _ |_ _ |_ _ _ _| _ _| _|_|_ _ |_ | |_ _| |_ _| _| _|_ |_ _ | _ _| |_ _| _ _| _| _| | | | _| _| |_ _ |_ _| | |_ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| |_ _ _ _ _ _ _| | |_ _ _|_ _ _ _|_ _ _ _|_ |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ _|_ | | _ _ _| |_| | _|_ _ _|_ |_ | _ | _ _| _| | |_ _ _|_ _ _|_ _ |_ _ |_ | |_ | |_ _ | _ _ | | | | | |_ _ | |_ _ | | | | | |_ _ _ |_ _| | | | |_ _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ |_ _ _| _ | |_ _| | | | _| _ _ |_ | _ _| | _ | _ _| |_| | _| _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | |_ _ _| | |_ _ | | | | |_ | | |_ _|_ | |_ | | _| | _|_|_ | | | _ _| _ | _| | _ _ _ _| | |_|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _ _ _ _|_ | _|_| _| _| _ _|_ | |_ _ |_ |_ _| _| |_ _|_ _|_ _| |_ _| |_| _ |_ |_ _ |_ _ _ _| _ _| | _ _| | | | |_ _ _ _ _| |_ _| | _ _|_ _ | |_ | _ _| |_ _| _ _|_ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ _| | _ _ _ _| |_| _ _| | |_ _| | | |_ _ | | |_ |_ _ | _ _| _ _ _| _| |_ | | | |_| | | _ _| |_ _ _| _|_ | | |_ | +| _| _ _|_ _ |_ _ _ _ |_ _| | |_ _ | _ _ _| _ _| | _|_| | _ | _ |_ _ _ _ | _ _ _| |_ | _ _| |_| |_ _ | _| | | | _| _| |_ _ | _| _ _ _ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_|_ _| | |_ _ _ _|_ _| _ _ |_|_ _ _| |_ | _ _| |_ _ _| | _ _ |_ _| | | |_ _|_ |_ _ | _|_|_ _|_ | | _| |_ _ |_ _ _ _| _ _| _| |_ _ |_ _ |_ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | |_ _ | |_ _ _| |_ _|_ _ _ _ _| | | | |_ _|_ _|_ _ |_|_ | | _ _ _ _|_ |_| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | _ _ | | | | | |_ _|_ _ _ _ _ _ |_ _|_ _ _ _ _ _ _ _ _| |_ _ _|_ _|_ |_ _| | | |_ _| | | | _ _ _| _| | |_ | |_ |_ _ |_ | | | _ _|_ _|_ _ _|_ | _ _| _ _ _ _ | |_ _| |_ _ _ | | _|_| | _ | _| _ |_ |_ _ _ _ _ | | | | |_|_ | | | | | |_ |_ _ _|_ _| _|_ _ | |_ _| | |_ _ _ _| _ _| _ _ _|_ _ _| | |_ _| _| _|_ _ |_ _ | |_ _ | _ _ _ | _|_|_ | | | _ _| _ _ |_ | |_| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_|_ _ _| _ _| | |_ | _ _|_ _ _ _|_ _ _ _ _| _|_ _|_ _| |_ _|_| | _ _ _ _ | |_ _ |_ | |_ _| | |_ | | |_ _|_ |_ _ _| |_ | _| |_ _| | |_| | |_|_ | |_| |_ | _| | | | |_ _ |_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ |_ _| _ _ _| |_ | _| | _| | |_ | _|_| _|_ _ |_ _ _|_ |_ | _| | | |_ _|_ |_ |_ _ | | | |_ _| | _|_ _ _|_ _| |_| | _| |_ _ _ _|_|_ |_ _| |_ |_ _ _ _ _| |_ _|_ _ _| | _|_ | | |_ _ | _|_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _| | _| _ _ _| _| |_ _ _ _ _| _ |_ _ _ _ | | | | _ _ |_ | _| _| _ _|_ | |_ _ _ | | | |_|_ | | | |_ | _ _ | _ _|_ _| | _ _ _| |_ |_ _ _ _| _ _| | _ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _| _ _ |_ _ | _ _| |_ | | _|_ _ _ _| | |_|_ | | _ _|_| |_| _ _ _| | _| |_|_ _ _ _| | |_ _ _ _ _|_ | _| |_ _ _| +| _| | | _ _ _| _ _ |_|_ | _ _|_ | |_|_ |_ | | |_ _| | |_|_ |_ _| _ _ _ | |_| _ |_ |_| _ |_ |_ | | |_| |_ |_ _| |_| _|_ | _| | | |_ _ | | _| | _ _| | _|_|_ | | | _ _| _ _ _| | | _ _ _|_ _ _ | _ _ _| | | |_| _ _| | |_ _ | | |_ _ | _| |_ _ _| |_ | _ _ _| | | _ | | |_ |_ _ | _ _ | | | |_ _ | |_ | |_ _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _ _ _| | | _ _ | _ _| | |_ _|_ _ _ _ _ |_ _ |_ |_ _ _| |_ | | |_|_ | |_ | | _|_|_ | | | _ _| _ _ | | |_| |_ _| |_ _|_| |_ _ _ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _ _ _| _ _| _ _| | _|_ _ |_ _ _|_ _ | _| _| | | | |_ |_ _ _|_ | | |_ _|_ _ _ _ _| _| | |_ | |_ _ | | _| |_ _ |_ | | | | | _ _| |_ _| |_| _| _ _|_ | _ _| _| |_ |_ _|_ _ |_ _| | | | | | | | | _ _ _| _ _|_ _ | _|_ _ _ _ | | | | _ _ _ _ | | _ _ _|_ _ |_ | _ _| _| _ _|_| |_ _|_ _ _ _ _| |_ _| _ _ _ |_ _ | | _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ | _|_ | _|_|_ | | | _ _| _ | _ _| | | _ _| _ _| | |_ _| | |_ | _ _ _ _ | |_ _| | _ _ _ _|_ |_ _ _ |_ _ | | _| |_ _ |_ | | | |_| |_| _| |_ _ |_ _| | | | | _| | | _|_ _ _|_ | _| |_ _ _| | _|_ _ _|_ _|_ _ |_| _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ |_ | _| _ |_ |_| |_ _ _ _|_ _ _|_ _ |_ _ | | _ _ _| | _|_ _ _| |_ _|_ _ _ _ _| | | _ _| | |_ _|_ _ |_ _| | _ _ _| _ |_ | |_ |_ _ | _ _ _ _ _| |_ _ _ | | |_ _ _ | _| _ _ _| |_ | _ _ _ _| |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| _| _ |_ _| |_ _ _ | |_ _ _ | |_ |_ _ | _ _| |_| | |_ _| | _| _| | _| |_ _ _ _ _|_ | _| |_ _|_ _ |_ _| | | _| |_ _| | _| |_ | _| _ _| _ |_ |_ | | | | |_ _ | |_ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _ _| | | |_| |_ | | _| |_ _ _ | | |_ | _ _|_ | | |_ |_ _ | |_| _|_ | _ _ | | |_ _ | _|_ _| |_ | | +| | _|_ | _ _ _| | | |_ _ _| | _| |_ |_ _ _|_ _ | |_ _| | |_ _ _| _ |_ |_| _| _ _|_ | | _ _|_ | | |_|_ |_ |_| | | _| | | | _|_ | _| | |_ _ _|_ _ _ |_|_ _ _ _ _| |_ _| | | |_ _ | | | _ _ _ | | |_|_ _ | |_|_ _|_ | | | | |_ _| | _|_ _ |_ _| _| _ |_ |_| _ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| _|_ _ |_ _|_| _|_ |_ | |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _ _| | | _ _| |_ _|_ | |_ _ _ _ _ _ | _ | _ _| |_ | |_ _| _| _ _|_ _ _| |_ _ _ _|_ | | |_ _ _ _ _| |_ _| |_ _| | | | | _|_ _| _| _ |_ |_| | | | |_ _| _ | | _| |_ _ | | _ _ | _ | | |_ | |_ |_ |_ _ _ _ _| | | _| _| |_ _ _| | _ _ _ _| | |_ |_ _ _ _ _| _| | |_ _ _ _| | |_ _ _| | _ _ _|_|_ | | _|_ |_ _ _ | _| |_ _ _ _ _|_ _ |_ _ _| | | _ _ |_ _ | | _| |_ | | | |_ _ | _|_| _ _ |_|_ _ _ | |_|_ | |_|_ _ | | _| | _ _ _ _ |_ |_ _| | _|_ | | |_ _ |_ _ |_ | _ _ _ _| |_ _ _| |_ |_| |_ _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_| _ |_|_ _ _ _ _| |_ _| | | _|_ _ | | _| | | _ _| | | _|_ | |_ _ | | _| |_ _ | | |_ _ _| |_ |_ _ _ _| | |_ _ _|_ | | _|_ | |_ _ _| _| |_ _ | |_ _| _|_ _| | | | | _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | _ _ _ | _| | |_ _ _ _| _ _| _|_ _ | _|_ _| _| _ _|_ |_ | | _ _ _ _ | |_ _ |_| | |_ | _| | _ _| | _ _ | _| _| | |_ _ | | |_ _ | _| _ _ _ _|_ | |_ | | _ _|_| |_ _ _ | | _ |_ _|_ _| | | | |_ |_| _ |_ |_| | | | _ _ _| | _| | | |_ _|_ | | |_ | | | |_|_ _| | |_ _| | | | _|_ |_ _ | _|_| _ _ _| |_ _ _ _| _|_ | _| | _| | |_ _ _| _ _ _|_|_ |_ _ | |_ _ | | |_ | | _ _|_ | | | |_ _ _ _| _| _ _|_ |_ _| | |_ _|_ _ |_ _ _ _ _ _| | |_ | _|_|_ | | | _ _| _ |_ _| | | |_ _ | _|_|_ _|_ | | _| |_ _| | |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | _| _|_ _ | | |_ _|_ | |_|_ _ _ | _| | | +|_| | |_|_ _ | |_|_ _|_ | _ _| | |_ |_ _ _| _ _ |_ _ | _ _| | | _ _ _| |_ | | _| |_ _ _ _ _| |_ _ _ _ _|_|_ | _| _| _|_ _|_ _ _| | | | _| _| | _| _ _ _ _ _| | _ _ _ _ | _ _|_ _ _| _ _|_| |_ | _| |_| |_ _ _| | |_ _ | | | |_| | |_ _| _|_ _ _ |_ _ | | _| _ _|_ |_ _| | |_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _|_ _ _ | | |_|_ | |_ _ |_ _ _ | _|_|_ | | | _ _|_ _ |_ | | | _ _| | |_ |_ _ _ _|_ _ _ _ | |_ _| _| | _| | _|_ | _ _| | _ _| _| _ _ _|_ _ | | _ _ | | |_ _| _|_ _| |_ _ | | _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | | | _| |_ |_| | | | _| |_ _ |_ | | | _|_ _|_ _| _| _ _ _ _| | _ _ _ _|_ _ _|_ | _ _ | | _ _| | | | _|_ | _ _ _| _ _ _ |_ _|_| |_ | | | |_ _| _ _ _ _ _ |_ | _| _ |_ _ _| | |_ _| _|_ _|_ _| | _ _ _|_ | | _ _|_ _|_ _ |_|_ _ _ | |_ _ _ _|_| _ _ |_ _ | _ _| | | _ _| |_ _| _ _|_ _ _ _|_ |_ _| _ _ _| _ |_ |_ |_ _ |_ | _| _|_|_ | | | _ _| _ _ _| | | |_ | | |_ _ _| | |_ | | |_ _ _ _| |_ _| | | | _| |_| |_ _ | | _ _| | |_ _ _| _| |_|_ _ | _ _|_ _ _| | | | _| | _ _ _| | | _ _| | _ _ |_ _ _ _ |_ | | | | _| | |_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _|_ | | | | _ _| | |_ _ | | _ | _| |_ _ _ _ _| _| |_ _ | | _| |_ _ |_ | |_ |_| |_ |_ _|_ _ |_ _| | |_|_ _ _ _|_ |_ _ |_ _| | | | | _| _ _| | _| | _ _|_ | | |_ _ | |_ _|_ _ | | |_ _| | | |_ _| _| _ _|_ | |_ |_ _ | | |_ _ _| |_ _|_ _ _ _ _| | | | _|_ |_ _|_ _ |_ _ _| | _ _| | | | | _| _| _ _|_| _ _| | _ _|_ | | | _| | _| |_ _| |_ | _| _|_ |_ _ _ _ _| |_ _| _ _| | |_ |_ _ _|_ _ _ |_ | | _ | _| |_ _ _ _ _| _|_ _ |_ |_ _ |_ _| _ _ |_ _ |_ _ _ _ _| |_ _| _ _| |_ _ _ | | |_ _ _| | | _| | |_ |_ _ | |_ _| _ | _| _ |_ _ _ _| _ _| _| _|_|_ _ _| |_| _ _ _|_ _ _ _ _|_ _ _ _|_ | |_ _ | | +| _| |_ _ _| | |_ _ | | | _| |_ _ | _ _ _|_ | | |_| |_ | | |_ _ |_ | _| | |_ _ _ _ |_ _ | _ _ _ _| | _|_ | _ _ _ _ | | |_ _| _| | |_ _| _ _ _ _ _ _|_ | _|_ _| | | _ _ _| _ |_ |_ | _| _| |_ | _|_ _ _| |_| | | |_ | |_ |_ _ _ |_ _ _ _| | _ _|_ _ _ _| _ _| | _|_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_ _ |_ _| |_ _ | | _ _| | _ _ |_ _ _ _ _| |_ _| _ _ _|_ | | | |_ _ | |_ | _ |_ _ _ _ _| _| |_ _ | | _|_ | |_ | _|_ | _|_ _ _| | | | |_| _ _ _ | | |_| |_ _ |_ _|_ | _| _ |_ |_| _| _| |_ _ _ _ _| | | _|_|_ | | | _ _|_ _ |_ | |_ _| _ _ _|_ _ _| | |_ |_ _ | _ _| | |_ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ |_ _| | _ _| | | | | _| | _ _ _| |_ | _ _| | _| |_ _|_ |_ _ _ _ | |_ _| | | | _| |_ | _ _| | | | _| _ _| | _|_ _ _ _ | |_ _|_ _ _ _ _ _ _ _ _ _ _ _| | | _ _ _| _| | |_| |_ | | |_ _ _ _| _ _| | _ _ | _ _ | _| | _| _| _ _|_ | |_ |_ _ _|_ |_ _ _ _ _| |_ _|_ _ _ _| | | _| | | _|_ |_ |_ | | |_ _|_ _| |_ |_| _ |_ |_| _| | | | | _ _| _| |_ | _| | _ _ | | _ |_| | | | _| |_ | | _ _|_ |_ _ _ _|_ | |_ _| |_ _ | |_ _ _|_| |_| |_ _ _ _|_ _ | |_|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _|_ _ _ _ _| | |_ _|_ _ |_ _|_ _ |_|_ |_| | |_ | _ _ _ _ |_ _| | |_ _ _|_ | | _|_ | | | |_ _ _ | |_ _ _ |_|_ _ _ _ | |_ _ |_ _ |_ |_ _| |_| _| _ |_ _| | _| | _ _| |_ _| _ _| |_| _ _ |_ _| |_ | _|_|_ | | _| |_ _ _ _ _| | | | _| | | | _ | | _ _ | _ | | |_ _| |_ | _ |_ _ | _| |_ | | _|_ _| _|_ | _ _ _| _ |_ | _| |_ _|_ _ _ |_ |_ | _| _| |_ _ _ _ | | | |_ _ | | _ _|_ _|_ _ | | | |_ _|_ _ _| | |_ _ _| |_ | | | _|_ _ _| | _ _| |_| |_ _ _ | _ _ | | | | _ _ _| |_ | _|_|_ _|_ | |_|_ | | _ _|_| |_ _| |_|_ |_ |_ | _ | | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_| | +| | _| |_ | _|_ _ _| |_| | | | | | | |_ _ | _ |_ _|_ | | _| |_ _ | | _|_ | |_ |_ | | | | | _| | |_ _ |_ _ _|_ |_ _ | | _ _|_ _ _| _| | | |_ _ _| _ _ _| |_ _ |_ _| | |_ |_ _| _| _ _|_ | |_ |_ _ | _|_ _ _ | | _|_|_ | |_ |_| _ _ _ _ _ _ | |_ _| | |_ _ _| | _|_| | _ | _| | |_ _ _ _| _ _| _|_ _ |_| | _| | | _ _| |_ _ _|_ _ | | |_ | _ _ _ _| | | _ _ _| |_ |_ _ | | | | | |_ _ _ |_ _ _| | |_|_ _ |_ _ | |_ _| |_ _ |_ _ | |_ |_ |_ _ | | | | | _ _ _| | _ _| _| _| _ _|_ | |_ _ _ _ _ _ | _| |_ _ _ _ _| |_ _| _ _| | | | | | _| _ _ | |_ _ | | _ _|_| |_|_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_| |_ | | | | | |_ _ _|_ _ | | | |_ _| | | _| | | | _| _| | |_|_ | |_ _| | | | _ | |_ | _| | |_ _ | _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _ | _ |_ _|_ | | _| |_ _ _ _ | | | | _ _|_ _| |_ _| | | _| |_ _ _ _ _|_|_ |_ | _ _| _ _ _ _| _ _ _ _ _ _ |_ _ _| |_|_ | _ _ _ |_ _|_ _ |_ _| _| _| _| _ _|_ | |_ | |_| | |_ _ _| _| | |_ _| |_ | | | |_ | | _| _| | | |_ _ |_| |_ _ _ _| _ _ |_ _ | _ _| | _|_ _|_ _ | | _ _ _| _ _ _ _|_ _ _ _| |_ | _|_|_ | | | _ _|_ _ |_ | | |_ _ _ _ _ | _ _ _| |_ _ _ |_ _ |_ | | |_ | |_ _| _ _ _|_ | _| | _ _ _| | | _|_ |_ _| _| |_ _ _ |_ _ _ _| _| |_ _ | _ _| | | | _ _| _| | |_ _| | |_ | |_ _ _ _| _ _| | _ _ _|_ | | |_ _ _|_ _ _ _ _| | |_ _ _ _ _| | | | _| |_ _ _| |_ _|_ | |_ _|_ _| | _| |_ _ _|_ _ _ | | | | _| |_| _ _ _| _ _|_ _ | _ | | | | |_ _ _| _ _ _ | | |_ _ _ _| _| | |_ _| _ _| | | | _|_ _ _|_ | _ _ _| |_ _| |_ _ _ _ | |_ | _ _ _| |_ _ _|_ | |_ _ | _ _| | _ _|_ _ _| _ |_ _|_ | | _| |_ _| _| _ |_ |_| |_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _| _| | | | | |_ _|_ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | +| |_ _ | _|_ _ _ | | _|_| |_| | | |_|_ _| | |_ _| | | |_ |_ _ | _ _| _ _|_| _| |_ | | _|_ | |_ | |_ _ |_ _ _ _| | _| | _ _| |_ | _| _|_ _| | _ _ _| | | _| |_ _ |_ _|_ | _| |_ _ _ _ _| | _ | _| | _ _|_ _| |_ _ _|_ _|_ |_ _ _| _ _ |_ _| | _ _| |_ | |_ _ _ _ _ _|_ | |_|_ | |_ _ |_ _ | | | _ _|_ _ |_ _ _|_ _|_ _ _| |_ | _| | | | | |_ _ | _ _| |_ _| _ |_ |_ |_ _ _| |_| | | |_ | _ _ |_ _ _| | | _ _ _| |_ | |_ | | _|_ _ |_| |_| _ _| _ _| |_ | | | _ _| | _ _| _| |_ _ _ _ _|_ | _ _| | |_ _| _ | _ _ _ | | |_ _ | _ _|_| |_ | _| | _| |_ _ | _|_ | | |_ _ | _ |_ _| _|_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _|_ | | _| |_ _| |_| _ _ _| | _| | _ | | | |_|_ _ _| _|_ |_ _| | _ _| |_ _ _ _| |_ _| | |_ | | |_ | | _ _| | | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_ | _ _| | |_ |_ _ | _ _| _| |_ _| _ _ _ _|_ |_ |_ _| |_ _ _ _ |_ |_ | |_ _ |_ | _ _ _ _| |_ |_ _| _ |_ | _|_| |_ _| _ _ | | _ _ _| | _| |_ _ _ _ _|_ | |_ | |_ |_ | |_ _ _| | | _ _| _| | | | _|_ _|_ _| |_ _| |_ | |_ | _ _ _| _| | |_| |_ | | | _ _ _|_ _| | | | _ _|_| _ _ |_ _ | _ _| | _|_ _ _ _ _| |_ _| _ _ _ _|_ | | |_ _ _ _ _ _| _|_ | _ _|_ _ _| | _ _ _| | _| |_| _|_ | _| |_| | | |_ _ _ |_ _ _ _ _|_| _ | | _ _|_ |_ _ _ _ | |_ _ |_ _ _| | | | _ _| _|_ _ |_ _| | _ _| | _|_ _ _ | _| | |_ _ _ | _ |_ _|_ _ | _ | _|_ | | _ _|_| |_ _ |_ _ _ | _ | | _|_ _ _ _ |_| | |_ _ _ _ | |_ _| |_|_ |_ |_ |_ _ | _ | _| |_ | |_ | |_| _ _ _|_ _| |_ _ _| _ _ _| | | | _| | | | |_| |_| | _| |_ _ | | _| _|_ | | _| |_| _| |_ _ | | |_ _ |_ | _|_ | | _ _ _ _| |_ |_ _ _ _ _| |_ | _ |_| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ | |_ _|_ |_ _ _ |_ _ _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _ |_| +| _| _| | _ _|_ _| |_ _ _ _ _ _| | | | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _| | _ _| |_ _ _ |_ | | _ _| | _ _ _ _| | _| | _ _| | _| |_ _| _ |_ _ |_ | |_ _ _ _|_ | |_ _ _| | | |_ | _ | _| | _|_ |_ _|_ _ _ _ _ _| |_ _ _ _| _ _| _ _ _|_ | | |_| |_ | | | |_|_ _ _ _ _ | _|_ _ _ _|_ _ _ _ _ _|_ | |_| | _ _ _ _| _ _ |_ _ | _ _| | _| | _|_ _|_ |_| _ _|_ | _ _| _| _ _|_ |_ _ | _| _| | | _|_ | | | _ _ | | | _ _| | _| _|_ _| _ _ |_ | |_ |_ _ _ _| |_ _ |_ |_ | | |_ | |_ _ _ _ _ _ _| | _ _| | _ _ |_ |_ _ _|_ _|_ _ _ _| |_| _ |_ |_| |_ |_ _ _|_ | | | _ _| |_ _| _ _| |_ _ _ | _|_ _ | _|_|_ | | | _ _| | |_ | | | | | |_ |_ _ | _ _ | _| _|_| _| | | | |_| |_ | _ _ _| _ _| | _ _|_ _ _| _ |_ |_ _| _| |_ |_ _|_ | _|_| | |_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _|_ _ |_ _ _| |_ | |_ |_ |_ _ |_ _ _ _|_ _ _|_ | _| | | _ _ _ _|_ |_ |_| _| _ _|_ | _ _| | _ _| | _ _| _| | | |_ _| _ | |_ _|_ _|_ |_ _| _ _ _| |_ _ _ _ _ |_ _ _| | _ _ _|_| _ _| | | | |_|_ _ | | |_ _|_ | | _| |_ _| _| _ | _|_ _| | _ _ _| _| | |_| |_ | | | | _ _ _ _ _ _| _ | _ _ _| |_ | _|_ _ |_| | | | _ _ _| | _ |_ _ _| _|_ _ _|_ _ _|_ _ _| | | | |_ _ _ _| _ _ |_ _| _| _ _ _|_ _ _ _ _ _ _|_ | | _ _ _ _| | | |_ | _|_ _ |_ | | _| | _| | | | _| |_ _|_ _ |_ _ _|_ _ _ _| |_| | |_ |_| _| _|_|_ | | |_ _ | | | _ _| | |_ _| |_ _ | | _ _ _|_ |_ _ _ _ _|_ _ _| |_ | _|_ _| |_ | | | | _|_ _| | _|_ |_ _ | _ | _| _ |_ _ | _| | | |_|_ _ _|_ _| | | _| _ _|_ _|_ | | |_| _ _| _ _| |_ _ _ _| _| |_ _ _ |_ _|_ _ |_| _|_ _ | | _| _ _ _ _|_ |_ _ _| _ _ _| | |_ _| | _| |_ _ _ _ _| _| _ _ _ | _| _ _|_ _ _ _| _ _| | | | | |_|_ _ _ _ _ _ |_ | | | | _ _|_ _ | _|_|_ | | | _ _| _ |_ _ | | | |_ | +|_ |_ |_ _|_ _ _ _ _ _| _ _ _| | | _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| | _|_ | | _| _| _|_ | _ _|_ _ _ | | |_ _| |_ | |_ |_| | _ _| _| _| | _|_ _| _ _ |_ _ | _ _| | |_ | |_|_ |_ _| _|_ | _| _ _ _ _ | _|_ _ | _ | |_ _ |_ _|_ _|_ | | _| |_ _ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _ | _ _ _| _| | |_| |_ | |_ | | | _ _ _ _| _| | | |_ | _| |_ _ _ _ _| _ _|_ _ _| | | | _ _| | | | |_ _ _| |_| | | | |_ | _ |_| _ _ _| | | _| | | |_ _ |_ _| | | | |_|_ | |_ | |_ | _|_ _| |_ | | |_ |_ |_| _| _ _ _ _ | _| _| _ _|_ | | _ | | | | |_ _ _ _| _ _| | _ _ _ |_| |_ _ | |_ _ _ _ _| |_ _|_ _|_ _|_ | | |_ _| | |_|_ | | _ _|_| |_|_ |_ _ _ | _|_ |_ _ _| |_ _ | _ |_ _ _| _ _ |_| _| _ _|_ | _|_ |_ | | | |_ _ | |_ | _| _ _ | _|_|_ | | | _ _|_ _ _ | | | |_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _| _| _ _|_ _ _|_ _| _| |_ _ |_ _ _ _| _|_| _| |_ _ _| |_ | | _| |_ _ _ _ _| |_ | | | | | | | _| | |_ |_|_ _ _| _| |_ _ _ _ _| _ _| _ _| _ _ _| _ _ |_ _ | _ _| | | _ _ | | | | | |_| _ _| | | | _ _| | |_ |_ _ | _ _ | |_ _ _ _ |_ _ | _ |_ _|_ | | _| |_ _| |_ _ _| _ _| | | |_ _| _ |_ |_| _| | _|_ _ _| |_ |_ _ | |_ |_| _ _ _|_ _ | | _ _ _ _|_|_ _|_ | _ _ _|_ | | |_ _| | _ _ _ _ | |_ _ | _|_ | _ | | |_ | | _ _ _ _ _|_ _|_ | | | |_|_ |_ _|_ _| |_ |_ _ _ | _ _ _ _|_ |_ _ |_ _ _| _| _ _| |_ _| _ _|_ |_ | _|_ |_ |_ |_ |_ | _ _ _| _ _ |_ _ | _ _| |_ _ _| _ _| _|_ _|_ _| |_ _ _ _|_ | |_ _ _ _ _|_ _|_ _| | _| | |_ _| |_ | _ _ _| | | |_ _| _ _ _ |_ _|_| _ _| | |_ _ _ | _ _ _| | | _| | _ _ _| _| _ | |_ |_ _ _| |_ | |_ _ | |_ _ _ | |_ _ _ _| _ _| | | |_ _|_ | _ _ | | | |_|_ _ _| |_ _ _ _ | |_ _| _| | | _| | _ _ _| |_ _ _ _ _| |_ _| _ _| |_ _ _ | | _ _| | +| | _| _ _ _ _ _ | | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _ | | |_ _ _| _| _ _|_ |_ _ | |_| | | | | _| |_ _ | | | |_ _ | _| | _ _ _|_ | | |_| |_ | | | _|_ | _| | |_ _|_ |_ _|_ _ | _|_| _ _ |_ |_| | _ _| | _| _| | |_ |_ _ | _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | _ | |_ _ | _ |_ _|_ | | _| |_ _ | |_| _ _ _ _ _|_ _| | _| |_ _ _ _ | | _ | _ _| | |_| | |_ _| _ |_ |_ _ _|_| | _|_| | |_ _| _ _|_|_ _ | | |_ _| | | _ _ _| | _ | _| _|_ _ _| |_ _ |_ _| | | |_ _ | | | _| |_ _ | | _| | | _| |_ _ _ _ _|_| | |_ _| | | | |_ _ _| | |_ _ |_ |_ |_ _ _| _ | | _ _ _ _| | _ _ _| |_ | |_ | _ _|_ | | |_ _ | |_ | |_ _ |_ _| | _ _ _ _| | | _| _ _ _|_ | | _| |_ _ _ _ _|_| _ | _|_| _|_ _ _ _| |_ _ _ | _| _ _| |_ _ _ _ _| |_ _| | _ _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _| | | _ _ _ _| _| |_ _ |_ | | | _ _ _| |_ _ _| _| _ _|_ _ _| _ _ |_ |_ | | _| | | |_|_ _| |_ _| |_ _ _| _| _ _ _ _| |_ _ _ | |_ _ _ _| _ | _ _ _| | | |_| |_ | | |_ _ | | | | | | |_ |_| | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ _ _ |_ _| |_ |_ _| | |_ |_ _ | _ _ | |_ _ | |_ _| _| _ _|_ |_ |_ _|_ | _ _ | | | _| | |_ |_ |_ _ | _ _| |_ _|_ | _ _ _ _ | |_ _ _ | _ |_ _|_ | _|_ _ | | _| |_ _ | _| | | _|_ _| |_ | |_| _ _ | _ _ | | |_| |_ _ |_ | _ | | | |_ _| | |_ _ _| |_ | | | _ _ _| | |_ _ _ _| _ _| | | | _|_ _ |_|_ _ _ _|_ _ _| | | _ _ _|_ | | |_| |_ | | _ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ | _|_ _ _ _ |_ _| _|_ _ | |_ _ _ _ _ _ _|_ | |_| _ _| | _ |_ _|_ _ | _|_| |_ _ _ _| | _ _ _|_ _|_ | |_ |_| _| _ _|_ _ _| |_ _ _ _| | | | _|_ | _ | _| | |_ _|_ _ _ _ _| | _ _| | |_|_ _|_ _ |_ _ _ _ | _| |_ _ | | _| | | _|_ _ _ _|_ _ _ _ _ _ | | | | _ _ _| |_| _ _| +| |_|_ |_| | | | _| |_ _ _ | | _| _| |_ _ | | _| | |_ _ _ _| _ _| | |_| | _| | | _ _ _|_ _| | _| _ _|_|_ | |_ _| | |_ |_ _ | _|_ |_ _ |_|_ _ |_ _ | _ _|_ _|_ | | _| |_ _ _ |_ _| _| |_|_ _ _ _ _ _ _ _ _|_ _ _|_ _ _ _|_ _ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _| | | _| |_ |_ _| | |_ |_ _ | |_ _ | _ | _| | _|_ |_ | |_ | | | | | | |_ _ _ _| _ _| |_ |_| _| _ _|_ | _ | |_ _ | | | _| _|_ _| _ _ |_|_ | _ _| | | _| | |_ _|_ _| _|_ _| _| |_ _ _ _ _|_|_ _ |_ _|_ _ | _ _| | |_ _ _| | |_ | | _ _| | | _ _ _| |_ |_ |_ _|_ _ |_ _ _|_ _ _| |_ |_ _| |_ _| _ _| _| |_| _ |_ |_ _ |_ _| | _ _| |_ _| _ _| |_ | |_ | |_ _ _ _|_ | | _|_|_ _ _ _ | _|_ _ | _ _ _ _ _ _ _|_ |_ _ |_ _ _ _| |_ |_ _|_ | | |_ _ | | _ _ _ _| | | | _ _ _| |_| _| _ _ _ | _| _ |_ _ _ _| _ _| _ |_ | _|_| | | | _ _ _| _| | | | _|_| | | | | |_ _ | _ _| | _| _ _| | | |_ _ _| |_ | |_| | | _ _ _|_ _ | _ _ _| | _ _ | _|_ _|_ _ | | | |_ _ | _|_|_ _|_ | | _| |_ _ _| | |_| | |_ _ _ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| |_| _| | _| |_ _ _ _ _| _| _ _|_ _| | | _| | _|_ _|_ |_ _ _ _ _|_ _ _ _ _ _|_ _ | | _| |_ _ | | | |_ _ | | | | _ _| | |_ _ _| _| | | _| | |_| _ |_ |_| |_ _ | | | | _|_ _ _ _| | |_ _ _|_ | | _|_| | | _| _| _ _|_ _ _| | |_ _ | _ _|_ _ | | |_ _| | |_ |_ |_ _ |_ _| | _ | | |_ _ |_ _|_ _|_ | | _| |_ _ |_| | _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ | |_ |_ _ _| | _ |_ | | _ _|_ _ |_ | _|_ | | _ _| | _ _ |_ | _| | | |_ _ _| _|_| |_ _ _|_ _ _ | _| _ _| | | |_ _ _ | |_ _ | | _ |_ _ |_ _ _ _|_ _ _|_| _ |_ | _ | _ _ _ |_ _| | |_ _| _ |_ |_ _ | +|_ _ _ _ _|_ _| | | | _ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | _|_ _ _ | | |_|_ _ _ _| |_ _ _|_ _ _ | _ _|_ _| _ _ _ _ _ _ _ _| _|_ | | _ _|_| |_ _ |_ _ |_ _| | _ | | | |_ |_ _ | _ _ _ _| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ _ _ | | |_ | _ _|_ | | |_ _ | | _|_|_ | | | _ _|_ _ |_ | | _ _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_|_ | |_| _| | | | _| _| |_ _ |_ _|_ | |_ _ _ | _| _ | _| _| |_ _ _ _ _| | |_ _ |_ _| | | _| _ _ _|_ | | |_| |_ | | _| _| |_ | _ _ _| _ _| _| |_ _ | | _ _ _ _ | | | |_ | _| _ _| |_ | |_ _| |_| |_ _ _| |_| _ |_ |_ |_| |_ |_ _ | | _ _ _ _|_ |_ |_ _ _ |_ _ _| _| _| _ _|_ | | | _ _|_ _ _ _| _ _| | |_ _ _| _| _ | | _ _| | |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| | | |_ _|_ _ |_ _|_ |_ _ |_ _ _| _| _ |_ |_ | | |_ _|_ | | |_ _ _ _ | | |_|_ |_ _| |_ _ |_ _ |_ _ | |_ | | | | | | _|_ | |_ _| _ _|_ | _|_| | | _ _| |_ |_| _ |_ | |_ |_ _|_ _ _| _ _ |_ _ | _ _| | |_ _ _| _ _|_ _| | | |_ _| | | _| | |_ |_ _ | _|_ _ | |_ _ _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | _| |_ _ _ _| _| _| _ _ _| | |_ _ |_ _ _ | |_ | _ _ _ _ | |_ _ _ _| | |_ _ _| | | _| | |_ _| | | |_ | |_ _ _ _ | |_| | _ _| _| _ _|_ | | _| _| |_ |_ | _ _|_ _| _ _ |_ _| | _ _| | |_| _| | | _ _ _ _| | _| | | _ _ _| _|_ _|_ _ |_ _| _| _ _ |_ | _|_ _ _|_ _|_ _| | _| _ | | |_ |_ _ | _ _| |_ _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | |_| |_| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | _| |_ _ | | |_| _|_ _|_ _ _ | | _ _ _ | _|_ _|_ _ _|_ _ | _| |_ _ |_ _ _| | | _|_ _ _ _| _| _ |_| _ _ | | |_|_ _ _ _ _| _| |_ _ _ | |_ |_ | | |_ |_| | | _ _ _ _ | |_ _| |_ |_| _| |_ _ _ _|_ |_ _ _| _| _ _|_ | _| +| _ |_| | |_|_ _ _| _ |_ | _ _ _ _ | |_|_ _ _ _|_ _ _| _ | |_ _|_ _ |_ _ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _ _ _|_ | | |_ _ |_ | | |_ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_|_ _ _ _ _| |_ _| _ _ _| _| | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| _ _|_ _| _| _| | _| _ | | | _ _| _| | _|_ | |_ _ | | | |_ _ _|_ _ _ _|_ |_ _ | _ _|_ _|_ | | _| |_| _|_ _ _ |_ _ | | _ _ _| | | |_ _| |_ _ | | _| |_ _| |_ | | |_ _| | _| _| | |_ | _ | _| _| _ _|_ |_ _ _|_ _ _|_ _ | | |_ _ _| |_ | | _ _ _ |_ _| | _| |_ _ _ _ _| _|_ _ _ _ _ _| | |_ _| _ _ | | _| | | |_ _ _ _|_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| |_ | |_ _| |_ | _ |_ _ | |_ |_ _ |_ _| _| _ _|_ | |_ _|_ _ _ _ _|_ _ _| _ _ _|_ _|_ _ |_ _ | | |_ _ |_ _| | _ _| |_|_ _ _|_|_ _ _ _|_ | _| _| |_ _ |_|_ | | _| | _| _| _ _|_ _|_ _ | _ _ _| | | |_| |_ | | |_ _| _| |_ _| | _|_|_ | | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ |_ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _|_ |_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _|_ |_ |_| | _ _ _| | _ _| _ _| _|_ |_ _ _ | |_ _|_ _ |_ _ | | _| |_ _ | _ _| _ _ _| | | |_ _ _|_ | _|_|_ | | | | | | | | | _| | | _| |_ _ _ _ _|_| _ _ _|_ _ _ | |_|_ |_| _ _ _| | | |_| |_ | | |_ _| |_ _| | | _| | _|_ _|_ _ |_ _ _ _ _| _ _ _ _ _|_ _ _ _| | | _ _ _ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _|_ _ | _|_|_ | | | _ _| _ |_ _| | | | _ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ |_ _ | _|_ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_|_ |_ _ |_ _ |_ | | | | _ _ _| _| | | _|_ _ |_ _|_ _ _ _ | |_ _|_ |_ _ | |_ _ _ _| |_ |_ | |_ _|_ _ | | _| |_ _ | |_ _ _| |_ _ _ | |_|_ _ | _| |_ _ _ _ _|_ | +| | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ |_ _| |_ _ | |_ _ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _| |_ _| _ _| _| |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | _ _ _ | _|_ _ |_ _ _ _| _ _| | _ _ _ _ _ _ |_ | | | _ _|_| |_| |_| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _ | _ _ _| _|_ _ _ _| | |_ _| |_| | | | _|_| | |_ | _|_ _| | |_|_ | _| _ _ _ _ | _| | _ _ _| | |_ | | _| _ |_ _ _| | |_ _ |_ | |_ | |_ _ _ | |_ _| _| |_ |_ | | |_|_ _| _| _| |_| _|_| _| | _| |_ _ _ _ _| _ | | | _ _| |_| _| _ _|_ _ _| | |_ _| | | _ | |_ _ _ _| |_ _ _ | |_ _ |_ _|_ _ |_ _ |_ _|_ |_ _ | _ _ |_ |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| | | _ _|_ _| _| | |_|_ _ | |_ | _| |_ _ _ _ _| | | |_ _ | |_ _ _ _ _ | |_ _ | _| |_ _ |_ | | _|_ _ _|_ _ | _ _ _ _ _ _|_ _ _|_ _ _ | |_ _ |_| |_ | |_| _| |_ _ _ _ _| _ _ |_ _ | | |_ _|_ | | _| |_|_ | _| _| _ _| |_ _ _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _| _| | | |_ _|_ | _ _ |_ | | |_ _ | | _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _|_ _| _ _| _| |_ _ |_ | | _ _| _| | _ _| |_ _ | | _ |_ _| | |_ _ _|_ | | |_ _| |_ | _| |_ _ | | |_ _ _|_ | |_| |_ _| |_| | |_ |_ | |_ _ |_ _ |_| _ _ | |_|_ _ |_ |_ _ | |_|_ _|_ | | _| |_|_ | | _| _ _| | | |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ | | _ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ |_ _ |_ _ _ _ _| |_ _| _ _| |_ _ _ | | |_| | _ _|_ _ _|_ | _|_|_ | | | _ _|_ _ |_| | | _|_ | | _ _|_| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _ _| | _|_| |_| |_ _ |_ |_ _ | |_ _ |_ _ _ | | _| |_ _ | _| |_ _| | |_ |_ _| _|_ _| | |_ _ _| _| |_|_ |_ _ _ | |_ _|_ _ | | |_ _ _ _| | +| |_ _| |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _ _ _| | | _ _| |_ _| _ _| | |_ _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ |_ _ _ _| _ _| _ _| _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| _ |_ _ | _|_|_ | | | _ _| | _ _ _ | | | | |_ _|_ | _ _| _ _ | | |_ _ | _ _ _ _|_ | _| | |_ _| _ |_ |_ | |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | _|_| | |_ _ | | _ _ _ | _| _ |_ | |_| | |_ | _| _| _| | | _| | _ _|_ |_ _ | | _| | | _|_ _ _|_ | |_|_ | | |_ _| |_ | _| _|_ _ _ _ |_ _| _|_ _ | _|_ _ _ _ _ _|_| _|_ _|_ _| | _ _ _| |_ | _| |_ | | |_ _| _ _ _ _ | _|_ _| | _ _| _ _| | | _ | | | _ _| | | | | |_ |_ | _ _| |_ |_ _|_ _ | | _ _|_ _ |_ _ _ | _ |_ _| |_ | | | _ _| |_ | _|_|_ | | | _ _| _ | _| |_ | |_| |_ _ _ |_ _| | _ _ |_ |_| |_ _ _| | | | | | |_ _ _ _| _ _| | | |_ _ _|_ _|_ _ | | |_ _ _| | |_ | _ _| | |_|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ | |_ | _ _|_ | |_ | _ _ |_ _ | | _| | | |_| | | |_ |_ _ | _ _| | |_ |_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ |_ _ _| |_ _|_ _ _ _ _|_| _| |_ _ |_ _|_ _ |_ _ | _| | | |_ _|_ | |_ _ _ _| | | |_ _ _ _ _ _| _| |_ _| | _| | | | _ _| | | |_ _ |_ _|_ |_ _ _| _| _ _ _ | | | |_ _ | | |_ _| |_ |_ _|_ _ | |_ _ _ _|_ _ _ _|_ | |_ |_ |_|_ _ _|_ _ _|_ _ _ _| | _| |_ _ | | | _| | |_| _| | |_ |_ _ | _|_ | |_ | | | | |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ |_ | _ _ |_ _ | | | _ _ _| |_ _| | _ _ _| |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | | _ _|_ | | |_ _ | _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ | _ _| _ |_ |_ _| | _| |_|_ _ | |_ |_ _| |_ _ _| | _| |_ _ _ _|_ _| _ _| | | | | | _| _ _| _ _ _ _ _ _| _ _ _| |_ _ _ _|_ _| |_ | |_| _ _| | | +| _ _ _|_ |_| _ | _|_|_ | | | _ _| |_ _ | | _| | |_ _| | _|_ | _| _ _| | | _| | | | _|_|_ | | | _ _|_ _ _ _| | | |_ | _ | | |_ _ |_ _| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _|_ _ _ _| | | | _|_ _ _ _ _| |_ _| _ _| | _ | | | |_ _|_ _ _ _ _|_ _ _ _ | _|_ _|_ _ |_|_ | |_| | | | | | _| _| _ _|_ | _| | | |_ _|_ | _ _ _ | | | |_ _| | _ _| | | _| | _|_ | |_ _ _| _| _|_ |_ _ _| | |_ _| _|_ _| | | | _| | | |_ _| |_ _ _ _|_|_ _ _ | | |_ | _ _|_ |_ _ | _|_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | _ _ _|_ _ |_ |_ | _ _ _|_ _ _| |_ | |_ _ | | | | _ _ _|_ _ |_ | _| |_|_ |_ _|_ _ _ _| | | | _| _| _| |_ | |_ _ _| _ _ |_ _| | _ _ _| | _ _| |_ _| | _ _|_ | | |_| | |_ _ |_ _ _ _ _| |_ _| _| _| |_ | | _|_ _ _| _ _| _| |_ _ | |_ |_ _ _ |_ _ | _|_ _| |_ | _ | _| | | | |_ _| |_ _ |_ _| | | |_ | _ _|_ _ _| | _ | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _| _ _ |_ | _| | | | _| | | | _|_|_ _ _| | |_|_ | | _ _|_| |_|_ | | | | _ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _|_| |_ _| _ _ _ | _ _ _ | | | _|_ _ |_ _ | |_ _ _| |_ _|_ _ _ _ _| _ | _ _| |_ _|_ _ |_ _| _ _ _| _| | | | _|_ _ _|_ | |_ | _| |_ _| | | _ _|_ _ | | _ _ | _| | | |_ _ |_ _| _ |_ |_ | _ |_ |_ | | |_ _| _ _| _|_ | _ | | _ _ _ _ | |_ _ _ _ _|_ | | |_| |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | |_ _ |_ _ _|_| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| |_ | _ _| |_ _| | | _| _ _ _|_ _| _| _ |_ |_| _|_| |_ _ _| _| | | _ _ _ _ _| _| _ _ _| |_| _| | _ _| |_ _| _ _| | | |_ _|_ | _|_|_ | | | _ _| |_ _ | | |_| _ _| | _| _ _|_ | | _|_ _ _|_ _| _|_ _ | _|_ _ _ _ _|_ _| _|_| _ _ |_ _ | _ _| | | | |_| | | | _ _ _ _| |_ _ _ _ _ |_ _ _ |_ _ _ _ _| _| |_ | | | | | +| _ _| |_ | |_|_ _ _ _ _| |_ _| _ _|_ _ _| _| | |_ _ _| | _| _ _| | | | |_ | | | | | | |_ _ _ _|_ _ _ _ _| |_ _| _ _ _ _ _| _| | _| | | | |_ _|_ _ |_ _ _ | _| | | |_ _|_ | | | _| | | |_ _ _ _| | |_ _ | _ |_ _ _ _ _| |_ _ _| |_ _ |_ _ _ _ _ | |_|_ _ _ |_ _ |_ _|_ _ _| | |_ | |_| _| |_ _ _ _ _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ |_ _|_ _ |_ _ _ | |_ | _|_ _ _ _| |_ _| _ _ _| _ _ _ _ _ _ _|_ _ _|_ | | _|_ _ _| |_ _| _| | _ _ | _ |_ _|_ _ |_ _| | _ _| |_|_ | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _ _ _ _ |_| _|_| |_ _ _| _| |_ _ | |_| | |_|_ _ |_ | _| |_ |_ _ _ | _ _ _ _ | |_ _|_| _|_ | _| |_ _ _ _ _| _ _ _| _|_ _| | _ _| _ _ _| _ _|_ _| _| |_ |_ _|_ _ |_ _ _| _ _| _ _| |_ _| _| |_ _ _| | | | | _| _|_ _ |_ | |_ _ _| | _|_ _| _ _| _| | | |_ _ _|_ _| | _ _ _|_ |_ | | | _|_|_ | |_ |_ | | |_| |_ _| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| | | _| | _| _| | |_ _| |_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ |_ _| |_ | _| | | |_ _|_ |_ _| | _| | |_ _ _ _ _| _|_ _ _| |_ |_ | _| _|_| | |_ | _|_ _ _ | |_ _| | |_ _ _ _ _ |_ _| | |_ | _ _ _ _|_ _ |_ _ | |_ | | | |_ _ _ | |_|_ |_|_ |_ | _| |_|_ _ _ _ | | |_ _ _| |_ _ _| |_ | |_ _ | | _ _|_ | |_ |_ _ _ _ _| |_ |_ _ | | | _ _ _ _|_ _|_ _| _ | | _| |_ _ |_ _ _ | |_ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ | | _ | _|_ _ _ | _|_|_ | | | _ _| _| | | | | | | | _| | | |_ _|_ | |_ _ _ | | | |_|_ | |_ _ |_ _ _ _| |_ _ _| _ _ _ |_| _| _ _|_ | _ | | _ _ _| | | _ _ _|_ | | _ _ _| _ |_ |_ | |_ _ _ _| _ _| |_ |_ |_ _ |_ _ _ _ _| |_ _|_ _ | | _ _| | | _| | _| |_ |_ _ _ _ _| |_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ _| _| | |_| |_ | | | |_ _ _| | | | _ _ _ _|_ |_ _ | |_ _ | | _ _ _| _|_ _ _|_ _ _|_| | | +| | _ _|_ _ _| | | _ _ | _ _| | | _ _ _ _| |_| _ _ _|_| _| _| |_| | | | | |_| | | | | _ _ | _ _ _ _| | | _ _ _ _| |_ | |_ _| _ _ _ |_ _ | | |_ _ _| |_ _|_ _ _ _ _| _|_ _ _| |_|_ _|_ _ |_ _| |_| _ _ _ _| | | _| |_ |_ | | _| _ |_ |_ _ | _ _| | _| |_ _ |_| | | _ _| | | _ _ _| |_ _|_ | |_ _ _ | _ _ | | _ _ | _| _| | |_ _ _ _ _ _|_ _ | | | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | |_ |_| | _ _| |_ | |_| | | _|_ | |_ _ _ _| _ _ _ _| | | |_ _ | | | | |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _ _| _ _ |_ _ | _ _| | _ _|_| _|_ _ _ _|_ _ | |_ _ _ _ | _|_|_ _ _ _|_ _ |_| _ | | _| | _ _ _|_ | | _| | _ _ _|_ _ _ |_ _ _ _ |_ | |_ _ | _ |_ _ | | _| | | |_ _ _ |_ |_ _ _ _ _|_ _ _ _ _| | |_ _|_ _| |_ _ _|_ _ | | _| _|_ _ _ _|_ _| _|_ _| _| _| | | _ _ | | _ _| |_ | |_ _|_ _ _ _ _| | | | _|_ _|_ _ _| | _ _| |_ _| _ _ | _|_|_ | | | _ _|_ _ _ _ | | | |_ | |_ _ _| _| | _ _ _|_ |_| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _ _ | |_ _ _| |_ _|_ _ _ _ _| _ _| |_|_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _| _ _| | |_| _|_ _ | | _|_ _ _ _|_ _ _ | _ _| _| |_ _ _ |_ _ _ _ _ _ | _ _| | _| | |_ _ _ _|_ _|_ _ |_ _ |_ | | |_ _ _ _ | |_ _|_|_ _ | _| _ |_ |_ _ _| | |_ _ _ _ _|_ _ _ _| | _ _|_ _| |_ _| | | | _ _ _ _ |_ _| | |_ _ _| | | _ _ _| | | _|_ _ _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _ _|_| | | |_ | | |_ _ _ _ _| |_ _| _ _ _ _| |_ | | | | |_| |_ _ _| |_ _|_ _ _ _ _|_ | _| |_ |_ _|_ _ |_ _ _ _ _ _| |_ _ _ _| _| | _| |_ _ _ _ _|_ _| |_ _ _ |_ _| | |_| _ _ _ _| _| _| _| _ _|_ | |_ _ _ _ | | |_|_ | | | | |_| _ _ _ | _ _ _| | |_ _ _| |_ |_ _ _| | _| _ _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ |_ _|_ | | _| |_ _| _ _ _|_ _|_ _ _| |_ | |_ _|_ | | |_|_ | _ _ _| _ _ _ _ | _| | +|_| |_ _ _| |_ _| _|_ | | | _ _| | | _| _ |_ |_ | _ _ _|_ | | | _|_| | |_ _ | | |_ _| | |_ | | | | | _ _| | _ _| _ |_ |_ _ _ | |_ _ _ _ _| | _| | | | _ _ | _ _|_ |_ | _| _ _ _ |_ _ |_ _ _| | _| | | _|_ _ |_ | |_| _| _ _|_ | | | | |_ _ _| | | _| |_ _| _ _| |_ _| _ |_ _ _ _ |_ | |_ _ _|_| | |_ _| _| |_ _ _ _ _|_ |_| _ |_| _ _| | | |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ _| _| |_ _ _ _|_ | | | _ _|_ | _|_ _ _ _ _ _ _| _ _ _| |_ _| _ _| _|_ _|_ _ |_ _|_ | _|_|_ | | | _ _| | _ | | | | _ _ _| | | |_| |_ | | | _ _ _|_ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ |_ _| | |_ _|_ _ | _ _| | | | |_| |_ _ _ |_ _ _ | | | | _ _| |_ | | |_| |_|_ _ _| | |_ _|_ _ _ |_ _ _ _ _| _ _ |_ _ | _ _| | | | | | _ _ _ _ | | |_ | | _ _ | | _| _ _ _| _|_ _ | | | |_ _| | | _ _|_ _ _| | _ _ _ | |_ | |_ | _ _ _ _ _|_ | _| | | |_|_ _ _ _ _| |_ _| _ _ | _ _| | | |_ _ _| | _ _ _| _| | | |_ | |_| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _ _| _| | _| | _ _| | _ _ | | | |_ _ _ _ | _ _|_ _ | _|_ _ _| |_ | _ _ | _| |_ _ _ _ _ | | _| _ _ _ _ | |_ _| | _| _|_ _ | | | | | _ _ |_ | _|_ _ _|_ |_ _| _ _ _ _ _ _ _ _ _|_ _|_ |_ _ |_ _|_ _ | | _| | _| _ _|_ | | _ _| | _ _ _ _ | _ | | _| | _ _| | |_ _| |_ _ | | | _ _|_ | | | | |_ _ | |_ _| _ _ _ _ _ | _| _|_ _ _ _| _ _| _ _ _|_ | |_ |_ _ _| |_ _| |_ _ _ _ | _ _| _| _|_ _| |_| |_ _ _ _ _ | | _ _ | _ _ | | |_ | | _ | |_ _ | | _ _ _ _|_ |_ _ _ |_| | _| |_ _ | _ _ | |_ | | _ _| | _| _| _| | _| |_ _ _ _ _|_ _ | | |_ _|_ _ |_ _ _|_ |_ | | |_ _ | | | |_ | _ _| _ |_ |_ | _|_ |_| | | _| |_ _ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ | _ _| | |_ |_ _ | _ _ _ | _| _ _|_ _ _| _| _ _ _|_ | _|_ _ | | |_ _ | _ _ _| _| +| _| _|_| _ _| |_ _ |_ _| | |_ | | _| _| _ _|_ | |_ _ | |_| | |_| |_ |_ |_ _ _|_| |_ _ | | | _| | | | _| | _| _| _ _|_ | | | |_ _ _ | _ _|_ _ _|_ |_ _| | |_ _ _ _ _ _ | | _ _| | _ _| | |_| _| | | | | |_ _ |_ _ |_| | _| |_ _ _ _ _| | |_| |_| | _ |_| _|_ _ _|_ | | _ _ _| |_ | | _| _| | |_| _ _| |_ | _ |_ _ _ _ | |_ _ | | | _| | _ _| _| _ _|_| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| _ _| |_ _ | _ |_ _ | _|_ _ _ _ _| |_ _| _ _ _| _|_ | | |_ _ | | | |_ _|_ | | _| |_ _ _ | _ _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _ _| _| | | |_| |_| |_ _ _|_ _ _| _| | | |_ _|_ | |_ | _|_ _| | |_ _ | | | | | |_ _ |_ _ | _ _ _|_ | | |_| |_ | | |_| |_ _| |_ | | _ _| | | _|_ _| _|_ _ _|_|_ |_ _ | _| _ |_| | |_ _ _ _|_| | | _ | | |_ | |_ _| _|_ | | | _ _ _ _ | |_ _ _| |_ _|_ _ _ _ _ _ _ |_ _ | | | |_ _ _| |_ |_ | |_ _ | | _ _| |_ _|_ _ _|_ _ _ | | | |_ _|_ | _|_ _ _ _| | |_ _ | |_ _ _ _| |_ _ |_ _|_ | |_ _|_ _|_ _ |_ _ _| |_ _ _ _ | |_ _| _| _ _|_ _ _|_| |_| | |_ _ _ | |_ _|_ _| _ | | _| |_ _ | |_ _ _| _ | |_ _ _|_ _| _ | | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _ _ |_ _| |_ | _| |_ _ _ _ _| |_ | | | | | _ _ _|_ _ |_| _| | |_ | | | |_ _|_ _ | | |_ _ _| _ | |_ _| | | | |_ _ |_|_ | | _| |_| |_ _|_ | |_| _ _ _ | | |_ _ _ | | |_ _ | _ |_ | |_ |_ _ _ _|_ _ _ _ |_| _| _ |_ |_ _ | _| _|_ _| _| |_ _ _|_ _|_ |_|_ _ _|_ _ |_ | | |_ _ _| |_ |_ _ | |_ |_ | | | |_ _| | |_|_ | _| |_ _ | | |_ |_ _ _| | |_ _ _ _ _ |_ |_ _|_ _ | | |_ _ | |_| _| | | _ _|_| |_ | | _| _| _ _|_ | | | |_ _ _ | | |_| | _ _| _ _ _ | _|_|_ | | | _ _| _ _ | | | _ _|_ _ | |_|_ | | _ _|_| |_ _| _ _| | | _| _ _ _| _ _ |_ _ | _| | _| | |_ _| |_ _| +| |_ _ _ _|_ _ _|_ _ |_ _ |_| | | |_| _| |_ _ _ _ _|_ _| | |_ | |_ | | _| | | _ _ _ _|_ |_ _ _| | | _| | | | | | _| |_ _ _ _ _| | | |_ | _| |_ | _ _ _ _ _ _| |_|_ _ _ _ | |_|_ | _ _|_ | _ _| |_ | | _ _| | |_ | |_ _ |_ _ | |_ _| _ | _| _| _|_ _| | | _| |_| | _| |_ _ | | _|_|_ _| _| _ _|_ | |_ | | _|_ |_ _ _ | _| |_ _ |_ _|_ | |_ | _ _|_ | | |_ _ | _| | _|_|_ | | | _ _| _ | _| | | _ |_ | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | | |_|_ _| | | _ _ _| | _| _ |_ _ | | | |_ _ _| |_ _| | _|_ _| | |_ |_ _ | _ _| | | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | |_ _| _ _ _| | _|_ _|_ _ _ |_ |_ _ _ | _ _ _ _|_|_ _ _ _|_ | |_ _ _ _| _ |_| | |_ | |_ _| | _ _ _ | |_ _ | _|_ _|_ | | _| |_ _ | |_ | |_ _ _ _ _| |_ | |_ | _ _ _ _ | _| | _ _| | | _| _ |_ _ _| _|_ |_ _| | |_ |_| _| | | _|_ _ | | _| | | | _ _ | | | _ _|_ _ _ _| | _| _ |_ |_ | | _ _| |_ _| | | _ _ _ _ | |_ _| _|_ _ _ _ _| |_ _ |_ _ |_ _|_ _ |_|_ | | _ _ _ _| |_ _ _ _ | |_ _ | _| _ _| |_ | _ _| | | _ _ | | _ _| _ _|_ _|_ _ | |_ _| | |_ _ _|_ | | _ | _| | | | _ _ _ |_ _| | |_ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | | _ _ _ _| | _ _ _ _ | | | | _|_| |_ _ _| _ _ |_| _| _| | _| |_|_ |_| | | |_ | _| | |_| _ _|_| |_ _ |_ _ | _|_ _ _|_ _ _|_ _ _ _| _ _| _ _ _|_ _|_ _ |_ _| |_| | |_| |_ _ _ _| | _| _ _ _ _ | |_| _| _| _ _|_ | _|_ | | |_ _ |_ _ _ _ | |_ _ _ _ _ |_ _ _| |_| _| _ _|_ _ _| |_ _|_| _| _| | |_ _ | |_ _ _ _ _| | | _ | | | |_ |_ _ _| |_ |_ _ |_ _ _| _ _|_ _| | _ _| | |_ | | _ _|_ | |_ | | |_| _| |_ _ _ _ _| | | _ _ | _|_ _ _| | |_ _ _| | | |_ _ _ _ _| |_ _| | | _| _| | | | | _ |_ | _ _|_ | | |_ _ | | | _|_ |_ | | _ _ _| _| | |_ _| _|_ _ _|_| | | |_ _ | +| |_ _ |_ _ | |_ _ |_ | _|_|_ | |_ _ _ _ _ _ | _|_ |_ _ _|_ _ _|_ _| |_|_ _ _| |_ | _| |_ |_| |_| | | | |_ _ _ _ _ _ _ _| |_ |_ | | | | | _ _ | _ _|_ _ _ | _| |_ _ |_| | _ _| |_ | _ |_ _|_| | | |_ _ _ _|_ | _|_ | | _| | _|_ _ _| | _ |_ _ | | _| _ _|_ _| | _ | |_| |_ | _ _ _| | |_ | | | _| | | | _ _ _| |_ _ _|_ | | _ |_| | | | | | | _ _| |_ _| _ _| | |_ _ _ _ _| |_ _|_ _| _| | | | | _|_ | _|_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _| |_ _|_ _ |_ _ _ _| | | _ |_| _| |_ _ _ | | | _|_| |_| _ |_ |_ _|_ | |_ | |_|_ | | _ _|_| |_ _| |_ _| _ | _|_|_ | | | _ _| _ _| _ _ _ _| | _ _ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _|_ _ _ _| |_ | | _| |_ _| | _ _ _|_ _ _ |_ _| | |_ | | | |_ |_ _ | _|_| _|_ | _ |_ |_ _|_ | |_ _ | | _| | _|_ _ _ _| | | |_ _ _ | |_ _ _ _|_ _ _ _ _| _|_ _ _| _| | |_ _ _ _| | |_ _ |_ _|_|_ _| | |_ _| |_ | _ _ _ _ _ _| _| _ _|_ |_ |_ _ _ _ _ _ _|_ |_ _ | | _| |_ _ |_ _ _ | | |_ _ |_ |_ _ | |_ _ | |_ _|_ _| _ _ _ _| | |_ _ | _| |_ _ | | | _|_| | | _|_ | _|_ _ | | |_ _|_| | | |_ _| _|_ _| | _ _| _ | _ | | |_ | | | _| | | | | | _ _| | | _|_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ | | |_ _| |_ | |_| | _|_ _|_ | |_ _ _ _| _ _ _| | | _| |_ | |_ |_ _ | _ _| |_| |_| _|_| | |_ _| _ |_ |_ | | | | _ _ _ _ | |_ _ |_ _ _ |_ _ _ _ _ _|_ _ | | _| |_ _ _| _ |_ _| _ _ | | _| |_ _ | _| |_ _ _ _ _|_ | _| | |_ | | | _| |_ _ |_ _ _ |_ | _ _| _ _| | _ _ _| | _ _ _| _| | | | _ _|_| |_ _ | |_ _| _| |_| | | | | _| _| _| |_|_ | | | | _| _|_ | _ _|_ |_ | | | _ _| | _| | |_ | |_ | _ _ |_| | | _ _|_| _ _ |_ _ | _ _| | | |_ _ |_ _ _ _|_ _|_ |_ _ _| |_ _|_ _| | | |_ _| | _ _| |_ _| _ _|_ |_ _ |_ _| | |_ _ | | |_ _| | |_ _ _ | |_ _|_ _| _ _| +|_| |_ _ | _| |_ _|_ _ | |_ _| _ _ |_ |_ | | _ _| |_ _ _ | _ _ _ _ | |_ _ _| _ _|_ _ _| |_| _ _|_ _ _ _ _| | |_ | _ _ _ _ _ |_ _ |_ _| | | | |_|_ | _| | _ |_ _ | |_ _ _| | | _| _ _ _| | |_ |_ | _ _| | _| |_ _| _ _| _| _|_ _ _| |_ |_ _ _ _| |_ _ |_| | |_ _| _ |_ |_ |_ _ _ | |_ _ | | _| _| | | |_ | | | |_ _| _ _ _ _ _ | | |_ | | _|_ _| | | |_ _ _ _| _ _| |_ _| | _ |_ _ _ |_ | | _|_ _| |_| _ |_ _| | _ | _ | _|_|_ | | | _ _|_ _ |_ | | |_ _ _ | |_ _ | _| | |_ |_| _| |_ |_ | | | |_| _ _| _| _ _|_ | |_ _ _ _ | |_ | _ _|_ | | |_ _ | _ _ _ _| |_ _ _ _ _| |_ _| _ _ _ _ _| _ _ |_ _ | _ _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _ _ _|_ |_| | | |_ _ _ _|_| _ _ | |_| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ |_|_ | _ _|_ | _| | _| | |_ _ |_ _ _ | |_ _ _|_| _ | | | _ _ _ _ | |_ _| _ _ | | _ _| | _ _| _ _ _| _ | |_|_ _ _ _ | |_ |_ | | _| |_ _ _ _ _|_ _ _| _ _ | |_ _ _| | |_ _ _| | | _| |_ _| | | | _|_ | |_ _| _ | |_ _| _ _ _| _ | _|_ _ | |_ _ _| | | |_ | _ _|_ |_ _| |_ _ |_ _ |_ | _ _| | | |_ _ _|_ | _ _| | |_ | | | | | |_ |_ _ _| |_ | |_ _ _|_ |_ _| |_ _ | _| _ | _|_|_ | | | _ _| _| _ | | | |_ _| | _ _| | _|_ _ _| |_ _ _ _ _ |_ | _ _ _ _ _ _|_|_ _ _ _ _| |_ | | _ _|_| |_ _ _ | | | |_| _ _| _| _ _|_ |_ _|_|_ _| _ | | _| |_ _ |_ | _|_ | | | | _ _ _| | |_ | | _ _ | |_ | |_ _ _| | |_ _ _|_ | | |_ | _ _ | |_ _ _ _|_ _|_| | | |_ _ _| | | _ | | |_ _ |_ | _| | _|_| |_ | _ _ _| _| _|_ | | |_ _ | | | |_ |_ | | _| |_ _ _| _| |_ _ | |_| |_ _| | _|_ _ _|_ | | | _| | |_ _ _ _|_ _ _ | |_ | |_ | |_ _ | | | | _ _ _| | | |_| |_ | | _| | |_ | | _ _ _ _ _| _ |_ |_ _| _| _| |_ _ _ _| _ _| | _|_ |_ _ |_ _ _| | | | _ _|_ _|_ _ _|_ _|_ _ | | _ | +| _| |_ _|_ _ _ | |_ _| | | _| | _| _| _| | | | |_ _ | | |_ _ | | _| |_ _ | _| |_ _ | _ _ _| | _ _ _ _ | |_| _| | |_ _ _| |_ _ | | | |_ _| | | _| |_ _ _| | |_ | | | | |_ | _ _ _| | _ _| | | _| |_ | |_ _ | |_ _ _| _| _ | _| _| |_ | _ _ _|_ _ _|_ _ _ _ |_ | _ _| | _| | | _| | |_ _ | _|_|_ | | |_| | | _| |_| |_ _ _| | _| _| | _|_ |_ | | | |_|_ | _| |_ | | _ _|_ _ _| _| _ |_ |_ | | _ _| | | |_ _| |_ _ _ _ _| |_ _| _ _| | | | | | | _ _| _ _| |_ | | |_ | _ _ _|_ |_ _ _|_ |_ | _| |_ _ _ _ _|_ _ | |_|_ |_ _| | _ _| |_ _| _ _| | _ _| | | _ | _ _ |_ | | _ _ _| | | |_| |_ | | | | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | |_ _ _| |_ | | |_ _| _ _| | _| |_ _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | _ |_|_ _ _ _| | |_| | |_ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _| | _ _| | | _ _ _ _| _| | |_|_ | | _| |_ _ | |_ | |_ _| _ _ _ | _| | _| |_ _ | | _| _ _ | | | | |_ |_ | _| |_ _ _|_ _ _ _| _ _|_ _|_ _ _ _ _ |_ _| |_ _ |_ _ _ _ | | | | | _| |_ _ |_ |_ | | _|_ _ |_ _| | |_ | |_ _|_| _ _ |_|_ | _ _| | |_ _|_ _| |_| |_ _| _ |_ |_|_ | _ _ _ _ _|_ _ _|_ | | | |_ _ _ _ _| |_ _| _ _ _ _| _| | | | | |_| |_ | | _ | |_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _|_ | | |_ _ | _|_ _| |_ |_ _| _| |_ _ _ _ _| _ _ _ |_ _| | |_ _ _| | | | |_ _ _ _ _| | |_| | | | _ _| _ _|_ _| |_ | _|_ | _| _|_ _ _ _ _| |_ | |_ _| _ _ _|_| _ _ _ |_| _ _| | _ _| _| | |_ | |_| | |_ | _| |_ |_|_ _ _| | | |_ _ | _ _ _| _ _| |_ _| _ _| _| |_ _ _| |_ _| | | _ _ _| | | |_ | | | _| |_ _| |_| | _| |_ _| | | |_ _| _| |_| |_| _| _ _|_ _ |_ _|_| |_ _ | | |_ _|_ | | _| |_ _ _| | | | |_| _ | | _| _| _ _|_ |_ | |_ _ _|_ _ _ _| | |_|_ _ | | |_ | | | _|_ _|_ _ _ _ _|_ _ _ _ _ _|_ _| |_ | | +| | |_ _ | _ _| | |_ |_ | |_ _ _| _| _| _| |_ _|_ _ |_ _|_ _| | |_ _ _| _| | | _| _ _|_|_ _ | |_ _ | _ _ _| _| | |_ _ | | _|_ _ |_ _|_ | _| _| | |_ _|_ _ | |_ _ _|_ _|_| | | _| | _| | _ | | | | |_ |_ _ _ _| _ _ _| _| | | | _ _ _|_ | | | _ _ _ _ | |_ _| _| | _ _| | | _|_ | _|_ _ _ _| _ _ _ _ _|_ _ _|_ _ _|_ _ _|_ _ _ _ _| _| _| | | |_ _ |_ _| _|_ _ |_ _ |_|_ | |_| | _| | _| _| _ _|_ | |_| |_ | | | |_ _ _ _ _ |_ _ _ | | |_ | _ _|_| |_| |_| | _ | _ _| _| | |_ |_ _| _ _ _ | | | | | |_ _| _ _ _|_ _|_ _ | | |_ _ _ _| _ _| _|_ | _ _|_ | | |_ _| | | _| |_ _ | _| |_ _|_ | | _| |_|_ |_ _ |_ _ _| _|_|_ | | | _ _| _ _ _ | |_|_ _ | _ _|_ _ _| |_ |_ _| | _ |_ _ _| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ |_ | _ _| |_ | | | | |_ _|_ |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | | |_| |_ | | |_| |_ _| _| _|_ _ |_| | |_ _| |_ | |_ _| _|_ | | _ _| _ _|_ _| _|_ _ _|_ | | | | _ _ | | | | |_ |_ | |_ | | _ _ _ _ | | _ _ _ _ | |_ _ | _|_ _ |_ _ |_ _ _| | | | | | | _| _ _| _| |_ _|_ _ _ |_ | _| | | | _ _ _| | | |_| |_ | | |_ | _ |_ |_ | _| _ _|_ | _| | _ _ _ _ | _| | |_ |_ _ _ _ | _ _ _ _ _ _ _| _|_ _| |_| _|_ | | _| |_ _| | | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ _| |_ _| _ _|_ _ _ | |_ _ | |_ _ | _ _ _ | _| | _ _| _ | | | | |_ _ _ | |_|_ _ _ | |_ | | | _ _ _ _|_ |_|_ | | |_ | | | | _ _ _ _| _| |_ _ | _ _ _| _|_ | | | | | | | | | | _|_ _ _| _ _|_ _ _ _|_ _ |_ | | | | _| | | _ |_ _ _ _| _ _| _|_ | | | _ _ _ _| | |_ _ | | _| | _| | |_ _ _| | | _| _ _|_ _|_ | |_ _|_ |_ _ _| | |_ _ _| _| _| _ _ _|_ _ | _| |_| |_ _ | | |_ |_ _ | _ _| |_ | _| | | | _| |_ _ _ _ _| |_ |_ _ _ |_ |_ |_ _|_ _ |_ _ _|_ _| _| | _|_ _ _ | |_ _ _ _ _ |_ |_ | _|_ _| | +| |_ _| _ _| | | | _ _| | | | | _ _ _| _| _| | | _ | |_ _ | | |_ _ _ _ | |_|_ | _ | | _ _| |_ | |_| _ _ _| _|_ _| _ _|_ _| _ | |_ | _|_ _ _ | | | _ | _| | | _ _ | | |_| |_| _| | | _| | | | |_| | |_ _ _| | | _ _ _ _| _ _ _|_| |_ | | |_| |_ _ | | _| |_ _ | |_| |_ | | |_ _ |_|_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| _ |_| _|_ _ _| |_ _ _ _| | | _ |_ _ |_ _ _ _|_ _ _| | |_ _| _| |_ _ _ _ _|_ | | _| |_|_ |_| |_ _ | | _| | _| |_| _ |_ |_ | |_ |_|_ | _ _ _| | | |_ |_ _ | _| |_ _| |_ _| |_ | | _| |_ _| _ _ | |_ _| | | _ _ | | | |_ _ | | | | _| | | _ _| | |_ |_ _| | | | _ _| | |_ |_ _ | _ _| _ _ |_ _ _ _ _| |_ _|_ | | | _ _| | | _ |_| | _ | _ _|_ | | | | | | | | _ _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _ _| | | | | _ _ _| | | |_| |_ | _ _| | |_| | _|_|_ | | | _ _| _ _ _ | | | | |_ _|_ | | _| |_ _ |_ | _| |_ _ |_ _ _ |_ |_ | _|_ _ _ _| _| | | _ _| _| _ | _ _ _ | |_| |_ _| |_ _|_| |_ | | |_ | | |_ _ | | _| | |_ _ | | _| |_ _ | _| | |_ | |_ | _ _| |_| |_ _|_ | | _ _| _ |_ _ | _| | _ _ _| | |_ _ | _|_|_ _|_ | | _| |_ _| _| _ _|_ | _| |_ _ _ _ _| | _| _ | |_ _| _| _| _| _ _ |_ _| _ _ _ _ | _| _ |_ |_ | | |_ |_ _ | _|_ | _| _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ _| _ _| _ | _ _| |_ _ | |_ | |_|_ _ _| |_ |_ _|_ _| _|_| | | | _ _ |_ _|_ _ | | |_ | | | |_ _ _| |_ | _| |_ |_| | | _| _ _ _| _| _|_ _ | |_ _ | _| | _ | | |_| |_| |_ _ _|_ _ _|_ _ _ | | _ _ _ _ | |_|_ |_| | _ _| _|_ _|_ _ | _ | | | | _| |_|_ _ _ | _ _| | _| | | | | |_ _ _ _ _ _ _|_ | |_ _| _ _ _ |_ _|_ | _ _ _ _ _ _| | | _ _ _| _| _| |_| | |_ | | _| _| _ _| |_|_ | | _ _|_| |_ _ | | _| _| |_ _ | _ |_| _| | _| _| _ _ | |_ _ | _ _ _| _|_ | | |_ _|_ _ | | |_ |_ | |_|_ _ _ _ | +| | _ _| _ |_ _|_ _| |_ _| | |_ _ | |_ _ _| _| |_ | |_ _| |_| | | | | | | | _ _ _|_ |_ _|_ _| |_ _ |_ |_ _ | |_ | _ _| _| _| | | _|_ _| | | | |_ | |_ | |_| | | _| | |_ |_ | |_ _ _| | _|_ |_ | |_ _ _ _ _|_ _|_ _| _ _ |_ _ | _ _| | _| |_ _ | _| | |_ _ _| | | |_ | | _| |_ _ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| _ _ |_ _ | _ _| | | | | _ _| | | _ _ | | |_ _| _| |_ _ _| _ _ | |_ |_ _ | _ _| _ |_ _|_ _| _|_| _|_| _| _ _|_ | |_ |_ | | | _ _ _| | | | | | | _| _|_ | _| _| _| _| | | | |_ _ | _|_|_ | |_ |_ _|_ _ |_ _| |_|_ | _| | | | | _|_ _ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _|_ | _ | _ _ _| | | | |_| |_ | | _| | |_ _|_ _ _ _|_ _| |_ _| |_ _| | | _| | | |_ _|_ | _ | _| | |_ _ _ | _ _| _|_|_ _ _ |_ |_ _ _ _| | _ _ _|_|_ _ _| |_ _ _ _ _| |_ _|_ _ _ | _ _| | | | _ | | |_ |_ _ | _|_ _ _ _ | |_ _ |_ | _| |_ _ |_ _ _| _|_ | | | | | | | | |_ | _ _| | _|_ _| _| _ |_ |_ _|_ | | | | _| | |_ _ _| | _| | |_ _ _|_ | | | _| |_ _ _ _ _| | | |_ _ _ | _ _|_ _ _ _ _|_ | _| |_ | _|_| | _|_ _| | | _ _ | | |_ |_ _ | _|_ _ _ _| | | _ | |_| | | _| | |_ _ | |_ _| _| _| _|_ | |_ _ | | _ _| _| _ _|_ | | |_|_ | | _ _|_| |_|_ _|_ _ | _|_|_ | | | _ _|_ _ _ _ _| | | | _ | | |_ _| |_ _ | _ _| | | _| |_ _ _ | _ _| _ _ _ _ _| _| _ _|_| |_ | _ | _ _|_ _| | | | | |_ _| _| _ _|_ _ _| |_ | | _| |_| _| _ _ _| _|_ _| |_ _ _| | |_| | | | |_ | | _| | _ _ _ _ | |_ _| _ | | _| |_ _ | | _|_| |_ _ _ | |_ _|_ _| _| |_| | |_ _ _ | | _|_ |_ | _|_ _ _|_ _ | _ _ _ | |_ _ _ _ _ _ _|_ | |_ _ _| | _ _ _| |_ _ | | | |_ _ _|_ _ _| | |_ _|_ _|_ _ | |_ | _ _|_ | | |_ _ | | | | |_ |_ |_ | |_ _|_ _| _|_ |_| | | | | _ _| | _ _| |_ _ _ |_ _ |_ _| | |_ |_ _| | | |_ _ _| | _ _| | +| | | |_ _| | | _ _|_ _ _ | _ _| | _| | _| _|_ |_ |_ _ _| |_| |_ _| |_|_ _| _ _ |_ _ | _ _| | |_ |_ _| | | _| | | | | _ _| | | | | | | _| |_|_ _ _ _|_ _ |_ _ _ _| _ _|_ _ _ _ _|_ _ |_|_ _ |_ _|_ _ _ _ _ _ | _ _ _|_ | | |_| |_ | | |_ | |_ | _| |_ | | | | | |_ |_ _ | _ _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _ _| | | |_| |_ | | |_ _| | _ _| _| _|_ _|_ _ |_ _ |_ | | _|_ | |_|_ | | _ _|_| |_ _| _ | _ _| |_ | _| |_ _ _ _ _| _|_ | | | |_ _| | _ | _|_ _|_| |_| _ _| | |_| _|_ _| _| _| | | |_| |_ _ _|_ _ _ _ _| | | _ | |_ _ | _ |_| | | | |_| | _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _|_ |_ _| _| | | _| |_ _|_ _ _ _ _|_ _| _ _ _| |_ |_ _ _ _| | _ _ _| |_ _ _| |_ _|_ _ _ _ _| _| | |_|_ |_ _|_ _ |_ _|_ | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _ _ _ _| _ _ _| _ _ _| |_ _| | | |_|_ | | _ _|_| |_ _ |_ | |_ |_| | _|_ _| _| _ _ _| |_ _| _| |_| _| | | | _|_ _ _| |_ _ | | _| _ _|_ | _ _| |_ _ | _| _ _ |_ | |_ _ _ _ _| |_| | |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| | _ _|_ _ _| | _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ |_ _|_ _|_ _ _| | _|_ _| | _ _ _ _|_ _ _ _ | | | | _|_ _| | |_ | _| |_ _ _ _ _| |_ | _ _|_ | | |_ _ |_ | _ _|_|_ _ _ _ _| |_ _|_ _ | | | | |_|_ |_|_ _|_ _ |_ _ | | | _ _| _| | | _ |_|_ |_ _ | | |_ _| _ |_ |_| | _ _| | _|_ _| |_ | _ _| | | _ | _|_ | | |_ | | _| |_ _ | |_ _ |_ |_ _ | _|_| | _| _|_ _| |_ _ |_ _ | | _| |_ _ | _| | |_ _ _| | | | _ _ _|_ _ _ |_ _|_ _ | |_ _|_ |_ _ _ _ | | |_ _| | | _|_ _ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _|_ | _ _| | _ _ |_ _ _| | |_ | | _ _ _|_| | _ _| | _| _|_ _| | _ _| |_ _| _ _| |_| | | _| _| | |_ | _ _ _| _ | _|_ _| | |_ _ _ _| | _ _| _ _ _| | | _ _| |_ | |_ _| _|_|_ | _| _| | | | _ _| +| |_ _|_ _ |_ _| _ _ _ _| |_| | _|_|_ _ _| | | |_ _ _ _ _ _ _|_ _ _ _ _| | _ _ _|_ | | |_| |_ | | |_ _ _ _| | _|_ _ _|_ | |_| | | | _| | |_ _|_ _| | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ |_ _ _ _| | | _|_ _ | _|_ _|_ | | _| |_|_ | |_ _ _| | | | |_ _ _| | | | |_|_ | | _ _|_| |_ _ | |_ _ _ | _|_|_ | | | _ _|_ _ _ _ | | | | |_ _ | | | |_ _|_ | | _| |_ _ _ |_ | _ _ _| _ _ _ | | _| _|_| |_ _ _ |_ | _ _|_ | | |_ _ |_ _| |_ _ _ _|_ _ | |_ | | | _ _ _ _| |_|_ |_ _ _|_ _| _ _ |_ _ | _ _| | _ _| _ | | _| _| |_ |_ _ _ _| | _ |_| | | | | _ _| |_ |_ _ _ _|_| |_ | |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _ _| _ _| _| |_ _ | _ _ _| _ _ |_ _ | _ _| | |_ |_ _ _ _ | |_ _ _ | _ _ | | _ _ | _ _ _| _|_ _ |_ _ _ |_ _ | _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _ _| | _| _| _ |_ |_ | |_ | _ _|_ | | |_ _ | | _| |_ | | _| | _ |_ |_ _ | |_ _ |_ _|_ |_ _ |_ _|_ | _ |_ |_| _| _| |_ _ _ _ _| _ |_ | | | | _|_ | _| | | | | | | | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | |_ _ _ | | _| _| | |_ | _ _ |_ |_ _| | _ _| |_ _| _ _| _|_ | | _ _ | _ _ _ _| |_ |_ _|_| |_ _ | | _ _ _|_ _ | _|_|_ | _|_ _ _| |_ _ _ _ _| |_ | |_| _ _| _| _ _|_ | | | _ _| | |_ _ _ _ _ | |_ | _|_ _ |_ _ _| _| _ _ _|_ _ _ _ _| | _ |_ _ |_ | |_ _ _ |_ |_ _ _| | _ _ _| | _| | |_ _ _| | | | _| _| _ _|_ _ _| |_ _ _| | | _ |_ _| | _ _ _| _ _ |_ _| | _ _| | _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| |_ | |_ | | | | _|_ _ _| |_ _|_| _ _ |_|_ | _ _| | | | _ _ |_ _ _ _| _ _| _ _| _|_ _| _| _| | _|_ _ |_ | | | |_ _ _|_ _ | | |_ |_ _ _ _| _| |_ _ _ _|_ |_ _| _ _ _ | _|_ _|_ _ _| |_| | | +|_ | | |_ _ | | _ _ _ _|_ |_| |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_ _ _ | | |_ _|_ | | _| |_ _| _ _ _|_ _ _ | |_|_ |_ _ |_ |_|_ | | _|_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | |_| _ _| | |_| | _ _| | |_ _ _| | |_ |_ _ | _ _ _ | |_ _|_ |_ _ _| |_| | _ _|_ | | |_ _ | |_ |_ _ _|_ _ _ _ _| |_ _| _ | _ |_| | | |_ _| | | |_ _| | |_ |_ _ | _ _| |_| _ _ _| _ _| |_ _|_| _| _ | _|_ |_ _| | _ _| |_ _| _ _| _ _| | _ _ _ _|_ | _| |_ | | |_ _ _ | _| |_| _ _ _| | | |_| |_ | |_ _ _ _| | |_ _ _|_ _ _ |_ _ _|_ _|_ _ _|_ _ _ _|_ | | _ _| _| _| _ |_ | |_ |_ _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | | | _ _| | _ _| _|_ | _ _ _| | | |_| |_ | | |_ _ | |_|_ | _|_ _| _ _|_ _|_ | |_ _ _ _|_ _ |_ _ _ _| | _ _ _| | |_ _| _ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _| | |_ | | | _| _| _ _|_ | | | |_ _| | _ _| |_ _| _ _| | | | | | | _ _|_ |_ | _| |_| | _ _ _ _ _ _| | _ _| | _| _ _|_ | | |_ _ | _| _ _ _| _ _| |_ _| |_ _ | |_ _ _| |_| |_ _| |_| | |_ |_| _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| _ _ |_| |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ | | _ | |_ | |_ | | | _| | _ _|_ _ _ _| _ _| | _| _ _| |_ _|_ |_ | | _ _ _ _ _ _| _ |_ |_ | _ _|_ _ _ _| | | | |_ _ | |_ | _ _ _ _|_ |_|_ |_ | _| |_ _ _ _ _| |_| | | _|_ | | _ _ _|_ _ _|_ _ |_ _ _| _|_ _| _ _ _ |_| | _|_ _|_ _ |_ _ |_ _ _ _ _|_ _ _ _ _|_ _ |_ | _| | _ _| | | | | _ _ _ _| _ _ |_ _ | _ _| | |_ _| _| | _| | _ _ _|_ | | |_| |_ | |_ _ _|_ _|_ _ | _|_ _| | | |_ _ |_ _| | |_ _ _| _| |_ | | _| |_ _ |_ _| |_ _ _ | | _ _ _| | | |_| |_ | | |_ _ _|_ | |_ _| | |_ _ _ | _ _ _| _| _|_ _| | _|_ _| | | _ _ _|_| _| | | _ _ _ |_ _ _ _ | |_ _ _ _| _ | | | _ _ _ _ | | _| |_| +| _| _|_ | | |_ _ _| |_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ | | |_ |_ _ | _ _ | _ |_ _|_ _ |_ _ |_ _|_ _ |_ |_ _| |_ | |_ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _|_ | | | | | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| | _| _ |_ |_| _| | _ _| |_ _| _ _| _|_ | _ _| | _ | | | | | _ _ _| |_| _| _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ _ | _| _ _| _ _ _| | | | |_| _ _| _ |_ _ _ _| _ _| _| |_ _|_ | _ _ | _|_ _|_ |_|_ |_ _ _ _ |_ _ _|_ _ _ _ _ _ _| |_ _|_ | | _| |_ _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _|_ | |_ _| _| _ _|_ | |_ | _| | | |_ _|_ |_| |_| _ _ | | |_|_ | | |_| _ _| |_ _ _| | |_ _ | _|_|_ _|_ | | _| |_|_ |_ _| | _ _| _ _ |_ | _ | |_ _ _ _ | |_ _ |_ _ _| | _ _|_ | _ _ _|_ _| | | _|_|_ | | | _ _|_ _ |_ | | | _| | _| | _| _| |_ _ _ _ _| | |_ _|_ _ _ _| _ _| _ _ _| _| |_|_ _| _ |_ |_ _| | _| _|_ _| _ _ |_ _ | _ _| | | |_ _ _ _ _| | _ | |_ _ _ _ _ | | _ _ _ _ _| _ _ _ _ _ _|_ _ _ _|_ | |_ |_ | | | | |_ _| _|_|_ | | | _ _| _ | |_| | | |_ _| |_ _ _| _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _| _|_ _| _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | _| |_ _ _| |_ |_ _| _| _ _| | |_| _| _ |_ _ | | |_ _ |_ _ _ _ _| |_ |_ _|_ _ _ | _| _| _ _|_ | |_| _ _ _ | _ _| _|_ _|_| |_ _|_ | |_ _ _| |_ | _| _| |_ _ _ | _ |_ |_ _ |_ _| | _ _ _ _ | |_ _ |_| _| _ _ _| _|_ _ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_|_ | | | | |_ _ | | | | |_ | _ _ _| | | |_| |_ | | |_ _ _ _|_ _ |_ _ | _|_ _|_ | | _| |_ _ _ _ _ | |_ _ | _|_|_ | | | _ _|_ _ _ _ _ | | _| |_ |_ _ | _ _| _ _ |_ _| |_ _ | | | |_ _|_ | | _| |_ _ | _ _|_ |_|_ |_ _|_ _ |_ _|_ _ | | |_ _ | | | _|_ _ _ _ _ _|_|_ |_| | | _| | _ |_ _| | _|_ _|_ _ | | | |_ _| _ | | _| | | | | +|_ | | | _|_| |_| _| _ _|_ _ _| | | |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _| |_ _ _|_| |_|_ | | _ _|_| |_ _ |_ | | _ _ _| _ _ |_ _ | _ _| | _| |_ _ _ _| _|_|_ | | | _ _| _ | _| |_ _ _ | | | | | | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| _| _ _|_ |_ _ |_ _ _ _| _ _| | _| | | |_ _ _ _| | _|_ _ _| _| |_| _ |_ |_ |_ _ _ | | |_ | _ _|_ | | |_ _ | _| | | | |_ _ | _ _| |_ | _| | | | |_ _ _ | | |_ _ |_ | |_|_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ | | |_ |_ _ | _|_ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _| _| |_ _ _ _ _| | _|_ _ _| |_ _|_ _ _ _ _| | _| | |_ _|_ _ |_ _| | | _| | | _| _|_ _| _| | | _ _ | | |_ |_ _ | |_ _ _| | _ _|_ |_ _ _| |_ _ _|_ |_ | _| |_ _ |_ |_ _ _ |_ | _|_ _ _| _ |_ _| |_ _ _ _ _| |_ _| _ _ _| |_ _ | | |_ | |_ | |_ | |_ | _ _ |_ | |_| _ _ _ | | |_ _ |_ _| | _ _ _| |_ | |_ | |_ _ | _ _ _|_ | | |_| |_ | | |_ _ _ _ _ _|_| |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| _ _| _|_ | | | |_|_ _| | |_ _ _ _ _| |_ _| _| | | _|_ | | | | | |_ _ | | _| | | |_ _|_ | | _ | | | |_ _ |_| _ |_ | _| _|_|_ | | | _ _| | _ _ _| | |_| | |_ _ _ | |_ _ _| _| _|_ _ |_ | |_ _| |_ _ | |_ _|_ _ |_ _ _ | _ _|_ _ |_ _ _ | | | _| |_ _ _ _ _|_ | | |_ _|_ | _| _ _ _ _|_ |_ | | | _| _ _|_ _ _| | | |_ | |_ _ | |_| _| _|_ |_ _ | |_ _ | | _| |_ _ |_ | |_ _ | _|_ _ | _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _| |_| | | _ _|_| |_| |_|_ _ | | | |_ _|_ | | _| |_ _ |_ _| _ | | _| | |_| _| | |_ |_ _ | _ _| _|_ _ _ |_ _ _ _ _| |_ _|_ _ _ | _ | | |_ | | _ _|_| |_ _ | _ _| | _| | | |_ _ | | |_ |_ _ | _|_ _| | _ |_ _ _ |_ _ _| | | |_ _| | |_|_ _ _ | | | |_|_ _ _| |_ _| |_ _| | _ _| | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ | | _| | +| | |_ _| | _ _| _ _| | | _ _ _ _|_ _ | | | _|_|_ | | | _ _|_ _ |_ | | |_ _ _ _ |_ | _ _|_ | | |_ _ |_| _|_| |_ _| _ _ _| | | |_| |_ | |_ | |_ _ _| |_ _ _ _ _| |_ _|_ _ | | _|_ | | | _| | | |_| | |_| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _| |_ _ _ _ _|_ | _ _ | | | | | | _| |_ _ _ _ _ | |_| | | | _| _| _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _| |_| |_ _| |_ | _|_ _|_ _ _|_ _| |_ _ _ _ |_ _|_ _ |_ _| _|_ _ _ _| |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ | |_|_ | | _ _|_| |_ _| | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_| _ | |_ _ | _ _| | _ _| | _ _ | _| |_|_ _| | |_ _ _|_ _ |_| | | | |_ _ | | _ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| |_ _ _ _ _ _| _ _ |_ _ |_ _ _| | | _| _ _| | | | |_ | _ _ _| |_ | _| _ _ _ _ _ _ _ |_ _ _ _ _| |_ | |_ | | |_ |_ | |_| |_ _ | | | |_ _| _ _ |_ _|_ _ |_ _ | |_|_ _ _ _| _| |_ _ | | |_ _ | | |_ _|_ | | _| |_ _ | _ _| _ _| _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ _ _| | |_ | |_ _|_ _ | _ _ | | _ _| | _ _ _| |_| | |_ _| _ _| | |_ _ _| |_ _|_ _ _ _ _| _| |_ _ _|_|_ _|_ _ |_ _ | | | _|_ |_ _ _ _ _| |_ _| _ | | | | | _| _ _|_ | _ _ _| |_ _ _ | |_ | | _| | _| |_ _ |_ _ | _| | _ _ _ _| | _|_|_ | |_ _ _ _ _| _| _|_ _ _ | |_ |_ _ _| |_ | | |_ _| | _ _ _ _ _| | _| _| _ _| |_ _ _| _| |_ _ |_ _| _| | |_ _ _| | | _| | | | |_| _ _| | _ | _| _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _| _| _| _ |_ |_| _ _| | _|_ _ | | |_ |_ _ | _ _ | _|_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | _|_ | _ _ _ _ _| | _|_ _| |_| | _ _|_ | | |_ _ | |_ | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ _| |_ _ _ _ _ _| | | _|_ _ _|_ _|_ _ _ _ _ _ |_ _|_ _|_ _ _ _ | | _ _|_| |_ |_ | |_ | | |_ _| _|_|_ | | | _ _| _ _ _| |_| _| +| |_ _ _ |_ _ |_ | _| _| _ _| |_ _| | | | |_|_ _ _ _ _| |_ _| _ _ _| |_ | | |_ _ | |_|_ |_ _| | _ _| |_ _| _ _| _| _ _| |_ _ | _| |_ _|_ | | _| |_ _| _ _ _ _|_ _ _ |_ _ _ _ | | | _ _ _| |_| _| _|_|_ | |_ |_ _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| _| | _| | | _ _ _ | _| | | |_ _| |_ | |_ _ _ _ | |_|_ | |_ _| |_ | _| |_ _ _ _ _| _| _ _ _ | _| | |_ _ _ _| _ _| | |_ | | _| | | _|_ _|_ _ _| _ _ _ | _ _ _ _ _ _ _ _| _ |_ | _ _ _ _|_ |_ | |_ _| | | |_ _ |_ _| | |_ _ _| _| | _| |_ | _ _|_ | | |_ _ | |_ _| | | _|_|_ | | | _ _| _ | | | | | _| |_ | _| | | _| _|_ |_ |_ _|_ | |_ _ _|_ _ _ | _|_ _ |_ _ _| | _| |_| |_ _ |_| | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _ | | _ _ _| | | |_ _ _| |_| | | _ | _ _| |_ |_ _ _ _ _| _| | _ _| _ _ | _ _|_ | _| _ |_ |_| _ _ _|_ |_| _| | _ _ _| |_ _|_ |_ |_ _ | |_ _ _ |_ _ |_ | _ _ _| _ _| | |_ _ |_ |_ _| | |_ _| | | |_ |_ _ | _|_ _| | | | _ _ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ |_ _ |_ |_ _ _|_ |_ _ _ |_ _ _ _| | |_ _ _ _| |_| _ |_ |_ | _ _| | _|_ _ _ | |_ _ _ _ |_ _ _|_ _ _ _ _ _ _ |_ _ |_ _| |_ | | | _ _ _ _ _ | | |_ _| |_ _|_| |_ |_|_ _ | _|_ _ | _ _| | |_| |_| _| | | |_ _ _|_ _ _ _ _| | | _|_ _ _| _ _| | | _ | |_ |_ |_ _ _| _| | | | | | |_ _| _| _ _|_ _ _| |_ | | _|_| | _ _|_| _| _| _ | _ _ _| |_ _ | | | _| _ _ _| | | | | _| | |_ _ _ _| | | _|_ |_| | _|_ _| | _|_|_ | | | _ _| _ _ | | | |_ _| _| _| _ _|_ | |_ | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _| |_ _| | |_ _ _| _| _ |_ |_ _ | _ _| |_ _| _ _|_ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ _ _| | _ _|_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ _ _ _|_ |_ _ | |_ _| _| | |_ _ _ _ _| |_ _| | _| _ |_ |_ | +| _| _|_ | _| |_ |_ _ | _ _| | | | |_|_ _ _ _ _ | _ _| _ _| _ _ _| |_ |_ _|_ _ | | |_ _ _ _| _ _| | _ _ _| _|_ _ _| | |_ _ _| | |_ |_ _ | _ _ _ | | _ _|_ _ _| | _ _|_| |_| _ |_ |_ |_ _ _|_ _|_ | _| | | |_ _|_ | | |_ _ _ | | |_ _ |_ _ _ _|_ _|_| |_ |_| _| |_ _ _ _|_ |_|_ |_ _ |_ _|_ _ |_ _ _ _|_ | | |_ _ _| _ _| | | |_ _|_ | _| | | | | |_ _| | _| | |_ _ | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _| | _|_ _ _| |_ |_| |_ | | _|_|_ | | | _ _|_ _ _ _ | | | | |_ _| | _ _| |_ _| _ _| | _ _| | |_ _ _ _ _| |_ _| | |_ _| | | | _| |_| _|_ |_ _| | |_ | _| _ _ _ _ |_ _ _ _ | |_|_ |_ _ _ | _ _| _ _ _ _| |_ _|_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | |_|_ _ | _|_|_ _|_ | _ _|_ _ _ _|_ _| _| _ _|_ _| |_ | | |_ _ _ | _| | _|_| _ | |_| _| _ _|_ |_| _ _ _| _| | | | _ | _ | | |_ _| |_ _ _ _ _ _| | _| | _ _| | | | |_ |_| _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _| _| |_|_ | _ _| | | _|_|_ | | | _ _|_ _ _ _ | | | |_ _ |_ |_ | _ _ _ _ _ _ _ _| | _| _ _ _| _| _ _|_ | | | |_ _ _ _ | |_ _ _ _| |_ | _ _ | |_ _ | _ _ _| | _ | _| | | |_ |_ | _ _|_ | _| _ |_ |_ | _ _|_ | _| | | _ _| |_ _ _| _|_ _| | |_ _ _| | _| _ _| |_ _ _ _ _ |_ | | | | |_ _| _| | _ _ _|_ _ _| |_ _| | |_ | _ _| | _ | _ | |_|_ _ | |_ _| | _ _ _| | | |_ | |_ _ | _| | | | |_ _| | | | _ _ _ _|_ _ _|_ |_ _ _| | | _|_ _ |_ _ _| _ _ _| |_ _ _ _ _| |_ _| |_ _ | | | | | | |_ _| _| |_ _ _ _ _|_ _| |_ _ _ | | |_ | _ _|_ | | |_ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ _ | _|_ _ _ | _|_ _ _ |_| _| _ _|_ | | |_ _ _ _| _ _| _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ | _ | |_ _ _ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _| |_ | | |_ _ | | |_ _|_ _ _ |_ _ | _ _| _| _ _|_ | | +|_|_ _ | _ _|_ _ _ _|_ _ |_| |_ | | | | |_ _ | |_ _| | _|_ | | _ _| _ |_ |_ |_ |_ _| | | _ _ | | | |_ _ _ |_ _|_ _ _ | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _| | | _ _ |_ _ | _| _| _ _|_ | | |_ _ _ _| _ |_ _ _| |_ _|_ _ _ _ _| |_ | | | _|_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _| |_ _ _ | |_ _ |_ |_ _ _ _ _ _ _ | _ _| |_ | _|_| _| | |_ _|_ _ _ _ _| _| | |_ _| |_ _|_ _ |_ _| _|_ | _|_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _| _| _ _|_ _ _| _| | | |_ _ _ _ _| |_ _| _ | |_ _| | | |_ _|_ _ _ |_ _ _ _| _ _| _| |_ | |_| _ _ | _ _ _| |_| | _ _ _| |_| _|_| _|_ _| | |_ |_ _| | | |_ _ _ |_ | _| |_ _ | |_ _ |_ |_ | | | _ _ _ _|_ |_ | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _|_|_ | |_ _ _ | |_ _ | | | | _ _ _ _ | |_ _| | _ _ _ _|_ |_| |_ _| |_ _| | | _ _ _ _| | | | _| |_ _ _ _ _| _| | _ _ _| _| |_ |_ |_| _| | |_ | | _| _| _| _ |_| _| | | _ _| | |_ _| _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_ _| | | _ _| | |_ _ _ _ _| |_ _|_ _ _ |_ | | | | _ | |_ _ _ _|_| _ _ |_ _ | _ _| | | _| | | _| |_ _ _ _ _| |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _| | _| |_ _ | |_ | | _ _| |_ _|_ | |_ _ _|_ |_ _ _ _ |_| |_| _| _ _|_ | | _ | _| | _|_ _ _ _| | _ _ _ _ _ _ |_ _ _|_ _ _|_ _ |_ |_ _ _ _ _| |_ _ | | _ _ _| _| _|_|_ _ | _ |_ | |_ | | |_ | _|_| |_ _ _|_ _|_ | _ _| | _ _|_ _ | _|_ | | | | _| | | | |_|_ |_ | _| |_ _ _ _ _| _ _ |_ _ | _ _| | |_ |_ |_ _ |_| _ _| |_ _ _ _ _ | | |_ _ _ |_ _|_| |_| |_ _ | |_ _ | | | _ _ _|_ _|_ _ |_ _| | _ _| |_ _| _ |_| |_ _| _ _ _ | _|_ |_ _ _ _| _ _| _ _| _| _ |_ | | | | | | _| |_ _ _ _ _| _| _ _| | |_ _| |_| _| |_ _| _ _ _ | _| | |_ _ _ _| _ _| | _|_ |_| | | | _ _| _ |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| _ _|_ _ _| _ _| |_ _ | |_ _ |_ _ | | | | _| |_ _ _ _ _| | +| _ |_ | _ _ _ _ | |_ _ | | | |_ _| _ _ _| _ _ _|_ _ |_| | | _| _| _ _|_ | | | _ _| _|_|_ | |_ |_ _|_ _ |_ _ | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ | |_ _ _| | | _| |_ _ _ _ _| |_| _ _| _ _| _|_ _ | | _ _ | _ _| _ _| |_ _ _ |_ _|_ _ | | |_ _ _| |_ | | _ _ _|_ _|_ _ |_ |_|_ _ _ |_ _| | | | | _| _| _ |_ _ _|_ _ _ | _| _ | | _|_ _ | |_ _ |_ _ | _ |_|_ _ | | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ | _ _| | _ _ _ _| _ _ |_ _ _ _| _ _ |_ _| _ _ _| |_ _ _ _ | | _ | | |_|_ | | |_ _ _ _| _| _ _| | _| |_| _ |_ |_ _ _| |_ | | | | | _|_ _|_ _ |_ _ _ |_ _ _| | | | _|_ |_ | | | |_ _ _| |_ |_ | _| | | |_ _|_ |_| | |_ _ | | |_|_ _| | | _|_ _ _ _ _| _| | | |_ _ | | _| |_ _ | |_ _ _| |_ | | | |_ _ | | | | | | | | | |_ _ _ | _ _| _|_ _ | _|_ | | | |_ | | |_ | | | | _|_ _ _| |_ |_| _| _| | |_ | | | _ _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| _| | |_ | | | | _ _ _ _ _ _ _| | _ _|_| |_ _| _|_ _ | _ _ _| | | |_| |_ | | | |_ _|_ _| |_ _ _ _ _| |_ _ _|_ _ | | |_ _ _| |_ | _|_ _ _|_ | | | | | |_ | _ _ _ _ _| _| _ _| |_ _ _ | | _| |_ _ _ _ _| |_ _| |_ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| | _ _ _ _|_ |_ | | | _ _ _| _ _ _ _ | |_| |_ _ _ _| _ _ _|_ _ _|_ _ |_ _ _ _ _ | | |_ |_| _ _| | | | | | |_ _| _|_ _|_ _ |_ _ _|_ |_ _ | _ _ _| | | |_| |_ | | | _| _ _ _|_ | | _ _|_ _ _|_ | _ _| | | | | _| _ |_ |_ | |_ | | | | | | | | |_| _ | _| | |_ _ _ _| _ _| | | _| | | |_ _|_ | _|_ |_ _ | | |_ _ | |_ _ _|_ | | |_| |_ _| | | |_ _ | _ _ _| | | |_ |_ _|_ _ |_ _ | _| | | |_ _|_ | _|_ _ _ _| | |_ _ _ | | _ _|_ _| |_ |_ |_| _| | | | _|_|_ | | | _ _|_ _ _ | | | _| | | _ _ _ _| _|_| |_ _|_ _ |_ _ |_ _| | | |_ _ _ | _ | +| | |_ _| _ | | _| |_ _ |_ _| | | _ |_| |_ _| | | _ _| _|_ _| _| |_ _ _ _ _| | |_ _ |_ _ _ _ _| | | _ |_ _ | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _| _ | | _| | |_ _ _ _ |_ | | | | |_ _ _ _ |_ _|_ | |_ _ _ _ _ _| | |_ _ _| _ | |_ _| _| _ _|_ _ _| | | |_ _ _ _ _ | _ _| |_ _| | _ _| | _|_ _| _| | | | | _ _ _ _ | |_ _ _ _|_ _| _ | | | | | _ _ _| |_ |_ _ _| |_ _|_ _ |_ _ _| _|_|_ | | | _ _|_ _ _ | | | _|_ | _|_ _ |_ |_ _| |_ | _| | _ _| _ _| _ _| _ |_ |_ _ |_ _| | | |_ |_ _|_ _ |_ _ _| | | _ _ | _| _ |_ _ _|_| _| _ _|_ |_ _ _ _|_ _ _| |_| | | |_|_ | _ |_ _ | _| _ _ _| | | _| _ _| | | |_ _| _| _ _|_ _ _| _|_ _ _| |_ _|_ _ _ _ _| _|_ |_ | |_ _|_ _ |_|_ | |_ _|_| _ _ | |_| _| | | _| | |_ _ _| | | | _| _ _|_ _ _| | |_ _| _ _| |_ _| |_ _| |_ | |_ | |_ _ | | _| | _| | | |_ _|_ | |_ _| |_ _| |_ _| |_ |_ _ _ |_ | | |_ |_| | _| | _| | | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ |_ _| _| | | | _| |_ _| | | | |_ _ _| |_ _| _ |_ |_ _ _ _| |_ _ | |_|_ _|_ | | _| |_|_ | |_ | |_ _| _ |_ |_ _ _ | |_ _| _| _ _|_ _ _| | _ _ _ | | | | |_ | | | |_ _ _ | _| | | |_ _ | _| | |_ _ _ _ _| | _ _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| |_ _ _| |_ | | |_|_ _ |_ _| | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ _ _| | |_| | _| _|_ | _|_ _|_ _ |_ | _ _ _ _ _ _|_ _ _ _ _ _| _|_ _ | _| |_ _|_ | | _| |_ _ |_ _ _ |_ _| | _ _ _ _|_ _ | |_ _| |_ _| _| _ _|_ | | |_ _|_| |_ _|_ _| |_ _|_ _ _|_ |_|_ | |_ _| _ | | |_ _|_ _ _| |_ _|_ _ _ _ _| _ |_ _ _ |_ _|_ _ |_ _ _ _ _ _ _| |_ |_ | |_ |_ | | |_ _ | _|_ _ |_ _ _ _|_ _ | |_ _ _| |_ _|_ _ _ _ _|_ _ | |_ |_ _|_ _ |_ _| | | _ _ _ _|_ |_ |_ _ _| | _ _|_ _ _ _ _| |_ _| _ _ _ _|_ | | | _| |_ _| _| | | |_ _ | _|_ _ |_ | _| |_ | | _ _ _|_ | +| | |_ _ |_ _| | |_ _ _| _| | _ _| | | |_ _ _| | _ _| | |_ _ | _ _ | |_ | _ _ _ _|_ _ | _ |_ | |_| |_| | _ _ _| | |_ |_| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| |_ |_ _ |_| _|_|_ _ |_ |_ | | |_| _|_ _| |_ _|_ _ |_ _ | | _|_ _ _ _ | |_ _| |_| _ _ _| |_ | _ _| | _ _| _ _ _ _| _ _ |_|_ | _ _| | _| _| |_ | | | _ _ _| _|_ | | | _ _ _ |_ _ _ _ | |_ _| |_ | | | | _| _ _| |_ _ |_ |_ |_ _ |_ _ _ |_ _ _ _ _| |_ _|_ _ |_ |_ | | _| |_ _ |_ _ | | _ _| | _| | | | _ _| | _ _| _| _ _|_ | | | _|_|_ | | | |_ _ | _| |_ _ | |_ |_ |_| _ | _| |_ _ _ _ _| | _ _| _ _ _ _| |_ _ _ _| |_| |_ | |_| _ _ _| | | | _|_ _ _|_ | _ _| | | _ |_ _ |_ | | _ _ | _| |_ _ _ _|_ _ _ | |_ _ | |_ | _ _| | _| |_ _ |_ _|_ | _| _ _ _ | | | _ _| | | _ | _ _| _ _| _| | _| _|_ | _| _|_ _ |_ _| | | | | _|_ _|_ _ _| | _ _|_ | _ _ _ _|_ _ _ _ _ _| | |_ _| _|_ | |_ | | | _|_|_ _| _| | | |_ _|_ | _ _ _ _ | | |_ _| _ |_ _ | | |_ |_ _ _ _| |_ _|_ _ |_ _ _ _| _| _ _|_ | | _ | _| | | | _| | |_ |_ _ | |_ _| | _|_ | _| _ _|_ | _ _| |_ | _ _| | _ _ _| _| _| | | | | |_ | | |_ _|_ | _ _| |_ _| |_ _| _ _| |_ |_ | | | |_| _ _| |_ _ |_ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _| _| _ _|_ _ _| | | _ | | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _| |_ | | _ _ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _| | | | _ _| | |_ |_ _ | _ _ | | | | _|_| |_ _| _ _ | | |_ _ _| _| |_ _ _ _ _|_|_ |_ _ | | | _|_ _ _ _ | |_ _ _| _ _ _ _| | |_ _|_ _ _ _ _| | _ _ | | | | |_ _ |_ | _ |_ _ | _ | _| _| _| | _| _|_| | | _| | _ | _|_ |_ _ _ | |_| _| | _ _ | | _ _|_ _| | _ _ _ _ |_ _ | | |_ _ _| |_ | |_ _ _ _| _ _ _ _ | | _ _|_ | _ _ _| | |_| |_ _ _ | |_ | |_| |_ _| _ _| | _ _ _| | | | _| _| |_ _ _| | | +|_|_ | | | _ _|_ _ |_ | |_| | | _ _| _ _| | | | _| | | _ |_ | | |_ _ | | | _| | | | _| | | _| _| | | _ _|_ _ | _| | | |_ _|_ | |_ _ _ _ | | |_|_ _| _|_ | | _ | _| _| | |_ _|_ | | _ _ _ _ _ _ |_ _ |_ _| |_ |_ | _| |_ _ | |_ | _| | | _|_ | _|_ |_| _| | _ _ _| _| | |_| |_ | | | |_ | | _| | |_ _ | _ _| |_ _|_ _ | _ _ _ | _| |_ _ | |_ _|_ _| | |_ | _ _ _ _| |_ |_ _ _ _ _ |_ _ _ _ _ | | _ _|_ _|_ _| |_| | |_ |_ _ |_| | | | |_ | | |_| | | |_ _ | _| |_ _ _ _ _| |_ |_ _ _ _ _| | _| | _ _| | |_ | |_| _| |_ | | | |_ _ _| _ _ _ _|_ |_ _ _ _ _| _ _ _ _ _ _|_ _ |_ _ _| _ _|_| |_| | |_ _ _ | |_ | _|_ | | |_| |_ _ |_ _|_ | |_|_ _ _|_ _ |_ | _ _| _ _| |_ | | | _|_ _ _| | _| _ | | | | |_ | _| | | | | _| _| _|_ | | | |_ _ |_ _ _ _| _ _|_| _| _ _ _| | |_ _| | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _| | |_ | | |_ _| | |_ _ _| |_ _|_ _ _ _ _|_ _ _|_ |_|_ _|_ _ |_ _| _| _|_ _ _ |_ _ _ _ | |_ _ _ | _| |_ _ _ _ _|_| |_ _ _| | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ _ | _| |_ _ _ _ _| |_ _ _| _|_ | _|_ _ | | _| |_ |_|_ _| |_ _| _|_| |_ _ _ _| |_ _ _| _ _| _ _| _| _| |_ _|_ | |_ | | _| | _|_ |_ _ |_ | _|_|_ | | | _ _|_ _ |_| | | | _ _| | | _ _ _ _|_ | |_ _ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _| | _| | | | | | _ _|_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _|_ |_ _ |_|_ _ _| | _| |_ _ _ | |_ _ _ _ _ _ _ _| _ _|_ | |_ _ | _| |_ _ |_ | | _ _| _|_ | _ |_ _ _ |_ _|_ | |_ _|_ _ _ _ |_ |_| | _|_ _ _| | | |_ _ _| _|_ |_ _ _| _| _| | | _|_ _|_ _ _ |_ _ |_ | |_ _ _|_ |_ _| | |_ _ _|_ _ _ | | | _ _ _ _ _ | |_ _| _| _ _|_ _ _| |_ | _ _ _| _ _ |_ _| _| _ _| | _ _ _ _|_ |_ _ | | |_| _|_ _| _ _| _ | |_ _ _ |_ _ _| _| | | _ _| | | +| _ _| |_ _| _ _ _ _|_ | | | _|_ _|_| |_ _ | | |_| | | | _|_|_ |_| _| _ _ _| | | |_ _ _ _|_ | | _| |_ _ _| | | |_ | | _ _|_ _ _| |_ _|_ _ _ _ _|_|_ |_ | _|_ _|_ _ |_ _ _| _ _| | _|_ _| _| | _ _| _ |_ _| _ _ _| | | | _| _ _|_ _ |_ _ _| _| |_ _|_ _| _| | |_ _| |_ _ |_ _ _ _ |_ _ | | |_ _|_ | | _| |_ _| _| |_ | |_ _| |_ |_ _ _| | | |_ _| |_|_ _ _| _| |_|_ | _| | _| |_ | _ _ _ _| | _ _ _| | |_ |_ _ |_ _|_ _| _ _ _| _ |_ |_| _| _ | |_ | | _|_| | _|_| | _|_ _|_ _ |_| |_ _ _ | _ | | | _ _ _ | |_ _| | | _ _|_ |_| | |_ |_ _ _ |_ _| |_|_ |_ | _| _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | |_| _ |_ |_ | | _ _ _|_ _ _|_ _ |_ _| | _|_ _ _ _| _ |_ _ _ _ | |_|_ | |_ _ | | _ _| _| |_| | _ _ _ _| _| | |_ _| |_ _ _ |_ |_| |_ _|_ | _|_ |_ |_ _|_ _ |_ _| | | _ _ _| |_ _ _|_|_ | |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _|_| _| |_ _ _ _|_ _ _|_ _|_ _ | _ _ _ _ _ _ _ _ _ _ _ |_|_ _ _ _ |_ _ | _ _ _ _| |_ |_| |_| |_ | | _ | |_ | _ _ _ |_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ |_ _ _ |_ _ _ _ |_ _| |_ _ |_ _| | | _|_ _ _ |_ _ _| | | | _ _ _ _|_ |_ | | | | _ _ _| _| | | | | | _| | | _|_ _ _ _ _| | | |_ _ _ _ _| |_ _|_ _ _ _|_ _ | | |_ | _|_ _ _| _ _ |_ _ | _ _| |_ | | | _|_|_ | | | _ _| _ _| | | | | _| |_ _ _| _|_ _| | _ _|_ | _| |_ _| | | |_ _ |_ _| | |_ _ _| _| | |_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ |_ _ |_| _ _| | |_ _ | _ |_ | |_ | _| _| |_ |_|_ | |_ | |_ _ _| | | _| | _ | | | |_ _|_ _ _ |_ _ _ |_ _ _ _ | |_ _| | _|_ | _ _| | | _ _ _ _ _ | _ _ _| | | | | | |_ _ _ | |_ _ _ _ _ _| |_ _ _ | |_ | |_|_ _ _ _ | |_ _| | | | | _|_ | _ _| | _ _| _ _|_ | _ _ _| | | |_ _ _| | |_ _ _ _| _ _ _ _ _| | _ _| |_ | | |_ _| _| | | _ _ _| | _| | |_ | | | +| | _ _ _| _ | _ _ _| |_ | | |_ _ | | |_ | |_|_ _ _ _ _ _| _| | | | _ |_ _ _| _ _ |_ _| | | _ | | | | _| _ _ | | _ _ | _ | |_ | | _ _ _ _ _| _ | _|_ _| | _ _ _| | _| _ _| _| _ _| | | _ _ _ _|_| |_ _ _| _ _ |_| _ _ _ | | _ _ _ _| |_ _ |_ | | |_ _ |_ | | _| | | |_ _ | | |_ |_ _ | _ _ | |_ |_| _|_ _ _ _ _ _| | |_|_ _ | |_ _ _ _ _ _ _ _ _ _ _| |_ | |_ | |_ _ _| _ _ |_ _ | _ _| |_ | | | _|_ | _| _| _| _| _ _|_ | |_ |_ _ | |_ _| | |_ _ _ _|_ |_ |_ _ _ |_ _ | | | | |_ _| | _|_ _ _ _|_|_ | _|_ _ _|_ |_ _ _| |_ | | _ _ |_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_| _| _ _|_ | | | | _ _ _ _ | |_ _ |_ |_ _ _ _| | | _| _ | _| |_ _ | | _ _| | |_ |_ | _| |_ _| | | | _| _ |_ _ | | _|_ _ _ | _|_| |_|_ | | | _ |_ _ | |_ _| |_ _ | _|_ _ |_ _ | _|_|_ | | _ | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| |_ _ | _ _ _| | | _ _ _ _|_ |_ _ _|_| _| |_ _ _| | |_ | _ _ _| _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ | | |_ _ _ | | |_ | | |_ _ |_ _ _|_| _ _ |_ _ | _ _| |_| |_ _ _| |_ | | |_ _| |_| _ _ _| |_ |_| | | |_ | | _ _ _| _ _| _ |_ _ _| _ _ _ _| _|_ | _ _ _| |_ | |_ | _ _ _| _| | |_| |_ | | | |_ _| |_ _ _ _ _| |_ _| | |_| _ _|_ _ _|_ _| | _ _| | _|_ | _ _|_| _|_ | _|_|_ | | | _ _| | |_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ |_ _ |_ | | | |_ _ |_|_ |_| _| | | | |_ _ _|_ |_ _ _| | _ _|_ | | | _ _ _| | | | | |_| | |_|_ _ _ _ _ | |_ |_ | | | | _| |_ _ |_ _| |_| |_ | _|_ _| _ _ |_ _|_ _ | | _| |_ _ _ _ _|_ _|_ _ | | | | | _ _| | | | _ _| _| |_ _ | |_| |_ _| |_ | _|_ | _|_ |_ _ _| | |_|_ _ | |_|_ _|_ | _ _| | _ _ _ _ _| _ _ |_ _ | _ _| | _|_ _|_ _ |_ _ |_ _|_|_ _ | | _| _| | _| |_| +| |_| |_| | | | |_ _| _ |_ |_| | |_ _| _ _| |_ | |_ _ _ _ | _ _ _|_ |_ |_ |_| _ _ _| | | |_ _|_| | |_ _| | | | |_ _| | | | _|_ _| _ _ _|_ _ _|_ _ _| _| _ | |_ _| | | |_ | |_ _ | | | | | |_ _|_ | | |_|_ _ | | | | _ _ _| | | _| | | | _ |_ | _ | | |_ _| |_ _|_ | _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ |_ |_ _ _ _| | _ _ _| | | |_| |_ | | |_ _| _| _ _| |_ _ | _| |_ _ _ _ _|_ |_| | | _| | _ _| | _ _ _ _ _ _ |_| |_ _| |_ | _|_ | |_ _ _ _|_|_ _| |_| | _| _ | | _ _|_ _ _ _ | |_ _| |_ _ | | | | _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_| | _| |_ _ _ _ _|_| | |_ _ | | _| |_ _ |_ |_ | | _ _| |_ _ |_ _|_ _ _| _| | |_ | _|_ | | _|_ _ _| | _ _| | |_ _|_ _ _| | _| _|_ _| _ _ |_ _| | _ _| | _ _| |_ _| _ _ _| |_ | _| _| | | _ |_ _ | |_ | _ _| | | |_ _|_ | _|_|_ | | | _ _| _ | _ _| | _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _|_ _ |_|_ | _ _| |_ _ _| |_ | _ _ |_ _ _ _ |_| |_| _|_ _| | |_ _ | |_| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| | |_| |_ _| |_ _ _ |_ _|_ _ |_ _| |_ | |_ | _ _ _| | | |_| |_ | | _| _| _ _|_ _ _|_ | |_ _ _ _ | _|_ _ _| _|_|_ | | |_| | _| |_ |_| _ _ _ _|_ _ _ _ |_ _ | _| _ |_ |_ _ _| |_ _ | _ |_ _|_ | | _| |_ _ | | _ | |_ | _ _|_ | _ _ _| _ _ |_|_ | _ _| | _ |_|_ | | _ _| _ _|_ _ _ _ _| |_ _| _| | |_ | | | _| _ _ _ | _| _ _|_ _ _ _| _ _| | | | _ _ |_ _ _| | | _ _ _ _ _| _| _ _| | |_ _ _ |_ _ | _ _| _ _ _| |_ _| _ | | | |_ _ _ _| |_ _ |_ | _| |_ _ | | | | | | |_ _ _| _| | _ _|_ | | | | _ _ _| | | _ _| | |_ |_ _ | | _ | | |_ _| | | | | |_ _| _ _|_| |_ _| | |_ _ _|_ | |_ _ _ _ _|_ | |_ _| |_ _ |_ _ _ _| |_ _ _| | |_ _ | | | _| |_ _ | _ _ _| | | |_| |_ | | | _ _ | |_ _ | | _ _ _| | _| |_ | |_ |_ | +| |_ _ _| | |_ _| _| _ _|_ | _| _ _| _ _|_ |_ _| |_ _ | |_ | | |_ |_ _ | |_|_ _|_ | _ _|_ _ _ _| | |_ | _| | | | | _ _| _ _ _ _ | |_ _| _| |_ _| _ _ _| _| | _| | _| | | | | |_ _|_ _ _ _ _| |_ _ _| | | |_ _|_ _ _ _|_|_ _ _ _|_| |_| |_ |_ | |_ |_ _|_ |_ |_| _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | _| | |_ _ | _| |_ _|_ | | _| |_ _ | | _|_ _ | _ | | |_ |_ _| _| _|_ _ _|_ _ _ _| |_ _ _| _ _ |_ _ | _ _| | _| | |_ |_ _ | _ | _| _ _|_ _|_ _|_ |_ _ _| _ _ |_ _ | _ _| | _ _| | | | |_ |_ | _|_|_ | | | _ _| _ _ _| | | _| |_ | _ _ _|_ _ _| | |_ _ _| | | _| _ _|_| |_ | |_ | | _ _ _ _ _ _ _ _| _|_ _ _ | |_ _| _ _| | | |_ | _ _ _ _ _| | _ _ _| _| | |_| |_ | | _ _ _| |_ | _ _| _| | | _|_ _|_ _ | | | _ _| | _| |_| |_ _ | |_ _ _ _ _| |_ _| | | _|_ _ | | _|_ | |_ _ | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | |_ _| _ | | _ |_ | _| _| _ _|_ _ _|_ |_ _| | | _ _ _| _| _ _ |_ _| | | | _| | | |_ _|_ | _ | | | | |_|_ _ _ _| |_ _ _ _ _ |_ _| _ _ _ _ _|_ _ _ _|_ _ _ _ |_| |_ _|_ | | _| |_ _ _ | |_ _ _ _ _| _|_| | _| |_ | _ |_ _ _|_ | | _| |_ _ _| | |_ | | _ _ _ _ | |_ _ _| |_| _| _ _|_ | _ _ _| |_ |_ _| | |_ |_ _ | _|_ |_ _|_ _ _|_| | | _ | | _ _ _| | | |_| |_ | |_ |_ _ |_ _| |_ | | _ _| _ _ |_ _|_ | | |_ _ _| |_ | | |_ _|_ | _ _ _| | | |_ _| |_| | |_ _ _ _| |_| |_ _ | _ _ _| _ _| |_ _ _ _ | |_ _| | | _|_ | _ _|_ _| |_ |_ _ _ _| _| _|_|_ _ _| | _| | | |_ | _ |_ | | _ | |_ _| | |_|_ _ | _| |_ _|_ | _|_ _ _ _| _|_| _|_ _| | |_ _ _ _ _|_ _|_ _ | | _ _ _ _ _| _|_ _ _ _ | | | | _ _| | |_ | |_ |_ _ |_ | _| |_ | _|_ _ _| |_| | | | | | | |_ _ | |_|_ _|_ | | _| |_ _| | _|_ _| | |_ _| | _|_ _ _ _| |_ |_ | | +| |_ _ | _|_ _ | _| |_ _ _ _ _| | | | |_|_ _ _ _| _| | _ _| | |_ _ _|_ | |_ _| | |_ _ | | | | _ _ _| _| | |_ | |_ _| | |_ _ | | _| |_ _ | | _ _ _ _| |_ | | | _ _ _| _|_|_ _ _ _ _ | _ _ _ _ |_ _ _ _ _|_ _ _ _| | _ _ _ _ | |_ _ _ |_| _|_ _ _ _ _ _ _|_ _ | _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _| | |_|_ _ _| _| |_ _| | |_ _| | | |_ |_ _ | _|_ | | |_ |_| |_ | |_ _ _|_| _| | _ _ | _ _ _ | _ _ _| _| | |_| |_ | |_ |_| | | |_ |_ |_ _| | | |_ _| _ _ _ |_| |_| _ _ _| _| | |_| |_ | |_ _ _ _| _| | _| | |_ _ _ _ _| |_ _|_ _ _|_ _ | _| | |_ |_| |_ | |_ _| _ | _| _| | | | | | _ _| | | _|_ |_ _| | _ _ _ _ | |_ _ | | |_ | |_ | | | |_| | _| | | | _ _| |_ _ | _ |_ _|_ | | _| |_ _ _ _ _|_ _ |_ |_ |_ _ |_|_ _ _ | |_ _| |_ _ _ _| | _| _| | _| |_ | | _ | | | | |_ _ _ _| |_| _ _|_ _ | |_| | |_ _ | _|_|_ | | | _ _| _ _ _ | | _ _ _| | |_ |_ | | | _| | | _ _ _ | | _ _| | | | _ _ _|_ | _| | _ _| | | |_ _ _| |_ _|_ _ _ _ _| | | | |_ _| |_ _|_ _ |_ _ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ | _ _| | |_ |_ _ | _|_ _ _ |_ _ | _ _| | | _|_ _ _|_ _ _ |_ _ _ _| | _|_ _ _ _ _ _ _| _|_ _ | | _| |_ _ | _| _| |_ _ _ _ _| | | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _ | _ _ _ _| | | | |_ _ | |_|_ _|_ | | _| |_ _ | |_ | _| |_ _|_ _ |_ |_ | | _ _ _| _| _ |_ |_| _|_ _ _ _ _| | |_ _ | | |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ _ | |_ _ | _| _ _|_| _ _ |_ _| | _ _| | | |_| | | _| _ |_ |_ |_| _ |_ | _ _ _ | |_ _| |_ _|_ | | |_ | | | _| | _ _| |_ _ _| |_ | |_ | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _ _| | | | |_ _ |_| | |_ _| | | |_ | |_ _| _ | |_ |_|_ _ | _|_ _ _ | | _|_| |_| | | | |_ _| | | | _| | |_ |_ _ | _ _ | | |_| _| |_ _ _ | |_ _ _ _ _| | +| _ _| |_ _ | | |_ _ _| _ |_ |_ _|_ _ |_ _ _ _ _| _|_ |_| _|_ _ _ _ | | | | _|_| _| _| | | | |_ _| | |_ _| _| | _|_ _ _ _| |_ _| | |_ _ _| | | |_| _ _ _ _|_ |_ | |_ _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ |_ _ | | _| |_ _ | |_ | | | _ _ _ _ | |_|_ | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| |_ _ | |_ _|_ |_ _ | _|_|_ | | | _ _| | | | | | _ _ _ _| |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _| | | _| _| _|_ | _ _ _| |_| | | _|_ _ | _|_ _ | _ |_ _|_ | | _| |_ _ | | |_ _ _ _ _| | _|_ _ _ _ _ _|_ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _ | | | |_ | |_ _ _ _ _ | | | | _|_ _| |_| | _| _ _| |_ _ | | | | |_ _ | |_ _|_ _ _| _| _| | |_ _|_ | _|_ _ | | _| |_ _ | | |_ _| _|_|_ _ _ _| |_ | |_ _| |_ _| | | | | _| | | | | | | |_ |_ _ | _ _ |_ | | _| |_| _ _ _ _ _|_ _ _| | _ _|_ _ _|_ |_ _ _| | | |_ _|_ _ _|_ _| |_ |_| _ |_ |_ | _ _ _|_ _|_ |_ _|_ _ _ _ _| |_ _| _ _|_ | _ _| | | | _ _| | _| _| |_|_ _| |_ _| | |_ | |_ | | _|_ _ | _| | _| | | | | |_ | | _ _ | | _| _ _|_ |_ _ _ | |_ _ | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_|_ | | _ _|_| |_ _ | | |_| |_ | | |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _ _| | |_ _ _| _| |_ | |_ _| _ _ _ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_ _ | | _| _|_ _| | | | _| | |_ |_ _ | _ _| |_ _ _| | _ _ |_ _ _| | | | |_ _ _ _| _| _ _|_ | |_ _| _|_ | |_ _|_ | _|_ _ | _|_ _ _| |_ | _| | _| | | | | _ _ _| | | |_| |_ | |_ | _| | |_| _| _ _|_ |_ |_ |_ _ _| | |_ _ |_| | _ _|_| _ |_ _| _ _ _| |_| _|_ _ _ _ _|_ _ _ | _| | | |_| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _| _| |_ _|_ _ _ |_ | _|_ _ _ |_|_ _ _ _ _ _ _| |_ _ | | | _| | _ _|_ _| |_ _ _ _ _ _| | | _| | _|_|_ _|_ | |_|_ | | _ _|_| |_ _| |_| _ _| | |_ _|_ _|_ _ | | | +| | _ _| |_| | |_ | _ |_ |_ | | _ | |_ _ | | _|_ |_ |_ _ _ | |_ _ _|_|_ _ _ _ _| _| _| | |_ | _| | | |_ | |_ | _ |_ | | _| _| | | |_ _ _ _ _| |_ | |_ | _| | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | |_ _ _| | | _ _|_ _| |_ _ | | _| |_ _ | | | | _| | | |_ _|_ |_ |_ _ _ _| | |_|_ | _|_ _ _ _ _| |_ _ _ _ _ _| |_ _| _ _|_ _| |_| | | _ |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | |_ _ _| _| _ |_ _ | _|_ _ _ _| | _| |_ _ _| |_ | _ _| | |_ |_ _ | _|_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | | _ | | |_ |_ _ | |_ _ | _|_ _ _ |_ _ | |_ _|_ _|_ _| _| _ |_ |_ _ |_ _ _ _ _| _|_ | | | |_ _ _| _ _ |_| _| _|_ |_ | _|_ _ _| | |_ _ _|_ | | | | |_ | | _ |_ | |_ _ _ _| | |_ _| |_ | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ _| | | _|_ _ _| _ _ |_ _ | _ _| | _ _ _ _ _ _ | _ | | _ | _ | _ _| _| _| _ _|_ | |_ _ _| |_ _ | | _ _ _ _ _ _| _ _| | |_ _ _| |_ | | _ _ _|_ _ _|_ _ _ | _| _ _| |_ | | | _| |_ | _| | |_ |_ _ | |_| | |_ _|_ _ _|_ _| _| | | | |_ _ _| |_ _ | _| _ _| | | | |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _| |_ | _ _|_ | | |_ _ | |_ _|_ | | _| |_ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| | _| | | |_ | | _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | |_ |_ _ _| | _|_|_ _|_ | |_|_ | | _ _|_| |_ _ | _| | |_ |_ | |_ _| _ | _| |_ _ _ _ _|_ | | | | | |_| _ | _| |_ _ _| |_ _| _| _ _|_ _ _| |_ _| _|_ _| |_ _ | _|_|_ _|_ | | _| |_ _| |_ _ _| _| |_ _ _ _ _|_ _ _ |_ _ _ _ _ _ _|_ | | | _ _ _ _|_ |_ _| _ |_ |_ | _ _ _ _ | |_ _| |_ _| |_ _ _|_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _ _ _|_ _|_ _ |_ _|_ _ _ _ _ _| _ _ _| | | |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ | _|_ |_ _ _ _|_ _| | |_| +| |_ | _|_ _ |_| _| | |_ | | |_ _|_ |_ _ _| | |_ _| | | | | |_ _|_ _ | | | _ | | |_ |_|_ |_| | |_ | |_ _ _|_ |_ _|_ |_ | | | | |_| _| |_| | _ | | _ _|_ _ _|_ | | | |_ _ | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _|_ _ _| | | |_ _ _ | _| | |_ _ _|_ | | | | |_ _ _| |_ _|_ _ _ _ _|_ |_ _ |_ |_ _|_ _ |_ _ | | _ _ _ _|_ |_ _ _ | _ _ _|_ | _ _ _ _| |_ |_ | |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _ _| _ | | _| |_ | | | _| | _| | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ _ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| |_|_ | | _ _|_| |_|_ _ _ _ _| _ _| _ _ | | _ _| _| _ _|_ | |_ _ _ | |_ _ _ _| |_ _| | _ _ _| | | _| |_ _ |_ | |_ _ | _| _| _ _ _ _| | _|_|_ |_ _| _| _ _|_ | _ _ _|_ _ _ _|_ |_|_ _ _ | | |_ | _ _|_ | | |_ _ |_| |_ _ | _ _ _| _| | |_| |_ | | | | |_ | | _|_ _| |_| _| | | | | | | _| |_ _ _ _ _|_ | _ _| | | _|_ _ _| _ _ |_ _ | _ _| | |_| _ |_ |_| |_ | _ _ _ _ | |_|_ | | _| | _| | |_ | |_ _ | _|_ _|_ _ |_| | _|_ _ _ _ _ _ _ _ _ _ _| |_ _ _ _ _|_ |_ _ | | _ _| _| |_ _ |_ | _|_|_ | | | _ _| _ | | | |_ _ | |_ _| | _ _| |_ _| _ _| | | | |_ |_ _ | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ _|_ | | | | |_| _| | |_ _| | | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| | | | | _| _|_ _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ |_ _|_ _| | _ _|_ | _| | |_ _ _ |_ | |_|_ _|_ _| |_ _ |_ _|_ | _|_ _ |_ | _ _| | _ _| _|_ _ |_ _ _ | _| | | _ _| | |_ |_ _ | _ _ | |_ _ | | _ _ | | _ _ _ _ | |_ _| |_ _ _| | | _| _ _|_ | |_ _ | | _| |_ _ |_ _ _ _| _ _ | |_|_ _ | _|_|_ | | | _ _|_ | | | | _ |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ | _| | _| _ | _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _| |_ |_ _ _ |_ _| | _|_ | +| | | | |_ _ _ _| _| _|_ |_ _|_ _ _ _| _| _ _|_ _ _ _|_ | |_ _| |_ _ _ _|_ _| | | | | | |_ _ _|_ _ |_ | |_ _ _| _ _ _ _ _ _ _ _ _| | | | | |_|_ |_ |_ | |_ | |_| | _ | |_| | _| | | | |_ _ | _|_|_ | | | _ _| _ _ _| | |_ | | |_| | | | |_ _ _| | | | _| _ _ | | | | | | | | | _ _ |_ _ |_ | | |_ _ _ _|_ _ | | |_ _ _| |_ | _| _ _| | _| _| _ |_ |_| _| | _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| | |_|_ _ | | _| |_ | _|_ _| |_ _| |_| | |_ _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ | _ _|_ | | |_ _ | |_ | _ _| _ | |_ _|_ | _| |_ _ _ _ _| | |_ _|_ _ | _ _| _ |_ _ | |_|_ _ _ _ _ _|_ _| | _ _|_ | |_ _ |_| _ | | |_ _| | | |_ _ _ _ _|_| | _ _ _ _ | |_ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| |_|_ _ | _ |_ _|_ | | _| |_ _| |_| | _|_ _| _ |_ |_ _ _|_ _| | | | |_ _| _ _ | | _| | | | | _ _ _| _| | |_| |_ | | | _| _ _|_ |_ | |_ _ | | _| |_ _ | | | | | |_|_ | |_ |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _ | |_|_ |_ _|_ | _| _|_ _| | _|_ _ _ _ _| |_ _| _ _ _|_ _| | | | |_ _|_ _ | |_ _ _ _| _ _| _ _| | | |_|_ | | _ _|_| |_ _|_ | _|_|_ | | | _ _| | | _| | |_| |_ |_ |_ _|_ _ _| _|_ |_ | |_| | _| | | |_ _|_ | | |_ |_ _ | | |_|_ _ | |_ _ | _ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _ _ | | | _ |_ _| _| |_ | | | | _|_|_ _ _ | |_ _ _ _| _ | | | _ _ | _|_ | _|_| _| _|_ _ |_ _ |_ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ |_ |_ _| |_ _ | |_| _ | | _| |_ _ |_ _ _ _| _| |_|_ _ _|_ _ _ _|_ _| | |_ _ _|_ | | | _ _| | _ _|_ _ _ | |_ _ _ _ _| |_ _| _ | |_ _| | | | | |_ | _| | | |_ _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | | | | | |_ _ _| |_|_ _ _ _| | |_ _ _ | | _| _| |_ _ | | _| | |_ _ _ _| _ _| _| |_ _ _ _|_ _ |_| _ _| | |_ _ _ | +|_ | |_ | _ _ _| |_ _ _ _ _ _ _ |_ _ _ _|_ | _| _| | | |_ _ _ |_ _ _ _ | |_ _| |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ _|_|_ _ | | | |_ _ _ _|_ _ _| |_ _| | |_ |_ | _| |_|_ _|_ _ |_|_ _ _ _ _| |_ _| |_| | _ _| | _| | |_ _ |_|_ _| |_ _ _| | | | | | | |_ |_ | | | |_ _|_ _|_ _| _| | _| _| _| | |_ |_ _ _ | |_ _| _| _ _|_ _ _| | _| _ _| | | | _| _| _ _|_ | |_ _| _| | | |_ _|_ | |_ _ _ | | | |_ _| _ _| | | | _|_ |_ _ _ |_ | |_ | | | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| _|_|_ | | | _ _|_ _ _ _ |_| |_ _ | | |_ _| | _ _| |_ _| _ _|_ | | | |_ _| | |_ _ _| | |_ |_ _ _|_ _| | | _ |_ | _ _| _| _| | |_| _ _ _ _ | |_ _ |_ _ _ _ _| | |_ _ _ _|_ |_ | | | _| |_ _ _ _ _ | | |_ _ | | _| |_ _ | | _ _ _ | _| _ |_ _ _ _| _ _| _| _ _ _| | _ | |_| _ | | | |_ |_ _ | _ _| | | _| _ _|_ |_ | _ | | | |_ |_| | _| _| | | | | | | | |_ _ | _ |_ _|_ | | _| |_ _ |_ _ _ _ _| _|_ _| | |_ _ _|_ | | | |_| | |_| | | _ _|_ _ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _| |_ _ |_|_ _ _ | | | _| | _| _|_ | | _| _ _ _ _|_ | _ _|_| |_| _ | | _| _ _ _| | |_ _ _ _| |_ | _ _|_ | | |_ _ | |_ _ _ _ _| |_ _| _| |_ _| | | _|_ _ | _ _| _ _ _| _| _| |_| _|_ _ _| |_ _|_ _ _ _ _|_|_ | | _ |_ _|_ _ |_ _| | _|_ | _| |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | |_ | | _| |_|_ |_ _ _ _| _| _| | | | | | _ _ _ |_ _|_ _ | | | |_ _| _ | |_ _| |_ _ |_ _ _ _ _ _ | | |_| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _ _ _| |_ |_ _| | |_ _ _| | | _ _ _ _| |_ _ _ | |_ _ _ _ _ | _| _ _ _ | | | |_ _|_ | _ _| | _| _ _| _ _ _ | _| | |_| _ _|_| |_ | _| _ _| | | | _ | _|_|_ | | | _ _| | |_ | | |_ _| |_ _ _ |_ _ _ _ _ | |_ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | | |_ | _| | |_ _ | _ | _ | |_ | | | |_ _ | | | +|_ _|_ | |_ _ | | _ _ _ _| _ _| |_| | _| |_ _ _| | _|_ _|_ _ _| _ _| | | |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _ _ _| |_| _ _| | _ _ | _ _| |_ _ |_| | |_ _ _ | |_ _ _ _ _ | _ _|_ |_| |_ _ _| |_| _| |_ _| _ |_ |_ |_| | | | | _| _|_ _| |_| _ _ _ _ _ _ _ _ _ _|_ |_ _ _ _|_ _ _| | _|_ | |_ | _ _| | _| _ _| | | |_ | | |_ _| _| |_ _ _ _ _| | | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ | _|_ _|_ _ |_| _ _ _ _ _| _ _ _|_|_ _|_ _| _| _ _ _ | _| _ |_ _ _ _| _ _| | | | |_ |_ _ _ _ _| |_ _| | | |_ | | _|_ _|_ _ | |_ _ _ _| _ _| | _ _| |_ _|_ _ |_ _| _ _| _|_ | |_ _|_| | | _ _|_ |_ _ _| | |_ _ | _|_ |_ _ | | _| |_ _ |_ | _| | | |_ _ _ _ |_ |_ _|_| | |_ _ _ | |_ _|_ _ _ _| | |_ _ _| _| | | | |_ _|_ |_| _ | _ _| | |_ _ _ _ | | | | |_ _ _ _| |_ | |_|_ | | _ _|_| |_ _| _| |_ _ _ _ _| _|_ | | | _| _| |_ _ | _|_| |_| | | |_ | _| |_ |_ _| | |_ |_ _ | _ _ _ |_ | | | |_ _ _ _ _| | _ _ _| | _| |_ _| _ _ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _|_ | | _ | _| |_ _|_ | | | |_ _ _ _| |_ _ |_ _ | _| |_| _ |_ |_ |_ _|_ | _|_ _ |_ _|_ _ |_ _ _ |_ _| | _ _| |_ _| _ _| |_| _ _ _ _ |_ _| |_ _ _ _|_| |_ _ | | _ |_ _ | _|_| _|_ _ |_ | | | _ _ | | _ _ _| | | |_ _ _ | |_ _ | |_ _| _ _| | _| | | |_ _|_ |_ _ _ |_ | | |_|_ | _| |_ _ _ _| |_ |_ _ _| _| _| | | _| |_ | _ _ _ _ |_ _| | | |_ _ |_ _| | | |_ | | _|_ _ |_ _ | |_| |_ _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| | | _ _| | | _ _| | | |_| | _ |_ _ _ |_ _|_ _ | | | | | _ _ | _| | | | |_ _| _ _| | | _| | _|_ |_ | | |_ _| _ |_ |_|_ |_ _ | |_ _|_| | _|_ _ _ _ _| |_ _|_ _ _ _| | | | | |_ | | _ _ _ |_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ _ _| |_ | | |_ |_ _|_ _ |_|_ | | | | |_ _|_ _ _| | |_ _ | | | +| _ | | | | | _|_ _ _ _ |_ | _| _ _|_ _|_ _ _ |_ _ _| _ _ |_ _ | _ _| | |_ |_ _| | _ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | | _ _ |_ _ | _ _| |_ _| | | |_ |_ _ | _ _| _ _|_ _|_ _ | | | |_|_ | |_ _| _ |_ |_ | |_ | _| _ _|_ | |_ _ _ _| |_ _| _| _ |_ |_ _ | | _ _ _ _ | |_ _ | _ | | |_ | _|_| _|_ | _|_ _|_ _ |_ _| | | |_ _ | |_ | _ _ | |_ _| _ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | |_ _|_ | |_ _ _| | | |_|_ | |_ |_ _ _ _| | _|_ _|_ |_ _ _| |_ _| |_ _| |_ | | |_ _ _ | | | |_ _ | _ | _| _|_ |_| _ _| | | | | _ _| _ |_ _|_ _ |_|_ _ _ | _| | |_ _ _|_ | |_ _ | _| |_ _| | | | |_ _ | _ _| _ _ |_ _|_ _ | | _ _| _ _| _ | | |_ _|_ _ _ _ _| _| _| _ |_ _|_ _ |_ _ _|_ _ _| |_ | _|_ | _ _|_ | | |_ _ | |_ | _| _ _| |_ _|_| _| |_ | _|_ _ _ _ _ _| | _| | | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ | | |_ _| | | | | | | _| | | _ _ | |_ _ | | _| | |_| | | _|_|_ | | | _ _| | _ _ _| | | _ _ | | |_ | |_ |_ | _| | | | |_ |_ _ |_ | _| _| _| _| _ _|_ | _ _ _ _| | _ _ _ _ _| |_ _ | | | _ |_ _ _ _| _ _| _ | _ _| _ _| _| |_ | _| _ |_ |_| _| |_| _ _| | _ _ _|_ _ | _| | |_|_ _| _| |_ _| | | _ _ _|_ _ _ _ _ | | |_ _| _| _ |_ _ _| |_ _|_ _ _ _ _| _ _ _|_ _ |_ _|_ _ |_|_ _| _ _ _ _|_ |_| | _ _ _| _| | | | | _| | | |_ _ | | _|_|_ | | | _ _|_ | |_ _|_ _ _ |_ | | |_ _ |_ _ _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| _| | _ _| |_|_ |_ _ _ _| _|_ _| |_ | | | |_ | |_| |_ _| _ _ _ _| | | | |_ _ _| |_ _ _| |_| | |_ _ | |_ | | | | _|_ _| |_ |_ _| |_ _ _| _| _ _|_ | _| | |_ _ _ _ _|_ _ | _ _ | _ | _ | |_ _|_| |_ |_| | |_ _ _| |_ _ | | | |_ _| _ | | _| |_ _ |_ | _ _ _| |_ |_ _ _ _|_ _ | |_ _| |_ _ _ | |_|_ _ |_ _| | +| | | | |_ _| _|_ |_ | _ | | |_ _| _ _ _ |_| |_| _ _ _| _| | |_| |_ | |_ |_ | _| | | | |_ _ | _|_|_ | | | _ _|_ _ _| | | _|_ | | |_| |_ | | | | _| | | | _ _|_| |_|_ | _ _ |_ _| | | |_ _ |_ _| | _| _| _ _|_ | |_ _| _| |_ _ _ _ _|_ _| _ _ _| | | _| _ _|_ | |_ |_ _ | | _| |_ _ | | | | |_|_ _ _ _| | |_ _| |_ _ |_ _ | |_ _ _ _ _|_|_ _ | |_ | _|_ | |_| |_ |_ _ |_|_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ _ _ _|_ | | _ _| |_ _|_ _ |_ _| _| |_ _ _ _| |_ _| _| _| _ |_ |_|_ _ |_ _ |_ |_| |_|_ _|_ _ |_ _ _| | | | _ _| | _|_ _| _| |_ | |_ | | _ _|_ _ _ _| | | _ _| _ | |_ | |_ _ _ _ | | |_| | |_ _ _ |_ _| |_|_ | _| | |_ |_ _ | | |_ _| | | _| _ _| _| | | | _ _ _ _| _|_ | | _ _ _ _|_ _ | | _ _ _ _|_ |_| |_ | |_ _| | _ _| |_ _| _ _|_ | |_ _| | | _ _| | _ _ _| | | |_ _|_ _ _ _ _| | | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | |_| |_ _| |_| | |_| _|_ _|_| |_ _ _ | | | |_ _| |_ _ _| | |_ _ _ _| |_ _| | _ _| | | | |_| |_ _| | _|_ _ | _|_| | | |_ _| | _| | | | | _| | _| |_ _ _ _ _|_ _ | _| |_ _ _ | _ _| _ _| | _| | |_ | _| | |_ _| | | _ _| _ _| _|_ _ |_| _| _ _|_ | |_ _ |_ | | _|_ _ _ _ _ _| | |_ _ _| | _ _ _ _ _ _ _ _| _| _ _ _ _ | |_ _| |_ | _ _| | | |_ | | _ _ | | _ |_ _ | _|_ | |_ _ |_ |_ _ _| |_ | |_ _ | _| _| |_ _|_ _ _| |_ _|_ _ |_ _|_ _ _ _ _| |_ _| | | | _ _ | _ | | |_ _| | | _ | _| | | |_ _|_ | | | | | _ | | |_ _ | | | _ _ _ _| |_ | | | | _ _ _ _| |_ | _|_ _ _| | _ _ _| | _|_ |_ _ | _| _ |_ |_ _| _ | | _| | | | | | _ _|_ _ _| _ _|_ | _| |_ _ _ _ _| |_|_ _ |_ _ _ _|_ _ | | _|_ | | | | _| _ |_ |_ |_ _ | _ _| |_ |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_| | | _ _| _| | _ _ _| | |_ _ _| _ _ _|_ _ | | _ _| +| |_ _ _| |_ |_ _ _ _|_| |_ _| |_ _ _ | _ _|_ _ _|_ _ _ _ |_ |_ _|_ | | _| |_ _ _ _| | _| | |_ _ | |_ _ _ _ _| |_ _| _ _ |_|_ | | | |_ |_ _|_ | | _| |_ _| |_| | |_|_ | | |_ _ | |_ | _| | | _|_|_ | | | _ _| | _| |_ _ _ _ _|_ _ | |_ _ _ _ _ | |_ _ _ _ | |_ | |_ _ _ _ _| _| | _| | |_ _ _| | |_ _| |_ _ _ | |_ _|_ |_ | | _|_ _ |_ _ | | _ _ _ _ |_| _|_ _ | |_ |_ |_ |_ _ _| | |_ _ _ _ | |_|_ _ _ _| | | _ _| | | _ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ _ _ | _ _ |_| | _| _ _ _ _|_ _ |_ |_|_ _ _ | _| | | | _| _| _ _|_ | |_| _| _| _| _ | |_ _ | | | _| | _ _| | _ _ _|_ |_ _ | | _| |_| _ _| | | |_| |_ | |_ _| _| | | | | |_| | |_ _ _| _| _ _| | | _ _| | _ _|_ |_ |_ _| |_ _ _ _ _| |_ _ _| |_ | |_ _| | | _| | _ _| |_ |_ | _ _ | | |_ _ _| |_ | | _| | |_ _ _ _| _ _| | _| | | |_ _| | | |_ _ | | |_ | _ _ _| _ _ _|_ _|_| _ _ _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ _|_|_ _ _ _|_ | |_ |_ _ | | |_ _ |_ _| |_|_ | _ _ _ _| |_| _ _| | _ _ _| | _ |_ _|_| |_ _|_ _ _ _ _|_ _ _ |_ _ |_|_ _ _| |_| |_|_ | |_ _ _|_| _| | |_ |_ _ _ _ | _| _ _ _ _ _|_ _| _ _| _ _| | _| | |_|_ |_ _|_ _ |_ _| | |_ _ _ _| | _| _| |_ _ _ _ _|_ | | | _| |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| _ | | _| |_ _ | | _|_ | _|_ _ _ _| |_ _| | |_|_ _ _| _ |_ _ _ | |_ _ | | |_ _| _| _ _|_ _ _|_ _| |_ |_ |_ _ _ _ _ |_ _ _ | |_ _ _ _| _ _ _ _ _ _ _|_ _ _| _ _| | | | | | _ _| |_ |_ _|_ _ _| |_ _|_ _ _ _ _| | _| | | | |_ _|_ _ |_ _| | | _ _ _ _|_ |_ | |_ _| _ |_ |_| | _ _ |_ _ | _ _| |_ _ |_ _| _| | _| _ _|_ | _|_ _| |_ | |_ _| _| | _ | |_ | _ | |_ | _| _|_ _ |_ _ _ _|_ _| |_ _| |_ _ | |_ _| _| _| _ _|_ | | |_| |_ | | _ _| _|_|_ | | | _ _| |_ _ _| | | | _ _| |_|_ _ _ _| _| | _| _ _| | |_ _ _| | _ |_ _| | |_ | +| _ _ _ _|_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | | _ | | |_ |_ _ | _ _ | |_ _ | _ _ |_ _ _ _ _ _ _ |_ _ _|_| |_ _ _|_ _ | | |_ |_ _ | |_ _ _ | _ _| |_ _| _ _| _| |_ |_ _|_ _ _ _ _| | |_ | | |_ _ _ _ _ _ _ _|_ | _ _ _|_ _|_ _ | |_|_ |_ | | _ |_ _ _ | _|_ _ | | | | _ | _ |_ _|_ _ | | |_ _|_ _ |_ | | | | |_ |_ _ _ _| _|_ | _| _|_ _ _ _|_ _ _|_ _ _|_ _ | _| |_ _ |_ _ |_ | |_ | | | | | |_ _ | | _|_|_ | | | _ _| | _| | | | _ _| | _ _| | _| |_ _ _ _ _ _| | _| _ _ _| _ _| | |_ _| _| |_ _ _ _ _| | _ _|_| _| | _ _| | | | _ _| | _|_ | |_ | | |_ _ | _ _| _ _| |_ |_ | |_ _ _ _| | |_ | _| |_ _|_ _ _ _ | |_| |_ _| |_ | |_ _ |_ _ | _ _| | | | _ _|_ _| |_ | |_ _ _ _| _ _ |_ _ | _ _| | |_ |_ | | | _|_ _ | |_ |_ |_ _| _|_| |_| _| _ _|_ _ _| |_ | |_ _| | _ | | | |_|_ |_ _| | | | | _|_| | | _| | |_|_ | | | |_ _ _ | | _| _| |_ _ | | _| _ _|_ _ _ _| _ _| _|_ _ _ _ | |_ _| _ _| _|_ | _| |_ _| _ _| _ _| _ _ _| _ _ |_ _ | _ _| | _ _ _ _| | _| _ |_ |_ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ | |_ | _ _ _| _|_ | |_ _ | | | |_ _ _| _ _ | |_ _ |_ | | | | _|_| | _ | | _ |_ _ | _|_ _ |_ _ |_| | | |_ _ | _ _ _| | | | | _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| _| | |_ _| |_ _ |_ _ _ _ _| | |_ _ _ _ | _|_ | _ _| | |_ |_ | _ _| | _ _ _ _ | _|_ _ _ _ |_ _|_ _ _ _ _ _ _ _|_ _ _ | | _ _ _ _ | |_ _ _ _| _ _|_ _ _ _| |_ _| | | | _ _ | _| |_ _ _| | |_ _ _ _|_ _ | _|_ _ _| |_ | |_ |_| _| _ _|_ | _| _| | |_| |_ | | _| | |_ | _| |_ _ _ _ _ _| _ |_ | |_ _ _ _| _|_| |_ _| _| | _|_ | | |_ | _|_ _ |_ _ | | _ _ _ _|_ | | |_ _| _| | _| |_ _ _ _ _| _|_ | | _| |_ _ |_ _ _ _ _| |_ _| _|_ _ _ | | |_ _| |_ _ _ | |_ _ _|_ |_ | _ _|_ | _ _| | | | | _ _|_ | | +| | _ _| |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_| |_|_ | | _ _|_| |_ _| | _ _|_| |_ _ _ |_ | _ _| | _| _ |_ |_ | _ _| |_|_ | | _ _|_| |_ _| _ _ _| _ _| | | _ _|_ _ _ _ _ _ | |_ | | | |_ |_ _ _ _ | |_ _| _| |_ _| | _ _|_ _| | _ _| | |_ _ _| | _ _ |_| | _ _| |_| | | | |_ _| |_ _ _ |_ _| |_ _ _ _| _| _|_ |_| |_ | _ _ _| |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _ _|_ | | | | _|_ | | _| |_ _|_ _ |_ _|_ _ _ _ _| |_ _| |_|_ _|_ | | | |_ _ |_| | | | | _| _ | | _| _ _| _ _|_ _| |_ _ | | |_ | |_ | _ _ _|_| _ | |_ | | | _| |_ | _ _| |_ _ _|_ | | |_ _| | | |_| |_ |_ | | |_ _ _ | |_| _| |_ _ _ _ | |_ _|_ _ _ _|_ | |_ |_ | | |_| |_ | |_ _|_ | _ _ _|_ _ _| | | _ _ _| | | |_| |_ | | |_ _|_ | |_| |_ _ | _|_ | |_ | _ _| | _ _| _ _| | _ _| _ _ _ |_ _ | | | | | |_ _|_ _ |_ _ | | |_ _|_ _ |_ _ _| _|_ _ _ _| | |_| |_ _ _ |_ _|_ _ _|_ _ _|_ |_ _|_ | _ _ _ _ _| | |_ _ | | _| |_ _ | |_ _ _ _ _| _ _| _ _| _| _ _| _ _ _|_ | | |_| |_ | |_ |_ | _|_| _| _ _|_ | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | | |_ _|_ | _| _| _| | _|_ _|_ |_ | _ _| | _| |_ _ |_ | | | | |_ _ _| | | |_ _ _| _ _| |_ _ _ |_ _ | | | |_ |_ _| | _|_ _ _ |_ |_ _| |_ | _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| | _ _ | | | |_ | | |_ _ |_ _| _ _|_ | | _|_| _ _|_ _ _ _| |_| _| _|_ | _|_ | | _|_ |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| _ | | _| |_ _ | | | _ _ _ _ | | _ _| | | |_|_ _|_ | |_ _ _|_ _ _ _|_ |_ _ _ _ _ | |_ _| _| _ _|_ _ _| | _| _| |_ _ _ _ _| | _ |_ _|_ | | _| |_ _ | |_ _ _| | _ _ _| _| _ _|_ | | |_ _ |_|_ | _| _| _| _| | |_ _|_ _ _ _ |_ | | |_ _ _| |_| |_ _|_ _ |_ _ | |_ | | _ _| | | |_ |_ _ | _ _ | _ | |_ |_ _ _ _| |_ _|_ _ |_ _|_ _ | | | | | | | | _| | | | |_ _ | | | | +|_ | _ _|_ _ _| _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _|_ |_ | _ _|_ | | |_ _ |_|_ | | |_ _ | | | | | | _ |_| _| _ _|_ | | | _|_ | _ _|_ | | |_ _ | |_ _| | |_ _| | | | _ _ _ _ | | _ _| _|_| |_| _| | |_|_ | | _ _ _| _ _| | | _| | _| |_ _ _ _ _ | _|_| |_ | |_|_ |_ _ _ _| |_ _ |_ _ | |_ _ _| _| _ _| _ _| _| |_ | |_| |_ _ | |_ _ | | | |_ _| _ | | _| |_ _ | _| _ _| |_|_ _ | _ | |_ _ | _ | |_ _ _ _ _| _ _ _ _|_ _ _ _ _|_| |_ _| | _| |_ _| | | _| |_ |_ |_ | | | _ _ _ _|_ |_ _| |_ _ |_ | |_ _| |_ _ _ _ _| _|_ | | | | | _ | |_ | |_ | _ _ _| | _ _| _|_ _|_ _ | _| _ _|_ | _ _ _|_ _ _ _|_ |_ _ |_ _|_ _ | |_ _| _ _| _|_ | |_ _|_ | | _| |_ _ |_ _| _| _| _| |_ _ | |_|_ _|_ | | _| |_ _ _ _|_ _ | | | | _ _|_ |_| | | |_ _ |_ | _| | _ _ _| |_ _ _ _|_ _| |_ _ _ | _|_ _ |_ _|_ _ | |_ _ _ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_|_ _ _ _| | | |_ |_ _|_ _ |_ _| |_ _ _|_ | | _ |_ _ |_ _ _ | | |_|_ | |_ |_ _ | _ |_ _|_ | | _| |_ _ | |_ | _| |_ _ _ _ _|_ _ _| | |_ _ _| | | _ | | _ _|_ _ _|_| |_ _ | |_ _ _| _| _| | | _| | | | |_ _ _| | _ _ _| | _| | |_ _ _| |_ _ _ _ | _ _| _ _ _|_ | | |_ _ _| _| _ _|_| _ _ |_ _ | _ _| | _|_ _ _ | _|_|_ | | | _ _| _ | _| | | | | | | | | | | _ _|_ _ _|_ _ |_ | _ _ _ |_ _|_ _ _ _ _|_ _ | _ _ _ |_ |_ _| |_ _ |_ _| _ |_| _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| | |_ _ _| | | |_ _|_ _ | | _| | | _| | | | _ _ _|_ _ _ _ | |_ _ _ _ _ _ | | _|_ | _ _| | _ | _ _|_ | |_ _ | _ | |_| | _| | |_ |_ _ | _|_ | |_| | | |_| _| |_ _ _ _ _| |_ _|_| |_ _ |_ | _|_ _| _| | |_ _ _ _ _ _ | _ _| |_| _| _ _| _ _| | _ _| | |_ | |_ _| |_ _ _ | |_|_ | | _ _|_| |_|_ | | _|_ _|_ |_| _ |_ |_| | |_ _ | |_ _| | | | |_ |_| | | | | | | |_ _ | _| | | +| _| | _ _ |_ |_ _| _ _ | _|_|_ | | | _ _|_ _ _ _| | |_ _ | | |_ _| | _ _| |_ _| _ _| _ _| |_ _| _ _| | |_ _ |_ | | _| |_ _ _ _ _| _| _ |_ _| | _ _| |_ _| _ _|_ |_ |_ _|_ _ |_ _ |_ _ | | _ _|_ _| _ _ _ _| _|_ |_ _| | _ _| _ _| | |_ | | | | _|_ _ _ _| _ _ |_ _ | _ _| | | | | |_ _ _ |_ |_ _ | | _|_ _ | _ _ _|_ _ _ _ _| _ _| | _|_ | | | _| |_| | |_ _| | | |_ _ |_ _| | |_ _ _| _| | | _| |_ | | _ |_| | | |_ | | | | | |_ | | | _ _| _ _| | | _ _| _ |_ |_ _| |_ _ _| |_| | _ | | |_ | | | |_ _ _| |_ | _| _ _| _|_ | _ _ _ _ | |_ _| |_ _ _| | |_ _| | | | | _ _| | _| _ _|_ _ _ | |_|_ _ _| _ | | | _ _ _ _ | |_ _ | _| _ |_ |_ _ | | | _ _ _ _|_ _ | | |_ |_ _ | _ _ _ _|_ | |_ _ _| | |_ _ _| | |_ |_ _ | _ _ _ |_| | | _| | _|_ _ _| | | | | _| |_ |_ _ _| _ _| | _ _| _ | | _|_ _ _| | _ | |_ _|_ _ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | |_ _| | |_ _|_ | |_ _ | | _ | | | |_ _ |_ | | |_ _|_ _ |_ _ _ | _| | |_| | | |_ |_ _ | _ _| | |_ _ | _ | _ _| _| | | |_ | |_| | _ _| | |_ _ |_ _| _ _ _| _|_ _|_ _| |_ _| |_| | |_ _ _ | _| | _| |_ _|_ _ | _ _ | | |_ | | |_ _ _| |_ _ _| _|_ | _ _ _| | | |_| |_ | |_ | _ _ |_ _ _ _ _| |_ _| | _| | _|_ | | | |_ _| | _| | | |_| _ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _ _ | |_ | | |_ | |_ |_ _ |_ |_ _ _| | | _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _| _ _ | | | | | _ _| | |_ _ | | | |_ | | |_ _ _ _ _ | _| |_ _ | | _ _ _ _|_ | _|_ | _|_ |_| _| | |_ | | |_ _|_ _ _ _| |_ | |_|_ | | _ _|_| |_|_ _ _ _| |_|_ | |_ _ | _ _| _ _ _|_ |_ |_ | _ _ _| | | _ _ _| _| | _ _| _ _| |_ | | _ _| | _ _ _| |_| _| | |_ | | _|_ | _ _|_ | | |_ _ |_| |_ | _ _| _| _ _|_ | | |_|_ | _| |_ | _|_| |_ | | _|_| |_| | |_ _ | | | _| | +|_| _| | |_ | | _ _| | |_ _ _ _ _| |_ _|_ _ _ _| | | | _|_ _|_ _ | |_ _ _ _| _ _| _ _ _ _ _| _ _| _|_ | |_ | | | |_ _ _ | |_ |_ _| _ _ |_ _ _ _| _ _| | |_ _ | _ _ |_ _ |_ _| | |_ | _ _ _| | _ _ _| _ _| | _ _|_ _ _| _| | | _| | |_ _| | _ _ _|_ | | |_| |_ | | | |_ |_ _ | | _ _|_ |_ _ _|_| _ | | | _ _ _ _ | |_ _ | |_ _ _ | |_ _| _| |_|_ | _|_|_ | | | _ _| |_ _ _ | | |_ _ | | | |_ | | _| _| _|_ _ _| | _ _| |_ | | _ _| _ |_ | _| _| _ _|_ | |_ _|_ _ |_ _|_ _| _|_ | | |_ _| _| _ _|_ _ _| |_ _ _| _| | | |_ _| | _|_ |_ | _ _| _ _ _ _| | _ _| _| | |_ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ |_ _ _| |_ _| | | | | _ _| |_|_ | | _ _|_| |_ _ _| |_ | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | | |_ _ _|_| _ _ _ _ _|_ _ |_|_ _ _ _|_ _ _ | |_ | |_ |_ _ _ _| | |_ _| | | _ _| | _|_ _ _ _|_ _| | | |_ _ |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| |_ _ _ _| _ _ _| | | _ _| |_|_ _| | | | |_ _ _| | | | |_| |_ _ _ |_ _ | _| | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ |_ |_| |_ | | |_ _| | _| |_| | _|_ _ _| | _ _| | | | |_ _ |_ _ | _| _ _ _ | _ _| _| _| |_ _ | | _| | | |_ |_ _ _ _| |_ _| _| |_ _| | | |_ _ _| | _ _| _ _ _| _ |_ _ | _| |_ _|_ | | _| |_ _ _| | _| |_ _ _ _ _ _ _ _ _| | _ _ _| |_| | |_ _| _|_|_ |_ | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ |_ _ _ _|_ _ _ _ _ |_ |_ _ _|_ _|_ _ _|_ | _|_|_ | | | _ _|_ _ _ | | | | | _ _ | | | | | |_ _| | _| _ _ _| |_| | |_ _| | | _ _| |_ _ _| | | _|_ | _ _|_ _| |_ _ |_ _ | _| _| _|_| |_ _ | |_ _ _ _ |_ | _ _|_ | | |_ _ | _ |_ _ _ |_ | | |_|_ _ _ _ | | _ _| | | |_ _|_ _ | _| | |_ | | _ | _|_ _ |_ | _| _| | | | | | | _ _| _| _| |_| _| _|_ |_ _| | _ _| |_ _| _ _| _|_ _ _| | | _| |_ _ _ _ _| |_ _ _|_ _| | | |_ _ _ | _|_| _ _ _ _ _| |_ _| | | |_ _ | +| _|_ _| | _|_ | _ _|_ _ _ _ _ _ _ _ | _ | | _ _|_ _| |_ _| |_ _| |_ | | |_ _ |_ _ | | |_|_ | _|_ _| | |_ | _ |_ _|_| _| | |_ _ | _ | | |_ _| _| _|_ _| _ _| | | | _| _| |_ _ | |_ _ | _ |_ _ _| _ _ |_| _| _| |_ | |_ | _| |_ _ | _ _|_ _|_ | | _| |_ _ |_| _ _| |_ _ _ _ _| | | | |_ _| _ | | _| |_ _ |_| | _ _ _|_ _ |_ _|_| | |_ _ _ _ _| |_ _|_ _ | | | | | | |_ |_ _ _ _|_ _|_ _ |_ _ |_ _ _ _| |_ |_| | | |_ _| |_ _| | _| |_ _ _ _ _|_ _ | |_|_ _ _| _ |_ _ _ | |_ | _ _| | _| _ | _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _| | |_ _| _| |_ | _ _| _ _| | _ _|_ _| | | |_ _ |_ _| | |_ _ _| _| | _ |_ _ | _ _| | _ |_ _| |_|_ _ _ |_ | _ _|_ | | |_ _ |_| | | _|_|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _|_ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ | |_ _ _ | | _| _ _ |_ _|_ | _|_ _ _ | _ _ | _|_|_ | |_ | | _|_|_ | | | _ _| _| | | | _ |_ _ | |_ _ | |_ _| | _ _| | _|_ _| |_ | _ _| | |_ |_ | _ _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _| _|_ _| _| _|_ |_ _ _ _|_ | _ _ _| | | |_ _|_ | | _| | _ _| _| |_ _ _|_ _ _| | |_ _ |_| | |_ _|_ _ _ _ | _ _| | _ _ _ _ _| | _| _|_ _ |_ _ | _ |_ _| | | _ _ _| | |_ |_ _ | _ _ _ _|_ _ _ | | _ | |_| _ |_ |_ _|_ _ | _ _ |_ | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ |_ | _ _ _ _ | |_ _| | | | _ _ _ _ | |_ _ _ _ _| |_ _| _ |_ | | | | | | |_ _| |_ _|_| |_ | | | _| _ |_ | |_ _ _ _| | |_ _ | | | _ _ _| | |_ _ _ _|_| _ |_ | |_ |_ _ |_| |_ _| _| _ _| | _| |_ _ |_ |_ |_ _| | _ _| |_ _| _ _| | _ _ _| _| _|_| |_ _ | |_ _ _| | | | | | _ _| | | _| | _| |_ |_|_ _ | | _| |_ |_ _ _| |_| | |_ _| _ _ _|_ | _| _| |_ _ _ | | |_ _ _ _| _ _| _| | | | | |_ _ _ _ _ _| | _| _ _ _ _|_ _ _ _ |_ _ |_ _ _ _| |_ |_ | | | | | _| +| _ |_ | | | |_| |_ _ _ _ _ _ _| _ _| |_ _| _| _ |_ |_|_ _ |_ _ |_ |_| |_|_ _|_ _ |_ _ _ |_ _|_ _ |_ _ _ |_| |_| _|_ |_ _ _ | | | |_|_ | | | | | |_ _|_ _ |_ _ _ | | | | _ _| | | | _ |_ _| | | _ _| | | _| _ _ _|_ | | _| |_ |_ | |_ |_| | |_ _| | _ | | | |_ |_ _ | _ _| |_ _ | | _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ _| _ _ |_ _ | _ _| | _ _ _ | _ _ _ _ _|_ |_ _|_| |_ | | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _|_ _|_ _ |_ _ | | |_ _ _ _| |_ _|_ _ | | | |_ _ _ _| | |_ | _|_ _| _| |_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | _ _|_ _| |_ |_ _ | | _ _| _| | |_ | | _|_|_ | | | _ _| _ |_ _ | |_ | | |_| |_ | | |_ _ _|_ _ | _ _| |_ _| | _ _| |_ _| _ _| _|_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _|_ _ | _ _| | _| |_| | _|_ _ | | _| _| _|_ _ _ _ _| _| |_| |_ _ _ _ _| |_ _| _ _ _ _| |_ | | _|_ _ | | |_ _ _ _| _ _ _|_ |_ | _| _ |_ |_| |_ |_ | | | | | _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| | | |_ |_ _| _ _ _| _ _ |_ _ | _ _| | |_ _ |_ _| |_ | _|_ _ _ _| | _| _ _ _ _ _ _ _ _|_ _ _|_ |_| _ _ |_ _ | _ _| | | _| | _| |_ | |_ _ | _ _| | | | | _| _|_|_ _ _ | |_|_ | | _ _|_| |_ _ _ | | | | | | | |_| _| _ _|_ | | _| | _|_ _ _ _| _ |_| _ _| _|_|_ | | | _ _| _ _ |_| | |_ _ _ _ _| _ | | _| |_ _ | | |_ _|_ _ | | _| | | _| _ _ _ _| |_ _ |_ _ _| |_| |_ _| _| _ |_ |_ _| | |_| _| _ _|_ |_ _ _ _|_ _ | | |_ _| _ | | | _ _ _ |_ _| | | |_ _| |_ |_ | _ _ _| _| | |_ _ _| | | _ |_ | |_ _ _ _| _ _| _| |_ _ _ _ _| _| _ _| | _| |_ _ | |_|_ _ _|_ _ _| | _|_|_ _ _ _| |_ |_ _ _ | _|_ _ _ _|_ _ _ | | _|_ _ |_ _ |_ |_ _ |_ _ _|_ _|_ | _ _| | |_ _ |_ _| |_| _|_ | |_ | |_ _ _ _| _| _ _ _ _ | |_ _| _| _ _ _ _|_ |_ |_| |_|_ |_ | +| _|_ | | |_ _|_ _ _| | | _ _ |_ _ | | |_ _ _| _| _ _|_ | |_| _| _| _| _ | |_ _ | _| _ _ |_ _ | _ _ _|_| _|_ | |_ |_ _| | |_ _ _ _| | |_ _| |_ _ |_ _ |_ _ _| _|_|_ | _ _| |_ _|_ _| _|_|_ | _|_|_ _ _ _ | _|_ _ | _|_ _ _ _ _|_ _ | | | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | | _| | | _|_|_ | | | _ _|_ _ _ | | | | _ _ _|_ | | |_| |_ | | | |_ |_ _ _| _ _ _ | _| _ |_ |_| | | |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ | _| |_ _ | _|_ |_ |_ _ | | |_ |_ _ |_ _| | | |_ _ | _ _|_|_ _ _|_ _ |_ _| |_ _ _| | _|_ _ | | | | | | | |_ | | | | | _ _ _ _|_ |_ |_| | | |_ _ |_ _|_ | |_ _ _ _ _| |_ _| _ _| |_ | | | _|_ _|_ | | _| |_ _ |_| _ | | | |_ _ _ |_ _ _ _| _ _| _| | _ _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _| | _ _ |_ _ |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | _ _|_| |_ _| _| _ _|_ _|_ _ _|_ _| _| _| _| _ _ _ _ _ |_ _ | _ | _ _|_ _| _|_ _| |_| _ _ | |_ | _ | | | _ | | _|_| _| _ _|_ | | | _| _| |_| |_| | |_ | _| |_ _| _ _ _ | _| |_ _ _ _| _ _| _| | _ _| |_ _|_ |_ _ _ _| _ _ _| | | |_| |_ | | |_ _ _ _ _ _| _|_ _ _ | |_|_ _ _| _ |_ | _ _ _ _ | |_ _ _ _ | | |_| |_ | |_ | _| | | | | |_ _| _ _| | _|_ _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_| | |_ _| |_ | _| |_ _ _ _ _| |_ _| _|_ | _ _ _| |_ | | |_ _ _ _ _| |_ _|_ _ | _|_ | | | _ _ _ |_ _| | |_ _ _| | | |_ _ _ _| | |_ _ _| |_ | | | | _ _| | | _| _ |_ |_ _ | | _| _ _|_ |_ _| | _| |_ _ _ _ _| _ | | | |_ |_ _ | _|_ _| |_ | | | _ _|_ _ | | _ _ _| | | |_ | _ _|_ _ _ | | | |_ _| _| | | | | | |_ _ _ | | _ _ _| | _ _|_ _ _| | | |_| _ _ _ _ | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _| _ _ _|_ | | _|_| |_ | |_ _ _ _| _|_|_ _ |_ _|_ _ |_ _ _|_ | _| _|_ _ _| |_ _ _ _ |_ |_ _ | | _| |_ _ |_ _ _ _ _| |_ |_ |_ _ | | | | +|_| _ _| |_ _ | _ _ |_ _|_|_ _ |_ _| | |_ _ | _| |_ _ _ _ _| | _ _|_| _| | _ _| | | | _ _| |_ _ _| | _ _ _| | | | _ _ _| |_ | |_ |_| | _ _ |_ _ | | | _ _ _| | _ |_| | _| |_ |_ _ |_ _|_ _ _ | |_ _ _ | |_ _ _|_| _ |_ | _ _ _ _ | |_ _| |_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _| | |_|_ _ _ _ _| |_ _| _ _ | | | | | | |_ _ |_ |_ _|_ | | _| |_ _ | | _ _ _| _ _| |_| _| _ _|_ | |_|_ _| | |_ _ _| | | _ | | _ _|_ _ _| _| _ _| _ _| | _| _| |_ | |_ _| |_ _ _ | | _|_|_ | | | | _ _ _ _ | |_ _ |_ | | _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| |_ _ _| |_ | | | _|_ _|_ _ |_ _ _ | |_ _ _ | | _ _| | _ _ _|_| |_ _ | | | |_ |_ _ | _ _| _| |_ _|_ _ | |_ _ | | |_ _ | |_ | _| | | |_ _|_ | |_ _ _ | | | |_ _ | | |_ _ _ | | _|_|_ | | | _ _|_ |_ _| | | _|_ | | |_ _ | |_ _| _ |_ _| | |_ |_ _ _|_ |_ _ _| | | _ _| |_ _|_ _ _ _ _| _| _ |_ |_ _ | |_ | |_ _| | |_ _| _| |_ | _| |_ _ _ _ _|_| | | _| | _| _|_ | | | _| | | |_ _|_ | | | |_ _ _ | | |_ _ | | _|_ _ _ |_ _ _ _ |_ _ | _|_|_ _|_ | | _| |_ _ _ _ _ |_| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _|_ | | _| |_ _| |_ _ _|_ _ | _ _| | | |_ _ _ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | |_ _| _| |_ _ | _ _ _ | |_ _ | | |_ _ _ _| _| _| _ _ _ _ _ _ | _ _| | _ _ _| |_ | | | _|_ _ _ | |_ _ _| | _| _| | |_ | | _| | | | _| | _| _| _ _|_ | _| _| |_ _ _ _ _| _ _| |_ | _ |_ _ |_ _|_ _|_ _ _ _| _|_| _ |_ |_| |_ _ _| _ _| |_| |_| _ _|_ _|_ _ _| _ _| |_| _| | | _ | | |_ _| | | |_ _|_ _ |_ _ _|_ _ |_ _| | _ _ _| | | |_ |_ _ | | _| | | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _| _ _ |_ _ | _ _| | | |_ | |_ _ _ _ _ _ _ _ _ _ _ | |_ _ | _ _|_| _| _| _| _ _ |_ |_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| _| | | _| | +| _|_ | | _ _|_| |_ _ | _ _ _| | _|_ _ _| | |_ | _ _ _|_| _ | |_ | | | _| |_ | _ _|_ _ | | | _ _|_ |_ _ | _| |_ _| | | _|_ | | |_ _ |_ _ _| | | | | _| _ _| | _ _ _|_ _| | _ _| | |_ _ _ _ _|_ | | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | _| | _ _ | _ _ |_ _ | |_ _ _| |_ | | |_ _ | | |_ |_ _ | |_ _ _ |_ | _ | _| |_ _ _ _ _| | _ _| _| _| _|_| |_ | |_| | _ _ _ _ _|_ _| | | _ _|_| _| _ | | _ |_ |_ _ _ _| |_ _ _ _ _| |_ |_ _ | | _| |_ _ |_ |_| | |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _|_| |_ | _ | |_ _ | | |_ |_ _ | | | | | _ _| | _| _ |_ |_ | | |_|_ | | _ _|_| |_ _ _ | | _| | _ _|_ _| _|_ _ |_|_ | |_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_|_ |_ _ |_ _ |_ _ _ _ _| |_ _| _ _ _| | _ | | | _ _| |_ _| _ _| _ _ _ _|_ | _ _| | |_ _ _| _ _ |_ _ | _ _| |_ _| |_ _ _ _ | |_| _| _| _ _|_ | |_| _| | | _| |_ |_ | | |_ |_ _ | _| _|_ _| |_ _ _| _ _| |_|_ _ _| |_ _|_ _ _ _ _|_| |_ _ _ | |_ _|_ _ |_ _| | | _ _ _ _ | | _| | _ | | | |_ |_ _ | _ _ |_ _ _| | _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | | | _ | | |_ |_ _ | _ _ _ |_ | _ _| | | | | _| |_ _| _ _ _ | _| _ |_ _ _ _| _ _| | _| | |_ | | _| |_ | _| | _ _|_ _|_ _ |_ _|_ _ _| | | |_ _| _| _ _ _| _ _|_| | _ _ _| _ |_ |_| | _ _|_| _ _ |_ _ | _ _| | | | |_ _|_ _| | _| | | _| | | | | | _| |_ _ _ _ _|_ | |_ |_ _ _ _ |_ | |_ _| _| _ | _ _ _ _ | |_ _ _| _ _|_ | |_ _ _ |_| _| _| _|_ _| _ _ |_ _ | _ _| | _|_ _| |_ |_ _|_|_ | | |_| _ | _|_ _ _ _ _| | _ _| | |_ _ _| | | | _ _| | |_ _ |_| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _| | | _ _| | | |_| |_ | | |_ |_ |_ | _ _ _ _ | |_ _ _ _| | | _ _ _| _|_| _| | _ _| _| _| _| _ _ _ | |_ | |_| |_ _ _ _ | _ _| | _| _| +| | | _|_ | | |_ _ | _| | _ _| |_ _ _ | |_ | |_ _| |_ _ _ _ _| _|_ | | | | | _ | |_ |_ _| _| | |_ |_ | | _| |_ | | | |_| | |_ _| | |_ _ _ | | |_ _| | |_ | _|_| _ _ |_ _ | _ _| | |_ |_ _ _ _ |_ _| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| _ _|_| _| | _|_ _|_ |_ _| _ _| | _| _ |_ |_| _| |_| |_| |_|_ | | _ _|_| |_ _ _| | | | |_ | _ _ _ _| | | |_ _ | |_ _ _ | _|_ _ _|_ | _| _ _|_ | | _ _ _| _| |_ _ _|_ _| | | | | _ _ _ _ _ _ _ _ _| | |_ _ _| _| | _| _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _ | | _| |_ _ _ _| | | |_ _ _| _|_ _| |_ _ _ _| |_| _| _ _|_ | | |_ | _ _|_ | | |_ _ | _|_|_ _ _ _| | | | | | |_ _ | |_ | | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ | |_ |_ _ |_ | | _ _ _ _| | | _|_ _| |_| _ _ _| _ _| | _| _ _| _|_| | _| _ _ _| _| | |_| |_ | | | _|_ | | _| |_ _ | _| |_ _ _ _ _| |_| _|_ _ _| |_ _ _|_ _ | _|_ _ | | _ _| | | | _|_ | | | _|_ |_ _ _ _| | _ _ |_ _ | | _ _| | _ _ _ |_ _ | | |_ _ _| _ |_ _|_ | _|_ _|_ _| | |_|_ | | _ _|_| |_ _| _ _| | | | |_ | _|_|_ | | | _ _|_ _ |_| | | |_ _ | | |_|_ | | _ _|_| |_ _| |_| |_ | | |_ _| |_| | _| | | |_ _|_ | | | | | | | |_|_ | _|_ | | |_ _| _| _ _| | _ _ _ _|_ _ _ | _ _| |_ _| | |_ | _ _ _ | _|_ _ _| _| _ _|_ | |_| _ _ _| | | |_| |_ | |_ | | | | _| _| |_ |_| |_| | | | |_ | _ _ _ _|_ |_| | | |_| _| _| _ | |_ _ | |_ _ | | _| |_ _ | | |_ _ _ _ _|_|_ _ _ | |_ _ | _| _ _ _| | | |_| |_ | | | _ |_ |_ | _ _ _| _| _| | |_ _ _ | _ _| _ _|_ _ _ _|_ _ _ | |_| |_ | | _| _ | | _| | |_| | | _|_|_ | | | _ _| | _ _ _| | |_ _ _ _| |_ _|_ | | _| |_ _ |_ _ _ _|_| _ | | _| |_ _ | _ _| |_ _ | | _ _ _| _| |_ _ |_ |_ | |_ _ |_ _ |_| | _|_ _ _| | | | | | | | |_ | +| _| | | _ _| |_ _| _ _| | _| | | | _ _|_ |_| _|_ | _ _ _ _ | |_ _| |_ _ _| | |_ _| | | | _|_ _| _|_ | | _|_ | _|_ _|_ _| |_ | |_|_ _ | _|_ _ _ _|_ _ _| | |_ | | _ _ _|_ | | |_| |_ | |_ | _ | | _ _ |_ | | |_ _| _|_|_ | | | _ _| |_ _ | |_ | | | |_ _|_ | _ _ _ _ | | |_ _ | _| _|_ _ _| |_| _ |_| _ _| |_| _| _ _|_ | |_ _ _ _| |_ | _ _|_ | | |_ _ | | _| _|_ | |_ _ |_ _ _ _|_| | | |_ _ _| |_ _| _| | _|_|_ _| | _ | | |_ _ | _|_ _ | _ _ _|_| |_ _| |_| _| _ _ _ _ | _ _| | _ _ _ | | | | | | _ | |_ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _|_ | _ _|_ |_ |_|_ _ | _ _| |_ | |_ | |_ _ _ _ | | _| |_ _ _ _ _| | _|_ _| | _ _| |_ _| _ _|_ _ _ | _ _ _| |_ _| |_ _| | _ _| |_ |_ _| |_ _|_ | |_ _ _ _ _|_ | |_ _ _| _ _ _| |_ |_ _ | | | | | |_ _ |_| _ _| | _| _ |_ |_ _ _ | | |_ _ | | _ _| | _ _| |_ |_ _ | | |_ _|_ | | _| |_ _ | |_ _| |_ _ _|_ | | |_ _ | | _ _ _| _ _ _|_ _ _ _ _ |_ _ |_ _ _|_| |_ | |_ _ _ _| |_ _|_ _ _ _ _ _ |_ _ _ _ |_ _ _ _ _ _|_ _| | | | _ _ |_ _ _| | | | _ _ _| |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | | | | _|_ _ _ _ _| |_ _| _ | |_ | | |_ _ |_| |_ | _ _|_ | | |_ _ | |_ | | _| |_ _ | | _|_ _ _| |_ _|_ _ _ _ _| |_ _ _| | |_|_ _|_ _ |_|_ _|_ |_ _ _| _| |_ _ |_ _| | _ _ _ | _ |_ | | _ _| |_ | |_ _| | | | _ _ | _| |_ _ _ _ _| |_ _ | _|_|_ _|_ | | _| |_ _| | |_ _| |_ _ _| _ _|_ _ _ _ _| | |_ | | |_ _ _| | _| _ _|_ _| _ _|_| _| | _| |_ _ _ _|_ _| | |_ _ _|_ | |_ _ _ _ _ _ _ _ | _ |_|_ _ _ _|_ |_ _ | | | |_ _|_ | | _| | _| _ _|_ | | | _ |_ _ _| _|_ _ _ _ |_ _ |_ | _ _ _ _ | |_|_ | _ _| | |_ _ _|_ | |_ | |_ _ _| |_|_ _ _ _ _| |_ _| | _ _| | | | _ _| | _| | |_ |_ _ | _ _ _ _ |_ _| | |_ _ _| | | | _ _| | |_ _ |_ _ |_ | |_ |_ | | | |_ _ _|_ _ _ _| _ _ |_ _|_ | | |_| |_ | _| +| | | | |_ _ _ _| _ _| | | | _|_| | | | _ _ _| _| | | |_ _| | _|_ |_ | _ _| _ _ _ _| | | _ | | _ | |_ _ _|_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_|_ _ _| | |_ _ _ _|_ _|_ | | _| |_ _ _| |_ |_ | _| _| _|_ _ |_ _ _ _ _| |_ _| _ _|_ _ _| _| | | | |_ _|_ _ _ _ _|_ _ _| |_| |_ _|_ _ |_ _ _ | _ _ _ _|_ |_ |_ | | | | _| |_ _ _ _ _|_ _ | |_|_ |_ _| | _ _| |_ _| _ _|_|_ | _| _| | _ _ _ _ _ _|_ _|_ _ _ _ | |_ _ | |_ _| _ |_| _| | | | | _| |_ _ |_ _| |_ _ _ | _| | | _| _| |_ _ | | _ |_ _ | |_ _ _| | |_ _ _| _| |_ _ _ | _|_|_ | | | _ _| _ _ _ | | | |_ _| | _ _| _|_ _ _ _ |_ | _| _| |_ _ _| | _ _ | _| | |_ _ _ _ _| | | _ |_ _ _ _| _ _| _ _| _ _|_| _ |_ | |_ | |_ | _ _| _ | _| | _|_ _ _ _ | |_|_ _ _ _| | | _ _| |_ _ _| |_ _ _| |_ |_ | | | |_| _| _ _|_ |_ | |_ _|_ _ |_ _| |_ _ | | | | | | _| | _|_ _| | |_ |_ _ | _ _ |_ _ _ _ _| |_ | _| | |_|_ _ | _| | _ _ _ _ | |_ _| _| _ _ _ _|_ |_ _| |_ |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | |_ |_ | _ _| _|_ _ _ _| _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_| | | _| |_|_ _| _ _ _ | |_ _ | |_ |_ _|_| |_ _| | |_ _| | _ _| |_ _| _ _| | | |_ |_ _ | |_ _ | _ | | _ _ | _ _ _ _ | _|_ _ | _ |_ _ | _ _ | _ _ _| _ | _| | | _ _| |_ |_| _| | | |_ | | _|_| _ _| | _| | _ | |_ | _ _ _| |_ _| | _ _ _ | | |_ |_ _ | _ _ | | _ _ _| | _ _ _ _ | |_| _|_|_ _| _ _| _ _| | | _| _ _ _| | _| _| _ _ _ | | _| | _ | | | | _| | _ _| | | _ _ _ _ | _| | _| _ _| | |_ | |_ |_ _ _ _ _|_ _| | |_ _| | | | _|_ |_ | |_ _ | | _| |_ _ | _| | | | | |_|_ |_|_ _ _ |_ _ _ _| _ _ _ _| | _ |_ _|_| |_ | | _|_ | |_|_ | | _ _|_| |_ _ | _ _| | | | | | | |_ _| | _|_ _ _ _ |_ _| _|_ _ | |_ _|_ _|_ _ _ _ | | _| | |_ |_ _ _| |_ | |_ _| | | +|_ | |_ _ _ _ | | |_|_ | |_ _ | | _| | _ _ _| _| | |_|_ | | _|_ | | | | _ | _ _| | |_ _| _| | |_|_ |_| _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | |_ _ _ |_ | | |_ |_ _ | _ _ | | | | _| | |_ _|_ _ _ _| _ | |_ _ _ _ _| |_ _ | _ | | _ _ _ _|_ _ | _ _ |_ _ | _|_ _ _| |_ |_ |_ _ _|_| | |_ _ _ _ _ _ _ _ _ _|_ _ | | |_ _ _ _| _ _| _ _ _|_| _|_ _|_ _| _ | _| _ _ _ _ | |_|_ |_ _| |_ |_ _ | | _| _ _| | | |_| _|_ _ _ _ _ | _|_ _ _ |_|_ _ _|_ _ _|_ |_ _| | _| _ _ _ _| |_| _ | _|_ |_ | |_ _ _ _ _| |_ _| _ _ | _| | | | | _|_ _ _| | | _| | | | _| _|_ _ _|_| |_|_ _ |_ |_ _| | | _|_ _| | _| _ | | |_ _ |_ _ | _| _ _ _| | _| | |_ | _ |_|_ |_ _|_ _ _ _ | _| |_ _ |_ _ |_ | |_ | | _| _ _| _ _ _| _ _|_ _ _|_| | _| |_ _ _ _ _| _|_ _ _ | |_ _ | _ |_| |_| | | |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| | _ _ _ _| _| _ _|_ _ _| | |_ _|_ _ | | _| |_ _ |_ _ _ _ _| |_ | |_ _ _ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ | _| |_ | _| | _ _| _ _|_ _| |_ _| _ _ _ | _|_ _ |_ _ _ _| _ _| _ _| |_ |_ _ _ _ _ |_ |_ _| |_ _ _ _| | _| _ |_ |_ | |_ _ _ | |_ _ _ _| _ _| | _| |_|_ | | _ _|_| |_ _| _|_ _|_ | |_ _ _ _ _|_ | _ | _| |_ | | | |_|_ _ | _ |_| | _| |_ | _ _|_ |_ | | _| | | | |_ _ | |_ | | |_ _| | |_ | | |_ _ _ |_ | | _|_ _ _| | |_|_ | | _ _|_| |_|_ _ _ | _|_ _ | _ _ _| _|_ |_ |_ | | | _ _| | |_ |_ _ | | | | | |_ _ | |_ _| | _ _| _|_ _| | |_ _| _| |_ _ | | |_|_ _ | | _| | | _|_ _|_ _ | |_|_ | | |_ _ _ _ |_ _ _ _ _ | | | _|_ _| | |_ _ _ _ _ _|_ _ | | | _ _ _| | | | _| |_|_ _|_ _| _| _ _ _ _ _ _|_ _ _ _ _|_ _ _ _| | _| _ |_ |_| |_ _ _ |_ | _ _|_ | | |_ _ |_ _| _ _|_ _| | | | | | | _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| | | _| |_| _| _ |_ | |_ _ _ _| | +| | |_ _ | _ _| _|_ _ |_ _ _ _| |_ | _|_ _ | | |_|_ _ | | |_ _ _ | |_ _| |_| _| | _ _|_ _| |_ | |_|_ | _| _| _|_ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _| _ |_ |_| | | |_|_ | | _ _|_| |_ _| |_| |_ |_ | _| |_ _ _| | _|_|_ | _| _ |_ |_ | | | |_|_ _ _| |_ | _ _|_ _|_ _ | |_ _| _| _ _|_ _ _|_ _| _ _ | |_ | | _ _ _ _ | |_ _ |_ _| | | _ _ | | | |_|_ | _ _ _| _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ _ _ |_ _|_ _| |_ |_ |_ _ _ | |_ _ _|_| _ | _| _ _ _ _ | |_|_ |_|_ | | _ _ _ _|_ |_| _| | _ _| _|_| |_ _ _ | _ _ _| |_| |_ _ _| |_| |_|_ |_ _| _| | |_ _ _ _| | _| _| | | _ _ _| | _ _ _| _| _ _|_ | |_ | |_ |_ | |_|_ _|_ _ |_ _ _ _|_ _| |_ _| _|_| | | | | _| |_ _ _ _ | | |_ _ _| | | | | _|_ | | |_| | |_ _ |_ _ | | _ _ _ _ | | |_ _ _ _ _| _ _ |_ _ _| |_ |_ | _ _| |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ _| _| _| _ _| | _|_ _ _ _| | |_ _ _| | | _ | | _ _|_ _ _| | |_ _ _| |_ _ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ |_ | | | | | _| | _ | _ | _| | | |_ _|_ | _ _ _ _ _ | | |_ _| | | _ _ _ _| |_ |_ | _|_ | _ _ _| _| _ _|_ |_ |_ _ _ _ _ _ _ _ | | |_ _ |_ | _ _|_ | | |_ _ | | _ _ | |_ _ _ _ | |_|_ | |_| _| _ _| |_| |_ _ _| | | _| _|_ |_ |_| | | | | |_ _|_ |_| | |_|_ _ | | | | |_ _ |_| |_| _| _| _ _|_ _|_ _ _ _ _ _ _|_| | _ _|_ | | |_ _ | _| | | _ | |_| _ _ _| _| |_ _ _| |_ _| | | | _ _| _| | | | | | | | _ _ _ _ | |_ _| _| _ | |_ |_ |_ _ | | |_ _ _| |_ _ _ _|_|_ _ _ | | |_ | _ _|_ |_ _ |_ _ _ | |_ _|_ _| _ | _| _ _ _ _ | |_ _| |_| |_ _| | |_| | |_ _ _ | |_|_ _ _| _ | _| _ _ _ _ | |_ _ | _|_| _| _ _|_ |_ | |_ |_ _| | _ _| |_ _| _ _| _ | _| _ _ _|_| |_| |_ _ | |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | |_ _ _| _| _ _|_ |_ _ _ | +| _| _ _|_| |_ _ | |_ _ | | |_|_ _ _| | _|_ _ | | | | | | | |_ | | | | | _ _ _ _|_ |_ _ _ _| | _| |_ _ |_ _| | |_ | _|_|_ | | | _ _|_ | | | | | _ _ _| |_ |_ _ _| |_ | _ _|_ | | |_ _ | |_ | | | |_ _ _| _ _| | | _ _ |_| _| _ _|_ |_ _| |_ _ _ _ | |_| |_ _ | _| _ _ |_ | _ _| | _ _ | _ _| | _ _| _| |_ _ | | _| |_ _ | | _|_|_ | |_ |_ _|_ _ |_ _ _ | | |_ _| | | |_ _ |_ _| | |_ _ _| | | _|_ _ |_ _ _| _ _ _ _|_ |_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ | | |_ _ _| |_ |_ | |_ | | _ _ _ _ _| _|_ | _ _|_ _| _ |_ |_ _ | |_ _ | | _| _| | _| | _ _ _| | |_ _ _| _ _ _| _|_ | _ _| |_ | |_ _|_ _| _|_ _ _ _ |_ _ | | _ _ _ _|_ |_ |_ _ _ | |_| | _|_ _ | _| |_ _| _ |_| |_|_ _ | _ | |_ _| _ | _ _| | | |_ _ | | _| |_ | _|_ | | |_ _ | | _| _ _| _ _|_ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _ _| |_ | | _| |_ _ _ | | _| _| _| | |_ | |_| | | _ _ | |_ _ | _ _ _ _| _|_ | _|_|_ | | | _ _| _| _ | | _|_ |_| |_ _| | _| _| | _| | | |_ _ _| |_ _|_ _ _ _ _| _ |_ | _|_ _|_ _ |_|_ _ | _ _ _ _|_ |_ _ | | | | | | _| |_ _ _ _ _| _| _ _ _ _ | |_|_ |_ _ |_ _| _| | _ _| |_ _| _ _| | |_ _ _ | _ _| _| |_ _ | |_ _|_ _| _ _| _| |_ | _|_|_ _ _ _ _ _| _ _ _| | |_ _ _ _ _ _|_ _ _ | _ _ |_ _ _| | |_ _ _ _| _|_ _ _ _| _ |_ | _ _ _ _ | |_|_ _ | _ _| |_ _| _ _| | _|_ _ _| |_ |_ _ |_ _| | |_ _ _ _| | | |_| |_ _ _ | _|_|_ _ _| |_ _| _ | | |_ _ | | _| |_ |_|_ _ | | _|_ _ _| | | _ _ | _ |_ _|_ _ |_ _| | _ _| |_ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | |_ _ | | | _| _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_|_ | _| |_ _ _ _ _| _| | |_ | _|_ _ _ _| _ _| | _| | |_ | _| _ |_ |_ | _| | |_ _| |_ _| | | |_ _ |_ _| | |_ _ _| | | |_|_ |_ _| _| |_ _ _ _ _ _ _| _ _| +| _|_ | | |_ _ |_ _ _| | | |_|_ | _| _|_ _ _ _| |_| | |_|_ _| _|_ _|_ _ _ _|_ _| |_ _ _| |_ | | | | | |_ _|_ _ | | | _|_ _ _ _ _| |_ _| _ | |_ _| | | | |_ _ _ _| _| _| _| |_ _| | _ _| |_ _| _ _| | _| |_| | |_ _ | |_ _| |_ _|_ | | _| |_ _ _ _ _| | | | _|_|_ | _ _| | | _| |_| _|_ | _|_ | |_ _ _|_ _ _ _ _| _| |_ _| | |_ _ _|_ | | | |_ _ _ _ _| | | _ |_ _ | | | | | | _|_|_ | | | _ _|_ _ _ _ |_| |_ | _|_ _ | | |_ _ _| |_ | _| _|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | | |_ _| _| _ _|_ _ _| _| | _|_|_ _| |_ _|_ _ |_| |_ | _| _| _ _|_ | _|_ _ |_ _|_ _ | _| | | | |_| | _|_ _ _| | | _ _ _|_ _| _ _ _| _|_ _ _ _ _ | _ _ _ _|_ _ | | |_ _ _| |_ |_ | | | |_ | | | _ | |_|_ _ _| | | _| |_ | | _ |_| | | |_ |_ _ _| | |_ | _ _|_ _ _| | |_ _| _| | _ _| |_ _| _ _| |_ |_ | | | _ _ _ _|_ |_ |_ _| _ _ _ | _| _ _|_ _ _ _| _ _| | | |_ _ | _| _ _|_| _|_ _ _ _|_ _| | |_ _ _|_ |_| | _|_ _ _| |_ | |_ _| _ _|_| |_ _ _ _ | |_ _ _ _ _| |_ _| |_ _ _|_ | | | _ _ _| _| | |_| _| _| | _| |_ _ | | _ _ |_ |_ _|_ | _| | _ _|_ _ | | |_ _ _| |_ |_ _| | | _|_ _| | |_ _ | _ |_ |_ _ | | _| |_ _ | | _|_ _ |_ | |_ _ _ _| _ _| | | | | | _ |_ _ _|_ | |_ | | _ |_ _ |_ _ | _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| |_ _ _| |_ _| |_| _ _ _| _ | | | |_ _| _ | | _| |_ _ | | |_ _ _ _| _ _| _ _|_ _ _ | | |_ _| | _ _|_ _ _ _| _| | |_ |_ _ | | |_ _ _ | |_ _ _ _| |_ _ _| _|_ _ _| |_ _|_ | |_| | | | _ | | |_| | | _|_ | |_ _ _ _| _ _ _ _| | | |_ _ | |_| _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_ _| _ _| | |_ |_| | | _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | | _ | |_ _ _| _ |_ _|_| _| _ _ _ | | |_ _ | |_ | _| _| _ _|_ | | _ _|_ |_| _|_ _ _|_|_ | | | _ _|_ _ |_| | | | |_ _ | |_ _ _ _ _| |_ _ _ | +| | _ _| |_ _| _ _| _| _ _| |_ _ _ _| |_ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _ | _ _|_ _ _|_ _| | | |_ | |_| _ |_ _| |_ | | _ _ _ | _| | |_| _ _|_| |_ _| | | |_ _ | |_ _ | |_ _ _ _| _ _| | _|_ |_ | |_ | _| | | _ _|_| _ |_ | |_ _ _ | | _|_ _|_ _|_ _ _ _ _ _| | _|_|_ _ _| |_ _| |_ _ |_|_ | _ _ | _ _ _| _ _ _| _|_ _ _ | | |_| _ _ |_ _ |_| |_| | _ _ _| | _|_| | |_ _ _ _ _ _| |_ _| _ _ | |_ | | _|_ | | |_ _| _| _ _|_ _ _|_ | | _ _ _ _|_ | _|_|_ | | | _ _| _ _ _ | | | |_| |_ | _ _| | _ | _|_ | | _ _ _ _|_ |_ _ |_ _ _| _| | _| |_ _ _ _ _| | | _ _ _| |_| |_ _ _|_ _ _ _| |_ _ | _ _| | |_ _ | _|_ _ _ _| _|_ _ | |_|_ | |_| |_ _| |_| _| _ _|_ _ _| | |_| | |_| _|_ _ _|_ |_ | _ _ _ _|_ _ | | | |_ | | _| _| _|_ | | _|_ _ | _ | _|_ _ _| _| | |_ _ _ _| _ _| |_ |_ | | _|_ _ _| |_ | |_ | | |_ _|_ | _ _ | _| | |_|_ _ _ _| | | _| | _ _| _ _ _ _ | _| | |_ _ _|_ _ _ _| _ _ _ | _| _ _|_ | | |_ _ | _|_ _ _ | | _| |_ _ _ _ _|_| |_ _ |_ | _| |_ _ _ |_ |_| |_ |_ |_|_ _| _| | _| | _ _ _| |_ | | |_ _ _| |_ _| _| _ _|_ _ _| _ _| |_| _ _ _|_ | | _|_ |_ _ _| _| | |_ _ _| | | |_ _ _| | |_ |_ _ _ | | |_|_ |_|_ | | |_ | | _ | | | _|_| | |_ _| _| _| | _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ | | |_ _ | |_ |_ _ | _ |_ _| | | |_ _ |_ _| | |_ _ _| | | |_ _ _ | | | |_ _ _ _ |_ _|_ _|_ _| | _ _ _ |_| _| _|_ | | _ _|_ _| _ |_ _|_ _ | | |_| _ _ _| _ _ |_ _ _ _ _|_ | | |_ _|_ _ _| | | _ _|_ | _|_ _ _ _ _ _ _| _ _ _| |_ _| _ _| | | | | | | _|_|_ | | | _ _| _ _ | | | | _ _| _|_ |_ |_ _| _| _ _ | _|_|_ | | | _ _| | _ _| | |_ | |_ | |_ |_| _| |_ _ _ | |_ _| |_ | |_ _|_ _ |_ _| _|_| _| |_ _ _ _ _| |_ _ _ | | _ _| |_ _ _ _ _| |_ _| | _ _|_ _ | | _|_ _ |_ _ | | _ _ _ _|_ |_ | | +| |_ _ _ _| _ _| | | |_ | _| | _ _| _| _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_| | _ _ _ _ | | _| _|_ | | |_ _ | |_ _ _| _|_ |_ | | |_ _| _ |_ |_ _| |_ _| | |_ | _| |_ | | | |_ _ | | | | _| |_ _| | | | _ _ _| |_ | |_ | _ _| |_ _ _| _ _ | |_ _ | _| |_ _ _ | |_|_ |_ | | |_ _ |_ | | _|_ _ | _| _ _| | _| _ _ _| | _| _|_ _ _ | _| _| | | _ _| _ _ _|_| |_ _ _| _ _ | |_ |_ _ _| |_ _ _ _|_ |_ | _ _| | _ _| _ |_ | _ _ _ _ |_ _ _ _ _| |_ _| _ _ | _|_ | |_ | | _|_ | _|_| _| |_ _ |_ |_ _ _| |_ | | | _| _| |_ _ _ | _|_| _| _ _ _|_ | | _ _ | _|_ _ _ | | _| | | _| | |_ _ | _ _ _| _ _| |_ _|_ _ |_ _|_ _ _| | _ _| _ _| | | | |_ | |_ _ _| _ _ _ |_ _| _|_ _ _ _ |_ |_ _ _ _|_ _|_ _ |_ _ |_ _|_ _| |_ |_ | |_ | _ _ _| |_ _ |_ | | |_|_ _| | | |_ _| _| _ _|_ _ _| | |_ _|_ _ _ _ _|_ _|_ | | |_ _|_ _ |_ _ _| _|_ _ _ _| _ _ _ _ _ _ |_ _ _|_ _|_ _ _ _ | | | |_ _|_ | | _ _| |_ _| _ _| _| | |_ _| | | _| | | _ _| _ |_ |_ _ _ _| | |_ _ _ |_ _|_ | | |_ _|_ _ _ _ _ _ _|_ _ _| _ _| | _|_ | |_ |_ | _ _| | _ _| |_ _ | _| _| _| |_| | | | _ | _| _ _ _| | |_ _ | _ _| _ _| _ _| _|_ _ |_ _ |_| |_ |_| | |_ |_ | | | _ _ _|_ |_ |_ |_ _|_ _ _ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| |_ _| _ _|_| _ _| |_ | | | _|_|_ | | | _ _| | | |_| | _| _ _| |_ _|_ _ |_ _ |_ _ _ _ _| |_ |_ _ _ _ _| | _| |_ _ _ _ |_ _ _ _ _ _ _|_ _ |_ _| | | | _ _ _| | | |_ _ _| |_ _|_ _ | |_ _|_ _| _ | | | _ _ _ _ | |_ _ _ _| _ _| | _|_ _| | _| |_ _ _ _ _| |_ _| _| | |_ _| | | | | |_|_ |_ | _ |_ | | |_|_ _ _ _ _| |_ _| | |_ _| _ _| | |_| _|_ |_ | |_ _ _ |_ _| _ _|_ _ _|_ _ _ | |_ _ |_ _ | |_ _| _ _| _ _ |_|_ | _ _| | _ _ | | _|_ _| | _ _ _| |_ |_ |_ _ |_ |_ _ _| |_ | _| +| |_ _ _ | | |_|_ _ _ | | | | | |_ _| | _| _ _| |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _| | _|_ _ _ _|_| _| |_ _ _ _| _|_ _ _ _ _| |_ |_ _| |_ _ _| _| _ _|_ | | | _ _| | | _|_ _ _ | | | |_|_ _|_ _ |_ _| | | |_ _ _ _ _ _|_|_ _ _ _ _| |_| _| |_ _ _ _ | _| | _| |_ _ | | | | | |_ _|_ _ | |_ _|_|_ _ |_ | | |_ _ _| |_ |_ _ | |_|_ |_| _ | |_ |_ _ | | |_ _ _| | | |_ | | | _ _ _ _|_ |_ _| | _|_ | | | _| _ |_ |_ _| _| _|_ | _|_ _ _| |_ _| |_ _ | | _| _ | | | _ _ _| | _ _ _| |_ | |_ _| |_ _ |_ _ _ _ | |_ _| _| _ _|_ _ _| | |_| | |_| _| |_ | _| _| |_ _ | | |_ _ _| |_ _| | | |_ _ _ _| | | | |_ | _|_ _ _|_ _ _ | _|_ _ | _ _ _ _ _ _ _ _ | |_ _ |_ | _| | |_ _|_ _ _| | | _ _ _ _ _ _|_ |_ _ _ _| | |_ | | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| _|_ | |_ _ | _|_ | _| |_ _|_ _ |_ _ _| |_ | _ _| | | _|_ _|_ | _| _ | _ _ _| | |_ _ _ _ |_ _ _ |_ _ _ | |_ _ _ _| _ |_ | _ _ _ _ | |_ _| | |_ _|_ _ _ _ _|_| |_ _ _ _| _ _| _| | | _|_ _ _ _ _|_| | | | | _| _| _ _|_ | _ _ _| _| _ _ _ _ |_ _ _|_| _ | | | _ _ _ _ | |_ _ | | _| _|_ _| | _|_ | _|_ |_ | |_ _ | | _ _|_| _|_ _ _| | |_ _| | | _ _| | _| | | | |_ | _ _ _ _|_| |_ |_ |_ _ |_ | | |_ _ _|_ _|_ _| |_| | | | _ _ _| | _| _ _|_ _ _ | | _|_|_ | | | _ _|_ | _ | | _ _| _ _| _ |_ _| _|_ _| | |_ _ _ _ _| |_ _| _ _| |_ _|_ | | | | | |_ |_ _ | | | _ _ _ _|_ |_ _ _ | |_ _ _ _| _ | _| _ _ _ _ | |_ _| |_ _| _|_| | |_ _ | |_|_ _|_ | _ _| | | _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | | | | |_ _ _ | | |_ _| _ | _ _ _ | _|_ |_ _ _| |_| _|_ _ |_|_ _|_ _|_ | |_ _|_ _ _ _ _| _ _ _| |_ _|_ | _ _|_| _| _ _| |_ | _ |_ _ _ _| | _ _ _| _ _| _ _| | _ |_ | _ _|_ _ _ _ | | | |_| |_ | | | |_ |_ _| | | | _ _| _ |_ |_ _ _ | | |_ _| _| _ _|_ _ _|_ | +|_ _ _ _ |_ _|_ _ |_ _ _| | | _|_ _ _| _| _| | | _ _|_ | _|_|_ | | | _ _| |_ _ | | |_ |_ _ |_ _| _ _ _| _|_ _ | | |_ | _ _|_ _ _| _ _|_ | _| |_ _ _ _ _|_| | | | _| | _|_ | _| |_ _| _ _ _|_ _ | | |_ | _ _ _ _ | |_ _| _ _|_| _|_ _ _ _ |_ _|_ |_ _ _| | |_ _| |_ _| |_ _ _ _ |_ _| |_ | | | |_ _| | | _|_ _ _ _ |_ _ | _ _| |_ |_ | _| |_ _| _ | |_ | | | |_ _ _| |_ | |_ _ _ | |_ _| _| _ _|_ | |_ |_ _| |_ _ |_ _| _|_| _ _| _| | |_ _ _| _|_| |_ _|_ | _ |_| _ |_ |_ | |_ | | _|_ _ |_ | |_ | _ _| | _ | _ _|_ _ _|_ |_ _| _| |_ _| _|_ | |_ _| _| _ _| | _ _| | |_ _| _ _ _ _| |_| | |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ | | _| |_ |_|_ _ _ _ | |_ _ _| _ _ | |_|_ _ | _ _| | _| | |_ _ | | _| |_ _ |_ _ _ _ _| |_ | |_ _ | _| |_ | _| | _|_ |_ _ |_ _ _ | | | |_ | _|_| _|_ _ | _| | _|_ |_ _|_ | |_| | _ _| _ |_ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_ _ _ |_ _ _ _ _ | | | | |_ _ |_ _ _ _| _ _ _ _ _ _| | | | _| |_ _ _ _ _| _ _ |_ _ _ _| |_ _ | | | |_ _| _ | | _| |_ _ | _|_|_ _ _| _ | |_ _| |_ _ |_ _| _|_ | |_ _| _ _ _| |_ _ _|_ _ _ _|_| |_ _| |_ _ _| |_| |_ | |_ | _ _ _ _|_ |_ _ _ _| | |_ |_ _ _ _ _| _ |_ |_ | |_ _ | | _|_ |_ _|_ _ _ _ |_ _| |_ _ _ _ _| |_ _| _ |_ _|_ | | | |_ | | |_|_ |_| |_ _ _ _| _ _ _ _ _ _ _ _| _ _|_ | | |_| _ _|_ _|_ _ _|_ _ | |_ |_ _ _| |_ |_ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ |_ _ _ |_ _| | |_ _ | | |_ | | _| |_ | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | |_| |_ _|_ _ |_ _ | |_ _| _| | _|_ _ _|_ | _| _ |_ |_ |_ |_ _ | | | _|_ _ | |_ _ _ | | |_ |_ _| | _ _| | _ _ _| _| | |_ | |_ |_ _ |_ _| |_ _ _ |_ _ | | _ _| | _| _|_| _ _ | |_ _| _|_ | | _| |_ _ | | _ _| | |_| _| _| _ _|_ | _| | |_ | _ _| | _| _ _ _ _| +| _ _ |_ |_ _|_ _ | _| |_ _ _ _|_ | | _|_| | | | |_ _ _ _ _| |_ _| _ _|_ _ _| _| | | |_ |_ _ |_ _ |_ | _ |_ _| | | |_ _| | _ | |_ | _ | |_ _ _ | _ _| | | | | | _ _| |_ _|_ _ _ _ _ _|_ _ _| | |_ | | _ | | _| |_ _ | | _ _ _| _ | | | |_ _ | _ _|_| | _ | _ _| _ _ _ _ | |_ |_| |_ _| | | | _ _| | |_ _ _ | |_ _| _|_| | |_ _|_ | | | _ _| | |_ _| | _| |_ _| _| _ _|_ _ _| |_| _ _ _|_ | _| |_ _ _ _ _| | |_ |_ | | |_ _ |_ _ _| _ | _| _ | | |_ | _ _ _|_ |_| _| _ _|_ | | |_ _| _ |_ | _| _|_ | _|_ | |_ _ | _ _ _|_ _ _| _|_ _ _ | |_ |_ | _ _| | | | | _| | _ | _| _ |_ | |_ _ _ _ _ |_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ |_ _ _ _|_ _ |_| _ _|_ | _ _| | _| |_ _ | _| | _| | | _|_ _| | |_ _ _|_ | | _ | | _ _|_ _ _| | |_ _| | _|_ _|_ _ |_ _ |_ _ _ _ _ _|_ _ _|_ _ _| _ |_ _ | _| |_ |_ _ _ _|_ _ |_| |_ _ _| |_ _ _ _ _| _ _|_ | |_ _| | | |_ _ |_ _| | |_ _ _| | |_ | |_ | _ _| | _| |_ |_ _|_ _ |_ _| _ _ _| _ _| | | | | |_ _| _ _ _| | | |_| _ _| | |_ _| | | |_ _ |_ _| | |_ _ _| _| |_ _ _ | | | |_ |_ | | |_ _ |_ | |_ _ |_ _ | |_ _ | |_ _| _ _ _| _ |_| _ |_ |_ _| |_ |_ _ _| |_ | | | _ |_ _ _| _ _ |_| _| _ _|_ |_ | _| | |_ _ |_ _ _ _ | |_ _ | | _ _ | _ _ _|_ _ _ _ _|_| |_ | |_ _|_ _ |_ _ |_ _ _ _| |_ _ |_ _ | | _ _ _| | _| | |_ |_| _ _ _ _ | |_ _| |_ _| _| _ _|_ _ _| | | |_ _| | | |_ _ |_ _| | |_ _ _|_ | | _ _ _| |_ | | _|_ _ _| |_| | | | _| | | _ | |_ _|_ | _|_|_ | | | _ _| _ _ | | |_ _ | |_ |_ _ | |_ _ _ _| _| | _| _| |_| |_| _| _ _|_ |_ _ _ _| | |_| |_ _|_ _| | |_ | _|_ _| |_ | | _ _|_ _ _ _|_ _ | _| _| | | | |_ |_ _ _|_ | | _|_ | _ _| | |_ | _|_| _| _ _| | _| |_ _ |_ | | |_ |_ _ | |_ _ _ | | _ _| _| |_ _ _ _ _| | | | _|_ | _|_ _| _ | | +| | | _ _|_ | _ _| | | _ |_ _| _ _ _| |_ | _| |_ | _ _ _ _ _ _ | |_ _ _ _ _| |_| |_ _ _ | |_ _| | _|_ |_ | _|_|_ | | _|_| |_ _| _| | _|_ | | |_| | |_ |_| |_| | |_ _|_ |_ _ _ | | | | | _ _| |_| |_ _| | |_ _ _| | _ _|_ _ | | |_ _| |_|_ | |_ _|_| _ | | |_ _| |_ |_ _ | | _ _| _| _|_ _ _ _|_ _ _ _| | _ _|_ _|_ _ |_ _ _ | |_ _ _ _| |_|_ | _ _|_ _ _ _|_ |_ | _ _| | _| _ _ | _| | | _| |_ _ _ _| _| | | | | |_ _| |_ _ |_ | | _ _| _| |_ _ |_ _| | _|_| | | | | _| |_ _ _ _ _|_ _|_ |_ _ _| |_| |_ _| _| |_ _ |_|_ | _ _| _ | _ _ _| _ _ |_ | |_| _|_ | _|_| _| |_ | |_ _| |_| _| _ _|_ |_ _ | _ | _|_ _| | | |_ _ |_ _| | |_ _ _| | |_ _| _ _ | |_|_ | | _ | | | |_ _ _| _| |_ | | | | _| _ _| _| _ _| | |_ | |_| | _ | _ _ _|_ _ |_|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _| _ |_| |_ _ _|_ _ _ _ | |_|_ | _ _|_ _ _ | |_ _|_ _ | | | |_ | _|_|_ | | | _ _| | _ _ _| | | _| | | | |_ |_ _ _| | | _ |_ _ |_ _ | _|_ | _|_ _| _|_ | |_ | | _ _ _| |_ _|_ | |_ | | |_ | _|_|_ | | | _ _| _ _ _ _ | | _ |_ _| | | |_ _ | |_ _|_|_ |_ |_ |_ _ _|_ _| |_| | |_ _| | |_ _ | _ |_| _| _ _|_ |_ |_ |_| _| _ _|_ _ _| _|_ |_| _ _ _|_ | | _| |_ _ _ _ _| |_ | _| | | _ | | _| |_ _ | |_ _| _|_ _ _| _ _ |_| | _ |_ |_ |_ _ |_ _ | | _ _ _ _|_ | _ |_ _|_ _ | |_ _| _|_ _|_ | _ | | _| |_ _ |_ | _ _| | | _ _ |_| | |_ _ | _|_|_ | | | _ _| _ _ _ | | | _ _ _|_ _ _|_ _ _ _ | | _| | |_ | | |_ _| | | |_ _|_ _ _ _ _| |_ _| _| _ _| | | | | _| |_ _ _ _| | |_ _ | |_ _ | _| | |_ _ _| _| |_ _ _ _ _| | _| _ |_ _ _| _ |_ |_ _| | |_ _ _ |_ _| | | _ _ _ _ | _| | | _| _| |_ _ _| | _ _ _ _| | | _ |_ | | _| | | _ _ _| _ | |_ _ _| | | _| |_|_ | | _ _|_| |_ _| |_ _ _| |_ | |_ _| |_ |_ _| |_ _ |_ _ _| | | | +| | |_ _ _ _ _|_| | _ _| |_ _|_ _ _ _| _ _ _| | | | _|_ |_ |_ _| |_ _ |_|_ | _| _ |_ |_ |_ | | | _| | _| | | |_ _ _ _| |_ _ |_|_ | _| _| _| _| _|_ | | _|_ _ _ _ _| | _ _| _|_ |_ _|_ _| | |_ | _| | _| _ _| _ _| _ _| _| | | | | | _| _ _| |_| _ _| _| |_ | _| | _| |_ _ | _| | _ | _ _ _ _ | |_ |_ _ _ _| _ _ _ |_|_ | | | _ _ |_| |_ |_ _ _ | | |_ | _| _ _| _ _|_ _ _|_ |_ _ _ |_ | |_ | | | |_ |_ _ _ | |_ _| | |_ _| |_ | | |_ _ _ _ _| _ _ _| | | |_| |_ _ | _ _ _ _ _ _ _ _ _ _| _|_| | |_ | |_ |_ _ |_ _| _ _ _| |_ _ | _|_ _ |_ | |_ |_ _| |_ _ |_ _| | _|_ _ | | _| |_ _ _ _ _ _ _| _|_ |_ _|_| | _|_|_ | | | _ _| _ _ _| | | _ _| | _| |_ _ | | _ _| | |_| | |_ _ |_ | | | |_| | |_ _| | | | | _ _ _| |_| | _|_ _ _| _|_ | _ _ _ |_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _|_ | _ _ | | _| |_ _ | | |_ | _ _ |_ _|_ _ | | | |_| | | |_ _ _ _ _| | _|_ _ _| | | | | | |_| |_| | _ _ _ _| _|_|_ | | | _ _| |_| _ |_ _ _ | _| _| | |_ _|_ | | _| | | | _| |_ _| |_ _ _ _ _| |_ _| | _| _ _| | | | _ _| _|_|_ | | | | | _| | | |_ _| | _ _| _| _| |_ _| _ _|_ _ _ _| | _| _| |_ _ _ _ _| | | | | _ _| | _ _ _| _| |_ |_ _ |_ |_ _ |_ _ _ | _ _ _ _| | _ _| | | |_| |_ _ _|_ | |_ |_ | _ _ _| | | _|_ | _ _|_ | | | |_ | | | |_ _ _| |_| |_ _| _ _ _ | |_|_ _ |_ _ _ _ _ |_ _| | |_ _ _| | | _|_ | _|_| |_ _ |_ _ _|_ |_ _|_ _ _ _ _| |_ _| _ _|_ | _ _| | | _| _ _ | |_ _ |_ _| |_ |_|_ | | |_ _ _ |_ _| | _ _ _ _ | _ _ | | |_ | _ _|_| |_ _ _ _| | _| _ |_ _ _ _| | | |_|_ _ | | _ _ |_ | _ | _ _ _| |_ | | _ _ _ _|_ | _ _ _ _ | |_ _| | | | _ _ _ | | | _|_ _|_ _| _| _ _ _ _| _ _ _ _ _ _|_ _ _| |_|_ _|_| | |_ _ _ _ _| | |_ _ |_ _| | |_ |_ | _ _|_ | | |_ _ | _ _ |_ | |_ _|_ |_| _| _| |_ | |_ |_ _ |_ |_ | +| |_ _ _ _ _ | |_ | _ | | _ _ _ _ _ _ |_ _ _| |_| | | |_ _ |_ _ _ |_| _| _ _|_ | |_ | | | | | _ _|_ _ | |_ _ _| | _| |_ _ |_ | _|_ _| _| _| | | | | _ _ _ _ | |_ _|_ _ |_ _ _ _| | | _|_ | |_ | | _ _| | _ _ | | _ _| | | _|_ _| | _ _ _|_ | |_ _ _| |_ |_ |_ |_ | | | | |_| |_ |_| | |_ _ | | _| |_ _ _ _| _ _ _ _| | | _ _| | | |_ _ _|_ | | |_ _ _| | _ _|_ _ _|_ |_ _|_ _ _ _| _ _| | _|_ _ | | | | | |_ | _ _| |_ | | | | _ _| | | |_ _|_ _ _ | _ _ _| | | |_ |_ | _|_| |_ | _ _ _ _ | |_ _ _| | | |_ _ _ _ _ _| | _ _| | _ _| |_ | | | | |_ |_ |_ | | |_ _ |_ | _ _ |_ _ _ _ |_ _ _| | |_ |_ | _ _| |_ _ _ _ _| |_ _| _ _| _|_ _| |_ | _ _ _ _| | _|_| | _| _| | _| |_ _ | | |_|_ | |_ _ _ _| | | |_ _ _ | |_ _ _ _| _ _ _ _| | |_ | _ _| _ |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _|_ _ _ _ _ _|_| | | | | |_ _ _| | | | _|_ | _ | _ | |_ _| | |_ | _|_ _ _ _ _ _ _| | | _ |_ _|_| |_| |_| _ _ _ _| | _ _ _ _ _ _ _ _| |_| |_ _ _ _ _ _| _ _| | |_| _|_ _ | _ _| | |_ | | |_| |_ |_ _ | | _ _ _ _ _ _ _ | | _|_| | | |_| _ |_ _ _ _ _| |_ _|_ _|_ _| _| | | _ _| | | _ _ _|_ | _ _ _| | | _ _|_ | |_ _ _ _ _ _ _ _ _|_ _ | _|_ | _ _| |_ _|_ _ | | _|_| |_ | _ _| | _ _ _| |_ | _|_ _ _ _ _ _ _ | | | _|_ |_ _ _ _ _ _| |_ _| | |_ _ _ _ _|_ _| |_ |_ _| |_| _| _ _| _ _| | |_ _ |_ _ _ _ _ _ _ _| | | _ _| _ _ _ _| | | _| |_ _ |_ _ | |_ _ _ | | _ _ _ _ _ _| _ _| | |_ _ _| |_ | _| | _| |_ _ | _ _ _| |_ _ _ _ _|_ |_ _ _ _| _| _ _| | |_ | |_ _|_ | _| _ |_ |_ _ | | |_ |_| _ _ | |_ _|_ _ _ _|_ _| |_ | |_ |_ _| _ | | | |_ _ _| _ _|_| _ _ |_ _| | _ _| | | |_ | _| |_ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | |_ _ _ _| | |_ _ _ | _ _|_ | | | _ | | _| |_ _| | _ _| |_ _| _ _|_ _| _| _| |_ _ _ _| _| _|_ _| _ _ |_ | | | +|_ |_ | | _ _| | | _|_ _|_ _ _| _ _ |_ _ | _ _| | _|_| |_ _| _ _|_ | | _| |_ _ _ _ _| | | |_ _|_|_ _| _ _ |_ _ | _ _| | | | |_ _|_ |_ | _ _ _| _| _| | | | |_ _ | _ _ _| _ _ |_ _ | _ _| | |_ _ _ | |_ _|_ _| |_ | |_ _| | | _|_|_ _ _ _|_| _ _ |_ _ | _ _| | _ _|_ |_ _ _|_ | |_| |_ |_ |_ _ _| |_ _ | |_ _ _ _| _ _ |_ _ | _ _| | | | | _| |_ _ | |_ _ _|_| _ | _| _ _ _ _ _|_ _| _ _ |_ _ | _ _| |_ _ _ | _|_ _ _|_ |_ _| _ _ _ _| _|_|_ _ _ _| |_ _ _| _ _ |_ _ | _ _| | |_ _| _| _ _ _| _|_ _ | | _| |_ _ |_ | | _ _ _| _ _ |_|_ | _ _| | | _|_ _ _|_| |_ _| _ _ _ |_ _ _|_ _ _|_ _ _| |_ _ _| _ _ |_ _ | _ _| |_ | | | |_ |_ _ _ _ _ _ _ _| | _|_ _ |_ _| _ _|_| _ _ |_|_ | _ _| |_ _ _|_ _| | _ _ _ _| |_ _|_ | _ | _|_|_ _ |_ _ _| _ _ |_ _ | _ _| |_ | | | _ _| _| _|_ | |_ | _|_|_ | | | _ |_ _ _| _ _ |_ _ | _ _| | |_ _| |_ | | | | |_| |_| | _| | |_ _ | _| _|_ _| _ _ |_ _ | _ _| | | |_ _| _ |_ |_ |_| _ _ |_ _ _ _| | | _ _ _ _| _ _ |_ _ | _ _| | _ _| _ | |_ _| | |_ |_| |_ |_ | | _ _|_ _ _ _ _| _ _ |_ _ | _ _| | |_ |_ |_ _ _ _ _ _ | _ _ _ _ _ _|_ _ _ _| |_|_ _| _ _ |_ _ | _ _| | _ _| | |_ | | | _ _ _ _ | |_|_ |_ _ _ _|_| _ _ |_ _ | _ _| | | |_ _ _ _ _| _ _ _|_ _|_ _ |_ _ | _ _| | | |_ _ _| _ _ |_ _ | _ _| | |_ _ _ _ _ | | | _ _| _ _| | _ _| _ _| | _ _ _| _ _ |_ _ | _ _| |_ _| | _ _ | | | | |_ | | |_ _ |_ | | |_ _ _| _ _ |_ _ | _ _| | |_| _ |_ |_| | |_ _ _|_ | |_ _ _ | | _ _ _ _ _| _ _ |_ _ | _ _| | _ _| _| | |_| _| _ _|_ | |_ _| |_ |_ | | _ _|_| _ _ |_ _ | _ _| | _|_ _ _ _ _ _| | | | | |_ _ _| | | _ _ _|_ | | |_| |_ | | |_ |_ | _| | _|_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ _|_ _| |_ | | _ _| | _|_ _| |_ |_ _ |_ _ _ _| _ _| _ _ _ _| _|_ _| |_| _ _ _|_ _|_ _ _ _ | | | | |_|_ _| +| _ _ _|_ _ _ _ _| | |_| _ | _ _ _|_ | | |_| |_ | | _ _ _| _ _|_ _ _| | | |_ | _ | |_ | | | _ _ _| | | |_| |_ | | |_ _| _| _ _| _|_ _ | | | | _|_|_ |_ | |_| _ _ _| _| | |_| |_ | | | _ _| | _ _ _ _|_ |_ _| |_ |_ |_ _ _ _| | _ _ _|_ | | |_| |_ | | _ _ _ _|_ _ _ | | | _ _|_ | _ _ _ _|_ _ _|_ | _ _ _| _| | |_| |_ | |_ _| |_ _ _| |_ _|_ _ | | | |_ _| _ | | | _ _ _| | | |_| |_ | | | _ _|_| _ | |_ _ _ _| _ | _| _ _ _ _ | | _ _ _|_ | | |_| |_ | | |_ _| _| |_ _ _ | _ _| | |_ _ _| | | | | |_| _ _ _| _| | |_| |_ | | | |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | | | _ _ _| | | |_| |_ | | | | | | |_ _ _ | |_ _ _ _ | _| _ _|_ _ | | _ _ _|_ | | |_| |_ | | _ _ _ _| _| _ |_ |_ _ _|_ | _| _ _ _ | _ _ _| | | |_| |_ | | | | |_ _| _| |_ _ _ | | _ _|_ _ _ _ _| |_ _| | | _ _ _| | | |_| |_ | | _ |_ _ _| |_| | | _ _| | _| | _| _ | |_ _ | _ _ _|_ | | |_| |_ | | |_ | _| _ _|_ | _ _|_ | | |_| _ _| | |_ | _ _ _|_ | | |_| |_ | |_ _ _ _| | |_ _ _ _|_| _| | _ _|_ _ _|_ _ _ _ | _ _ _| | | |_| |_ | | |_ |_| _ | |_ _|_ _| _ | | | _ _ _ _ | | _ _ _| | | |_| |_ | | | | _| _| _|_ _|_| _ | | _| |_ _ | |_ _ |_| _ _ _| | | |_| |_ | | |_ _ _ | |_ _ _ _ _ |_ _ |_| | _ _ _| | | _ _ _| _| | |_| |_ | |_ |_ | | _ _| | | |_ _ |_ | _|_ _ | |_ | | | _ _ _|_ | | |_| |_ | | _ _| | _| |_|_ _| |_ |_ _| |_ | |_ |_ |_ _| | _ _ _| _| | |_| |_ | | | _| _ _|_ | |_| |_ _ | |_ _ _ _ _| _ | | _ _ _| | | |_| |_ | |_ _ _ | _| | | _| |_ _ _ _ _|_ _ _ _ | |_ _| | _ _ _|_ | | |_| |_ | |_ _ _ | _ | | | | |_ | _ _| | |_ _ | _|_ _|_ | | _| |_ _ _ |_|_ _| |_ _| _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _|_ | | | _ _ _ _|_ |_ _|_ _|_ | _| _ |_ |_ _ _| _| |_ | | |_ _ _ _ _| _ | |_ |_ _ |_ _ |_ _ _ _| | |_ | | _ | +| | _ _ _ _ | |_|_ | | |_ _ | _ _|_ _|_ | | _| |_ _ | | | | _|_ _ _| |_ | _| | | |_ _ _|_ _| |_ _ | |_|_ _|_ | | _| |_ _ _ | _|_ _ |_ _| | _|_| |_ _ _ |_ | |_ |_ _ | | |_ _|_ | | _| |_|_ | _ _|_ _ _| |_ | | | _| _|_ |_ _ | |_ _ | _ |_ _|_ | | _| |_ _ | _ | |_ _|_ _| _ | _| _ _ _ _ | | |_ _ | _ |_ _|_ | | _| |_ _ _ _ |_ _ |_ |_ _| | | |_ _ |_ _| | | | |_ _ | | |_ _|_ | | _| |_ _ _ | _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | _ |_ _|_ | | _| |_ _ _|_ _ _ _ _|_|_ | _|_ _ | | | | | |_ |_ _ | _ |_ _|_ | | _| |_|_ _|_ _|_ _ | | | |_ _| _ | | _| |_ |_ _ | _|_|_ _|_ | | _| |_ _ | |_| _| |_ _| | | | |_ |_ _ _ |_ _|_ _ | _|_ _|_ | | _| |_|_ _ _ |_| _| _ _|_ |_ | | | | _| |_ _|_ _ | _|_|_ _|_ | | _| |_ _ _| _ _ |_ _ _ | | | | _ _ | _ | _ _ _|_ _ | _|_|_ _|_ | | _| |_ _| | |_ _ _ _| |_ _ | | |_ | | _| |_ _ _| _|_ _ | _|_ _|_ | | _| |_ _| _| |_ _ _ _ _|_ _ _ _ |_ _|_ | |_ | | _ _|_ _ | _|_ _|_ | | _| |_ _ _ _|_ _ _ | |_ _ _ _| _ | | | _ _ _ _ |_ _ | _|_|_ _|_ | | _| |_|_ _| _| |_ _|_ _ | | | |_ _| _ | | _| |_ _ | |_|_ _|_ | | _| |_ _| |_ _| _|_ _ |_ _| | |_ _ _|_ | |_ _ _|_ |_ _ | |_|_ _|_ | | _| |_ _ |_ _|_ _ | | | |_ _ _ |_ | _| _ |_ |_ _ | | |_ _|_ | | _| |_ _ _ _| |_ _ |_ _|_ _ | _| |_ _ |_ _| | | |_|_ _ | _ |_ _|_ | | _| |_ _ _| | _| _ |_ |_ |_ |_ | | |_ _| | |_ _ | _ |_ _|_ | | _| |_ _ |_ _ _ _ _| | _|_ _ _| | | | _ _ _ |_ _| | |_ _ | | |_ _|_ | | _| |_ _ _| |_ _ | |_ | | _ _ | |_ _|_ _ _| |_ _ | _ |_ _|_ | | _| |_ _ _| | | |_|_ _ _|_ | |_ | _| | _| | |_| _| | |_ |_ _ | _ _ |_| | _ _ _| _ _ | _|_|_ | | | _ _|_ _ _ | | | |_ _ _| |_ |_ _ _ |_| _| _ _|_ | | _| _|_ _ |_ _|_ _ |_ _ _ _ _| | |_ _|_ _ _ | _| _ _ _ | _|_ _ _|_ _ _| | +| |_ _ | | _| |_ _ |_ _| | | _| | | _ _| | |_ |_ _ | _|_ | |_ | _ _ _| _| | _| |_ _ _ _ | | _| | |_ _ _| | |_ |_ _ | _|_ | | | | _|_ _ _ _ | |_ _ _ _ |_ _| | _|_ _ | | |_ |_ _ | |_ _ | _| _ _|_ _ |_ _ _| _| _ _ _ |_ _| _| | |_ _| | | |_ |_ _ | _|_ _ _|_ _ | | | |_ _| _ | | _| |_ _ _| | | _| | | |_ |_ _ | |_ _ |_| | | | | _|_|_ | | | _ _| | |_ _| | | |_| | | |_ |_ _ | _ _| _ _| _ |_ _| | | |_ _ |_ _| | |_ _ _ _| | |_ _ _| | |_ |_ _ | _ _ | | |_ _ | | _ _|_ | | | | _| |_ _| |_ | _ _| | |_ |_ _ | |_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| _| _| | | _ | | |_ |_ _ | |_ _ | | |_ _ _ _|_ _|_ |_ |_| _ _| |_ | _| | |_ | | | |_ |_ _ | _ _| | _| |_ _ _ _ _| |_ |_ _|_|_ _ _| | _ _| | _ _ _ | | |_ |_ _ | _ _ | _ | _ _| |_| | | |_ _| _|_ _ | _| | | _ _| | |_ |_ _ | _|_ | _ |_ |_ _| | |_ _|_ | | | _|_ _| | |_| _ | | |_ |_ _ | _ _ _ _ _ _ _ |_ _| |_ | | | _| |_ | _| | |_ _ _ | | |_ |_ _ | _ _ _|_ _|_ _ | | | |_ _| _ | | _| _| | | | | | |_ |_ _ | _ _| | _ _ |_ _| | | |_ _ |_ _| | |_ _ _ _| | | | _ | | |_ |_ _ | _ _ _ _ _ _| | | _ _| _ _ | | | _ _ _ | _| | |_ _ _| | |_ |_ _ | |_ _ | |_ _| |_|_ | | _| |_| _| _ _|_ _| | _|_ _ | | |_ |_ _ | _ _ _| |_ _ _ | |_ _ _ _ _| _ _ _ _|_|_ _ _| | |_ _| | | |_ |_ _ | _ _| | _| _ _|_ |_ |_ |_ _| | | _ _| | | _| | | _| | | |_ |_ _ | _ _ _ | _|_ _ _ |_ _ _| |_ | | | _ _| | _| | | |_| | | |_ |_ _ | _|_ |_ _|_ | | _|_ _| _|_ _|_ _ | | | _| | |_ _ _| | |_ |_ _ | _ _| |_ _ _ | |_|_ _ _|_ |_ | _|_ _ _|_ | |_|_ | | _ _|_| |_ _ _| |_ | _ _| | _|_ _ _ _ _| |_ _|_ _ |_ |_ | | | _| _ _|_ _ _| _| | | _| |_ _ _ _ _| |_ _ _| | _ _| | |_ _ | | _ |_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | | +|_ _| | |_ _ _| _| | | | | | _|_ _|_ _ | |_|_ | | _ _|_| |_|_ |_ _ _ _| _| | | | _ | | _| |_ | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| | | |_|_ _ _ | |_ _|_ _| _ |_ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _| | _| | _ _ _| _| _| |_ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | _| _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | |_ _|_ |_ _ _ _ _| |_ _| | _|_ | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | | |_ | _|_|_ | | | _ _| _| _ _| _|_|_ _ _ | |_|_ | | _ _|_| |_ _| |_ _|_ _| |_ _ _ |_ _|_| |_ _| | _|_ _|_ _ | |_|_ | | _ _|_| |_ _ | | _|_|_ | | | _ _|_ _ | |_ | _|_|_ _ _| | |_|_ | | _ _|_| |_ _| _ _ _ | | _ _| _| _| | |_ _| | _|_ _|_ _| | |_|_ | | _ _|_| |_ _ | | _ |_ _ _| _ _ | |_ _ _| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ |_| | _ | _|_ _|_ _ |_ _ _ _| |_| | _|_ _ _|_ | |_|_ | | _ _|_| |_ _| _ _|_ | _|_| _ |_ _ _| _|_ _ _ | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ | _ _| _| _| _| | | |_ | |_ |_| | _|_ _ _ _| | |_|_ | | _ _|_| |_|_ _ _ _ |_ _| | | |_ _ |_ _| | |_ _ | _|_ _|_ _| | |_|_ | | _ _|_| |_|_ | _ _ | _|_|_ | | | _ _|_ _| _| _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _ _ |_ _| |_ _ | | | | | |_ _ | | | _|_ _|_ _ | |_|_ | | _ _|_| |_ _| _| _| _ _| |_ _| _| _| |_ _ _ _ _| _|_ _ _ _| | |_|_ | | _ _|_| |_ _ _ | |_ _ _ _| _ | | | _ _ _ _ | | _|_ _ _ _| | |_|_ | | _ _|_| |_ _ |_ _ _ _ _|_ _ _ _| _ _|_ _ _ _| | | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ _| _ | _| _ |_ |_| | |_ _| _| | | _|_|_ _ _| | |_|_ | | _ _|_| |_ _ | _| |_| |_ | _ _|_ _| | | | | _|_|_ _ _ | |_|_ | | _ _|_| |_ _ |_ _|_ _ | | _|_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| | | |_ _ |_ | _ _ _ | _ _|_ _|_ _| |_ _| | | _ _ _| | | | | |_ | |_ |_ _ | | | |_ _|_ _ _| | | | | _ _ |_ _|_ _ | | | |_ _| _ | | _| | | +| _| |_ _ _ _ _ | | | | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ | _ _ _| _| | |_|_ |_ _|_ _ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _| _ _ |_ _|_ _ | | | | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _|_| |_| _|_ _ | | |_|_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | _|_|_ | | | _ _| _ _ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_|_ | | |_ | _ _ _ _ | |_ |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | | | |_ _ _ _ _| |_ _| _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _| _ _ _| | _| _ |_ |_| _|_|_ _ _ | | |_ | _ _|_ | | |_ _ | | | |_ _ _ _ _| |_ _|_ _ _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _| |_ _ _| _|_ _ | | | _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _| | | |_ _ | _ _| | _| |_ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| |_ _|_ _ | _ |_ _ _ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ _ _ _| _ | _|_ | | _| _ _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ | |_ _ | _|_|_ | |_ |_ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_ _ _| | _|_|_ | | | _ _| | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ |_| | _ _|_ _ _ _ _| |_ _| _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | | |_ _ _ |_ _|_| |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ _ _|_ _ _ _ _| | |_ | _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _|_ _ | | | |_ _| _ | _ _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | | _ |_ _ _ | _| _ _ _ _ | |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _ | _| _| _ _|_ | |_ _ _| _ _|_ _ _ | | |_ | _ _|_ | | |_ _ | _| _ _ _|_ |_| _ _|_ _ | _| |_ _|_ _ _ | | |_ | _ _|_ | | |_ _ | |_ _ _| |_ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| _|_ _|_ _ |_ _ _| |_ _ |_ _ _| _ _ _| _ |_ |_| _| | _| | | _ _|_ _|_ | |_| | |_ | | _ _ _| |_ |_ _ _ | _ _| | | | |_ _ _| _ _ |_ _| | | |_ _ |_ _| | |_ _ _| | +|_ | | | | | _| | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _ | _| _|_ _ | _ _ | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _| |_ _ _ |_ _| | | |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ |_ _ |_ _| | _|_ _ | | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| |_ _|_ _ _ _ _| |_ _| | _ _ |_| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _| | |_ _|_ _|_ _| | | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _|_| |_ _ | | _ _ _ _ _ _|_ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ _ | _| _| _| _ _|_ | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | |_ | _ _ _ _| _ _|_ _ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ | _ _ _| _ _|_| |_| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _|_|_ | | | | _|_ _ _| | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ | | _ _ | | | |_ | _ |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _|_ | _| _| |_| _|_ _ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | | _ _| |_ _ _ _ _ _ _|_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ |_|_ _ _ _ _| |_ _| | _ _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _| | _ _ _ | _ _| |_| _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | _| _| _ |_ |_| | | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | _ _ _ _ | |_| |_ | |_ _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| _ _ _|_ _| | | |_ _ |_ _| |_ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | | |_ _| _ | | _| | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | | | | _| |_ _ _ _ _| _ | | _| | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _| |_ | | _ _ _ |_ _ | | _ |_ _|_ _ |_ _| | _ _| |_ _| _ _| | _ _ _|_ | _| _| |_ _| _ _ _ | _| _|_ _ _ _| _ _| _ _| |_ | _ | |_ _ _ | | |_ | | _| _| _| _ _|_ | |_ _| _| | | _ _| _| _ _| |_ _ |_| _ |_ |_ _ _| |_ | | _| |_ _ _ _ _| _ _ _| _|_|_ | | | _ _| | | | +| _| |_| |_ _| |_ | |_ |_| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | |_ _ _| | | _| _ _|_ _|_ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ |_|_ _ _| | | _ _| | | _|_|_ |_| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _|_ |_ _ |_ _ | _|_ _ _ _| |_ _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | _ _ _ _ _ _ _ _ _ | | |_ _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _| _| |_ _ _| _ _ |_|_ | | | |_| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _| | | _| | | | |_ _ | | _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | _| |_ _ _ _|_ |_| _| |_ _ _ _ _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | _| |_ _ _| _ _ _ _| |_ _ |_ _| _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | _ _| | | |_ _ | | |_ _ | | _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _|_ _ _ _ _| | |_| | _ _ _ | _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _| | _| | | |_ _| _ _|_ |_| _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | | |_| | _| _| _|_| _ | _| _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ _| | _|_|_ _ _ _ | | _ _ _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ _| |_ |_| _ _ _ _ _ _ _| | _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ _| _| | | | | _| |_ _ _ _|_ | _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _| | | | |_ _|_ _ _| _| _ _|_ | |_| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | _|_ _ | | _| |_ _| _| | _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| | | |_ _ _| _|_|_ | | | _ _| _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _| | | |_ _| | | |_ _ |_ _| | |_ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ _| | |_| |_ _ _ _ _| _ _| | | _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _ _|_ | _ _|_ _ _| |_ _ | _| _ _| |_ _| _ _ _ | _|_ _|_ _ _ _| _ _| _| _| _ _ |_ _ | _| | | |_ _|_ | |_ _ _ | | | |_ _ | | _| |_ _| _ |_ _| |_| _| |_ _ | _| |_ _ _ _ _| |_ _ |_ | _ _|_ _| _|_ _ _ _|_ _ |_| _| _ _|_ | _| | | | | |_ |_ _ |_ _ _ |_ _ _ _ _| |_ _| _ _| | |_ _| +| | |_ _ _ _ _|_ | |_ | | _| | | |_ _|_ | _| _ _ _ | | |_ _| _ | _|_ _ _|_ |_| |_| | | _| | | |_ _|_ | _| _ _ _ | | |_ _| _ _|_ | | |_ _|_ _ _ _ | _| | | |_ _|_ | _| _ _ _ | | |_ _ | | |_ | | |_ _ _ | |_ _ | _| | | |_ _|_ | _| _ _ _ | | |_|_ | _ _ | _ |_ _| |_ _| | _| _| | | |_ _|_ | _| _ _ _ | | |_|_ |_ _ _| _ _ _| | | |_ _| | | _| | | |_ _|_ | _| _ _ _ | | |_ _ | |_ | _| |_ _ _ | |_ |_ | | _| | | |_ _|_ | _| _ _ _ | | |_ _ |_ | _ |_ | |_ _ _ | | _| | | |_ _|_ | _| _ _ _ | | |_ _| _| _ _ _|_ _ _ _ _ |_ _ | | _| | | |_ _|_ | _| _ _ _ | | |_ _ | _|_ _ _| | |_ _ | | |_| | | _| | | |_ _|_ | _| _ _ _ | | |_|_ | _ _ _ | _| _| |_ _ |_ _| | _| | | |_ _|_ | _| _ _ _ | | |_|_ |_ _| _|_| | | | | | |_ | | _| | | |_ _|_ | _| _ _ _ | | |_ _| |_ | | | | | _ _ _ _| _|_ _ | _| | | |_ _|_ | _| _ _ _ | | |_ _ |_|_ _ _ | |_ _ _|_| _ | | | _| | | |_ _|_ | _| _ _ _ | | |_ _ | | |_ |_ _ | | | |_ _| _| | _| | | |_ _|_ | _| _ _ _ | | |_ _ |_| _| | | | | _| _ _ _ |_ _| _| | | |_ _|_ | _| _ _ _ | | |_ _ | |_ | _ _ | _| |_ _ _ _ _| | _| | | |_ _|_ | _| _ _ _ | | |_|_ _ _ _| |_ _ _|_ _| _| _| | | _| | | |_ _|_ | _| _ _ _ | | |_|_ _ | |_ |_ _ _ _ _| |_ _| _| | _| | | |_ _|_ | _| _ _ _ | | |_ _ |_| | | _|_|_ | | | _ _| | | _| | | |_ _|_ | _| _ _ _ | | |_ _ _ |_ |_ | _ | | | _ _| | | _| | | |_ _|_ | _| _ _ _ | | |_ _ _ |_| | | _ _| |_ | |_| _| | _| | | |_ _|_ | _| _ _ _ | | |_|_ | | _| | _ _| _|_ _ _| |_ _|_ _ _ _ _| | |_ |_ |_ _|_ _ |_ _|_ |_|_ _ _ _ _| _ _| _|_ | | | |_ _ _ | _ _ _|_ | |_ _| _ _ _| _ _ _ _ | | _| |_ _ _ _ _|_ | |_ _| |_ | _|_ | |_ _ _ _ |_ _ _ | | | |_ | |_ _ | +|_ | | | _ _| _|_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _| |_ _ _ | |_ _ _|_ _ _| | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_|_ |_| | |_ _|_ _ _ _ _| _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _| | | |_ _ _| |_ _|_ _ | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _| | |_| |_ _ _ _ | _| |_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ |_ _ | |_|_ _| | |_ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _| _| |_ _ | _ _|_ |_| _| |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _|_| |_ _ _ _|_ | | | | | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _ _ | | |_ _ _|_ _ |_ _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_|_ |_ _| _|_ _ _ _| |_ _| |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ | | |_ _ _| |_ _ |_ _ | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ | | _ | |_ _| |_ _|_ |_ _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ | | | | |_ _ | |_ _ | _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _ |_ _|_ _ | |_ _| | _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _ |_ _| | |_ _| | | | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ |_ | |_ | |_ | |_ | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_|_ | |_ _ | | |_ | _ | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ | | |_| _ _ _|_ | _| |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _|_ | _ _ _ _| _ _ _| _|_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _| |_ _ _ _ _| |_ _| | _| | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _| _| _| | | |_|_ _| | | |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _ _ _| _| | _| |_ |_ _ |_ _ _| |_ _|_ _ _ _ _| | | _| |_ _|_ _ |_ _| |_ _ _ _| _|_ _ | | _ _ | _ _ _| |_ | | | | _ _ _|_ _ |_ _ _ _ | |_| | _| | | _| |_ | | |_ _|_| _ _ _ _|_ _ |_ _ | | |_ _ | _ _ _| |_ _ _| |_ |_ _ |_ |_ _|_ |_ | _ |_ _ _| | _ _| | | |_| | | _ _| | +|_ _| |_ _| | | _ _ _ _ _ | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | _ _ |_ _|_ _ | | _ _|_ | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | _|_ _|_ _ |_ _ _ _ _ | | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | | | | _ | |_ | _ _ _ |_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | |_ _ _| _ _ |_ _| _ _ |_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | _ _| |_|_ _ _ |_ _|_ _ _ |_ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | | | |_ _ _ _ _| | _|_ |_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | _| _ _ | _|_ _| |_ _| | _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | _| | |_ _|_ _ | | _ _ _ _ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | |_ _ |_ _ _ | |_ |_ _ _ _ | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | |_ _ _ _| _ | _| _|_ | | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | |_ | |_ _ _ _| _ _ _ _ | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | |_ _ _|_ _ |_ _|_ | |_ _ |_ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | _| _ _ |_ _| | _|_ _ _ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | _| | | _|_ _ |_ _|_ _ _| |_ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ |_ _ |_ |_|_ | |_ _| |_ _ |_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | _| _| |_ | _|_ |_ _|_ |_ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | |_| |_ |_ _ |_ |_ _ |_ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | _| | | _ _|_ _ _ _ _ |_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ |_ _| _ | _ _ _ _ _ _|_ | _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | _|_ | |_ _ _ |_| |_|_ |_ _ | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | | | | |_| |_ | | |_ _ _ | | | _ _ | _| |_ _| | _| _ _ _ _|_ _ | _ | |_ _ _ _ _| |_ _| | |_ _ _ _ _|_ | |_ _ _| _ _ _| | | | | _| |_ _|_|_ _ _| | |_| _| _|_|_ |_ _ _ _| | _ _ | _| | _|_ | |_ _| |_ |_ _ _ _| |_ |_| | | _|_ _ _| _|_ |_ _ _ | |_ _ _ _| |_ _ _ _| | | _ _| +| _ _|_ _ _ _| _ _| | | | |_|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_ |_ _ _ _ |_ |_ _| | | | |_|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | _ _ _ _| |_ _ _| |_ _| _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_ |_ _ _|_ _ |_ _ _| |_ | _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | _ _ _ _ | | _ _| |_ | _|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_ _ _ _ _ _ _ _ _ _| | _| _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| |_ |_ _|_ _ _ | _ _ _| | | _|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_| _ _ _|_ | _ _| | | | _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | _ _|_ _ _ |_ |_ _| | _ _ _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | |_ _ _ _ _ _| _ _| | _| _|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | _ _ _ _ | | _ _| |_ _| _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | _|_ _ _ _ | |_ _| | | | |_|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| |_ _ _ _ _ _| | _ _| | | |_|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_| _ _ _|_ | _ _|_| | | _ _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | |_ _ _ _ _ | _ _| |_ | |_|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | _ _ _|_ _ _ |_| _ _| |_ | _|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | |_| _ _|_ _ |_| _ _| | _| _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | _ _|_ _ | | _|_| |_ | |_|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | |_ _|_ _ _ _ _ _| |_ | _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | _| _ _|_ _ |_ _ _| | |_ |_|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | _| _ _|_ _ _ _ _ _| | | _|_ _| | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | | _|_ _ _ _ _| _ _| | |_| |_|_ _|_ | |_|_ _ _ _ _ | |_ _| _ _ _ _| | | |_ _|_ _ _ _ _| _ _| | |_ _ _ _ | |_|_ _ _ _| | | _ _|_ _|_ |_ _ _| | | _ _ _ _ |_ _ _| _|_ | | | | | | | |_ _| | _|_ _ _ _| | | |_ _ _ | _ _ _|_ _ _ _|_ |_ _ |_ _ _ _| |_ | _ _| | _| | _ |_ | | | | +| | _ _ |_ _ | _ _| | | _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | | _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | | _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | _ _| | | |_ _ _ _ | |_|_ _ _| | | _ |_|_ _| _ _ |_|_ | _ _| | | _| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | | _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | | |_| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _| | _ _| |_ |_| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| |_ _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _|_| _ _ |_ _ | _ _| | | _| | |_ _ _ _ | |_|_ _ _| | | _ |_|_ _| _ _ |_|_ | _ _| | | _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | | _| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_|_ | _ _| |_ |_| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | _ _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _|_| _ _ |_ _ | _ _| | _ _| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | _ _| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| |_ _| | | |_ _ _ _ | |_|_ _ _| | | _ |_|_ _| _ _ |_ _ | _ _| | | _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | _ _| | | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| |_ _| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | _ _| | | |_| | | |_ _ _ _ | |_|_ _ _| | | _ |_|_ _| _ _ |_ _ | _ _| | | _| | |_ _ _ _ | |_|_ _ _| | | _ |_ _ _| _ _ |_ _ | | _ _| _ _ | _| |_ _ |_ _ |_ | |_ | _ _ | |_ _ | _|_ _ | | | _ _ _|_ _|_ _| |_ _| |_ |_ _|_ _ |_|_ _ _ | |_ _|_ _| _ |_ | _ _ _ _ | |_ _| _| _ _ _ _|_ |_| |_| |_ _| | | |_ |_| | | | | +| _|_ | | |_| | | | | | _|_ _| | |_ _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _|_ | | |_| | | | _| _|_ _| | |_ _| _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | _| _|_ _| |_ _ | | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | | _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | | _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | |_ | _|_ _| |_ | _| _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | | _| _| |_ _ |_ _ _ |_| |_ |_| _ _ _|_ | | |_| | | | _| _|_ _| |_ |_ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| |_ |_ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| _| | |_| | | | | | _|_ _| |_ _ | | _| |_ _ |_ _ _ |_| |_ |_| _ _ _|_ | | |_| | | | _| _|_ _| | |_ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| |_ |_ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| _| | |_| | | | | | _|_ _| |_ _ | | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | |_ _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _|_ | | |_| | | | | | _|_ _| |_ _ _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| _| | |_| | | | | | _|_ _| |_ | | _| |_ _ |_ _ _ |_| |_ |_| _ _ _|_ | | |_| | | | _| _|_ _| | |_ _| _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | _| _|_ _| |_ _ | | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | | _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | | _ | _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | |_ | _|_ _| |_ | _| _| |_ _ |_ _ _ |_| |_ |_| _ _ _| | | |_| | | | | | _|_ _| | | _| _| |_ _ |_ _ _ |_| |_ |_| _ _ _|_ | | |_ _| | _|_ |_ _|_ _ _| | | | | _|_ | | | |_ _| _ | |_ _| | | | |_ _ | | | _| _|_ |_ _ | _|_ _ _ _|_ _|_ _ | | | |_ _| _ | | _| |_ _ |_ _ _ _ _| |_ |_ _ _|_ | |_ _|_| | _ _ _| |_| | +| | _ |_ _|_ | | |_| | | | | | _| | | |_ _ _| _| | _ | | _ |_ |_ _ |_ |_ _|_ | | |_| | | | | | _|_ |_ |_ _ _| _| | _ | | _ |_ |_ _ |_ _| |_ _|_ | | |_| |_ | | | _| _|_ |_ _ _| _| | _ | | _ |_ |_ _ | | | |_ _|_ | | |_| |_ | | | _| |_| |_ _ _| _| | _ | | _ |_ |_ _ | _| |_ _|_ | | |_| | | | | | _|_ _| _|_ _ _| _| | _ | | _ |_ |_ _ | _| |_ _|_ | | |_| | | | | | _| | |_ |_ _ _| _| | _ | | _ |_ |_ _ | | | |_ _|_ | | |_| |_ | | | _| |_| |_ _ _| _| | _ | | _ |_ |_ _ | | |_ _|_ | | |_| | | | | | _| | | |_ _ _| _| | _ | | _ |_ |_ _ | _|_|_ _|_ | | |_| | _| | | _| _| _|_ _ _| _| | _ | | _ |_ |_ _ |_ _ |_ _|_ | | |_| | | | | | _| | _| |_ _ _| _| | _ | | _ |_ |_ _ | _ |_ _|_ | | |_| | | | | | _|_ _ _| |_ _ _| _| | _ | | _ |_ |_ _ | |_|_ _|_ | | |_| | | | | | _| _| _|_ _ _| _| | _ | | _ |_ |_ _ |_ _ |_ _|_ | | |_| | _| | | _| | | |_ _ _| _| | _ | | _ |_ |_ _ |_ | |_ _|_ | | |_| |_ | | | _|_ _ _ |_ _ _| _| | _ | | _ |_ |_ _ | |_ _|_ | | |_| |_ | | | _| _ | |_ _ _| _| | _ | | _ |_ |_ _ | | |_ _|_ | | |_| |_ | | | _| _| | |_ _ _| _| | _ | | _ |_ |_ _ |_ |_ _|_ | | |_| | | | | | _|_ |_ |_ _ _| _| | _ | | _ |_ |_ _ |_ _| |_ _|_ | | |_| |_ | | | _| _|_ |_ _ _| _| | _ | | _ |_ |_ _ | | | |_ _|_ | | |_| |_ | | | _| |_| |_ _ _| _| | _ | | _ |_ |_ _ | _| |_ _|_ | | |_| | _| | | _|_ _| _|_ _ _| _| | _ | | _ |_ |_ _ | _| |_ _|_ | | |_| | | | | | _| | |_ |_ _ _| _| | _ | | _ |_ |_ _ | | | |_ _|_ | | |_| |_ | | | _| |_| |_ _ _| _| | _ | | _ |_ |_ _ | | |_ _|_ | _|_ |_ _ _| _ |_| |_|_ _ | _ | |_ _| | _ _|_ _|_ _ | |_|_ _ _ _| | | |_| |_ _ _ _| _ _| _ _|_ _ |_ _ _ _|_ _| | | |_ _ |_ _| | |_ _ _| | | _ | | _ _|_ _ _| | |_| |_ _ _ _ |_| _ |_ | | +|_ _| | |_ | | |_ | |_ _| | |_| |_ _ _|_ | _ | | |_ | |_| | |_ |_ _| | _| |_ | | |_ | |_ _| | |_| |_ _ _ _ | _ | | |_ | |_| | |_ |_ _| | |_ _ | | |_ | |_ _| | |_| |_ _ _ _| _ | | |_ | |_| | |_ |_ _| |_ _|_ | | |_ | |_ _| | |_| |_ _ _ _| | _ | | |_ | |_| | |_ |_ _| |_ | | _| | |_ | |_ _| | |_| |_ _ | | | _ | | |_ | |_| | |_ |_ _| | |_ _ | | | |_ | |_ _| | |_| |_ _ _ _ | _ | | |_ | |_| | |_ |_ _| | _|_ _ | | |_ | |_ _| | |_| |_ _ |_| | _ | | |_ | |_| | |_ |_ _| | |_ | | | |_ | |_ _| | |_| |_ _ | | | _ | | |_ | |_| | |_ |_ _| | | _ _| | |_ | |_ _| | |_| |_ _ |_ | _ | | |_ | |_| | |_ |_ _| | _ | | | |_ | |_ _| | |_| |_ _ | | _ | | |_ | |_| | |_ |_ _| | |_ _ | | | |_ | |_ _| | |_| |_ _ | | _ | | |_ | |_| | |_ |_ _| |_|_ _ | | |_ | |_ _| | |_| |_ _ |_ | _ | | |_ | |_| | |_ |_ _| | |_ | | |_ | |_ _| | |_| |_ _| |_ | _ | | |_ | |_| | |_ |_ _| | _|_ | | | |_ | |_ _| | |_| |_ _ | | _ | | |_ | |_| | |_ |_ _| |_| | |_ | | |_ | |_ _| | |_| |_ _ |_| | _ | | |_ | |_| | |_ |_ _| | | |_ _ | | |_ | |_ _| | |_| |_ _ |_| | _ | | |_ | |_| | |_ |_ _| | _| |_ | | |_ | |_ _| | |_| |_ _ _ _ | _ | | |_ | |_| | |_ |_ _| | |_ _ | | |_ | |_ _| | |_| |_ _ _ _| _ | | |_ | |_| | |_ |_ _| |_ _|_ | | |_ | |_ _| | |_| |_ _ _ _| | _ | | |_ | |_| | |_ |_ _| |_ | | _| | |_ | |_ _| | |_| |_ _ | | | _ | | |_ | |_| | |_ |_ _| | |_ _ | | | |_ | |_ _| | |_| |_ _ _ _ | _ | | |_ | |_| | |_ |_ _| | _|_ _ | | |_ | |_ _| | |_| |_ _ |_| | _ | | |_ | |_| | |_ |_ _| | |_ | | | |_ _| | _ | _| |_ | | _ |_| | | |_ |_ _ | _ _ | | | | | _ _ | _|_|_ _| | | | | |_ | | | | | _| | _| | _|_|_ | | | _ _| _ _ _| | | |_ | |_| | | _ _|_ |_ _ _| _ _ |_| _| _ _|_ | +| | _| | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| | | | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| |_ _ | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| _ _ _| | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| _| |_ | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_ _ |_ | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_| _ | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| | _|_| | |_|_ | |_ _ _ _|_ | | |_ _|_| | | | | | | _|_ _ _| | | | | _|_ _ _|_ | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_ | | | | |_|_ | |_ _ _ _|_ | | |_ _|_| | | | | | | _|_ _ _| | | | | _|_ | | | | |_|_ | |_ _ _ _|_ | | |_|_ _| | | | | | | _|_ _ _| | | | | _| _ |_| | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| |_ _ _| | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_ | _| | |_|_ | |_ _ _ _|_ | | |_|_ _| | | | | | | _|_ _ _| | | | | _| _|_ | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_ _| | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| | | | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| |_ _ | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| _ _ _| | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| _| |_ | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_ _ |_ | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _|_| _ | | |_|_ | |_ _ _ _|_ | | |_ _ _| | | | | | | _|_ _ _| | | | | _| | _|_| | |_| | _| _|_ |_|_ _ | | | |_ | | _| _| _| |_|_ _ | | |_ _| |_| | | _|_ _ _ |_ _| |_ _| | | | |_ _ _| |_| | _|_ | |_| _| |_ _ _ _ _| |_ _| | _ _ | | | | _|_ _ _| |_ _| _| |_| _ _ _| | | _| |_ _ _ _ _| +|_|_ _ _ _|_|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _|_|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _|_ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _|_ _|_|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _|_ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _|_|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _|_ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _ _ _ _ _ _ _ _|_ _|_ _ _ _ _ _|_ _|_ _ _|_ _ _ _ _|_ _ _|_ _ _ _|_ _ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _|_ _ _ _|_ _|_ _ _|_ _ _|_ _ _ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _|_ _ _ _|_|_ _ _ _ _ _ _|_ _ _ _|_ _ _ _|_ _ _ _ _ _ _ _ _ _|_ _ _ _|_ _|_ _ _|_ _ _ _ _ _ _|_ _ _|_ _ _ _ _ _ _|_|_ _ _ _ _ _ _ _ _| diff --git a/artificialintelligence/assignments/rng/CMakeLists.txt b/artificialintelligence/assignments/rng/CMakeLists.txt new file mode 100644 index 00000000..d845854c --- /dev/null +++ b/artificialintelligence/assignments/rng/CMakeLists.txt @@ -0,0 +1,7 @@ +add_executable(ai-rng rng.cpp) + +file(GLOB TEST_INPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.in) +file(GLOB TEST_OUTPUT_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.out) + +add_custom_test(ai-rng-test ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ai-rng "${TEST_INPUT_FILES}" "${TEST_OUTPUT_FILES}") + diff --git a/artificialintelligence/assignments/rng/index.html b/artificialintelligence/assignments/rng/index.html new file mode 100644 index 00000000..3fc36f27 --- /dev/null +++ b/artificialintelligence/assignments/rng/index.html @@ -0,0 +1,35 @@ + Pseudo-Random Number Generator - Awesome GameDev Resources

Pseudo Random Number Generation

Estimated time to read: 7 minutes

You are a game developer in charge to create a fast an reliable random number generator for a procedural content generation system. The requirements are:

  • Do not rely on external libraries;
  • Dont need to be cryptographically secure;
  • Be blazing fast;
  • Fully reproducible via automated tests if used the same seed;
  • Use exactly 32 bits as seed;
  • Be able to generate a number between a given range, both inclusive.

So you remembered a strange professor talking about the xorshift algorithm and decided it is good enough for your use case. And with some small research, you found the Marsaglia "Xorshift RNGs". You decided to implement it and test it.

XorShift

The xorshift is a family of pseudo random number generators created by George Marsaglia. The xorshift is a very simple algorithm that is very fast and have a good statistical quality. It is a very good choice for games and simulations.

xorshift is the process of shifting the binary value of a number and then xor'ing that binary to the original value to create a new value.

value = value xor (value shift by number)

The shift operators can be to the left << or to the right >>. When shifted to the left, it is the same thing as multiplying by 2 at the power of the number. When shifted to the right, it is the same thing as dividing.

Note

The value of a << b is the unique value congruent to \(a * 2^{b}\) modulo \( 2^{N} \) where \( N \) is the number of bits in the return type (that is, bitwise left shift is performed and the bits that get shifted out of the destination type are discarded).

The value of \( a >> b \) is \( a/2^{b} \) rounded down (in other words, right shift on signed a is arithmetic right shift).

The xorshift algorithm from Marsaglia is a combination of 3 xorshifts, the first one is the seed (or the last random number generated), and the next ones are the result of the previous xorshift. The steps are:

  1. xorshift the value by 13 bits to the left;
  2. xorshift the value by 17 bits to the right;
  3. xorshift the value by 5 bits to the left;

At the end of this 3 xorshifts, the current state of the value is your current random number.

In order to clamp a random number the value between two numbers (max and min), you should follow this idea:

value = min + (random % (max - min + 1))

Input

Receives the seed S, the number N of random numbers to be generated and the range R1 and R2 of the numbers should be in, there is no guarantee the range numbers are in order. The range numbers are both inclusive. S and N are both 32 bits unsigned integers and R1 and R2 are both 32 bits signed integers.

1 1 0 99
+

Output

The list of numbers to be generated, one per line. In this case, it would be only one and the random number should be clamped to be between 0 and 99.

seed in decimal:       1
+seed in binary:        0b00000000000000000000000000000001 
+
+seed:                  0b00000000000000000000000000000001
+seed << 13:            0b00000000000000000010000000000000
+seed xor (seed << 13): 0b00000000000000000010000000000001
+
+seed:                  0b00000000000000000010000000000001
+seed >> 17:            0b00000000000000000000000000000000
+seed xor (seed >> 17): 0b00000000000000000010000000000001
+
+seed:                  0b00000000000000000010000000000001
+seed << 5:             0b00000000000001000000000000100000
+seed xor (seed << 5):  0b00000000000001000010000000100001
+
+The final result is 0b00000000000001000010000000100001 which is 270369 in decimal.
+

Now in order to clamp it to be between 0 and 99, we do:

value = min + (random % (max - min + 1))
+value = 0 + (270369 % (99 - 0 + 1))
+value = 0 + (270369 % 100)
+value = 0 + 69
+value = 69
+

So this output would be:

69
+
\ No newline at end of file diff --git a/artificialintelligence/assignments/rng/rng.cpp b/artificialintelligence/assignments/rng/rng.cpp new file mode 100644 index 00000000..00bcfec3 --- /dev/null +++ b/artificialintelligence/assignments/rng/rng.cpp @@ -0,0 +1,16 @@ +// add your imports here +#include +#include +#include +const std::string TEST_FOLDER = "\\tests\\"; +unsigned int xorShift(unsigned int seed, int r1, int r2); +int main(){ + // code here + unsigned int seed, N, min, max; + std::cin >> seed >> N >> min >> max; +} +//The purpose of this function is to take the number and xor shift it to output a pseudo-random number + unsigned int xorShift(unsigned int seed, int r1, int r2) +{ + +} diff --git a/artificialintelligence/assignments/rng/tests/test-a.in b/artificialintelligence/assignments/rng/tests/test-a.in new file mode 100644 index 00000000..a618b28e --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-a.in @@ -0,0 +1 @@ +1 1 0 99 diff --git a/artificialintelligence/assignments/rng/tests/test-a.out b/artificialintelligence/assignments/rng/tests/test-a.out new file mode 100644 index 00000000..b5489e5e --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-a.out @@ -0,0 +1 @@ +69 diff --git a/artificialintelligence/assignments/rng/tests/test-b.in b/artificialintelligence/assignments/rng/tests/test-b.in new file mode 100644 index 00000000..373a2042 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-b.in @@ -0,0 +1 @@ +2 10 20 89 diff --git a/artificialintelligence/assignments/rng/tests/test-b.out b/artificialintelligence/assignments/rng/tests/test-b.out new file mode 100644 index 00000000..dfc91d8c --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-b.out @@ -0,0 +1,10 @@ +78 +30 +64 +42 +64 +41 +75 +70 +74 +85 diff --git a/artificialintelligence/assignments/rng/tests/test-c.in b/artificialintelligence/assignments/rng/tests/test-c.in new file mode 100644 index 00000000..b807309f --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-c.in @@ -0,0 +1 @@ +3 5 10 20 diff --git a/artificialintelligence/assignments/rng/tests/test-c.out b/artificialintelligence/assignments/rng/tests/test-c.out new file mode 100644 index 00000000..750d5001 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-c.out @@ -0,0 +1,5 @@ +10 +20 +16 +15 +20 diff --git a/artificialintelligence/assignments/rng/tests/test-d.in b/artificialintelligence/assignments/rng/tests/test-d.in new file mode 100644 index 00000000..afefc584 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-d.in @@ -0,0 +1 @@ +4 20 0 999 diff --git a/artificialintelligence/assignments/rng/tests/test-d.out b/artificialintelligence/assignments/rng/tests/test-d.out new file mode 100644 index 00000000..3a803d40 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-d.out @@ -0,0 +1,20 @@ +476 +140 +508 +444 +972 +503 +353 +707 +512 +61 +404 +46 +643 +660 +326 +506 +426 +69 +192 +417 diff --git a/artificialintelligence/assignments/rng/tests/test-e.in b/artificialintelligence/assignments/rng/tests/test-e.in new file mode 100644 index 00000000..bd21eaec --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-e.in @@ -0,0 +1 @@ +5 25 100 999 diff --git a/artificialintelligence/assignments/rng/tests/test-e.out b/artificialintelligence/assignments/rng/tests/test-e.out new file mode 100644 index 00000000..e8fe9014 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-e.out @@ -0,0 +1,25 @@ +145 +929 +597 +535 +281 +959 +603 +249 +281 +777 +223 +925 +905 +238 +567 +771 +118 +925 +469 +172 +112 +780 +229 +521 +263 diff --git a/artificialintelligence/assignments/rng/tests/test-f.in b/artificialintelligence/assignments/rng/tests/test-f.in new file mode 100644 index 00000000..177561c5 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-f.in @@ -0,0 +1 @@ +6 30 0 200 diff --git a/artificialintelligence/assignments/rng/tests/test-f.out b/artificialintelligence/assignments/rng/tests/test-f.out new file mode 100644 index 00000000..591367b4 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-f.out @@ -0,0 +1,30 @@ +144 +50 +128 +153 +185 +101 +153 +132 +168 +24 +124 +5 +53 +38 +137 +58 +148 +43 +121 +123 +5 +124 +27 +151 +153 +145 +170 +147 +33 +4 diff --git a/artificialintelligence/assignments/rng/tests/test-g.in b/artificialintelligence/assignments/rng/tests/test-g.in new file mode 100644 index 00000000..3bf5580a --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-g.in @@ -0,0 +1 @@ +7 40 9 10 diff --git a/artificialintelligence/assignments/rng/tests/test-g.out b/artificialintelligence/assignments/rng/tests/test-g.out new file mode 100644 index 00000000..9006ab41 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-g.out @@ -0,0 +1,40 @@ +10 +10 +10 +10 +10 +9 +9 +10 +10 +9 +10 +9 +9 +9 +10 +10 +10 +9 +9 +10 +9 +9 +10 +9 +9 +10 +9 +10 +9 +10 +10 +10 +9 +10 +10 +9 +10 +9 +10 +10 diff --git a/artificialintelligence/assignments/rng/tests/test-h.in b/artificialintelligence/assignments/rng/tests/test-h.in new file mode 100644 index 00000000..c70b83ee --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-h.in @@ -0,0 +1 @@ +8 50 1 1 diff --git a/artificialintelligence/assignments/rng/tests/test-h.out b/artificialintelligence/assignments/rng/tests/test-h.out new file mode 100644 index 00000000..3b6eeed9 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-h.out @@ -0,0 +1,50 @@ +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/artificialintelligence/assignments/rng/tests/test-i.in b/artificialintelligence/assignments/rng/tests/test-i.in new file mode 100644 index 00000000..4dfe58e1 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-i.in @@ -0,0 +1 @@ +1234567 50 123 321 diff --git a/artificialintelligence/assignments/rng/tests/test-i.out b/artificialintelligence/assignments/rng/tests/test-i.out new file mode 100644 index 00000000..d877b152 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-i.out @@ -0,0 +1,50 @@ +136 +190 +282 +319 +176 +310 +192 +244 +321 +298 +292 +239 +274 +197 +123 +210 +282 +319 +149 +214 +244 +197 +198 +144 +310 +306 +165 +256 +166 +213 +229 +156 +283 +168 +279 +129 +137 +251 +310 +249 +140 +128 +184 +175 +159 +273 +160 +172 +258 +263 diff --git a/artificialintelligence/assignments/rng/tests/test-j.in b/artificialintelligence/assignments/rng/tests/test-j.in new file mode 100644 index 00000000..2db380e8 --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-j.in @@ -0,0 +1 @@ +15 2000 100 99999 diff --git a/artificialintelligence/assignments/rng/tests/test-j.out b/artificialintelligence/assignments/rng/tests/test-j.out new file mode 100644 index 00000000..80ddf68c --- /dev/null +++ b/artificialintelligence/assignments/rng/tests/test-j.out @@ -0,0 +1,2000 @@ +59635 +3843 +46190 +70115 +32271 +31436 +98858 +70488 +59761 +24207 +54693 +99943 +68284 +94760 +51812 +31382 +90469 +38759 +47609 +14112 +23879 +72735 +56278 +44167 +51238 +10456 +70306 +83930 +35419 +86728 +95190 +2670 +47874 +71426 +55039 +83617 +32443 +92353 +91305 +3213 +38704 +14436 +17979 +36260 +93766 +86188 +94835 +85204 +87245 +43991 +41302 +2180 +37694 +2898 +11843 +71044 +59751 +15250 +62880 +97152 +74067 +24905 +44622 +81502 +34077 +62260 +68138 +46170 +21862 +5234 +9590 +46591 +35915 +30021 +46181 +28828 +65562 +19043 +50412 +9393 +27128 +71578 +85619 +37077 +90770 +67370 +34798 +88893 +23053 +8474 +30477 +88522 +85902 +6611 +60295 +64554 +69567 +38827 +73269 +24562 +41984 +72244 +92680 +62738 +6382 +38746 +36953 +30632 +41334 +65404 +29711 +60357 +33341 +220 +74596 +35163 +81697 +60606 +1309 +83554 +29810 +70389 +96236 +42347 +36885 +96380 +55520 +62292 +5979 +21753 +29817 +91132 +27468 +18133 +61114 +59285 +11089 +45481 +38130 +78650 +12425 +77159 +59018 +27094 +36356 +42763 +44825 +94944 +13374 +95848 +62200 +64103 +85355 +74796 +19815 +38139 +43057 +85439 +44375 +89661 +64020 +34635 +27264 +69312 +74404 +73156 +66235 +48024 +74209 +54355 +39762 +2000 +93542 +19576 +75087 +10222 +41053 +72341 +53449 +39220 +87603 +68767 +55168 +9749 +65195 +34027 +98246 +79127 +80062 +14190 +58778 +52213 +34277 +4255 +76592 +17511 +19993 +18755 +48067 +92565 +18964 +15505 +61847 +58861 +25506 +88840 +76829 +13126 +84235 +7212 +16716 +65618 +31616 +95536 +66175 +89447 +27873 +80994 +60229 +28929 +67067 +45277 +73743 +51406 +35798 +253 +17908 +44785 +14235 +46163 +14803 +89789 +47617 +9656 +91743 +76527 +1517 +15005 +19504 +48696 +45995 +40732 +67092 +53849 +65893 +87056 +17642 +46208 +55165 +69360 +6604 +69599 +99038 +79790 +68619 +46670 +88537 +4146 +72703 +42702 +45595 +72271 +79949 +14485 +89064 +5957 +66218 +15782 +78270 +18410 +38485 +66437 +11335 +96155 +1395 +12018 +66652 +75594 +56786 +23366 +63917 +67077 +83412 +54214 +77168 +47514 +59861 +52119 +88477 +73562 +22385 +83814 +73996 +24306 +22592 +1482 +24515 +66461 +12797 +21037 +6458 +42684 +26886 +23593 +13325 +31534 +95481 +23963 +91559 +43322 +78823 +39695 +9455 +90498 +99257 +93948 +79183 +92090 +82793 +59614 +54282 +7129 +87790 +14276 +28632 +89605 +73241 +41753 +91253 +8804 +22984 +2795 +5830 +93385 +94408 +83102 +60721 +77694 +64824 +43313 +63402 +53326 +15488 +76039 +20435 +84678 +57072 +24245 +25955 +55567 +89603 +7595 +66982 +97586 +28081 +94724 +46536 +27571 +20946 +56144 +45295 +48456 +96944 +73807 +36986 +91115 +65647 +14038 +58447 +74356 +37535 +48597 +96250 +80109 +25627 +84401 +11082 +90866 +56838 +55620 +35715 +72973 +80749 +34368 +14576 +41753 +25858 +37938 +74558 +32648 +52874 +40075 +20804 +27679 +3985 +10806 +86547 +97324 +50883 +50210 +31940 +31975 +31285 +9356 +43075 +93099 +99981 +96461 +52780 +61652 +49719 +83415 +37660 +42303 +12099 +8810 +3854 +59057 +10163 +43364 +98413 +9037 +61670 +81525 +96943 +92945 +2780 +96597 +48068 +67619 +35296 +5528 +36498 +47312 +74470 +18298 +4924 +77287 +85401 +17844 +32314 +98337 +38225 +37247 +53302 +99240 +73262 +71049 +9210 +53340 +48563 +32859 +58183 +15597 +82780 +59109 +14815 +65523 +7121 +90346 +52806 +19135 +10669 +86874 +41059 +95364 +49977 +12814 +55517 +51378 +73274 +74746 +67440 +65878 +78040 +57895 +90692 +50390 +56535 +1084 +2306 +96831 +51788 +1620 +73350 +22355 +69472 +88792 +58397 +81328 +81868 +80122 +72954 +92498 +27613 +8334 +11382 +24949 +95738 +20211 +90137 +77921 +6316 +8428 +47242 +5800 +66670 +68363 +29215 +87724 +40249 +26630 +40453 +26398 +54639 +36615 +566 +56770 +63795 +62469 +58259 +6037 +58552 +2477 +69780 +28298 +85786 +88489 +48455 +75123 +5005 +58600 +86317 +89526 +69295 +34511 +94517 +75842 +86886 +9096 +16586 +83335 +492 +73099 +87397 +47644 +10530 +18450 +77988 +46665 +91799 +45410 +78915 +57120 +60106 +49604 +54840 +79575 +23367 +37292 +88192 +78982 +1551 +69777 +3607 +60724 +10676 +69598 +77693 +56672 +98646 +57378 +16909 +69768 +73309 +93694 +75082 +51561 +30627 +32087 +76036 +95657 +59043 +31749 +10661 +82572 +42174 +65175 +80323 +27074 +32578 +18447 +21267 +90256 +6383 +98920 +96623 +37293 +39719 +81053 +72647 +89047 +97929 +17462 +57142 +16473 +22558 +91657 +98821 +8956 +5498 +4032 +43660 +21900 +71179 +59763 +68910 +29968 +11995 +17239 +22933 +25289 +49805 +3097 +29818 +83681 +90995 +94233 +327 +33256 +96629 +37469 +41893 +18700 +79825 +26903 +90722 +90844 +44301 +21557 +35586 +68899 +7198 +18173 +72101 +78928 +19886 +60768 +16206 +86739 +32872 +83368 +24453 +80111 +60178 +37658 +9666 +72358 +85226 +5559 +75114 +55349 +63902 +69581 +39356 +60493 +84685 +59078 +69223 +12924 +18257 +19517 +75623 +63275 +41339 +84527 +23416 +22532 +18121 +39679 +81120 +43519 +56621 +64420 +74757 +16976 +9423 +66118 +92514 +24681 +41937 +53379 +37374 +7201 +28845 +2776 +45843 +90923 +17398 +36085 +17979 +78176 +94204 +20549 +44028 +19361 +80489 +32236 +11283 +22161 +98542 +14789 +79536 +78155 +88383 +81908 +31022 +89777 +63219 +27595 +44939 +52259 +73211 +778 +7988 +73324 +29772 +45049 +91894 +77921 +99426 +73151 +99377 +69311 +89763 +41163 +57711 +99110 +34562 +37194 +58154 +70560 +50784 +79680 +49503 +95188 +69956 +29385 +76450 +35058 +25334 +59210 +8830 +51202 +90763 +95651 +80494 +70007 +24610 +33601 +74658 +40004 +69365 +45981 +10160 +29101 +52331 +40802 +70580 +96241 +84821 +27981 +45686 +17910 +68154 +19139 +40585 +772 +99194 +8416 +91295 +74775 +79259 +91070 +20348 +90918 +45761 +89935 +28424 +60156 +83328 +15088 +8499 +42556 +2440 +25149 +52961 +74439 +95120 +4873 +9591 +64096 +52849 +19302 +27014 +94481 +48485 +62823 +28295 +23063 +9976 +53578 +74466 +61843 +50588 +30004 +91249 +7329 +36639 +11877 +56731 +91583 +2978 +26896 +22517 +14759 +80310 +65152 +45684 +80463 +18494 +58593 +68206 +64490 +47927 +40758 +67684 +9623 +31251 +42308 +35126 +70614 +99290 +32083 +36388 +86200 +58836 +4654 +63619 +3457 +13972 +98813 +52359 +81870 +5717 +22828 +41557 +78090 +10251 +71843 +95389 +62521 +46087 +13488 +45284 +37576 +97725 +87724 +9535 +92699 +43047 +76750 +11420 +16958 +78871 +37735 +5504 +63880 +29358 +89617 +20562 +34092 +38911 +85754 +75980 +24149 +45288 +62575 +62137 +14087 +59065 +49200 +11930 +51787 +93828 +13130 +58542 +19410 +50340 +39114 +28941 +24668 +49639 +72380 +92746 +51734 +15862 +83872 +30238 +95506 +61616 +48521 +66650 +84542 +69278 +31069 +71699 +71395 +13083 +53257 +36996 +85453 +67684 +41364 +3835 +4499 +19351 +35506 +50107 +15479 +98801 +78244 +30998 +2125 +3308 +74202 +25831 +49691 +23873 +28002 +20273 +33071 +64941 +39789 +84192 +61552 +86371 +27203 +10130 +96469 +61380 +67310 +86476 +74851 +10775 +19349 +1655 +39603 +92432 +56160 +38267 +91306 +95006 +58564 +84288 +83769 +86296 +87586 +50285 +90653 +6248 +6811 +23731 +1765 +20710 +89576 +11134 +67217 +54664 +15601 +47755 +68566 +58011 +35491 +93184 +77429 +75899 +26348 +59047 +29722 +32854 +56018 +28649 +86757 +91651 +18506 +45711 +90212 +59711 +20485 +5781 +8242 +70555 +39411 +77848 +84163 +38580 +99556 +83223 +9555 +50871 +93357 +80102 +19483 +35623 +2828 +23184 +89411 +28055 +79115 +58931 +28607 +40865 +9928 +85624 +72328 +91394 +36090 +26650 +35515 +2413 +17601 +14518 +30548 +11544 +40535 +14598 +32902 +23790 +84511 +84367 +46976 +14567 +88732 +97299 +30679 +65373 +67230 +8774 +8211 +70277 +91015 +64617 +7016 +40725 +42622 +90091 +82651 +53839 +40330 +45754 +95726 +67073 +92464 +40099 +37094 +49303 +1271 +45163 +20085 +65661 +70832 +12584 +79778 +25789 +97272 +11881 +87446 +80739 +47564 +60501 +22626 +58953 +6824 +66978 +31569 +44034 +9133 +24377 +39893 +7513 +59269 +40183 +45924 +25703 +62236 +859 +88314 +99648 +71958 +49791 +76806 +2690 +59851 +2332 +14919 +24321 +26623 +86851 +35544 +26352 +11007 +95460 +11664 +24082 +14256 +58913 +46513 +70918 +9692 +46227 +4771 +2760 +90342 +23924 +45845 +31125 +49161 +8751 +68059 +79341 +54121 +40879 +48806 +50312 +39906 +75718 +7511 +20138 +72251 +595 +85429 +49873 +26186 +41627 +23163 +86741 +1220 +89941 +89973 +95004 +64915 +51399 +82265 +30945 +92365 +37356 +6558 +91685 +64709 +56569 +71579 +21011 +22735 +80645 +17653 +2492 +36975 +42576 +68119 +6088 +18118 +95907 +66457 +24434 +89852 +42029 +72357 +30941 +11886 +77019 +93195 +35743 +50447 +49393 +79426 +54042 +8033 +87267 +1887 +9090 +307 +742 +41733 +18075 +53690 +531 +57985 +98388 +28668 +2778 +957 +46272 +65075 +56971 +51659 +46119 +70526 +12735 +91074 +87986 +853 +4913 +20738 +87301 +33268 +12384 +35884 +12951 +27784 +32961 +26455 +24665 +6443 +12192 +6233 +93728 +87522 +76308 +98907 +43469 +85401 +76323 +16537 +39094 +79735 +95184 +8161 +9404 +45277 +1928 +65802 +80902 +99665 +17078 +57189 +81642 +6238 +44181 +41185 +83192 +85954 +92313 +71850 +55305 +56593 +56315 +81829 +83488 +53885 +14449 +93795 +16151 +18060 +86517 +18109 +83602 +17726 +29417 +7443 +67625 +13720 +52361 +49458 +91643 +90452 +70413 +57511 +65976 +42094 +24449 +63674 +22043 +80059 +17255 +7186 +43422 +46472 +38919 +26467 +5252 +54841 +89109 +9247 +45773 +54149 +5831 +49462 +12160 +66328 +237 +38965 +3010 +99298 +34909 +45610 +77318 +5387 +76079 +80435 +75801 +63865 +42062 +18922 +14812 +25950 +226 +4046 +84498 +31938 +13587 +79037 +97443 +19288 +10714 +73241 +54537 +18927 +46583 +36861 +1308 +74008 +19918 +77434 +36563 +89072 +90047 +74727 +88157 +92991 +73839 +17941 +42255 +47156 +68394 +57440 +36834 +25632 +75257 +20095 +63489 +87112 +12759 +29546 +6266 +70106 +69174 +50993 +44945 +43021 +57580 +3959 +21077 +42978 +28083 +99453 +99187 +23478 +87632 +45496 +90015 +97237 +11644 +34970 +44244 +7371 +11943 +27249 +23225 +86529 +54245 +12595 +39844 +12345 +74324 +43172 +82220 +18531 +82851 +30861 +54075 +7881 +29199 +36584 +58028 +31989 +99312 +73457 +50844 +28484 +64093 +9505 +63470 +15978 +26513 +40790 +14729 +75708 +90557 +72338 +21233 +79738 +29988 +81780 +86739 +30071 +40429 +47366 +83946 +13023 +78370 +7376 +57668 +46962 +52454 +44895 +43630 +94859 +87112 +33365 +43680 +60620 +57155 +82765 +6513 +88038 +99594 +30267 +79098 +60193 +85161 +99747 +80052 +10169 +6456 +76475 +23919 +49555 +77161 +33329 +60561 +91035 +73236 +76742 +70819 +14814 +75757 +631 +17143 +91209 +13944 +95649 +18297 +90068 +81887 +26085 +86313 +13491 +51050 +79282 +11457 +67494 +98570 +82432 +66909 +99091 +15271 +94484 +96004 +746 +1903 +18708 +31139 +33205 +95407 +35663 +60737 +50408 +96147 +3043 +72935 +41289 +1568 +3169 +47521 +85302 +4950 +43864 +88931 +18209 +76475 +48137 +39878 +27045 +8667 +34708 +20752 +37164 +28461 +96319 +25428 +82997 +65058 +14797 +85899 +57079 +97158 +91681 +19007 +94542 +82855 +27358 +60972 +79815 +20411 +13698 +76043 +98410 +81839 +57074 +22454 +97259 +2861 +58560 +73769 +51519 +72799 +58242 +65031 +22118 +92214 +70145 +85715 +7871 +94632 +80363 +90698 +28030 +14122 +26579 +83480 +72940 +59736 +68067 +91592 +56734 +19822 +28497 +33982 +64994 +36750 +34492 +1403 +80983 +63611 +74902 +94576 +17194 +47757 +36288 +91735 +34125 +75898 +9778 +15502 +67750 +16358 +90394 +29026 +15530 +28654 +41163 +52308 +40460 +8654 +24161 +83369 +83716 +94499 +55391 +63589 +65751 +43573 +30620 +10196 +89406 +77298 +52035 +64827 +84148 +92301 +56090 +53834 +60130 +62522 +87456 +90652 +96844 +57482 +88405 +97233 +16767 +5473 +25744 +33522 +7191 +50588 +56357 +99409 +43110 +71855 +92488 +65064 +3557 +78174 +65789 +62683 +67578 +83946 +34782 +3449 +12049 +81712 +76252 +71266 +75822 +49554 +37753 +42610 +86652 +6576 +22880 +50438 +7535 +49967 +56556 +95781 +22168 +83914 +33387 +25182 +22838 +80573 +74787 +44169 +9650 +56863 +16993 +26700 +50166 +95844 +48512 +78569 +67305 +61826 +71107 +42755 +27086 +99474 +85293 +80665 +9648 +43362 +39472 +66678 +80926 +30069 +59543 +78131 +24971 +85095 +47729 +26638 +31283 +26706 +7985 +78853 +42879 +37994 +92072 +80578 +93044 +74343 +24424 +80149 +71847 +13280 +17030 +23543 +77367 +96123 +7399 +58295 +24311 +75243 +85008 +12257 +72374 +87384 +55369 +33660 +6344 +64230 +26308 +92545 +64722 +57664 +55314 +70454 +26663 +68603 +67598 +83405 +52959 +823 +48481 +83413 +25403 +83714 +78797 +71533 +85078 +38942 +42430 +8369 +94664 +46228 +55404 +68051 +62579 +41169 +61573 +62654 +49231 +73418 +81793 +48361 +55758 +77420 +46482 +34414 +99322 +2218 +28330 +15819 +56092 +59431 +93683 +33488 +47802 +20358 +86492 +23057 +51919 +94381 +22822 +45776 +49671 +906 +86741 +7397 +21251 +31894 +41691 +93338 +62005 +94073 +35921 +73374 +62048 +32604 +6173 +49926 +3442 +9379 +27453 +37096 +23586 +34254 +6216 +96604 +41633 +44454 +10191 +30421 +80977 +76994 +50253 +36908 +84988 +89604 +29575 +96699 +56730 +21031 +65244 +26062 +70416 +65111 +94811 +60316 +4070 +28194 +23256 +80880 +59456 +21553 +79061 +34799 +38989 +42497 +51518 +68611 +87914 +80744 +86415 +68615 +45633 +4831 +92290 +99539 +89276 +58465 +20920 +38577 +35439 +39813 +59259 +21008 +35190 +41071 +44926 +11548 +37353 +85037 +77643 +90657 +85721 +50522 +6193 +17824 +38531 +36978 +75853 +52928 +60451 +45780 +89825 +58807 +55474 +56204 +35842 +90059 +60028 +52118 +13597 +29003 +79921 +88990 +71067 +88360 +93938 +84266 +31844 +9091 +12967 +63963 +50141 +66883 +19498 +92926 +26892 +15275 +77461 +97254 +35308 +37829 +68513 +18710 +59391 +15402 +68327 +66750 +81163 +25495 +64309 +52423 +80293 +73827 +54197 +62611 +78703 +24046 +86122 +52078 +72233 +93537 +83520 +50202 +20227 +64868 +31187 +15301 +49565 +10409 +39128 +7113 +12516 +99842 +33476 +61517 +16497 +35037 +81658 +51675 +72436 +29061 +45051 +96322 +31354 +56214 +95984 +334 +71561 +18397 +73486 +92400 +34115 +72987 +56883 +80290 +73412 +10927 +90859 +24807 +17477 +38734 +29730 +64015 +42822 +33620 +11835 +38196 +67439 +2425 +66199 +48174 +40712 +85186 +1128 +85372 +49430 +1191 +71756 +58771 +47125 +5819 +20384 +99146 +75467 +60498 +21751 +95784 +52036 +67616 +26009 +36061 +8205 +34222 +56425 +1886 +62576 +656 +85261 +1425 +89447 +9162 +67599 +94348 +395 +27771 +50994 +73013 +25265 +49068 +57474 +75593 +22220 +25482 +79682 diff --git a/artificialintelligence/index.html b/artificialintelligence/index.html new file mode 100644 index 00000000..3a8fb2cc --- /dev/null +++ b/artificialintelligence/index.html @@ -0,0 +1,12 @@ + Artificial Intelligence - Awesome GameDev Resources

Artificial Intelligence

Estimated time to read: 18 minutes

Students with a firm foundation in the basic techniques of artificial intelligence for games will apply their skills to program advanced pathfinding algorithms, artificial opponents, scripting tools and other real-time drivers for non-playable agents. The goal of the course is to provide finely-tuned artificial competition for players using all the rules followed by a human.

Requirements

  • Artificial Intelligence for Games

Textbook

  • AI for Games, Third Edition: 9781138483972: Millington, Ian

Student-centered Learning Outcomes

Bloom's Taxonomy

Bloom's Taxonomy on Learning Outcomes

Upon completion of the Advanced AI for Games, students should be able to:

Objective Outcomes

  • Recall fundamental AI techniques for games;
  • Identify key components of advanced AI, including pathfinding algorithms and scripting tools
  • Demonstrate a deep understanding of advanced AI principles in gaming;
  • Apply knowledge to program advanced AI components for finely-tuned competition;
  • Evaluate the effectiveness and ethical considerations of advanced AI in game design;
  • Design and implement innovative AI-driven features for enhanced gameplay;
  • Integrate advanced AI seamlessly into game systems for cohesive environments;
  • Consider societal impact and consequences of AI applications in gaming;

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

Schedule for Fall 2024

College dates for the Fall 2024 semester:

Event Date
Classes Begin Aug. 26
Add/Drop Aug. 26 - 30
No Classes - College remains open Sept. 20
Indigenous Peoples Day Holiday Observance Oct. 14
Registration for Spring Classes Oct. 28 - Nov. 8
Last Day to Withdraw Nov. 8
Thanksgiving Break Nov. 25 - Nov. 29
Last Day of Classes Dec. 6
Finals Dec. 9 - Dec. 13
Winter Break Dec. 16 - Jan. 10

Old schedules for reference

Schedule for Spring 2024

College dates for the Spring 2024 semester:

Date Event
Jan 16 Classes Begin
Jan 16 - 22 Add/Drop
Feb 26 - March 1 Midterms
March 11 - March 15 Spring Break
March 25 - April 5 Registration for Fall Classes
April 5 Last Day to Withdraw
April 8 - 19 Idea Evaluation
April 12 No Classes - College remains open
April 26 Last Day of Classes
April 29 - May 3 Finals
May 11 Commencement
  • 🔰 Introduction


    • Week 1. 2024/01/15
    • Topic: AI for games, review of basic AI techniques
    • Activities:
      • Read all materials shared on Canvas;
      • Do all assignments on Canvas;
  • 📊 Wave Function Collapse


    • Week 2. 2024/01/22
    • Topic: Wave Function Collapse
  • Applying A* into continuous space


    • Week 3. 2024/01/29
    • Topic: Applying A* into continuous spaces
  • Applying A* into continuous spaces


    • Week 4. Date: 2024/02/05
    • Topic: Applying A* into continuous spaces
  • Testing your AI Agent and rules


    • Week 5. 2024/02/12
    • Topic: Testing your AI Agent, building meaningful tests, metrics, evaluation and machinations
  • #⃣ Testing your AI Agent


    • Week 6. 2024/02/19
    • Topic: Testing your AI Agent, building meaningful tests, metrics, evaluation and machinations
  • ⚠ Midterms


    • Week 7. Date: 2024/02/26
    • Topic: Work sessions
  • Min max


    • Week 8. 2024/03/04
    • Topic: Min Max
  • Break


    • Week 09. 2024/03/11
    • Topic: Spring BREAK. No classes this week.

    • Week 10. 2024/03/18
    • Topic: Monte Carlo Tree Search
  • Chess


    • Week 11. 2024/03/25
    • Topic: Chess
  • Chess


    • Week 12. 2024/04/01
    • Topic: Chess
  • Chess


    • Week 13. 2024/04/08
    • Topic: Chess
  • Chess


    • Week 14. 2024/04/15
    • Topic: Chess
  • 🧑‍🏭 Chess


    • Week 15. 2024/04/22
    • Topic: Work sessions for chess
  • ⚠ Finals


    • Week 16. 2024/04/26
    • Topic: Finals Week / competition

Schedule for Fall 2023

Relevant dates for the Fall 2023 semester:

  • 09-10 Oct 2023 - Midterms Week
  • 20-24 Nov 2023 - Thanksgiving Break
  • 11-15 Dec 2023 - Finals Week
  • 🔰 Introduction


  • 🤖 Behavioral Agents


  • Finite Automata


  • Random Numbers


    • Week 4. Date: 2023/09/18
    • Topic: Pseudo Random Number Generation
    • Formal Assignment: PRNG at Beecrowd
  • DFS


  • Path finding


    • Week 6. 2023/10/02
    • Topic: Breadth First Search and Path Finding A*
    • Interactive Assignment: Catch the Cat
  • ⚠ Midterms


    • Week 7. Date: 2023/10/09
    • Topic: Catch the Cat Challenge and Competition
    • Catch the Cat
  • Spatial Quantization


    • Week 8. 2023/10/16
    • Topic: Spatial Quantization and Partitioning
    • Readings: Spatial Quantization
    • Formal Assignment: Hide and Seek
  • Spatial Quantization


    • Week 9. 2023/10/23
    • Topic: Spatial Quantization and Partitioning
    • Readings: Spatial Quantization
    • Formal Assignment: Hide and Seek
  • Noise Functions


    • Week 10. 2023/10/30
    • Topic: Noise functions
    • Formal Assignment:
    • Interactive Assignment: Scenario Generation
  • 🎑 Procedural Generation


    • Week 11. 2023/11/06
    • Topic: Procedural Content Generation - Scenario
    • Formal Assignment:
    • Interactive Assignment: Scenario Generation
  • 🎑 Procedural Generation


    • Week 12. 2023/11/13
    • Topic: Procedural Content Generation - Scenario
    • Formal Assignment:
    • Interactive Assignment: Scenario Generation
  • Break


    • Week 13. 2023/11/20
    • Topic: BREAK. No classes
  • 🧑‍🏭 Work sessions


    • Week 14. 2023/11/27
    • Topic: Work sessions for final project
  • 🧑‍🏭 Work sessions


    • Week 15. 2023/12/04
    • Topic: Work sessions for final project
  • Finals


    • Week 16. 2023/12/11
    • Topic: Final Presentations
\ No newline at end of file diff --git a/artificialintelligence/readings/spatial-quantization/index.html b/artificialintelligence/readings/spatial-quantization/index.html new file mode 100644 index 00000000..314db13b --- /dev/null +++ b/artificialintelligence/readings/spatial-quantization/index.html @@ -0,0 +1,175 @@ + Spatial Quantization - Awesome GameDev Resources

Space quantization

Estimated time to read: 22 minutes

Space quantization is a way to sample continuous space, and it can to be used in in many fields, such as Artificial Intelligence, Physics, Rendering, and more. Here we are going to focus primarily Spatial Quantization for AI, because it is the base for pathfinding, line of sight, field of view, and many other techniques.

Some of the most common techniques for space quantization are: grids, voxels, graphs, quadtrees, octrees, KD-trees, BSP, Spatial Hashing and more. Another notable techniques are line of sight(or field of view), map flooding, caching, and movement zones.

Grids

Grids are the most common technique for space quantization. It is a very simple technique, but it is very powerful. It consists in dividing the space in a grid of cells, and then we can use the cell coordinates to represent the space. The most common grid is the square grid, but we can use hexagonal and triangular grids, you might find some irregular shapes useful to exploit the space conformation better.

Square Grid

The square grid is a regular grid, where the cells are squares. It is very simple to implement and understand.

There are some ways to store data for squared grids. Arguably you could 2D arrays, arrays of arrays or vector of vectors, but depending on the way you implement it, it can hurt the performance. Example: if you use an array of arrays or vector of vectors, where every entry from de outer array is a pointer to the inner array, you will have a lot of cache misses, because the inner arrays are not contiguous in memory.

Notes on cache locality

So in order do increase data locality for squared grids, you can use a single array, and then use the following formula to calculate the index of the cell. We call this strategy matrix flattening.

int arrray[width * height]; // 1D array with the total size of the grid
+int index = x + y * width; // index of the cell at x,y
+

There is a catch here, given we usually represent points as X and Y coordinates, we need to be careful with the order of the coordinates. While you are iterating over all the matrix, you need to iterate over the Y coordinate first, and then the X coordinate. This is because the Y coordinate is the one that changes the most, so it is better to have it in the inner loop. By doing that, you will have better cache locality and effectively the index will be sequential.

vector<YourStructure> data; // data is filled with some data elsewhere
+for(int y = 0; y < height; y++) {
+    for(int x = 0; x < width; x++) {
+        // do something with the cell at index x,y
+        data[y * width + x] = yourstrucure;
+        // it is the same as: data[y][x] = yourstructure;
+    }
+}
+

Quantization and dequantization of square grids

If your world is based on floats, you can use the square by using the floor function or just cast to integer type, because the default behavior of casting from float to integer is to floor it. Example: In the case of a quantization resolution of size of 1.0f, everything between 0 and 1 will be in the cell (0,0), everything between 1 and 2 will be in the cell (1,0), and so on.

Vector2int quantize(Vector2f position, float resolution) {
+    return Vector2int((int)floor(position.x/resolution), (int)floor(position.y/resolution));
+}
+

If you need to get the center of the cell in the world coordinates following the quantization resolution, you can use the following code.

Vector2f dequantize(Vector2int index, float resolution) {
+    return Vector2f((float)index.x * resolution + resolution/2.0f, (float)index.y * resolution + resolution/2.0f);
+}
+

If you need to get the corners of the cell following the quantization resolution, you can use the following code.

Rectangle2f cell_bounds(Vector2int index, float resolution) {
+    return {index.x * resolution, index.y * resolution, (index.x+1) * resolution, (index.y+1) * resolution};
+}
+

If you need to get the neighbors of a cell, you can use the following code.

std::vector<Vector2int> get_neighbors(Vector2int index) {
+    return {{index.x-1, index.y}, {index.x, index.y-1},
+            {index.x+1, index.y}, {index.x, index.y+1}};
+}
+

We already understood the idea of matrix flattening to improve efficiency, we can use it to represent a maze. But in a maze, we have walls to

Imagine that you are willing to be as memory efficient and more cache friendly as possible. You can use a single array to store the maze, and you can use the following formula to convert from matrix indexes to the index of the cell in the array.

## Hexagonal Grid
+
+Hexagonal grid is an extension of a square grid, but the cells are hexagons. It feels nicer to human eyes because we have more equally distant neighbors. If used as subtract for pathfinding, it can be more efficient because the path can be more straight.
+
+It can be implemented as single dimension array, but you need to be careful with shift that happens in different odd or even indexes. You can use the following formula to calculate the index of the cell. In this world quantization can be in 4 conformations, depending on the rotation of the hexagon and the alignment of the first cell.
+
+1. Point pointy top hexagon with first line aligned to the left:
+``` text
+  / \ / \ / \ 
+ | A | B | C |
+  \ / \ / \ / \
+   | D | E | F |
+  / \ / \ / \ /
+ | G | H | I |
+  \ / \ / \ / 
+
  1. Point pointy top hexagon with first line aligned to the right
        / \ / \ / \
    +   | A | B | C |
    +  / \ / \ / \ / 
    + | D | E | F |
    +  \ / \ / \ / \
    +   | G | H | I |
    +    \ / \ / \ /
    +
  2. Flat top hexagon with first column aligned to the top:
     __    __
    +/A \__/C \
    +\__/B \__/
    +/D \__/F \
    +\__/E \__/
    +/G \__/I \
    +\__/H \__/
    +   \__/
    +
  3. Flat top hexagon with first column aligned to the bottom:
         __
    +  __/B \__ 
    + /A \__/C \
    + \__/E \__/
    + /D \__/F \
    + \__/H \__/
    + /G \__/I \
    + \__/  \__/
    +

Quantization and dequantization of hexagonal grids

For simplicity, we are going to use the first conformation, where the first line is aligned to the left, and the hexagons are pointy top. The quantization is done by using the following formula.

// I am assuming that the hexagon is pointy top, and the first line is aligned to the left
+// I am also assuming that the hexagon is centered in the cell, and the top left corner is at (0,0), 
+// y axis is pointing down and x axis is pointing right
+// this dont work for all the cases, but it is a good approximation for locations near the center of the hexagon
+/*
+  / \ / \ / \ 
+ | A | B | C |
+  \ / \ / \ / \
+   | D | E | F |
+  / \ / \ / \ /
+ | G | H | I |
+  \ / \ / \ /
+ */
+Vector2int quantize(Vector2f position, float hexagonSide) {
+    int y = (position.y - hexagonSide)/(hexagonSide * 2);
+    int x = y%2==0 ?
+      (position.x - hexagonSide * sqrt3over2) / (hexagonSide * sqrt3over2 * 2) : // even lines
+      (position.x - hexagonSide * sqrt3over2 * 2)/(hexagonSide * sqrt3over2 * 2) // odd lines
+    return Vector2int(x, y);
+}
+Vector2f dequantize(Vector2int index, float hexagonSide) {
+    return Vector2f(index.y%2==0 ? 
+      hexagonSide * sqrt3over2 + index.x * hexagonSide * sqrt3over2 * 2 : // even lines
+      hexagonSide * sqrt3over2 * 2 + index.x * hexagonSide * sqrt3over2 * 2, // odd lines
+      hexagonSide + index.y * hexagonSide * 2);
+}
+

You will have to figure out the formula for the other conformations. Or send a merge request to this repository adding more information.

Voxels and Grid 3D

Grids in 3D works the same way as in 2D, but you need to use 3D vectors/arrays or voxel volumes. Most concepts applies here. If you want to expand this section, send a merge request.

Quadtree

Quadtree is a tree data structure where each node has 4 children. It is used to partition a space in 2D. It is used to optimize collision detection, pathfinding, and other algorithms that need to iterate over a space. It is also used to optimize rendering, because you can render only the visible part of the space.

Quadtree implementation

Quadtree is a recursive data structure, so you can implement it using a recursive data structure. The following code is a simple implementation of a quadtree.

// this code is not tested, but it should work. It is just an example and send a merge request if you find any errors.
+// node
+template<class T>
+struct DataAtPosition {
+    Vector2f center;
+    T data;
+};
+
+template<class T>
+struct QuadtreeNode {
+    Rectangle2f bounds;
+    std::vector<DataAtPosition<T>> data;
+    std::vector<QuadtreeNode<T>> children;
+};
+
+// insert
+template<class T>
+void insert(QuadtreeNode<T>& root, DataAtPosition<T> data) {
+    if (root.children.empty()) {
+        root.data.push_back(data);
+        if (root.data.size() > 4) {
+            root.children.resize(4);
+            for (int i = 0; i < 4; ++i) {
+                root.children[i].bounds = root.bounds;
+            }
+            root.children[0].bounds.max.x = root.bounds.center().x; // top left
+            root.children[0].bounds.max.y = root.bounds.center().y; // top left
+            root.children[1].bounds.min.x = root.bounds.center().x; // top right
+            root.children[1].bounds.max.y = root.bounds.center().y; // top right
+            root.children[2].bounds.min.x = root.bounds.center().x; // bottom right
+            root.children[2].bounds.min.y = root.bounds.center().y; // bottom right
+            root.children[3].bounds.max.x = root.bounds.center().x; // bottom left
+            root.children[3].bounds.min.y = root.bounds.center().y; // bottom left
+            for (auto& data : root.data) {
+                insert(root, data);
+            }
+            root.data.clear();
+        }
+    } else {
+        for (auto& child : root.children) {
+            if (child.bounds.contains(data.center)) {
+                insert(child, data);
+                break;
+            }
+        }
+    }
+}
+
+// query
+template<class T>
+void query(QuadtreeNode<T>& root, Rectangle2f bounds, std::vector<DataAtPosition<T>>& result) {
+    if (root.bounds.intersects(bounds)) {
+        for (auto& data : root.data) {
+            if (bounds.contains(data.center)) {
+                result.push_back(data);
+            }
+        }
+        for (auto& child : root.children) {
+            query(child, bounds, result);
+        }
+    }
+}
+

Quadtree optimization

The quadtree is a recursive data structure, so it is not cache friendly. You can optimize it by using a flat array instead of a recursive data structure.

Octree

Section WiP. Send a merge request if you want to contribute.

KD-Tree

KD-Trees are a tree data structure that are used to partition a spaces in any dimension (2D, 3D, 4D, etc). They are used to optimize collision detection(Physics), pathfinding(AI), and other algorithms that need to iterate over a space. Also they are also used to optimize rendering, because you can render only the visible part of the space. Pay attention that KD-Trees are not the same as Quadtree and Octrees, even if they are similar.

In KD-trees, every node defines an orthogonal partition plan that alternate every deepening level of the tree. The partition plan is defined by a dimension, a value. The dimension is the axis that is used to partition the space, and the value is the position of the partition plan. The partition plan is orthogonal to the axis, so it is a line in 2D, a plane in 3D, and a hyperplane in 4D.

BSP Tree

BSP inherits almost all characteristics of KD-Trees, but it is not a tree data structure, it is a graph data structure. The main difference is to instead of being orthogonal you define the plane of the section. The plane is defined by a point and a normal. The normal is the direction of the plane, and the point is a point in the plane.

Spatial Hashing

Spatial hashing is a data structure that is used to partition a space. It consists in a hash table where the keys are the positions of the elements, and the values are the elements in buckets. It is very fast to insert and query elements. But it is not good for iteration, because it is not cache friendly.

Usually when you want to use a spatial hashing, you create hash functions for the bucket keys, there is no limit on how you do that, but you have to keep in mind that the hash functions have to be fast and have to be good for the distribution of the elements. Here is a good example of a hashing function for 2D vectors.

namespace std {
+    template<>
+    struct hash<Vector2f> {
+        // I am assuming size_t is 64 bits and the float is 32 bits
+        size_t operator()(const Vector2f& v) const {
+            // get the bits of the float in a integer
+            uint64_t x = *(uint64_t*)&v.x;
+            uint64_t y = *(uint64_t*)&v.y;
+            // mix the bits of the floats
+            uint64_t hash = x | (y << 32);
+            return hash;
+        }
+    };
+}
+

Pay attention that the hashing function above generates collisions, so you have to use a data structure that can handle collisions. You will use datastructures like unordered_map<Vector2D, unordered_set<DATATYPE>> or unordered_map<Vector2D, vector<DATATYPE>>. The first one is better for insertion and query, but it is not cache friendly.

To avoid having one bucket per every possible position, you have to setup properly the dimension of the bucket, a good sugestion is to alwoys floor the position and have buckets dimension of 1.0f. That would be good enough for most cases.

\ No newline at end of file diff --git a/assets/android-chrome-192x192.png b/assets/android-chrome-192x192.png new file mode 100644 index 00000000..b9611a02 Binary files /dev/null and b/assets/android-chrome-192x192.png differ diff --git a/assets/android-chrome-512x512.png b/assets/android-chrome-512x512.png new file mode 100644 index 00000000..f27b566b Binary files /dev/null and b/assets/android-chrome-512x512.png differ diff --git a/assets/apple-touch-icon.png b/assets/apple-touch-icon.png new file mode 100644 index 00000000..357d0bf0 Binary files /dev/null and b/assets/apple-touch-icon.png differ diff --git a/assets/favicon-16x16.png b/assets/favicon-16x16.png new file mode 100644 index 00000000..dc9723f3 Binary files /dev/null and b/assets/favicon-16x16.png differ diff --git a/assets/favicon-32x32.png b/assets/favicon-32x32.png new file mode 100644 index 00000000..375c99be Binary files /dev/null and b/assets/favicon-32x32.png differ diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 00000000..b603fe03 Binary files /dev/null and b/assets/favicon.ico differ diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 00000000..1cf13b9f Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/images/social/advanced/01-introduction/index.png b/assets/images/social/advanced/01-introduction/index.png new file mode 100644 index 00000000..84292c6d Binary files /dev/null and b/assets/images/social/advanced/01-introduction/index.png differ diff --git a/assets/images/social/advanced/01-introduction/setup.png b/assets/images/social/advanced/01-introduction/setup.png new file mode 100644 index 00000000..9d03843a Binary files /dev/null and b/assets/images/social/advanced/01-introduction/setup.png differ diff --git a/assets/images/social/advanced/02-oop/index.png b/assets/images/social/advanced/02-oop/index.png new file mode 100644 index 00000000..bc913316 Binary files /dev/null and b/assets/images/social/advanced/02-oop/index.png differ diff --git a/assets/images/social/advanced/03-pointers/index.png b/assets/images/social/advanced/03-pointers/index.png new file mode 100644 index 00000000..478e0cff Binary files /dev/null and b/assets/images/social/advanced/03-pointers/index.png differ diff --git a/assets/images/social/advanced/04-operators/index.png b/assets/images/social/advanced/04-operators/index.png new file mode 100644 index 00000000..25a21413 Binary files /dev/null and b/assets/images/social/advanced/04-operators/index.png differ diff --git a/assets/images/social/advanced/index.png b/assets/images/social/advanced/index.png new file mode 100644 index 00000000..3d3a937a Binary files /dev/null and b/assets/images/social/advanced/index.png differ diff --git a/assets/images/social/algorithms/01-introduction/index.png b/assets/images/social/algorithms/01-introduction/index.png new file mode 100644 index 00000000..364153b9 Binary files /dev/null and b/assets/images/social/algorithms/01-introduction/index.png differ diff --git a/assets/images/social/algorithms/02-analysis/index.png b/assets/images/social/algorithms/02-analysis/index.png new file mode 100644 index 00000000..d1f497d4 Binary files /dev/null and b/assets/images/social/algorithms/02-analysis/index.png differ diff --git a/assets/images/social/algorithms/03-dynamic-data/index.png b/assets/images/social/algorithms/03-dynamic-data/index.png new file mode 100644 index 00000000..9ee800bc Binary files /dev/null and b/assets/images/social/algorithms/03-dynamic-data/index.png differ diff --git a/assets/images/social/algorithms/04-sorting/index.png b/assets/images/social/algorithms/04-sorting/index.png new file mode 100644 index 00000000..5f9c6a16 Binary files /dev/null and b/assets/images/social/algorithms/04-sorting/index.png differ diff --git a/assets/images/social/algorithms/05-divide-and-conquer/index.png b/assets/images/social/algorithms/05-divide-and-conquer/index.png new file mode 100644 index 00000000..c92b7803 Binary files /dev/null and b/assets/images/social/algorithms/05-divide-and-conquer/index.png differ diff --git a/assets/images/social/algorithms/06-hashtables/index.png b/assets/images/social/algorithms/06-hashtables/index.png new file mode 100644 index 00000000..0a1a0a42 Binary files /dev/null and b/assets/images/social/algorithms/06-hashtables/index.png differ diff --git a/assets/images/social/algorithms/07-midterm/index.png b/assets/images/social/algorithms/07-midterm/index.png new file mode 100644 index 00000000..ec0d3e2b Binary files /dev/null and b/assets/images/social/algorithms/07-midterm/index.png differ diff --git a/assets/images/social/algorithms/08-stack-and-queue/index.png b/assets/images/social/algorithms/08-stack-and-queue/index.png new file mode 100644 index 00000000..2545c678 Binary files /dev/null and b/assets/images/social/algorithms/08-stack-and-queue/index.png differ diff --git a/assets/images/social/algorithms/09-break/index.png b/assets/images/social/algorithms/09-break/index.png new file mode 100644 index 00000000..b0f363da Binary files /dev/null and b/assets/images/social/algorithms/09-break/index.png differ diff --git a/assets/images/social/algorithms/10-graphs/index.png b/assets/images/social/algorithms/10-graphs/index.png new file mode 100644 index 00000000..56f077c7 Binary files /dev/null and b/assets/images/social/algorithms/10-graphs/index.png differ diff --git a/assets/images/social/algorithms/11-dijkstra/index.png b/assets/images/social/algorithms/11-dijkstra/index.png new file mode 100644 index 00000000..2d9d051d Binary files /dev/null and b/assets/images/social/algorithms/11-dijkstra/index.png differ diff --git a/assets/images/social/algorithms/12-mst/index.png b/assets/images/social/algorithms/12-mst/index.png new file mode 100644 index 00000000..241be08d Binary files /dev/null and b/assets/images/social/algorithms/12-mst/index.png differ diff --git a/assets/images/social/algorithms/13-bst/index.png b/assets/images/social/algorithms/13-bst/index.png new file mode 100644 index 00000000..03932511 Binary files /dev/null and b/assets/images/social/algorithms/13-bst/index.png differ diff --git a/assets/images/social/algorithms/14-heap/index.png b/assets/images/social/algorithms/14-heap/index.png new file mode 100644 index 00000000..0bb5205f Binary files /dev/null and b/assets/images/social/algorithms/14-heap/index.png differ diff --git a/assets/images/social/algorithms/15-project/index.png b/assets/images/social/algorithms/15-project/index.png new file mode 100644 index 00000000..501b36b1 Binary files /dev/null and b/assets/images/social/algorithms/15-project/index.png differ diff --git a/assets/images/social/algorithms/16-finals/index.png b/assets/images/social/algorithms/16-finals/index.png new file mode 100644 index 00000000..affd9194 Binary files /dev/null and b/assets/images/social/algorithms/16-finals/index.png differ diff --git a/assets/images/social/algorithms/index.png b/assets/images/social/algorithms/index.png new file mode 100644 index 00000000..2854ecfd Binary files /dev/null and b/assets/images/social/algorithms/index.png differ diff --git a/assets/images/social/artificialintelligence/00-introduction/index.png b/assets/images/social/artificialintelligence/00-introduction/index.png new file mode 100644 index 00000000..39bed828 Binary files /dev/null and b/assets/images/social/artificialintelligence/00-introduction/index.png differ diff --git a/assets/images/social/artificialintelligence/01-pcg/index.png b/assets/images/social/artificialintelligence/01-pcg/index.png new file mode 100644 index 00000000..e91c29ec Binary files /dev/null and b/assets/images/social/artificialintelligence/01-pcg/index.png differ diff --git a/assets/images/social/artificialintelligence/02-sm/index.png b/assets/images/social/artificialintelligence/02-sm/index.png new file mode 100644 index 00000000..559970f6 Binary files /dev/null and b/assets/images/social/artificialintelligence/02-sm/index.png differ diff --git a/assets/images/social/artificialintelligence/03-boardgames/index.png b/assets/images/social/artificialintelligence/03-boardgames/index.png new file mode 100644 index 00000000..2f35e564 Binary files /dev/null and b/assets/images/social/artificialintelligence/03-boardgames/index.png differ diff --git a/assets/images/social/artificialintelligence/04-spatialhashing/index.png b/assets/images/social/artificialintelligence/04-spatialhashing/index.png new file mode 100644 index 00000000..0cc343b1 Binary files /dev/null and b/assets/images/social/artificialintelligence/04-spatialhashing/index.png differ diff --git a/assets/images/social/artificialintelligence/05-kdtree/index.png b/assets/images/social/artificialintelligence/05-kdtree/index.png new file mode 100644 index 00000000..e52bc2a9 Binary files /dev/null and b/assets/images/social/artificialintelligence/05-kdtree/index.png differ diff --git a/assets/images/social/artificialintelligence/06-pathfinding/index.png b/assets/images/social/artificialintelligence/06-pathfinding/index.png new file mode 100644 index 00000000..02b41396 Binary files /dev/null and b/assets/images/social/artificialintelligence/06-pathfinding/index.png differ diff --git a/assets/images/social/artificialintelligence/07-automatedtesting/index.png b/assets/images/social/artificialintelligence/07-automatedtesting/index.png new file mode 100644 index 00000000..11a56b71 Binary files /dev/null and b/assets/images/social/artificialintelligence/07-automatedtesting/index.png differ diff --git a/assets/images/social/artificialintelligence/09-minmax/index.png b/assets/images/social/artificialintelligence/09-minmax/index.png new file mode 100644 index 00000000..c62a496a Binary files /dev/null and b/assets/images/social/artificialintelligence/09-minmax/index.png differ diff --git a/assets/images/social/artificialintelligence/animation/index.png b/assets/images/social/artificialintelligence/animation/index.png new file mode 100644 index 00000000..3a10e8d7 Binary files /dev/null and b/assets/images/social/artificialintelligence/animation/index.png differ diff --git a/assets/images/social/artificialintelligence/assignments/flocking/index.png b/assets/images/social/artificialintelligence/assignments/flocking/index.png new file mode 100644 index 00000000..25cfebc3 Binary files /dev/null and b/assets/images/social/artificialintelligence/assignments/flocking/index.png differ diff --git a/assets/images/social/artificialintelligence/assignments/genai/index.png b/assets/images/social/artificialintelligence/assignments/genai/index.png new file mode 100644 index 00000000..49e81ee9 Binary files /dev/null and b/assets/images/social/artificialintelligence/assignments/genai/index.png differ diff --git a/assets/images/social/artificialintelligence/assignments/index.png b/assets/images/social/artificialintelligence/assignments/index.png new file mode 100644 index 00000000..63c821be Binary files /dev/null and b/assets/images/social/artificialintelligence/assignments/index.png differ diff --git a/assets/images/social/artificialintelligence/assignments/life/index.png b/assets/images/social/artificialintelligence/assignments/life/index.png new file mode 100644 index 00000000..5a9ef0aa Binary files /dev/null and b/assets/images/social/artificialintelligence/assignments/life/index.png differ diff --git a/assets/images/social/artificialintelligence/assignments/maze/index.png b/assets/images/social/artificialintelligence/assignments/maze/index.png new file mode 100644 index 00000000..f8b3471c Binary files /dev/null and b/assets/images/social/artificialintelligence/assignments/maze/index.png differ diff --git a/assets/images/social/artificialintelligence/assignments/rng/index.png b/assets/images/social/artificialintelligence/assignments/rng/index.png new file mode 100644 index 00000000..3395d8bb Binary files /dev/null and b/assets/images/social/artificialintelligence/assignments/rng/index.png differ diff --git a/assets/images/social/artificialintelligence/index.png b/assets/images/social/artificialintelligence/index.png new file mode 100644 index 00000000..23ee9935 Binary files /dev/null and b/assets/images/social/artificialintelligence/index.png differ diff --git a/assets/images/social/artificialintelligence/readings/spatial-quantization.png b/assets/images/social/artificialintelligence/readings/spatial-quantization.png new file mode 100644 index 00000000..afab1028 Binary files /dev/null and b/assets/images/social/artificialintelligence/readings/spatial-quantization.png differ diff --git a/assets/images/social/blog/2023/07/28/the-problem-with-ai-trolley-dilemma.png b/assets/images/social/blog/2023/07/28/the-problem-with-ai-trolley-dilemma.png new file mode 100644 index 00000000..4fca54e3 Binary files /dev/null and b/assets/images/social/blog/2023/07/28/the-problem-with-ai-trolley-dilemma.png differ diff --git a/assets/images/social/blog/2023/08/09/lets-talk-about-virtual-reality.png b/assets/images/social/blog/2023/08/09/lets-talk-about-virtual-reality.png new file mode 100644 index 00000000..97385589 Binary files /dev/null and b/assets/images/social/blog/2023/08/09/lets-talk-about-virtual-reality.png differ diff --git a/assets/images/social/blog/2023/08/24/notes-on-submissions.png b/assets/images/social/blog/2023/08/24/notes-on-submissions.png new file mode 100644 index 00000000..0c9cd46d Binary files /dev/null and b/assets/images/social/blog/2023/08/24/notes-on-submissions.png differ diff --git a/assets/images/social/blog/2023/08/30/ferpa-consent.png b/assets/images/social/blog/2023/08/30/ferpa-consent.png new file mode 100644 index 00000000..ff7b53c6 Binary files /dev/null and b/assets/images/social/blog/2023/08/30/ferpa-consent.png differ diff --git a/assets/images/social/blog/2023/09/09/setup-sdl-with-cmake-and-cpm.png b/assets/images/social/blog/2023/09/09/setup-sdl-with-cmake-and-cpm.png new file mode 100644 index 00000000..4d35bac5 Binary files /dev/null and b/assets/images/social/blog/2023/09/09/setup-sdl-with-cmake-and-cpm.png differ diff --git a/assets/images/social/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation.png b/assets/images/social/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation.png new file mode 100644 index 00000000..86acb294 Binary files /dev/null and b/assets/images/social/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation.png differ diff --git a/assets/images/social/blog/2024/01/29/differences-between-map-vs-unordered_map.png b/assets/images/social/blog/2024/01/29/differences-between-map-vs-unordered_map.png new file mode 100644 index 00000000..0bdf493d Binary files /dev/null and b/assets/images/social/blog/2024/01/29/differences-between-map-vs-unordered_map.png differ diff --git a/assets/images/social/blog/2024/08/19/neurodivergence-in-the-game-development.png b/assets/images/social/blog/2024/08/19/neurodivergence-in-the-game-development.png new file mode 100644 index 00000000..86ab3329 Binary files /dev/null and b/assets/images/social/blog/2024/08/19/neurodivergence-in-the-game-development.png differ diff --git a/assets/images/social/blog/archive/2023.png b/assets/images/social/blog/archive/2023.png new file mode 100644 index 00000000..5d981773 Binary files /dev/null and b/assets/images/social/blog/archive/2023.png differ diff --git a/assets/images/social/blog/archive/2024.png b/assets/images/social/blog/archive/2024.png new file mode 100644 index 00000000..65409e61 Binary files /dev/null and b/assets/images/social/blog/archive/2024.png differ diff --git a/assets/images/social/blog/category/academic-honesty.png b/assets/images/social/blog/category/academic-honesty.png new file mode 100644 index 00000000..e22aa3a5 Binary files /dev/null and b/assets/images/social/blog/category/academic-honesty.png differ diff --git a/assets/images/social/blog/category/adhd.png b/assets/images/social/blog/category/adhd.png new file mode 100644 index 00000000..bf1a57b9 Binary files /dev/null and b/assets/images/social/blog/category/adhd.png differ diff --git a/assets/images/social/blog/category/ai.png b/assets/images/social/blog/category/ai.png new file mode 100644 index 00000000..ddd80563 Binary files /dev/null and b/assets/images/social/blog/category/ai.png differ diff --git a/assets/images/social/blog/category/algorithms.png b/assets/images/social/blog/category/algorithms.png new file mode 100644 index 00000000..9ff12719 Binary files /dev/null and b/assets/images/social/blog/category/algorithms.png differ diff --git a/assets/images/social/blog/category/augmented-reality.png b/assets/images/social/blog/category/augmented-reality.png new file mode 100644 index 00000000..d1729c2b Binary files /dev/null and b/assets/images/social/blog/category/augmented-reality.png differ diff --git a/assets/images/social/blog/category/augmented-virtuality.png b/assets/images/social/blog/category/augmented-virtuality.png new file mode 100644 index 00000000..daa9f67b Binary files /dev/null and b/assets/images/social/blog/category/augmented-virtuality.png differ diff --git a/assets/images/social/blog/category/autism.png b/assets/images/social/blog/category/autism.png new file mode 100644 index 00000000..54cdca0f Binary files /dev/null and b/assets/images/social/blog/category/autism.png differ diff --git a/assets/images/social/blog/category/bitfield.png b/assets/images/social/blog/category/bitfield.png new file mode 100644 index 00000000..09cd9fc7 Binary files /dev/null and b/assets/images/social/blog/category/bitfield.png differ diff --git a/assets/images/social/blog/category/c.png b/assets/images/social/blog/category/c.png new file mode 100644 index 00000000..fd43fd78 Binary files /dev/null and b/assets/images/social/blog/category/c.png differ diff --git a/assets/images/social/blog/category/cache.png b/assets/images/social/blog/category/cache.png new file mode 100644 index 00000000..c45e989d Binary files /dev/null and b/assets/images/social/blog/category/cache.png differ diff --git a/assets/images/social/blog/category/canvas.png b/assets/images/social/blog/category/canvas.png new file mode 100644 index 00000000..d0355ff5 Binary files /dev/null and b/assets/images/social/blog/category/canvas.png differ diff --git a/assets/images/social/blog/category/chatgpt.png b/assets/images/social/blog/category/chatgpt.png new file mode 100644 index 00000000..c123401f Binary files /dev/null and b/assets/images/social/blog/category/chatgpt.png differ diff --git a/assets/images/social/blog/category/clion.png b/assets/images/social/blog/category/clion.png new file mode 100644 index 00000000..d2e0d377 Binary files /dev/null and b/assets/images/social/blog/category/clion.png differ diff --git a/assets/images/social/blog/category/cmake.png b/assets/images/social/blog/category/cmake.png new file mode 100644 index 00000000..f4629982 Binary files /dev/null and b/assets/images/social/blog/category/cmake.png differ diff --git a/assets/images/social/blog/category/cpm.png b/assets/images/social/blog/category/cpm.png new file mode 100644 index 00000000..6b8a0958 Binary files /dev/null and b/assets/images/social/blog/category/cpm.png differ diff --git a/assets/images/social/blog/category/data-structures.png b/assets/images/social/blog/category/data-structures.png new file mode 100644 index 00000000..d2c975c7 Binary files /dev/null and b/assets/images/social/blog/category/data-structures.png differ diff --git a/assets/images/social/blog/category/ferpa.png b/assets/images/social/blog/category/ferpa.png new file mode 100644 index 00000000..0662cfc6 Binary files /dev/null and b/assets/images/social/blog/category/ferpa.png differ diff --git a/assets/images/social/blog/category/gamedev.png b/assets/images/social/blog/category/gamedev.png new file mode 100644 index 00000000..f097b315 Binary files /dev/null and b/assets/images/social/blog/category/gamedev.png differ diff --git a/assets/images/social/blog/category/giftedness.png b/assets/images/social/blog/category/giftedness.png new file mode 100644 index 00000000..1c8ae945 Binary files /dev/null and b/assets/images/social/blog/category/giftedness.png differ diff --git a/assets/images/social/blog/category/github-copilot.png b/assets/images/social/blog/category/github-copilot.png new file mode 100644 index 00000000..c4fb5606 Binary files /dev/null and b/assets/images/social/blog/category/github-copilot.png differ diff --git a/assets/images/social/blog/category/high-abilities.png b/assets/images/social/blog/category/high-abilities.png new file mode 100644 index 00000000..7d961f97 Binary files /dev/null and b/assets/images/social/blog/category/high-abilities.png differ diff --git a/assets/images/social/blog/category/map.png b/assets/images/social/blog/category/map.png new file mode 100644 index 00000000..326f9b44 Binary files /dev/null and b/assets/images/social/blog/category/map.png differ diff --git a/assets/images/social/blog/category/maze-generation.png b/assets/images/social/blog/category/maze-generation.png new file mode 100644 index 00000000..7e32e33b Binary files /dev/null and b/assets/images/social/blog/category/maze-generation.png differ diff --git a/assets/images/social/blog/category/maze.png b/assets/images/social/blog/category/maze.png new file mode 100644 index 00000000..3e089ca3 Binary files /dev/null and b/assets/images/social/blog/category/maze.png differ diff --git a/assets/images/social/blog/category/memory.png b/assets/images/social/blog/category/memory.png new file mode 100644 index 00000000..5ccd3e46 Binary files /dev/null and b/assets/images/social/blog/category/memory.png differ diff --git a/assets/images/social/blog/category/mixed-reality.png b/assets/images/social/blog/category/mixed-reality.png new file mode 100644 index 00000000..b1cad1cc Binary files /dev/null and b/assets/images/social/blog/category/mixed-reality.png differ diff --git a/assets/images/social/blog/category/moss.png b/assets/images/social/blog/category/moss.png new file mode 100644 index 00000000..6e254900 Binary files /dev/null and b/assets/images/social/blog/category/moss.png differ diff --git a/assets/images/social/blog/category/neuro-divergence.png b/assets/images/social/blog/category/neuro-divergence.png new file mode 100644 index 00000000..47a8382b Binary files /dev/null and b/assets/images/social/blog/category/neuro-divergence.png differ diff --git a/assets/images/social/blog/category/optimization.png b/assets/images/social/blog/category/optimization.png new file mode 100644 index 00000000..76d645f6 Binary files /dev/null and b/assets/images/social/blog/category/optimization.png differ diff --git a/assets/images/social/blog/category/philosophy.png b/assets/images/social/blog/category/philosophy.png new file mode 100644 index 00000000..ab1f92b3 Binary files /dev/null and b/assets/images/social/blog/category/philosophy.png differ diff --git a/assets/images/social/blog/category/plagiarism.png b/assets/images/social/blog/category/plagiarism.png new file mode 100644 index 00000000..f6742605 Binary files /dev/null and b/assets/images/social/blog/category/plagiarism.png differ diff --git a/assets/images/social/blog/category/privacy.png b/assets/images/social/blog/category/privacy.png new file mode 100644 index 00000000..7dcd7517 Binary files /dev/null and b/assets/images/social/blog/category/privacy.png differ diff --git a/assets/images/social/blog/category/sdl2.png b/assets/images/social/blog/category/sdl2.png new file mode 100644 index 00000000..cb61c403 Binary files /dev/null and b/assets/images/social/blog/category/sdl2.png differ diff --git a/assets/images/social/blog/category/sdl3.png b/assets/images/social/blog/category/sdl3.png new file mode 100644 index 00000000..a32bafff Binary files /dev/null and b/assets/images/social/blog/category/sdl3.png differ diff --git a/assets/images/social/blog/category/teaching.png b/assets/images/social/blog/category/teaching.png new file mode 100644 index 00000000..d3f88042 Binary files /dev/null and b/assets/images/social/blog/category/teaching.png differ diff --git a/assets/images/social/blog/category/turnitin.png b/assets/images/social/blog/category/turnitin.png new file mode 100644 index 00000000..1622c3e6 Binary files /dev/null and b/assets/images/social/blog/category/turnitin.png differ diff --git a/assets/images/social/blog/category/unordered_map.png b/assets/images/social/blog/category/unordered_map.png new file mode 100644 index 00000000..88180e58 Binary files /dev/null and b/assets/images/social/blog/category/unordered_map.png differ diff --git a/assets/images/social/blog/category/vector.png b/assets/images/social/blog/category/vector.png new file mode 100644 index 00000000..d92dd57b Binary files /dev/null and b/assets/images/social/blog/category/vector.png differ diff --git a/assets/images/social/blog/category/virtual-reality.png b/assets/images/social/blog/category/virtual-reality.png new file mode 100644 index 00000000..3ccaf846 Binary files /dev/null and b/assets/images/social/blog/category/virtual-reality.png differ diff --git a/assets/images/social/blog/index.png b/assets/images/social/blog/index.png new file mode 100644 index 00000000..105cc8fe Binary files /dev/null and b/assets/images/social/blog/index.png differ diff --git a/assets/images/social/dojo/Full-Cycle-SDL-Development.png b/assets/images/social/dojo/Full-Cycle-SDL-Development.png new file mode 100644 index 00000000..34de7ecb Binary files /dev/null and b/assets/images/social/dojo/Full-Cycle-SDL-Development.png differ diff --git a/assets/images/social/dojo/The-most-asked-interview-question.png b/assets/images/social/dojo/The-most-asked-interview-question.png new file mode 100644 index 00000000..4cf1f160 Binary files /dev/null and b/assets/images/social/dojo/The-most-asked-interview-question.png differ diff --git a/assets/images/social/dojo/index.png b/assets/images/social/dojo/index.png new file mode 100644 index 00000000..363a3ac3 Binary files /dev/null and b/assets/images/social/dojo/index.png differ diff --git a/assets/images/social/index.png b/assets/images/social/index.png new file mode 100644 index 00000000..2e3fa1c5 Binary files /dev/null and b/assets/images/social/index.png differ diff --git a/assets/images/social/intro/01-introduction/index.png b/assets/images/social/intro/01-introduction/index.png new file mode 100644 index 00000000..0fa92672 Binary files /dev/null and b/assets/images/social/intro/01-introduction/index.png differ diff --git a/assets/images/social/intro/02-tooling/index.png b/assets/images/social/intro/02-tooling/index.png new file mode 100644 index 00000000..9d03843a Binary files /dev/null and b/assets/images/social/intro/02-tooling/index.png differ diff --git a/assets/images/social/intro/03-datatypes/index.png b/assets/images/social/intro/03-datatypes/index.png new file mode 100644 index 00000000..d29292e1 Binary files /dev/null and b/assets/images/social/intro/03-datatypes/index.png differ diff --git a/assets/images/social/intro/04-conditionals/index.png b/assets/images/social/intro/04-conditionals/index.png new file mode 100644 index 00000000..f5de766e Binary files /dev/null and b/assets/images/social/intro/04-conditionals/index.png differ diff --git a/assets/images/social/intro/05-loops/index.png b/assets/images/social/intro/05-loops/index.png new file mode 100644 index 00000000..dc6702ee Binary files /dev/null and b/assets/images/social/intro/05-loops/index.png differ diff --git a/assets/images/social/intro/06-functions/index.png b/assets/images/social/intro/06-functions/index.png new file mode 100644 index 00000000..bdd0d1fc Binary files /dev/null and b/assets/images/social/intro/06-functions/index.png differ diff --git a/assets/images/social/intro/07-streams/index.png b/assets/images/social/intro/07-streams/index.png new file mode 100644 index 00000000..cfd656a6 Binary files /dev/null and b/assets/images/social/intro/07-streams/index.png differ diff --git a/assets/images/social/intro/08-arrays/index.png b/assets/images/social/intro/08-arrays/index.png new file mode 100644 index 00000000..9d8f6313 Binary files /dev/null and b/assets/images/social/intro/08-arrays/index.png differ diff --git a/assets/images/social/intro/09-recursion/index.png b/assets/images/social/intro/09-recursion/index.png new file mode 100644 index 00000000..56c539ec Binary files /dev/null and b/assets/images/social/intro/09-recursion/index.png differ diff --git a/assets/images/social/intro/10-sorting/index.png b/assets/images/social/intro/10-sorting/index.png new file mode 100644 index 00000000..5f9c6a16 Binary files /dev/null and b/assets/images/social/intro/10-sorting/index.png differ diff --git a/assets/images/social/intro/11-structs/index.png b/assets/images/social/intro/11-structs/index.png new file mode 100644 index 00000000..7bb08769 Binary files /dev/null and b/assets/images/social/intro/11-structs/index.png differ diff --git a/assets/images/social/intro/index.png b/assets/images/social/intro/index.png new file mode 100644 index 00000000..744ad4b1 Binary files /dev/null and b/assets/images/social/intro/index.png differ diff --git a/assets/images/social/introgameprog/02-GameDevTools/index.png b/assets/images/social/introgameprog/02-GameDevTools/index.png new file mode 100644 index 00000000..41d189ca Binary files /dev/null and b/assets/images/social/introgameprog/02-GameDevTools/index.png differ diff --git a/assets/images/social/introgameprog/index.png b/assets/images/social/introgameprog/index.png new file mode 100644 index 00000000..3c663baa Binary files /dev/null and b/assets/images/social/introgameprog/index.png differ diff --git a/assets/images/social/portfolio/01-introduction/index.png b/assets/images/social/portfolio/01-introduction/index.png new file mode 100644 index 00000000..5791d6f2 Binary files /dev/null and b/assets/images/social/portfolio/01-introduction/index.png differ diff --git a/assets/images/social/portfolio/02-cases/example.com.png b/assets/images/social/portfolio/02-cases/example.com.png new file mode 100644 index 00000000..9c95df95 Binary files /dev/null and b/assets/images/social/portfolio/02-cases/example.com.png differ diff --git a/assets/images/social/portfolio/02-cases/index.png b/assets/images/social/portfolio/02-cases/index.png new file mode 100644 index 00000000..a0807c67 Binary files /dev/null and b/assets/images/social/portfolio/02-cases/index.png differ diff --git a/assets/images/social/portfolio/03-structure/index.png b/assets/images/social/portfolio/03-structure/index.png new file mode 100644 index 00000000..cfee8949 Binary files /dev/null and b/assets/images/social/portfolio/03-structure/index.png differ diff --git a/assets/images/social/portfolio/04-communication/index.png b/assets/images/social/portfolio/04-communication/index.png new file mode 100644 index 00000000..d6cdb462 Binary files /dev/null and b/assets/images/social/portfolio/04-communication/index.png differ diff --git a/assets/images/social/portfolio/05-strategy/index.png b/assets/images/social/portfolio/05-strategy/index.png new file mode 100644 index 00000000..0ed584ec Binary files /dev/null and b/assets/images/social/portfolio/05-strategy/index.png differ diff --git a/assets/images/social/portfolio/06-reels/index.png b/assets/images/social/portfolio/06-reels/index.png new file mode 100644 index 00000000..7ae420be Binary files /dev/null and b/assets/images/social/portfolio/06-reels/index.png differ diff --git a/assets/images/social/portfolio/07-hosting/index.png b/assets/images/social/portfolio/07-hosting/index.png new file mode 100644 index 00000000..dda0bf75 Binary files /dev/null and b/assets/images/social/portfolio/07-hosting/index.png differ diff --git a/assets/images/social/portfolio/08-cms/index.png b/assets/images/social/portfolio/08-cms/index.png new file mode 100644 index 00000000..6cefd98b Binary files /dev/null and b/assets/images/social/portfolio/08-cms/index.png differ diff --git a/assets/images/social/portfolio/09-get-ready/common-intenterview-questions.png b/assets/images/social/portfolio/09-get-ready/common-intenterview-questions.png new file mode 100644 index 00000000..f3ed327b Binary files /dev/null and b/assets/images/social/portfolio/09-get-ready/common-intenterview-questions.png differ diff --git a/assets/images/social/portfolio/09-get-ready/index.png b/assets/images/social/portfolio/09-get-ready/index.png new file mode 100644 index 00000000..2017535a Binary files /dev/null and b/assets/images/social/portfolio/09-get-ready/index.png differ diff --git a/assets/images/social/portfolio/10-frontend/index.png b/assets/images/social/portfolio/10-frontend/index.png new file mode 100644 index 00000000..e4a75c50 Binary files /dev/null and b/assets/images/social/portfolio/10-frontend/index.png differ diff --git a/assets/images/social/portfolio/11-dynamic/index.png b/assets/images/social/portfolio/11-dynamic/index.png new file mode 100644 index 00000000..0baa00fb Binary files /dev/null and b/assets/images/social/portfolio/11-dynamic/index.png differ diff --git a/assets/images/social/portfolio/12-promoting/index.png b/assets/images/social/portfolio/12-promoting/index.png new file mode 100644 index 00000000..4a6c76cc Binary files /dev/null and b/assets/images/social/portfolio/12-promoting/index.png differ diff --git a/assets/images/social/portfolio/13-cover-letter/index.png b/assets/images/social/portfolio/13-cover-letter/index.png new file mode 100644 index 00000000..034fdbaf Binary files /dev/null and b/assets/images/social/portfolio/13-cover-letter/index.png differ diff --git a/assets/images/social/portfolio/14-cv/index.png b/assets/images/social/portfolio/14-cv/index.png new file mode 100644 index 00000000..3ead79c0 Binary files /dev/null and b/assets/images/social/portfolio/14-cv/index.png differ diff --git a/assets/images/social/portfolio/index.png b/assets/images/social/portfolio/index.png new file mode 100644 index 00000000..0dda669a Binary files /dev/null and b/assets/images/social/portfolio/index.png differ diff --git a/assets/images/social/support/50rs-button.png b/assets/images/social/support/50rs-button.png new file mode 100644 index 00000000..aba92b9d Binary files /dev/null and b/assets/images/social/support/50rs-button.png differ diff --git a/assets/images/social/tools/git.png b/assets/images/social/tools/git.png new file mode 100644 index 00000000..e19ac1b8 Binary files /dev/null and b/assets/images/social/tools/git.png differ diff --git a/assets/javascripts/bundle.a59f24f2.min.js b/assets/javascripts/bundle.a59f24f2.min.js new file mode 100644 index 00000000..76ca7f9a --- /dev/null +++ b/assets/javascripts/bundle.a59f24f2.min.js @@ -0,0 +1,3 @@ +"use strict";(()=>{var Ji=Object.create;var _r=Object.defineProperty;var Xi=Object.getOwnPropertyDescriptor;var Zi=Object.getOwnPropertyNames,Gt=Object.getOwnPropertySymbols,ea=Object.getPrototypeOf,Ar=Object.prototype.hasOwnProperty,ho=Object.prototype.propertyIsEnumerable;var uo=(e,t,r)=>t in e?_r(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Ar.call(t,r)&&uo(e,r,t[r]);if(Gt)for(var r of Gt(t))ho.call(t,r)&&uo(e,r,t[r]);return e};var bo=(e,t)=>{var r={};for(var o in e)Ar.call(e,o)&&t.indexOf(o)<0&&(r[o]=e[o]);if(e!=null&&Gt)for(var o of Gt(e))t.indexOf(o)<0&&ho.call(e,o)&&(r[o]=e[o]);return r};var Cr=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ta=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Zi(t))!Ar.call(e,n)&&n!==r&&_r(e,n,{get:()=>t[n],enumerable:!(o=Xi(t,n))||o.enumerable});return e};var Pt=(e,t,r)=>(r=e!=null?Ji(ea(e)):{},ta(t||!e||!e.__esModule?_r(r,"default",{value:e,enumerable:!0}):r,e));var vo=(e,t,r)=>new Promise((o,n)=>{var i=c=>{try{a(r.next(c))}catch(p){n(p)}},s=c=>{try{a(r.throw(c))}catch(p){n(p)}},a=c=>c.done?o(c.value):Promise.resolve(c.value).then(i,s);a((r=r.apply(e,t)).next())});var yo=Cr((kr,go)=>{(function(e,t){typeof kr=="object"&&typeof go!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(kr,function(){"use strict";function e(r){var o=!0,n=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(k){return!!(k&&k!==document&&k.nodeName!=="HTML"&&k.nodeName!=="BODY"&&"classList"in k&&"contains"in k.classList)}function c(k){var ut=k.type,je=k.tagName;return!!(je==="INPUT"&&s[ut]&&!k.readOnly||je==="TEXTAREA"&&!k.readOnly||k.isContentEditable)}function p(k){k.classList.contains("focus-visible")||(k.classList.add("focus-visible"),k.setAttribute("data-focus-visible-added",""))}function l(k){k.hasAttribute("data-focus-visible-added")&&(k.classList.remove("focus-visible"),k.removeAttribute("data-focus-visible-added"))}function f(k){k.metaKey||k.altKey||k.ctrlKey||(a(r.activeElement)&&p(r.activeElement),o=!0)}function u(k){o=!1}function d(k){a(k.target)&&(o||c(k.target))&&p(k.target)}function v(k){a(k.target)&&(k.target.classList.contains("focus-visible")||k.target.hasAttribute("data-focus-visible-added"))&&(n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),l(k.target))}function S(k){document.visibilityState==="hidden"&&(n&&(o=!0),X())}function X(){document.addEventListener("mousemove",ee),document.addEventListener("mousedown",ee),document.addEventListener("mouseup",ee),document.addEventListener("pointermove",ee),document.addEventListener("pointerdown",ee),document.addEventListener("pointerup",ee),document.addEventListener("touchmove",ee),document.addEventListener("touchstart",ee),document.addEventListener("touchend",ee)}function re(){document.removeEventListener("mousemove",ee),document.removeEventListener("mousedown",ee),document.removeEventListener("mouseup",ee),document.removeEventListener("pointermove",ee),document.removeEventListener("pointerdown",ee),document.removeEventListener("pointerup",ee),document.removeEventListener("touchmove",ee),document.removeEventListener("touchstart",ee),document.removeEventListener("touchend",ee)}function ee(k){k.target.nodeName&&k.target.nodeName.toLowerCase()==="html"||(o=!1,re())}document.addEventListener("keydown",f,!0),document.addEventListener("mousedown",u,!0),document.addEventListener("pointerdown",u,!0),document.addEventListener("touchstart",u,!0),document.addEventListener("visibilitychange",S,!0),X(),r.addEventListener("focus",d,!0),r.addEventListener("blur",v,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var ro=Cr((Py,Pn)=>{"use strict";var Va=/["'&<>]/;Pn.exports=za;function za(e){var t=""+e,r=Va.exec(t);if(!r)return t;var o,n="",i=0,s=0;for(i=r.index;i{(function(t,r){typeof zt=="object"&&typeof io=="object"?io.exports=r():typeof define=="function"&&define.amd?define([],r):typeof zt=="object"?zt.ClipboardJS=r():t.ClipboardJS=r()})(zt,function(){return function(){var e={686:function(o,n,i){"use strict";i.d(n,{default:function(){return Gi}});var s=i(279),a=i.n(s),c=i(370),p=i.n(c),l=i(817),f=i.n(l);function u(q){try{return document.execCommand(q)}catch(C){return!1}}var d=function(C){var _=f()(C);return u("cut"),_},v=d;function S(q){var C=document.documentElement.getAttribute("dir")==="rtl",_=document.createElement("textarea");_.style.fontSize="12pt",_.style.border="0",_.style.padding="0",_.style.margin="0",_.style.position="absolute",_.style[C?"right":"left"]="-9999px";var W=window.pageYOffset||document.documentElement.scrollTop;return _.style.top="".concat(W,"px"),_.setAttribute("readonly",""),_.value=q,_}var X=function(C,_){var W=S(C);_.container.appendChild(W);var V=f()(W);return u("copy"),W.remove(),V},re=function(C){var _=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},W="";return typeof C=="string"?W=X(C,_):C instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(C==null?void 0:C.type)?W=X(C.value,_):(W=f()(C),u("copy")),W},ee=re;function k(q){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?k=function(_){return typeof _}:k=function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},k(q)}var ut=function(){var C=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_=C.action,W=_===void 0?"copy":_,V=C.container,G=C.target,Ue=C.text;if(W!=="copy"&&W!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(G!==void 0)if(G&&k(G)==="object"&&G.nodeType===1){if(W==="copy"&&G.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(W==="cut"&&(G.hasAttribute("readonly")||G.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Ue)return ee(Ue,{container:V});if(G)return W==="cut"?v(G):ee(G,{container:V})},je=ut;function R(q){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?R=function(_){return typeof _}:R=function(_){return _&&typeof Symbol=="function"&&_.constructor===Symbol&&_!==Symbol.prototype?"symbol":typeof _},R(q)}function se(q,C){if(!(q instanceof C))throw new TypeError("Cannot call a class as a function")}function ce(q,C){for(var _=0;_0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof V.action=="function"?V.action:this.defaultAction,this.target=typeof V.target=="function"?V.target:this.defaultTarget,this.text=typeof V.text=="function"?V.text:this.defaultText,this.container=R(V.container)==="object"?V.container:document.body}},{key:"listenClick",value:function(V){var G=this;this.listener=p()(V,"click",function(Ue){return G.onClick(Ue)})}},{key:"onClick",value:function(V){var G=V.delegateTarget||V.currentTarget,Ue=this.action(G)||"copy",Bt=je({action:Ue,container:this.container,target:this.target(G),text:this.text(G)});this.emit(Bt?"success":"error",{action:Ue,text:Bt,trigger:G,clearSelection:function(){G&&G.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(V){return Mr("action",V)}},{key:"defaultTarget",value:function(V){var G=Mr("target",V);if(G)return document.querySelector(G)}},{key:"defaultText",value:function(V){return Mr("text",V)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(V){var G=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return ee(V,G)}},{key:"cut",value:function(V){return v(V)}},{key:"isSupported",value:function(){var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],G=typeof V=="string"?[V]:V,Ue=!!document.queryCommandSupported;return G.forEach(function(Bt){Ue=Ue&&!!document.queryCommandSupported(Bt)}),Ue}}]),_}(a()),Gi=Bi},828:function(o){var n=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,c){for(;a&&a.nodeType!==n;){if(typeof a.matches=="function"&&a.matches(c))return a;a=a.parentNode}}o.exports=s},438:function(o,n,i){var s=i(828);function a(l,f,u,d,v){var S=p.apply(this,arguments);return l.addEventListener(u,S,v),{destroy:function(){l.removeEventListener(u,S,v)}}}function c(l,f,u,d,v){return typeof l.addEventListener=="function"?a.apply(null,arguments):typeof u=="function"?a.bind(null,document).apply(null,arguments):(typeof l=="string"&&(l=document.querySelectorAll(l)),Array.prototype.map.call(l,function(S){return a(S,f,u,d,v)}))}function p(l,f,u,d){return function(v){v.delegateTarget=s(v.target,f),v.delegateTarget&&d.call(l,v)}}o.exports=c},879:function(o,n){n.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},n.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||n.node(i[0]))},n.string=function(i){return typeof i=="string"||i instanceof String},n.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(o,n,i){var s=i(879),a=i(438);function c(u,d,v){if(!u&&!d&&!v)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(v))throw new TypeError("Third argument must be a Function");if(s.node(u))return p(u,d,v);if(s.nodeList(u))return l(u,d,v);if(s.string(u))return f(u,d,v);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function p(u,d,v){return u.addEventListener(d,v),{destroy:function(){u.removeEventListener(d,v)}}}function l(u,d,v){return Array.prototype.forEach.call(u,function(S){S.addEventListener(d,v)}),{destroy:function(){Array.prototype.forEach.call(u,function(S){S.removeEventListener(d,v)})}}}function f(u,d,v){return a(document.body,u,d,v)}o.exports=c},817:function(o){function n(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var c=window.getSelection(),p=document.createRange();p.selectNodeContents(i),c.removeAllRanges(),c.addRange(p),s=c.toString()}return s}o.exports=n},279:function(o){function n(){}n.prototype={on:function(i,s,a){var c=this.e||(this.e={});return(c[i]||(c[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var c=this;function p(){c.off(i,p),s.apply(a,arguments)}return p._=s,this.on(i,p,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),c=0,p=a.length;for(c;c0&&i[i.length-1])&&(p[0]===6||p[0]===2)){r=0;continue}if(p[0]===3&&(!i||p[1]>i[0]&&p[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function K(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var o=r.call(e),n,i=[],s;try{for(;(t===void 0||t-- >0)&&!(n=o.next()).done;)i.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(s)throw s.error}}return i}function B(e,t,r){if(r||arguments.length===2)for(var o=0,n=t.length,i;o1||c(d,S)})},v&&(n[d]=v(n[d])))}function c(d,v){try{p(o[d](v))}catch(S){u(i[0][3],S)}}function p(d){d.value instanceof dt?Promise.resolve(d.value.v).then(l,f):u(i[0][2],d)}function l(d){c("next",d)}function f(d){c("throw",d)}function u(d,v){d(v),i.shift(),i.length&&c(i[0][0],i[0][1])}}function wo(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Oe=="function"?Oe(e):e[Symbol.iterator](),r={},o("next"),o("throw"),o("return"),r[Symbol.asyncIterator]=function(){return this},r);function o(i){r[i]=e[i]&&function(s){return new Promise(function(a,c){s=e[i](s),n(a,c,s.done,s.value)})}}function n(i,s,a,c){Promise.resolve(c).then(function(p){i({value:p,done:a})},s)}}function I(e){return typeof e=="function"}function yt(e){var t=function(o){Error.call(o),o.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var Xt=yt(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(o,n){return n+1+") "+o.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ze(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var qe=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,o,n,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Oe(s),c=a.next();!c.done;c=a.next()){var p=c.value;p.remove(this)}}catch(S){t={error:S}}finally{try{c&&!c.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var l=this.initialTeardown;if(I(l))try{l()}catch(S){i=S instanceof Xt?S.errors:[S]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var u=Oe(f),d=u.next();!d.done;d=u.next()){var v=d.value;try{To(v)}catch(S){i=i!=null?i:[],S instanceof Xt?i=B(B([],K(i)),K(S.errors)):i.push(S)}}}catch(S){o={error:S}}finally{try{d&&!d.done&&(n=u.return)&&n.call(u)}finally{if(o)throw o.error}}}if(i)throw new Xt(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)To(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ze(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ze(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var $r=qe.EMPTY;function Zt(e){return e instanceof qe||e&&"closed"in e&&I(e.remove)&&I(e.add)&&I(e.unsubscribe)}function To(e){I(e)?e():e.unsubscribe()}var We={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var xt={setTimeout:function(e,t){for(var r=[],o=2;o0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var o=this,n=this,i=n.hasError,s=n.isStopped,a=n.observers;return i||s?$r:(this.currentObservers=null,a.push(r),new qe(function(){o.currentObservers=null,Ze(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var o=this,n=o.hasError,i=o.thrownError,s=o.isStopped;n?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,o){return new ko(r,o)},t}(F);var ko=function(e){ie(t,e);function t(r,o){var n=e.call(this)||this;return n.destination=r,n.source=o,n}return t.prototype.next=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.next)===null||n===void 0||n.call(o,r)},t.prototype.error=function(r){var o,n;(n=(o=this.destination)===null||o===void 0?void 0:o.error)===null||n===void 0||n.call(o,r)},t.prototype.complete=function(){var r,o;(o=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||o===void 0||o.call(r)},t.prototype._subscribe=function(r){var o,n;return(n=(o=this.source)===null||o===void 0?void 0:o.subscribe(r))!==null&&n!==void 0?n:$r},t}(T);var jr=function(e){ie(t,e);function t(r){var o=e.call(this)||this;return o._value=r,o}return Object.defineProperty(t.prototype,"value",{get:function(){return this.getValue()},enumerable:!1,configurable:!0}),t.prototype._subscribe=function(r){var o=e.prototype._subscribe.call(this,r);return!o.closed&&r.next(this._value),o},t.prototype.getValue=function(){var r=this,o=r.hasError,n=r.thrownError,i=r._value;if(o)throw n;return this._throwIfClosed(),i},t.prototype.next=function(r){e.prototype.next.call(this,this._value=r)},t}(T);var It={now:function(){return(It.delegate||Date).now()},delegate:void 0};var Ft=function(e){ie(t,e);function t(r,o,n){r===void 0&&(r=1/0),o===void 0&&(o=1/0),n===void 0&&(n=It);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=o,i._timestampProvider=n,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=o===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,o),i}return t.prototype.next=function(r){var o=this,n=o.isStopped,i=o._buffer,s=o._infiniteTimeWindow,a=o._timestampProvider,c=o._windowTime;n||(i.push(r),!s&&i.push(a.now()+c)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var o=this._innerSubscribe(r),n=this,i=n._infiniteTimeWindow,s=n._buffer,a=s.slice(),c=0;c0?e.prototype.schedule.call(this,r,o):(this.delay=o,this.state=r,this.scheduler.flush(this),this)},t.prototype.execute=function(r,o){return o>0||this.closed?e.prototype.execute.call(this,r,o):this._execute(r,o)},t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!=null&&n>0||n==null&&this.delay>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.flush(this),0)},t}(St);var Po=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t}(Ot);var Wr=new Po($o);var Ro=function(e){ie(t,e);function t(r,o){var n=e.call(this,r,o)||this;return n.scheduler=r,n.work=o,n}return t.prototype.requestAsyncId=function(r,o,n){return n===void 0&&(n=0),n!==null&&n>0?e.prototype.requestAsyncId.call(this,r,o,n):(r.actions.push(this),r._scheduled||(r._scheduled=Tt.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,o,n){var i;if(n===void 0&&(n=0),n!=null?n>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,o,n);var s=r.actions;o!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==o&&(Tt.cancelAnimationFrame(o),r._scheduled=void 0)},t}(St);var Io=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var o=this._scheduled;this._scheduled=void 0;var n=this.actions,i;r=r||n.shift();do if(i=r.execute(r.state,r.delay))break;while((r=n[0])&&r.id===o&&n.shift());if(this._active=!1,i){for(;(r=n[0])&&r.id===o&&n.shift();)r.unsubscribe();throw i}},t}(Ot);var ye=new Io(Ro);var y=new F(function(e){return e.complete()});function rr(e){return e&&I(e.schedule)}function Nr(e){return e[e.length-1]}function pt(e){return I(Nr(e))?e.pop():void 0}function Fe(e){return rr(Nr(e))?e.pop():void 0}function or(e,t){return typeof Nr(e)=="number"?e.pop():t}var Lt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function nr(e){return I(e==null?void 0:e.then)}function ir(e){return I(e[wt])}function ar(e){return Symbol.asyncIterator&&I(e==null?void 0:e[Symbol.asyncIterator])}function sr(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function la(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var cr=la();function pr(e){return I(e==null?void 0:e[cr])}function lr(e){return Eo(this,arguments,function(){var r,o,n,i;return Jt(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,dt(r.read())];case 3:return o=s.sent(),n=o.value,i=o.done,i?[4,dt(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,dt(n)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function mr(e){return I(e==null?void 0:e.getReader)}function D(e){if(e instanceof F)return e;if(e!=null){if(ir(e))return ma(e);if(Lt(e))return fa(e);if(nr(e))return ua(e);if(ar(e))return Fo(e);if(pr(e))return da(e);if(mr(e))return ha(e)}throw sr(e)}function ma(e){return new F(function(t){var r=e[wt]();if(I(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function fa(e){return new F(function(t){for(var r=0;r=2;return function(o){return o.pipe(e?g(function(n,i){return e(n,i,o)}):be,Ee(1),r?Qe(t):en(function(){return new ur}))}}function Yr(e){return e<=0?function(){return y}:E(function(t,r){var o=[];t.subscribe(w(r,function(n){o.push(n),e=2,!0))}function le(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new T}:t,o=e.resetOnError,n=o===void 0?!0:o,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,c=a===void 0?!0:a;return function(p){var l,f,u,d=0,v=!1,S=!1,X=function(){f==null||f.unsubscribe(),f=void 0},re=function(){X(),l=u=void 0,v=S=!1},ee=function(){var k=l;re(),k==null||k.unsubscribe()};return E(function(k,ut){d++,!S&&!v&&X();var je=u=u!=null?u:r();ut.add(function(){d--,d===0&&!S&&!v&&(f=Br(ee,c))}),je.subscribe(ut),!l&&d>0&&(l=new bt({next:function(R){return je.next(R)},error:function(R){S=!0,X(),f=Br(re,n,R),je.error(R)},complete:function(){v=!0,X(),f=Br(re,s),je.complete()}}),D(k).subscribe(l))})(p)}}function Br(e,t){for(var r=[],o=2;oe.next(document)),e}function M(e,t=document){return Array.from(t.querySelectorAll(e))}function j(e,t=document){let r=ue(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ue(e,t=document){return t.querySelector(e)||void 0}function Ve(){var e,t,r,o;return(o=(r=(t=(e=document.activeElement)==null?void 0:e.shadowRoot)==null?void 0:t.activeElement)!=null?r:document.activeElement)!=null?o:void 0}var $a=L(h(document.body,"focusin"),h(document.body,"focusout")).pipe(Ae(1),Q(void 0),m(()=>Ve()||document.body),Z(1));function Ye(e){return $a.pipe(m(t=>e.contains(t)),Y())}function it(e,t){return H(()=>L(h(e,"mouseenter").pipe(m(()=>!0)),h(e,"mouseleave").pipe(m(()=>!1))).pipe(t?Dt(r=>He(+!r*t)):be,Q(e.matches(":hover"))))}function an(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)an(e,r)}function x(e,t,...r){let o=document.createElement(e);if(t)for(let n of Object.keys(t))typeof t[n]!="undefined"&&(typeof t[n]!="boolean"?o.setAttribute(n,t[n]):o.setAttribute(n,""));for(let n of r)an(o,n);return o}function br(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function At(e){let t=x("script",{src:e});return H(()=>(document.head.appendChild(t),L(h(t,"load"),h(t,"error").pipe(b(()=>Vr(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(m(()=>{}),A(()=>document.head.removeChild(t)),Ee(1))))}var sn=new T,Pa=H(()=>typeof ResizeObserver=="undefined"?At("https://unpkg.com/resize-observer-polyfill"):$(void 0)).pipe(m(()=>new ResizeObserver(e=>e.forEach(t=>sn.next(t)))),b(e=>L(tt,$(e)).pipe(A(()=>e.disconnect()))),Z(1));function de(e){return{width:e.offsetWidth,height:e.offsetHeight}}function Le(e){let t=e;for(;t.clientWidth===0&&t.parentElement;)t=t.parentElement;return Pa.pipe(O(r=>r.observe(t)),b(r=>sn.pipe(g(o=>o.target===t),A(()=>r.unobserve(t)))),m(()=>de(e)),Q(de(e)))}function Ct(e){return{width:e.scrollWidth,height:e.scrollHeight}}function vr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}function cn(e){let t=[],r=e.parentElement;for(;r;)(e.clientWidth>r.clientWidth||e.clientHeight>r.clientHeight)&&t.push(r),r=(e=r).parentElement;return t.length===0&&t.push(document.documentElement),t}function Be(e){return{x:e.offsetLeft,y:e.offsetTop}}function pn(e){let t=e.getBoundingClientRect();return{x:t.x+window.scrollX,y:t.y+window.scrollY}}function ln(e){return L(h(window,"load"),h(window,"resize")).pipe($e(0,ye),m(()=>Be(e)),Q(Be(e)))}function gr(e){return{x:e.scrollLeft,y:e.scrollTop}}function Ge(e){return L(h(e,"scroll"),h(window,"scroll"),h(window,"resize")).pipe($e(0,ye),m(()=>gr(e)),Q(gr(e)))}var mn=new T,Ra=H(()=>$(new IntersectionObserver(e=>{for(let t of e)mn.next(t)},{threshold:0}))).pipe(b(e=>L(tt,$(e)).pipe(A(()=>e.disconnect()))),Z(1));function mt(e){return Ra.pipe(O(t=>t.observe(e)),b(t=>mn.pipe(g(({target:r})=>r===e),A(()=>t.unobserve(e)),m(({isIntersecting:r})=>r))))}function fn(e,t=16){return Ge(e).pipe(m(({y:r})=>{let o=de(e),n=Ct(e);return r>=n.height-o.height-t}),Y())}var yr={drawer:j("[data-md-toggle=drawer]"),search:j("[data-md-toggle=search]")};function un(e){return yr[e].checked}function at(e,t){yr[e].checked!==t&&yr[e].click()}function Je(e){let t=yr[e];return h(t,"change").pipe(m(()=>t.checked),Q(t.checked))}function Ia(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Fa(){return L(h(window,"compositionstart").pipe(m(()=>!0)),h(window,"compositionend").pipe(m(()=>!1))).pipe(Q(!1))}function dn(){let e=h(window,"keydown").pipe(g(t=>!(t.metaKey||t.ctrlKey)),m(t=>({mode:un("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),g(({mode:t,type:r})=>{if(t==="global"){let o=Ve();if(typeof o!="undefined")return!Ia(o,r)}return!0}),le());return Fa().pipe(b(t=>t?y:e))}function we(){return new URL(location.href)}function st(e,t=!1){if(N("navigation.instant")&&!t){let r=x("a",{href:e.href});document.body.appendChild(r),r.click(),r.remove()}else location.href=e.href}function hn(){return new T}function bn(){return location.hash.slice(1)}function vn(e){let t=x("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Zr(e){return L(h(window,"hashchange"),e).pipe(m(bn),Q(bn()),g(t=>t.length>0),Z(1))}function gn(e){return Zr(e).pipe(m(t=>ue(`[id="${t}"]`)),g(t=>typeof t!="undefined"))}function Wt(e){let t=matchMedia(e);return dr(r=>t.addListener(()=>r(t.matches))).pipe(Q(t.matches))}function yn(){let e=matchMedia("print");return L(h(window,"beforeprint").pipe(m(()=>!0)),h(window,"afterprint").pipe(m(()=>!1))).pipe(Q(e.matches))}function eo(e,t){return e.pipe(b(r=>r?t():y))}function to(e,t){return new F(r=>{let o=new XMLHttpRequest;return o.open("GET",`${e}`),o.responseType="blob",o.addEventListener("load",()=>{o.status>=200&&o.status<300?(r.next(o.response),r.complete()):r.error(new Error(o.statusText))}),o.addEventListener("error",()=>{r.error(new Error("Network error"))}),o.addEventListener("abort",()=>{r.complete()}),typeof(t==null?void 0:t.progress$)!="undefined"&&(o.addEventListener("progress",n=>{var i;if(n.lengthComputable)t.progress$.next(n.loaded/n.total*100);else{let s=(i=o.getResponseHeader("Content-Length"))!=null?i:0;t.progress$.next(n.loaded/+s*100)}}),t.progress$.next(5)),o.send(),()=>o.abort()})}function ze(e,t){return to(e,t).pipe(b(r=>r.text()),m(r=>JSON.parse(r)),Z(1))}function xr(e,t){let r=new DOMParser;return to(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/html")),Z(1))}function xn(e,t){let r=new DOMParser;return to(e,t).pipe(b(o=>o.text()),m(o=>r.parseFromString(o,"text/xml")),Z(1))}function En(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function wn(){return L(h(window,"scroll",{passive:!0}),h(window,"resize",{passive:!0})).pipe(m(En),Q(En()))}function Tn(){return{width:innerWidth,height:innerHeight}}function Sn(){return h(window,"resize",{passive:!0}).pipe(m(Tn),Q(Tn()))}function On(){return z([wn(),Sn()]).pipe(m(([e,t])=>({offset:e,size:t})),Z(1))}function Er(e,{viewport$:t,header$:r}){let o=t.pipe(ne("size")),n=z([o,r]).pipe(m(()=>Be(e)));return z([r,t,n]).pipe(m(([{height:i},{offset:s,size:a},{x:c,y:p}])=>({offset:{x:s.x-c,y:s.y-p+i},size:a})))}function ja(e){return h(e,"message",t=>t.data)}function Da(e){let t=new T;return t.subscribe(r=>e.postMessage(r)),t}function Ln(e,t=new Worker(e)){let r=ja(t),o=Da(t),n=new T;n.subscribe(o);let i=o.pipe(oe(),ae(!0));return n.pipe(oe(),Ne(r.pipe(U(i))),le())}var Ua=j("#__config"),kt=JSON.parse(Ua.textContent);kt.base=`${new URL(kt.base,we())}`;function Te(){return kt}function N(e){return kt.features.includes(e)}function Me(e,t){return typeof t!="undefined"?kt.translations[e].replace("#",t.toString()):kt.translations[e]}function Ce(e,t=document){return j(`[data-md-component=${e}]`,t)}function me(e,t=document){return M(`[data-md-component=${e}]`,t)}function Wa(e){let t=j(".md-typeset > :first-child",e);return h(t,"click",{once:!0}).pipe(m(()=>j(".md-typeset",e)),m(r=>({hash:__md_hash(r.innerHTML)})))}function Mn(e){if(!N("announce.dismiss")||!e.childElementCount)return y;if(!e.hidden){let t=j(".md-typeset",e);__md_hash(t.innerHTML)===__md_get("__announce")&&(e.hidden=!0)}return H(()=>{let t=new T;return t.subscribe(({hash:r})=>{e.hidden=!0,__md_set("__announce",r)}),Wa(e).pipe(O(r=>t.next(r)),A(()=>t.complete()),m(r=>P({ref:e},r)))})}function Na(e,{target$:t}){return t.pipe(m(r=>({hidden:r!==e})))}function _n(e,t){let r=new T;return r.subscribe(({hidden:o})=>{e.hidden=o}),Na(e,t).pipe(O(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))}function Nt(e,t){return t==="inline"?x("div",{class:"md-tooltip md-tooltip--inline",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"})):x("div",{class:"md-tooltip",id:e,role:"tooltip"},x("div",{class:"md-tooltip__inner md-typeset"}))}function wr(...e){return x("div",{class:"md-tooltip2",role:"dialog"},x("div",{class:"md-tooltip2__inner md-typeset"},e))}function An(...e){return x("div",{class:"md-tooltip2",role:"tooltip"},x("div",{class:"md-tooltip2__inner md-typeset"},e))}function Cn(e,t){if(t=t?`${t}_annotation_${e}`:void 0,t){let r=t?`#${t}`:void 0;return x("aside",{class:"md-annotation",tabIndex:0},Nt(t),x("a",{href:r,class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}else return x("aside",{class:"md-annotation",tabIndex:0},Nt(t),x("span",{class:"md-annotation__index",tabIndex:-1},x("span",{"data-md-annotation-id":e})))}function kn(e){return x("button",{class:"md-code__button",title:Me("clipboard.copy"),"data-clipboard-target":`#${e} > code`,"data-md-type":"copy"})}function Hn(){return x("button",{class:"md-code__button",title:"Toggle line selection","data-md-type":"select"})}function $n(){return x("nav",{class:"md-code__nav"})}var Rn=Pt(ro());function oo(e,t){let r=t&2,o=t&1,n=Object.keys(e.terms).filter(c=>!e.terms[c]).reduce((c,p)=>[...c,x("del",null,(0,Rn.default)(p))," "],[]).slice(0,-1),i=Te(),s=new URL(e.location,i.base);N("search.highlight")&&s.searchParams.set("h",Object.entries(e.terms).filter(([,c])=>c).reduce((c,[p])=>`${c} ${p}`.trim(),""));let{tags:a}=Te();return x("a",{href:`${s}`,class:"md-search-result__link",tabIndex:-1},x("article",{class:"md-search-result__article md-typeset","data-md-score":e.score.toFixed(2)},r>0&&x("div",{class:"md-search-result__icon md-icon"}),r>0&&x("h1",null,e.title),r<=0&&x("h2",null,e.title),o>0&&e.text.length>0&&e.text,e.tags&&e.tags.map(c=>{let p=a?c in a?`md-tag-icon md-tag--${a[c]}`:"md-tag-icon":"";return x("span",{class:`md-tag ${p}`},c)}),o>0&&n.length>0&&x("p",{class:"md-search-result__terms"},Me("search.result.term.missing"),": ",...n)))}function In(e){let t=e[0].score,r=[...e],o=Te(),n=r.findIndex(l=>!`${new URL(l.location,o.base)}`.includes("#")),[i]=r.splice(n,1),s=r.findIndex(l=>l.scoreoo(l,1)),...c.length?[x("details",{class:"md-search-result__more"},x("summary",{tabIndex:-1},x("div",null,c.length>0&&c.length===1?Me("search.result.more.one"):Me("search.result.more.other",c.length))),...c.map(l=>oo(l,1)))]:[]];return x("li",{class:"md-search-result__item"},p)}function Fn(e){return x("ul",{class:"md-source__facts"},Object.entries(e).map(([t,r])=>x("li",{class:`md-source__fact md-source__fact--${t}`},typeof r=="number"?br(r):r)))}function no(e){let t=`tabbed-control tabbed-control--${e}`;return x("div",{class:t,hidden:!0},x("button",{class:"tabbed-button",tabIndex:-1,"aria-hidden":"true"}))}function jn(e){return x("div",{class:"md-typeset__scrollwrap"},x("div",{class:"md-typeset__table"},e))}function qa(e){var o;let t=Te(),r=new URL(`../${e.version}/`,t.base);return x("li",{class:"md-version__item"},x("a",{href:`${r}`,class:"md-version__link"},e.title,((o=t.version)==null?void 0:o.alias)&&e.aliases.length>0&&x("span",{class:"md-version__alias"},e.aliases[0])))}function Dn(e,t){var o;let r=Te();return e=e.filter(n=>{var i;return!((i=n.properties)!=null&&i.hidden)}),x("div",{class:"md-version"},x("button",{class:"md-version__current","aria-label":Me("select.version")},t.title,((o=r.version)==null?void 0:o.alias)&&t.aliases.length>0&&x("span",{class:"md-version__alias"},t.aliases[0])),x("ul",{class:"md-version__list"},e.map(qa)))}var Ka=0;function Qa(e,t=250){let r=z([Ye(e),it(e,t)]).pipe(m(([n,i])=>n||i),Y()),o=H(()=>cn(e)).pipe(J(Ge),gt(1),Pe(r),m(()=>pn(e)));return r.pipe(Re(n=>n),b(()=>z([r,o])),m(([n,i])=>({active:n,offset:i})),le())}function Vt(e,t,r=250){let{content$:o,viewport$:n}=t,i=`__tooltip2_${Ka++}`;return H(()=>{let s=new T,a=new jr(!1);s.pipe(oe(),ae(!1)).subscribe(a);let c=a.pipe(Dt(l=>He(+!l*250,Wr)),Y(),b(l=>l?o:y),O(l=>l.id=i),le());z([s.pipe(m(({active:l})=>l)),c.pipe(b(l=>it(l,250)),Q(!1))]).pipe(m(l=>l.some(f=>f))).subscribe(a);let p=a.pipe(g(l=>l),te(c,n),m(([l,f,{size:u}])=>{let d=e.getBoundingClientRect(),v=d.width/2;if(f.role==="tooltip")return{x:v,y:8+d.height};if(d.y>=u.height/2){let{height:S}=de(f);return{x:v,y:-16-S}}else return{x:v,y:16+d.height}}));return z([c,s,p]).subscribe(([l,{offset:f},u])=>{l.style.setProperty("--md-tooltip-host-x",`${f.x}px`),l.style.setProperty("--md-tooltip-host-y",`${f.y}px`),l.style.setProperty("--md-tooltip-x",`${u.x}px`),l.style.setProperty("--md-tooltip-y",`${u.y}px`),l.classList.toggle("md-tooltip2--top",u.y<0),l.classList.toggle("md-tooltip2--bottom",u.y>=0)}),a.pipe(g(l=>l),te(c,(l,f)=>f),g(l=>l.role==="tooltip")).subscribe(l=>{let f=de(j(":scope > *",l));l.style.setProperty("--md-tooltip-width",`${f.width}px`),l.style.setProperty("--md-tooltip-tail","0px")}),a.pipe(Y(),xe(ye),te(c)).subscribe(([l,f])=>{f.classList.toggle("md-tooltip2--active",l)}),z([a.pipe(g(l=>l)),c]).subscribe(([l,f])=>{f.role==="dialog"?(e.setAttribute("aria-controls",i),e.setAttribute("aria-haspopup","dialog")):e.setAttribute("aria-describedby",i)}),a.pipe(g(l=>!l)).subscribe(()=>{e.removeAttribute("aria-controls"),e.removeAttribute("aria-describedby"),e.removeAttribute("aria-haspopup")}),Qa(e,r).pipe(O(l=>s.next(l)),A(()=>s.complete()),m(l=>P({ref:e},l)))})}function Xe(e,{viewport$:t},r=document.body){return Vt(e,{content$:new F(o=>{let n=e.title,i=An(n);return o.next(i),e.removeAttribute("title"),r.append(i),()=>{i.remove(),e.setAttribute("title",n)}}),viewport$:t},0)}function Ya(e,t){let r=H(()=>z([ln(e),Ge(t)])).pipe(m(([{x:o,y:n},i])=>{let{width:s,height:a}=de(e);return{x:o-i.x+s/2,y:n-i.y+a/2}}));return Ye(e).pipe(b(o=>r.pipe(m(n=>({active:o,offset:n})),Ee(+!o||1/0))))}function Un(e,t,{target$:r}){let[o,n]=Array.from(e.children);return H(()=>{let i=new T,s=i.pipe(oe(),ae(!0));return i.subscribe({next({offset:a}){e.style.setProperty("--md-tooltip-x",`${a.x}px`),e.style.setProperty("--md-tooltip-y",`${a.y}px`)},complete(){e.style.removeProperty("--md-tooltip-x"),e.style.removeProperty("--md-tooltip-y")}}),mt(e).pipe(U(s)).subscribe(a=>{e.toggleAttribute("data-md-visible",a)}),L(i.pipe(g(({active:a})=>a)),i.pipe(Ae(250),g(({active:a})=>!a))).subscribe({next({active:a}){a?e.prepend(o):o.remove()},complete(){e.prepend(o)}}),i.pipe($e(16,ye)).subscribe(({active:a})=>{o.classList.toggle("md-tooltip--active",a)}),i.pipe(gt(125,ye),g(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:a})=>a)).subscribe({next(a){a?e.style.setProperty("--md-tooltip-0",`${-a}px`):e.style.removeProperty("--md-tooltip-0")},complete(){e.style.removeProperty("--md-tooltip-0")}}),h(n,"click").pipe(U(s),g(a=>!(a.metaKey||a.ctrlKey))).subscribe(a=>{a.stopPropagation(),a.preventDefault()}),h(n,"mousedown").pipe(U(s),te(i)).subscribe(([a,{active:c}])=>{var p;if(a.button!==0||a.metaKey||a.ctrlKey)a.preventDefault();else if(c){a.preventDefault();let l=e.parentElement.closest(".md-annotation");l instanceof HTMLElement?l.focus():(p=Ve())==null||p.blur()}}),r.pipe(U(s),g(a=>a===o),nt(125)).subscribe(()=>e.focus()),Ya(e,t).pipe(O(a=>i.next(a)),A(()=>i.complete()),m(a=>P({ref:e},a)))})}function Ba(e){let t=Te();if(e.tagName!=="CODE")return[e];let r=[".c",".c1",".cm"];if(typeof t.annotate!="undefined"){let o=e.closest("[class|=language]");if(o)for(let n of Array.from(o.classList)){if(!n.startsWith("language-"))continue;let[,i]=n.split("-");i in t.annotate&&r.push(...t.annotate[i])}}return M(r.join(", "),e)}function Ga(e){let t=[];for(let r of Ba(e)){let o=[],n=document.createNodeIterator(r,NodeFilter.SHOW_TEXT);for(let i=n.nextNode();i;i=n.nextNode())o.push(i);for(let i of o){let s;for(;s=/(\(\d+\))(!)?/.exec(i.textContent);){let[,a,c]=s;if(typeof c=="undefined"){let p=i.splitText(s.index);i=p.splitText(a.length),t.push(p)}else{i.textContent=a,t.push(i);break}}}}return t}function Wn(e,t){t.append(...Array.from(e.childNodes))}function Tr(e,t,{target$:r,print$:o}){let n=t.closest("[id]"),i=n==null?void 0:n.id,s=new Map;for(let a of Ga(t)){let[,c]=a.textContent.match(/\((\d+)\)/);ue(`:scope > li:nth-child(${c})`,e)&&(s.set(c,Cn(c,i)),a.replaceWith(s.get(c)))}return s.size===0?y:H(()=>{let a=new T,c=a.pipe(oe(),ae(!0)),p=[];for(let[l,f]of s)p.push([j(".md-typeset",f),j(`:scope > li:nth-child(${l})`,e)]);return o.pipe(U(c)).subscribe(l=>{e.hidden=!l,e.classList.toggle("md-annotation-list",l);for(let[f,u]of p)l?Wn(f,u):Wn(u,f)}),L(...[...s].map(([,l])=>Un(l,t,{target$:r}))).pipe(A(()=>a.complete()),le())})}function Nn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Nn(t)}}function Vn(e,t){return H(()=>{let r=Nn(e);return typeof r!="undefined"?Tr(r,e,t):y})}var qn=Pt(ao());var Ja=0,zn=L(h(window,"keydown").pipe(m(()=>!0)),L(h(window,"keyup"),h(window,"contextmenu")).pipe(m(()=>!1))).pipe(Q(!1),Z(1));function Kn(e){if(e.nextElementSibling){let t=e.nextElementSibling;if(t.tagName==="OL")return t;if(t.tagName==="P"&&!t.children.length)return Kn(t)}}function Xa(e){return Le(e).pipe(m(({width:t})=>({scrollable:Ct(e).width>t})),ne("scrollable"))}function Qn(e,t){let{matches:r}=matchMedia("(hover)"),o=H(()=>{let n=new T,i=n.pipe(Yr(1));n.subscribe(({scrollable:d})=>{d&&r?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")});let s=[],a=e.closest("pre"),c=a.closest("[id]"),p=c?c.id:Ja++;a.id=`__code_${p}`;let l=[],f=e.closest(".highlight");if(f instanceof HTMLElement){let d=Kn(f);if(typeof d!="undefined"&&(f.classList.contains("annotate")||N("content.code.annotate"))){let v=Tr(d,e,t);l.push(Le(f).pipe(U(i),m(({width:S,height:X})=>S&&X),Y(),b(S=>S?v:y)))}}let u=M(":scope > span[id]",e);if(u.length&&(e.classList.add("md-code__content"),e.closest(".select")||N("content.code.select")&&!e.closest(".no-select"))){let d=+u[0].id.split("-").pop(),v=Hn();s.push(v),N("content.tooltips")&&l.push(Xe(v,{viewport$}));let S=h(v,"click").pipe(Ut(R=>!R,!1),O(()=>v.blur()),le());S.subscribe(R=>{v.classList.toggle("md-code__button--active",R)});let X=fe(u).pipe(J(R=>it(R).pipe(m(se=>[R,se]))));S.pipe(b(R=>R?X:y)).subscribe(([R,se])=>{let ce=ue(".hll.select",R);if(ce&&!se)ce.replaceWith(...Array.from(ce.childNodes));else if(!ce&&se){let he=document.createElement("span");he.className="hll select",he.append(...Array.from(R.childNodes).slice(1)),R.append(he)}});let re=fe(u).pipe(J(R=>h(R,"mousedown").pipe(O(se=>se.preventDefault()),m(()=>R)))),ee=S.pipe(b(R=>R?re:y),te(zn),m(([R,se])=>{var he;let ce=u.indexOf(R)+d;if(se===!1)return[ce,ce];{let Se=M(".hll",e).map(De=>u.indexOf(De.parentElement)+d);return(he=window.getSelection())==null||he.removeAllRanges(),[Math.min(ce,...Se),Math.max(ce,...Se)]}})),k=Zr(y).pipe(g(R=>R.startsWith(`__codelineno-${p}-`)));k.subscribe(R=>{let[,,se]=R.split("-"),ce=se.split(":").map(Se=>+Se-d+1);ce.length===1&&ce.push(ce[0]);for(let Se of M(".hll:not(.select)",e))Se.replaceWith(...Array.from(Se.childNodes));let he=u.slice(ce[0]-1,ce[1]);for(let Se of he){let De=document.createElement("span");De.className="hll",De.append(...Array.from(Se.childNodes).slice(1)),Se.append(De)}}),k.pipe(Ee(1),xe(pe)).subscribe(R=>{if(R.includes(":")){let se=document.getElementById(R.split(":")[0]);se&&setTimeout(()=>{let ce=se,he=-64;for(;ce!==document.body;)he+=ce.offsetTop,ce=ce.offsetParent;window.scrollTo({top:he})},1)}});let je=fe(M('a[href^="#__codelineno"]',f)).pipe(J(R=>h(R,"click").pipe(O(se=>se.preventDefault()),m(()=>R)))).pipe(U(i),te(zn),m(([R,se])=>{let he=+j(`[id="${R.hash.slice(1)}"]`).parentElement.id.split("-").pop();if(se===!1)return[he,he];{let Se=M(".hll",e).map(De=>+De.parentElement.id.split("-").pop());return[Math.min(he,...Se),Math.max(he,...Se)]}}));L(ee,je).subscribe(R=>{let se=`#__codelineno-${p}-`;R[0]===R[1]?se+=R[0]:se+=`${R[0]}:${R[1]}`,history.replaceState({},"",se),window.dispatchEvent(new HashChangeEvent("hashchange",{newURL:window.location.origin+window.location.pathname+se,oldURL:window.location.href}))})}if(qn.default.isSupported()&&(e.closest(".copy")||N("content.code.copy")&&!e.closest(".no-copy"))){let d=kn(a.id);s.push(d),N("content.tooltips")&&l.push(Xe(d,{viewport$}))}if(s.length){let d=$n();d.append(...s),a.insertBefore(d,e)}return Xa(e).pipe(O(d=>n.next(d)),A(()=>n.complete()),m(d=>P({ref:e},d)),Ne(L(...l).pipe(U(i))))});return N("content.lazy")?mt(e).pipe(g(n=>n),Ee(1),b(()=>o)):o}function Za(e,{target$:t,print$:r}){let o=!0;return L(t.pipe(m(n=>n.closest("details:not([open])")),g(n=>e===n),m(()=>({action:"open",reveal:!0}))),r.pipe(g(n=>n||!o),O(()=>o=e.open),m(n=>({action:n?"open":"close"}))))}function Yn(e,t){return H(()=>{let r=new T;return r.subscribe(({action:o,reveal:n})=>{e.toggleAttribute("open",o==="open"),n&&e.scrollIntoView()}),Za(e,t).pipe(O(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))})}var Bn=0;function es(e){let t=document.createElement("h3");t.innerHTML=e.innerHTML;let r=[t],o=e.nextElementSibling;for(;o&&!(o instanceof HTMLHeadingElement);)r.push(o),o=o.nextElementSibling;return r}function ts(e,t){for(let r of M("[href], [src]",e))for(let o of["href","src"]){let n=r.getAttribute(o);if(n&&!/^(?:[a-z]+:)?\/\//i.test(n)){r[o]=new URL(r.getAttribute(o),t).toString();break}}for(let r of M("[name^=__], [for]",e))for(let o of["id","for","name"]){let n=r.getAttribute(o);n&&r.setAttribute(o,`${n}$preview_${Bn}`)}return Bn++,$(e)}function Gn(e,t){let{sitemap$:r}=t;if(!(e instanceof HTMLAnchorElement))return y;if(!(N("navigation.instant.preview")||e.hasAttribute("data-preview")))return y;let o=z([Ye(e),it(e)]).pipe(m(([i,s])=>i||s),Y(),g(i=>i));return rt([r,o]).pipe(b(([i])=>{let s=new URL(e.href);return s.search=s.hash="",i.has(`${s}`)?$(s):y}),b(i=>xr(i).pipe(b(s=>ts(s,i)))),b(i=>{let s=e.hash?`article [id="${e.hash.slice(1)}"]`:"article h1",a=ue(s,i);return typeof a=="undefined"?y:$(es(a))})).pipe(b(i=>{let s=new F(a=>{let c=wr(...i);return a.next(c),document.body.append(c),()=>c.remove()});return Vt(e,P({content$:s},t))}))}var Jn=".node circle,.node ellipse,.node path,.node polygon,.node rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}marker{fill:var(--md-mermaid-edge-color)!important}.edgeLabel .label rect{fill:#0000}.label{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.label foreignObject{line-height:normal;overflow:visible}.label div .edgeLabel{color:var(--md-mermaid-label-fg-color)}.edgeLabel,.edgeLabel p,.label div .edgeLabel{background-color:var(--md-mermaid-label-bg-color)}.edgeLabel,.edgeLabel p{fill:var(--md-mermaid-label-bg-color);color:var(--md-mermaid-edge-color)}.edgePath .path,.flowchart-link{stroke:var(--md-mermaid-edge-color);stroke-width:.05rem}.edgePath .arrowheadPath{fill:var(--md-mermaid-edge-color);stroke:none}.cluster rect{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}.cluster span{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}g #flowchart-circleEnd,g #flowchart-circleStart,g #flowchart-crossEnd,g #flowchart-crossStart,g #flowchart-pointEnd,g #flowchart-pointStart{stroke:none}g.classGroup line,g.classGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.classGroup text{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.classLabel .box{fill:var(--md-mermaid-label-bg-color);background-color:var(--md-mermaid-label-bg-color);opacity:1}.classLabel .label{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.node .divider{stroke:var(--md-mermaid-node-fg-color)}.relation{stroke:var(--md-mermaid-edge-color)}.cardinality{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.cardinality text{fill:inherit!important}defs #classDiagram-compositionEnd,defs #classDiagram-compositionStart,defs #classDiagram-dependencyEnd,defs #classDiagram-dependencyStart,defs #classDiagram-extensionEnd,defs #classDiagram-extensionStart{fill:var(--md-mermaid-edge-color)!important;stroke:var(--md-mermaid-edge-color)!important}defs #classDiagram-aggregationEnd,defs #classDiagram-aggregationStart{fill:var(--md-mermaid-label-bg-color)!important;stroke:var(--md-mermaid-edge-color)!important}g.stateGroup rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}g.stateGroup .state-title{fill:var(--md-mermaid-label-fg-color)!important;font-family:var(--md-mermaid-font-family)}g.stateGroup .composit{fill:var(--md-mermaid-label-bg-color)}.nodeLabel,.nodeLabel p{color:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}a .nodeLabel{text-decoration:underline}.node circle.state-end,.node circle.state-start,.start-state{fill:var(--md-mermaid-edge-color);stroke:none}.end-state-inner,.end-state-outer{fill:var(--md-mermaid-edge-color)}.end-state-inner,.node circle.state-end{stroke:var(--md-mermaid-label-bg-color)}.transition{stroke:var(--md-mermaid-edge-color)}[id^=state-fork] rect,[id^=state-join] rect{fill:var(--md-mermaid-edge-color)!important;stroke:none!important}.statediagram-cluster.statediagram-cluster .inner{fill:var(--md-default-bg-color)}.statediagram-cluster rect{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.statediagram-state rect.divider{fill:var(--md-default-fg-color--lightest);stroke:var(--md-default-fg-color--lighter)}defs #statediagram-barbEnd{stroke:var(--md-mermaid-edge-color)}.attributeBoxEven,.attributeBoxOdd{fill:var(--md-mermaid-node-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityBox{fill:var(--md-mermaid-label-bg-color);stroke:var(--md-mermaid-node-fg-color)}.entityLabel{fill:var(--md-mermaid-label-fg-color);font-family:var(--md-mermaid-font-family)}.relationshipLabelBox{fill:var(--md-mermaid-label-bg-color);fill-opacity:1;background-color:var(--md-mermaid-label-bg-color);opacity:1}.relationshipLabel{fill:var(--md-mermaid-label-fg-color)}.relationshipLine{stroke:var(--md-mermaid-edge-color)}defs #ONE_OR_MORE_END *,defs #ONE_OR_MORE_START *,defs #ONLY_ONE_END *,defs #ONLY_ONE_START *,defs #ZERO_OR_MORE_END *,defs #ZERO_OR_MORE_START *,defs #ZERO_OR_ONE_END *,defs #ZERO_OR_ONE_START *{stroke:var(--md-mermaid-edge-color)!important}defs #ZERO_OR_MORE_END circle,defs #ZERO_OR_MORE_START circle{fill:var(--md-mermaid-label-bg-color)}.actor{fill:var(--md-mermaid-sequence-actor-bg-color);stroke:var(--md-mermaid-sequence-actor-border-color)}text.actor>tspan{fill:var(--md-mermaid-sequence-actor-fg-color);font-family:var(--md-mermaid-font-family)}line{stroke:var(--md-mermaid-sequence-actor-line-color)}.actor-man circle,.actor-man line{fill:var(--md-mermaid-sequence-actorman-bg-color);stroke:var(--md-mermaid-sequence-actorman-line-color)}.messageLine0,.messageLine1{stroke:var(--md-mermaid-sequence-message-line-color)}.note{fill:var(--md-mermaid-sequence-note-bg-color);stroke:var(--md-mermaid-sequence-note-border-color)}.loopText,.loopText>tspan,.messageText,.noteText>tspan{stroke:none;font-family:var(--md-mermaid-font-family)!important}.messageText{fill:var(--md-mermaid-sequence-message-fg-color)}.loopText,.loopText>tspan{fill:var(--md-mermaid-sequence-loop-fg-color)}.noteText>tspan{fill:var(--md-mermaid-sequence-note-fg-color)}#arrowhead path{fill:var(--md-mermaid-sequence-message-line-color);stroke:none}.loopLine{fill:var(--md-mermaid-sequence-loop-bg-color);stroke:var(--md-mermaid-sequence-loop-border-color)}.labelBox{fill:var(--md-mermaid-sequence-label-bg-color);stroke:none}.labelText,.labelText>span{fill:var(--md-mermaid-sequence-label-fg-color);font-family:var(--md-mermaid-font-family)}.sequenceNumber{fill:var(--md-mermaid-sequence-number-fg-color)}rect.rect{fill:var(--md-mermaid-sequence-box-bg-color);stroke:none}rect.rect+text.text{fill:var(--md-mermaid-sequence-box-fg-color)}defs #sequencenumber{fill:var(--md-mermaid-sequence-number-bg-color)!important}";var so,os=0;function ns(){return typeof mermaid=="undefined"||mermaid instanceof Element?At("https://unpkg.com/mermaid@11/dist/mermaid.min.js"):$(void 0)}function Xn(e){return e.classList.remove("mermaid"),so||(so=ns().pipe(O(()=>mermaid.initialize({startOnLoad:!1,themeCSS:Jn,sequence:{actorFontSize:"16px",messageFontSize:"16px",noteFontSize:"16px"}})),m(()=>{}),Z(1))),so.subscribe(()=>vo(this,null,function*(){e.classList.add("mermaid");let t=`__mermaid_${os++}`,r=x("div",{class:"mermaid"}),o=e.textContent,{svg:n,fn:i}=yield mermaid.render(t,o),s=r.attachShadow({mode:"closed"});s.innerHTML=n,e.replaceWith(r),i==null||i(s)})),so.pipe(m(()=>({ref:e})))}var Zn=x("table");function ei(e){return e.replaceWith(Zn),Zn.replaceWith(jn(e)),$({ref:e})}function is(e){let t=e.find(r=>r.checked)||e[0];return L(...e.map(r=>h(r,"change").pipe(m(()=>j(`label[for="${r.id}"]`))))).pipe(Q(j(`label[for="${t.id}"]`)),m(r=>({active:r})))}function ti(e,{viewport$:t,target$:r}){let o=j(".tabbed-labels",e),n=M(":scope > input",e),i=no("prev");e.append(i);let s=no("next");return e.append(s),H(()=>{let a=new T,c=a.pipe(oe(),ae(!0));z([a,Le(e),mt(e)]).pipe(U(c),$e(1,ye)).subscribe({next([{active:p},l]){let f=Be(p),{width:u}=de(p);e.style.setProperty("--md-indicator-x",`${f.x}px`),e.style.setProperty("--md-indicator-width",`${u}px`);let d=gr(o);(f.xd.x+l.width)&&o.scrollTo({left:Math.max(0,f.x-16),behavior:"smooth"})},complete(){e.style.removeProperty("--md-indicator-x"),e.style.removeProperty("--md-indicator-width")}}),z([Ge(o),Le(o)]).pipe(U(c)).subscribe(([p,l])=>{let f=Ct(o);i.hidden=p.x<16,s.hidden=p.x>f.width-l.width-16}),L(h(i,"click").pipe(m(()=>-1)),h(s,"click").pipe(m(()=>1))).pipe(U(c)).subscribe(p=>{let{width:l}=de(o);o.scrollBy({left:l*p,behavior:"smooth"})}),r.pipe(U(c),g(p=>n.includes(p))).subscribe(p=>p.click()),o.classList.add("tabbed-labels--linked");for(let p of n){let l=j(`label[for="${p.id}"]`);l.replaceChildren(x("a",{href:`#${l.htmlFor}`,tabIndex:-1},...Array.from(l.childNodes))),h(l.firstElementChild,"click").pipe(U(c),g(f=>!(f.metaKey||f.ctrlKey)),O(f=>{f.preventDefault(),f.stopPropagation()})).subscribe(()=>{history.replaceState({},"",`#${l.htmlFor}`),l.click()})}return N("content.tabs.link")&&a.pipe(Ie(1),te(t)).subscribe(([{active:p},{offset:l}])=>{let f=p.innerText.trim();if(p.hasAttribute("data-md-switching"))p.removeAttribute("data-md-switching");else{let u=e.offsetTop-l.y;for(let v of M("[data-tabs]"))for(let S of M(":scope > input",v)){let X=j(`label[for="${S.id}"]`);if(X!==p&&X.innerText.trim()===f){X.setAttribute("data-md-switching",""),S.click();break}}window.scrollTo({top:e.offsetTop-u});let d=__md_get("__tabs")||[];__md_set("__tabs",[...new Set([f,...d])])}}),a.pipe(U(c)).subscribe(()=>{for(let p of M("audio, video",e))p.pause()}),is(n).pipe(O(p=>a.next(p)),A(()=>a.complete()),m(p=>P({ref:e},p)))}).pipe(et(pe))}function ri(e,t){let{viewport$:r,target$:o,print$:n}=t;return L(...M(".annotate:not(.highlight)",e).map(i=>Vn(i,{target$:o,print$:n})),...M("pre:not(.mermaid) > code",e).map(i=>Qn(i,{target$:o,print$:n})),...M("a:not([title])",e).map(i=>Gn(i,t)),...M("pre.mermaid",e).map(i=>Xn(i)),...M("table:not([class])",e).map(i=>ei(i)),...M("details",e).map(i=>Yn(i,{target$:o,print$:n})),...M("[data-tabs]",e).map(i=>ti(i,{viewport$:r,target$:o})),...M("[title]",e).filter(()=>N("content.tooltips")).map(i=>Xe(i,{viewport$:r})),...M(".footnote-ref",e).filter(()=>N("content.footnote.tooltips")).map(i=>Vt(i,{content$:new F(s=>{let a=new URL(i.href).hash.slice(1),c=Array.from(document.getElementById(a).cloneNode(!0).children),p=wr(...c);return s.next(p),document.body.append(p),()=>p.remove()}),viewport$:r})))}function as(e,{alert$:t}){return t.pipe(b(r=>L($(!0),$(!1).pipe(nt(2e3))).pipe(m(o=>({message:r,active:o})))))}function oi(e,t){let r=j(".md-typeset",e);return H(()=>{let o=new T;return o.subscribe(({message:n,active:i})=>{e.classList.toggle("md-dialog--active",i),r.textContent=n}),as(e,t).pipe(O(n=>o.next(n)),A(()=>o.complete()),m(n=>P({ref:e},n)))})}var ss=0;function cs(e,t){document.body.append(e);let{width:r}=de(e);e.style.setProperty("--md-tooltip-width",`${r}px`),e.remove();let o=vr(t),n=typeof o!="undefined"?Ge(o):$({x:0,y:0}),i=L(Ye(t),it(t)).pipe(Y());return z([i,n]).pipe(m(([s,a])=>{let{x:c,y:p}=Be(t),l=de(t),f=t.closest("table");return f&&t.parentElement&&(c+=f.offsetLeft+t.parentElement.offsetLeft,p+=f.offsetTop+t.parentElement.offsetTop),{active:s,offset:{x:c-a.x+l.width/2-r/2,y:p-a.y+l.height+8}}}))}function ni(e){let t=e.title;if(!t.length)return y;let r=`__tooltip_${ss++}`,o=Nt(r,"inline"),n=j(".md-typeset",o);return n.innerHTML=t,H(()=>{let i=new T;return i.subscribe({next({offset:s}){o.style.setProperty("--md-tooltip-x",`${s.x}px`),o.style.setProperty("--md-tooltip-y",`${s.y}px`)},complete(){o.style.removeProperty("--md-tooltip-x"),o.style.removeProperty("--md-tooltip-y")}}),L(i.pipe(g(({active:s})=>s)),i.pipe(Ae(250),g(({active:s})=>!s))).subscribe({next({active:s}){s?(e.insertAdjacentElement("afterend",o),e.setAttribute("aria-describedby",r),e.removeAttribute("title")):(o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t))},complete(){o.remove(),e.removeAttribute("aria-describedby"),e.setAttribute("title",t)}}),i.pipe($e(16,ye)).subscribe(({active:s})=>{o.classList.toggle("md-tooltip--active",s)}),i.pipe(gt(125,ye),g(()=>!!e.offsetParent),m(()=>e.offsetParent.getBoundingClientRect()),m(({x:s})=>s)).subscribe({next(s){s?o.style.setProperty("--md-tooltip-0",`${-s}px`):o.style.removeProperty("--md-tooltip-0")},complete(){o.style.removeProperty("--md-tooltip-0")}}),cs(o,e).pipe(O(s=>i.next(s)),A(()=>i.complete()),m(s=>P({ref:e},s)))}).pipe(et(pe))}function ps({viewport$:e}){if(!N("header.autohide"))return $(!1);let t=e.pipe(m(({offset:{y:n}})=>n),ot(2,1),m(([n,i])=>[nMath.abs(i-n.y)>100),m(([,[n]])=>n),Y()),o=Je("search");return z([e,o]).pipe(m(([{offset:n},i])=>n.y>400&&!i),Y(),b(n=>n?r:$(!1)),Q(!1))}function ii(e,t){return H(()=>z([Le(e),ps(t)])).pipe(m(([{height:r},o])=>({height:r,hidden:o})),Y((r,o)=>r.height===o.height&&r.hidden===o.hidden),Z(1))}function ai(e,{header$:t,main$:r}){return H(()=>{let o=new T,n=o.pipe(oe(),ae(!0));o.pipe(ne("active"),Pe(t)).subscribe(([{active:s},{hidden:a}])=>{e.classList.toggle("md-header--shadow",s&&!a),e.hidden=a});let i=fe(M("[title]",e)).pipe(g(()=>N("content.tooltips")),J(s=>ni(s)));return r.subscribe(o),t.pipe(U(n),m(s=>P({ref:e},s)),Ne(i.pipe(U(n))))})}function ls(e,{viewport$:t,header$:r}){return Er(e,{viewport$:t,header$:r}).pipe(m(({offset:{y:o}})=>{let{height:n}=de(e);return{active:o>=n}}),ne("active"))}function si(e,t){return H(()=>{let r=new T;r.subscribe({next({active:n}){e.classList.toggle("md-header__title--active",n)},complete(){e.classList.remove("md-header__title--active")}});let o=ue(".md-content h1");return typeof o=="undefined"?y:ls(o,t).pipe(O(n=>r.next(n)),A(()=>r.complete()),m(n=>P({ref:e},n)))})}function ci(e,{viewport$:t,header$:r}){let o=r.pipe(m(({height:i})=>i),Y()),n=o.pipe(b(()=>Le(e).pipe(m(({height:i})=>({top:e.offsetTop,bottom:e.offsetTop+i})),ne("bottom"))));return z([o,n,t]).pipe(m(([i,{top:s,bottom:a},{offset:{y:c},size:{height:p}}])=>(p=Math.max(0,p-Math.max(0,s-c,i)-Math.max(0,p+c-a)),{offset:s-i,height:p,active:s-i<=c})),Y((i,s)=>i.offset===s.offset&&i.height===s.height&&i.active===s.active))}function ms(e){let t=__md_get("__palette")||{index:e.findIndex(o=>matchMedia(o.getAttribute("data-md-color-media")).matches)},r=Math.max(0,Math.min(t.index,e.length-1));return $(...e).pipe(J(o=>h(o,"change").pipe(m(()=>o))),Q(e[r]),m(o=>({index:e.indexOf(o),color:{media:o.getAttribute("data-md-color-media"),scheme:o.getAttribute("data-md-color-scheme"),primary:o.getAttribute("data-md-color-primary"),accent:o.getAttribute("data-md-color-accent")}})),Z(1))}function pi(e){let t=M("input",e),r=x("meta",{name:"theme-color"});document.head.appendChild(r);let o=x("meta",{name:"color-scheme"});document.head.appendChild(o);let n=Wt("(prefers-color-scheme: light)");return H(()=>{let i=new T;return i.subscribe(s=>{if(document.body.setAttribute("data-md-color-switching",""),s.color.media==="(prefers-color-scheme)"){let a=matchMedia("(prefers-color-scheme: light)"),c=document.querySelector(a.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");s.color.scheme=c.getAttribute("data-md-color-scheme"),s.color.primary=c.getAttribute("data-md-color-primary"),s.color.accent=c.getAttribute("data-md-color-accent")}for(let[a,c]of Object.entries(s.color))document.body.setAttribute(`data-md-color-${a}`,c);for(let a=0;as.key==="Enter"),te(i,(s,a)=>a)).subscribe(({index:s})=>{s=(s+1)%t.length,t[s].click(),t[s].focus()}),i.pipe(m(()=>{let s=Ce("header"),a=window.getComputedStyle(s);return o.content=a.colorScheme,a.backgroundColor.match(/\d+/g).map(c=>(+c).toString(16).padStart(2,"0")).join("")})).subscribe(s=>r.content=`#${s}`),i.pipe(xe(pe)).subscribe(()=>{document.body.removeAttribute("data-md-color-switching")}),ms(t).pipe(U(n.pipe(Ie(1))),vt(),O(s=>i.next(s)),A(()=>i.complete()),m(s=>P({ref:e},s)))})}function li(e,{progress$:t}){return H(()=>{let r=new T;return r.subscribe(({value:o})=>{e.style.setProperty("--md-progress-value",`${o}`)}),t.pipe(O(o=>r.next({value:o})),A(()=>r.complete()),m(o=>({ref:e,value:o})))})}function mi(e,t){return e.protocol=t.protocol,e.hostname=t.hostname,e}function fs(e,t){let r=new Map;for(let o of M("url",e)){let n=j("loc",o),i=[mi(new URL(n.textContent),t)];r.set(`${i[0]}`,i);for(let s of M("[rel=alternate]",o)){let a=s.getAttribute("href");a!=null&&i.push(mi(new URL(a),t))}}return r}function Ht(e){return xn(new URL("sitemap.xml",e)).pipe(m(t=>fs(t,new URL(e))),ve(()=>$(new Map)),le())}function fi({document$:e}){let t=new Map;e.pipe(b(()=>M("link[rel=alternate]")),m(r=>new URL(r.href)),g(r=>!t.has(r.toString())),J(r=>Ht(r).pipe(m(o=>[r,o]),ve(()=>y)))).subscribe(([r,o])=>{t.set(r.toString().replace(/\/$/,""),o)}),h(document.body,"click").pipe(g(r=>!r.metaKey&&!r.ctrlKey),b(r=>{if(r.target instanceof Element){let o=r.target.closest("a");if(o&&!o.target){let n=[...t].find(([f])=>o.href.startsWith(`${f}/`));if(typeof n=="undefined")return y;let[i,s]=n,a=we();if(a.href.startsWith(i))return y;let c=Te(),p=a.href.replace(c.base,"");p=`${i}/${p}`;let l=s.has(p.split("#")[0])?new URL(p,c.base):new URL(i);return r.preventDefault(),$(l)}}return y})).subscribe(r=>st(r,!0))}var co=Pt(ao());function us(e){e.setAttribute("data-md-copying","");let t=e.closest("[data-copy]"),r=t?t.getAttribute("data-copy"):e.innerText;return e.removeAttribute("data-md-copying"),r.trimEnd()}function ui({alert$:e}){co.default.isSupported()&&new F(t=>{new co.default("[data-clipboard-target], [data-clipboard-text]",{text:r=>r.getAttribute("data-clipboard-text")||us(j(r.getAttribute("data-clipboard-target")))}).on("success",r=>t.next(r))}).pipe(O(t=>{t.trigger.focus()}),m(()=>Me("clipboard.copied"))).subscribe(e)}function di(e,t){if(!(e.target instanceof Element))return y;let r=e.target.closest("a");if(r===null)return y;if(r.target||e.metaKey||e.ctrlKey)return y;let o=new URL(r.href);return o.search=o.hash="",t.has(`${o}`)?(e.preventDefault(),$(r)):y}function hi(e){let t=new Map;for(let r of M(":scope > *",e.head))t.set(r.outerHTML,r);return t}function bi(e){for(let t of M("[href], [src]",e))for(let r of["href","src"]){let o=t.getAttribute(r);if(o&&!/^(?:[a-z]+:)?\/\//i.test(o)){t[r]=t[r];break}}return $(e)}function ds(e){for(let o of["[data-md-component=announce]","[data-md-component=container]","[data-md-component=header-topic]","[data-md-component=outdated]","[data-md-component=logo]","[data-md-component=skip]",...N("navigation.tabs.sticky")?["[data-md-component=tabs]"]:[]]){let n=ue(o),i=ue(o,e);typeof n!="undefined"&&typeof i!="undefined"&&n.replaceWith(i)}let t=hi(document);for(let[o,n]of hi(e))t.has(o)?t.delete(o):document.head.appendChild(n);for(let o of t.values()){let n=o.getAttribute("name");n!=="theme-color"&&n!=="color-scheme"&&o.remove()}let r=Ce("container");return Ke(M("script",r)).pipe(b(o=>{let n=e.createElement("script");if(o.src){for(let i of o.getAttributeNames())n.setAttribute(i,o.getAttribute(i));return o.replaceWith(n),new F(i=>{n.onload=()=>i.complete()})}else return n.textContent=o.textContent,o.replaceWith(n),y}),oe(),ae(document))}function vi({sitemap$:e,location$:t,viewport$:r,progress$:o}){if(location.protocol==="file:")return y;$(document).subscribe(bi);let n=h(document.body,"click").pipe(Pe(e),b(([a,c])=>di(a,c)),m(({href:a})=>new URL(a)),le()),i=h(window,"popstate").pipe(m(we),le());n.pipe(te(r)).subscribe(([a,{offset:c}])=>{history.replaceState(c,""),history.pushState(null,"",a)}),L(n,i).subscribe(t);let s=t.pipe(ne("pathname"),b(a=>xr(a,{progress$:o}).pipe(ve(()=>(st(a,!0),y)))),b(bi),b(ds),le());return L(s.pipe(te(t,(a,c)=>c)),s.pipe(b(()=>t),ne("pathname"),b(()=>t),ne("hash")),t.pipe(Y((a,c)=>a.pathname===c.pathname&&a.hash===c.hash),b(()=>n),O(()=>history.back()))).subscribe(a=>{var c,p;history.state!==null||!a.hash?window.scrollTo(0,(p=(c=history.state)==null?void 0:c.y)!=null?p:0):(history.scrollRestoration="auto",vn(a.hash),history.scrollRestoration="manual")}),t.subscribe(()=>{history.scrollRestoration="manual"}),h(window,"beforeunload").subscribe(()=>{history.scrollRestoration="auto"}),r.pipe(ne("offset"),Ae(100)).subscribe(({offset:a})=>{history.replaceState(a,"")}),N("navigation.instant.prefetch")&&L(h(document.body,"mousemove"),h(document.body,"focusin")).pipe(Pe(e),b(([a,c])=>di(a,c)),Ae(25),Qr(({href:a})=>a),hr(a=>{let c=document.createElement("link");return c.rel="prefetch",c.href=a.toString(),document.head.appendChild(c),h(c,"load").pipe(m(()=>c),Ee(1))})).subscribe(a=>a.remove()),s}var gi=Pt(ro());function yi(e){let t=e.separator.split("|").map(n=>n.replace(/(\(\?[!=<][^)]+\))/g,"").length===0?"\uFFFD":n).join("|"),r=new RegExp(t,"img"),o=(n,i,s)=>`${i}${s}`;return n=>{n=n.replace(/[\s*+\-:~^]+/g," ").trim();let i=new RegExp(`(^|${e.separator}|)(${n.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&").replace(r,"|")})`,"img");return s=>(0,gi.default)(s).replace(i,o).replace(/<\/mark>(\s+)]*>/img,"$1")}}function qt(e){return e.type===1}function Sr(e){return e.type===3}function xi(e,t){let r=Ln(e);return L($(location.protocol!=="file:"),Je("search")).pipe(Re(o=>o),b(()=>t)).subscribe(({config:o,docs:n})=>r.next({type:0,data:{config:o,docs:n,options:{suggest:N("search.suggest")}}})),r}function Ei({document$:e}){let t=Te(),r=ze(new URL("../versions.json",t.base)).pipe(ve(()=>y)),o=r.pipe(m(n=>{let[,i]=t.base.match(/([^/]+)\/?$/);return n.find(({version:s,aliases:a})=>s===i||a.includes(i))||n[0]}));r.pipe(m(n=>new Map(n.map(i=>[`${new URL(`../${i.version}/`,t.base)}`,i]))),b(n=>h(document.body,"click").pipe(g(i=>!i.metaKey&&!i.ctrlKey),te(o),b(([i,s])=>{if(i.target instanceof Element){let a=i.target.closest("a");if(a&&!a.target&&n.has(a.href)){let c=a.href;return!i.target.closest(".md-version")&&n.get(c)===s?y:(i.preventDefault(),$(c))}}return y}),b(i=>Ht(new URL(i)).pipe(m(s=>{let c=we().href.replace(t.base,i);return s.has(c.split("#")[0])?new URL(c):new URL(i)})))))).subscribe(n=>st(n,!0)),z([r,o]).subscribe(([n,i])=>{j(".md-header__topic").appendChild(Dn(n,i))}),e.pipe(b(()=>o)).subscribe(n=>{var s;let i=__md_get("__outdated",sessionStorage);if(i===null){i=!0;let a=((s=t.version)==null?void 0:s.default)||"latest";Array.isArray(a)||(a=[a]);e:for(let c of a)for(let p of n.aliases.concat(n.version))if(new RegExp(c,"i").test(p)){i=!1;break e}__md_set("__outdated",i,sessionStorage)}if(i)for(let a of me("outdated"))a.hidden=!1})}function vs(e,{worker$:t}){let{searchParams:r}=we();r.has("q")&&(at("search",!0),e.value=r.get("q"),e.focus(),Je("search").pipe(Re(i=>!i)).subscribe(()=>{let i=we();i.searchParams.delete("q"),history.replaceState({},"",`${i}`)}));let o=Ye(e),n=L(t.pipe(Re(qt)),h(e,"keyup"),o).pipe(m(()=>e.value),Y());return z([n,o]).pipe(m(([i,s])=>({value:i,focus:s})),Z(1))}function wi(e,{worker$:t}){let r=new T,o=r.pipe(oe(),ae(!0));z([t.pipe(Re(qt)),r],(i,s)=>s).pipe(ne("value")).subscribe(({value:i})=>t.next({type:2,data:i})),r.pipe(ne("focus")).subscribe(({focus:i})=>{i&&at("search",i)}),h(e.form,"reset").pipe(U(o)).subscribe(()=>e.focus());let n=j("header [for=__search]");return h(n,"click").subscribe(()=>e.focus()),vs(e,{worker$:t}).pipe(O(i=>r.next(i)),A(()=>r.complete()),m(i=>P({ref:e},i)),Z(1))}function Ti(e,{worker$:t,query$:r}){let o=new T,n=fn(e.parentElement).pipe(g(Boolean)),i=e.parentElement,s=j(":scope > :first-child",e),a=j(":scope > :last-child",e);Je("search").subscribe(l=>a.setAttribute("role",l?"list":"presentation")),o.pipe(te(r),Gr(t.pipe(Re(qt)))).subscribe(([{items:l},{value:f}])=>{switch(l.length){case 0:s.textContent=f.length?Me("search.result.none"):Me("search.result.placeholder");break;case 1:s.textContent=Me("search.result.one");break;default:let u=br(l.length);s.textContent=Me("search.result.other",u)}});let c=o.pipe(O(()=>a.innerHTML=""),b(({items:l})=>L($(...l.slice(0,10)),$(...l.slice(10)).pipe(ot(4),Xr(n),b(([f])=>f)))),m(In),le());return c.subscribe(l=>a.appendChild(l)),c.pipe(J(l=>{let f=ue("details",l);return typeof f=="undefined"?y:h(f,"toggle").pipe(U(o),m(()=>f))})).subscribe(l=>{l.open===!1&&l.offsetTop<=i.scrollTop&&i.scrollTo({top:l.offsetTop})}),t.pipe(g(Sr),m(({data:l})=>l)).pipe(O(l=>o.next(l)),A(()=>o.complete()),m(l=>P({ref:e},l)))}function gs(e,{query$:t}){return t.pipe(m(({value:r})=>{let o=we();return o.hash="",r=r.replace(/\s+/g,"+").replace(/&/g,"%26").replace(/=/g,"%3D"),o.search=`q=${r}`,{url:o}}))}function Si(e,t){let r=new T,o=r.pipe(oe(),ae(!0));return r.subscribe(({url:n})=>{e.setAttribute("data-clipboard-text",e.href),e.href=`${n}`}),h(e,"click").pipe(U(o)).subscribe(n=>n.preventDefault()),gs(e,t).pipe(O(n=>r.next(n)),A(()=>r.complete()),m(n=>P({ref:e},n)))}function Oi(e,{worker$:t,keyboard$:r}){let o=new T,n=Ce("search-query"),i=L(h(n,"keydown"),h(n,"focus")).pipe(xe(pe),m(()=>n.value),Y());return o.pipe(Pe(i),m(([{suggest:a},c])=>{let p=c.split(/([\s-]+)/);if(a!=null&&a.length&&p[p.length-1]){let l=a[a.length-1];l.startsWith(p[p.length-1])&&(p[p.length-1]=l)}else p.length=0;return p})).subscribe(a=>e.innerHTML=a.join("").replace(/\s/g," ")),r.pipe(g(({mode:a})=>a==="search")).subscribe(a=>{switch(a.type){case"ArrowRight":e.innerText.length&&n.selectionStart===n.value.length&&(n.value=e.innerText);break}}),t.pipe(g(Sr),m(({data:a})=>a)).pipe(O(a=>o.next(a)),A(()=>o.complete()),m(()=>({ref:e})))}function Li(e,{index$:t,keyboard$:r}){let o=Te();try{let n=xi(o.search,t),i=Ce("search-query",e),s=Ce("search-result",e);h(e,"click").pipe(g(({target:c})=>c instanceof Element&&!!c.closest("a"))).subscribe(()=>at("search",!1)),r.pipe(g(({mode:c})=>c==="search")).subscribe(c=>{let p=Ve();switch(c.type){case"Enter":if(p===i){let l=new Map;for(let f of M(":first-child [href]",s)){let u=f.firstElementChild;l.set(f,parseFloat(u.getAttribute("data-md-score")))}if(l.size){let[[f]]=[...l].sort(([,u],[,d])=>d-u);f.click()}c.claim()}break;case"Escape":case"Tab":at("search",!1),i.blur();break;case"ArrowUp":case"ArrowDown":if(typeof p=="undefined")i.focus();else{let l=[i,...M(":not(details) > [href], summary, details[open] [href]",s)],f=Math.max(0,(Math.max(0,l.indexOf(p))+l.length+(c.type==="ArrowUp"?-1:1))%l.length);l[f].focus()}c.claim();break;default:i!==Ve()&&i.focus()}}),r.pipe(g(({mode:c})=>c==="global")).subscribe(c=>{switch(c.type){case"f":case"s":case"/":i.focus(),i.select(),c.claim();break}});let a=wi(i,{worker$:n});return L(a,Ti(s,{worker$:n,query$:a})).pipe(Ne(...me("search-share",e).map(c=>Si(c,{query$:a})),...me("search-suggest",e).map(c=>Oi(c,{worker$:n,keyboard$:r}))))}catch(n){return e.hidden=!0,tt}}function Mi(e,{index$:t,location$:r}){return z([t,r.pipe(Q(we()),g(o=>!!o.searchParams.get("h")))]).pipe(m(([o,n])=>yi(o.config)(n.searchParams.get("h"))),m(o=>{var s;let n=new Map,i=document.createNodeIterator(e,NodeFilter.SHOW_TEXT);for(let a=i.nextNode();a;a=i.nextNode())if((s=a.parentElement)!=null&&s.offsetHeight){let c=a.textContent,p=o(c);p.length>c.length&&n.set(a,p)}for(let[a,c]of n){let{childNodes:p}=x("span",null,c);a.replaceWith(...Array.from(p))}return{ref:e,nodes:n}}))}function ys(e,{viewport$:t,main$:r}){let o=e.closest(".md-grid"),n=o.offsetTop-o.parentElement.offsetTop;return z([r,t]).pipe(m(([{offset:i,height:s},{offset:{y:a}}])=>(s=s+Math.min(n,Math.max(0,a-i))-n,{height:s,locked:a>=i+n})),Y((i,s)=>i.height===s.height&&i.locked===s.locked))}function po(e,o){var n=o,{header$:t}=n,r=bo(n,["header$"]);let i=j(".md-sidebar__scrollwrap",e),{y:s}=Be(i);return H(()=>{let a=new T,c=a.pipe(oe(),ae(!0)),p=a.pipe($e(0,ye));return p.pipe(te(t)).subscribe({next([{height:l},{height:f}]){i.style.height=`${l-2*s}px`,e.style.top=`${f}px`},complete(){i.style.height="",e.style.top=""}}),p.pipe(Re()).subscribe(()=>{for(let l of M(".md-nav__link--active[href]",e)){if(!l.clientHeight)continue;let f=l.closest(".md-sidebar__scrollwrap");if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=de(f);f.scrollTo({top:u-d/2})}}}),fe(M("label[tabindex]",e)).pipe(J(l=>h(l,"click").pipe(xe(pe),m(()=>l),U(c)))).subscribe(l=>{let f=j(`[id="${l.htmlFor}"]`);j(`[aria-labelledby="${l.id}"]`).setAttribute("aria-expanded",`${f.checked}`)}),N("content.tooltips")&&fe(M("abbr[title]",e)).pipe(J(l=>Xe(l,{viewport$})),U(c)).subscribe(),ys(e,r).pipe(O(l=>a.next(l)),A(()=>a.complete()),m(l=>P({ref:e},l)))})}function _i(e,t){if(typeof t!="undefined"){let r=`https://api.github.com/repos/${e}/${t}`;return rt(ze(`${r}/releases/latest`).pipe(ve(()=>y),m(o=>({version:o.tag_name})),Qe({})),ze(r).pipe(ve(()=>y),m(o=>({stars:o.stargazers_count,forks:o.forks_count})),Qe({}))).pipe(m(([o,n])=>P(P({},o),n)))}else{let r=`https://api.github.com/users/${e}`;return ze(r).pipe(m(o=>({repositories:o.public_repos})),Qe({}))}}function Ai(e,t){let r=`https://${e}/api/v4/projects/${encodeURIComponent(t)}`;return rt(ze(`${r}/releases/permalink/latest`).pipe(ve(()=>y),m(({tag_name:o})=>({version:o})),Qe({})),ze(r).pipe(ve(()=>y),m(({star_count:o,forks_count:n})=>({stars:o,forks:n})),Qe({}))).pipe(m(([o,n])=>P(P({},o),n)))}function Ci(e){let t=e.match(/^.+github\.com\/([^/]+)\/?([^/]+)?/i);if(t){let[,r,o]=t;return _i(r,o)}if(t=e.match(/^.+?([^/]*gitlab[^/]+)\/(.+?)\/?$/i),t){let[,r,o]=t;return Ai(r,o)}return y}var xs;function Es(e){return xs||(xs=H(()=>{let t=__md_get("__source",sessionStorage);if(t)return $(t);if(me("consent").length){let o=__md_get("__consent");if(!(o&&o.github))return y}return Ci(e.href).pipe(O(o=>__md_set("__source",o,sessionStorage)))}).pipe(ve(()=>y),g(t=>Object.keys(t).length>0),m(t=>({facts:t})),Z(1)))}function ki(e){let t=j(":scope > :last-child",e);return H(()=>{let r=new T;return r.subscribe(({facts:o})=>{t.appendChild(Fn(o)),t.classList.add("md-source__repository--active")}),Es(e).pipe(O(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))})}function ws(e,{viewport$:t,header$:r}){return Le(document.body).pipe(b(()=>Er(e,{header$:r,viewport$:t})),m(({offset:{y:o}})=>({hidden:o>=10})),ne("hidden"))}function Hi(e,t){return H(()=>{let r=new T;return r.subscribe({next({hidden:o}){e.hidden=o},complete(){e.hidden=!1}}),(N("navigation.tabs.sticky")?$({hidden:!1}):ws(e,t)).pipe(O(o=>r.next(o)),A(()=>r.complete()),m(o=>P({ref:e},o)))})}function Ts(e,{viewport$:t,header$:r}){let o=new Map,n=M(".md-nav__link",e);for(let a of n){let c=decodeURIComponent(a.hash.substring(1)),p=ue(`[id="${c}"]`);typeof p!="undefined"&&o.set(a,p)}let i=r.pipe(ne("height"),m(({height:a})=>{let c=Ce("main"),p=j(":scope > :first-child",c);return a+.8*(p.offsetTop-c.offsetTop)}),le());return Le(document.body).pipe(ne("height"),b(a=>H(()=>{let c=[];return $([...o].reduce((p,[l,f])=>{for(;c.length&&o.get(c[c.length-1]).tagName>=f.tagName;)c.pop();let u=f.offsetTop;for(;!u&&f.parentElement;)f=f.parentElement,u=f.offsetTop;let d=f.offsetParent;for(;d;d=d.offsetParent)u+=d.offsetTop;return p.set([...c=[...c,l]].reverse(),u)},new Map))}).pipe(m(c=>new Map([...c].sort(([,p],[,l])=>p-l))),Pe(i),b(([c,p])=>t.pipe(Ut(([l,f],{offset:{y:u},size:d})=>{let v=u+d.height>=Math.floor(a.height);for(;f.length;){let[,S]=f[0];if(S-p=u&&!v)f=[l.pop(),...f];else break}return[l,f]},[[],[...c]]),Y((l,f)=>l[0]===f[0]&&l[1]===f[1])))))).pipe(m(([a,c])=>({prev:a.map(([p])=>p),next:c.map(([p])=>p)})),Q({prev:[],next:[]}),ot(2,1),m(([a,c])=>a.prev.length{let i=new T,s=i.pipe(oe(),ae(!0));if(i.subscribe(({prev:a,next:c})=>{for(let[p]of c)p.classList.remove("md-nav__link--passed"),p.classList.remove("md-nav__link--active");for(let[p,[l]]of a.entries())l.classList.add("md-nav__link--passed"),l.classList.toggle("md-nav__link--active",p===a.length-1)}),N("toc.follow")){let a=L(t.pipe(Ae(1),m(()=>{})),t.pipe(Ae(250),m(()=>"smooth")));i.pipe(g(({prev:c})=>c.length>0),Pe(o.pipe(xe(pe))),te(a)).subscribe(([[{prev:c}],p])=>{let[l]=c[c.length-1];if(l.offsetHeight){let f=vr(l);if(typeof f!="undefined"){let u=l.offsetTop-f.offsetTop,{height:d}=de(f);f.scrollTo({top:u-d/2,behavior:p})}}})}return N("navigation.tracking")&&t.pipe(U(s),ne("offset"),Ae(250),Ie(1),U(n.pipe(Ie(1))),vt({delay:250}),te(i)).subscribe(([,{prev:a}])=>{let c=we(),p=a[a.length-1];if(p&&p.length){let[l]=p,{hash:f}=new URL(l.href);c.hash!==f&&(c.hash=f,history.replaceState({},"",`${c}`))}else c.hash="",history.replaceState({},"",`${c}`)}),Ts(e,{viewport$:t,header$:r}).pipe(O(a=>i.next(a)),A(()=>i.complete()),m(a=>P({ref:e},a)))})}function Ss(e,{viewport$:t,main$:r,target$:o}){let n=t.pipe(m(({offset:{y:s}})=>s),ot(2,1),m(([s,a])=>s>a&&a>0),Y()),i=r.pipe(m(({active:s})=>s));return z([i,n]).pipe(m(([s,a])=>!(s&&a)),Y(),U(o.pipe(Ie(1))),ae(!0),vt({delay:250}),m(s=>({hidden:s})))}function Pi(e,{viewport$:t,header$:r,main$:o,target$:n}){let i=new T,s=i.pipe(oe(),ae(!0));return i.subscribe({next({hidden:a}){e.hidden=a,a?(e.setAttribute("tabindex","-1"),e.blur()):e.removeAttribute("tabindex")},complete(){e.style.top="",e.hidden=!0,e.removeAttribute("tabindex")}}),r.pipe(U(s),ne("height")).subscribe(({height:a})=>{e.style.top=`${a+16}px`}),h(e,"click").subscribe(a=>{a.preventDefault(),window.scrollTo({top:0})}),Ss(e,{viewport$:t,main$:o,target$:n}).pipe(O(a=>i.next(a)),A(()=>i.complete()),m(a=>P({ref:e},a)))}function Ri({document$:e,viewport$:t}){e.pipe(b(()=>M(".md-ellipsis")),J(r=>mt(r).pipe(U(e.pipe(Ie(1))),g(o=>o),m(()=>r),Ee(1))),g(r=>r.offsetWidth{let o=r.innerText,n=r.closest("a")||r;return n.title=o,N("content.tooltips")?Xe(n,{viewport$:t}).pipe(U(e.pipe(Ie(1))),A(()=>n.removeAttribute("title"))):y})).subscribe(),N("content.tooltips")&&e.pipe(b(()=>M(".md-status")),J(r=>Xe(r,{viewport$:t}))).subscribe()}function Ii({document$:e,tablet$:t}){e.pipe(b(()=>M(".md-toggle--indeterminate")),O(r=>{r.indeterminate=!0,r.checked=!1}),J(r=>h(r,"change").pipe(Jr(()=>r.classList.contains("md-toggle--indeterminate")),m(()=>r))),te(t)).subscribe(([r,o])=>{r.classList.remove("md-toggle--indeterminate"),o&&(r.checked=!1)})}function Os(){return/(iPad|iPhone|iPod)/.test(navigator.userAgent)}function Fi({document$:e}){e.pipe(b(()=>M("[data-md-scrollfix]")),O(t=>t.removeAttribute("data-md-scrollfix")),g(Os),J(t=>h(t,"touchstart").pipe(m(()=>t)))).subscribe(t=>{let r=t.scrollTop;r===0?t.scrollTop=1:r+t.offsetHeight===t.scrollHeight&&(t.scrollTop=r-1)})}function ji({viewport$:e,tablet$:t}){z([Je("search"),t]).pipe(m(([r,o])=>r&&!o),b(r=>$(r).pipe(nt(r?400:100))),te(e)).subscribe(([r,{offset:{y:o}}])=>{if(r)document.body.setAttribute("data-md-scrolllock",""),document.body.style.top=`-${o}px`;else{let n=-1*parseInt(document.body.style.top,10);document.body.removeAttribute("data-md-scrolllock"),document.body.style.top="",n&&window.scrollTo(0,n)}})}Object.entries||(Object.entries=function(e){let t=[];for(let r of Object.keys(e))t.push([r,e[r]]);return t});Object.values||(Object.values=function(e){let t=[];for(let r of Object.keys(e))t.push(e[r]);return t});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(e,t){typeof e=="object"?(this.scrollLeft=e.left,this.scrollTop=e.top):(this.scrollLeft=e,this.scrollTop=t)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...e){let t=this.parentNode;if(t){e.length===0&&t.removeChild(this);for(let r=e.length-1;r>=0;r--){let o=e[r];typeof o=="string"?o=document.createTextNode(o):o.parentNode&&o.parentNode.removeChild(o),r?t.insertBefore(this.previousSibling,o):t.replaceChild(o,this)}}}));function Ls(){return location.protocol==="file:"?At(`${new URL("search/search_index.js",Or.base)}`).pipe(m(()=>__index),Z(1)):ze(new URL("search/search_index.json",Or.base))}document.documentElement.classList.remove("no-js");document.documentElement.classList.add("js");var ct=nn(),Qt=hn(),$t=gn(Qt),lo=dn(),ke=On(),Lr=Wt("(min-width: 960px)"),Ui=Wt("(min-width: 1220px)"),Wi=yn(),Or=Te(),Ni=document.forms.namedItem("search")?Ls():tt,mo=new T;ui({alert$:mo});fi({document$:ct});var fo=new T,Vi=Ht(Or.base);N("navigation.instant")&&vi({sitemap$:Vi,location$:Qt,viewport$:ke,progress$:fo}).subscribe(ct);var Di;((Di=Or.version)==null?void 0:Di.provider)==="mike"&&Ei({document$:ct});L(Qt,$t).pipe(nt(125)).subscribe(()=>{at("drawer",!1),at("search",!1)});lo.pipe(g(({mode:e})=>e==="global")).subscribe(e=>{switch(e.type){case"p":case",":let t=ue("link[rel=prev]");typeof t!="undefined"&&st(t);break;case"n":case".":let r=ue("link[rel=next]");typeof r!="undefined"&&st(r);break;case"Enter":let o=Ve();o instanceof HTMLLabelElement&&o.click()}});Ri({viewport$:ke,document$:ct});Ii({document$:ct,tablet$:Lr});Fi({document$:ct});ji({viewport$:ke,tablet$:Lr});var ft=ii(Ce("header"),{viewport$:ke}),Kt=ct.pipe(m(()=>Ce("main")),b(e=>ci(e,{viewport$:ke,header$:ft})),Z(1)),Ms=L(...me("consent").map(e=>_n(e,{target$:$t})),...me("dialog").map(e=>oi(e,{alert$:mo})),...me("header").map(e=>ai(e,{viewport$:ke,header$:ft,main$:Kt})),...me("palette").map(e=>pi(e)),...me("progress").map(e=>li(e,{progress$:fo})),...me("search").map(e=>Li(e,{index$:Ni,keyboard$:lo})),...me("source").map(e=>ki(e))),_s=H(()=>L(...me("announce").map(e=>Mn(e)),...me("content").map(e=>ri(e,{sitemap$:Vi,viewport$:ke,target$:$t,print$:Wi})),...me("content").map(e=>N("search.highlight")?Mi(e,{index$:Ni,location$:Qt}):y),...me("header-title").map(e=>si(e,{viewport$:ke,header$:ft})),...me("sidebar").map(e=>e.getAttribute("data-md-type")==="navigation"?eo(Ui,()=>po(e,{viewport$:ke,header$:ft,main$:Kt})):eo(Lr,()=>po(e,{viewport$:ke,header$:ft,main$:Kt}))),...me("tabs").map(e=>Hi(e,{viewport$:ke,header$:ft})),...me("toc").map(e=>$i(e,{viewport$:ke,header$:ft,main$:Kt,target$:$t})),...me("top").map(e=>Pi(e,{viewport$:ke,header$:ft,main$:Kt,target$:$t})))),zi=ct.pipe(b(()=>_s),Ne(Ms),Z(1));zi.subscribe();window.document$=ct;window.location$=Qt;window.target$=$t;window.keyboard$=lo;window.viewport$=ke;window.tablet$=Lr;window.screen$=Ui;window.print$=Wi;window.alert$=mo;window.progress$=fo;window.component$=zi;})(); diff --git a/assets/javascripts/glightbox.min.js b/assets/javascripts/glightbox.min.js new file mode 100644 index 00000000..614fb188 --- /dev/null +++ b/assets/javascripts/glightbox.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).GLightbox=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=e[s]=e[s]||[],l={all:n,evt:null,found:null};return t&&i&&P(n)>0&&o(n,(function(e,n){if(e.eventName==t&&e.fn.toString()==i.toString())return l.found=!0,l.evt=n,!1})),l}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=t.onElement,n=t.withCallback,s=t.avoidDuplicate,l=void 0===s||s,a=t.once,h=void 0!==a&&a,d=t.useCapture,c=void 0!==d&&d,u=arguments.length>2?arguments[2]:void 0,g=i||[];function v(e){T(n)&&n.call(u,e,this),h&&v.destroy()}return C(g)&&(g=document.querySelectorAll(g)),v.destroy=function(){o(g,(function(t){var i=r(t,e,v);i.found&&i.all.splice(i.evt,1),t.removeEventListener&&t.removeEventListener(e,v,c)}))},o(g,(function(t){var i=r(t,e,v);(t.addEventListener&&l&&!i.found||!l)&&(t.addEventListener(e,v,c),i.all.push({eventName:e,fn:v}))})),v}function h(e,t){o(t.split(" "),(function(t){return e.classList.add(t)}))}function d(e,t){o(t.split(" "),(function(t){return e.classList.remove(t)}))}function c(e,t){return e.classList.contains(t)}function u(e,t){for(;e!==document.body;){if(!(e=e.parentElement))return!1;if("function"==typeof e.matches?e.matches(t):e.msMatchesSelector(t))return e}}function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||""===t)return!1;if("none"==t)return T(i)&&i(),!1;var n=x(),s=t.split(" ");o(s,(function(t){h(e,"g"+t)})),a(n,{onElement:e,avoidDuplicate:!1,once:!0,withCallback:function(e,t){o(s,(function(e){d(t,"g"+e)})),T(i)&&i()}})}function v(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(""==t)return e.style.webkitTransform="",e.style.MozTransform="",e.style.msTransform="",e.style.OTransform="",e.style.transform="",!1;e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t,e.style.transform=t}function f(e){e.style.display="block"}function p(e){e.style.display="none"}function m(e){var t=document.createDocumentFragment(),i=document.createElement("div");for(i.innerHTML=e;i.firstChild;)t.appendChild(i.firstChild);return t}function y(){return{width:window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,height:window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}}function x(){var e,t=document.createElement("fakeelement"),i={animation:"animationend",OAnimation:"oAnimationEnd",MozAnimation:"animationend",WebkitAnimation:"webkitAnimationEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}function b(e,t,i,n){if(e())t();else{var s;i||(i=100);var l=setInterval((function(){e()&&(clearInterval(l),s&&clearTimeout(s),t())}),i);n&&(s=setTimeout((function(){clearInterval(l)}),n))}}function S(e,t,i){if(I(e))console.error("Inject assets error");else if(T(t)&&(i=t,t=!1),C(t)&&t in window)T(i)&&i();else{var n;if(-1!==e.indexOf(".css")){if((n=document.querySelectorAll('link[href="'+e+'"]'))&&n.length>0)return void(T(i)&&i());var s=document.getElementsByTagName("head")[0],l=s.querySelectorAll('link[rel="stylesheet"]'),o=document.createElement("link");return o.rel="stylesheet",o.type="text/css",o.href=e,o.media="all",l?s.insertBefore(o,l[0]):s.appendChild(o),void(T(i)&&i())}if((n=document.querySelectorAll('script[src="'+e+'"]'))&&n.length>0){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}}else{var r=document.createElement("script");r.type="text/javascript",r.src=e,r.onload=function(){if(T(i)){if(C(t))return b((function(){return void 0!==window[t]}),(function(){i()})),!1;i()}},document.body.appendChild(r)}}}function w(){return"navigator"in window&&window.navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i)}function T(e){return"function"==typeof e}function C(e){return"string"==typeof e}function k(e){return!(!e||!e.nodeType||1!=e.nodeType)}function E(e){return Array.isArray(e)}function A(e){return e&&e.length&&isFinite(e.length)}function L(t){return"object"===e(t)&&null!=t&&!T(t)&&!E(t)}function I(e){return null==e}function O(e,t){return null!==e&&hasOwnProperty.call(e,t)}function P(e){if(L(e)){if(e.keys)return e.keys().length;var t=0;for(var i in e)O(e,i)&&t++;return t}return e.length}function M(e){return!isNaN(parseFloat(e))&&isFinite(e)}function z(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,t=document.querySelectorAll(".gbtn[data-taborder]:not(.disabled)");if(!t.length)return!1;if(1==t.length)return t[0];"string"==typeof e&&(e=parseInt(e));var i=[];o(t,(function(e){i.push(e.getAttribute("data-taborder"))}));var n=Math.max.apply(Math,i.map((function(e){return parseInt(e)}))),s=e<0?1:e+1;s>n&&(s="1");var l=i.filter((function(e){return e>=parseInt(s)})),r=l.sort()[0];return document.querySelector('.gbtn[data-taborder="'.concat(r,'"]'))}function X(e){if(e.events.hasOwnProperty("keyboard"))return!1;e.events.keyboard=a("keydown",{onElement:window,withCallback:function(t,i){var n=(t=t||window.event).keyCode;if(9==n){var s=document.querySelector(".gbtn.focused");if(!s){var l=!(!document.activeElement||!document.activeElement.nodeName)&&document.activeElement.nodeName.toLocaleLowerCase();if("input"==l||"textarea"==l||"button"==l)return}t.preventDefault();var o=document.querySelectorAll(".gbtn[data-taborder]");if(!o||o.length<=0)return;if(!s){var r=z();return void(r&&(r.focus(),h(r,"focused")))}var a=z(s.getAttribute("data-taborder"));d(s,"focused"),a&&(a.focus(),h(a,"focused"))}39==n&&e.nextSlide(),37==n&&e.prevSlide(),27==n&&e.close()}})}function Y(e){return Math.sqrt(e.x*e.x+e.y*e.y)}function q(e,t){var i=function(e,t){var i=Y(e)*Y(t);if(0===i)return 0;var n=function(e,t){return e.x*t.x+e.y*t.y}(e,t)/i;return n>1&&(n=1),Math.acos(n)}(e,t);return function(e,t){return e.x*t.y-t.x*e.y}(e,t)>0&&(i*=-1),180*i/Math.PI}var N=function(){function e(i){t(this,e),this.handlers=[],this.el=i}return n(e,[{key:"add",value:function(e){this.handlers.push(e)}},{key:"del",value:function(e){e||(this.handlers=[]);for(var t=this.handlers.length;t>=0;t--)this.handlers[t]===e&&this.handlers.splice(t,1)}},{key:"dispatch",value:function(){for(var e=0,t=this.handlers.length;e=0)console.log("ignore drag for this touched element",e.target.nodeName.toLowerCase());else{this.now=Date.now(),this.x1=e.touches[0].pageX,this.y1=e.touches[0].pageY,this.delta=this.now-(this.last||this.now),this.touchStart.dispatch(e,this.element),null!==this.preTapPosition.x&&(this.isDoubleTap=this.delta>0&&this.delta<=250&&Math.abs(this.preTapPosition.x-this.x1)<30&&Math.abs(this.preTapPosition.y-this.y1)<30,this.isDoubleTap&&clearTimeout(this.singleTapTimeout)),this.preTapPosition.x=this.x1,this.preTapPosition.y=this.y1,this.last=this.now;var t=this.preV;if(e.touches.length>1){this._cancelLongTap(),this._cancelSingleTap();var i={x:e.touches[1].pageX-this.x1,y:e.touches[1].pageY-this.y1};t.x=i.x,t.y=i.y,this.pinchStartLen=Y(t),this.multipointStart.dispatch(e,this.element)}this._preventTap=!1,this.longTapTimeout=setTimeout(function(){this.longTap.dispatch(e,this.element),this._preventTap=!0}.bind(this),750)}}}},{key:"move",value:function(e){if(e.touches){var t=this.preV,i=e.touches.length,n=e.touches[0].pageX,s=e.touches[0].pageY;if(this.isDoubleTap=!1,i>1){var l=e.touches[1].pageX,o=e.touches[1].pageY,r={x:e.touches[1].pageX-n,y:e.touches[1].pageY-s};null!==t.x&&(this.pinchStartLen>0&&(e.zoom=Y(r)/this.pinchStartLen,this.pinch.dispatch(e,this.element)),e.angle=q(r,t),this.rotate.dispatch(e,this.element)),t.x=r.x,t.y=r.y,null!==this.x2&&null!==this.sx2?(e.deltaX=(n-this.x2+l-this.sx2)/2,e.deltaY=(s-this.y2+o-this.sy2)/2):(e.deltaX=0,e.deltaY=0),this.twoFingerPressMove.dispatch(e,this.element),this.sx2=l,this.sy2=o}else{if(null!==this.x2){e.deltaX=n-this.x2,e.deltaY=s-this.y2;var a=Math.abs(this.x1-this.x2),h=Math.abs(this.y1-this.y2);(a>10||h>10)&&(this._preventTap=!0)}else e.deltaX=0,e.deltaY=0;this.pressMove.dispatch(e,this.element)}this.touchMove.dispatch(e,this.element),this._cancelLongTap(),this.x2=n,this.y2=s,i>1&&e.preventDefault()}}},{key:"end",value:function(e){if(e.changedTouches){this._cancelLongTap();var t=this;e.touches.length<2&&(this.multipointEnd.dispatch(e,this.element),this.sx2=this.sy2=null),this.x2&&Math.abs(this.x1-this.x2)>30||this.y2&&Math.abs(this.y1-this.y2)>30?(e.direction=this._swipeDirection(this.x1,this.x2,this.y1,this.y2),this.swipeTimeout=setTimeout((function(){t.swipe.dispatch(e,t.element)}),0)):(this.tapTimeout=setTimeout((function(){t._preventTap||t.tap.dispatch(e,t.element),t.isDoubleTap&&(t.doubleTap.dispatch(e,t.element),t.isDoubleTap=!1)}),0),t.isDoubleTap||(t.singleTapTimeout=setTimeout((function(){t.singleTap.dispatch(e,t.element)}),250))),this.touchEnd.dispatch(e,this.element),this.preV.x=0,this.preV.y=0,this.zoom=1,this.pinchStartLen=null,this.x1=this.x2=this.y1=this.y2=null}}},{key:"cancelAll",value:function(){this._preventTap=!0,clearTimeout(this.singleTapTimeout),clearTimeout(this.tapTimeout),clearTimeout(this.longTapTimeout),clearTimeout(this.swipeTimeout)}},{key:"cancel",value:function(e){this.cancelAll(),this.touchCancel.dispatch(e,this.element)}},{key:"_cancelLongTap",value:function(){clearTimeout(this.longTapTimeout)}},{key:"_cancelSingleTap",value:function(){clearTimeout(this.singleTapTimeout)}},{key:"_swipeDirection",value:function(e,t,i,n){return Math.abs(e-t)>=Math.abs(i-n)?e-t>0?"Left":"Right":i-n>0?"Up":"Down"}},{key:"on",value:function(e,t){this[e]&&this[e].add(t)}},{key:"off",value:function(e,t){this[e]&&this[e].del(t)}},{key:"destroy",value:function(){return this.singleTapTimeout&&clearTimeout(this.singleTapTimeout),this.tapTimeout&&clearTimeout(this.tapTimeout),this.longTapTimeout&&clearTimeout(this.longTapTimeout),this.swipeTimeout&&clearTimeout(this.swipeTimeout),this.element.removeEventListener("touchstart",this.start),this.element.removeEventListener("touchmove",this.move),this.element.removeEventListener("touchend",this.end),this.element.removeEventListener("touchcancel",this.cancel),this.rotate.del(),this.touchStart.del(),this.multipointStart.del(),this.multipointEnd.del(),this.pinch.del(),this.swipe.del(),this.tap.del(),this.doubleTap.del(),this.longTap.del(),this.singleTap.del(),this.pressMove.del(),this.twoFingerPressMove.del(),this.touchMove.del(),this.touchEnd.del(),this.touchCancel.del(),this.preV=this.pinchStartLen=this.zoom=this.isDoubleTap=this.delta=this.last=this.now=this.tapTimeout=this.singleTapTimeout=this.longTapTimeout=this.swipeTimeout=this.x1=this.x2=this.y1=this.y2=this.preTapPosition=this.rotate=this.touchStart=this.multipointStart=this.multipointEnd=this.pinch=this.swipe=this.tap=this.doubleTap=this.longTap=this.singleTap=this.pressMove=this.touchMove=this.touchEnd=this.touchCancel=this.twoFingerPressMove=null,window.removeEventListener("scroll",this._cancelAllHandler),null}}]),e}();function W(e){var t=function(){var e,t=document.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(e in i)if(void 0!==t.style[e])return i[e]}(),i=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,n=c(e,"gslide-media")?e:e.querySelector(".gslide-media"),s=u(n,".ginner-container"),l=e.querySelector(".gslide-description");i>769&&(n=s),h(n,"greset"),v(n,"translate3d(0, 0, 0)"),a(t,{onElement:n,once:!0,withCallback:function(e,t){d(n,"greset")}}),n.style.opacity="",l&&(l.style.opacity="")}function B(e){if(e.events.hasOwnProperty("touch"))return!1;var t,i,n,s=y(),l=s.width,o=s.height,r=!1,a=null,g=null,f=null,p=!1,m=1,x=1,b=!1,S=!1,w=null,T=null,C=null,k=null,E=0,A=0,L=!1,I=!1,O={},P={},M=0,z=0,X=document.getElementById("glightbox-slider"),Y=document.querySelector(".goverlay"),q=new _(X,{touchStart:function(t){if(r=!0,(c(t.targetTouches[0].target,"ginner-container")||u(t.targetTouches[0].target,".gslide-desc")||"a"==t.targetTouches[0].target.nodeName.toLowerCase())&&(r=!1),u(t.targetTouches[0].target,".gslide-inline")&&!c(t.targetTouches[0].target.parentNode,"gslide-inline")&&(r=!1),r){if(P=t.targetTouches[0],O.pageX=t.targetTouches[0].pageX,O.pageY=t.targetTouches[0].pageY,M=t.targetTouches[0].clientX,z=t.targetTouches[0].clientY,a=e.activeSlide,g=a.querySelector(".gslide-media"),n=a.querySelector(".gslide-inline"),f=null,c(g,"gslide-image")&&(f=g.querySelector("img")),(window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth)>769&&(g=a.querySelector(".ginner-container")),d(Y,"greset"),t.pageX>20&&t.pageXo){var a=O.pageX-P.pageX;if(Math.abs(a)<=13)return!1}p=!0;var h,d=s.targetTouches[0].clientX,c=s.targetTouches[0].clientY,u=M-d,m=z-c;if(Math.abs(u)>Math.abs(m)?(L=!1,I=!0):(I=!1,L=!0),t=P.pageX-O.pageX,E=100*t/l,i=P.pageY-O.pageY,A=100*i/o,L&&f&&(h=1-Math.abs(i)/o,Y.style.opacity=h,e.settings.touchFollowAxis&&(E=0)),I&&(h=1-Math.abs(t)/l,g.style.opacity=h,e.settings.touchFollowAxis&&(A=0)),!f)return v(g,"translate3d(".concat(E,"%, 0, 0)"));v(g,"translate3d(".concat(E,"%, ").concat(A,"%, 0)"))}},touchEnd:function(){if(r){if(p=!1,S||b)return C=w,void(k=T);var t=Math.abs(parseInt(A)),i=Math.abs(parseInt(E));if(!(t>29&&f))return t<29&&i<25?(h(Y,"greset"),Y.style.opacity=1,W(g)):void 0;e.close()}},multipointEnd:function(){setTimeout((function(){b=!1}),50)},multipointStart:function(){b=!0,m=x||1},pinch:function(e){if(!f||p)return!1;b=!0,f.scaleX=f.scaleY=m*e.zoom;var t=m*e.zoom;if(S=!0,t<=1)return S=!1,t=1,k=null,C=null,w=null,T=null,void f.setAttribute("style","");t>4.5&&(t=4.5),f.style.transform="scale3d(".concat(t,", ").concat(t,", 1)"),x=t},pressMove:function(e){if(S&&!b){var t=P.pageX-O.pageX,i=P.pageY-O.pageY;C&&(t+=C),k&&(i+=k),w=t,T=i;var n="translate3d(".concat(t,"px, ").concat(i,"px, 0)");x&&(n+=" scale3d(".concat(x,", ").concat(x,", 1)")),v(f,n)}},swipe:function(t){if(!S)if(b)b=!1;else{if("Left"==t.direction){if(e.index==e.elements.length-1)return W(g);e.nextSlide()}if("Right"==t.direction){if(0==e.index)return W(g);e.prevSlide()}}}});e.events.touch=q}var H=function(){function e(i,n){var s=this,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(t(this,e),this.img=i,this.slide=n,this.onclose=l,this.img.setZoomEvents)return!1;this.active=!1,this.zoomedIn=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.img.addEventListener("mousedown",(function(e){return s.dragStart(e)}),!1),this.img.addEventListener("mouseup",(function(e){return s.dragEnd(e)}),!1),this.img.addEventListener("mousemove",(function(e){return s.drag(e)}),!1),this.img.addEventListener("click",(function(e){return s.slide.classList.contains("dragging-nav")?(s.zoomOut(),!1):s.zoomedIn?void(s.zoomedIn&&!s.dragging&&s.zoomOut()):s.zoomIn()}),!1),this.img.setZoomEvents=!0}return n(e,[{key:"zoomIn",value:function(){var e=this.widowWidth();if(!(this.zoomedIn||e<=768)){var t=this.img;if(t.setAttribute("data-style",t.getAttribute("style")),t.style.maxWidth=t.naturalWidth+"px",t.style.maxHeight=t.naturalHeight+"px",t.naturalWidth>e){var i=e/2-t.naturalWidth/2;this.setTranslate(this.img.parentNode,i,0)}this.slide.classList.add("zoomed"),this.zoomedIn=!0}}},{key:"zoomOut",value:function(){this.img.parentNode.setAttribute("style",""),this.img.setAttribute("style",this.img.getAttribute("data-style")),this.slide.classList.remove("zoomed"),this.zoomedIn=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.onclose&&"function"==typeof this.onclose&&this.onclose()}},{key:"dragStart",value:function(e){e.preventDefault(),this.zoomedIn?("touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset),e.target===this.img&&(this.active=!0,this.img.classList.add("dragging"))):this.active=!1}},{key:"dragEnd",value:function(e){var t=this;e.preventDefault(),this.initialX=this.currentX,this.initialY=this.currentY,this.active=!1,setTimeout((function(){t.dragging=!1,t.img.isDragging=!1,t.img.classList.remove("dragging")}),100)}},{key:"drag",value:function(e){this.active&&(e.preventDefault(),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.img.isDragging=!0,this.dragging=!0,this.setTranslate(this.img,this.currentX,this.currentY))}},{key:"onMove",value:function(e){if(this.zoomedIn){var t=e.clientX-this.img.naturalWidth/2,i=e.clientY-this.img.naturalHeight/2;this.setTranslate(this.img,t,i)}}},{key:"setTranslate",value:function(e,t,i){e.style.transform="translate3d("+t+"px, "+i+"px, 0)"}},{key:"widowWidth",value:function(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth}}]),e}(),V=function(){function e(){var i=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e);var s=n.dragEl,l=n.toleranceX,o=void 0===l?40:l,r=n.toleranceY,a=void 0===r?65:r,h=n.slide,d=void 0===h?null:h,c=n.instance,u=void 0===c?null:c;this.el=s,this.active=!1,this.dragging=!1,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.direction=null,this.lastDirection=null,this.toleranceX=o,this.toleranceY=a,this.toleranceReached=!1,this.dragContainer=this.el,this.slide=d,this.instance=u,this.el.addEventListener("mousedown",(function(e){return i.dragStart(e)}),!1),this.el.addEventListener("mouseup",(function(e){return i.dragEnd(e)}),!1),this.el.addEventListener("mousemove",(function(e){return i.drag(e)}),!1)}return n(e,[{key:"dragStart",value:function(e){if(this.slide.classList.contains("zoomed"))this.active=!1;else{"touchstart"===e.type?(this.initialX=e.touches[0].clientX-this.xOffset,this.initialY=e.touches[0].clientY-this.yOffset):(this.initialX=e.clientX-this.xOffset,this.initialY=e.clientY-this.yOffset);var t=e.target.nodeName.toLowerCase();e.target.classList.contains("nodrag")||u(e.target,".nodrag")||-1!==["input","select","textarea","button","a"].indexOf(t)?this.active=!1:(e.preventDefault(),(e.target===this.el||"img"!==t&&u(e.target,".gslide-inline"))&&(this.active=!0,this.el.classList.add("dragging"),this.dragContainer=u(e.target,".ginner-container")))}}},{key:"dragEnd",value:function(e){var t=this;e&&e.preventDefault(),this.initialX=0,this.initialY=0,this.currentX=null,this.currentY=null,this.initialX=null,this.initialY=null,this.xOffset=0,this.yOffset=0,this.active=!1,this.doSlideChange&&(this.instance.preventOutsideClick=!0,"right"==this.doSlideChange&&this.instance.prevSlide(),"left"==this.doSlideChange&&this.instance.nextSlide()),this.doSlideClose&&this.instance.close(),this.toleranceReached||this.setTranslate(this.dragContainer,0,0,!0),setTimeout((function(){t.instance.preventOutsideClick=!1,t.toleranceReached=!1,t.lastDirection=null,t.dragging=!1,t.el.isDragging=!1,t.el.classList.remove("dragging"),t.slide.classList.remove("dragging-nav"),t.dragContainer.style.transform="",t.dragContainer.style.transition=""}),100)}},{key:"drag",value:function(e){if(this.active){e.preventDefault(),this.slide.classList.add("dragging-nav"),"touchmove"===e.type?(this.currentX=e.touches[0].clientX-this.initialX,this.currentY=e.touches[0].clientY-this.initialY):(this.currentX=e.clientX-this.initialX,this.currentY=e.clientY-this.initialY),this.xOffset=this.currentX,this.yOffset=this.currentY,this.el.isDragging=!0,this.dragging=!0,this.doSlideChange=!1,this.doSlideClose=!1;var t=Math.abs(this.currentX),i=Math.abs(this.currentY);if(t>0&&t>=Math.abs(this.currentY)&&(!this.lastDirection||"x"==this.lastDirection)){this.yOffset=0,this.lastDirection="x",this.setTranslate(this.dragContainer,this.currentX,0);var n=this.shouldChange();if(!this.instance.settings.dragAutoSnap&&n&&(this.doSlideChange=n),this.instance.settings.dragAutoSnap&&n)return this.instance.preventOutsideClick=!0,this.toleranceReached=!0,this.active=!1,this.instance.preventOutsideClick=!0,this.dragEnd(null),"right"==n&&this.instance.prevSlide(),void("left"==n&&this.instance.nextSlide())}if(this.toleranceY>0&&i>0&&i>=t&&(!this.lastDirection||"y"==this.lastDirection)){this.xOffset=0,this.lastDirection="y",this.setTranslate(this.dragContainer,0,this.currentY);var s=this.shouldClose();return!this.instance.settings.dragAutoSnap&&s&&(this.doSlideClose=!0),void(this.instance.settings.dragAutoSnap&&s&&this.instance.close())}}}},{key:"shouldChange",value:function(){var e=!1;if(Math.abs(this.currentX)>=this.toleranceX){var t=this.currentX>0?"right":"left";("left"==t&&this.slide!==this.slide.parentNode.lastChild||"right"==t&&this.slide!==this.slide.parentNode.firstChild)&&(e=t)}return e}},{key:"shouldClose",value:function(){var e=!1;return Math.abs(this.currentY)>=this.toleranceY&&(e=!0),e}},{key:"setTranslate",value:function(e,t,i){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];e.style.transition=n?"all .2s ease":"",e.style.transform="translate3d(".concat(t,"px, ").concat(i,"px, 0)")}}]),e}();function j(e,t,i,n){var s=e.querySelector(".gslide-media"),l=new Image,o="gSlideTitle_"+i,r="gSlideDesc_"+i;l.addEventListener("load",(function(){T(n)&&n()}),!1),l.src=t.href,""!=t.sizes&&""!=t.srcset&&(l.sizes=t.sizes,l.srcset=t.srcset),l.alt="",I(t.alt)||""===t.alt||(l.alt=t.alt),""!==t.title&&l.setAttribute("aria-labelledby",o),""!==t.description&&l.setAttribute("aria-describedby",r),t.hasOwnProperty("_hasCustomWidth")&&t._hasCustomWidth&&(l.style.width=t.width),t.hasOwnProperty("_hasCustomHeight")&&t._hasCustomHeight&&(l.style.height=t.height),s.insertBefore(l,s.firstChild)}function F(e,t,i,n){var s=this,l=e.querySelector(".ginner-container"),o="gvideo"+i,r=e.querySelector(".gslide-media"),a=this.getAllPlayers();h(l,"gvideo-container"),r.insertBefore(m('
'),r.firstChild);var d=e.querySelector(".gvideo-wrapper");S(this.settings.plyr.css,"Plyr");var c=t.href,u=location.protocol.replace(":",""),g="",v="",f=!1;"file"==u&&(u="http"),r.style.maxWidth=t.width,S(this.settings.plyr.js,"Plyr",(function(){if(c.match(/vimeo\.com\/([0-9]*)/)){var l=/vimeo.*\/(\d+)/i.exec(c);g="vimeo",v=l[1]}if(c.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||c.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||c.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/)){var r=function(e){var t="";t=void 0!==(e=e.replace(/(>|<)/gi,"").split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/))[2]?(t=e[2].split(/[^0-9a-z_\-]/i))[0]:e;return t}(c);g="youtube",v=r}if(null!==c.match(/\.(mp4|ogg|webm|mov)$/)){g="local";var u='")}var w=f||m('
'));h(d,"".concat(g,"-video gvideo")),d.appendChild(w),d.setAttribute("data-id",o),d.setAttribute("data-index",i);var C=O(s.settings.plyr,"config")?s.settings.plyr.config:{},k=new Plyr("#"+o,C);k.on("ready",(function(e){var t=e.detail.plyr;a[o]=t,T(n)&&n()})),b((function(){return e.querySelector("iframe")&&"true"==e.querySelector("iframe").dataset.ready}),(function(){s.resize(e)})),k.on("enterfullscreen",R),k.on("exitfullscreen",R)}))}function R(e){var t=u(e.target,".gslide-media");"enterfullscreen"==e.type&&h(t,"fullscreen"),"exitfullscreen"==e.type&&d(t,"fullscreen")}function G(e,t,i,n){var s,l=this,o=e.querySelector(".gslide-media"),r=!(!O(t,"href")||!t.href)&&t.href.split("#").pop().trim(),d=!(!O(t,"content")||!t.content)&&t.content;if(d&&(C(d)&&(s=m('
'.concat(d,"
"))),k(d))){"none"==d.style.display&&(d.style.display="block");var c=document.createElement("div");c.className="ginlined-content",c.appendChild(d),s=c}if(r){var u=document.getElementById(r);if(!u)return!1;var g=u.cloneNode(!0);g.style.height=t.height,g.style.maxWidth=t.width,h(g,"ginlined-content"),s=g}if(!s)return console.error("Unable to append inline slide content",t),!1;o.style.height=t.height,o.style.width=t.width,o.appendChild(s),this.events["inlineclose"+r]=a("click",{onElement:o.querySelectorAll(".gtrigger-close"),withCallback:function(e){e.preventDefault(),l.close()}}),T(n)&&n()}function Z(e,t,i,n){var s=e.querySelector(".gslide-media"),l=function(e){var t=e.url,i=e.allow,n=e.callback,s=e.appendTo,l=document.createElement("iframe");return l.className="vimeo-video gvideo",l.src=t,l.style.width="100%",l.style.height="100%",i&&l.setAttribute("allow",i),l.onload=function(){h(l,"node-ready"),T(n)&&n()},s&&s.appendChild(l),l}({url:t.href,callback:n});s.parentNode.style.maxWidth=t.width,s.parentNode.style.height=t.height,s.appendChild(l)}var $=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.defaults={href:"",sizes:"",srcset:"",title:"",type:"",description:"",alt:"",descPosition:"bottom",effect:"",width:"",height:"",content:!1,zoomable:!0,draggable:!0},L(i)&&(this.defaults=l(this.defaults,i))}return n(e,[{key:"sourceType",value:function(e){var t=e;if(null!==(e=e.toLowerCase()).match(/\.(jpeg|jpg|jpe|gif|png|apn|webp|avif|svg)/))return"image";if(e.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/)||e.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/)||e.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/))return"video";if(e.match(/vimeo\.com\/([0-9]*)/))return"video";if(null!==e.match(/\.(mp4|ogg|webm|mov)/))return"video";if(null!==e.match(/\.(mp3|wav|wma|aac|ogg)/))return"audio";if(e.indexOf("#")>-1&&""!==t.split("#").pop().trim())return"inline";return e.indexOf("goajax=true")>-1?"ajax":"external"}},{key:"parseConfig",value:function(e,t){var i=this,n=l({descPosition:t.descPosition},this.defaults);if(L(e)&&!k(e)){O(e,"type")||(O(e,"content")&&e.content?e.type="inline":O(e,"href")&&(e.type=this.sourceType(e.href)));var s=l(n,e);return this.setSize(s,t),s}var r="",a=e.getAttribute("data-glightbox"),h=e.nodeName.toLowerCase();if("a"===h&&(r=e.href),"img"===h&&(r=e.src,n.alt=e.alt),n.href=r,o(n,(function(s,l){O(t,l)&&"width"!==l&&(n[l]=t[l]);var o=e.dataset[l];I(o)||(n[l]=i.sanitizeValue(o))})),n.content&&(n.type="inline"),!n.type&&r&&(n.type=this.sourceType(r)),I(a)){if(!n.title&&"a"==h){var d=e.title;I(d)||""===d||(n.title=d)}if(!n.title&&"img"==h){var c=e.alt;I(c)||""===c||(n.title=c)}}else{var u=[];o(n,(function(e,t){u.push(";\\s?"+t)})),u=u.join("\\s?:|"),""!==a.trim()&&o(n,(function(e,t){var s=a,l=new RegExp("s?"+t+"s?:s?(.*?)("+u+"s?:|$)"),o=s.match(l);if(o&&o.length&&o[1]){var r=o[1].trim().replace(/;\s*$/,"");n[t]=i.sanitizeValue(r)}}))}if(n.description&&"."===n.description.substring(0,1)){var g;try{g=document.querySelector(n.description).innerHTML}catch(e){if(!(e instanceof DOMException))throw e}g&&(n.description=g)}if(!n.description){var v=e.querySelector(".glightbox-desc");v&&(n.description=v.innerHTML)}return this.setSize(n,t,e),this.slideConfig=n,n}},{key:"setSize",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n="video"==e.type?this.checkSize(t.videosWidth):this.checkSize(t.width),s=this.checkSize(t.height);return e.width=O(e,"width")&&""!==e.width?this.checkSize(e.width):n,e.height=O(e,"height")&&""!==e.height?this.checkSize(e.height):s,i&&"image"==e.type&&(e._hasCustomWidth=!!i.dataset.width,e._hasCustomHeight=!!i.dataset.height),e}},{key:"checkSize",value:function(e){return M(e)?"".concat(e,"px"):e}},{key:"sanitizeValue",value:function(e){return"true"!==e&&"false"!==e?e:"true"===e}}]),e}(),U=function(){function e(i,n,s){t(this,e),this.element=i,this.instance=n,this.index=s}return n(e,[{key:"setContent",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(c(t,"loaded"))return!1;var n=this.instance.settings,s=this.slideConfig,l=w();T(n.beforeSlideLoad)&&n.beforeSlideLoad({index:this.index,slide:t,player:!1});var o=s.type,r=s.descPosition,a=t.querySelector(".gslide-media"),d=t.querySelector(".gslide-title"),u=t.querySelector(".gslide-desc"),g=t.querySelector(".gdesc-inner"),v=i,f="gSlideTitle_"+this.index,p="gSlideDesc_"+this.index;if(T(n.afterSlideLoad)&&(v=function(){T(i)&&i(),n.afterSlideLoad({index:e.index,slide:t,player:e.instance.getSlidePlayerInstance(e.index)})}),""==s.title&&""==s.description?g&&g.parentNode.parentNode.removeChild(g.parentNode):(d&&""!==s.title?(d.id=f,d.innerHTML=s.title):d.parentNode.removeChild(d),u&&""!==s.description?(u.id=p,l&&n.moreLength>0?(s.smallDescription=this.slideShortDesc(s.description,n.moreLength,n.moreText),u.innerHTML=s.smallDescription,this.descriptionEvents(u,s)):u.innerHTML=s.description):u.parentNode.removeChild(u),h(a.parentNode,"desc-".concat(r)),h(g.parentNode,"description-".concat(r))),h(a,"gslide-".concat(o)),h(t,"loaded"),"video"!==o){if("external"!==o)return"inline"===o?(G.apply(this.instance,[t,s,this.index,v]),void(s.draggable&&new V({dragEl:t.querySelector(".gslide-inline"),toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:this.instance}))):void("image"!==o?T(v)&&v():j(t,s,this.index,(function(){var i=t.querySelector("img");s.draggable&&new V({dragEl:i,toleranceX:n.dragToleranceX,toleranceY:n.dragToleranceY,slide:t,instance:e.instance}),s.zoomable&&i.naturalWidth>i.offsetWidth&&(h(i,"zoomable"),new H(i,t,(function(){e.instance.resize()}))),T(v)&&v()})));Z.apply(this,[t,s,this.index,v])}else F.apply(this.instance,[t,s,this.index,v])}},{key:"slideShortDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:50,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=document.createElement("div");n.innerHTML=e;var s=n.innerText,l=i;if((e=s.trim()).length<=t)return e;var o=e.substr(0,t-1);return l?(n=null,o+'... '+i+""):o}},{key:"descriptionEvents",value:function(e,t){var i=this,n=e.querySelector(".desc-more");if(!n)return!1;a("click",{onElement:n,withCallback:function(e,n){e.preventDefault();var s=document.body,l=u(n,".gslide-desc");if(!l)return!1;l.innerHTML=t.description,h(s,"gdesc-open");var o=a("click",{onElement:[s,u(l,".gslide-description")],withCallback:function(e,n){"a"!==e.target.nodeName.toLowerCase()&&(d(s,"gdesc-open"),h(s,"gdesc-closed"),l.innerHTML=t.smallDescription,i.descriptionEvents(l,t),setTimeout((function(){d(s,"gdesc-closed")}),400),o.destroy())}})}})}},{key:"create",value:function(){return m(this.instance.settings.slideHTML)}},{key:"getConfig",value:function(){k(this.element)||this.element.hasOwnProperty("draggable")||(this.element.draggable=this.instance.settings.draggable);var e=new $(this.instance.settings.slideExtraAttributes);return this.slideConfig=e.parseConfig(this.element,this.instance.settings),this.slideConfig}}]),e}(),J=w(),K=null!==w()||void 0!==document.createTouch||"ontouchstart"in window||"onmsgesturechange"in window||navigator.msMaxTouchPoints,Q=document.getElementsByTagName("html")[0],ee={selector:".glightbox",elements:null,skin:"clean",theme:"clean",closeButton:!0,startAt:null,autoplayVideos:!0,autofocusVideos:!0,descPosition:"bottom",width:"900px",height:"506px",videosWidth:"960px",beforeSlideChange:null,afterSlideChange:null,beforeSlideLoad:null,afterSlideLoad:null,slideInserted:null,slideRemoved:null,slideExtraAttributes:null,onOpen:null,onClose:null,loop:!1,zoomable:!0,draggable:!0,dragAutoSnap:!1,dragToleranceX:40,dragToleranceY:65,preload:!0,oneSlidePerOpen:!1,touchNavigation:!0,touchFollowAxis:!0,keyboardNavigation:!0,closeOnOutsideClick:!0,plugins:!1,plyr:{css:"https://cdn.plyr.io/3.6.8/plyr.css",js:"https://cdn.plyr.io/3.6.8/plyr.js",config:{ratio:"16:9",fullscreen:{enabled:!0,iosNative:!0},youtube:{noCookie:!0,rel:0,showinfo:0,iv_load_policy:3},vimeo:{byline:!1,portrait:!1,title:!1,transparent:!1}}},openEffect:"zoom",closeEffect:"zoom",slideEffect:"slide",moreText:"See more",moreLength:60,cssEfects:{fade:{in:"fadeIn",out:"fadeOut"},zoom:{in:"zoomIn",out:"zoomOut"},slide:{in:"slideInRight",out:"slideOutLeft"},slideBack:{in:"slideInLeft",out:"slideOutRight"},none:{in:"none",out:"none"}},svg:{close:'',next:' ',prev:''},slideHTML:'
\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n
\n
',lightboxHTML:''},te=function(){function e(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};t(this,e),this.customOptions=i,this.settings=l(ee,i),this.effectsClasses=this.getAnimationClasses(),this.videoPlayers={},this.apiEvents=[],this.fullElementsList=!1}return n(e,[{key:"init",value:function(){var e=this,t=this.getSelector();t&&(this.baseEvents=a("click",{onElement:t,withCallback:function(t,i){t.preventDefault(),e.open(i)}})),this.elements=this.getElements()}},{key:"open",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(0==this.elements.length)return!1;this.activeSlide=null,this.prevActiveSlideIndex=null,this.prevActiveSlide=null;var i=M(t)?t:this.settings.startAt;if(k(e)){var n=e.getAttribute("data-gallery");n&&(this.fullElementsList=this.elements,this.elements=this.getGalleryElements(this.elements,n)),I(i)&&(i=this.getElementIndex(e))<0&&(i=0)}M(i)||(i=0),this.build(),g(this.overlay,"none"==this.settings.openEffect?"none":this.settings.cssEfects.fade.in);var s=document.body,l=window.innerWidth-document.documentElement.clientWidth;if(l>0){var o=document.createElement("style");o.type="text/css",o.className="gcss-styles",o.innerText=".gscrollbar-fixer {margin-right: ".concat(l,"px}"),document.head.appendChild(o),h(s,"gscrollbar-fixer")}h(s,"glightbox-open"),h(Q,"glightbox-open"),J&&(h(document.body,"glightbox-mobile"),this.settings.slideEffect="slide"),this.showSlide(i,!0),1==this.elements.length?(h(this.prevButton,"glightbox-button-hidden"),h(this.nextButton,"glightbox-button-hidden")):(d(this.prevButton,"glightbox-button-hidden"),d(this.nextButton,"glightbox-button-hidden")),this.lightboxOpen=!0,this.trigger("open"),T(this.settings.onOpen)&&this.settings.onOpen(),K&&this.settings.touchNavigation&&B(this),this.settings.keyboardNavigation&&X(this)}},{key:"openAt",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;this.open(null,e)}},{key:"showSlide",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];f(this.loader),this.index=parseInt(t);var n=this.slidesContainer.querySelector(".current");n&&d(n,"current"),this.slideAnimateOut();var s=this.slidesContainer.querySelectorAll(".gslide")[t];if(c(s,"loaded"))this.slideAnimateIn(s,i),p(this.loader);else{f(this.loader);var l=this.elements[t],o={index:this.index,slide:s,slideNode:s,slideConfig:l.slideConfig,slideIndex:this.index,trigger:l.node,player:null};this.trigger("slide_before_load",o),l.instance.setContent(s,(function(){p(e.loader),e.resize(),e.slideAnimateIn(s,i),e.trigger("slide_after_load",o)}))}this.slideDescription=s.querySelector(".gslide-description"),this.slideDescriptionContained=this.slideDescription&&c(this.slideDescription.parentNode,"gslide-media"),this.settings.preload&&(this.preloadSlide(t+1),this.preloadSlide(t-1)),this.updateNavigationClasses(),this.activeSlide=s}},{key:"preloadSlide",value:function(e){var t=this;if(e<0||e>this.elements.length-1)return!1;if(I(this.elements[e]))return!1;var i=this.slidesContainer.querySelectorAll(".gslide")[e];if(c(i,"loaded"))return!1;var n=this.elements[e],s=n.type,l={index:e,slide:i,slideNode:i,slideConfig:n.slideConfig,slideIndex:e,trigger:n.node,player:null};this.trigger("slide_before_load",l),"video"==s||"external"==s?setTimeout((function(){n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}),200):n.instance.setContent(i,(function(){t.trigger("slide_after_load",l)}))}},{key:"prevSlide",value:function(){this.goToSlide(this.index-1)}},{key:"nextSlide",value:function(){this.goToSlide(this.index+1)}},{key:"goToSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(this.prevActiveSlide=this.activeSlide,this.prevActiveSlideIndex=this.index,!this.loop()&&(e<0||e>this.elements.length-1))return!1;e<0?e=this.elements.length-1:e>=this.elements.length&&(e=0),this.showSlide(e)}},{key:"insertSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;t<0&&(t=this.elements.length);var i=new U(e,this,t),n=i.getConfig(),s=l({},n),o=i.create(),r=this.elements.length-1;s.index=t,s.node=!1,s.instance=i,s.slideConfig=n,this.elements.splice(t,0,s);var a=null,h=null;if(this.slidesContainer){if(t>r)this.slidesContainer.appendChild(o);else{var d=this.slidesContainer.querySelectorAll(".gslide")[t];this.slidesContainer.insertBefore(o,d)}(this.settings.preload&&0==this.index&&0==t||this.index-1==t||this.index+1==t)&&this.preloadSlide(t),0==this.index&&0==t&&(this.index=1),this.updateNavigationClasses(),a=this.slidesContainer.querySelectorAll(".gslide")[t],h=this.getSlidePlayerInstance(t),s.slideNode=a}this.trigger("slide_inserted",{index:t,slide:a,slideNode:a,slideConfig:n,slideIndex:t,trigger:null,player:h}),T(this.settings.slideInserted)&&this.settings.slideInserted({index:t,slide:a,player:h})}},{key:"removeSlide",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;if(e<0||e>this.elements.length-1)return!1;var t=this.slidesContainer&&this.slidesContainer.querySelectorAll(".gslide")[e];t&&(this.getActiveSlideIndex()==e&&(e==this.elements.length-1?this.prevSlide():this.nextSlide()),t.parentNode.removeChild(t)),this.elements.splice(e,1),this.trigger("slide_removed",e),T(this.settings.slideRemoved)&&this.settings.slideRemoved(e)}},{key:"slideAnimateIn",value:function(e,t){var i=this,n=e.querySelector(".gslide-media"),s=e.querySelector(".gslide-description"),l={index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlide,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},o={index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideConfig:this.elements[this.index].slideConfig,slideIndex:this.index,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)};if(n.offsetWidth>0&&s&&(p(s),s.style.display=""),d(e,this.effectsClasses),t)g(e,this.settings.cssEfects[this.settings.openEffect].in,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}));else{var r=this.settings.slideEffect,a="none"!==r?this.settings.cssEfects[r].in:r;this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(a=this.settings.cssEfects.slideBack.in),g(e,a,(function(){i.settings.autoplayVideos&&i.slidePlayerPlay(e),i.trigger("slide_changed",{prev:l,current:o}),T(i.settings.afterSlideChange)&&i.settings.afterSlideChange.apply(i,[l,o])}))}setTimeout((function(){i.resize(e)}),100),h(e,"current")}},{key:"slideAnimateOut",value:function(){if(!this.prevActiveSlide)return!1;var e=this.prevActiveSlide;d(e,this.effectsClasses),h(e,"prev");var t=this.settings.slideEffect,i="none"!==t?this.settings.cssEfects[t].out:t;this.slidePlayerPause(e),this.trigger("slide_before_change",{prev:{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,slideNode:this.prevActiveSlide,slideIndex:this.prevActiveSlideIndex,slideConfig:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].slideConfig,trigger:I(this.prevActiveSlideIndex)?null:this.elements[this.prevActiveSlideIndex].node,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},current:{index:this.index,slide:this.activeSlide,slideNode:this.activeSlide,slideIndex:this.index,slideConfig:this.elements[this.index].slideConfig,trigger:this.elements[this.index].node,player:this.getSlidePlayerInstance(this.index)}}),T(this.settings.beforeSlideChange)&&this.settings.beforeSlideChange.apply(this,[{index:this.prevActiveSlideIndex,slide:this.prevActiveSlide,player:this.getSlidePlayerInstance(this.prevActiveSlideIndex)},{index:this.index,slide:this.activeSlide,player:this.getSlidePlayerInstance(this.index)}]),this.prevActiveSlideIndex>this.index&&"slide"==this.settings.slideEffect&&(i=this.settings.cssEfects.slideBack.out),g(e,i,(function(){var t=e.querySelector(".ginner-container"),i=e.querySelector(".gslide-media"),n=e.querySelector(".gslide-description");t.style.transform="",i.style.transform="",d(i,"greset"),i.style.opacity="",n&&(n.style.opacity=""),d(e,"prev")}))}},{key:"getAllPlayers",value:function(){return this.videoPlayers}},{key:"getSlidePlayerInstance",value:function(e){var t="gvideo"+e,i=this.getAllPlayers();return!(!O(i,t)||!i[t])&&i[t]}},{key:"stopSlideVideo",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("stopSlideVideo is deprecated, use slidePlayerPause");var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"slidePlayerPause",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}var i=this.getSlidePlayerInstance(e);i&&i.playing&&i.pause()}},{key:"playSlideVideo",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}console.log("playSlideVideo is deprecated, use slidePlayerPlay");var i=this.getSlidePlayerInstance(e);i&&!i.playing&&i.play()}},{key:"slidePlayerPlay",value:function(e){if(k(e)){var t=e.querySelector(".gvideo-wrapper");t&&(e=t.getAttribute("data-index"))}var i=this.getSlidePlayerInstance(e);i&&!i.playing&&(i.play(),this.settings.autofocusVideos&&i.elements.container.focus())}},{key:"setElements",value:function(e){var t=this;this.settings.elements=!1;var i=[];e&&e.length&&o(e,(function(e,n){var s=new U(e,t,n),o=s.getConfig(),r=l({},o);r.slideConfig=o,r.instance=s,r.index=n,i.push(r)})),this.elements=i,this.lightboxOpen&&(this.slidesContainer.innerHTML="",this.elements.length&&(o(this.elements,(function(){var e=m(t.settings.slideHTML);t.slidesContainer.appendChild(e)})),this.showSlide(0,!0)))}},{key:"getElementIndex",value:function(e){var t=!1;return o(this.elements,(function(i,n){if(O(i,"node")&&i.node==e)return t=n,!0})),t}},{key:"getElements",value:function(){var e=this,t=[];this.elements=this.elements?this.elements:[],!I(this.settings.elements)&&E(this.settings.elements)&&this.settings.elements.length&&o(this.settings.elements,(function(i,n){var s=new U(i,e,n),o=s.getConfig(),r=l({},o);r.node=!1,r.index=n,r.instance=s,r.slideConfig=o,t.push(r)}));var i=!1;return this.getSelector()&&(i=document.querySelectorAll(this.getSelector())),i?(o(i,(function(i,n){var s=new U(i,e,n),o=s.getConfig(),r=l({},o);r.node=i,r.index=n,r.instance=s,r.slideConfig=o,r.gallery=i.getAttribute("data-gallery"),t.push(r)})),t):t}},{key:"getGalleryElements",value:function(e,t){return e.filter((function(e){return e.gallery==t}))}},{key:"getSelector",value:function(){return!this.settings.elements&&(this.settings.selector&&"data-"==this.settings.selector.substring(0,5)?"*[".concat(this.settings.selector,"]"):this.settings.selector)}},{key:"getActiveSlide",value:function(){return this.slidesContainer.querySelectorAll(".gslide")[this.index]}},{key:"getActiveSlideIndex",value:function(){return this.index}},{key:"getAnimationClasses",value:function(){var e=[];for(var t in this.settings.cssEfects)if(this.settings.cssEfects.hasOwnProperty(t)){var i=this.settings.cssEfects[t];e.push("g".concat(i.in)),e.push("g".concat(i.out))}return e.join(" ")}},{key:"build",value:function(){var e=this;if(this.built)return!1;var t=document.body.childNodes,i=[];o(t,(function(e){e.parentNode==document.body&&"#"!==e.nodeName.charAt(0)&&e.hasAttribute&&!e.hasAttribute("aria-hidden")&&(i.push(e),e.setAttribute("aria-hidden","true"))}));var n=O(this.settings.svg,"next")?this.settings.svg.next:"",s=O(this.settings.svg,"prev")?this.settings.svg.prev:"",l=O(this.settings.svg,"close")?this.settings.svg.close:"",r=this.settings.lightboxHTML;r=m(r=(r=(r=r.replace(/{nextSVG}/g,n)).replace(/{prevSVG}/g,s)).replace(/{closeSVG}/g,l)),document.body.appendChild(r);var d=document.getElementById("glightbox-body");this.modal=d;var g=d.querySelector(".gclose");this.prevButton=d.querySelector(".gprev"),this.nextButton=d.querySelector(".gnext"),this.overlay=d.querySelector(".goverlay"),this.loader=d.querySelector(".gloader"),this.slidesContainer=document.getElementById("glightbox-slider"),this.bodyHiddenChildElms=i,this.events={},h(this.modal,"glightbox-"+this.settings.skin),this.settings.closeButton&&g&&(this.events.close=a("click",{onElement:g,withCallback:function(t,i){t.preventDefault(),e.close()}})),g&&!this.settings.closeButton&&g.parentNode.removeChild(g),this.nextButton&&(this.events.next=a("click",{onElement:this.nextButton,withCallback:function(t,i){t.preventDefault(),e.nextSlide()}})),this.prevButton&&(this.events.prev=a("click",{onElement:this.prevButton,withCallback:function(t,i){t.preventDefault(),e.prevSlide()}})),this.settings.closeOnOutsideClick&&(this.events.outClose=a("click",{onElement:d,withCallback:function(t,i){e.preventOutsideClick||c(document.body,"glightbox-mobile")||u(t.target,".ginner-container")||u(t.target,".gbtn")||c(t.target,"gnext")||c(t.target,"gprev")||e.close()}})),o(this.elements,(function(t,i){e.slidesContainer.appendChild(t.instance.create()),t.slideNode=e.slidesContainer.querySelectorAll(".gslide")[i]})),K&&h(document.body,"glightbox-touch"),this.events.resize=a("resize",{onElement:window,withCallback:function(){e.resize()}}),this.built=!0}},{key:"resize",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if((e=e||this.activeSlide)&&!c(e,"zoomed")){var t=y(),i=e.querySelector(".gvideo-wrapper"),n=e.querySelector(".gslide-image"),s=this.slideDescription,l=t.width,o=t.height;if(l<=768?h(document.body,"glightbox-mobile"):d(document.body,"glightbox-mobile"),i||n){var r=!1;if(s&&(c(s,"description-bottom")||c(s,"description-top"))&&!c(s,"gabsolute")&&(r=!0),n)if(l<=768)n.querySelector("img");else if(r){var a=s.offsetHeight,u=n.querySelector("img");u.setAttribute("style","max-height: calc(100vh - ".concat(a,"px)")),s.setAttribute("style","max-width: ".concat(u.offsetWidth,"px;"))}if(i){var g=O(this.settings.plyr.config,"ratio")?this.settings.plyr.config.ratio:"";if(!g){var v=i.clientWidth,f=i.clientHeight,p=v/f;g="".concat(v/p,":").concat(f/p)}var m=g.split(":"),x=this.settings.videosWidth,b=this.settings.videosWidth,S=(b=M(x)||-1!==x.indexOf("px")?parseInt(x):-1!==x.indexOf("vw")?l*parseInt(x)/100:-1!==x.indexOf("vh")?o*parseInt(x)/100:-1!==x.indexOf("%")?l*parseInt(x)/100:parseInt(i.clientWidth))/(parseInt(m[0])/parseInt(m[1]));if(S=Math.floor(S),r&&(o-=s.offsetHeight),b>l||S>o||ob){var w=i.offsetWidth,T=i.offsetHeight,C=o/T,k={width:w*C,height:T*C};i.parentNode.setAttribute("style","max-width: ".concat(k.width,"px")),r&&s.setAttribute("style","max-width: ".concat(k.width,"px;"))}else i.parentNode.style.maxWidth="".concat(x),r&&s.setAttribute("style","max-width: ".concat(x,";"))}}}}},{key:"reload",value:function(){this.init()}},{key:"updateNavigationClasses",value:function(){var e=this.loop();d(this.nextButton,"disabled"),d(this.prevButton,"disabled"),0==this.index&&this.elements.length-1==0?(h(this.prevButton,"disabled"),h(this.nextButton,"disabled")):0!==this.index||e?this.index!==this.elements.length-1||e||h(this.nextButton,"disabled"):h(this.prevButton,"disabled")}},{key:"loop",value:function(){var e=O(this.settings,"loopAtEnd")?this.settings.loopAtEnd:null;return e=O(this.settings,"loop")?this.settings.loop:e,e}},{key:"close",value:function(){var e=this;if(!this.lightboxOpen){if(this.events){for(var t in this.events)this.events.hasOwnProperty(t)&&this.events[t].destroy();this.events=null}return!1}if(this.closing)return!1;this.closing=!0,this.slidePlayerPause(this.activeSlide),this.fullElementsList&&(this.elements=this.fullElementsList),this.bodyHiddenChildElms.length&&o(this.bodyHiddenChildElms,(function(e){e.removeAttribute("aria-hidden")})),h(this.modal,"glightbox-closing"),g(this.overlay,"none"==this.settings.openEffect?"none":this.settings.cssEfects.fade.out),g(this.activeSlide,this.settings.cssEfects[this.settings.closeEffect].out,(function(){if(e.activeSlide=null,e.prevActiveSlideIndex=null,e.prevActiveSlide=null,e.built=!1,e.events){for(var t in e.events)e.events.hasOwnProperty(t)&&e.events[t].destroy();e.events=null}var i=document.body;d(Q,"glightbox-open"),d(i,"glightbox-open touching gdesc-open glightbox-touch glightbox-mobile gscrollbar-fixer"),e.modal.parentNode.removeChild(e.modal),e.trigger("close"),T(e.settings.onClose)&&e.settings.onClose();var n=document.querySelector(".gcss-styles");n&&n.parentNode.removeChild(n),e.lightboxOpen=!1,e.closing=null}))}},{key:"destroy",value:function(){this.close(),this.clearAllEvents(),this.baseEvents&&this.baseEvents.destroy()}},{key:"on",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!e||!T(t))throw new TypeError("Event name and callback must be defined");this.apiEvents.push({evt:e,once:i,callback:t})}},{key:"once",value:function(e,t){this.on(e,t,!0)}},{key:"trigger",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=[];o(this.apiEvents,(function(t,s){var l=t.evt,o=t.once,r=t.callback;l==e&&(r(i),o&&n.push(s))})),n.length&&o(n,(function(e){return t.apiEvents.splice(e,1)}))}},{key:"clearAllEvents",value:function(){this.apiEvents.splice(0,this.apiEvents.length)}},{key:"version",value:function(){return"3.1.1"}}]),e}();return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=new te(e);return t.init(),t}})); diff --git a/assets/javascripts/lunr/min/lunr.ar.min.js b/assets/javascripts/lunr/min/lunr.ar.min.js new file mode 100644 index 00000000..9b06c26c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ar.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ar=function(){this.pipeline.reset(),this.pipeline.add(e.ar.trimmer,e.ar.stopWordFilter,e.ar.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ar.stemmer))},e.ar.wordCharacters="ء-ٛٱـ",e.ar.trimmer=e.trimmerSupport.generateTrimmer(e.ar.wordCharacters),e.Pipeline.registerFunction(e.ar.trimmer,"trimmer-ar"),e.ar.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ف ك ب و س ل ن ا ي ت",pre2:"ال لل",pre3:"بال وال فال تال كال ولل",pre4:"فبال كبال وبال وكال"},e.suf={suf1:"ه ك ت ن ا ي",suf2:"نك نه ها وك يا اه ون ين تن تم نا وا ان كم كن ني نن ما هم هن تك ته ات يه",suf3:"تين كهم نيه نهم ونه وها يهم ونا ونك وني وهم تكم تنا تها تني تهم كما كها ناه نكم هنا تان يها",suf4:"كموه ناها ونني ونهم تكما تموه تكاه كماه ناكم ناهم نيها وننا"},e.patterns=JSON.parse('{"pt43":[{"pt":[{"c":"ا","l":1}]},{"pt":[{"c":"ا,ت,ن,ي","l":0}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"و","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ل","l":2,"m":3}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ي","l":2}],"mPt":[{"c":"ف","l":0,"m":0},{"c":"ع","l":1,"m":1},{"c":"ا","l":2},{"c":"ل","l":3,"m":3}]},{"pt":[{"c":"م","l":0}]}],"pt53":[{"pt":[{"c":"ت","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":3},{"c":"ل","l":3,"m":4},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":0},{"c":"ا","l":3}],"mPt":[{"c":"ف","l":0,"m":1},{"c":"ع","l":1,"m":2},{"c":"ل","l":2,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ن","l":4}]},{"pt":[{"c":"ت","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"م","l":0},{"c":"و","l":3}]},{"pt":[{"c":"ا","l":1},{"c":"و","l":3}]},{"pt":[{"c":"و","l":1},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ي","l":3}]},{"pt":[{"c":"ا","l":2},{"c":"ن","l":3}]},{"pt":[{"c":"م","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"م","l":0},{"c":"ا","l":2}]},{"pt":[{"c":"م","l":1},{"c":"ا","l":3}]},{"pt":[{"c":"ي,ت,ا,ن","l":0},{"c":"ت","l":1}],"mPt":[{"c":"ف","l":0,"m":2},{"c":"ع","l":1,"m":3},{"c":"ا","l":2},{"c":"ل","l":3,"m":4}]},{"pt":[{"c":"ت,ي,ا,ن","l":0},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ت","l":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":2},{"c":"ي","l":3}]},{"pt":[{"c":"ا,ي,ت,ن","l":0},{"c":"ن","l":1}],"mPt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ف","l":2,"m":2},{"c":"ع","l":3,"m":3},{"c":"ا","l":4},{"c":"ل","l":5,"m":4}]},{"pt":[{"c":"ا","l":3},{"c":"ء","l":4}]}],"pt63":[{"pt":[{"c":"ا","l":0},{"c":"ت","l":2},{"c":"ا","l":4}]},{"pt":[{"c":"ا,ت,ن,ي","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ا,ن,ت,ي","l":0},{"c":"و","l":3}]},{"pt":[{"c":"م","l":0},{"c":"س","l":1},{"c":"ت","l":2}],"mPt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ف","l":3,"m":3},{"c":"ع","l":4,"m":4},{"c":"ا","l":5},{"c":"ل","l":6,"m":5}]},{"pt":[{"c":"ي","l":1},{"c":"ي","l":3},{"c":"ا","l":4},{"c":"ء","l":5}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":1},{"c":"ا","l":4}]}],"pt54":[{"pt":[{"c":"ت","l":0}]},{"pt":[{"c":"ا,ي,ت,ن","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"م","l":0}],"mPt":[{"c":"ا","l":0},{"c":"ف","l":1,"m":1},{"c":"ع","l":2,"m":2},{"c":"ل","l":3,"m":3},{"c":"ر","l":4,"m":4},{"c":"ا","l":5},{"c":"ر","l":6,"m":4}]},{"pt":[{"c":"ا","l":2}]},{"pt":[{"c":"ا","l":0},{"c":"ن","l":2}]}],"pt64":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":4}]},{"pt":[{"c":"م","l":0},{"c":"ت","l":1}]}],"pt73":[{"pt":[{"c":"ا","l":0},{"c":"س","l":1},{"c":"ت","l":2},{"c":"ا","l":5}]}],"pt75":[{"pt":[{"c":"ا","l":0},{"c":"ا","l":5}]}]}'),e.execArray=["cleanWord","removeDiacritics","cleanAlef","removeStopWords","normalizeHamzaAndAlef","removeStartWaw","removePre432","removeEndTaa","wordCheck"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r=0)return!0},e.normalizeHamzaAndAlef=function(){return e.word=e.word.replace("ؤ","ء"),e.word=e.word.replace("ئ","ء"),e.word=e.word.replace(/([\u0627])\1+/gi,"ا"),!1},e.removeEndTaa=function(){return!(e.word.length>2)||(e.word=e.word.replace(/[\u0627]$/,""),e.word=e.word.replace("ة",""),!1)},e.removeStartWaw=function(){return e.word.length>3&&"و"==e.word[0]&&"و"==e.word[1]&&(e.word=e.word.slice(1)),!1},e.removePre432=function(){var r=e.word;if(e.word.length>=7){var t=new RegExp("^("+e.pre.pre4.split(" ").join("|")+")");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=6){var c=new RegExp("^("+e.pre.pre3.split(" ").join("|")+")");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=5){var l=new RegExp("^("+e.pre.pre2.split(" ").join("|")+")");e.word=e.word.replace(l,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.patternCheck=function(r){for(var t=0;t3){var t=new RegExp("^("+e.pre.pre1.split(" ").join("|")+")");e.word=e.word.replace(t,"")}return r!=e.word&&(e.preRemoved=!0),!1},e.removeSuf1=function(){var r=e.word;if(0==e.sufRemoved&&e.word.length>3){var t=new RegExp("("+e.suf.suf1.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.removeSuf432=function(){var r=e.word;if(e.word.length>=6){var t=new RegExp("("+e.suf.suf4.split(" ").join("|")+")$");e.word=e.word.replace(t,"")}if(e.word==r&&e.word.length>=5){var c=new RegExp("("+e.suf.suf3.split(" ").join("|")+")$");e.word=e.word.replace(c,"")}if(e.word==r&&e.word.length>=4){var l=new RegExp("("+e.suf.suf2.split(" ").join("|")+")$");e.word=e.word.replace(l,"")}return r!=e.word&&(e.sufRemoved=!0),!1},e.wordCheck=function(){for(var r=(e.word,[e.removeSuf432,e.removeSuf1,e.removePre1]),t=0,c=!1;e.word.length>=7&&!e.result&&t=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.de.min.js b/assets/javascripts/lunr/min/lunr.de.min.js new file mode 100644 index 00000000..f3b5c108 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.de.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `German` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!v.eq_s(1,e)||(v.ket=v.cursor,!v.in_grouping(p,97,252)))&&(v.slice_from(r),v.cursor=n,!0)}function i(){for(var r,n,i,s,t=v.cursor;;)if(r=v.cursor,v.bra=r,v.eq_s(1,"ß"))v.ket=v.cursor,v.slice_from("ss");else{if(r>=v.limit)break;v.cursor=r+1}for(v.cursor=t;;)for(n=v.cursor;;){if(i=v.cursor,v.in_grouping(p,97,252)){if(s=v.cursor,v.bra=s,e("u","U",i))break;if(v.cursor=s,e("y","Y",i))break}if(i>=v.limit)return void(v.cursor=n);v.cursor=i+1}}function s(){for(;!v.in_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}for(;!v.out_grouping(p,97,252);){if(v.cursor>=v.limit)return!0;v.cursor++}return!1}function t(){m=v.limit,l=m;var e=v.cursor+3;0<=e&&e<=v.limit&&(d=e,s()||(m=v.cursor,m=v.limit)return;v.cursor++}}}function c(){return m<=v.cursor}function u(){return l<=v.cursor}function a(){var e,r,n,i,s=v.limit-v.cursor;if(v.ket=v.cursor,(e=v.find_among_b(w,7))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:v.slice_del(),v.ket=v.cursor,v.eq_s_b(1,"s")&&(v.bra=v.cursor,v.eq_s_b(3,"nis")&&v.slice_del());break;case 3:v.in_grouping_b(g,98,116)&&v.slice_del()}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(f,4))&&(v.bra=v.cursor,c()))switch(e){case 1:v.slice_del();break;case 2:if(v.in_grouping_b(k,98,116)){var t=v.cursor-3;v.limit_backward<=t&&t<=v.limit&&(v.cursor=t,v.slice_del())}}if(v.cursor=v.limit-s,v.ket=v.cursor,(e=v.find_among_b(_,8))&&(v.bra=v.cursor,u()))switch(e){case 1:v.slice_del(),v.ket=v.cursor,v.eq_s_b(2,"ig")&&(v.bra=v.cursor,r=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-r,u()&&v.slice_del()));break;case 2:n=v.limit-v.cursor,v.eq_s_b(1,"e")||(v.cursor=v.limit-n,v.slice_del());break;case 3:if(v.slice_del(),v.ket=v.cursor,i=v.limit-v.cursor,!v.eq_s_b(2,"er")&&(v.cursor=v.limit-i,!v.eq_s_b(2,"en")))break;v.bra=v.cursor,c()&&v.slice_del();break;case 4:v.slice_del(),v.ket=v.cursor,e=v.find_among_b(b,2),e&&(v.bra=v.cursor,u()&&1==e&&v.slice_del())}}var d,l,m,h=[new r("",-1,6),new r("U",0,2),new r("Y",0,1),new r("ä",0,3),new r("ö",0,4),new r("ü",0,5)],w=[new r("e",-1,2),new r("em",-1,1),new r("en",-1,2),new r("ern",-1,1),new r("er",-1,1),new r("s",-1,3),new r("es",5,2)],f=[new r("en",-1,1),new r("er",-1,1),new r("st",-1,2),new r("est",2,1)],b=[new r("ig",-1,1),new r("lich",-1,1)],_=[new r("end",-1,1),new r("ig",-1,2),new r("ung",-1,1),new r("lich",-1,3),new r("isch",-1,2),new r("ik",-1,2),new r("heit",-1,3),new r("keit",-1,4)],p=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],g=[117,30,5],k=[117,30,4],v=new n;this.setCurrent=function(e){v.setCurrent(e)},this.getCurrent=function(){return v.getCurrent()},this.stem=function(){var e=v.cursor;return i(),v.cursor=e,t(),v.limit_backward=e,v.cursor=v.limit,a(),v.cursor=v.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.du.min.js b/assets/javascripts/lunr/min/lunr.du.min.js new file mode 100644 index 00000000..49a0f3f0 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.du.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Dutch` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e,r,i,o=C.cursor;;){if(C.bra=C.cursor,e=C.find_among(b,11))switch(C.ket=C.cursor,e){case 1:C.slice_from("a");continue;case 2:C.slice_from("e");continue;case 3:C.slice_from("i");continue;case 4:C.slice_from("o");continue;case 5:C.slice_from("u");continue;case 6:if(C.cursor>=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(r=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=r);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=r;else if(n(r))break}else if(n(r))break}function n(e){return C.cursor=e,e>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,f=_,t()||(_=C.cursor,_<3&&(_=3),t()||(f=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var e;;)if(C.bra=C.cursor,e=C.find_among(p,3))switch(C.ket=C.cursor,e){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return f<=C.cursor}function a(){var e=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-e,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var e;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.slice_del(),w=!0,a())))}function m(){var e;u()&&(e=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-e,C.eq_s_b(3,"gem")||(C.cursor=C.limit-e,C.slice_del(),a())))}function d(){var e,r,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,e=C.find_among_b(h,5))switch(C.bra=C.cursor,e){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(z,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(r=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-r,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,e=C.find_among_b(k,6))switch(C.bra=C.cursor,e){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(j,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var f,_,w,b=[new r("",-1,6),new r("á",0,1),new r("ä",0,1),new r("é",0,2),new r("ë",0,2),new r("í",0,3),new r("ï",0,3),new r("ó",0,4),new r("ö",0,4),new r("ú",0,5),new r("ü",0,5)],p=[new r("",-1,3),new r("I",0,2),new r("Y",0,1)],g=[new r("dd",-1,-1),new r("kk",-1,-1),new r("tt",-1,-1)],h=[new r("ene",-1,2),new r("se",-1,3),new r("en",-1,2),new r("heden",2,1),new r("s",-1,3)],k=[new r("end",-1,1),new r("ig",-1,2),new r("ing",-1,1),new r("lijk",-1,3),new r("baar",-1,4),new r("bar",-1,5)],v=[new r("aa",-1,-1),new r("ee",-1,-1),new r("oo",-1,-1),new r("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(e){C.setCurrent(e)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var r=C.cursor;return e(),C.cursor=r,o(),C.limit_backward=r,C.cursor=C.limit,d(),C.cursor=C.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.el.min.js b/assets/javascripts/lunr/min/lunr.el.min.js new file mode 100644 index 00000000..ace017bd --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.el.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.el=function(){this.pipeline.reset(),void 0===this.searchPipeline&&this.pipeline.add(e.el.trimmer,e.el.normilizer),this.pipeline.add(e.el.stopWordFilter,e.el.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.el.stemmer))},e.el.wordCharacters="A-Za-zΑαΒβΓγΔδΕεΖζΗηΘθΙιΚκΛλΜμΝνΞξΟοΠπΡρΣσςΤτΥυΦφΧχΨψΩωΆάΈέΉήΊίΌόΎύΏώΪΐΫΰΐΰ",e.el.trimmer=e.trimmerSupport.generateTrimmer(e.el.wordCharacters),e.Pipeline.registerFunction(e.el.trimmer,"trimmer-el"),e.el.stemmer=function(){function e(e){return s.test(e)}function t(e){return/[ΑΕΗΙΟΥΩ]$/.test(e)}function r(e){return/[ΑΕΗΙΟΩ]$/.test(e)}function n(n){var s=n;if(n.length<3)return s;if(!e(n))return s;if(i.indexOf(n)>=0)return s;var u=new RegExp("(.*)("+Object.keys(l).join("|")+")$"),o=u.exec(s);return null!==o&&(s=o[1]+l[o[2]]),null!==(o=/^(.+?)(ΑΔΕΣ|ΑΔΩΝ)$/.exec(s))&&(s=o[1],/(ΟΚ|ΜΑΜ|ΜΑΝ|ΜΠΑΜΠ|ΠΑΤΕΡ|ΓΙΑΓΙ|ΝΤΑΝΤ|ΚΥΡ|ΘΕΙ|ΠΕΘΕΡ|ΜΟΥΣΑΜ|ΚΑΠΛΑΜ|ΠΑΡ|ΨΑΡ|ΤΖΟΥΡ|ΤΑΜΠΟΥΡ|ΓΑΛΑΤ|ΦΑΦΛΑΤ)$/.test(o[1])||(s+="ΑΔ")),null!==(o=/^(.+?)(ΕΔΕΣ|ΕΔΩΝ)$/.exec(s))&&(s=o[1],/(ΟΠ|ΙΠ|ΕΜΠ|ΥΠ|ΓΗΠ|ΔΑΠ|ΚΡΑΣΠ|ΜΙΛ)$/.test(o[1])&&(s+="ΕΔ")),null!==(o=/^(.+?)(ΟΥΔΕΣ|ΟΥΔΩΝ)$/.exec(s))&&(s=o[1],/(ΑΡΚ|ΚΑΛΙΑΚ|ΠΕΤΑΛ|ΛΙΧ|ΠΛΕΞ|ΣΚ|Σ|ΦΛ|ΦΡ|ΒΕΛ|ΛΟΥΛ|ΧΝ|ΣΠ|ΤΡΑΓ|ΦΕ)$/.test(o[1])&&(s+="ΟΥΔ")),null!==(o=/^(.+?)(ΕΩΣ|ΕΩΝ|ΕΑΣ|ΕΑ)$/.exec(s))&&(s=o[1],/^(Θ|Δ|ΕΛ|ΓΑΛ|Ν|Π|ΙΔ|ΠΑΡ|ΣΤΕΡ|ΟΡΦ|ΑΝΔΡ|ΑΝΤΡ)$/.test(o[1])&&(s+="Ε")),null!==(o=/^(.+?)(ΕΙΟ|ΕΙΟΣ|ΕΙΟΙ|ΕΙΑ|ΕΙΑΣ|ΕΙΕΣ|ΕΙΟΥ|ΕΙΟΥΣ|ΕΙΩΝ)$/.exec(s))&&o[1].length>4&&(s=o[1]),null!==(o=/^(.+?)(ΙΟΥΣ|ΙΑΣ|ΙΕΣ|ΙΟΣ|ΙΟΥ|ΙΟΙ|ΙΩΝ|ΙΟΝ|ΙΑ|ΙΟ)$/.exec(s))&&(s=o[1],(t(s)||s.length<2||/^(ΑΓ|ΑΓΓΕΛ|ΑΓΡ|ΑΕΡ|ΑΘΛ|ΑΚΟΥΣ|ΑΞ|ΑΣ|Β|ΒΙΒΛ|ΒΥΤ|Γ|ΓΙΑΓ|ΓΩΝ|Δ|ΔΑΝ|ΔΗΛ|ΔΗΜ|ΔΟΚΙΜ|ΕΛ|ΖΑΧΑΡ|ΗΛ|ΗΠ|ΙΔ|ΙΣΚ|ΙΣΤ|ΙΟΝ|ΙΩΝ|ΚΙΜΩΛ|ΚΟΛΟΝ|ΚΟΡ|ΚΤΗΡ|ΚΥΡ|ΛΑΓ|ΛΟΓ|ΜΑΓ|ΜΠΑΝ|ΜΠΡ|ΝΑΥΤ|ΝΟΤ|ΟΠΑΛ|ΟΞ|ΟΡ|ΟΣ|ΠΑΝΑΓ|ΠΑΤΡ|ΠΗΛ|ΠΗΝ|ΠΛΑΙΣ|ΠΟΝΤ|ΡΑΔ|ΡΟΔ|ΣΚ|ΣΚΟΡΠ|ΣΟΥΝ|ΣΠΑΝ|ΣΤΑΔ|ΣΥΡ|ΤΗΛ|ΤΙΜ|ΤΟΚ|ΤΟΠ|ΤΡΟΧ|ΦΙΛ|ΦΩΤ|Χ|ΧΙΛ|ΧΡΩΜ|ΧΩΡ)$/.test(o[1]))&&(s+="Ι"),/^(ΠΑΛ)$/.test(o[1])&&(s+="ΑΙ")),null!==(o=/^(.+?)(ΙΚΟΣ|ΙΚΟΝ|ΙΚΕΙΣ|ΙΚΟΙ|ΙΚΕΣ|ΙΚΟΥΣ|ΙΚΗ|ΙΚΗΣ|ΙΚΟ|ΙΚΑ|ΙΚΟΥ|ΙΚΩΝ|ΙΚΩΣ)$/.exec(s))&&(s=o[1],(t(s)||/^(ΑΔ|ΑΛ|ΑΜΑΝ|ΑΜΕΡ|ΑΜΜΟΧΑΛ|ΑΝΗΘ|ΑΝΤΙΔ|ΑΠΛ|ΑΤΤ|ΑΦΡ|ΒΑΣ|ΒΡΩΜ|ΓΕΝ|ΓΕΡ|Δ|ΔΙΚΑΝ|ΔΥΤ|ΕΙΔ|ΕΝΔ|ΕΞΩΔ|ΗΘ|ΘΕΤ|ΚΑΛΛΙΝ|ΚΑΛΠ|ΚΑΤΑΔ|ΚΟΥΖΙΝ|ΚΡ|ΚΩΔ|ΛΟΓ|Μ|ΜΕΡ|ΜΟΝΑΔ|ΜΟΥΛ|ΜΟΥΣ|ΜΠΑΓΙΑΤ|ΜΠΑΝ|ΜΠΟΛ|ΜΠΟΣ|ΜΥΣΤ|Ν|ΝΙΤ|ΞΙΚ|ΟΠΤ|ΠΑΝ|ΠΕΤΣ|ΠΙΚΑΝΤ|ΠΙΤΣ|ΠΛΑΣΤ|ΠΛΙΑΤΣ|ΠΟΝΤ|ΠΟΣΤΕΛΝ|ΠΡΩΤΟΔ|ΣΕΡΤ|ΣΗΜΑΝΤ|ΣΤΑΤ|ΣΥΝΑΔ|ΣΥΝΟΜΗΛ|ΤΕΛ|ΤΕΧΝ|ΤΡΟΠ|ΤΣΑΜ|ΥΠΟΔ|Φ|ΦΙΛΟΝ|ΦΥΛΟΔ|ΦΥΣ|ΧΑΣ)$/.test(o[1])||/(ΦΟΙΝ)$/.test(o[1]))&&(s+="ΙΚ")),"ΑΓΑΜΕ"===s&&(s="ΑΓΑΜ"),null!==(o=/^(.+?)(ΑΓΑΜΕ|ΗΣΑΜΕ|ΟΥΣΑΜΕ|ΗΚΑΜΕ|ΗΘΗΚΑΜΕ)$/.exec(s))&&(s=o[1]),null!==(o=/^(.+?)(ΑΜΕ)$/.exec(s))&&(s=o[1],/^(ΑΝΑΠ|ΑΠΟΘ|ΑΠΟΚ|ΑΠΟΣΤ|ΒΟΥΒ|ΞΕΘ|ΟΥΛ|ΠΕΘ|ΠΙΚΡ|ΠΟΤ|ΣΙΧ|Χ)$/.test(o[1])&&(s+="ΑΜ")),null!==(o=/^(.+?)(ΑΓΑΝΕ|ΗΣΑΝΕ|ΟΥΣΑΝΕ|ΙΟΝΤΑΝΕ|ΙΟΤΑΝΕ|ΙΟΥΝΤΑΝΕ|ΟΝΤΑΝΕ|ΟΤΑΝΕ|ΟΥΝΤΑΝΕ|ΗΚΑΝΕ|ΗΘΗΚΑΝΕ)$/.exec(s))&&(s=o[1],/^(ΤΡ|ΤΣ)$/.test(o[1])&&(s+="ΑΓΑΝ")),null!==(o=/^(.+?)(ΑΝΕ)$/.exec(s))&&(s=o[1],(r(s)||/^(ΒΕΤΕΡ|ΒΟΥΛΚ|ΒΡΑΧΜ|Γ|ΔΡΑΔΟΥΜ|Θ|ΚΑΛΠΟΥΖ|ΚΑΣΤΕΛ|ΚΟΡΜΟΡ|ΛΑΟΠΛ|ΜΩΑΜΕΘ|Μ|ΜΟΥΣΟΥΛΜΑΝ|ΟΥΛ|Π|ΠΕΛΕΚ|ΠΛ|ΠΟΛΙΣ|ΠΟΡΤΟΛ|ΣΑΡΑΚΑΤΣ|ΣΟΥΛΤ|ΤΣΑΡΛΑΤ|ΟΡΦ|ΤΣΙΓΓ|ΤΣΟΠ|ΦΩΤΟΣΤΕΦ|Χ|ΨΥΧΟΠΛ|ΑΓ|ΟΡΦ|ΓΑΛ|ΓΕΡ|ΔΕΚ|ΔΙΠΛ|ΑΜΕΡΙΚΑΝ|ΟΥΡ|ΠΙΘ|ΠΟΥΡΙΤ|Σ|ΖΩΝΤ|ΙΚ|ΚΑΣΤ|ΚΟΠ|ΛΙΧ|ΛΟΥΘΗΡ|ΜΑΙΝΤ|ΜΕΛ|ΣΙΓ|ΣΠ|ΣΤΕΓ|ΤΡΑΓ|ΤΣΑΓ|Φ|ΕΡ|ΑΔΑΠ|ΑΘΙΓΓ|ΑΜΗΧ|ΑΝΙΚ|ΑΝΟΡΓ|ΑΠΗΓ|ΑΠΙΘ|ΑΤΣΙΓΓ|ΒΑΣ|ΒΑΣΚ|ΒΑΘΥΓΑΛ|ΒΙΟΜΗΧ|ΒΡΑΧΥΚ|ΔΙΑΤ|ΔΙΑΦ|ΕΝΟΡΓ|ΘΥΣ|ΚΑΠΝΟΒΙΟΜΗΧ|ΚΑΤΑΓΑΛ|ΚΛΙΒ|ΚΟΙΛΑΡΦ|ΛΙΒ|ΜΕΓΛΟΒΙΟΜΗΧ|ΜΙΚΡΟΒΙΟΜΗΧ|ΝΤΑΒ|ΞΗΡΟΚΛΙΒ|ΟΛΙΓΟΔΑΜ|ΟΛΟΓΑΛ|ΠΕΝΤΑΡΦ|ΠΕΡΗΦ|ΠΕΡΙΤΡ|ΠΛΑΤ|ΠΟΛΥΔΑΠ|ΠΟΛΥΜΗΧ|ΣΤΕΦ|ΤΑΒ|ΤΕΤ|ΥΠΕΡΗΦ|ΥΠΟΚΟΠ|ΧΑΜΗΛΟΔΑΠ|ΨΗΛΟΤΑΒ)$/.test(o[1]))&&(s+="ΑΝ")),null!==(o=/^(.+?)(ΗΣΕΤΕ)$/.exec(s))&&(s=o[1]),null!==(o=/^(.+?)(ΕΤΕ)$/.exec(s))&&(s=o[1],(r(s)||/(ΟΔ|ΑΙΡ|ΦΟΡ|ΤΑΘ|ΔΙΑΘ|ΣΧ|ΕΝΔ|ΕΥΡ|ΤΙΘ|ΥΠΕΡΘ|ΡΑΘ|ΕΝΘ|ΡΟΘ|ΣΘ|ΠΥΡ|ΑΙΝ|ΣΥΝΔ|ΣΥΝ|ΣΥΝΘ|ΧΩΡ|ΠΟΝ|ΒΡ|ΚΑΘ|ΕΥΘ|ΕΚΘ|ΝΕΤ|ΡΟΝ|ΑΡΚ|ΒΑΡ|ΒΟΛ|ΩΦΕΛ)$/.test(o[1])||/^(ΑΒΑΡ|ΒΕΝ|ΕΝΑΡ|ΑΒΡ|ΑΔ|ΑΘ|ΑΝ|ΑΠΛ|ΒΑΡΟΝ|ΝΤΡ|ΣΚ|ΚΟΠ|ΜΠΟΡ|ΝΙΦ|ΠΑΓ|ΠΑΡΑΚΑΛ|ΣΕΡΠ|ΣΚΕΛ|ΣΥΡΦ|ΤΟΚ|Υ|Δ|ΕΜ|ΘΑΡΡ|Θ)$/.test(o[1]))&&(s+="ΕΤ")),null!==(o=/^(.+?)(ΟΝΤΑΣ|ΩΝΤΑΣ)$/.exec(s))&&(s=o[1],/^ΑΡΧ$/.test(o[1])&&(s+="ΟΝΤ"),/ΚΡΕ$/.test(o[1])&&(s+="ΩΝΤ")),null!==(o=/^(.+?)(ΟΜΑΣΤΕ|ΙΟΜΑΣΤΕ)$/.exec(s))&&(s=o[1],/^ΟΝ$/.test(o[1])&&(s+="ΟΜΑΣΤ")),null!==(o=/^(.+?)(ΙΕΣΤΕ)$/.exec(s))&&(s=o[1],/^(Π|ΑΠ|ΣΥΜΠ|ΑΣΥΜΠ|ΑΚΑΤΑΠ|ΑΜΕΤΑΜΦ)$/.test(o[1])&&(s+="ΙΕΣΤ")),null!==(o=/^(.+?)(ΕΣΤΕ)$/.exec(s))&&(s=o[1],/^(ΑΛ|ΑΡ|ΕΚΤΕΛ|Ζ|Μ|Ξ|ΠΑΡΑΚΑΛ|ΠΡΟ|ΝΙΣ)$/.test(o[1])&&(s+="ΕΣΤ")),null!==(o=/^(.+?)(ΗΘΗΚΑ|ΗΘΗΚΕΣ|ΗΘΗΚΕ)$/.exec(s))&&(s=o[1]),null!==(o=/^(.+?)(ΗΚΑ|ΗΚΕΣ|ΗΚΕ)$/.exec(s))&&(s=o[1],(/(ΣΚΩΛ|ΣΚΟΥΛ|ΝΑΡΘ|ΣΦ|ΟΘ|ΠΙΘ)$/.test(o[1])||/^(ΔΙΑΘ|Θ|ΠΑΡΑΚΑΤΑΘ|ΠΡΟΣΘ|ΣΥΝΘ)$/.test(o[1]))&&(s+="ΗΚ")),null!==(o=/^(.+?)(ΟΥΣΑ|ΟΥΣΕΣ|ΟΥΣΕ)$/.exec(s))&&(s=o[1],(t(s)||/^(ΦΑΡΜΑΚ|ΧΑΔ|ΑΓΚ|ΑΝΑΡΡ|ΒΡΟΜ|ΕΚΛΙΠ|ΛΑΜΠΙΔ|ΛΕΧ|Μ|ΠΑΤ|Ρ|Λ|ΜΕΔ|ΜΕΣΑΖ|ΥΠΟΤΕΙΝ|ΑΜ|ΑΙΘ|ΑΝΗΚ|ΔΕΣΠΟΖ|ΕΝΔΙΑΦΕΡ)$/.test(o[1])||/(ΠΟΔΑΡ|ΒΛΕΠ|ΠΑΝΤΑΧ|ΦΡΥΔ|ΜΑΝΤΙΛ|ΜΑΛΛ|ΚΥΜΑΤ|ΛΑΧ|ΛΗΓ|ΦΑΓ|ΟΜ|ΠΡΩΤ)$/.test(o[1]))&&(s+="ΟΥΣ")),null!==(o=/^(.+?)(ΑΓΑ|ΑΓΕΣ|ΑΓΕ)$/.exec(s))&&(s=o[1],(/^(ΑΒΑΣΤ|ΠΟΛΥΦ|ΑΔΗΦ|ΠΑΜΦ|Ρ|ΑΣΠ|ΑΦ|ΑΜΑΛ|ΑΜΑΛΛΙ|ΑΝΥΣΤ|ΑΠΕΡ|ΑΣΠΑΡ|ΑΧΑΡ|ΔΕΡΒΕΝ|ΔΡΟΣΟΠ|ΞΕΦ|ΝΕΟΠ|ΝΟΜΟΤ|ΟΛΟΠ|ΟΜΟΤ|ΠΡΟΣΤ|ΠΡΟΣΩΠΟΠ|ΣΥΜΠ|ΣΥΝΤ|Τ|ΥΠΟΤ|ΧΑΡ|ΑΕΙΠ|ΑΙΜΟΣΤ|ΑΝΥΠ|ΑΠΟΤ|ΑΡΤΙΠ|ΔΙΑΤ|ΕΝ|ΕΠΙΤ|ΚΡΟΚΑΛΟΠ|ΣΙΔΗΡΟΠ|Λ|ΝΑΥ|ΟΥΛΑΜ|ΟΥΡ|Π|ΤΡ|Μ)$/.test(o[1])||/(ΟΦ|ΠΕΛ|ΧΟΡΤ|ΛΛ|ΣΦ|ΡΠ|ΦΡ|ΠΡ|ΛΟΧ|ΣΜΗΝ)$/.test(o[1])&&!/^(ΨΟΦ|ΝΑΥΛΟΧ)$/.test(o[1])||/(ΚΟΛΛ)$/.test(o[1]))&&(s+="ΑΓ")),null!==(o=/^(.+?)(ΗΣΕ|ΗΣΟΥ|ΗΣΑ)$/.exec(s))&&(s=o[1],/^(Ν|ΧΕΡΣΟΝ|ΔΩΔΕΚΑΝ|ΕΡΗΜΟΝ|ΜΕΓΑΛΟΝ|ΕΠΤΑΝ|Ι)$/.test(o[1])&&(s+="ΗΣ")),null!==(o=/^(.+?)(ΗΣΤΕ)$/.exec(s))&&(s=o[1],/^(ΑΣΒ|ΣΒ|ΑΧΡ|ΧΡ|ΑΠΛ|ΑΕΙΜΝ|ΔΥΣΧΡ|ΕΥΧΡ|ΚΟΙΝΟΧΡ|ΠΑΛΙΜΨ)$/.test(o[1])&&(s+="ΗΣΤ")),null!==(o=/^(.+?)(ΟΥΝΕ|ΗΣΟΥΝΕ|ΗΘΟΥΝΕ)$/.exec(s))&&(s=o[1],/^(Ν|Ρ|ΣΠΙ|ΣΤΡΑΒΟΜΟΥΤΣ|ΚΑΚΟΜΟΥΤΣ|ΕΞΩΝ)$/.test(o[1])&&(s+="ΟΥΝ")),null!==(o=/^(.+?)(ΟΥΜΕ|ΗΣΟΥΜΕ|ΗΘΟΥΜΕ)$/.exec(s))&&(s=o[1],/^(ΠΑΡΑΣΟΥΣ|Φ|Χ|ΩΡΙΟΠΛ|ΑΖ|ΑΛΛΟΣΟΥΣ|ΑΣΟΥΣ)$/.test(o[1])&&(s+="ΟΥΜ")),null!=(o=/^(.+?)(ΜΑΤΟΙ|ΜΑΤΟΥΣ|ΜΑΤΟ|ΜΑΤΑ|ΜΑΤΩΣ|ΜΑΤΩΝ|ΜΑΤΟΣ|ΜΑΤΕΣ|ΜΑΤΗ|ΜΑΤΗΣ|ΜΑΤΟΥ)$/.exec(s))&&(s=o[1]+"Μ",/^(ΓΡΑΜ)$/.test(o[1])?s+="Α":/^(ΓΕ|ΣΤΑ)$/.test(o[1])&&(s+="ΑΤ")),null!==(o=/^(.+?)(ΟΥΑ)$/.exec(s))&&(s=o[1]+"ΟΥ"),n.length===s.length&&null!==(o=/^(.+?)(Α|ΑΓΑΤΕ|ΑΓΑΝ|ΑΕΙ|ΑΜΑΙ|ΑΝ|ΑΣ|ΑΣΑΙ|ΑΤΑΙ|ΑΩ|Ε|ΕΙ|ΕΙΣ|ΕΙΤΕ|ΕΣΑΙ|ΕΣ|ΕΤΑΙ|Ι|ΙΕΜΑΙ|ΙΕΜΑΣΤΕ|ΙΕΤΑΙ|ΙΕΣΑΙ|ΙΕΣΑΣΤΕ|ΙΟΜΑΣΤΑΝ|ΙΟΜΟΥΝ|ΙΟΜΟΥΝΑ|ΙΟΝΤΑΝ|ΙΟΝΤΟΥΣΑΝ|ΙΟΣΑΣΤΑΝ|ΙΟΣΑΣΤΕ|ΙΟΣΟΥΝ|ΙΟΣΟΥΝΑ|ΙΟΤΑΝ|ΙΟΥΜΑ|ΙΟΥΜΑΣΤΕ|ΙΟΥΝΤΑΙ|ΙΟΥΝΤΑΝ|Η|ΗΔΕΣ|ΗΔΩΝ|ΗΘΕΙ|ΗΘΕΙΣ|ΗΘΕΙΤΕ|ΗΘΗΚΑΤΕ|ΗΘΗΚΑΝ|ΗΘΟΥΝ|ΗΘΩ|ΗΚΑΤΕ|ΗΚΑΝ|ΗΣ|ΗΣΑΝ|ΗΣΑΤΕ|ΗΣΕΙ|ΗΣΕΣ|ΗΣΟΥΝ|ΗΣΩ|Ο|ΟΙ|ΟΜΑΙ|ΟΜΑΣΤΑΝ|ΟΜΟΥΝ|ΟΜΟΥΝΑ|ΟΝΤΑΙ|ΟΝΤΑΝ|ΟΝΤΟΥΣΑΝ|ΟΣ|ΟΣΑΣΤΑΝ|ΟΣΑΣΤΕ|ΟΣΟΥΝ|ΟΣΟΥΝΑ|ΟΤΑΝ|ΟΥ|ΟΥΜΑΙ|ΟΥΜΑΣΤΕ|ΟΥΝ|ΟΥΝΤΑΙ|ΟΥΝΤΑΝ|ΟΥΣ|ΟΥΣΑΝ|ΟΥΣΑΤΕ|Υ||ΥΑ|ΥΣ|Ω|ΩΝ|ΟΙΣ)$/.exec(s))&&(s=o[1]),null!=(o=/^(.+?)(ΕΣΤΕΡ|ΕΣΤΑΤ|ΟΤΕΡ|ΟΤΑΤ|ΥΤΕΡ|ΥΤΑΤ|ΩΤΕΡ|ΩΤΑΤ)$/.exec(s))&&(/^(ΕΞ|ΕΣ|ΑΝ|ΚΑΤ|Κ|ΠΡ)$/.test(o[1])||(s=o[1]),/^(ΚΑ|Μ|ΕΛΕ|ΛΕ|ΔΕ)$/.test(o[1])&&(s+="ΥΤ")),s}var l={"ΦΑΓΙΑ":"ΦΑ","ΦΑΓΙΟΥ":"ΦΑ","ΦΑΓΙΩΝ":"ΦΑ","ΣΚΑΓΙΑ":"ΣΚΑ","ΣΚΑΓΙΟΥ":"ΣΚΑ","ΣΚΑΓΙΩΝ":"ΣΚΑ","ΣΟΓΙΟΥ":"ΣΟ","ΣΟΓΙΑ":"ΣΟ","ΣΟΓΙΩΝ":"ΣΟ","ΤΑΤΟΓΙΑ":"ΤΑΤΟ","ΤΑΤΟΓΙΟΥ":"ΤΑΤΟ","ΤΑΤΟΓΙΩΝ":"ΤΑΤΟ","ΚΡΕΑΣ":"ΚΡΕ","ΚΡΕΑΤΟΣ":"ΚΡΕ","ΚΡΕΑΤΑ":"ΚΡΕ","ΚΡΕΑΤΩΝ":"ΚΡΕ","ΠΕΡΑΣ":"ΠΕΡ","ΠΕΡΑΤΟΣ":"ΠΕΡ","ΠΕΡΑΤΑ":"ΠΕΡ","ΠΕΡΑΤΩΝ":"ΠΕΡ","ΤΕΡΑΣ":"ΤΕΡ","ΤΕΡΑΤΟΣ":"ΤΕΡ","ΤΕΡΑΤΑ":"ΤΕΡ","ΤΕΡΑΤΩΝ":"ΤΕΡ","ΦΩΣ":"ΦΩ","ΦΩΤΟΣ":"ΦΩ","ΦΩΤΑ":"ΦΩ","ΦΩΤΩΝ":"ΦΩ","ΚΑΘΕΣΤΩΣ":"ΚΑΘΕΣΤ","ΚΑΘΕΣΤΩΤΟΣ":"ΚΑΘΕΣΤ","ΚΑΘΕΣΤΩΤΑ":"ΚΑΘΕΣΤ","ΚΑΘΕΣΤΩΤΩΝ":"ΚΑΘΕΣΤ","ΓΕΓΟΝΟΣ":"ΓΕΓΟΝ","ΓΕΓΟΝΟΤΟΣ":"ΓΕΓΟΝ","ΓΕΓΟΝΟΤΑ":"ΓΕΓΟΝ","ΓΕΓΟΝΟΤΩΝ":"ΓΕΓΟΝ","ΕΥΑ":"ΕΥ"},i=["ΑΚΡΙΒΩΣ","ΑΛΑ","ΑΛΛΑ","ΑΛΛΙΩΣ","ΑΛΛΟΤΕ","ΑΜΑ","ΑΝΩ","ΑΝΑ","ΑΝΑΜΕΣΑ","ΑΝΑΜΕΤΑΞΥ","ΑΝΕΥ","ΑΝΤΙ","ΑΝΤΙΠΕΡΑ","ΑΝΤΙΟ","ΑΞΑΦΝΑ","ΑΠΟ","ΑΠΟΨΕ","ΑΡΑ","ΑΡΑΓΕ","ΑΥΡΙΟ","ΑΦΟΙ","ΑΦΟΥ","ΑΦΟΤΟΥ","ΒΡΕ","ΓΕΙΑ","ΓΙΑ","ΓΙΑΤΙ","ΓΡΑΜΜΑ","ΔΕΗ","ΔΕΝ","ΔΗΛΑΔΗ","ΔΙΧΩΣ","ΔΥΟ","ΕΑΝ","ΕΓΩ","ΕΔΩ","ΕΔΑ","ΕΙΘΕ","ΕΙΜΑΙ","ΕΙΜΑΣΤΕ","ΕΙΣΑΙ","ΕΙΣΑΣΤΕ","ΕΙΝΑΙ","ΕΙΣΤΕ","ΕΙΤΕ","ΕΚΕΙ","ΕΚΟ","ΕΛΑ","ΕΜΑΣ","ΕΜΕΙΣ","ΕΝΤΕΛΩΣ","ΕΝΤΟΣ","ΕΝΤΩΜΕΤΑΞΥ","ΕΝΩ","ΕΞΙ","ΕΞΙΣΟΥ","ΕΞΗΣ","ΕΞΩ","ΕΟΚ","ΕΠΑΝΩ","ΕΠΕΙΔΗ","ΕΠΕΙΤΑ","ΕΠΙ","ΕΠΙΣΗΣ","ΕΠΟΜΕΝΩΣ","ΕΠΤΑ","ΕΣΑΣ","ΕΣΕΙΣ","ΕΣΤΩ","ΕΣΥ","ΕΣΩ","ΕΤΣΙ","ΕΥΓΕ","ΕΦΕ","ΕΦΕΞΗΣ","ΕΧΤΕΣ","ΕΩΣ","ΗΔΗ","ΗΜΙ","ΗΠΑ","ΗΤΟΙ","ΘΕΣ","ΙΔΙΩΣ","ΙΔΗ","ΙΚΑ","ΙΣΩΣ","ΚΑΘΕ","ΚΑΘΕΤΙ","ΚΑΘΟΛΟΥ","ΚΑΘΩΣ","ΚΑΙ","ΚΑΝ","ΚΑΠΟΤΕ","ΚΑΠΟΥ","ΚΑΤΑ","ΚΑΤΙ","ΚΑΤΟΠΙΝ","ΚΑΤΩ","ΚΕΙ","ΚΙΧ","ΚΚΕ","ΚΟΛΑΝ","ΚΥΡΙΩΣ","ΚΩΣ","ΜΑΚΑΡΙ","ΜΑΛΙΣΤΑ","ΜΑΛΛΟΝ","ΜΑΙ","ΜΑΟ","ΜΑΟΥΣ","ΜΑΣ","ΜΕΘΑΥΡΙΟ","ΜΕΣ","ΜΕΣΑ","ΜΕΤΑ","ΜΕΤΑΞΥ","ΜΕΧΡΙ","ΜΗΔΕ","ΜΗΝ","ΜΗΠΩΣ","ΜΗΤΕ","ΜΙΑ","ΜΙΑΣ","ΜΙΣ","ΜΜΕ","ΜΟΛΟΝΟΤΙ","ΜΟΥ","ΜΠΑ","ΜΠΑΣ","ΜΠΟΥΦΑΝ","ΜΠΡΟΣ","ΝΑΙ","ΝΕΣ","ΝΤΑ","ΝΤΕ","ΞΑΝΑ","ΟΗΕ","ΟΚΤΩ","ΟΜΩΣ","ΟΝΕ","ΟΠΑ","ΟΠΟΥ","ΟΠΩΣ","ΟΣΟ","ΟΤΑΝ","ΟΤΕ","ΟΤΙ","ΟΥΤΕ","ΟΧΙ","ΠΑΛΙ","ΠΑΝ","ΠΑΝΟ","ΠΑΝΤΟΤΕ","ΠΑΝΤΟΥ","ΠΑΝΤΩΣ","ΠΑΝΩ","ΠΑΡΑ","ΠΕΡΑ","ΠΕΡΙ","ΠΕΡΙΠΟΥ","ΠΙΑ","ΠΙΟ","ΠΙΣΩ","ΠΛΑΙ","ΠΛΕΟΝ","ΠΛΗΝ","ΠΟΤΕ","ΠΟΥ","ΠΡΟ","ΠΡΟΣ","ΠΡΟΧΤΕΣ","ΠΡΟΧΘΕΣ","ΡΟΔΙ","ΠΩΣ","ΣΑΙ","ΣΑΣ","ΣΑΝ","ΣΕΙΣ","ΣΙΑ","ΣΚΙ","ΣΟΙ","ΣΟΥ","ΣΡΙ","ΣΥΝ","ΣΥΝΑΜΑ","ΣΧΕΔΟΝ","ΤΑΔΕ","ΤΑΞΙ","ΤΑΧΑ","ΤΕΙ","ΤΗΝ","ΤΗΣ","ΤΙΠΟΤΑ","ΤΙΠΟΤΕ","ΤΙΣ","ΤΟΝ","ΤΟΤΕ","ΤΟΥ","ΤΟΥΣ","ΤΣΑ","ΤΣΕ","ΤΣΙ","ΤΣΟΥ","ΤΩΝ","ΥΠΟ","ΥΠΟΨΗ","ΥΠΟΨΙΝ","ΥΣΤΕΡΑ","ΦΕΤΟΣ","ΦΙΣ","ΦΠΑ","ΧΑΦ","ΧΘΕΣ","ΧΤΕΣ","ΧΩΡΙΣ","ΩΣ","ΩΣΑΝ","ΩΣΟΤΟΥ","ΩΣΠΟΥ","ΩΣΤΕ","ΩΣΤΟΣΟ"],s=new RegExp("^[ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ]+$");return function(e){return"function"==typeof e.update?e.update(function(e){return n(e.toUpperCase()).toLowerCase()}):n(e.toUpperCase()).toLowerCase()}}(),e.Pipeline.registerFunction(e.el.stemmer,"stemmer-el"),e.el.stopWordFilter=e.generateStopWordFilter("αλλα αν αντι απο αυτα αυτεσ αυτη αυτο αυτοι αυτοσ αυτουσ αυτων για δε δεν εαν ειμαι ειμαστε ειναι εισαι ειστε εκεινα εκεινεσ εκεινη εκεινο εκεινοι εκεινοσ εκεινουσ εκεινων ενω επι η θα ισωσ κ και κατα κι μα με μετα μη μην να ο οι ομωσ οπωσ οσο οτι παρα ποια ποιεσ ποιο ποιοι ποιοσ ποιουσ ποιων που προσ πωσ σε στη στην στο στον τα την τησ το τον τοτε του των ωσ".split(" ")),e.Pipeline.registerFunction(e.el.stopWordFilter,"stopWordFilter-el"),e.el.normilizer=function(){var e={"Ά":"Α","ά":"α","Έ":"Ε","έ":"ε","Ή":"Η","ή":"η","Ί":"Ι","ί":"ι","Ό":"Ο","ο":"ο","Ύ":"Υ","ύ":"υ","Ώ":"Ω","ώ":"ω","Ϊ":"Ι","ϊ":"ι","Ϋ":"Υ","ϋ":"υ","ΐ":"ι","ΰ":"υ"};return function(t){if("function"==typeof t.update)return t.update(function(t){for(var r="",n=0;n=A.limit)return!0;A.cursor++}return!1}return!0}function n(){if(A.in_grouping(x,97,252)){var s=A.cursor;if(e()){if(A.cursor=s,!A.in_grouping(x,97,252))return!0;for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!0;A.cursor++}}return!1}return!0}function i(){var s,r=A.cursor;if(n()){if(A.cursor=r,!A.out_grouping(x,97,252))return;if(s=A.cursor,e()){if(A.cursor=s,!A.in_grouping(x,97,252)||A.cursor>=A.limit)return;A.cursor++}}g=A.cursor}function a(){for(;!A.in_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}for(;!A.out_grouping(x,97,252);){if(A.cursor>=A.limit)return!1;A.cursor++}return!0}function t(){var e=A.cursor;g=A.limit,p=g,v=g,i(),A.cursor=e,a()&&(p=A.cursor,a()&&(v=A.cursor))}function o(){for(var e;;){if(A.bra=A.cursor,e=A.find_among(k,6))switch(A.ket=A.cursor,e){case 1:A.slice_from("a");continue;case 2:A.slice_from("e");continue;case 3:A.slice_from("i");continue;case 4:A.slice_from("o");continue;case 5:A.slice_from("u");continue;case 6:if(A.cursor>=A.limit)break;A.cursor++;continue}break}}function u(){return g<=A.cursor}function w(){return p<=A.cursor}function c(){return v<=A.cursor}function m(){var e;if(A.ket=A.cursor,A.find_among_b(y,13)&&(A.bra=A.cursor,(e=A.find_among_b(q,11))&&u()))switch(e){case 1:A.bra=A.cursor,A.slice_from("iendo");break;case 2:A.bra=A.cursor,A.slice_from("ando");break;case 3:A.bra=A.cursor,A.slice_from("ar");break;case 4:A.bra=A.cursor,A.slice_from("er");break;case 5:A.bra=A.cursor,A.slice_from("ir");break;case 6:A.slice_del();break;case 7:A.eq_s_b(1,"u")&&A.slice_del()}}function l(e,s){if(!c())return!0;A.slice_del(),A.ket=A.cursor;var r=A.find_among_b(e,s);return r&&(A.bra=A.cursor,1==r&&c()&&A.slice_del()),!1}function d(e){return!c()||(A.slice_del(),A.ket=A.cursor,A.eq_s_b(2,e)&&(A.bra=A.cursor,c()&&A.slice_del()),!1)}function b(){var e;if(A.ket=A.cursor,e=A.find_among_b(S,46)){switch(A.bra=A.cursor,e){case 1:if(!c())return!1;A.slice_del();break;case 2:if(d("ic"))return!1;break;case 3:if(!c())return!1;A.slice_from("log");break;case 4:if(!c())return!1;A.slice_from("u");break;case 5:if(!c())return!1;A.slice_from("ente");break;case 6:if(!w())return!1;A.slice_del(),A.ket=A.cursor,e=A.find_among_b(C,4),e&&(A.bra=A.cursor,c()&&(A.slice_del(),1==e&&(A.ket=A.cursor,A.eq_s_b(2,"at")&&(A.bra=A.cursor,c()&&A.slice_del()))));break;case 7:if(l(P,3))return!1;break;case 8:if(l(F,3))return!1;break;case 9:if(d("at"))return!1}return!0}return!1}function f(){var e,s;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(W,12),A.limit_backward=s,e)){if(A.bra=A.cursor,1==e){if(!A.eq_s_b(1,"u"))return!1;A.slice_del()}return!0}return!1}function _(){var e,s,r,n;if(A.cursor>=g&&(s=A.limit_backward,A.limit_backward=g,A.ket=A.cursor,e=A.find_among_b(L,96),A.limit_backward=s,e))switch(A.bra=A.cursor,e){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"u")?(n=A.limit-A.cursor,A.eq_s_b(1,"g")?A.cursor=A.limit-n:A.cursor=A.limit-r):A.cursor=A.limit-r,A.bra=A.cursor;case 2:A.slice_del()}}function h(){var e,s;if(A.ket=A.cursor,e=A.find_among_b(z,8))switch(A.bra=A.cursor,e){case 1:u()&&A.slice_del();break;case 2:u()&&(A.slice_del(),A.ket=A.cursor,A.eq_s_b(1,"u")&&(A.bra=A.cursor,s=A.limit-A.cursor,A.eq_s_b(1,"g")&&(A.cursor=A.limit-s,u()&&A.slice_del())))}}var v,p,g,k=[new s("",-1,6),new s("á",0,1),new s("é",0,2),new s("í",0,3),new s("ó",0,4),new s("ú",0,5)],y=[new s("la",-1,-1),new s("sela",0,-1),new s("le",-1,-1),new s("me",-1,-1),new s("se",-1,-1),new s("lo",-1,-1),new s("selo",5,-1),new s("las",-1,-1),new s("selas",7,-1),new s("les",-1,-1),new s("los",-1,-1),new s("selos",10,-1),new s("nos",-1,-1)],q=[new s("ando",-1,6),new s("iendo",-1,6),new s("yendo",-1,7),new s("ándo",-1,2),new s("iéndo",-1,1),new s("ar",-1,6),new s("er",-1,6),new s("ir",-1,6),new s("ár",-1,3),new s("ér",-1,4),new s("ír",-1,5)],C=[new s("ic",-1,-1),new s("ad",-1,-1),new s("os",-1,-1),new s("iv",-1,1)],P=[new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,1)],F=[new s("ic",-1,1),new s("abil",-1,1),new s("iv",-1,1)],S=[new s("ica",-1,1),new s("ancia",-1,2),new s("encia",-1,5),new s("adora",-1,2),new s("osa",-1,1),new s("ista",-1,1),new s("iva",-1,9),new s("anza",-1,1),new s("logía",-1,3),new s("idad",-1,8),new s("able",-1,1),new s("ible",-1,1),new s("ante",-1,2),new s("mente",-1,7),new s("amente",13,6),new s("ación",-1,2),new s("ución",-1,4),new s("ico",-1,1),new s("ismo",-1,1),new s("oso",-1,1),new s("amiento",-1,1),new s("imiento",-1,1),new s("ivo",-1,9),new s("ador",-1,2),new s("icas",-1,1),new s("ancias",-1,2),new s("encias",-1,5),new s("adoras",-1,2),new s("osas",-1,1),new s("istas",-1,1),new s("ivas",-1,9),new s("anzas",-1,1),new s("logías",-1,3),new s("idades",-1,8),new s("ables",-1,1),new s("ibles",-1,1),new s("aciones",-1,2),new s("uciones",-1,4),new s("adores",-1,2),new s("antes",-1,2),new s("icos",-1,1),new s("ismos",-1,1),new s("osos",-1,1),new s("amientos",-1,1),new s("imientos",-1,1),new s("ivos",-1,9)],W=[new s("ya",-1,1),new s("ye",-1,1),new s("yan",-1,1),new s("yen",-1,1),new s("yeron",-1,1),new s("yendo",-1,1),new s("yo",-1,1),new s("yas",-1,1),new s("yes",-1,1),new s("yais",-1,1),new s("yamos",-1,1),new s("yó",-1,1)],L=[new s("aba",-1,2),new s("ada",-1,2),new s("ida",-1,2),new s("ara",-1,2),new s("iera",-1,2),new s("ía",-1,2),new s("aría",5,2),new s("ería",5,2),new s("iría",5,2),new s("ad",-1,2),new s("ed",-1,2),new s("id",-1,2),new s("ase",-1,2),new s("iese",-1,2),new s("aste",-1,2),new s("iste",-1,2),new s("an",-1,2),new s("aban",16,2),new s("aran",16,2),new s("ieran",16,2),new s("ían",16,2),new s("arían",20,2),new s("erían",20,2),new s("irían",20,2),new s("en",-1,1),new s("asen",24,2),new s("iesen",24,2),new s("aron",-1,2),new s("ieron",-1,2),new s("arán",-1,2),new s("erán",-1,2),new s("irán",-1,2),new s("ado",-1,2),new s("ido",-1,2),new s("ando",-1,2),new s("iendo",-1,2),new s("ar",-1,2),new s("er",-1,2),new s("ir",-1,2),new s("as",-1,2),new s("abas",39,2),new s("adas",39,2),new s("idas",39,2),new s("aras",39,2),new s("ieras",39,2),new s("ías",39,2),new s("arías",45,2),new s("erías",45,2),new s("irías",45,2),new s("es",-1,1),new s("ases",49,2),new s("ieses",49,2),new s("abais",-1,2),new s("arais",-1,2),new s("ierais",-1,2),new s("íais",-1,2),new s("aríais",55,2),new s("eríais",55,2),new s("iríais",55,2),new s("aseis",-1,2),new s("ieseis",-1,2),new s("asteis",-1,2),new s("isteis",-1,2),new s("áis",-1,2),new s("éis",-1,1),new s("aréis",64,2),new s("eréis",64,2),new s("iréis",64,2),new s("ados",-1,2),new s("idos",-1,2),new s("amos",-1,2),new s("ábamos",70,2),new s("áramos",70,2),new s("iéramos",70,2),new s("íamos",70,2),new s("aríamos",74,2),new s("eríamos",74,2),new s("iríamos",74,2),new s("emos",-1,1),new s("aremos",78,2),new s("eremos",78,2),new s("iremos",78,2),new s("ásemos",78,2),new s("iésemos",78,2),new s("imos",-1,2),new s("arás",-1,2),new s("erás",-1,2),new s("irás",-1,2),new s("ís",-1,2),new s("ará",-1,2),new s("erá",-1,2),new s("irá",-1,2),new s("aré",-1,2),new s("eré",-1,2),new s("iré",-1,2),new s("ió",-1,2)],z=[new s("a",-1,1),new s("e",-1,2),new s("o",-1,1),new s("os",-1,1),new s("á",-1,1),new s("é",-1,2),new s("í",-1,1),new s("ó",-1,1)],x=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],A=new r;this.setCurrent=function(e){A.setCurrent(e)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return t(),A.limit_backward=e,A.cursor=A.limit,m(),A.cursor=A.limit,b()||(A.cursor=A.limit,f()||(A.cursor=A.limit,_())),A.cursor=A.limit,h(),A.cursor=A.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fi.min.js b/assets/javascripts/lunr/min/lunr.fi.min.js new file mode 100644 index 00000000..29f5dfce --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fi.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Finnish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=function(){var e=i.stemmerSupport.Among,r=i.stemmerSupport.SnowballProgram,n=new function(){function i(){f=A.limit,d=f,n()||(f=A.cursor,n()||(d=A.cursor))}function n(){for(var i;;){if(i=A.cursor,A.in_grouping(W,97,246))break;if(A.cursor=i,i>=A.limit)return!0;A.cursor++}for(A.cursor=i;!A.out_grouping(W,97,246);){if(A.cursor>=A.limit)return!0;A.cursor++}return!1}function t(){return d<=A.cursor}function s(){var i,e;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(h,10)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.in_grouping_b(x,97,246))return;break;case 2:if(!t())return}A.slice_del()}else A.limit_backward=e}function o(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(v,9))switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:r=A.limit-A.cursor,A.eq_s_b(1,"k")||(A.cursor=A.limit-r,A.slice_del());break;case 2:A.slice_del(),A.ket=A.cursor,A.eq_s_b(3,"kse")&&(A.bra=A.cursor,A.slice_from("ksi"));break;case 3:A.slice_del();break;case 4:A.find_among_b(p,6)&&A.slice_del();break;case 5:A.find_among_b(g,6)&&A.slice_del();break;case 6:A.find_among_b(j,2)&&A.slice_del()}else A.limit_backward=e}function l(){return A.find_among_b(q,7)}function a(){return A.eq_s_b(1,"i")&&A.in_grouping_b(L,97,246)}function u(){var i,e,r;if(A.cursor>=f)if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,i=A.find_among_b(C,30)){switch(A.bra=A.cursor,A.limit_backward=e,i){case 1:if(!A.eq_s_b(1,"a"))return;break;case 2:case 9:if(!A.eq_s_b(1,"e"))return;break;case 3:if(!A.eq_s_b(1,"i"))return;break;case 4:if(!A.eq_s_b(1,"o"))return;break;case 5:if(!A.eq_s_b(1,"ä"))return;break;case 6:if(!A.eq_s_b(1,"ö"))return;break;case 7:if(r=A.limit-A.cursor,!l()&&(A.cursor=A.limit-r,!A.eq_s_b(2,"ie"))){A.cursor=A.limit-r;break}if(A.cursor=A.limit-r,A.cursor<=A.limit_backward){A.cursor=A.limit-r;break}A.cursor--,A.bra=A.cursor;break;case 8:if(!A.in_grouping_b(W,97,246)||!A.out_grouping_b(W,97,246))return}A.slice_del(),k=!0}else A.limit_backward=e}function c(){var i,e,r;if(A.cursor>=d)if(e=A.limit_backward,A.limit_backward=d,A.ket=A.cursor,i=A.find_among_b(P,14)){if(A.bra=A.cursor,A.limit_backward=e,1==i){if(r=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-r}A.slice_del()}else A.limit_backward=e}function m(){var i;A.cursor>=f&&(i=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.find_among_b(F,2)?(A.bra=A.cursor,A.limit_backward=i,A.slice_del()):A.limit_backward=i)}function w(){var i,e,r,n,t,s;if(A.cursor>=f){if(e=A.limit_backward,A.limit_backward=f,A.ket=A.cursor,A.eq_s_b(1,"t")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.in_grouping_b(W,97,246)&&(A.cursor=A.limit-r,A.slice_del(),A.limit_backward=e,n=A.limit-A.cursor,A.cursor>=d&&(A.cursor=d,t=A.limit_backward,A.limit_backward=A.cursor,A.cursor=A.limit-n,A.ket=A.cursor,i=A.find_among_b(S,2))))){if(A.bra=A.cursor,A.limit_backward=t,1==i){if(s=A.limit-A.cursor,A.eq_s_b(2,"po"))return;A.cursor=A.limit-s}return void A.slice_del()}A.limit_backward=e}}function _(){var i,e,r,n;if(A.cursor>=f){for(i=A.limit_backward,A.limit_backward=f,e=A.limit-A.cursor,l()&&(A.cursor=A.limit-e,A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.in_grouping_b(y,97,228)&&(A.bra=A.cursor,A.out_grouping_b(W,97,246)&&A.slice_del()),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"j")&&(A.bra=A.cursor,r=A.limit-A.cursor,A.eq_s_b(1,"o")?A.slice_del():(A.cursor=A.limit-r,A.eq_s_b(1,"u")&&A.slice_del())),A.cursor=A.limit-e,A.ket=A.cursor,A.eq_s_b(1,"o")&&(A.bra=A.cursor,A.eq_s_b(1,"j")&&A.slice_del()),A.cursor=A.limit-e,A.limit_backward=i;;){if(n=A.limit-A.cursor,A.out_grouping_b(W,97,246)){A.cursor=A.limit-n;break}if(A.cursor=A.limit-n,A.cursor<=A.limit_backward)return;A.cursor--}A.ket=A.cursor,A.cursor>A.limit_backward&&(A.cursor--,A.bra=A.cursor,b=A.slice_to(),A.eq_v_b(b)&&A.slice_del())}}var k,b,d,f,h=[new e("pa",-1,1),new e("sti",-1,2),new e("kaan",-1,1),new e("han",-1,1),new e("kin",-1,1),new e("hän",-1,1),new e("kään",-1,1),new e("ko",-1,1),new e("pä",-1,1),new e("kö",-1,1)],p=[new e("lla",-1,-1),new e("na",-1,-1),new e("ssa",-1,-1),new e("ta",-1,-1),new e("lta",3,-1),new e("sta",3,-1)],g=[new e("llä",-1,-1),new e("nä",-1,-1),new e("ssä",-1,-1),new e("tä",-1,-1),new e("ltä",3,-1),new e("stä",3,-1)],j=[new e("lle",-1,-1),new e("ine",-1,-1)],v=[new e("nsa",-1,3),new e("mme",-1,3),new e("nne",-1,3),new e("ni",-1,2),new e("si",-1,1),new e("an",-1,4),new e("en",-1,6),new e("än",-1,5),new e("nsä",-1,3)],q=[new e("aa",-1,-1),new e("ee",-1,-1),new e("ii",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1),new e("ää",-1,-1),new e("öö",-1,-1)],C=[new e("a",-1,8),new e("lla",0,-1),new e("na",0,-1),new e("ssa",0,-1),new e("ta",0,-1),new e("lta",4,-1),new e("sta",4,-1),new e("tta",4,9),new e("lle",-1,-1),new e("ine",-1,-1),new e("ksi",-1,-1),new e("n",-1,7),new e("han",11,1),new e("den",11,-1,a),new e("seen",11,-1,l),new e("hen",11,2),new e("tten",11,-1,a),new e("hin",11,3),new e("siin",11,-1,a),new e("hon",11,4),new e("hän",11,5),new e("hön",11,6),new e("ä",-1,8),new e("llä",22,-1),new e("nä",22,-1),new e("ssä",22,-1),new e("tä",22,-1),new e("ltä",26,-1),new e("stä",26,-1),new e("ttä",26,9)],P=[new e("eja",-1,-1),new e("mma",-1,1),new e("imma",1,-1),new e("mpa",-1,1),new e("impa",3,-1),new e("mmi",-1,1),new e("immi",5,-1),new e("mpi",-1,1),new e("impi",7,-1),new e("ejä",-1,-1),new e("mmä",-1,1),new e("immä",10,-1),new e("mpä",-1,1),new e("impä",12,-1)],F=[new e("i",-1,-1),new e("j",-1,-1)],S=[new e("mma",-1,1),new e("imma",0,-1)],y=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],W=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],x=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],A=new r;this.setCurrent=function(i){A.setCurrent(i)},this.getCurrent=function(){return A.getCurrent()},this.stem=function(){var e=A.cursor;return i(),k=!1,A.limit_backward=e,A.cursor=A.limit,s(),A.cursor=A.limit,o(),A.cursor=A.limit,u(),A.cursor=A.limit,c(),A.cursor=A.limit,k?(m(),A.cursor=A.limit):(A.cursor=A.limit,w(),A.cursor=A.limit),_(),!0}};return function(i){return"function"==typeof i.update?i.update(function(i){return n.setCurrent(i),n.stem(),n.getCurrent()}):(n.setCurrent(i),n.stem(),n.getCurrent())}}(),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.fr.min.js b/assets/javascripts/lunr/min/lunr.fr.min.js new file mode 100644 index 00000000..68cd0094 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.fr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `French` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,s){return!(!W.eq_s(1,e)||(W.ket=W.cursor,!W.in_grouping(F,97,251)))&&(W.slice_from(r),W.cursor=s,!0)}function i(e,r,s){return!!W.eq_s(1,e)&&(W.ket=W.cursor,W.slice_from(r),W.cursor=s,!0)}function n(){for(var r,s;;){if(r=W.cursor,W.in_grouping(F,97,251)){if(W.bra=W.cursor,s=W.cursor,e("u","U",r))continue;if(W.cursor=s,e("i","I",r))continue;if(W.cursor=s,i("y","Y",r))continue}if(W.cursor=r,W.bra=r,!e("y","Y",r)){if(W.cursor=r,W.eq_s(1,"q")&&(W.bra=W.cursor,i("u","U",r)))continue;if(W.cursor=r,r>=W.limit)return;W.cursor++}}}function t(){for(;!W.in_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}for(;!W.out_grouping(F,97,251);){if(W.cursor>=W.limit)return!0;W.cursor++}return!1}function u(){var e=W.cursor;if(q=W.limit,g=q,p=q,W.in_grouping(F,97,251)&&W.in_grouping(F,97,251)&&W.cursor=W.limit){W.cursor=q;break}W.cursor++}while(!W.in_grouping(F,97,251))}q=W.cursor,W.cursor=e,t()||(g=W.cursor,t()||(p=W.cursor))}function o(){for(var e,r;;){if(r=W.cursor,W.bra=r,!(e=W.find_among(h,4)))break;switch(W.ket=W.cursor,e){case 1:W.slice_from("i");break;case 2:W.slice_from("u");break;case 3:W.slice_from("y");break;case 4:if(W.cursor>=W.limit)return;W.cursor++}}}function c(){return q<=W.cursor}function a(){return g<=W.cursor}function l(){return p<=W.cursor}function w(){var e,r;if(W.ket=W.cursor,e=W.find_among_b(C,43)){switch(W.bra=W.cursor,e){case 1:if(!l())return!1;W.slice_del();break;case 2:if(!l())return!1;W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")&&(W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU"));break;case 3:if(!l())return!1;W.slice_from("log");break;case 4:if(!l())return!1;W.slice_from("u");break;case 5:if(!l())return!1;W.slice_from("ent");break;case 6:if(!c())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(z,6))switch(W.bra=W.cursor,e){case 1:l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&W.slice_del()));break;case 2:l()?W.slice_del():a()&&W.slice_from("eux");break;case 3:l()&&W.slice_del();break;case 4:c()&&W.slice_from("i")}break;case 7:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,e=W.find_among_b(y,3))switch(W.bra=W.cursor,e){case 1:l()?W.slice_del():W.slice_from("abl");break;case 2:l()?W.slice_del():W.slice_from("iqU");break;case 3:l()&&W.slice_del()}break;case 8:if(!l())return!1;if(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"at")&&(W.bra=W.cursor,l()&&(W.slice_del(),W.ket=W.cursor,W.eq_s_b(2,"ic")))){W.bra=W.cursor,l()?W.slice_del():W.slice_from("iqU");break}break;case 9:W.slice_from("eau");break;case 10:if(!a())return!1;W.slice_from("al");break;case 11:if(l())W.slice_del();else{if(!a())return!1;W.slice_from("eux")}break;case 12:if(!a()||!W.out_grouping_b(F,97,251))return!1;W.slice_del();break;case 13:return c()&&W.slice_from("ant"),!1;case 14:return c()&&W.slice_from("ent"),!1;case 15:return r=W.limit-W.cursor,W.in_grouping_b(F,97,251)&&c()&&(W.cursor=W.limit-r,W.slice_del()),!1}return!0}return!1}function f(){var e,r;if(W.cursor=q){if(s=W.limit_backward,W.limit_backward=q,W.ket=W.cursor,e=W.find_among_b(P,7))switch(W.bra=W.cursor,e){case 1:if(l()){if(i=W.limit-W.cursor,!W.eq_s_b(1,"s")&&(W.cursor=W.limit-i,!W.eq_s_b(1,"t")))break;W.slice_del()}break;case 2:W.slice_from("i");break;case 3:W.slice_del();break;case 4:W.eq_s_b(2,"gu")&&W.slice_del()}W.limit_backward=s}}function b(){var e=W.limit-W.cursor;W.find_among_b(U,5)&&(W.cursor=W.limit-e,W.ket=W.cursor,W.cursor>W.limit_backward&&(W.cursor--,W.bra=W.cursor,W.slice_del()))}function d(){for(var e,r=1;W.out_grouping_b(F,97,251);)r--;if(r<=0){if(W.ket=W.cursor,e=W.limit-W.cursor,!W.eq_s_b(1,"é")&&(W.cursor=W.limit-e,!W.eq_s_b(1,"è")))return;W.bra=W.cursor,W.slice_from("e")}}function k(){if(!w()&&(W.cursor=W.limit,!f()&&(W.cursor=W.limit,!m())))return W.cursor=W.limit,void _();W.cursor=W.limit,W.ket=W.cursor,W.eq_s_b(1,"Y")?(W.bra=W.cursor,W.slice_from("i")):(W.cursor=W.limit,W.eq_s_b(1,"ç")&&(W.bra=W.cursor,W.slice_from("c")))}var p,g,q,v=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],h=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],z=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],y=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],C=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],x=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],I=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],P=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],U=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],F=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],S=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],W=new s;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){var e=W.cursor;return n(),W.cursor=e,u(),W.limit_backward=e,W.cursor=W.limit,k(),W.cursor=W.limit,b(),W.cursor=W.limit,d(),W.cursor=W.limit_backward,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.he.min.js b/assets/javascripts/lunr/min/lunr.he.min.js new file mode 100644 index 00000000..b863d3ea --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.he.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.he=function(){this.pipeline.reset(),this.pipeline.add(e.he.trimmer,e.he.stopWordFilter,e.he.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.he.stemmer))},e.he.wordCharacters="֑-״א-תa-zA-Za-zA-Z0-90-9",e.he.trimmer=e.trimmerSupport.generateTrimmer(e.he.wordCharacters),e.Pipeline.registerFunction(e.he.trimmer,"trimmer-he"),e.he.stemmer=function(){var e=this;return e.result=!1,e.preRemoved=!1,e.sufRemoved=!1,e.pre={pre1:"ה ו י ת",pre2:"ב כ ל מ ש כש",pre3:"הב הכ הל המ הש בש לכ",pre4:"וב וכ ול ומ וש",pre5:"מה שה כל",pre6:"מב מכ מל ממ מש",pre7:"בה בו בי בת כה כו כי כת לה לו לי לת",pre8:"ובה ובו ובי ובת וכה וכו וכי וכת ולה ולו ולי ולת"},e.suf={suf1:"ך כ ם ן נ",suf2:"ים ות וך וכ ום ון ונ הם הן יכ יך ינ ים",suf3:"תי תך תכ תם תן תנ",suf4:"ותי ותך ותכ ותם ותן ותנ",suf5:"נו כם כן הם הן",suf6:"ונו וכם וכן והם והן",suf7:"תכם תכן תנו תהם תהן",suf8:"הוא היא הם הן אני אתה את אנו אתם אתן",suf9:"ני נו כי כו כם כן תי תך תכ תם תן",suf10:"י ך כ ם ן נ ת"},e.patterns=JSON.parse('{"hebrewPatterns": [{"pt1": [{"c": "ה", "l": 0}]}, {"pt2": [{"c": "ו", "l": 0}]}, {"pt3": [{"c": "י", "l": 0}]}, {"pt4": [{"c": "ת", "l": 0}]}, {"pt5": [{"c": "מ", "l": 0}]}, {"pt6": [{"c": "ל", "l": 0}]}, {"pt7": [{"c": "ב", "l": 0}]}, {"pt8": [{"c": "כ", "l": 0}]}, {"pt9": [{"c": "ש", "l": 0}]}, {"pt10": [{"c": "כש", "l": 0}]}, {"pt11": [{"c": "בה", "l": 0}]}, {"pt12": [{"c": "וב", "l": 0}]}, {"pt13": [{"c": "וכ", "l": 0}]}, {"pt14": [{"c": "ול", "l": 0}]}, {"pt15": [{"c": "ומ", "l": 0}]}, {"pt16": [{"c": "וש", "l": 0}]}, {"pt17": [{"c": "הב", "l": 0}]}, {"pt18": [{"c": "הכ", "l": 0}]}, {"pt19": [{"c": "הל", "l": 0}]}, {"pt20": [{"c": "המ", "l": 0}]}, {"pt21": [{"c": "הש", "l": 0}]}, {"pt22": [{"c": "מה", "l": 0}]}, {"pt23": [{"c": "שה", "l": 0}]}, {"pt24": [{"c": "כל", "l": 0}]}]}'),e.execArray=["cleanWord","removeDiacritics","removeStopWords","normalizeHebrewCharacters"],e.stem=function(){var r=0;for(e.result=!1,e.preRemoved=!1,e.sufRemoved=!1;r=0)return!0},e.normalizeHebrewCharacters=function(){return e.word=e.word.replace("ך","כ"),e.word=e.word.replace("ם","מ"),e.word=e.word.replace("ן","נ"),e.word=e.word.replace("ף","פ"),e.word=e.word.replace("ץ","צ"),!1},function(r){return"function"==typeof r.update?r.update(function(r){return e.setCurrent(r),e.stem(),e.getCurrent()}):(e.setCurrent(r),e.stem(),e.getCurrent())}}(),e.Pipeline.registerFunction(e.he.stemmer,"stemmer-he"),e.he.stopWordFilter=e.generateStopWordFilter("אבל או אולי אותו אותי אותך אותם אותן אותנו אז אחר אחרות אחרי אחריכן אחרים אחרת אי איזה איך אין איפה אל אלה אלו אם אנחנו אני אף אפשר את אתה אתכם אתכן אתם אתן באיזה באיזו בגלל בין בלבד בעבור בעזרת בכל בכן בלי במידה במקום שבו ברוב בשביל בשעה ש בתוך גם דרך הוא היא היה היי היכן היתה היתי הם הן הנה הסיבה שבגללה הרי ואילו ואת זאת זה זות יהיה יוכל יוכלו יותר מדי יכול יכולה יכולות יכולים יכל יכלה יכלו יש כאן כאשר כולם כולן כזה כי כיצד כך כל כלל כמו כן כפי כש לא לאו לאיזותך לאן לבין לה להיות להם להן לו לזה לזות לי לך לכם לכן למה למעלה למעלה מ למטה למטה מ למעט למקום שבו למרות לנו לעבר לעיכן לפיכך לפני מאד מאחורי מאיזו סיבה מאין מאיפה מבלי מבעד מדוע מה מהיכן מול מחוץ מי מידע מכאן מכל מכן מלבד מן מנין מסוגל מעט מעטים מעל מצד מקום בו מתחת מתי נגד נגר נו עד עז על עלי עליו עליה עליהם עליך עלינו עם עצמה עצמהם עצמהן עצמו עצמי עצמם עצמן עצמנו פה רק שוב של שלה שלהם שלהן שלו שלי שלך שלכה שלכם שלכן שלנו שם תהיה תחת".split(" ")),e.Pipeline.registerFunction(e.he.stopWordFilter,"stopWordFilter-he")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hi.min.js b/assets/javascripts/lunr/min/lunr.hi.min.js new file mode 100644 index 00000000..7dbc4140 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Za-zA-Z0-90-9",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hu.min.js b/assets/javascripts/lunr/min/lunr.hu.min.js new file mode 100644 index 00000000..ed9d909f --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hu.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Hungarian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,n=L.cursor;if(d=L.limit,L.in_grouping(W,97,252))for(;;){if(e=L.cursor,L.out_grouping(W,97,252))return L.cursor=e,L.find_among(g,8)||(L.cursor=e,e=L.limit)return void(d=e);L.cursor++}if(L.cursor=n,L.out_grouping(W,97,252)){for(;!L.in_grouping(W,97,252);){if(L.cursor>=L.limit)return;L.cursor++}d=L.cursor}}function i(){return d<=L.cursor}function a(){var e;if(L.ket=L.cursor,(e=L.find_among_b(h,2))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e")}}function t(){var e=L.limit-L.cursor;return!!L.find_among_b(p,23)&&(L.cursor=L.limit-e,!0)}function s(){if(L.cursor>L.limit_backward){L.cursor--,L.ket=L.cursor;var e=L.cursor-1;L.limit_backward<=e&&e<=L.limit&&(L.cursor=e,L.bra=e,L.slice_del())}}function c(){var e;if(L.ket=L.cursor,(e=L.find_among_b(_,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function o(){L.ket=L.cursor,L.find_among_b(v,44)&&(L.bra=L.cursor,i()&&(L.slice_del(),a()))}function w(){var e;if(L.ket=L.cursor,(e=L.find_among_b(z,3))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("e");break;case 2:case 3:L.slice_from("a")}}function l(){var e;if(L.ket=L.cursor,(e=L.find_among_b(y,6))&&(L.bra=L.cursor,i()))switch(e){case 1:case 2:L.slice_del();break;case 3:L.slice_from("a");break;case 4:L.slice_from("e")}}function u(){var e;if(L.ket=L.cursor,(e=L.find_among_b(j,2))&&(L.bra=L.cursor,i())){if((1==e||2==e)&&!t())return;L.slice_del(),s()}}function m(){var e;if(L.ket=L.cursor,(e=L.find_among_b(C,7))&&(L.bra=L.cursor,i()))switch(e){case 1:L.slice_from("a");break;case 2:L.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:L.slice_del()}}function k(){var e;if(L.ket=L.cursor,(e=L.find_among_b(P,12))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 9:L.slice_del();break;case 2:case 5:case 8:L.slice_from("e");break;case 3:case 6:L.slice_from("a")}}function f(){var e;if(L.ket=L.cursor,(e=L.find_among_b(F,31))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:L.slice_del();break;case 2:case 5:case 10:case 14:case 19:L.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:L.slice_from("e")}}function b(){var e;if(L.ket=L.cursor,(e=L.find_among_b(S,42))&&(L.bra=L.cursor,i()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:L.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:L.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:L.slice_from("e")}}var d,g=[new n("cs",-1,-1),new n("dzs",-1,-1),new n("gy",-1,-1),new n("ly",-1,-1),new n("ny",-1,-1),new n("sz",-1,-1),new n("ty",-1,-1),new n("zs",-1,-1)],h=[new n("á",-1,1),new n("é",-1,2)],p=[new n("bb",-1,-1),new n("cc",-1,-1),new n("dd",-1,-1),new n("ff",-1,-1),new n("gg",-1,-1),new n("jj",-1,-1),new n("kk",-1,-1),new n("ll",-1,-1),new n("mm",-1,-1),new n("nn",-1,-1),new n("pp",-1,-1),new n("rr",-1,-1),new n("ccs",-1,-1),new n("ss",-1,-1),new n("zzs",-1,-1),new n("tt",-1,-1),new n("vv",-1,-1),new n("ggy",-1,-1),new n("lly",-1,-1),new n("nny",-1,-1),new n("tty",-1,-1),new n("ssz",-1,-1),new n("zz",-1,-1)],_=[new n("al",-1,1),new n("el",-1,2)],v=[new n("ba",-1,-1),new n("ra",-1,-1),new n("be",-1,-1),new n("re",-1,-1),new n("ig",-1,-1),new n("nak",-1,-1),new n("nek",-1,-1),new n("val",-1,-1),new n("vel",-1,-1),new n("ul",-1,-1),new n("nál",-1,-1),new n("nél",-1,-1),new n("ból",-1,-1),new n("ról",-1,-1),new n("tól",-1,-1),new n("bõl",-1,-1),new n("rõl",-1,-1),new n("tõl",-1,-1),new n("ül",-1,-1),new n("n",-1,-1),new n("an",19,-1),new n("ban",20,-1),new n("en",19,-1),new n("ben",22,-1),new n("képpen",22,-1),new n("on",19,-1),new n("ön",19,-1),new n("képp",-1,-1),new n("kor",-1,-1),new n("t",-1,-1),new n("at",29,-1),new n("et",29,-1),new n("ként",29,-1),new n("anként",32,-1),new n("enként",32,-1),new n("onként",32,-1),new n("ot",29,-1),new n("ért",29,-1),new n("öt",29,-1),new n("hez",-1,-1),new n("hoz",-1,-1),new n("höz",-1,-1),new n("vá",-1,-1),new n("vé",-1,-1)],z=[new n("án",-1,2),new n("én",-1,1),new n("ánként",-1,3)],y=[new n("stul",-1,2),new n("astul",0,1),new n("ástul",0,3),new n("stül",-1,2),new n("estül",3,1),new n("éstül",3,4)],j=[new n("á",-1,1),new n("é",-1,2)],C=[new n("k",-1,7),new n("ak",0,4),new n("ek",0,6),new n("ok",0,5),new n("ák",0,1),new n("ék",0,2),new n("ök",0,3)],P=[new n("éi",-1,7),new n("áéi",0,6),new n("ééi",0,5),new n("é",-1,9),new n("ké",3,4),new n("aké",4,1),new n("eké",4,1),new n("oké",4,1),new n("áké",4,3),new n("éké",4,2),new n("öké",4,1),new n("éé",3,8)],F=[new n("a",-1,18),new n("ja",0,17),new n("d",-1,16),new n("ad",2,13),new n("ed",2,13),new n("od",2,13),new n("ád",2,14),new n("éd",2,15),new n("öd",2,13),new n("e",-1,18),new n("je",9,17),new n("nk",-1,4),new n("unk",11,1),new n("ánk",11,2),new n("énk",11,3),new n("ünk",11,1),new n("uk",-1,8),new n("juk",16,7),new n("ájuk",17,5),new n("ük",-1,8),new n("jük",19,7),new n("éjük",20,6),new n("m",-1,12),new n("am",22,9),new n("em",22,9),new n("om",22,9),new n("ám",22,10),new n("ém",22,11),new n("o",-1,18),new n("á",-1,19),new n("é",-1,20)],S=[new n("id",-1,10),new n("aid",0,9),new n("jaid",1,6),new n("eid",0,9),new n("jeid",3,6),new n("áid",0,7),new n("éid",0,8),new n("i",-1,15),new n("ai",7,14),new n("jai",8,11),new n("ei",7,14),new n("jei",10,11),new n("ái",7,12),new n("éi",7,13),new n("itek",-1,24),new n("eitek",14,21),new n("jeitek",15,20),new n("éitek",14,23),new n("ik",-1,29),new n("aik",18,26),new n("jaik",19,25),new n("eik",18,26),new n("jeik",21,25),new n("áik",18,27),new n("éik",18,28),new n("ink",-1,20),new n("aink",25,17),new n("jaink",26,16),new n("eink",25,17),new n("jeink",28,16),new n("áink",25,18),new n("éink",25,19),new n("aitok",-1,21),new n("jaitok",32,20),new n("áitok",-1,22),new n("im",-1,5),new n("aim",35,4),new n("jaim",36,1),new n("eim",35,4),new n("jeim",38,1),new n("áim",35,2),new n("éim",35,3)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var n=L.cursor;return e(),L.limit_backward=n,L.cursor=L.limit,c(),L.cursor=L.limit,o(),L.cursor=L.limit,w(),L.cursor=L.limit,l(),L.cursor=L.limit,u(),L.cursor=L.limit,k(),L.cursor=L.limit,f(),L.cursor=L.limit,b(),L.cursor=L.limit,m(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.hy.min.js b/assets/javascripts/lunr/min/lunr.hy.min.js new file mode 100644 index 00000000..b37f7929 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.hy.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hy=function(){this.pipeline.reset(),this.pipeline.add(e.hy.trimmer,e.hy.stopWordFilter)},e.hy.wordCharacters="[A-Za-z԰-֏ff-ﭏ]",e.hy.trimmer=e.trimmerSupport.generateTrimmer(e.hy.wordCharacters),e.Pipeline.registerFunction(e.hy.trimmer,"trimmer-hy"),e.hy.stopWordFilter=e.generateStopWordFilter("դու և եք էիր էիք հետո նաև նրանք որը վրա է որ պիտի են այս մեջ ն իր ու ի այդ որոնք այն կամ էր մի ես համար այլ իսկ էին ենք հետ ին թ էինք մենք նրա նա դուք եմ էի ըստ որպես ում".split(" ")),e.Pipeline.registerFunction(e.hy.stopWordFilter,"stopWordFilter-hy"),e.hy.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}(),e.Pipeline.registerFunction(e.hy.stemmer,"stemmer-hy")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.it.min.js b/assets/javascripts/lunr/min/lunr.it.min.js new file mode 100644 index 00000000..344b6a3c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.it.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Italian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(e,r,n){return!(!x.eq_s(1,e)||(x.ket=x.cursor,!x.in_grouping(L,97,249)))&&(x.slice_from(r),x.cursor=n,!0)}function i(){for(var r,n,i,o,t=x.cursor;;){if(x.bra=x.cursor,r=x.find_among(h,7))switch(x.ket=x.cursor,r){case 1:x.slice_from("à");continue;case 2:x.slice_from("è");continue;case 3:x.slice_from("ì");continue;case 4:x.slice_from("ò");continue;case 5:x.slice_from("ù");continue;case 6:x.slice_from("qU");continue;case 7:if(x.cursor>=x.limit)break;x.cursor++;continue}break}for(x.cursor=t;;)for(n=x.cursor;;){if(i=x.cursor,x.in_grouping(L,97,249)){if(x.bra=x.cursor,o=x.cursor,e("u","U",i))break;if(x.cursor=o,e("i","I",i))break}if(x.cursor=i,x.cursor>=x.limit)return void(x.cursor=n);x.cursor++}}function o(e){if(x.cursor=e,!x.in_grouping(L,97,249))return!1;for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function t(){if(x.in_grouping(L,97,249)){var e=x.cursor;if(x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return o(e);x.cursor++}return!0}return o(e)}return!1}function s(){var e,r=x.cursor;if(!t()){if(x.cursor=r,!x.out_grouping(L,97,249))return;if(e=x.cursor,x.out_grouping(L,97,249)){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return x.cursor=e,void(x.in_grouping(L,97,249)&&x.cursor=x.limit)return;x.cursor++}k=x.cursor}function a(){for(;!x.in_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}for(;!x.out_grouping(L,97,249);){if(x.cursor>=x.limit)return!1;x.cursor++}return!0}function u(){var e=x.cursor;k=x.limit,p=k,g=k,s(),x.cursor=e,a()&&(p=x.cursor,a()&&(g=x.cursor))}function c(){for(var e;;){if(x.bra=x.cursor,!(e=x.find_among(q,3)))break;switch(x.ket=x.cursor,e){case 1:x.slice_from("i");break;case 2:x.slice_from("u");break;case 3:if(x.cursor>=x.limit)return;x.cursor++}}}function w(){return k<=x.cursor}function l(){return p<=x.cursor}function m(){return g<=x.cursor}function f(){var e;if(x.ket=x.cursor,x.find_among_b(C,37)&&(x.bra=x.cursor,(e=x.find_among_b(z,5))&&w()))switch(e){case 1:x.slice_del();break;case 2:x.slice_from("e")}}function v(){var e;if(x.ket=x.cursor,!(e=x.find_among_b(S,51)))return!1;switch(x.bra=x.cursor,e){case 1:if(!m())return!1;x.slice_del();break;case 2:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del());break;case 3:if(!m())return!1;x.slice_from("log");break;case 4:if(!m())return!1;x.slice_from("u");break;case 5:if(!m())return!1;x.slice_from("ente");break;case 6:if(!w())return!1;x.slice_del();break;case 7:if(!l())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(P,4),e&&(x.bra=x.cursor,m()&&(x.slice_del(),1==e&&(x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&x.slice_del()))));break;case 8:if(!m())return!1;x.slice_del(),x.ket=x.cursor,e=x.find_among_b(F,3),e&&(x.bra=x.cursor,1==e&&m()&&x.slice_del());break;case 9:if(!m())return!1;x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"at")&&(x.bra=x.cursor,m()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(2,"ic")&&(x.bra=x.cursor,m()&&x.slice_del())))}return!0}function b(){var e,r;x.cursor>=k&&(r=x.limit_backward,x.limit_backward=k,x.ket=x.cursor,e=x.find_among_b(W,87),e&&(x.bra=x.cursor,1==e&&x.slice_del()),x.limit_backward=r)}function d(){var e=x.limit-x.cursor;if(x.ket=x.cursor,x.in_grouping_b(y,97,242)&&(x.bra=x.cursor,w()&&(x.slice_del(),x.ket=x.cursor,x.eq_s_b(1,"i")&&(x.bra=x.cursor,w()))))return void x.slice_del();x.cursor=x.limit-e}function _(){d(),x.ket=x.cursor,x.eq_s_b(1,"h")&&(x.bra=x.cursor,x.in_grouping_b(U,99,103)&&w()&&x.slice_del())}var g,p,k,h=[new r("",-1,7),new r("qu",0,6),new r("á",0,1),new r("é",0,2),new r("í",0,3),new r("ó",0,4),new r("ú",0,5)],q=[new r("",-1,3),new r("I",0,1),new r("U",0,2)],C=[new r("la",-1,-1),new r("cela",0,-1),new r("gliela",0,-1),new r("mela",0,-1),new r("tela",0,-1),new r("vela",0,-1),new r("le",-1,-1),new r("cele",6,-1),new r("gliele",6,-1),new r("mele",6,-1),new r("tele",6,-1),new r("vele",6,-1),new r("ne",-1,-1),new r("cene",12,-1),new r("gliene",12,-1),new r("mene",12,-1),new r("sene",12,-1),new r("tene",12,-1),new r("vene",12,-1),new r("ci",-1,-1),new r("li",-1,-1),new r("celi",20,-1),new r("glieli",20,-1),new r("meli",20,-1),new r("teli",20,-1),new r("veli",20,-1),new r("gli",20,-1),new r("mi",-1,-1),new r("si",-1,-1),new r("ti",-1,-1),new r("vi",-1,-1),new r("lo",-1,-1),new r("celo",31,-1),new r("glielo",31,-1),new r("melo",31,-1),new r("telo",31,-1),new r("velo",31,-1)],z=[new r("ando",-1,1),new r("endo",-1,1),new r("ar",-1,2),new r("er",-1,2),new r("ir",-1,2)],P=[new r("ic",-1,-1),new r("abil",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],F=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],S=[new r("ica",-1,1),new r("logia",-1,3),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,9),new r("anza",-1,1),new r("enza",-1,5),new r("ice",-1,1),new r("atrice",7,1),new r("iche",-1,1),new r("logie",-1,3),new r("abile",-1,1),new r("ibile",-1,1),new r("usione",-1,4),new r("azione",-1,2),new r("uzione",-1,4),new r("atore",-1,2),new r("ose",-1,1),new r("ante",-1,1),new r("mente",-1,1),new r("amente",19,7),new r("iste",-1,1),new r("ive",-1,9),new r("anze",-1,1),new r("enze",-1,5),new r("ici",-1,1),new r("atrici",25,1),new r("ichi",-1,1),new r("abili",-1,1),new r("ibili",-1,1),new r("ismi",-1,1),new r("usioni",-1,4),new r("azioni",-1,2),new r("uzioni",-1,4),new r("atori",-1,2),new r("osi",-1,1),new r("anti",-1,1),new r("amenti",-1,6),new r("imenti",-1,6),new r("isti",-1,1),new r("ivi",-1,9),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,6),new r("imento",-1,6),new r("ivo",-1,9),new r("ità",-1,8),new r("istà",-1,1),new r("istè",-1,1),new r("istì",-1,1)],W=[new r("isca",-1,1),new r("enda",-1,1),new r("ata",-1,1),new r("ita",-1,1),new r("uta",-1,1),new r("ava",-1,1),new r("eva",-1,1),new r("iva",-1,1),new r("erebbe",-1,1),new r("irebbe",-1,1),new r("isce",-1,1),new r("ende",-1,1),new r("are",-1,1),new r("ere",-1,1),new r("ire",-1,1),new r("asse",-1,1),new r("ate",-1,1),new r("avate",16,1),new r("evate",16,1),new r("ivate",16,1),new r("ete",-1,1),new r("erete",20,1),new r("irete",20,1),new r("ite",-1,1),new r("ereste",-1,1),new r("ireste",-1,1),new r("ute",-1,1),new r("erai",-1,1),new r("irai",-1,1),new r("isci",-1,1),new r("endi",-1,1),new r("erei",-1,1),new r("irei",-1,1),new r("assi",-1,1),new r("ati",-1,1),new r("iti",-1,1),new r("eresti",-1,1),new r("iresti",-1,1),new r("uti",-1,1),new r("avi",-1,1),new r("evi",-1,1),new r("ivi",-1,1),new r("isco",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("Yamo",-1,1),new r("iamo",-1,1),new r("avamo",-1,1),new r("evamo",-1,1),new r("ivamo",-1,1),new r("eremo",-1,1),new r("iremo",-1,1),new r("assimo",-1,1),new r("ammo",-1,1),new r("emmo",-1,1),new r("eremmo",54,1),new r("iremmo",54,1),new r("immo",-1,1),new r("ano",-1,1),new r("iscano",58,1),new r("avano",58,1),new r("evano",58,1),new r("ivano",58,1),new r("eranno",-1,1),new r("iranno",-1,1),new r("ono",-1,1),new r("iscono",65,1),new r("arono",65,1),new r("erono",65,1),new r("irono",65,1),new r("erebbero",-1,1),new r("irebbero",-1,1),new r("assero",-1,1),new r("essero",-1,1),new r("issero",-1,1),new r("ato",-1,1),new r("ito",-1,1),new r("uto",-1,1),new r("avo",-1,1),new r("evo",-1,1),new r("ivo",-1,1),new r("ar",-1,1),new r("ir",-1,1),new r("erà",-1,1),new r("irà",-1,1),new r("erò",-1,1),new r("irò",-1,1)],L=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],y=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],U=[17],x=new n;this.setCurrent=function(e){x.setCurrent(e)},this.getCurrent=function(){return x.getCurrent()},this.stem=function(){var e=x.cursor;return i(),x.cursor=e,u(),x.limit_backward=e,x.cursor=x.limit,f(),x.cursor=x.limit,v()||(x.cursor=x.limit,b()),x.cursor=x.limit,_(),x.cursor=x.limit_backward,c(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ja.min.js b/assets/javascripts/lunr/min/lunr.ja.min.js new file mode 100644 index 00000000..5f254ebe --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ja.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n=C.limit)break;C.cursor++;continue}break}for(C.cursor=o,C.bra=o,C.eq_s(1,"y")?(C.ket=C.cursor,C.slice_from("Y")):C.cursor=o;;)if(e=C.cursor,C.in_grouping(q,97,232)){if(i=C.cursor,C.bra=i,C.eq_s(1,"i"))C.ket=C.cursor,C.in_grouping(q,97,232)&&(C.slice_from("I"),C.cursor=e);else if(C.cursor=i,C.eq_s(1,"y"))C.ket=C.cursor,C.slice_from("Y"),C.cursor=e;else if(n(e))break}else if(n(e))break}function n(r){return C.cursor=r,r>=C.limit||(C.cursor++,!1)}function o(){_=C.limit,d=_,t()||(_=C.cursor,_<3&&(_=3),t()||(d=C.cursor))}function t(){for(;!C.in_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}for(;!C.out_grouping(q,97,232);){if(C.cursor>=C.limit)return!0;C.cursor++}return!1}function s(){for(var r;;)if(C.bra=C.cursor,r=C.find_among(p,3))switch(C.ket=C.cursor,r){case 1:C.slice_from("y");break;case 2:C.slice_from("i");break;case 3:if(C.cursor>=C.limit)return;C.cursor++}}function u(){return _<=C.cursor}function c(){return d<=C.cursor}function a(){var r=C.limit-C.cursor;C.find_among_b(g,3)&&(C.cursor=C.limit-r,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del()))}function l(){var r;w=!1,C.ket=C.cursor,C.eq_s_b(1,"e")&&(C.bra=C.cursor,u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.slice_del(),w=!0,a())))}function m(){var r;u()&&(r=C.limit-C.cursor,C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-r,C.eq_s_b(3,"gem")||(C.cursor=C.limit-r,C.slice_del(),a())))}function f(){var r,e,i,n,o,t,s=C.limit-C.cursor;if(C.ket=C.cursor,r=C.find_among_b(h,5))switch(C.bra=C.cursor,r){case 1:u()&&C.slice_from("heid");break;case 2:m();break;case 3:u()&&C.out_grouping_b(j,97,232)&&C.slice_del()}if(C.cursor=C.limit-s,l(),C.cursor=C.limit-s,C.ket=C.cursor,C.eq_s_b(4,"heid")&&(C.bra=C.cursor,c()&&(e=C.limit-C.cursor,C.eq_s_b(1,"c")||(C.cursor=C.limit-e,C.slice_del(),C.ket=C.cursor,C.eq_s_b(2,"en")&&(C.bra=C.cursor,m())))),C.cursor=C.limit-s,C.ket=C.cursor,r=C.find_among_b(k,6))switch(C.bra=C.cursor,r){case 1:if(c()){if(C.slice_del(),i=C.limit-C.cursor,C.ket=C.cursor,C.eq_s_b(2,"ig")&&(C.bra=C.cursor,c()&&(n=C.limit-C.cursor,!C.eq_s_b(1,"e")))){C.cursor=C.limit-n,C.slice_del();break}C.cursor=C.limit-i,a()}break;case 2:c()&&(o=C.limit-C.cursor,C.eq_s_b(1,"e")||(C.cursor=C.limit-o,C.slice_del()));break;case 3:c()&&(C.slice_del(),l());break;case 4:c()&&C.slice_del();break;case 5:c()&&w&&C.slice_del()}C.cursor=C.limit-s,C.out_grouping_b(z,73,232)&&(t=C.limit-C.cursor,C.find_among_b(v,4)&&C.out_grouping_b(q,97,232)&&(C.cursor=C.limit-t,C.ket=C.cursor,C.cursor>C.limit_backward&&(C.cursor--,C.bra=C.cursor,C.slice_del())))}var d,_,w,b=[new e("",-1,6),new e("á",0,1),new e("ä",0,1),new e("é",0,2),new e("ë",0,2),new e("í",0,3),new e("ï",0,3),new e("ó",0,4),new e("ö",0,4),new e("ú",0,5),new e("ü",0,5)],p=[new e("",-1,3),new e("I",0,2),new e("Y",0,1)],g=[new e("dd",-1,-1),new e("kk",-1,-1),new e("tt",-1,-1)],h=[new e("ene",-1,2),new e("se",-1,3),new e("en",-1,2),new e("heden",2,1),new e("s",-1,3)],k=[new e("end",-1,1),new e("ig",-1,2),new e("ing",-1,1),new e("lijk",-1,3),new e("baar",-1,4),new e("bar",-1,5)],v=[new e("aa",-1,-1),new e("ee",-1,-1),new e("oo",-1,-1),new e("uu",-1,-1)],q=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],z=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],j=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],C=new i;this.setCurrent=function(r){C.setCurrent(r)},this.getCurrent=function(){return C.getCurrent()},this.stem=function(){var e=C.cursor;return r(),C.cursor=e,o(),C.limit_backward=e,C.cursor=C.limit,f(),C.cursor=C.limit_backward,s(),!0}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.no.min.js b/assets/javascripts/lunr/min/lunr.no.min.js new file mode 100644 index 00000000..92bc7e4e --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.no.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Norwegian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.pt.min.js b/assets/javascripts/lunr/min/lunr.pt.min.js new file mode 100644 index 00000000..6c16996d --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.pt.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Portuguese` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=function(){var r=e.stemmerSupport.Among,s=e.stemmerSupport.SnowballProgram,n=new function(){function e(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(k,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("a~");continue;case 2:z.slice_from("o~");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function n(){if(z.out_grouping(y,97,250)){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!0;z.cursor++}return!1}return!0}function i(){if(z.in_grouping(y,97,250))for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return g=z.cursor,!0}function o(){var e,r,s=z.cursor;if(z.in_grouping(y,97,250))if(e=z.cursor,n()){if(z.cursor=e,i())return}else g=z.cursor;if(z.cursor=s,z.out_grouping(y,97,250)){if(r=z.cursor,n()){if(z.cursor=r,!z.in_grouping(y,97,250)||z.cursor>=z.limit)return;z.cursor++}g=z.cursor}}function t(){for(;!z.in_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}for(;!z.out_grouping(y,97,250);){if(z.cursor>=z.limit)return!1;z.cursor++}return!0}function a(){var e=z.cursor;g=z.limit,b=g,h=g,o(),z.cursor=e,t()&&(b=z.cursor,t()&&(h=z.cursor))}function u(){for(var e;;){if(z.bra=z.cursor,e=z.find_among(q,3))switch(z.ket=z.cursor,e){case 1:z.slice_from("ã");continue;case 2:z.slice_from("õ");continue;case 3:if(z.cursor>=z.limit)break;z.cursor++;continue}break}}function w(){return g<=z.cursor}function m(){return b<=z.cursor}function c(){return h<=z.cursor}function l(){var e;if(z.ket=z.cursor,!(e=z.find_among_b(F,45)))return!1;switch(z.bra=z.cursor,e){case 1:if(!c())return!1;z.slice_del();break;case 2:if(!c())return!1;z.slice_from("log");break;case 3:if(!c())return!1;z.slice_from("u");break;case 4:if(!c())return!1;z.slice_from("ente");break;case 5:if(!m())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(j,4),e&&(z.bra=z.cursor,c()&&(z.slice_del(),1==e&&(z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del()))));break;case 6:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(C,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 7:if(!c())return!1;z.slice_del(),z.ket=z.cursor,e=z.find_among_b(P,3),e&&(z.bra=z.cursor,1==e&&c()&&z.slice_del());break;case 8:if(!c())return!1;z.slice_del(),z.ket=z.cursor,z.eq_s_b(2,"at")&&(z.bra=z.cursor,c()&&z.slice_del());break;case 9:if(!w()||!z.eq_s_b(1,"e"))return!1;z.slice_from("ir")}return!0}function f(){var e,r;if(z.cursor>=g){if(r=z.limit_backward,z.limit_backward=g,z.ket=z.cursor,e=z.find_among_b(S,120))return z.bra=z.cursor,1==e&&z.slice_del(),z.limit_backward=r,!0;z.limit_backward=r}return!1}function d(){var e;z.ket=z.cursor,(e=z.find_among_b(W,7))&&(z.bra=z.cursor,1==e&&w()&&z.slice_del())}function v(e,r){if(z.eq_s_b(1,e)){z.bra=z.cursor;var s=z.limit-z.cursor;if(z.eq_s_b(1,r))return z.cursor=z.limit-s,w()&&z.slice_del(),!1}return!0}function p(){var e;if(z.ket=z.cursor,e=z.find_among_b(L,4))switch(z.bra=z.cursor,e){case 1:w()&&(z.slice_del(),z.ket=z.cursor,z.limit-z.cursor,v("u","g")&&v("i","c"));break;case 2:z.slice_from("c")}}function _(){if(!l()&&(z.cursor=z.limit,!f()))return z.cursor=z.limit,void d();z.cursor=z.limit,z.ket=z.cursor,z.eq_s_b(1,"i")&&(z.bra=z.cursor,z.eq_s_b(1,"c")&&(z.cursor=z.limit,w()&&z.slice_del()))}var h,b,g,k=[new r("",-1,3),new r("ã",0,1),new r("õ",0,2)],q=[new r("",-1,3),new r("a~",0,1),new r("o~",0,2)],j=[new r("ic",-1,-1),new r("ad",-1,-1),new r("os",-1,-1),new r("iv",-1,1)],C=[new r("ante",-1,1),new r("avel",-1,1),new r("ível",-1,1)],P=[new r("ic",-1,1),new r("abil",-1,1),new r("iv",-1,1)],F=[new r("ica",-1,1),new r("ância",-1,1),new r("ência",-1,4),new r("ira",-1,9),new r("adora",-1,1),new r("osa",-1,1),new r("ista",-1,1),new r("iva",-1,8),new r("eza",-1,1),new r("logía",-1,2),new r("idade",-1,7),new r("ante",-1,1),new r("mente",-1,6),new r("amente",12,5),new r("ável",-1,1),new r("ível",-1,1),new r("ución",-1,3),new r("ico",-1,1),new r("ismo",-1,1),new r("oso",-1,1),new r("amento",-1,1),new r("imento",-1,1),new r("ivo",-1,8),new r("aça~o",-1,1),new r("ador",-1,1),new r("icas",-1,1),new r("ências",-1,4),new r("iras",-1,9),new r("adoras",-1,1),new r("osas",-1,1),new r("istas",-1,1),new r("ivas",-1,8),new r("ezas",-1,1),new r("logías",-1,2),new r("idades",-1,7),new r("uciones",-1,3),new r("adores",-1,1),new r("antes",-1,1),new r("aço~es",-1,1),new r("icos",-1,1),new r("ismos",-1,1),new r("osos",-1,1),new r("amentos",-1,1),new r("imentos",-1,1),new r("ivos",-1,8)],S=[new r("ada",-1,1),new r("ida",-1,1),new r("ia",-1,1),new r("aria",2,1),new r("eria",2,1),new r("iria",2,1),new r("ara",-1,1),new r("era",-1,1),new r("ira",-1,1),new r("ava",-1,1),new r("asse",-1,1),new r("esse",-1,1),new r("isse",-1,1),new r("aste",-1,1),new r("este",-1,1),new r("iste",-1,1),new r("ei",-1,1),new r("arei",16,1),new r("erei",16,1),new r("irei",16,1),new r("am",-1,1),new r("iam",20,1),new r("ariam",21,1),new r("eriam",21,1),new r("iriam",21,1),new r("aram",20,1),new r("eram",20,1),new r("iram",20,1),new r("avam",20,1),new r("em",-1,1),new r("arem",29,1),new r("erem",29,1),new r("irem",29,1),new r("assem",29,1),new r("essem",29,1),new r("issem",29,1),new r("ado",-1,1),new r("ido",-1,1),new r("ando",-1,1),new r("endo",-1,1),new r("indo",-1,1),new r("ara~o",-1,1),new r("era~o",-1,1),new r("ira~o",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("ir",-1,1),new r("as",-1,1),new r("adas",47,1),new r("idas",47,1),new r("ias",47,1),new r("arias",50,1),new r("erias",50,1),new r("irias",50,1),new r("aras",47,1),new r("eras",47,1),new r("iras",47,1),new r("avas",47,1),new r("es",-1,1),new r("ardes",58,1),new r("erdes",58,1),new r("irdes",58,1),new r("ares",58,1),new r("eres",58,1),new r("ires",58,1),new r("asses",58,1),new r("esses",58,1),new r("isses",58,1),new r("astes",58,1),new r("estes",58,1),new r("istes",58,1),new r("is",-1,1),new r("ais",71,1),new r("eis",71,1),new r("areis",73,1),new r("ereis",73,1),new r("ireis",73,1),new r("áreis",73,1),new r("éreis",73,1),new r("íreis",73,1),new r("ásseis",73,1),new r("ésseis",73,1),new r("ísseis",73,1),new r("áveis",73,1),new r("íeis",73,1),new r("aríeis",84,1),new r("eríeis",84,1),new r("iríeis",84,1),new r("ados",-1,1),new r("idos",-1,1),new r("amos",-1,1),new r("áramos",90,1),new r("éramos",90,1),new r("íramos",90,1),new r("ávamos",90,1),new r("íamos",90,1),new r("aríamos",95,1),new r("eríamos",95,1),new r("iríamos",95,1),new r("emos",-1,1),new r("aremos",99,1),new r("eremos",99,1),new r("iremos",99,1),new r("ássemos",99,1),new r("êssemos",99,1),new r("íssemos",99,1),new r("imos",-1,1),new r("armos",-1,1),new r("ermos",-1,1),new r("irmos",-1,1),new r("ámos",-1,1),new r("arás",-1,1),new r("erás",-1,1),new r("irás",-1,1),new r("eu",-1,1),new r("iu",-1,1),new r("ou",-1,1),new r("ará",-1,1),new r("erá",-1,1),new r("irá",-1,1)],W=[new r("a",-1,1),new r("i",-1,1),new r("o",-1,1),new r("os",-1,1),new r("á",-1,1),new r("í",-1,1),new r("ó",-1,1)],L=[new r("e",-1,1),new r("ç",-1,2),new r("é",-1,1),new r("ê",-1,1)],y=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],z=new s;this.setCurrent=function(e){z.setCurrent(e)},this.getCurrent=function(){return z.getCurrent()},this.stem=function(){var r=z.cursor;return e(),z.cursor=r,a(),z.limit_backward=r,z.cursor=z.limit,_(),z.cursor=z.limit,p(),z.cursor=z.limit_backward,u(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ro.min.js b/assets/javascripts/lunr/min/lunr.ro.min.js new file mode 100644 index 00000000..72771401 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ro.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Romanian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=function(){var i=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,n=new function(){function e(e,i){L.eq_s(1,e)&&(L.ket=L.cursor,L.in_grouping(W,97,259)&&L.slice_from(i))}function n(){for(var i,r;;){if(i=L.cursor,L.in_grouping(W,97,259)&&(r=L.cursor,L.bra=r,e("u","U"),L.cursor=r,e("i","I")),L.cursor=i,L.cursor>=L.limit)break;L.cursor++}}function t(){if(L.out_grouping(W,97,259)){for(;!L.in_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}return!0}function a(){if(L.in_grouping(W,97,259))for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!0;L.cursor++}return!1}function o(){var e,i,r=L.cursor;if(L.in_grouping(W,97,259)){if(e=L.cursor,!t())return void(h=L.cursor);if(L.cursor=e,!a())return void(h=L.cursor)}L.cursor=r,L.out_grouping(W,97,259)&&(i=L.cursor,t()&&(L.cursor=i,L.in_grouping(W,97,259)&&L.cursor=L.limit)return!1;L.cursor++}for(;!L.out_grouping(W,97,259);){if(L.cursor>=L.limit)return!1;L.cursor++}return!0}function c(){var e=L.cursor;h=L.limit,k=h,g=h,o(),L.cursor=e,u()&&(k=L.cursor,u()&&(g=L.cursor))}function s(){for(var e;;){if(L.bra=L.cursor,e=L.find_among(z,3))switch(L.ket=L.cursor,e){case 1:L.slice_from("i");continue;case 2:L.slice_from("u");continue;case 3:if(L.cursor>=L.limit)break;L.cursor++;continue}break}}function w(){return h<=L.cursor}function m(){return k<=L.cursor}function l(){return g<=L.cursor}function f(){var e,i;if(L.ket=L.cursor,(e=L.find_among_b(C,16))&&(L.bra=L.cursor,m()))switch(e){case 1:L.slice_del();break;case 2:L.slice_from("a");break;case 3:L.slice_from("e");break;case 4:L.slice_from("i");break;case 5:i=L.limit-L.cursor,L.eq_s_b(2,"ab")||(L.cursor=L.limit-i,L.slice_from("i"));break;case 6:L.slice_from("at");break;case 7:L.slice_from("aţi")}}function p(){var e,i=L.limit-L.cursor;if(L.ket=L.cursor,(e=L.find_among_b(P,46))&&(L.bra=L.cursor,m())){switch(e){case 1:L.slice_from("abil");break;case 2:L.slice_from("ibil");break;case 3:L.slice_from("iv");break;case 4:L.slice_from("ic");break;case 5:L.slice_from("at");break;case 6:L.slice_from("it")}return _=!0,L.cursor=L.limit-i,!0}return!1}function d(){var e,i;for(_=!1;;)if(i=L.limit-L.cursor,!p()){L.cursor=L.limit-i;break}if(L.ket=L.cursor,(e=L.find_among_b(F,62))&&(L.bra=L.cursor,l())){switch(e){case 1:L.slice_del();break;case 2:L.eq_s_b(1,"ţ")&&(L.bra=L.cursor,L.slice_from("t"));break;case 3:L.slice_from("ist")}_=!0}}function b(){var e,i,r;if(L.cursor>=h){if(i=L.limit_backward,L.limit_backward=h,L.ket=L.cursor,e=L.find_among_b(q,94))switch(L.bra=L.cursor,e){case 1:if(r=L.limit-L.cursor,!L.out_grouping_b(W,97,259)&&(L.cursor=L.limit-r,!L.eq_s_b(1,"u")))break;case 2:L.slice_del()}L.limit_backward=i}}function v(){var e;L.ket=L.cursor,(e=L.find_among_b(S,5))&&(L.bra=L.cursor,w()&&1==e&&L.slice_del())}var _,g,k,h,z=[new i("",-1,3),new i("I",0,1),new i("U",0,2)],C=[new i("ea",-1,3),new i("aţia",-1,7),new i("aua",-1,2),new i("iua",-1,4),new i("aţie",-1,7),new i("ele",-1,3),new i("ile",-1,5),new i("iile",6,4),new i("iei",-1,4),new i("atei",-1,6),new i("ii",-1,4),new i("ului",-1,1),new i("ul",-1,1),new i("elor",-1,3),new i("ilor",-1,4),new i("iilor",14,4)],P=[new i("icala",-1,4),new i("iciva",-1,4),new i("ativa",-1,5),new i("itiva",-1,6),new i("icale",-1,4),new i("aţiune",-1,5),new i("iţiune",-1,6),new i("atoare",-1,5),new i("itoare",-1,6),new i("ătoare",-1,5),new i("icitate",-1,4),new i("abilitate",-1,1),new i("ibilitate",-1,2),new i("ivitate",-1,3),new i("icive",-1,4),new i("ative",-1,5),new i("itive",-1,6),new i("icali",-1,4),new i("atori",-1,5),new i("icatori",18,4),new i("itori",-1,6),new i("ători",-1,5),new i("icitati",-1,4),new i("abilitati",-1,1),new i("ivitati",-1,3),new i("icivi",-1,4),new i("ativi",-1,5),new i("itivi",-1,6),new i("icităi",-1,4),new i("abilităi",-1,1),new i("ivităi",-1,3),new i("icităţi",-1,4),new i("abilităţi",-1,1),new i("ivităţi",-1,3),new i("ical",-1,4),new i("ator",-1,5),new i("icator",35,4),new i("itor",-1,6),new i("ător",-1,5),new i("iciv",-1,4),new i("ativ",-1,5),new i("itiv",-1,6),new i("icală",-1,4),new i("icivă",-1,4),new i("ativă",-1,5),new i("itivă",-1,6)],F=[new i("ica",-1,1),new i("abila",-1,1),new i("ibila",-1,1),new i("oasa",-1,1),new i("ata",-1,1),new i("ita",-1,1),new i("anta",-1,1),new i("ista",-1,3),new i("uta",-1,1),new i("iva",-1,1),new i("ic",-1,1),new i("ice",-1,1),new i("abile",-1,1),new i("ibile",-1,1),new i("isme",-1,3),new i("iune",-1,2),new i("oase",-1,1),new i("ate",-1,1),new i("itate",17,1),new i("ite",-1,1),new i("ante",-1,1),new i("iste",-1,3),new i("ute",-1,1),new i("ive",-1,1),new i("ici",-1,1),new i("abili",-1,1),new i("ibili",-1,1),new i("iuni",-1,2),new i("atori",-1,1),new i("osi",-1,1),new i("ati",-1,1),new i("itati",30,1),new i("iti",-1,1),new i("anti",-1,1),new i("isti",-1,3),new i("uti",-1,1),new i("işti",-1,3),new i("ivi",-1,1),new i("ităi",-1,1),new i("oşi",-1,1),new i("ităţi",-1,1),new i("abil",-1,1),new i("ibil",-1,1),new i("ism",-1,3),new i("ator",-1,1),new i("os",-1,1),new i("at",-1,1),new i("it",-1,1),new i("ant",-1,1),new i("ist",-1,3),new i("ut",-1,1),new i("iv",-1,1),new i("ică",-1,1),new i("abilă",-1,1),new i("ibilă",-1,1),new i("oasă",-1,1),new i("ată",-1,1),new i("ită",-1,1),new i("antă",-1,1),new i("istă",-1,3),new i("ută",-1,1),new i("ivă",-1,1)],q=[new i("ea",-1,1),new i("ia",-1,1),new i("esc",-1,1),new i("ăsc",-1,1),new i("ind",-1,1),new i("ând",-1,1),new i("are",-1,1),new i("ere",-1,1),new i("ire",-1,1),new i("âre",-1,1),new i("se",-1,2),new i("ase",10,1),new i("sese",10,2),new i("ise",10,1),new i("use",10,1),new i("âse",10,1),new i("eşte",-1,1),new i("ăşte",-1,1),new i("eze",-1,1),new i("ai",-1,1),new i("eai",19,1),new i("iai",19,1),new i("sei",-1,2),new i("eşti",-1,1),new i("ăşti",-1,1),new i("ui",-1,1),new i("ezi",-1,1),new i("âi",-1,1),new i("aşi",-1,1),new i("seşi",-1,2),new i("aseşi",29,1),new i("seseşi",29,2),new i("iseşi",29,1),new i("useşi",29,1),new i("âseşi",29,1),new i("işi",-1,1),new i("uşi",-1,1),new i("âşi",-1,1),new i("aţi",-1,2),new i("eaţi",38,1),new i("iaţi",38,1),new i("eţi",-1,2),new i("iţi",-1,2),new i("âţi",-1,2),new i("arăţi",-1,1),new i("serăţi",-1,2),new i("aserăţi",45,1),new i("seserăţi",45,2),new i("iserăţi",45,1),new i("userăţi",45,1),new i("âserăţi",45,1),new i("irăţi",-1,1),new i("urăţi",-1,1),new i("ârăţi",-1,1),new i("am",-1,1),new i("eam",54,1),new i("iam",54,1),new i("em",-1,2),new i("asem",57,1),new i("sesem",57,2),new i("isem",57,1),new i("usem",57,1),new i("âsem",57,1),new i("im",-1,2),new i("âm",-1,2),new i("ăm",-1,2),new i("arăm",65,1),new i("serăm",65,2),new i("aserăm",67,1),new i("seserăm",67,2),new i("iserăm",67,1),new i("userăm",67,1),new i("âserăm",67,1),new i("irăm",65,1),new i("urăm",65,1),new i("ârăm",65,1),new i("au",-1,1),new i("eau",76,1),new i("iau",76,1),new i("indu",-1,1),new i("ându",-1,1),new i("ez",-1,1),new i("ească",-1,1),new i("ară",-1,1),new i("seră",-1,2),new i("aseră",84,1),new i("seseră",84,2),new i("iseră",84,1),new i("useră",84,1),new i("âseră",84,1),new i("iră",-1,1),new i("ură",-1,1),new i("âră",-1,1),new i("ează",-1,1)],S=[new i("a",-1,1),new i("e",-1,1),new i("ie",1,1),new i("i",-1,1),new i("ă",-1,1)],W=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],L=new r;this.setCurrent=function(e){L.setCurrent(e)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){var e=L.cursor;return n(),L.cursor=e,c(),L.limit_backward=e,L.cursor=L.limit,f(),L.cursor=L.limit,d(),L.cursor=L.limit,_||(L.cursor=L.limit,b(),L.cursor=L.limit),v(),L.cursor=L.limit_backward,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ru.min.js b/assets/javascripts/lunr/min/lunr.ru.min.js new file mode 100644 index 00000000..186cc485 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ru.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Russian` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=function(){var n=e.stemmerSupport.Among,r=e.stemmerSupport.SnowballProgram,t=new function(){function e(){for(;!W.in_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function t(){for(;!W.out_grouping(S,1072,1103);){if(W.cursor>=W.limit)return!1;W.cursor++}return!0}function w(){b=W.limit,_=b,e()&&(b=W.cursor,t()&&e()&&t()&&(_=W.cursor))}function i(){return _<=W.cursor}function u(e,n){var r,t;if(W.ket=W.cursor,r=W.find_among_b(e,n)){switch(W.bra=W.cursor,r){case 1:if(t=W.limit-W.cursor,!W.eq_s_b(1,"а")&&(W.cursor=W.limit-t,!W.eq_s_b(1,"я")))return!1;case 2:W.slice_del()}return!0}return!1}function o(){return u(h,9)}function s(e,n){var r;return W.ket=W.cursor,!!(r=W.find_among_b(e,n))&&(W.bra=W.cursor,1==r&&W.slice_del(),!0)}function c(){return s(g,26)}function m(){return!!c()&&(u(C,8),!0)}function f(){return s(k,2)}function l(){return u(P,46)}function a(){s(v,36)}function p(){var e;W.ket=W.cursor,(e=W.find_among_b(F,2))&&(W.bra=W.cursor,i()&&1==e&&W.slice_del())}function d(){var e;if(W.ket=W.cursor,e=W.find_among_b(q,4))switch(W.bra=W.cursor,e){case 1:if(W.slice_del(),W.ket=W.cursor,!W.eq_s_b(1,"н"))break;W.bra=W.cursor;case 2:if(!W.eq_s_b(1,"н"))break;case 3:W.slice_del()}}var _,b,h=[new n("в",-1,1),new n("ив",0,2),new n("ыв",0,2),new n("вши",-1,1),new n("ивши",3,2),new n("ывши",3,2),new n("вшись",-1,1),new n("ившись",6,2),new n("ывшись",6,2)],g=[new n("ее",-1,1),new n("ие",-1,1),new n("ое",-1,1),new n("ые",-1,1),new n("ими",-1,1),new n("ыми",-1,1),new n("ей",-1,1),new n("ий",-1,1),new n("ой",-1,1),new n("ый",-1,1),new n("ем",-1,1),new n("им",-1,1),new n("ом",-1,1),new n("ым",-1,1),new n("его",-1,1),new n("ого",-1,1),new n("ему",-1,1),new n("ому",-1,1),new n("их",-1,1),new n("ых",-1,1),new n("ею",-1,1),new n("ою",-1,1),new n("ую",-1,1),new n("юю",-1,1),new n("ая",-1,1),new n("яя",-1,1)],C=[new n("ем",-1,1),new n("нн",-1,1),new n("вш",-1,1),new n("ивш",2,2),new n("ывш",2,2),new n("щ",-1,1),new n("ющ",5,1),new n("ующ",6,2)],k=[new n("сь",-1,1),new n("ся",-1,1)],P=[new n("ла",-1,1),new n("ила",0,2),new n("ыла",0,2),new n("на",-1,1),new n("ена",3,2),new n("ете",-1,1),new n("ите",-1,2),new n("йте",-1,1),new n("ейте",7,2),new n("уйте",7,2),new n("ли",-1,1),new n("или",10,2),new n("ыли",10,2),new n("й",-1,1),new n("ей",13,2),new n("уй",13,2),new n("л",-1,1),new n("ил",16,2),new n("ыл",16,2),new n("ем",-1,1),new n("им",-1,2),new n("ым",-1,2),new n("н",-1,1),new n("ен",22,2),new n("ло",-1,1),new n("ило",24,2),new n("ыло",24,2),new n("но",-1,1),new n("ено",27,2),new n("нно",27,1),new n("ет",-1,1),new n("ует",30,2),new n("ит",-1,2),new n("ыт",-1,2),new n("ют",-1,1),new n("уют",34,2),new n("ят",-1,2),new n("ны",-1,1),new n("ены",37,2),new n("ть",-1,1),new n("ить",39,2),new n("ыть",39,2),new n("ешь",-1,1),new n("ишь",-1,2),new n("ю",-1,2),new n("ую",44,2)],v=[new n("а",-1,1),new n("ев",-1,1),new n("ов",-1,1),new n("е",-1,1),new n("ие",3,1),new n("ье",3,1),new n("и",-1,1),new n("еи",6,1),new n("ии",6,1),new n("ами",6,1),new n("ями",6,1),new n("иями",10,1),new n("й",-1,1),new n("ей",12,1),new n("ией",13,1),new n("ий",12,1),new n("ой",12,1),new n("ам",-1,1),new n("ем",-1,1),new n("ием",18,1),new n("ом",-1,1),new n("ям",-1,1),new n("иям",21,1),new n("о",-1,1),new n("у",-1,1),new n("ах",-1,1),new n("ях",-1,1),new n("иях",26,1),new n("ы",-1,1),new n("ь",-1,1),new n("ю",-1,1),new n("ию",30,1),new n("ью",30,1),new n("я",-1,1),new n("ия",33,1),new n("ья",33,1)],F=[new n("ост",-1,1),new n("ость",-1,1)],q=[new n("ейше",-1,1),new n("н",-1,2),new n("ейш",-1,1),new n("ь",-1,3)],S=[33,65,8,232],W=new r;this.setCurrent=function(e){W.setCurrent(e)},this.getCurrent=function(){return W.getCurrent()},this.stem=function(){return w(),W.cursor=W.limit,!(W.cursor=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursors||e>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor>1),f=0,l=o0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.sv.min.js b/assets/javascripts/lunr/min/lunr.sv.min.js new file mode 100644 index 00000000..3e5eb640 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.sv.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Swedish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.ta.min.js b/assets/javascripts/lunr/min/lunr.ta.min.js new file mode 100644 index 00000000..a644bed2 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.ta.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.ta=function(){this.pipeline.reset(),this.pipeline.add(e.ta.trimmer,e.ta.stopWordFilter,e.ta.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ta.stemmer))},e.ta.wordCharacters="஀-உஊ-ஏஐ-ஙச-ட஠-னப-யர-ஹ஺-ிீ-௉ொ-௏ௐ-௙௚-௟௠-௩௪-௯௰-௹௺-௿a-zA-Za-zA-Z0-90-9",e.ta.trimmer=e.trimmerSupport.generateTrimmer(e.ta.wordCharacters),e.Pipeline.registerFunction(e.ta.trimmer,"trimmer-ta"),e.ta.stopWordFilter=e.generateStopWordFilter("அங்கு அங்கே அது அதை அந்த அவர் அவர்கள் அவள் அவன் அவை ஆக ஆகவே ஆகையால் ஆதலால் ஆதலினால் ஆனாலும் ஆனால் இங்கு இங்கே இது இதை இந்த இப்படி இவர் இவர்கள் இவள் இவன் இவை இவ்வளவு உனக்கு உனது உன் உன்னால் எங்கு எங்கே எது எதை எந்த எப்படி எவர் எவர்கள் எவள் எவன் எவை எவ்வளவு எனக்கு எனது எனவே என் என்ன என்னால் ஏது ஏன் தனது தன்னால் தானே தான் நாங்கள் நாம் நான் நீ நீங்கள்".split(" ")),e.ta.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.ta.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.ta.stemmer,"stemmer-ta"),e.Pipeline.registerFunction(e.ta.stopWordFilter,"stopWordFilter-ta")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.te.min.js b/assets/javascripts/lunr/min/lunr.te.min.js new file mode 100644 index 00000000..9fa7a93b --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.te.min.js @@ -0,0 +1 @@ +!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.te=function(){this.pipeline.reset(),this.pipeline.add(e.te.trimmer,e.te.stopWordFilter,e.te.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.te.stemmer))},e.te.wordCharacters="ఀ-ఄఅ-ఔక-హా-ౌౕ-ౖౘ-ౚౠ-ౡౢ-ౣ౦-౯౸-౿఼ఽ్ౝ౷౤౥",e.te.trimmer=e.trimmerSupport.generateTrimmer(e.te.wordCharacters),e.Pipeline.registerFunction(e.te.trimmer,"trimmer-te"),e.te.stopWordFilter=e.generateStopWordFilter("అందరూ అందుబాటులో అడగండి అడగడం అడ్డంగా అనుగుణంగా అనుమతించు అనుమతిస్తుంది అయితే ఇప్పటికే ఉన్నారు ఎక్కడైనా ఎప్పుడు ఎవరైనా ఎవరో ఏ ఏదైనా ఏమైనప్పటికి ఒక ఒకరు కనిపిస్తాయి కాదు కూడా గా గురించి చుట్టూ చేయగలిగింది తగిన తర్వాత దాదాపు దూరంగా నిజంగా పై ప్రకారం ప్రక్కన మధ్య మరియు మరొక మళ్ళీ మాత్రమే మెచ్చుకో వద్ద వెంట వేరుగా వ్యతిరేకంగా సంబంధం".split(" ")),e.te.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var t=e.wordcut;t.init(),e.te.tokenizer=function(r){if(!arguments.length||null==r||void 0==r)return[];if(Array.isArray(r))return r.map(function(t){return isLunr2?new e.Token(t.toLowerCase()):t.toLowerCase()});var i=r.toString().toLowerCase().replace(/^\s+/,"");return t.cut(i).split("|")},e.Pipeline.registerFunction(e.te.stemmer,"stemmer-te"),e.Pipeline.registerFunction(e.te.stopWordFilter,"stopWordFilter-te")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.th.min.js b/assets/javascripts/lunr/min/lunr.th.min.js new file mode 100644 index 00000000..dee3aac6 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.th.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.tr.min.js b/assets/javascripts/lunr/min/lunr.tr.min.js new file mode 100644 index 00000000..563f6ec1 --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.tr.min.js @@ -0,0 +1,18 @@ +/*! + * Lunr languages, `Turkish` language + * https://github.com/MihaiValentin/lunr-languages + * + * Copyright 2014, Mihai Valentin + * http://www.mozilla.org/MPL/ + */ +/*! + * based on + * Snowball JavaScript Library v0.3 + * http://code.google.com/p/urim/ + * http://snowball.tartarus.org/ + * + * Copyright 2010, Oleg Mazko + * http://www.mozilla.org/MPL/ + */ + +!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=function(){var i=r.stemmerSupport.Among,e=r.stemmerSupport.SnowballProgram,n=new function(){function r(r,i,e){for(;;){var n=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(r,i,e)){Dr.cursor=Dr.limit-n;break}if(Dr.cursor=Dr.limit-n,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function n(){var i,e;i=Dr.limit-Dr.cursor,r(Wr,97,305);for(var n=0;nDr.limit_backward&&(Dr.cursor--,e=Dr.limit-Dr.cursor,i()))?(Dr.cursor=Dr.limit-e,!0):(Dr.cursor=Dr.limit-n,r()?(Dr.cursor=Dr.limit-n,!1):(Dr.cursor=Dr.limit-n,!(Dr.cursor<=Dr.limit_backward)&&(Dr.cursor--,!!i()&&(Dr.cursor=Dr.limit-n,!0))))}function u(r){return t(r,function(){return Dr.in_grouping_b(Wr,97,305)})}function o(){return u(function(){return Dr.eq_s_b(1,"n")})}function s(){return u(function(){return Dr.eq_s_b(1,"s")})}function c(){return u(function(){return Dr.eq_s_b(1,"y")})}function l(){return t(function(){return Dr.in_grouping_b(Lr,105,305)},function(){return Dr.out_grouping_b(Wr,97,305)})}function a(){return Dr.find_among_b(ur,10)&&l()}function m(){return n()&&Dr.in_grouping_b(Lr,105,305)&&s()}function d(){return Dr.find_among_b(or,2)}function f(){return n()&&Dr.in_grouping_b(Lr,105,305)&&c()}function b(){return n()&&Dr.find_among_b(sr,4)}function w(){return n()&&Dr.find_among_b(cr,4)&&o()}function _(){return n()&&Dr.find_among_b(lr,2)&&c()}function k(){return n()&&Dr.find_among_b(ar,2)}function p(){return n()&&Dr.find_among_b(mr,4)}function g(){return n()&&Dr.find_among_b(dr,2)}function y(){return n()&&Dr.find_among_b(fr,4)}function z(){return n()&&Dr.find_among_b(br,2)}function v(){return n()&&Dr.find_among_b(wr,2)&&c()}function h(){return Dr.eq_s_b(2,"ki")}function q(){return n()&&Dr.find_among_b(_r,2)&&o()}function C(){return n()&&Dr.find_among_b(kr,4)&&c()}function P(){return n()&&Dr.find_among_b(pr,4)}function F(){return n()&&Dr.find_among_b(gr,4)&&c()}function S(){return Dr.find_among_b(yr,4)}function W(){return n()&&Dr.find_among_b(zr,2)}function L(){return n()&&Dr.find_among_b(vr,4)}function x(){return n()&&Dr.find_among_b(hr,8)}function A(){return Dr.find_among_b(qr,2)}function E(){return n()&&Dr.find_among_b(Cr,32)&&c()}function j(){return Dr.find_among_b(Pr,8)&&c()}function T(){return n()&&Dr.find_among_b(Fr,4)&&c()}function Z(){return Dr.eq_s_b(3,"ken")&&c()}function B(){var r=Dr.limit-Dr.cursor;return!(T()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,Z()))))}function D(){if(A()){var r=Dr.limit-Dr.cursor;if(S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T())return!1}return!0}function G(){if(W()){Dr.bra=Dr.cursor,Dr.slice_del();var r=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,x()||(Dr.cursor=Dr.limit-r,E()||(Dr.cursor=Dr.limit-r,j()||(Dr.cursor=Dr.limit-r,T()||(Dr.cursor=Dr.limit-r)))),nr=!1,!1}return!0}function H(){if(!L())return!0;var r=Dr.limit-Dr.cursor;return!E()&&(Dr.cursor=Dr.limit-r,!j())}function I(){var r,i=Dr.limit-Dr.cursor;return!(S()||(Dr.cursor=Dr.limit-i,F()||(Dr.cursor=Dr.limit-i,P()||(Dr.cursor=Dr.limit-i,C()))))||(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,T()||(Dr.cursor=Dr.limit-r),!1)}function J(){var r,i=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,nr=!0,B()&&(Dr.cursor=Dr.limit-i,D()&&(Dr.cursor=Dr.limit-i,G()&&(Dr.cursor=Dr.limit-i,H()&&(Dr.cursor=Dr.limit-i,I()))))){if(Dr.cursor=Dr.limit-i,!x())return;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,S()||(Dr.cursor=Dr.limit-r,W()||(Dr.cursor=Dr.limit-r,C()||(Dr.cursor=Dr.limit-r,P()||(Dr.cursor=Dr.limit-r,F()||(Dr.cursor=Dr.limit-r))))),T()||(Dr.cursor=Dr.limit-r)}Dr.bra=Dr.cursor,Dr.slice_del()}function K(){var r,i,e,n;if(Dr.ket=Dr.cursor,h()){if(r=Dr.limit-Dr.cursor,p())return Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,a()&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))),!0;if(Dr.cursor=Dr.limit-r,w()){if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,e=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-e,!m()&&(Dr.cursor=Dr.limit-e,!K())))return!0;Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}return!0}if(Dr.cursor=Dr.limit-r,g()){if(n=Dr.limit-Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-n,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-n,!K())return!1;return!0}}return!1}function M(r){if(Dr.ket=Dr.cursor,!g()&&(Dr.cursor=Dr.limit-r,!k()))return!1;var i=Dr.limit-Dr.cursor;if(d())Dr.bra=Dr.cursor,Dr.slice_del();else if(Dr.cursor=Dr.limit-i,m())Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K());else if(Dr.cursor=Dr.limit-i,!K())return!1;return!0}function N(r){if(Dr.ket=Dr.cursor,!z()&&(Dr.cursor=Dr.limit-r,!b()))return!1;var i=Dr.limit-Dr.cursor;return!(!m()&&(Dr.cursor=Dr.limit-i,!d()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)}function O(){var r,i=Dr.limit-Dr.cursor;return Dr.ket=Dr.cursor,!(!w()&&(Dr.cursor=Dr.limit-i,!v()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,!(!W()||(Dr.bra=Dr.cursor,Dr.slice_del(),!K()))||(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!(a()||(Dr.cursor=Dr.limit-r,m()||(Dr.cursor=Dr.limit-r,K())))||(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()),!0)))}function Q(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,!p()&&(Dr.cursor=Dr.limit-e,!f()&&(Dr.cursor=Dr.limit-e,!_())))return!1;if(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,r=Dr.limit-Dr.cursor,a())Dr.bra=Dr.cursor,Dr.slice_del(),i=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,W()||(Dr.cursor=Dr.limit-i);else if(Dr.cursor=Dr.limit-r,!W())return!0;return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,K(),!0}function R(){var r,i,e=Dr.limit-Dr.cursor;if(Dr.ket=Dr.cursor,W())return Dr.bra=Dr.cursor,Dr.slice_del(),void K();if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,q())if(Dr.bra=Dr.cursor,Dr.slice_del(),r=Dr.limit-Dr.cursor,Dr.ket=Dr.cursor,d())Dr.bra=Dr.cursor,Dr.slice_del();else{if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!a()&&(Dr.cursor=Dr.limit-r,!m())){if(Dr.cursor=Dr.limit-r,Dr.ket=Dr.cursor,!W())return;if(Dr.bra=Dr.cursor,Dr.slice_del(),!K())return}Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())}else if(Dr.cursor=Dr.limit-e,!M(e)&&(Dr.cursor=Dr.limit-e,!N(e))){if(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,y())return Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,i=Dr.limit-Dr.cursor,void(a()?(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K())):(Dr.cursor=Dr.limit-i,W()?(Dr.bra=Dr.cursor,Dr.slice_del(),K()):(Dr.cursor=Dr.limit-i,K())));if(Dr.cursor=Dr.limit-e,!O()){if(Dr.cursor=Dr.limit-e,d())return Dr.bra=Dr.cursor,void Dr.slice_del();Dr.cursor=Dr.limit-e,K()||(Dr.cursor=Dr.limit-e,Q()||(Dr.cursor=Dr.limit-e,Dr.ket=Dr.cursor,(a()||(Dr.cursor=Dr.limit-e,m()))&&(Dr.bra=Dr.cursor,Dr.slice_del(),Dr.ket=Dr.cursor,W()&&(Dr.bra=Dr.cursor,Dr.slice_del(),K()))))}}}function U(){var r;if(Dr.ket=Dr.cursor,r=Dr.find_among_b(Sr,4))switch(Dr.bra=Dr.cursor,r){case 1:Dr.slice_from("p");break;case 2:Dr.slice_from("ç");break;case 3:Dr.slice_from("t");break;case 4:Dr.slice_from("k")}}function V(){for(;;){var r=Dr.limit-Dr.cursor;if(Dr.in_grouping_b(Wr,97,305)){Dr.cursor=Dr.limit-r;break}if(Dr.cursor=Dr.limit-r,Dr.cursor<=Dr.limit_backward)return!1;Dr.cursor--}return!0}function X(r,i,e){if(Dr.cursor=Dr.limit-r,V()){var n=Dr.limit-Dr.cursor;if(!Dr.eq_s_b(1,i)&&(Dr.cursor=Dr.limit-n,!Dr.eq_s_b(1,e)))return!0;Dr.cursor=Dr.limit-r;var t=Dr.cursor;return Dr.insert(Dr.cursor,Dr.cursor,e),Dr.cursor=t,!1}return!0}function Y(){var r=Dr.limit-Dr.cursor;(Dr.eq_s_b(1,"d")||(Dr.cursor=Dr.limit-r,Dr.eq_s_b(1,"g")))&&X(r,"a","ı")&&X(r,"e","i")&&X(r,"o","u")&&X(r,"ö","ü")}function $(){for(var r,i=Dr.cursor,e=2;;){for(r=Dr.cursor;!Dr.in_grouping(Wr,97,305);){if(Dr.cursor>=Dr.limit)return Dr.cursor=r,!(e>0)&&(Dr.cursor=i,!0);Dr.cursor++}e--}}function rr(r,i,e){for(;!Dr.eq_s(i,e);){if(Dr.cursor>=Dr.limit)return!0;Dr.cursor++}return(tr=i)!=Dr.limit||(Dr.cursor=r,!1)}function ir(){var r=Dr.cursor;return!rr(r,2,"ad")||(Dr.cursor=r,!rr(r,5,"soyad"))}function er(){var r=Dr.cursor;return!ir()&&(Dr.limit_backward=r,Dr.cursor=Dr.limit,Y(),Dr.cursor=Dr.limit,U(),!0)}var nr,tr,ur=[new i("m",-1,-1),new i("n",-1,-1),new i("miz",-1,-1),new i("niz",-1,-1),new i("muz",-1,-1),new i("nuz",-1,-1),new i("müz",-1,-1),new i("nüz",-1,-1),new i("mız",-1,-1),new i("nız",-1,-1)],or=[new i("leri",-1,-1),new i("ları",-1,-1)],sr=[new i("ni",-1,-1),new i("nu",-1,-1),new i("nü",-1,-1),new i("nı",-1,-1)],cr=[new i("in",-1,-1),new i("un",-1,-1),new i("ün",-1,-1),new i("ın",-1,-1)],lr=[new i("a",-1,-1),new i("e",-1,-1)],ar=[new i("na",-1,-1),new i("ne",-1,-1)],mr=[new i("da",-1,-1),new i("ta",-1,-1),new i("de",-1,-1),new i("te",-1,-1)],dr=[new i("nda",-1,-1),new i("nde",-1,-1)],fr=[new i("dan",-1,-1),new i("tan",-1,-1),new i("den",-1,-1),new i("ten",-1,-1)],br=[new i("ndan",-1,-1),new i("nden",-1,-1)],wr=[new i("la",-1,-1),new i("le",-1,-1)],_r=[new i("ca",-1,-1),new i("ce",-1,-1)],kr=[new i("im",-1,-1),new i("um",-1,-1),new i("üm",-1,-1),new i("ım",-1,-1)],pr=[new i("sin",-1,-1),new i("sun",-1,-1),new i("sün",-1,-1),new i("sın",-1,-1)],gr=[new i("iz",-1,-1),new i("uz",-1,-1),new i("üz",-1,-1),new i("ız",-1,-1)],yr=[new i("siniz",-1,-1),new i("sunuz",-1,-1),new i("sünüz",-1,-1),new i("sınız",-1,-1)],zr=[new i("lar",-1,-1),new i("ler",-1,-1)],vr=[new i("niz",-1,-1),new i("nuz",-1,-1),new i("nüz",-1,-1),new i("nız",-1,-1)],hr=[new i("dir",-1,-1),new i("tir",-1,-1),new i("dur",-1,-1),new i("tur",-1,-1),new i("dür",-1,-1),new i("tür",-1,-1),new i("dır",-1,-1),new i("tır",-1,-1)],qr=[new i("casına",-1,-1),new i("cesine",-1,-1)],Cr=[new i("di",-1,-1),new i("ti",-1,-1),new i("dik",-1,-1),new i("tik",-1,-1),new i("duk",-1,-1),new i("tuk",-1,-1),new i("dük",-1,-1),new i("tük",-1,-1),new i("dık",-1,-1),new i("tık",-1,-1),new i("dim",-1,-1),new i("tim",-1,-1),new i("dum",-1,-1),new i("tum",-1,-1),new i("düm",-1,-1),new i("tüm",-1,-1),new i("dım",-1,-1),new i("tım",-1,-1),new i("din",-1,-1),new i("tin",-1,-1),new i("dun",-1,-1),new i("tun",-1,-1),new i("dün",-1,-1),new i("tün",-1,-1),new i("dın",-1,-1),new i("tın",-1,-1),new i("du",-1,-1),new i("tu",-1,-1),new i("dü",-1,-1),new i("tü",-1,-1),new i("dı",-1,-1),new i("tı",-1,-1)],Pr=[new i("sa",-1,-1),new i("se",-1,-1),new i("sak",-1,-1),new i("sek",-1,-1),new i("sam",-1,-1),new i("sem",-1,-1),new i("san",-1,-1),new i("sen",-1,-1)],Fr=[new i("miş",-1,-1),new i("muş",-1,-1),new i("müş",-1,-1),new i("mış",-1,-1)],Sr=[new i("b",-1,1),new i("c",-1,2),new i("d",-1,3),new i("ğ",-1,4)],Wr=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],Lr=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],xr=[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],Ar=[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],Er=[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],jr=[17],Tr=[65],Zr=[65],Br=[["a",xr,97,305],["e",Ar,101,252],["ı",Er,97,305],["i",jr,101,105],["o",Tr,111,117],["ö",Zr,246,252],["u",Tr,111,117]],Dr=new e;this.setCurrent=function(r){Dr.setCurrent(r)},this.getCurrent=function(){return Dr.getCurrent()},this.stem=function(){return!!($()&&(Dr.limit_backward=Dr.cursor,Dr.cursor=Dr.limit,J(),Dr.cursor=Dr.limit,nr&&(R(),Dr.cursor=Dr.limit_backward,er())))}};return function(r){return"function"==typeof r.update?r.update(function(r){return n.setCurrent(r),n.stem(),n.getCurrent()}):(n.setCurrent(r),n.stem(),n.getCurrent())}}(),r.Pipeline.registerFunction(r.tr.stemmer,"stemmer-tr"),r.tr.stopWordFilter=r.generateStopWordFilter("acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle".split(" ")),r.Pipeline.registerFunction(r.tr.stopWordFilter,"stopWordFilter-tr")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.vi.min.js b/assets/javascripts/lunr/min/lunr.vi.min.js new file mode 100644 index 00000000..22aed28c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.vi.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/min/lunr.zh.min.js b/assets/javascripts/lunr/min/lunr.zh.min.js new file mode 100644 index 00000000..fda66e9c --- /dev/null +++ b/assets/javascripts/lunr/min/lunr.zh.min.js @@ -0,0 +1 @@ +!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("@node-rs/jieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 為 以 于 於 上 他 而 后 後 之 来 來 及 了 因 下 可 到 由 这 這 与 與 也 此 但 并 並 个 個 其 已 无 無 小 我 们 們 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 當 从 從 得 打 凡 儿 兒 尔 爾 该 該 各 给 給 跟 和 何 还 還 即 几 幾 既 看 据 據 距 靠 啦 另 么 麽 每 嘛 拿 哪 您 凭 憑 且 却 卻 让 讓 仍 啥 如 若 使 谁 誰 虽 雖 随 隨 同 所 她 哇 嗡 往 些 向 沿 哟 喲 用 咱 则 則 怎 曾 至 致 着 著 诸 諸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}}); \ No newline at end of file diff --git a/assets/javascripts/lunr/tinyseg.js b/assets/javascripts/lunr/tinyseg.js new file mode 100644 index 00000000..167fa6dd --- /dev/null +++ b/assets/javascripts/lunr/tinyseg.js @@ -0,0 +1,206 @@ +/** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ +;(function (root, factory) { + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(factory) + } else if (typeof exports === 'object') { + /** + * Node. Does not work with strict CommonJS, but + * only CommonJS-like environments that support module.exports, + * like Node. + */ + module.exports = factory() + } else { + // Browser globals (root is window) + factory()(root.lunr); + } +}(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + + return function(lunr) { + // TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript + // (c) 2008 Taku Kudo + // TinySegmenter is freely distributable under the terms of a new BSD licence. + // For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt + + function TinySegmenter() { + var patterns = { + "[一二三四五六七八九十百千万億兆]":"M", + "[一-龠々〆ヵヶ]":"H", + "[ぁ-ん]":"I", + "[ァ-ヴーア-ン゙ー]":"K", + "[a-zA-Za-zA-Z]":"A", + "[0-90-9]":"N" + } + this.chartype_ = []; + for (var i in patterns) { + var regexp = new RegExp(i); + this.chartype_.push([regexp, patterns[i]]); + } + + this.BIAS__ = -332 + this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378}; + this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920}; + this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266}; + this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352}; + this.BP2__ = {"BO":60,"OO":-1762}; + this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965}; + this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146}; + this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699}; + this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973}; + this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682}; + this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669}; + this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990}; + this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832}; + this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649}; + this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393}; + this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841}; + this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68}; + this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591}; + this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685}; + this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156}; + this.TW1__ = {"につい":-4681,"東京都":2026}; + this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216}; + this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287}; + this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865}; + this.UC1__ = {"A":484,"K":93,"M":645,"O":-505}; + this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646}; + this.UC3__ = {"A":-1370,"I":2311}; + this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646}; + this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831}; + this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387}; + this.UP1__ = {"O":-214}; + this.UP2__ = {"B":69,"O":935}; + this.UP3__ = {"B":189}; + this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422}; + this.UQ2__ = {"BH":216,"BI":113,"OK":1759}; + this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212}; + this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135}; + this.UW2__ = {",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568}; + this.UW3__ = {",":4889,"1":-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278}; + this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637}; + this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343}; + this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496}; + + return this; + } + TinySegmenter.prototype.ctype_ = function(str) { + for (var i in this.chartype_) { + if (str.match(this.chartype_[i][0])) { + return this.chartype_[i][1]; + } + } + return "O"; + } + + TinySegmenter.prototype.ts_ = function(v) { + if (v) { return v; } + return 0; + } + + TinySegmenter.prototype.segment = function(input) { + if (input == null || input == undefined || input == "") { + return []; + } + var result = []; + var seg = ["B3","B2","B1"]; + var ctype = ["O","O","O"]; + var o = input.split(""); + for (i = 0; i < o.length; ++i) { + seg.push(o[i]); + ctype.push(this.ctype_(o[i])) + } + seg.push("E1"); + seg.push("E2"); + seg.push("E3"); + ctype.push("O"); + ctype.push("O"); + ctype.push("O"); + var word = seg[3]; + var p1 = "U"; + var p2 = "U"; + var p3 = "U"; + for (var i = 4; i < seg.length - 3; ++i) { + var score = this.BIAS__; + var w1 = seg[i-3]; + var w2 = seg[i-2]; + var w3 = seg[i-1]; + var w4 = seg[i]; + var w5 = seg[i+1]; + var w6 = seg[i+2]; + var c1 = ctype[i-3]; + var c2 = ctype[i-2]; + var c3 = ctype[i-1]; + var c4 = ctype[i]; + var c5 = ctype[i+1]; + var c6 = ctype[i+2]; + score += this.ts_(this.UP1__[p1]); + score += this.ts_(this.UP2__[p2]); + score += this.ts_(this.UP3__[p3]); + score += this.ts_(this.BP1__[p1 + p2]); + score += this.ts_(this.BP2__[p2 + p3]); + score += this.ts_(this.UW1__[w1]); + score += this.ts_(this.UW2__[w2]); + score += this.ts_(this.UW3__[w3]); + score += this.ts_(this.UW4__[w4]); + score += this.ts_(this.UW5__[w5]); + score += this.ts_(this.UW6__[w6]); + score += this.ts_(this.BW1__[w2 + w3]); + score += this.ts_(this.BW2__[w3 + w4]); + score += this.ts_(this.BW3__[w4 + w5]); + score += this.ts_(this.TW1__[w1 + w2 + w3]); + score += this.ts_(this.TW2__[w2 + w3 + w4]); + score += this.ts_(this.TW3__[w3 + w4 + w5]); + score += this.ts_(this.TW4__[w4 + w5 + w6]); + score += this.ts_(this.UC1__[c1]); + score += this.ts_(this.UC2__[c2]); + score += this.ts_(this.UC3__[c3]); + score += this.ts_(this.UC4__[c4]); + score += this.ts_(this.UC5__[c5]); + score += this.ts_(this.UC6__[c6]); + score += this.ts_(this.BC1__[c2 + c3]); + score += this.ts_(this.BC2__[c3 + c4]); + score += this.ts_(this.BC3__[c4 + c5]); + score += this.ts_(this.TC1__[c1 + c2 + c3]); + score += this.ts_(this.TC2__[c2 + c3 + c4]); + score += this.ts_(this.TC3__[c3 + c4 + c5]); + score += this.ts_(this.TC4__[c4 + c5 + c6]); + // score += this.ts_(this.TC5__[c4 + c5 + c6]); + score += this.ts_(this.UQ1__[p1 + c1]); + score += this.ts_(this.UQ2__[p2 + c2]); + score += this.ts_(this.UQ3__[p3 + c3]); + score += this.ts_(this.BQ1__[p2 + c2 + c3]); + score += this.ts_(this.BQ2__[p2 + c3 + c4]); + score += this.ts_(this.BQ3__[p3 + c2 + c3]); + score += this.ts_(this.BQ4__[p3 + c3 + c4]); + score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]); + score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]); + score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]); + score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]); + var p = "O"; + if (score > 0) { + result.push(word); + word = ""; + p = "B"; + } + p1 = p2; + p2 = p3; + p3 = p; + word += seg[i]; + } + result.push(word); + + return result; + } + + lunr.TinySegmenter = TinySegmenter; + }; + +})); \ No newline at end of file diff --git a/assets/javascripts/lunr/wordcut.js b/assets/javascripts/lunr/wordcut.js new file mode 100644 index 00000000..0d898c9e --- /dev/null +++ b/assets/javascripts/lunr/wordcut.js @@ -0,0 +1,6708 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}(g.lunr || (g.lunr = {})).wordcut = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1; + }) + this.addWords(words, false) + } + if(finalize){ + this.finalizeDict(); + } + }, + + dictSeek: function (l, r, ch, strOffset, pos) { + var ans = null; + while (l <= r) { + var m = Math.floor((l + r) / 2), + dict_item = this.dict[m], + len = dict_item.length; + if (len <= strOffset) { + l = m + 1; + } else { + var ch_ = dict_item[strOffset]; + if (ch_ < ch) { + l = m + 1; + } else if (ch_ > ch) { + r = m - 1; + } else { + ans = m; + if (pos == LEFT) { + r = m - 1; + } else { + l = m + 1; + } + } + } + } + return ans; + }, + + isFinal: function (acceptor) { + return this.dict[acceptor.l].length == acceptor.strOffset; + }, + + createAcceptor: function () { + return { + l: 0, + r: this.dict.length - 1, + strOffset: 0, + isFinal: false, + dict: this, + transit: function (ch) { + return this.dict.transit(this, ch); + }, + isError: false, + tag: "DICT", + w: 1, + type: "DICT" + }; + }, + + transit: function (acceptor, ch) { + var l = this.dictSeek(acceptor.l, + acceptor.r, + ch, + acceptor.strOffset, + LEFT); + if (l !== null) { + var r = this.dictSeek(l, + acceptor.r, + ch, + acceptor.strOffset, + RIGHT); + acceptor.l = l; + acceptor.r = r; + acceptor.strOffset++; + acceptor.isFinal = this.isFinal(acceptor); + } else { + acceptor.isError = true; + } + return acceptor; + }, + + sortuniq: function(a){ + return a.sort().filter(function(item, pos, arr){ + return !pos || item != arr[pos - 1]; + }) + }, + + flatten: function(a){ + //[[1,2],[3]] -> [1,2,3] + return [].concat.apply([], a); + } +}; +module.exports = WordcutDict; + +}).call(this,"/dist/tmp") +},{"glob":16,"path":22}],3:[function(require,module,exports){ +var WordRule = { + createAcceptor: function(tag) { + if (tag["WORD_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + var lch = ch.toLowerCase(); + if (lch >= "a" && lch <= "z") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "WORD_RULE", + type: "WORD_RULE", + w: 1}; + } +}; + +var NumberRule = { + createAcceptor: function(tag) { + if (tag["NUMBER_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch >= "0" && ch <= "9") { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "NUMBER_RULE", + type: "NUMBER_RULE", + w: 1}; + } +}; + +var SpaceRule = { + tag: "SPACE_RULE", + createAcceptor: function(tag) { + + if (tag["SPACE_RULE"]) + return null; + + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (ch == " " || ch == "\t" || ch == "\r" || ch == "\n" || + ch == "\u00A0" || ch=="\u2003"//nbsp and emsp + ) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: SpaceRule.tag, + w: 1, + type: "SPACE_RULE"}; + } +} + +var SingleSymbolRule = { + tag: "SINSYM", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (this.strOffset == 0 && ch.match(/^[\@\(\)\/\,\-\."`]$/)) { + this.isFinal = true; + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "SINSYM", + w: 1, + type: "SINSYM"}; + } +} + + +var LatinRules = [WordRule, SpaceRule, SingleSymbolRule, NumberRule]; + +module.exports = LatinRules; + +},{}],4:[function(require,module,exports){ +var _ = require("underscore") + , WordcutCore = require("./wordcut_core"); +var PathInfoBuilder = { + + /* + buildByPartAcceptors: function(path, acceptors, i) { + var + var genInfos = partAcceptors.reduce(function(genInfos, acceptor) { + + }, []); + + return genInfos; + } + */ + + buildByAcceptors: function(path, finalAcceptors, i) { + var self = this; + var infos = finalAcceptors.map(function(acceptor) { + var p = i - acceptor.strOffset + 1 + , _info = path[p]; + + var info = {p: p, + mw: _info.mw + (acceptor.mw === undefined ? 0 : acceptor.mw), + w: acceptor.w + _info.w, + unk: (acceptor.unk ? acceptor.unk : 0) + _info.unk, + type: acceptor.type}; + + if (acceptor.type == "PART") { + for(var j = p + 1; j <= i; j++) { + path[j].merge = p; + } + info.merge = p; + } + + return info; + }); + return infos.filter(function(info) { return info; }); + }, + + fallback: function(path, leftBoundary, text, i) { + var _info = path[leftBoundary]; + if (text[i].match(/[\u0E48-\u0E4E]/)) { + if (leftBoundary != 0) + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + mw: 0, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; +/* } else if(leftBoundary > 0 && path[leftBoundary].type !== "UNK") { + leftBoundary = path[leftBoundary].p; + return {p: leftBoundary, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; */ + } else { + return {p: leftBoundary, + mw: _info.mw, + w: 1 + _info.w, + unk: 1 + _info.unk, + type: "UNK"}; + } + }, + + build: function(path, finalAcceptors, i, leftBoundary, text) { + var basicPathInfos = this.buildByAcceptors(path, finalAcceptors, i); + if (basicPathInfos.length > 0) { + return basicPathInfos; + } else { + return [this.fallback(path, leftBoundary, text, i)]; + } + } +}; + +module.exports = function() { + return _.clone(PathInfoBuilder); +} + +},{"./wordcut_core":8,"underscore":25}],5:[function(require,module,exports){ +var _ = require("underscore"); + + +var PathSelector = { + selectPath: function(paths) { + var path = paths.reduce(function(selectedPath, path) { + if (selectedPath == null) { + return path; + } else { + if (path.unk < selectedPath.unk) + return path; + if (path.unk == selectedPath.unk) { + if (path.mw < selectedPath.mw) + return path + if (path.mw == selectedPath.mw) { + if (path.w < selectedPath.w) + return path; + } + } + return selectedPath; + } + }, null); + return path; + }, + + createPath: function() { + return [{p:null, w:0, unk:0, type: "INIT", mw:0}]; + } +}; + +module.exports = function() { + return _.clone(PathSelector); +}; + +},{"underscore":25}],6:[function(require,module,exports){ +function isMatch(pat, offset, ch) { + if (pat.length <= offset) + return false; + var _ch = pat[offset]; + return _ch == ch || + (_ch.match(/[กข]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/[มบ]/) && ch.match(/[ก-ฮ]/)) || + (_ch.match(/\u0E49/) && ch.match(/[\u0E48-\u0E4B]/)); +} + +var Rule0 = { + pat: "เหก็ม", + createAcceptor: function(tag) { + return {strOffset: 0, + isFinal: false, + transit: function(ch) { + if (isMatch(Rule0.pat, this.strOffset,ch)) { + this.isFinal = (this.strOffset + 1 == Rule0.pat.length); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "THAI_RULE", + type: "THAI_RULE", + w: 1}; + } +}; + +var PartRule = { + createAcceptor: function(tag) { + return {strOffset: 0, + patterns: [ + "แก", "เก", "ก้", "กก์", "กา", "กี", "กิ", "กืก" + ], + isFinal: false, + transit: function(ch) { + var offset = this.strOffset; + this.patterns = this.patterns.filter(function(pat) { + return isMatch(pat, offset, ch); + }); + + if (this.patterns.length > 0) { + var len = 1 + offset; + this.isFinal = this.patterns.some(function(pat) { + return pat.length == len; + }); + this.strOffset++; + } else { + this.isError = true; + } + return this; + }, + isError: false, + tag: "PART", + type: "PART", + unk: 1, + w: 1}; + } +}; + +var ThaiRules = [Rule0, PartRule]; + +module.exports = ThaiRules; + +},{}],7:[function(require,module,exports){ +var sys = require("sys") + , WordcutDict = require("./dict") + , WordcutCore = require("./wordcut_core") + , PathInfoBuilder = require("./path_info_builder") + , PathSelector = require("./path_selector") + , Acceptors = require("./acceptors") + , latinRules = require("./latin_rules") + , thaiRules = require("./thai_rules") + , _ = require("underscore"); + + +var Wordcut = Object.create(WordcutCore); +Wordcut.defaultPathInfoBuilder = PathInfoBuilder; +Wordcut.defaultPathSelector = PathSelector; +Wordcut.defaultAcceptors = Acceptors; +Wordcut.defaultLatinRules = latinRules; +Wordcut.defaultThaiRules = thaiRules; +Wordcut.defaultDict = WordcutDict; + + +Wordcut.initNoDict = function(dict_path) { + var self = this; + self.pathInfoBuilder = new self.defaultPathInfoBuilder; + self.pathSelector = new self.defaultPathSelector; + self.acceptors = new self.defaultAcceptors; + self.defaultLatinRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); + self.defaultThaiRules.forEach(function(rule) { + self.acceptors.creators.push(rule); + }); +}; + +Wordcut.init = function(dict_path, withDefault, additionalWords) { + withDefault = withDefault || false; + this.initNoDict(); + var dict = _.clone(this.defaultDict); + dict.init(dict_path, withDefault, additionalWords); + this.acceptors.creators.push(dict); +}; + +module.exports = Wordcut; + +},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,"sys":28,"underscore":25}],8:[function(require,module,exports){ +var WordcutCore = { + + buildPath: function(text) { + var self = this + , path = self.pathSelector.createPath() + , leftBoundary = 0; + self.acceptors.reset(); + for (var i = 0; i < text.length; i++) { + var ch = text[i]; + self.acceptors.transit(ch); + + var possiblePathInfos = self + .pathInfoBuilder + .build(path, + self.acceptors.getFinalAcceptors(), + i, + leftBoundary, + text); + var selectedPath = self.pathSelector.selectPath(possiblePathInfos) + + path.push(selectedPath); + if (selectedPath.type !== "UNK") { + leftBoundary = i; + } + } + return path; + }, + + pathToRanges: function(path) { + var e = path.length - 1 + , ranges = []; + + while (e > 0) { + var info = path[e] + , s = info.p; + + if (info.merge !== undefined && ranges.length > 0) { + var r = ranges[ranges.length - 1]; + r.s = info.merge; + s = r.s; + } else { + ranges.push({s:s, e:e}); + } + e = s; + } + return ranges.reverse(); + }, + + rangesToText: function(text, ranges, delimiter) { + return ranges.map(function(r) { + return text.substring(r.s, r.e); + }).join(delimiter); + }, + + cut: function(text, delimiter) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + return this + .rangesToText(text, ranges, + (delimiter === undefined ? "|" : delimiter)); + }, + + cutIntoRanges: function(text, noText) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + if (!noText) { + ranges.forEach(function(r) { + r.text = text.substring(r.s, r.e); + }); + } + return ranges; + }, + + cutIntoArray: function(text) { + var path = this.buildPath(text) + , ranges = this.pathToRanges(path); + + return ranges.map(function(r) { + return text.substring(r.s, r.e) + }); + } +}; + +module.exports = WordcutCore; + +},{}],9:[function(require,module,exports){ +// http://wiki.commonjs.org/wiki/Unit_Testing/1.0 +// +// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8! +// +// Originally from narwhal.js (http://narwhaljs.org) +// Copyright (c) 2009 Thomas Robinson <280north.com> +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the 'Software'), to +// deal in the Software without restriction, including without limitation the +// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +// sell copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +// when used in node, this will actually load the util module we depend on +// versus loading the builtin util module as happens otherwise +// this is a bug in node module loading as far as I am concerned +var util = require('util/'); + +var pSlice = Array.prototype.slice; +var hasOwn = Object.prototype.hasOwnProperty; + +// 1. The assert module provides functions that throw +// AssertionError's when particular conditions are not met. The +// assert module must conform to the following interface. + +var assert = module.exports = ok; + +// 2. The AssertionError is defined in assert. +// new assert.AssertionError({ message: message, +// actual: actual, +// expected: expected }) + +assert.AssertionError = function AssertionError(options) { + this.name = 'AssertionError'; + this.actual = options.actual; + this.expected = options.expected; + this.operator = options.operator; + if (options.message) { + this.message = options.message; + this.generatedMessage = false; + } else { + this.message = getMessage(this); + this.generatedMessage = true; + } + var stackStartFunction = options.stackStartFunction || fail; + + if (Error.captureStackTrace) { + Error.captureStackTrace(this, stackStartFunction); + } + else { + // non v8 browsers so we can have a stacktrace + var err = new Error(); + if (err.stack) { + var out = err.stack; + + // try to strip useless frames + var fn_name = stackStartFunction.name; + var idx = out.indexOf('\n' + fn_name); + if (idx >= 0) { + // once we have located the function frame + // we need to strip out everything before it (and its line) + var next_line = out.indexOf('\n', idx + 1); + out = out.substring(next_line + 1); + } + + this.stack = out; + } + } +}; + +// assert.AssertionError instanceof Error +util.inherits(assert.AssertionError, Error); + +function replacer(key, value) { + if (util.isUndefined(value)) { + return '' + value; + } + if (util.isNumber(value) && !isFinite(value)) { + return value.toString(); + } + if (util.isFunction(value) || util.isRegExp(value)) { + return value.toString(); + } + return value; +} + +function truncate(s, n) { + if (util.isString(s)) { + return s.length < n ? s : s.slice(0, n); + } else { + return s; + } +} + +function getMessage(self) { + return truncate(JSON.stringify(self.actual, replacer), 128) + ' ' + + self.operator + ' ' + + truncate(JSON.stringify(self.expected, replacer), 128); +} + +// At present only the three keys mentioned above are used and +// understood by the spec. Implementations or sub modules can pass +// other keys to the AssertionError's constructor - they will be +// ignored. + +// 3. All of the following functions must throw an AssertionError +// when a corresponding condition is not met, with a message that +// may be undefined if not provided. All assertion methods provide +// both the actual and expected values to the assertion error for +// display purposes. + +function fail(actual, expected, message, operator, stackStartFunction) { + throw new assert.AssertionError({ + message: message, + actual: actual, + expected: expected, + operator: operator, + stackStartFunction: stackStartFunction + }); +} + +// EXTENSION! allows for well behaved errors defined elsewhere. +assert.fail = fail; + +// 4. Pure assertion tests whether a value is truthy, as determined +// by !!guard. +// assert.ok(guard, message_opt); +// This statement is equivalent to assert.equal(true, !!guard, +// message_opt);. To test strictly for the value true, use +// assert.strictEqual(true, guard, message_opt);. + +function ok(value, message) { + if (!value) fail(value, true, message, '==', assert.ok); +} +assert.ok = ok; + +// 5. The equality assertion tests shallow, coercive equality with +// ==. +// assert.equal(actual, expected, message_opt); + +assert.equal = function equal(actual, expected, message) { + if (actual != expected) fail(actual, expected, message, '==', assert.equal); +}; + +// 6. The non-equality assertion tests for whether two objects are not equal +// with != assert.notEqual(actual, expected, message_opt); + +assert.notEqual = function notEqual(actual, expected, message) { + if (actual == expected) { + fail(actual, expected, message, '!=', assert.notEqual); + } +}; + +// 7. The equivalence assertion tests a deep equality relation. +// assert.deepEqual(actual, expected, message_opt); + +assert.deepEqual = function deepEqual(actual, expected, message) { + if (!_deepEqual(actual, expected)) { + fail(actual, expected, message, 'deepEqual', assert.deepEqual); + } +}; + +function _deepEqual(actual, expected) { + // 7.1. All identical values are equivalent, as determined by ===. + if (actual === expected) { + return true; + + } else if (util.isBuffer(actual) && util.isBuffer(expected)) { + if (actual.length != expected.length) return false; + + for (var i = 0; i < actual.length; i++) { + if (actual[i] !== expected[i]) return false; + } + + return true; + + // 7.2. If the expected value is a Date object, the actual value is + // equivalent if it is also a Date object that refers to the same time. + } else if (util.isDate(actual) && util.isDate(expected)) { + return actual.getTime() === expected.getTime(); + + // 7.3 If the expected value is a RegExp object, the actual value is + // equivalent if it is also a RegExp object with the same source and + // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`). + } else if (util.isRegExp(actual) && util.isRegExp(expected)) { + return actual.source === expected.source && + actual.global === expected.global && + actual.multiline === expected.multiline && + actual.lastIndex === expected.lastIndex && + actual.ignoreCase === expected.ignoreCase; + + // 7.4. Other pairs that do not both pass typeof value == 'object', + // equivalence is determined by ==. + } else if (!util.isObject(actual) && !util.isObject(expected)) { + return actual == expected; + + // 7.5 For all other Object pairs, including Array objects, equivalence is + // determined by having the same number of owned properties (as verified + // with Object.prototype.hasOwnProperty.call), the same set of keys + // (although not necessarily the same order), equivalent values for every + // corresponding key, and an identical 'prototype' property. Note: this + // accounts for both named and indexed properties on Arrays. + } else { + return objEquiv(actual, expected); + } +} + +function isArguments(object) { + return Object.prototype.toString.call(object) == '[object Arguments]'; +} + +function objEquiv(a, b) { + if (util.isNullOrUndefined(a) || util.isNullOrUndefined(b)) + return false; + // an identical 'prototype' property. + if (a.prototype !== b.prototype) return false; + // if one is a primitive, the other must be same + if (util.isPrimitive(a) || util.isPrimitive(b)) { + return a === b; + } + var aIsArgs = isArguments(a), + bIsArgs = isArguments(b); + if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs)) + return false; + if (aIsArgs) { + a = pSlice.call(a); + b = pSlice.call(b); + return _deepEqual(a, b); + } + var ka = objectKeys(a), + kb = objectKeys(b), + key, i; + // having the same number of owned properties (keys incorporates + // hasOwnProperty) + if (ka.length != kb.length) + return false; + //the same set of keys (although not necessarily the same order), + ka.sort(); + kb.sort(); + //~~~cheap key test + for (i = ka.length - 1; i >= 0; i--) { + if (ka[i] != kb[i]) + return false; + } + //equivalent values for every corresponding key, and + //~~~possibly expensive deep test + for (i = ka.length - 1; i >= 0; i--) { + key = ka[i]; + if (!_deepEqual(a[key], b[key])) return false; + } + return true; +} + +// 8. The non-equivalence assertion tests for any deep inequality. +// assert.notDeepEqual(actual, expected, message_opt); + +assert.notDeepEqual = function notDeepEqual(actual, expected, message) { + if (_deepEqual(actual, expected)) { + fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual); + } +}; + +// 9. The strict equality assertion tests strict equality, as determined by ===. +// assert.strictEqual(actual, expected, message_opt); + +assert.strictEqual = function strictEqual(actual, expected, message) { + if (actual !== expected) { + fail(actual, expected, message, '===', assert.strictEqual); + } +}; + +// 10. The strict non-equality assertion tests for strict inequality, as +// determined by !==. assert.notStrictEqual(actual, expected, message_opt); + +assert.notStrictEqual = function notStrictEqual(actual, expected, message) { + if (actual === expected) { + fail(actual, expected, message, '!==', assert.notStrictEqual); + } +}; + +function expectedException(actual, expected) { + if (!actual || !expected) { + return false; + } + + if (Object.prototype.toString.call(expected) == '[object RegExp]') { + return expected.test(actual); + } else if (actual instanceof expected) { + return true; + } else if (expected.call({}, actual) === true) { + return true; + } + + return false; +} + +function _throws(shouldThrow, block, expected, message) { + var actual; + + if (util.isString(expected)) { + message = expected; + expected = null; + } + + try { + block(); + } catch (e) { + actual = e; + } + + message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + + (message ? ' ' + message : '.'); + + if (shouldThrow && !actual) { + fail(actual, expected, 'Missing expected exception' + message); + } + + if (!shouldThrow && expectedException(actual, expected)) { + fail(actual, expected, 'Got unwanted exception' + message); + } + + if ((shouldThrow && actual && expected && + !expectedException(actual, expected)) || (!shouldThrow && actual)) { + throw actual; + } +} + +// 11. Expected to throw an error: +// assert.throws(block, Error_opt, message_opt); + +assert.throws = function(block, /*optional*/error, /*optional*/message) { + _throws.apply(this, [true].concat(pSlice.call(arguments))); +}; + +// EXTENSION! This is annoying to write outside this module. +assert.doesNotThrow = function(block, /*optional*/message) { + _throws.apply(this, [false].concat(pSlice.call(arguments))); +}; + +assert.ifError = function(err) { if (err) {throw err;}}; + +var objectKeys = Object.keys || function (obj) { + var keys = []; + for (var key in obj) { + if (hasOwn.call(obj, key)) keys.push(key); + } + return keys; +}; + +},{"util/":28}],10:[function(require,module,exports){ +'use strict'; +module.exports = balanced; +function balanced(a, b, str) { + if (a instanceof RegExp) a = maybeMatch(a, str); + if (b instanceof RegExp) b = maybeMatch(b, str); + + var r = range(a, b, str); + + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; +} + +function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; +} + +balanced.range = range; +function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [ begs.pop(), bi ]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + + bi = str.indexOf(b, i + 1); + } + + i = ai < bi && ai >= 0 ? ai : bi; + } + + if (begs.length) { + result = [ left, right ]; + } + } + + return result; +} + +},{}],11:[function(require,module,exports){ +var concatMap = require('concat-map'); +var balanced = require('balanced-match'); + +module.exports = expandTop; + +var escSlash = '\0SLASH'+Math.random()+'\0'; +var escOpen = '\0OPEN'+Math.random()+'\0'; +var escClose = '\0CLOSE'+Math.random()+'\0'; +var escComma = '\0COMMA'+Math.random()+'\0'; +var escPeriod = '\0PERIOD'+Math.random()+'\0'; + +function numeric(str) { + return parseInt(str, 10) == str + ? parseInt(str, 10) + : str.charCodeAt(0); +} + +function escapeBraces(str) { + return str.split('\\\\').join(escSlash) + .split('\\{').join(escOpen) + .split('\\}').join(escClose) + .split('\\,').join(escComma) + .split('\\.').join(escPeriod); +} + +function unescapeBraces(str) { + return str.split(escSlash).join('\\') + .split(escOpen).join('{') + .split(escClose).join('}') + .split(escComma).join(',') + .split(escPeriod).join('.'); +} + + +// Basically just str.split(","), but handling cases +// where we have nested braced sections, which should be +// treated as individual members, like {a,{b,c},d} +function parseCommaParts(str) { + if (!str) + return ['']; + + var parts = []; + var m = balanced('{', '}', str); + + if (!m) + return str.split(','); + + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(','); + + p[p.length-1] += '{' + body + '}'; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length-1] += postParts.shift(); + p.push.apply(p, postParts); + } + + parts.push.apply(parts, p); + + return parts; +} + +function expandTop(str) { + if (!str) + return []; + + // I don't know why Bash 4.3 does this, but it does. + // Anything starting with {} will have the first two bytes preserved + // but *only* at the top level, so {},a}b will not expand to anything, + // but a{},b}c will be expanded to [a}c,abc]. + // One could argue that this is a bug in Bash, but since the goal of + // this module is to match Bash's rules, we escape a leading {} + if (str.substr(0, 2) === '{}') { + str = '\\{\\}' + str.substr(2); + } + + return expand(escapeBraces(str), true).map(unescapeBraces); +} + +function identity(e) { + return e; +} + +function embrace(str) { + return '{' + str + '}'; +} +function isPadded(el) { + return /^-?0\d/.test(el); +} + +function lte(i, y) { + return i <= y; +} +function gte(i, y) { + return i >= y; +} + +function expand(str, isTop) { + var expansions = []; + + var m = balanced('{', '}', str); + if (!m || /\$$/.test(m.pre)) return [str]; + + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(',') >= 0; + if (!isSequence && !isOptions) { + // {a},b} + if (m.post.match(/,.*\}/)) { + str = m.pre + '{' + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + // x{{a,b}}y ==> x{a}y x{b}y + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length + ? expand(m.post, false) + : ['']; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + + // at this point, n is the parts, and we know it's not a comma set + // with a single entry. + + // no need to expand pre, since it is guaranteed to be free of brace-sets + var pre = m.pre; + var post = m.post.length + ? expand(m.post, false) + : ['']; + + var N; + + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length) + var incr = n.length == 3 + ? Math.abs(numeric(n[2])) + : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + + N = []; + + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === '\\') + c = ''; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join('0'); + if (i < 0) + c = '-' + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { return expand(el, false) }); + } + + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + + return expansions; +} + + +},{"balanced-match":10,"concat-map":13}],12:[function(require,module,exports){ + +},{}],13:[function(require,module,exports){ +module.exports = function (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) res.push.apply(res, x); + else res.push(x); + } + return res; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],14:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } + throw TypeError('Uncaught, unspecified "error" event.'); + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + handler.apply(this, args); + } + } else if (isObject(handler)) { + len = arguments.length; + args = new Array(len - 1); + for (i = 1; i < len; i++) + args[i - 1] = arguments[i]; + + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + var m; + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.listenerCount = function(emitter, type) { + var ret; + if (!emitter._events || !emitter._events[type]) + ret = 0; + else if (isFunction(emitter._events[type])) + ret = 1; + else + ret = emitter._events[type].length; + return ret; +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],15:[function(require,module,exports){ +(function (process){ +exports.alphasort = alphasort +exports.alphasorti = alphasorti +exports.setopts = setopts +exports.ownProp = ownProp +exports.makeAbs = makeAbs +exports.finish = finish +exports.mark = mark +exports.isIgnored = isIgnored +exports.childrenIgnored = childrenIgnored + +function ownProp (obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field) +} + +var path = require("path") +var minimatch = require("minimatch") +var isAbsolute = require("path-is-absolute") +var Minimatch = minimatch.Minimatch + +function alphasorti (a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) +} + +function alphasort (a, b) { + return a.localeCompare(b) +} + +function setupIgnores (self, options) { + self.ignore = options.ignore || [] + + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore] + + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap) + } +} + +function ignoreMap (pattern) { + var gmatcher = null + if (pattern.slice(-3) === '/**') { + var gpattern = pattern.replace(/(\/\*\*)+$/, '') + gmatcher = new Minimatch(gpattern) + } + + return { + matcher: new Minimatch(pattern), + gmatcher: gmatcher + } +} + +function setopts (self, pattern, options) { + if (!options) + options = {} + + // base-matching: just use globstar for that. + if (options.matchBase && -1 === pattern.indexOf("/")) { + if (options.noglobstar) { + throw new Error("base matching requires globstar") + } + pattern = "**/" + pattern + } + + self.silent = !!options.silent + self.pattern = pattern + self.strict = options.strict !== false + self.realpath = !!options.realpath + self.realpathCache = options.realpathCache || Object.create(null) + self.follow = !!options.follow + self.dot = !!options.dot + self.mark = !!options.mark + self.nodir = !!options.nodir + if (self.nodir) + self.mark = true + self.sync = !!options.sync + self.nounique = !!options.nounique + self.nonull = !!options.nonull + self.nosort = !!options.nosort + self.nocase = !!options.nocase + self.stat = !!options.stat + self.noprocess = !!options.noprocess + + self.maxLength = options.maxLength || Infinity + self.cache = options.cache || Object.create(null) + self.statCache = options.statCache || Object.create(null) + self.symlinks = options.symlinks || Object.create(null) + + setupIgnores(self, options) + + self.changedCwd = false + var cwd = process.cwd() + if (!ownProp(options, "cwd")) + self.cwd = cwd + else { + self.cwd = options.cwd + self.changedCwd = path.resolve(options.cwd) !== cwd + } + + self.root = options.root || path.resolve(self.cwd, "/") + self.root = path.resolve(self.root) + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/") + + self.nomount = !!options.nomount + + // disable comments and negation unless the user explicitly + // passes in false as the option. + options.nonegate = options.nonegate === false ? false : true + options.nocomment = options.nocomment === false ? false : true + deprecationWarning(options) + + self.minimatch = new Minimatch(pattern, options) + self.options = self.minimatch.options +} + +// TODO(isaacs): remove entirely in v6 +// exported to reset in tests +exports.deprecationWarned +function deprecationWarning(options) { + if (!options.nonegate || !options.nocomment) { + if (process.noDeprecation !== true && !exports.deprecationWarned) { + var msg = 'glob WARNING: comments and negation will be disabled in v6' + if (process.throwDeprecation) + throw new Error(msg) + else if (process.traceDeprecation) + console.trace(msg) + else + console.error(msg) + + exports.deprecationWarned = true + } + } +} + +function finish (self) { + var nou = self.nounique + var all = nou ? [] : Object.create(null) + + for (var i = 0, l = self.matches.length; i < l; i ++) { + var matches = self.matches[i] + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + // do like the shell, and spit out the literal glob + var literal = self.minimatch.globSet[i] + if (nou) + all.push(literal) + else + all[literal] = true + } + } else { + // had matches + var m = Object.keys(matches) + if (nou) + all.push.apply(all, m) + else + m.forEach(function (m) { + all[m] = true + }) + } + } + + if (!nou) + all = Object.keys(all) + + if (!self.nosort) + all = all.sort(self.nocase ? alphasorti : alphasort) + + // at *some* point we statted all of these + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]) + } + if (self.nodir) { + all = all.filter(function (e) { + return !(/\/$/.test(e)) + }) + } + } + + if (self.ignore.length) + all = all.filter(function(m) { + return !isIgnored(self, m) + }) + + self.found = all +} + +function mark (self, p) { + var abs = makeAbs(self, p) + var c = self.cache[abs] + var m = p + if (c) { + var isDir = c === 'DIR' || Array.isArray(c) + var slash = p.slice(-1) === '/' + + if (isDir && !slash) + m += '/' + else if (!isDir && slash) + m = m.slice(0, -1) + + if (m !== p) { + var mabs = makeAbs(self, m) + self.statCache[mabs] = self.statCache[abs] + self.cache[mabs] = self.cache[abs] + } + } + + return m +} + +// lotta situps... +function makeAbs (self, f) { + var abs = f + if (f.charAt(0) === '/') { + abs = path.join(self.root, f) + } else if (isAbsolute(f) || f === '') { + abs = f + } else if (self.changedCwd) { + abs = path.resolve(self.cwd, f) + } else { + abs = path.resolve(f) + } + return abs +} + + +// Return true, if pattern ends with globstar '**', for the accompanying parent directory. +// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents +function isIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +function childrenIgnored (self, path) { + if (!self.ignore.length) + return false + + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path)) + }) +} + +}).call(this,require('_process')) +},{"_process":24,"minimatch":20,"path":22,"path-is-absolute":23}],16:[function(require,module,exports){ +(function (process){ +// Approach: +// +// 1. Get the minimatch set +// 2. For each pattern in the set, PROCESS(pattern, false) +// 3. Store matches per-set, then uniq them +// +// PROCESS(pattern, inGlobStar) +// Get the first [n] items from pattern that are all strings +// Join these together. This is PREFIX. +// If there is no more remaining, then stat(PREFIX) and +// add to matches if it succeeds. END. +// +// If inGlobStar and PREFIX is symlink and points to dir +// set ENTRIES = [] +// else readdir(PREFIX) as ENTRIES +// If fail, END +// +// with ENTRIES +// If pattern[n] is GLOBSTAR +// // handle the case where the globstar match is empty +// // by pruning it out, and testing the resulting pattern +// PROCESS(pattern[0..n] + pattern[n+1 .. $], false) +// // handle other cases. +// for ENTRY in ENTRIES (not dotfiles) +// // attach globstar + tail onto the entry +// // Mark that this entry is a globstar match +// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true) +// +// else // not globstar +// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot) +// Test ENTRY against pattern[n] +// If fails, continue +// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $]) +// +// Caveat: +// Cache all stats and readdirs results to minimize syscall. Since all +// we ever care about is existence and directory-ness, we can just keep +// `true` for files, and [children,...] for directories, or `false` for +// things that don't exist. + +module.exports = glob + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var inherits = require('inherits') +var EE = require('events').EventEmitter +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var globSync = require('./sync.js') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var inflight = require('inflight') +var util = require('util') +var childrenIgnored = common.childrenIgnored +var isIgnored = common.isIgnored + +var once = require('once') + +function glob (pattern, options, cb) { + if (typeof options === 'function') cb = options, options = {} + if (!options) options = {} + + if (options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return globSync(pattern, options) + } + + return new Glob(pattern, options, cb) +} + +glob.sync = globSync +var GlobSync = glob.GlobSync = globSync.GlobSync + +// old api surface +glob.glob = glob + +glob.hasMagic = function (pattern, options_) { + var options = util._extend({}, options_) + options.noprocess = true + + var g = new Glob(pattern, options) + var set = g.minimatch.set + if (set.length > 1) + return true + + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== 'string') + return true + } + + return false +} + +glob.Glob = Glob +inherits(Glob, EE) +function Glob (pattern, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + + if (options && options.sync) { + if (cb) + throw new TypeError('callback provided to sync glob') + return new GlobSync(pattern, options) + } + + if (!(this instanceof Glob)) + return new Glob(pattern, options, cb) + + setopts(this, pattern, options) + this._didRealPath = false + + // process each pattern in the minimatch set + var n = this.minimatch.set.length + + // The matches are stored as {: true,...} so that + // duplicates are automagically pruned. + // Later, we do an Object.keys() on these. + // Keep them as a list so we can fill in when nonull is set. + this.matches = new Array(n) + + if (typeof cb === 'function') { + cb = once(cb) + this.on('error', cb) + this.on('end', function (matches) { + cb(null, matches) + }) + } + + var self = this + var n = this.minimatch.set.length + this._processing = 0 + this.matches = new Array(n) + + this._emitQueue = [] + this._processQueue = [] + this.paused = false + + if (this.noprocess) + return this + + if (n === 0) + return done() + + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false, done) + } + + function done () { + --self._processing + if (self._processing <= 0) + self._finish() + } +} + +Glob.prototype._finish = function () { + assert(this instanceof Glob) + if (this.aborted) + return + + if (this.realpath && !this._didRealpath) + return this._realpath() + + common.finish(this) + this.emit('end', this.found) +} + +Glob.prototype._realpath = function () { + if (this._didRealpath) + return + + this._didRealpath = true + + var n = this.matches.length + if (n === 0) + return this._finish() + + var self = this + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next) + + function next () { + if (--n === 0) + self._finish() + } +} + +Glob.prototype._realpathSet = function (index, cb) { + var matchset = this.matches[index] + if (!matchset) + return cb() + + var found = Object.keys(matchset) + var self = this + var n = found.length + + if (n === 0) + return cb() + + var set = this.matches[index] = Object.create(null) + found.forEach(function (p, i) { + // If there's a problem with the stat, then it means that + // one or more of the links in the realpath couldn't be + // resolved. just return the abs value in that case. + p = self._makeAbs(p) + fs.realpath(p, self.realpathCache, function (er, real) { + if (!er) + set[real] = true + else if (er.syscall === 'stat') + set[p] = true + else + self.emit('error', er) // srsly wtf right here + + if (--n === 0) { + self.matches[index] = set + cb() + } + }) + }) +} + +Glob.prototype._mark = function (p) { + return common.mark(this, p) +} + +Glob.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +Glob.prototype.abort = function () { + this.aborted = true + this.emit('abort') +} + +Glob.prototype.pause = function () { + if (!this.paused) { + this.paused = true + this.emit('pause') + } +} + +Glob.prototype.resume = function () { + if (this.paused) { + this.emit('resume') + this.paused = false + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0) + this._emitQueue.length = 0 + for (var i = 0; i < eq.length; i ++) { + var e = eq[i] + this._emitMatch(e[0], e[1]) + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0) + this._processQueue.length = 0 + for (var i = 0; i < pq.length; i ++) { + var p = pq[i] + this._processing-- + this._process(p[0], p[1], p[2], p[3]) + } + } + } +} + +Glob.prototype._process = function (pattern, index, inGlobStar, cb) { + assert(this instanceof Glob) + assert(typeof cb === 'function') + + if (this.aborted) + return + + this._processing++ + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]) + return + } + + //console.error('PROCESS %d', this._processing, pattern) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // see if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index, cb) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip _processing + if (childrenIgnored(this, read)) + return cb() + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb) +} + +Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + +Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return cb() + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries) + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return cb() + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this._emitMatch(index, e) + } + // This was the last one, and no stats were needed + return cb() + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) { + if (prefix !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + this._process([e].concat(remain), index, inGlobStar, cb) + } + cb() +} + +Glob.prototype._emitMatch = function (index, e) { + if (this.aborted) + return + + if (this.matches[index][e]) + return + + if (isIgnored(this, e)) + return + + if (this.paused) { + this._emitQueue.push([index, e]) + return + } + + var abs = this._makeAbs(e) + + if (this.nodir) { + var c = this.cache[abs] + if (c === 'DIR' || Array.isArray(c)) + return + } + + if (this.mark) + e = this._mark(e) + + this.matches[index][e] = true + + var st = this.statCache[abs] + if (st) + this.emit('stat', e, st) + + this.emit('match', e) +} + +Glob.prototype._readdirInGlobStar = function (abs, cb) { + if (this.aborted) + return + + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false, cb) + + var lstatkey = 'lstat\0' + abs + var self = this + var lstatcb = inflight(lstatkey, lstatcb_) + + if (lstatcb) + fs.lstat(abs, lstatcb) + + function lstatcb_ (er, lstat) { + if (er) + return cb() + + var isSym = lstat.isSymbolicLink() + self.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) { + self.cache[abs] = 'FILE' + cb() + } else + self._readdir(abs, false, cb) + } +} + +Glob.prototype._readdir = function (abs, inGlobStar, cb) { + if (this.aborted) + return + + cb = inflight('readdir\0'+abs+'\0'+inGlobStar, cb) + if (!cb) + return + + //console.error('RD %j %j', +inGlobStar, abs) + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return cb() + + if (Array.isArray(c)) + return cb(null, c) + } + + var self = this + fs.readdir(abs, readdirCb(this, abs, cb)) +} + +function readdirCb (self, abs, cb) { + return function (er, entries) { + if (er) + self._readdirError(abs, er, cb) + else + self._readdirEntries(abs, entries, cb) + } +} + +Glob.prototype._readdirEntries = function (abs, entries, cb) { + if (this.aborted) + return + + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + return cb(null, entries) +} + +Glob.prototype._readdirError = function (f, er, cb) { + if (this.aborted) + return + + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) { + this.emit('error', er) + // If the error is handled, then we abort + // if not, we threw out of here + this.abort() + } + if (!this.silent) + console.error('glob error', er) + break + } + + return cb() +} + +Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this + this._readdir(abs, inGlobStar, function (er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb) + }) +} + + +Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) { + //console.error('pgs2', prefix, remain[0], entries) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return cb() + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false, cb) + + var isSym = this.symlinks[abs] + var len = entries.length + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return cb() + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true, cb) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true, cb) + } + + cb() +} + +Glob.prototype._processSimple = function (prefix, index, cb) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var self = this + this._stat(prefix, function (er, exists) { + self._processSimple2(prefix, index, er, exists, cb) + }) +} +Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) { + + //console.error('ps2', prefix, exists) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return cb() + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this._emitMatch(index, prefix) + cb() +} + +// Returns either 'DIR', 'FILE', or false +Glob.prototype._stat = function (f, cb) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return cb() + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return cb(null, c) + + if (needDir && c === 'FILE') + return cb() + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (stat !== undefined) { + if (stat === false) + return cb(null, stat) + else { + var type = stat.isDirectory() ? 'DIR' : 'FILE' + if (needDir && type === 'FILE') + return cb() + else + return cb(null, type, stat) + } + } + + var self = this + var statcb = inflight('stat\0' + abs, lstatcb_) + if (statcb) + fs.lstat(abs, statcb) + + function lstatcb_ (er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + // If it's a symlink, then treat it as the target, unless + // the target does not exist, then treat it as a file. + return fs.stat(abs, function (er, stat) { + if (er) + self._stat2(f, abs, null, lstat, cb) + else + self._stat2(f, abs, er, stat, cb) + }) + } else { + self._stat2(f, abs, er, lstat, cb) + } + } +} + +Glob.prototype._stat2 = function (f, abs, er, stat, cb) { + if (er) { + this.statCache[abs] = false + return cb() + } + + var needDir = f.slice(-1) === '/' + this.statCache[abs] = stat + + if (abs.slice(-1) === '/' && !stat.isDirectory()) + return cb(null, false, stat) + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return cb() + + return cb(null, c, stat) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./sync.js":17,"_process":24,"assert":9,"events":14,"fs":12,"inflight":18,"inherits":19,"minimatch":20,"once":21,"path":22,"path-is-absolute":23,"util":28}],17:[function(require,module,exports){ +(function (process){ +module.exports = globSync +globSync.GlobSync = GlobSync + +var fs = require('fs') +var minimatch = require('minimatch') +var Minimatch = minimatch.Minimatch +var Glob = require('./glob.js').Glob +var util = require('util') +var path = require('path') +var assert = require('assert') +var isAbsolute = require('path-is-absolute') +var common = require('./common.js') +var alphasort = common.alphasort +var alphasorti = common.alphasorti +var setopts = common.setopts +var ownProp = common.ownProp +var childrenIgnored = common.childrenIgnored + +function globSync (pattern, options) { + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + return new GlobSync(pattern, options).found +} + +function GlobSync (pattern, options) { + if (!pattern) + throw new Error('must provide pattern') + + if (typeof options === 'function' || arguments.length === 3) + throw new TypeError('callback provided to sync glob\n'+ + 'See: https://github.com/isaacs/node-glob/issues/167') + + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options) + + setopts(this, pattern, options) + + if (this.noprocess) + return this + + var n = this.minimatch.set.length + this.matches = new Array(n) + for (var i = 0; i < n; i ++) { + this._process(this.minimatch.set[i], i, false) + } + this._finish() +} + +GlobSync.prototype._finish = function () { + assert(this instanceof GlobSync) + if (this.realpath) { + var self = this + this.matches.forEach(function (matchset, index) { + var set = self.matches[index] = Object.create(null) + for (var p in matchset) { + try { + p = self._makeAbs(p) + var real = fs.realpathSync(p, self.realpathCache) + set[real] = true + } catch (er) { + if (er.syscall === 'stat') + set[self._makeAbs(p)] = true + else + throw er + } + } + }) + } + common.finish(this) +} + + +GlobSync.prototype._process = function (pattern, index, inGlobStar) { + assert(this instanceof GlobSync) + + // Get the first [n] parts of pattern that are all strings. + var n = 0 + while (typeof pattern[n] === 'string') { + n ++ + } + // now n is the index of the first one that is *not* a string. + + // See if there's anything else + var prefix + switch (n) { + // if not, then this is rather simple + case pattern.length: + this._processSimple(pattern.join('/'), index) + return + + case 0: + // pattern *starts* with some non-trivial item. + // going to readdir(cwd), but not include the prefix in matches. + prefix = null + break + + default: + // pattern has some string bits in the front. + // whatever it starts with, whether that's 'absolute' like /foo/bar, + // or 'relative' like '../baz' + prefix = pattern.slice(0, n).join('/') + break + } + + var remain = pattern.slice(n) + + // get the list of entries. + var read + if (prefix === null) + read = '.' + else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) { + if (!prefix || !isAbsolute(prefix)) + prefix = '/' + prefix + read = prefix + } else + read = prefix + + var abs = this._makeAbs(read) + + //if ignored, skip processing + if (childrenIgnored(this, read)) + return + + var isGlobStar = remain[0] === minimatch.GLOBSTAR + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar) + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar) +} + + +GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar) + + // if the abs isn't a dir, then nothing can match! + if (!entries) + return + + // It will only match dot entries if it starts with a dot, or if + // dot is set. Stuff like @(.foo|.bar) isn't allowed. + var pn = remain[0] + var negate = !!this.minimatch.negate + var rawGlob = pn._glob + var dotOk = this.dot || rawGlob.charAt(0) === '.' + + var matchedEntries = [] + for (var i = 0; i < entries.length; i++) { + var e = entries[i] + if (e.charAt(0) !== '.' || dotOk) { + var m + if (negate && !prefix) { + m = !e.match(pn) + } else { + m = e.match(pn) + } + if (m) + matchedEntries.push(e) + } + } + + var len = matchedEntries.length + // If there are no matched entries, then nothing matches. + if (len === 0) + return + + // if this is the last remaining pattern bit, then no need for + // an additional stat *unless* the user has specified mark or + // stat explicitly. We know they exist, since readdir returned + // them. + + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + if (prefix) { + if (prefix.slice(-1) !== '/') + e = prefix + '/' + e + else + e = prefix + e + } + + if (e.charAt(0) === '/' && !this.nomount) { + e = path.join(this.root, e) + } + this.matches[index][e] = true + } + // This was the last one, and no stats were needed + return + } + + // now test all matched entries as stand-ins for that part + // of the pattern. + remain.shift() + for (var i = 0; i < len; i ++) { + var e = matchedEntries[i] + var newPattern + if (prefix) + newPattern = [prefix, e] + else + newPattern = [e] + this._process(newPattern.concat(remain), index, inGlobStar) + } +} + + +GlobSync.prototype._emitMatch = function (index, e) { + var abs = this._makeAbs(e) + if (this.mark) + e = this._mark(e) + + if (this.matches[index][e]) + return + + if (this.nodir) { + var c = this.cache[this._makeAbs(e)] + if (c === 'DIR' || Array.isArray(c)) + return + } + + this.matches[index][e] = true + if (this.stat) + this._stat(e) +} + + +GlobSync.prototype._readdirInGlobStar = function (abs) { + // follow all symlinked directories forever + // just proceed as if this is a non-globstar situation + if (this.follow) + return this._readdir(abs, false) + + var entries + var lstat + var stat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + // lstat failed, doesn't exist + return null + } + + var isSym = lstat.isSymbolicLink() + this.symlinks[abs] = isSym + + // If it's not a symlink or a dir, then it's definitely a regular file. + // don't bother doing a readdir in that case. + if (!isSym && !lstat.isDirectory()) + this.cache[abs] = 'FILE' + else + entries = this._readdir(abs, false) + + return entries +} + +GlobSync.prototype._readdir = function (abs, inGlobStar) { + var entries + + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs) + + if (ownProp(this.cache, abs)) { + var c = this.cache[abs] + if (!c || c === 'FILE') + return null + + if (Array.isArray(c)) + return c + } + + try { + return this._readdirEntries(abs, fs.readdirSync(abs)) + } catch (er) { + this._readdirError(abs, er) + return null + } +} + +GlobSync.prototype._readdirEntries = function (abs, entries) { + // if we haven't asked to stat everything, then just + // assume that everything in there exists, so we can avoid + // having to stat it a second time. + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i ++) { + var e = entries[i] + if (abs === '/') + e = abs + e + else + e = abs + '/' + e + this.cache[e] = true + } + } + + this.cache[abs] = entries + + // mark and cache dir-ness + return entries +} + +GlobSync.prototype._readdirError = function (f, er) { + // handle errors, and cache the information + switch (er.code) { + case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205 + case 'ENOTDIR': // totally normal. means it *does* exist. + this.cache[this._makeAbs(f)] = 'FILE' + break + + case 'ENOENT': // not terribly unusual + case 'ELOOP': + case 'ENAMETOOLONG': + case 'UNKNOWN': + this.cache[this._makeAbs(f)] = false + break + + default: // some unusual error. Treat as failure. + this.cache[this._makeAbs(f)] = false + if (this.strict) + throw er + if (!this.silent) + console.error('glob error', er) + break + } +} + +GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) { + + var entries = this._readdir(abs, inGlobStar) + + // no entries means not a dir, so it can never have matches + // foo.txt/** doesn't match foo.txt + if (!entries) + return + + // test without the globstar, and with every child both below + // and replacing the globstar. + var remainWithoutGlobStar = remain.slice(1) + var gspref = prefix ? [ prefix ] : [] + var noGlobStar = gspref.concat(remainWithoutGlobStar) + + // the noGlobStar pattern exits the inGlobStar state + this._process(noGlobStar, index, false) + + var len = entries.length + var isSym = this.symlinks[abs] + + // If it's a symlink, and we're in a globstar, then stop + if (isSym && inGlobStar) + return + + for (var i = 0; i < len; i++) { + var e = entries[i] + if (e.charAt(0) === '.' && !this.dot) + continue + + // these two cases enter the inGlobStar state + var instead = gspref.concat(entries[i], remainWithoutGlobStar) + this._process(instead, index, true) + + var below = gspref.concat(entries[i], remain) + this._process(below, index, true) + } +} + +GlobSync.prototype._processSimple = function (prefix, index) { + // XXX review this. Shouldn't it be doing the mounting etc + // before doing stat? kinda weird? + var exists = this._stat(prefix) + + if (!this.matches[index]) + this.matches[index] = Object.create(null) + + // If it doesn't exist, then just mark the lack of results + if (!exists) + return + + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix) + if (prefix.charAt(0) === '/') { + prefix = path.join(this.root, prefix) + } else { + prefix = path.resolve(this.root, prefix) + if (trail) + prefix += '/' + } + } + + if (process.platform === 'win32') + prefix = prefix.replace(/\\/g, '/') + + // Mark this as a match + this.matches[index][prefix] = true +} + +// Returns either 'DIR', 'FILE', or false +GlobSync.prototype._stat = function (f) { + var abs = this._makeAbs(f) + var needDir = f.slice(-1) === '/' + + if (f.length > this.maxLength) + return false + + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs] + + if (Array.isArray(c)) + c = 'DIR' + + // It exists, but maybe not how we need it + if (!needDir || c === 'DIR') + return c + + if (needDir && c === 'FILE') + return false + + // otherwise we have to stat, because maybe c=true + // if we know it exists, but not what it is. + } + + var exists + var stat = this.statCache[abs] + if (!stat) { + var lstat + try { + lstat = fs.lstatSync(abs) + } catch (er) { + return false + } + + if (lstat.isSymbolicLink()) { + try { + stat = fs.statSync(abs) + } catch (er) { + stat = lstat + } + } else { + stat = lstat + } + } + + this.statCache[abs] = stat + + var c = stat.isDirectory() ? 'DIR' : 'FILE' + this.cache[abs] = this.cache[abs] || c + + if (needDir && c !== 'DIR') + return false + + return c +} + +GlobSync.prototype._mark = function (p) { + return common.mark(this, p) +} + +GlobSync.prototype._makeAbs = function (f) { + return common.makeAbs(this, f) +} + +}).call(this,require('_process')) +},{"./common.js":15,"./glob.js":16,"_process":24,"assert":9,"fs":12,"minimatch":20,"path":22,"path-is-absolute":23,"util":28}],18:[function(require,module,exports){ +(function (process){ +var wrappy = require('wrappy') +var reqs = Object.create(null) +var once = require('once') + +module.exports = wrappy(inflight) + +function inflight (key, cb) { + if (reqs[key]) { + reqs[key].push(cb) + return null + } else { + reqs[key] = [cb] + return makeres(key) + } +} + +function makeres (key) { + return once(function RES () { + var cbs = reqs[key] + var len = cbs.length + var args = slice(arguments) + + // XXX It's somewhat ambiguous whether a new callback added in this + // pass should be queued for later execution if something in the + // list of callbacks throws, or if it should just be discarded. + // However, it's such an edge case that it hardly matters, and either + // choice is likely as surprising as the other. + // As it happens, we do go ahead and schedule it for later execution. + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args) + } + } finally { + if (cbs.length > len) { + // added more in the interim. + // de-zalgo, just in case, but don't call again. + cbs.splice(0, len) + process.nextTick(function () { + RES.apply(null, args) + }) + } else { + delete reqs[key] + } + } + }) +} + +function slice (args) { + var length = args.length + var array = [] + + for (var i = 0; i < length; i++) array[i] = args[i] + return array +} + +}).call(this,require('_process')) +},{"_process":24,"once":21,"wrappy":29}],19:[function(require,module,exports){ +if (typeof Object.create === 'function') { + // implementation from standard node.js 'util' module + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + // old school shim for old browsers + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],20:[function(require,module,exports){ +module.exports = minimatch +minimatch.Minimatch = Minimatch + +var path = { sep: '/' } +try { + path = require('path') +} catch (er) {} + +var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {} +var expand = require('brace-expansion') + +var plTypes = { + '!': { open: '(?:(?!(?:', close: '))[^/]*?)'}, + '?': { open: '(?:', close: ')?' }, + '+': { open: '(?:', close: ')+' }, + '*': { open: '(?:', close: ')*' }, + '@': { open: '(?:', close: ')' } +} + +// any single thing other than / +// don't need to escape / when using new RegExp() +var qmark = '[^/]' + +// * => any number of characters +var star = qmark + '*?' + +// ** when dots are allowed. Anything goes, except .. and . +// not (^ or / followed by one or two dots followed by $ or /), +// followed by anything, any number of times. +var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?' + +// not a ^ or / followed by a dot, +// followed by anything, any number of times. +var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?' + +// characters that need to be escaped in RegExp. +var reSpecials = charSet('().*{}+?[]^$\\!') + +// "abc" -> { a:true, b:true, c:true } +function charSet (s) { + return s.split('').reduce(function (set, c) { + set[c] = true + return set + }, {}) +} + +// normalizes slashes. +var slashSplit = /\/+/ + +minimatch.filter = filter +function filter (pattern, options) { + options = options || {} + return function (p, i, list) { + return minimatch(p, pattern, options) + } +} + +function ext (a, b) { + a = a || {} + b = b || {} + var t = {} + Object.keys(b).forEach(function (k) { + t[k] = b[k] + }) + Object.keys(a).forEach(function (k) { + t[k] = a[k] + }) + return t +} + +minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return minimatch + + var orig = minimatch + + var m = function minimatch (p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)) + } + + m.Minimatch = function Minimatch (pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)) + } + + return m +} + +Minimatch.defaults = function (def) { + if (!def || !Object.keys(def).length) return Minimatch + return minimatch.defaults(def).Minimatch +} + +function minimatch (p, pattern, options) { + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + + // shortcut: comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + return false + } + + // "" only matches "" + if (pattern.trim() === '') return p === '' + + return new Minimatch(pattern, options).match(p) +} + +function Minimatch (pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options) + } + + if (typeof pattern !== 'string') { + throw new TypeError('glob pattern string required') + } + + if (!options) options = {} + pattern = pattern.trim() + + // windows support: need to use /, not \ + if (path.sep !== '/') { + pattern = pattern.split(path.sep).join('/') + } + + this.options = options + this.set = [] + this.pattern = pattern + this.regexp = null + this.negate = false + this.comment = false + this.empty = false + + // make the set of regexps etc. + this.make() +} + +Minimatch.prototype.debug = function () {} + +Minimatch.prototype.make = make +function make () { + // don't do it more than once. + if (this._made) return + + var pattern = this.pattern + var options = this.options + + // empty patterns and comments match nothing. + if (!options.nocomment && pattern.charAt(0) === '#') { + this.comment = true + return + } + if (!pattern) { + this.empty = true + return + } + + // step 1: figure out negation, etc. + this.parseNegate() + + // step 2: expand braces + var set = this.globSet = this.braceExpand() + + if (options.debug) this.debug = console.error + + this.debug(this.pattern, set) + + // step 3: now we have a set, so turn each one into a series of path-portion + // matching patterns. + // These will be regexps, except in the case of "**", which is + // set to the GLOBSTAR object for globstar behavior, + // and will not contain any / characters + set = this.globParts = set.map(function (s) { + return s.split(slashSplit) + }) + + this.debug(this.pattern, set) + + // glob --> regexps + set = set.map(function (s, si, set) { + return s.map(this.parse, this) + }, this) + + this.debug(this.pattern, set) + + // filter out everything that didn't compile properly. + set = set.filter(function (s) { + return s.indexOf(false) === -1 + }) + + this.debug(this.pattern, set) + + this.set = set +} + +Minimatch.prototype.parseNegate = parseNegate +function parseNegate () { + var pattern = this.pattern + var negate = false + var options = this.options + var negateOffset = 0 + + if (options.nonegate) return + + for (var i = 0, l = pattern.length + ; i < l && pattern.charAt(i) === '!' + ; i++) { + negate = !negate + negateOffset++ + } + + if (negateOffset) this.pattern = pattern.substr(negateOffset) + this.negate = negate +} + +// Brace expansion: +// a{b,c}d -> abd acd +// a{b,}c -> abc ac +// a{0..3}d -> a0d a1d a2d a3d +// a{b,c{d,e}f}g -> abg acdfg acefg +// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg +// +// Invalid sets are not expanded. +// a{2..}b -> a{2..}b +// a{b}c -> a{b}c +minimatch.braceExpand = function (pattern, options) { + return braceExpand(pattern, options) +} + +Minimatch.prototype.braceExpand = braceExpand + +function braceExpand (pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options + } else { + options = {} + } + } + + pattern = typeof pattern === 'undefined' + ? this.pattern : pattern + + if (typeof pattern === 'undefined') { + throw new TypeError('undefined pattern') + } + + if (options.nobrace || + !pattern.match(/\{.*\}/)) { + // shortcut. no need to expand. + return [pattern] + } + + return expand(pattern) +} + +// parse a component of the expanded set. +// At this point, no pattern may contain "/" in it +// so we're going to return a 2d array, where each entry is the full +// pattern, split on '/', and then turned into a regular expression. +// A regexp is made at the end which joins each array with an +// escaped /, and another full one which joins each regexp with |. +// +// Following the lead of Bash 4.1, note that "**" only has special meaning +// when it is the *only* thing in a path portion. Otherwise, any series +// of * is equivalent to a single *. Globstar behavior is enabled by +// default, and can be disabled by setting options.noglobstar. +Minimatch.prototype.parse = parse +var SUBPARSE = {} +function parse (pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError('pattern is too long') + } + + var options = this.options + + // shortcuts + if (!options.noglobstar && pattern === '**') return GLOBSTAR + if (pattern === '') return '' + + var re = '' + var hasMagic = !!options.nocase + var escaping = false + // ? => one single character + var patternListStack = [] + var negativeLists = [] + var stateChar + var inClass = false + var reClassStart = -1 + var classStart = -1 + // . and .. never match anything that doesn't start with ., + // even when options.dot is set. + var patternStart = pattern.charAt(0) === '.' ? '' // anything + // not (start or / followed by . or .. followed by / or end) + : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' + : '(?!\\.)' + var self = this + + function clearStateChar () { + if (stateChar) { + // we had some state-tracking character + // that wasn't consumed by this pass. + switch (stateChar) { + case '*': + re += star + hasMagic = true + break + case '?': + re += qmark + hasMagic = true + break + default: + re += '\\' + stateChar + break + } + self.debug('clearStateChar %j %j', stateChar, re) + stateChar = false + } + } + + for (var i = 0, len = pattern.length, c + ; (i < len) && (c = pattern.charAt(i)) + ; i++) { + this.debug('%s\t%s %s %j', pattern, i, re, c) + + // skip over any that are escaped. + if (escaping && reSpecials[c]) { + re += '\\' + c + escaping = false + continue + } + + switch (c) { + case '/': + // completely not allowed, even escaped. + // Should already be path-split by now. + return false + + case '\\': + clearStateChar() + escaping = true + continue + + // the various stateChar values + // for the "extglob" stuff. + case '?': + case '*': + case '+': + case '@': + case '!': + this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c) + + // all of those are literals inside a class, except that + // the glob [!a] means [^a] in regexp + if (inClass) { + this.debug(' in class') + if (c === '!' && i === classStart + 1) c = '^' + re += c + continue + } + + // if we already have a stateChar, then it means + // that there was something like ** or +? in there. + // Handle the stateChar, then proceed with this one. + self.debug('call clearStateChar %j', stateChar) + clearStateChar() + stateChar = c + // if extglob is disabled, then +(asdf|foo) isn't a thing. + // just clear the statechar *now*, rather than even diving into + // the patternList stuff. + if (options.noext) clearStateChar() + continue + + case '(': + if (inClass) { + re += '(' + continue + } + + if (!stateChar) { + re += '\\(' + continue + } + + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }) + // negation is (?:(?!js)[^/]*) + re += stateChar === '!' ? '(?:(?!(?:' : '(?:' + this.debug('plType %j %j', stateChar, re) + stateChar = false + continue + + case ')': + if (inClass || !patternListStack.length) { + re += '\\)' + continue + } + + clearStateChar() + hasMagic = true + var pl = patternListStack.pop() + // negation is (?:(?!js)[^/]*) + // The others are (?:) + re += pl.close + if (pl.type === '!') { + negativeLists.push(pl) + } + pl.reEnd = re.length + continue + + case '|': + if (inClass || !patternListStack.length || escaping) { + re += '\\|' + escaping = false + continue + } + + clearStateChar() + re += '|' + continue + + // these are mostly the same in regexp and glob + case '[': + // swallow any state-tracking char before the [ + clearStateChar() + + if (inClass) { + re += '\\' + c + continue + } + + inClass = true + classStart = i + reClassStart = re.length + re += c + continue + + case ']': + // a right bracket shall lose its special + // meaning and represent itself in + // a bracket expression if it occurs + // first in the list. -- POSIX.2 2.8.3.2 + if (i === classStart + 1 || !inClass) { + re += '\\' + c + escaping = false + continue + } + + // handle the case where we left a class open. + // "[z-a]" is valid, equivalent to "\[z-a\]" + if (inClass) { + // split where the last [ was, make sure we don't have + // an invalid re. if so, re-walk the contents of the + // would-be class to re-translate any characters that + // were passed through as-is + // TODO: It would probably be faster to determine this + // without a try/catch and a new RegExp, but it's tricky + // to do safely. For now, this is safe and works. + var cs = pattern.substring(classStart + 1, i) + try { + RegExp('[' + cs + ']') + } catch (er) { + // not a valid class! + var sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]' + hasMagic = hasMagic || sp[1] + inClass = false + continue + } + } + + // finish up the class. + hasMagic = true + inClass = false + re += c + continue + + default: + // swallow any state char that wasn't consumed + clearStateChar() + + if (escaping) { + // no need + escaping = false + } else if (reSpecials[c] + && !(c === '^' && inClass)) { + re += '\\' + } + + re += c + + } // switch + } // for + + // handle the case where we left a class open. + // "[abc" is valid, equivalent to "\[abc" + if (inClass) { + // split where the last [ was, and escape it + // this is a huge pita. We now have to re-walk + // the contents of the would-be class to re-translate + // any characters that were passed through as-is + cs = pattern.substr(classStart + 1) + sp = this.parse(cs, SUBPARSE) + re = re.substr(0, reClassStart) + '\\[' + sp[0] + hasMagic = hasMagic || sp[1] + } + + // handle the case where we had a +( thing at the *end* + // of the pattern. + // each pattern list stack adds 3 chars, and we need to go through + // and escape any | chars that were passed through as-is for the regexp. + // Go through and escape them, taking care not to double-escape any + // | chars that were already escaped. + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length) + this.debug('setting tail', re, pl) + // maybe some even number of \, then maybe 1 \, followed by a | + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) { + if (!$2) { + // the | isn't already escaped, so escape it. + $2 = '\\' + } + + // need to escape all those slashes *again*, without escaping the + // one that we need for escaping the | character. As it works out, + // escaping an even number of slashes can be done by simply repeating + // it exactly after itself. That's why this trick works. + // + // I am sorry that you have to see this. + return $1 + $1 + $2 + '|' + }) + + this.debug('tail=%j\n %s', tail, tail, pl, re) + var t = pl.type === '*' ? star + : pl.type === '?' ? qmark + : '\\' + pl.type + + hasMagic = true + re = re.slice(0, pl.reStart) + t + '\\(' + tail + } + + // handle trailing things that only matter at the very end. + clearStateChar() + if (escaping) { + // trailing \\ + re += '\\\\' + } + + // only need to apply the nodot start if the re starts with + // something that could conceivably capture a dot + var addPatternStart = false + switch (re.charAt(0)) { + case '.': + case '[': + case '(': addPatternStart = true + } + + // Hack to work around lack of negative lookbehind in JS + // A pattern like: *.!(x).!(y|z) needs to ensure that a name + // like 'a.xyz.yz' doesn't match. So, the first negative + // lookahead, has to look ALL the way ahead, to the end of + // the pattern. + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n] + + var nlBefore = re.slice(0, nl.reStart) + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8) + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + var nlAfter = re.slice(nl.reEnd) + + nlLast += nlAfter + + // Handle nested stuff like *(*.js|!(*.json)), where open parens + // mean that we should *not* include the ) in the bit that is considered + // "after" the negated section. + var openParensBefore = nlBefore.split('(').length - 1 + var cleanAfter = nlAfter + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, '') + } + nlAfter = cleanAfter + + var dollar = '' + if (nlAfter === '' && isSub !== SUBPARSE) { + dollar = '$' + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast + re = newRe + } + + // if the re is not "" at this point, then we need to make sure + // it doesn't match against an empty path part. + // Otherwise a/* will match a/, which it should not. + if (re !== '' && hasMagic) { + re = '(?=.)' + re + } + + if (addPatternStart) { + re = patternStart + re + } + + // parsing just a piece of a larger pattern. + if (isSub === SUBPARSE) { + return [re, hasMagic] + } + + // skip the regexp for non-magical patterns + // unescape anything in it, though, so that it'll be + // an exact match against a file etc. + if (!hasMagic) { + return globUnescape(pattern) + } + + var flags = options.nocase ? 'i' : '' + try { + var regExp = new RegExp('^' + re + '$', flags) + } catch (er) { + // If it was an invalid regular expression, then it can't match + // anything. This trick looks for a character after the end of + // the string, which is of course impossible, except in multi-line + // mode, but it's not a /m regex. + return new RegExp('$.') + } + + regExp._glob = pattern + regExp._src = re + + return regExp +} + +minimatch.makeRe = function (pattern, options) { + return new Minimatch(pattern, options || {}).makeRe() +} + +Minimatch.prototype.makeRe = makeRe +function makeRe () { + if (this.regexp || this.regexp === false) return this.regexp + + // at this point, this.set is a 2d array of partial + // pattern strings, or "**". + // + // It's better to use .match(). This function shouldn't + // be used, really, but it's pretty convenient sometimes, + // when you just want to work with a regex. + var set = this.set + + if (!set.length) { + this.regexp = false + return this.regexp + } + var options = this.options + + var twoStar = options.noglobstar ? star + : options.dot ? twoStarDot + : twoStarNoDot + var flags = options.nocase ? 'i' : '' + + var re = set.map(function (pattern) { + return pattern.map(function (p) { + return (p === GLOBSTAR) ? twoStar + : (typeof p === 'string') ? regExpEscape(p) + : p._src + }).join('\\\/') + }).join('|') + + // must match entire pattern + // ending in a * or ** will make it less strict. + re = '^(?:' + re + ')$' + + // can match anything, as long as it's not this. + if (this.negate) re = '^(?!' + re + ').*$' + + try { + this.regexp = new RegExp(re, flags) + } catch (ex) { + this.regexp = false + } + return this.regexp +} + +minimatch.match = function (list, pattern, options) { + options = options || {} + var mm = new Minimatch(pattern, options) + list = list.filter(function (f) { + return mm.match(f) + }) + if (mm.options.nonull && !list.length) { + list.push(pattern) + } + return list +} + +Minimatch.prototype.match = match +function match (f, partial) { + this.debug('match', f, this.pattern) + // short-circuit in the case of busted things. + // comments, etc. + if (this.comment) return false + if (this.empty) return f === '' + + if (f === '/' && partial) return true + + var options = this.options + + // windows: need to use /, not \ + if (path.sep !== '/') { + f = f.split(path.sep).join('/') + } + + // treat the test path as a set of pathparts. + f = f.split(slashSplit) + this.debug(this.pattern, 'split', f) + + // just ONE of the pattern sets in this.set needs to match + // in order for it to be valid. If negating, then just one + // match means that we have failed. + // Either way, return on the first hit. + + var set = this.set + this.debug(this.pattern, 'set', set) + + // Find the basename of the path by looking for the last non-empty segment + var filename + var i + for (i = f.length - 1; i >= 0; i--) { + filename = f[i] + if (filename) break + } + + for (i = 0; i < set.length; i++) { + var pattern = set[i] + var file = f + if (options.matchBase && pattern.length === 1) { + file = [filename] + } + var hit = this.matchOne(file, pattern, partial) + if (hit) { + if (options.flipNegate) return true + return !this.negate + } + } + + // didn't get any hits. this is success if it's a negative + // pattern, failure otherwise. + if (options.flipNegate) return false + return this.negate +} + +// set partial to true to test if, for example, +// "/a/b" matches the start of "/*/b/*/d" +// Partial means, if you run out of file before you run +// out of pattern, then that's fine, as long as all +// the parts match. +Minimatch.prototype.matchOne = function (file, pattern, partial) { + var options = this.options + + this.debug('matchOne', + { 'this': this, file: file, pattern: pattern }) + + this.debug('matchOne', file.length, pattern.length) + + for (var fi = 0, + pi = 0, + fl = file.length, + pl = pattern.length + ; (fi < fl) && (pi < pl) + ; fi++, pi++) { + this.debug('matchOne loop') + var p = pattern[pi] + var f = file[fi] + + this.debug(pattern, p, f) + + // should be impossible. + // some invalid regexp stuff in the set. + if (p === false) return false + + if (p === GLOBSTAR) { + this.debug('GLOBSTAR', [pattern, p, f]) + + // "**" + // a/**/b/**/c would match the following: + // a/b/x/y/z/c + // a/x/y/z/b/c + // a/b/x/b/x/c + // a/b/c + // To do this, take the rest of the pattern after + // the **, and see if it would match the file remainder. + // If so, return success. + // If not, the ** "swallows" a segment, and try again. + // This is recursively awful. + // + // a/**/b/**/c matching a/b/x/y/z/c + // - a matches a + // - doublestar + // - matchOne(b/x/y/z/c, b/**/c) + // - b matches b + // - doublestar + // - matchOne(x/y/z/c, c) -> no + // - matchOne(y/z/c, c) -> no + // - matchOne(z/c, c) -> no + // - matchOne(c, c) yes, hit + var fr = fi + var pr = pi + 1 + if (pr === pl) { + this.debug('** at the end') + // a ** at the end will just swallow the rest. + // We have found a match. + // however, it will not swallow /.x, unless + // options.dot is set. + // . and .. are *never* matched by **, for explosively + // exponential reasons. + for (; fi < fl; fi++) { + if (file[fi] === '.' || file[fi] === '..' || + (!options.dot && file[fi].charAt(0) === '.')) return false + } + return true + } + + // ok, let's see if we can swallow whatever we can. + while (fr < fl) { + var swallowee = file[fr] + + this.debug('\nglobstar while', file, fr, pattern, pr, swallowee) + + // XXX remove this slice. Just pass the start index. + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug('globstar found match!', fr, fl, swallowee) + // found a match. + return true + } else { + // can't swallow "." or ".." ever. + // can only swallow ".foo" when explicitly asked. + if (swallowee === '.' || swallowee === '..' || + (!options.dot && swallowee.charAt(0) === '.')) { + this.debug('dot detected!', file, fr, pattern, pr) + break + } + + // ** swallows a segment, and continue. + this.debug('globstar swallow a segment, and continue') + fr++ + } + } + + // no match was found. + // However, in partial mode, we can't say this is necessarily over. + // If there's more *pattern* left, then + if (partial) { + // ran out of file + this.debug('\n>>> no match, partial?', file, fr, pattern, pr) + if (fr === fl) return true + } + return false + } + + // something other than ** + // non-magic patterns just have to match exactly + // patterns with magic have been turned into regexps. + var hit + if (typeof p === 'string') { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase() + } else { + hit = f === p + } + this.debug('string match', p, f, hit) + } else { + hit = f.match(p) + this.debug('pattern match', p, f, hit) + } + + if (!hit) return false + } + + // Note: ending in / means that we'll get a final "" + // at the end of the pattern. This can only match a + // corresponding "" at the end of the file. + // If the file ends in /, then it can only match a + // a pattern that ends in /, unless the pattern just + // doesn't have any more for it. But, a/b/ should *not* + // match "a/b/*", even though "" matches against the + // [^/]*? pattern, except in partial mode, where it might + // simply not be reached yet. + // However, a/b/ should still satisfy a/* + + // now either we fell off the end of the pattern, or we're done. + if (fi === fl && pi === pl) { + // ran out of pattern and filename at the same time. + // an exact hit! + return true + } else if (fi === fl) { + // ran out of file, but still had pattern left. + // this is ok if we're doing the match as part of + // a glob fs traversal. + return partial + } else if (pi === pl) { + // ran out of pattern, still have file left. + // this is only acceptable if we're on the very last + // empty segment of a file with a trailing slash. + // a/* should match a/b/ + var emptyFileEnd = (fi === fl - 1) && (file[fi] === '') + return emptyFileEnd + } + + // should be unreachable. + throw new Error('wtf?') +} + +// replace stuff like \* with * +function globUnescape (s) { + return s.replace(/\\(.)/g, '$1') +} + +function regExpEscape (s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') +} + +},{"brace-expansion":11,"path":22}],21:[function(require,module,exports){ +var wrappy = require('wrappy') +module.exports = wrappy(once) +module.exports.strict = wrappy(onceStrict) + +once.proto = once(function () { + Object.defineProperty(Function.prototype, 'once', { + value: function () { + return once(this) + }, + configurable: true + }) + + Object.defineProperty(Function.prototype, 'onceStrict', { + value: function () { + return onceStrict(this) + }, + configurable: true + }) +}) + +function once (fn) { + var f = function () { + if (f.called) return f.value + f.called = true + return f.value = fn.apply(this, arguments) + } + f.called = false + return f +} + +function onceStrict (fn) { + var f = function () { + if (f.called) + throw new Error(f.onceError) + f.called = true + return f.value = fn.apply(this, arguments) + } + var name = fn.name || 'Function wrapped with `once`' + f.onceError = name + " shouldn't be called more than once" + f.called = false + return f +} + +},{"wrappy":29}],22:[function(require,module,exports){ +(function (process){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length - 1; i >= 0; i--) { + var last = parts[i]; + if (last === '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var splitPath = function(filename) { + return splitPathRe.exec(filename).slice(1); +}; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { + var resolvedPath = '', + resolvedAbsolute = false; + + for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) ? arguments[i] : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string') { + throw new TypeError('Arguments to path.resolve must be strings'); + } else if (!path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; + } + + // At this point the path should be resolved to a full absolute path, but + // handle relative paths to be safe (might happen when process.cwd() fails) + + // Normalize the path + resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { + var isAbsolute = exports.isAbsolute(path), + trailingSlash = substr(path, -1) === '/'; + + // Normalize the path + path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + +// posix version +exports.isAbsolute = function(path) { + return path.charAt(0) === '/'; +}; + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + if (typeof p !== 'string') { + throw new TypeError('Arguments to path.join must be strings'); + } + return p; + }).join('/')); +}; + + +// path.relative(from, to) +// posix version +exports.relative = function(from, to) { + from = exports.resolve(from).substr(1); + to = exports.resolve(to).substr(1); + + function trim(arr) { + var start = 0; + for (; start < arr.length; start++) { + if (arr[start] !== '') break; + } + + var end = arr.length - 1; + for (; end >= 0; end--) { + if (arr[end] !== '') break; + } + + if (start > end) return []; + return arr.slice(start, end - start + 1); + } + + var fromParts = trim(from.split('/')); + var toParts = trim(to.split('/')); + + var length = Math.min(fromParts.length, toParts.length); + var samePartsLength = length; + for (var i = 0; i < length; i++) { + if (fromParts[i] !== toParts[i]) { + samePartsLength = i; + break; + } + } + + var outputParts = []; + for (var i = samePartsLength; i < fromParts.length; i++) { + outputParts.push('..'); + } + + outputParts = outputParts.concat(toParts.slice(samePartsLength)); + + return outputParts.join('/'); +}; + +exports.sep = '/'; +exports.delimiter = ':'; + +exports.dirname = function(path) { + var result = splitPath(path), + root = result[0], + dir = result[1]; + + if (!root && !dir) { + // No dirname whatsoever + return '.'; + } + + if (dir) { + // It has a dirname, strip trailing slash + dir = dir.substr(0, dir.length - 1); + } + + return root + dir; +}; + + +exports.basename = function(path, ext) { + var f = splitPath(path)[2]; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPath(path)[3]; +}; + +function filter (xs, f) { + if (xs.filter) return xs.filter(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + if (f(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// String.prototype.substr - negative index don't work in IE8 +var substr = 'ab'.substr(-1) === 'b' + ? function (str, start, len) { return str.substr(start, len) } + : function (str, start, len) { + if (start < 0) start = str.length + start; + return str.substr(start, len); + } +; + +}).call(this,require('_process')) +},{"_process":24}],23:[function(require,module,exports){ +(function (process){ +'use strict'; + +function posix(path) { + return path.charAt(0) === '/'; +} + +function win32(path) { + // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56 + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path); + var device = result[1] || ''; + var isUnc = Boolean(device && device.charAt(1) !== ':'); + + // UNC paths are always absolute + return Boolean(result[2] || isUnc); +} + +module.exports = process.platform === 'win32' ? win32 : posix; +module.exports.posix = posix; +module.exports.win32 = win32; + +}).call(this,require('_process')) +},{"_process":24}],24:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; + +process.listeners = function (name) { return [] } + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],25:[function(require,module,exports){ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` in the browser, or `exports` on the server. + var root = this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype; + + // Create quick reference variables for speed access to core prototypes. + var + push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var + nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeBind = FuncProto.bind, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for the old `require()` API. If we're in + // the browser, add `_` as a global object. + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + case 2: return function(value, other) { + return func.call(context, value, other); + }; + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + // A mostly-internal function to generate callbacks that can be applied + // to each element in a collection, returning the desired result — either + // identity, an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + _.iteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, undefinedOnly) { + return function(obj) { + var length = arguments.length; + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + function createReduce(dir) { + // Optimized iterator function as using arguments.length + // in the main function will deoptimize the, see #1991. + function iterator(obj, iteratee, memo, keys, index, length) { + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + } + + return function(obj, iteratee, memo, context) { + iteratee = optimizeCb(iteratee, context, 4); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + // Determine the initial value if none is provided. + if (arguments.length < 3) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + return iterator(obj, iteratee, memo, keys, index, length); + }; + } + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var key; + if (isArrayLike(obj)) { + key = _.findIndex(obj, predicate, context); + } else { + key = _.findKey(obj, predicate, context); + } + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = function(obj, method) { + var args = slice.call(arguments, 2); + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }; + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(value, index, list) { + computed = iteratee(value, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = value; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection, using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + _.shuffle = function(obj) { + var set = isArrayLike(obj) ? obj : _.values(obj); + var length = set.length; + var shuffled = Array(length); + for (var index = 0, rand; index < length; index++) { + rand = _.random(0, index); + if (rand !== index) shuffled[index] = shuffled[rand]; + shuffled[rand] = set[index]; + } + return shuffled; + }; + + // Sample **n** random values from a collection. + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + return _.shuffle(obj).slice(0, Math.max(0, n)); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, index, list) { + return { + value: value, + index: index, + criteria: iteratee(value, index, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior) { + return function(obj, iteratee, context) { + var result = {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = function(obj, predicate, context) { + predicate = cb(predicate, context); + var pass = [], fail = []; + _.each(obj, function(value, key, obj) { + (predicate(value, key, obj) ? pass : fail).push(value); + }); + return [pass, fail]; + }; + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, _.identity); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, startIndex) { + var output = [], idx = 0; + for (var i = startIndex || 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + //flatten current level of array or arguments object + if (!shallow) value = flatten(value, shallow, strict); + var j = 0, len = value.length; + output.length += len; + while (j < len) { + output[idx++] = value[j++]; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = function(array) { + return _.difference(array, slice.call(arguments, 1)); + }; + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = function() { + return _.uniq(flatten(arguments, true, true)); + }; + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + for (var j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = function(array) { + var rest = flatten(arguments, true, true, 1); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = function() { + return _.unzip(arguments); + }; + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions + function createPredicateIndexFinder(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + } + + // Returns the first index on an array-like that passes a predicate test + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions + function createIndexFinder(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + } + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + step = step || 1; + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = function(func, context) { + if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1)); + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var args = slice.call(arguments, 2); + var bound = function() { + return executeBound(func, bound, context, this, args.concat(slice.call(arguments))); + }; + return bound; + }; + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder, allowing any combination of arguments to be pre-filled. + _.partial = function(func) { + var boundArgs = slice.call(arguments, 1); + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = function(obj) { + var i, length = arguments.length, key; + if (length <= 1) throw new Error('bindAll must be passed function names'); + for (i = 1; i < length; i++) { + key = arguments[i]; + obj[key] = _.bind(obj[key], obj); + } + return obj; + }; + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = function(func, wait) { + var args = slice.call(arguments, 2); + return setTimeout(function(){ + return func.apply(null, args); + }, wait); + }; + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var context, args, result; + var timeout = null; + var previous = 0; + if (!options) options = {}; + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + return function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, args, context, timestamp, result; + + var later = function() { + var last = _.now() - timestamp; + + if (last < wait && last >= 0) { + timeout = setTimeout(later, wait - last); + } else { + timeout = null; + if (!immediate) { + result = func.apply(context, args); + if (!timeout) context = args = null; + } + } + }; + + return function() { + context = this; + args = arguments; + timestamp = _.now(); + var callNow = immediate && !timeout; + if (!timeout) timeout = setTimeout(later, wait); + if (callNow) { + result = func.apply(context, args); + context = args = null; + } + + return result; + }; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + function collectNonEnumProps(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + } + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys` + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object + // In contrast to _.map it returns an object + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}, + currentKey; + for (var index = 0; index < length; index++) { + currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods` + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s) + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = function(object, oiteratee, context) { + var result = {}, obj = object, iteratee, keys; + if (obj == null) return result; + if (_.isFunction(oiteratee)) { + keys = _.allKeys(obj); + iteratee = optimizeCb(oiteratee, context); + } else { + keys = flatten(arguments, false, false, 1); + iteratee = function(value, key, obj) { return key in obj; }; + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }; + + // Return a copy of the object without the blacklisted properties. + _.omit = function(obj, iteratee, context) { + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + } else { + var keys = _.map(flatten(arguments, false, false, 1), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }; + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), and in Safari 8 (#1929). + if (typeof /./ != 'function' && typeof Int8Array != 'object') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? (NaN is the only number which does not equal itself). + _.isNaN = function(obj) { + return _.isNumber(obj) && obj !== +obj; + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, property, fallback) { + var value = object == null ? void 0 : object[property]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate : /<%([\s\S]+?)%>/g, + interpolate : /<%=([\s\S]+?)%>/g, + escape : /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escaper = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escaper, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offest. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + try { + var render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var result = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return result(this, func.apply(_, args)); + }; + }); + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return result(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return result(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return '' + this._wrapped; + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define === 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}.call(this)); + +},{}],26:[function(require,module,exports){ +arguments[4][19][0].apply(exports,arguments) +},{"dup":19}],27:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],28:[function(require,module,exports){ +(function (process,global){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +// Mark that a method should not be used. +// Returns a modified function which warns once by default. +// If --no-deprecation is set, then it is a no-op. +exports.deprecate = function(fn, msg) { + // Allow for deprecating things in the process of starting up. + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + +/** + * Echos the value of a value. Trys to print the value out + * in the best way possible given the different types. + * + * @param {Object} obj The object to print out. + * @param {Object} opts Optional options object that alters the output. + */ +/* legacy: obj, showHidden, depth, colors*/ +function inspect(obj, opts) { + // default options + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + // legacy... + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + // legacy... + ctx.showHidden = opts; + } else if (opts) { + // got an "options" object + exports._extend(ctx, opts); + } + // set default options + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +// Don't use 'blue' not visible on cmd.exe +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + // "name": intentionally not styling + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + // Provide a hook for user-specified inspect functions. + // Check that value is an object with an inspect function on it + if (ctx.customInspect && + value && + isFunction(value.inspect) && + // Filter out the util module, it's inspect function is special + value.inspect !== exports.inspect && + // Also filter out any prototype objects using the circular check. + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + // Primitive types cannot have properties + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + // Look up the keys of the object. + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + // IE doesn't make error fields non-enumerable + // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + // Some type of object without properties can be shortcutted. + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + // Make Array say that they are Array + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + // Make functions say that they are functions + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + // Make RegExps say that they are RegExps + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + // Make dates with properties first say the date + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + // Make error with message first say the error + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + // For some reason typeof null is "object", so special case here. + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +// NOTE: These type checking functions intentionally don't use `instanceof` +// because it is fragile and can be easily faked with `Object.create()`. +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +// 26 Feb 16:19:34 +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +// log is just a thin wrapper to console.log that prepends a timestamp +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + +/** + * Inherit the prototype methods from one constructor into another. + * + * The Function.prototype.inherits from lang.js rewritten as a standalone + * function (not on Function.prototype). NOTE: If this file is to be loaded + * during bootstrapping this function needs to be rewritten using some native + * functions as prototype setup using normal JavaScript does not work as + * expected during bootstrapping (see mirror.js in r114903). + * + * @param {function} ctor Constructor function which needs to inherit the + * prototype. + * @param {function} superCtor Constructor function to inherit prototype from. + */ +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + // Don't do anything if add isn't an object + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":27,"_process":24,"inherits":26}],29:[function(require,module,exports){ +// Returns a wrapper function that returns a wrapped callback +// The wrapper function should do some stuff, and return a +// presumably different callback function. +// This makes sure that own properties are retained, so that +// decorations and such are not lost along the way. +module.exports = wrappy +function wrappy (fn, cb) { + if (fn && cb) return wrappy(fn)(cb) + + if (typeof fn !== 'function') + throw new TypeError('need wrapper function') + + Object.keys(fn).forEach(function (k) { + wrapper[k] = fn[k] + }) + + return wrapper + + function wrapper() { + var args = new Array(arguments.length) + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i] + } + var ret = fn.apply(this, args) + var cb = args[args.length-1] + if (typeof ret === 'function' && ret !== cb) { + Object.keys(cb).forEach(function (k) { + ret[k] = cb[k] + }) + } + return ret + } +} + +},{}]},{},[7])(7) +}); \ No newline at end of file diff --git a/assets/javascripts/workers/search.1e90e0fb.min.js b/assets/javascripts/workers/search.1e90e0fb.min.js new file mode 100644 index 00000000..ff43aedd --- /dev/null +++ b/assets/javascripts/workers/search.1e90e0fb.min.js @@ -0,0 +1,2 @@ +"use strict";(()=>{var xe=Object.create;var G=Object.defineProperty,ve=Object.defineProperties,Se=Object.getOwnPropertyDescriptor,Te=Object.getOwnPropertyDescriptors,Qe=Object.getOwnPropertyNames,Y=Object.getOwnPropertySymbols,Ee=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty,be=Object.prototype.propertyIsEnumerable;var Z=Math.pow,J=(t,e,r)=>e in t?G(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r,_=(t,e)=>{for(var r in e||(e={}))X.call(e,r)&&J(t,r,e[r]);if(Y)for(var r of Y(e))be.call(e,r)&&J(t,r,e[r]);return t},B=(t,e)=>ve(t,Te(e));var Le=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var we=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Qe(e))!X.call(t,i)&&i!==r&&G(t,i,{get:()=>e[i],enumerable:!(n=Se(e,i))||n.enumerable});return t};var Pe=(t,e,r)=>(r=t!=null?xe(Ee(t)):{},we(e||!t||!t.__esModule?G(r,"default",{value:t,enumerable:!0}):r,t));var W=(t,e,r)=>new Promise((n,i)=>{var s=u=>{try{a(r.next(u))}catch(c){i(c)}},o=u=>{try{a(r.throw(u))}catch(c){i(c)}},a=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,o);a((r=r.apply(t,e)).next())});var te=Le((K,ee)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i0){var f=t.utils.clone(r)||{};f.position=[a,c],f.index=s.length,s.push(new t.Token(n.slice(a,o),f))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index. +`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n1&&(oe&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(ou?f+=2:a==u&&(r+=n[c+1]*i[f+1],c+=2,f+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}if(s.str.length==0&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var c=s.node.edges["*"];else{var c=new t.TokenSet;s.node.edges["*"]=c}s.str.length==1&&(c.final=!0),i.push({node:c,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var f=s.str.charAt(0),g=s.str.charAt(1),l;g in s.node.edges?l=s.node.edges[g]:(l=new t.TokenSet,s.node.edges[g]=l),s.str.length==1&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:f+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof K=="object"?ee.exports=r():e.lunr=r()}(this,function(){return t})})()});var de=Pe(te());function re(t,e=document){let r=ke(t,e);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${t}" to be present`);return r}function ke(t,e=document){return e.querySelector(t)||void 0}Object.entries||(Object.entries=function(t){let e=[];for(let r of Object.keys(t))e.push([r,t[r]]);return e});Object.values||(Object.values=function(t){let e=[];for(let r of Object.keys(t))e.push(t[r]);return e});typeof Element!="undefined"&&(Element.prototype.scrollTo||(Element.prototype.scrollTo=function(t,e){typeof t=="object"?(this.scrollLeft=t.left,this.scrollTop=t.top):(this.scrollLeft=t,this.scrollTop=e)}),Element.prototype.replaceWith||(Element.prototype.replaceWith=function(...t){let e=this.parentNode;if(e){t.length===0&&e.removeChild(this);for(let r=t.length-1;r>=0;r--){let n=t[r];typeof n=="string"?n=document.createTextNode(n):n.parentNode&&n.parentNode.removeChild(n),r?e.insertBefore(this.previousSibling,n):e.replaceChild(n,this)}}}));function ne(t){let e=new Map;for(let r of t){let[n]=r.location.split("#"),i=e.get(n);typeof i=="undefined"?e.set(n,r):(e.set(r.location,r),r.parent=i)}return e}function H(t,e,r){var s;e=new RegExp(e,"g");let n,i=0;do{n=e.exec(t);let o=(s=n==null?void 0:n.index)!=null?s:t.length;if(in?e(r,1,n,n=i):t.charAt(i)===">"&&(t.charAt(n+1)==="/"?--s===0&&e(r++,2,n,i+1):t.charAt(i-1)!=="/"&&s++===0&&e(r,0,n,i+1),n=i+1);i>n&&e(r,1,n,i)}function se(t,e,r,n=!1){return q([t],e,r,n).pop()}function q(t,e,r,n=!1){let i=[0];for(let s=1;s>>2&1023,c=a[0]>>>12;i.push(+(u>c)+i[i.length-1])}return t.map((s,o)=>{let a=0,u=new Map;for(let f of r.sort((g,l)=>g-l)){let g=f&1048575,l=f>>>20;if(i[l]!==o)continue;let m=u.get(l);typeof m=="undefined"&&u.set(l,m=[]),m.push(g)}if(u.size===0)return s;let c=[];for(let[f,g]of u){let l=e[f],m=l[0]>>>12,x=l[l.length-1]>>>12,v=l[l.length-1]>>>2&1023;n&&m>a&&c.push(s.slice(a,m));let d=s.slice(m,x+v);for(let y of g.sort((b,E)=>E-b)){let b=(l[y]>>>12)-m,E=(l[y]>>>2&1023)+b;d=[d.slice(0,b),"",d.slice(b,E),"",d.slice(E)].join("")}if(a=x+v,c.push(d)===2)break}return n&&a{var f;switch(i[f=o+=s]||(i[f]=[]),a){case 0:case 2:i[o].push(u<<12|c-u<<2|a);break;case 1:let g=r[n].slice(u,c);H(g,lunr.tokenizer.separator,(l,m)=>{if(typeof lunr.segmenter!="undefined"){let x=g.slice(l,m);if(/^[MHIK]$/.test(lunr.segmenter.ctype_(x))){let v=lunr.segmenter.segment(x);for(let d=0,y=0;dr){return t.trim().split(/"([^"]+)"/g).map((r,n)=>n&1?r.replace(/^\b|^(?![^\x00-\x7F]|$)|\s+/g," +"):r).join("").replace(/"|(?:^|\s+)[*+\-:^~]+(?=\s+|$)/g,"").split(/\s+/g).reduce((r,n)=>{let i=e(n);return[...r,...Array.isArray(i)?i:[i]]},[]).map(r=>/([~^]$)/.test(r)?`${r}1`:r).map(r=>/(^[+-]|[~^]\d+$)/.test(r)?r:`${r}*`).join(" ")}function ue(t){return ae(t,e=>{let r=[],n=new lunr.QueryLexer(e);n.run();for(let{type:i,str:s,start:o,end:a}of n.lexemes)switch(i){case"FIELD":["title","text","tags"].includes(s)||(e=[e.slice(0,a)," ",e.slice(a+1)].join(""));break;case"TERM":H(s,lunr.tokenizer.separator,(...u)=>{r.push([e.slice(0,o),s.slice(...u),e.slice(a)].join(""))})}return r})}function ce(t){let e=new lunr.Query(["title","text","tags"]);new lunr.QueryParser(t,e).parse();for(let n of e.clauses)n.usePipeline=!0,n.term.startsWith("*")&&(n.wildcard=lunr.Query.wildcard.LEADING,n.term=n.term.slice(1)),n.term.endsWith("*")&&(n.wildcard=lunr.Query.wildcard.TRAILING,n.term=n.term.slice(0,-1));return e.clauses}function le(t,e){var i;let r=new Set(t),n={};for(let s=0;s0;){let o=i[--s];for(let u=1;un[o]-u&&(r.add(t.slice(o,o+u)),i[s++]=o+u);let a=o+n[o];n[a]&&ar=>{if(typeof r[e]=="undefined")return;let n=[r.location,e].join(":");return t.set(n,lunr.tokenizer.table=[]),r[e]}}function Re(t,e){let[r,n]=[new Set(t),new Set(e)];return[...new Set([...r].filter(i=>!n.has(i)))]}var U=class{constructor({config:e,docs:r,options:n}){let i=Oe(this.table=new Map);this.map=ne(r),this.options=n,this.index=lunr(function(){this.metadataWhitelist=["position"],this.b(0),e.lang.length===1&&e.lang[0]!=="en"?this.use(lunr[e.lang[0]]):e.lang.length>1&&this.use(lunr.multiLanguage(...e.lang)),this.tokenizer=oe,lunr.tokenizer.separator=new RegExp(e.separator),lunr.segmenter="TinySegmenter"in lunr?new lunr.TinySegmenter:void 0;let s=Re(["trimmer","stopWordFilter","stemmer"],e.pipeline);for(let o of e.lang.map(a=>a==="en"?lunr:lunr[a]))for(let a of s)this.pipeline.remove(o[a]),this.searchPipeline.remove(o[a]);this.ref("location");for(let[o,a]of Object.entries(e.fields))this.field(o,B(_({},a),{extractor:i(o)}));for(let o of r)this.add(o,{boost:o.boost})})}search(e){if(e=e.replace(new RegExp("\\p{sc=Han}+","gu"),s=>[...he(s,this.index.invertedIndex)].join("* ")),e=ue(e),!e)return{items:[]};let r=ce(e).filter(s=>s.presence!==lunr.Query.presence.PROHIBITED),n=this.index.search(e).reduce((s,{ref:o,score:a,matchData:u})=>{let c=this.map.get(o);if(typeof c!="undefined"){c=_({},c),c.tags&&(c.tags=[...c.tags]);let f=le(r,Object.keys(u.metadata));for(let l of this.index.fields){if(typeof c[l]=="undefined")continue;let m=[];for(let d of Object.values(u.metadata))typeof d[l]!="undefined"&&m.push(...d[l].position);if(!m.length)continue;let x=this.table.get([c.location,l].join(":")),v=Array.isArray(c[l])?q:se;c[l]=v(c[l],x,m,l!=="text")}let g=+!c.parent+Object.values(f).filter(l=>l).length/Object.keys(f).length;s.push(B(_({},c),{score:a*(1+Z(g,2)),terms:f}))}return s},[]).sort((s,o)=>o.score-s.score).reduce((s,o)=>{let a=this.map.get(o.location);if(typeof a!="undefined"){let u=a.parent?a.parent.location:a.location;s.set(u,[...s.get(u)||[],o])}return s},new Map);for(let[s,o]of n)if(!o.find(a=>a.location===s)){let a=this.map.get(s);o.push(B(_({},a),{score:0,terms:{}}))}let i;if(this.options.suggest){let s=this.index.query(o=>{for(let a of r)o.term(a.term,{fields:["title"],presence:lunr.Query.presence.REQUIRED,wildcard:lunr.Query.wildcard.TRAILING})});i=s.length?Object.keys(s[0].matchData.metadata):[]}return _({items:[...n.values()]},typeof i!="undefined"&&{suggest:i})}};var fe;function Ie(t){return W(this,null,function*(){let e="../lunr";if(typeof parent!="undefined"&&"IFrameWorker"in parent){let n=re("script[src]"),[i]=n.src.split("/worker");e=e.replace("..",i)}let r=[];for(let n of t.lang){switch(n){case"ja":r.push(`${e}/tinyseg.js`);break;case"hi":case"th":r.push(`${e}/wordcut.js`);break}n!=="en"&&r.push(`${e}/min/lunr.${n}.min.js`)}t.lang.length>1&&r.push(`${e}/min/lunr.multi.min.js`),r.length&&(yield importScripts(`${e}/min/lunr.stemmer.support.min.js`,...r))})}function Fe(t){return W(this,null,function*(){switch(t.type){case 0:return yield Ie(t.data.config),fe=new U(t.data),{type:1};case 2:let e=t.data;try{return{type:3,data:fe.search(e)}}catch(r){return console.warn(`Invalid query: ${e} \u2013 see https://bit.ly/2s3ChXG`),console.warn(r),{type:3,data:{items:[]}}}default:throw new TypeError("Invalid message type")}})}self.lunr=de.default;addEventListener("message",t=>W(void 0,null,function*(){postMessage(yield Fe(t.data))}));})(); diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 00000000..d4737d1d Binary files /dev/null and b/assets/logo.png differ diff --git a/assets/logo.svg b/assets/logo.svg new file mode 100644 index 00000000..c5968a47 --- /dev/null +++ b/assets/logo.svg @@ -0,0 +1,342 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/site.webmanifest b/assets/site.webmanifest new file mode 100644 index 00000000..45dc8a20 --- /dev/null +++ b/assets/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/assets/stylesheets/glightbox.min.css b/assets/stylesheets/glightbox.min.css new file mode 100644 index 00000000..3c9ff877 --- /dev/null +++ b/assets/stylesheets/glightbox.min.css @@ -0,0 +1 @@ +.glightbox-container{width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999!important;overflow:hidden;-ms-touch-action:none;touch-action:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;outline:0}.glightbox-container.inactive{display:none}.glightbox-container .gcontainer{position:relative;width:100%;height:100%;z-index:9999;overflow:hidden}.glightbox-container .gslider{-webkit-transition:-webkit-transform .4s ease;transition:-webkit-transform .4s ease;transition:transform .4s ease;transition:transform .4s ease,-webkit-transform .4s ease;height:100%;left:0;top:0;width:100%;position:relative;overflow:hidden;display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.glightbox-container .gslide{width:100%;position:absolute;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;opacity:0}.glightbox-container .gslide.current{opacity:1;z-index:99999;position:relative}.glightbox-container .gslide.prev{opacity:1;z-index:9999}.glightbox-container .gslide-inner-content{width:100%}.glightbox-container .ginner-container{position:relative;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-width:100%;margin:auto;height:100vh}.glightbox-container .ginner-container.gvideo-container{width:100%}.glightbox-container .ginner-container.desc-bottom,.glightbox-container .ginner-container.desc-top{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.glightbox-container .ginner-container.desc-left,.glightbox-container .ginner-container.desc-right{max-width:100%!important}.gslide iframe,.gslide video{outline:0!important;border:none;min-height:165px;-webkit-overflow-scrolling:touch;-ms-touch-action:auto;touch-action:auto}.gslide:not(.current){pointer-events:none}.gslide-image{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.gslide-image img{max-height:100vh;display:block;padding:0;float:none;outline:0;border:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;max-width:100vw;width:auto;height:auto;-o-object-fit:cover;object-fit:cover;-ms-touch-action:none;touch-action:none;margin:auto;min-width:200px}.desc-bottom .gslide-image img,.desc-top .gslide-image img{width:auto}.desc-left .gslide-image img,.desc-right .gslide-image img{width:auto;max-width:100%}.gslide-image img.zoomable{position:relative}.gslide-image img.dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.gslide-video{position:relative;max-width:100vh;width:100%!important}.gslide-video .plyr__poster-enabled.plyr--loading .plyr__poster{display:none}.gslide-video .gvideo-wrapper{width:100%;margin:auto}.gslide-video::before{content:'';position:absolute;width:100%;height:100%;background:rgba(255,0,0,.34);display:none}.gslide-video.playing::before{display:none}.gslide-video.fullscreen{max-width:100%!important;min-width:100%;height:75vh}.gslide-video.fullscreen video{max-width:100%!important;width:100%!important}.gslide-inline{background:#fff;text-align:left;max-height:calc(100vh - 40px);overflow:auto;max-width:100%;margin:auto}.gslide-inline .ginlined-content{padding:20px;width:100%}.gslide-inline .dragging{cursor:-webkit-grabbing!important;cursor:grabbing!important;-webkit-transition:none;transition:none}.ginlined-content{overflow:auto;display:block!important;opacity:1}.gslide-external{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;min-width:100%;background:#fff;padding:0;overflow:auto;max-height:75vh;height:100%}.gslide-media{display:-webkit-box;display:-ms-flexbox;display:flex;width:auto}.zoomed .gslide-media{-webkit-box-shadow:none!important;box-shadow:none!important}.desc-bottom .gslide-media,.desc-top .gslide-media{margin:0 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gslide-description{position:relative;-webkit-box-flex:1;-ms-flex:1 0 100%;flex:1 0 100%}.gslide-description.description-left,.gslide-description.description-right{max-width:100%}.gslide-description.description-bottom,.gslide-description.description-top{margin:0 auto;width:100%}.gslide-description p{margin-bottom:12px}.gslide-description p:last-child{margin-bottom:0}.zoomed .gslide-description{display:none}.glightbox-button-hidden{display:none}.glightbox-mobile .glightbox-container .gslide-description{height:auto!important;width:100%;position:absolute;bottom:0;padding:19px 11px;max-width:100vw!important;-webkit-box-ordinal-group:3!important;-ms-flex-order:2!important;order:2!important;max-height:78vh;overflow:auto!important;background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,0)),to(rgba(0,0,0,.75)));background:linear-gradient(to bottom,rgba(0,0,0,0) 0,rgba(0,0,0,.75) 100%);-webkit-transition:opacity .3s linear;transition:opacity .3s linear;padding-bottom:50px}.glightbox-mobile .glightbox-container .gslide-title{color:#fff;font-size:1em}.glightbox-mobile .glightbox-container .gslide-desc{color:#a1a1a1}.glightbox-mobile .glightbox-container .gslide-desc a{color:#fff;font-weight:700}.glightbox-mobile .glightbox-container .gslide-desc *{color:inherit}.glightbox-mobile .glightbox-container .gslide-desc .desc-more{color:#fff;opacity:.4}.gdesc-open .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:.4}.gdesc-open .gdesc-inner{padding-bottom:30px}.gdesc-closed .gslide-media{-webkit-transition:opacity .5s ease;transition:opacity .5s ease;opacity:1}.greset{-webkit-transition:all .3s ease;transition:all .3s ease}.gabsolute{position:absolute}.grelative{position:relative}.glightbox-desc{display:none!important}.glightbox-open{overflow:hidden}.gloader{height:25px;width:25px;-webkit-animation:lightboxLoader .8s infinite linear;animation:lightboxLoader .8s infinite linear;border:2px solid #fff;border-right-color:transparent;border-radius:50%;position:absolute;display:block;z-index:9999;left:0;right:0;margin:0 auto;top:47%}.goverlay{width:100%;height:calc(100vh + 1px);position:fixed;top:-1px;left:0;background:#000;will-change:opacity}.glightbox-mobile .goverlay{background:#000}.gclose,.gnext,.gprev{z-index:99999;cursor:pointer;width:26px;height:44px;border:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.gclose svg,.gnext svg,.gprev svg{display:block;width:25px;height:auto;margin:0;padding:0}.gclose.disabled,.gnext.disabled,.gprev.disabled{opacity:.1}.gclose .garrow,.gnext .garrow,.gprev .garrow{stroke:#fff}.gbtn.focused{outline:2px solid #0f3d81}iframe.wait-autoplay{opacity:0}.glightbox-closing .gclose,.glightbox-closing .gnext,.glightbox-closing .gprev{opacity:0!important}.glightbox-clean .gslide-description{background:#fff}.glightbox-clean .gdesc-inner{padding:22px 20px}.glightbox-clean .gslide-title{font-size:1em;font-weight:400;font-family:arial;color:#000;margin-bottom:19px;line-height:1.4em}.glightbox-clean .gslide-desc{font-size:.86em;margin-bottom:0;font-family:arial;line-height:1.4em}.glightbox-clean .gslide-video{background:#000}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.75);border-radius:4px}.glightbox-clean .gclose path,.glightbox-clean .gnext path,.glightbox-clean .gprev path{fill:#fff}.glightbox-clean .gprev{position:absolute;top:-100%;left:30px;width:40px;height:50px}.glightbox-clean .gnext{position:absolute;top:-100%;right:30px;width:40px;height:50px}.glightbox-clean .gclose{width:35px;height:35px;top:15px;right:10px;position:absolute}.glightbox-clean .gclose svg{width:18px;height:auto}.glightbox-clean .gclose:hover{opacity:1}.gfadeIn{-webkit-animation:gfadeIn .5s ease;animation:gfadeIn .5s ease}.gfadeOut{-webkit-animation:gfadeOut .5s ease;animation:gfadeOut .5s ease}.gslideOutLeft{-webkit-animation:gslideOutLeft .3s ease;animation:gslideOutLeft .3s ease}.gslideInLeft{-webkit-animation:gslideInLeft .3s ease;animation:gslideInLeft .3s ease}.gslideOutRight{-webkit-animation:gslideOutRight .3s ease;animation:gslideOutRight .3s ease}.gslideInRight{-webkit-animation:gslideInRight .3s ease;animation:gslideInRight .3s ease}.gzoomIn{-webkit-animation:gzoomIn .5s ease;animation:gzoomIn .5s ease}.gzoomOut{-webkit-animation:gzoomOut .5s ease;animation:gzoomOut .5s ease}@-webkit-keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes lightboxLoader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes gfadeIn{from{opacity:0}to{opacity:1}}@keyframes gfadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes gfadeOut{from{opacity:1}to{opacity:0}}@keyframes gfadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInLeft{from{opacity:0;-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0)}to{visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@keyframes gslideOutLeft{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(-60%,0,0);transform:translate3d(-60%,0,0);opacity:0;visibility:hidden}}@-webkit-keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes gslideInRight{from{opacity:0;visibility:visible;-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0)}to{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@keyframes gslideOutRight{from{opacity:1;visibility:visible;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{-webkit-transform:translate3d(60%,0,0);transform:translate3d(60%,0,0);opacity:0}}@-webkit-keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@keyframes gzoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:1}}@-webkit-keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes gzoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@media (min-width:769px){.glightbox-container .ginner-container{width:auto;height:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.glightbox-container .ginner-container.desc-top .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-top .gslide-image,.glightbox-container .ginner-container.desc-top .gslide-image img{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.glightbox-container .ginner-container.desc-left .gslide-description{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.glightbox-container .ginner-container.desc-left .gslide-image{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.gslide-image img{max-height:97vh;max-width:100%}.gslide-image img.zoomable{cursor:-webkit-zoom-in;cursor:zoom-in}.zoomed .gslide-image img.zoomable{cursor:-webkit-grab;cursor:grab}.gslide-inline{max-height:95vh}.gslide-external{max-height:100vh}.gslide-description.description-left,.gslide-description.description-right{max-width:275px}.glightbox-open{height:auto}.goverlay{background:rgba(0,0,0,.92)}.glightbox-clean .gslide-media{-webkit-box-shadow:1px 2px 9px 0 rgba(0,0,0,.65);box-shadow:1px 2px 9px 0 rgba(0,0,0,.65)}.glightbox-clean .description-left .gdesc-inner,.glightbox-clean .description-right .gdesc-inner{position:absolute;height:100%;overflow-y:auto}.glightbox-clean .gclose,.glightbox-clean .gnext,.glightbox-clean .gprev{background-color:rgba(0,0,0,.32)}.glightbox-clean .gclose:hover,.glightbox-clean .gnext:hover,.glightbox-clean .gprev:hover{background-color:rgba(0,0,0,.7)}.glightbox-clean .gprev{top:45%}.glightbox-clean .gnext{top:45%}}@media (min-width:992px){.glightbox-clean .gclose{opacity:.7;right:20px}}@media screen and (max-height:420px){.goverlay{background:#000}} \ No newline at end of file diff --git a/assets/stylesheets/main.52c0e027.min.css b/assets/stylesheets/main.52c0e027.min.css new file mode 100644 index 00000000..60af3b8e --- /dev/null +++ b/assets/stylesheets/main.52c0e027.min.css @@ -0,0 +1 @@ +@charset "UTF-8";html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;box-sizing:border-box}*,:after,:before{box-sizing:inherit}@media (prefers-reduced-motion){*,:after,:before{transition:none!important}}body{margin:0}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}hr{border:0;box-sizing:initial;display:block;height:.05rem;overflow:visible;padding:0}small{font-size:80%}sub,sup{line-height:1em}img{border-style:none}table{border-collapse:initial;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{background:#0000;border:0;font-family:inherit;font-size:inherit;margin:0;padding:0}input{border:0;outline:none}:root{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-scheme=default]{color-scheme:light}[data-md-color-scheme=default] img[src$="#gh-dark-mode-only"],[data-md-color-scheme=default] img[src$="#only-dark"]{display:none}:root,[data-md-color-scheme=default]{--md-hue:225deg;--md-default-fg-color:#000000de;--md-default-fg-color--light:#0000008a;--md-default-fg-color--lighter:#00000052;--md-default-fg-color--lightest:#00000012;--md-default-bg-color:#fff;--md-default-bg-color--light:#ffffffb3;--md-default-bg-color--lighter:#ffffff4d;--md-default-bg-color--lightest:#ffffff1f;--md-code-fg-color:#36464e;--md-code-bg-color:#f5f5f5;--md-code-bg-color--light:#f5f5f5b3;--md-code-bg-color--lighter:#f5f5f54d;--md-code-hl-color:#4287ff;--md-code-hl-color--light:#4287ff1a;--md-code-hl-number-color:#d52a2a;--md-code-hl-special-color:#db1457;--md-code-hl-function-color:#a846b9;--md-code-hl-constant-color:#6e59d9;--md-code-hl-keyword-color:#3f6ec6;--md-code-hl-string-color:#1c7d4d;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-del-color:#f5503d26;--md-typeset-ins-color:#0bd57026;--md-typeset-kbd-color:#fafafa;--md-typeset-kbd-accent-color:#fff;--md-typeset-kbd-border-color:#b8b8b8;--md-typeset-mark-color:#ffff0080;--md-typeset-table-color:#0000001f;--md-typeset-table-color--light:rgba(0,0,0,.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-warning-fg-color:#000000de;--md-warning-bg-color:#ff9;--md-footer-fg-color:#fff;--md-footer-fg-color--light:#ffffffb3;--md-footer-fg-color--lighter:#ffffff73;--md-footer-bg-color:#000000de;--md-footer-bg-color--dark:#00000052;--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #0000001a,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0003,0 0 0.05rem #00000059}.md-icon svg{fill:currentcolor;display:block;height:1.2rem;width:1.2rem}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--md-text-font-family:var(--md-text-font,_),-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;--md-code-font-family:var(--md-code-font,_),SFMono-Regular,Consolas,Menlo,monospace}aside,body,input{font-feature-settings:"kern","liga";color:var(--md-typeset-color);font-family:var(--md-text-font-family)}code,kbd,pre{font-feature-settings:"kern";font-family:var(--md-code-font-family)}:root{--md-typeset-table-sort-icon:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--asc:url('data:image/svg+xml;charset=utf-8,');--md-typeset-table-sort-icon--desc:url('data:image/svg+xml;charset=utf-8,')}.md-typeset{-webkit-print-color-adjust:exact;color-adjust:exact;font-size:.8rem;line-height:1.6}@media print{.md-typeset{font-size:.68rem}}.md-typeset blockquote,.md-typeset dl,.md-typeset figure,.md-typeset ol,.md-typeset pre,.md-typeset ul{margin-bottom:1em;margin-top:1em}.md-typeset h1{color:var(--md-default-fg-color--light);font-size:2em;line-height:1.3;margin:0 0 1.25em}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{font-size:1.5625em;line-height:1.4;margin:1.6em 0 .64em}.md-typeset h3{font-size:1.25em;font-weight:400;letter-spacing:-.01em;line-height:1.5;margin:1.6em 0 .8em}.md-typeset h2+h3{margin-top:.8em}.md-typeset h4{font-weight:700;letter-spacing:-.01em;margin:1em 0}.md-typeset h5,.md-typeset h6{color:var(--md-default-fg-color--light);font-size:.8em;font-weight:700;letter-spacing:-.01em;margin:1.25em 0}.md-typeset h5{text-transform:uppercase}.md-typeset hr{border-bottom:.05rem solid var(--md-default-fg-color--lightest);display:flow-root;margin:1.5em 0}.md-typeset a{color:var(--md-typeset-a-color);word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color 125ms}.md-typeset a:focus,.md-typeset a:hover{color:var(--md-accent-fg-color)}.md-typeset a:focus code,.md-typeset a:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset a code{color:var(--md-typeset-a-color)}.md-typeset a.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset code,.md-typeset kbd,.md-typeset pre{color:var(--md-code-fg-color);direction:ltr;font-variant-ligatures:none;transition:background-color 125ms}@media print{.md-typeset code,.md-typeset kbd,.md-typeset pre{white-space:pre-wrap}}.md-typeset code{background-color:var(--md-code-bg-color);border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone;font-size:.85em;padding:0 .2941176471em;transition:color 125ms,background-color 125ms;word-break:break-word}.md-typeset code:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-typeset pre{display:flow-root;line-height:1.4;position:relative}.md-typeset pre>code{-webkit-box-decoration-break:slice;box-decoration-break:slice;box-shadow:none;display:block;margin:0;outline-color:var(--md-accent-fg-color);overflow:auto;padding:.7720588235em 1.1764705882em;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin;touch-action:auto;word-break:normal}.md-typeset pre>code:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-typeset pre>code::-webkit-scrollbar{height:.2rem;width:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}.md-typeset kbd{background-color:var(--md-typeset-kbd-color);border-radius:.1rem;box-shadow:0 .1rem 0 .05rem var(--md-typeset-kbd-border-color),0 .1rem 0 var(--md-typeset-kbd-border-color),0 -.1rem .2rem var(--md-typeset-kbd-accent-color) inset;color:var(--md-default-fg-color);display:inline-block;font-size:.75em;padding:0 .6666666667em;vertical-align:text-top;word-break:break-word}.md-typeset mark{background-color:var(--md-typeset-mark-color);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:inherit;word-break:break-word}.md-typeset abbr{cursor:help;text-decoration:none}.md-typeset [data-preview],.md-typeset abbr{border-bottom:.05rem dotted var(--md-default-fg-color--light)}.md-typeset small{opacity:.75}[dir=ltr] .md-typeset sub,[dir=ltr] .md-typeset sup{margin-left:.078125em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.078125em}[dir=ltr] .md-typeset blockquote{padding-left:.6rem}[dir=rtl] .md-typeset blockquote{padding-right:.6rem}[dir=ltr] .md-typeset blockquote{border-left:.2rem solid var(--md-default-fg-color--lighter)}[dir=rtl] .md-typeset blockquote{border-right:.2rem solid var(--md-default-fg-color--lighter)}.md-typeset blockquote{color:var(--md-default-fg-color--light);margin-left:0;margin-right:0}.md-typeset ul{list-style-type:disc}[dir=ltr] .md-typeset ol,[dir=ltr] .md-typeset ul{margin-left:.625em}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em}.md-typeset ol,.md-typeset ul{padding:0}.md-typeset ol:not([hidden]),.md-typeset ul:not([hidden]){display:flow-root}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}[dir=ltr] .md-typeset ol li,[dir=ltr] .md-typeset ul li{margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}[dir=ltr] .md-typeset ol li ol,[dir=ltr] .md-typeset ol li ul,[dir=ltr] .md-typeset ul li ol,[dir=ltr] .md-typeset ul li ul{margin-left:.625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin-bottom:.5em;margin-top:.5em}[dir=ltr] .md-typeset dd{margin-left:1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em}.md-typeset dd{margin-bottom:1.5em;margin-top:1em}.md-typeset img,.md-typeset svg,.md-typeset video{height:auto;max-width:100%}.md-typeset img[align=left]{margin:1em 1em 1em 0}.md-typeset img[align=right]{margin:1em 0 1em 1em}.md-typeset img[align]:only-child{margin-top:0}.md-typeset figure{display:flow-root;margin:1em auto;max-width:100%;text-align:center;width:-moz-fit-content;width:fit-content}.md-typeset figure img{display:block;margin:0 auto}.md-typeset figcaption{font-style:italic;margin:1em auto;max-width:24rem}.md-typeset iframe{max-width:100%}.md-typeset table:not([class]){background-color:var(--md-default-bg-color);border:.05rem solid var(--md-typeset-table-color);border-radius:.1rem;display:inline-block;font-size:.64rem;max-width:100%;overflow:auto;touch-action:auto}@media print{.md-typeset table:not([class]){display:table}}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td>:first-child,.md-typeset table:not([class]) th>:first-child{margin-top:0}.md-typeset table:not([class]) td>:last-child,.md-typeset table:not([class]) th>:last-child{margin-bottom:0}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{font-weight:700;min-width:5rem;padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) td{border-top:.05rem solid var(--md-typeset-table-color);padding:.9375em 1.25em;vertical-align:top}.md-typeset table:not([class]) tbody tr{transition:background-color 125ms}.md-typeset table:not([class]) tbody tr:hover{background-color:var(--md-typeset-table-color--light);box-shadow:0 .05rem 0 var(--md-default-bg-color) inset}.md-typeset table:not([class]) a{word-break:normal}.md-typeset table th[role=columnheader]{cursor:pointer}[dir=ltr] .md-typeset table th[role=columnheader]:after{margin-left:.5em}[dir=rtl] .md-typeset table th[role=columnheader]:after{margin-right:.5em}.md-typeset table th[role=columnheader]:after{content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-typeset-table-sort-icon);mask-image:var(--md-typeset-table-sort-icon);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset table th[role=columnheader]:hover:after{background-color:var(--md-default-fg-color--lighter)}.md-typeset table th[role=columnheader][aria-sort=ascending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--asc);mask-image:var(--md-typeset-table-sort-icon--asc)}.md-typeset table th[role=columnheader][aria-sort=descending]:after{background-color:var(--md-default-fg-color--light);-webkit-mask-image:var(--md-typeset-table-sort-icon--desc);mask-image:var(--md-typeset-table-sort-icon--desc)}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;touch-action:auto}.md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}@media print{.md-typeset__table{display:block}}html .md-typeset__table table{display:table;margin:0;overflow:hidden;width:100%}@media screen and (max-width:44.984375em){.md-content__inner>pre{margin:1em -.8rem}.md-content__inner>pre code{border-radius:0}}.md-typeset .md-author{border-radius:100%;display:block;flex-shrink:0;height:1.6rem;overflow:hidden;position:relative;transition:color 125ms,transform 125ms;width:1.6rem}.md-typeset .md-author img{display:block}.md-typeset .md-author--more{background:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--lighter);font-size:.6rem;font-weight:700;line-height:1.6rem;text-align:center}.md-typeset .md-author--long{height:2.4rem;width:2.4rem}.md-typeset a.md-author{transform:scale(1)}.md-typeset a.md-author img{border-radius:100%;filter:grayscale(100%) opacity(75%);transition:filter 125ms}.md-typeset a.md-author:focus,.md-typeset a.md-author:hover{transform:scale(1.1);z-index:1}.md-typeset a.md-author:focus img,.md-typeset a.md-author:hover img{filter:grayscale(0)}.md-banner{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color);overflow:auto}@media print{.md-banner{display:none}}.md-banner--warning{background-color:var(--md-warning-bg-color);color:var(--md-warning-fg-color)}.md-banner__inner{font-size:.7rem;margin:.6rem auto;padding:0 .8rem}[dir=ltr] .md-banner__button{float:right}[dir=rtl] .md-banner__button{float:left}.md-banner__button{color:inherit;cursor:pointer;transition:opacity .25s}.no-js .md-banner__button{display:none}.md-banner__button:hover{opacity:.7}html{font-size:125%;height:100%;overflow-x:hidden}@media screen and (min-width:100em){html{font-size:137.5%}}@media screen and (min-width:125em){html{font-size:150%}}body{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;font-size:.5rem;min-height:100%;position:relative;width:100%}@media print{body{display:block}}@media screen and (max-width:59.984375em){body[data-md-scrolllock]{position:fixed}}.md-grid{margin-left:auto;margin-right:auto;max-width:61rem}.md-container{display:flex;flex-direction:column;flex-grow:1}@media print{.md-container{display:block}}.md-main{flex-grow:1}.md-main__inner{display:flex;height:100%;margin-top:1.5rem}.md-ellipsis{overflow:hidden;text-overflow:ellipsis}.md-toggle{display:none}.md-option{height:0;opacity:0;position:absolute;width:0}.md-option:checked+label:not([hidden]){display:block}.md-option.focus-visible+label{outline-color:var(--md-accent-fg-color);outline-style:auto}.md-skip{background-color:var(--md-default-fg-color);border-radius:.1rem;color:var(--md-default-bg-color);font-size:.64rem;margin:.5rem;opacity:0;outline-color:var(--md-accent-fg-color);padding:.3rem .5rem;position:fixed;transform:translateY(.4rem);z-index:-1}.md-skip:focus{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 175ms 75ms;z-index:10}@page{margin:25mm}:root{--md-clipboard-icon:url('data:image/svg+xml;charset=utf-8,')}.md-clipboard{border-radius:.1rem;color:var(--md-default-fg-color--lightest);cursor:pointer;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;transition:color .25s;width:1.5em;z-index:1}@media print{.md-clipboard{display:none}}.md-clipboard:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}:hover>.md-clipboard{color:var(--md-default-fg-color--light)}.md-clipboard:focus,.md-clipboard:hover{color:var(--md-accent-fg-color)}.md-clipboard:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-image:var(--md-clipboard-icon);mask-image:var(--md-clipboard-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-clipboard--inline{cursor:pointer}.md-clipboard--inline code{transition:color .25s,background-color .25s}.md-clipboard--inline:focus code,.md-clipboard--inline:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}:root{--md-code-select-icon:url('data:image/svg+xml;charset=utf-8,');--md-code-copy-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-code__content{display:grid}.md-code__nav{background-color:var(--md-code-bg-color--lighter);border-radius:.1rem;display:flex;gap:.2rem;padding:.2rem;position:absolute;right:.25em;top:.25em;transition:background-color .25s;z-index:1}:hover>.md-code__nav{background-color:var(--md-code-bg-color--light)}.md-code__button{color:var(--md-default-fg-color--lightest);cursor:pointer;display:block;height:1.5em;outline-color:var(--md-accent-fg-color);outline-offset:.1rem;transition:color .25s;width:1.5em}:hover>*>.md-code__button{color:var(--md-default-fg-color--light)}.md-code__button.focus-visible,.md-code__button:hover{color:var(--md-accent-fg-color)}.md-code__button--active{color:var(--md-default-fg-color)!important}.md-code__button:after{background-color:currentcolor;content:"";display:block;height:1.125em;margin:0 auto;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:1.125em}.md-code__button[data-md-type=select]:after{-webkit-mask-image:var(--md-code-select-icon);mask-image:var(--md-code-select-icon)}.md-code__button[data-md-type=copy]:after{-webkit-mask-image:var(--md-code-copy-icon);mask-image:var(--md-code-copy-icon)}@keyframes consent{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes overlay{0%{opacity:0}to{opacity:1}}.md-consent__overlay{animation:overlay .25s both;-webkit-backdrop-filter:blur(.1rem);backdrop-filter:blur(.1rem);background-color:#0000008a;height:100%;opacity:1;position:fixed;top:0;width:100%;z-index:5}.md-consent__inner{animation:consent .5s cubic-bezier(.1,.7,.1,1) both;background-color:var(--md-default-bg-color);border:0;border-radius:.1rem;bottom:0;box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;max-height:100%;overflow:auto;padding:0;position:fixed;width:100%;z-index:5}.md-consent__form{padding:.8rem}.md-consent__settings{display:none;margin:1em 0}input:checked+.md-consent__settings{display:block}.md-consent__controls{margin-bottom:.8rem}.md-typeset .md-consent__controls .md-button{display:inline}@media screen and (max-width:44.984375em){.md-typeset .md-consent__controls .md-button{display:block;margin-top:.4rem;text-align:center;width:100%}}.md-consent label{cursor:pointer}.md-content{flex-grow:1;min-width:0}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}@media screen and (min-width:76.25em){[dir=ltr] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}[dir=ltr] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner,[dir=rtl] .md-sidebar--primary:not([hidden])~.md-content>.md-content__inner{margin-right:1.2rem}[dir=rtl] .md-sidebar--secondary:not([hidden])~.md-content>.md-content__inner{margin-left:1.2rem}}.md-content__inner:before{content:"";display:block;height:.4rem}.md-content__inner>:last-child{margin-bottom:0}[dir=ltr] .md-content__button{float:right}[dir=rtl] .md-content__button{float:left}[dir=ltr] .md-content__button{margin-left:.4rem}[dir=rtl] .md-content__button{margin-right:.4rem}.md-content__button{margin:.4rem 0;padding:0}@media print{.md-content__button{display:none}}.md-typeset .md-content__button{color:var(--md-default-fg-color--lighter)}.md-content__button svg{display:inline;vertical-align:top}[dir=rtl] .md-content__button svg{transform:scaleX(-1)}[dir=ltr] .md-dialog{right:.8rem}[dir=rtl] .md-dialog{left:.8rem}.md-dialog{background-color:var(--md-default-fg-color);border-radius:.1rem;bottom:.8rem;box-shadow:var(--md-shadow-z3);min-width:11.1rem;opacity:0;padding:.4rem .6rem;pointer-events:none;position:fixed;transform:translateY(100%);transition:transform 0ms .4s,opacity .4s;z-index:4}@media print{.md-dialog{display:none}}.md-dialog--active{opacity:1;pointer-events:auto;transform:translateY(0);transition:transform .4s cubic-bezier(.075,.85,.175,1),opacity .4s}.md-dialog__inner{color:var(--md-default-bg-color);font-size:.7rem}.md-feedback{margin:2em 0 1em;text-align:center}.md-feedback fieldset{border:none;margin:0;padding:0}.md-feedback__title{font-weight:700;margin:1em auto}.md-feedback__inner{position:relative}.md-feedback__list{display:flex;flex-wrap:wrap;place-content:baseline center;position:relative}.md-feedback__list:hover .md-icon:not(:disabled){color:var(--md-default-fg-color--lighter)}:disabled .md-feedback__list{min-height:1.8rem}.md-feedback__icon{color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;margin:0 .1rem;transition:color 125ms}.md-feedback__icon:not(:disabled).md-icon:hover{color:var(--md-accent-fg-color)}.md-feedback__icon:disabled{color:var(--md-default-fg-color--lightest);pointer-events:none}.md-feedback__note{opacity:0;position:relative;transform:translateY(.4rem);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-feedback__note>*{margin:0 auto;max-width:16rem}:disabled .md-feedback__note{opacity:1;transform:translateY(0)}.md-footer{background-color:var(--md-footer-bg-color);color:var(--md-footer-fg-color)}@media print{.md-footer{display:none}}.md-footer__inner{justify-content:space-between;overflow:auto;padding:.2rem}.md-footer__inner:not([hidden]){display:flex}.md-footer__link{align-items:end;display:flex;flex-grow:0.01;margin-bottom:.4rem;margin-top:1rem;max-width:100%;outline-color:var(--md-accent-fg-color);overflow:hidden;transition:opacity .25s}.md-footer__link:focus,.md-footer__link:hover{opacity:.7}[dir=rtl] .md-footer__link svg{transform:scaleX(-1)}@media screen and (max-width:44.984375em){.md-footer__link--prev{flex-shrink:0}.md-footer__link--prev .md-footer__title{display:none}}[dir=ltr] .md-footer__link--next{margin-left:auto}[dir=rtl] .md-footer__link--next{margin-right:auto}.md-footer__link--next{text-align:right}[dir=rtl] .md-footer__link--next{text-align:left}.md-footer__title{flex-grow:1;font-size:.9rem;margin-bottom:.7rem;max-width:calc(100% - 2.4rem);padding:0 1rem;white-space:nowrap}.md-footer__button{margin:.2rem;padding:.4rem}.md-footer__direction{font-size:.64rem;opacity:.7}.md-footer-meta{background-color:var(--md-footer-bg-color--dark)}.md-footer-meta__inner{display:flex;flex-wrap:wrap;justify-content:space-between;padding:.2rem}html .md-footer-meta.md-typeset a{color:var(--md-footer-fg-color--light)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:var(--md-footer-fg-color)}.md-copyright{color:var(--md-footer-fg-color--lighter);font-size:.64rem;margin:auto .6rem;padding:.4rem 0;width:100%}@media screen and (min-width:45em){.md-copyright{width:auto}}.md-copyright__highlight{color:var(--md-footer-fg-color--light)}.md-social{display:inline-flex;gap:.2rem;margin:0 .4rem;padding:.2rem 0 .6rem}@media screen and (min-width:45em){.md-social{padding:.6rem 0}}.md-social__link{display:inline-block;height:1.6rem;text-align:center;width:1.6rem}.md-social__link:before{line-height:1.9}.md-social__link svg{fill:currentcolor;max-height:.8rem;vertical-align:-25%}.md-typeset .md-button{border:.1rem solid;border-radius:.1rem;color:var(--md-primary-fg-color);cursor:pointer;display:inline-block;font-weight:700;padding:.625em 2em;transition:color 125ms,background-color 125ms,border-color 125ms}.md-typeset .md-button--primary{background-color:var(--md-primary-fg-color);border-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color)}.md-typeset .md-button:focus,.md-typeset .md-button:hover{background-color:var(--md-accent-fg-color);border-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[dir=ltr] .md-typeset .md-input{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .md-input,[dir=rtl] .md-typeset .md-input{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .md-input{border-top-left-radius:.1rem}.md-typeset .md-input{border-bottom:.1rem solid var(--md-default-fg-color--lighter);box-shadow:var(--md-shadow-z1);font-size:.8rem;height:1.8rem;padding:0 .6rem;transition:border .25s,box-shadow .25s}.md-typeset .md-input:focus,.md-typeset .md-input:hover{border-bottom-color:var(--md-accent-fg-color);box-shadow:var(--md-shadow-z2)}.md-typeset .md-input--stretch{width:100%}.md-header{background-color:var(--md-primary-fg-color);box-shadow:0 0 .2rem #0000,0 .2rem .4rem #0000;color:var(--md-primary-bg-color);display:block;left:0;position:sticky;right:0;top:0;z-index:4}@media print{.md-header{display:none}}.md-header[hidden]{transform:translateY(-100%);transition:transform .25s cubic-bezier(.8,0,.6,1),box-shadow .25s}.md-header--shadow{box-shadow:0 0 .2rem #0000001a,0 .2rem .4rem #0003;transition:transform .25s cubic-bezier(.1,.7,.1,1),box-shadow .25s}.md-header__inner{align-items:center;display:flex;padding:0 .2rem}.md-header__button{color:currentcolor;cursor:pointer;margin:.2rem;outline-color:var(--md-accent-fg-color);padding:.4rem;position:relative;transition:opacity .25s;vertical-align:middle;z-index:1}.md-header__button:hover{opacity:.7}.md-header__button:not([hidden]){display:inline-block}.md-header__button:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}.md-header__button.md-logo{margin:.2rem;padding:.4rem}@media screen and (max-width:76.234375em){.md-header__button.md-logo{display:none}}.md-header__button.md-logo img,.md-header__button.md-logo svg{fill:currentcolor;display:block;height:1.2rem;width:auto}@media screen and (min-width:60em){.md-header__button[for=__search]{display:none}}.no-js .md-header__button[for=__search]{display:none}[dir=rtl] .md-header__button[for=__search] svg{transform:scaleX(-1)}@media screen and (min-width:76.25em){.md-header__button[for=__drawer]{display:none}}.md-header__topic{display:flex;max-width:100%;position:absolute;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;white-space:nowrap}.md-header__topic+.md-header__topic{opacity:0;pointer-events:none;transform:translateX(1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__topic+.md-header__topic{transform:translateX(-1.25rem)}.md-header__topic:first-child{font-weight:700}[dir=ltr] .md-header__title{margin-left:1rem;margin-right:.4rem}[dir=rtl] .md-header__title{margin-left:.4rem;margin-right:1rem}.md-header__title{flex-grow:1;font-size:.9rem;height:2.4rem;line-height:2.4rem}.md-header__title--active .md-header__topic{opacity:0;pointer-events:none;transform:translateX(-1.25rem);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;z-index:-1}[dir=rtl] .md-header__title--active .md-header__topic{transform:translateX(1.25rem)}.md-header__title--active .md-header__topic+.md-header__topic{opacity:1;pointer-events:auto;transform:translateX(0);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;z-index:0}.md-header__title>.md-header__ellipsis{height:100%;position:relative;width:100%}.md-header__option{display:flex;flex-shrink:0;max-width:100%;transition:max-width 0ms .25s,opacity .25s .25s;white-space:nowrap}[data-md-toggle=search]:checked~.md-header .md-header__option{max-width:0;opacity:0;transition:max-width 0ms,opacity 0ms}.md-header__option>input{bottom:0}.md-header__source{display:none}@media screen and (min-width:60em){[dir=ltr] .md-header__source{margin-left:1rem}[dir=rtl] .md-header__source{margin-right:1rem}.md-header__source{display:block;max-width:11.7rem;width:11.7rem}}@media screen and (min-width:76.25em){[dir=ltr] .md-header__source{margin-left:1.4rem}[dir=rtl] .md-header__source{margin-right:1.4rem}}.md-meta{color:var(--md-default-fg-color--light);font-size:.7rem;line-height:1.3}.md-meta__list{display:inline-flex;flex-wrap:wrap;list-style:none;margin:0;padding:0}.md-meta__item:not(:last-child):after{content:"·";margin-left:.2rem;margin-right:.2rem}.md-meta__link{color:var(--md-typeset-a-color)}.md-meta__link:focus,.md-meta__link:hover{color:var(--md-accent-fg-color)}.md-draft{background-color:#ff1744;border-radius:.125em;color:#fff;display:inline-block;font-weight:700;padding-left:.5714285714em;padding-right:.5714285714em}:root{--md-nav-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-nav-icon--next:url('data:image/svg+xml;charset=utf-8,');--md-toc-icon:url('data:image/svg+xml;charset=utf-8,')}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{color:var(--md-default-fg-color--light);display:block;font-weight:700;overflow:hidden;padding:0 .6rem;text-overflow:ellipsis}.md-nav__title .md-nav__button{display:none}.md-nav__title .md-nav__button img{height:100%;width:auto}.md-nav__title .md-nav__button.md-logo img,.md-nav__title .md-nav__button.md-logo svg{fill:currentcolor;display:block;height:2.4rem;max-width:100%;object-fit:contain;width:auto}.md-nav__list{list-style:none;margin:0;padding:0}.md-nav__link{align-items:flex-start;display:flex;gap:.4rem;margin-top:.625em;scroll-snap-align:start;transition:color 125ms}.md-nav__link--passed,.md-nav__link--passed code{color:var(--md-default-fg-color--light)}.md-nav__item .md-nav__link--active,.md-nav__item .md-nav__link--active code{color:var(--md-typeset-a-color)}.md-nav__link .md-ellipsis{position:relative}.md-nav__link .md-ellipsis code{word-break:normal}[dir=ltr] .md-nav__link .md-icon:last-child{margin-left:auto}[dir=rtl] .md-nav__link .md-icon:last-child{margin-right:auto}.md-nav__link .md-typeset{font-size:.7rem;line-height:1.3}.md-nav__link svg{fill:currentcolor;flex-shrink:0;height:1.3em;position:relative}.md-nav__link[for]:focus,.md-nav__link[for]:hover,.md-nav__link[href]:focus,.md-nav__link[href]:hover{color:var(--md-accent-fg-color);cursor:pointer}.md-nav__link[for]:focus code,.md-nav__link[for]:hover code,.md-nav__link[href]:focus code,.md-nav__link[href]:hover code{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-nav__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-nav--primary .md-nav__link[for=__toc]{display:none}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{background-color:currentcolor;display:block;height:100%;-webkit-mask-image:var(--md-toc-icon);mask-image:var(--md-toc-icon);width:100%}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__container>.md-nav__link{margin-top:0}.md-nav__container>.md-nav__link:first-child{flex-grow:1;min-width:0}.md-nav__icon{flex-shrink:0}.md-nav__source{display:none}@media screen and (max-width:76.234375em){.md-nav--primary,.md-nav--primary .md-nav{background-color:var(--md-default-bg-color);display:flex;flex-direction:column;height:100%;left:0;position:absolute;right:0;top:0;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}.md-nav--primary .md-nav__title{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);cursor:pointer;height:5.6rem;line-height:2.4rem;padding:3rem .8rem .2rem;position:relative;white-space:nowrap}[dir=ltr] .md-nav--primary .md-nav__title .md-nav__icon{left:.4rem}[dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon{right:.4rem}.md-nav--primary .md-nav__title .md-nav__icon{display:block;height:1.2rem;margin:.2rem;position:absolute;top:.4rem;width:1.2rem}.md-nav--primary .md-nav__title .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--prev);mask-image:var(--md-nav-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}.md-nav--primary .md-nav__title~.md-nav__list{background-color:var(--md-default-bg-color);box-shadow:0 .05rem 0 var(--md-default-fg-color--lightest) inset;overflow-y:auto;scroll-snap-type:y mandatory;touch-action:pan-y}.md-nav--primary .md-nav__title~.md-nav__list>:first-child{border-top:0}.md-nav--primary .md-nav__title[for=__drawer]{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);font-weight:700}.md-nav--primary .md-nav__title .md-logo{display:block;left:.2rem;margin:.2rem;padding:.4rem;position:absolute;right:.2rem;top:.2rem}.md-nav--primary .md-nav__list{flex:1}.md-nav--primary .md-nav__item{border-top:.05rem solid var(--md-default-fg-color--lightest)}.md-nav--primary .md-nav__item--active>.md-nav__link{color:var(--md-typeset-a-color)}.md-nav--primary .md-nav__item--active>.md-nav__link:focus,.md-nav--primary .md-nav__item--active>.md-nav__link:hover{color:var(--md-accent-fg-color)}.md-nav--primary .md-nav__link{margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link svg{margin-top:.1em}.md-nav--primary .md-nav__link>.md-nav__link{padding:0}[dir=ltr] .md-nav--primary .md-nav__link .md-nav__icon{margin-right:-.2rem}[dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon{margin-left:-.2rem}.md-nav--primary .md-nav__link .md-nav__icon{font-size:1.2rem;height:1.2rem;width:1.2rem}.md-nav--primary .md-nav__link .md-nav__icon:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-nav--primary .md-nav__icon:after{transform:scale(-1)}.md-nav--primary .md-nav--secondary .md-nav{background-color:initial;position:static}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem}[dir=ltr] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem}.md-nav--secondary{background-color:initial}.md-nav__toggle~.md-nav{display:flex;opacity:0;transform:translateX(100%);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity 125ms 50ms}[dir=rtl] .md-nav__toggle~.md-nav{transform:translateX(-100%)}.md-nav__toggle:checked~.md-nav{opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity 125ms 125ms}.md-nav__toggle:checked~.md-nav>.md-nav__list{-webkit-backface-visibility:hidden;backface-visibility:hidden}}@media screen and (max-width:59.984375em){.md-nav--primary .md-nav__link[for=__toc]{display:flex}.md-nav--primary .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--primary .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--primary .md-nav__link[for=__toc]~.md-nav{display:flex}.md-nav__source{background-color:var(--md-primary-fg-color--dark);color:var(--md-primary-bg-color);display:block;padding:0 .2rem}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-nav--integrated .md-nav__link[for=__toc]{display:flex}.md-nav--integrated .md-nav__link[for=__toc] .md-icon:after{content:""}.md-nav--integrated .md-nav__link[for=__toc]+.md-nav__link{display:none}.md-nav--integrated .md-nav__link[for=__toc]~.md-nav{display:flex}}@media screen and (min-width:60em){.md-nav{margin-bottom:-.4rem}.md-nav--secondary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--secondary .md-nav__title[for=__toc]{scroll-snap-align:start}.md-nav--secondary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--secondary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--secondary .md-nav__list{padding-right:.6rem}.md-nav--secondary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--secondary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--secondary .md-nav__item>.md-nav__link{margin-left:.4rem}}@media screen and (min-width:76.25em){.md-nav{margin-bottom:-.4rem;transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav--primary .md-nav__title{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);position:sticky;top:0;z-index:1}.md-nav--primary .md-nav__title[for=__drawer]{scroll-snap-align:start}.md-nav--primary .md-nav__title .md-nav__icon{display:none}[dir=ltr] .md-nav--primary .md-nav__list{padding-left:.6rem}[dir=rtl] .md-nav--primary .md-nav__list{padding-right:.6rem}.md-nav--primary .md-nav__list{padding-bottom:.4rem}[dir=ltr] .md-nav--primary .md-nav__item>.md-nav__link{margin-right:.4rem}[dir=rtl] .md-nav--primary .md-nav__item>.md-nav__link{margin-left:.4rem}.md-nav__toggle~.md-nav{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .25s,visibility 0ms .25s;visibility:collapse}.md-nav__toggle~.md-nav>.md-nav__list{overflow:hidden}.md-nav__toggle.md-toggle--indeterminate~.md-nav,.md-nav__toggle:checked~.md-nav{grid-template-rows:1fr;opacity:1;transition:grid-template-rows .25s cubic-bezier(.86,0,.07,1),opacity .15s .1s,visibility 0ms;visibility:visible}.md-nav__toggle.md-toggle--indeterminate~.md-nav{transition:none}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--section{display:block;margin:1.25em 0}.md-nav__item--section:last-child{margin-bottom:0}.md-nav__item--section>.md-nav__link{font-weight:700}.md-nav__item--section>.md-nav__link[for]{color:var(--md-default-fg-color--light)}.md-nav__item--section>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav__item--section>.md-nav__link .md-icon,.md-nav__item--section>.md-nav__link>[for]{display:none}[dir=ltr] .md-nav__item--section>.md-nav{margin-left:-.6rem}[dir=rtl] .md-nav__item--section>.md-nav{margin-right:-.6rem}.md-nav__item--section>.md-nav{display:block;opacity:1;visibility:visible}.md-nav__item--section>.md-nav>.md-nav__list>.md-nav__item{padding:0}.md-nav__icon{border-radius:100%;height:.9rem;transition:background-color .25s;width:.9rem}.md-nav__icon:hover{background-color:var(--md-accent-fg-color--transparent)}.md-nav__icon:after{background-color:currentcolor;border-radius:100%;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-nav-icon--next);mask-image:var(--md-nav-icon--next);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:transform .25s;vertical-align:-.1rem;width:100%}[dir=rtl] .md-nav__icon:after{transform:rotate(180deg)}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link .md-nav__icon:after,.md-nav__item--nested .md-toggle--indeterminate~.md-nav__link .md-nav__icon:after{transform:rotate(90deg)}.md-nav--lifted>.md-nav__list>.md-nav__item,.md-nav--lifted>.md-nav__title{display:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active{display:block}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link{background:var(--md-default-bg-color);box-shadow:0 0 .4rem .4rem var(--md-default-bg-color);margin-top:0;position:sticky;top:0;z-index:1}.md-nav--lifted>.md-nav__list>.md-nav__item--active>.md-nav__link:not(.md-nav__container){pointer-events:none}.md-nav--lifted>.md-nav__list>.md-nav__item--active.md-nav__item--section{margin:0}[dir=ltr] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-left:-.6rem}[dir=rtl] .md-nav--lifted>.md-nav__list>.md-nav__item>.md-nav:not(.md-nav--secondary){margin-right:-.6rem}.md-nav--lifted>.md-nav__list>.md-nav__item>[for]{color:var(--md-default-fg-color--light)}.md-nav--lifted .md-nav[data-md-level="1"]{grid-template-rows:1fr;opacity:1;visibility:visible}[dir=ltr] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-left:.05rem solid var(--md-primary-fg-color)}[dir=rtl] .md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{border-right:.05rem solid var(--md-primary-fg-color)}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary{display:block;margin-bottom:1.25em;opacity:1;visibility:visible}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__list{overflow:visible;padding-bottom:0}.md-nav--integrated>.md-nav__list>.md-nav__item--active .md-nav--secondary>.md-nav__title{display:none}}.md-pagination{font-size:.8rem;font-weight:700;gap:.4rem}.md-pagination,.md-pagination>*{align-items:center;display:flex;justify-content:center}.md-pagination>*{border-radius:.2rem;height:1.8rem;min-width:1.8rem;text-align:center}.md-pagination__current{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light)}.md-pagination__link{transition:color 125ms,background-color 125ms}.md-pagination__link:focus,.md-pagination__link:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-pagination__link:focus svg,.md-pagination__link:hover svg{color:var(--md-accent-fg-color)}.md-pagination__link.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-pagination__link svg{fill:currentcolor;color:var(--md-default-fg-color--lighter);display:block;max-height:100%;width:1.2rem}:root{--md-path-icon:url('data:image/svg+xml;charset=utf-8,')}.md-path{font-size:.7rem;margin:0 .8rem;overflow:auto;padding-top:1.2rem}.md-path:not([hidden]){display:block}@media screen and (min-width:76.25em){.md-path{margin:0 1.2rem}}.md-path__list{align-items:center;display:flex;gap:.2rem;list-style:none;margin:0;padding:0}.md-path__item:not(:first-child){display:inline-flex;gap:.2rem;white-space:nowrap}.md-path__item:not(:first-child):before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline;height:.8rem;-webkit-mask-image:var(--md-path-icon);mask-image:var(--md-path-icon);width:.8rem}.md-path__link{align-items:center;color:var(--md-default-fg-color--light);display:flex}.md-path__link:focus,.md-path__link:hover{color:var(--md-accent-fg-color)}:root{--md-post-pin-icon:url('data:image/svg+xml;charset=utf-8,')}.md-post__back{border-bottom:.05rem solid var(--md-default-fg-color--lightest);margin-bottom:1.2rem;padding-bottom:1.2rem}@media screen and (max-width:76.234375em){.md-post__back{display:none}}[dir=rtl] .md-post__back svg{transform:scaleX(-1)}.md-post__authors{display:flex;flex-direction:column;gap:.6rem;margin:0 .6rem 1.2rem}.md-post .md-post__meta a{transition:color 125ms}.md-post .md-post__meta a:focus,.md-post .md-post__meta a:hover{color:var(--md-accent-fg-color)}.md-post__title{color:var(--md-default-fg-color--light);font-weight:700}.md-post--excerpt{margin-bottom:3.2rem}.md-post--excerpt .md-post__header{align-items:center;display:flex;gap:.6rem;min-height:1.6rem}.md-post--excerpt .md-post__authors{align-items:center;display:inline-flex;flex-direction:row;gap:.2rem;margin:0;min-height:2.4rem}[dir=ltr] .md-post--excerpt .md-post__meta .md-meta__list{margin-right:.4rem}[dir=rtl] .md-post--excerpt .md-post__meta .md-meta__list{margin-left:.4rem}.md-post--excerpt .md-post__content>:first-child{--md-scroll-margin:6rem;margin-top:0}.md-post>.md-nav--secondary{margin:1em 0}.md-pin{background:var(--md-default-fg-color--lightest);border-radius:1rem;margin-top:-.05rem;padding:.2rem}.md-pin:after{background-color:currentcolor;content:"";display:block;height:.6rem;margin:0 auto;-webkit-mask-image:var(--md-post-pin-icon);mask-image:var(--md-post-pin-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.6rem}.md-profile{align-items:center;display:flex;font-size:.7rem;gap:.6rem;line-height:1.4;width:100%}.md-profile__description{flex-grow:1}.md-content--post{display:flex}@media screen and (max-width:76.234375em){.md-content--post{flex-flow:column-reverse}}.md-content--post>.md-content__inner{min-width:0}@media screen and (min-width:76.25em){[dir=ltr] .md-content--post>.md-content__inner{margin-left:1.2rem}[dir=rtl] .md-content--post>.md-content__inner{margin-right:1.2rem}}@media screen and (max-width:76.234375em){.md-sidebar.md-sidebar--post{padding:0;position:static;width:100%}.md-sidebar.md-sidebar--post .md-sidebar__scrollwrap{overflow:visible}.md-sidebar.md-sidebar--post .md-sidebar__inner{padding:0}.md-sidebar.md-sidebar--post .md-post__meta{margin-left:.6rem;margin-right:.6rem}.md-sidebar.md-sidebar--post .md-nav__item{border:none;display:inline}.md-sidebar.md-sidebar--post .md-nav__list{display:inline-flex;flex-wrap:wrap;gap:.6rem;padding-bottom:.6rem;padding-top:.6rem}.md-sidebar.md-sidebar--post .md-nav__link{padding:0}.md-sidebar.md-sidebar--post .md-nav{height:auto;margin-bottom:0;position:static}}:root{--md-progress-value:0;--md-progress-delay:400ms}.md-progress{background:var(--md-primary-bg-color);height:.075rem;opacity:min(clamp(0,var(--md-progress-value),1),clamp(0,100 - var(--md-progress-value),1));position:fixed;top:0;transform:scaleX(calc(var(--md-progress-value)*1%));transform-origin:left;transition:transform .5s cubic-bezier(.19,1,.22,1),opacity .25s var(--md-progress-delay);width:100%;z-index:4}:root{--md-search-result-icon:url('data:image/svg+xml;charset=utf-8,')}.md-search{position:relative}@media screen and (min-width:60em){.md-search{padding:.2rem 0}}.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__overlay{left:-2.2rem}[dir=rtl] .md-search__overlay{right:-2.2rem}.md-search__overlay{background-color:var(--md-default-bg-color);border-radius:1rem;height:2rem;overflow:hidden;pointer-events:none;position:absolute;top:-1rem;transform-origin:center;transition:transform .3s .1s,opacity .2s .2s;width:2rem}[data-md-toggle=search]:checked~.md-header .md-search__overlay{opacity:1;transition:transform .4s,opacity .1s}}@media screen and (min-width:60em){[dir=ltr] .md-search__overlay{left:0}[dir=rtl] .md-search__overlay{right:0}.md-search__overlay{background-color:#0000008a;cursor:pointer;height:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0}[data-md-toggle=search]:checked~.md-header .md-search__overlay{height:200vh;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@media screen and (max-width:29.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(45)}}@media screen and (min-width:30em) and (max-width:44.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(60)}}@media screen and (min-width:45em) and (max-width:59.984375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{transform:scale(75)}}.md-search__inner{-webkit-backface-visibility:hidden;backface-visibility:hidden}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__inner{left:0}[dir=rtl] .md-search__inner{right:0}.md-search__inner{height:0;opacity:0;overflow:hidden;position:fixed;top:0;transform:translateX(5%);transition:width 0ms .3s,height 0ms .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;width:0;z-index:2}[dir=rtl] .md-search__inner{transform:translateX(-5%)}[data-md-toggle=search]:checked~.md-header .md-search__inner{height:100%;opacity:1;transform:translateX(0);transition:width 0ms 0ms,height 0ms 0ms,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__inner{float:right}[dir=rtl] .md-search__inner{float:left}.md-search__inner{padding:.1rem 0;position:relative;transition:width .25s cubic-bezier(.1,.7,.1,1);width:11.7rem}}@media screen and (min-width:60em) and (max-width:76.234375em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}}@media screen and (min-width:76.25em){[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}}.md-search__form{background-color:var(--md-default-bg-color);box-shadow:0 0 .6rem #0000;height:2.4rem;position:relative;transition:color .25s,background-color .25s;z-index:2}@media screen and (min-width:60em){.md-search__form{background-color:#00000042;border-radius:.1rem;height:1.8rem}.md-search__form:hover{background-color:#ffffff1f}}[data-md-toggle=search]:checked~.md-header .md-search__form{background-color:var(--md-default-bg-color);border-radius:.1rem .1rem 0 0;box-shadow:0 0 .6rem #00000012;color:var(--md-default-fg-color)}[dir=ltr] .md-search__input{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__input{padding-left:2.2rem;padding-right:3.6rem}.md-search__input{background:#0000;font-size:.9rem;height:100%;position:relative;text-overflow:ellipsis;width:100%;z-index:2}.md-search__input::placeholder{transition:color .25s}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:var(--md-default-fg-color--light)}.md-search__input::-ms-clear{display:none}@media screen and (max-width:59.984375em){.md-search__input{font-size:.9rem;height:2.4rem;width:100%}}@media screen and (min-width:60em){[dir=ltr] .md-search__input{padding-left:2.2rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input{color:inherit;font-size:.8rem}.md-search__input::placeholder{color:var(--md-primary-bg-color--light)}.md-search__input+.md-search__icon{color:var(--md-primary-bg-color)}[data-md-toggle=search]:checked~.md-header .md-search__input{text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon{color:var(--md-default-fg-color--light)}[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:#0000}}.md-search__icon{cursor:pointer;display:inline-block;height:1.2rem;transition:color .25s,opacity .25s;width:1.2rem}.md-search__icon:hover{opacity:.7}[dir=ltr] .md-search__icon[for=__search]{left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem}.md-search__icon[for=__search]{position:absolute;top:.3rem;z-index:2}[dir=rtl] .md-search__icon[for=__search] svg{transform:scaleX(-1)}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__icon[for=__search]{left:.8rem}[dir=rtl] .md-search__icon[for=__search]{right:.8rem}.md-search__icon[for=__search]{top:.6rem}.md-search__icon[for=__search] svg:first-child{display:none}}@media screen and (min-width:60em){.md-search__icon[for=__search]{pointer-events:none}.md-search__icon[for=__search] svg:last-child{display:none}}[dir=ltr] .md-search__options{right:.5rem}[dir=rtl] .md-search__options{left:.5rem}.md-search__options{pointer-events:none;position:absolute;top:.3rem;z-index:2}@media screen and (max-width:59.984375em){[dir=ltr] .md-search__options{right:.8rem}[dir=rtl] .md-search__options{left:.8rem}.md-search__options{top:.6rem}}[dir=ltr] .md-search__options>.md-icon{margin-left:.2rem}[dir=rtl] .md-search__options>.md-icon{margin-right:.2rem}.md-search__options>.md-icon{color:var(--md-default-fg-color--light);opacity:0;transform:scale(.75);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s}.md-search__options>.md-icon:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon{opacity:1;pointer-events:auto;transform:scale(1)}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__options>.md-icon:hover{opacity:.7}[dir=ltr] .md-search__suggest{padding-left:3.6rem;padding-right:2.2rem}[dir=rtl] .md-search__suggest{padding-left:2.2rem;padding-right:3.6rem}.md-search__suggest{align-items:center;color:var(--md-default-fg-color--lighter);display:flex;font-size:.9rem;height:100%;opacity:0;position:absolute;top:0;transition:opacity 50ms;white-space:nowrap;width:100%}@media screen and (min-width:60em){[dir=ltr] .md-search__suggest{padding-left:2.2rem}[dir=rtl] .md-search__suggest{padding-right:2.2rem}.md-search__suggest{font-size:.8rem}}[data-md-toggle=search]:checked~.md-header .md-search__suggest{opacity:1;transition:opacity .3s .1s}[dir=ltr] .md-search__output{border-bottom-left-radius:.1rem}[dir=ltr] .md-search__output,[dir=rtl] .md-search__output{border-bottom-right-radius:.1rem}[dir=rtl] .md-search__output{border-bottom-left-radius:.1rem}.md-search__output{overflow:hidden;position:absolute;width:100%;z-index:1}@media screen and (max-width:59.984375em){.md-search__output{bottom:0;top:2.4rem}}@media screen and (min-width:60em){.md-search__output{opacity:0;top:1.9rem;transition:opacity .4s}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:var(--md-shadow-z3);opacity:1}}.md-search__scrollwrap{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);height:100%;overflow-y:auto;touch-action:pan-y}@media (-webkit-max-device-pixel-ratio:1),(max-resolution:1dppx){.md-search__scrollwrap{transform:translateZ(0)}}@media screen and (min-width:60em) and (max-width:76.234375em){.md-search__scrollwrap{width:23.4rem}}@media screen and (min-width:76.25em){.md-search__scrollwrap{width:34.4rem}}@media screen and (min-width:60em){.md-search__scrollwrap{max-height:0;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-search__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}}.md-search-result{color:var(--md-default-fg-color);word-break:break-word}.md-search-result__meta{background-color:var(--md-default-fg-color--lightest);color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.8rem;padding:0 .8rem;scroll-snap-align:start}@media screen and (min-width:60em){[dir=ltr] .md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem}}.md-search-result__list{list-style:none;margin:0;padding:0;-webkit-user-select:none;user-select:none}.md-search-result__item{box-shadow:0 -.05rem var(--md-default-fg-color--lightest)}.md-search-result__item:first-child{box-shadow:none}.md-search-result__link{display:block;outline:none;scroll-snap-align:start;transition:background-color .25s}.md-search-result__link:focus,.md-search-result__link:hover{background-color:var(--md-accent-fg-color--transparent)}.md-search-result__link:last-child p:last-child{margin-bottom:.6rem}.md-search-result__more>summary{cursor:pointer;display:block;outline:none;position:sticky;scroll-snap-align:start;top:0;z-index:1}.md-search-result__more>summary::marker{display:none}.md-search-result__more>summary::-webkit-details-marker{display:none}.md-search-result__more>summary>div{color:var(--md-typeset-a-color);font-size:.64rem;padding:.75em .8rem;transition:color .25s,background-color .25s}@media screen and (min-width:60em){[dir=ltr] .md-search-result__more>summary>div{padding-left:2.2rem}[dir=rtl] .md-search-result__more>summary>div{padding-right:2.2rem}}.md-search-result__more>summary:focus>div,.md-search-result__more>summary:hover>div{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-search-result__more[open]>summary{background-color:var(--md-default-bg-color)}.md-search-result__article{overflow:hidden;padding:0 .8rem;position:relative}@media screen and (min-width:60em){[dir=ltr] .md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem}}[dir=ltr] .md-search-result__icon{left:0}[dir=rtl] .md-search-result__icon{right:0}.md-search-result__icon{color:var(--md-default-fg-color--light);height:1.2rem;margin:.5rem;position:absolute;width:1.2rem}@media screen and (max-width:59.984375em){.md-search-result__icon{display:none}}.md-search-result__icon:after{background-color:currentcolor;content:"";display:inline-block;height:100%;-webkit-mask-image:var(--md-search-result-icon);mask-image:var(--md-search-result-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:100%}[dir=rtl] .md-search-result__icon:after{transform:scaleX(-1)}.md-search-result .md-typeset{color:var(--md-default-fg-color--light);font-size:.64rem;line-height:1.6}.md-search-result .md-typeset h1{color:var(--md-default-fg-color);font-size:.8rem;font-weight:400;line-height:1.4;margin:.55rem 0}.md-search-result .md-typeset h1 mark{text-decoration:none}.md-search-result .md-typeset h2{color:var(--md-default-fg-color);font-size:.64rem;font-weight:700;line-height:1.6;margin:.5em 0}.md-search-result .md-typeset h2 mark{text-decoration:none}.md-search-result__terms{color:var(--md-default-fg-color);display:block;font-size:.64rem;font-style:italic;margin:.5em 0}.md-search-result mark{background-color:initial;color:var(--md-accent-fg-color);text-decoration:underline}.md-select{position:relative;z-index:1}.md-select__inner{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);left:50%;margin-top:.2rem;max-height:0;opacity:0;position:absolute;top:calc(100% - .2rem);transform:translate3d(-50%,.3rem,0);transition:transform .25s 375ms,opacity .25s .25s,max-height 0ms .5s}.md-select:focus-within .md-select__inner,.md-select:hover .md-select__inner{max-height:10rem;opacity:1;transform:translate3d(-50%,0,0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,max-height 0ms}.md-select__inner:after{border-bottom:.2rem solid #0000;border-bottom-color:var(--md-default-bg-color);border-left:.2rem solid #0000;border-right:.2rem solid #0000;border-top:0;content:"";height:0;left:50%;margin-left:-.2rem;margin-top:-.2rem;position:absolute;top:0;width:0}.md-select__list{border-radius:.1rem;font-size:.8rem;list-style-type:none;margin:0;max-height:inherit;overflow:auto;padding:0}.md-select__item{line-height:1.8rem}[dir=ltr] .md-select__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-select__link{padding-left:1.2rem;padding-right:.6rem}.md-select__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:background-color .25s,color .25s;width:100%}.md-select__link:focus,.md-select__link:hover{color:var(--md-accent-fg-color)}.md-select__link:focus{background-color:var(--md-default-fg-color--lightest)}.md-sidebar{align-self:flex-start;flex-shrink:0;padding:1.2rem 0;position:sticky;top:2.4rem;width:12.1rem}@media print{.md-sidebar{display:none}}@media screen and (max-width:76.234375em){[dir=ltr] .md-sidebar--primary{left:-12.1rem}[dir=rtl] .md-sidebar--primary{right:-12.1rem}.md-sidebar--primary{background-color:var(--md-default-bg-color);display:block;height:100%;position:fixed;top:0;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;width:12.1rem;z-index:5}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:var(--md-shadow-z3);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{transform:translateX(-12.1rem)}.md-sidebar--primary .md-sidebar__scrollwrap{bottom:0;left:0;margin:0;overflow:hidden;position:absolute;right:0;scroll-snap-type:none;top:0}}@media screen and (min-width:76.25em){.md-sidebar{height:0}.no-js .md-sidebar{height:auto}.md-header--lifted~.md-container .md-sidebar{top:4.8rem}}.md-sidebar--secondary{display:none;order:2}@media screen and (min-width:60em){.md-sidebar--secondary{height:0}.no-js .md-sidebar--secondary{height:auto}.md-sidebar--secondary:not([hidden]){display:block}.md-sidebar--secondary .md-sidebar__scrollwrap{touch-action:pan-y}}.md-sidebar__scrollwrap{scrollbar-gutter:stable;-webkit-backface-visibility:hidden;backface-visibility:hidden;margin:0 .2rem;overflow-y:auto;scrollbar-color:var(--md-default-fg-color--lighter) #0000;scrollbar-width:thin}.md-sidebar__scrollwrap::-webkit-scrollbar{height:.2rem;width:.2rem}.md-sidebar__scrollwrap:focus-within,.md-sidebar__scrollwrap:hover{scrollbar-color:var(--md-accent-fg-color) #0000}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-sidebar__scrollwrap:focus-within::-webkit-scrollbar-thumb:hover,.md-sidebar__scrollwrap:hover::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}@supports selector(::-webkit-scrollbar){.md-sidebar__scrollwrap{scrollbar-gutter:auto}[dir=ltr] .md-sidebar__inner{padding-right:calc(100% - 11.5rem)}[dir=rtl] .md-sidebar__inner{padding-left:calc(100% - 11.5rem)}}@media screen and (max-width:76.234375em){.md-overlay{background-color:#0000008a;height:0;opacity:0;position:fixed;top:0;transition:width 0ms .25s,height 0ms .25s,opacity .25s;width:0;z-index:5}[data-md-toggle=drawer]:checked~.md-overlay{height:100%;opacity:1;transition:width 0ms,height 0ms,opacity .25s;width:100%}}@keyframes facts{0%{height:0}to{height:.65rem}}@keyframes fact{0%{opacity:0;transform:translateY(100%)}50%{opacity:0}to{opacity:1;transform:translateY(0)}}:root{--md-source-forks-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-repositories-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-stars-icon:url('data:image/svg+xml;charset=utf-8,');--md-source-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-source{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:block;font-size:.65rem;line-height:1.2;outline-color:var(--md-accent-fg-color);transition:opacity .25s;white-space:nowrap}.md-source:hover{opacity:.7}.md-source__icon{display:inline-block;height:2.4rem;vertical-align:middle;width:2rem}[dir=ltr] .md-source__icon svg{margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem}.md-source__icon svg{margin-top:.6rem}[dir=ltr] .md-source__icon+.md-source__repository{padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{padding-right:2rem}[dir=ltr] .md-source__icon+.md-source__repository{margin-left:-2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem}[dir=ltr] .md-source__repository{margin-left:.6rem}[dir=rtl] .md-source__repository{margin-right:.6rem}.md-source__repository{display:inline-block;max-width:calc(100% - 1.2rem);overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.md-source__facts{display:flex;font-size:.55rem;gap:.4rem;list-style-type:none;margin:.1rem 0 0;opacity:.75;overflow:hidden;padding:0;width:100%}.md-source__repository--active .md-source__facts{animation:facts .25s ease-in}.md-source__fact{overflow:hidden;text-overflow:ellipsis}.md-source__repository--active .md-source__fact{animation:fact .4s ease-out}[dir=ltr] .md-source__fact:before{margin-right:.1rem}[dir=rtl] .md-source__fact:before{margin-left:.1rem}.md-source__fact:before{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-top;width:.6rem}.md-source__fact:nth-child(1n+2){flex-shrink:0}.md-source__fact--version:before{-webkit-mask-image:var(--md-source-version-icon);mask-image:var(--md-source-version-icon)}.md-source__fact--stars:before{-webkit-mask-image:var(--md-source-stars-icon);mask-image:var(--md-source-stars-icon)}.md-source__fact--forks:before{-webkit-mask-image:var(--md-source-forks-icon);mask-image:var(--md-source-forks-icon)}.md-source__fact--repositories:before{-webkit-mask-image:var(--md-source-repositories-icon);mask-image:var(--md-source-repositories-icon)}.md-source-file{margin:1em 0}[dir=ltr] .md-source-file__fact{margin-right:.6rem}[dir=rtl] .md-source-file__fact{margin-left:.6rem}.md-source-file__fact{align-items:center;color:var(--md-default-fg-color--light);display:inline-flex;font-size:.68rem;gap:.3rem}.md-source-file__fact .md-icon{flex-shrink:0;margin-bottom:.05rem}[dir=ltr] .md-source-file__fact .md-author{float:left}[dir=rtl] .md-source-file__fact .md-author{float:right}.md-source-file__fact .md-author{margin-right:.2rem}.md-source-file__fact svg{width:.9rem}:root{--md-status:url('data:image/svg+xml;charset=utf-8,');--md-status--new:url('data:image/svg+xml;charset=utf-8,');--md-status--deprecated:url('data:image/svg+xml;charset=utf-8,');--md-status--encrypted:url('data:image/svg+xml;charset=utf-8,')}.md-status:after{background-color:var(--md-default-fg-color--light);content:"";display:inline-block;height:1.125em;-webkit-mask-image:var(--md-status);mask-image:var(--md-status);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;vertical-align:text-bottom;width:1.125em}.md-status:hover:after{background-color:currentcolor}.md-status--new:after{-webkit-mask-image:var(--md-status--new);mask-image:var(--md-status--new)}.md-status--deprecated:after{-webkit-mask-image:var(--md-status--deprecated);mask-image:var(--md-status--deprecated)}.md-status--encrypted:after{-webkit-mask-image:var(--md-status--encrypted);mask-image:var(--md-status--encrypted)}.md-tabs{background-color:var(--md-primary-fg-color);color:var(--md-primary-bg-color);display:block;line-height:1.3;overflow:auto;width:100%;z-index:3}@media print{.md-tabs{display:none}}@media screen and (max-width:76.234375em){.md-tabs{display:none}}.md-tabs[hidden]{pointer-events:none}[dir=ltr] .md-tabs__list{margin-left:.2rem}[dir=rtl] .md-tabs__list{margin-right:.2rem}.md-tabs__list{contain:content;display:flex;list-style:none;margin:0;overflow:auto;padding:0;scrollbar-width:none;white-space:nowrap}.md-tabs__list::-webkit-scrollbar{display:none}.md-tabs__item{height:2.4rem;padding-left:.6rem;padding-right:.6rem}.md-tabs__item--active .md-tabs__link{color:inherit;opacity:1}.md-tabs__link{-webkit-backface-visibility:hidden;backface-visibility:hidden;display:flex;font-size:.7rem;margin-top:.8rem;opacity:.7;outline-color:var(--md-accent-fg-color);outline-offset:.2rem;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s}.md-tabs__link:focus,.md-tabs__link:hover{color:inherit;opacity:1}[dir=ltr] .md-tabs__link svg{margin-right:.4rem}[dir=rtl] .md-tabs__link svg{margin-left:.4rem}.md-tabs__link svg{fill:currentcolor;height:1.3em}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:20ms}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:40ms}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:60ms}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:80ms}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[hidden] .md-tabs__link{opacity:0;transform:translateY(50%);transition:transform 0ms .1s,opacity .1s}:root{--md-tag-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .md-tags:not([hidden]){display:inline-flex;flex-wrap:wrap;gap:.5em;margin-bottom:.75em;margin-top:-.125em}.md-typeset .md-tag{align-items:center;background:var(--md-default-fg-color--lightest);border-radius:2.4rem;display:inline-flex;font-size:.64rem;font-size:min(.8em,.64rem);font-weight:700;gap:.5em;letter-spacing:normal;line-height:1.6;padding:.3125em .78125em}.md-typeset .md-tag[href]{-webkit-tap-highlight-color:transparent;color:inherit;outline:none;transition:color 125ms,background-color 125ms}.md-typeset .md-tag[href]:focus,.md-typeset .md-tag[href]:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}[id]>.md-typeset .md-tag{vertical-align:text-top}.md-typeset .md-tag-shadow{opacity:.5}.md-typeset .md-tag-icon:before{background-color:var(--md-default-fg-color--lighter);content:"";display:inline-block;height:1.2em;-webkit-mask-image:var(--md-tag-icon);mask-image:var(--md-tag-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color 125ms;vertical-align:text-bottom;width:1.2em}.md-typeset .md-tag-icon[href]:focus:before,.md-typeset .md-tag-icon[href]:hover:before{background-color:var(--md-accent-bg-color)}@keyframes pulse{0%{transform:scale(.95)}75%{transform:scale(1)}to{transform:scale(.95)}}:root{--md-annotation-bg-icon:url('data:image/svg+xml;charset=utf-8,');--md-annotation-icon:url('data:image/svg+xml;charset=utf-8,')}.md-tooltip{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);font-family:var(--md-text-font-family);left:clamp(var(--md-tooltip-0,0rem) + .8rem,var(--md-tooltip-x),100vw + var(--md-tooltip-0,0rem) + .8rem - var(--md-tooltip-width) - 2 * .8rem);max-width:calc(100vw - 1.6rem);opacity:0;position:absolute;top:var(--md-tooltip-y);transform:translateY(-.4rem);transition:transform 0ms .25s,opacity .25s,z-index .25s;width:var(--md-tooltip-width);z-index:0}.md-tooltip--active{opacity:1;transform:translateY(0);transition:transform .25s cubic-bezier(.1,.7,.1,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip--inline{font-weight:700;-webkit-user-select:none;user-select:none;width:auto}.md-tooltip--inline:not(.md-tooltip--active){transform:translateY(.2rem) scale(.9)}.md-tooltip--inline .md-tooltip__inner{font-size:.5rem;padding:.2rem .4rem}[hidden]+.md-tooltip--inline{display:none}.focus-visible>.md-tooltip,.md-tooltip:target{outline:var(--md-accent-fg-color) auto}.md-tooltip__inner{font-size:.64rem;padding:.8rem}.md-tooltip__inner.md-typeset>:first-child{margin-top:0}.md-tooltip__inner.md-typeset>:last-child{margin-bottom:0}.md-annotation{font-style:normal;font-weight:400;outline:none;text-align:initial;vertical-align:text-bottom;white-space:normal}[dir=rtl] .md-annotation{direction:rtl}code .md-annotation{font-family:var(--md-code-font-family);font-size:inherit}.md-annotation:not([hidden]){display:inline-block;line-height:1.25}.md-annotation__index{border-radius:.01px;cursor:pointer;display:inline-block;margin-left:.4ch;margin-right:.4ch;outline:none;overflow:hidden;position:relative;-webkit-user-select:none;user-select:none;vertical-align:text-top;z-index:0}.md-annotation .md-annotation__index{transition:z-index .25s}@media screen{.md-annotation__index{width:2.2ch}[data-md-visible]>.md-annotation__index{animation:pulse 2s infinite}.md-annotation__index:before{background:var(--md-default-bg-color);-webkit-mask-image:var(--md-annotation-bg-icon);mask-image:var(--md-annotation-bg-icon)}.md-annotation__index:after,.md-annotation__index:before{content:"";height:2.2ch;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:-.1ch;width:2.2ch;z-index:-1}.md-annotation__index:after{background-color:var(--md-default-fg-color--lighter);-webkit-mask-image:var(--md-annotation-icon);mask-image:var(--md-annotation-icon);transform:scale(1.0001);transition:background-color .25s,transform .25s}.md-tooltip--active+.md-annotation__index:after{transform:rotate(45deg)}.md-tooltip--active+.md-annotation__index:after,:hover>.md-annotation__index:after{background-color:var(--md-accent-fg-color)}}.md-tooltip--active+.md-annotation__index{animation-play-state:paused;transition-duration:0ms;z-index:2}.md-annotation__index [data-md-annotation-id]{display:inline-block}@media print{.md-annotation__index [data-md-annotation-id]{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);font-weight:700;padding:0 .6ch;white-space:nowrap}.md-annotation__index [data-md-annotation-id]:after{content:attr(data-md-annotation-id)}}.md-typeset .md-annotation-list{counter-reset:xxx;list-style:none}.md-typeset .md-annotation-list li{position:relative}[dir=ltr] .md-typeset .md-annotation-list li:before{left:-2.125em}[dir=rtl] .md-typeset .md-annotation-list li:before{right:-2.125em}.md-typeset .md-annotation-list li:before{background:var(--md-default-fg-color--lighter);border-radius:2ch;color:var(--md-default-bg-color);content:counter(xxx);counter-increment:xxx;font-size:.8875em;font-weight:700;height:2ch;line-height:1.25;min-width:2ch;padding:0 .6ch;position:absolute;text-align:center;top:.25em}:root{--md-tooltip-width:20rem;--md-tooltip-tail:0.3rem}.md-tooltip2{-webkit-backface-visibility:hidden;backface-visibility:hidden;color:var(--md-default-fg-color);font-family:var(--md-text-font-family);opacity:0;pointer-events:none;position:absolute;top:calc(var(--md-tooltip-host-y) + var(--md-tooltip-y));transform:translateY(-.4rem);transform-origin:calc(var(--md-tooltip-host-x) + var(--md-tooltip-x)) 0;transition:transform 0ms .25s,opacity .25s,z-index .25s;width:100%;z-index:0}.md-tooltip2:before{border-left:var(--md-tooltip-tail) solid #0000;border-right:var(--md-tooltip-tail) solid #0000;content:"";display:block;left:clamp(1.5 * .8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-tail),100vw - 2 * var(--md-tooltip-tail) - 1.5 * .8rem);position:absolute;z-index:1}.md-tooltip2--top:before{border-top:var(--md-tooltip-tail) solid var(--md-default-bg-color);bottom:calc(var(--md-tooltip-tail)*-1 + .025rem);filter:drop-shadow(0 1px 0 hsla(0,0%,0%,.05))}.md-tooltip2--bottom:before{border-bottom:var(--md-tooltip-tail) solid var(--md-default-bg-color);filter:drop-shadow(0 -1px 0 hsla(0,0%,0%,.05));top:calc(var(--md-tooltip-tail)*-1 + .025rem)}.md-tooltip2--active{opacity:1;transform:translateY(0);transition:transform .4s cubic-bezier(0,1,.5,1),opacity .25s,z-index 0ms;z-index:2}.md-tooltip2__inner{scrollbar-gutter:stable;background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);left:clamp(.8rem,var(--md-tooltip-host-x) - .8rem,100vw - var(--md-tooltip-width) - .8rem);max-height:40vh;max-width:calc(100vw - 1.6rem);position:relative;scrollbar-width:thin}.md-tooltip2__inner::-webkit-scrollbar{height:.2rem;width:.2rem}.md-tooltip2__inner::-webkit-scrollbar-thumb{background-color:var(--md-default-fg-color--lighter)}.md-tooltip2__inner::-webkit-scrollbar-thumb:hover{background-color:var(--md-accent-fg-color)}[role=dialog]>.md-tooltip2__inner{font-size:.64rem;overflow:auto;padding:0 .8rem;pointer-events:auto;width:var(--md-tooltip-width)}[role=dialog]>.md-tooltip2__inner:after,[role=dialog]>.md-tooltip2__inner:before{content:"";display:block;height:.8rem;position:sticky;width:100%;z-index:10}[role=dialog]>.md-tooltip2__inner:before{background:linear-gradient(var(--md-default-bg-color),#0000 75%);top:0}[role=dialog]>.md-tooltip2__inner:after{background:linear-gradient(#0000,var(--md-default-bg-color) 75%);bottom:0}[role=tooltip]>.md-tooltip2__inner{font-size:.5rem;font-weight:700;left:clamp(.8rem,var(--md-tooltip-host-x) + var(--md-tooltip-x) - var(--md-tooltip-width)/2,100vw - var(--md-tooltip-width) - .8rem);max-width:min(100vw - 2 * .8rem,400px);padding:.2rem .4rem;-webkit-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.md-tooltip2__inner.md-typeset>:first-child{margin-top:0}.md-tooltip2__inner.md-typeset>:last-child{margin-bottom:0}[dir=ltr] .md-top{margin-left:50%}[dir=rtl] .md-top{margin-right:50%}.md-top{background-color:var(--md-default-bg-color);border-radius:1.6rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color--light);cursor:pointer;display:block;font-size:.7rem;outline:none;padding:.4rem .8rem;position:fixed;top:3.2rem;transform:translate(-50%);transition:color 125ms,background-color 125ms,transform 125ms cubic-bezier(.4,0,.2,1),opacity 125ms;z-index:2}@media print{.md-top{display:none}}[dir=rtl] .md-top{transform:translate(50%)}.md-top[hidden]{opacity:0;pointer-events:none;transform:translate(-50%,.2rem);transition-duration:0ms}[dir=rtl] .md-top[hidden]{transform:translate(50%,.2rem)}.md-top:focus,.md-top:hover{background-color:var(--md-accent-fg-color);color:var(--md-accent-bg-color)}.md-top svg{display:inline-block;vertical-align:-.5em}@keyframes hoverfix{0%{pointer-events:none}}:root{--md-version-icon:url('data:image/svg+xml;charset=utf-8,')}.md-version{flex-shrink:0;font-size:.8rem;height:2.4rem}[dir=ltr] .md-version__current{margin-left:1.4rem;margin-right:.4rem}[dir=rtl] .md-version__current{margin-left:.4rem;margin-right:1.4rem}.md-version__current{color:inherit;cursor:pointer;outline:none;position:relative;top:.05rem}[dir=ltr] .md-version__current:after{margin-left:.4rem}[dir=rtl] .md-version__current:after{margin-right:.4rem}.md-version__current:after{background-color:currentcolor;content:"";display:inline-block;height:.6rem;-webkit-mask-image:var(--md-version-icon);mask-image:var(--md-version-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.4rem}.md-version__alias{margin-left:.3rem;opacity:.7}.md-version__list{background-color:var(--md-default-bg-color);border-radius:.1rem;box-shadow:var(--md-shadow-z2);color:var(--md-default-fg-color);list-style-type:none;margin:.2rem .8rem;max-height:0;opacity:0;overflow:auto;padding:0;position:absolute;scroll-snap-type:y mandatory;top:.15rem;transition:max-height 0ms .5s,opacity .25s .25s;z-index:3}.md-version:focus-within .md-version__list,.md-version:hover .md-version__list{max-height:10rem;opacity:1;transition:max-height 0ms,opacity .25s}@media (hover:none),(pointer:coarse){.md-version:hover .md-version__list{animation:hoverfix .25s forwards}.md-version:focus-within .md-version__list{animation:none}}.md-version__item{line-height:1.8rem}[dir=ltr] .md-version__link{padding-left:.6rem;padding-right:1.2rem}[dir=rtl] .md-version__link{padding-left:1.2rem;padding-right:.6rem}.md-version__link{cursor:pointer;display:block;outline:none;scroll-snap-align:start;transition:color .25s,background-color .25s;white-space:nowrap;width:100%}.md-version__link:focus,.md-version__link:hover{color:var(--md-accent-fg-color)}.md-version__link:focus{background-color:var(--md-default-fg-color--lightest)}:root{--md-admonition-icon--note:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--abstract:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--info:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--tip:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--success:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--question:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--warning:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--failure:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--danger:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--bug:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--example:url('data:image/svg+xml;charset=utf-8,');--md-admonition-icon--quote:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .admonition,.md-typeset details{background-color:var(--md-admonition-bg-color);border:.075rem solid #448aff;border-radius:.2rem;box-shadow:var(--md-shadow-z1);color:var(--md-admonition-fg-color);display:flow-root;font-size:.64rem;margin:1.5625em 0;padding:0 .6rem;page-break-inside:avoid;transition:box-shadow 125ms}@media print{.md-typeset .admonition,.md-typeset details{box-shadow:none}}.md-typeset .admonition:focus-within,.md-typeset details:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .admonition>*,.md-typeset details>*{box-sizing:border-box}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin-bottom:1em;margin-top:1em}.md-typeset .admonition .md-typeset__scrollwrap,.md-typeset details .md-typeset__scrollwrap{margin:1em -.6rem}.md-typeset .admonition .md-typeset__table,.md-typeset details .md-typeset__table{padding:0 .6rem}.md-typeset .admonition>.tabbed-set:only-child,.md-typeset details>.tabbed-set:only-child{margin-top:0}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{padding-left:2rem;padding-right:.6rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{padding-left:.6rem;padding-right:2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-left-width:.2rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-right-width:.2rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset .admonition-title,[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset .admonition-title,[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset .admonition-title,.md-typeset summary{background-color:#448aff1a;border:none;font-weight:700;margin:0 -.6rem;padding-bottom:.4rem;padding-top:.4rem;position:relative}html .md-typeset .admonition-title:last-child,html .md-typeset summary:last-child{margin-bottom:0}[dir=ltr] .md-typeset .admonition-title:before,[dir=ltr] .md-typeset summary:before{left:.6rem}[dir=rtl] .md-typeset .admonition-title:before,[dir=rtl] .md-typeset summary:before{right:.6rem}.md-typeset .admonition-title:before,.md-typeset summary:before{background-color:#448aff;content:"";height:1rem;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;width:1rem}.md-typeset .admonition-title code,.md-typeset summary code{box-shadow:0 0 0 .05rem var(--md-default-fg-color--lightest)}.md-typeset .admonition.note,.md-typeset details.note{border-color:#448aff}.md-typeset .admonition.note:focus-within,.md-typeset details.note:focus-within{box-shadow:0 0 0 .2rem #448aff1a}.md-typeset .note>.admonition-title,.md-typeset .note>summary{background-color:#448aff1a}.md-typeset .note>.admonition-title:before,.md-typeset .note>summary:before{background-color:#448aff;-webkit-mask-image:var(--md-admonition-icon--note);mask-image:var(--md-admonition-icon--note)}.md-typeset .note>.admonition-title:after,.md-typeset .note>summary:after{color:#448aff}.md-typeset .admonition.abstract,.md-typeset details.abstract{border-color:#00b0ff}.md-typeset .admonition.abstract:focus-within,.md-typeset details.abstract:focus-within{box-shadow:0 0 0 .2rem #00b0ff1a}.md-typeset .abstract>.admonition-title,.md-typeset .abstract>summary{background-color:#00b0ff1a}.md-typeset .abstract>.admonition-title:before,.md-typeset .abstract>summary:before{background-color:#00b0ff;-webkit-mask-image:var(--md-admonition-icon--abstract);mask-image:var(--md-admonition-icon--abstract)}.md-typeset .abstract>.admonition-title:after,.md-typeset .abstract>summary:after{color:#00b0ff}.md-typeset .admonition.info,.md-typeset details.info{border-color:#00b8d4}.md-typeset .admonition.info:focus-within,.md-typeset details.info:focus-within{box-shadow:0 0 0 .2rem #00b8d41a}.md-typeset .info>.admonition-title,.md-typeset .info>summary{background-color:#00b8d41a}.md-typeset .info>.admonition-title:before,.md-typeset .info>summary:before{background-color:#00b8d4;-webkit-mask-image:var(--md-admonition-icon--info);mask-image:var(--md-admonition-icon--info)}.md-typeset .info>.admonition-title:after,.md-typeset .info>summary:after{color:#00b8d4}.md-typeset .admonition.tip,.md-typeset details.tip{border-color:#00bfa5}.md-typeset .admonition.tip:focus-within,.md-typeset details.tip:focus-within{box-shadow:0 0 0 .2rem #00bfa51a}.md-typeset .tip>.admonition-title,.md-typeset .tip>summary{background-color:#00bfa51a}.md-typeset .tip>.admonition-title:before,.md-typeset .tip>summary:before{background-color:#00bfa5;-webkit-mask-image:var(--md-admonition-icon--tip);mask-image:var(--md-admonition-icon--tip)}.md-typeset .tip>.admonition-title:after,.md-typeset .tip>summary:after{color:#00bfa5}.md-typeset .admonition.success,.md-typeset details.success{border-color:#00c853}.md-typeset .admonition.success:focus-within,.md-typeset details.success:focus-within{box-shadow:0 0 0 .2rem #00c8531a}.md-typeset .success>.admonition-title,.md-typeset .success>summary{background-color:#00c8531a}.md-typeset .success>.admonition-title:before,.md-typeset .success>summary:before{background-color:#00c853;-webkit-mask-image:var(--md-admonition-icon--success);mask-image:var(--md-admonition-icon--success)}.md-typeset .success>.admonition-title:after,.md-typeset .success>summary:after{color:#00c853}.md-typeset .admonition.question,.md-typeset details.question{border-color:#64dd17}.md-typeset .admonition.question:focus-within,.md-typeset details.question:focus-within{box-shadow:0 0 0 .2rem #64dd171a}.md-typeset .question>.admonition-title,.md-typeset .question>summary{background-color:#64dd171a}.md-typeset .question>.admonition-title:before,.md-typeset .question>summary:before{background-color:#64dd17;-webkit-mask-image:var(--md-admonition-icon--question);mask-image:var(--md-admonition-icon--question)}.md-typeset .question>.admonition-title:after,.md-typeset .question>summary:after{color:#64dd17}.md-typeset .admonition.warning,.md-typeset details.warning{border-color:#ff9100}.md-typeset .admonition.warning:focus-within,.md-typeset details.warning:focus-within{box-shadow:0 0 0 .2rem #ff91001a}.md-typeset .warning>.admonition-title,.md-typeset .warning>summary{background-color:#ff91001a}.md-typeset .warning>.admonition-title:before,.md-typeset .warning>summary:before{background-color:#ff9100;-webkit-mask-image:var(--md-admonition-icon--warning);mask-image:var(--md-admonition-icon--warning)}.md-typeset .warning>.admonition-title:after,.md-typeset .warning>summary:after{color:#ff9100}.md-typeset .admonition.failure,.md-typeset details.failure{border-color:#ff5252}.md-typeset .admonition.failure:focus-within,.md-typeset details.failure:focus-within{box-shadow:0 0 0 .2rem #ff52521a}.md-typeset .failure>.admonition-title,.md-typeset .failure>summary{background-color:#ff52521a}.md-typeset .failure>.admonition-title:before,.md-typeset .failure>summary:before{background-color:#ff5252;-webkit-mask-image:var(--md-admonition-icon--failure);mask-image:var(--md-admonition-icon--failure)}.md-typeset .failure>.admonition-title:after,.md-typeset .failure>summary:after{color:#ff5252}.md-typeset .admonition.danger,.md-typeset details.danger{border-color:#ff1744}.md-typeset .admonition.danger:focus-within,.md-typeset details.danger:focus-within{box-shadow:0 0 0 .2rem #ff17441a}.md-typeset .danger>.admonition-title,.md-typeset .danger>summary{background-color:#ff17441a}.md-typeset .danger>.admonition-title:before,.md-typeset .danger>summary:before{background-color:#ff1744;-webkit-mask-image:var(--md-admonition-icon--danger);mask-image:var(--md-admonition-icon--danger)}.md-typeset .danger>.admonition-title:after,.md-typeset .danger>summary:after{color:#ff1744}.md-typeset .admonition.bug,.md-typeset details.bug{border-color:#f50057}.md-typeset .admonition.bug:focus-within,.md-typeset details.bug:focus-within{box-shadow:0 0 0 .2rem #f500571a}.md-typeset .bug>.admonition-title,.md-typeset .bug>summary{background-color:#f500571a}.md-typeset .bug>.admonition-title:before,.md-typeset .bug>summary:before{background-color:#f50057;-webkit-mask-image:var(--md-admonition-icon--bug);mask-image:var(--md-admonition-icon--bug)}.md-typeset .bug>.admonition-title:after,.md-typeset .bug>summary:after{color:#f50057}.md-typeset .admonition.example,.md-typeset details.example{border-color:#7c4dff}.md-typeset .admonition.example:focus-within,.md-typeset details.example:focus-within{box-shadow:0 0 0 .2rem #7c4dff1a}.md-typeset .example>.admonition-title,.md-typeset .example>summary{background-color:#7c4dff1a}.md-typeset .example>.admonition-title:before,.md-typeset .example>summary:before{background-color:#7c4dff;-webkit-mask-image:var(--md-admonition-icon--example);mask-image:var(--md-admonition-icon--example)}.md-typeset .example>.admonition-title:after,.md-typeset .example>summary:after{color:#7c4dff}.md-typeset .admonition.quote,.md-typeset details.quote{border-color:#9e9e9e}.md-typeset .admonition.quote:focus-within,.md-typeset details.quote:focus-within{box-shadow:0 0 0 .2rem #9e9e9e1a}.md-typeset .quote>.admonition-title,.md-typeset .quote>summary{background-color:#9e9e9e1a}.md-typeset .quote>.admonition-title:before,.md-typeset .quote>summary:before{background-color:#9e9e9e;-webkit-mask-image:var(--md-admonition-icon--quote);mask-image:var(--md-admonition-icon--quote)}.md-typeset .quote>.admonition-title:after,.md-typeset .quote>summary:after{color:#9e9e9e}:root{--md-footnotes-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .footnote{color:var(--md-default-fg-color--light);font-size:.64rem}[dir=ltr] .md-typeset .footnote>ol{margin-left:0}[dir=rtl] .md-typeset .footnote>ol{margin-right:0}.md-typeset .footnote>ol>li{transition:color 125ms}.md-typeset .footnote>ol>li:target{color:var(--md-default-fg-color)}.md-typeset .footnote>ol>li:focus-within .footnote-backref{opacity:1;transform:translateX(0);transition:none}.md-typeset .footnote>ol>li:hover .footnote-backref,.md-typeset .footnote>ol>li:target .footnote-backref{opacity:1;transform:translateX(0)}.md-typeset .footnote>ol>li>:first-child{margin-top:0}.md-typeset .footnote-ref{font-size:.75em;font-weight:700}html .md-typeset .footnote-ref{outline-offset:.1rem}.md-typeset [id^="fnref:"]:target>.footnote-ref{outline:auto}.md-typeset .footnote-backref{color:var(--md-typeset-a-color);display:inline-block;font-size:0;opacity:0;transform:translateX(.25rem);transition:color .25s,transform .25s .25s,opacity 125ms .25s;vertical-align:text-bottom}@media print{.md-typeset .footnote-backref{color:var(--md-typeset-a-color);opacity:1;transform:translateX(0)}}[dir=rtl] .md-typeset .footnote-backref{transform:translateX(-.25rem)}.md-typeset .footnote-backref:hover{color:var(--md-accent-fg-color)}.md-typeset .footnote-backref:before{background-color:currentcolor;content:"";display:inline-block;height:.8rem;-webkit-mask-image:var(--md-footnotes-icon);mask-image:var(--md-footnotes-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;width:.8rem}[dir=rtl] .md-typeset .footnote-backref:before svg{transform:scaleX(-1)}[dir=ltr] .md-typeset .headerlink{margin-left:.5rem}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem}.md-typeset .headerlink{color:var(--md-default-fg-color--lighter);display:inline-block;opacity:0;transition:color .25s,opacity 125ms}@media print{.md-typeset .headerlink{display:none}}.md-typeset .headerlink:focus,.md-typeset :hover>.headerlink,.md-typeset :target>.headerlink{opacity:1;transition:color .25s,opacity 125ms}.md-typeset .headerlink:focus,.md-typeset .headerlink:hover,.md-typeset :target>.headerlink{color:var(--md-accent-fg-color)}.md-typeset :target{--md-scroll-margin:3.6rem;--md-scroll-offset:0rem;scroll-margin-top:calc(var(--md-scroll-margin) - var(--md-scroll-offset))}@media screen and (min-width:76.25em){.md-header--lifted~.md-container .md-typeset :target{--md-scroll-margin:6rem}}.md-typeset h1:target,.md-typeset h2:target,.md-typeset h3:target{--md-scroll-offset:0.2rem}.md-typeset h4:target{--md-scroll-offset:0.15rem}.md-typeset div.arithmatex{overflow:auto}@media screen and (max-width:44.984375em){.md-typeset div.arithmatex{margin:0 -.8rem}.md-typeset div.arithmatex>*{width:min-content}}.md-typeset div.arithmatex>*{margin-left:auto!important;margin-right:auto!important;padding:0 .8rem;touch-action:auto}.md-typeset div.arithmatex>* mjx-container{margin:0!important}.md-typeset div.arithmatex mjx-assistive-mml{height:0}.md-typeset del.critic{background-color:var(--md-typeset-del-color)}.md-typeset del.critic,.md-typeset ins.critic{-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset ins.critic{background-color:var(--md-typeset-ins-color)}.md-typeset .critic.comment{-webkit-box-decoration-break:clone;box-decoration-break:clone;color:var(--md-code-hl-comment-color)}.md-typeset .critic.comment:before{content:"/* "}.md-typeset .critic.comment:after{content:" */"}.md-typeset .critic.block{box-shadow:none;display:block;margin:1em 0;overflow:auto;padding-left:.8rem;padding-right:.8rem}.md-typeset .critic.block>:first-child{margin-top:.5em}.md-typeset .critic.block>:last-child{margin-bottom:.5em}:root{--md-details-icon:url('data:image/svg+xml;charset=utf-8,')}.md-typeset details{display:flow-root;overflow:visible;padding-top:0}.md-typeset details[open]>summary:after{transform:rotate(90deg)}.md-typeset details:not([open]){box-shadow:none;padding-bottom:0}.md-typeset details:not([open])>summary{border-radius:.1rem}[dir=ltr] .md-typeset summary{padding-right:1.8rem}[dir=rtl] .md-typeset summary{padding-left:1.8rem}[dir=ltr] .md-typeset summary{border-top-left-radius:.1rem}[dir=ltr] .md-typeset summary,[dir=rtl] .md-typeset summary{border-top-right-radius:.1rem}[dir=rtl] .md-typeset summary{border-top-left-radius:.1rem}.md-typeset summary{cursor:pointer;display:block;min-height:1rem;overflow:hidden}.md-typeset summary.focus-visible{outline-color:var(--md-accent-fg-color);outline-offset:.2rem}.md-typeset summary:not(.focus-visible){-webkit-tap-highlight-color:transparent;outline:none}[dir=ltr] .md-typeset summary:after{right:.4rem}[dir=rtl] .md-typeset summary:after{left:.4rem}.md-typeset summary:after{background-color:currentcolor;content:"";height:1rem;-webkit-mask-image:var(--md-details-icon);mask-image:var(--md-details-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.625em;transform:rotate(0deg);transition:transform .25s;width:1rem}[dir=rtl] .md-typeset summary:after{transform:rotate(180deg)}.md-typeset summary::marker{display:none}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset .emojione,.md-typeset .gemoji,.md-typeset .twemoji{--md-icon-size:1.125em;display:inline-flex;height:var(--md-icon-size);vertical-align:text-top}.md-typeset .emojione svg,.md-typeset .gemoji svg,.md-typeset .twemoji svg{fill:currentcolor;max-height:100%;width:var(--md-icon-size)}.md-typeset .lg,.md-typeset .xl,.md-typeset .xxl,.md-typeset .xxxl{vertical-align:text-bottom}.md-typeset .middle{vertical-align:middle}.md-typeset .lg{--md-icon-size:1.5em}.md-typeset .xl{--md-icon-size:2.25em}.md-typeset .xxl{--md-icon-size:3em}.md-typeset .xxxl{--md-icon-size:4em}.highlight .o,.highlight .ow{color:var(--md-code-hl-operator-color)}.highlight .p{color:var(--md-code-hl-punctuation-color)}.highlight .cpf,.highlight .l,.highlight .s,.highlight .s1,.highlight .s2,.highlight .sb,.highlight .sc,.highlight .si,.highlight .ss{color:var(--md-code-hl-string-color)}.highlight .cp,.highlight .se,.highlight .sh,.highlight .sr,.highlight .sx{color:var(--md-code-hl-special-color)}.highlight .il,.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:var(--md-code-hl-number-color)}.highlight .k,.highlight .kd,.highlight .kn,.highlight .kp,.highlight .kr,.highlight .kt{color:var(--md-code-hl-keyword-color)}.highlight .kc,.highlight .n{color:var(--md-code-hl-name-color)}.highlight .bp,.highlight .nb,.highlight .no{color:var(--md-code-hl-constant-color)}.highlight .nc,.highlight .ne,.highlight .nf,.highlight .nn{color:var(--md-code-hl-function-color)}.highlight .nd,.highlight .ni,.highlight .nl,.highlight .nt{color:var(--md-code-hl-keyword-color)}.highlight .c,.highlight .c1,.highlight .ch,.highlight .cm,.highlight .cs,.highlight .sd{color:var(--md-code-hl-comment-color)}.highlight .na,.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi{color:var(--md-code-hl-variable-color)}.highlight .ge,.highlight .gh,.highlight .go,.highlight .gp,.highlight .gr,.highlight .gs,.highlight .gt,.highlight .gu{color:var(--md-code-hl-generic-color)}.highlight .gd,.highlight .gi{border-radius:.1rem;margin:0 -.125em;padding:0 .125em}.highlight .gd{background-color:var(--md-typeset-del-color)}.highlight .gi{background-color:var(--md-typeset-ins-color)}.highlight .hll{background-color:var(--md-code-hl-color--light);box-shadow:2px 0 0 0 var(--md-code-hl-color) inset;display:block;margin:0 -1.1764705882em;padding:0 1.1764705882em}.highlight span.filename{background-color:var(--md-code-bg-color);border-bottom:.05rem solid var(--md-default-fg-color--lightest);border-top-left-radius:.1rem;border-top-right-radius:.1rem;display:flow-root;font-size:.85em;font-weight:700;margin-top:1em;padding:.6617647059em 1.1764705882em;position:relative}.highlight span.filename+pre{margin-top:0}.highlight span.filename+pre>code{border-top-left-radius:0;border-top-right-radius:0}.highlight [data-linenos]:before{background-color:var(--md-code-bg-color);box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset;color:var(--md-default-fg-color--light);content:attr(data-linenos);float:left;left:-1.1764705882em;margin-left:-1.1764705882em;margin-right:1.1764705882em;padding-left:1.1764705882em;position:sticky;-webkit-user-select:none;user-select:none;z-index:3}.highlight code a[id]{position:absolute;visibility:hidden}.highlight code[data-md-copying]{display:initial}.highlight code[data-md-copying] .hll{display:contents}.highlight code[data-md-copying] .md-annotation{display:none}.highlighttable{display:flow-root}.highlighttable tbody,.highlighttable td{display:block;padding:0}.highlighttable tr{display:flex}.highlighttable pre{margin:0}.highlighttable th.filename{flex-grow:1;padding:0;text-align:left}.highlighttable th.filename span.filename{margin-top:0}.highlighttable .linenos{background-color:var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-top-left-radius:.1rem;font-size:.85em;padding:.7720588235em 0 .7720588235em 1.1764705882em;-webkit-user-select:none;user-select:none}.highlighttable .linenodiv{box-shadow:-.05rem 0 var(--md-default-fg-color--lightest) inset}.highlighttable .linenodiv pre{color:var(--md-default-fg-color--light);text-align:right}.highlighttable .linenodiv span[class]{padding-right:.5882352941em}.highlighttable .code{flex:1;min-width:0}.linenodiv a{color:inherit}.md-typeset .highlighttable{direction:ltr;margin:1em 0}.md-typeset .highlighttable>tbody>tr>.code>div>pre>code{border-bottom-left-radius:0;border-top-left-radius:0}.md-typeset .highlight+.result{border:.05rem solid var(--md-code-bg-color);border-bottom-left-radius:.1rem;border-bottom-right-radius:.1rem;border-top-width:.1rem;margin-top:-1.125em;overflow:visible;padding:0 1em}.md-typeset .highlight+.result:after{clear:both;content:"";display:block}@media screen and (max-width:44.984375em){.md-content__inner>.highlight{margin:1em -.8rem}.md-content__inner>.highlight>.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.code>div>pre>code,.md-content__inner>.highlight>.highlighttable>tbody>tr>.filename span.filename,.md-content__inner>.highlight>.highlighttable>tbody>tr>.linenos,.md-content__inner>.highlight>pre>code{border-radius:0}.md-content__inner>.highlight+.result{border-left-width:0;border-radius:0;border-right-width:0;margin-left:-.8rem;margin-right:-.8rem}}.md-typeset .keys kbd:after,.md-typeset .keys kbd:before{-moz-osx-font-smoothing:initial;-webkit-font-smoothing:initial;color:inherit;margin:0;position:relative}.md-typeset .keys span{color:var(--md-default-fg-color--light);padding:0 .2em}.md-typeset .keys .key-alt:before,.md-typeset .keys .key-left-alt:before,.md-typeset .keys .key-right-alt:before{content:"⎇";padding-right:.4em}.md-typeset .keys .key-command:before,.md-typeset .keys .key-left-command:before,.md-typeset .keys .key-right-command:before{content:"⌘";padding-right:.4em}.md-typeset .keys .key-control:before,.md-typeset .keys .key-left-control:before,.md-typeset .keys .key-right-control:before{content:"⌃";padding-right:.4em}.md-typeset .keys .key-left-meta:before,.md-typeset .keys .key-meta:before,.md-typeset .keys .key-right-meta:before{content:"◆";padding-right:.4em}.md-typeset .keys .key-left-option:before,.md-typeset .keys .key-option:before,.md-typeset .keys .key-right-option:before{content:"⌥";padding-right:.4em}.md-typeset .keys .key-left-shift:before,.md-typeset .keys .key-right-shift:before,.md-typeset .keys .key-shift:before{content:"⇧";padding-right:.4em}.md-typeset .keys .key-left-super:before,.md-typeset .keys .key-right-super:before,.md-typeset .keys .key-super:before{content:"❖";padding-right:.4em}.md-typeset .keys .key-left-windows:before,.md-typeset .keys .key-right-windows:before,.md-typeset .keys .key-windows:before{content:"⊞";padding-right:.4em}.md-typeset .keys .key-arrow-down:before{content:"↓";padding-right:.4em}.md-typeset .keys .key-arrow-left:before{content:"←";padding-right:.4em}.md-typeset .keys .key-arrow-right:before{content:"→";padding-right:.4em}.md-typeset .keys .key-arrow-up:before{content:"↑";padding-right:.4em}.md-typeset .keys .key-backspace:before{content:"⌫";padding-right:.4em}.md-typeset .keys .key-backtab:before{content:"⇤";padding-right:.4em}.md-typeset .keys .key-caps-lock:before{content:"⇪";padding-right:.4em}.md-typeset .keys .key-clear:before{content:"⌧";padding-right:.4em}.md-typeset .keys .key-context-menu:before{content:"☰";padding-right:.4em}.md-typeset .keys .key-delete:before{content:"⌦";padding-right:.4em}.md-typeset .keys .key-eject:before{content:"⏏";padding-right:.4em}.md-typeset .keys .key-end:before{content:"⤓";padding-right:.4em}.md-typeset .keys .key-escape:before{content:"⎋";padding-right:.4em}.md-typeset .keys .key-home:before{content:"⤒";padding-right:.4em}.md-typeset .keys .key-insert:before{content:"⎀";padding-right:.4em}.md-typeset .keys .key-page-down:before{content:"⇟";padding-right:.4em}.md-typeset .keys .key-page-up:before{content:"⇞";padding-right:.4em}.md-typeset .keys .key-print-screen:before{content:"⎙";padding-right:.4em}.md-typeset .keys .key-tab:after{content:"⇥";padding-left:.4em}.md-typeset .keys .key-num-enter:after{content:"⌤";padding-left:.4em}.md-typeset .keys .key-enter:after{content:"⏎";padding-left:.4em}:root{--md-tabbed-icon--prev:url('data:image/svg+xml;charset=utf-8,');--md-tabbed-icon--next:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .tabbed-set{border-radius:.1rem;display:flex;flex-flow:column wrap;margin:1em 0;position:relative}.md-typeset .tabbed-set>input{height:0;opacity:0;position:absolute;width:0}.md-typeset .tabbed-set>input:target{--md-scroll-offset:0.625em}.md-typeset .tabbed-set>input.focus-visible~.tabbed-labels:before{background-color:var(--md-accent-fg-color)}.md-typeset .tabbed-labels{-ms-overflow-style:none;box-shadow:0 -.05rem var(--md-default-fg-color--lightest) inset;display:flex;max-width:100%;overflow:auto;scrollbar-width:none}@media print{.md-typeset .tabbed-labels{display:contents}}@media screen{.js .md-typeset .tabbed-labels{position:relative}.js .md-typeset .tabbed-labels:before{background:var(--md-default-fg-color);bottom:0;content:"";display:block;height:2px;left:0;position:absolute;transform:translateX(var(--md-indicator-x));transition:width 225ms,background-color .25s,transform .25s;transition-timing-function:cubic-bezier(.4,0,.2,1);width:var(--md-indicator-width)}}.md-typeset .tabbed-labels::-webkit-scrollbar{display:none}.md-typeset .tabbed-labels>label{border-bottom:.1rem solid #0000;border-radius:.1rem .1rem 0 0;color:var(--md-default-fg-color--light);cursor:pointer;flex-shrink:0;font-size:.64rem;font-weight:700;padding:.78125em 1.25em .625em;scroll-margin-inline-start:1rem;transition:background-color .25s,color .25s;white-space:nowrap;width:auto}@media print{.md-typeset .tabbed-labels>label:first-child{order:1}.md-typeset .tabbed-labels>label:nth-child(2){order:2}.md-typeset .tabbed-labels>label:nth-child(3){order:3}.md-typeset .tabbed-labels>label:nth-child(4){order:4}.md-typeset .tabbed-labels>label:nth-child(5){order:5}.md-typeset .tabbed-labels>label:nth-child(6){order:6}.md-typeset .tabbed-labels>label:nth-child(7){order:7}.md-typeset .tabbed-labels>label:nth-child(8){order:8}.md-typeset .tabbed-labels>label:nth-child(9){order:9}.md-typeset .tabbed-labels>label:nth-child(10){order:10}.md-typeset .tabbed-labels>label:nth-child(11){order:11}.md-typeset .tabbed-labels>label:nth-child(12){order:12}.md-typeset .tabbed-labels>label:nth-child(13){order:13}.md-typeset .tabbed-labels>label:nth-child(14){order:14}.md-typeset .tabbed-labels>label:nth-child(15){order:15}.md-typeset .tabbed-labels>label:nth-child(16){order:16}.md-typeset .tabbed-labels>label:nth-child(17){order:17}.md-typeset .tabbed-labels>label:nth-child(18){order:18}.md-typeset .tabbed-labels>label:nth-child(19){order:19}.md-typeset .tabbed-labels>label:nth-child(20){order:20}}.md-typeset .tabbed-labels>label:hover{color:var(--md-default-fg-color)}.md-typeset .tabbed-labels>label>[href]:first-child{color:inherit}.md-typeset .tabbed-labels--linked>label{padding:0}.md-typeset .tabbed-labels--linked>label>a{display:block;padding:.78125em 1.25em .625em}.md-typeset .tabbed-content{width:100%}@media print{.md-typeset .tabbed-content{display:contents}}.md-typeset .tabbed-block{display:none}@media print{.md-typeset .tabbed-block{display:block}.md-typeset .tabbed-block:first-child{order:1}.md-typeset .tabbed-block:nth-child(2){order:2}.md-typeset .tabbed-block:nth-child(3){order:3}.md-typeset .tabbed-block:nth-child(4){order:4}.md-typeset .tabbed-block:nth-child(5){order:5}.md-typeset .tabbed-block:nth-child(6){order:6}.md-typeset .tabbed-block:nth-child(7){order:7}.md-typeset .tabbed-block:nth-child(8){order:8}.md-typeset .tabbed-block:nth-child(9){order:9}.md-typeset .tabbed-block:nth-child(10){order:10}.md-typeset .tabbed-block:nth-child(11){order:11}.md-typeset .tabbed-block:nth-child(12){order:12}.md-typeset .tabbed-block:nth-child(13){order:13}.md-typeset .tabbed-block:nth-child(14){order:14}.md-typeset .tabbed-block:nth-child(15){order:15}.md-typeset .tabbed-block:nth-child(16){order:16}.md-typeset .tabbed-block:nth-child(17){order:17}.md-typeset .tabbed-block:nth-child(18){order:18}.md-typeset .tabbed-block:nth-child(19){order:19}.md-typeset .tabbed-block:nth-child(20){order:20}}.md-typeset .tabbed-block>.highlight:first-child>pre,.md-typeset .tabbed-block>pre:first-child{margin:0}.md-typeset .tabbed-block>.highlight:first-child>pre>code,.md-typeset .tabbed-block>pre:first-child>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child>.filename{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable{margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.filename span.filename,.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.linenos{border-top-left-radius:0;border-top-right-radius:0;margin:0}.md-typeset .tabbed-block>.highlight:first-child>.highlighttable>tbody>tr>.code>div>pre>code{border-top-left-radius:0;border-top-right-radius:0}.md-typeset .tabbed-block>.highlight:first-child+.result{margin-top:-.125em}.md-typeset .tabbed-block>.tabbed-set{margin:0}.md-typeset .tabbed-button{align-self:center;border-radius:100%;color:var(--md-default-fg-color--light);cursor:pointer;display:block;height:.9rem;margin-top:.1rem;pointer-events:auto;transition:background-color .25s;width:.9rem}.md-typeset .tabbed-button:hover{background-color:var(--md-accent-fg-color--transparent);color:var(--md-accent-fg-color)}.md-typeset .tabbed-button:after{background-color:currentcolor;content:"";display:block;height:100%;-webkit-mask-image:var(--md-tabbed-icon--prev);mask-image:var(--md-tabbed-icon--prev);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;transition:background-color .25s,transform .25s;width:100%}.md-typeset .tabbed-control{background:linear-gradient(to right,var(--md-default-bg-color) 60%,#0000);display:flex;height:1.9rem;justify-content:start;pointer-events:none;position:absolute;transition:opacity 125ms;width:1.2rem}[dir=rtl] .md-typeset .tabbed-control{transform:rotate(180deg)}.md-typeset .tabbed-control[hidden]{opacity:0}.md-typeset .tabbed-control--next{background:linear-gradient(to left,var(--md-default-bg-color) 60%,#0000);justify-content:end;right:0}.md-typeset .tabbed-control--next .tabbed-button:after{-webkit-mask-image:var(--md-tabbed-icon--next);mask-image:var(--md-tabbed-icon--next)}@media screen and (max-width:44.984375em){[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels{padding-right:.8rem}.md-content__inner>.tabbed-set .tabbed-labels{margin:0 -.8rem;max-width:100vw;scroll-padding-inline-start:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels:after{padding-left:.8rem}.md-content__inner>.tabbed-set .tabbed-labels:after{content:""}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-left:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{padding-right:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-left:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{margin-right:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--prev{width:2rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-right:.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{padding-left:.8rem}[dir=ltr] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-right:-.8rem}[dir=rtl] .md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{margin-left:-.8rem}.md-content__inner>.tabbed-set .tabbed-labels~.tabbed-control--next{width:2rem}}@media screen{.md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){color:var(--md-default-fg-color)}.md-typeset .no-js .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset .no-js .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset .no-js .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset .no-js .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset .no-js .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset .no-js .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset .no-js .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset .no-js .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset .no-js .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset .no-js .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset .no-js .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset .no-js .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset .no-js .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset .no-js .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset .no-js .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset .no-js .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset .no-js .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset .no-js .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset .no-js .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset .no-js .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.md-typeset [role=dialog] .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.md-typeset [role=dialog] .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.md-typeset [role=dialog] .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.md-typeset [role=dialog] .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.md-typeset [role=dialog] .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.md-typeset [role=dialog] .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.md-typeset [role=dialog] .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.md-typeset [role=dialog] .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.md-typeset [role=dialog] .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.md-typeset [role=dialog] .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.md-typeset [role=dialog] .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.md-typeset [role=dialog] .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.md-typeset [role=dialog] .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.md-typeset [role=dialog] .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.md-typeset [role=dialog] .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.md-typeset [role=dialog] .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.md-typeset [role=dialog] .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.md-typeset [role=dialog] .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.md-typeset [role=dialog] .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.md-typeset [role=dialog] .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),.no-js .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,.no-js .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),.no-js .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),.no-js .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),.no-js .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),.no-js .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),.no-js .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),.no-js .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),.no-js .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),.no-js .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),.no-js .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),.no-js .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),.no-js .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),.no-js .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),.no-js .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),.no-js .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),.no-js .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),.no-js .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),.no-js .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),.no-js .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9),[role=dialog] .md-typeset .tabbed-set>input:first-child:checked~.tabbed-labels>:first-child,[role=dialog] .md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-labels>:nth-child(10),[role=dialog] .md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-labels>:nth-child(11),[role=dialog] .md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-labels>:nth-child(12),[role=dialog] .md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-labels>:nth-child(13),[role=dialog] .md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-labels>:nth-child(14),[role=dialog] .md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-labels>:nth-child(15),[role=dialog] .md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-labels>:nth-child(16),[role=dialog] .md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-labels>:nth-child(17),[role=dialog] .md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-labels>:nth-child(18),[role=dialog] .md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-labels>:nth-child(19),[role=dialog] .md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-labels>:nth-child(2),[role=dialog] .md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-labels>:nth-child(20),[role=dialog] .md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-labels>:nth-child(3),[role=dialog] .md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-labels>:nth-child(4),[role=dialog] .md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-labels>:nth-child(5),[role=dialog] .md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-labels>:nth-child(6),[role=dialog] .md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-labels>:nth-child(7),[role=dialog] .md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-labels>:nth-child(8),[role=dialog] .md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-labels>:nth-child(9){border-color:var(--md-default-fg-color)}}.md-typeset .tabbed-set>input:first-child.focus-visible~.tabbed-labels>:first-child,.md-typeset .tabbed-set>input:nth-child(10).focus-visible~.tabbed-labels>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11).focus-visible~.tabbed-labels>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12).focus-visible~.tabbed-labels>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13).focus-visible~.tabbed-labels>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14).focus-visible~.tabbed-labels>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15).focus-visible~.tabbed-labels>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16).focus-visible~.tabbed-labels>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17).focus-visible~.tabbed-labels>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18).focus-visible~.tabbed-labels>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19).focus-visible~.tabbed-labels>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2).focus-visible~.tabbed-labels>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20).focus-visible~.tabbed-labels>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3).focus-visible~.tabbed-labels>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4).focus-visible~.tabbed-labels>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5).focus-visible~.tabbed-labels>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6).focus-visible~.tabbed-labels>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7).focus-visible~.tabbed-labels>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8).focus-visible~.tabbed-labels>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9).focus-visible~.tabbed-labels>:nth-child(9){color:var(--md-accent-fg-color)}.md-typeset .tabbed-set>input:first-child:checked~.tabbed-content>:first-child,.md-typeset .tabbed-set>input:nth-child(10):checked~.tabbed-content>:nth-child(10),.md-typeset .tabbed-set>input:nth-child(11):checked~.tabbed-content>:nth-child(11),.md-typeset .tabbed-set>input:nth-child(12):checked~.tabbed-content>:nth-child(12),.md-typeset .tabbed-set>input:nth-child(13):checked~.tabbed-content>:nth-child(13),.md-typeset .tabbed-set>input:nth-child(14):checked~.tabbed-content>:nth-child(14),.md-typeset .tabbed-set>input:nth-child(15):checked~.tabbed-content>:nth-child(15),.md-typeset .tabbed-set>input:nth-child(16):checked~.tabbed-content>:nth-child(16),.md-typeset .tabbed-set>input:nth-child(17):checked~.tabbed-content>:nth-child(17),.md-typeset .tabbed-set>input:nth-child(18):checked~.tabbed-content>:nth-child(18),.md-typeset .tabbed-set>input:nth-child(19):checked~.tabbed-content>:nth-child(19),.md-typeset .tabbed-set>input:nth-child(2):checked~.tabbed-content>:nth-child(2),.md-typeset .tabbed-set>input:nth-child(20):checked~.tabbed-content>:nth-child(20),.md-typeset .tabbed-set>input:nth-child(3):checked~.tabbed-content>:nth-child(3),.md-typeset .tabbed-set>input:nth-child(4):checked~.tabbed-content>:nth-child(4),.md-typeset .tabbed-set>input:nth-child(5):checked~.tabbed-content>:nth-child(5),.md-typeset .tabbed-set>input:nth-child(6):checked~.tabbed-content>:nth-child(6),.md-typeset .tabbed-set>input:nth-child(7):checked~.tabbed-content>:nth-child(7),.md-typeset .tabbed-set>input:nth-child(8):checked~.tabbed-content>:nth-child(8),.md-typeset .tabbed-set>input:nth-child(9):checked~.tabbed-content>:nth-child(9){display:block}:root{--md-tasklist-icon:url('data:image/svg+xml;charset=utf-8,');--md-tasklist-icon--checked:url('data:image/svg+xml;charset=utf-8,')}.md-typeset .task-list-item{list-style-type:none;position:relative}[dir=ltr] .md-typeset .task-list-item [type=checkbox]{left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}[dir=ltr] .md-typeset .task-list-indicator:before{left:-1.5em}[dir=rtl] .md-typeset .task-list-indicator:before{right:-1.5em}.md-typeset .task-list-indicator:before{background-color:var(--md-default-fg-color--lightest);content:"";height:1.25em;-webkit-mask-image:var(--md-tasklist-icon);mask-image:var(--md-tasklist-icon);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;position:absolute;top:.15em;width:1.25em}.md-typeset [type=checkbox]:checked+.task-list-indicator:before{background-color:#00e676;-webkit-mask-image:var(--md-tasklist-icon--checked);mask-image:var(--md-tasklist-icon--checked)}:root>*{--md-mermaid-font-family:var(--md-text-font-family),sans-serif;--md-mermaid-edge-color:var(--md-code-fg-color);--md-mermaid-node-bg-color:var(--md-accent-fg-color--transparent);--md-mermaid-node-fg-color:var(--md-accent-fg-color);--md-mermaid-label-bg-color:var(--md-default-bg-color);--md-mermaid-label-fg-color:var(--md-code-fg-color);--md-mermaid-sequence-actor-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actor-fg-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-actor-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-actor-line-color:var(--md-default-fg-color--lighter);--md-mermaid-sequence-actorman-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-actorman-line-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-box-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-box-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-label-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-label-fg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-loop-bg-color:var(--md-mermaid-node-bg-color);--md-mermaid-sequence-loop-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-loop-border-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-message-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-message-line-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-bg-color:var(--md-mermaid-label-bg-color);--md-mermaid-sequence-note-fg-color:var(--md-mermaid-edge-color);--md-mermaid-sequence-note-border-color:var(--md-mermaid-label-fg-color);--md-mermaid-sequence-number-bg-color:var(--md-mermaid-node-fg-color);--md-mermaid-sequence-number-fg-color:var(--md-accent-bg-color)}.mermaid{line-height:normal;margin:1em 0}.md-typeset .grid{grid-gap:.4rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));margin:1em 0}.md-typeset .grid.cards>ol,.md-typeset .grid.cards>ul{display:contents}.md-typeset .grid.cards>ol>li,.md-typeset .grid.cards>ul>li,.md-typeset .grid>.card{border:.05rem solid var(--md-default-fg-color--lightest);border-radius:.1rem;display:block;margin:0;padding:.8rem;transition:border .25s,box-shadow .25s}.md-typeset .grid.cards>ol>li:focus-within,.md-typeset .grid.cards>ol>li:hover,.md-typeset .grid.cards>ul>li:focus-within,.md-typeset .grid.cards>ul>li:hover,.md-typeset .grid>.card:focus-within,.md-typeset .grid>.card:hover{border-color:#0000;box-shadow:var(--md-shadow-z2)}.md-typeset .grid.cards>ol>li>hr,.md-typeset .grid.cards>ul>li>hr,.md-typeset .grid>.card>hr{margin-bottom:1em;margin-top:1em}.md-typeset .grid.cards>ol>li>:first-child,.md-typeset .grid.cards>ul>li>:first-child,.md-typeset .grid>.card>:first-child{margin-top:0}.md-typeset .grid.cards>ol>li>:last-child,.md-typeset .grid.cards>ul>li>:last-child,.md-typeset .grid>.card>:last-child{margin-bottom:0}.md-typeset .grid>*,.md-typeset .grid>.admonition,.md-typeset .grid>.highlight>*,.md-typeset .grid>.highlighttable,.md-typeset .grid>.md-typeset details,.md-typeset .grid>details,.md-typeset .grid>pre{margin-bottom:0;margin-top:0}.md-typeset .grid>.highlight>pre:only-child,.md-typeset .grid>.highlight>pre>code,.md-typeset .grid>.highlighttable,.md-typeset .grid>.highlighttable>tbody,.md-typeset .grid>.highlighttable>tbody>tr,.md-typeset .grid>.highlighttable>tbody>tr>.code,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre,.md-typeset .grid>.highlighttable>tbody>tr>.code>.highlight>pre>code{height:100%}.md-typeset .grid>.tabbed-set{margin-bottom:0;margin-top:0}@media screen and (min-width:45em){[dir=ltr] .md-typeset .inline{float:left}[dir=rtl] .md-typeset .inline{float:right}[dir=ltr] .md-typeset .inline{margin-right:.8rem}[dir=rtl] .md-typeset .inline{margin-left:.8rem}.md-typeset .inline{margin-bottom:.8rem;margin-top:0;width:11.7rem}[dir=ltr] .md-typeset .inline.end{float:right}[dir=rtl] .md-typeset .inline.end{float:left}[dir=ltr] .md-typeset .inline.end{margin-left:.8rem;margin-right:0}[dir=rtl] .md-typeset .inline.end{margin-left:0;margin-right:.8rem}} \ No newline at end of file diff --git a/assets/stylesheets/palette.ab4e12ef.min.css b/assets/stylesheets/palette.ab4e12ef.min.css new file mode 100644 index 00000000..75aaf842 --- /dev/null +++ b/assets/stylesheets/palette.ab4e12ef.min.css @@ -0,0 +1 @@ +@media screen{[data-md-color-scheme=slate]{--md-default-fg-color:hsla(var(--md-hue),15%,90%,0.82);--md-default-fg-color--light:hsla(var(--md-hue),15%,90%,0.56);--md-default-fg-color--lighter:hsla(var(--md-hue),15%,90%,0.32);--md-default-fg-color--lightest:hsla(var(--md-hue),15%,90%,0.12);--md-default-bg-color:hsla(var(--md-hue),15%,14%,1);--md-default-bg-color--light:hsla(var(--md-hue),15%,14%,0.54);--md-default-bg-color--lighter:hsla(var(--md-hue),15%,14%,0.26);--md-default-bg-color--lightest:hsla(var(--md-hue),15%,14%,0.07);--md-code-fg-color:hsla(var(--md-hue),18%,86%,0.82);--md-code-bg-color:hsla(var(--md-hue),15%,18%,1);--md-code-bg-color--light:hsla(var(--md-hue),15%,18%,0.9);--md-code-bg-color--lighter:hsla(var(--md-hue),15%,18%,0.54);--md-code-hl-color:#2977ff;--md-code-hl-color--light:#2977ff1a;--md-code-hl-number-color:#e6695b;--md-code-hl-special-color:#f06090;--md-code-hl-function-color:#c973d9;--md-code-hl-constant-color:#9383e2;--md-code-hl-keyword-color:#6791e0;--md-code-hl-string-color:#2fb170;--md-code-hl-name-color:var(--md-code-fg-color);--md-code-hl-operator-color:var(--md-default-fg-color--light);--md-code-hl-punctuation-color:var(--md-default-fg-color--light);--md-code-hl-comment-color:var(--md-default-fg-color--light);--md-code-hl-generic-color:var(--md-default-fg-color--light);--md-code-hl-variable-color:var(--md-default-fg-color--light);--md-typeset-color:var(--md-default-fg-color);--md-typeset-a-color:var(--md-primary-fg-color);--md-typeset-kbd-color:hsla(var(--md-hue),15%,90%,0.12);--md-typeset-kbd-accent-color:hsla(var(--md-hue),15%,90%,0.2);--md-typeset-kbd-border-color:hsla(var(--md-hue),15%,14%,1);--md-typeset-mark-color:#4287ff4d;--md-typeset-table-color:hsla(var(--md-hue),15%,95%,0.12);--md-typeset-table-color--light:hsla(var(--md-hue),15%,95%,0.035);--md-admonition-fg-color:var(--md-default-fg-color);--md-admonition-bg-color:var(--md-default-bg-color);--md-footer-bg-color:hsla(var(--md-hue),15%,10%,0.87);--md-footer-bg-color--dark:hsla(var(--md-hue),15%,8%,1);--md-shadow-z1:0 0.2rem 0.5rem #0000000d,0 0 0.05rem #0000001a;--md-shadow-z2:0 0.2rem 0.5rem #00000040,0 0 0.05rem #00000040;--md-shadow-z3:0 0.2rem 0.5rem #0006,0 0 0.05rem #00000059;color-scheme:dark}[data-md-color-scheme=slate] img[src$="#gh-light-mode-only"],[data-md-color-scheme=slate] img[src$="#only-light"]{display:none}[data-md-color-scheme=slate][data-md-color-primary=pink]{--md-typeset-a-color:#ed5487}[data-md-color-scheme=slate][data-md-color-primary=purple]{--md-typeset-a-color:#c46fd3}[data-md-color-scheme=slate][data-md-color-primary=deep-purple]{--md-typeset-a-color:#a47bea}[data-md-color-scheme=slate][data-md-color-primary=indigo]{--md-typeset-a-color:#5488e8}[data-md-color-scheme=slate][data-md-color-primary=teal]{--md-typeset-a-color:#00ccb8}[data-md-color-scheme=slate][data-md-color-primary=green]{--md-typeset-a-color:#71c174}[data-md-color-scheme=slate][data-md-color-primary=deep-orange]{--md-typeset-a-color:#ff764d}[data-md-color-scheme=slate][data-md-color-primary=brown]{--md-typeset-a-color:#c1775c}[data-md-color-scheme=slate][data-md-color-primary=black],[data-md-color-scheme=slate][data-md-color-primary=blue-grey],[data-md-color-scheme=slate][data-md-color-primary=grey],[data-md-color-scheme=slate][data-md-color-primary=white]{--md-typeset-a-color:#5e8bde}[data-md-color-switching] *,[data-md-color-switching] :after,[data-md-color-switching] :before{transition-duration:0ms!important}}[data-md-color-accent=red]{--md-accent-fg-color:#ff1947;--md-accent-fg-color--transparent:#ff19471a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=pink]{--md-accent-fg-color:#f50056;--md-accent-fg-color--transparent:#f500561a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=purple]{--md-accent-fg-color:#df41fb;--md-accent-fg-color--transparent:#df41fb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=deep-purple]{--md-accent-fg-color:#7c4dff;--md-accent-fg-color--transparent:#7c4dff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=indigo]{--md-accent-fg-color:#526cfe;--md-accent-fg-color--transparent:#526cfe1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=blue]{--md-accent-fg-color:#4287ff;--md-accent-fg-color--transparent:#4287ff1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-blue]{--md-accent-fg-color:#0091eb;--md-accent-fg-color--transparent:#0091eb1a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=cyan]{--md-accent-fg-color:#00bad6;--md-accent-fg-color--transparent:#00bad61a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=teal]{--md-accent-fg-color:#00bda4;--md-accent-fg-color--transparent:#00bda41a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=green]{--md-accent-fg-color:#00c753;--md-accent-fg-color--transparent:#00c7531a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=light-green]{--md-accent-fg-color:#63de17;--md-accent-fg-color--transparent:#63de171a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-accent=lime]{--md-accent-fg-color:#b0eb00;--md-accent-fg-color--transparent:#b0eb001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=yellow]{--md-accent-fg-color:#ffd500;--md-accent-fg-color--transparent:#ffd5001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=amber]{--md-accent-fg-color:#fa0;--md-accent-fg-color--transparent:#ffaa001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=orange]{--md-accent-fg-color:#ff9100;--md-accent-fg-color--transparent:#ff91001a;--md-accent-bg-color:#000000de;--md-accent-bg-color--light:#0000008a}[data-md-color-accent=deep-orange]{--md-accent-fg-color:#ff6e42;--md-accent-fg-color--transparent:#ff6e421a;--md-accent-bg-color:#fff;--md-accent-bg-color--light:#ffffffb3}[data-md-color-primary=red]{--md-primary-fg-color:#ef5552;--md-primary-fg-color--light:#e57171;--md-primary-fg-color--dark:#e53734;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=pink]{--md-primary-fg-color:#e92063;--md-primary-fg-color--light:#ec417a;--md-primary-fg-color--dark:#c3185d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=purple]{--md-primary-fg-color:#ab47bd;--md-primary-fg-color--light:#bb69c9;--md-primary-fg-color--dark:#8c24a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=deep-purple]{--md-primary-fg-color:#7e56c2;--md-primary-fg-color--light:#9574cd;--md-primary-fg-color--dark:#673ab6;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=indigo]{--md-primary-fg-color:#4051b5;--md-primary-fg-color--light:#5d6cc0;--md-primary-fg-color--dark:#303fa1;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=blue]{--md-primary-fg-color:#2094f3;--md-primary-fg-color--light:#42a5f5;--md-primary-fg-color--dark:#1975d2;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-blue]{--md-primary-fg-color:#02a6f2;--md-primary-fg-color--light:#28b5f6;--md-primary-fg-color--dark:#0287cf;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=cyan]{--md-primary-fg-color:#00bdd6;--md-primary-fg-color--light:#25c5da;--md-primary-fg-color--dark:#0097a8;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=teal]{--md-primary-fg-color:#009485;--md-primary-fg-color--light:#26a699;--md-primary-fg-color--dark:#007a6c;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=green]{--md-primary-fg-color:#4cae4f;--md-primary-fg-color--light:#68bb6c;--md-primary-fg-color--dark:#398e3d;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=light-green]{--md-primary-fg-color:#8bc34b;--md-primary-fg-color--light:#9ccc66;--md-primary-fg-color--dark:#689f38;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=lime]{--md-primary-fg-color:#cbdc38;--md-primary-fg-color--light:#d3e156;--md-primary-fg-color--dark:#b0b52c;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=yellow]{--md-primary-fg-color:#ffec3d;--md-primary-fg-color--light:#ffee57;--md-primary-fg-color--dark:#fbc02d;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=amber]{--md-primary-fg-color:#ffc105;--md-primary-fg-color--light:#ffc929;--md-primary-fg-color--dark:#ffa200;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=orange]{--md-primary-fg-color:#ffa724;--md-primary-fg-color--light:#ffa724;--md-primary-fg-color--dark:#fa8900;--md-primary-bg-color:#000000de;--md-primary-bg-color--light:#0000008a}[data-md-color-primary=deep-orange]{--md-primary-fg-color:#ff6e42;--md-primary-fg-color--light:#ff8a66;--md-primary-fg-color--dark:#f4511f;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=brown]{--md-primary-fg-color:#795649;--md-primary-fg-color--light:#8d6e62;--md-primary-fg-color--dark:#5d4037;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3}[data-md-color-primary=grey]{--md-primary-fg-color:#757575;--md-primary-fg-color--light:#9e9e9e;--md-primary-fg-color--dark:#616161;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=blue-grey]{--md-primary-fg-color:#546d78;--md-primary-fg-color--light:#607c8a;--md-primary-fg-color--dark:#455a63;--md-primary-bg-color:#fff;--md-primary-bg-color--light:#ffffffb3;--md-typeset-a-color:#4051b5}[data-md-color-primary=light-green]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#72ad2e}[data-md-color-primary=lime]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#8b990a}[data-md-color-primary=yellow]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#b8a500}[data-md-color-primary=amber]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#d19d00}[data-md-color-primary=orange]:not([data-md-color-scheme=slate]){--md-typeset-a-color:#e68a00}[data-md-color-primary=white]{--md-primary-fg-color:hsla(var(--md-hue),0%,100%,1);--md-primary-fg-color--light:hsla(var(--md-hue),0%,100%,0.7);--md-primary-fg-color--dark:hsla(var(--md-hue),0%,0%,0.07);--md-primary-bg-color:hsla(var(--md-hue),0%,0%,0.87);--md-primary-bg-color--light:hsla(var(--md-hue),0%,0%,0.54);--md-typeset-a-color:#4051b5}[data-md-color-primary=white] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=white] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}@media screen and (min-width:60em){[data-md-color-primary=white] .md-search__form{background-color:hsla(var(--md-hue),0%,0%,.07)}[data-md-color-primary=white] .md-search__form:hover{background-color:hsla(var(--md-hue),0%,0%,.32)}[data-md-color-primary=white] .md-search__input+.md-search__icon{color:hsla(var(--md-hue),0%,0%,.87)}}@media screen and (min-width:76.25em){[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid #00000012}}[data-md-color-primary=black]{--md-primary-fg-color:hsla(var(--md-hue),15%,9%,1);--md-primary-fg-color--light:hsla(var(--md-hue),15%,9%,0.54);--md-primary-fg-color--dark:hsla(var(--md-hue),15%,9%,1);--md-primary-bg-color:hsla(var(--md-hue),15%,100%,1);--md-primary-bg-color--light:hsla(var(--md-hue),15%,100%,0.7);--md-typeset-a-color:#4051b5}[data-md-color-primary=black] .md-button{color:var(--md-typeset-a-color)}[data-md-color-primary=black] .md-button--primary{background-color:var(--md-typeset-a-color);border-color:var(--md-typeset-a-color);color:hsla(var(--md-hue),0%,100%,1)}[data-md-color-primary=black] .md-header{background-color:hsla(var(--md-hue),15%,9%,1)}@media screen and (max-width:59.984375em){[data-md-color-primary=black] .md-nav__source{background-color:hsla(var(--md-hue),15%,11%,.87)}}@media screen and (max-width:76.234375em){html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer]{background-color:hsla(var(--md-hue),15%,9%,1)}}@media screen and (min-width:76.25em){[data-md-color-primary=black] .md-tabs{background-color:hsla(var(--md-hue),15%,9%,1)}} \ No newline at end of file diff --git a/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/index.html b/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/index.html new file mode 100644 index 00000000..a61e9048 --- /dev/null +++ b/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/index.html @@ -0,0 +1,12 @@ + The problem with AI Trolley dilemma - Awesome GameDev Resources

The problem with AI Trolley dilemma

Estimated time to read: 5 minutes

What the self-driving car do?

The premise about the AI trolley dilemma is invalid. So the whole discussion about who should the car kill in a fatal situation. Let me explain why.

Yesterday I attended a conference about Ethics and AI, and the speaker mentioned the trolley dilemma. The question asked was "What should the self-driving car do?" and kind of forced us to take sides on the matter.

  • Kill the passengers;
  • Kill the pedestrians;

This is the same as the trolley problem but one difference. AI don't have morals, it will follow what is programmed without any hesitation. So the question is not what the AI should do, but what the programmer codes it to do.

Well, the whole premise on asking what should do "kill this, or that" is totally wrong. As a programmer myself, and knowing the limits of the system, I would never code a system to make such a decision. If the car is in a situation that it cannot break in time with the current limited vision, it should go slower. So no decision ever has to be made.

Let's do some math for you to see how this could be easily solved.

The math

Let's use the standard formula for the distance needed to stop a car.

\[S = v*t + \frac{v^2}{2*u*g}\]

Where:

  • \(S\) is the distance needed to stop;
  • \(v\) is the speed of the car;
  • \(t\) is the reaction time;
  • \(v*t\) is the distance traveled during the reaction time;
  • \(u\) is the tire friction factor;
  • \(g\) is the gravity acceleration;
  • \(\frac{v^2}{2*u*g}\) is the distance traveled during the breaking time;

If the car is going at \(100 km/h\) (\(27.7 m/s\), \(62.14 mi/h\)) and the reaction time of the AI is relatively fast, let's say \(0.2 s\), so the distance traveled to a complete sage stop would be:

\[S = 27.7 * 0.2 + \frac{27.7^2}{2*0.2*9.8} = 5.54 + 38.5 = 44.04 m\]

Which means that the car would need \(44.04 m\) to stop. So if the car cannot clearly see a distance greater than that, it should slow down. And this is the reason the self-driving AIs are said to be slow drivers.

\ No newline at end of file diff --git a/blog/2023/08/09/lets-talk-about-virtual-reality/index.html b/blog/2023/08/09/lets-talk-about-virtual-reality/index.html new file mode 100644 index 00000000..84a3b57d --- /dev/null +++ b/blog/2023/08/09/lets-talk-about-virtual-reality/index.html @@ -0,0 +1,38 @@ + Let's talk about Virtual Reality - Awesome GameDev Resources

Let's talk about Virtual Reality

Estimated time to read: 17 minutes

The goal of this article is not be a comprehensive guide about Virtual Reality, but to give you a general sense of what it is and how it works. I will also give you some examples of how it is being used today and what we can expect for the future.

History

graph TB
+  Start[Start] 
+  -- 1838 --> Stereoscope[Stereoscope] 
+  -- 1935 --> multisensory[Multi Sensory Machines]
+  -- 1960 --> hmd[Head Mounted Devices\nVR Goggles]
+  -- 1965 --> military[Military Research\nTraining\nHelmets]
+  -- 1970 --> artificialreality[Artificial Reality\nComputer Simulations]
+  -- 1980 --> gloves[Stereo Vision Glasses\nGloves for VR]
+  -- 1989 --> nasa[NASA Training\nComputer Simulated Teleoperation]
+  -- 1990 --> game[VR Gaming\nVR Arcades]
+  -- 1997 --> serious[PTSD Treatment]
+  -- 2007 --> datavis[Google Street View\nStereoscopic 3D]
+  -- 2010 -->oculus[Oculus VR\nOculus Kickstarter\nFacebook acquisition]
+  -- 2015 -->general[General Audience\nMultiple VR products]
+  -- 2016 -->ar[AR\nPokemon Go\nHololens] 
+  -- 2017 -->ARKIT[AR\nApple ARKit] 
+  -- 2018 -->oculusquest[Oculus Quest\nStandalone VR]
+  -- 2021 -->metaverse[Metaverse\nFacebook rebrands to Meta]
+  -- 2023 -->apple[Apple Vision]

As you can see the history of VR is quite long and full of interesting surprising developments, but it is only in the last 10 years that it has become a reality for the general audience.

Terms Disambiguation

Before we go any further, let's disambiguate some terms that are often used interchangeably. Nowadays we have a spectrum of immersive technologies that goes from the real world to the virtual world.

graph LR
+    real[Real World]-->mixed
+
+    subgraph mixed[Mixed Reality]
+        augmentedreality[Augmented Reality]
+        augmentedvirtuality[Augmented Virtuality]
+    end
+
+    mixed --> virtual[Virtual Reality]

Virtual Reality

Virtual Reality (VR) is the most pervasive and ambiguous term. It is sometimes used as an umbrella for all immersive technologies, but it is more commonly used to refer to the process of simulating a virtual world that is completely isolated the user from the real world. This is usually done by using a Head Mounted Display (HMD) that blocks the user's view of the real world and replaces it with a simulation in front of the user's eyes; and headphones to replace the real sounds with virtual. The user can also use controllers to interact in it.

This term gained lots of attention with the modern VR boom that started in 2010 with the Oculus Kickstarter campaign followed by its acquisition by Facebook in 2014. After that, many other companies started to develop their own VR products, such as the HTC Vive, the Playstation VR, and the Samsung Gear VR.

Augmented Reality

Augmented Reality is another ambiguous term, but its meaning is more settled. It refers to the process of adding computer generated elements to the real world. It can be done by using a Head Mounted Display (HMD) that allows the user to see the real world and the virtual elements at the same time such as Google Glass or the Microsoft Hololens. It can also be done by using a smartphone or tablet that uses the camera to capture the real world and then adds virtual elements to it. This is the case of the Snapchat filters and the popular game Pokemon Go launched in 2016.

Augmented Virtuality

This term usually is not misused and more specifically refers to the process of adding real world elements to a virtual world. It can appears in many forms, for example, the use of a treadmill to simulate walking in the virtual world or the use of a camera to capture the user's face and add it to the virtual world. Stereocameras or depth sensors are also used to capture the user's hands and add them to the virtual world as well.

Most of the time Augmented Virtuality (AV) is seen as an enhancement to the already existing immersive experience. It can be used to add another level of realism to the virtual world, to make the user feel more immersed in it, reduce nausea, or discomfort by adding real world anchors to the virtual world.

Challenges

In order to make immersive gadgets a reality, we need to overcome some challenges. The most important ones are:

  • Motion Sickness: the feeling of nausea and discomfort caused by the mismatch between the user's movements and the virtual world. It is mostly caused by:
    • Latency: the time it takes for the system to react to the user's actions. The system needs to process the inputs, accelerometers, gyroscopes, and other sensors, and then render the new image to the user. This process takes time and if it is too long the user will feel unresponsiveness and will get sick;
    • Field of View: the area that the user can see at any given time doesnt match the area that the user can see in the real world;
    • Resolution: the number of pixels that the user can see at any given time. Ex. The Oculus Rift DK1 had a resolution of 640x800 per eye that was zoomed to cover the user's entire field of view, and on top of that, the spacing between pixels makes the image looks like a grid of squared dots; you can see why it received so many complaints;
    • Tracking: the ability of the system to track the user's movements properly. The sensors usually do not refresh at the same rate as the display, so the system needs to interpolate the user's movements between the sensor readings. This can cause the user to feel like the virtual world is lagging behind the real world and be out of sync with the user's movements;
  • Comfort: the feeling of comfort that the user has while using the system. If the device needs to be worn for a long period of time, right weight distribution, padding, and ventilation are important to make the user feel comfortable;
  • Cost: the cost of the system. The machinery and technology used to create the system can be very expensive to be accessible to the general audience;
  • Portability: the ability of the system to be used in different places. If the system is too heavy or too big it will be hard to carry;
  • Social Acceptance: the acceptance of the system by the society. If the system is too intrusive or too weird it will be hard to use in public places. It could be seen as a threat to privacy or as a threat to the user's safety;
  • Battery Life: the amount of time that the system can be used without being plugged in. If the system needs to be plugged in all the time it will be hard to use in public places;
  • Software Development Kits: the tools that developers use to create applications for the system. If the SDK is too hard to use or too limited it will be hard to create applications for the system;

I will add to this list a personal experience that I don't see many people talking about: bad smell, oily foams, and connectors corrosion. The root of those problems is the proximity with the user's face. The user's face is a very oily place and the foam that is used to make the device comfortable is an exceptional place for bacteria to grow. The connectors are also exposed to the user's sweat and can corrode over time and brick your device.

Applications

There are virtually infinite applications for immersive technologies, but I will focus on the ones that I think are the most important ones in my opinion:

  • Entertainment: Games in general, but also movies, etc.;
  • Data Visualization: the ability to visualize data in a 3D space can be very useful to understand complex data;
  • Education: Training, virtual classrooms, virtual museums, virtual tours, etc.;
  • Social: Virtual meetings, parties, dating, etc.;
  • Psychological Treatment: Virtual exposure therapy(Ex.: PTSD, phobias), virtual reality therapy, etc.;
  • Medical: Surgery planning, surgery simulation, etc.;
  • Design: Architecture, interior design, etc.;

Future

In my past, I have created a startup to help surgeons plan their surgeries and ported it to VR - DocDo. I created some small scoped projects to psychological treatment via progressive exposition, some for data visualization and others for education. I am not in position to have a strong opinion about the future of VR, but I can share my thoughts about it.

At the beginning of the metaverse boom, I was very skeptical about it, and I am still. I felt it was a just a new interpretation of a product previously tested on Second Life and proved to be a niche product, focused in being fun, but forcing the use of device with many issues. Another problem was the lack of a real application besides the fun factor.

As a developer, I am in love with Apple's new Vision OS emulator and SDK. It is surprisingly easy to use, filled with useful functions, although it is buggy and crashes randomly in beta channel that I am using now. I think it is an exceptional example of how to create a nice SDK for a new platform. I am not sure if it will be a success, but I am sure that it will empower many developers to create new or port existing applications to their platform. They have created a simply way to bring a desktop experience to a VR gadget that just work. You can "easily" port your app to it and it will work. It is portable, easy to code, powerful hardware, nice battery life, and a nice SDK. I think it is a nice recipe for success. My only concern is related to the cost and social acceptance.

\ No newline at end of file diff --git a/blog/2023/08/24/notes-on-submissions/index.html b/blog/2023/08/24/notes-on-submissions/index.html new file mode 100644 index 00000000..dde6b5d5 --- /dev/null +++ b/blog/2023/08/24/notes-on-submissions/index.html @@ -0,0 +1,12 @@ + Notes on Submissions - Awesome GameDev Resources

Notes on Submissions

Estimated time to read: 7 minutes

Source: ideogram

Here are my personal opinions, rules and processes that I follow about submissions. I will cover gradings, deadlines, tolerances, and AI-assistant tools usage.

Policy on Limited use of AI-assisted tools

Note

"During our classes, we may use AI writing tools such as ChatGPT in certain specific cases. You will be informed as to when, where, and how these tools are permitted to be used, along with guidance for attribution. Any use outside of these specific cases constitutes a violation of Academic Honesty Policy." Source.

The learner has to produce original content. You can use tools like ChatGPT to help you learn by prompting your own questions, but not to solve the problems, assignments, or quizzes.

The rationale is that the student has to learn the concepts and ideas rather than just copying and pasting the answers.

What is acceptable:

  • On writing, coding assignments, or interactive assignments, you can ask AI questions about concepts, ideas, syntaxes, etc;
  • You can ask AI assistants what is wrong with your code, but you cannot use the answer 1 to 1 copy to your final submission. You have to modify it;
  • If your submission contains part of an AI-assisted tool, you have to cite it. Ex.: "I prompted ____ in ChatGPT, and the answer was ____." and as a professor, I will deduct points from your submission with fairness instead of giving you zero points;

What is not acceptable

  • You cannot copy the question and prompt AI to answer it and then use the answer as your own;
  • You cannot ask AI to code a solution for you;
  • You cannot use any AI while coding(e.g. GitHub Copilot), but I do recommend you to use any IDE instead;
  • You cannot use AI assistance to solve quizzes or exams in any circumstances.
  • Even in accepted cases, using AI assistance and not citing it will be considered plagiarism and will be reported to higher instances and zero-ed;

How do I detect Plagiarism and AI-assisted tools abuse

  • I use some automated tools such as Turnitin(canvas), moss(Beecrowd), and others;
  • I use my own experience to detect plagiarism;
  • If two students use the same AI assistant, chances are high that they will produce the same answer, and I will detect it;

Grading Timings

I usually take up to 1 week to grade assignments, but I will grade them as soon as possible. The worst-case scenario is two weeks.

Late Submissions Policy

If you submit an assignment late, you will receive a flat 20% deduction on your grade.

If you have accommodations, message me, and I will try accommodating you. But always send a message on every submission stating that. Canvas is a nice tool, but it needs to cover accommodations better.

If you fall under special conditions, such as sickness, death of a relative, or any other condition that you cannot submit the assignment on time, please send me a message through Canvas, and I will try to accommodate you.

Plagiarism

Plagiarism is a serious offense and will be reported to the higher instances. I will not tolerate any plagiarism as I define:

  • Searching for answers on the internet and copy and paste it as your own;
  • Copying answers from other students;
  • Using AI-assisted tools to produce full answers;
  • Using AI-assisted tools to produce partial answers without citing it;

Welcoming environment

I am here to teach you the best I can and guide you through your learning process. You can count on me as a friend and a teacher, and I will help you as much as possible. I am willing to make exceptions for the ones that need it.

\ No newline at end of file diff --git a/blog/2023/08/30/ferpa-consent/index.html b/blog/2023/08/30/ferpa-consent/index.html new file mode 100644 index 00000000..74a3aef6 --- /dev/null +++ b/blog/2023/08/30/ferpa-consent/index.html @@ -0,0 +1,12 @@ + FERPA Consent - Awesome GameDev Resources

FERPA Consent

Estimated time to read: 6 minutes

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

FERPA consent form

Read more about the reasoning and rationale below.

Note

This a modified version from this original.

In a typical class, your homework (and other information delineating your academic performance) would not be visible to the public. Indeed, the FERPA law requires that you have the right to privacy in this regard. This is one of the main reasons for the existence of so many "walled gardens" for courseware, such as Autolab, Blackboard, CanvasLMS and Piazza, which keep all student work hidden behind passwords.

An essential component of the educational experience in new media arts, however, is learning how to participate in the "Grand Conversation" all around us, by becoming more effective culture operators. We cannot do this in the safe space of a Canvas module. Our work is strengthened and sharpened in the forge of public scrutiny: in this case, the agora of the Internet.

Sometimes students are afraid to publish something because it is of poor quality. They think that they will receive embarrassing, negative critiques. In fact, negative critique is quite rare. The most common thing that happens when one creates an artwork of poor quality, is that it is simply ignored. Being ignored - this, not being shunned or derided - this is the fate of mediocre work.

On the other hand, if something is truly great is published - and great projects can happen, and have happened, even in an introductory class like this one - there is the chance that it may be circulated widely on the Internet. Every year that I have taught, a handful of the students' projects get blogged and receive as many as 50000 views in a week. It cannot be emphasized that this can be an absolutely transformative experience for students, that cannot be obtained without taking the risk to work publicly. Students get jobs and build careers on the basis of such success.

That said, there are also plenty of reasons why you may wish to work anonymously, when you work online. Perhaps you are concerned about stalkers or harassment. Perhaps you wish to address themes in your work which might not meet with the approval of your parents or future employers. These are valid considerations, in which case, we advise using an anonymous identity on Github. On our course repository, your work will be indexed by a public-facing name, generally your first name. If you would prefer something else, please inform the professor.

Fill this form if you want to share your work publicly. If you don't fill this form, your work should be private:

FERPA consent form

\ No newline at end of file diff --git a/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/index.html b/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/index.html new file mode 100644 index 00000000..a3595b3c --- /dev/null +++ b/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/index.html @@ -0,0 +1,175 @@ + Setup SDL with CMake and CPM - Awesome GameDev Resources

Setup SDL with CMake and CPM

Estimated time to read: 14 minutes

In my opinion, the minimum toolset needed to give you the ability to start creating games cross-platform from scratch is the combination of the following tools:

  1. CLion - Cross-platform C++ IDE with embedded CMake support

    • Apply for a student license;
    • Download and install it;
    • For Macs, you will need extra tools: XCode and the command line tools. You can install them by running xcode-select --install on the terminal;
  2. (Required for Windows and if you don't use CLion) Git - Version control system

    • Download only if you are on Windows and don't forget to tick the option to add it to your environment path (CMake will be calling it). On Mac and Linux, you can install via your package manager (ex. brew on Mac e apt on Ubuntu).

After installing the tool(s) above, you can follow the steps below to create a new project:

CLion project

  1. Open CLion and select New Project:

Welcome

  1. Create a new project and select C++ Executable and C++XX as the language standard, where XX is the latest one available for you. Use the default compiler and toolchain:

New Project

  1. Start coding:

CLionIDE

You might note the existence of a CMakeLists.txt file on the left side of the IDE on the Project tab. This file is used by CMake to generate the build files for your project. Now, we are going to set up everything you need to use SDL3. If you open the CMakeLists.txt file, you will see something similar to the following:

# cmake_minimum_required(VERSION <specify CMake version here>)
+cmake_minimum_required(VERSION 3.26)
+# project(<name> [<language-name>...])
+project(MyGame)
+# set(CMAKE_CXX_STANDARD <specify C++ standard here>)
+set(CMAKE_CXX_STANDARD 17)
+# add_executable(<name> file.cpp file2.cpp ...)
+add_executable(MyGame main.cpp)
+

CPM - C++ Package Manager

CPM is a setup-free C++ package manager. It is a single CMake script that you can add to your project and use to download and install packages from GitHub. It is a great tool to manage dependencies and many C++ projects use it.

You can make this as simple as adding the following lines to your CMakeLists.txt file (after the project command):

set(CPM_DOWNLOAD_VERSION 0.38.2)
+
+if(CPM_SOURCE_CACHE)
+  set(CPM_DOWNLOAD_LOCATION "${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
+elseif(DEFINED ENV{CPM_SOURCE_CACHE})
+  set(CPM_DOWNLOAD_LOCATION "$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
+else()
+  set(CPM_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake")
+endif()
+
+# Expand relative path. This is important if the provided path contains a tilde (~)
+get_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)
+
+function(download_cpm)
+  message(STATUS "Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}")
+  file(DOWNLOAD
+       https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake
+       ${CPM_DOWNLOAD_LOCATION}
+  )
+endfunction()
+
+if(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))
+  download_cpm()
+else()
+  # resume download if it previously failed
+  file(READ ${CPM_DOWNLOAD_LOCATION} check)
+  if("${check}" STREQUAL "")
+    download_cpm()
+  endif()
+  unset(check)
+endif()
+
+include(${CPM_DOWNLOAD_LOCATION})
+

This will download the CPM.cmake file to your project, and you can use it to download and install packages from GitHub.

To check if CPM is being automatically downloaded, you can go to CLion and click on CMake icon on the left side of the Project. It is the first one on the bottom. And then click the Reload CMake Project button:

CLionRefreshCMake

Now that you have CPM, you can start adding packages to your project. Here are some ways of doing that:

# A git package from a given uri with a version
+CPMAddPackage("uri@version")
+# A git package from a given uri with a git tag or commit hash
+CPMAddPackage("uri#tag")
+# A git package with both version and tag provided
+CPMAddPackage("uri@version#tag")
+# examples:
+# CPMAddPackage("gh:fmtlib/fmt#7.1.3")
+# CPMAddPackage("gh:nlohmann/json@3.10.5")
+# CPMAddPackage("gh:catchorg/Catch2@3.2.1")
+# An archive package from a given url. The version is inferred
+# CPMAddPackage("https://example.com/my-package-1.2.3.zip")
+# An archive package from a given url with an MD5 hash provided
+# CPMAddPackage("https://example.com/my-package-1.2.3.zip#MD5=68e20f674a48be38d60e129f600faf7d")
+# An archive package from a given url. The version is explicitly given
+# CPMAddPackage("https://example.com/my-package.zip@1.2.3")
+
+# A complex package with options:
+CPMAddPackage(
+        NAME          # The unique name of the dependency (should be the exported target's name)
+        VERSION       # The minimum version of the dependency (optional, defaults to 0)
+        OPTIONS       # Configuration options passed to the dependency (optional)
+        DOWNLOAD_ONLY # If set, the project is downloaded, but not configured (optional)
+        GITHUB_REPOSITORY # The GitHub repository (owner/repo) to download from (optional)
+        GIT_TAG       # The git tag or commit hash to download (optional)
+        [...]         # Origin parameters forwarded to FetchContent_Declare
+)
+

SDL

In order to generate SDL libraries and link them corretly in our executable, we have to state the lib should be in the same folder as the executable, so you have to add this to your CMakeLists.txt file:

# Set all outputs to be at the same location
+set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
+link_directories(${CMAKE_BINARY_DIR})
+

Now that we have CPM set up, we can use it to download and install SDL. If you want to try the stable version v2, add the following lines to your CMakeLists.txt file and refresh CMake:

CPMAddPackage(
+  NAME SDL2
+  GITHUB_REPOSITORY libsdl-org/SDL
+  GIT_TAG release-2.28.3 
+  VERSION 2.28.3
+)
+

If you don't have git installed on your machine, you might want to use the ZIP version(it is even faster to download but slower to switch versions). In this case, you can use the following lines and refresh CMake:

CPMAddPackage(
+  NAME SDL2
+  URL "https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.28.3.zip"
+  VERSION 2.28.3
+)
+

If you want to try the bleeding edge version v3, add the following lines to your CMakeLists.txt file at your own risk:

CPMAddPackage(
+  NAME SDL3
+  GITHUB_REPOSITORY libsdl-org/SDL
+  GIT_TAG main
+)
+

Now that we have SDL set up, we should link it to our project. In order to do that, we can add the following lines after the line add_executable to our CMakeLists.txt file and refresh CMake:

target_link_libraries(MyGame SDL2::SDL2)
+# change SDL2 to SDL3 if you are using the bleeding edge version
+#target_link_libraries(MyGame SDL2::SDL2)
+

And this will make SDL available to our project. Now we can start coding. Let's create a simple window:

#define SDL_MAIN_HANDLED true
+#include <SDL.h>
+
+int main(int argc, char** argv) {
+    SDL_Init(SDL_INIT_VIDEO);
+
+    SDL_Window* window = SDL_CreateWindow(
+            "SDL2Test",
+            SDL_WINDOWPOS_UNDEFINED,
+            SDL_WINDOWPOS_UNDEFINED,
+            640,
+            480,
+            0
+    );
+
+    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
+
+    SDL_Event e;
+    bool quit = false;
+    while (!quit){
+        while (SDL_PollEvent(&e)){
+            if (e.type == SDL_QUIT){
+                quit = true;
+            }
+        }
+
+        SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
+        SDL_RenderClear(renderer);
+        SDL_RenderPresent(renderer);
+        SDL_Delay(0);
+    }
+
+    SDL_DestroyWindow(window);
+    SDL_Quit();
+
+    return 0;
+}
+

If you feel that you want to test the bleeding-edge version, you can use this code instead:

#define SDL_MAIN_HANDLED true
+#include <SDL.h>
+
+int main(int argc, char* argv[]) {
+    SDL_Init(SDL_INIT_VIDEO);
+
+    SDL_Window *window = SDL_CreateWindow(
+            "MyGame",
+            640,
+            480,
+            0
+    );
+
+    SDL_Renderer* renderer = SDL_CreateRenderer(window, nullptr, SDL_RENDERER_ACCELERATED);
+    SDL_Event e;
+    bool quit = false;
+
+    while (!quit) {
+        while (SDL_PollEvent(&e)) {
+            if (e.type == SDL_EVENT_QUIT) {
+                quit = true;
+            }
+        }
+        SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
+        SDL_RenderClear(renderer);
+        SDL_RenderPresent(renderer);
+        SDL_Delay(0);
+    }
+
+    SDL_DestroyWindow(window);
+    SDL_Quit();
+
+    return 0;
+}
+

Now you have a way to code games with SDL in a way that is cross-platform, and easy to setup.

If you hit Run or Debug on CLion, you will see a window like this:

ClionDebug

and then:

MyGame

I hope it works for you. If you have any problems, please let me know on Discord or via GitHub issues.

\ No newline at end of file diff --git a/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/index.html b/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/index.html new file mode 100644 index 00000000..289578b0 --- /dev/null +++ b/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/index.html @@ -0,0 +1,75 @@ + Memory-efficient Data Structure for Procedural Maze Generation - Awesome GameDev Resources

Memory-efficient Data Structure for Procedural Maze Generation

Estimated time to read: 13 minutes

In this post, you will learn how to create a memory-efficient data structure for maze generation. We will jump from a 320 bits data structure to just 2! It is achieved by taking a bunch of clever decisions, changing the referential and doing some math. Be warned, this not for the fainted hearts. Are you brave enough?

Problem statement: You need to generate mazes dynamicly, and you need to break or add walls between rooms. Ex.: How can we store data for a simple 3x3 maze like this:

 _ _ _ 
+| |   |
+| | | |
+|_ _|_|
+

The naive approach is to create a data structure like this:

class Node {
+    Node* top, right, bottom, left;
+    bool top_wall, right_wall, bottom_wall, left_wall;
+};
+

This one above will work, but it is:

  • Cache unfriendly;
  • Random access to any element will be slow;
  • Memory inefficient;
  • Huge memory consumption;
  • Redundant data usage;

Cache Unfriendly: The cache locality is hurt by extensive usage of dynamic allocation (4 pointer per node), and not reserving contigous memory for every new object created.

Random Access: To access the room {x,y} will have to iterate over node by node from the origin. The access of a room will have the algorithmic complexity of O(rows+columns) or simply O(n). For small mazes it is not a problem, but for big mazes it will be.

Memory inefficiency: The memory allocation for each room is 4 pointers and 4 booleans. If the size of the pointer is 8 bytes and each boolean is 1 byte, we might think it will have 36 bytes per room, right? Wrong! The compiler will add padding to the struct, so it will have 40 bytes per room. If we have a 1000x1000 maze, we will have 40MB of memory allocated for the maze. It is a lot of memory for a simple maze.

Data redundancy: The wall data is stored in two neighbors. If we break a wall, we have to break the wall in two places. It is not a big deal, but it is a waste of memory.

Optimization

Well, let's try to optimize it. The first step is to use a single array of data. And then we need to reduce the duplicity of data.

By removing all the pointers, and store the wall data in a single array following matrix linearization, we will drop the memory consumption to 4 bytes per room (10x improvement). It is a huge improvement, but we can do better. Now we can create an array of WallData as follows:

struct WallData {
+    bool top, right, bottom, left;
+};
+vector<WallData> data;
+WallData get_wall(int x, int y) {
+    return data[y * width + x];
+}
+

The size of the WallData is 4 bytes. But we can reduce it if we use data layout optimization:

struct WallData {
+    bool top:1, right:1, bottom:1, left:1;
+};
+

In this version, WallData will use 1 byte per room(40x improvement). But we will be using only 4 bits of the byte. Another way of optmizing it is to use vector of bools for every type of wall. Let's group them into vectors.

vector<bool> topWalls, rightWals, bottomWalls, leftWalls;
+

For vector, depending on the implementation, it needs to store the size of it, the capacity, and the pointer to the data, which will use 24 bytes per vector. If can reach 32 if it stores the reference count to it as a smart pointer.

So what we are going to do next? Reduce the number of vectors used to reduce overhead. If you want to go deeper, you can use only one vector where every bit is a wall. So we will have only 4 bits per room and do some math to get the right bit(80x improvement).

vector<bool> walls;
+

Can we do it better? Yes! As you might have noticed, every wall data is being stored in two nodes redundantly. So we will jump from 40 bytes(320 bits) to 2 bits per room (approximately 160x improvement). But in order to achieve that, you have to follow a strict set of rules andodifications.

  1. Every even bit is a top wall, and every odd bit is a right wall relative to an intersection;
  2. Every dimension of the maze will be increased by one unity in order to properly address the borders.
  3. We need to create accessors via matrix index and flaten with linearization technique.
 _ _ _
+|_|_|_|
+|_|_|_|
+

This 3x2 maze will be represented by a 4x3 linearized matrix. It is easier to understand if you look at the walls as edges and the wall intersections as nodes. So for a 3x2 maze, we need 4 vertical walls and 3 horizontal walls. So in this specific case, if we follow the pattern of 1 if the wall is present and 0 if it is not there, and do this only for top and right walls of a node(intersection), we will have:

This fully blocked 3x2 maze
+ _ _ _
+|_|_|_|
+|_|_|_|
+
+Will give us 4x3 pairs of bits:
+01 01 01 00
+11 11 11 10
+11 11 11 10
+
+Linearized as:
+010101001111111011111110
+

Just to recaptulate: we went from 40 Bytes (320 bits) per room to approximately 2 bits per room. A maze map with 128x128 would go from 128*128*320/8 = 640KB to 129*129*2/8 = 4161 bytes. It is 157.5 times densely packed. It is a huge improvement.

Notes about vectors:

  1. vector of bools is a bitfield, so it will pack 8 bools per byte, it will do the shift and masking for us.
  2. vector of bools is arguably an antipattern because it doesn't behave like a commom vector by not following the rule of zero cost abstraction from C++. It adds a cost for the densely packed bitfield.
  3. For our intent, this is exactly what we want, so we can use it, just check if your compiler implements it as a bitfield.

Here goes a simple implementation of a data structure to hold the maze data:

struct Maze {
+private:
+  vector<bool> walls;
+  vector<bool> visited;
+  int width, height;
+public:
+  Maze(int width, int height): width(width), height(height) {
+    walls.resize((width+1)*(height+1)*2, true);
+    for(int i = 0; i <= width; i++) // clear verticals on the top
+      SetNorthWall(i, 0, false);
+    for(int i = 0; i <= height; i++) // clear horizontals on the right
+      SetEastWall(width, i, false);
+    visited.resize(width*height, false); // no room is visited yet
+  }
+
+  bool GetVisited(int x, int y) const { return visited[y*width + x]; }
+  void SetVisited(int x, int y, bool val) { visited[y*width + x] = val; }
+
+  bool GetNorthWall(int x, int y) const { return walls[(y*(width+1) + x)*2 + 1]; }
+  bool GetSouthWall(int x, int y) const { return walls[((y+1)*(width+1) + x)*2 + 1];}
+  bool GetEastWall(int x, int y) const { return walls[((y+1)*(width+1) + x+1)*2];}
+  bool GetWestWall(int x, int y) const { return walls[((y+1)*(width+1) + x)*2];}
+
+  void SetNorthWall(int x, int y, bool val) { walls[(y*(width+1) + x)*2 + 1] = val; }
+  void SetSouthWall(int x, int y, bool val) { walls[((y+1)*(width+1) + x)*2 + 1] = val;}
+  void SetEastWall(int x, int y, bool val) { walls[((y+1)*(width+1) + x+1)*2] = val;}
+  void SetWestWall(int x, int y, bool val) { walls[((y+1)*(width+1) + x)*2] = val;}
+}
+

Further ideas

  1. Is it possible to explore even more the structure?
  2. Is it possible to do the same for hexagonal grids? Every node will have 3 walls instead of 4 in the squared grid.
\ No newline at end of file diff --git a/blog/2024/01/29/differences-between-map-vs-unordered_map/index.html b/blog/2024/01/29/differences-between-map-vs-unordered_map/index.html new file mode 100644 index 00000000..d8c412ba --- /dev/null +++ b/blog/2024/01/29/differences-between-map-vs-unordered_map/index.html @@ -0,0 +1,12 @@ + Differences between map vs unordered_map - Awesome GameDev Resources

Differences between map vs unordered_map

Estimated time to read: 9 minutes

Both std::map and std::unordered_map are associative containers that store key-value pairs, let's have a deep dive into the differences between them.

img.png

Underlying Data Structure:

  • std::map: Implements a balanced binary search tree:
    • Usually a red-black tree, but it is defined by the STL implementation provided by your compiler;
    • Ensures that elements are always sorted, which allows for efficient range queries and ordered traversal;
  • std::unordered_map: Implements a hash table.

    • The elements are not sorted and are stored in buckets based on the hash value of the keys.
  • On a map, if the tree become too deep, it can have performance issues, because it is O(lg(N)) for almost all functions. The jumps between nodes pointers might not be cache friendly.

  • On an unordered_map, the keys are stored as hashes and might have collisions, if it does collide to be stored on the same bucket, the search inside it is linear. Given the size of the bucket is usually small, this search is usually fast.

Complexity:

On a map, when you query, you will pay the price for navigating a tree until you find the element you are searching for. While on a unordered_map you pay the price for the hashing function you use and when it have colision, and pay the price to find an element in a vector that is the bucket.

  • map: query(key) -> navigate tree(might be not cache friendly) -> your value;
  • unordered_map: query(key) -> hash the key(can be costly) -> find the bucket -> linear search in all elements inside the bucket(cache friendly)

Algorithm analysis:

Evaluate the cost of:

  • map:
    1. How many node hops;
    2. How many key comparisons;
    3. Tree indexing can fit in the cache the whole time;
  • unordered_map:
    1. How many CPU cycles the hashing function uses;
    2. How frequent collisions happens;
    3. How many elements you will have in the bucket on average?

Example:

Assume you have \(1024\) elements, a balanced tree can potentially reach 10 levels deep. \(\log_{2}(1024) = 10\) .

In a tree search we will fetch content of pointers 10 times and make 10 key comparisons until we reach the leaves;

If the key is just a pair of int32_t, you can easily implement a hash function that concatenates the bits of one into the another and have a uint64_t value as the key. This shift operation followed by xor is really cheap, but still have a constant cost. If your key is anything more complex, you might face a performance penalty. In this case, the cost here will be 2 basic CPU operations;

After paying the cost of hashing your key, you will have to fetch the content of pointer 1 time to receive the address of an array of elements which is the bucket. Hopefully you just have one element inside it, if not, you will have to iterate inside the bucket array.

In a hashing-bucket approach you pay the cost of hashing funtion, 1 fetch content, and then the linear search inside the bucket array.

So what is better?

a. Jump between memory locations in tree nodes; b. pay the price for a hashing function and then potentially a search inside an array?

Insertion, Query, and Deletion Complexity:

  • std::map:
    • Insertion/Deletion: O(log n)
    • Query: O(log n)
  • std::unordered_map:
    • Average-case complexity (amortized):
      • Insertion/Deletion: O(1)
      • Query: O(1)
    • Worst-case complexity (when dealing with hash collisions):
      • Insertion/Deletion: O(n) in the worst case
      • Query: O(n) in the worst case

Ordered vs. Unordered:

  • std::map maintains order based on the keys, allowing for efficient range queries and ordered traversal of elements.
  • std::unordered_map does not guarantee any specific order of elements.

Memory Overhead:

std::map typically has a higher memory overhead due to the additional structure needed for the balanced binary search tree.

std::unordered_map may have a lower memory overhead, but it can be affected by the load factor and hash collisions.

Use Cases:

Use std::map when you need ordered traversal or range queries and can tolerate slightly slower insertion and deletion. Use std::unordered_map when you need fast average-case constant-time complexity for insertion, deletion, and queries, and the order of elements is not important.

Closing

In summary, the choice between std::map and std::unordered_map depends on the specific requirements of your application. If you need ordered elements and can tolerate slightly slower operations, std::map might be a better choice. If you prioritize fast average-case constant-time operations and the order of elements is not important, std::unordered_map may be more suitable.

I challenge you to implement your own associative container following what you learned here. It is a great exercise to learn how to implement a hash table and a binary search tree. Talk with me via discord if you want to discuss your implementation.

\ No newline at end of file diff --git a/blog/2024/08/19/neurodivergence-in-the-game-development/index.html b/blog/2024/08/19/neurodivergence-in-the-game-development/index.html new file mode 100644 index 00000000..0eccdd04 --- /dev/null +++ b/blog/2024/08/19/neurodivergence-in-the-game-development/index.html @@ -0,0 +1,12 @@ + Neurodivergence in the Game Development - Awesome GameDev Resources

Neurodivergence in the Game Development

Estimated time to read: 18 minutes

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

Depression and Anxiety as hints for deeper issues

Well, if I could say something to my younger self is to understand more about depression and anxiety, it could be symptoms for deeper issues. Those are the first things people note on you, and you can feel them more clearly than the other characteristics. It is pretty common for an atypical person to force itself into a typical box, and it is a recipe for disaster. If you feel that, seek for help! It is not a shame to be different!

Chronic Depression and Anxiety

As a professor, I think that most of my struggling students face some of the following characteristics somehow, and I remember what happened to me too. I was wrongly diagnosed as Depressed and Anxious, but in my case, it was a consequence of my brain trying to force myself into others expectations and failing. So I will list some common symptoms of those chronic issues and how read them.

  • Tiredness: trying to fit can be really draining, and it can lead to tiredness or even exhaustion.
  • Lack of motivation and interest: You feel so tired that just focus on something can become a herculean task. You might feel like you are not interested in anything, but it might be just your brain trying to protect you from the exhaustion.
  • Low self-esteem: As you fail to do what others do, you constantly feel like you are not enough. Thus, you feel hopelessness, worthlessness, pessimist and empty. Have you thought that you might be judging yourself by others standards, and being blind to your own abilities?
  • Sleep problems: it can be the two extremes, sleeping too much or too little. My case: When I didn't understand that on me, I couldn't sleep well, I faint out of exhaustion or even delirious while awake. It was pretty common for me to have headaches for the lack of sleep.
  • Appetite or weight changes: This can be related to Anxiety too. Sometimes you feel so frustrated that you seek for dopamine in food, or you feel so anxious trying to do something that your brain can't focus on eating.
  • Concentration problems: You feel hard do pay attention to things that are not interesting to you or don't connect with you well. For me, this is a consequence of being tired. You can create coping mechanisms to keep at least partially focused such as drawing in class, but it is not sustainable. I have another article about learning techniques. Check it out later.
  • Emotional problems and mood: Sometimes you might feel emotionally unstable. Feeling sad frequently or even not feeling what you know you should feel. You might feel hard to feel empathy and understand others feelings. Or you disconnect from your own feelings. You can be easily irritable just because you are exhausted. Or worse, you feel like you are a robot, and you don't have feelings at all, because you create so many protections around yourself that it is easier to dissociate from your feelings than to deal with them.
  • Pain: You might experience pain differently. In my case, I have a high pain tolerance and don't perceive pain the way most people do. For example, I thought I had merely bumped a toe against the bed while walking at night and went back to sleep. It wasn’t until later when I woke up trembling cold and noticed my foot was purple, so I went to the hospital. The doctors informed me that my foot was fractured in three places and did a surgery. The very next day I was teaching already.
  • Other Physical Symptoms: most common are: constant headaches, digestive problems, or sexual problems (ex.: porn addiction or not interested at all). But it is pretty common to have heart palpitations, sweating, lightheadedness, trouble breathing, nausea, stomach upset, diarrhea, frequent urination, dizziness, and shakiness.

I am no doctor, and I am here just to raise awareness as a person with issues by showing empathy to others and trying to prove that I can understand most of your issues. If you are facing any of those, and you are one of my students, you can count on me to give you extra attempts on assignments or extending due dates. No questions asked. But you have to ask. Deal?

Brain model

img_1.png source

I am no psychologist nor neuroscientist, but I have been studying the brain for a while to understand myself and how to be more effective teacher by helping people like me. But in order to explain my point, I will use a simplified model of the brain. I will use the Freud model.

As far as I could understand about my issues and some o my students, I came to the conclusion that we have a different way to process, store and retrieve information, how we learn, and we have an atypical way to interact with the world.

So, the core issue I could feel is a sheer pressure coming from the rational core towards the other layers, but we forget that conscious is just the emergence of what is happening in the other layers. So, we have to learn to respect and listen to our unconscious and preconscious mind.

It is just like having two people living inside yourself, and they are constantly fighting for control. The rational core is the one that is always trying to fit in, to be like others, to be accepted, to be loved. But the unconscious and preconscious mind are the ones that are trying to protect you, to make you feel safe, to make you feel happy. And if they are in disagreement, you might feel the symptoms I listed above. Does it make sense to you?

Sometimes this fight between these poles can be so intense that you might feel exhausted, and it can lead to depression and anxiety. But I will phrase Jim Carrey:

img_2.png

"Depression is your body saying: 'I don't want to be this character anymore. I don't want to hold up this avatar that you've created in the world. It's too much for me.'";

img_3.png

"I believe depression is legitimate. But I also believe that if you don’t exercise, eat nutritious food, get sunlight, get enough sleep, consume positive material, surround yourself with support, then you aren’t giving yourself a fighting chance."

Protecting your subconscious

Well, what you could do to help yourself? I will list some of the things that helped me and some of my students thrive.

The obvious and direct actions are:

  • Sleep well and track your sleep quality with any mobile app you like, I use Sleep as Android, my kid uses the Pokemon Sleep, it connects to Pokemon GO!.
  • Take sunbathes, at least 15 minutes a day. If you cant, take vitamin D supplements. I go to work by bike, so I take my sunbathes while I am going to work. On days that I can't, I take buses and walk. If you see me around, don't be shy, say hi! I would love it!
  • Eat well, track your food intake with any mobile app you like. Learn to eat healthy even if you distaste it, first you will learn how to tolerate and then you will enjoy it. Avoid sugary food and highly processed food.
  • Drink enough water to help your body clean unwanted substances. I use a 1.5L bottle with time markings to help me to drink enough water throughout the day.
  • Create a support network. It can be through games, sports or anything that might make you be in touch with others. I am currently building an open source system, and I am always in touch with the community.
  • Do outside activities and get some fresh air:

  • Is it raining? Go for it! You can take a shower after that.

  • Is it snowing? Feel the snowflakes in your skin and the urge to maintain your body temperature.
  • Is it sunny? Go to the lake and feel the water in your feet and the sun in your skin.

Those are the building blocks to allow your subconscious to feed your conscious mind. These apparently simple steps help you close the distance between your two selfs. If you feel that something works for you and I didn't list it, please share with me. I would love to learn more about it.

Again. I am just a neurodivergent guy trying to help others like me. Seek professional help if you think you identify with the symptoms I listed above.

My personal take on conceding exceptions to students

As a teacher, I have to follow some rules. While the learning and supporting systems are not ready for people like me, I am do my best to be flexible enough to deal with the differences fairly. The only requirement I ask is: if you are my student and are struggling, please reach me out or just add comments into the assignment online stating that you would request extra time or whatever your case would be. I want you to succeed. The reason is: these tools does not offer a nice way to me to track your particularities or allow me to attach notes to students.

\ No newline at end of file diff --git a/blog/AiTrolleyProblem/what-should-the-self-driving-car-do.webp b/blog/AiTrolleyProblem/what-should-the-self-driving-car-do.webp new file mode 100644 index 00000000..7f66ebbb Binary files /dev/null and b/blog/AiTrolleyProblem/what-should-the-self-driving-car-do.webp differ diff --git a/blog/CppCMakeCPMandSDL3/CLionDebug.png b/blog/CppCMakeCPMandSDL3/CLionDebug.png new file mode 100644 index 00000000..acaa014a Binary files /dev/null and b/blog/CppCMakeCPMandSDL3/CLionDebug.png differ diff --git a/blog/CppCMakeCPMandSDL3/CLionIDE.png b/blog/CppCMakeCPMandSDL3/CLionIDE.png new file mode 100644 index 00000000..64690191 Binary files /dev/null and b/blog/CppCMakeCPMandSDL3/CLionIDE.png differ diff --git a/blog/CppCMakeCPMandSDL3/CLionNewProject.png b/blog/CppCMakeCPMandSDL3/CLionNewProject.png new file mode 100644 index 00000000..33ab2b6d Binary files /dev/null and b/blog/CppCMakeCPMandSDL3/CLionNewProject.png differ diff --git a/blog/CppCMakeCPMandSDL3/CLionRefreshCMake.png b/blog/CppCMakeCPMandSDL3/CLionRefreshCMake.png new file mode 100644 index 00000000..9e80e172 Binary files /dev/null and b/blog/CppCMakeCPMandSDL3/CLionRefreshCMake.png differ diff --git a/blog/CppCMakeCPMandSDL3/CLionWelcome.png b/blog/CppCMakeCPMandSDL3/CLionWelcome.png new file mode 100644 index 00000000..c64d22cd Binary files /dev/null and b/blog/CppCMakeCPMandSDL3/CLionWelcome.png differ diff --git a/blog/CppCMakeCPMandSDL3/MyGame.png b/blog/CppCMakeCPMandSDL3/MyGame.png new file mode 100644 index 00000000..b39275e6 Binary files /dev/null and b/blog/CppCMakeCPMandSDL3/MyGame.png differ diff --git a/blog/MapVsUnorderedMap/img.png b/blog/MapVsUnorderedMap/img.png new file mode 100644 index 00000000..75113857 Binary files /dev/null and b/blog/MapVsUnorderedMap/img.png differ diff --git a/blog/NeuroDivergence/img.png b/blog/NeuroDivergence/img.png new file mode 100644 index 00000000..c91d1c10 Binary files /dev/null and b/blog/NeuroDivergence/img.png differ diff --git a/blog/NeuroDivergence/img_1.png b/blog/NeuroDivergence/img_1.png new file mode 100644 index 00000000..cac6f4c6 Binary files /dev/null and b/blog/NeuroDivergence/img_1.png differ diff --git a/blog/NeuroDivergence/img_2.png b/blog/NeuroDivergence/img_2.png new file mode 100644 index 00000000..f2c26e15 Binary files /dev/null and b/blog/NeuroDivergence/img_2.png differ diff --git a/blog/NeuroDivergence/img_3.png b/blog/NeuroDivergence/img_3.png new file mode 100644 index 00000000..26ba4856 Binary files /dev/null and b/blog/NeuroDivergence/img_3.png differ diff --git a/blog/NotesOnSubmissions/ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg b/blog/NotesOnSubmissions/ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg new file mode 100644 index 00000000..9417af1d Binary files /dev/null and b/blog/NotesOnSubmissions/ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg differ diff --git a/blog/archive/2023/index.html b/blog/archive/2023/index.html new file mode 100644 index 00000000..002c5249 --- /dev/null +++ b/blog/archive/2023/index.html @@ -0,0 +1,12 @@ + 2023 - Awesome GameDev Resources

2023

Estimated time to read: 1 minute

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

FERPA consent form

\ No newline at end of file diff --git a/blog/archive/2024/index.html b/blog/archive/2024/index.html new file mode 100644 index 00000000..480eda9a --- /dev/null +++ b/blog/archive/2024/index.html @@ -0,0 +1,12 @@ + 2024 - Awesome GameDev Resources

2024

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/academic-honesty/index.html b/blog/category/academic-honesty/index.html new file mode 100644 index 00000000..b626fd79 --- /dev/null +++ b/blog/category/academic-honesty/index.html @@ -0,0 +1,12 @@ + academic honesty - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/adhd/index.html b/blog/category/adhd/index.html new file mode 100644 index 00000000..6026043a --- /dev/null +++ b/blog/category/adhd/index.html @@ -0,0 +1,12 @@ + adhd - Awesome GameDev Resources

adhd

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/ai/index.html b/blog/category/ai/index.html new file mode 100644 index 00000000..3d4a4b67 --- /dev/null +++ b/blog/category/ai/index.html @@ -0,0 +1,12 @@ + ai - Awesome GameDev Resources

ai

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/algorithms/index.html b/blog/category/algorithms/index.html new file mode 100644 index 00000000..c02996ff --- /dev/null +++ b/blog/category/algorithms/index.html @@ -0,0 +1,12 @@ + algorithms - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/augmented-reality/index.html b/blog/category/augmented-reality/index.html new file mode 100644 index 00000000..f481fa08 --- /dev/null +++ b/blog/category/augmented-reality/index.html @@ -0,0 +1,12 @@ + augmented reality - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/augmented-virtuality/index.html b/blog/category/augmented-virtuality/index.html new file mode 100644 index 00000000..714f838d --- /dev/null +++ b/blog/category/augmented-virtuality/index.html @@ -0,0 +1,12 @@ + augmented virtuality - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/autism/index.html b/blog/category/autism/index.html new file mode 100644 index 00000000..99071d99 --- /dev/null +++ b/blog/category/autism/index.html @@ -0,0 +1,12 @@ + autism - Awesome GameDev Resources

autism

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/bitfield/index.html b/blog/category/bitfield/index.html new file mode 100644 index 00000000..7e78450c --- /dev/null +++ b/blog/category/bitfield/index.html @@ -0,0 +1,12 @@ + bitfield - Awesome GameDev Resources

bitfield

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/c/index.html b/blog/category/c/index.html new file mode 100644 index 00000000..7a5264c3 --- /dev/null +++ b/blog/category/c/index.html @@ -0,0 +1,12 @@ + c++ - Awesome GameDev Resources

c++

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/cache/index.html b/blog/category/cache/index.html new file mode 100644 index 00000000..a935453f --- /dev/null +++ b/blog/category/cache/index.html @@ -0,0 +1,12 @@ + cache - Awesome GameDev Resources

cache

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/canvas/index.html b/blog/category/canvas/index.html new file mode 100644 index 00000000..3c63924c --- /dev/null +++ b/blog/category/canvas/index.html @@ -0,0 +1,12 @@ + canvas - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/chatgpt/index.html b/blog/category/chatgpt/index.html new file mode 100644 index 00000000..42c12ff7 --- /dev/null +++ b/blog/category/chatgpt/index.html @@ -0,0 +1,12 @@ + chatgpt - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/clion/index.html b/blog/category/clion/index.html new file mode 100644 index 00000000..faf86292 --- /dev/null +++ b/blog/category/clion/index.html @@ -0,0 +1,12 @@ + clion - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/cmake/index.html b/blog/category/cmake/index.html new file mode 100644 index 00000000..6a0a34c1 --- /dev/null +++ b/blog/category/cmake/index.html @@ -0,0 +1,12 @@ + cmake - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/cpm/index.html b/blog/category/cpm/index.html new file mode 100644 index 00000000..d143ec8f --- /dev/null +++ b/blog/category/cpm/index.html @@ -0,0 +1,12 @@ + cpm - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/data-structures/index.html b/blog/category/data-structures/index.html new file mode 100644 index 00000000..aba865b3 --- /dev/null +++ b/blog/category/data-structures/index.html @@ -0,0 +1,12 @@ + data structures - Awesome GameDev Resources

data structures

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/ferpa/index.html b/blog/category/ferpa/index.html new file mode 100644 index 00000000..12b4dfa8 --- /dev/null +++ b/blog/category/ferpa/index.html @@ -0,0 +1,12 @@ + ferpa - Awesome GameDev Resources

ferpa

Estimated time to read: 1 minute

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

FERPA consent form

\ No newline at end of file diff --git a/blog/category/gamedev/index.html b/blog/category/gamedev/index.html new file mode 100644 index 00000000..131a5ec6 --- /dev/null +++ b/blog/category/gamedev/index.html @@ -0,0 +1,12 @@ + gamedev - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/giftedness/index.html b/blog/category/giftedness/index.html new file mode 100644 index 00000000..54b38231 --- /dev/null +++ b/blog/category/giftedness/index.html @@ -0,0 +1,12 @@ + giftedness - Awesome GameDev Resources

giftedness

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/github-copilot/index.html b/blog/category/github-copilot/index.html new file mode 100644 index 00000000..6ecaf470 --- /dev/null +++ b/blog/category/github-copilot/index.html @@ -0,0 +1,12 @@ + github copilot - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/high-abilities/index.html b/blog/category/high-abilities/index.html new file mode 100644 index 00000000..6ed7bca9 --- /dev/null +++ b/blog/category/high-abilities/index.html @@ -0,0 +1,12 @@ + high abilities - Awesome GameDev Resources

high abilities

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/map/index.html b/blog/category/map/index.html new file mode 100644 index 00000000..7224caf6 --- /dev/null +++ b/blog/category/map/index.html @@ -0,0 +1,12 @@ + map - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/maze-generation/index.html b/blog/category/maze-generation/index.html new file mode 100644 index 00000000..7c6101e5 --- /dev/null +++ b/blog/category/maze-generation/index.html @@ -0,0 +1,12 @@ + maze generation - Awesome GameDev Resources

maze generation

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/maze/index.html b/blog/category/maze/index.html new file mode 100644 index 00000000..63482631 --- /dev/null +++ b/blog/category/maze/index.html @@ -0,0 +1,12 @@ + maze - Awesome GameDev Resources

maze

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/memory/index.html b/blog/category/memory/index.html new file mode 100644 index 00000000..188bc5b1 --- /dev/null +++ b/blog/category/memory/index.html @@ -0,0 +1,12 @@ + memory - Awesome GameDev Resources

memory

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/mixed-reality/index.html b/blog/category/mixed-reality/index.html new file mode 100644 index 00000000..d92abf95 --- /dev/null +++ b/blog/category/mixed-reality/index.html @@ -0,0 +1,12 @@ + mixed Reality - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/moss/index.html b/blog/category/moss/index.html new file mode 100644 index 00000000..a349f0a5 --- /dev/null +++ b/blog/category/moss/index.html @@ -0,0 +1,12 @@ + moss - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/neuro-divergence/index.html b/blog/category/neuro-divergence/index.html new file mode 100644 index 00000000..e99d14a6 --- /dev/null +++ b/blog/category/neuro-divergence/index.html @@ -0,0 +1,12 @@ + neuro divergence - Awesome GameDev Resources

neuro divergence

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/optimization/index.html b/blog/category/optimization/index.html new file mode 100644 index 00000000..4254a7c2 --- /dev/null +++ b/blog/category/optimization/index.html @@ -0,0 +1,12 @@ + optimization - Awesome GameDev Resources

optimization

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/philosophy/index.html b/blog/category/philosophy/index.html new file mode 100644 index 00000000..e43cd2d1 --- /dev/null +++ b/blog/category/philosophy/index.html @@ -0,0 +1,12 @@ + philosophy - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/plagiarism/index.html b/blog/category/plagiarism/index.html new file mode 100644 index 00000000..5b3bc155 --- /dev/null +++ b/blog/category/plagiarism/index.html @@ -0,0 +1,12 @@ + plagiarism - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/privacy/index.html b/blog/category/privacy/index.html new file mode 100644 index 00000000..0f52d026 --- /dev/null +++ b/blog/category/privacy/index.html @@ -0,0 +1,12 @@ + privacy - Awesome GameDev Resources

privacy

Estimated time to read: 1 minute

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

FERPA consent form

\ No newline at end of file diff --git a/blog/category/sdl2/index.html b/blog/category/sdl2/index.html new file mode 100644 index 00000000..8112b646 --- /dev/null +++ b/blog/category/sdl2/index.html @@ -0,0 +1,12 @@ + sdl2 - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/sdl3/index.html b/blog/category/sdl3/index.html new file mode 100644 index 00000000..acd6fa95 --- /dev/null +++ b/blog/category/sdl3/index.html @@ -0,0 +1,12 @@ + sdl3 - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/teaching/index.html b/blog/category/teaching/index.html new file mode 100644 index 00000000..4debeaa7 --- /dev/null +++ b/blog/category/teaching/index.html @@ -0,0 +1,12 @@ + teaching - Awesome GameDev Resources

teaching

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

\ No newline at end of file diff --git a/blog/category/turnitin/index.html b/blog/category/turnitin/index.html new file mode 100644 index 00000000..8d68569b --- /dev/null +++ b/blog/category/turnitin/index.html @@ -0,0 +1,12 @@ + turnitin - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/unordered_map/index.html b/blog/category/unordered_map/index.html new file mode 100644 index 00000000..bebc315a --- /dev/null +++ b/blog/category/unordered_map/index.html @@ -0,0 +1,12 @@ + unordered_map - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/category/vector/index.html b/blog/category/vector/index.html new file mode 100644 index 00000000..4c8aef11 --- /dev/null +++ b/blog/category/vector/index.html @@ -0,0 +1,12 @@ + vector - Awesome GameDev Resources

vector

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/blog/category/virtual-reality/index.html b/blog/category/virtual-reality/index.html new file mode 100644 index 00000000..1b205760 --- /dev/null +++ b/blog/category/virtual-reality/index.html @@ -0,0 +1,12 @@ + virtual reality - Awesome GameDev Resources
\ No newline at end of file diff --git a/blog/index.html b/blog/index.html new file mode 100644 index 00000000..fc8b03ff --- /dev/null +++ b/blog/index.html @@ -0,0 +1,12 @@ + Blog - Awesome GameDev Resources

Blog

Estimated time to read: 1 minute

Neurodivergence in the Game Development

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

img.png

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

FERPA consent form

\ No newline at end of file diff --git a/dojo/Full-Cycle-SDL-Development/index.html b/dojo/Full-Cycle-SDL-Development/index.html new file mode 100644 index 00000000..02ccf988 --- /dev/null +++ b/dojo/Full-Cycle-SDL-Development/index.html @@ -0,0 +1,64 @@ + Full Cycle Cross-platform Game Development with SDL, CMAKE and GitHub - Awesome GameDev Resources

Full Cycle Cross-platform Game Development with SDL, CMAKE and GitHub

Estimated time to read: 10 minutes

This Dojo is focused in training professionals on setting up a full cycle project using SDL, CMAKE and GitHub actions.

Agenda:

  • Introduction (5 minutes): The facilitator introduces the coding dojo and the goal of the session, which is to create a CMake build system for an SDL project using GitHub Actions.
  • Warm-up exercise (10 minutes): A brief exercise is conducted to get participants warmed up and familiar with SDL and CMake.
  • Setting up the project (30 minutes): Participants work in pairs or small groups to clone the SDL project from GitHub and create a CMake build system for it.
  • Adding GitHub Actions (30 minutes): Participants continue to work on their CMake build systems and add GitHub Actions to automate the build and test process.
  • Review and discussion (10 minutes): Participants share their solutions and discuss the various approaches taken to create the CMake build system and implement GitHub Actions.
  • Retrospective (5 minutes): Participants reflect on the session and provide feedback on what went well and what could be improved for future sessions.
  • Closing (5 minutes): The facilitator concludes the session and thanks the participants for their contributions.

Introduction

Warm-up

  • Write down what do you expect from this Dojo here;

Setup

You can either fork Modern CPP Starter Repo (and star it) or create your own from scratch.

Ensure that you have the following software installed in your machine:

  • C++ Compiler. Ex.: GCC(build-essential, and cmake) on Linux, MS Visual Studio on Windows(select C++ and in additional tools, select cmake), Command Line Tools for OSX.
  • Git. Ex.: Gitkraken(free for students);
  • IDE. Ex.: Clion(free for students);
  • CMake. Ex.: cmake-gui, but clion already bundle it for you.

Action

1. Clone.

Clone your repository you created or forked in the last step (Modern CPP Starter Repo);

2. CMake Glob

Edit your CMakeLists.txt to glob your files (naive and powerful approach). Example:

Minimum CMake:

cmake_minimum_required(VERSION 3.25)
+project(MY_PROJECT)
+set(CMAKE_CXX_STANDARD 17)
+add_executable(mygamename main.cpp)
+
Add a GLOB to search for four files.
file(GLOB MY_INCLUDES # Rename this variable
+        CONFIGURE_DEPENDS
+        ${CMAKE_CURRENT_SOURCE_DIR}/*.h
+        ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp
+        )
+
+file(GLOB MY_SOURCE # Rename this variable
+        CONFIGURE_DEPENDS
+        ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/*.c
+        )
+
Then edit your last line to use the result of it as the sources for your executable.
add_executable(mygamename ${MY_SOURCE} ${MY_INCLUDE})
+

3. CPM

Add code for the package manager CPM.

Read their example and how do you download it. Optionally, you can download it dynamically, this is the way I prefer.;

4. SDL dependency

Use CPM to download your dependencies. Please refer to this issue comment for an example. If you want to see something already done, check this one;

5. Linking

Link your executable to SDL;

target_link_libraries(mygamename PUBLIC SDL2)
+
You can see it in action here. In this example, we include the external cmake file manage that. It is a good practice to do that.

6. Optional: ImGUI

ImGui for debugging interface purposes;

Use CPM to download ImGUI and link it to your library. Example - You can optionally remove the static link if you want. https://github.com/InfiniBrains/SDL2-CPM-CMake-Example/blob/main/main.cpp

Link your executable to IMGUI

target_link_libraries(mygamename PUBLIC SDL2 IMGUI)
+

7. It is GAME time!

Copy this example here to your main.cpp if you are going do use ImGUI or just use something like this:

#include <stdio.h>
+
+#include "SDL.h"
+
+int main()
+{
+    if(SDL_Init(SDL_INIT_VIDEO) != 0) {
+        fprintf(stderr, "Could not init SDL: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_Window *screen = SDL_CreateWindow("My application",
+            SDL_WINDOWPOS_UNDEFINED,
+            SDL_WINDOWPOS_UNDEFINED,
+            640, 480,
+            0);
+    if(!screen) {
+        fprintf(stderr, "Could not create window\n");
+        return 1;
+    }
+    SDL_Renderer *renderer = SDL_CreateRenderer(screen, -1, SDL_RENDERER_SOFTWARE);
+    if(!renderer) {
+        fprintf(stderr, "Could not create renderer\n");
+        return 1;
+    }
+
+    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
+    SDL_RenderClear(renderer);
+    SDL_RenderPresent(renderer);
+    SDL_Delay(3000);
+
+    SDL_DestroyWindow(screen);
+    SDL_Quit();
+    return 0;
+}
+

8. Github Actions.

Create folder .github and inside it another one workflows. Inside it create a .yml file.

Here you will code declaratively how your build should proceed. The basic steps are usually: Clone, Cache, Install dependencies, Configure, Build, Test and Release conditionally to branch.

Check and try to reproduce the same thing you see here.

If you are following the Modern CPP Starter Repo, you can explore automated tests. Be my guest and try it.

Review

How far you went? Share your repos here.

Retrospective

Please give me feedbacks in what we did today. If you like or have something to improve, say something in here. Ah! you can always fork this repo, improve it and send a pull request back to this repo.

Closing

Give stars to all repos you saw here as a way to contribute to the continuity of the project. say thanks

Propose a new Dojo and be in touch. Discord

\ No newline at end of file diff --git a/dojo/The-most-asked-interview-question/index.html b/dojo/The-most-asked-interview-question/index.html new file mode 100644 index 00000000..df5894c3 --- /dev/null +++ b/dojo/The-most-asked-interview-question/index.html @@ -0,0 +1,12 @@ + The most asked interview question - Awesome GameDev Resources

The most asked interview question

Estimated time to read: 5 minutes

Arguably, the most asked question in coding interviews is the Two Number Sum. It is used by many Bigtechs and AAA Game Studios. You can see this question in many youtube videos, coding websites such as hackerank, leetcode, algoexpert ...

Agenda: Two Number Sum Coding Dojo

Introduction (5 minutes)

  1. Welcome participants to the dojo
  2. Introduce the Two Number Sum question as a common coding interview question
  3. Discuss the importance of problem-solving skills in coding interviews
  4. Briefly explain the rules and structure of the dojo
  5. Problem Explanation (10 minutes)

Provide a brief overview of the Two Number Sum question

  1. Define the problem and its requirements
  2. Discuss potential edge cases and constraints
  3. Review sample inputs and expected outputs
  4. Coding Session (50 minutes)

Problem restrictions and characterization

Write a function that will receive an array/vector/list of integers and a target number. Find two numbers inside the array that summed will match the target. You have to return both in a array/vector/list ordered.

Implement the solution in 3 different ways. Open the details only after you try. First approach:

1. Naive solution. O(N^2) time and O(1) space; - required to know this;

Can you make it faster?

2. Fastest solution. O(N) time and O(N) space; - this will make you

Can you make it not use much memory, but still be fast?

3. Fastest without mem allocation. O(N*log(N)) time and O(1) space;

Participants work on solving the Two Number Sum problem in pairs or small groups

  1. Emphasize the importance of communication and collaboration during the coding session
  2. Encourage participants to use a whiteboard or paper to sketch out their solutions
  3. Provide guidance and support as needed
  4. Code Review (20 minutes)

Participants share their solutions with the group

  1. Facilitate a discussion about each solution, highlighting strengths and areas for improvement
  2. Encourage participants to ask questions and provide feedback to their peers
  3. Discuss potential optimizations and alternative approaches to the problem
  4. Wrap-Up (5 minutes)

Recap the main takeaways from the dojo

  1. Encourage participants to continue practicing problem-solving skills on their own
  2. Thank participants for attending the dojo and provide any additional resources or support as needed.
  3. Note: The time allocation can be adjusted based on the group's needs and pace.
\ No newline at end of file diff --git a/dojo/index.html b/dojo/index.html new file mode 100644 index 00000000..9cdad940 --- /dev/null +++ b/dojo/index.html @@ -0,0 +1,12 @@ + Coding Dojo Definition - Awesome GameDev Resources

Coding Dojo Definition

Estimated time to read: 3 minutes

A coding dojo is a programming practice that involves a group of developers coming together to collaborate on solving coding challenges. It is a learning and collaborative environment where developers can improve their coding skills and work on real-world coding problems.

The term "dojo" comes from the Japanese term for place of the way, which is a traditional place of training for martial arts. In a coding dojo, participants practice the skills they have learned, exchange knowledge and experience, and work together to solve programming challenges.

During a coding dojo session, participants work in pairs or small groups to solve programming challenges, using techniques such as pair programming and test-driven development. They work through the problem step by step, discussing and sharing their ideas and approaches along the way. The goal of a coding dojo is to improve individual and team coding skills, and to learn from each other's experiences.

Timeline Structure

  • Introduction (5 minutes): The facilitator introduces the coding dojo and the coding challenge for the session.
  • Warm-up exercise (10 minutes): A brief exercise is conducted to get participants warmed up and ready for the coding challenge.
  • Coding challenge (60 minutes): Participants work in pairs or small groups to solve the coding challenge using techniques such as pair programming and test-driven development.
  • Review and discussion (15 minutes): Participants share their solutions and discuss the various approaches taken to solve the challenge.
  • Retrospective (10 minutes): Participants reflect on the session and provide feedback on what went well and what could be improved for future sessions.
  • Closing (5 minutes): The facilitator concludes the session and thanks the participants for their contributions.
\ No newline at end of file diff --git a/feed_json_created.json b/feed_json_created.json new file mode 100644 index 00000000..ace1e1bf --- /dev/null +++ b/feed_json_created.json @@ -0,0 +1 @@ +{"version": "https://jsonfeed.org/version/1", "title": "Awesome GameDev Resources", "home_page_url": "https://courses.tolstenko.net/", "feed_url": "https://courses.tolstenko.net/feed_json_created.json", "description": "Awesome GameDev Resources for learning how to make games", "icon": null, "authors": [{"name": "See contributors and authors at https://github.com/InfiniBrains/Awesome-GameDev-Resources/graphs/contributors"}], "language": "en", "items": [{"id": "https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/", "url": "https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/", "title": "Neurodivergence in the Game Development", "content_html": "

Neurodivergence in the Game Development

\n

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

\n

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

\n

\"img.png\"

\n

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/NeuroDivergence/NeuroDivergence.png", "date_published": "2024-08-19T16:00:00+00:00", "authors": [{"name": "tolstenko"}], "tags": ["adhd", "autism", "giftedness", "high abilities", "neuro divergence", "teaching"]}, {"id": "https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/", "url": "https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/", "title": "Differences between map vs unordered_map", "content_html": "

Differences between map vs unordered_map

\n

Both std::map and std::unordered_map are associative containers that store key-value pairs, let's have a deep dive into the differences between them.

\n

\"img.png\"

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/MapVsUnorderedMap/MapVsUnorderedMap.png", "date_published": "2024-01-29T16:14:00+00:00", "authors": [{"name": "tolstenko"}], "tags": ["algorithms", "c++", "cache", "data structures", "map", "memory", "optimization", "unordered_map"]}, {"id": "https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/", "url": "https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/", "title": "Memory-efficient Data Structure for Procedural Maze Generation", "content_html": "

Memory-efficient Data Structure for Procedural Maze Generation

\n

In this post, you will learn how to create a memory-efficient data structure for maze generation. We will jump from a 320 bits data structure to just 2! It is achieved by taking a bunch of clever decisions, changing the referential and doing some math. Be warned, this not for the fainted hearts. Are you brave enough?

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/MazeDataStructure/MazeDataStructures.png", "date_published": "2023-10-02T23:00:00+00:00", "authors": [{"name": "tolstenko"}], "tags": ["bitfield", "c++", "cache", "data structures", "maze", "maze generation", "memory", "optimization", "vector"]}, {"id": "https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/", "url": "https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/", "title": "Setup SDL with CMake and CPM", "content_html": "

Setup SDL with CMake and CPM

\n

In my opinion, the minimum toolset needed to give you the ability to start creating games cross-platform from scratch is the combination of the following tools:

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/CppCMakeCPMandSDL3/CppCmakeCPMandSDL3.png", "date_published": "2023-09-09T03:11:08.658000+00:00", "authors": [{"name": "tolstenko"}], "tags": ["c++", "clion", "cmake", "cpm", "gamedev", "sdl2", "sdl3"]}, {"id": "https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/", "url": "https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/", "title": "FERPA Consent", "content_html": "

FERPA Consent

\n

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

\n

FERPA consent form

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/FerpaCompliance/FerpaCompliance.png", "date_published": "2023-08-30T18:00:00+00:00", "authors": [{"name": "tolstenko"}], "tags": ["ferpa", "privacy"]}, {"id": "https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/", "url": "https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/", "title": "Notes on Submissions", "content_html": "

Notes on Submissions

\n
\n ![](ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg){ width=\"300\" align=center loading=lazy }\n
Source: ideogram
\n
\n\n

Here are my personal opinions, rules and processes that I follow about submissions. I will cover gradings, deadlines, tolerances, and AI-assistant tools usage.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/NotesOnSubmissions/NotesOnSubmissions.png", "date_published": "2023-08-24T16:40:00+00:00", "authors": [{"name": "tolstenko"}], "tags": ["academic honesty", "ai", "canvas", "chatgpt", "github copilot", "moss", "plagiarism", "teaching", "turnitin"]}, {"id": "https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/", "url": "https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/", "title": "Let's talk about Virtual Reality", "content_html": "

Let's talk about Virtual Reality

\n

The goal of this article is not be a comprehensive guide about Virtual Reality, but to give you a general sense of what it is and how it works. I will also give you some examples of how it is being used today and what we can expect for the future.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/MixedReality/MixedReality.png", "date_published": "2023-08-09T16:00:00+00:00", "authors": [{"name": "tolstenko"}], "tags": ["augmented reality", "augmented virtuality", "mixed Reality", "virtual reality"]}, {"id": "https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/", "url": "https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/", "title": "The problem with AI Trolley dilemma", "content_html": "

The problem with AI Trolley dilemma

\n

\"What

\n

The premise about the AI trolley dilemma is invalid. So the whole discussion about who should the car kill in a fatal situation. Let me explain why.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/AiTrolleyProblem/AiTrolleyProblem.png", "date_published": "2023-07-28T18:42:39+00:00", "authors": [{"name": "tolstenko"}], "tags": ["ai", "philosophy"]}]} \ No newline at end of file diff --git a/feed_json_updated.json b/feed_json_updated.json new file mode 100644 index 00000000..4b000249 --- /dev/null +++ b/feed_json_updated.json @@ -0,0 +1 @@ +{"version": "https://jsonfeed.org/version/1", "title": "Awesome GameDev Resources", "home_page_url": "https://courses.tolstenko.net/", "feed_url": "https://courses.tolstenko.net/feed_json_updated.json", "description": "Awesome GameDev Resources for learning how to make games", "icon": null, "authors": [{"name": "See contributors and authors at https://github.com/InfiniBrains/Awesome-GameDev-Resources/graphs/contributors"}], "language": "en", "items": [{"id": "https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/", "url": "https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/", "title": "Neurodivergence in the Game Development", "content_html": "

Neurodivergence in the Game Development

\n

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

\n

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

\n

\"img.png\"

\n

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/NeuroDivergence/NeuroDivergence.png", "date_modified": "2024-08-30T13:38:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["adhd", "autism", "giftedness", "high abilities", "neuro divergence", "teaching"]}, {"id": "https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/", "url": "https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/", "title": "The problem with AI Trolley dilemma", "content_html": "

The problem with AI Trolley dilemma

\n

\"What

\n

The premise about the AI trolley dilemma is invalid. So the whole discussion about who should the car kill in a fatal situation. Let me explain why.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/AiTrolleyProblem/AiTrolleyProblem.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["ai", "philosophy"]}, {"id": "https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/", "url": "https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/", "title": "Setup SDL with CMake and CPM", "content_html": "

Setup SDL with CMake and CPM

\n

In my opinion, the minimum toolset needed to give you the ability to start creating games cross-platform from scratch is the combination of the following tools:

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/CppCMakeCPMandSDL3/CppCmakeCPMandSDL3.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["c++", "clion", "cmake", "cpm", "gamedev", "sdl2", "sdl3"]}, {"id": "https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/", "url": "https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/", "title": "FERPA Consent", "content_html": "

FERPA Consent

\n

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

\n

FERPA consent form

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/FerpaCompliance/FerpaCompliance.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["ferpa", "privacy"]}, {"id": "https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/", "url": "https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/", "title": "Differences between map vs unordered_map", "content_html": "

Differences between map vs unordered_map

\n

Both std::map and std::unordered_map are associative containers that store key-value pairs, let's have a deep dive into the differences between them.

\n

\"img.png\"

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/MapVsUnorderedMap/MapVsUnorderedMap.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["algorithms", "c++", "cache", "data structures", "map", "memory", "optimization", "unordered_map"]}, {"id": "https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/", "url": "https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/", "title": "Memory-efficient Data Structure for Procedural Maze Generation", "content_html": "

Memory-efficient Data Structure for Procedural Maze Generation

\n

In this post, you will learn how to create a memory-efficient data structure for maze generation. We will jump from a 320 bits data structure to just 2! It is achieved by taking a bunch of clever decisions, changing the referential and doing some math. Be warned, this not for the fainted hearts. Are you brave enough?

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/MazeDataStructure/MazeDataStructures.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["bitfield", "c++", "cache", "data structures", "maze", "maze generation", "memory", "optimization", "vector"]}, {"id": "https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/", "url": "https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/", "title": "Let's talk about Virtual Reality", "content_html": "

Let's talk about Virtual Reality

\n

The goal of this article is not be a comprehensive guide about Virtual Reality, but to give you a general sense of what it is and how it works. I will also give you some examples of how it is being used today and what we can expect for the future.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/MixedReality/MixedReality.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["augmented reality", "augmented virtuality", "mixed Reality", "virtual reality"]}, {"id": "https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/", "url": "https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/", "title": "Notes on Submissions", "content_html": "

Notes on Submissions

\n
\n ![](ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg){ width=\"300\" align=center loading=lazy }\n
Source: ideogram
\n
\n\n

Here are my personal opinions, rules and processes that I follow about submissions. I will cover gradings, deadlines, tolerances, and AI-assistant tools usage.

", "image": "https://courses.tolstenko.net/assets/images/social/blog/posts/NotesOnSubmissions/NotesOnSubmissions.png", "date_modified": "2024-08-28T01:42:58+00:00", "authors": [{"name": "tolstenko"}], "tags": ["academic honesty", "ai", "canvas", "chatgpt", "github copilot", "moss", "plagiarism", "teaching", "turnitin"]}]} \ No newline at end of file diff --git a/feed_rss_created.xml b/feed_rss_created.xml new file mode 100644 index 00000000..c4b8ad83 --- /dev/null +++ b/feed_rss_created.xml @@ -0,0 +1 @@ + Awesome GameDev ResourcesAwesome GameDev Resources for learning how to make gameshttps://courses.tolstenko.net/See contributors and authors at https://github.com/InfiniBrains/Awesome-GameDev-Resources/graphs/contributorshttps://github.com/InfiniBrains/Awesome-GameDev-Resourcesen Mon, 16 Sep 2024 05:05:09 -0000 Mon, 16 Sep 2024 05:05:09 -0000 1440 MkDocs RSS plugin - v1.15.0 Neurodivergence in the Game Development tolstenko adhd autism giftedness high abilities neuro divergence teaching <h1>Neurodivergence in the Game Development</h1><p>Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.</p><p>IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out <a href="https://igda-website.s3.us-east-2.amazonaws.com/wp-content/uploads/2024/05/01161842/2023-04-14_IGSA-DSS-2023_SummaryReport.pdf">here</a> the full report.</p><p><img alt="img.png" src="img.png"></p><p>The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.</p>https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/ Mon, 19 Aug 2024 16:00:00 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/#__commentshttps://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/ Differences between map vs unordered_map tolstenko algorithms c++ cache data structures map memory optimization unordered_map <h1>Differences between map vs unordered_map</h1><p>Both <code>std::map</code> and <code>std::unordered_map</code> are associative containers that store key-value pairs, let's have a deep dive into the differences between them.</p><p><img alt="img.png" src="img.png"></p>https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/ Mon, 29 Jan 2024 16:14:00 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/#__commentshttps://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/ Memory-efficient Data Structure for Procedural Maze Generation tolstenko bitfield c++ cache data structures maze maze generation memory optimization vector <h1>Memory-efficient Data Structure for Procedural Maze Generation</h1><p>In this post, you will learn how to create a memory-efficient data structure for maze generation. We will jump from a 320 bits data structure to just 2! It is achieved by taking a bunch of clever decisions, changing the referential and doing some math. Be warned, this not for the fainted hearts. Are you brave enough? </p>https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/ Mon, 02 Oct 2023 23:00:00 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/#__commentshttps://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/ Setup SDL with CMake and CPM tolstenko c++ clion cmake cpm gamedev sdl2 sdl3 <h1>Setup SDL with CMake and CPM</h1><p>In my opinion, the minimum toolset needed to give you the ability to start creating games cross-platform from scratch is the combination of the following tools:</p>https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/ Sat, 09 Sep 2023 03:11:08 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/#__commentshttps://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/ FERPA Consent tolstenko ferpa privacy <h1>FERPA Consent</h1><p>FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.</p><p><a href="https://forms.gle/JzMiytNsFWDeBGc4A">FERPA consent form</a></p>https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/ Wed, 30 Aug 2023 18:00:00 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/#__commentshttps://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/ Notes on Submissions tolstenko academic honesty ai canvas chatgpt github copilot moss plagiarism teaching turnitin <h1>Notes on Submissions</h1><figure markdown> ![](ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg){ width="300" align=center loading=lazy } <figcaption> Source: ideogram </figcaption></figure><p>Here are my personal opinions, rules and processes that I follow about submissions. I will cover gradings, deadlines, tolerances, and AI-assistant tools usage.</p>https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/ Thu, 24 Aug 2023 16:40:00 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/#__commentshttps://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/ Let's talk about Virtual Reality tolstenko augmented reality augmented virtuality mixed Reality virtual reality <h1>Let's talk about Virtual Reality</h1><p>The goal of this article is not be a comprehensive guide about Virtual Reality, but to give you a general sense of what it is and how it works. I will also give you some examples of how it is being used today and what we can expect for the future.</p>https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/ Wed, 09 Aug 2023 16:00:00 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/#__commentshttps://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/ The problem with AI Trolley dilemma tolstenko ai philosophy <h1>The problem with AI Trolley dilemma</h1><p><a href="https://techcrunch.com/2016/10/04/did-you-save-the-cat-or-the-kid/"><img alt="What the self-driving car do?" src="what-should-the-self-driving-car-do.webp"></a></p><p>The premise about the AI trolley dilemma is invalid. So the whole discussion about who should the car kill in a fatal situation. Let me explain why.</p>https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/ Fri, 28 Jul 2023 18:42:39 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/#__commentshttps://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/ \ No newline at end of file diff --git a/feed_rss_updated.xml b/feed_rss_updated.xml new file mode 100644 index 00000000..a3d259b7 --- /dev/null +++ b/feed_rss_updated.xml @@ -0,0 +1 @@ + Awesome GameDev ResourcesAwesome GameDev Resources for learning how to make gameshttps://courses.tolstenko.net/See contributors and authors at https://github.com/InfiniBrains/Awesome-GameDev-Resources/graphs/contributorshttps://github.com/InfiniBrains/Awesome-GameDev-Resourcesen Mon, 16 Sep 2024 05:05:09 -0000 Mon, 16 Sep 2024 05:05:09 -0000 1440 MkDocs RSS plugin - v1.15.0 Neurodivergence in the Game Development tolstenko adhd autism giftedness high abilities neuro divergence teaching <h1>Neurodivergence in the Game Development</h1><p>Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.</p><p>IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out <a href="https://igda-website.s3.us-east-2.amazonaws.com/wp-content/uploads/2024/05/01161842/2023-04-14_IGSA-DSS-2023_SummaryReport.pdf">here</a> the full report.</p><p><img alt="img.png" src="img.png"></p><p>The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.</p>https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/ Fri, 30 Aug 2024 13:38:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/#__commentshttps://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/ The problem with AI Trolley dilemma tolstenko ai philosophy <h1>The problem with AI Trolley dilemma</h1><p><a href="https://techcrunch.com/2016/10/04/did-you-save-the-cat-or-the-kid/"><img alt="What the self-driving car do?" src="what-should-the-self-driving-car-do.webp"></a></p><p>The premise about the AI trolley dilemma is invalid. So the whole discussion about who should the car kill in a fatal situation. Let me explain why.</p>https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/#__commentshttps://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/ Setup SDL with CMake and CPM tolstenko c++ clion cmake cpm gamedev sdl2 sdl3 <h1>Setup SDL with CMake and CPM</h1><p>In my opinion, the minimum toolset needed to give you the ability to start creating games cross-platform from scratch is the combination of the following tools:</p>https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/#__commentshttps://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/ FERPA Consent tolstenko ferpa privacy <h1>FERPA Consent</h1><p>FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.</p><p><a href="https://forms.gle/JzMiytNsFWDeBGc4A">FERPA consent form</a></p>https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/#__commentshttps://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/ Differences between map vs unordered_map tolstenko algorithms c++ cache data structures map memory optimization unordered_map <h1>Differences between map vs unordered_map</h1><p>Both <code>std::map</code> and <code>std::unordered_map</code> are associative containers that store key-value pairs, let's have a deep dive into the differences between them.</p><p><img alt="img.png" src="img.png"></p>https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/#__commentshttps://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/ Memory-efficient Data Structure for Procedural Maze Generation tolstenko bitfield c++ cache data structures maze maze generation memory optimization vector <h1>Memory-efficient Data Structure for Procedural Maze Generation</h1><p>In this post, you will learn how to create a memory-efficient data structure for maze generation. We will jump from a 320 bits data structure to just 2! It is achieved by taking a bunch of clever decisions, changing the referential and doing some math. Be warned, this not for the fainted hearts. Are you brave enough? </p>https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/#__commentshttps://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/ Let's talk about Virtual Reality tolstenko augmented reality augmented virtuality mixed Reality virtual reality <h1>Let's talk about Virtual Reality</h1><p>The goal of this article is not be a comprehensive guide about Virtual Reality, but to give you a general sense of what it is and how it works. I will also give you some examples of how it is being used today and what we can expect for the future.</p>https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/#__commentshttps://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/ Notes on Submissions tolstenko academic honesty ai canvas chatgpt github copilot moss plagiarism teaching turnitin <h1>Notes on Submissions</h1><figure markdown> ![](ai-coding-assistant-robot-in-front-of-a-computer-typing-in-a-keyboard.jpeg){ width="300" align=center loading=lazy } <figcaption> Source: ideogram </figcaption></figure><p>Here are my personal opinions, rules and processes that I follow about submissions. I will cover gradings, deadlines, tolerances, and AI-assistant tools usage.</p>https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/ Wed, 28 Aug 2024 01:42:58 +0000Awesome GameDev Resourceshttps://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/#__commentshttps://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/ \ No newline at end of file diff --git a/gource.mp4 b/gource.mp4 new file mode 100755 index 00000000..d26deac8 Binary files /dev/null and b/gource.mp4 differ diff --git a/index.html b/index.html new file mode 100644 index 00000000..03bb6d47 --- /dev/null +++ b/index.html @@ -0,0 +1,12 @@ + Awesome GameDev Resources

Awesome GameDev Resources

Estimated time to read: 15 minutes

Join is on Discord!

How to use this repo: Read the topics, and if you're unsure if you understand the topics covered here it is a good time for you to revisit them.

Ways of reading:

Badges

CI: Documentation

Join us: say thanks Discord GitHub Repo stars.

Metrics: Codacy Badge GitHub language count GitHub search hit counter Lines of code GitHub all releases GitHub contributors GitHub

Code of conduct: Contributor Covenant

Topics

  1. Intro to Programming
  2. Advanced Programming
  3. Artificial Intelligence
  4. Developer Portfolio

Philosophy

This repository aims to be practical, and it will be updated as we test the methodology. Frame it as a guidebook, not a manual. Most of the time, we are constrained by the time, so in order to move fast, we won't cover deeply some topics, but the basics that allows you to explore by yourself or point the directions for you to study in other places acting as a self-taught student, so you really should look for more information elsewhere if you feels so. I use lots of references and highly incentive you to look for other too and propose changes in this repo. Sometimes, it will mostly presented in a chaotic way, which implies that you will need to explore the concepts by yourself or read the manual/books. Every student should follow your own path to learning, it is impossible to cover every learning style, so it is up to you to build your own path and discover the best way to learn. What worked for me or what works for a given student probably won't work for you, so dont compare yourself to others too much, but be assured that we're here to help you to succeed. If you need help, just send private messages, or use public forums such as github issues and discussions.

Reflections on teaching and learning processes

Philosophies

I would like to categorize the classes into philosophies. so I can address them properly: - Advanced classes: are more focused on work and deliveries than theory, they are tailored toward the student goals more than the closed boxes and fixed expected results. It comprehends AI and Adv. AI; - Introduction classes: are focused on theory and practice. In those classes, they have more focus on structural knowledge and basic content. It comprehends classes such as Introduction to Programming. - Guidance: are more focused on how can we bring the student to the highest standard and get ready to be hired. It comprehends classes such as Capstone, Portfolio classes, and Mentoring activities.

Learning Styles

  • Visual: You prefer using pictures, images, and spatial understanding;
  • For this style I recently acquired a pen-tablet monitor, so I will be adding this type of content more often.
  • I also use lots of diagrams via code2flow, sequence diagram and others
  • I assume my handwriting is not the best, but I compensate it with lots of diagrams and pictures, and always project what I write in the computer.
  • Aural: You prefer using sound and music;
    • I always link to youtube videos and podcasts, so they can follow up with extra content and material;
  • Verbal: You prefer using words, both in speech and writing;
    • I setup my machine to record specific topics that might be hard to undestand in just one go, and I did some experimental recordings, but I am still struggling with video editing. I will be adding more videos in the future.
    • My main issue here is that I am not a native english speaker, so I am still struggling with the language, but I am trying to improve it.
    • Other issue that I can name is eye-to-eye contact. It feels overburned to me to keep eye-to-eye contact, that I usually look away.
  • Physical: You prefer using your body, hands and sense of touch;
    • Given my cultural origin, I am usually over expressive in this field, and I need more fine tuning my proxemic. Brazilians commonly talk and walk closer to each other than americans.
    • While lecture I really enjoy to use my hands to express myself, and I am trying to use more body language to express myself.
  • Logical: You prefer using logic, reasoning and systems;
    • I always craft and test teaching experiences to push them to think and reason about the topics.
    • I always use tools such as beecrowd to let them code and test their ability to solve problems.
  • Social: You prefer to learn in groups or with other people;
    • I incentive them to do in-class assignments in pairs, and do group assignments. But I recognize this might be a problem for some students, so I am trying to find a way to make it more inclusive.
    • Strangelly for me, some students prefer to socialize with me by booking office hours more than working together. Probably next semester I will reserve a time to do a type of co-working time when I can be available to help them in their assignments.
  • Solitary: You prefer to work alone and use self-study.
    • Sometimes and some topics you really need to study by yourself, and it can be the best way for some. But I warn them about the effects of loneliness and impostor syndrome.
    • This is usually the most common way to learn, and I always keep an eye on the ones that are struggling to keep up with the class. I always try to reach them and help them to keep up with the class.
    • To compensate this solitude I incentive them to present their work to the class no they can experience having attention even when the lack social skills.

Teaching Styles

For every type of style, I try to give a bit of insights:

  • Authoritative: control the classroom and maintain discipline;
    • I create a set of rules that should be followed in order to guarantee the student's success;
  • Delegator: give students control of their learning;
    • For the intro classes I follow more this strategy;
  • Facilitator: guide students and help them learn by themselves;
    • I usually follow this strategy on advanced classes;
  • Demonstrator: explain and show things to students;
    • I usully provide a stream of references or even create my own content to show them how to do things;

Credits

Give us stars! Click -> GitHub Repo stars

Star History Chart

\ No newline at end of file diff --git a/intro/01-introduction/index.html b/intro/01-introduction/index.html new file mode 100644 index 00000000..d372b735 --- /dev/null +++ b/intro/01-introduction/index.html @@ -0,0 +1,25 @@ + Introduction to C++ - Awesome GameDev Resources

Reasons why you should learn how to program with C++

Estimated time to read: 26 minutes

Before we start, this repository aims to be practical, and I highly incentive you to look for other references. I want to add this another awesome repository it holds an awesome compilation of modern C++ concepts.

Another relevant reference for what we are going to cover is the updated core guidelines that explain why some syntax or style is bad and what you should be doing instead.

Why?

The first thing when you think of becoming a programmer is HOW DO I START? Well, C++ is one of the best programming languages to give you insights into how a computer works. Through the process of learning how to code C++, you will learn not only how to use this language as a tool to solve your problems, but the farther you go, the more you will start uncovering and exploring exciting computer concepts.

C++ gives you the simplicity of C and adds a lot of steroids. It delivers lots of quality-of-life stuff, increasing the developer experience. Let’s compare C with C++, shall we?

  1. The iconic book "The C Programming Language" by Brian W. Kernighan and Dennis M. Ritchie has only 263 pages. Pretty simple, huh?
  2. The book "C++ How to Program" by Harvey and Paul Deitel It holds around 1000 pages, and the pages are way bigger than the other one.

So, don’t worry, you just need to learn the basics first, and all the rest are somehow advanced concepts. I will do my best to keep you focused on what is relevant to each moment of your learning journey.

Without further ado. Get in the car!

Speed Matters

A LOT. Period. C++ is one of the closest intelligible programming languages before reaching the level of machine code, as known as Assembly Language. If you code in machine code, you obviously will code precisely what you want the machine to do, but this task is too painful to be the de-facto standard of coding. So we need something more straightforward and more human-readable. So C++ lies in this exact area of being close to assembly language and still able to be "easily" understandable. Note the quotes, they are there because it might not be that easy when you compare its syntax to other languages, C++ has to obey some constraints to keep the generated binary fast as a mad horse while trying to be easier than assembly. Remember, it can always get worse.

The main philosophy that guides C++ is the "Zero-cost abstractions", and it is the main reason why C++ is so fast. It means that the language does not add any overhead to assembly. So, if someone proposes a new core feature as a Technical specification, it should pass through this filter. And it is a very high bar to pass. I am looking at you, ts reflection, everyone I know that want to make games, ask for this feature, but it is not there yet.

Why does speed matter?

Mainly because we don’t want to waste time. Right? But it has more impactful consequences. Let’s think a bit more, you probably have a smartphone, and it lives only while it has enough energy on its battery. So, if you are a lazy mobile developer and do not want to learn how to do code efficiently, you will make your app drain more energy from the battery just by making the user wait for the task to be finished or by doing lots of unnecessary calculations! You will be the reason the user has not enough power to use their phones up to the end of the day. In fact, you will be punishing your user by using your app. You don’t want that, right? So let’s learn how to code appropriately. For the sake of the argument, worse than that, a lazy blockchain smart contract developer will make their users pay more for extra gas fee usage for the extra inefficient CPU cycles.

Language benchmarks

I don’t want to point fingers at languages, but, hey, excuse me, python, are you listening to me, python? Python? Please answer! reference cpp vs python. Nevermind. It is still trying to figure things out. Ah! Hey ruby, don’t be shy, I know you look gorgeous, and I admire you a lot, but can you dress up faster and be ready to run anytime soon?

You don’t need makeup to run fast. That’s the idea. If the language does lots of fancy stuff, it won’t be extracting the juicy power of the CPU.

So let’s first clarify some concepts for a fair comparison. Some languages do not generate binaries that run in your CPU. Some of them run on top of a virtual machine. The Virtual Machine(VM) is a piece of software that, in runtime, translates the bytecode or even compiles source code to something the CPU can understand. It’s like an old car; some of them will make you wait for the ignition or even get warm enough to run fast. I am looking at you Java and JavaScript. It is a funny concept, I admit, but you can see here that the ones that run on top of a translation device would never run as fast as a compiled binary ready to run on the CPU.

So let’s bring some ideas from my own experience, and I invite you to test by yourself. Just search for "programming languages benchmark" on your preferred search engine or go here.

I don’t want to start a flame-war. Those numbers might be wrong, but the overall idea is correct. Assuming C++ does not add much overhead to your native binary, let’s set the speed to run as 1x. Java would be around 1.4x slower, and JavaScript is 1.6x, python 40x, and ruby 100x. The only good competitor in the house is Rust because its compiled code runs straight on the CPU efficiently with lots of quality-of-life additions. Rust gives almost similar results if you do not play around with memory-intensive problems. Another honorable mention is WASM - Web Assembly, although it is a bytecode for a virtual machine, many programming languages are able to target it(compile for it), it is becoming blazing fast and it is getting traction nowadays, keep tuned.

rust vs c

Who should learn C++

You

YOU! Yes, seriously, I don’t know you, but I am pretty sure you should know how to code in any language. C++ can be challenging, it is a fact, but if you dare to challenge yourself to learn it, your life will be somewhat better.

Let’s cut to the bullets:

  1. The ones who seek to build efficient modules for mobile apps, such as the video/image processing unit;
  2. Game developers. Even the gameplay developers that usually only script things should know how to ride a horse(CPU) fast;
  3. Researchers looking to not waste time by coding inefficient code and wait hours, even days, to see the result of their calculations. They should reduce the costs of renting CPU clusters;
  4. Computer scientists are those who should know how a computer works. After all, C++ is one of the preferred programming languages that unlocks all the power of the CPU;
  5. Engineers, in general, should know how to simulate things efficiently;

How do machines run code?

The first thing is: the CPU does not understand any programming language, only binary instructions. So you have to convert your code into something the machine can understand. This is the job of the compiler. A compiler is a piece of software that reads a text file written following the rules of a programming language and essentially converts it into binary instructions that the CPU can execute. There are many strategies and many ways of doing it. So, given its nature of being near assembly, with C++, you will control precisely what instructions the CPU will run.

But, there is a catch here: for each CPU, you will need a compiler for that instruction set. Ex.: the compiler GCC can generate an executable program for ARM processors, and the generated program won’t work on x86 processors; In the same way, an x64 executable won’t work on an x86; you need to match the binary instructions generated by the compiler with the same instruction set available on the target CPU you want to run it. Some compilers can cross-compile: the compiler runs in your machine on your CPU with its instruction set, but the binary generated only runs on a target machine with its own instruction set.

graph TD
+    START((Start))-->
+    |Source Code|PreProcessor-->
+    |Pre-processed Code|Compiler-->
+    |Target Assembly Code|Assembler-->
+    |Relacable Machine Code|Linker-->
+    |Executable Machine Code|Loader-->
+    |Operation System|Memory-->
+    |CPU|RUN((Run))

Program Life Cycle

Software development is complex and there is lots of styles, philosophies and standard, but the overall structure looks like this:

  1. Analysis, Specification, Problem definition
  2. Design of the Software (pseudocode/algorithm, flowchart), Problem analysis
  3. Implementation / Coding
  4. Testing and Debugging - In TDD(Test Driven Development) we write the tests first.
  5. Maintenance - Analytics and Improvements
  6. End of Life

Pseudocode

Pseudocode is a way of expressing algorithms using a combination of natural language and programming constructs. It is not a programming language and cannot be compiled or executed, but it provides a clear and concise way to describe the steps of an algorithm. Here is an example of pseudocode that describes the process of finding the maximum value in a list of numbers:

set maxValue to 0
+for each number in the list of numbers
+  if number is greater than maxValue
+    set maxValue to number
+output maxValue
+

Pseudocode is often used as a planning tool for programmers and can help to clarify the logic of a program before it is written in a specific programming language. It can also be used to communicate algorithms to people who are not familiar with a particular programming language. Reference

Flowcharts

A flowchart is a graphical representation of a process or system that shows the steps or events in a sequential order. It is a useful tool for demonstrating how a process works, identifying potential bottlenecks or inefficiencies in a process, and for communicating the steps involved in a process to others.

Flowcharts are typically composed of a series of boxes or shapes, connected by arrows, that represent the steps in a process. Each box or shape usually contains a brief description of the step or event it represents. The arrows show the flow or movement from one step to the next.

Flowcharts can be used in a variety of settings, including business, engineering, and software development. They are particularly useful for demonstrating how a process works, identifying potential issues or bottlenecks in the process, and for communicating the steps involved in a process to others.

There are many symbols and notations that can be used to create flowcharts, and different organizations and industries may have their own standards or conventions for using these symbols. Some common symbols and notations used in flowcharts include:

  1. Start and end symbols: These are used to indicate the beginning and end of a process.
  2. Process symbols: These are used to represent the various steps or events in a process.
  3. Decision symbols: These are used to represent a decision point in a process, where the flow of the process depends on the outcome of a decision.
  4. Connector symbols: These are used to connect the various symbols in a flowchart, showing the flow or movement from one step to the next.
  5. Annotation symbols: These are used to add additional information or notes to a flowchart.

By using a combination of these symbols and notations, you can create a clear and concise flowchart that effectively communicates the steps involved in a process or system. Reference

I suggest using the tool Code2Flow to write pseudocode and see the flowchart drawn in real time. But you can draw them on Diagrams. If you are into sequence diagrams, I suggest using sequencediagram.org.

Practice

Try to think ahead the problem definition by questioning yourself before expressing the algorithm as pseudocode or flowchart: - What are the inputs? - What is a valid input? - How to compute the math? - What is the output? - How many decimals is needed to express the result?

Use diagrams to draw a flowchart or use Code2Flow to write a working pseudocode to: 1. Compute the weighted average of two numbers. The first number has weight of 1 and the second has weight of 3; 2. Area of a circle; 3. Compute GPA; 4. Factorial number;

Glossary

It is expected for you to know superficially these terms and concepts. Research about them. It is not strictly required, because we are going to cover them in class.

  • CPU
  • GPU
  • ALU
  • Main Memory
  • Secondary Memory
  • Programming Language
  • Compiler
  • Linker
  • Assembler
  • Pseudocode
  • Algorithms
  • Flowchart

Activities

  1. Sign up on beecrowd. If you are a enrolled student, look for the key in canvas to be assigned to the coding assignments.
  2. https://blockly.games/maze - test your ability to solve small problems via block programming
  3. https://codecombat.com/ - very interesting game
  4. https://scratch.mit.edu/ - start a project and make it say hello when you click on it

Troubleshooting

If you have problems here, start a discussion this is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me.

\ No newline at end of file diff --git a/intro/01-introduction/rust_vs_c.jpg b/intro/01-introduction/rust_vs_c.jpg new file mode 100644 index 00000000..ad6dd0a9 Binary files /dev/null and b/intro/01-introduction/rust_vs_c.jpg differ diff --git a/intro/02-tooling/CMakeLists.txt b/intro/02-tooling/CMakeLists.txt new file mode 100644 index 00000000..0d017257 --- /dev/null +++ b/intro/02-tooling/CMakeLists.txt @@ -0,0 +1,18 @@ +add_executable(02-hello hello.cpp) +add_executable(02-extremelyBasic extremelyBasic.cpp) + +if(WIN32) + add_custom_target( + 02-extremelyBasic-Test + COMMAND 02-extremelyBasic < ${CMAKE_CURRENT_SOURCE_DIR}/extremelyBasic.test.01.in > yourOutput.out + COMMAND fc yourOutput.out ${CMAKE_CURRENT_SOURCE_DIR}/extremelyBasic.test.01.out + DEPENDS 02-extremelyBasic + ) +else() + add_custom_target( + 02-extremelyBasic-Test + COMMAND 02-extremelyBasic < ${CMAKE_CURRENT_SOURCE_DIR}/extremelyBasic.test.01.in > yourOutput.out + COMMAND diff yourOutput.out ${CMAKE_CURRENT_SOURCE_DIR}/extremelyBasic.test.01.out + DEPENDS 02-extremelyBasic + ) +endif() \ No newline at end of file diff --git a/intro/02-tooling/extremelyBasic.cpp b/intro/02-tooling/extremelyBasic.cpp new file mode 100644 index 00000000..9116d504 --- /dev/null +++ b/intro/02-tooling/extremelyBasic.cpp @@ -0,0 +1,5 @@ +#include +// https://www.beecrowd.com.br/judge/en/problems/view/1001 +int main(){ + +} \ No newline at end of file diff --git a/intro/02-tooling/extremelyBasic.test.01.in b/intro/02-tooling/extremelyBasic.test.01.in new file mode 100644 index 00000000..73053d3f --- /dev/null +++ b/intro/02-tooling/extremelyBasic.test.01.in @@ -0,0 +1,2 @@ +10 +9 diff --git a/intro/02-tooling/extremelyBasic.test.01.out b/intro/02-tooling/extremelyBasic.test.01.out new file mode 100644 index 00000000..e3c4b6b6 --- /dev/null +++ b/intro/02-tooling/extremelyBasic.test.01.out @@ -0,0 +1 @@ +X = 19 diff --git a/intro/02-tooling/hello.cpp b/intro/02-tooling/hello.cpp new file mode 100644 index 00000000..16de8aef --- /dev/null +++ b/intro/02-tooling/hello.cpp @@ -0,0 +1,5 @@ +#include +// https://www.beecrowd.com.br/judge/en/problems/view/1000 +int main(){ + +} \ No newline at end of file diff --git a/intro/02-tooling/index.html b/intro/02-tooling/index.html new file mode 100644 index 00000000..238b2de3 --- /dev/null +++ b/intro/02-tooling/index.html @@ -0,0 +1,82 @@ + Setup - Awesome GameDev Resources

Tools for C++ development

Estimated time to read: 45 minutes

Opinion

This list is a mix of standard tools and personal choice. It is a good starting point, but in the future you will be impacted by other options, just keep your mind open to new choices.

Every programing language use different set of tools in order to effectively code. In C++ you will need to learn how to use a bunch of them to solve problems and develop software.

Version Control

Version control are tools that help you to keep track of your code changes. It is a must have tool for any developer. You can keep track the state of your code, and if you mess up something, you can go back to a previous state. It is also a great tool to collaborate with other developers. You can work on the same codebase without messing up each other work.

GIT

Optional

Install Git

Git is a version control system that is used to track changes to files, including source code, documents, and other types of files. It allows multiple people to work on the same files concurrently, and it keeps track of all changes made to the files, making it easy to go back to previous versions or merge changes made by different people. Git is widely used by developers for managing source code, but it can be used to track changes to any type of file. It is particularly useful for coordinating work on projects that involve multiple people, as it allows everyone to see and track changes made by others.

Github

Github is a web-based platform for version control and collaboration on software projects. It is a popular platform for developers to share and collaborate on code, as well as to track and manage software development projects. GitHub provides version control using Git, a version control system that allows developers to track changes to their codebase and collaborate with other developers on the same codebase. It also includes a range of features such as bug tracking, project management, and team communication tools. In addition to being a platform for software development, GitHub is also a community of developers and a marketplace for buying and selling software development services.

In this course we are going to extensively use GITHUB functionalities. So create an account now with your personal account. Use a meaningful username. Avoid names that hard to associate with you. If you have a educational email or student id, apply for the Github Student Pack, so you will have access to lots of free tools.

It is nice to have git in your machine, but it is not required, because we are going to use gui via gui tools. See GitKraken below.

GitKraken

GitKraken is a Git client for Windows, Mac, and Linux that provides a graphical interface for working with Git repositories. It allows users to manage Git repositories, create and review changes to code, and collaborate with other developers. Some features of GitKraken include a visual representation of the repository's commit history, the ability to stage and discard changes, and support for popular version control systems like GitHub and GitLab. GitKraken is designed to be user-friendly and to make it easier for developers to work with Git, particularly for those who may be new to version control systems.

Gitkraken is a paid software, and it is free for public repositories, but you can have all enterprise and premium functionalities enabled for free with the student pack and described before.

Install Gitkraken. If you login into gitkraken using GitHub with student pack it will unlock all pro features.

Compiler

A compiler is a type of computer program that translates source code into machine instructions that can be run or the CPU or interpreted in a Virtual Machine.

graph TD
+  SRC[Source Code] --> |Assembly| OBJ[Machine Code];
+  OBJ --> EXE[Executable];
+  OBJ --> LIB[Library];
  • Source Code in C++, is associated to two different type of textual file extensions: .cpp for sources and .h for header files. It is what the developer writes.
  • Assembly is a human readable representation of the Machine Code. It is not the Machine Code itself, but it is a representation of it. It is a way to make the Machine Code human readable.
  • Machine Code is what the CPU can run and understand. It is a sequence of 0 and 1 that the CPU can understand and execute. It is not human readable.
  • Executable is the result of the compilation process. It is a file that can be executed by the Operating System.
  • Library is a collection of Machine Code that can be used by other programs.
  • Executable and Library Are binary file that contains the Machine Code instructions that the CPU can execute.

Note

In compiled languages, the end user only receives the executables and libraries. The source code is not distributed.

Here you can see briefly a small function to square a number in C++ compiled via GCC into a x86-64 assembly. The left side is the Source Code and the right side is the code compiled into a human-readble Assembly. This code still needs links to the Operation System in order to be executed.

Notes on Virtual Machines (VM)

Tip

The knowledge of this section is not required for this course, but it is good to know.

Some languages such as Java, C# and others, compile the Source Code into bytecode that runs on top of an abstraction layer called Virtual Machine (VM). The VM is a software that runs on top of the Operating System and it is responsible to translate the bytecode into Machine Code that the CPU can understand. This is a way to make the Source Code portable across different Operating Systems and CPU architectures - cross-platform. But this abstraction layer has it cost and it is not as efficient as the Machine Code itself.

To speed up the execution, some VM can Just In Time (JIT) compile the bytecode into Machine Code at runtime when the VM detects parts of Source Code is running a lot(Hotspots), to speed up the execution. When this optmization step is happening, the machine is warming up.

graph TD
+  SRC[Source Code] --> |Compiles| BYT[Bytecode];
+  BYT --> |JIT Compiler| CPU[Machine Code];

Note

In languages that uses VMs, the end user receives the bytecode. The source code is not distributed.

Notes on Interpreters

Tip

The knowledge of this section is not required for this course, but it is good to know.

Some languages such as Python, Javascript and others, do not compile the Source Code, instead, they run on top a program called Interpreter that reads the Source Code and executes it line by line.

graph TD
+  SRC[Source Code] --> |read line| INT[Interpreter];
+  INT --> |translates| CPU[Machine Code];

Some Interpreters are Ahead Of Time (AOT) and they compile the Source Code into Machine Code before the Source Code is executed.

graph TD
+  SRC[Source Code] --> |AoT compile| INT[Bytecode / Machine Code];
+  INT --> CPU;

Note

In intrepreted languages, the end user receives the source code. Sometimes the source code is obfuscated, but it is still readable.

Platform specific

This where things get tricky, C++ compiles the code into a binary that runs directly on the processor and interacts with the operating system. So we can have multiple combinations here. Most compilers are cross-platform, but there is exceptions. And to worsen it, some Compilers are tightly coupled with some IDEs(see below, next item).

I personally prefer to use CLang to be my target because it is the one that is most reliable cross-platform compiler. Which means the code will work as expected in most of the scenarios, the feature support table is the same across all platforms. But GCC is the more bleeding edge, which means usually it is the first to support all new fancy features C++ introduces.

No need to download anything here. We are going to use the CLion IDE. See below topics.

CMake

CMake CMake is a cross-platform free and open-source software tool for managing the build process of software using a compiler-independent method. It is designed to support directory hierarchies and applications that depend on multiple libraries. It is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.

Note

If you use a good IDE(see next topic), you won't need to download anything here.

CMake is typically used in conjunction with native build environments such as Make, Ninja, or Visual Studio. It can also generate project files for IDEs such as Xcode and Visual Studio. You can see a full list of supported generators here.

Here is a simple example of a CMakeLists.txt file that can be used to build a program called "myproject" that consists of a single source file called "main.cpp":

# Set minimum version of CMake that can be used
+cmake_minimum_required(VERSION 3.10)
+# Set the project name
+project(myproject)
+# Add executable named "myproject" to be built from the source "main.cpp"
+add_executable(myproject main.cpp)
+

Warning

Every executable can only cave one main function. Each file with a main function describes a new executable program. If you want to have multiple executables in the same project, in other words, you want to manage multiple executables in the same place, you can change the cmake descriptor to match that as follows, and use your IDE to switch between them:

cmake_minimum_required(VERSION 3.10)
+project(myproject)
+add_executable(myexecutable1 main1.cpp)
+add_executable(myexecutable2 main2.cpp)
+

Tip

If you are using a nice IDE, you won't need to run this on the command line. So go to next topic.

If you want to build via command line this project, you would first generate a build directory, and then run CMake to build the files using the detected compiler or IDE:

cmake -S. -Bbuild
+cmake --build build -j20
+

This will create a Makefile or a Visual Studio solution file in the build directory, depending on your platform and compiler. You can then use the native build tools to build the project by running "make" or opening the solution file in Visual Studio.

CMake provides many options and variables that can be used to customize the build process, such as setting compiler flags, specifying dependencies, and configuring installation targets. You can learn more about CMake by reading the documentation at https://cmake.org/.

IDE

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE typically integrates a source code editor, build automation tools, and a debugger. Some IDEs also include additional tools, such as a version control system, a class browser, and a support for literate programming. IDEs are designed to maximize programmer productivity by providing tight-knit components with similar user interfaces. This can be achieved through features such as auto-complete, syntax highlighting, and code refactoring. Many IDEs also provide a code debugger, which allows the programmer to step through code execution and find and fix errors. Some examples of popular IDEs include Eclipse, NetBeans, Visual Studio, and Xcode. Each of these IDEs has its own set of features and capabilities, and developers may choose one based on their specific needs and preferences.

In this course, it is strongly suggested to use an IDE in order to achieve higher quality of deliveries, a good IDE effectively flatten the C++ learning curve. You can opt out and use everything by hand, of course, and it will deepen your knowledge on how things work but be assured it can slow down your learning process. Given this course is result oriented, it is not recommended to not use an IDE here. So use one.

OPINION: The most pervasive C++ IDE is CLion and this the one I am going to use. If you use it too, it would be easier to follow my recorded videos. It works on all platforms Windows, Linux and Mac. I recommend downloading it via Jetbrains Toolbox. If you are a student, apply for student pack for free here. On Windows, CLion embeds a GCC compiler or optionally can use visual studio, while on Macs it requires the xcode command line tools, and on Linux, uses GCC from the system installation.

The other options I suggest are:

On all platforms

REPLIT - an online and real-time multiplayer IDE. It is slow and lack many functionalities, but can be used for small scoped activities or work with a friend.

VSCode - a small and highly modularized code editor, it have lots of extensions, but it can be complex to set up everything needed: git, cmake, compiler and other stuff.

On Windows:

Visual Studio - mostly for Windows. When installing, mark C++ development AND search and install additional tools "CMake". Otherwise, this repo won't work smoothly for you.

DevC++ - an outdated and small IDE. Lacks lots of functionalities, but if you don't have HD space or use an old machine, this can be your option. In long term, this choice would be bad for you for the lack of functionalities. It is better to use REPLIT than this tool, in my opinion.

On OSX

XCode - for OSX and Apple devices. It is required at least to have the Command Line Tools. CLion on Macs depends on that.

Xcode Command Line Tools is a small suite of software development tools that are installed on your Mac along with Xcode. These tools include the GCC compiler, which is used to compile C and C++ programs, as well as other tools such as Make and GDB, which are used for debugging and development. The Xcode Command Line Tools are necessary for working with projects from the command line, as well as for using certain software development tools such as Homebrew.

To install the Xcode Command Line Tools, you need to have Xcode installed on your Mac. To check if Xcode is already installed, open a Terminal window and type:

xcode-select -p

If Xcode is already installed, this command will print the path to the Xcode developer directory. If Xcode is not installed, you will see a message saying "xcode-select: error: command line tools are not installed, use xcode-select --install to install."

To install the Xcode Command Line Tools, open a Terminal window and type:

xcode-select --install

This will open a window that prompts you to install the Xcode Command Line Tools. Follow the prompts to complete the installation.

Once the Xcode Command Line Tools are installed, you can use them from the command line by typing commands such as gcc, make, and gdb. You can also use them to install and manage software packages with tools like Homebrew.

On Linux

If you are using Linux, you know the drill. No need for further explanations here, you are ahead of the others.

If you are using an Ubuntu distro, you can try this to install most of the tools you will need here:

  sudo apt-get update && sudo apt-get install -y build-essential git cmake lcov xcb libx11-dev libx11-xcb-dev libxcb-randr0-dev
+

In order to compile:

g++ inputFile.cpp -o executableName
+

Where g++ is the compiler frontend program to compile your C++ source code; inputFile.cpp is the filename you want to compile, you can pass multiple files here separated by spaces ex.: inputFile1.cpp inputFile2.cpp; -o means the next text will be the output program name where the executable will be built, (for windows, the name should end with .exe ex.: program.exe).

You will have a plethora of editors and IDEs. The one I can suggest is the VSCode, Code::Blocks or KDevelop. But I really prefer CLion.

CLion project workflow with CMake

When you create a new project, select New C++ Executable, set the C++ Standard to the newest one, C++20 is enough, and place in a folder location where you prefer.

CLion automatically generate 2 files for you. - CMakeLists.txt is the CMake multiplatform project descriptor, with that, you can share your project with colleagues that are using different platforms than you. - main.cpp is the entry point for your code.

It is not the moment to talk about multiple file projects, but if you want to get ready for it, you will have to edit the CMakeLists.txt file and add them in the add_executable function.

Hello World

Hello World

// this a single line comment and it is not compiled. comments are used to explain the code.
+// you can do single line comment by adding // in front of the line or
+// you can do multi line comments by wrapping your comment in /* and */ such as: /* insert comment here */
+/* this is
+ * a multi line
+ * comment
+ */
+#include <iostream> // this includes an external library used to deal with console input and output
+
+using namespace std; // we declare that we are going to use the namespace std of the library we just included 
+
+// "int" means it should return an integer number in the end of its execution to communicate if it finished properly
+// "main()" function where the operating system will look for starting the code.
+// "()" empty parameters. this main function here needs no parameter to execute
+// anynthing between { and } is considered a scope. 
+// everything stack allocated in this scope will be deallocated in the end of the scope. ex.: local variables. 
+int main() {
+    /* "cout" means console output. Print to the console the content of what is passed after the 
+     * "<<" stream operator. Streams what in the wright side of it to the cout object
+     * "endl" means end line. Append a new line to the stream, in the case, console output.
+     */
+    cout << "Hello World" << endl;
+
+    /* tells the operating system the program finished without errors. Any number different from that is considered 
+     * a error code or error number.
+     */
+    return 0; 
+}
+

Hello Username

#include <iostream>
+#include <string> // structure to deal with a char sequence, it is called string
+using namespace std;
+int main(){
+    // invites the user to write something
+    cout << "Type your name: " << endl;
+
+    /* * string means the type of the variable, this definition came from the string include
+     * username means the name of the variable, the container to hold and store the data
+     */
+    string username;
+    /*
+     * cin mean console input. It captures data from the console.
+     * note the opposite direction of the stream operator. it streams what come from the cin object to the variable.
+     */
+    cin >> username;
+    // example of how to stream and concatenate texts to the console output;
+    cout << "Hello " << username << endl;
+}
+

Common Bugs

First documented bug found in 1945

1. Syntax error

Syntax errors in C++ are usually caused by mistakes in the source code that prevent the compiler from being able to understand it. Some common causes of syntax errors include: 1. Omitting a required component of a statement, such as a semicolon at the end of a line or a closing curly brace. 2. Using incorrect capitalization or spelling in a keyword or identifier. 3. Using the wrong punctuation, such as using a comma instead of a semicolon. 4. Mixing up the order of operations, such as using an operator that expects two operands before the operands have been provided.

To fix a syntax error, you will need to locate the source of the error and correct it in the code. This can often be a challenging task, as syntax errors can be caused by a variety of factors, and it is not always immediately clear what the problem is. However, there are a few tools that can help you locate and fix syntax errors in your C++ code: 1. A compiler error message: When you try to compile your code, the compiler will often provide an error message that can help you locate the source of the syntax error. These error messages can be somewhat cryptic, but they usually include the line number and a brief description of the problem. 2. A text editor with syntax highlighting: Many text editors, such as Visual Studio or Eclipse, include syntax highlighting, which can help you identify syntax errors by coloring different parts of the code differently. For example, keywords may be highlighted in blue, while variables may be highlighted in green. 3. A debugger: A debugger is a tool that allows you to step through your code line by line, examining the values of variables and the state of the program at each step. This can be a very useful tool for tracking down syntax errors, as it allows you to see exactly where the error occurs and what caused it.

Reference

2. Logic Error

A logic error in C++ is an error that occurs when the code produces unintended results or behaves in unexpected ways due to a mistake in the logic of the program. This type of error is usually caused by a coding mistake, such as using the wrong operator, omitting a necessary statement, or using the wrong variable. Here are some common causes of logic errors in C++:

  • Incorrect use of conditional statements (e.g., using the wrong comparison operator or forgetting to include a necessary else clause)
  • Mistakenly using the assignment operator (=) instead of the equality operator (==) in a conditional statement
  • Omitting a necessary loop iteration or failing to terminate a loop at the appropriate time
  • Using the wrong variable or array index
  • Incorrectly calling a function or passing the wrong arguments to a function

To fix a logic error in C++, you will need to carefully examine your code and identify the mistake. It may be helpful to use a debugger to step through your code and see how it is executing, or to add print statements to help you understand what is happening at each step.

Reference

3. Run-time error

A runtime error in C++ means that there is an error in your program that is causing it to behave unexpectedly or crash during runtime, i.e., after you have compiled and run the program. There are many possible causes of runtime errors in C++, including:

  • Dereferencing a null pointer
  • Accessing an array out of bounds
  • Using an uninitialized variable
  • Trying to divide by zero
  • Attempting to use an object that has been deleted or has gone out of scope

To troubleshoot a runtime error, you'll need to identify the source of the error by examining the error message and the code that is causing the error. Some common tools and techniques you can use to troubleshoot runtime errors include:

  • Using a debugger to step through your code line by line
  • Printing out the values of variables to see where the error might be occurring
  • Adding additional debug statements or logging to your code to help identify the source of the error

It's also a good idea to ensure that you have compiled your code with debugging symbols enabled, as this will allow you to use the debugger to get a better understanding of what is happening in your code. will cause the program to crash during run-time

Reference

Exercises:

  • Research and read about other notable errors: segmentation fault, stack overflow, buffer overflow.
  • Hello World - just print hello world.

Homework

  1. Setup your environment for your needs following the choices given above. If you are unsure, use CLion and you will be mostly safe.
  2. Fork this repo privately. You will have to do your assignments there. Go to the home repo and hit fork.
  3. Clone this repo to your machine. gitkraken + github gitkraken clone gitkraken big tutorial
  4. Make sure the CMake option "ENABLE_INTRO" is set as ON in CMakeLists.txt file in the root directory in order to see and enable all activities.
  5. (enrolled students) If you are enrolled in a class with me, share your repo with me, so I can track your evolution. And do the activities described there.
  6. (optional) star this repo :-)

Troubleshooting

If you have problems here, start a discussion this is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me.

\ No newline at end of file diff --git a/intro/03-datatypes/CMakeLists.txt b/intro/03-datatypes/CMakeLists.txt new file mode 100644 index 00000000..7da90315 --- /dev/null +++ b/intro/03-datatypes/CMakeLists.txt @@ -0,0 +1,3 @@ +add_executable(03-bankNotesAndCoins bankNotesAndCoins.cpp) +add_executable(03-volume volume.cpp) +add_executable(03-distance distance.cpp) \ No newline at end of file diff --git a/intro/03-datatypes/bankNotesAndCoins.cpp b/intro/03-datatypes/bankNotesAndCoins.cpp new file mode 100644 index 00000000..3933c94e --- /dev/null +++ b/intro/03-datatypes/bankNotesAndCoins.cpp @@ -0,0 +1,23 @@ +#include +// https://www.beecrowd.com.br/judge/en/problems/view/1021 +// dont use if/else, use % operations instead +int main(){ + + /* + * +NOTAS: +5 nota(s) de R$ 100.00 +1 nota(s) de R$ 50.00 +1 nota(s) de R$ 20.00 +0 nota(s) de R$ 10.00 +1 nota(s) de R$ 5.00 +0 nota(s) de R$ 2.00 +MOEDAS: +1 moeda(s) de R$ 1.00 +1 moeda(s) de R$ 0.50 +0 moeda(s) de R$ 0.25 +2 moeda(s) de R$ 0.10 +0 moeda(s) de R$ 0.05 +3 moeda(s) de R$ 0.01 + */ +} \ No newline at end of file diff --git a/intro/03-datatypes/distance.cpp b/intro/03-datatypes/distance.cpp new file mode 100644 index 00000000..7c8740b8 --- /dev/null +++ b/intro/03-datatypes/distance.cpp @@ -0,0 +1,5 @@ +#include +//https://www.beecrowd.com.br/judge/en/problems/view/1015 +int main(){ + +} \ No newline at end of file diff --git a/intro/03-datatypes/index.html b/intro/03-datatypes/index.html new file mode 100644 index 00000000..5f98c647 --- /dev/null +++ b/intro/03-datatypes/index.html @@ -0,0 +1,157 @@ + Data Types - Awesome GameDev Resources

Variables, Data Types, Expressions, Assignment, Formatting

Estimated time to read: 51 minutes

Variables

Variables are containers to store information and facilitates data manipulation. They are named and typed. Detailed Reference

Container sizes are measured in Bytes. Bytes are the smallest addressable unit in a computer. Each byte is composed by 8 bits. Each bit can be 1 or 0 (true or false). If one byte have 8 bits and each bit one can hold 2 different values, the combination of all possible cases that a byte can be is 2^8 which is 256, so one byte can hold up to 256 different states or possibilities.

Data Types

There are several types of variables in C++, including:

  • Primitive data types: These are the most basic data types in C++ and include integer, floating-point, character, and boolean types.
  • Derived data types: These data types are derived from the primitive data types and include arrays, pointers, and references.
  • User-defined data types: These data types are defined by the programmer and include structures, classes, and enumerations.

Detailed Reference

Numeric types

There are some basic integer container types with different sizes. It can have some type modifiers to change the default behavior or the type.

The common size of the integer containers are 1(char), 2(short int), 4(int) or 8(long long) bytes. For a more detailed coverage read this.

Note

But the only guarantee the C++ imposes is: 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long) and it can result in compiler defined behaviours where a char can have 8 bytes and a long long can be 1 byte.

Note

If you care about being cross-platform conformant, you have to always specify the sign modifier or use a more descriptive type such as listed here.

For floating pointing numbers, the container size can be 4(float), 8(double), 10(deprecated) or 16(long double) bytes.

The sign modifiers can be signed and unsigned and are applicable only for integer types.

The default behavior of the types in a x86 cpu are as signed numbers and the first bit of the container is the signal. If the first bit is 0, it means it is positive. If the first bit is 1, it means it is negative. More details.

Which means that if the container follow two complement and is the size of 1 byte(8 bits), it have 1 bit for the signal and 7 bit for the content. So this number goes from -128 up to 127, this container is typically a signed char. The positive size has 1 less quantity in absolute than the negative because 0 is represented in positive side. There are 256 numbers between -128 and 127 inclusive.

Char

A standard char type uses 1 byte to store data and follows complement of 1. Going -127 to 127, so tipically represents 255 numbers.

A signed char follows complement of 2 and it can represent 2^8 or 256 different numbers. By default, in x86 machine char is signed and the represented numbers can go from -2^7 or -128 up to 2^7 - 1 or 127.

An unsigned char

Chars can be used to represent letters following the ascii table where each value means a specific letter, digit or symbol.

Note

A char can have different sizes to represent different character coding for different languages. If you are using hebrew, chinese, or others, you probably will need more than 1 byte to represent the chars. Use char8_t (UTF8), char16_t(UTF16) or char36_t(UTF32), to cover your character encoding for the language you are using.

ASCII table

ASCII - American Standard Code for Information Interchange - maps a number to a character. It is used to represent letters, digits and symbols. It is a standard that is used by most of the computers in the world.

It is a 7 bit table, so it can represent 2^7 or 128 different characters. The first 32 characters are control characters and the rest are printable characters. Reference. There are other tables that extend the ASCII table to 8 bits, or even 16 bits.

The printable chacacters starts at number 32 and goes up to 126. The first 32 characters are control characters and the rest are printable.

ASCII Table

As you can imagine, this table is not enough to represent all the characters in the world(latin, chinese, japanese, etc). So there are other tables that extend the ASCII table to 8 bits, or even 16 bits.

Integer

Note

Most of the information that I am covering here might be not precise, but the overall idea is correct. If you want a deep dive, read this.

A standard int type uses 4 bytes to store data. It is signed by default.

It can represent 2^32 or 4294967296 different numbers. As a signed type, it can represent numbers from -2^31 or -2147483648 up to 2^31 - 1 or 2147483647.

The type int can accept sign modifiers as signed or unsigned to change the behavior of the first bit to act as a sign or not.

The type int can accept size modifiers as short (2 bytes) or long long (8 bytes) to change the size and representation capacity of the container. Type declaration short and short int result in the same container size of 2 bytes. In the same way a long long or long long int reserves the same size of 8 bytes for the container.

The type long or long int usually gives the same size of int as 4 bytes. Historical fact or myth: This abnormality, comes from the evolution of the definition of int: in the past, 2 bytes were enough for the majority of the scenarios in the 16 bits processors, but it frequently reached the limits of the container and it overflowed. So they changed the standard definition of a integer from being 2 bytes to 4 bytes, and created the short modifier. In this scenario the long int lost the reason to exist.

Here goes a list of valid integer types and its probable size(it depends on the implementation, cpu architecture and operation system): - Size of 2 bytes: short int, short, signed short int, signed short, unsigned short int, unsigned short, - Size of 4 bytes: signed, unsigned, int, signed int, unsigned int, long int, long, signed long int, signed long, unsigned long int, unsigned long, - Size of 8 bytes: long long int, long long, signed long long int, signed long long, unsigned long long int, unsigned long long.

OPINION: I highly recommend the usage of these types instead, to ensure determinism and consistency between compilers, operating systems and cpu architectures.

Float pointing

There are 3 basic types of floating point containers: float(4 bytes) and double(8 bytes) and long double(16 bytes) to represent fractional numeric types.

The standard IEEE754 specifies how a floating point number is stored in the form of bits inside the container. The container holds 3 basic information to simulate the behavior of a fractional type inside a binary type: signal, exponent and fraction.

Note

This standard was very open to implementation definition in the past, and this is one of the root causes of non-determinism physics simulation. This is the main problem you cannot guarantee the same operation with the same pair of numbers will consistently give the same result across different types of processors and compilers, thus making the physics of a multiplayer game consistency hardly achievable. Many deterministic physics engines tend to not use this standard at all, and implement those behaviors via software on top of integers instead. There are 2 approaches to solve the floating-point determinism: softfloat that implement all the IEEE754 specifications via software, or implement some kind of fixed-point arithmetic on top of integers.

Booleans

bool is a special type that has the container size of 1 byte but the compiler can optimize and pack up to 8 bools in one byte if they are declared in sequence.

Enums

An enumeration is a type that consists of a set of named integral constants. It can be defined using the enum keyword:

enum Color {
+  Red,
+  Green,
+  Blue
+};
+

This defines a new type called Color, which has three possible values: Red, Green, and Blue. By default, the values of these constants are 0, 1, and 2, respectively. However, you can specify your own values:

enum Color {
+  Red = 5,
+  Green,  // 6
+  Blue    // 7
+};
+

You can then use the enumeration type just like any other type:

Color favoriteColor = Red;
+

Enumerations can also have their underlying type explicitly specified:

enum class Color : char {
+  Red, 
+  Green,
+  Blue
+};
+

Here, the underlying type of the enumeration is char, so the constants Red, Green, and Blue will be stored as characters(1 byte size). The enum class syntax is known as a "scoped" enumeration, and it is recommended over the traditional enum syntax because it helps prevent naming conflicts. See the CppCoreGuidelines to understand better why you should prefer using this.

// You can make the value of the constants
+// explicit to make your debugging easier:
+enum class Color : char {
+  Red = 'r',
+  Green = 'g',
+  Blue = 'b'
+};
+

Special derived type: string

string is a derived type and in order to use it, string should be included in the beginning of the file or in the header. char are the basic unit of a string and is used to store words as a sequence of chars.

In C++, a string is a sequence of characters that is stored in an object of the std::string class. The std::string class is part of the C++ Standard Library and provides a variety of functions and operators for manipulating strings.

void type

When void type specifier is used in functions, it indicates that a function does not return a value.

It can also be used as a placeholder for a pointer to a memory location to indicate that the pointer is "universal" and can point to data of any type, but this can be arguably a bad pattern, and should be used exceptionally when interchanging types with c-style API.

We are going to cover this again when covering pointers and functions.

Variable Naming

Variable names are called identifiers. In C++, you can use any combination of letters, digits, and underscores to name a variable, it should follow some rules:

  • Variables can have numbers, en any position, except the first character, so the name does not begin with a digit. Ex. point2 and vector2d are allowed, but 9life isn't;
  • Variable names are case-sensitive, so "myVar" and "myvar" are considered to be different variables;
  • Can have _ in any position of the identifier. Ex. _myname and user_name are allowed;
  • It is not a reserved keyword;

Keep in mind that it is a good practice to choose descriptive and meaningful names for your variables, as this can make your code easier to read and understand. Avoid using abbreviations or acronyms that may not be familiar to others who may read your code.

It is also important to note that C++ has some naming conventions that are commonly followed by programmers. For example, it is common to use camelCase or snake_case to separate words in a variable name, and to use all lowercase letters for variables that are local to a function and all uppercase letters for constants.

Variable declaration

Variable declaration in C++ follows this pattern.

TYPENAME VARIABLENAME;
+
TYPENAME can be the name of any predefined type. See Variable Types for the types. VARIABLENAME can be anything as long it follow the naming rules. See Variable Naming for the naming rules.

Note

A given variable name can only be declared once in the same context / scope. If you try to redeclare the same variable, the compiler will accuse an error.

Note

You can redeclare the same variable name in different scopes. If one scope is parent of the other, the current will be used and will shadow the content of the one from outer scope. We are going to cover this more when we are covering multi-file projects and functions.

Examples:

int a;       // integer variable
+float pi;    // floating-point variable
+char c;      // character variable
+bool d;      // boolean variable
+string name; // string variable 
+

Note

We are going to cover later in this course other complex types in other modules such as arrays, pointers and references.

Variable assignment

= operator means that whatever the container have will be overwritten by the result of the right side statement. You should read it not as equal but as receives to avoid misunderstanding. Reference

int a = 10;         // integer variable
+float pi = 3.14;    // floating-point variable
+char c = 'A';       // character variable
+bool d = true;      // boolean variable
+string name = "John Doe"; // string variable 
+

Every variable, by default, is not initialized. It means that you have to set the content of it after declaring. If the variable is read before the assignment, its content is garbage, it will read whatever is set in the memory stack for the given container location. So the best approach is to always set a value when a variable is declared or be assured that every variable is never read before an assigment.

A char variable can be assigned by integer numbers or any characters between single quotes.

char c;
+c = 'A'; // the content is 65 and the representation is A. see ascii table.
+c = 98; // the content is 98 and the representation is b. see ascii table.
+

A bool is by default either true or false, but it can be assigned by numeric value following this rule: - if the value is 0, then the value stored by the variable is false (0); - if the value is anything different than 0, the value stored is true (1);

To convert a string to a int, you have to use a function stoi(for int), stol(for long) or stoll(for long long) because both types are not compatibles.

To convert a string to a float, you have to use a function stof(for float), stod(for double), or stold(for long double) because both types are not compatibles.

Literals

Literals are values that are expressed freely in the code. Every numeric type can be appended with suffixes to specify explicitly the type to avoid undefined behaviors or compiler defined behaviors such as implicit cast or container size.

Integer literals

There are 4 types of integer literals. - decimal-literal: never starts with digit 0 and followed by any decimal digit; - octal-literal: starts with 0 digit and followed by any octal digit; - hex-literal: starts with 0x or 0X and followed by any hexadecimal digit; - binary-literal: starts with 0b or 0B and followed by any binary digit;

// all of these variables holds the same value, 42, but using different bases.
+// the right side of the = are literals
+int deci = 42; 
+int octa = 052; 
+int hexa = 0x2a; 
+int bina = 0b101010;
+

Suffixes:

  • no suffix provided: it will use the first smallest signed integer container that can hold the data starting from int;
  • u or U: it will use the first smallest unsigned integer container that can hold the data starting from unsigned int;
  • l or L: it will use the first smallest signed integer container that can hold the data starting from long;
  • lu or LU: it will use the first smallest unsigned integer container that can hold the data starting from unsigned long;
  • ll or LL: it will use the long long signed integer container long long;
  • llu or LLU: it will use the long long unsigned integer container unsigned long long;
unsigned long long l1 = 15731685574866854135ull;
+

Reference

Float point literals

There are 3 suffixes in floating point decimals.

  • no suffix means the container is a double;
  • f suffix means it is a float container;
  • l suffix means it is a long double container;

A floating point literal can be defined by 3 ways:

  • digit-sequence decimal-exponent suffix(optional).
    • 1e2 means its a double with the value of 1*10^2 or 100;
    • 1e-2f means its a float with the value of 1*10^-2 or 0.01;
  • digit-sequence . decimal-exponent(optional) suffix(optional).
    • 2. means it is a double with value of 2;
    • 2.f means it is a float with value of 2;
    • 2.1l means it is a long double with value of 2.1;
  • digit-sequence(optional) . digit-sequence decimal-exponent(optional) suffix(optional)
    • 3.1415f means it is a float with value of 3.1415;
    • .1 means it is a double with value of 0.1;
    • 0.1e1L means it is a long double with value of 1;

Reference

Arithmetic Operations

In C++, you can perform common arithmetic operations is statements using the following operators Reference:

  • Addition: +
  • Subtraction: -
  • Multiplication: *
  • Division: /
  • Modulus (remainder): %

There are two special cases called unary increment / decrement operators that may occur in before(prefixed) or after(postfixed) the variable name reference. If prefixed it is executed first and then return the result, if postfixed, it returns the current value and then execute the operation:

  • Increment: ++;
  • Decrement: --;

There are shorthand assignment operators reference that reassign the value of the variable after executing the arithmetic operation with the right side of the operator with the old value of the variable:

  • Addition: +=
  • Subtraction: -=
  • Multiplication: *=
  • Division: /=
  • Modulus (remainder): %=

Here is an example of how to use these operators in a C++ program:

#include <iostream>
+
+int main() {
+  int a = 5;
+  int b = 2;
+
+  std::cout << a + b << std::endl; // Outputs 7
+  std::cout << a - b << std::endl; // Outputs 3
+  std::cout << a * b << std::endl; // Outputs 10
+  std::cout << a / b << std::endl; // Outputs 2
+  std::cout << a % b << std::endl; // Outputs 1
+  a++;
+  std::cout << a << std::endl; // Outputs 6
+  a--;
+  std::cout << a << std::endl; // Outputs 5
+
+  std::cout << a++ << std::endl; // Outputs 5 because it first returns the current value and then increments.
+  std::cout << a << std::endl; // Outputs 6
+
+  std::cout << --a << std::endl; // Outputs 5 because it first decrements the value and then return it already changed;
+  std::cout << a << std::endl; // Outputs 5
+
+  b *= 2; // it is a short version of b = b * 2; 
+  std::cout << b << std::endl; // Outputs 4
+
+  b /= 2; // it is a short version of b = b / 2; 
+  std::cout << b << std::endl; // Outputs 2
+
+  return 0;
+}
+

Note that the division operator (/) performs integer division if both operands are integers. If either operand is a floating-point type, the division will be performed as floating-point division. So 5/2 is 2 because both are integers, se we use integer division, but 5/2. is 2.5 because the second one is a double literal.

Also, the modulus operator (%) returns the remainder of an integer division. For example, 7 % 3 is equal to 1, because 3 goes into 7 two times with a remainder of 1.

Implicit cast

Implicit casting, also known as type coercion, is the process of converting a value of one data type to another data type without the need for an explicit cast operator. In C++, this can occur when an expression involves operands of different data types and the compiler automatically converts one of the operands to the data type of the other in order to perform the operation.

For example:

int a = 1;
+double b = 1.5;
+
+int c = a + b; // c is automatically converted to a double before the addition
+
In this example, the value of b is a double, while the value of a is an int. When the addition operator is used, the compiler will automatically convert a to a double before performing the addition. The result of the expression is a double, so c is also automatically converted to a double before being assigned the result of the expression.

Implicit casting can also occur when assigning a value to a variable of a different data type. For example:

int a = 2;
+double b = a; // a is automatically converted to a double before the assignment
+

In this case, the value of a is an int, but it is being assigned to a double variable. The compiler will automatically convert the value of a to a double before making the assignment.

It's important to be aware of implicit casting, because it can sometimes lead to unexpected results or loss of precision if not handled properly. In some cases, it may be necessary to use an explicit cast operator to explicitly convert a value to a specific data type.

Explicit cast

In C++, you can use an explicit cast operator to explicitly convert a value of one data type to another. The general syntax for an explicit cast are:

// ref: https://en.wikibooks.org/wiki/C%2B%2B_Programming/Programming_Languages/C%2B%2B/Code/Statements/Variables/Type_Casting
+(TYPENAME) value; // regular c-style. do not use this extensively
+static_cast<TYPENAME>(value); // c++ style conversion, arguably it is the preferred style. use this if you know what you are doing.
+TYPENAME(value); // functional initialization, slower but safer. might not work for every case. Use this if you are unsure or want to be safe.
+TYPENAME{value}; // initialization style, faster, convenient, concise and arguably safer because it triggers warnings. use this for the general case. 
+

For example:

int a = 7;
+double b = (double) a; // a is explicitly converted to a double
+

In this example, the value of a is an int, but it is being explicitly converted to a double using the explicit cast operator. The result of the cast is then assigned to the double variable b.

Explicit casts can be useful in situations where you want to ensure that a value is converted to a specific data type, regardless of the data types of the operands in an expression. However, it's important to be aware that explicit casts can also lead to unexpected results or loss of precision if not used carefully. This behaviour is called narrowing.

C-style:

int a = 20001;
+char b = (char) a; // b is assigned the ASCII value for the character '!'
+

In this case, the value of a is an int, but it is being explicitly converted to a char using the explicit cast operator. However, the range of values that can be represented by a char is much smaller than the range of values that can be represented by an int, so the value of a is outside the range that can be represented by a char. As a result, b is assigned the ASCII value for the character 1, which is not the same as the original value of a. The value ! is 33 in ASCII table, and 33 is the result of the 20001 % 256 where 256 is the number of elements the char can represent. In this case, what happened was a bug that is hard to track called int overflow.

auto keyword

auto keyword is mostly a syntax sugar to automatically infer the data type. It is used to avoid writing the full declaration of complex types when it is easily inferred. auto is not a dynamic type, once it is inferred, it cannot be changed later like in other dynamic typed languages such as javascript.

auto i = 0; // automatically inferred as an integer type;
+auto f = 0.0f; // automatically inferred as a float type;
+
+i = "word"; // this won't work, because it was already inferred as an integer and integer container cannot hold string
+

Formatting

There are many functions to help you format the output in the way it is expected, here goes a selection of the most useful ones I can think. Yon can find more functions and manipulators here and here.

To set a fixed precision for floating point numbers in C++, you can use the std::setprecision manipulator from the iomanip header, along with the std::fixed manipulator.

Here's an example of how to use these manipulators to output a floating point number with a fixed precision of 3 decimal places:

#include <iostream>
+#include <iomanip>
+
+int main() {
+  double num = 3.14159265;
+
+  std::cout << std::fixed << std::setprecision(3) << num << std::endl;
+  // Output: 3.142
+  return 0;
+}
+

You can also use the std::setw manipulator to set the minimum field width for the output, which can be useful for aligning the decimal points in a table of numbers.

For example:

#include <iostream>
+#include <iomanip>
+
+int main() {
+  double num1 = 3.14159265;
+  double num2 = 123.456789;
+
+  std::cout << std::fixed << std::setprecision(3) << std::setw(8) << num1 << std::endl;
+  std::cout << std::fixed << std::setprecision(3) << std::setw(8) << num2 << std::endl;
+  // Output:
+  //   3.142
+  // 123.457
+  return 0;
+}
+

Note that these manipulators only affect the output stream, and do not modify the values of the floating point variables themselves. If you want to store the numbers with a fixed precision, you will need to use a different method such as rounding or truncating the numbers.

To align text to the right or left in C++, you can use the setw manipulator in the iomanip header and the right or left flag. More details here

Here is an example:

#include <iostream>
+#include <iomanip>
+
+int main() {
+  std::cout << std::right << std::setw(10) << "Apple" << std::endl;
+  std::cout << std::left << std::setw(10) << "Banana" << std::endl;
+  return 0;
+}
+

Both will print inside a virtual column with the size of 10 chars. This will output the following:

    Apple
+Banana   
+

Optional Exercises

Do all exercises up to this topic here.

In order to get into coding, the easiest way to learn is by solving coding challenges. It is like learning any new language, you have to be exposed and involved. Do not do only the homeworks, otherwise you are going to fail. Another metaphor is: the homework is the like a competition that you have to run to prove that you are trained, but in order to train, you have to do small runs and do small steps first, so you have to train yourself ot least 2x per week.

The best way to train yourself in coding and solving problems in my opinion is this:

  1. Sort Beecrowd questions from the most solved to the least solved questions here is the link of the list already filtered.
  2. Start solving the questions from the top to the bottom. Chose one from de the beginning, it would be one of the easiest;
  3. If you are feeling comfortable and being able to solve more than 3 per hour, you are allowed to skip some of the questions. It is just like in a gym, when you get used with the load, you increase it. Otherwise continue training slowly.

Homework

banknotes and coins - Here you will use formatting, modulus, casting, arithmetic operations, compound assignment. You don't need to use if-else.

Hint. Follow this only if dont find your way of solving it. You can read the number as a double, multiply by 100 and then do a sequence of modulus and division operations.

double input; // declare the container to store the input
+cin >> input; // read the input
+
+long long cents = static_cast<long long>(input * 100); // number of cents. Note: if you just use float, you will face issues. 
+
+long long notes100 = cents/10000; // get the number of notes of 100 dollar (100 units of 100 cents) 
+cents %= 10000; // remove the amount of 100 dollars
+

Another good way of solving it avoiding casting is reading the number as string and removing the point. Never use float for money

string input; // declare the container to store the input
+cin >> input; // read the input
+
+// given every input will have the dot, we should remove it. remove the dot `.`
+input = input.erase(str.find('.'), 1);
+
+// not it is safe to use int, because no bit is lost in floating casting and nobody have more than MAX_INT cents.  
+int cents = stoll(input); // number of cents. 
+
+long long notes100 = cents/10000; // get the number of notes of 100 dollar (100 units of 100 cents) 
+cents %= 10000; // update the remaining cents by removing the amount of 100 dollars in cents units
+

Troubleshooting

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

\ No newline at end of file diff --git a/intro/03-datatypes/volume.cpp b/intro/03-datatypes/volume.cpp new file mode 100644 index 00000000..b685d15d --- /dev/null +++ b/intro/03-datatypes/volume.cpp @@ -0,0 +1,5 @@ +#include +// https://www.beecrowd.com.br/judge/en/problems/view/1011 +int main(){ + +} \ No newline at end of file diff --git a/intro/04-conditionals/CMakeLists.txt b/intro/04-conditionals/CMakeLists.txt new file mode 100644 index 00000000..01bcc7b6 --- /dev/null +++ b/intro/04-conditionals/CMakeLists.txt @@ -0,0 +1 @@ +add_executable(04-coordinates coordinates.cpp) diff --git a/intro/04-conditionals/coordinates.cpp b/intro/04-conditionals/coordinates.cpp new file mode 100644 index 00000000..807328c5 --- /dev/null +++ b/intro/04-conditionals/coordinates.cpp @@ -0,0 +1,5 @@ +#include +// https://www.beecrowd.com.br/judge/en/problems/view/1141 +int main(){ + +} \ No newline at end of file diff --git a/intro/04-conditionals/index.html b/intro/04-conditionals/index.html new file mode 100644 index 00000000..8a1f86a8 --- /dev/null +++ b/intro/04-conditionals/index.html @@ -0,0 +1,123 @@ + Conditionals - Awesome GameDev Resources

Conditionals, Switch, Boolean Operations

Estimated time to read: 26 minutes

Boolean Operations

In C++, the boolean operators are used to perform logical operations on boolean values (values that can only be true or false).

AND

And operators can be represented by &&(most common syntax) or and(C++20 and up - alternative operator representation). This operator represents the logical AND operation. It returns true if both operands are true, and false otherwise. - It needs only if one false element to make the result be false; - It needs all elements to be true in order the result be true;

p q p and q
true true true
true false false
false true false
false folse false

For example:

bool x = true;
+bool y = false;
+bool z = x && y; // z is assigned the value false
+

OR

Or operators can be represented by ||(most common syntax) or or(C++20 and up - - alternative operator representation). This operator represents the logical OR operation. It returns true if one operands are true, and false if all are false. - It needs only if one true element to make the result be true; - It needs all elements to be false in order the result be false;

p q p or q
true true true
true false true
false true true
false folse false

For example:

bool x = true;
+bool y = false;
+bool z = x || y; // z is assigned the value true
+

NOT

Not operator can be represented by !(most common syntax) or not(C++20 and up - alternative operator representation). This operator represents the logical NOT operation. It returns true if operand after it is false, and true otherwise._

p not p
true false
false true

For example:

bool x = true;
+bool y = !x; // y is assigned the value false
+

Bitwise operations

In C++, the bitwise operators are used to perform operations on the individual bits of an integer value.

AND

Bitwise and can be represented by & or bitand(C++20 and up - alternative operator representation: This operator performs the bitwise AND operation. It compares each bit of the first operand to the corresponding bit of the second operand, and if both bits are 1, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0. For example:

int x = 5; // binary representation is 0101
+int y = 3; // binary representation is 0011
+int z = x & y; // z is assigned the value 1, which is binary 0001
+

OR

Bitwise or can be represented by | or bitor(C++20 and up - alternative operator representation: This operator performs the bitwise OR operation. It compares each bit of the first operand to the corresponding bit of the second operand, and if either bit is 1, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0. For example:

int x = 5; // binary representation is 0101
+int y = 3; // binary representation is 0011
+int z = x | y; // z is assigned the value 7, which is binary 0111
+

XOR

Bitwise xor can be represented by ^ or bitxor(C++20 and up - alternative operator representation: This operator performs the bitwise XOR (exclusive OR) operation. It compares each bit of the first operand to the corresponding bit of the second operand, and if the bits are different, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0.

int x = 5; // binary representation is 0101
+int y = 3; // binary representation is 0011
+int z = x ^ y; // z is assigned the value 6, which is binary 0110
+

Bitwise xor is a type of binary sum without carry bit.

NOT

Bitwise not can be represented by ~ or bitnot(C++20 and up - alternative operator representation: This operator performs the bitwise NOT (negation) operation. It inverts each bit of the operand (changes 1 to 0 and 0 to 1). For example:

int x = 5; // binary representation is 0101
+int y = ~x; // y is assigned the value -6, which is binary 11111010. See complement of two for more details.
+

SHIFT

In C++, the shift operators are used to shift the bits of a binary number to the left or right. Pay attention to not mix with the same ones used to strings, in that case they are called stream operators. There are two shift operators:

  1. <<: This operator shifts the bits of the left operand to the left by the number of positions specified by the right operand. For example:
int x = 2; // binary representation is 10
+x = x << 1; // shifts the bits of x one position to the left and assigns the result to x
+// x now contains 4, which is binary 100
+
  1. >>: This operator shifts the bits of the left operand to the right by the number of positions specified by the right operand. For example:
int x = 4; // binary representation is 100
+x = x >> 1; // shifts the bits of x one position to the right and assigns the result to x
+// x now contains 2, which is binary 10
+

The shift operators are often used to perform operations more efficiently than can be done with other operators. They can also be used to extract or insert specific bits from or into a value.

Conditionals

Conditionals are used to branch and execute different blocks of code based on whether a certain condition is true or false. There are several types of conditionals, including:

if clause

if statements: These execute a block of code if a certain condition is true. If statements usually uses comparison operators or any result that can be transformed as boolean - any number different than 0 is considered true, only 0 is considered false.

Comparison operator is used to compare the value of two operands. The operands can be variables, expressions, or constants. The comparison operator returns a Boolean value of true or false, depending on the result of the comparison. There are several comparison operators available:

  • ==: returns true if the operands are equal;
  • !=: returns true if the operands are not equal;
  • >: returns true if the left operand is greater than the right operand;
  • <: returns true if the left operand is less than the right operand;
  • >=: returns true if the left operand is greater than or equal to the right operand;
  • <=: returns true if the left operand is less than or equal to the right operand;

For example:

if (x > y) {
+  // code to execute if x is greater than y
+}
+

If it appears without scope {}, the condition will applied only to the next statement. For example

if (x > y) 
+  doSomething(); // only happens if x > y is evaluated as true
+otherThing(); // this will always occur.  
+
Inline conditional:
if (x > y) doSomething(); // only happens if x > y is evaluated as true
+
if (x > y) {doSomething();} // only happens if x > y is evaluated as true
+

A common source of error is adding a ; after the condition. In this case, the compiler will understand that it is an empty statement and always execute the next statement.

if (x > y); // note the inline empty statement here finished with a `;`
+  doSomething(); // this will always happen
+

Note

It is preferred to always create scopes with {}, but there is no need to have them if you have only one statement that will happen for that condition.

if-else clause

All the explanations from if applies here but now we have a fallback case.

if-else statements: These execute a block of code if a certain condition is true, and a different block of code if the condition is false. For example:

if (x > y) {
+  // code to execute if x is greater than y
+} else {
+  // code to execute if x is not greater than y
+}
+

All the explanations about scope on the if clause described before, can be applied to the else.

Ternary Operator

The ternary operator is also known as the conditional operator. It is used to evaluate a condition and return one value if the condition is true and another value if the condition is false. The syntax for the ternary operator is:

condition ? value_if_true : value_if_false
+

For example:

int a = 5;
+int b = 10;
+int min = (a < b) ? a : b;  // min will be assigned the value of a, since a is less than b
+

Here, the condition a < b is evaluated to be true, so the value of a is returned. If the condition had been false, the value of b would have been returned instead.

The ternary operator can be used as a shorthand for an if-else statement. For example, the code above could be written as:

int a = 5;
+int b = 10;
+int min;
+if (a < b) {
+  min = a;
+} else {
+  min = b;
+}
+

Switch

switch statement allows you to execute a block of code based on the value of a variable or expression. The switch statement is often used as an alternative to a series of if statements, as it can make the code more concise and easier to read. Here is the basic syntax for a switch statement in C++:

switch (expression) {
+  case value1:
+    // code to be executed if expression == value1
+    break;
+  case value2:
+    // code to be executed if expression == value2
+    break;
+  // ...
+  default:
+    // code to be executed if expression is not equal to any of the values
+}
+

The expression is evaluated once, and the value is compared to the values in each case statement. If a match is found, the code associated with that case is executed. The break statement is used to exit the switch statement and prevent the code in subsequent cases from being executed. The default case is optional, and is executed if none of the other cases match the value of the expression.

Here is an example of a switch statement that checks the value of a variable x and executes different code depending on the value of x:

int x = 2;
+
+switch (x) {
+  case 1:
+    cout << "x is 1" << endl;
+    break;
+  case 2:
+    cout << "x is 2" << endl;
+    break;
+  case 3:
+    cout << "x is 3" << endl;
+    break;
+  default:
+    cout << "x is not 1, 2, or 3" << endl;
+}
+

In this example, the output would be "x is 2", as the value of x is 2.

Note

It's important to note that C++ uses strict type checking, so you need to be careful about the types of variables you use in your conditionals. For example, you can't compare a string to an integer using the == operator.

Switch fallthrough

In C++, the break statement is used to exit a switch statement and prevent the code in subsequent cases from being executed. However, sometimes you may want to allow the code in multiple cases to be executed if certain conditions are met. This is known as a "fallthrough" in C++.

To allow a switch statement to fall through to the next case, you can omit the break statement at the end of the case's code block. The code in the next case will then be executed, and the switch statement will continue to execute until a break statement is encountered or the end of the switch is reached.

Here is an example of a switch statement with a fallthrough:

int x = 2;
+
+switch (x) {
+  case 1:
+    cout << "x is 1" << endl;
+  case 2:
+    cout << "x is 2" << endl;
+  case 3:
+    cout << "x is 3" << endl;
+  default:
+    cout << "x is not 1, 2, or 3" << endl;
+}
+

In this example, the output would be "x is 2", "x is 3" and "x is not 1, 2, or 3", as the break statement is omitted in the case 2 block and the code in the case 3 block is executed as a result.

It is generally considered good practice to include a break statement at the end of each case in a switch statement to avoid unintended fallthrough. However, there may be cases where a fallthrough is desired behavior. In such cases, it is important to document the intended fallthrough in the code to make it clear to other programmers.

Issues with switch and enums

A nice usecase for switches is to be used to select between possible choices and enums are one of the best ways of expressing choices. So it seems natural to combine both, right? Well, not so fast. There are some issues with this combination that you might be aware of.

The main issue with this approach relies on the switch's default behavior. If you use deafult on swiches in conjunction with stringly typed enums (enum class or enum struct), the compiler won't be able to warn you about missing cases. This is because the default case will be triggered for any value that is not explicitly handled by the switch. This is a problem because it is very easy to forget to add a new case when a new value is added to the enum and the compiler won't warn you about it. Example:

ColorEnum.h
enum class Color { Red, Green };
+
UseCaseX.cpp
// this code goes inside some function that uses Color c
+switch(c){
+  case Color::Red:
+    // do something
+    break;
+  default: // covers Color::Green and any other value
+    // do something else
+    break;
+}
+

But you just remembered that now you should cover the Blue state. So you add it to the enum:

ColorEnum.h
enum class Color { Red, Green, Blue };
+

But you might forget to add the coverage for the new case to the switch, it will fall into the default case without warnings.

So the best combination is to use switches with enum classes and do not use default cases. This way, the compiler will warn you about missing cases. So if you add a new enum value had this code instead, you will be warned about missing cases.

UseCaseX.cpp
// this code goes inside some function that uses Color c
+switch(c){
+  case Color::Red:
+    // do something
+    break;
+  case Color::Green:
+    // do something else
+    break;
+}
+// this code will throw a warning if you forget to add a case for the new enum value
+

Homework

  • Do all exercises up to this topic here.

  • Coordinates of a Point. In this activity, you will have to code a way to find the quadrant of a given coordinate.

Outcomes

It is expected for you to be able to solve all questions before this one 1041 on beecrowd. Sort Beecrowd questions from the most solved to the least solved questions here in the link. If you don't, see Troubleshooting. Don`t let your study pile up, this homework is just a small test, it is expected from you to do other questions on Beecrowd or any other tool such as leetcode.

Troubleshooting

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

\ No newline at end of file diff --git a/intro/05-loops/index.html b/intro/05-loops/index.html new file mode 100644 index 00000000..b73ac342 --- /dev/null +++ b/intro/05-loops/index.html @@ -0,0 +1,150 @@ + Loops - Awesome GameDev Resources

Loops, for, while and goto

Estimated time to read: 16 minutes

A loop is a control flow statement that allows you to repeat a block of code.

while loop

This loop is used when you want to execute a block of code an unknown number of times, as long as a certain condition is true. It has the following syntax:

Syntax:

while (condition) {
+    // code block to be executed
+}
+
Example:
int nums = 10;
+while (nums>=0) {
+    cout << nums << endl;
+    nums--;
+}
+

If the block is only one statement, it can be expressed without {}s.

Syntax:

while (condition) 
+    // statement goes here
+
Example:
int nums = 10;
+while (nums>=0) 
+    cout << nums-- << endl;
+

do-while loop

This is similar to the while loop, but it is guaranteed to execute at least once.

Syntax:

do {
+    // code block to be executed
+} while (condition);
+

Example:

int x = 0;
+do{
+    cout << x << endl;
+    x++;
+} while(x<10);
+

If the block is only one statement, it can be expressed without {}s.

Syntax:

do
+    // single statement goes here
+while (condition);    
+
Example:
int x = 0;
+do 
+    cout << x++ << endl;
+while (x<=10);
+

for loop

This loop is used when you know in advance how many times you want to execute a block of code.

  • The initialization part is executed only once, at the beginning of the loop. It is used to initialize any loop variables.
  • The condition is evaluated at the beginning of each iteration of the loop. If the condition is true, the code block inside the loop is executed. If the condition is false, the loop is terminated.
  • The increment part is executed at the end of each iteration of the loop. It is used to update the loop variables.

Syntax:

for (initialization; condition; step_iteration) {
+    // code block to be executed
+}
+

Example:

for(int i=10; i<=0; i--){
+    cout << i << endl; 
+}
+

If the block is only one statement, it can be expressed without {}s.

Syntax:

for (initialization; condition; step_iteration)
+    // single statement goes here
+
Example:
for(int i=10; i<=0; i--)
+    cout << i << endl;
+

range based loops

A range-based loop is a loop that iterates over a range of elements. The declaration type should follow the same type of the elements in the range.

Syntax:

for (declaration : range) {
+    // code block to be executed
+}
+
or
for (declaration : range)
+    // single statement
+

To avoid explaining arrays and vectors now, assume v as an iterable container that can hold multiple elements. I am going to use auto here to avoid explaining this topic any further.

auto v = {1, 2, 3, 4, 5}; // an automatically inferred iterable container with multiple elements
+for (int x : v) {
+    cout << x << " ";
+}
+

It is possible to automatically generate ranges

#include <ranges>
+#include <iostream>
+using namespace std;
+int main() {  
+    // goes from 0 to 9. in iota, the first element is inclusive and the last one is exclusive.
+    for (int i : views::iota(0, 10))  
+        cout << i << ' ';
+}
+

Loop Control Statements

break

break keyword defines a way to break the current loop and end it immediately.

// check if it is prime
+int num; 
+cin >> num; // read the number to be checked if is prime or not
+bool isPrime = true;
+for(int i=2; i<num; i++){
+    if(num%i==0){ // check if i divides num
+        isPrime = false;
+        break; // this will break the loop and prevent further precessing
+    }
+}
+

continue

continue keyword is used to skip the following statements of the loop and move to the next iteration.

// print all even numbers
+for (int i = 1; i <= 10; i++) {
+    if (i % 2 == 1)
+        continue;
+    cout << i << " "; // this statement is skipped if odd numbers
+}
+

goto

You should avoid goto keyword. PERIOD. The only acceptable usage is to break multiple nested loops at the same time. But even in this case, is better to use return statement and functions that you're going to see later in this course.

The goto keyword allows you to transfer control to a labeled statement elsewhere in your code.

Example on how to create a loop using labels and goto. You can create a loop just using labels(anchors) and goto keywords. But this syntax is hard to debug and read. Avoid it at all costs:

#include <iostream>
+using namespace std;
+int main() {
+    int i=0;
+    start: // this a label named as start.
+    cout << i << endl;
+    i++;
+    if(i<10)
+        goto start; // jump back to start
+    else
+        goto finish; // jump to finish
+    finish: // this a label named as finish.
+    return 0;
+}
+

Example on how to jump over and skip statements:

#include <iostream>
+
+int main() {
+    int x = 10;
+
+    goto jump_over_this;  // control jumps to the label below
+
+    x = 20;  // this line of code is skipped
+
+    jump_over_this:  // label for goto statement
+    std::cout << x << std::endl;  // outputs 10
+
+    return 0;
+}
+

Example of an arguably acceptable use of goto. Here you can see the usage of a way to break both loops at the same time. If you use break, you will only break the inner loop. In this situation it is better to break your code into functions to reduce complexity and nesting.

for (int i = 0; i < imax; ++i)
+    for (int j = 0; j < jmax; ++j) {
+        if (i + j > elem_max) goto finished;
+        // ...
+    }
+finished:
+// ...
+

Loop nesting

You can nest loops by placing one loop inside another. The inner loop will be executed completely for each iteration of the outer loop. Here is an example of nesting a for loop inside another for loop:

for (int i = 0; i < 10; i++) {
+  for (int j = 0; j < 5; j++) {
+    cout << "i: " << i << " j: " << j << endl;
+  }
+}
+

Infinite loops

A infinite loop is when the code loops indefinitely without having a way out. Here goes some examples:

while(true)
+    cout << "Hello World!" << endl; 
+
for(;;)
+    cout << "Hello World!" << endl; 
+
int i = 0;
+while(i<10); // note the ';' here, it will run indefinitely an empty statement because it won't reach the scope.
+{
+    cout << i << endl;
+    i++;
+}
+

Accumulator Pattern

The accumulator pattern is a way to accumulate values in a loop. Here is an example of how to use it:

int fact = 1; // accumulator variable
+for(int i=2; i<5; i++){
+    fact *= i; // multiply the accumulator by the current value of i
+}
+// fact = 1*1*2*3*4 = 24
+cout << fact << endl;
+

Search pattern

The search pattern is a way to search for a value in a loop, the most common implementation is a boolean flag. Here is an example of how to use it:

int num;
+cin >> num; // read the number to be checked if is prime or not
+bool isPrime = true; // flag to indicate if the number is prime or not
+for(int i=2; i<num; i++){
+    if(num%i==0){ // check if i divides num
+        isPrime = false;
+        break; // this will break the loop and prevent further precessing
+    }
+}
+cout << num << " is " << (isPrime ? "" : "not ") << "prime" << endl;
+// (isPrime ? "" : "not ") is the ternary operator, it is a shorthand for if-else
+

Debugging

Debugging is the act of instrumentalize your code in order to track problems and fix them.

The most naive way of doing it is by printing variables random texts to find the problem. Don't do it. Use debugger tools instead. Each IDE has his its ows set of tools, if you are using CLion, use this tutorial.

Automated tests

There are lots of methodologies to guarantee your code is correct and solve the problem it is supposed to solve. The one that stand out is Automated tests.

When you are using beecrowd, leetcode, hackerrank or any other tool to solve problems to learn how to code, a problem is posted to be solved and they test your code solution against a set of expected outputs. This is automated testing. You can generate custom automated tests for your code and cover all cases that you can imagine before you start coding the solution. This is a good practice and is documented in the industry as Test Driven Development.

Homework

Do all exercises up to this topic here.

In this activity, you will have to solve Fibonacci sequence. You should implement using loops, and variables. Do not use arrays nor closed-form formulas.

Optional Readings on Fibonacci Sequence;

Hint: Create two variables, one to store the current value and the previous value. For each iteration step, calculate the sum of both and store and put into a temp variable. Copy the current into the previous and set the current with the temporary you calculated before.

Outcomes

It is expected for you to be able to solve all questions before this one 1151 on beecrowd. Sort Beecrowd questions from the most solved to the least solved questions here in the link. If you don't, see Troubleshooting. Don`t let your study pile up, this homework is just a small test, it is expected from you to do other questions on Beecrowd or any other tool such as leetcode.

Troubleshooting

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

\ No newline at end of file diff --git a/intro/06-functions/index.html b/intro/06-functions/index.html new file mode 100644 index 00000000..23e40c26 --- /dev/null +++ b/intro/06-functions/index.html @@ -0,0 +1,296 @@ + Functions - Awesome GameDev Resources

Base Conversion, Functions, Pointers, Parameter Passing

Estimated time to read: 33 minutes

Base conversion

Data containers use binary coding to store data where every digit can be 0 or 1, this is called base 2, but there are different types of binary encodings and representation, the most common integer representation is Complement of two for representing positive and negative numbers and for floats is IEEE754. Given that, it is relevant to learn how to convert the most used common bases in computer science in order to code more efficiently.

Most common bases are: - Base 2 - Binary. Digits can go from 0 to 1. {0, 1}; - Base 8 - Octal. Digits can go from 0 to 7. {0, 1, 2, 3, 4, 5, 6, 7}; - Base 10 - Decimal. Digits can go from 0 to 9. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - Base 16 - Hexadecimal. Digits can go from 0 to 9 and then from A to F. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F};

Converting from Decimal to any base

There are several methods for performing base conversion, but one common method is to use the repeated division and remainder method. To convert a number from base 10 to another base b, you can divide the number by b and record the remainder. Repeat this process with the quotient obtained from the previous division until the quotient becomes zero. The remainders obtained during the process will be the digits of the result in the new base, with the last remainder being the least significant digit.

For example, to convert the decimal number 75 to base 2 (binary), we can follow these steps:

75 ÷ 2 = 37 remainder 1
+37 ÷ 2 = 18 remainder 1
+18 ÷ 2 = 9 remainder 0
+9 ÷ 2 = 4 remainder 1
+4 ÷ 2 = 2 remainder 0
+2 ÷ 2 = 1 remainder 0
+1 ÷ 2 = 0 remainder 1
+

The remainders obtained during the process (1, 1, 0, 1, 0, 0, 1) are the digits of the result in base 2, with the last remainder (1) being the least significant digit. Therefore, the number 75 in base 10 is equal to 1001011 in base 2.

Converting from any base to decimal

The most common way to convert from any base to decimal is to follow the formula:

dn-1*bn-1 + dn-2*bn-2 + ... + d1*b1 + d0*b0

Where dx represents the digit at the corresponding position x in the number, n is the number of digits in the number, and b is the base of the number.

For example, to convert the number 1001011 (base 2) to base 10, we can use the following formula:

(1 * 2^6) + (0 * 2^5) + (0 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = 75

Therefore, the number 1001011 in base 2 is equal to 75 in base 10.

Functions

A function is a block of code that performs a specific task. It is mostly used to isolate specific reusable functionality from the rest of the code. It has a name, a return type, and a list of parameters. Functions can be called from other parts of the program to execute the task. Here is an example of a simple C++ function that takes two integers as input and returns their sum.

int add(int x, int y) {
+  int sum = x + y;
+  return sum;
+}
+

To call the function, you would use its name followed by the arguments in parentheses:

int a = 2, b = 3;
+int c = add(a, b); // c will be equal to 5
+

Functions can also be declared before they are defined, in which case they are called "prototypes." This allows you to use the function before it is defined, which can be useful if you want to define the function after it is used. For example:

int add(int x, int y);
+
+int main() {
+  int a = 2, b = 3;
+  int c = add(a, b);
+  return 0;
+}
+
+int add(int x, int y) {
+  int sum = x + y;
+  return sum;
+}
+

Reference Declaration

Note

This content only covers an introduction to the topic.

The & is used to refer memory address of the variable. When used in the declaration, it is the Lvalue reference declarator. It is an alias to an already-existing, variable, object or function. Read more here.

When used as an prefix operator before the name of a variable, it will return the memory address where the variable is allocated.

Example:

string s;
+
+// the variable r has the same memory address of s
+// the declaration requires initialization
+string& r = s; 
+
+s = "Hello";
+
+cout << &s << endl; // prints the variable memory address location. in my machine: "0x7ffc53631cd0"
+cout << &r << endl; // prints the same variable memory address location. in my machine: "0x7ffc53631cd0"
+
+cout << s << endl; // prints "Hello"
+cout << r << endl; // prints "Hello"
+
+// update the content
+r += " world!";
+
+cout << s << endl; // prints "Hello world!"
+cout << r << endl; // prints "Hello world!"
+

Pointer Declaration

Note

This content only covers an introduction to the topic.

The * is used to declare a variable that holds the address of a memory position. A pointer is an integer number that points to a memory location of a container of a given type. Read more here.

string* r = nullptr; // it is not required do initialize, but it is a good practice to always initialize a pointer pointing to null address (0). 
+string s = "Hello";
+r = &s; // the variable r stores the memory address of s
+
+cout << s << endl; // prints the content of the variable s. "Hello"
+cout << &s << endl; // prints the address of the variable s. in my machine "0x7fffdda021b0"
+
+cout << r << endl;  // prints the numeric value of the address the pointer points, in this case it is "0x7fffdda021b0".
+cout << &r << endl; // prints the address of the variable r. it is a different address than s, in my machine "0x7fffdda021d0".
+cout << *r << endl; // prints the content of the container that is pointing, it prints "Hello".
+
+string other = "world";
+r = &s; // r now points to another variable
+
+cout << *r << endl; // prints the content of the container that is pointing, it prints "world"
+

void type

We covered briefly the void type when we covered data types. There are 2 main usages of void

void is used to specify that some function dont return anything to the caller.

voidFunction.cpp
// this function does not need to return anything
+// optionally you can use an empty `return` keyword without variable to break the flow early
+void doSomething() {
+    // function body goes here
+    return; // this line is optional, it can be used inside conditional do break early the function flow
+}
+

void* is used as a placeholder to store a pointer to anything in memory. Use this with extreme caution, because you can easily mess with it and lose track of the type or the conversion. The most common use are: - Access the raw content of a variable in memory; - Low-level raw memory allocation; - Placeholder to act as a pointer to anything;

rawpointer.cpp
#include <iostream>
+#include <iomanip>
+#include <bitset>
+using namespace std;
+int main()
+{
+    // declare our data
+    float f = 2.0f;
+    // point without type that points to the memory location of `f`
+    void* p = &f; 
+    // (int*) casts the void* to int*, so it can be understandable
+    // * in front means that we want to fetch the content of what is pointing
+    int i = *(int*)(p); 
+    cout << hex << i << endl; // prints 40000000
+    std::bitset<32> bits(i);
+    cout << bits << endl; // prints 01000000000000000000000000000000
+    return 0;
+}
+

Passing parameter to a function by value

Pass-by-value is when the parameter declaration follows the traditional variable declaration without &. A copy of the value is made and passed to the function. Any changes made to the parameter inside the function have don't change on the original value outside the function.

pass-by-value.cpp
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
#include <iostream>
+using namespace std;
+void times2(int x) {
+    x = x * 2;
+    // the value x here is doubled. but it dont change the value outside the scope
+}
+
+int main()
+{
+    int y = 2;
+    times2(y); // this dont change the value, it passes a copy to the function
+    cout << y << endl;  // output: 2
+    return 0;
+}
+

Passing parameter to a function by reference

Pass-by-reference occurs when the function parameter uses the & in the parameter declaration. It will allow the function to modify the value of the parameter directly in the other scope, rather than making a copy of the value as it does with pass-by-value. The mechanism behind the variable passed is that it is an alias to the outer variable because it uses the same memory position.

pass-by-reference.cpp
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
#include <iostream>
+using namespace std;
+void times2(int &x) { // by using &, x has the same address the variable passed where the function is called 
+  x*=2; // it will change the variable in caller scope
+}
+
+int main() {
+  int y = 2;
+  times2(y);
+  cout << y << endl;  // Outputs 4
+  return 0;
+}
+

Passing parameter to a function by pointer

Pass-by-pointer occurs when the function parameter uses the * in the parameter declaration. It will allow the function to modify the value of the parameter in the other scope via memory pointer, rather than making a copy of the value as it does with pass-by-value. The mechanism behind it is to pass the memory location of the outer variable as a parameter to the function.

pass-by-pointer.cpp
 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+13
+14
#include <iostream>
+using namespace std;
+void times2(int *x) { // by using *, x has the same address the variable passed where the function is called
+    // x holds the address of the outer variable
+    // *x is the content of what x points.
+  *x *= 2; // it will change the variable in caller scope
+}
+
+int main() {
+  int y = 2;
+  times2(&y); // the function expects a pointer, given pointer is an address, we pass the address of the variable here
+  cout << y << endl;  // Outputs 4
+  return 0;
+}
+

Function overload

A function with a specific name can be overload with different not implicitly convertible parameters.

#include <iostream>
+using namespace std;
+
+float average(float a, float b){
+    return (a + b)/2;
+}
+
+float average(float a, float b, float c){
+    return (a + b + c)/3;
+}
+
+int main(){
+    cout << average(1, 2) << endl; // print 1.5
+    cout << average(1, 2, 3) << endl; // print 2
+    return 0;
+}
+

Default parameter

Functions can have default parameters that should be used if the parameter is not provided, making it optional.

defaultparam.cpp
#include <iostream>
+using namespace std;
+
+void greet(string username = "user") {
+    cout << "Hello " << mes << endl;
+}
+
+int main() {
+  // Prints "Hello user"
+  greet(); // the default parameter user is used here
+
+  // Prints "Hello John"
+  greet("John");
+
+  return 0;
+}
+

Scopes

Scope is a region of the code where a identifier is accessible. A scope usually is specified by what is inside { and }. The global scope is the one that do not is inside any {}.

scope.cpp
#include <iostream>
+#include <string>
+using namespace std;
+string h = "Hello"; // this variable is in the global scope
+int main() {
+  string w = " world"; // this variable belongs to the scope of the main function
+  cout << h << w << endl; // both variables are visible and accessible
+  return 0;
+}
+

Multiple identifiers with same name can not be created in the same scope. But in a nested scope it is possible to shadow the outer one when declared in the inner scope.

variableShadowing.cpp
#include <iostream>
+#include <string>
+using namespace std;
+string h = "Hello"; // this variable is in the global scope
+int main() {
+  cout << h; // will print "Hello"
+  string h = " world"; // this will shadow the global variable with the same name h
+  cout << h; // will print " world"
+  return 0;
+}
+

Lambda functions

In C++, an anonymous function is a function without a name. Anonymous functions are often referred to as lambda functions or just lambdas. They are useful for situations where you only need to use a function in one place, or when you don't want to give a name to a function for some other reason.

auto lambda = [](int x, int y) { return x + y; };
+// auto lambda = [] (int x, int y) -> int { return x + y; }; // or you can specify the return type
+int z = lambda(1, 2);  // z is now 3
+

In this case the only variables accessible by the lambda function scope are the ones passed as parameter x and y, and works just like a normal function, but it can be declared inside at any scope.

If you want to make a variable available to the lambda, you can pass it via captures, and it can be by-value or by-reference. To capture a variable by value, just pass the variable name inside the []. To capture a variable by reference, you use the & operator followed by the variable name inside the []. Here is an example of capturing a variable by value:

int x = 1;
+auto lambda = [x] { return x + 1; };
+

The value of x is copied into the lambda function, and any changes to x inside the lambda function have no effect on the original variable.

Here is an example of capturing a variable by reference:

int x = 1;
+auto lambda = [&x] { return x + 1; };
+

The lambda function has direct access to the original variable, and any changes to x inside the lambda function are reflected in the original variable.

You can also capture multiple variables by separating them with a comma. For example:

int x = 1, y = 2;
+auto lambda = [x, &y] { x += 1; y += 1; return x + y; };
+

This defines a lambda function that captures x by-value and y by-reference. The lambda function can modify y but not x.

Lambda captures are a useful feature of C++ that allow you to write more concise and expressive code. They can be especially useful when working with algorithms from the Standard Template Library (STL), where you often need to pass a function as an argument.

In order to capture everything automatically you can either capture by copy [=] or by reference [&].

// capture everything via copy
+int x = 1, y = 2;
+auto lambda = [=] { 
+    // x += 1; // cannot be changed because it is read-only 
+    // y += 1; // cannot be changed because it is read-only
+    return x + y; 
+};
+int c = lambda(); // c will be 5, but x and y wont change their values
+
// capture everything via reference
+int x = 1, y = 2;
+auto lambda = [&] { x += 1; y += 1; return x + y; };
+int c = lambda(); // c will be 5, x will be 2, and y will be 3.
+

For a more in depth understanding, go to Manual Reference or check this tutorial.

Multiple files

In bigger projects, it is useful to split your code in multiple files isolating intention and organizing your code. To do so, you can create a header file with the extension .h and a source file with the extension .cpp. The header file will contain the declarations of the functions and the source file will contain the definitions of the functions. The header file will be included in the source file and the source file will be compiled together with the main file.

main.cpp
#include <iostream>
+#include "functions.h"
+using namespace std;
+
+int main() {
+  cout << sum(1, 2) << endl;
+  return 0;
+}
+
functions.h
// Preprocessor directive (macro) to ensure that this header file is only included once
+#ifndef FUNCTIONS_H
+#define FUNCTIONS_H
+
+// Function declaration without body
+int sum(int a, int b);
+
+#endif
+

Alternatively, you can use #pragma once instead of #ifndef, #define end #endif to ensure that the header file is only included once. This is a non-standard preprocessor directive, but it is supported by most compilers. Ex.:

functions.h
// Preprocessor directive (macro) to ensure that this header file is only included once
+#pragma once
+
+// Function declaration without body
+int sum(int a, int b);
+
functions.cpp
// include the header file that contains the function declaration
+#include "functions.h"
+
+// function definition with body 
+int sum(int a, int b) {
+  return a + b;
+}
+

Preprocessor directives and macros

In C++, the preprocessor is a text substitution tool. It runs before compiling the code. It scans a program for special commands called preprocessor directives, which begin with a # symbol. When it finds a preprocessor directive, it performs the specified text substitutions before the program is compiled.

The most common preprocessor directive is #include, which tells the preprocessor to include the contents of another file in the current file. The included file is called a header file, and commonly has a .h extension. For example:

#include <iostream>
+

Another extensively used macro is #define, which defines a macro. A macro is a symbolic name for a constant value or a small piece of code. For example:

#define PI 3.14159
+

It will replace all occurrences of PI with 3.14159 before compiling the code. But pay attention that is not recommended to use macros for constants, because they are not type safe and can cause unexpected behavior. It is recommended to declare const variable instead.

See more about some cases against macros here:

Nowadays the best use case for macros are for conditional compilation or platform specification. For example:

#define DEBUG 1
+
+int main() {
+  #if DEBUG
+    std::cout << "Debug mode" << std::endl;
+  #else
+    std::cout << "Release mode" << std::endl;
+  #endif
+}
+

Another example is to define the operating system:

#ifdef _WIN32
+  #define OS "Windows"
+#elif __APPLE__
+  #define OS "MacOS"
+#elif __linux__
+  #define OS "Linux"
+#else
+  #define OS "Unknown"
+#endif
+
+int main() {
+  std::cout << "OS: " << OS << std::endl;
+}
+

Homework

  • Do all exercises up to this topic here.
  • Hexadecimal converter. In this activity, you will have to code a way to find the convert to hexadecimal without using any std library to do it for you. DON'T USE std::hex.

Outcomes

It is expected for you to be able to solve all questions before this one 1957 on beecrowd. Sort Beecrowd questions from the most solved to the least solved questions here in the link. If you don't, see Troubleshooting. Don`t let your study pile up, this homework is just a small test, it is expected from you to do other questions on Beecrowd or any other tool such as leetcode.

Troubleshooting

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

\ No newline at end of file diff --git a/intro/07-streams/baboon.ascii.pgm b/intro/07-streams/baboon.ascii.pgm new file mode 100644 index 00000000..9c0b01b7 --- /dev/null +++ b/intro/07-streams/baboon.ascii.pgm @@ -0,0 +1,22190 @@ +P2 +512 512 +255 +160 60 53 97 151 99 67 36 77 84 100 160 +169 118 82 161 201 133 87 102 80 98 113 73 +78 134 133 77 62 160 191 73 75 151 154 97 +85 65 188 97 38 77 177 174 67 120 102 138 +158 117 84 128 127 123 179 201 162 108 185 171 +95 180 213 136 187 147 155 162 202 174 117 171 +90 70 123 128 139 123 69 136 216 172 73 75 +51 42 102 95 124 100 205 225 124 78 37 57 +48 134 129 104 96 133 150 108 119 165 107 167 +181 153 166 110 123 179 161 177 156 135 125 73 +125 177 172 143 188 191 131 220 165 191 147 215 +164 147 199 187 145 59 79 116 204 102 154 198 +179 119 135 180 158 182 72 64 94 119 102 60 +69 115 78 54 114 89 88 150 181 80 151 105 +77 55 88 110 147 140 136 119 125 172 150 174 +199 165 186 104 77 105 75 160 179 66 73 70 +150 192 161 72 85 158 188 187 210 198 177 146 +166 176 186 178 184 151 104 128 189 168 89 99 +73 77 110 164 179 192 201 208 148 156 190 116 +83 110 65 57 179 171 153 168 157 176 200 181 +89 126 126 180 77 123 168 87 78 181 171 188 +165 78 90 124 171 63 64 116 96 80 150 139 +153 85 116 167 199 153 79 94 98 157 197 165 +205 179 105 114 109 116 83 82 162 211 225 196 +198 161 166 180 165 135 175 131 153 198 190 69 +49 94 153 166 146 80 72 194 175 89 107 192 +221 207 157 149 199 185 135 225 184 110 108 131 +201 211 166 147 186 137 139 98 174 146 159 107 +100 157 140 140 95 77 117 92 131 205 148 78 +129 184 147 184 103 168 178 120 87 63 77 105 +171 135 68 145 191 138 141 187 134 102 128 155 +172 189 159 120 137 66 124 185 129 58 78 105 +124 141 218 218 117 150 171 208 186 177 215 185 +118 171 181 198 207 128 87 140 167 104 128 211 +199 176 148 167 117 180 170 117 87 130 151 179 +105 69 146 189 145 119 64 86 110 110 77 121 +212 201 169 207 135 206 235 200 111 186 195 178 +156 149 189 227 233 197 174 154 177 144 76 108 +102 149 235 218 202 219 180 128 108 131 134 127 +169 215 206 137 150 191 190 206 141 153 177 151 +215 164 99 170 198 172 160 206 155 211 191 180 +200 212 201 83 153 195 103 70 106 83 65 110 +180 137 85 75 146 124 169 196 +128 111 43 74 +99 59 72 49 102 66 67 94 120 47 44 120 +162 139 131 44 54 59 76 72 131 186 200 111 +57 90 184 175 84 107 197 135 139 75 120 109 +37 49 88 168 198 116 150 88 148 175 87 72 +78 154 117 126 161 106 150 211 155 131 195 158 +180 138 94 84 194 202 110 150 120 68 96 162 +105 139 92 68 146 218 174 125 85 103 74 126 +128 67 165 230 188 41 51 75 79 123 123 114 +123 84 179 85 97 98 57 119 153 159 185 125 +116 189 207 172 111 174 182 100 88 169 223 162 +216 215 118 201 199 118 100 202 218 75 124 148 +83 65 86 103 167 127 172 194 177 148 130 113 +168 174 74 70 83 111 154 102 84 188 100 126 +77 76 94 119 204 168 63 93 102 153 46 80 +167 148 80 111 86 124 125 147 175 199 195 159 +79 92 68 140 207 87 111 161 180 189 194 110 +133 202 198 212 184 149 174 79 116 93 131 125 +126 111 85 104 160 174 155 156 70 58 133 165 +134 164 218 200 92 140 212 118 58 65 63 42 +120 130 95 154 179 145 171 209 144 165 87 114 +68 92 93 111 176 190 126 184 141 83 90 76 +106 82 51 162 126 51 134 135 172 143 54 151 +206 186 93 84 77 133 176 156 215 186 96 129 +111 99 161 140 188 221 202 151 200 161 123 105 +82 177 189 145 159 172 120 68 62 148 161 148 +139 89 114 180 197 138 143 197 165 128 125 158 +202 99 158 165 116 169 181 189 215 197 159 178 +95 92 124 99 187 118 179 105 147 162 89 162 +106 144 166 90 127 177 95 143 131 111 148 169 +92 100 167 134 82 65 127 182 179 116 78 149 +157 87 116 154 118 170 182 161 165 174 123 156 +143 84 145 160 121 41 42 62 79 159 222 177 +158 145 199 215 178 134 178 135 141 170 170 178 +156 172 82 143 184 109 120 201 196 179 105 93 +156 179 137 120 130 147 147 126 76 131 186 145 +76 94 118 103 117 64 88 190 186 186 221 155 +175 210 159 80 184 182 150 146 149 201 219 237 +207 182 172 215 158 88 146 149 120 231 231 181 +191 153 103 141 210 225 212 181 150 170 156 195 +204 164 148 204 99 154 128 188 151 124 186 159 +93 102 146 138 204 178 208 195 180 207 146 80 +68 60 60 68 93 85 155 160 117 79 72 140 +134 143 164 138 +84 125 51 51 107 65 65 52 +119 116 53 64 79 41 32 56 129 115 108 64 +79 57 47 73 99 191 220 194 96 52 102 180 +172 90 133 121 120 115 117 137 79 141 144 131 +151 159 149 156 86 127 158 70 95 86 104 102 +93 181 164 175 147 160 110 83 174 181 67 98 +133 217 195 131 117 73 51 176 184 95 153 139 +82 135 207 166 148 160 134 85 130 68 140 216 +196 93 84 109 93 69 127 151 184 74 170 158 +94 85 49 82 126 165 182 153 124 175 217 217 +185 169 177 139 60 126 226 151 204 208 118 150 +219 182 84 165 216 94 74 74 97 88 164 133 +128 145 156 166 153 134 148 134 205 130 93 176 +138 187 78 86 72 111 56 123 68 57 123 145 +156 195 84 121 89 125 63 58 146 161 139 99 +94 143 98 57 154 154 148 201 202 118 151 156 +189 136 89 167 157 198 168 127 126 180 198 170 +162 133 113 78 136 145 88 155 151 123 116 105 +127 74 99 181 92 82 131 144 87 110 196 192 +86 139 189 120 57 155 83 36 55 65 96 172 +169 124 161 175 96 144 66 118 167 177 70 136 +165 189 151 204 192 133 107 75 116 116 67 135 +96 80 77 150 175 154 76 150 185 105 117 77 +75 78 126 137 206 172 117 154 167 197 209 170 +181 165 124 107 115 134 104 86 92 178 144 160 +153 124 146 86 76 119 165 170 118 87 106 170 +149 84 130 114 105 118 103 140 141 160 166 94 +174 181 140 177 181 134 180 140 64 57 133 78 +118 151 208 177 194 204 102 179 160 170 131 63 +82 116 106 178 98 77 116 82 67 102 137 126 +84 116 190 196 136 72 51 113 120 90 149 118 +180 200 157 185 197 161 105 184 171 133 176 190 +127 51 45 80 169 202 207 181 180 118 197 200 +138 102 130 174 160 188 162 130 169 167 105 105 +205 115 128 205 196 86 86 86 143 129 145 146 +180 146 145 130 72 178 149 89 118 113 131 174 +147 98 187 218 213 220 171 140 143 116 133 123 +147 164 168 116 180 211 219 174 129 164 221 205 +118 172 170 116 210 229 182 133 136 151 166 208 +197 197 154 98 168 205 225 207 172 87 180 184 +89 119 176 188 198 213 168 88 137 110 69 107 +140 191 191 204 165 192 113 100 49 57 90 78 +73 141 166 105 89 109 149 136 108 110 97 89 +77 149 105 53 90 131 58 51 77 98 60 58 +57 36 36 31 45 133 97 36 53 42 52 62 +63 188 215 207 127 53 85 109 165 150 150 136 +124 129 74 119 107 115 208 165 190 181 153 186 +111 63 123 106 44 64 56 99 67 144 175 197 +115 150 191 130 116 196 167 87 109 150 209 202 +83 58 97 145 208 60 130 162 174 94 119 156 +96 92 113 58 121 139 113 195 181 117 105 108 +168 114 165 200 187 96 155 197 92 130 133 60 +83 189 186 201 191 165 195 226 209 144 133 189 +139 84 206 182 144 196 176 150 190 204 97 82 +171 144 109 99 137 109 178 167 128 151 137 124 +145 121 141 110 165 85 94 207 185 212 137 141 +94 85 62 157 140 70 171 169 94 141 140 116 +153 160 69 66 148 211 148 90 123 166 110 44 +59 93 160 143 205 202 116 159 190 162 148 99 +110 177 189 139 102 135 178 187 187 128 138 113 +120 131 67 74 95 138 135 139 154 99 154 138 +121 94 104 109 155 150 128 109 83 151 145 68 +87 192 121 68 85 109 176 168 167 74 79 95 +97 75 72 133 167 174 56 167 185 197 175 126 +177 115 164 111 119 118 74 86 107 121 59 123 +123 125 78 164 192 138 174 105 106 135 171 191 +207 185 126 108 129 178 191 141 146 120 160 194 +191 128 110 88 77 126 148 133 121 202 180 94 +83 114 149 118 126 78 73 106 86 74 83 78 +93 100 126 86 171 192 100 103 124 103 106 98 +113 128 143 72 63 83 121 74 113 176 174 181 +205 200 111 198 136 106 69 75 87 134 126 167 +59 65 128 59 74 75 67 90 115 196 210 144 +66 54 80 85 125 149 136 118 165 167 135 189 +178 140 148 176 184 177 169 144 126 52 74 80 +129 211 195 186 143 147 171 128 59 69 187 96 +177 175 166 154 223 166 126 146 169 92 188 188 +97 108 55 64 130 211 194 176 135 192 155 94 +155 129 95 140 128 200 199 128 125 206 232 216 +207 136 168 137 94 131 162 136 176 197 151 129 +158 177 147 186 207 227 194 126 185 190 124 175 +213 189 144 171 195 175 151 160 135 110 119 176 +206 233 227 205 103 139 174 144 133 155 166 175 +190 156 121 145 195 120 139 141 196 228 199 107 +136 156 72 82 108 135 159 133 104 120 92 92 +76 133 119 94 121 79 83 76 +95 134 145 54 +83 96 82 55 60 129 134 52 95 82 31 22 +62 109 169 53 41 62 38 42 54 116 208 211 +166 43 55 86 179 175 153 184 149 219 177 97 +128 108 165 219 223 232 168 210 169 136 103 137 +73 47 80 58 56 98 194 216 174 103 135 143 +80 147 194 135 77 59 134 196 181 86 120 148 +206 125 125 129 195 186 102 113 160 126 96 46 +99 205 154 182 156 160 98 106 204 135 171 188 +199 73 137 210 211 198 186 144 104 209 169 190 +192 116 153 219 201 197 78 187 213 113 168 195 +125 134 194 198 166 196 127 55 114 99 89 102 +175 148 131 136 149 162 72 98 140 141 102 84 +60 66 68 162 201 201 127 192 162 86 77 128 +158 179 156 216 158 82 129 74 121 199 170 56 +88 167 198 150 73 94 123 78 43 80 178 149 +120 199 204 143 166 197 186 102 56 80 147 187 +93 83 109 176 175 136 165 130 106 138 93 110 +135 168 139 155 179 77 72 57 100 78 59 76 +110 89 79 103 63 56 55 41 70 192 143 59 +64 84 156 158 123 68 73 94 144 96 148 189 +126 113 60 138 144 155 129 104 150 125 181 177 +149 134 100 102 107 154 111 177 178 137 80 176 +179 189 136 129 171 158 177 188 195 177 100 166 +185 160 141 176 162 127 186 181 155 138 85 67 +89 119 100 139 186 202 124 119 136 120 108 144 +133 86 95 76 83 128 147 70 74 78 77 102 +162 134 109 80 98 103 130 99 99 66 68 70 +65 87 94 73 121 134 130 164 126 148 97 158 +90 156 104 104 156 134 106 119 85 150 185 88 +72 68 78 80 160 210 148 98 73 70 144 168 +108 153 98 111 114 106 150 221 208 176 202 178 +196 166 185 190 176 66 92 150 206 210 191 192 +134 187 162 58 66 106 139 108 204 202 127 210 +172 97 136 134 82 129 186 156 170 83 51 93 +199 139 154 107 202 200 108 165 184 140 178 161 +204 217 185 128 179 235 195 162 110 174 186 164 +114 129 182 192 165 138 90 177 172 171 207 231 +210 118 123 209 202 161 98 168 100 172 206 201 +136 141 111 115 120 90 133 207 231 208 137 98 +162 202 179 216 201 171 207 184 104 169 116 169 +164 109 103 194 226 161 64 62 147 105 104 170 +171 178 186 154 135 96 102 74 105 143 118 103 +73 65 87 94 +89 83 175 66 79 105 47 51 +79 107 104 75 95 145 37 47 53 66 95 69 +51 49 52 77 66 66 176 208 179 94 62 77 +121 179 107 125 129 184 206 104 68 80 145 205 +232 238 187 182 171 176 131 88 123 60 52 66 +130 174 225 235 205 190 175 105 160 92 164 165 +98 115 75 100 185 155 92 129 195 160 95 187 +129 198 179 151 139 157 123 75 57 197 189 190 +191 162 137 90 197 188 136 130 202 95 102 197 +217 212 180 161 120 194 198 185 194 113 118 202 +168 178 105 149 223 188 100 191 189 138 170 218 +179 164 169 88 147 146 128 102 195 168 65 72 +135 179 87 60 124 170 80 121 82 54 51 90 +137 146 113 180 178 85 99 104 114 196 156 192 +211 114 58 86 137 202 186 110 62 100 168 179 +73 105 125 176 123 114 190 170 131 128 190 174 +133 131 190 141 58 63 69 145 156 63 95 149 +149 133 128 104 107 89 126 104 85 119 103 137 +167 75 51 47 141 144 93 80 154 139 97 125 +73 76 80 87 68 170 129 55 67 97 170 154 +82 54 95 136 168 89 181 167 62 72 48 82 +66 79 76 104 124 174 172 190 90 95 120 84 +52 111 66 115 161 167 116 169 209 196 161 178 +188 176 110 162 188 143 119 141 177 103 146 186 +148 184 184 165 148 113 66 90 143 166 109 92 +148 179 110 177 175 151 181 154 116 106 74 75 +99 184 154 117 100 95 70 68 133 108 110 113 +129 135 136 73 52 59 82 79 149 158 69 85 +73 96 128 141 54 106 86 62 97 138 93 106 +160 133 133 95 86 187 149 70 75 56 76 117 +177 161 60 78 64 92 162 196 177 178 123 197 +158 121 192 209 207 188 206 195 189 215 223 213 +199 153 126 143 188 218 166 148 146 177 119 42 +49 100 63 116 172 158 156 178 59 82 140 176 +145 155 191 195 86 49 104 170 165 194 138 174 +212 149 215 237 226 184 149 216 216 185 190 198 +223 186 176 179 159 187 182 170 175 205 217 161 +146 129 139 176 178 230 229 187 85 89 206 220 +208 92 68 100 107 115 119 94 98 179 153 198 +166 128 156 186 161 78 107 65 195 202 209 211 +182 190 168 119 194 147 85 123 87 121 111 117 +79 76 134 186 144 133 206 205 187 199 136 98 +92 133 97 102 125 156 143 74 58 94 167 200 +47 56 147 143 77 135 58 67 70 120 100 74 +106 130 78 68 60 111 83 73 83 57 77 49 +65 119 126 209 202 135 63 74 67 105 186 139 +70 131 199 206 146 89 114 105 171 207 209 125 +150 151 159 137 133 162 66 82 123 177 166 217 +208 169 177 143 73 100 129 131 99 90 95 64 +83 129 124 140 212 199 76 110 103 118 197 176 +191 75 138 133 62 157 213 139 199 227 200 105 +147 191 105 83 134 159 68 139 161 210 160 85 +144 153 197 196 198 109 83 188 195 95 110 68 +191 200 84 126 186 168 178 194 179 123 165 169 +167 113 87 96 147 184 84 162 100 118 121 121 +159 174 95 94 106 85 58 58 100 148 155 126 +160 77 100 145 123 186 210 186 174 106 66 63 +94 177 201 185 92 86 181 155 118 86 115 188 +201 167 199 184 167 145 127 176 171 128 140 191 +110 84 65 110 127 106 90 150 124 62 109 78 +92 78 151 154 102 96 79 109 143 62 103 49 +118 161 94 83 102 67 43 74 69 135 92 75 +76 150 125 106 136 134 119 68 62 59 86 187 +201 146 176 110 68 83 75 119 60 62 48 63 +87 182 139 166 52 85 111 86 109 63 63 80 +110 133 134 154 196 156 103 114 129 90 75 151 +118 78 85 97 106 70 118 164 150 186 154 167 +176 96 77 129 147 139 86 73 114 149 73 124 +131 104 146 140 85 102 83 96 169 191 156 179 +123 129 165 157 120 90 113 94 99 105 93 46 +68 73 80 94 187 184 88 93 98 98 72 52 +77 117 59 60 85 65 62 80 146 127 160 123 +108 137 92 120 121 86 66 137 162 90 99 121 +69 97 116 169 161 161 129 176 118 105 181 184 +212 191 186 144 113 175 221 186 170 128 175 210 +220 178 107 137 97 87 49 53 80 66 127 140 +175 113 156 111 127 162 177 194 128 140 176 72 +53 118 125 172 217 150 194 229 177 212 238 216 +184 80 160 171 139 161 199 232 196 208 180 65 +114 162 136 121 208 225 130 171 166 190 161 89 +201 208 153 138 119 190 236 198 106 70 170 188 +136 184 148 88 135 121 196 180 144 175 167 97 +83 116 109 160 177 90 148 165 108 67 100 179 +157 102 159 128 180 166 87 54 129 209 213 160 +184 223 210 211 191 145 90 123 139 103 167 160 +153 136 62 67 99 204 218 181 +36 56 123 169 +95 131 53 64 108 179 118 75 84 100 157 60 +65 78 108 77 111 105 94 123 93 96 139 181 +157 72 48 100 54 69 160 207 121 82 134 179 +205 139 70 124 69 96 146 179 143 135 134 202 +204 205 119 138 120 116 65 137 210 208 195 93 +36 64 159 189 136 60 80 79 59 106 121 165 +200 209 144 114 85 78 130 181 213 79 161 188 +164 88 197 130 174 221 237 199 144 175 172 69 +118 133 41 65 95 151 215 186 80 109 114 215 +215 182 97 186 178 125 98 139 130 205 151 65 +134 185 210 197 194 123 168 196 188 109 116 84 +113 110 92 129 68 98 67 84 114 181 146 80 +102 83 49 46 88 107 119 133 171 147 136 161 +130 172 227 221 190 131 69 97 78 94 160 228 +198 65 100 155 168 100 133 146 196 209 177 198 +125 136 136 147 213 197 87 185 179 139 72 78 +92 80 67 85 65 57 67 93 116 106 57 77 +93 74 90 93 109 57 72 117 79 126 162 156 +60 69 58 48 59 141 124 156 120 157 128 133 +155 100 89 97 95 76 113 162 108 90 84 94 +78 74 85 155 82 59 98 114 55 158 144 116 +86 93 150 94 159 106 55 48 55 93 154 120 +151 84 117 125 121 78 117 154 73 79 72 103 +104 93 172 197 162 201 189 119 84 63 73 113 +176 170 128 66 159 120 93 95 75 124 89 105 +109 79 129 148 197 168 197 159 189 191 160 110 +65 95 120 67 83 83 63 105 160 98 102 109 +191 145 131 106 116 124 60 59 90 135 63 64 +74 80 69 54 99 80 104 157 93 77 87 74 +131 111 84 151 125 58 102 127 82 131 103 159 +189 155 109 181 151 157 146 98 197 197 199 150 +147 168 199 179 192 86 167 194 177 109 75 129 +82 103 64 89 148 129 120 133 186 140 135 92 +191 213 185 182 103 110 72 68 144 129 159 225 +172 166 223 178 167 220 210 156 108 102 115 102 +139 188 205 129 168 175 67 86 149 128 192 174 +222 187 212 230 202 187 108 149 148 116 119 165 +213 228 184 125 111 189 211 165 165 103 116 129 +90 200 207 200 123 126 123 107 148 154 148 181 +121 169 212 172 74 95 129 120 161 211 167 160 +135 87 100 162 220 205 110 143 192 205 168 190 +165 174 148 128 102 161 161 96 76 63 67 116 +184 178 133 153 +63 53 60 128 161 140 65 37 +72 145 192 77 127 100 178 116 77 92 140 95 +123 100 107 174 146 89 160 188 113 137 78 93 +118 54 89 190 200 99 109 165 181 206 129 146 +191 120 59 136 199 129 148 188 177 186 166 137 +175 65 41 66 111 175 191 210 155 72 92 90 +170 114 80 116 128 57 121 161 148 207 148 188 +135 63 141 149 208 115 98 162 178 76 156 160 +158 129 222 220 189 118 181 69 79 147 120 149 +143 94 147 199 151 119 65 150 208 215 176 159 +154 154 157 179 158 165 201 66 83 143 192 201 +205 149 213 164 196 85 120 92 105 93 121 160 +72 157 100 95 146 182 157 131 148 76 65 103 +97 115 138 137 187 198 94 140 96 166 175 177 +195 216 174 86 116 70 94 192 184 115 92 114 +159 141 198 185 145 200 140 166 90 143 136 130 +167 140 67 107 178 174 157 68 55 55 78 60 +43 65 74 94 92 69 45 59 134 111 145 153 +131 115 46 89 58 75 184 156 86 140 118 87 +77 104 155 195 130 107 98 153 177 111 97 114 +111 110 58 83 77 39 77 65 48 58 67 96 +64 79 105 177 86 145 150 88 99 145 179 89 +177 167 64 44 66 97 137 72 83 68 82 82 +68 73 113 120 96 144 92 154 117 82 100 125 +102 139 139 162 172 78 79 104 158 168 181 99 +144 65 83 86 82 121 114 108 99 159 137 124 +125 143 143 109 127 73 57 53 84 70 62 59 +64 73 79 121 148 86 167 85 146 97 145 150 +117 117 88 64 73 109 77 121 162 165 86 103 +85 87 94 104 86 72 110 86 103 110 129 164 +159 137 115 108 147 186 140 167 155 117 127 138 +94 184 186 127 157 180 202 195 168 167 159 161 +161 174 185 212 143 70 77 115 189 168 97 151 +121 166 174 145 124 158 86 165 229 210 212 130 +150 125 93 192 174 110 223 216 194 218 171 124 +206 211 139 100 66 78 139 165 179 201 170 108 +99 56 88 148 95 206 204 184 160 148 205 212 +213 111 138 202 151 144 188 176 233 195 121 155 +230 228 135 90 88 135 138 92 182 223 204 126 +88 83 146 198 165 143 191 106 127 137 148 191 +202 198 129 161 201 176 153 65 87 99 179 221 +174 160 187 147 166 161 170 219 227 199 110 79 +88 136 162 174 106 77 86 108 90 148 172 134 +41 34 53 70 160 87 104 65 53 169 200 170 +144 175 144 153 92 108 126 146 108 129 75 188 +196 79 128 194 102 161 171 74 102 90 74 106 +126 99 70 180 139 143 177 114 179 213 150 76 +176 212 97 164 201 125 190 208 180 190 160 125 +141 129 108 127 168 144 119 87 192 187 110 124 +160 170 129 178 187 147 155 209 200 124 89 97 +175 169 59 80 143 138 76 123 102 65 149 192 +164 136 126 73 53 138 205 158 189 107 73 114 +169 189 92 127 185 167 215 172 202 167 204 133 +160 114 174 80 93 145 148 199 177 155 177 192 +208 96 103 114 106 109 191 200 107 165 89 88 +139 168 149 154 168 92 144 179 130 138 164 153 +139 155 99 171 120 177 145 84 127 137 210 138 +97 59 43 62 90 146 140 63 110 167 195 216 +200 189 102 126 126 151 189 109 165 186 89 129 +197 166 175 135 69 103 86 72 58 64 144 136 +73 73 38 53 52 68 121 123 98 98 55 106 +70 57 162 158 104 139 113 145 77 82 180 154 +90 159 92 164 194 97 104 119 149 139 56 67 +95 58 86 96 67 57 68 100 68 69 96 172 +94 114 180 130 89 141 121 51 139 167 63 65 +68 79 84 68 60 100 72 68 88 80 140 98 +99 137 68 136 86 90 125 124 133 154 114 137 +149 104 118 82 93 180 170 123 129 79 90 72 +125 143 68 76 92 159 103 119 77 90 103 139 +87 70 85 65 65 74 82 92 146 117 67 70 +79 96 145 63 76 93 113 94 73 46 93 80 +55 79 77 157 177 195 123 118 94 111 121 128 +126 110 114 135 103 102 159 195 199 180 159 154 +136 162 128 162 166 137 150 134 105 180 206 161 +146 155 169 185 195 165 174 109 145 205 226 155 +79 56 85 180 227 154 195 175 154 195 198 138 +58 67 70 182 200 175 164 111 97 167 215 194 +68 154 217 143 215 172 95 168 167 120 89 63 +111 155 180 133 189 200 164 119 51 77 130 90 +202 223 178 118 123 192 212 218 124 77 136 143 +182 223 210 231 217 133 178 188 196 154 89 119 +161 169 195 198 206 138 143 124 136 148 215 181 +149 179 156 151 190 210 225 210 200 162 154 147 +115 120 106 120 117 164 219 197 144 212 184 195 +213 230 230 218 184 87 66 102 190 209 160 86 +74 102 100 120 87 72 88 150 +36 47 62 39 +90 69 94 110 69 175 209 189 189 139 94 136 +102 68 97 147 100 165 161 156 195 178 121 161 +155 124 199 191 83 136 153 115 107 38 54 140 +146 156 119 83 89 198 218 147 167 207 157 69 +180 189 129 204 160 213 228 208 174 202 179 187 +74 145 126 108 108 201 196 140 127 171 95 98 +195 172 181 191 205 210 155 78 106 157 135 85 +100 172 139 90 70 68 66 134 164 121 72 108 +46 59 178 176 128 145 83 144 68 90 137 93 +200 124 179 170 177 200 208 73 121 170 138 118 +164 199 105 179 169 162 153 202 199 140 92 133 +105 115 189 206 130 153 85 103 114 125 126 175 +185 78 128 207 135 93 78 96 87 84 88 125 +117 148 114 80 168 165 202 160 63 58 46 62 +76 85 103 92 65 117 103 154 177 172 121 118 +139 103 126 114 108 100 82 119 181 180 160 120 +106 72 73 86 127 94 145 144 52 78 35 41 +53 52 89 139 87 64 70 146 145 70 125 182 +99 185 139 155 86 67 147 124 106 171 100 143 +197 86 105 118 105 90 57 102 78 64 126 89 +134 117 75 165 72 62 72 77 86 103 162 98 +75 118 123 62 76 127 95 75 75 107 77 69 +69 77 84 75 108 177 172 68 60 84 69 97 +119 115 124 99 92 88 75 109 68 95 76 75 +75 76 103 114 84 83 59 62 67 83 87 96 +113 83 90 87 69 54 164 184 123 180 165 109 +89 86 116 169 197 131 100 70 83 96 121 84 +83 117 94 66 97 93 137 102 53 79 72 82 +162 217 191 148 120 158 103 145 116 149 147 84 +123 160 192 186 153 167 175 175 162 176 108 111 +161 150 151 98 133 191 167 157 218 182 166 187 +155 140 114 170 178 206 189 160 74 79 175 227 +188 198 192 154 113 191 140 55 59 63 136 204 +116 159 194 111 206 228 200 85 99 192 146 128 +144 72 79 96 121 87 73 153 198 199 134 114 +154 182 135 77 89 145 111 170 206 148 75 113 +190 174 188 97 84 117 108 176 215 209 228 208 +144 102 186 218 197 125 150 156 182 225 240 210 +106 187 202 172 191 219 190 181 151 167 140 205 +207 192 140 184 206 190 126 129 135 154 186 206 +199 196 192 182 168 202 215 230 235 204 144 110 +116 76 156 207 179 94 48 57 103 109 127 106 +103 70 80 75 +36 51 85 39 55 94 49 138 +117 96 150 198 167 141 129 107 123 149 111 128 +180 137 204 125 191 187 180 156 140 182 99 201 +207 144 170 148 76 107 104 95 166 131 180 116 +57 102 210 197 145 126 172 156 90 153 158 172 +146 187 200 216 164 182 153 170 108 128 160 147 +95 184 195 194 182 195 129 95 105 182 157 168 +196 216 190 68 68 89 180 90 89 135 206 176 +68 97 77 147 137 157 56 153 116 86 108 202 +146 60 73 149 104 105 49 56 161 204 121 187 +156 195 196 124 100 175 144 143 124 178 108 88 +137 143 147 208 171 151 86 184 120 165 209 172 +121 162 150 80 103 93 136 188 103 86 75 205 +194 64 110 116 119 148 166 181 96 166 180 82 +110 158 159 80 70 86 88 98 60 70 94 57 +58 75 70 84 137 184 136 128 160 102 99 72 +117 105 97 95 83 104 89 117 140 75 129 108 +135 117 92 138 92 74 62 52 64 90 67 119 +103 118 138 155 156 86 111 151 86 170 105 109 +65 59 100 75 68 86 90 90 148 57 86 70 +70 87 118 116 76 103 99 128 159 80 117 176 +85 93 85 93 114 89 106 66 77 73 82 84 +67 85 105 103 123 84 95 76 85 87 99 127 +146 139 121 66 59 72 75 111 168 127 94 84 +74 105 96 99 77 89 107 117 89 82 123 139 +99 98 79 68 94 117 172 167 73 72 79 74 +63 127 192 125 156 117 111 88 131 169 143 157 +135 115 102 76 82 78 94 73 109 161 105 103 +130 76 118 74 88 138 144 108 141 194 162 144 +129 150 58 53 85 149 180 114 103 149 199 139 +64 119 190 159 160 180 127 143 109 131 125 93 +153 198 136 86 198 215 168 199 134 145 102 144 +181 218 217 143 139 86 158 226 157 205 170 153 +90 88 57 79 82 97 187 146 92 153 95 169 +232 199 137 63 141 190 197 80 67 75 98 138 +130 95 138 195 176 165 134 158 199 131 138 130 +192 160 146 161 100 100 133 184 182 171 170 153 +156 141 165 154 119 137 180 82 140 178 208 202 +100 121 167 218 236 235 206 119 168 219 217 185 +207 217 204 175 147 139 199 176 149 187 144 209 +209 127 174 208 206 187 182 178 65 67 69 144 +169 113 115 131 113 72 115 141 117 171 195 111 +51 64 84 79 77 148 92 76 82 97 82 82 +38 74 98 70 52 147 68 119 189 88 79 143 +165 108 124 177 127 167 83 154 198 136 167 181 +134 141 206 218 131 158 165 118 189 220 205 117 +158 108 174 137 137 127 160 137 110 63 125 202 +185 160 124 195 187 107 150 187 169 174 202 176 +134 127 107 115 170 155 95 127 133 170 218 177 +210 218 197 182 178 118 159 202 145 161 139 68 +82 74 130 96 107 79 154 210 178 104 155 177 +106 184 88 141 210 154 60 174 175 49 42 119 +175 85 75 58 155 217 190 137 169 116 124 131 +96 103 96 89 85 89 123 74 120 129 97 165 +92 114 80 126 72 147 201 82 116 130 160 159 +164 104 151 202 121 117 95 169 145 121 169 97 +145 100 88 179 150 131 182 107 62 75 141 95 +67 155 149 79 104 108 77 92 117 110 140 131 +67 130 176 145 143 188 168 109 146 136 77 69 +131 121 66 80 76 56 65 76 57 52 78 58 +60 121 117 68 80 121 102 125 70 84 88 118 +146 72 145 113 103 113 79 72 63 63 66 63 +59 89 52 55 106 57 55 52 56 96 67 57 +68 87 85 140 106 80 104 139 77 69 105 84 +97 82 67 86 80 60 64 66 78 93 165 165 +136 60 88 113 76 92 134 169 176 115 136 128 +59 82 74 143 115 82 77 53 72 92 99 146 +106 144 194 166 153 83 79 85 86 98 75 92 +156 171 123 105 96 94 134 90 82 92 95 100 +116 79 83 97 70 93 92 80 73 73 121 154 +114 68 93 138 103 117 143 125 153 109 121 99 +141 151 148 109 110 139 100 92 94 115 154 121 +88 129 146 166 155 118 78 65 135 102 162 143 +138 191 141 166 189 136 130 172 178 192 133 103 +182 206 201 168 88 77 100 131 174 182 215 196 +167 135 172 196 124 118 140 109 111 100 123 166 +85 131 121 96 67 109 146 210 187 119 104 56 +126 199 172 85 85 106 170 199 123 95 181 159 +150 190 161 204 182 192 151 150 140 125 153 110 +131 197 209 165 117 105 140 133 106 186 192 159 +181 119 77 68 156 190 168 85 72 185 221 212 +211 191 139 205 228 199 166 192 221 212 114 167 +189 155 161 179 204 160 213 213 116 136 196 192 +151 164 149 154 89 83 80 96 146 118 80 106 +121 113 115 100 102 139 79 94 115 154 151 99 +171 147 93 90 100 84 104 113 +29 43 114 146 +41 63 53 68 187 188 134 118 74 45 75 140 +157 113 129 167 192 191 128 182 147 88 125 172 +188 104 194 94 75 135 217 216 176 159 88 164 +139 100 68 87 87 98 156 166 211 212 161 147 +167 171 167 172 196 168 184 134 113 128 104 73 +98 159 184 126 174 196 204 201 219 199 195 146 +211 219 201 216 167 159 127 124 102 65 58 97 +107 92 141 205 207 171 167 205 116 177 168 88 +188 216 117 150 157 77 64 73 154 143 140 119 +145 219 190 146 137 155 153 155 169 104 133 117 +144 75 109 87 118 160 84 186 172 79 110 84 +73 104 155 49 78 95 108 159 192 145 143 210 +167 126 172 105 104 143 172 94 97 138 113 159 +197 167 151 87 57 63 63 62 60 116 133 77 +105 168 109 116 133 138 157 204 162 103 113 123 +154 134 107 113 151 165 82 73 155 120 73 46 +73 86 72 58 59 43 56 62 73 114 176 127 +97 143 144 98 77 69 88 134 154 72 111 79 +93 59 54 72 60 77 72 62 53 57 84 54 +69 57 68 77 60 64 54 59 95 64 75 67 +65 85 79 110 67 83 114 97 72 64 52 48 +90 92 82 96 59 76 93 117 80 79 73 147 +131 121 165 168 168 141 136 86 79 95 65 83 +73 69 69 88 92 137 118 177 143 166 200 168 +116 114 157 121 68 83 65 131 166 184 155 165 +115 100 137 133 115 73 66 86 72 80 96 135 +129 57 74 89 111 131 160 154 148 95 96 105 +117 120 200 208 177 117 125 114 151 178 133 84 +139 148 107 99 84 160 184 157 120 97 109 175 +218 131 70 90 130 159 165 125 143 143 133 170 +202 201 144 175 218 204 104 169 185 168 179 115 +126 87 126 182 158 196 207 205 128 165 147 188 +162 88 162 118 111 114 194 148 140 148 192 95 +177 144 190 177 76 69 58 135 195 199 137 73 +97 204 192 106 90 113 107 178 196 126 188 217 +208 127 83 99 114 95 136 176 195 172 116 79 +125 184 137 198 218 186 158 156 75 80 126 147 +130 103 83 87 139 197 153 204 186 155 181 223 +207 176 205 227 213 126 179 230 168 82 116 131 +187 226 210 138 159 180 102 75 100 135 170 89 +69 64 95 96 114 95 110 172 153 153 167 202 +131 175 159 138 129 155 97 167 194 167 137 129 +135 148 156 84 +32 44 92 150 83 37 31 33 +111 171 198 144 110 35 73 76 70 85 149 185 +162 204 97 140 209 147 62 118 179 77 155 174 +52 63 133 221 218 210 128 88 126 111 93 125 +157 107 104 124 188 216 190 194 136 117 190 217 +154 197 195 168 111 113 87 116 92 54 134 201 +154 189 207 129 167 201 176 92 169 207 201 225 +180 168 159 186 175 117 98 88 138 155 147 192 +198 106 128 207 171 98 178 145 149 198 145 166 +162 85 62 72 96 92 94 147 99 171 117 162 +150 80 156 209 157 139 184 129 168 105 74 116 +115 133 125 189 205 114 200 134 177 140 181 54 +93 189 118 74 119 149 133 178 143 151 201 104 +96 117 176 125 121 82 120 73 162 198 151 126 +54 67 66 90 113 45 49 60 57 116 74 60 +75 144 148 125 139 67 62 147 178 100 69 67 +106 148 92 72 70 53 70 57 68 74 65 72 +72 69 65 65 52 80 154 170 126 147 174 107 +69 65 88 97 88 89 93 64 79 75 46 60 +74 82 97 78 54 104 93 92 135 108 68 63 +46 38 57 60 110 66 70 86 75 110 89 82 +77 78 89 76 80 49 47 63 59 72 69 73 +94 69 89 125 96 96 98 166 134 95 162 133 +172 161 200 107 76 119 76 63 63 87 75 125 +121 115 133 158 126 185 207 181 151 189 158 103 +79 67 150 116 147 139 182 204 177 154 123 170 +138 100 78 96 100 111 129 147 97 74 120 166 +162 104 94 87 118 114 102 116 147 126 131 148 +148 165 118 75 127 149 116 93 97 131 70 111 +80 108 158 164 164 138 143 99 103 93 134 107 +130 155 161 185 210 216 191 215 189 126 137 160 +200 200 139 204 199 164 83 119 181 139 124 170 +154 162 181 178 130 165 94 141 99 135 85 134 +111 120 158 127 159 208 188 170 169 145 174 92 +66 56 125 196 174 125 93 77 120 135 69 74 +120 194 218 185 109 171 222 182 92 146 172 114 +76 96 127 104 102 107 147 174 196 194 175 184 +144 129 179 205 149 106 94 120 127 137 167 159 +119 164 201 177 155 151 184 208 147 157 175 174 +190 207 230 198 117 123 190 180 196 190 160 190 +169 111 85 153 208 220 157 89 95 149 100 85 +161 174 139 127 157 207 222 170 187 189 162 147 +96 121 182 204 216 195 143 184 171 77 99 150 +77 76 133 93 111 62 45 33 33 65 127 124 +96 36 136 90 113 80 76 181 186 208 140 89 +144 194 123 150 177 134 66 175 96 44 151 167 +176 181 195 95 93 97 135 107 177 200 191 182 +158 195 143 167 178 121 98 175 199 166 197 184 +180 131 130 63 64 63 54 145 169 110 174 185 +177 107 139 113 151 184 195 165 165 180 162 166 +127 137 87 130 179 158 186 150 182 155 117 184 +188 102 86 133 187 138 118 199 171 146 75 123 +197 117 57 77 105 127 159 182 167 93 107 207 +170 130 204 205 188 162 80 135 159 189 126 121 +175 121 175 97 127 97 166 95 100 195 178 146 +148 196 174 172 160 128 137 66 73 82 84 83 +64 47 78 64 75 146 147 124 72 86 104 134 +187 143 47 46 39 51 55 59 60 60 104 145 +151 119 52 85 144 99 75 88 58 114 118 55 +51 62 59 47 64 67 70 72 60 41 56 57 +72 65 123 167 172 158 161 118 62 106 73 62 +77 94 60 51 95 104 69 58 88 89 69 95 +66 94 88 116 88 67 62 51 36 44 52 148 +129 49 62 76 98 161 94 70 79 63 85 72 +59 52 38 49 60 60 96 78 92 80 75 75 +69 70 77 151 164 84 96 88 146 131 107 70 +127 133 65 75 109 106 92 79 135 164 119 87 +165 187 202 175 156 179 139 94 89 100 136 149 +176 182 174 190 200 190 134 113 77 67 82 157 +175 204 169 165 141 128 149 151 135 121 121 98 +133 207 162 167 179 168 181 143 77 89 72 69 +82 117 153 198 157 128 107 80 144 200 129 96 +157 170 155 169 153 133 143 90 124 138 159 177 +179 198 197 192 204 180 119 128 176 198 166 148 +204 147 94 206 217 169 181 172 188 105 175 195 +131 179 143 126 141 182 141 159 80 88 82 136 +184 135 109 176 113 194 145 89 70 120 166 107 +123 140 72 62 83 64 64 156 225 227 157 97 +177 218 181 145 171 185 144 131 89 103 86 113 +169 231 237 200 168 116 126 177 226 215 228 199 +127 139 66 114 174 164 155 114 189 211 168 161 +186 220 216 160 164 146 74 105 179 223 210 127 +200 223 204 147 172 207 211 202 133 121 205 221 +191 140 111 75 149 144 154 158 213 201 198 202 +232 213 202 208 208 158 110 77 156 184 180 162 +111 120 87 102 64 107 150 136 +84 111 148 128 +109 54 76 43 22 38 68 47 65 53 97 141 +73 126 96 127 199 194 200 52 124 201 109 151 +192 186 87 85 140 171 109 127 162 155 141 189 +156 164 67 70 79 102 143 110 176 178 191 198 +138 153 138 137 117 131 157 119 198 166 131 161 +137 52 47 78 126 109 175 212 235 186 87 97 +131 107 151 195 123 128 188 164 155 86 96 116 +168 220 185 197 194 166 135 138 151 150 129 86 +128 199 98 159 196 186 95 80 174 195 75 94 +103 164 171 143 116 79 115 139 125 96 138 191 +227 220 166 155 166 196 161 131 159 117 109 159 +156 94 185 141 139 178 169 156 136 196 153 93 +76 123 181 123 89 57 58 74 77 67 84 58 +64 75 96 85 82 84 121 74 145 138 55 43 +39 44 43 35 43 51 58 90 106 93 111 139 +103 86 68 47 52 75 120 121 110 75 119 67 +56 74 76 94 97 66 49 64 74 48 54 75 +128 147 154 141 114 76 72 89 85 162 99 78 +118 143 125 67 78 52 59 58 56 67 90 125 +66 79 60 48 38 44 73 145 94 57 74 70 +154 175 69 65 62 57 45 65 73 56 55 45 +53 76 76 96 67 78 87 73 70 57 67 98 +140 84 69 87 102 89 82 100 153 82 78 119 +174 171 115 119 113 162 151 150 185 151 190 184 +190 170 113 134 161 151 90 92 176 205 206 160 +127 187 191 118 83 89 79 117 143 114 107 135 +143 83 90 131 160 149 145 146 126 180 143 104 +107 103 124 144 150 146 96 87 89 137 157 151 +187 196 162 162 154 212 205 184 120 131 146 143 +192 168 162 118 187 153 109 102 162 156 102 189 +219 198 149 151 150 194 182 161 126 190 154 162 +161 166 191 177 137 186 212 182 162 188 192 79 +166 170 198 159 110 123 115 169 109 70 92 89 +107 129 80 98 111 164 149 149 198 75 55 62 +59 64 126 216 210 169 140 196 218 207 172 141 +129 125 168 97 114 201 233 228 213 215 162 104 +55 96 168 213 205 221 206 131 156 159 156 192 +168 161 116 179 187 202 187 210 216 207 121 139 +104 57 63 153 217 208 149 197 208 171 113 209 +236 221 186 149 184 220 218 149 94 143 147 158 +190 206 166 177 188 215 223 186 136 201 209 207 +129 64 68 94 102 148 164 143 111 84 80 96 +141 128 125 123 +57 92 136 146 131 72 51 54 +100 57 73 77 155 69 59 151 94 73 105 63 +138 117 185 83 69 161 165 86 103 207 180 151 +99 149 124 155 168 179 172 223 200 171 107 123 +150 124 143 159 96 159 185 205 222 181 156 188 +134 178 175 209 207 194 111 123 176 133 68 76 +87 151 154 178 225 233 208 95 68 90 137 140 +159 93 166 204 198 167 106 84 134 199 200 195 +226 218 128 155 108 110 175 124 77 181 145 113 +165 165 191 162 89 199 168 99 117 128 150 148 +156 144 104 109 54 126 128 178 205 215 201 168 +170 162 210 131 139 134 97 168 171 77 182 164 +109 105 126 98 68 149 88 73 73 110 164 121 +94 68 65 124 131 93 185 110 49 59 57 59 +129 75 119 82 74 77 57 44 46 51 62 56 +82 70 52 59 65 80 88 144 158 105 53 44 +57 70 72 88 115 92 59 52 70 77 95 186 +136 146 140 98 93 126 136 65 94 97 115 128 +136 77 88 92 95 134 74 68 73 125 105 58 +64 60 74 60 64 82 93 123 100 134 86 56 +94 48 76 84 64 62 49 59 92 85 54 62 +76 65 72 65 65 63 38 67 67 59 92 95 +80 79 66 73 57 53 72 89 116 124 98 70 +97 121 116 134 160 94 104 156 147 134 166 166 +165 182 128 190 182 171 192 204 204 151 89 121 +157 105 150 169 197 178 143 165 167 110 125 170 +154 82 87 120 133 105 77 79 123 123 136 145 +113 135 128 88 75 79 59 62 76 83 121 131 +169 187 137 90 126 136 146 169 153 167 162 204 +150 106 146 202 211 155 205 138 128 160 124 74 +143 178 154 128 125 194 202 178 167 209 200 153 +141 118 135 187 171 153 167 176 151 205 176 129 +185 190 206 181 181 135 160 115 151 197 204 184 +172 153 175 134 82 74 66 72 78 139 94 143 +126 68 74 178 124 48 58 55 46 115 174 204 +175 169 199 222 197 109 75 75 128 181 108 180 +218 226 220 217 154 115 58 65 140 180 187 143 +156 187 157 97 137 115 196 167 103 114 157 188 +180 182 192 177 184 175 74 53 68 123 169 211 +188 131 197 209 210 141 209 212 190 143 148 198 +232 196 150 154 149 198 147 179 209 147 119 87 +114 164 118 143 200 184 180 87 83 69 73 115 +186 176 146 137 70 92 102 135 159 138 151 192 +64 49 54 94 100 94 67 44 110 104 106 85 +139 125 51 140 190 111 66 66 74 126 153 93 +64 77 168 192 74 194 145 184 149 113 161 182 +199 157 191 168 201 207 204 149 102 115 155 175 +155 106 141 137 199 216 201 140 170 144 151 180 +170 205 208 164 110 131 124 126 92 162 209 195 +172 216 221 200 104 66 84 151 103 128 177 190 +184 208 184 115 144 181 216 216 216 223 192 151 +170 77 141 170 80 124 123 76 90 159 185 195 +155 138 196 160 157 186 136 110 187 165 99 102 +70 78 171 189 125 202 186 167 194 166 186 161 +135 135 168 187 185 93 184 164 181 73 135 145 +58 79 131 67 73 121 125 80 128 118 88 109 +108 100 205 181 67 67 64 43 44 59 95 117 +69 87 102 67 111 158 133 60 83 92 82 120 +167 126 164 95 67 59 68 52 53 113 108 66 +72 83 77 63 85 99 78 154 165 113 164 199 +181 191 178 58 88 82 107 109 78 75 58 74 +97 74 69 82 100 103 126 94 48 64 55 64 +86 69 89 96 140 94 102 138 146 70 66 67 +84 69 59 67 56 53 53 58 86 88 65 76 +60 60 74 73 72 89 102 92 98 104 69 75 +67 70 92 127 110 124 123 120 104 164 153 108 +103 116 134 170 169 138 170 178 188 144 158 185 +166 200 190 211 209 116 98 128 130 136 175 178 +194 198 174 115 136 103 106 164 187 151 125 170 +201 176 76 93 137 140 190 176 106 127 93 89 +86 95 98 135 114 103 134 138 151 180 226 186 +210 185 139 154 143 134 134 167 188 156 198 147 +187 197 184 199 213 145 146 209 174 165 178 178 +168 165 212 190 157 156 191 133 114 69 151 166 +186 169 169 149 121 188 172 109 139 141 190 157 +155 194 153 102 110 176 143 126 100 150 117 52 +63 87 66 68 134 92 143 169 59 68 84 75 +87 96 64 59 89 138 205 144 120 139 187 143 +78 68 63 108 194 169 135 195 211 208 184 109 +60 83 153 150 209 188 169 150 160 178 140 205 +184 219 216 146 164 182 191 187 166 174 211 204 +126 106 79 97 125 150 205 178 123 148 176 188 +181 145 187 212 172 111 160 202 168 171 191 162 +222 210 159 186 151 130 84 75 60 72 84 159 +144 147 52 69 125 98 169 210 180 148 157 124 +164 192 200 207 205 221 206 159 +133 36 39 57 +57 92 100 54 65 153 151 60 55 56 62 73 +160 185 65 62 45 87 137 165 139 72 90 189 +170 157 177 65 83 108 135 190 202 138 156 199 +191 116 191 190 143 83 153 196 210 184 157 133 +126 128 211 178 182 157 131 98 106 121 151 174 +186 129 174 192 171 113 179 202 225 181 200 184 +191 174 54 69 60 82 105 83 155 162 200 206 +158 191 147 198 186 139 111 88 167 117 73 182 +150 160 77 52 75 135 191 106 167 77 131 166 +215 192 179 121 113 185 139 49 65 64 90 184 +137 186 174 206 215 200 144 204 184 190 191 165 +120 83 154 133 191 138 103 75 53 79 116 105 +66 153 208 165 98 124 154 120 117 157 179 197 +66 136 88 111 60 76 134 167 151 128 179 153 +164 138 180 117 92 160 129 149 118 116 148 76 +70 103 72 107 109 67 75 72 111 109 95 105 +94 144 78 79 131 95 119 170 174 147 164 117 +100 69 72 82 79 72 68 66 62 74 75 59 +70 114 128 105 93 68 74 74 79 125 104 68 +110 134 121 168 124 65 72 80 111 123 82 69 +73 82 55 79 121 137 127 119 82 90 87 70 +75 86 76 111 107 125 90 70 79 86 126 145 +110 127 145 159 176 148 155 115 97 110 139 177 +180 174 177 187 190 146 129 188 204 215 216 208 +166 179 186 149 198 201 208 206 166 139 174 137 +89 155 185 177 160 153 162 107 113 105 70 72 +69 93 129 121 75 89 93 140 146 171 189 172 +146 181 172 177 168 177 208 195 222 228 220 196 +190 180 150 130 140 161 225 201 126 176 140 158 +189 111 131 205 213 179 202 198 210 221 186 197 +212 184 129 116 72 86 135 161 178 171 162 88 +105 144 140 90 96 113 168 157 170 196 146 126 +136 128 151 167 96 92 79 93 108 117 140 105 +105 105 107 78 106 145 86 161 137 66 92 92 +159 197 114 97 150 188 158 154 136 73 104 86 +94 146 188 184 159 106 63 63 93 185 196 192 +171 158 165 106 158 176 175 218 237 231 177 185 +199 213 198 185 207 190 153 104 108 111 154 158 +144 164 180 141 167 178 127 118 155 211 212 215 +195 147 178 186 190 184 128 188 212 159 164 178 +104 129 196 148 82 90 68 56 53 58 80 104 +89 160 147 134 117 117 118 161 171 171 191 131 +100 105 83 164 +159 60 66 44 55 75 93 83 +48 95 181 170 68 41 79 58 100 180 96 73 +65 87 147 175 197 105 58 95 162 140 206 167 +67 153 128 120 190 185 97 153 217 174 102 180 +145 107 127 149 129 188 165 172 126 83 143 170 +149 141 153 156 116 158 210 188 100 141 166 130 +153 171 93 115 166 220 198 192 182 186 103 53 +118 141 85 93 86 103 100 154 170 213 176 146 +168 72 49 84 146 188 67 126 147 181 177 65 +93 83 131 104 72 127 79 141 200 210 209 154 +134 86 67 84 67 80 119 191 149 144 128 143 +159 103 93 155 192 165 102 110 131 89 105 83 +131 103 89 146 55 59 87 166 126 87 127 98 +86 140 137 89 134 169 87 150 157 187 114 72 +87 85 66 167 192 117 147 154 126 93 94 73 +96 167 172 121 58 57 51 43 65 111 153 148 +170 100 82 67 104 169 140 138 171 157 84 107 +84 131 204 134 68 148 139 157 158 82 97 78 +62 65 72 68 72 95 59 72 129 146 155 131 +120 72 77 72 74 78 56 109 175 109 144 153 +125 65 74 159 161 114 63 80 99 84 85 90 +125 129 138 140 110 138 106 64 70 73 117 86 +94 136 137 79 99 103 165 175 135 100 155 171 +177 167 174 137 123 161 186 199 195 196 199 194 +189 186 171 172 232 208 178 181 184 239 195 198 +232 212 192 159 126 98 86 121 110 94 95 110 +93 73 113 94 54 63 84 83 68 55 73 114 +197 172 137 131 129 149 174 226 210 180 180 164 +156 161 140 170 199 182 182 186 180 185 205 196 +187 118 169 219 176 128 158 145 93 72 109 165 +192 124 103 116 124 174 164 141 156 149 133 130 +136 108 85 111 166 150 104 95 104 95 99 145 +176 118 126 155 119 145 120 188 154 136 120 109 +165 118 80 127 156 198 172 139 84 44 76 113 +175 150 208 162 76 88 95 139 171 99 114 123 +120 136 145 154 104 137 124 83 136 115 96 113 +109 131 113 86 176 228 223 201 196 137 178 175 +139 156 204 219 189 166 131 168 158 119 164 141 +97 129 201 153 154 126 133 120 72 119 133 96 +113 94 88 144 174 133 124 103 136 194 207 189 +139 118 191 167 111 154 157 109 88 120 99 109 +96 84 66 70 86 156 141 137 136 140 125 77 +113 127 111 82 80 108 89 106 78 100 144 172 +84 60 56 47 43 110 89 113 46 41 93 157 +162 92 57 77 65 166 108 121 94 160 158 181 +209 210 184 109 109 129 187 196 145 150 164 134 +87 168 197 136 177 201 161 100 149 107 117 156 +146 166 209 187 155 87 127 164 162 164 125 119 +119 133 169 196 133 89 114 167 165 181 167 110 +153 99 130 140 158 169 155 168 113 146 194 162 +83 79 156 78 80 182 217 136 117 106 95 73 +102 156 117 70 123 166 194 89 82 83 111 177 +133 94 64 116 201 192 211 185 157 138 88 129 +134 117 174 198 145 69 64 137 140 69 117 87 +113 104 78 105 73 143 147 70 74 125 124 136 +63 82 118 178 148 46 97 128 88 170 150 100 +94 103 85 94 130 157 133 96 85 85 87 137 +161 124 97 62 54 62 85 57 43 75 97 90 +65 86 84 74 85 64 89 159 159 96 103 141 +145 114 156 146 160 167 113 138 127 153 167 138 +130 115 86 159 181 169 157 80 77 78 64 93 +92 74 97 127 164 159 149 145 80 74 83 84 +83 69 62 70 144 113 130 149 105 68 146 194 +172 103 83 89 104 77 127 108 119 107 140 168 +165 138 164 119 166 131 88 63 67 129 94 74 +99 100 178 182 169 106 145 197 206 174 174 175 +160 170 185 198 182 167 168 192 165 189 199 185 +205 188 151 111 196 220 197 195 220 219 166 75 +97 102 129 153 124 162 125 65 69 82 52 69 +67 52 72 119 179 177 179 205 185 188 198 137 +146 181 159 189 185 158 146 141 180 192 148 153 +147 182 174 139 105 130 135 167 210 174 148 151 +198 195 162 131 113 169 139 100 160 186 124 117 +106 125 119 85 129 162 126 128 172 165 103 88 +105 144 172 151 160 144 123 138 167 136 102 128 +109 109 114 126 120 137 104 184 184 113 149 110 +155 190 149 63 69 72 113 117 110 181 149 125 +168 160 110 110 151 178 158 129 70 90 108 93 +95 126 148 130 76 58 103 181 179 140 68 135 +186 221 230 221 182 188 189 95 90 153 151 100 +189 229 213 165 166 126 131 100 111 186 184 177 +148 147 123 126 126 116 168 164 161 180 170 86 +89 128 79 124 204 227 167 88 161 189 140 96 +141 166 78 72 94 147 205 174 120 153 114 124 +169 169 139 149 150 110 124 167 168 125 92 72 +110 134 114 72 90 133 103 108 +48 42 54 46 +38 83 94 102 69 68 78 82 126 87 64 108 +85 180 166 90 100 72 161 209 205 195 198 194 +161 99 195 204 199 144 120 128 95 84 176 179 +161 187 185 192 129 149 58 85 128 198 204 222 +210 186 158 202 168 134 153 181 134 140 176 180 +161 144 83 151 210 155 158 106 157 137 133 205 +188 113 100 151 180 153 137 196 196 119 189 201 +158 195 192 155 52 69 73 105 137 69 94 120 +75 119 186 133 59 59 60 149 200 95 60 72 +148 184 121 154 174 123 94 60 147 197 166 178 +107 58 73 85 150 153 143 103 80 82 68 66 +113 187 170 155 72 188 177 140 110 158 192 83 +97 92 154 205 189 184 191 181 100 87 77 66 +62 113 123 77 79 136 144 82 97 111 102 69 +59 60 55 58 74 68 59 57 66 63 70 94 +84 39 46 60 58 85 113 121 176 155 129 144 +129 151 151 174 167 137 76 106 180 149 68 116 +120 154 195 104 108 113 107 82 77 79 99 149 +93 109 147 113 109 117 83 121 114 106 93 103 +115 79 76 139 126 67 179 184 176 164 136 82 +72 68 123 174 105 137 175 187 148 102 158 148 +150 140 138 118 119 167 156 115 144 120 162 195 +196 127 195 205 196 186 177 187 170 191 187 192 +165 166 172 195 192 198 184 147 206 195 128 151 +175 151 215 207 199 189 162 133 199 166 172 216 +218 213 154 93 98 73 63 58 82 134 158 126 +134 145 161 195 172 180 185 125 175 189 178 138 +185 188 147 98 105 150 202 187 154 222 232 190 +117 96 109 184 175 159 184 151 181 209 194 159 +146 232 215 150 158 141 156 110 119 139 97 70 +130 128 96 113 166 151 96 82 95 182 169 168 +216 179 127 127 103 107 107 130 150 106 68 77 +130 166 140 175 109 174 160 159 185 134 67 79 +70 100 79 95 161 175 184 205 147 107 114 96 +145 189 202 124 74 76 120 120 69 92 95 62 +109 169 190 156 82 90 162 197 205 218 188 134 +129 94 53 67 107 105 138 151 176 139 184 213 +171 182 129 95 100 149 180 129 135 151 137 209 +216 221 205 205 210 148 70 93 136 96 154 216 +215 177 181 121 136 93 106 135 168 158 162 176 +192 191 187 118 95 123 182 174 136 121 162 156 +138 151 158 141 126 167 185 170 181 161 128 155 +162 151 150 141 +62 72 75 42 35 42 77 96 +58 70 103 113 117 114 58 87 67 150 210 182 +164 148 73 167 223 215 186 124 177 186 138 211 +178 202 196 154 103 96 139 210 185 209 186 146 +127 165 141 108 109 148 213 226 204 211 186 146 +185 191 126 166 196 131 194 213 209 209 168 110 +165 191 106 167 168 179 130 160 190 138 135 178 +199 195 165 109 186 200 136 177 220 187 191 145 +54 34 92 74 170 140 89 154 79 69 164 177 +47 49 64 96 143 139 144 108 59 120 67 78 +116 102 110 123 98 188 211 138 83 78 106 129 +127 113 86 124 89 83 92 77 107 172 170 106 +75 88 103 168 117 146 184 136 166 146 139 188 +160 157 165 121 170 175 114 154 117 76 126 188 +148 95 88 100 175 184 153 111 82 100 82 42 +53 66 55 58 73 54 104 79 82 128 87 52 +56 97 98 85 105 135 168 157 155 98 129 178 +200 177 69 133 188 137 85 54 88 135 185 111 +103 136 178 93 68 80 109 119 89 95 154 141 +114 149 106 134 111 80 85 118 126 69 106 134 +88 83 168 213 186 136 161 113 80 68 114 164 +80 130 149 172 121 156 169 149 110 110 162 138 +150 154 166 146 143 150 144 178 175 137 179 205 +212 190 139 158 198 199 217 181 174 206 225 205 +225 195 198 175 164 134 147 211 205 185 202 159 +154 120 108 144 184 189 178 211 208 174 102 113 +87 66 73 111 136 172 207 147 153 105 141 117 +86 115 111 107 121 179 201 198 158 205 181 157 +161 162 177 170 106 164 199 212 161 145 151 140 +125 141 150 156 135 136 141 182 131 160 222 200 +213 151 172 182 147 120 130 117 151 137 133 118 +120 118 99 123 129 114 102 155 178 131 108 151 +145 167 201 137 96 145 130 113 85 86 103 128 +128 136 158 162 82 64 72 79 76 69 93 118 +164 187 162 125 72 84 80 116 188 185 119 73 +102 77 59 70 79 146 167 166 104 89 80 66 +113 148 161 172 198 172 79 95 98 62 93 84 +87 188 199 124 176 210 221 186 162 168 138 145 +144 186 194 185 148 168 200 217 175 138 181 182 +109 86 84 149 145 171 204 217 218 185 138 106 +113 171 178 159 134 168 188 202 180 104 107 127 +174 161 172 166 196 182 229 215 184 99 78 103 +109 117 117 125 85 115 188 199 148 102 133 153 +89 58 146 137 36 41 67 127 117 56 94 120 +63 108 65 97 43 67 161 210 178 187 174 74 +127 194 216 184 149 154 86 154 143 133 215 211 +199 154 108 205 196 169 195 200 201 153 124 178 +115 62 109 171 192 208 195 134 94 200 169 147 +102 164 124 144 174 188 210 221 167 143 115 107 +159 178 158 123 137 189 206 195 161 184 210 166 +76 156 166 114 164 182 131 185 139 51 115 84 +88 141 89 185 202 145 84 166 129 57 68 97 +88 66 127 124 85 104 35 51 68 82 150 124 +78 136 198 185 178 119 167 138 139 190 220 125 +118 107 123 128 100 185 139 171 120 65 108 166 +125 124 189 159 216 158 94 146 151 160 197 123 +221 197 172 175 63 118 182 117 121 79 75 47 +102 94 103 113 140 143 93 123 105 180 100 39 +46 103 139 66 62 111 77 79 59 53 59 103 +162 130 139 179 176 123 155 126 89 99 95 93 +106 88 156 114 82 96 166 127 162 172 205 143 +133 92 97 156 146 90 131 177 140 162 153 93 +125 113 107 124 139 79 113 124 99 95 154 198 +186 140 171 113 113 97 174 187 64 70 169 189 +110 168 145 155 137 154 175 137 172 186 194 148 +141 145 136 182 188 177 177 202 210 194 145 153 +204 215 196 162 169 207 227 209 211 185 199 179 +139 103 149 181 174 157 148 150 133 95 99 93 +124 169 133 129 138 128 118 149 73 65 73 74 +90 89 174 218 211 155 108 100 119 116 72 159 +178 196 172 187 192 190 185 176 138 159 180 169 +186 158 167 187 188 171 143 157 134 73 66 83 +82 90 86 74 77 109 151 106 95 124 165 165 +162 187 191 194 174 164 162 156 184 128 99 92 +114 136 94 78 86 118 111 108 149 189 141 67 +77 117 118 95 70 113 178 156 80 119 116 85 +90 58 76 72 83 102 70 118 192 217 157 64 +68 77 93 130 145 136 100 141 106 83 160 196 +190 181 147 115 65 65 76 128 167 157 202 221 +217 155 86 79 58 136 128 100 184 174 162 82 +96 115 150 168 180 182 184 198 222 187 194 181 +192 187 162 135 171 190 201 146 151 170 170 200 +208 228 213 181 148 161 158 164 192 204 169 121 +208 207 174 131 158 184 205 189 175 151 166 179 +209 221 194 136 78 80 115 147 165 194 217 200 +160 172 154 79 84 106 94 126 +128 57 70 150 +106 48 56 88 181 161 72 84 105 60 75 55 +63 49 79 188 165 124 190 191 100 99 140 196 +182 179 120 94 170 54 145 180 186 205 174 150 +190 128 177 187 197 221 220 169 147 143 102 95 +125 159 205 188 134 148 189 170 68 147 185 116 +115 119 197 218 226 184 166 189 190 147 192 177 +108 146 195 213 209 120 135 157 92 77 108 196 +160 108 162 125 155 52 60 96 73 63 57 165 +218 209 151 76 120 94 51 65 139 77 63 65 +95 118 95 43 77 58 100 96 133 127 149 172 +177 130 162 172 145 192 161 98 85 137 107 129 +85 131 185 201 151 156 179 164 125 150 120 174 +197 87 147 141 136 94 87 144 192 155 165 87 +106 145 159 79 82 89 80 164 198 143 57 42 +51 56 102 108 172 157 98 56 90 105 119 162 +148 113 63 58 77 85 63 111 100 125 100 118 +155 159 192 164 106 44 69 88 123 131 190 128 +117 96 137 177 208 195 137 94 124 141 79 135 +147 100 139 185 147 185 192 158 151 190 168 166 +162 151 93 114 131 138 167 174 150 139 137 97 +94 74 102 108 76 57 170 200 110 178 180 192 +144 120 160 117 180 208 206 170 191 167 100 171 +182 161 188 192 208 181 119 161 222 225 166 157 +208 229 215 156 128 145 188 161 157 113 118 151 +146 134 110 83 115 84 95 108 87 74 77 78 +69 78 58 60 55 48 49 65 90 110 120 168 +171 154 167 172 162 165 84 110 160 146 115 97 +138 184 199 117 85 107 131 158 197 150 141 187 +140 67 77 99 100 67 88 106 121 80 70 95 +69 87 79 64 76 102 137 179 189 161 118 108 +113 96 115 153 186 113 87 79 90 84 56 79 +88 98 102 83 79 67 77 82 80 89 98 127 +90 172 182 93 66 68 93 138 88 77 78 92 +75 74 175 207 184 147 80 76 64 72 89 166 +164 103 98 141 190 200 185 207 191 107 66 62 +65 72 59 79 130 200 199 148 82 73 64 51 +89 69 47 137 115 78 63 75 153 195 168 208 +211 215 195 180 159 176 197 218 201 171 199 169 +204 229 208 171 176 150 201 201 141 124 127 153 +213 231 166 176 211 154 185 219 212 205 199 195 +201 197 209 217 201 207 223 198 140 92 67 113 +83 68 98 106 114 123 130 165 141 107 60 89 +74 104 100 87 +117 76 72 74 154 117 35 70 +79 160 191 140 146 123 55 52 96 78 52 125 +137 96 80 141 188 166 85 93 94 131 170 97 +135 126 74 124 159 218 202 165 94 117 158 187 +150 131 167 161 192 196 161 148 178 150 160 171 +181 169 119 177 166 143 171 135 160 108 124 192 +227 197 160 162 189 206 182 199 174 114 92 123 +143 165 168 196 189 120 177 156 204 147 102 143 +67 59 54 109 110 149 164 86 147 158 150 96 +67 125 100 93 86 124 67 53 75 97 86 70 +64 77 75 135 181 165 179 80 88 87 104 113 +84 130 165 140 117 114 126 83 73 153 197 140 +153 174 189 143 95 150 194 150 96 116 164 83 +67 66 161 105 130 120 166 79 96 104 85 92 +116 72 125 211 220 208 159 121 154 128 63 80 +138 121 138 200 218 143 102 96 126 133 102 60 +56 130 70 149 135 65 86 68 114 121 133 156 +144 133 119 78 116 117 177 176 190 161 80 137 +166 189 158 128 179 168 79 128 160 147 175 115 +96 176 202 201 162 189 157 195 206 146 85 141 +133 169 164 158 162 170 118 75 86 79 94 73 +80 136 125 90 144 206 209 218 204 134 139 167 +146 139 170 205 179 171 140 185 200 172 147 206 +212 139 159 185 211 211 179 169 198 202 149 158 +216 200 149 201 187 137 113 90 120 84 66 98 +114 130 118 86 79 77 79 119 75 60 47 51 +46 44 52 74 94 164 174 102 119 140 165 153 +95 106 86 90 103 170 148 93 89 89 93 60 +82 125 120 87 64 77 65 63 89 75 68 83 +85 113 157 130 117 75 92 80 68 64 82 110 +87 113 129 149 128 89 75 79 69 66 89 88 +107 93 60 78 97 70 79 90 69 64 80 75 +90 96 124 113 102 87 90 87 161 167 79 70 +73 84 104 145 140 179 161 77 82 102 178 159 +75 74 72 67 68 72 73 86 98 147 156 192 +208 188 119 125 106 64 80 75 53 57 106 166 +196 178 72 58 69 51 72 51 51 49 99 166 +129 90 94 201 230 213 198 156 87 110 160 213 +220 226 225 225 211 188 176 208 186 130 99 127 +168 172 128 128 136 205 198 194 199 153 202 199 +212 229 228 202 175 171 137 153 196 223 238 236 +211 172 125 93 126 159 198 219 202 170 116 147 +120 74 67 66 79 119 90 96 125 76 80 104 +144 86 82 53 69 95 68 59 135 67 129 176 +90 146 174 106 135 177 64 54 102 128 111 79 +92 147 143 127 73 80 113 167 79 127 109 100 +114 157 228 199 164 121 187 196 186 98 76 86 +115 111 135 141 194 202 170 90 126 189 196 108 +144 126 144 158 87 89 86 83 156 219 200 125 +118 177 141 154 98 168 136 60 114 123 174 140 +209 162 189 191 174 176 55 69 128 82 90 59 +147 165 167 118 118 168 156 137 148 108 124 111 +95 106 105 59 58 94 80 115 76 108 115 136 +205 148 179 82 68 80 86 64 59 130 188 128 +107 96 125 85 94 109 102 117 158 202 146 113 +83 168 189 137 70 127 110 150 59 117 185 131 +113 78 108 80 55 80 54 110 134 82 103 141 +104 99 105 133 148 110 64 100 149 76 178 198 +185 159 99 102 75 116 87 70 55 82 85 82 +110 93 75 83 75 80 83 144 114 107 110 151 +146 75 151 181 168 179 141 117 139 141 182 118 +168 144 79 131 175 195 204 141 113 165 194 195 +148 166 204 229 192 97 89 166 189 189 129 113 +126 90 85 72 83 94 82 84 105 178 158 73 +94 150 174 213 191 149 123 187 158 89 137 174 +174 195 177 189 200 197 201 230 205 210 169 175 +217 223 204 196 171 162 161 197 229 192 153 177 +121 104 136 145 107 75 60 86 85 121 90 125 +120 73 75 86 54 63 47 49 55 63 90 87 +116 151 138 164 162 110 114 110 78 93 108 147 +117 80 89 87 55 75 74 67 125 144 100 80 +87 100 111 103 76 104 104 69 84 79 126 98 +79 118 95 77 67 99 103 111 83 87 134 113 +90 75 82 67 57 89 76 100 85 73 78 80 +162 124 68 62 89 88 154 150 120 72 76 70 +79 118 74 73 80 68 67 88 93 92 159 172 +192 161 120 75 72 65 65 73 82 86 69 62 +62 65 67 73 98 136 129 135 85 68 109 172 +186 145 107 76 97 148 137 128 115 93 79 90 +182 160 86 66 70 153 175 151 103 89 159 194 +154 110 77 75 94 151 181 176 161 202 188 151 +201 205 206 144 87 128 172 206 162 158 210 227 +215 215 222 167 139 200 202 201 226 204 198 156 +160 161 196 197 221 235 215 172 128 113 172 201 +185 201 191 172 104 110 147 119 89 135 159 164 +169 133 116 147 85 76 86 121 +121 74 80 53 +56 63 74 90 154 151 141 84 90 96 174 202 +153 179 160 68 73 170 172 150 131 83 82 78 +84 130 150 109 97 73 126 109 83 111 167 217 +170 167 158 151 182 149 95 105 90 93 96 146 +125 159 207 201 144 110 181 164 80 73 120 156 +162 87 114 96 114 156 212 198 121 145 197 182 +90 82 127 139 98 48 117 166 133 120 74 88 +92 93 84 77 84 79 89 94 106 177 158 73 +63 113 204 205 159 155 103 137 105 100 116 84 +141 85 105 170 149 111 169 123 196 186 156 76 +74 100 65 47 46 67 129 185 90 80 75 114 +187 100 93 113 166 148 77 123 111 82 107 106 +75 76 113 117 155 169 86 150 103 133 165 72 +66 41 47 48 58 99 115 160 120 104 103 63 +88 57 113 94 125 130 128 149 186 169 143 65 +53 97 68 55 65 77 73 66 46 52 98 136 +69 65 55 111 106 94 83 145 136 70 82 151 +180 209 181 115 109 85 141 162 168 176 121 113 +111 188 197 205 170 200 181 188 148 191 225 232 +206 135 120 219 219 182 86 156 143 86 70 76 +69 120 96 77 103 144 169 155 165 197 160 145 +147 156 103 161 175 92 175 158 164 150 123 181 +180 188 200 169 157 185 107 128 153 190 208 170 +167 196 179 205 206 121 105 140 141 109 114 137 +104 60 86 66 87 130 115 136 96 93 70 70 +67 64 47 57 68 70 94 156 83 97 93 102 +94 84 85 85 104 96 89 137 92 78 78 74 +77 62 76 83 84 104 88 94 100 107 79 103 +119 83 73 58 80 93 84 88 118 149 137 116 +78 76 85 77 75 106 167 139 107 85 64 88 +62 68 72 56 92 93 66 74 103 76 76 83 +113 87 97 100 113 118 68 80 69 75 63 79 +103 80 103 117 94 158 128 82 47 86 77 73 +73 74 108 85 77 99 117 103 65 88 78 76 +102 133 113 83 110 137 107 98 78 89 156 178 +210 196 123 72 105 98 79 125 128 76 63 126 +198 235 231 218 186 109 135 118 47 100 104 95 +100 85 80 97 120 127 191 185 188 170 188 185 +198 219 217 199 201 192 184 158 151 170 139 125 +166 155 135 195 168 121 80 94 117 148 156 178 +195 202 159 177 201 175 179 175 155 160 111 98 +106 130 103 83 82 86 117 105 105 117 133 106 +82 93 108 109 +42 63 64 108 45 78 65 118 +127 100 164 153 74 144 74 144 177 186 159 83 +60 94 184 182 176 186 89 141 136 117 153 149 +149 95 87 172 130 73 97 196 197 197 205 175 +143 199 116 99 147 146 98 99 80 64 99 125 +110 98 130 187 138 133 147 126 186 172 149 95 +85 78 111 185 166 70 73 145 99 60 114 160 +153 120 74 133 206 190 123 70 59 87 73 89 +128 158 103 57 69 104 172 149 109 75 89 139 +180 146 107 83 85 100 130 69 111 85 67 139 +184 124 162 125 123 135 104 121 106 93 67 82 +69 103 79 117 109 74 66 103 172 88 116 194 +130 118 98 96 110 70 73 89 68 97 80 119 +146 140 92 57 86 137 168 107 74 69 100 62 +54 80 77 111 104 136 165 147 162 105 133 62 +97 74 68 150 106 76 92 48 49 70 68 55 +49 65 89 85 65 77 69 97 97 58 60 83 +95 73 107 87 167 146 151 82 130 174 157 144 +92 65 74 111 144 160 149 192 157 208 209 209 +160 167 156 154 160 150 198 213 208 177 127 200 +185 134 84 116 95 69 59 68 75 76 85 100 +94 157 189 200 159 194 188 84 162 166 67 118 +143 110 161 165 155 154 156 161 143 189 189 145 +130 111 76 133 180 156 150 141 161 157 114 148 +96 66 135 147 88 84 107 76 85 69 65 83 +109 146 182 111 77 95 83 55 64 75 75 87 +72 97 104 117 135 121 150 136 98 89 98 131 +85 73 67 53 73 79 64 64 58 67 68 65 +83 108 86 127 130 75 54 52 65 60 60 64 +77 69 60 83 64 75 92 58 68 68 63 82 +75 73 136 149 104 82 90 138 125 102 99 84 +77 98 83 75 82 72 74 84 93 80 76 83 +147 111 131 125 96 84 88 65 62 74 88 72 +83 79 54 114 148 99 67 67 66 82 64 88 +108 69 67 72 80 70 85 64 73 130 123 177 +190 195 106 57 57 136 151 110 99 88 69 73 +59 125 136 117 84 138 205 215 185 141 117 117 +94 82 125 165 157 176 134 95 102 90 78 85 +160 213 196 195 207 213 204 200 209 175 135 159 +199 125 155 216 204 156 110 141 201 165 158 130 +153 194 177 161 204 207 212 175 133 145 119 161 +155 188 150 131 129 120 162 200 198 141 102 98 +110 121 113 103 110 85 59 47 92 96 115 174 +87 78 64 98 94 62 78 182 179 145 74 130 +155 146 72 67 68 124 176 133 69 52 82 190 +186 118 118 114 179 208 192 144 115 157 136 113 +60 139 108 169 221 174 188 200 161 181 187 126 +99 149 189 151 95 125 76 70 68 66 78 98 +138 107 104 120 124 202 217 208 166 137 98 113 +133 125 70 147 167 154 88 161 218 208 151 124 +99 182 206 135 63 52 136 135 124 168 164 102 +111 62 63 100 83 63 66 95 70 78 83 87 +70 58 129 134 77 111 110 141 103 154 159 92 +70 83 77 75 78 104 78 83 114 135 92 68 +76 84 108 100 92 59 78 158 89 84 108 121 +120 135 126 161 143 147 140 169 104 138 83 77 +160 140 79 147 123 129 121 51 42 57 72 86 +95 99 124 140 86 62 83 74 83 69 65 123 +75 56 74 78 69 65 62 67 69 65 133 136 +76 58 82 82 58 86 77 80 73 77 133 73 +87 118 174 155 87 109 125 130 94 83 83 74 +113 133 121 168 171 196 186 187 171 109 87 133 +165 170 182 176 199 189 167 209 197 140 116 147 +123 84 72 97 69 85 68 98 85 124 157 174 +186 178 170 160 167 144 90 107 144 174 141 184 +146 114 160 160 119 171 197 181 127 79 103 178 +207 176 145 148 133 144 139 89 75 119 137 116 +87 78 77 78 73 75 85 79 73 97 113 104 +133 135 75 63 52 76 68 68 111 86 78 70 +92 87 90 88 76 93 74 104 109 125 171 102 +139 140 82 85 67 77 68 76 79 77 92 88 +87 64 58 69 64 75 66 56 76 64 58 74 +73 72 67 67 62 64 55 48 82 65 88 89 +68 85 116 124 96 106 75 83 134 109 84 78 +68 73 76 75 68 64 60 53 65 96 143 118 +64 59 62 56 64 126 66 60 56 67 167 206 +153 63 57 68 76 62 67 55 54 54 69 69 +84 110 82 73 90 93 174 212 198 166 60 51 +64 76 64 49 58 68 97 131 120 151 182 190 +188 177 121 88 103 119 111 115 92 79 105 99 +144 118 93 155 84 84 134 199 190 151 154 135 +175 184 201 220 201 215 207 182 172 215 219 176 +119 111 159 190 213 212 219 175 161 130 113 95 +144 174 158 127 119 166 206 198 170 179 167 117 +159 218 237 213 197 212 201 131 114 92 104 95 +70 62 64 129 150 130 118 150 +60 84 121 114 +108 88 49 110 169 178 75 87 158 115 125 110 +124 60 70 119 88 48 62 138 201 192 100 98 +99 172 159 185 175 148 98 124 149 118 174 123 +184 212 218 215 194 177 187 198 166 93 127 196 +187 169 199 170 72 84 130 133 117 121 111 143 +95 159 169 185 217 209 198 136 131 138 106 87 +155 187 114 77 123 182 227 221 191 140 187 157 +73 64 111 169 169 104 107 113 140 143 107 73 +72 53 54 60 60 80 77 174 164 68 93 166 +106 84 84 165 134 82 146 167 76 76 67 73 +107 110 98 87 116 104 85 67 155 115 130 88 +48 58 74 138 113 75 113 178 131 167 125 126 +95 136 115 162 96 121 44 82 124 90 76 87 +105 119 116 125 105 63 78 94 57 97 116 140 +88 78 123 67 63 109 85 150 94 76 102 54 +62 64 65 48 51 86 86 127 105 58 67 63 +75 97 77 94 119 102 119 67 51 48 103 108 +106 82 117 103 109 149 147 175 116 66 109 97 +161 139 80 157 188 134 134 153 188 192 206 145 +180 169 159 222 184 160 191 182 166 146 154 182 +154 131 92 161 100 79 86 148 190 188 151 167 +158 139 156 179 167 165 135 141 136 134 159 209 +162 121 156 151 107 75 85 176 157 138 143 180 +155 143 111 73 113 110 94 109 85 92 87 84 +82 69 88 85 99 97 73 96 78 82 46 59 +56 60 77 82 94 113 126 93 86 96 120 138 +119 95 105 125 120 97 109 94 130 108 107 121 +120 121 160 108 155 100 66 82 74 66 80 67 +69 64 48 49 76 78 69 73 65 66 64 84 +92 83 65 88 76 87 64 60 60 48 63 72 +73 78 125 156 175 121 72 65 82 82 117 125 +62 59 79 69 72 93 57 64 54 45 57 44 +59 138 80 55 64 59 75 74 47 48 74 67 +70 135 95 47 65 62 65 79 70 89 88 70 +83 51 59 62 54 64 57 94 119 96 83 104 +97 75 149 140 80 73 57 75 93 107 149 188 +178 171 154 115 86 105 103 128 125 114 174 144 +106 121 150 125 108 124 108 123 133 198 212 187 +209 216 218 222 228 219 178 174 198 226 215 215 +216 201 172 127 76 97 63 89 160 166 200 222 +226 226 210 202 210 192 194 215 227 217 172 126 +141 138 97 150 177 149 135 102 85 145 151 108 +83 72 96 119 +64 74 73 135 165 145 109 44 +84 146 166 123 95 144 87 87 153 140 83 46 +78 55 75 75 180 215 168 127 128 105 153 159 +174 187 145 73 147 211 197 179 114 176 221 188 +180 154 150 185 220 215 166 108 196 209 182 206 +178 115 87 180 213 213 187 168 131 120 197 186 +206 190 208 184 107 148 134 64 64 118 109 106 +80 103 133 187 180 139 104 162 144 66 103 83 +78 67 74 79 111 170 169 102 62 46 52 64 +66 72 78 87 167 99 98 131 106 63 56 76 +141 87 79 99 134 147 141 170 114 126 140 118 +70 67 76 78 79 88 116 87 63 56 70 123 +141 106 98 77 69 88 76 74 76 65 78 130 +124 72 52 70 53 55 58 52 78 120 119 138 +119 73 73 117 114 164 69 123 109 93 126 96 +69 89 68 70 103 76 84 67 56 56 68 137 +85 94 113 70 65 63 67 54 58 51 55 76 +82 76 104 54 59 43 39 47 60 57 73 107 +76 137 147 153 185 140 139 117 82 88 102 190 +201 147 201 151 134 126 160 151 172 144 148 187 +121 185 233 215 154 162 184 133 167 156 110 97 +82 83 72 80 98 106 66 126 104 82 80 114 +95 161 201 129 158 178 160 191 218 208 167 128 +147 145 134 185 170 107 102 136 136 116 84 139 +139 87 84 83 90 67 88 77 63 73 75 78 +78 80 90 79 66 68 67 57 97 90 66 80 +113 147 144 128 179 136 139 128 115 72 70 85 +66 68 120 120 76 67 59 80 96 146 99 77 +97 99 96 77 86 83 88 90 63 63 77 72 +69 77 85 83 78 75 89 88 96 96 73 96 +93 78 74 79 64 53 62 59 64 74 76 94 +73 68 93 114 64 73 77 68 96 103 69 80 +65 88 82 60 72 63 51 41 73 63 44 65 +44 51 64 60 57 55 109 182 176 197 136 133 +184 191 156 98 93 159 117 70 60 78 85 80 +77 84 72 84 64 52 72 69 116 146 127 86 +63 70 137 165 197 223 218 194 130 105 88 93 +96 102 106 84 125 105 87 167 197 159 153 198 +154 175 198 205 206 222 219 159 135 190 220 206 +165 176 200 206 202 188 154 149 145 127 102 96 +154 161 116 147 200 205 208 178 191 187 139 136 +131 137 121 116 102 107 94 156 181 197 192 199 +191 167 102 102 113 96 85 104 171 182 192 171 +80 127 88 58 138 164 80 118 77 104 119 165 +82 77 103 133 148 168 123 96 49 85 134 110 +149 197 205 123 85 114 131 165 147 185 187 143 +88 140 159 207 213 189 196 213 184 100 95 159 +186 225 216 148 98 158 210 191 189 153 164 117 +102 159 190 209 212 210 189 160 153 146 172 196 +192 146 78 96 57 116 187 167 111 79 75 76 +85 89 120 73 58 42 56 72 75 67 62 53 +63 95 148 127 65 73 145 113 60 80 138 117 +67 67 66 78 82 52 54 80 110 97 53 66 +100 170 125 103 68 98 115 67 73 78 75 89 +75 102 147 75 66 70 73 108 133 115 127 72 +63 62 64 56 67 69 84 114 89 72 65 86 +52 51 65 64 109 145 135 78 72 73 78 127 +150 139 118 157 181 146 103 87 86 137 123 104 +88 95 86 72 70 65 78 119 83 96 92 65 +43 66 72 64 65 72 64 63 66 60 76 66 +94 89 68 69 56 57 79 115 92 75 109 123 +174 156 160 120 106 77 153 192 143 100 170 131 +84 60 100 134 176 134 134 149 107 134 204 209 +97 175 200 148 169 179 166 82 76 119 99 108 +120 110 86 104 98 105 92 69 70 93 104 76 +95 135 107 149 160 170 158 174 175 189 184 169 +140 121 158 159 143 88 96 131 115 77 68 60 +82 92 89 84 80 84 90 73 75 80 69 62 +72 59 94 99 85 88 98 82 85 103 118 99 +141 115 106 126 85 72 104 93 94 78 68 100 +72 72 102 93 85 94 82 92 102 88 98 92 +96 100 96 105 84 77 72 62 86 85 94 88 +72 72 80 89 95 120 102 66 66 65 88 89 +85 84 58 84 68 88 87 83 88 72 56 66 +52 67 63 79 73 78 70 63 68 72 80 74 +60 79 129 120 69 57 60 51 49 36 63 78 +57 92 168 179 136 129 126 119 154 117 53 63 +56 69 53 117 106 75 93 110 147 115 80 92 +161 176 139 88 65 59 72 63 68 105 127 171 +201 150 118 134 175 165 187 189 135 124 172 194 +172 150 184 194 162 199 208 170 185 201 218 196 +196 226 201 169 217 213 180 179 120 158 165 174 +174 172 201 178 149 167 146 113 130 177 188 160 +166 167 153 171 184 143 123 119 100 60 90 119 +136 171 182 200 196 149 104 113 109 90 123 116 +86 86 133 157 182 206 198 175 +75 126 160 52 +59 110 80 95 98 105 59 141 167 69 74 135 +143 170 129 135 139 59 128 199 208 207 200 196 +138 96 127 146 134 191 202 172 86 77 84 127 +192 222 221 232 209 164 103 144 133 188 231 225 +197 153 141 188 199 196 148 99 154 111 95 114 +168 174 210 199 180 200 179 117 186 204 199 172 +133 158 170 158 165 150 78 73 115 87 127 82 +42 56 62 63 63 66 70 70 153 186 166 110 +52 74 150 202 190 127 72 137 138 97 69 84 +70 66 57 83 131 82 68 47 67 134 119 59 +68 64 92 87 59 67 75 68 60 105 85 66 +83 83 89 103 62 79 83 82 77 72 82 70 +56 83 97 137 102 56 42 44 53 34 48 54 +48 68 83 52 59 65 77 72 82 94 66 44 +64 85 69 66 87 58 76 65 68 117 120 66 +64 57 48 42 56 65 54 47 45 56 63 73 +79 87 85 70 69 67 56 77 75 82 77 77 +74 66 55 67 83 79 62 100 104 89 143 87 +159 125 82 157 127 96 171 190 156 68 98 118 +114 126 108 94 65 128 196 191 93 185 213 143 +171 146 103 92 67 90 98 99 85 130 98 136 +140 130 120 87 126 137 78 126 99 120 113 80 +90 111 117 108 121 145 139 126 121 93 119 146 +160 145 180 182 127 83 64 80 82 85 98 72 +86 78 97 102 82 79 84 64 56 59 67 64 +106 92 103 93 72 72 93 64 64 94 83 86 +113 89 90 102 84 90 82 86 87 82 77 59 +94 72 88 72 59 88 78 76 114 125 113 105 +93 96 93 87 84 96 94 96 80 69 96 87 +90 96 86 83 68 75 84 106 107 93 123 88 +79 57 75 67 51 79 63 46 55 65 73 73 +74 78 77 68 62 86 68 66 75 65 68 70 +57 65 58 66 66 67 69 94 116 48 67 79 +84 136 125 62 85 128 109 160 167 102 103 133 +155 151 117 84 94 136 181 218 228 202 168 82 +83 69 89 77 68 70 75 129 80 74 133 197 +215 223 205 160 165 180 169 199 176 140 108 118 +176 217 212 177 130 166 189 168 182 154 168 195 +199 157 182 195 196 151 134 189 205 202 174 175 +204 220 218 229 225 182 111 102 84 86 117 93 +76 78 78 76 127 105 88 167 216 226 198 169 +119 145 179 115 119 146 114 88 83 92 109 82 +98 87 72 115 +68 88 120 51 55 86 108 54 +58 82 64 60 176 189 88 147 139 126 194 154 +170 168 86 116 191 205 212 204 180 145 99 79 +123 123 182 206 143 100 74 144 177 178 166 204 +213 205 191 195 200 133 168 216 205 187 161 137 +149 182 186 98 102 93 96 123 150 179 186 194 +198 211 225 196 198 162 169 182 160 149 148 137 +164 116 47 66 66 95 75 51 43 31 35 58 +109 68 73 72 78 139 195 199 177 109 75 89 +161 167 99 62 140 182 87 189 205 184 60 54 +79 110 79 58 60 86 116 85 72 67 79 93 +67 51 79 89 92 64 78 96 58 64 69 66 +52 55 79 63 73 97 80 99 69 104 98 118 +84 79 104 63 66 56 52 64 36 54 56 67 +57 79 74 59 77 78 47 52 49 56 58 59 +72 75 83 102 96 86 97 85 66 99 51 49 +51 51 57 64 84 68 84 92 75 92 59 58 +58 56 69 69 78 74 76 94 89 77 66 64 +73 92 104 116 93 127 86 79 157 164 67 105 +136 102 110 139 121 136 131 126 93 109 92 66 +68 115 180 187 190 207 186 140 123 134 77 63 +77 66 62 72 60 49 65 48 62 88 146 139 +160 182 131 74 76 96 98 77 118 136 141 109 +74 76 115 96 94 77 92 88 84 115 126 119 +89 87 74 73 89 84 84 76 83 84 83 90 +87 93 89 65 72 87 118 128 120 94 89 75 +94 94 107 77 90 74 82 97 78 113 115 107 +79 68 82 60 65 69 56 70 60 67 58 67 +66 63 83 82 121 119 111 87 76 92 124 82 +79 86 95 97 93 97 86 95 87 89 88 76 +75 57 66 70 72 73 88 89 67 67 53 58 +85 75 65 56 74 95 126 94 79 75 57 80 +62 63 72 57 64 65 49 65 67 60 66 156 +167 104 166 179 147 83 87 118 121 108 86 58 +46 54 65 55 70 79 72 70 62 67 64 60 +88 68 80 115 128 119 104 128 94 94 156 165 +131 108 68 68 86 89 92 104 118 109 146 196 +212 185 207 185 167 164 131 131 177 171 166 120 +146 202 200 210 222 206 150 94 133 134 135 134 +162 186 168 141 97 86 108 128 153 159 168 182 +190 167 184 199 207 216 185 169 147 80 87 159 +144 66 128 149 147 130 148 125 151 213 159 104 +68 60 62 60 76 123 151 159 149 159 196 168 +73 79 75 98 106 76 176 160 39 73 60 51 +82 172 199 134 194 196 175 196 165 185 172 89 +119 153 188 209 226 174 104 107 59 76 92 96 +116 111 121 79 156 208 188 139 137 137 143 212 +236 202 144 205 216 138 110 151 141 137 181 175 +102 134 94 87 109 158 215 230 217 206 206 160 +114 166 177 133 127 135 82 68 88 90 52 44 +66 127 138 99 53 43 53 54 137 176 159 80 +62 66 64 109 194 195 195 188 125 66 60 62 +76 78 64 80 125 133 72 53 94 51 58 60 +48 77 88 73 65 63 69 88 115 106 84 100 +87 74 76 88 72 74 74 70 74 67 63 76 +93 126 84 68 76 67 72 55 67 68 85 85 +74 72 75 62 70 54 44 67 59 77 64 70 +57 48 44 34 48 51 44 59 55 60 69 90 +73 73 75 87 82 84 64 52 43 54 49 44 +52 57 80 79 69 77 79 54 59 56 57 57 +57 64 82 75 85 78 93 79 73 109 113 105 +116 167 164 157 169 170 102 95 111 141 137 156 +149 137 141 167 128 109 99 96 73 82 97 129 +156 187 160 104 97 94 128 154 128 83 88 87 +55 53 36 38 49 73 127 110 83 110 116 85 +80 80 80 94 126 116 129 92 84 105 92 88 +95 88 82 99 103 93 90 84 84 70 62 66 +83 97 73 80 87 66 90 80 77 69 72 73 +80 84 88 84 74 64 77 69 82 113 102 106 +86 88 84 85 72 76 104 74 75 84 70 78 +73 66 75 63 53 64 56 54 65 70 59 93 +73 83 84 74 75 77 65 73 94 77 86 93 +69 78 85 87 95 80 76 74 78 66 49 58 +55 56 66 67 64 79 108 82 103 95 80 85 +75 68 72 87 108 162 89 78 62 64 73 87 +78 90 154 147 63 65 66 48 74 48 79 72 +52 78 76 55 62 51 67 83 79 65 64 85 +99 147 182 191 162 120 74 74 89 63 47 85 +58 63 98 172 151 103 108 102 95 144 106 115 +186 148 108 165 181 197 211 178 136 114 141 135 +113 123 110 166 190 160 157 185 181 177 204 199 +164 115 126 181 205 192 143 100 147 134 117 117 +127 135 74 110 167 129 151 169 182 168 201 190 +140 119 85 86 72 128 169 129 87 98 120 184 +199 194 178 177 134 120 75 124 182 181 200 204 +196 168 133 150 181 187 160 92 +47 59 70 90 +114 102 129 187 123 90 58 83 99 73 156 202 +141 197 220 218 182 200 206 113 95 89 169 164 +184 216 205 185 171 94 153 118 64 88 109 131 +89 115 194 199 134 143 188 120 154 187 189 162 +204 176 179 155 185 125 115 110 127 135 165 155 +169 192 168 191 206 204 185 120 98 89 129 162 +146 136 79 77 129 178 180 166 115 83 155 196 +209 181 107 52 51 88 127 107 73 70 65 63 +80 90 89 159 185 162 76 62 87 59 59 62 +57 63 59 59 52 49 79 59 64 67 86 73 +66 58 70 66 73 82 84 60 67 58 62 58 +58 69 57 62 69 73 72 89 106 147 89 75 +77 66 62 51 44 73 76 58 69 60 49 48 +49 48 58 56 63 57 60 74 77 49 58 67 +41 63 59 43 56 58 70 86 90 73 87 88 +75 92 83 76 69 56 60 54 58 72 87 74 +76 67 73 63 46 36 46 60 46 55 83 77 +90 85 75 99 84 76 78 85 118 161 151 103 +106 166 171 181 161 194 184 140 144 92 99 60 +66 65 57 108 76 118 93 84 82 94 74 70 +88 80 121 156 177 116 90 113 86 68 70 49 +46 59 65 110 130 114 136 140 154 118 156 153 +124 109 107 87 75 100 94 87 110 78 88 95 +70 82 67 90 75 72 68 75 80 77 78 73 +79 69 79 88 84 79 82 83 93 92 87 79 +115 113 79 88 86 77 103 119 94 97 115 89 +80 92 105 86 67 68 74 68 82 86 65 53 +65 46 44 57 63 75 63 60 70 65 62 68 +69 67 68 78 77 84 79 75 77 73 92 84 +75 70 80 87 68 78 63 69 74 85 74 73 +74 89 110 95 92 114 85 56 72 66 67 60 +66 99 69 97 76 119 105 64 80 72 87 92 +74 76 56 84 70 62 56 69 76 48 69 72 +58 78 73 96 78 49 53 58 52 60 85 89 +84 80 63 67 75 57 66 62 77 63 76 170 +213 172 95 104 86 123 146 128 133 110 109 77 +67 79 72 76 79 85 126 167 151 164 141 137 +172 208 191 150 146 111 128 102 121 144 206 198 +145 102 80 96 103 180 204 199 196 141 166 177 +165 172 213 205 155 149 120 138 102 86 108 108 +156 176 180 137 83 149 190 167 157 182 216 206 +111 96 97 148 181 182 165 124 114 97 133 148 +141 135 136 134 +52 33 59 70 93 72 65 96 +107 135 100 76 143 146 92 105 78 95 148 161 +198 199 196 125 58 74 125 202 159 138 174 164 +208 177 191 206 116 72 65 104 130 115 106 190 +204 94 160 184 102 75 86 86 144 198 155 119 +110 168 202 169 87 78 136 192 189 160 175 191 +185 139 121 98 67 62 68 110 115 149 159 135 +146 120 154 179 194 178 124 111 164 196 181 96 +64 69 55 44 48 54 51 47 74 73 104 64 +70 121 119 96 156 140 52 60 87 93 65 55 +63 60 76 60 58 68 73 68 59 53 65 63 +63 96 102 59 60 57 66 95 80 125 125 74 +72 66 80 86 84 80 69 65 77 72 62 59 +68 73 74 79 73 64 69 70 65 68 65 62 +67 47 60 60 60 64 55 63 65 54 57 55 +52 60 69 66 88 83 84 72 69 74 74 75 +66 62 77 57 68 78 70 78 69 80 73 68 +63 54 63 58 60 72 66 64 63 83 64 72 +69 67 95 89 93 92 69 85 109 172 161 205 +151 134 111 54 48 44 76 106 68 103 93 59 +77 80 84 82 65 55 63 76 74 89 116 175 +179 78 62 74 45 43 54 49 46 96 98 93 +149 165 187 174 130 168 192 167 145 121 82 85 +95 90 84 68 79 73 68 69 84 83 66 78 +73 70 75 83 83 78 64 67 64 57 63 68 +73 72 77 63 87 97 87 90 82 85 75 75 +87 77 80 82 109 77 78 86 82 120 69 74 +77 76 79 84 68 65 67 67 57 66 46 64 +84 52 76 63 55 80 64 68 60 64 75 77 +80 84 87 74 75 72 82 77 72 74 77 66 +77 76 84 87 88 97 51 73 57 59 80 73 +85 66 60 56 69 70 52 59 72 66 62 92 +113 158 159 85 60 82 51 54 75 66 65 67 +88 54 69 52 38 72 57 65 69 52 64 60 +73 63 55 56 63 68 63 74 73 55 75 64 +56 78 54 57 80 72 64 86 120 121 83 67 +65 85 66 79 78 80 65 80 73 90 137 180 +179 194 196 188 223 219 192 201 207 169 138 119 +162 190 170 144 149 137 113 89 103 111 126 150 +186 219 220 208 188 179 165 204 213 206 216 215 +215 206 189 106 88 86 123 161 198 147 113 87 +93 120 121 134 147 190 194 99 76 103 104 69 +83 94 88 69 63 99 120 137 140 166 119 79 +96 47 80 105 162 96 51 63 54 85 111 65 +66 77 131 118 78 64 137 154 98 155 199 202 +82 56 69 134 204 207 190 185 115 120 177 215 +174 146 93 73 78 170 195 181 198 157 102 138 +205 159 155 196 128 154 140 117 146 160 196 194 +149 156 139 153 180 161 110 96 107 111 118 115 +75 60 69 58 63 93 121 160 167 137 115 98 +115 79 74 83 92 111 92 78 83 102 80 60 +65 65 98 116 84 85 165 170 123 51 52 76 +109 158 129 43 64 131 169 124 54 88 73 136 +144 74 78 58 60 65 67 130 85 62 60 63 +56 62 77 79 84 102 85 72 55 49 69 60 +59 68 84 80 67 63 73 52 62 89 74 66 +60 55 88 94 83 67 68 64 82 77 73 88 +88 86 67 58 53 56 51 60 60 58 64 59 +60 74 85 62 72 64 73 84 74 74 75 68 +74 78 76 75 82 59 74 74 62 56 52 63 +68 59 70 63 74 59 58 62 63 73 86 95 +87 79 103 60 93 117 87 88 74 83 73 77 +72 79 165 149 144 127 88 64 52 60 66 68 +64 88 109 87 96 114 73 92 86 68 57 49 +49 60 94 103 128 155 187 157 146 171 157 103 +83 105 116 123 114 70 82 78 74 84 63 63 +84 68 60 77 85 65 86 70 69 65 62 77 +67 72 75 78 59 58 73 89 119 87 74 79 +70 90 79 76 80 62 85 66 79 83 64 72 +84 80 90 84 74 66 68 67 74 82 70 82 +60 79 85 68 72 67 65 52 84 86 51 63 +60 70 75 56 56 68 60 75 79 70 56 84 +59 84 128 72 72 58 56 69 62 67 69 87 +67 62 76 82 79 55 70 77 63 77 66 59 +54 76 78 67 70 51 52 73 80 62 60 63 +76 69 68 54 57 67 60 62 96 78 57 69 +57 56 75 68 80 54 55 56 80 75 68 79 +64 57 66 70 57 55 51 66 67 57 48 67 +65 82 74 63 99 116 74 80 89 165 189 176 +127 182 196 178 186 197 210 188 165 141 155 151 +141 138 105 87 136 115 104 107 151 185 159 140 +105 110 158 202 215 192 153 182 196 181 155 115 +159 213 223 202 201 233 246 228 180 147 123 98 +140 164 188 201 160 94 92 82 89 175 187 134 +165 167 102 76 104 113 95 85 116 108 102 136 +136 175 212 157 73 104 147 143 +69 87 138 196 +121 161 75 49 80 53 52 113 108 102 123 110 +139 172 137 168 168 145 131 200 204 125 57 84 +116 195 226 218 199 109 111 187 194 176 125 85 +74 96 178 190 194 197 166 137 199 218 182 169 +153 146 160 94 124 184 223 238 213 175 191 177 +153 197 216 179 78 67 66 65 77 105 87 109 +100 171 217 228 222 207 146 156 107 103 158 175 +118 77 55 70 102 68 103 100 107 86 162 204 +198 194 126 88 100 60 59 38 45 73 89 68 +82 64 98 154 131 58 58 53 82 89 68 68 +59 56 57 103 80 54 62 85 146 118 68 69 +65 74 69 67 57 55 56 52 62 58 60 66 +60 74 72 62 79 68 67 60 58 53 60 75 +69 65 67 67 72 67 89 129 94 77 60 75 +54 54 60 62 56 46 47 66 67 65 79 86 +69 92 87 70 68 52 72 66 59 58 84 58 +67 86 66 60 69 51 44 49 58 62 59 52 +69 74 64 69 76 70 76 66 83 85 90 63 +73 69 70 85 85 88 85 86 111 153 147 125 +116 96 66 82 58 69 72 64 114 124 135 98 +106 146 66 66 79 80 54 64 65 72 80 72 +72 116 160 186 159 115 117 88 92 78 108 103 +69 63 69 85 70 82 82 64 82 58 72 59 +58 77 66 83 67 76 79 62 74 59 72 79 +73 78 75 89 80 85 89 80 105 111 86 79 +79 74 82 85 76 84 92 74 93 85 79 84 +76 70 64 80 77 74 89 73 66 64 62 62 +58 63 55 53 51 56 64 60 65 59 53 51 +43 46 55 57 37 54 53 54 52 60 114 78 +68 68 69 63 62 77 57 60 85 72 80 133 +153 99 108 80 89 86 82 83 82 74 84 70 +59 64 57 59 64 64 54 52 83 70 78 57 +56 63 56 60 133 113 66 64 62 54 70 69 +76 68 59 64 78 88 72 65 72 55 67 77 +63 85 63 68 59 76 117 161 199 181 149 108 +123 138 162 172 168 188 194 212 180 168 205 237 +235 216 200 160 108 96 125 80 99 175 194 188 +174 136 184 218 189 154 158 143 164 223 219 221 +218 182 153 189 135 93 162 213 205 189 198 231 +246 245 225 228 211 192 174 199 215 213 198 160 +84 63 89 146 170 184 196 178 141 113 144 115 +119 114 115 160 161 169 166 148 149 177 174 169 +195 207 126 95 +52 74 157 213 125 195 180 141 +174 63 49 75 105 108 111 102 60 158 186 123 +129 191 147 108 194 191 153 85 83 76 145 196 +187 182 165 129 139 205 194 171 121 92 76 162 +190 154 198 175 130 164 213 201 195 210 184 123 +94 90 96 178 196 227 223 221 219 208 179 146 +126 174 155 105 111 143 154 170 117 111 167 172 +148 147 133 107 77 63 72 90 88 84 89 97 +115 158 105 108 59 52 69 93 82 125 130 125 +121 113 58 42 55 68 54 55 63 66 82 66 +85 82 82 88 72 76 56 60 70 63 58 88 +98 97 64 67 75 68 57 53 49 57 63 53 +52 48 47 54 39 47 64 60 62 62 84 116 +83 76 62 72 57 51 65 63 64 69 67 65 +77 62 64 75 60 55 45 49 75 82 57 80 +52 67 65 73 64 77 63 69 63 77 76 82 +69 68 75 67 78 75 72 62 56 53 57 55 +56 69 78 73 74 59 57 68 63 70 76 67 +75 56 63 52 57 66 78 104 72 73 70 57 +76 66 65 105 113 95 110 128 98 124 111 75 +58 49 65 62 49 68 64 85 79 73 85 75 +69 59 94 105 66 70 84 83 74 87 103 105 +136 115 74 92 80 69 74 66 65 86 75 65 +76 62 64 97 80 88 76 67 68 53 73 56 +87 73 66 67 54 80 62 69 76 63 76 87 +73 70 76 79 73 87 51 63 65 62 63 63 +49 66 69 62 79 94 88 75 64 47 67 64 +60 51 56 52 54 63 73 57 45 53 74 46 +64 67 65 57 57 52 58 54 45 51 38 34 +42 33 43 35 29 46 58 63 60 57 66 88 +82 69 64 70 70 76 64 60 78 74 67 59 +79 56 67 70 72 78 74 128 99 68 83 105 +106 83 74 70 62 68 72 63 62 117 104 53 +139 170 100 86 73 89 70 58 87 79 72 89 +87 69 53 63 51 64 69 64 99 65 83 143 +153 167 182 175 176 182 171 151 162 172 189 176 +199 196 162 123 167 206 222 190 147 178 179 164 +162 169 189 144 155 165 196 210 204 230 226 215 +208 180 138 180 199 205 172 150 144 125 115 135 +146 126 176 190 137 199 229 215 185 171 129 168 +192 209 233 219 215 170 95 84 98 151 190 177 +176 208 151 130 123 144 131 107 90 109 118 156 +172 141 116 129 109 134 175 194 187 129 79 114 +57 93 96 200 124 137 199 165 168 166 56 60 +126 96 76 73 69 66 164 195 136 103 105 75 +141 145 151 117 115 97 85 92 111 144 165 201 +182 148 175 166 181 154 115 93 174 187 119 145 +187 157 134 175 159 141 174 195 147 106 116 196 +199 168 186 216 181 138 157 126 77 82 96 86 +77 72 93 143 194 219 213 218 220 171 114 74 +74 85 80 121 133 138 160 175 165 197 196 176 +92 53 47 55 57 53 58 65 94 73 62 38 +53 51 64 46 53 46 62 68 80 56 55 65 +64 62 75 75 67 64 53 63 69 92 60 77 +43 45 59 52 59 59 47 57 64 63 69 63 +52 55 60 67 73 57 108 106 57 64 64 58 +54 55 51 53 49 62 66 56 48 56 63 57 +65 54 44 48 46 52 60 68 54 69 66 56 +79 70 60 72 76 74 67 57 55 69 75 62 +66 66 68 57 66 54 68 67 66 70 67 58 +49 57 64 70 76 55 58 70 45 53 48 55 +88 123 79 88 75 82 97 78 62 86 69 76 +68 87 106 88 138 182 170 117 100 83 85 77 +86 88 83 72 118 108 58 97 77 83 84 94 +87 66 67 63 94 109 83 117 94 82 56 89 +126 89 63 76 62 54 63 76 64 72 83 75 +83 74 62 65 53 58 69 57 48 77 64 57 +69 52 59 64 58 68 73 69 65 82 59 44 +55 52 52 45 48 58 60 45 46 47 53 36 +47 69 76 68 62 60 62 79 79 64 58 60 +45 54 53 60 72 57 51 46 51 57 64 59 +67 57 62 52 54 45 47 44 41 41 39 46 +48 51 70 66 60 60 57 69 47 60 60 62 +60 53 76 56 45 53 54 62 54 72 76 70 +69 84 133 188 82 57 54 72 78 106 85 65 +67 60 51 57 72 94 130 99 72 125 67 63 +77 55 65 73 59 69 52 77 90 67 60 69 +78 77 83 106 68 92 67 84 84 83 123 94 +78 88 93 54 51 63 113 123 128 162 184 194 +179 175 153 165 197 212 207 205 186 133 98 52 +72 100 131 181 170 167 164 162 221 223 197 201 +164 114 82 82 149 131 96 96 109 160 184 187 +171 179 198 149 164 204 221 227 230 206 166 165 +133 95 127 147 216 227 189 176 141 159 171 172 +148 148 127 134 121 123 115 120 137 155 145 145 +196 213 210 140 64 63 53 74 +72 88 64 192 +166 116 192 166 160 185 128 70 144 127 66 66 +66 102 172 150 185 140 75 86 78 90 60 103 +113 157 138 128 149 141 176 167 219 208 197 127 +144 176 199 153 182 225 205 124 145 126 67 79 +121 157 188 180 162 188 158 144 189 191 134 118 +133 136 148 170 131 92 120 98 121 160 162 154 +97 111 115 115 111 129 161 150 117 107 72 63 +74 118 110 103 73 60 86 134 79 56 39 51 +52 58 70 98 90 53 58 52 51 69 64 63 +56 51 56 66 52 46 68 59 60 63 67 85 +62 66 64 69 57 69 72 57 53 45 59 70 +87 69 65 60 54 52 55 67 72 56 64 55 +60 63 62 55 48 48 52 52 55 54 56 55 +63 88 59 68 76 67 68 52 67 70 41 64 +54 49 63 70 70 52 55 60 72 69 66 73 +67 75 78 70 70 84 65 77 83 80 80 80 +65 77 67 64 69 57 72 73 69 58 79 77 +66 84 70 62 69 51 64 89 131 169 127 100 +98 76 74 56 78 70 87 78 75 75 64 165 +189 175 139 98 115 65 69 59 98 94 80 92 +74 62 68 72 72 86 74 67 67 62 67 62 +55 73 65 97 100 69 62 83 75 73 82 73 +66 68 57 67 82 68 82 121 87 92 80 83 +76 77 49 55 66 57 68 70 57 62 68 54 +62 72 51 60 55 58 69 58 44 46 45 46 +55 59 58 60 58 62 65 53 56 68 70 62 +51 55 67 86 77 69 55 56 55 53 60 70 +68 83 109 123 111 113 120 92 97 103 114 115 +67 92 78 76 79 56 55 46 47 56 43 56 +52 49 52 45 55 56 52 48 59 56 47 65 +52 54 69 80 83 70 66 82 64 73 135 165 +64 55 65 53 77 89 83 98 76 67 68 68 +53 54 49 59 70 83 75 79 56 64 69 80 +76 80 73 64 87 68 68 72 72 69 70 73 +57 69 93 113 78 76 124 95 75 89 77 69 +59 54 103 130 126 118 138 164 205 202 199 167 +179 172 111 93 60 48 68 77 127 96 73 130 +156 151 170 190 204 217 223 220 217 209 218 207 +159 134 167 180 199 199 199 150 141 176 220 213 +218 231 217 189 162 164 155 126 149 140 169 204 +201 180 165 110 158 158 130 133 177 147 157 157 +146 162 175 162 111 69 157 190 174 150 104 63 +74 66 77 66 +87 83 104 159 159 88 144 198 +124 148 174 87 106 165 83 52 43 69 166 211 +190 110 111 100 83 65 69 64 73 70 72 88 +105 144 150 104 169 210 215 200 206 153 191 217 +190 209 228 225 170 160 124 66 102 90 144 130 +160 191 200 201 143 150 176 166 158 180 148 120 +118 140 140 164 135 140 143 141 136 77 56 70 +95 155 126 62 66 75 64 51 69 92 121 105 +67 47 82 105 69 56 47 46 46 51 57 79 +77 63 96 106 65 73 63 62 57 56 64 72 +67 64 58 51 47 62 69 73 99 63 53 65 +72 70 79 87 74 67 70 86 106 74 60 67 +52 46 63 85 84 85 67 69 72 73 72 65 +49 73 58 55 51 60 57 47 53 65 65 67 +69 69 70 69 64 64 57 59 68 58 67 66 +66 83 79 67 72 68 75 65 78 70 63 54 +51 53 63 57 64 66 54 59 66 59 41 52 +45 41 58 58 82 74 75 84 73 70 78 75 +60 67 62 74 90 78 98 89 74 89 89 66 +74 77 63 69 75 55 63 87 83 83 92 97 +67 63 56 68 59 66 66 66 73 79 79 76 +74 85 82 73 63 66 60 54 49 66 69 47 +65 56 54 69 66 73 67 67 67 70 89 67 +79 79 79 120 88 84 70 79 69 58 58 38 +56 51 49 73 49 45 49 65 60 56 64 53 +42 63 58 53 45 44 66 56 63 49 92 125 +76 64 68 69 55 76 63 57 86 60 74 72 +78 114 98 129 121 120 120 120 119 119 148 158 +171 175 167 177 172 158 160 150 140 134 135 150 +167 160 116 135 120 55 72 46 57 58 46 37 +45 65 60 54 46 48 43 37 37 48 43 57 +114 156 77 86 52 69 64 65 74 70 65 79 +66 70 63 46 54 67 73 74 87 75 53 65 +53 51 70 58 48 77 67 68 74 65 57 49 +75 95 64 75 98 96 83 70 76 80 88 79 +74 90 87 115 107 136 85 78 94 88 116 129 +82 79 75 87 98 114 103 104 124 119 96 103 +102 156 180 174 127 110 72 46 79 100 115 90 +84 88 105 128 184 166 177 191 199 205 180 204 +221 219 201 176 182 204 226 223 207 221 233 238 +215 208 207 181 167 206 215 202 146 113 89 117 +111 136 143 169 184 211 211 175 154 119 104 110 +159 171 181 123 143 95 82 99 105 103 67 47 +93 145 92 124 166 85 89 117 149 105 158 130 +76 85 52 68 43 54 103 115 189 204 180 148 +69 64 148 176 118 55 66 39 48 83 117 140 +107 129 212 226 209 185 188 204 154 145 175 220 +226 219 179 82 64 76 136 192 166 110 134 209 +208 150 156 170 150 103 74 78 83 148 174 179 +170 187 191 158 184 155 108 133 140 100 110 149 +178 166 140 52 37 47 54 58 56 49 42 98 +113 108 121 127 88 63 94 133 107 56 107 151 +116 66 66 66 73 100 160 124 72 85 64 52 +82 109 107 104 106 76 58 56 62 90 74 84 +68 53 68 73 65 86 56 59 55 48 56 62 +57 70 58 65 80 117 99 107 59 63 64 59 +64 56 53 59 57 63 63 63 63 63 68 55 +56 59 42 54 52 65 62 57 53 64 63 52 +54 55 63 64 74 72 66 64 59 55 62 66 +48 55 65 52 55 72 63 51 64 49 63 65 +58 68 77 63 65 72 62 63 48 63 58 52 +59 65 64 55 69 76 56 63 72 78 76 70 +73 69 72 79 107 78 70 75 46 87 63 65 +72 74 87 86 97 75 67 100 80 77 67 65 +66 63 102 84 80 62 51 67 59 64 72 69 +79 56 55 64 65 60 53 74 74 83 100 73 +84 76 70 60 58 63 46 36 33 49 47 49 +52 49 49 47 39 60 78 76 49 58 54 66 +97 73 167 107 77 90 179 98 75 74 64 54 +46 67 67 120 110 104 98 99 129 131 131 140 +137 119 131 150 127 143 155 184 170 161 175 187 +169 172 169 158 166 153 157 162 149 153 165 156 +158 123 82 86 64 128 125 55 42 82 55 47 +65 42 56 51 42 49 59 49 52 149 133 127 +56 51 75 72 77 99 78 88 67 119 84 63 +62 57 70 75 108 79 64 73 60 53 97 123 +75 58 72 92 83 89 69 65 73 87 72 62 +87 98 147 89 72 72 90 94 83 87 87 83 +108 78 121 131 94 109 133 160 144 169 119 74 +104 98 135 133 185 190 191 154 128 170 171 187 +172 166 139 144 139 118 143 204 188 179 197 195 +191 138 115 161 216 228 194 156 150 138 143 113 +148 200 215 196 199 145 170 166 117 151 137 137 +137 103 111 95 86 119 100 105 104 130 149 191 +190 199 198 202 185 187 208 219 170 115 79 85 +83 68 120 106 143 94 64 69 +72 98 149 110 +119 80 108 87 102 82 66 109 96 120 83 46 +53 31 136 159 188 155 194 197 149 109 110 170 +190 105 131 148 63 60 67 144 185 161 100 130 +186 199 197 216 227 216 174 138 171 199 196 204 +167 110 78 97 188 199 181 185 184 202 147 154 +197 202 178 172 139 90 65 94 139 166 135 98 +74 63 76 67 73 59 67 90 65 69 57 47 +49 55 51 56 113 105 137 194 186 170 147 100 +62 46 139 197 171 107 104 58 49 78 78 70 +85 120 148 103 63 51 65 79 127 121 62 44 +53 51 54 70 100 165 83 110 94 58 52 69 +55 62 73 84 63 57 46 48 68 55 58 67 +69 67 73 65 56 57 46 60 59 57 56 56 +57 59 65 62 69 51 63 66 64 53 51 46 +45 55 51 54 52 42 56 47 56 62 54 53 +58 73 68 76 65 49 52 45 45 64 73 72 +65 73 48 54 67 59 58 60 64 54 56 65 +103 115 73 59 68 68 56 52 62 73 69 75 +67 77 74 54 68 76 85 73 68 62 44 57 +57 52 60 64 74 69 84 82 72 85 94 136 +85 66 78 75 83 88 84 78 77 64 72 59 +70 70 64 48 66 64 69 65 58 52 70 62 +46 54 74 60 98 93 106 109 89 110 82 53 +53 73 58 42 52 37 43 52 39 39 35 37 +73 67 51 78 89 175 111 156 117 161 172 93 +125 137 73 62 53 49 58 48 55 65 93 169 +105 107 116 126 117 129 141 131 104 113 106 137 +143 166 174 176 184 180 184 179 177 179 181 176 +164 154 162 145 117 115 145 155 151 150 102 127 +89 146 175 151 68 55 52 44 63 64 56 64 +47 45 83 43 89 94 95 54 45 75 59 86 +82 117 100 78 68 140 113 75 56 54 72 74 +99 83 73 52 67 70 86 129 85 72 74 62 +67 87 94 100 115 83 76 82 73 73 69 79 +110 93 86 89 123 92 127 172 140 99 133 148 +109 113 133 137 109 168 141 146 141 140 146 131 +128 90 97 127 181 161 125 157 134 114 166 169 +170 196 208 212 153 170 189 170 196 220 229 229 +209 160 157 104 123 96 119 146 174 181 167 143 +153 145 110 144 202 201 206 181 134 117 90 155 +128 84 99 77 90 108 141 136 102 151 179 181 +168 175 135 119 114 94 123 95 89 162 179 174 +130 68 82 82 +137 67 78 96 62 54 92 151 +111 100 57 59 124 123 133 83 56 55 70 147 +200 208 177 130 195 187 191 111 160 181 147 202 +213 169 94 75 116 200 200 141 115 90 160 191 +209 199 215 171 126 110 123 138 153 150 74 83 +131 119 188 192 145 196 195 153 119 169 196 206 +169 148 160 162 197 199 171 133 94 124 93 86 +88 67 70 62 60 90 121 53 67 95 95 114 +111 87 62 47 59 93 145 88 62 70 88 98 +123 178 157 60 62 43 60 63 57 62 74 68 +69 52 54 47 42 47 65 42 39 56 58 68 +84 92 59 72 49 48 70 74 65 64 67 66 +62 65 73 79 64 57 62 69 74 63 64 70 +65 59 62 58 75 69 58 57 65 44 49 46 +47 52 43 43 49 51 46 45 60 36 41 47 +47 38 32 26 38 49 54 44 47 41 41 49 +55 46 43 38 43 47 55 64 74 58 51 68 +54 58 59 68 57 60 64 62 143 136 63 64 +69 86 72 74 64 55 59 67 78 65 55 47 +48 67 67 62 79 54 58 58 45 53 59 53 +56 72 73 62 66 64 93 88 95 83 90 82 +80 83 76 89 67 63 62 41 52 52 42 57 +55 56 72 72 63 55 82 73 69 62 82 74 +78 79 80 75 72 76 58 57 53 51 70 53 +32 48 46 46 33 73 104 123 103 74 97 105 +169 161 134 121 150 192 171 92 124 133 85 63 +59 48 42 63 67 72 161 133 98 123 121 128 +136 154 143 137 126 109 134 154 169 181 167 166 +161 161 155 157 166 164 177 180 170 161 155 143 +126 127 139 151 151 141 134 129 119 96 178 205 +133 45 51 48 39 51 59 52 45 54 66 77 +105 118 117 65 57 57 67 59 86 89 68 82 +47 62 74 67 58 60 63 62 86 67 76 75 +68 70 89 74 75 72 73 83 77 66 89 107 +118 84 73 104 149 78 77 78 110 102 100 98 +174 194 201 174 206 194 147 128 162 155 162 177 +181 208 190 179 196 182 165 159 167 147 127 113 +79 55 55 66 129 191 134 120 165 198 215 197 +215 217 221 223 202 171 172 169 165 135 118 130 +190 130 121 145 169 185 181 177 176 210 221 218 +180 134 129 156 197 205 184 167 156 191 149 124 +159 170 146 113 149 166 109 136 175 209 204 192 +195 177 133 165 196 211 201 155 86 90 104 114 +58 67 114 134 57 67 52 96 157 89 100 63 +137 139 150 174 70 53 104 86 139 195 198 187 +125 157 179 192 106 168 206 164 174 220 222 205 +151 93 187 220 192 130 127 156 177 200 157 141 +135 129 130 107 88 130 82 45 70 82 125 186 +192 221 230 235 198 140 121 154 146 179 200 197 +195 165 154 161 176 213 218 221 216 189 171 154 +129 124 168 133 49 55 52 57 87 158 172 156 +89 72 72 56 63 70 62 65 59 60 69 92 +117 133 66 52 52 67 62 56 64 46 47 56 +43 45 64 53 48 73 92 70 59 74 79 72 +79 96 138 74 67 79 69 68 80 54 49 49 +64 72 76 85 65 66 65 49 48 27 37 39 +44 47 53 69 69 67 51 42 46 55 36 43 +56 56 57 42 49 41 45 49 49 37 32 33 +41 42 44 44 32 38 43 33 45 43 51 32 +49 44 52 57 51 54 43 34 37 44 51 51 +52 51 59 55 70 77 70 72 67 53 53 68 +57 55 57 64 76 83 66 67 72 73 75 65 +69 67 60 65 64 56 58 68 66 72 97 86 +80 85 106 105 141 87 115 117 170 147 107 69 +75 80 96 82 97 68 113 99 92 95 58 63 +84 60 77 89 74 82 70 77 75 74 72 63 +75 53 59 78 59 51 44 60 46 53 58 56 +67 119 115 88 109 133 159 130 151 104 151 69 +131 185 117 80 90 125 64 57 57 54 46 53 +60 105 178 115 109 130 128 143 156 150 148 147 +159 143 157 148 154 167 143 126 129 126 127 126 +131 143 154 162 164 170 157 144 150 143 149 136 +146 154 138 143 128 100 148 206 189 48 38 39 +45 43 52 43 37 49 63 64 51 68 65 66 +87 67 64 57 72 87 68 78 74 63 62 79 +86 74 96 84 68 103 86 82 88 68 85 77 +75 69 73 68 69 96 66 96 85 95 83 79 +84 72 76 80 76 77 92 87 82 95 165 185 +154 143 216 221 200 194 211 219 222 227 217 198 +219 231 232 229 196 161 107 113 138 127 141 131 +117 120 207 215 177 168 194 207 209 210 217 206 +151 105 106 84 100 111 109 79 115 126 150 160 +176 140 153 184 221 223 178 124 135 190 212 209 +185 176 204 221 207 136 129 145 172 110 89 117 +106 77 78 84 125 125 117 181 204 198 212 231 +187 129 110 76 75 99 84 105 +57 28 85 111 +103 127 118 77 90 86 86 111 98 156 149 164 +110 86 56 75 64 87 117 171 191 176 147 158 +123 115 175 217 207 121 176 211 221 211 147 161 +200 198 131 73 88 151 207 176 116 177 188 207 +171 114 139 76 65 87 128 148 127 149 191 185 +176 182 156 114 72 68 88 125 144 165 151 118 +119 170 207 196 153 164 171 168 182 174 156 84 +42 41 47 56 134 160 144 121 54 62 51 38 +47 37 47 73 68 102 148 175 164 106 52 56 +54 60 66 95 64 77 57 70 60 74 120 96 +67 69 97 75 68 77 70 87 58 104 90 65 +82 116 72 83 131 68 59 46 57 53 42 48 +59 75 88 64 51 26 39 48 46 46 49 60 +59 69 42 39 41 48 33 36 49 43 33 27 +28 46 63 62 54 52 44 35 24 35 41 33 +36 47 36 33 31 41 52 45 42 46 48 62 +53 47 43 43 38 41 46 49 48 46 37 37 +48 51 76 63 57 54 47 53 47 56 64 53 +43 60 74 57 48 62 54 62 45 37 48 51 +49 47 62 67 74 67 67 68 64 77 73 78 +90 83 82 73 119 143 188 100 88 106 126 121 +139 105 162 192 165 148 110 84 89 125 92 96 +102 80 79 67 85 78 59 68 63 55 48 35 +37 42 48 48 47 51 65 85 88 169 103 121 +108 85 161 176 150 157 145 107 180 206 143 135 +86 58 56 66 41 39 44 49 55 168 159 99 +147 116 141 154 137 157 131 136 156 164 162 158 +157 129 136 115 143 161 141 145 140 120 139 156 +164 157 158 158 157 158 148 136 159 162 155 148 +135 87 124 196 208 98 34 43 36 28 42 54 +44 32 53 68 83 79 105 133 160 196 124 73 +82 60 85 69 62 66 69 100 108 102 99 110 +96 107 85 65 62 80 83 79 64 88 87 72 +95 90 115 74 80 74 82 70 69 82 73 63 +79 77 88 74 74 121 131 119 121 84 108 138 +191 151 118 108 84 109 113 102 94 141 178 190 +131 88 94 109 110 110 169 175 154 156 146 90 +99 66 88 102 139 169 199 213 200 198 184 170 +139 120 130 181 176 181 187 191 209 201 222 230 +218 201 189 158 195 215 206 181 147 215 238 232 +217 192 202 192 147 115 114 111 94 88 44 63 +66 118 130 116 170 191 185 124 77 68 63 82 +99 109 95 66 +65 51 33 103 85 109 172 100 +92 103 110 82 126 82 133 158 93 87 102 92 +77 113 126 98 160 178 160 111 160 79 99 164 +215 206 151 88 164 198 212 202 190 169 150 118 +138 102 143 194 184 138 182 194 195 208 184 157 +95 92 105 130 155 117 113 106 133 146 195 174 +161 118 100 113 129 113 98 82 107 108 96 93 +117 205 209 155 85 45 42 96 93 60 62 62 +55 68 92 161 174 174 140 51 48 54 52 64 +56 55 66 66 69 74 145 145 66 66 60 73 +125 181 78 55 62 89 146 99 59 72 57 56 +66 62 62 64 39 34 45 73 106 147 56 63 +69 68 64 48 42 29 47 44 48 48 51 53 +58 48 52 84 74 58 51 59 79 93 100 80 +79 53 63 48 76 103 72 114 80 105 117 104 +104 85 108 90 56 48 41 53 52 47 52 48 +36 39 25 45 52 57 62 59 46 49 36 44 +55 64 65 49 53 48 54 42 42 45 73 55 +55 54 48 37 56 57 53 53 62 56 57 46 +45 62 58 59 53 51 43 48 48 51 49 54 +54 64 51 41 67 69 76 63 74 88 83 105 +116 140 161 98 99 86 135 103 149 138 134 127 +100 114 98 83 107 113 102 98 110 94 100 97 +86 93 90 65 60 51 53 51 56 46 53 60 +59 89 113 126 182 139 156 181 108 123 135 157 +113 166 120 114 161 178 158 156 73 54 62 59 +48 51 44 54 87 185 146 115 120 154 139 156 +165 153 145 169 165 167 174 153 134 113 92 68 +74 77 52 83 74 99 140 141 160 160 159 169 +166 160 153 141 146 164 162 148 110 117 102 179 +212 169 53 60 58 34 35 36 34 43 53 85 +117 92 160 128 109 143 106 92 114 76 66 89 +68 69 77 65 67 79 75 70 77 84 62 88 +83 69 65 68 72 64 73 109 110 106 130 150 +77 93 115 110 141 56 60 94 80 64 93 99 +64 129 160 116 103 89 86 95 67 74 97 120 +150 175 167 176 161 187 217 177 150 164 181 148 +138 177 198 222 216 128 90 117 151 127 165 194 +171 150 133 178 171 156 207 208 190 194 177 165 +162 212 213 218 222 181 196 189 159 188 210 211 +202 166 128 106 153 168 174 165 141 180 199 172 +151 204 177 131 96 65 67 64 79 89 108 186 +194 116 72 68 90 92 98 108 118 92 83 135 +114 41 53 114 113 82 147 134 147 60 98 67 +78 127 92 140 126 85 109 150 155 93 172 191 +164 189 184 182 164 162 68 105 139 188 206 180 +123 136 128 160 167 187 186 133 107 120 127 119 +124 171 194 205 213 184 154 158 172 161 182 123 +158 195 187 147 126 154 206 219 186 171 172 150 +158 179 195 199 195 184 164 189 165 146 115 111 +178 180 162 121 114 83 78 55 96 165 80 66 +88 109 121 45 44 41 43 51 44 49 55 85 +68 76 95 79 69 73 59 52 110 73 51 58 +53 64 56 53 59 62 60 55 58 57 68 83 +51 49 78 73 66 55 43 38 53 55 54 68 +83 23 29 35 31 43 41 37 33 36 143 171 +94 69 63 104 131 146 149 129 123 126 114 135 +145 158 161 162 145 159 151 146 140 134 157 130 +133 130 121 125 111 134 116 136 131 104 98 84 +95 79 105 94 54 60 56 54 74 80 73 114 +95 68 51 33 41 42 38 39 51 42 55 63 +58 57 57 59 63 70 67 57 65 58 64 55 +48 54 39 52 65 52 66 79 78 86 106 51 +56 95 63 66 70 64 76 79 62 83 121 77 +100 111 86 147 204 168 139 153 124 105 84 95 +117 94 88 131 93 95 92 68 59 66 67 59 +66 59 59 62 52 64 68 54 131 127 105 168 +140 104 145 90 85 124 164 136 149 119 110 136 +169 113 78 75 63 48 38 41 48 37 41 53 +141 185 113 137 124 143 151 171 167 145 147 161 +161 159 154 143 118 106 97 63 42 45 41 41 +45 53 103 136 136 156 167 162 168 157 162 150 +141 165 154 148 136 150 111 162 210 197 89 54 +56 52 48 49 37 42 63 93 187 107 158 189 +118 118 138 117 79 76 119 105 62 67 78 86 +84 79 84 66 65 88 63 63 87 54 57 85 +84 73 95 94 104 104 65 126 138 103 116 123 +148 72 66 178 175 99 62 137 156 170 134 75 +78 77 66 77 72 76 102 128 186 216 220 228 +195 184 207 177 174 187 150 100 92 90 96 104 +156 180 182 167 177 216 220 188 139 104 92 87 +86 84 90 106 97 124 128 113 139 192 207 211 +217 226 228 215 202 199 202 158 128 121 154 171 +169 145 179 175 188 207 220 210 182 154 106 70 +79 86 96 77 89 140 209 221 153 111 84 88 +87 120 106 119 93 154 162 172 +143 73 75 160 +181 118 76 114 115 90 77 95 135 124 120 118 +97 75 77 121 129 160 172 172 189 176 205 201 +192 169 96 69 121 162 198 191 172 164 141 68 +89 128 78 89 94 67 108 80 149 178 172 117 +109 136 145 143 164 202 227 218 172 127 157 179 +135 161 199 207 189 192 168 181 176 151 143 116 +93 89 102 166 100 54 94 141 147 144 128 144 +127 44 57 137 161 100 78 155 118 86 37 44 +53 46 58 67 63 146 115 78 54 60 98 59 +65 57 59 44 46 51 44 51 105 68 58 59 +68 68 76 138 62 72 53 59 62 53 73 49 +49 54 44 36 34 52 47 143 73 29 37 28 +33 42 51 44 36 76 186 151 72 76 103 119 +153 137 128 117 144 145 146 146 153 149 162 148 +147 137 145 127 110 141 108 119 140 130 133 133 +124 97 107 126 124 130 120 130 116 98 127 155 +42 35 45 51 56 103 160 133 151 74 84 49 +56 43 24 44 49 56 47 46 38 54 49 45 +49 57 63 58 69 83 73 57 53 44 42 41 +53 54 62 51 59 76 90 62 90 108 69 54 +57 102 133 161 139 174 187 139 175 156 86 67 +97 89 86 74 83 68 72 83 70 88 83 98 +100 86 75 76 80 70 68 64 62 69 66 72 +97 85 85 80 120 118 145 106 76 150 131 69 +125 139 144 133 157 106 121 145 127 88 86 66 +62 42 39 44 42 43 43 39 177 178 110 124 +148 157 162 159 171 159 151 146 155 161 153 134 +128 107 56 44 37 129 159 86 46 43 54 87 +124 133 165 174 170 178 162 155 150 156 159 139 +120 117 130 146 200 208 106 44 36 26 28 42 +49 69 72 66 141 115 113 148 141 124 167 187 +165 125 100 110 92 94 84 84 87 65 75 69 +83 65 98 110 85 83 83 108 88 111 74 86 +97 105 89 64 77 98 93 99 90 84 98 176 +172 187 164 96 77 138 155 148 141 85 72 63 +74 83 124 169 179 160 185 200 220 227 221 205 +150 103 97 97 113 151 184 198 186 182 200 213 +220 190 177 144 126 136 114 97 100 97 118 148 +194 181 178 207 228 212 181 179 166 100 100 116 +133 119 120 107 174 133 154 166 177 180 191 180 +218 226 190 115 72 60 73 59 73 107 143 170 +174 187 194 170 149 137 151 197 207 150 113 95 +74 92 100 120 +83 110 56 110 184 208 157 114 +130 153 202 153 95 126 113 120 134 75 97 138 +149 156 126 109 128 128 180 188 210 168 147 70 +78 123 171 219 225 199 164 131 76 60 62 69 +137 155 58 77 90 130 162 184 197 158 100 76 +84 113 205 236 240 222 192 178 168 179 131 146 +164 162 139 126 114 149 92 57 106 48 59 66 +56 114 165 119 75 97 100 83 103 140 190 172 +108 54 68 89 60 62 84 109 159 63 48 58 +59 48 45 41 44 47 63 48 47 80 114 57 +47 49 51 79 116 54 84 86 70 78 151 180 +109 111 67 73 68 60 68 42 35 42 39 37 +55 43 72 82 48 51 48 28 27 46 41 54 +48 133 190 105 66 99 117 145 148 138 120 146 +140 124 143 138 154 150 137 139 121 126 111 120 +85 106 105 83 107 128 131 131 120 125 125 123 +96 107 128 106 123 105 93 175 89 41 48 27 +44 87 162 158 185 170 159 189 135 149 66 52 +52 60 51 43 42 46 54 44 46 66 62 57 +56 63 69 70 70 58 63 76 62 56 62 82 +87 87 79 98 113 82 78 74 86 85 70 98 +75 103 85 64 69 62 77 70 80 87 79 105 +82 75 78 82 84 148 118 98 76 74 66 65 +49 58 47 43 56 47 55 75 67 168 139 96 +139 124 96 88 138 169 83 128 113 151 138 145 +118 118 137 92 109 76 74 73 66 59 69 75 +69 66 70 77 190 185 119 146 143 165 165 156 +174 164 149 154 160 147 154 151 108 115 74 135 +106 235 243 208 42 33 51 65 114 145 155 179 +176 160 157 153 134 149 146 113 136 148 125 144 +205 212 147 55 38 41 35 57 73 93 74 78 +59 108 124 89 104 104 140 147 153 166 107 124 +90 108 86 69 79 80 97 103 156 117 114 144 +120 57 78 72 96 134 133 117 164 94 74 125 +199 145 88 105 97 118 109 177 148 115 154 179 +133 59 83 108 140 159 176 182 166 166 170 158 +147 138 161 158 139 127 134 139 126 117 133 154 +182 165 146 165 202 223 210 199 186 155 96 85 +105 73 134 153 201 215 218 220 230 237 238 228 +223 207 185 158 156 190 151 126 74 72 127 127 +153 211 176 149 196 144 182 191 129 83 75 177 +212 208 211 219 231 227 218 220 223 210 170 131 +170 219 217 180 104 117 144 123 148 154 158 174 +97 100 138 77 99 185 213 189 143 94 168 206 +177 135 133 144 186 116 65 115 178 186 159 135 +113 160 139 99 136 144 116 170 111 88 153 200 +204 215 207 187 171 100 111 92 77 158 110 119 +94 78 66 88 167 200 212 198 164 102 113 148 +177 221 227 216 204 199 164 160 199 218 186 143 +121 166 188 127 117 74 154 150 114 107 129 167 +175 180 100 69 119 128 95 77 124 64 56 57 +55 86 119 181 100 60 79 56 58 93 55 58 +54 57 73 68 111 208 180 43 59 60 59 75 +63 78 128 76 69 78 119 107 77 85 67 100 +65 67 125 105 62 88 53 47 59 42 52 51 +45 41 52 29 27 26 37 52 47 174 171 72 +113 129 126 138 145 144 141 121 145 149 150 156 +153 128 115 99 109 94 72 73 83 103 100 96 +115 125 131 137 138 135 119 102 116 105 137 129 +124 139 103 167 168 52 56 49 54 44 69 86 +164 171 125 151 137 118 63 78 63 75 103 36 +35 31 36 42 34 38 46 38 51 60 59 74 +64 78 51 58 65 42 55 49 56 54 70 67 +70 85 111 105 74 60 65 68 55 77 84 87 +65 95 58 56 80 75 88 93 90 93 87 88 +102 107 87 104 85 77 80 70 65 70 52 56 +62 52 49 58 75 73 102 136 172 131 159 177 +170 87 88 147 98 130 143 147 125 121 123 96 +80 65 55 49 43 49 43 59 60 53 56 92 +201 170 137 144 155 158 164 156 157 157 156 156 +171 167 160 157 124 110 146 222 106 231 241 196 +56 52 51 85 129 141 151 168 162 159 149 150 +151 158 145 149 135 136 137 127 195 216 174 63 +43 34 42 58 137 186 212 99 97 121 150 135 +126 127 118 128 145 123 137 110 69 69 78 92 +82 110 140 136 130 104 116 75 93 79 67 86 +90 137 136 89 106 94 108 94 143 208 127 107 +78 84 80 113 153 105 78 92 153 167 70 144 +149 175 213 232 243 237 216 169 104 77 109 138 +159 114 108 106 146 133 109 137 88 73 110 114 +169 184 149 128 100 114 106 99 88 128 170 207 +213 202 202 195 201 154 144 166 215 187 194 194 +149 96 69 73 52 77 87 151 161 141 200 205 +192 166 127 103 121 127 96 128 174 168 191 190 +164 158 125 171 174 149 137 149 202 191 131 113 +147 190 202 199 190 207 153 98 +154 135 150 127 +93 111 198 169 187 172 95 169 198 162 127 107 +119 166 180 99 95 186 213 204 160 117 171 158 +145 105 124 165 196 178 143 137 179 202 220 192 +219 207 150 147 140 106 165 165 149 177 146 138 +140 100 156 213 196 171 175 135 151 159 155 188 +186 169 148 192 170 162 120 78 87 84 107 149 +201 182 141 117 134 155 145 99 150 129 73 70 +76 75 102 87 67 67 62 67 54 55 84 74 +45 59 54 75 56 115 140 52 57 70 48 76 +191 188 70 69 66 78 84 67 89 139 113 67 +57 64 58 62 56 59 60 100 73 60 149 102 +100 167 70 56 58 53 53 59 39 37 39 27 +26 41 35 48 75 192 149 82 131 119 146 144 +159 143 147 140 128 158 150 159 145 129 118 87 +55 37 32 36 45 51 58 82 103 116 130 143 +136 129 125 131 116 131 138 136 146 133 128 155 +172 47 41 24 34 38 54 60 98 149 141 111 +151 109 116 146 83 73 127 89 41 42 38 28 +35 45 46 55 42 54 55 52 58 49 39 47 +51 64 69 62 48 57 58 58 75 55 84 65 +74 86 72 72 77 70 80 86 67 57 79 60 +90 106 92 99 107 72 85 93 74 75 84 68 +62 80 55 51 56 54 64 73 64 73 95 87 +125 157 137 103 89 109 127 187 166 82 88 137 +147 130 121 102 84 90 86 54 54 72 51 45 +63 65 63 52 56 47 38 87 195 172 145 138 +166 166 156 155 159 155 149 159 161 164 156 119 +121 85 44 60 39 115 166 115 53 45 49 84 +134 139 153 179 171 165 161 153 149 146 162 153 +131 145 137 130 197 215 169 64 45 42 90 69 +110 168 194 73 117 167 166 144 143 133 165 168 +143 156 146 111 150 133 158 147 103 102 113 108 +84 97 70 73 83 76 118 104 134 73 80 74 +66 108 86 93 79 134 207 139 95 201 171 104 +135 200 182 94 116 139 113 110 186 161 90 110 +139 158 161 184 212 194 168 118 95 76 111 125 +118 123 109 162 172 160 150 145 94 72 118 155 +196 189 188 194 196 196 175 146 147 159 192 208 +229 216 219 213 227 221 194 143 100 86 153 138 +119 188 190 186 201 188 209 223 225 225 204 162 +150 106 90 109 67 89 148 188 196 217 204 148 +138 119 93 98 72 129 177 144 151 168 117 95 +180 131 95 127 +174 171 56 96 102 80 147 201 +156 164 150 96 175 177 106 134 105 120 201 200 +139 148 201 228 216 191 124 92 141 172 110 136 +175 196 155 182 157 204 220 190 194 215 210 195 +160 141 116 143 108 138 190 216 212 209 180 155 +212 225 213 190 159 202 204 171 138 143 146 143 +136 187 185 128 87 100 75 80 106 156 175 196 +116 150 135 78 57 76 51 54 46 48 49 51 +74 72 41 67 65 45 45 43 88 64 52 59 +123 199 118 47 44 108 77 79 120 60 55 54 +62 53 57 29 45 94 74 58 128 100 69 75 +84 62 84 88 73 82 99 67 96 129 79 113 +108 49 48 39 48 34 36 23 31 35 41 47 +140 196 128 98 125 120 135 149 158 129 136 139 +151 149 166 149 141 125 94 42 28 34 32 38 +59 84 56 52 79 94 87 110 137 141 121 121 +98 114 158 126 137 143 120 148 192 109 49 46 +47 66 67 63 73 105 160 165 116 153 113 154 +130 75 74 148 94 44 36 53 43 33 33 42 +52 44 42 46 37 36 27 52 51 63 63 65 +77 56 66 52 57 75 72 69 74 77 65 92 +100 63 82 84 78 96 63 57 63 60 67 66 +68 80 93 87 94 92 89 79 64 60 59 53 +58 65 62 60 74 69 88 115 170 109 93 84 +95 123 114 98 107 158 117 126 177 150 92 156 +146 136 143 87 74 66 56 56 59 80 57 53 +62 49 55 85 192 174 115 162 157 158 162 164 +165 153 160 160 167 166 156 127 108 121 60 41 +44 51 156 73 32 19 29 85 136 146 124 141 +168 146 156 158 148 153 157 167 151 140 110 113 +198 211 158 59 42 58 65 74 83 59 113 115 +134 123 168 146 88 155 147 121 170 166 165 151 +134 143 156 144 82 111 110 107 92 105 86 89 +105 95 124 143 102 94 89 114 83 165 113 65 +58 110 120 155 89 168 177 175 110 167 195 200 +123 57 58 56 134 174 130 90 135 204 201 211 +213 199 207 191 157 118 103 159 191 177 143 154 +164 179 190 198 180 213 231 222 195 182 170 156 +170 129 117 146 162 196 213 220 226 222 210 222 +221 199 118 128 124 99 93 121 136 160 114 161 +216 180 175 178 205 196 199 225 192 166 184 198 +216 223 219 201 176 157 133 64 74 68 114 137 +76 49 56 64 55 77 111 190 215 213 211 192 +146 205 147 48 52 58 73 169 169 107 94 66 +96 174 199 194 179 85 128 185 180 174 157 200 +206 197 180 105 158 119 175 117 116 150 168 133 +182 171 151 194 201 222 215 202 201 189 136 92 +97 104 82 147 197 212 206 204 191 207 226 227 +228 229 219 219 200 155 129 86 74 89 133 218 +217 202 185 175 136 113 100 92 74 138 121 95 +98 56 68 68 54 54 65 62 74 90 84 73 +44 65 59 110 157 95 124 58 119 156 68 63 +60 75 77 60 65 44 51 68 62 73 49 72 +64 68 88 70 113 102 69 92 97 80 65 129 +108 76 100 72 83 66 72 153 64 55 54 66 +51 49 38 43 38 39 52 64 159 198 114 86 +125 135 156 153 133 128 135 131 150 146 135 127 +108 85 46 19 24 37 48 52 208 232 200 37 +65 66 88 100 129 135 124 123 106 130 141 149 +129 145 131 126 195 133 53 64 62 53 52 51 +45 68 108 128 119 124 141 172 96 78 83 139 +84 44 42 48 52 34 33 39 43 42 52 47 +62 64 42 57 67 57 62 63 64 59 52 46 +45 79 94 88 69 65 68 54 97 57 70 96 +85 109 49 55 63 53 59 67 68 107 87 78 +76 83 60 58 85 52 80 66 68 76 60 69 +89 141 160 105 67 57 113 78 174 145 140 84 +131 140 162 159 168 151 113 171 188 125 58 72 +60 54 59 51 45 53 68 38 41 26 32 62 +188 180 118 136 154 166 162 156 160 161 150 155 +169 169 169 159 145 111 121 56 43 49 39 41 +27 25 42 97 130 131 147 157 153 156 137 145 +151 154 156 159 145 145 140 134 202 208 97 56 +53 39 41 48 48 62 74 102 181 143 145 130 +100 147 202 170 179 185 148 116 121 187 107 120 +77 116 83 105 99 107 110 85 136 137 137 111 +102 117 157 116 123 85 68 118 134 114 74 94 +116 113 136 110 138 162 180 174 176 124 52 55 +89 105 169 217 187 113 95 83 89 105 96 94 +78 89 108 129 159 175 176 175 166 172 176 187 +170 168 160 143 165 218 212 205 208 159 165 162 +156 154 149 109 99 85 107 134 129 186 180 103 +63 52 75 143 139 155 165 161 155 103 107 148 +134 114 107 180 231 232 217 209 178 114 84 55 +56 66 66 93 73 100 138 151 108 80 133 128 +171 189 200 189 178 161 154 169 +143 182 189 79 +72 85 54 117 129 97 185 145 147 92 133 181 +168 127 57 127 184 197 174 136 181 175 125 106 +168 201 167 191 116 88 168 189 149 168 185 159 +166 216 201 206 209 212 206 195 202 165 128 131 +129 169 208 177 119 149 160 198 190 200 217 210 +171 166 182 209 215 196 164 165 141 140 146 137 +121 166 188 201 159 109 66 39 58 104 99 74 +141 127 56 78 79 59 85 65 66 62 96 104 +84 80 65 139 113 106 51 57 64 92 120 53 +41 37 60 93 93 57 58 65 58 88 82 70 +97 73 145 73 69 65 78 117 114 72 64 76 +73 74 54 54 45 31 28 36 45 38 41 53 +39 39 42 32 174 192 93 90 129 129 154 145 +121 127 114 134 135 137 150 131 102 51 36 24 +27 37 52 95 228 238 205 39 44 65 79 109 +110 125 124 120 108 137 139 147 154 143 145 146 +195 160 44 46 44 53 47 53 66 45 105 93 +138 123 96 143 118 107 124 87 97 52 60 69 +76 62 55 54 44 44 32 36 52 35 53 33 +49 53 49 69 56 79 66 56 87 66 90 83 +92 69 64 80 58 84 67 66 77 47 68 62 +57 64 48 59 55 68 55 57 70 65 83 65 +68 65 55 62 56 65 79 93 128 139 114 89 +92 121 94 171 198 177 125 67 137 127 107 104 +140 145 111 140 100 73 74 55 49 51 42 47 +43 46 54 59 38 35 38 39 170 191 125 131 +137 146 150 161 147 151 145 157 165 170 180 174 +165 150 131 117 75 56 51 62 57 66 109 124 +153 165 166 180 164 151 147 128 143 149 162 154 +141 137 127 162 210 204 78 48 56 43 43 38 +51 62 80 84 138 153 186 156 140 165 186 188 +150 153 128 148 126 161 129 114 133 94 86 99 +96 115 88 110 124 90 153 115 98 109 168 110 +84 148 84 161 174 109 97 167 99 86 120 93 +75 113 108 134 87 96 94 80 125 157 135 153 +202 196 146 123 145 93 93 94 111 120 130 144 +119 118 119 116 135 115 120 116 143 149 157 177 +181 190 153 135 174 221 225 229 221 178 129 82 +117 123 180 199 138 136 96 111 161 140 108 129 +108 160 217 209 164 119 92 86 124 153 189 200 +170 123 162 121 89 123 86 62 74 74 75 73 +103 154 151 150 123 149 159 151 180 156 98 56 +68 77 60 80 +139 186 189 207 159 160 139 138 +188 123 170 202 151 111 64 94 168 178 157 116 +79 113 167 175 123 111 93 68 107 127 185 207 +201 147 90 141 166 154 136 177 188 155 185 206 +227 221 196 202 190 220 220 218 199 194 138 177 +200 155 99 141 184 178 174 195 176 181 226 233 +220 217 222 228 210 192 181 166 153 154 175 187 +174 167 182 160 158 117 114 160 169 108 159 167 +145 48 78 67 62 62 80 57 57 59 66 118 +55 48 73 59 49 63 85 51 47 55 66 58 +99 58 43 58 70 82 76 52 117 98 169 60 +78 65 62 72 113 84 87 76 110 113 88 45 +47 51 62 74 46 34 34 36 36 48 49 45 +174 202 117 113 131 136 144 149 128 124 130 150 +153 151 148 134 100 68 49 35 29 36 51 47 +125 166 116 23 42 83 92 118 119 136 131 106 +110 137 147 140 139 154 131 146 198 171 29 26 +35 36 49 47 54 44 47 145 145 111 90 98 +87 136 210 106 180 196 96 62 56 63 67 62 +67 46 39 42 46 52 55 74 69 63 67 58 +77 58 62 77 55 73 69 65 69 64 68 60 +94 70 57 67 55 64 42 46 59 44 36 55 +51 62 64 64 67 86 88 70 67 45 64 60 +63 80 86 115 103 82 79 100 92 89 181 192 +121 93 63 93 160 185 107 144 113 135 162 83 +70 62 42 43 45 33 48 48 38 38 44 37 +36 41 39 56 135 194 146 111 121 149 155 148 +151 155 137 144 155 156 160 175 168 159 162 127 +125 134 138 109 119 143 136 141 136 160 164 150 +168 158 150 143 136 158 156 154 135 135 126 181 +213 186 58 55 45 49 45 59 72 77 179 115 +104 134 184 166 182 177 207 212 170 200 180 172 +123 125 116 126 144 155 130 114 92 104 118 84 +84 86 120 106 87 124 92 123 130 167 157 138 +79 137 180 155 120 74 78 88 151 172 110 92 +107 106 99 79 141 185 209 219 195 153 174 146 +124 170 213 227 230 236 236 233 236 230 204 176 +154 171 199 189 141 119 160 149 119 127 144 105 +123 130 146 159 146 156 158 117 130 145 147 145 +167 192 175 170 160 172 186 200 186 148 179 192 +164 195 216 225 228 235 219 212 190 150 165 150 +141 113 109 123 149 135 148 154 155 202 185 135 +172 180 138 89 57 56 68 66 55 78 95 58 +76 125 181 190 125 172 204 185 165 179 144 204 +201 89 75 73 82 133 169 148 165 89 63 70 +86 98 158 180 154 77 89 169 208 213 174 128 +123 129 155 124 136 181 205 190 180 190 199 184 +151 175 205 222 230 225 186 182 197 187 196 202 +166 191 221 195 156 113 155 192 154 108 121 153 +190 159 178 201 205 204 198 117 149 179 204 187 +159 102 137 172 118 147 149 110 88 47 73 57 +58 114 166 80 111 150 117 79 59 85 80 47 +55 94 55 43 44 39 52 58 65 62 87 54 +80 85 87 76 94 72 121 115 87 135 105 98 +111 79 60 59 89 69 79 125 67 77 204 222 +189 44 41 31 19 37 52 47 175 196 100 103 +133 131 150 130 125 134 131 138 158 151 145 154 +129 114 86 53 56 75 138 39 48 57 48 35 +52 63 88 96 138 130 128 118 98 133 140 153 +146 137 143 170 199 180 31 26 31 38 38 39 +52 51 58 116 117 120 111 99 97 136 211 114 +79 166 133 49 64 49 52 63 32 34 32 27 +34 43 46 51 73 59 58 62 66 73 77 80 +105 72 64 58 63 59 65 73 103 90 46 57 +60 56 49 57 56 48 60 88 97 66 65 80 +76 77 77 76 70 56 66 70 54 60 125 96 +76 126 114 80 100 92 98 141 92 82 114 161 +155 212 160 136 116 124 93 93 55 59 48 41 +51 57 44 27 39 24 44 32 38 34 34 33 +75 181 167 94 124 136 135 146 153 164 131 156 +167 169 172 162 172 170 166 160 144 161 157 150 +153 147 155 155 158 160 161 156 150 151 134 100 +135 146 156 150 130 118 139 197 211 150 34 38 +32 47 59 55 57 93 148 69 146 182 206 145 +162 153 174 191 121 216 204 110 153 168 123 120 +114 103 128 88 86 110 73 86 108 144 74 102 +107 165 121 86 139 175 140 85 90 125 164 168 +157 82 69 67 94 159 195 145 181 205 211 185 +165 108 77 153 191 185 143 135 146 196 187 190 +209 220 228 206 199 186 171 194 198 184 174 189 +194 194 198 186 141 171 155 166 115 124 82 98 +106 120 139 150 141 127 130 196 182 141 102 93 +137 107 146 125 179 195 123 182 215 223 192 170 +165 144 117 117 177 198 175 129 166 190 197 205 +197 139 157 181 218 208 181 194 171 99 92 76 +67 85 89 105 143 114 88 67 +57 141 82 130 +131 92 103 141 144 167 130 210 236 200 99 67 +64 48 76 78 154 168 119 63 44 78 121 182 +217 212 207 148 143 205 222 209 182 177 209 212 +148 119 133 146 125 154 177 140 117 127 160 181 +221 212 161 204 229 210 200 204 194 186 197 229 +222 189 133 97 128 92 77 104 197 191 136 141 +175 177 151 137 129 104 80 76 87 106 141 134 +118 97 59 78 83 78 78 63 77 192 177 156 +155 155 117 44 59 140 153 98 126 44 52 35 +34 52 64 87 52 66 60 67 79 76 94 78 +70 73 113 98 95 150 96 107 73 92 96 84 +94 83 93 108 80 130 175 213 222 167 141 70 +25 31 33 49 165 197 129 102 136 128 147 151 +139 130 136 133 166 160 162 160 157 149 135 95 +49 49 42 37 45 44 49 63 83 94 102 111 +123 145 136 128 126 138 155 138 147 147 153 159 +205 147 37 37 47 54 52 49 57 54 48 55 +72 169 190 189 135 109 181 154 93 75 158 153 +42 64 39 39 42 39 17 29 26 33 60 46 +42 66 67 64 69 65 58 72 76 54 66 51 +47 76 62 67 56 54 44 41 52 52 69 66 +85 93 96 125 98 88 87 68 87 84 78 69 +52 57 51 60 66 67 79 74 90 96 118 125 +135 128 73 96 84 90 127 166 166 182 145 88 +97 94 92 84 67 43 59 42 42 51 36 31 +25 32 49 47 37 45 34 16 31 131 176 127 +113 131 137 146 147 155 168 156 157 154 164 168 +171 178 184 176 164 172 177 166 169 161 176 166 +168 174 164 153 147 134 88 62 118 151 147 141 +143 120 154 208 194 73 52 28 37 38 49 43 +48 64 89 82 97 162 184 143 156 184 217 182 +127 171 188 124 119 124 149 86 124 156 119 104 +134 121 68 98 106 99 85 124 129 146 118 89 +79 99 74 68 75 88 145 204 201 171 150 123 +162 141 99 147 165 128 140 95 84 60 57 67 +76 111 155 198 195 194 205 178 191 218 191 139 +126 148 162 199 209 207 221 221 184 127 102 131 +177 206 216 212 196 125 140 148 137 146 154 94 +63 90 139 139 116 70 113 166 145 109 130 118 +115 83 60 79 100 158 170 126 87 119 150 164 +187 209 200 188 187 156 138 136 145 131 113 130 +89 84 97 129 118 85 54 63 77 80 123 124 +94 70 63 78 +99 79 82 48 39 60 140 154 +165 200 200 160 233 232 192 150 51 80 111 146 +141 150 175 107 73 57 64 55 68 141 199 167 +97 117 161 158 200 198 158 166 206 201 178 144 +135 109 148 195 218 221 200 199 200 204 195 130 +127 164 170 164 167 162 180 166 180 210 215 197 +123 151 144 147 148 169 180 176 150 120 106 130 +174 184 131 128 57 143 105 85 77 98 166 179 +119 102 116 134 90 130 93 156 147 78 56 78 +98 170 94 116 125 117 51 56 70 88 89 66 +64 52 58 99 80 117 141 153 102 69 108 78 +95 85 92 100 127 84 114 72 93 94 97 92 +76 82 65 75 149 136 131 72 38 31 35 53 +149 202 147 78 114 143 137 139 150 130 130 133 +153 160 167 169 165 167 140 118 84 38 53 37 +35 42 56 78 104 146 137 143 135 125 124 119 +127 143 135 146 144 153 137 166 200 109 31 32 +25 28 22 25 28 23 29 33 48 84 167 159 +162 77 147 170 135 93 199 154 66 139 115 43 +48 36 31 21 22 33 35 45 52 51 48 62 +56 68 59 68 80 75 53 46 59 58 66 60 +77 57 57 76 65 126 110 78 114 104 99 74 +63 68 72 68 48 90 73 74 66 49 49 55 +56 59 65 121 139 125 139 128 108 67 104 80 +66 100 104 106 155 189 166 95 97 76 103 59 +44 57 62 57 56 44 41 31 31 41 48 42 +43 29 28 36 37 74 175 158 97 130 139 137 +160 154 168 162 156 166 171 167 170 181 180 175 +156 170 170 162 176 182 167 170 159 154 146 150 +154 149 148 113 138 147 136 130 120 113 187 209 +147 47 29 32 31 29 22 36 98 108 108 75 +161 199 145 192 191 177 172 153 167 192 177 160 +181 156 145 162 108 136 97 72 96 100 75 82 +95 100 103 124 76 83 80 96 95 127 109 58 +80 94 77 95 139 118 171 222 227 221 170 104 +93 118 75 141 176 95 78 102 80 68 128 159 +196 158 133 126 108 90 92 93 120 178 177 135 +139 134 136 111 136 194 236 242 241 226 198 120 +84 92 97 120 179 155 77 150 191 198 181 114 +98 131 119 98 165 184 137 110 95 115 151 131 +83 68 118 209 190 168 184 210 231 223 207 199 +215 149 88 150 182 185 160 151 126 104 154 159 +88 62 87 131 158 135 92 86 116 114 127 125 +162 137 187 155 34 44 95 162 201 189 188 111 +158 220 205 164 147 68 55 144 175 170 146 175 +150 114 103 63 49 43 75 143 99 74 129 106 +105 161 181 196 189 206 171 166 175 187 182 120 +170 194 195 149 187 212 217 188 139 113 98 97 +119 114 134 150 146 136 151 200 218 231 232 231 +223 226 229 235 219 187 168 126 130 144 100 157 +126 67 82 143 178 184 175 136 73 98 109 55 +80 125 145 86 60 104 68 126 144 110 52 88 +123 49 82 146 110 140 103 80 76 39 129 133 +63 89 120 181 149 155 129 89 68 73 107 106 +171 117 89 90 75 110 79 57 51 48 51 84 +92 44 53 60 45 52 42 41 97 195 167 75 +118 118 129 137 128 138 128 137 139 160 166 157 +167 162 147 125 120 104 72 64 92 93 116 117 +129 134 146 146 136 147 124 139 130 135 136 131 +143 134 130 180 180 43 29 29 22 28 29 29 +29 27 35 26 43 53 56 150 182 95 98 166 +141 104 108 119 140 53 60 90 80 98 102 48 +44 32 24 31 45 54 52 70 52 55 56 53 +68 60 67 56 89 82 55 83 55 76 97 90 +129 79 76 102 87 83 77 65 72 79 104 80 +79 68 62 65 55 59 73 48 54 83 80 96 +105 73 95 92 68 98 75 59 128 125 155 148 +143 167 98 73 127 94 92 63 49 46 55 54 +56 45 39 35 36 35 29 29 25 33 27 36 +41 65 124 177 126 116 136 150 141 151 156 158 +162 153 164 165 176 178 171 172 151 167 172 167 +177 175 162 155 154 140 143 148 150 171 167 156 +140 136 146 111 103 161 207 190 56 60 38 17 +33 27 34 105 181 156 78 79 176 164 120 156 +168 125 197 199 196 168 157 216 153 134 140 149 +87 96 155 114 94 126 118 111 153 191 107 94 +113 86 97 115 106 158 160 84 85 165 192 103 +82 88 94 178 201 180 161 172 159 92 150 117 +99 119 110 138 139 129 167 146 123 155 184 204 +209 145 106 111 177 207 180 130 80 98 108 80 +156 210 194 161 119 100 104 134 190 198 212 220 +190 147 215 222 181 114 92 117 130 98 131 168 +178 161 171 153 134 128 121 97 69 105 184 215 +220 195 159 211 223 199 154 113 86 104 144 129 +143 157 143 113 102 96 104 150 176 209 223 208 +149 87 104 141 191 188 184 201 +103 68 146 186 +172 64 79 135 144 197 169 185 144 157 211 194 +121 150 66 47 90 164 198 205 221 206 131 84 +75 68 94 56 78 97 121 135 85 80 116 107 +153 140 202 176 141 153 161 164 129 180 199 194 +198 180 190 192 188 220 187 153 131 115 97 150 +188 202 159 169 171 177 185 205 194 177 166 156 +151 154 177 177 195 157 130 134 69 82 92 140 +110 99 118 119 78 151 187 74 80 191 196 159 +68 62 128 215 179 76 141 87 57 84 119 180 +57 85 62 90 88 63 90 92 79 107 99 74 +92 139 131 138 131 124 140 164 181 124 157 171 +140 124 139 126 51 53 96 93 64 49 37 63 +51 39 39 51 74 182 185 84 103 137 133 150 +136 148 145 128 137 148 140 148 166 159 153 169 +149 140 136 118 144 131 150 130 144 146 144 146 +135 140 145 119 130 130 128 120 138 136 133 195 +147 21 22 29 25 27 32 24 23 33 28 41 +38 76 87 92 120 115 125 147 141 180 54 93 +139 145 63 69 102 42 37 62 59 33 23 47 +43 75 42 46 68 46 56 69 63 58 77 73 +90 97 87 104 85 139 148 123 116 65 80 63 +60 105 88 133 106 52 69 93 97 75 75 51 +56 65 46 51 64 79 97 65 92 75 147 126 +78 80 67 121 124 124 141 216 195 178 131 147 +74 73 65 73 32 32 24 42 47 38 31 37 +23 37 23 31 42 23 46 33 48 48 65 155 +145 117 133 155 150 141 150 150 156 158 160 170 +168 164 164 158 171 171 172 164 172 167 145 148 +125 135 143 137 162 151 154 148 131 136 121 113 +111 192 208 106 42 49 33 49 62 53 44 75 +115 67 78 78 123 127 89 121 169 184 188 191 +165 208 176 206 125 156 157 125 167 154 160 148 +162 114 119 103 147 184 119 74 167 204 95 106 +119 116 174 90 80 148 207 199 115 83 103 79 +131 217 200 135 103 143 187 127 143 194 197 172 +180 169 159 168 166 189 199 180 176 158 151 140 +103 104 137 102 84 96 106 78 77 84 125 162 +200 215 218 206 195 192 178 185 195 195 196 200 +164 169 150 116 182 208 209 190 209 192 127 128 +110 119 106 119 165 198 192 185 190 170 154 168 +182 195 164 108 126 94 97 102 134 147 121 120 +127 83 106 144 172 143 98 74 67 75 108 93 +107 125 204 202 +96 38 57 72 166 184 92 118 +140 95 109 175 186 139 157 171 171 131 148 63 +59 83 120 181 218 227 225 181 86 62 57 120 +140 116 131 158 150 102 114 151 201 209 190 160 +185 201 177 171 167 168 136 124 176 180 149 166 +184 200 202 190 139 145 156 119 153 135 162 212 +187 150 118 121 124 77 66 79 108 134 197 191 +120 103 87 67 88 74 111 195 185 117 140 117 +133 191 92 151 177 133 118 64 76 124 190 171 +127 175 185 77 52 44 109 149 54 72 51 133 +84 93 68 82 118 102 141 94 119 114 125 118 +134 170 106 158 165 120 187 185 177 150 134 145 +105 80 160 164 48 48 38 47 35 41 37 35 +36 146 195 118 67 135 138 137 151 157 145 143 +139 131 140 151 170 170 162 145 161 157 151 148 +146 155 154 143 150 137 140 140 136 109 127 144 +119 137 118 115 128 131 169 189 85 44 33 32 +24 39 34 45 34 28 33 31 36 41 79 73 +83 147 143 115 178 171 133 72 145 155 65 63 +70 65 62 151 140 77 34 34 36 43 43 42 +37 54 54 53 58 60 44 69 75 88 78 74 +69 79 83 105 87 123 76 74 80 73 64 59 +62 72 60 86 85 63 59 72 73 52 62 47 +75 77 93 80 85 99 108 80 95 60 116 155 +97 150 200 110 127 134 83 110 84 45 59 37 +33 57 25 35 35 45 46 47 47 31 46 33 +36 34 38 54 52 44 48 80 159 151 131 146 +164 164 160 164 161 154 167 164 168 148 159 157 +153 148 172 167 148 149 150 138 146 147 148 165 +164 154 148 143 128 123 124 95 174 204 126 41 +26 42 36 44 39 47 68 177 150 65 102 164 +197 146 128 147 195 191 149 195 153 198 161 140 +164 143 126 153 137 103 120 135 100 85 129 127 +105 103 94 146 144 209 176 79 88 89 86 116 +104 168 103 164 195 177 174 124 70 137 204 197 +108 105 83 79 70 108 166 204 229 230 218 190 +182 182 174 167 145 128 140 110 98 115 110 144 +149 123 102 123 168 174 180 161 131 94 73 76 +87 80 96 151 165 198 181 171 181 202 172 198 +216 213 206 168 194 199 199 180 138 134 170 184 +192 215 177 151 198 201 211 161 151 117 107 141 +105 107 77 147 189 177 217 225 211 147 138 109 +100 78 78 74 67 104 134 124 145 195 168 150 +87 76 48 87 89 176 169 105 118 70 56 75 +109 182 157 96 156 133 141 154 111 97 70 67 +106 158 180 218 212 125 131 126 133 176 164 136 +169 197 207 182 143 153 200 221 227 219 217 217 +210 197 209 206 167 165 162 117 124 168 153 160 +202 210 225 216 199 190 189 160 140 154 175 208 +195 133 79 100 146 190 218 165 119 139 184 218 +217 212 188 202 175 94 59 154 205 138 175 179 +140 128 43 60 90 185 148 172 120 84 110 100 +54 38 77 111 68 120 125 104 60 56 57 105 +99 78 109 95 67 126 116 96 110 172 160 170 +102 119 174 155 159 185 89 143 161 133 108 64 +64 65 64 60 46 48 55 37 45 88 188 165 +77 92 117 146 136 159 160 153 144 138 147 155 +167 168 159 144 146 154 138 151 160 149 154 156 +145 153 157 143 138 147 127 133 123 120 124 118 +119 117 175 151 34 21 25 36 28 36 26 29 +16 34 27 26 32 42 46 51 73 108 104 171 +113 117 138 53 87 104 98 51 54 56 55 70 +70 68 53 46 48 53 48 67 49 51 43 45 +63 51 58 62 84 83 66 97 60 79 90 86 +86 82 96 80 59 73 79 68 53 57 62 75 +80 49 60 57 43 73 62 57 68 63 123 88 +105 109 95 95 73 94 94 119 140 105 113 120 +105 75 79 116 85 51 49 68 37 39 54 39 +54 51 54 46 68 54 36 42 34 32 45 36 +33 24 38 45 113 176 141 104 124 141 156 148 +162 161 165 168 162 149 170 156 146 161 159 154 +160 135 113 147 143 137 145 160 160 164 137 114 +124 88 88 162 199 138 48 42 39 44 43 22 +32 37 106 172 138 73 120 180 188 104 133 159 +178 202 136 177 154 187 148 134 182 182 147 168 +157 119 105 125 102 123 118 148 95 90 118 92 +89 127 191 146 86 115 77 84 95 175 180 104 +179 215 200 167 97 110 97 139 107 96 180 115 +70 90 162 182 191 231 240 229 215 174 147 113 +86 111 82 93 121 135 121 141 113 130 94 95 +127 99 93 104 126 147 162 209 207 213 231 233 +210 189 155 171 186 140 108 104 94 130 219 235 +238 229 202 171 144 143 150 179 204 219 228 235 +227 196 153 95 63 92 96 109 175 171 137 184 +191 166 146 113 100 136 135 178 161 136 92 83 +182 209 170 154 155 140 117 116 +120 135 102 123 +103 62 141 190 175 123 66 55 73 90 135 104 +60 102 146 146 177 149 68 68 59 63 102 156 +206 190 186 171 135 94 78 111 154 154 192 215 +211 204 165 104 174 191 162 154 166 186 200 213 +206 166 156 167 147 130 144 172 172 165 190 208 +222 211 200 218 200 196 188 190 216 210 178 202 +222 217 160 155 213 233 220 194 126 140 89 111 +146 178 210 176 176 147 131 74 60 80 53 69 +189 145 117 149 133 79 93 58 82 88 144 125 +126 181 105 121 116 130 73 87 124 130 99 123 +117 186 207 111 172 160 187 185 113 153 143 127 +115 169 197 166 118 96 79 63 49 63 67 65 +57 54 57 53 43 55 138 187 100 69 99 133 +131 145 158 157 155 156 153 156 162 157 148 151 +153 150 156 158 155 164 158 157 156 156 140 137 +115 133 141 143 140 138 143 136 140 156 175 65 +27 33 29 25 28 27 24 26 28 23 25 59 +45 32 51 56 89 128 161 128 70 88 192 128 +110 70 178 125 72 66 43 53 102 82 51 41 +24 49 59 44 63 54 49 51 52 49 65 74 +76 86 77 62 86 77 76 93 59 89 79 82 +63 76 57 58 69 78 59 99 72 75 77 52 +70 68 46 55 77 55 100 67 58 70 56 63 +77 75 93 108 180 208 134 172 105 103 120 93 +65 42 157 202 82 36 49 54 55 58 67 44 +39 47 47 46 49 43 48 49 41 35 59 41 +56 121 167 116 102 114 136 150 156 161 161 161 +167 171 177 161 150 148 160 155 159 165 137 153 +158 166 158 148 160 131 131 125 99 97 150 192 +157 44 38 33 48 48 46 44 35 76 79 74 +68 66 195 166 153 143 108 194 182 171 151 169 +184 184 189 131 145 158 128 166 131 133 164 121 +116 117 129 88 75 113 111 80 76 171 159 155 +189 169 129 68 85 109 121 141 115 105 135 179 +188 127 99 60 64 113 156 144 137 84 113 147 +140 134 159 198 223 223 187 147 168 156 127 140 +155 137 143 157 184 196 179 138 128 151 159 191 +161 130 154 164 158 127 124 154 196 220 219 210 +167 156 153 150 162 197 204 201 178 139 117 113 +129 141 184 182 172 138 123 123 136 166 178 127 +83 84 149 126 116 120 170 144 158 164 136 116 +110 127 107 86 84 80 93 136 134 105 93 88 +87 99 99 88 +185 145 159 175 137 59 46 90 +147 202 189 134 70 69 115 102 60 53 78 116 +147 196 179 162 124 123 123 70 144 196 182 177 +189 197 145 85 49 76 126 79 89 140 150 133 +119 158 186 175 144 114 121 181 208 186 114 181 +200 208 199 215 222 221 228 212 206 223 215 165 +154 159 167 144 138 161 201 179 138 127 119 170 +181 188 150 126 161 184 147 176 169 145 154 65 +76 83 76 120 169 177 89 172 136 160 157 129 +118 113 59 92 105 87 180 140 118 146 64 90 +105 125 120 97 83 83 148 107 123 155 156 171 +169 154 171 130 88 160 171 118 125 165 157 165 +170 52 41 35 44 37 46 51 43 29 37 36 +32 46 75 171 156 59 82 110 133 138 146 159 +151 159 143 160 160 153 144 125 156 149 146 151 +146 166 158 155 153 143 147 131 140 115 146 159 +160 159 148 113 150 177 110 26 24 26 32 33 +23 24 23 33 31 42 126 221 182 45 46 49 +52 151 170 184 184 100 200 195 116 47 82 65 +57 57 34 42 39 49 69 42 36 32 29 43 +42 43 55 45 35 52 64 53 54 52 54 60 +86 79 86 75 114 88 58 68 64 85 55 76 +82 98 52 49 59 51 63 63 76 57 93 65 +72 75 75 76 103 82 60 111 129 125 117 148 +109 134 87 171 107 105 161 83 52 49 120 176 +170 31 46 57 49 171 204 114 47 62 44 47 +43 57 49 64 52 36 53 43 46 52 125 156 +120 102 129 145 140 146 153 157 158 153 166 169 +155 167 172 172 170 164 161 153 165 158 143 157 +123 119 119 105 100 167 189 146 60 36 27 34 +42 53 59 53 77 206 159 63 74 90 93 147 +188 191 178 212 211 222 169 148 179 204 182 184 +146 138 131 197 135 113 107 131 115 130 68 124 +120 99 117 94 143 151 185 113 137 144 199 168 +108 129 177 184 136 144 97 78 135 176 154 136 +60 89 106 120 159 192 207 209 205 201 176 161 +136 182 175 120 117 128 126 178 190 172 170 186 +198 194 182 191 188 181 196 205 196 145 164 195 +201 198 206 222 227 202 175 141 102 102 106 155 +160 137 117 140 166 195 217 191 149 126 107 127 +155 148 103 80 78 95 143 100 84 63 66 62 +57 58 55 68 105 168 195 178 154 110 77 104 +116 161 144 115 114 98 124 80 80 78 74 135 +156 179 170 136 164 126 41 57 52 92 177 210 +186 162 121 186 181 57 54 130 168 95 127 171 +160 158 125 73 78 120 185 199 180 177 180 159 +103 72 90 117 56 63 73 77 75 83 140 185 +208 192 190 185 188 217 198 145 184 170 137 121 +110 117 143 176 206 212 172 156 191 211 230 229 +202 181 167 138 108 117 106 89 117 153 187 191 +174 176 186 149 106 180 150 59 123 194 217 206 +210 190 139 149 200 186 96 107 74 149 79 180 +174 54 115 99 78 144 139 64 57 95 139 167 +136 110 144 137 143 149 127 129 200 166 179 151 +140 171 165 145 171 175 177 154 130 42 52 63 +55 41 47 57 41 33 39 32 34 42 62 115 +185 125 48 98 90 125 130 157 148 159 157 146 +146 146 136 143 153 153 146 139 155 145 148 147 +145 153 144 138 140 140 143 146 147 128 111 106 +184 153 42 36 34 43 28 59 53 27 33 31 +34 43 105 190 147 36 34 37 39 52 164 143 +98 109 180 138 89 44 55 107 154 62 60 46 +46 47 55 55 38 26 33 44 47 46 51 53 +59 52 63 47 43 75 65 76 86 78 74 65 +69 53 65 56 70 78 115 92 72 70 51 51 +56 65 83 64 57 79 70 74 60 89 141 135 +108 74 73 128 137 128 168 194 177 92 89 84 +99 82 66 69 48 67 82 125 83 42 65 64 +76 226 245 196 58 54 43 64 55 53 70 34 +41 55 62 64 46 39 48 95 140 113 96 105 +133 146 133 147 150 151 161 165 179 182 195 188 +176 177 151 156 153 140 151 137 134 121 98 100 +169 186 140 58 77 37 42 36 73 46 52 67 +78 87 60 76 84 136 121 125 161 212 164 181 +220 213 153 143 151 212 179 165 131 96 111 97 +129 107 93 63 88 136 99 72 184 133 80 94 +162 78 87 87 82 126 208 213 86 105 154 144 +164 150 96 92 65 109 125 178 157 102 98 82 +131 149 127 129 113 108 113 113 89 97 103 102 +92 106 121 146 104 140 146 105 105 98 141 134 +143 153 127 145 148 141 184 199 179 166 157 108 +131 158 202 212 220 216 196 184 195 178 186 177 +116 85 103 154 184 192 190 219 231 206 202 192 +196 189 153 141 113 146 139 89 54 63 139 196 +208 215 213 223 226 207 177 175 182 219 205 184 +169 119 103 108 166 144 110 92 +55 95 186 178 +125 145 77 52 44 74 86 115 147 145 165 164 +188 200 86 57 126 162 143 84 110 168 206 184 +128 78 97 154 147 145 135 109 95 48 85 123 +158 157 165 185 184 135 80 63 103 146 164 168 +204 215 217 201 170 160 189 179 126 93 73 70 +97 124 114 126 137 169 135 135 126 160 179 201 +199 172 208 181 179 171 162 154 189 186 164 136 +92 98 141 188 195 166 156 158 138 175 177 176 +161 114 113 171 160 67 157 197 144 66 111 120 +157 115 160 149 151 70 137 115 98 139 73 124 +145 89 105 144 170 143 184 144 141 191 153 166 +175 190 117 104 80 73 48 62 44 36 45 39 +44 44 48 31 38 41 39 49 129 177 117 48 +86 114 141 144 150 153 154 160 154 156 140 148 +150 125 145 148 126 138 149 158 159 158 151 164 +170 144 150 140 146 139 108 153 166 82 46 60 +47 46 47 38 38 47 22 18 23 25 42 51 +35 35 51 41 42 42 57 72 139 130 93 80 +66 95 73 69 96 74 48 56 39 47 44 41 +54 39 38 44 45 41 53 48 41 52 72 87 +100 63 80 66 97 75 68 80 58 68 48 72 +96 109 123 77 87 57 28 78 96 97 93 76 +82 57 67 44 51 113 133 126 60 136 137 116 +138 167 217 194 168 153 114 104 57 75 75 46 +54 54 70 129 106 51 43 55 70 187 228 181 +76 42 43 58 62 64 49 34 38 54 37 46 +52 34 33 75 67 89 102 102 77 118 125 127 +137 149 147 154 189 205 176 170 165 161 151 145 +166 150 134 129 108 80 133 178 174 113 59 42 +55 41 64 38 60 56 115 120 68 79 66 92 +154 161 120 157 179 172 165 188 177 184 182 176 +182 192 128 158 120 106 146 102 104 107 100 158 +79 68 104 140 153 148 88 109 93 80 73 93 +109 83 140 206 181 105 137 153 150 130 114 117 +124 118 174 165 151 124 151 125 130 120 178 178 +150 150 137 110 99 110 93 124 129 169 198 185 +170 194 201 204 209 210 230 222 191 145 127 96 +75 110 164 154 167 164 175 198 191 213 196 175 +181 157 115 96 98 98 156 205 211 221 218 205 +192 201 207 208 167 139 114 111 115 123 108 87 +85 82 89 47 69 78 88 107 100 102 103 103 +110 176 204 204 187 185 140 136 168 185 117 127 +156 131 164 171 +177 79 149 159 86 115 96 38 +55 49 121 83 96 162 121 162 192 170 135 54 +65 118 175 206 202 219 221 208 218 186 109 86 +93 74 116 154 171 141 148 89 93 133 185 212 +230 236 235 211 186 140 153 155 127 120 125 172 +201 194 187 194 179 159 144 136 143 196 182 165 +148 118 113 133 102 127 187 184 169 120 97 111 +126 117 164 216 201 180 166 156 141 167 184 124 +104 155 186 187 171 174 96 73 63 80 125 172 +161 145 185 150 87 48 156 151 86 98 87 185 +138 75 141 157 108 133 76 125 116 119 120 133 +118 172 195 151 172 191 138 188 198 199 73 169 +158 68 51 51 51 55 39 33 38 34 41 37 +44 44 43 32 45 128 165 88 53 83 111 147 +123 141 155 157 169 155 149 144 147 141 143 158 +147 149 165 166 161 165 153 155 157 151 128 146 +113 98 145 140 76 41 52 44 56 35 42 46 +31 31 36 34 42 41 52 63 67 70 186 169 +65 52 58 89 160 90 85 84 114 136 80 64 +63 75 41 44 58 38 39 37 52 36 25 48 +42 65 56 49 42 51 73 82 137 74 54 78 +85 94 106 80 87 65 66 84 130 121 97 79 +56 63 65 82 119 75 107 86 68 44 54 51 +56 99 89 73 150 164 105 102 179 188 167 146 +123 89 66 64 85 57 57 94 115 72 73 83 +148 115 194 150 96 65 194 204 62 56 43 54 +53 48 46 33 41 48 49 31 43 48 33 48 +38 47 46 85 99 87 96 109 107 119 126 129 +115 150 148 141 153 120 138 130 124 102 79 78 +123 157 176 139 58 42 42 37 34 46 42 48 +62 172 187 171 43 60 72 171 184 186 171 199 +180 110 166 151 174 225 178 133 159 130 102 107 +178 144 151 106 135 130 82 160 72 60 129 99 +65 121 135 77 78 72 111 123 77 67 65 98 +201 172 176 200 145 126 165 208 187 131 136 182 +184 128 117 147 155 150 191 228 222 222 225 222 +216 207 200 184 196 217 200 188 195 190 184 216 +220 190 178 181 206 212 221 205 204 210 192 210 +215 188 147 143 186 191 192 177 188 185 195 159 +177 198 186 178 196 210 205 191 162 140 117 134 +146 200 212 213 185 149 180 150 114 90 66 80 +102 138 123 149 123 124 127 129 124 150 150 129 +153 159 179 188 186 185 158 187 210 212 176 106 +188 194 130 127 137 99 149 161 124 45 98 119 +53 68 103 128 146 186 126 140 146 85 114 136 +102 94 174 206 167 199 208 177 145 75 70 88 +89 79 104 94 113 136 123 126 126 162 208 220 +215 191 184 201 202 191 155 100 134 190 202 210 +222 233 238 237 227 225 199 159 145 144 104 145 +167 123 131 104 135 175 179 167 187 209 202 157 +156 167 114 198 206 149 118 130 159 178 211 217 +169 66 96 149 148 83 75 100 145 139 120 143 +180 148 118 69 83 69 100 138 92 59 139 98 +123 95 99 150 94 128 141 170 134 107 159 145 +169 180 162 179 133 213 133 131 179 164 54 63 +70 59 45 49 38 35 41 34 45 38 31 35 +36 35 124 159 98 51 74 100 135 130 148 149 +145 151 150 155 147 158 168 158 172 169 172 159 +158 162 161 158 150 153 133 121 123 128 135 55 +31 39 44 36 34 52 41 38 54 41 47 49 +64 65 58 67 76 73 197 161 95 54 55 67 +102 107 94 131 124 80 62 100 83 80 73 42 +36 49 38 46 39 26 39 37 41 51 43 41 +36 52 53 42 42 63 48 55 85 103 84 89 +104 90 98 85 100 77 54 62 58 57 59 60 +66 82 77 69 56 63 58 70 62 66 88 176 +181 104 162 121 202 188 157 168 128 95 98 85 +72 60 82 109 127 62 86 111 169 153 186 98 +85 72 88 104 60 53 42 45 55 58 62 49 +54 46 44 59 36 59 46 36 29 35 36 41 +41 77 67 93 75 104 109 86 77 86 111 108 +108 124 94 102 88 80 116 140 145 135 83 31 +31 31 26 49 41 37 60 124 192 178 121 72 +55 79 108 174 189 123 195 205 178 172 189 161 +177 199 186 130 155 154 114 106 167 124 120 164 +130 77 90 75 68 60 67 64 143 156 123 137 +95 191 198 181 73 108 161 115 143 191 123 158 +202 178 74 95 179 217 197 121 205 191 176 124 +104 131 107 121 141 202 225 215 196 192 197 195 +179 190 190 188 197 199 200 198 190 187 188 150 +137 135 141 150 172 160 115 86 113 110 188 205 +198 218 220 220 215 175 165 211 235 228 217 208 +201 153 129 140 147 158 160 191 219 213 191 177 +177 154 160 108 73 75 135 201 213 218 226 200 +210 191 156 180 187 202 218 235 220 187 103 138 +179 128 157 195 197 139 96 74 +130 133 162 144 +187 136 66 159 181 100 83 135 100 75 49 93 +106 171 177 116 83 79 94 133 171 105 141 208 +178 125 178 207 188 127 100 103 134 114 116 55 +56 80 92 160 165 120 135 159 180 159 184 199 +162 147 123 93 73 95 97 137 117 134 158 167 +174 160 215 226 237 232 221 206 189 156 150 114 +109 105 140 98 126 143 136 115 82 80 106 140 +121 106 99 116 126 162 196 192 114 134 162 172 +144 191 154 111 103 76 158 215 202 95 99 72 +107 97 95 106 171 76 149 168 166 94 171 164 +146 155 191 179 139 128 156 153 130 154 129 179 +114 164 70 73 73 145 59 43 45 92 137 45 +41 32 36 48 46 48 39 43 23 22 34 107 +154 109 52 78 90 114 109 131 135 130 139 154 +164 160 178 174 166 165 164 159 157 148 143 149 +145 125 118 123 107 113 56 38 49 41 43 42 +54 46 53 46 45 42 60 62 52 48 55 59 +48 48 86 158 94 125 45 55 77 89 85 168 +114 156 116 99 104 96 58 62 54 75 48 35 +45 37 33 26 44 37 38 49 75 65 57 44 +57 55 56 87 89 85 111 157 116 145 125 123 +104 66 65 57 58 68 68 72 80 97 78 77 +88 73 103 79 73 97 124 181 114 92 165 144 +204 156 140 188 123 93 89 106 77 130 196 62 +62 88 208 231 238 176 111 57 43 72 85 87 +79 59 63 49 38 55 44 88 80 53 66 51 +54 66 62 59 49 45 34 37 53 43 49 52 +62 65 74 76 69 59 62 77 74 85 77 68 +89 104 94 73 36 19 34 29 33 33 32 36 +45 97 96 126 194 129 63 53 59 99 186 135 +149 147 198 153 137 121 151 161 220 178 156 128 +138 121 139 135 80 102 95 97 76 153 141 83 +137 77 68 78 114 177 158 176 106 172 185 181 +108 182 205 198 155 177 100 88 135 169 119 88 +128 126 196 223 211 207 166 157 118 100 148 154 +210 164 124 150 157 124 103 107 105 161 177 189 +190 195 195 170 119 151 175 197 222 159 185 200 +184 124 106 121 131 188 215 204 161 145 126 117 +93 140 181 194 175 135 100 137 181 157 178 228 +236 240 236 238 223 164 123 134 106 89 79 95 +120 134 208 241 236 189 129 84 114 106 184 138 +99 136 188 147 125 190 195 145 104 85 69 58 +79 75 48 66 +121 100 48 67 136 208 175 55 +121 166 95 74 137 96 92 97 41 109 191 199 +135 58 93 85 103 94 74 150 215 211 186 178 +194 219 212 202 209 176 97 110 107 171 179 144 +79 133 165 150 159 184 165 155 87 134 179 187 +186 177 107 162 150 116 54 94 170 215 226 225 +190 180 172 159 154 127 139 185 187 185 196 196 +161 96 63 97 106 168 154 135 134 108 56 78 +155 187 166 143 119 110 166 196 170 141 189 141 +187 206 187 147 123 83 129 65 90 174 153 82 +96 66 146 208 90 114 143 109 98 136 187 143 +157 192 177 170 168 89 170 180 106 147 58 103 +105 114 108 58 72 90 124 68 42 36 29 42 +37 36 56 37 31 32 31 27 77 144 135 78 +46 62 92 103 133 127 133 155 157 151 156 169 +184 158 148 130 150 133 135 123 107 92 106 96 +47 19 19 26 25 41 47 44 37 46 32 53 +44 42 49 63 72 66 66 58 55 72 129 129 +85 114 72 60 57 116 140 175 80 176 156 88 +103 87 62 54 59 42 36 46 45 33 44 77 +63 48 39 36 62 70 59 55 37 57 49 123 +125 118 182 210 136 115 89 84 93 75 59 70 +63 57 70 55 58 82 62 116 137 130 76 87 +66 88 121 110 98 121 165 115 164 143 121 136 +150 141 63 48 93 89 49 55 52 136 245 255 +226 170 155 118 65 53 65 114 86 62 43 46 +60 49 42 42 37 53 77 54 43 51 42 53 +51 35 33 24 45 23 31 24 28 31 31 32 +28 36 58 55 65 63 68 58 114 49 53 56 +42 28 27 29 36 26 23 57 98 195 212 168 +131 54 59 53 113 145 184 103 100 190 186 211 +202 175 198 197 220 98 125 149 172 130 119 92 +97 129 117 153 100 121 164 117 160 185 106 84 +109 136 140 148 106 155 137 99 64 138 204 185 +118 139 141 55 88 57 95 137 121 143 167 159 +200 213 158 144 159 153 133 116 172 187 195 198 +200 192 170 146 130 120 110 94 73 85 92 143 +165 188 179 154 175 156 118 134 93 79 103 146 +189 211 212 220 226 220 213 223 196 151 147 174 +185 164 151 126 140 137 138 177 172 157 154 130 +133 127 134 169 141 74 119 177 216 233 236 221 +161 117 151 119 155 178 148 77 79 79 117 169 +195 147 97 74 87 59 73 63 56 70 90 144 +189 130 88 85 114 140 206 159 126 124 170 128 +59 106 148 96 69 48 123 161 176 98 56 67 +111 158 159 138 139 186 191 143 67 138 195 212 +182 190 200 200 194 138 131 129 145 161 136 166 +118 106 150 148 148 185 199 201 207 191 158 116 +150 156 95 143 150 164 221 215 180 177 165 148 +143 169 198 228 223 220 226 202 179 194 147 161 +191 170 125 103 172 179 146 194 207 167 128 160 +191 195 182 117 184 206 201 216 208 165 111 102 +82 88 115 157 154 192 143 59 100 133 172 124 +77 105 136 177 136 118 147 133 99 178 171 179 +191 133 178 178 145 194 82 134 164 123 159 64 +86 53 56 89 72 69 43 27 36 31 28 31 +36 37 32 22 27 42 103 120 92 48 53 67 +72 88 109 94 124 128 137 135 150 135 124 151 +118 96 88 80 80 76 49 44 39 28 27 33 +35 44 31 48 37 32 39 42 44 37 54 59 +68 70 47 60 62 102 131 93 67 69 48 46 +67 74 144 172 168 100 110 113 82 65 57 78 +67 89 41 42 55 51 54 48 63 70 74 49 +37 54 54 60 52 41 48 75 107 82 109 147 +80 89 73 74 90 82 96 79 65 59 47 74 +84 117 194 178 119 84 75 58 69 88 84 121 +98 171 217 148 137 93 106 110 88 85 67 80 +126 162 39 46 53 64 213 228 158 199 195 161 +60 103 59 84 104 66 67 57 54 53 54 41 +39 47 44 47 46 57 53 48 51 33 42 31 +34 46 26 21 21 22 23 21 25 19 51 58 +51 45 25 25 21 21 29 29 43 43 36 47 +62 69 116 188 192 197 191 107 73 54 143 129 +170 156 184 110 179 157 144 189 229 138 161 178 +207 119 129 157 124 87 80 59 145 178 102 92 +58 66 92 76 130 154 78 58 130 119 166 208 +148 95 82 130 94 99 137 131 147 67 75 94 +119 88 90 72 99 82 133 196 199 188 178 206 +221 222 188 162 128 87 143 136 166 166 176 198 +210 200 194 176 178 185 184 159 137 161 175 160 +168 129 80 106 118 137 182 206 170 105 116 195 +219 207 187 190 194 204 196 202 223 225 216 202 +194 177 145 139 104 86 89 93 93 78 83 114 +118 162 208 223 237 223 209 146 87 126 135 131 +118 100 74 70 102 184 198 151 109 68 56 49 +44 45 56 68 123 97 141 209 +180 156 154 98 +94 134 139 111 115 162 121 162 151 133 198 212 +174 72 47 146 93 116 99 86 93 67 108 170 +199 177 196 187 166 143 133 97 161 191 156 160 +141 149 153 162 116 171 211 210 191 201 179 210 +205 208 220 204 181 185 197 200 156 165 150 105 +84 89 174 195 215 226 219 174 188 194 145 133 +161 185 107 136 111 73 62 84 169 190 169 120 +128 196 219 198 135 115 138 153 153 111 129 205 +217 185 144 170 126 78 77 156 117 140 165 168 +215 166 124 79 139 156 85 65 67 103 150 171 +116 154 95 108 109 162 168 190 198 175 175 141 +126 164 79 124 78 87 187 94 51 60 43 68 +107 74 54 44 36 28 33 28 35 45 33 34 +35 31 28 39 60 89 85 69 62 48 60 66 +77 62 88 102 77 82 87 149 116 65 58 59 +58 49 43 41 43 32 26 22 24 29 31 39 +45 55 52 42 33 41 56 54 67 64 63 63 +104 168 107 75 113 75 62 53 104 159 44 102 +165 176 179 126 144 162 128 127 87 66 55 39 +44 41 42 37 54 78 157 140 56 44 44 42 +52 32 44 65 80 68 69 83 97 57 74 52 +92 82 83 73 41 64 84 140 195 176 174 120 +97 72 78 72 62 116 89 110 87 105 217 172 +143 107 133 161 111 76 180 192 92 140 48 37 +47 67 92 99 177 232 182 154 110 114 58 63 +63 47 42 51 55 51 37 55 38 46 69 48 +63 60 33 35 39 54 47 62 43 32 26 27 +32 31 23 25 17 23 24 26 22 23 28 31 +27 125 94 17 15 31 26 35 109 144 179 187 +217 175 94 69 84 124 150 177 176 108 135 181 +191 158 131 181 198 102 166 198 178 120 121 125 +153 66 74 92 90 76 107 66 97 84 139 125 +73 157 77 74 66 58 131 176 208 141 72 189 +198 79 109 69 66 131 126 104 158 179 164 167 +204 185 190 209 215 187 153 155 162 172 187 199 +211 195 165 177 151 177 138 95 161 192 201 223 +223 227 229 227 210 190 189 187 195 159 181 202 +187 199 179 176 158 145 124 129 125 151 174 150 +159 162 189 188 186 172 168 201 230 231 221 207 +162 134 157 200 210 182 151 156 127 166 196 174 +128 106 95 93 64 76 82 70 99 73 116 133 +133 109 95 155 175 166 161 166 115 57 93 130 +110 104 117 110 +160 194 175 117 84 93 124 148 +90 180 148 140 130 114 99 178 221 207 161 146 +168 115 114 138 138 80 140 147 174 194 202 168 +144 179 198 182 146 99 147 107 94 129 129 161 +167 184 165 169 180 175 141 176 176 147 166 154 +120 100 146 168 174 123 154 180 172 134 97 69 +103 143 180 210 225 208 146 141 171 184 165 182 +189 166 139 130 145 141 103 75 141 189 126 119 +150 78 117 130 178 220 222 192 105 93 134 106 +96 60 129 187 210 150 73 159 189 138 119 188 +165 93 102 74 95 178 90 114 164 151 128 121 +135 128 156 168 127 159 171 161 161 151 127 196 +111 104 184 108 113 108 66 57 93 63 69 82 +83 36 52 39 37 46 34 36 36 44 45 44 +45 33 59 57 48 68 47 77 45 67 67 53 +47 48 56 49 42 43 33 32 33 37 36 34 +37 41 37 37 35 29 32 38 36 47 51 22 +41 35 47 55 46 55 45 64 150 139 76 89 +179 215 140 54 63 70 44 63 148 131 135 85 +189 171 92 126 83 68 56 63 41 31 44 53 +41 42 67 66 106 102 45 46 64 54 67 52 +57 80 65 99 83 58 56 51 76 78 68 67 +55 78 107 131 141 131 99 94 119 102 65 62 +85 92 92 88 89 99 184 153 107 96 115 150 +94 131 181 113 94 96 49 62 48 64 106 93 +100 145 73 47 42 41 39 75 82 65 46 51 +64 46 31 44 55 49 51 55 39 51 52 37 +47 43 44 51 29 28 27 24 17 33 19 25 +26 23 27 36 23 31 159 154 35 174 72 14 +31 29 39 76 105 194 219 164 145 52 57 65 +109 138 159 197 119 141 185 145 89 104 171 181 +169 82 168 167 153 161 164 162 149 88 127 98 +154 128 70 79 138 162 73 78 65 84 46 62 +90 55 121 140 162 210 144 108 146 134 125 137 +93 116 196 150 116 134 195 191 189 129 151 176 +177 139 140 59 70 70 84 84 139 187 178 209 +157 144 140 150 180 185 196 188 185 166 155 138 +140 126 130 107 121 167 198 162 145 202 211 220 +219 201 179 144 151 192 189 194 202 202 205 184 +180 192 194 204 219 211 175 177 176 186 191 189 +138 118 89 129 175 218 229 236 229 215 200 171 +156 143 126 65 56 69 117 115 95 125 109 123 +116 102 159 128 89 106 177 188 147 82 120 157 +55 102 149 179 157 59 97 140 138 181 195 73 +69 115 74 57 130 190 209 168 121 130 179 179 +184 135 76 75 138 102 126 179 162 133 165 168 +179 172 167 151 166 196 201 188 200 181 187 201 +204 218 195 192 164 114 106 108 140 172 141 166 +170 172 147 130 89 52 45 45 57 141 210 201 +141 90 111 151 126 109 177 181 124 133 181 198 +167 177 168 100 135 94 99 69 75 130 125 188 +180 171 182 150 74 63 53 92 174 140 184 199 +139 64 143 188 94 68 137 177 179 90 118 137 +113 116 51 76 119 97 99 140 146 150 137 180 +176 143 137 188 185 86 106 168 194 177 204 98 +149 63 64 63 53 93 151 164 137 58 42 47 +44 52 49 33 34 43 35 29 32 39 46 29 +24 27 33 35 36 39 33 39 27 31 16 25 +34 37 42 29 41 33 32 38 41 28 29 34 +36 43 29 31 39 25 21 27 26 32 42 52 +53 90 144 144 187 160 105 67 138 208 147 38 +56 60 89 64 48 120 148 118 166 129 165 114 +36 65 109 62 56 47 43 31 68 63 51 57 +52 129 110 88 52 47 62 56 67 62 64 87 +74 83 47 64 83 74 86 72 57 92 116 111 +77 67 74 92 121 84 100 84 89 87 74 89 +79 96 85 85 118 144 137 115 62 150 111 85 +47 67 54 51 60 63 94 74 55 67 62 72 +78 72 56 46 48 53 47 48 53 36 31 49 +56 58 59 45 54 56 46 45 44 35 34 38 +35 36 34 32 39 34 39 35 39 43 44 56 +57 39 114 79 52 78 85 67 69 86 94 184 +207 168 119 67 65 67 89 118 168 126 166 139 +73 180 165 59 109 136 168 180 146 97 192 199 +188 134 131 135 154 92 106 75 115 135 59 104 +87 178 158 86 77 57 58 97 85 104 85 90 +74 171 216 184 108 72 159 215 205 176 131 169 +119 110 103 106 126 110 110 115 157 192 180 148 +141 149 119 89 125 130 117 165 194 199 189 167 +201 157 109 130 165 160 177 184 191 164 170 180 +184 172 172 156 164 174 178 181 179 178 168 136 +115 110 108 110 161 209 233 239 242 240 241 236 +204 187 175 154 206 220 200 128 87 93 129 164 +168 212 222 191 169 140 141 118 78 80 170 211 +216 229 235 232 215 165 113 62 94 177 127 70 +120 125 87 51 52 66 110 176 +158 76 72 104 +121 69 69 54 72 131 189 174 114 147 149 135 +66 108 129 169 145 129 167 179 207 182 171 169 +100 121 129 167 188 177 158 151 164 86 110 151 +178 202 215 195 213 229 236 222 209 207 215 199 +196 202 184 174 133 119 140 197 219 198 189 164 +115 103 124 176 201 205 160 115 111 110 88 99 +78 126 136 125 145 153 187 220 223 217 184 97 +102 73 79 149 172 167 191 126 107 102 72 119 +76 51 80 157 175 162 185 177 109 149 150 130 +165 134 83 113 93 83 164 118 114 136 92 139 +106 137 120 166 147 111 145 205 191 179 157 153 +127 92 103 153 153 174 129 89 129 123 121 75 +75 145 161 148 146 159 66 53 55 45 42 46 +51 44 32 49 28 31 47 43 48 43 34 37 +31 18 24 34 32 34 31 44 48 39 53 31 +25 28 39 24 27 32 22 24 33 16 19 21 +23 27 32 47 172 145 154 171 94 167 85 164 +180 157 117 84 73 70 48 44 63 58 116 169 +118 119 151 178 149 147 199 136 44 39 60 72 +43 65 49 46 57 46 51 62 49 38 64 84 +74 84 66 76 51 65 67 69 79 57 72 59 +73 78 54 93 84 105 128 110 79 68 55 86 +171 208 118 83 72 107 100 72 170 189 184 97 +119 86 84 66 45 75 52 34 52 45 48 76 +66 74 92 77 85 139 117 165 169 107 66 115 +86 80 58 98 126 45 56 72 54 44 54 56 +47 64 47 44 52 51 49 44 41 46 43 49 +41 33 41 35 22 26 36 44 52 60 83 49 +57 80 76 102 130 159 171 90 86 62 52 65 +82 134 176 211 189 157 117 83 175 174 125 87 +191 222 211 192 155 167 215 210 153 94 139 117 +114 96 161 171 84 89 92 67 56 92 174 130 +51 44 85 168 157 156 123 49 55 60 159 168 +115 70 80 168 108 156 190 190 164 154 169 105 +56 65 93 83 146 150 169 191 220 217 217 213 +206 141 131 145 105 129 125 134 154 175 208 204 +192 211 216 212 229 235 226 208 218 222 215 218 +226 217 189 190 169 157 123 166 187 169 187 194 +211 215 215 197 186 178 141 171 195 222 227 213 +178 124 80 98 108 172 153 159 196 186 172 153 +130 129 124 108 87 139 170 162 166 160 161 166 +145 172 170 189 218 157 172 180 176 141 83 99 +113 192 199 195 +192 162 105 121 102 108 116 117 +136 89 128 208 118 84 165 174 186 111 63 86 +155 176 120 108 128 135 151 144 159 146 153 199 +194 164 197 191 192 174 161 181 198 210 215 218 +218 217 220 213 165 178 204 204 187 213 215 197 +187 131 97 111 108 127 166 185 190 186 198 178 +146 134 127 102 82 74 69 133 89 83 128 100 +119 134 190 220 200 153 181 143 184 148 151 186 +186 187 186 130 148 133 139 126 64 77 153 164 +141 176 119 169 133 88 143 168 134 75 48 79 +99 93 111 141 216 195 68 97 105 107 149 177 +148 131 148 166 97 156 165 139 200 127 181 155 +133 106 137 144 84 135 118 88 65 73 87 59 +160 144 103 134 55 35 45 39 31 39 33 34 +41 38 41 41 43 45 32 33 38 43 26 47 +44 37 34 27 25 34 26 23 19 39 23 23 +29 28 27 18 18 28 10 29 24 33 36 148 +218 162 172 211 68 145 57 93 98 94 115 80 +56 53 177 178 52 75 179 200 204 117 120 164 +158 179 181 215 68 46 35 48 62 41 83 83 +73 78 67 55 28 58 39 83 89 88 76 53 +64 83 72 44 49 55 36 47 64 57 105 131 +115 129 82 117 125 138 126 199 215 172 86 59 +63 67 62 83 123 150 218 151 78 73 65 57 +74 66 63 47 52 54 85 105 131 115 168 162 +143 207 134 147 185 189 176 162 89 116 139 181 +210 79 190 172 66 72 82 99 72 78 60 49 +44 31 35 34 33 36 37 31 24 37 28 31 +58 113 116 89 138 121 87 80 160 187 194 195 +147 43 51 51 60 76 72 117 120 136 190 168 +151 168 106 141 190 124 191 135 204 177 225 184 +116 198 121 140 139 146 114 135 120 86 99 120 +84 107 134 73 68 52 90 78 95 43 154 151 +175 209 175 144 145 89 108 134 123 79 73 105 +80 65 75 131 148 140 141 147 139 145 95 97 +82 90 134 123 159 169 188 204 209 190 185 172 +165 110 145 154 155 158 160 167 175 223 232 218 +208 187 175 147 119 128 109 140 180 190 199 221 +231 229 180 153 127 164 196 196 196 192 222 201 +181 204 164 145 201 212 192 164 165 192 196 198 +190 197 135 138 140 82 98 102 85 121 104 147 +147 96 130 145 201 225 233 216 160 180 228 199 +104 121 153 141 82 73 102 198 205 186 125 118 +174 182 157 95 106 79 103 164 180 186 158 192 +189 49 84 74 111 136 137 129 146 176 197 94 +45 39 84 113 172 206 204 205 197 170 120 114 +155 139 125 111 130 128 141 174 150 151 139 145 +133 138 146 162 188 201 216 208 208 196 160 157 +113 64 78 73 57 174 212 217 202 162 169 188 +194 184 179 187 198 187 171 179 206 198 184 169 +147 170 159 138 134 76 113 158 180 148 125 103 +131 199 161 130 156 172 229 227 188 137 131 103 +135 170 188 191 156 67 83 88 119 123 85 157 +216 134 99 63 153 179 140 153 181 130 133 160 +78 149 185 166 187 148 138 149 116 92 103 171 +144 113 146 141 78 74 118 72 109 136 129 157 +144 66 47 37 32 33 39 28 33 58 36 57 +44 29 54 32 41 51 39 39 41 33 26 32 +19 28 26 18 19 38 25 27 21 22 28 25 +19 21 23 21 14 33 48 115 120 106 83 133 +35 51 56 58 56 65 52 72 59 48 92 58 +47 59 177 185 207 154 43 52 179 156 194 169 +117 45 48 54 67 52 48 49 95 121 119 83 +43 54 57 52 54 62 58 65 69 84 69 73 +43 39 41 35 54 88 140 135 92 87 51 73 +158 187 151 141 90 75 104 74 154 107 90 90 +114 126 166 172 52 45 56 75 96 63 36 41 +44 73 161 99 128 116 208 164 162 138 167 207 +144 170 156 126 154 111 174 109 129 105 159 145 +123 186 185 136 77 161 176 148 69 111 58 78 +84 88 106 60 70 75 84 84 160 198 165 156 +180 161 196 218 206 170 69 60 56 58 51 94 +76 59 89 99 134 166 210 194 199 120 182 170 +154 188 186 116 175 153 232 200 174 209 119 116 +100 129 165 157 96 96 97 99 77 63 59 105 +157 90 44 104 87 53 72 96 66 146 201 206 +162 125 77 174 199 143 98 53 53 55 76 128 +162 182 138 147 121 167 137 93 98 140 134 130 +147 139 124 123 165 131 131 146 191 185 131 150 +177 167 196 213 213 217 209 225 219 219 206 200 +211 229 228 236 235 231 213 207 218 227 235 227 +228 232 221 227 197 185 212 180 130 208 221 156 +129 119 174 216 221 222 204 217 235 228 209 199 +199 218 190 123 146 150 157 137 118 192 205 217 +197 186 167 118 145 177 130 117 133 161 119 82 +85 85 125 118 72 80 113 83 +177 140 116 108 +64 69 80 75 126 178 167 202 213 177 58 69 +83 80 124 93 124 140 195 208 125 76 62 44 +87 149 174 117 119 95 104 103 99 103 107 85 +124 103 75 82 104 133 195 201 162 146 162 199 +200 223 222 190 175 185 147 119 89 118 167 148 +126 127 127 137 164 175 182 148 116 127 154 166 +171 194 192 178 189 187 156 118 108 70 60 77 +74 133 166 175 169 66 69 72 166 168 174 204 +226 221 204 170 120 89 73 160 199 155 121 135 +69 110 158 149 98 104 125 181 137 100 80 136 +179 162 158 133 147 84 139 123 86 104 176 90 +117 149 143 84 197 144 136 210 127 99 113 160 +146 127 114 77 78 150 110 140 136 118 79 54 +53 42 41 37 37 39 39 24 24 26 28 31 +37 25 31 32 37 38 34 15 35 22 18 24 +68 27 19 17 19 23 25 33 27 22 31 28 +23 31 43 38 37 34 38 47 103 110 88 88 +170 176 108 87 97 57 80 83 68 63 84 151 +151 83 31 45 104 79 125 149 147 36 35 46 +43 56 48 44 78 147 180 184 161 74 89 57 +43 56 49 67 83 97 93 75 86 64 72 100 +48 98 70 79 60 100 85 84 166 134 99 126 +95 129 120 104 157 97 59 45 83 136 70 111 +55 60 49 63 69 35 53 56 80 66 175 141 +111 151 162 166 174 129 116 165 160 120 164 194 +151 156 179 154 51 39 63 68 153 175 147 166 +177 146 144 88 65 70 124 125 180 196 174 171 +164 210 158 151 177 208 211 209 192 168 120 143 +88 41 44 51 54 52 117 153 134 169 165 157 +141 139 170 135 168 141 167 125 185 149 147 190 +230 217 198 150 172 126 130 75 125 138 171 105 +46 73 57 82 95 96 75 88 95 59 78 96 +106 150 67 52 59 54 108 161 177 145 74 67 +164 136 138 84 147 190 154 63 90 103 120 170 +158 119 117 133 139 141 169 186 211 225 219 179 +153 172 174 155 176 216 206 186 186 160 147 160 +149 134 165 204 204 218 218 206 185 195 179 158 +182 194 182 157 153 134 117 162 174 158 156 134 +117 159 168 110 109 167 197 171 144 156 165 145 +103 148 100 136 137 147 157 178 158 139 119 154 +153 151 164 160 170 197 167 124 103 109 90 83 +84 70 88 148 131 111 84 86 98 102 102 119 +166 176 125 107 +171 178 137 64 82 43 49 77 +76 70 119 119 175 159 114 84 119 136 95 129 +76 66 159 218 212 159 166 145 98 105 167 192 +195 189 167 117 106 153 83 117 150 88 52 136 +87 89 135 181 205 207 185 202 219 232 231 226 +220 206 206 206 213 226 226 220 209 180 140 86 +136 175 190 200 187 168 165 164 175 181 194 195 +170 149 123 100 169 194 213 217 219 211 189 175 +116 85 135 136 171 207 221 206 195 160 120 59 +82 100 170 206 174 109 86 128 106 125 186 170 +135 110 176 172 69 77 148 129 120 155 147 96 +108 87 161 157 118 135 162 106 117 192 198 151 +219 157 106 174 82 128 117 184 195 119 140 117 +68 99 72 94 141 113 73 144 133 74 63 46 +57 63 37 24 28 25 34 31 31 37 25 34 +37 24 26 22 26 31 36 51 181 69 33 24 +31 25 43 33 28 17 12 43 33 26 96 88 +69 70 131 159 179 220 226 227 242 231 182 211 +195 155 202 215 169 186 164 106 205 172 29 58 +59 123 143 154 102 45 28 46 45 42 48 65 +83 98 94 102 154 121 116 59 78 62 77 44 +86 140 184 161 185 141 86 113 129 60 87 60 +87 92 161 96 63 82 62 72 102 127 106 147 +128 104 166 104 68 136 121 95 121 82 111 135 +47 49 45 77 110 143 196 124 73 144 170 118 +139 157 79 116 135 104 107 130 161 168 206 178 +141 70 55 54 103 134 198 182 119 168 198 174 +174 201 175 172 204 151 182 215 206 209 220 195 +144 111 124 105 89 66 36 39 42 44 63 49 +65 85 117 159 184 228 208 168 198 180 110 146 +201 128 100 176 147 102 159 171 189 174 151 92 +98 134 107 106 74 59 95 54 83 87 88 160 +189 116 66 73 66 70 94 103 138 148 174 106 +136 161 136 95 85 138 136 93 74 98 125 136 +79 166 212 179 140 70 59 103 137 103 124 125 +172 223 225 207 204 179 185 210 196 171 181 211 +213 207 229 229 218 189 153 182 178 116 119 119 +136 197 199 202 199 200 190 167 211 206 197 206 +212 187 201 196 169 188 191 124 99 111 155 186 +187 188 213 221 232 237 212 192 144 108 164 137 +104 100 90 116 135 151 157 166 194 223 223 207 +166 139 136 102 85 103 86 121 178 195 181 168 +156 161 172 164 156 156 148 144 151 144 153 129 +129 86 126 104 64 47 57 53 51 51 66 104 +161 180 166 167 143 164 149 74 127 84 72 102 +171 205 206 161 94 87 67 137 184 192 191 212 +217 199 171 206 200 188 165 162 120 95 78 77 +116 201 207 176 167 177 182 172 174 185 200 205 +181 181 192 206 189 178 190 177 198 188 177 143 +167 207 228 229 232 227 225 208 200 156 146 158 +161 174 190 168 144 120 174 160 87 131 169 190 +194 155 138 149 121 149 160 166 157 205 237 218 +148 98 54 69 85 119 100 177 118 131 175 95 +130 175 115 131 135 107 98 106 129 130 76 107 +128 160 144 148 93 166 147 107 202 115 128 170 +78 54 121 97 120 155 130 114 134 63 51 52 +73 75 127 82 167 166 108 76 104 77 90 43 +33 33 46 48 49 29 39 37 34 37 27 37 +44 38 57 52 31 43 34 32 39 68 62 85 +60 106 115 87 174 151 103 141 170 127 166 199 +192 199 188 208 230 233 158 229 248 235 243 237 +227 209 226 161 161 76 28 43 44 74 134 116 +104 41 32 39 44 63 88 82 115 115 93 67 +109 59 62 53 59 65 52 62 94 103 171 144 +133 115 138 79 65 79 86 94 113 95 106 70 +76 114 80 57 117 176 171 148 75 105 180 83 +55 62 62 58 66 54 66 67 52 63 67 87 +89 107 134 167 88 134 196 154 156 162 148 159 +73 64 79 110 179 99 139 188 207 201 95 52 +57 107 145 90 100 165 218 158 126 150 161 206 +211 135 78 97 80 106 115 100 51 54 48 45 +66 45 43 62 52 66 75 89 72 156 184 171 +198 209 210 198 178 113 159 184 95 148 123 186 +184 137 164 191 185 209 104 103 106 141 86 90 +60 56 72 53 77 127 58 157 162 178 94 83 +158 124 110 148 194 189 116 174 128 106 129 136 +55 76 110 115 78 58 62 72 77 147 177 206 +227 217 179 96 64 87 118 102 92 127 184 209 +194 143 177 218 225 198 217 229 209 190 185 167 +164 165 190 140 103 115 147 144 171 181 177 167 +181 209 219 209 210 216 219 225 223 220 188 167 +170 185 196 188 153 126 121 116 130 123 124 156 +179 181 205 219 225 207 168 179 181 190 165 164 +185 159 124 111 121 116 144 178 195 194 189 180 +184 159 126 161 199 198 205 211 204 155 127 107 +110 106 92 84 86 74 88 82 +188 174 85 68 +119 145 113 73 45 75 58 70 119 148 136 135 +192 188 200 170 95 73 99 103 68 100 175 167 +99 77 48 60 84 181 215 190 215 211 188 198 +195 160 106 159 178 188 187 184 160 118 118 146 +216 220 207 179 209 201 185 172 129 111 121 160 +180 197 188 189 190 172 184 168 160 187 178 188 +202 187 204 221 204 202 216 222 227 218 200 189 +143 195 213 190 206 195 121 118 139 121 131 123 +139 121 194 212 199 202 215 146 69 73 129 128 +73 149 162 62 118 97 66 121 177 110 85 118 +182 164 88 168 95 79 98 86 136 155 181 188 +147 133 153 118 182 170 141 196 143 117 93 127 +98 103 145 130 114 160 95 48 42 63 70 79 +78 119 99 123 119 129 161 94 73 99 75 68 +110 75 66 98 68 88 52 34 49 64 48 85 +69 55 109 105 179 124 102 159 143 186 164 153 +153 130 111 153 135 165 170 189 127 139 149 176 +171 198 204 222 220 169 227 208 201 162 198 97 +46 49 53 67 42 44 35 83 58 47 44 38 +60 88 119 77 118 123 115 110 106 93 39 46 +65 98 99 75 63 98 93 155 180 120 136 83 +79 75 98 119 130 114 96 65 108 118 106 108 +89 95 75 88 153 181 128 79 80 83 79 94 +67 63 63 93 66 56 43 66 68 64 54 107 +56 69 127 97 134 169 190 236 206 177 115 98 +84 82 123 105 133 164 185 161 68 62 80 79 +82 88 99 59 66 65 95 111 80 64 49 54 +56 66 58 41 65 51 48 55 47 57 62 67 +74 89 82 174 194 184 139 218 231 192 139 120 +136 178 171 113 127 191 182 222 137 190 178 168 +192 110 57 79 146 136 93 102 70 80 75 73 +116 80 64 115 53 82 137 128 89 138 85 64 +121 147 123 190 211 130 75 90 126 108 166 141 +128 109 121 133 125 110 170 139 174 158 177 174 +150 118 79 86 106 94 144 145 150 178 176 196 +188 204 194 169 154 162 156 141 131 136 153 133 +137 120 109 117 159 189 190 184 162 184 187 171 +138 103 80 67 90 86 102 109 130 147 180 197 +121 125 121 181 210 190 169 189 217 216 208 187 +205 196 181 197 205 218 198 185 190 155 114 89 +98 150 165 115 117 128 109 137 135 76 68 87 +94 123 111 141 177 170 190 155 140 155 162 175 +182 206 179 165 +130 170 174 105 69 108 149 117 +83 131 151 120 119 147 177 157 156 181 168 179 +212 204 133 139 130 75 88 72 60 100 92 133 +129 166 215 210 213 182 124 96 86 111 98 95 +113 166 176 188 145 131 147 164 181 205 195 162 +140 181 164 170 175 197 187 159 110 78 99 83 +85 69 84 99 74 116 166 129 158 208 197 190 +207 226 226 197 168 170 161 139 153 126 89 84 +85 57 78 126 102 99 54 95 151 166 151 116 +172 200 97 128 177 175 115 139 93 155 167 147 +126 106 141 154 140 119 74 83 111 93 153 192 +135 74 116 90 94 106 121 170 108 151 156 133 +160 161 128 159 124 109 100 135 148 98 114 150 +143 143 181 157 117 83 55 37 51 47 31 41 +82 177 136 167 172 127 167 176 140 125 181 195 +127 117 77 150 140 169 158 187 185 172 189 159 +166 139 129 95 99 134 160 125 85 78 158 196 +204 178 195 190 106 141 158 194 200 187 216 167 +137 113 121 87 86 95 115 118 139 135 47 69 +44 27 34 41 43 41 29 39 47 52 89 106 +99 79 80 86 106 139 47 63 83 130 109 105 +83 83 65 78 52 94 76 83 92 97 129 165 +120 92 103 104 102 162 125 78 105 92 149 207 +192 141 109 127 106 59 76 79 78 58 140 93 +150 68 78 86 72 98 120 67 69 87 84 89 +120 156 114 212 218 220 182 171 82 90 76 68 +94 117 174 191 150 171 159 69 85 70 65 68 +75 64 58 49 52 52 51 51 78 44 62 66 +51 82 76 66 97 131 109 119 140 96 169 223 +215 155 191 190 141 119 146 148 192 97 89 118 +200 218 170 181 185 202 143 150 145 65 120 118 +86 110 64 87 109 109 73 74 98 57 87 68 +88 148 109 88 75 147 120 87 90 96 134 106 +147 196 134 76 96 160 170 120 130 200 190 162 +168 191 99 85 74 76 64 83 144 166 160 133 +94 143 172 178 162 160 186 131 156 188 205 178 +105 85 116 123 154 194 153 126 157 124 108 139 +171 198 174 182 159 138 148 159 182 180 165 159 +207 189 178 226 216 174 177 176 169 192 157 161 +145 162 188 167 189 197 212 215 185 139 168 175 +148 147 194 206 219 238 229 182 129 135 187 216 +209 204 186 139 98 125 149 84 83 56 64 70 +63 124 155 182 189 204 204 181 175 165 123 137 +68 70 86 83 97 88 69 97 131 154 170 172 +184 158 125 148 127 97 144 145 166 169 210 212 +179 174 168 106 153 137 119 165 182 160 168 215 +228 235 228 181 129 119 89 85 120 107 109 123 +133 177 181 208 187 175 156 164 136 140 175 190 +182 175 102 64 137 157 105 153 179 154 157 144 +165 121 119 166 171 204 212 197 155 139 146 155 +131 165 155 189 119 116 114 105 123 146 137 133 +164 168 128 149 116 102 56 143 184 89 95 127 +174 93 131 117 164 185 156 145 117 178 188 77 +159 170 68 135 110 120 175 133 135 92 133 98 +113 154 58 79 70 155 99 148 143 145 184 161 +155 72 108 174 77 79 103 95 171 136 139 201 +200 106 93 86 57 34 44 35 56 67 85 95 +82 158 165 177 95 136 199 153 181 141 179 194 +155 189 188 127 171 181 149 162 145 123 89 99 +155 171 109 94 43 113 174 204 207 137 110 169 +148 185 225 202 169 180 137 77 133 180 179 129 +90 106 127 96 76 66 64 67 73 48 42 41 +27 28 39 36 48 63 49 109 180 194 133 70 +92 89 52 48 67 110 109 118 97 124 123 58 +86 92 106 100 93 137 145 159 85 78 98 90 +127 125 89 60 105 115 127 181 144 150 134 134 +95 78 53 46 77 105 151 119 139 68 72 75 +67 102 93 78 90 151 171 139 78 120 120 113 +159 187 129 204 204 210 148 99 64 78 137 120 +136 166 207 199 167 158 102 108 102 75 82 57 +79 62 80 134 90 162 153 175 116 82 111 120 +120 164 194 164 168 218 212 200 191 202 166 157 +149 194 156 118 117 92 97 154 182 179 194 129 +180 127 207 170 105 51 82 108 69 73 63 68 +86 73 121 95 72 98 181 82 116 127 176 104 +58 141 210 138 54 77 60 77 110 156 185 124 +66 147 178 160 146 204 220 141 78 107 131 75 +75 89 78 79 127 145 126 158 172 171 147 147 +194 221 220 199 184 172 154 151 162 124 102 130 +130 171 200 154 195 216 215 213 199 216 232 233 +229 187 184 144 121 172 172 172 207 217 202 196 +147 111 131 111 117 119 114 138 166 130 162 178 +144 135 172 147 103 125 84 116 131 194 200 181 +155 162 159 194 205 197 171 135 148 141 168 172 +138 115 195 197 105 126 145 111 143 162 184 179 +145 139 124 92 67 84 140 174 +38 38 36 29 +56 98 118 134 130 113 121 128 124 159 194 177 +180 127 117 159 186 185 107 171 190 176 205 154 +90 124 98 123 80 136 137 117 140 195 213 209 +205 207 207 215 213 218 219 210 199 178 128 170 +213 211 223 223 210 196 190 199 180 154 158 123 +73 69 102 139 196 184 204 206 210 167 143 167 +204 197 206 191 194 201 218 218 170 185 172 144 +58 85 107 165 165 124 174 180 160 143 151 107 +104 129 105 153 180 194 161 174 97 100 169 170 +136 121 172 86 100 124 105 128 88 106 78 106 +164 196 109 120 117 65 128 106 84 109 87 135 +100 94 120 137 158 139 172 140 158 120 89 80 +65 83 195 104 73 129 146 165 197 137 108 155 +113 111 67 49 54 52 44 37 60 78 68 66 +67 98 129 131 130 119 129 114 124 153 114 82 +73 169 178 131 140 107 119 182 155 123 129 149 +130 192 204 189 159 111 82 126 167 199 212 186 +96 108 113 74 84 92 88 62 53 64 47 57 +43 43 47 53 75 31 54 48 10 23 28 29 +52 70 49 78 94 137 160 131 73 88 42 49 +70 94 109 119 127 92 110 114 102 110 76 69 +106 160 136 116 98 87 92 121 128 126 116 145 +157 133 116 127 118 84 150 94 67 55 57 75 +104 99 151 176 147 57 59 70 52 57 64 72 +55 119 169 191 123 116 120 149 106 104 126 100 +177 180 164 188 184 148 96 79 84 89 103 170 +139 118 113 154 170 135 155 153 143 116 93 108 +125 165 145 172 129 100 151 137 133 127 133 151 +208 197 145 107 161 162 192 195 117 109 113 145 +191 209 143 168 192 149 137 151 175 124 154 83 +76 66 73 100 136 83 144 168 141 114 136 128 +106 84 134 105 89 124 144 148 51 128 200 221 +165 137 75 47 75 144 180 147 89 76 157 113 +83 125 164 195 130 90 79 88 79 58 75 134 +134 194 232 215 213 212 206 154 124 117 119 141 +181 185 192 192 171 153 149 146 127 105 117 145 +125 195 202 217 216 190 198 191 195 189 197 191 +139 156 158 146 160 170 222 218 219 211 213 210 +218 229 221 219 196 140 117 143 171 175 129 157 +174 182 167 155 147 113 104 99 93 141 162 146 +139 141 145 133 177 147 135 161 143 145 124 164 +222 228 201 198 225 231 215 169 150 181 165 159 +107 82 69 64 +57 32 31 42 46 53 57 119 +140 96 166 194 167 167 162 149 175 162 196 169 +128 179 165 139 151 135 138 146 137 172 155 114 +102 128 151 150 128 155 196 210 201 171 187 174 +160 138 156 146 178 215 201 204 171 166 167 150 +94 109 97 103 162 182 210 201 111 151 189 187 +167 182 178 166 150 105 118 155 175 195 233 238 +239 233 208 184 162 125 160 86 57 98 166 195 +208 187 181 141 131 200 164 143 179 153 135 110 +137 141 108 96 185 213 192 99 120 197 153 114 +63 68 80 94 151 82 97 153 205 147 102 109 +78 75 87 85 82 90 126 80 123 115 140 92 +98 94 159 172 174 128 144 164 147 82 104 93 +136 103 115 171 148 162 162 167 127 179 181 110 +124 139 47 59 73 64 88 67 80 90 74 117 +88 88 83 75 116 124 98 57 84 107 90 73 +68 87 77 107 115 116 104 115 157 136 111 82 +83 149 159 141 153 196 158 108 52 109 97 106 +155 123 84 63 75 86 67 161 86 43 34 49 +72 82 79 77 34 32 33 37 47 47 69 76 +56 63 84 90 117 43 51 55 43 80 98 108 +143 120 119 134 164 186 127 130 84 113 106 119 +116 89 89 117 121 115 144 124 127 171 169 145 +117 158 204 104 154 94 65 90 179 136 160 189 +219 188 116 64 57 86 59 57 74 98 179 157 +166 107 165 202 208 209 196 166 156 90 138 133 +180 222 188 174 150 82 79 85 99 88 63 79 +80 99 93 124 127 160 169 145 145 134 84 115 +128 138 144 128 103 107 124 131 172 207 213 210 +174 141 151 107 170 186 166 213 215 184 200 190 +164 146 88 166 138 89 68 37 63 69 93 60 +140 115 137 158 139 147 156 167 162 62 53 85 +85 100 165 149 161 84 126 197 212 156 111 134 +83 72 106 87 57 73 116 93 119 120 104 104 +134 118 103 148 187 130 82 70 98 144 191 200 +217 222 223 223 215 202 198 161 136 123 171 174 +180 189 166 141 180 201 191 190 209 197 176 222 +229 211 201 194 148 121 176 190 172 168 119 109 +82 103 129 139 133 158 205 210 189 202 211 196 +205 196 202 206 201 134 151 145 110 146 141 138 +133 141 136 135 129 113 106 121 168 168 120 111 +127 166 192 204 208 201 213 205 167 125 194 179 +133 105 134 146 166 165 123 125 116 73 88 84 +146 86 42 49 82 102 98 63 121 150 134 115 +129 179 188 199 195 178 108 169 186 131 131 174 +187 169 143 110 131 174 187 209 189 213 219 215 +199 176 146 156 177 187 181 138 145 80 80 90 +99 121 168 184 174 167 165 205 190 192 206 212 +211 218 220 192 115 80 93 120 138 153 138 157 +200 197 204 191 195 228 187 178 161 130 151 197 +200 174 120 96 105 120 167 162 117 178 192 177 +190 162 105 139 181 117 116 150 141 144 124 196 +197 177 146 176 185 176 115 92 118 119 154 70 +127 172 141 189 161 157 158 103 68 119 158 149 +120 171 147 167 158 105 166 86 95 56 123 119 +158 113 110 145 170 74 97 164 111 133 56 77 +108 160 167 145 166 146 128 169 167 84 121 135 +129 96 108 96 128 130 123 102 88 102 126 104 +72 87 98 99 74 77 69 76 90 74 86 68 +76 94 58 87 102 67 74 107 139 204 181 111 +185 169 106 92 77 151 169 119 174 117 78 62 +59 79 58 115 46 57 37 39 73 89 49 100 +31 107 126 55 64 86 125 151 162 102 87 48 +51 36 37 35 53 63 67 82 86 117 140 200 +215 184 155 104 72 89 79 98 65 87 118 120 +143 158 206 129 129 113 127 176 190 158 165 154 +158 128 123 99 107 115 76 93 189 186 135 68 +59 62 83 65 63 75 96 94 139 159 65 96 +114 187 157 187 204 180 117 128 107 133 150 186 +181 209 207 200 181 171 149 111 111 92 87 108 +162 155 76 75 54 82 120 105 94 100 114 124 +131 114 190 219 225 209 169 115 166 209 196 225 +226 237 241 242 149 207 209 167 146 106 155 135 +108 115 51 74 93 69 56 98 136 137 140 126 +115 111 135 97 171 175 94 160 136 157 99 93 +126 90 53 129 162 184 146 150 153 90 94 130 +129 73 70 86 86 171 185 109 118 157 144 119 +180 198 196 157 104 74 69 96 109 116 148 129 +90 121 146 170 186 164 191 206 201 181 144 144 +202 217 218 202 202 221 196 172 208 205 225 212 +196 204 215 212 228 229 226 211 206 192 182 170 +146 177 184 206 216 227 216 168 161 176 180 179 +212 219 192 205 191 180 196 202 208 215 213 191 +186 195 199 197 196 204 184 184 199 204 209 196 +212 198 146 93 57 65 64 52 90 83 106 136 +139 117 100 110 87 109 120 97 +159 117 148 100 +57 178 209 158 70 87 102 126 138 119 162 174 +177 187 158 102 117 154 138 141 162 190 165 159 +159 105 100 104 88 153 157 145 194 208 196 182 +155 126 190 171 161 128 120 86 78 94 123 144 +171 187 226 236 233 239 241 240 231 219 210 197 +168 141 115 80 79 138 167 168 160 149 136 139 +185 207 189 198 202 221 208 186 143 116 74 139 +165 104 107 129 144 162 130 146 139 136 189 213 +181 164 171 125 76 105 146 143 159 178 207 178 +97 148 109 111 111 139 117 111 186 172 171 160 +116 74 111 93 153 86 146 162 87 138 108 170 +125 103 130 162 120 89 86 121 135 137 102 103 +175 80 107 161 136 86 108 79 54 65 99 102 +139 198 181 95 93 133 119 131 157 130 102 104 +131 141 121 107 149 153 140 96 128 93 145 124 +124 172 145 121 161 141 136 130 125 180 136 84 +107 102 116 198 200 182 138 184 161 96 54 116 +119 141 67 79 83 108 76 116 119 113 44 54 +54 45 82 56 80 54 36 92 48 115 178 120 +58 79 119 113 177 192 151 88 66 43 56 44 +67 60 79 66 67 74 102 119 139 131 127 108 +96 56 103 85 99 128 125 104 138 131 140 131 +135 94 124 121 130 207 168 136 148 159 110 118 +114 92 74 68 107 129 164 69 35 51 60 56 +51 62 90 94 96 182 123 53 94 89 114 106 +147 167 120 184 216 149 108 159 134 171 207 207 +209 208 168 177 207 190 172 165 135 161 156 108 +100 126 146 164 188 190 200 220 218 202 170 136 +117 60 93 106 164 135 196 185 160 178 207 162 +138 136 96 119 86 131 179 139 90 80 56 68 +103 87 111 129 133 114 111 118 79 114 167 111 +96 125 105 79 109 99 70 51 64 117 139 171 +141 127 161 110 134 144 83 79 106 92 85 82 +105 177 194 191 114 157 139 123 159 146 148 181 +175 137 130 113 130 139 128 126 138 139 119 80 +106 124 99 117 131 172 162 138 148 159 175 174 +182 191 185 138 135 144 159 161 138 161 181 145 +170 204 208 211 218 213 223 232 236 223 212 186 +150 130 130 100 117 177 206 180 155 157 201 239 +243 245 243 243 243 230 210 228 213 211 209 182 +185 161 168 204 190 111 129 158 179 164 110 110 +123 98 114 153 195 210 219 220 195 172 145 126 +106 86 90 128 +68 103 139 185 148 109 153 162 +186 180 98 85 117 140 136 129 174 180 212 204 +180 165 154 181 133 120 167 129 93 83 94 65 +55 83 90 136 159 161 169 206 219 215 213 217 +195 129 99 86 140 115 88 105 139 153 119 143 +156 155 178 174 158 188 186 181 145 149 166 154 +160 175 155 135 165 140 160 189 217 181 201 217 +215 191 148 162 144 130 139 135 138 140 154 157 +98 75 139 103 120 155 176 172 150 166 144 151 +87 90 109 190 220 216 172 77 95 75 98 191 +197 108 159 200 168 130 123 195 111 148 149 149 +125 148 190 96 106 105 140 137 160 137 82 182 +179 178 94 117 141 113 92 140 185 175 77 140 +149 153 64 66 49 52 65 45 57 119 140 105 +111 110 162 151 168 190 180 135 138 104 98 123 +118 178 188 155 192 198 180 176 182 180 175 184 +195 162 113 109 92 87 72 87 137 158 194 190 +179 99 114 123 72 60 86 108 137 181 172 168 +136 93 133 144 87 78 62 55 70 70 111 99 +78 88 42 37 36 67 115 86 58 51 100 149 +106 82 145 171 162 51 53 53 51 60 57 55 +59 89 125 131 162 146 141 106 135 107 96 97 +109 102 88 84 103 90 105 118 83 86 115 118 +104 144 164 185 160 192 153 120 133 99 59 69 +74 131 165 136 121 144 63 55 66 62 79 74 +51 121 153 136 117 73 64 72 102 129 155 113 +155 169 192 162 97 59 86 129 119 117 180 135 +182 219 213 210 202 196 177 202 211 161 161 180 +174 164 133 143 221 206 180 192 176 172 225 211 +209 204 207 227 240 228 177 150 198 185 123 116 +115 133 125 49 79 58 63 77 124 150 117 79 +113 157 128 130 140 84 78 82 68 87 95 102 +96 84 87 158 134 73 147 186 139 119 105 103 +89 149 170 113 65 102 151 87 75 137 165 145 +100 135 160 135 98 178 200 182 156 137 120 133 +155 149 192 213 202 162 93 83 128 153 176 167 +155 176 159 154 185 212 199 179 154 178 202 191 +146 155 144 120 143 114 123 145 174 171 147 135 +189 192 213 239 230 187 199 192 202 229 215 179 +136 167 87 79 135 161 196 223 230 223 205 187 +192 177 155 185 159 202 217 169 156 181 186 191 +194 209 205 213 191 130 105 78 83 98 157 199 +199 174 160 114 135 180 169 156 175 154 130 148 +97 120 85 127 184 155 74 115 162 141 109 57 +56 86 102 102 62 83 134 181 209 196 199 195 +188 149 116 140 179 189 88 65 86 76 78 104 +126 133 125 124 130 151 171 180 205 225 223 202 +181 165 158 158 158 159 117 121 171 168 154 134 +106 115 117 160 145 141 124 134 158 165 171 186 +171 181 196 212 216 209 188 165 167 136 118 140 +143 179 177 180 159 137 126 154 164 143 175 162 +198 194 160 78 117 182 146 74 54 82 159 187 +176 140 143 113 161 187 199 199 111 95 194 167 +78 99 200 162 87 179 200 110 120 188 104 80 +109 146 136 109 145 154 77 83 154 100 120 109 +123 73 111 88 120 184 92 140 151 115 100 75 +87 111 111 111 55 121 129 78 134 158 153 181 +191 124 135 124 139 123 129 150 126 158 175 177 +166 149 166 133 162 162 114 109 116 98 113 141 +182 200 168 161 159 157 128 97 93 51 92 90 +126 168 169 149 159 180 143 120 137 115 133 92 +53 49 56 85 64 145 144 78 79 44 33 45 +27 33 68 42 49 114 116 105 145 69 86 99 +120 66 41 35 64 72 56 48 38 59 92 84 +147 158 128 62 117 126 126 135 158 107 105 90 +92 123 118 128 121 115 104 108 121 135 181 136 +198 158 129 108 94 129 89 72 105 104 83 78 +140 153 138 83 51 74 110 151 124 78 55 105 +74 56 67 60 47 94 118 137 88 51 80 127 +175 186 120 109 179 204 213 205 123 170 176 136 +134 157 159 102 85 105 126 102 126 188 227 226 +230 235 221 131 179 205 207 221 212 166 184 211 +198 156 131 154 98 77 107 79 83 123 82 70 +74 56 66 115 108 116 134 139 104 103 130 106 +154 125 100 98 104 84 82 127 145 145 97 128 +185 133 128 138 176 140 72 54 60 108 162 179 +175 174 185 166 75 82 100 108 109 92 98 159 +190 150 133 197 211 197 139 94 116 96 88 98 +165 204 215 202 172 159 168 180 160 156 164 175 +156 140 166 188 166 127 125 99 172 184 164 137 +117 145 192 196 232 235 230 229 219 213 200 178 +150 181 212 213 228 212 197 201 175 206 225 216 +225 232 215 202 180 146 164 200 200 218 216 218 +189 172 169 130 127 170 161 146 150 171 170 169 +164 182 170 141 127 92 93 100 116 150 138 123 +111 127 108 89 83 89 98 116 +67 139 156 113 +93 127 84 104 108 140 95 48 82 97 102 170 +195 177 113 86 130 172 144 87 111 136 138 147 +190 216 212 136 127 146 139 133 119 117 164 178 +160 160 171 218 221 209 184 216 202 195 170 174 +178 207 189 148 114 125 118 159 181 154 134 126 +127 134 177 190 204 200 188 215 206 165 137 133 +178 141 175 205 176 168 181 221 235 240 232 208 +182 148 131 189 198 160 98 161 178 83 77 140 +191 117 47 102 111 161 198 135 96 126 120 167 +166 192 143 90 89 194 158 62 80 136 126 103 +83 147 149 113 181 161 115 162 160 145 120 90 +130 178 156 63 123 137 120 136 110 93 129 68 +147 166 94 146 108 143 175 154 124 158 102 131 +155 104 130 137 88 74 88 104 99 85 93 75 +108 100 133 169 176 125 76 113 110 78 76 80 +92 99 139 170 109 120 168 198 188 178 128 189 +130 62 84 118 156 153 153 147 179 180 176 88 +111 169 107 111 154 121 146 90 104 60 85 69 +86 162 208 118 53 42 33 35 28 49 52 41 +60 96 170 169 136 107 126 114 115 74 54 93 +69 102 145 63 48 60 65 93 131 126 141 78 +114 145 129 133 127 109 114 93 119 144 172 144 +147 126 109 97 136 159 176 186 138 126 113 124 +89 104 140 186 83 126 106 146 138 104 168 129 +96 58 47 63 56 102 117 180 151 137 125 94 +54 63 67 63 146 133 76 118 138 166 164 93 +56 135 189 175 134 165 178 185 184 164 177 108 +141 156 94 145 204 195 209 210 208 196 128 188 +174 171 184 191 162 143 151 111 75 78 99 76 +70 68 116 78 68 70 77 145 147 120 147 129 +84 83 139 131 100 86 124 130 125 185 161 167 +125 154 66 63 96 167 174 195 165 110 97 79 +107 97 87 67 56 124 123 92 178 223 186 190 +174 162 126 130 156 138 107 89 125 185 200 159 +113 138 131 88 106 107 105 144 109 94 148 199 +225 228 225 221 195 196 207 170 146 90 85 93 +134 156 146 138 102 109 139 197 209 202 196 195 +166 134 126 153 176 210 206 198 158 179 194 187 +181 166 156 151 115 146 190 189 174 184 136 133 +164 207 171 201 195 191 209 223 230 216 150 104 +60 69 74 57 72 70 63 84 94 134 156 189 +198 207 229 239 232 220 170 124 128 97 88 109 +123 106 137 151 +72 48 102 156 139 174 126 125 +123 100 121 78 48 100 166 104 103 176 199 197 +159 114 164 176 95 99 127 130 153 196 218 213 +209 209 218 212 195 175 147 159 138 146 146 155 +150 191 197 184 157 192 198 186 187 187 185 198 +189 141 155 196 204 202 209 215 230 223 207 179 +180 188 205 194 188 164 165 121 92 106 99 127 +180 216 208 219 220 208 184 151 100 127 178 172 +126 62 67 128 83 130 187 181 147 87 149 165 +143 178 121 62 90 99 156 176 148 129 113 138 +198 168 94 177 146 104 90 120 84 68 68 160 +170 89 125 126 111 89 113 177 115 126 109 100 +107 105 96 109 84 83 65 111 114 139 119 74 +86 82 131 169 103 78 134 179 160 146 117 146 +175 144 185 165 154 154 99 80 88 67 102 83 +83 80 135 130 97 84 103 94 139 138 138 138 +77 77 80 57 49 69 79 117 172 208 188 207 +181 158 191 176 162 124 126 80 126 119 67 103 +135 158 138 107 109 59 84 73 109 123 126 139 +54 57 46 35 39 36 73 39 68 60 63 137 +178 169 139 115 139 80 90 90 107 114 103 65 +58 87 134 146 180 131 111 89 100 151 144 120 +127 133 123 104 147 168 154 117 140 125 83 82 +103 76 143 171 140 202 184 111 83 144 113 165 +164 121 108 118 186 140 147 120 94 140 140 74 +41 43 86 102 124 126 78 147 123 119 77 66 +88 85 66 69 79 118 134 135 80 86 58 65 +102 116 118 166 160 121 128 177 197 213 206 185 +133 133 108 139 121 102 178 191 186 207 195 146 +127 80 62 51 82 80 114 87 68 86 58 96 +83 110 74 92 103 93 90 123 167 167 126 141 +103 62 116 158 92 97 149 181 189 111 118 118 +103 138 97 155 211 172 105 185 148 90 136 80 +80 100 147 170 120 187 229 185 205 232 222 199 +200 178 131 86 75 87 109 186 178 98 108 154 +144 138 143 129 107 172 219 221 225 213 202 210 +201 198 195 169 195 199 200 145 111 98 111 111 +110 147 199 158 185 202 171 109 114 140 143 154 +160 170 176 185 188 177 170 151 108 100 78 129 +161 186 188 171 118 92 70 68 86 126 94 118 +118 106 116 141 186 210 180 124 92 106 118 102 +70 68 83 121 150 128 126 117 106 115 140 199 +197 199 153 157 128 107 124 86 57 73 116 120 +66 53 55 77 130 202 206 110 85 79 77 94 +65 69 108 171 174 114 93 156 190 217 204 176 +160 146 80 80 70 60 84 119 174 158 184 207 +209 217 216 225 225 217 201 185 179 171 170 194 +197 176 118 113 146 134 140 153 160 172 160 160 +171 146 148 153 161 140 139 162 147 133 98 100 +104 100 80 80 111 124 136 114 105 120 92 111 +136 133 139 171 190 191 151 87 57 70 156 160 +102 165 134 131 79 128 185 211 168 125 169 164 +150 157 162 131 78 74 167 208 147 107 145 135 +118 143 95 94 117 96 143 184 94 79 135 205 +170 89 174 143 72 63 89 108 143 118 104 110 +119 113 70 55 72 124 160 64 67 67 86 97 +115 126 135 189 196 153 201 155 175 177 202 191 +194 181 127 134 148 95 156 141 116 139 169 179 +140 177 186 189 179 185 174 157 178 164 172 147 +156 120 206 208 184 177 144 130 110 144 196 117 +97 103 93 113 87 57 157 155 110 139 98 85 +138 64 94 129 165 156 157 118 74 56 37 73 +37 53 66 44 70 54 76 121 104 147 144 177 +133 76 72 85 90 82 89 74 98 113 168 133 +126 157 130 106 137 191 146 129 114 159 136 133 +110 158 143 78 106 85 62 80 53 64 109 157 +141 207 187 102 83 158 129 131 83 82 96 103 +90 99 156 145 130 145 109 90 56 59 45 60 +52 106 138 86 123 159 147 178 170 147 172 145 +87 85 88 77 153 146 93 63 76 65 103 100 +55 95 162 192 134 114 121 164 180 219 189 118 +82 119 151 144 76 63 78 98 105 51 79 87 +114 83 78 82 118 77 69 73 99 86 75 60 +69 78 127 120 124 145 97 80 78 137 121 171 +156 117 77 116 191 160 97 121 86 98 74 69 +148 198 174 135 195 154 131 115 78 92 76 178 +209 133 155 213 177 166 212 222 212 211 185 160 +111 92 97 87 77 79 116 143 180 191 206 223 +220 207 190 181 212 217 205 155 169 189 156 176 +191 194 229 213 194 161 174 147 135 113 158 165 +166 141 176 204 205 211 227 229 230 233 223 187 +221 202 190 196 135 138 113 119 157 160 180 137 +160 166 184 189 188 162 170 119 107 158 218 226 +198 189 191 209 197 196 188 190 159 167 190 171 +135 131 160 178 135 125 147 119 134 147 147 189 +213 205 185 185 164 150 177 137 +134 56 55 96 +160 187 172 126 93 115 100 116 100 69 52 95 +155 178 141 134 109 135 181 204 210 209 189 139 +143 105 78 60 143 200 206 192 206 198 171 178 +223 201 196 165 161 167 221 225 206 187 180 141 +166 153 90 118 144 154 185 200 201 195 204 199 +179 169 161 124 146 200 204 199 191 175 197 209 +195 159 87 123 106 145 154 200 210 195 195 192 +181 126 75 63 90 144 166 169 170 181 169 97 +129 178 196 205 155 159 144 98 125 176 147 155 +191 215 201 129 185 168 128 126 121 141 156 135 +169 113 136 137 117 105 196 136 87 167 144 128 +154 168 97 99 137 103 72 99 94 65 52 37 +55 105 149 75 90 87 125 165 160 133 141 59 +145 130 124 137 100 125 166 192 149 134 125 170 +174 140 128 138 105 126 185 199 164 155 149 129 +125 151 102 164 218 219 201 181 219 190 192 194 +134 106 87 93 160 102 82 60 102 72 58 59 +95 124 135 92 53 65 77 57 96 151 178 168 +138 137 113 97 98 84 60 67 56 83 158 114 +108 119 87 125 109 83 78 107 94 90 74 111 +107 108 86 83 104 125 124 153 188 188 164 95 +97 167 102 124 120 147 118 110 106 137 145 110 +109 140 89 53 73 99 162 179 188 159 161 104 +104 168 164 134 136 134 135 148 80 62 79 148 +170 165 169 197 197 178 150 113 82 66 84 51 +59 55 90 151 169 169 165 179 167 148 146 160 +137 133 146 147 105 103 113 124 79 67 49 44 +94 53 51 56 68 116 86 115 121 124 76 46 +56 54 58 69 56 67 60 46 47 86 88 34 +34 57 46 86 92 123 110 90 107 116 159 139 +126 139 144 147 160 143 146 108 86 85 135 136 +93 140 117 84 99 155 178 97 52 96 184 177 +180 175 137 176 135 97 74 79 188 227 151 95 +164 139 94 127 108 107 104 102 93 117 110 103 +116 124 108 85 62 96 135 158 168 184 177 120 +108 75 85 86 84 118 111 94 79 102 160 182 +180 187 201 178 139 166 205 222 227 209 222 218 +181 181 166 181 181 204 222 218 225 200 192 202 +172 182 182 165 119 105 108 158 222 227 230 233 +226 213 199 148 145 175 197 222 237 240 215 158 +125 158 202 200 184 169 165 153 93 65 115 105 +100 124 136 136 143 87 85 94 82 107 162 199 +212 171 111 67 +139 131 104 95 78 124 171 189 +191 195 133 145 174 168 125 82 148 205 200 185 +151 119 76 72 94 139 130 117 146 158 146 78 +83 109 171 211 229 212 201 172 201 158 213 216 +206 177 136 136 165 175 192 211 218 215 198 161 +127 98 93 124 162 189 197 202 192 167 137 169 +182 196 188 172 118 89 109 148 170 177 164 168 +141 192 213 208 177 202 196 188 165 171 114 97 +131 180 178 147 96 138 80 153 213 200 195 188 +106 60 100 188 189 178 200 221 204 161 108 148 +111 58 104 72 75 139 210 129 83 117 97 106 +84 181 166 155 153 115 136 89 117 150 124 169 +140 69 78 65 85 69 106 64 48 53 48 54 +77 41 105 88 167 140 177 134 111 148 180 141 +154 159 167 172 178 187 182 145 189 178 135 191 +157 74 59 86 177 192 161 198 186 182 118 189 +208 159 115 138 107 105 87 55 54 44 43 125 +145 65 74 80 69 102 107 88 98 74 86 78 +74 98 115 145 141 138 120 130 127 72 54 100 +75 56 34 28 60 97 161 158 149 86 116 139 +110 129 119 107 110 111 84 102 84 86 157 131 +107 121 165 165 178 167 153 108 115 160 76 116 +135 140 130 127 124 131 148 147 127 125 92 92 +74 119 147 167 197 131 175 140 126 151 146 160 +130 70 111 77 63 53 54 103 47 75 78 103 +123 144 151 125 57 54 53 56 59 59 48 54 +56 59 72 73 109 117 134 150 136 145 166 178 +176 155 138 117 133 116 136 110 123 113 105 86 +83 85 90 74 69 89 59 125 129 146 144 153 +98 85 65 66 90 58 66 59 87 92 75 92 +120 117 64 116 158 146 156 125 135 109 99 135 +151 107 98 97 116 123 128 162 82 102 135 79 +83 103 176 145 58 158 151 120 134 136 129 124 +157 97 83 92 103 161 205 117 62 84 92 120 +166 144 111 88 113 120 78 106 105 109 141 158 +171 148 134 182 209 207 213 219 207 185 192 185 +148 128 139 139 179 151 95 116 117 108 138 155 +180 194 177 174 199 196 169 190 182 186 154 100 +104 96 104 120 171 174 181 195 218 215 198 181 +171 178 168 157 123 160 201 187 185 206 216 205 +188 136 131 131 141 171 178 205 162 138 135 135 +145 134 149 178 167 174 166 196 204 206 186 199 +180 133 96 154 210 216 205 150 80 53 103 160 +70 90 77 89 68 74 72 105 117 130 149 148 +131 85 88 136 177 188 169 167 156 149 129 135 +100 69 49 47 53 129 135 121 107 78 73 136 +184 171 156 98 129 134 102 126 167 197 171 178 +204 216 217 212 181 150 130 131 159 164 145 117 +94 106 119 147 124 143 145 149 147 98 84 78 +107 121 93 97 148 166 167 197 198 194 171 162 +159 161 145 205 210 111 109 140 167 164 116 99 +123 150 123 147 120 103 123 92 89 149 178 136 +138 167 176 103 67 55 127 65 75 102 135 140 +188 204 172 56 83 109 79 110 143 139 144 135 +75 165 151 129 155 148 151 151 92 125 135 82 +80 63 79 86 123 69 47 48 104 54 89 65 +106 100 90 96 166 151 184 124 87 151 138 150 +176 182 172 144 131 161 150 160 140 166 210 192 +93 80 69 105 145 126 141 106 114 96 89 100 +138 138 96 58 34 82 74 42 43 59 85 105 +100 133 125 138 159 155 134 136 124 153 117 130 +100 149 153 104 105 78 55 44 34 45 43 37 +47 82 167 166 191 172 80 127 129 156 113 118 +89 87 93 86 66 42 89 89 88 107 140 145 +156 176 167 113 92 110 88 106 118 111 145 123 +103 144 181 148 121 110 125 119 76 58 66 171 +197 141 171 177 129 133 202 170 146 93 117 131 +120 123 75 59 79 70 80 92 49 42 33 38 +53 64 70 98 105 96 107 93 95 106 99 106 +117 129 128 102 97 102 113 110 143 124 123 105 +117 118 157 168 172 186 187 190 151 151 179 195 +170 170 124 160 179 108 110 113 80 53 48 44 +39 46 39 43 56 67 100 115 130 111 144 143 +145 140 155 116 172 134 82 83 77 107 82 118 +169 174 83 110 190 185 158 124 137 140 76 113 +106 160 129 59 67 69 80 87 102 124 133 147 +124 107 100 114 92 73 100 95 154 209 209 148 +111 154 138 119 141 113 85 100 150 192 205 196 +204 194 146 134 146 189 206 211 210 182 170 169 +175 179 160 136 113 131 86 161 194 156 168 181 +159 198 198 208 213 230 229 212 222 219 216 182 +166 143 165 140 158 168 179 199 166 136 86 94 +135 164 195 208 215 227 192 185 196 207 209 213 +215 179 145 191 191 167 144 110 138 172 201 221 +229 223 207 185 143 78 64 67 146 192 199 202 +161 96 58 56 58 69 155 181 +51 43 48 55 +39 72 54 58 62 52 56 133 114 126 123 98 +99 139 180 204 179 92 86 115 102 137 192 186 +131 86 154 155 76 119 150 70 104 111 169 200 +179 182 162 118 75 70 45 49 94 118 149 166 +172 164 170 123 159 204 221 222 210 207 213 206 +195 204 201 171 169 128 88 69 66 85 116 124 +159 145 128 167 161 134 137 137 115 92 148 187 +119 141 201 223 225 177 133 115 140 135 102 83 +136 176 154 155 169 143 141 148 103 125 169 105 +48 103 150 100 57 44 102 171 204 135 157 63 +75 72 189 195 138 175 148 124 140 165 108 194 +130 135 114 116 134 167 176 95 123 130 84 137 +98 43 41 28 36 41 58 52 128 86 92 125 +123 151 178 187 137 94 88 85 95 145 107 59 +147 106 113 202 185 145 148 189 145 161 146 68 +136 98 59 57 111 104 115 157 150 156 137 104 +159 175 103 98 74 76 86 98 134 199 143 174 +120 80 51 78 65 141 120 155 156 124 103 93 +138 99 54 64 54 62 65 38 103 88 148 67 +95 155 172 165 107 131 129 95 113 63 74 83 +93 111 137 137 78 102 151 190 194 207 168 80 +83 158 78 85 143 94 119 123 107 106 116 151 +137 104 116 115 129 87 49 103 156 141 172 180 +137 148 135 145 172 128 174 124 99 119 43 43 +76 74 45 34 44 38 80 89 108 111 120 139 +133 167 171 154 143 144 155 164 171 167 177 178 +177 179 182 176 169 166 154 150 157 138 127 128 +115 117 103 96 65 66 60 59 73 56 62 49 +44 41 39 31 33 42 51 38 51 44 56 68 +89 92 66 141 95 64 110 75 95 115 146 155 +135 115 117 151 139 139 130 79 89 82 136 107 +104 162 137 111 105 130 116 78 158 181 111 73 +93 85 80 104 84 133 130 196 149 136 128 106 +78 99 77 66 73 104 199 226 175 137 146 158 +158 147 123 151 127 86 108 116 159 160 161 170 +176 167 160 137 109 126 154 135 127 129 111 151 +113 102 97 139 107 116 143 129 139 166 206 228 +237 221 216 209 197 179 182 170 181 211 204 198 +219 218 185 164 168 133 151 144 182 198 195 172 +146 184 202 233 241 243 246 247 233 221 145 97 +128 131 106 118 175 205 194 158 156 189 180 153 +131 179 180 162 186 141 99 116 105 83 76 66 +72 128 111 64 +47 88 43 54 64 75 83 94 +138 92 128 117 117 127 105 144 156 141 107 75 +87 86 67 95 113 134 168 162 188 155 154 189 +185 118 157 194 148 117 125 114 116 178 223 236 +229 212 176 108 123 109 83 79 60 67 107 75 +67 95 123 146 158 165 159 187 202 186 171 170 +213 204 159 123 83 80 102 77 66 83 86 114 +80 82 104 174 181 184 210 171 215 221 217 175 +125 116 179 207 197 205 207 197 171 165 166 190 +186 206 167 99 136 179 164 118 139 137 107 162 +118 162 200 189 125 87 140 149 64 119 172 159 +140 174 175 156 133 153 209 191 160 158 82 170 +156 133 104 128 181 144 77 79 68 86 99 59 +67 43 56 69 77 42 65 64 59 39 56 74 +86 176 197 157 147 123 65 72 140 83 92 131 +110 77 111 106 150 154 149 86 135 136 121 139 +107 76 108 92 65 72 41 62 107 108 64 121 +162 171 165 184 127 97 57 60 48 44 60 115 +167 158 171 146 114 114 78 76 75 52 38 58 +64 78 82 52 84 79 144 134 134 90 140 162 +137 105 114 123 89 69 72 77 118 97 162 100 +90 70 129 143 143 171 133 99 138 177 109 144 +147 105 117 114 99 127 116 167 149 128 131 135 +113 52 52 79 158 182 161 198 160 88 179 124 +111 100 93 55 89 51 44 47 45 52 38 38 +51 65 121 126 138 161 144 159 175 174 185 178 +177 181 180 186 189 189 185 187 190 192 189 190 +190 188 180 189 185 181 187 187 179 175 157 143 +124 125 99 90 85 74 48 66 70 47 53 39 +32 36 52 74 102 129 69 84 133 148 103 64 +90 105 93 126 115 76 128 113 97 106 139 121 +88 117 79 133 77 161 199 148 117 93 106 99 +147 130 124 156 103 137 144 88 85 105 86 89 +82 86 88 121 188 172 120 135 134 124 76 73 +65 73 106 198 211 191 167 196 223 225 213 220 +225 206 185 134 148 148 161 156 158 167 155 157 +153 171 172 129 114 129 119 133 143 187 207 195 +177 140 130 157 135 125 114 140 147 143 148 180 +197 189 200 180 130 155 178 198 202 200 188 143 +136 123 149 134 119 151 151 218 231 228 216 196 +176 149 136 164 182 190 182 166 185 192 201 209 +188 168 182 156 84 134 192 206 207 221 213 211 +219 217 226 207 212 188 174 169 172 119 102 87 +36 34 62 64 59 70 118 138 153 119 156 185 +162 155 197 212 199 182 148 131 73 103 150 134 +125 113 155 135 107 159 165 147 151 171 137 164 +170 157 179 168 155 130 140 206 216 197 204 206 +184 174 174 185 171 168 97 130 158 165 161 149 +165 217 212 210 189 168 171 198 200 136 162 191 +197 195 190 192 165 175 171 194 179 196 209 205 +196 170 168 174 171 125 97 116 185 188 206 200 +218 198 157 100 138 194 184 174 188 185 199 204 +195 204 153 126 121 68 73 135 191 185 109 65 +121 105 196 189 90 111 184 73 121 104 128 120 +181 185 192 164 96 86 147 144 147 126 172 128 +140 94 126 113 47 47 86 73 109 74 68 67 +47 36 52 59 103 86 60 69 77 107 114 177 +195 211 170 125 85 111 55 79 66 87 33 58 +72 88 80 92 131 161 145 176 141 106 87 55 +90 73 90 92 82 128 149 144 143 84 100 82 +53 37 43 64 77 78 138 118 124 87 85 64 +58 57 78 41 74 86 60 39 93 62 48 60 +60 134 168 136 147 206 118 65 95 95 155 131 +72 96 44 56 106 79 96 64 73 94 118 213 +209 215 180 168 162 180 119 145 135 119 146 127 +83 128 145 180 187 139 100 123 79 58 72 83 +171 143 151 188 204 171 161 160 141 79 103 106 +64 44 41 59 60 73 47 80 72 118 131 164 +169 182 189 194 189 189 184 176 185 190 181 184 +191 186 195 198 196 192 202 196 202 199 189 195 +195 186 190 188 182 179 184 180 188 187 175 174 +162 156 141 103 115 100 75 33 49 56 64 60 +46 60 55 45 93 98 96 73 56 78 125 93 +102 107 103 72 103 115 72 77 69 103 196 155 +178 154 208 212 116 126 128 74 89 136 166 167 +174 169 117 103 104 134 113 92 92 180 200 166 +115 133 103 87 154 181 170 111 82 115 102 77 +156 164 149 145 197 188 150 144 128 164 216 223 +197 143 120 133 158 137 108 130 137 170 172 146 +117 111 109 149 135 139 182 204 212 225 231 238 +231 219 199 209 223 217 212 202 207 210 194 169 +141 153 170 146 166 196 199 178 160 111 115 121 +134 172 205 218 219 221 215 211 194 184 184 192 +170 182 194 178 168 195 181 146 150 187 118 169 +161 155 175 165 167 167 160 126 136 141 177 140 +160 185 205 197 191 108 58 79 +66 38 46 92 +89 45 78 110 151 162 102 120 170 202 170 158 +154 170 177 143 104 126 135 131 145 129 115 90 +99 156 126 181 187 168 184 133 177 165 131 156 +114 74 84 106 156 170 150 123 155 176 188 188 +189 216 215 217 208 192 201 210 207 170 134 139 +174 186 175 145 106 67 97 115 139 160 141 131 +130 130 140 153 167 195 161 103 89 135 168 174 +187 204 180 199 196 184 167 181 160 153 140 186 +201 188 127 100 165 210 179 156 211 144 160 164 +141 87 114 181 141 75 51 54 94 185 180 144 +123 207 170 164 88 60 63 86 140 144 148 75 +105 150 109 186 149 103 178 140 97 159 156 128 +96 54 60 64 96 65 72 72 51 52 46 39 +73 86 69 65 60 65 44 62 76 67 85 131 +102 56 129 140 135 117 161 137 147 99 106 87 +41 62 68 38 76 54 65 68 89 116 103 128 +109 64 47 41 45 28 54 60 45 92 62 65 +67 52 45 56 48 49 83 53 47 54 54 67 +115 73 59 36 92 80 67 95 104 126 186 118 +120 137 133 168 127 123 190 149 99 69 48 46 +66 98 90 141 106 92 117 200 176 209 158 194 +149 141 102 123 124 106 125 116 111 109 127 149 +209 155 103 125 161 59 53 95 93 179 111 174 +165 156 117 124 67 57 129 72 48 34 33 56 +51 66 104 117 144 164 181 168 166 195 192 185 +180 184 190 195 181 187 184 185 198 188 196 195 +192 192 197 204 202 202 197 194 192 188 198 187 +195 186 178 174 188 191 189 192 194 188 192 186 +165 177 157 140 126 65 45 41 55 48 58 66 +72 68 66 80 125 65 110 83 145 135 137 109 +70 70 121 136 118 189 149 98 109 87 83 180 +187 167 167 108 138 97 105 146 194 127 118 89 +137 164 103 67 95 107 186 205 187 123 113 149 +106 126 167 169 175 133 126 118 125 117 103 104 +113 159 199 187 172 110 115 185 212 191 113 87 +89 166 171 134 126 147 197 222 228 215 202 187 +148 119 111 83 94 147 184 175 154 153 189 189 +187 157 153 139 161 182 164 125 151 191 178 194 +199 209 212 218 200 190 162 154 126 103 108 109 +107 134 139 175 215 233 229 181 189 196 179 118 +130 159 159 148 93 90 127 165 178 179 157 167 +160 125 128 143 144 113 124 160 156 70 58 56 +54 76 96 105 +111 89 36 46 111 107 78 135 +144 114 136 73 97 139 191 196 144 72 60 64 +67 131 180 180 196 174 104 124 139 148 138 189 +201 201 197 201 151 137 143 177 191 191 167 107 +93 83 118 151 165 151 104 56 69 115 162 166 +148 166 172 182 184 191 210 204 182 153 177 128 +148 143 157 166 206 212 200 186 176 134 113 107 +107 148 109 159 196 145 156 180 189 166 161 151 +124 172 208 198 175 191 217 200 92 80 121 185 +185 153 113 197 166 195 190 148 144 172 175 121 +58 68 72 146 133 96 138 113 190 186 114 131 +116 162 171 59 108 92 96 126 75 69 153 182 +120 149 131 145 135 125 109 99 103 128 121 80 +98 107 95 67 67 55 75 66 52 56 53 56 +53 48 62 76 80 115 90 65 42 32 53 54 +102 70 73 70 64 69 46 63 43 53 60 65 +65 64 60 53 63 54 60 67 57 84 56 75 +95 57 64 55 48 48 51 44 67 43 38 37 +37 51 45 70 82 85 52 77 102 118 54 68 +94 79 119 114 156 118 197 202 148 98 85 120 +144 120 140 110 88 89 76 63 49 48 60 73 +46 75 72 151 156 148 133 109 99 133 125 134 +119 95 135 144 131 120 141 176 186 110 121 141 +159 84 78 63 121 98 129 131 172 174 131 97 +65 141 126 46 27 42 46 42 67 116 128 136 +168 191 182 186 200 190 187 190 190 198 187 190 +190 199 197 188 190 188 191 179 179 202 207 200 +197 195 196 194 204 191 192 191 190 194 196 187 +200 199 196 185 188 185 181 185 174 172 179 181 +165 128 93 68 67 89 64 76 73 52 64 69 +96 87 84 92 155 141 136 115 92 80 130 103 +97 138 143 128 136 99 156 78 99 105 99 120 +85 79 139 170 157 181 100 76 98 138 161 92 +68 97 117 135 145 180 168 95 129 130 150 168 +118 140 133 118 140 134 134 176 138 103 120 185 +209 171 158 138 134 169 188 150 144 127 162 201 +195 170 174 184 166 189 212 225 221 222 185 172 +149 118 151 178 155 141 128 185 220 218 218 191 +139 161 175 181 141 104 111 131 171 181 201 213 +231 241 233 233 217 188 174 178 190 222 231 223 +217 200 191 150 161 145 155 149 140 121 107 138 +114 82 66 73 65 75 97 99 147 191 194 150 +141 153 147 94 86 124 140 141 100 75 107 99 +155 159 126 47 44 147 136 68 125 184 199 137 +140 129 135 177 213 150 85 85 90 83 123 97 +171 189 141 186 215 217 194 171 153 187 215 221 +211 179 202 221 212 153 185 196 166 138 164 161 +104 154 192 192 166 149 174 192 209 225 229 223 +218 204 194 197 175 141 129 110 120 179 209 226 +219 199 177 140 157 151 118 156 171 124 115 92 +84 73 87 111 86 95 106 169 170 197 167 135 +195 218 172 119 135 194 191 144 130 84 168 136 +168 137 147 134 197 189 88 75 98 140 176 201 +108 140 197 180 135 82 92 75 110 182 117 54 +99 77 87 149 115 100 66 80 94 117 117 125 +94 120 94 147 75 70 137 129 79 84 77 78 +74 130 57 70 121 105 102 60 39 45 64 47 +54 44 44 48 36 41 38 37 47 46 65 52 +73 67 84 65 100 109 94 84 78 89 87 83 +87 114 107 123 130 134 133 140 160 127 113 106 +96 70 63 51 62 46 48 41 37 51 38 41 +66 43 73 53 73 74 63 76 75 129 155 42 +77 140 149 159 171 111 77 70 68 105 159 89 +74 79 92 83 65 52 52 74 60 87 115 174 +190 211 159 119 150 166 126 137 136 106 131 153 +165 140 146 138 164 172 138 107 156 138 88 73 +148 103 182 130 164 161 93 98 99 62 36 41 +48 44 57 57 130 154 181 204 188 186 189 204 +192 184 189 199 191 178 179 191 189 191 191 194 +200 200 189 187 190 201 208 201 194 189 196 196 +205 207 202 198 191 191 188 191 194 199 186 188 +190 194 190 200 187 188 181 178 169 166 137 103 +130 113 106 96 92 117 97 104 95 106 94 85 +69 110 102 99 82 70 86 107 116 74 146 139 +208 164 158 123 148 100 66 67 126 118 93 211 +171 128 174 119 82 94 136 180 97 104 113 135 +153 128 177 166 87 86 123 146 151 92 66 110 +176 180 118 179 210 172 155 150 113 189 194 167 +175 177 164 166 188 191 151 143 199 208 207 228 +225 227 212 191 161 170 167 147 123 155 189 222 +231 235 226 232 213 199 181 161 107 121 134 136 +154 156 180 159 167 164 145 131 139 171 189 187 +158 158 171 180 223 223 195 172 138 134 157 150 +145 160 195 207 205 155 127 117 84 70 94 105 +121 145 191 202 211 218 213 186 162 155 167 141 +188 211 210 154 130 124 134 115 +108 195 195 123 +23 63 107 59 56 103 172 197 128 194 186 147 +201 212 181 129 102 53 48 56 85 118 158 174 +119 159 167 156 158 137 139 171 195 180 181 177 +207 200 157 111 131 111 161 182 188 197 172 145 +141 196 206 196 190 174 135 118 150 158 157 137 +131 133 177 195 211 228 232 236 230 218 215 207 +210 153 150 182 206 172 156 149 127 156 157 135 +156 191 172 166 144 165 138 181 197 128 58 63 +139 138 59 78 84 148 185 146 109 159 131 168 +171 77 88 94 181 221 181 118 171 204 118 90 +116 158 117 126 159 94 33 114 85 131 190 79 +63 147 195 100 69 156 181 103 179 144 110 98 +100 97 143 119 78 54 74 134 60 74 60 95 +126 120 131 103 41 37 45 51 46 65 121 96 +53 45 84 103 97 98 160 94 98 92 69 99 +89 59 85 100 126 111 124 125 94 136 153 158 +155 167 150 176 172 165 174 144 109 118 118 98 +73 66 56 54 44 31 34 36 57 74 49 62 +96 83 98 93 120 63 96 106 194 191 144 133 +179 180 92 134 155 139 129 99 105 63 70 102 +66 49 66 84 115 140 114 154 188 209 205 137 +145 192 166 184 141 125 143 148 166 130 131 139 +174 161 140 108 144 171 83 63 43 84 117 147 +115 158 130 89 68 49 65 49 54 62 49 82 +120 166 187 174 182 198 192 177 181 186 198 195 +184 190 194 196 197 197 198 205 195 194 194 189 +198 192 190 200 202 195 201 208 204 198 195 194 +201 197 197 209 207 196 188 188 182 192 186 180 +186 181 182 171 175 168 149 128 158 187 149 156 +161 158 151 126 136 140 120 79 76 118 87 87 +58 83 90 85 149 185 161 95 118 121 74 82 +76 128 75 62 167 134 126 135 164 82 127 157 +159 109 79 107 141 166 170 148 161 178 184 160 +133 131 125 127 120 144 111 83 98 178 199 128 +144 181 178 156 153 149 158 146 153 196 201 200 +195 201 186 200 188 199 211 227 216 174 164 189 +197 197 194 161 159 159 114 102 99 128 137 169 +211 223 237 236 235 220 225 218 215 206 207 191 +157 190 230 228 213 208 190 209 191 209 222 232 +223 215 199 202 210 198 162 174 182 167 159 118 +78 102 147 145 141 137 190 221 222 212 190 174 +155 129 137 178 161 168 127 110 144 187 186 176 +168 126 157 145 +72 102 145 161 95 41 39 63 +48 58 155 212 200 160 209 200 154 127 172 187 +184 191 159 154 176 176 197 213 216 175 161 187 +206 200 174 149 102 75 138 126 82 110 133 175 +195 164 192 199 209 222 212 189 195 196 187 169 +159 144 138 107 85 96 106 60 145 186 190 202 +211 218 215 207 205 187 196 201 209 174 113 105 +100 121 149 174 187 184 181 171 185 167 189 194 +211 158 156 123 87 62 69 62 65 121 158 134 +167 176 93 74 98 99 126 162 150 114 102 169 +207 166 99 162 134 96 93 47 123 160 191 114 +130 97 33 60 128 172 176 76 125 140 149 63 +109 169 107 170 185 117 130 162 159 95 74 105 +89 109 88 113 106 73 65 68 59 82 62 68 +88 83 55 89 93 118 105 99 85 88 77 108 +105 93 106 60 53 64 63 72 72 75 85 103 +117 123 98 114 114 120 137 179 180 175 196 195 +189 190 205 177 187 155 144 135 156 156 137 87 +49 29 31 35 28 39 38 43 129 118 70 125 +99 93 113 73 118 164 189 121 149 161 130 113 +195 161 134 124 118 47 56 65 49 42 97 131 +116 164 133 200 165 161 184 156 162 159 133 136 +159 138 169 120 157 143 130 129 170 165 165 119 +106 106 83 80 70 77 96 104 92 110 96 128 +77 27 36 45 39 52 62 83 114 141 174 188 +194 190 177 195 177 170 189 187 188 195 195 194 +197 201 197 197 204 192 191 201 192 199 195 205 +210 209 207 197 202 204 201 204 206 205 202 205 +195 189 191 182 185 187 180 176 178 188 186 174 +176 167 176 145 138 172 169 159 166 147 150 159 +120 124 83 76 77 107 67 68 116 92 130 124 +151 179 153 85 129 89 107 123 147 76 70 65 +77 153 159 107 93 58 84 87 124 161 111 131 +95 164 210 179 129 140 172 188 211 154 121 100 +88 94 139 127 92 76 125 137 103 105 150 209 +211 220 211 199 151 194 179 134 172 190 176 171 +154 160 162 204 230 237 220 190 164 166 164 161 +149 158 185 174 171 118 117 148 187 170 144 156 +191 213 205 184 188 201 199 207 215 218 199 165 +145 184 207 226 219 181 141 128 167 194 172 139 +102 168 164 156 170 181 205 210 211 216 221 230 +218 212 220 195 189 153 160 174 168 192 205 192 +201 182 162 133 105 70 95 120 104 114 94 66 +68 88 67 88 104 79 38 25 47 64 105 180 +208 128 140 179 219 195 139 126 160 169 155 149 +147 113 128 153 168 153 104 85 141 171 217 219 +186 136 113 116 83 72 69 108 133 146 175 166 +164 168 170 166 158 160 164 138 109 107 90 148 +162 170 179 155 156 123 131 117 98 130 167 196 +219 209 169 141 147 109 141 174 153 165 184 182 +188 185 190 218 204 175 168 196 175 194 200 179 +158 130 125 137 128 139 153 181 187 93 103 115 +79 63 134 158 118 148 168 179 100 102 110 97 +128 116 72 121 119 167 171 155 143 49 69 103 +151 139 162 85 95 76 69 72 128 88 174 149 +126 107 70 110 84 88 83 117 77 74 84 86 +95 53 62 47 58 53 52 62 41 51 43 35 +56 49 56 63 64 63 63 65 65 55 52 57 +88 93 77 89 87 69 65 76 103 110 108 123 +114 133 127 124 178 184 176 205 206 216 212 206 +201 199 178 192 205 164 156 126 57 38 45 23 +23 27 51 64 111 96 53 116 56 119 135 52 +160 199 209 176 147 124 108 139 141 149 114 111 +104 44 45 47 31 48 109 157 121 180 168 174 +168 169 184 186 151 141 107 109 141 133 126 115 +164 144 158 137 140 181 199 160 123 121 125 88 +73 52 59 116 80 109 109 76 37 34 43 43 +48 49 53 69 58 119 164 189 180 186 200 196 +192 191 197 191 185 187 195 201 202 200 205 198 +192 200 201 195 208 206 210 211 202 206 206 207 +210 198 189 195 195 200 199 188 201 190 181 166 +159 167 157 153 169 180 167 160 154 154 170 176 +154 128 128 148 130 131 103 121 100 124 100 72 +75 56 44 86 136 90 105 166 128 174 143 149 +125 82 121 103 136 116 68 86 96 76 149 104 +60 80 95 82 171 155 145 162 74 116 149 216 +177 83 97 93 117 118 110 140 145 135 179 196 +174 110 119 170 117 78 79 98 157 208 216 220 +222 201 200 206 157 169 175 109 106 166 192 176 +189 197 198 220 222 223 236 225 206 211 223 211 +222 202 190 187 157 197 218 190 201 168 143 136 +196 210 200 180 139 146 156 160 206 229 221 226 +238 239 228 199 182 158 167 180 156 164 178 179 +204 199 185 210 220 232 242 229 198 199 211 201 +198 188 186 168 116 121 100 116 129 134 135 115 +109 110 99 104 90 102 90 107 +54 106 133 84 +108 136 107 76 53 47 151 192 185 190 145 117 +165 220 215 179 162 128 113 151 154 150 168 103 +82 104 138 161 89 53 85 146 175 149 118 131 +147 92 108 82 95 124 79 105 168 165 180 198 +199 177 111 93 75 78 68 63 48 52 59 103 +118 147 150 133 168 190 194 206 187 136 151 141 +135 176 184 180 168 190 212 231 236 231 226 221 +186 146 196 209 199 192 194 176 161 159 150 176 +202 162 156 135 89 67 58 87 68 115 116 106 +111 118 107 60 67 75 87 182 185 94 180 178 +96 94 175 177 68 100 174 154 47 64 117 117 +77 85 150 83 79 127 158 164 96 129 65 51 +84 102 94 98 97 83 73 66 57 59 72 49 +62 72 45 42 32 29 53 52 52 62 68 97 +96 83 96 97 103 110 124 109 110 141 129 108 +127 140 133 124 118 145 133 111 106 88 94 109 +128 149 178 178 205 191 211 177 192 205 197 189 +206 199 191 188 147 70 73 68 29 31 19 36 +77 70 37 82 60 102 86 60 177 207 196 164 +129 151 164 157 187 162 102 84 48 37 38 73 +37 34 126 141 69 115 159 185 181 205 168 106 +111 121 110 111 124 151 137 126 137 143 162 141 +133 136 120 110 126 125 102 95 75 52 110 115 +125 96 128 131 51 21 29 35 23 46 60 56 +82 154 177 180 191 202 191 191 192 196 196 205 +209 206 216 210 213 216 215 207 213 209 209 204 +205 216 213 207 212 213 209 202 196 194 188 184 +180 185 184 191 199 176 165 165 180 186 171 172 +177 165 146 150 124 130 141 143 151 145 117 143 +144 158 115 113 103 96 95 121 98 63 72 144 +154 151 118 149 140 105 158 197 168 119 186 179 +103 76 77 174 166 70 74 111 70 73 86 111 +87 84 60 78 77 78 72 130 202 157 82 110 +120 124 129 89 93 97 145 198 229 204 174 189 +185 176 154 124 131 110 139 156 199 202 169 174 +190 176 176 213 178 153 171 165 159 157 170 216 +209 168 185 208 187 170 156 146 166 159 160 198 +209 164 165 160 185 185 218 217 232 230 211 198 +206 201 180 204 187 171 176 174 171 184 194 208 +215 215 215 201 222 221 215 148 137 147 105 94 +158 205 195 149 98 58 63 69 60 64 68 70 +131 184 201 200 191 204 217 222 210 197 158 148 +109 113 126 120 +98 76 162 195 141 115 88 103 +78 94 117 145 212 199 191 190 80 105 169 176 +144 172 156 110 98 94 149 179 160 89 120 169 +180 123 86 63 111 140 141 107 127 153 158 145 +138 117 85 103 158 159 196 208 200 206 198 208 +209 206 204 202 177 76 76 105 107 149 165 165 +184 165 172 205 223 222 212 189 190 213 217 204 +196 184 199 186 160 120 107 111 147 197 186 182 +128 110 166 139 148 140 205 187 190 129 97 120 +158 109 118 111 89 86 102 69 77 87 124 137 +79 120 205 209 115 170 154 55 115 179 170 82 +135 185 124 57 82 95 120 127 124 119 97 72 +162 69 79 100 77 60 52 58 64 80 78 65 +49 56 83 75 44 48 106 58 43 44 60 66 +79 78 92 88 97 102 92 129 114 123 149 165 +159 156 154 170 171 176 161 160 158 165 167 176 +175 165 166 167 165 151 159 154 138 165 165 156 +149 175 196 202 180 197 185 207 218 217 210 207 +191 150 108 67 55 36 17 43 56 41 28 43 +117 174 157 102 182 139 139 159 107 176 125 175 +161 172 90 95 64 46 48 36 42 28 45 104 +88 72 104 124 167 189 149 144 158 178 123 102 +116 154 125 123 110 129 136 145 146 109 133 195 +131 169 127 68 80 60 54 55 86 100 88 117 +39 36 37 43 57 48 56 64 76 130 179 194 +187 189 190 188 197 204 210 212 208 223 221 219 +219 211 208 210 220 221 227 221 212 218 226 223 +218 204 202 200 207 197 188 185 199 202 189 177 +171 145 136 170 160 143 128 128 115 111 111 105 +104 93 114 136 100 95 93 102 99 121 96 82 +93 80 67 80 72 68 109 115 126 138 103 162 +143 153 172 115 83 85 87 92 129 120 63 138 +164 58 73 172 167 161 128 182 160 83 62 60 +75 125 78 59 100 134 73 115 119 104 124 154 +116 128 116 76 133 174 202 165 216 204 200 176 +123 109 119 120 117 130 192 161 145 150 197 200 +135 178 161 168 168 165 177 226 220 218 206 191 +194 205 227 220 232 218 211 192 149 134 180 181 +123 172 220 220 209 217 220 212 231 208 167 207 +187 147 169 128 127 176 204 210 180 155 134 221 +235 235 227 171 189 210 159 124 161 106 135 187 +179 136 149 195 145 125 75 66 55 72 68 83 +90 113 136 202 181 141 103 95 102 150 129 105 +103 140 94 148 151 148 168 110 78 65 79 108 +103 151 195 197 138 77 84 102 154 155 177 168 +85 75 66 94 174 182 129 119 199 217 204 199 +178 124 138 117 93 84 97 107 107 59 80 110 +88 108 120 110 115 119 134 164 189 205 184 128 +150 159 98 114 130 145 143 129 165 187 211 197 +207 218 230 232 213 192 180 128 135 110 114 89 +92 107 191 199 194 148 146 110 139 181 188 155 +180 177 179 156 106 125 147 181 140 68 105 117 +189 158 89 74 120 117 139 119 80 159 153 89 +82 80 111 111 105 111 108 80 153 125 131 154 +113 128 76 108 96 66 96 85 102 127 89 121 +47 68 99 92 47 57 31 45 62 68 95 54 +48 57 52 55 59 77 120 116 111 128 127 135 +134 141 127 144 154 165 168 172 180 168 166 170 +164 170 175 181 182 196 182 181 190 170 179 171 +171 165 175 170 178 177 162 157 167 166 167 180 +192 195 177 200 209 208 207 212 201 190 159 93 +66 62 39 49 57 123 72 89 169 187 125 160 +192 118 108 143 148 161 175 197 145 113 97 85 +74 73 57 53 86 56 31 48 84 77 99 179 +204 208 145 137 155 138 106 86 111 136 118 134 +120 149 120 128 111 123 128 190 168 128 109 100 +134 62 56 68 88 114 90 73 46 45 51 39 +52 59 57 86 67 119 162 153 165 195 199 202 +206 205 216 219 211 210 227 229 218 215 218 230 +223 225 222 221 211 211 201 195 190 202 213 208 +201 197 184 184 170 167 162 156 151 139 128 113 +111 130 111 115 111 100 102 93 96 88 98 90 +67 79 68 96 88 90 51 59 38 41 97 67 +100 126 118 149 137 105 131 160 153 133 158 57 +78 106 115 127 138 107 86 68 120 136 121 80 +165 205 160 124 172 126 117 96 68 96 105 48 +80 83 129 159 148 159 155 170 157 151 182 179 +93 59 85 166 153 155 167 167 159 134 109 105 +107 103 147 192 161 86 119 196 195 177 169 169 +182 215 219 219 204 218 220 189 191 177 165 181 +159 172 190 204 204 201 204 194 190 195 208 222 +228 223 227 218 198 185 169 191 154 139 145 149 +191 185 172 178 149 129 118 97 103 96 87 96 +144 185 177 167 171 103 92 88 191 194 123 149 +145 116 65 43 44 62 52 96 155 184 190 151 +109 93 78 70 70 87 94 84 +63 115 143 89 +105 82 113 150 125 64 63 67 59 68 118 172 +187 137 157 107 84 79 130 148 127 96 79 98 +156 172 200 205 161 191 216 219 226 211 172 145 +84 144 135 79 83 86 100 169 184 204 206 199 +191 222 226 210 192 169 114 79 88 89 94 98 +135 158 179 158 185 178 168 154 195 207 223 219 +200 209 217 229 213 191 186 127 89 161 166 137 +104 175 212 226 229 205 185 166 115 80 119 161 +174 176 220 176 103 106 148 192 179 106 55 92 +86 108 95 79 108 171 138 60 68 123 164 148 +117 184 135 124 143 82 106 167 156 79 90 54 +55 65 135 108 59 87 56 55 68 39 83 65 +64 54 63 51 66 74 74 60 56 57 64 73 +93 93 121 135 145 135 128 148 127 130 134 137 +172 182 181 181 178 181 179 177 172 184 184 176 +185 169 189 177 186 188 180 186 189 181 188 180 +184 188 188 188 182 177 181 176 160 178 204 204 +197 213 201 192 201 197 192 141 82 57 51 35 +72 83 69 83 111 137 83 186 213 141 138 150 +135 118 137 195 171 97 137 84 58 53 48 44 +53 43 58 57 98 77 102 149 172 220 157 109 +154 128 108 121 120 135 134 124 113 149 144 174 +169 144 156 194 179 157 150 72 100 49 52 48 +63 116 74 56 92 47 42 64 68 83 62 80 +89 146 178 190 207 211 195 215 213 204 217 207 +206 210 212 216 225 232 231 222 211 213 212 207 +198 196 204 208 202 206 205 191 181 176 165 156 +154 139 136 143 144 136 130 124 120 123 123 104 +108 104 104 115 125 87 86 79 72 69 76 64 +58 47 47 34 65 74 165 92 58 74 84 65 +79 90 100 98 87 93 64 58 89 120 140 114 +147 90 124 103 63 108 84 82 67 147 207 160 +138 138 83 100 126 109 90 85 79 64 86 77 +96 169 219 204 186 137 107 167 197 148 105 85 +118 117 175 179 149 177 182 175 131 108 118 166 +205 218 217 209 222 227 191 182 147 144 161 195 +196 215 236 206 198 192 190 190 192 207 197 172 +198 195 182 175 153 126 105 115 110 114 133 164 +162 190 200 211 220 227 201 218 238 235 226 221 +209 172 135 137 144 169 220 223 231 218 170 105 +87 88 123 126 140 147 100 63 54 62 151 185 +179 200 213 226 221 202 156 109 130 120 124 133 +135 94 98 94 +32 51 89 136 128 141 110 138 +125 123 86 99 95 73 54 92 177 159 177 178 +188 184 186 176 144 155 156 113 92 107 130 166 +189 176 188 212 210 207 212 219 196 191 179 147 +106 157 138 114 110 151 171 191 180 201 230 231 +225 210 177 156 146 150 175 150 133 117 137 100 +127 103 117 105 171 190 211 220 185 160 133 160 +157 148 154 62 60 124 137 162 114 168 192 218 +215 162 111 128 164 192 138 166 168 213 190 80 +72 167 212 180 63 47 58 70 158 148 102 139 +151 178 108 62 150 167 151 145 160 167 65 121 +141 134 195 169 74 68 93 38 54 56 98 75 +51 38 45 41 67 67 92 53 92 95 51 41 +56 53 79 63 57 74 100 79 77 99 123 119 +143 140 139 137 170 160 157 175 181 185 180 181 +189 186 187 189 187 196 185 189 189 191 192 186 +189 178 181 182 186 181 189 190 186 187 176 174 +178 168 169 185 187 175 174 185 199 212 217 210 +208 181 194 137 89 62 45 39 56 77 63 95 +158 157 87 194 182 93 189 169 149 151 161 148 +79 104 130 68 53 48 70 39 33 75 75 86 +123 85 110 157 213 215 184 153 125 128 118 115 +137 121 135 135 134 133 128 145 157 113 148 170 +198 175 176 108 104 66 42 56 66 141 119 66 +53 38 37 44 45 44 57 68 107 127 140 182 +190 202 211 198 192 205 209 204 201 212 228 232 +236 232 226 216 211 211 208 205 207 220 215 210 +207 199 186 157 137 131 155 141 150 150 127 161 +157 134 119 130 124 120 125 146 136 146 180 141 +127 131 120 102 111 88 74 73 52 67 53 56 +66 62 133 80 68 54 70 80 64 64 68 59 +90 104 76 74 143 84 147 105 92 128 98 155 +88 199 146 136 74 59 92 141 84 90 97 83 +82 120 88 124 119 80 92 92 116 109 117 196 +225 209 134 106 187 216 208 209 196 164 124 166 +186 216 223 215 207 215 202 186 160 158 151 164 +175 164 192 202 177 147 141 140 123 167 186 209 +216 221 219 206 184 185 200 205 169 180 180 172 +175 162 174 168 196 209 221 204 177 205 198 187 +211 228 240 240 239 217 182 143 139 161 171 182 +197 186 208 201 211 206 198 180 146 98 99 108 +164 176 116 64 74 80 102 114 100 109 93 108 +87 117 176 156 181 167 164 131 105 93 89 90 +44 34 70 148 154 188 170 153 149 184 154 103 +97 141 108 78 148 148 138 134 97 87 115 158 +192 202 199 187 182 175 180 161 115 129 198 221 +204 204 220 205 200 189 194 188 137 144 156 145 +177 160 176 200 218 217 184 161 157 165 178 178 +182 195 187 191 201 200 186 140 123 110 136 167 +179 172 126 96 92 144 149 80 77 87 126 150 +129 93 119 155 185 213 235 221 169 169 162 129 +171 191 148 190 219 151 126 121 213 202 125 74 +47 41 58 113 88 141 74 99 172 164 104 164 +160 143 146 201 184 111 52 109 159 208 174 98 +166 167 75 49 80 46 138 88 53 62 141 120 +129 113 74 113 89 99 72 58 76 85 86 87 +65 75 84 95 64 89 114 104 129 133 157 147 +172 180 175 170 179 181 188 192 181 184 181 187 +169 171 176 175 188 197 190 181 196 185 188 196 +191 195 191 188 198 198 192 199 192 189 182 172 +171 174 165 185 188 195 205 200 198 170 147 128 +96 72 51 34 72 124 46 135 168 129 109 172 +121 82 129 100 131 178 174 195 113 124 153 60 +54 70 68 32 58 74 52 69 68 83 114 169 +207 189 135 108 89 120 96 121 148 121 135 141 +146 121 133 130 161 129 124 162 196 197 168 195 +153 64 79 53 48 143 99 90 43 44 39 62 +44 51 67 60 79 128 175 198 207 202 204 208 +219 212 210 221 230 231 231 221 223 217 211 206 +208 209 219 219 208 206 205 200 189 186 182 175 +180 137 156 162 154 158 171 160 160 164 159 157 +154 162 169 167 174 172 161 153 156 156 139 134 +131 105 105 102 92 89 77 83 53 78 76 62 +79 100 69 105 77 48 62 57 131 161 129 106 +119 130 66 78 80 166 143 90 92 126 177 195 +206 154 68 75 79 78 117 158 94 123 93 181 +181 156 150 131 87 157 175 157 117 155 158 127 +135 150 177 166 182 201 205 165 141 99 172 217 +225 201 176 194 215 220 212 188 171 156 155 133 +153 121 113 111 134 113 119 121 119 117 110 121 +139 154 175 196 199 186 182 207 205 151 178 165 +130 143 143 171 197 209 213 228 219 206 207 188 +147 139 161 129 145 168 223 227 225 199 181 219 +231 221 211 198 190 177 179 190 178 148 77 95 +95 88 107 126 126 149 190 213 220 208 190 141 +99 125 153 164 194 201 156 135 +118 133 100 84 +130 146 165 187 205 201 143 180 143 141 176 153 +123 179 92 76 62 59 102 102 118 149 159 157 +149 147 177 196 223 230 217 185 157 185 184 197 +217 149 80 79 66 75 90 74 129 110 140 159 +128 114 135 109 115 123 98 126 160 165 171 177 +189 216 221 190 218 218 202 162 151 150 172 145 +144 83 58 59 59 123 172 175 120 160 166 114 +191 190 140 157 143 161 202 189 206 207 204 200 +154 178 180 197 170 106 69 74 97 109 143 97 +118 86 38 66 109 72 133 186 149 95 146 121 +85 56 82 175 192 141 126 139 138 85 92 164 +146 107 141 162 65 144 167 143 120 137 56 60 +86 72 67 78 60 69 70 92 84 73 79 55 +55 67 83 92 86 107 130 144 160 172 179 176 +180 188 195 179 181 176 182 184 189 179 179 186 +188 196 195 182 195 198 195 188 198 189 186 198 +197 180 191 186 200 200 192 181 188 199 181 181 +157 169 196 211 195 181 189 150 113 74 69 72 +56 80 42 88 108 100 170 169 140 143 129 140 +171 174 150 143 190 97 115 63 48 73 77 59 +68 46 59 88 65 102 116 167 204 194 170 92 +79 62 82 131 144 134 134 143 135 131 127 145 +159 139 168 154 161 186 166 171 160 70 42 53 +65 95 70 39 35 43 44 63 70 52 69 86 +151 191 198 196 185 202 216 217 207 213 223 229 +229 233 232 221 215 215 221 210 209 209 208 191 +199 201 210 185 184 174 166 156 155 169 168 172 +166 168 175 176 170 170 178 176 179 181 171 168 +175 178 170 162 172 175 164 151 158 143 138 125 +126 118 139 140 95 98 96 98 118 123 117 90 +107 100 131 86 69 63 167 130 95 118 73 82 +106 116 151 104 108 137 110 164 205 208 144 84 +75 92 114 169 138 102 153 123 144 149 165 186 +169 138 143 169 195 174 147 160 180 195 167 147 +126 181 190 184 169 97 87 106 161 191 168 130 +125 153 143 136 140 125 111 87 92 79 110 158 +191 213 218 210 206 181 188 168 189 187 148 175 +209 225 232 229 206 166 131 135 168 204 185 175 +151 166 180 182 213 202 182 179 191 178 217 225 +231 223 191 211 200 158 179 181 162 169 186 182 +159 156 117 72 62 63 82 80 118 150 166 197 +201 184 185 178 136 97 107 159 171 202 210 213 +211 151 117 123 +53 106 129 148 134 164 136 140 +180 210 190 116 140 146 115 134 130 171 209 170 +108 56 66 102 69 67 106 121 174 171 137 161 +157 172 204 187 109 96 90 97 159 184 198 184 +192 197 174 150 127 115 97 85 96 102 129 176 +185 131 145 109 69 73 109 123 167 221 212 194 +169 191 216 207 220 175 124 78 82 106 135 126 +135 146 130 107 133 177 198 200 159 134 124 100 +162 202 206 186 187 175 108 137 178 170 172 196 +146 86 103 171 199 207 187 125 70 55 88 64 +64 119 188 125 83 110 83 95 63 119 144 137 +156 82 79 55 57 118 57 88 96 177 172 108 +70 78 69 79 93 137 117 56 51 93 77 74 +70 67 55 53 42 56 73 57 41 66 79 63 +84 95 124 106 145 171 185 179 178 161 178 184 +189 197 200 189 187 191 188 195 204 201 190 189 +192 194 199 194 187 192 200 185 181 184 190 205 +198 181 204 194 192 197 199 188 190 175 168 177 +175 176 167 177 87 63 57 52 42 84 83 121 +58 93 201 187 133 170 144 137 155 148 174 134 +100 47 72 48 78 94 74 82 64 75 69 66 +55 76 110 138 206 208 200 130 94 96 120 134 +150 136 131 135 143 115 123 120 134 144 159 150 +181 153 184 170 117 87 54 44 59 65 79 72 +48 49 59 53 82 79 83 98 124 172 187 198 +194 202 212 210 221 231 230 232 221 220 230 212 +219 219 216 215 212 212 195 204 198 179 172 169 +166 168 170 171 180 182 177 186 195 192 179 175 +179 180 181 186 179 185 181 187 194 179 171 175 +162 171 175 175 171 150 149 143 128 131 130 127 +92 75 97 86 109 125 130 125 94 114 135 116 +127 56 105 119 83 136 140 140 79 94 90 80 +89 89 80 139 135 174 177 133 63 75 89 102 +149 74 80 118 125 95 83 154 210 199 120 80 +126 175 179 156 150 134 164 146 107 108 107 120 +159 175 144 134 128 116 184 151 89 116 113 109 +148 93 85 97 75 94 123 100 140 181 176 179 +201 180 178 187 168 156 137 168 200 217 213 211 +204 198 207 195 184 182 149 153 158 189 207 205 +179 178 161 156 157 192 188 165 153 124 136 146 +148 162 147 178 165 168 187 185 167 125 139 172 +166 191 207 228 218 228 236 223 199 177 162 118 +119 151 177 164 137 104 85 77 80 85 102 106 +115 141 66 74 80 115 108 116 134 162 169 189 +143 87 140 93 80 126 176 196 165 172 166 131 +65 99 170 118 94 149 189 213 223 217 194 141 +155 167 171 182 190 186 211 237 239 231 213 147 +133 133 102 125 111 141 200 223 222 219 187 138 +90 103 120 116 149 160 162 192 164 179 225 225 +209 161 171 200 197 191 192 170 195 191 179 169 +191 181 187 150 100 113 144 170 206 197 129 80 +54 65 113 171 180 221 226 175 133 129 187 218 +172 120 128 89 96 114 93 133 148 128 99 75 +118 104 84 119 78 117 93 113 126 62 39 44 +134 147 74 82 161 129 54 67 170 145 178 131 +92 118 135 57 58 51 48 59 66 74 72 56 +82 92 105 99 66 51 48 77 58 59 69 105 +150 162 177 182 192 191 182 189 185 181 187 189 +191 189 197 186 186 194 199 197 187 188 197 191 +185 188 189 205 202 196 191 205 209 207 199 195 +192 182 196 208 194 196 177 169 189 182 154 155 +117 106 59 54 53 49 85 184 120 114 204 182 +117 147 116 170 139 158 179 170 115 105 89 64 +89 103 88 82 70 68 72 99 64 90 88 137 +188 200 156 95 93 124 127 154 165 150 153 140 +127 111 110 92 95 146 157 160 180 153 159 194 +169 77 68 66 45 77 76 46 72 72 83 97 +92 94 93 103 151 184 199 206 222 225 225 226 +219 222 235 235 227 222 221 215 210 201 194 205 +208 188 184 188 181 192 177 181 185 181 184 195 +191 185 188 189 188 194 189 187 186 186 188 184 +187 188 189 188 178 179 187 170 175 170 176 178 +176 158 150 156 155 147 136 136 119 116 108 100 +73 98 99 100 95 89 105 86 88 97 111 167 +155 174 133 146 105 48 58 65 65 68 70 129 +107 85 125 116 78 60 78 65 105 150 146 144 +131 136 121 92 149 158 123 68 58 103 123 168 +178 171 130 117 69 72 89 125 128 130 182 185 +186 171 189 223 205 198 167 117 141 174 206 201 +201 204 165 157 134 156 166 186 209 192 176 168 +174 161 182 205 218 211 207 210 206 172 128 138 +153 149 194 223 230 192 159 131 128 157 159 137 +123 114 134 177 168 135 99 70 74 135 147 195 +165 180 208 220 215 201 207 188 128 134 155 195 +205 189 186 168 158 120 97 93 144 98 82 84 +78 92 119 89 93 113 153 174 +79 161 168 92 +109 153 88 82 99 136 167 185 176 60 52 66 +54 54 75 117 131 137 111 144 129 86 171 201 +187 158 146 168 209 213 221 223 202 167 133 136 +167 202 210 194 179 179 169 161 176 155 156 194 +209 199 192 205 201 180 119 139 195 188 171 169 +171 159 204 222 226 213 202 144 138 157 159 188 +185 168 180 201 182 196 201 160 126 125 111 151 +165 167 178 195 161 88 72 47 60 76 146 196 +198 185 136 155 194 220 217 156 47 89 139 95 +150 151 192 190 158 88 103 76 162 139 118 96 +74 100 162 148 97 68 88 72 127 95 70 88 +118 106 78 86 105 74 99 111 69 74 51 76 +114 85 83 53 45 53 51 42 53 72 46 51 +44 42 53 98 113 118 70 82 121 158 168 172 +165 176 166 182 184 180 176 187 199 190 189 205 +195 201 196 197 194 187 195 190 190 182 192 188 +197 205 198 195 195 202 205 200 188 184 198 199 +196 194 194 169 184 189 151 145 138 99 56 49 +49 36 70 103 56 174 199 106 113 138 139 202 +202 168 186 136 159 116 94 67 77 103 100 97 +70 82 83 80 83 75 106 182 189 190 172 104 +110 126 145 148 159 143 145 126 130 113 128 114 +113 127 121 136 151 196 205 208 168 131 105 75 +33 33 60 56 55 68 125 121 119 104 103 106 +139 174 206 205 206 209 216 218 216 212 230 236 +220 210 209 196 195 201 205 195 187 182 166 172 +187 194 195 190 189 198 190 190 186 196 190 191 +199 198 189 198 192 192 190 185 187 190 181 182 +184 179 180 177 176 178 184 182 174 169 175 182 +169 160 145 151 147 131 121 134 106 85 97 127 +96 89 78 70 92 83 96 104 119 107 123 115 +87 88 53 74 88 119 68 105 164 123 166 161 +149 64 56 66 115 138 182 196 196 190 135 83 +80 86 120 165 115 151 201 210 191 191 201 198 +164 126 97 87 89 94 157 205 206 208 197 170 +159 191 221 226 218 187 190 194 177 153 176 190 +199 182 124 162 209 151 97 95 147 194 205 180 +175 180 180 191 198 171 160 206 202 188 197 204 +189 182 178 145 139 123 176 204 185 191 211 201 +166 174 185 153 160 181 147 158 133 148 119 92 +103 106 78 78 93 98 153 156 157 171 178 154 +153 161 121 100 128 167 159 182 160 143 97 107 +125 145 159 192 +59 138 180 185 120 114 165 179 +130 80 109 133 175 170 93 77 75 52 54 58 +98 191 209 151 56 44 79 153 157 160 170 170 +149 113 123 167 179 178 144 141 129 138 134 121 +155 145 129 166 169 168 165 153 179 162 144 151 +159 180 165 140 133 114 121 130 128 150 170 156 +129 89 88 106 138 159 116 166 199 202 189 177 +189 190 158 126 83 123 166 189 185 166 143 130 +124 129 89 65 86 121 107 140 187 154 146 202 +209 188 129 139 131 90 160 140 135 159 116 149 +169 160 100 86 165 162 153 114 66 79 143 106 +98 171 175 89 92 65 57 88 69 107 119 77 +70 120 128 119 106 107 60 72 79 96 46 42 +36 62 63 60 62 52 51 80 72 102 103 113 +99 94 76 80 82 99 150 160 157 159 160 175 +170 192 187 180 191 195 195 201 205 200 195 187 +194 195 204 197 197 197 200 197 206 194 200 201 +199 195 200 205 219 208 190 189 209 206 210 194 +161 147 145 123 130 143 73 43 28 57 46 54 +59 145 175 98 149 165 156 177 196 167 137 128 +147 126 96 90 82 87 94 83 83 84 88 88 +86 86 92 151 208 197 167 120 125 134 147 170 +146 138 136 143 148 117 120 134 120 136 107 140 +127 130 157 176 137 151 156 151 37 45 76 66 +85 93 129 100 94 92 100 121 168 191 202 200 +215 211 205 212 222 223 225 221 208 212 206 216 +210 185 182 191 199 188 176 176 181 188 194 201 +192 194 197 195 197 198 197 199 198 187 188 184 +189 189 188 185 185 182 184 185 189 178 180 170 +182 176 187 194 195 181 175 175 160 150 131 130 +136 118 108 128 106 126 127 136 104 121 156 95 +69 87 95 95 108 88 143 153 160 120 87 125 +124 97 77 73 86 111 107 125 166 118 80 66 +80 155 148 117 140 178 186 104 136 126 75 68 +108 178 180 186 220 216 194 148 127 138 194 178 +99 59 79 93 85 150 129 147 119 86 108 139 +191 188 141 148 187 190 192 201 212 211 204 178 +188 225 231 219 174 154 187 170 199 197 164 103 +97 88 119 145 208 213 206 171 139 108 102 154 +187 210 168 157 174 179 180 136 146 133 103 83 +94 111 134 88 82 121 151 115 89 102 95 92 +96 85 102 198 169 181 221 226 178 127 97 105 +96 64 100 150 138 137 162 165 110 145 178 171 +82 69 84 136 167 161 170 192 211 189 114 126 +159 205 206 172 147 64 56 49 87 88 172 215 +210 181 158 134 131 70 65 143 184 188 149 99 +76 136 119 153 182 130 119 100 90 120 118 146 +160 176 188 167 162 170 171 172 147 176 158 146 +155 187 177 171 197 204 215 187 185 196 181 143 +182 187 191 209 216 201 213 222 202 174 172 190 +171 156 146 148 99 78 94 144 153 127 107 164 +189 176 110 95 131 182 225 202 172 208 164 96 +98 117 185 125 103 80 165 161 104 63 45 49 +80 113 118 62 126 170 155 118 135 168 113 48 +83 106 90 85 110 135 161 144 87 160 141 107 +88 77 58 55 64 80 53 41 51 56 63 82 +120 106 116 109 105 114 129 128 111 117 109 133 +130 90 121 145 143 115 153 165 159 180 180 189 +185 187 182 190 190 197 199 198 191 189 197 197 +190 190 190 209 206 198 194 186 205 211 200 205 +207 221 220 199 194 194 202 204 179 178 158 137 +133 121 98 67 77 47 52 70 69 131 133 194 +133 164 172 174 164 166 153 139 111 121 72 96 +86 93 83 77 77 87 87 83 84 70 108 182 +219 197 156 167 144 131 139 138 140 139 139 136 +130 120 121 127 125 143 135 146 141 137 165 162 +147 185 197 110 51 46 56 70 75 87 123 107 +108 102 118 155 199 207 200 217 226 221 226 228 +231 231 231 222 208 201 200 219 196 176 190 189 +190 185 188 196 206 204 198 197 202 196 201 202 +199 195 197 191 195 199 194 191 186 186 184 187 +184 189 187 179 188 181 177 178 179 177 191 194 +196 184 184 166 172 135 124 121 124 114 123 135 +79 109 98 89 124 123 150 139 99 127 127 121 +105 70 159 171 202 156 70 145 136 120 117 107 +125 63 82 100 77 129 158 128 59 103 140 135 +180 118 131 119 96 168 145 79 63 108 175 120 +76 93 147 141 96 87 106 199 205 194 186 200 +176 164 217 215 205 167 129 95 110 157 180 179 +168 119 110 131 156 202 208 196 208 208 184 170 +150 136 124 99 160 160 179 139 75 99 139 192 +197 128 138 165 182 181 157 126 119 127 94 117 +119 103 144 161 148 154 140 80 117 121 135 169 +181 188 156 104 113 136 172 198 213 220 213 191 +174 143 165 199 200 190 105 64 94 133 200 207 +182 136 105 89 127 155 148 105 +147 167 169 185 +184 184 147 129 114 104 105 120 72 95 149 160 +172 168 117 67 63 88 87 167 209 209 201 184 +149 131 94 107 92 154 176 190 182 172 179 139 +145 155 107 125 143 158 187 190 212 198 172 138 +185 188 165 179 198 205 210 217 207 189 181 167 +199 176 133 105 96 107 115 108 134 130 188 231 +226 221 198 189 168 159 175 181 127 74 65 56 +58 66 84 83 79 133 151 160 121 68 76 86 +141 185 162 127 189 187 117 148 169 192 190 170 +126 120 92 92 69 66 150 110 62 84 72 159 +186 149 107 99 87 103 64 52 109 143 116 102 +106 85 83 144 150 124 125 77 66 67 96 111 +84 100 55 52 84 120 104 120 119 128 145 156 +138 133 134 149 151 144 143 131 110 109 93 84 +119 129 140 148 169 176 182 171 179 194 194 194 +191 202 201 202 205 197 202 189 199 201 205 196 +200 192 207 206 198 208 212 204 205 187 195 216 +221 201 197 206 182 169 134 156 154 116 115 87 +45 41 97 70 117 113 128 180 93 169 182 184 +189 190 156 149 114 117 84 88 64 84 92 89 +89 96 88 102 98 107 119 160 194 160 154 159 +139 136 133 147 135 136 133 134 145 121 125 136 +134 159 159 170 180 155 157 154 130 172 180 159 +60 51 67 83 84 95 114 98 96 88 104 157 +190 161 197 217 210 223 205 227 228 229 233 228 +216 210 217 195 186 185 187 192 194 190 196 200 +194 194 200 195 197 198 192 195 196 197 199 199 +199 188 197 197 191 194 189 188 179 179 186 175 +182 182 178 185 187 186 181 185 187 176 171 159 +148 138 129 130 115 113 117 134 144 119 116 124 +95 111 87 79 98 111 108 98 83 68 83 95 +102 100 53 136 157 119 111 129 102 109 114 100 +85 103 116 174 155 72 129 93 155 191 141 78 +123 100 146 182 127 78 115 118 106 116 116 114 +127 114 93 129 143 146 110 113 130 128 134 167 +209 237 226 196 131 107 139 131 156 187 186 141 +167 192 199 160 143 167 205 207 178 178 180 176 +108 96 157 179 159 127 100 90 103 141 144 131 +109 119 113 162 196 186 197 222 220 218 200 195 +201 198 192 209 219 192 179 155 159 145 110 184 +217 228 226 216 201 176 161 190 218 162 151 65 +51 79 113 131 114 86 105 108 107 85 77 107 +131 151 146 135 +60 73 67 84 130 118 92 43 +52 62 87 125 90 108 201 206 207 178 153 195 +196 156 82 74 118 171 196 184 149 190 192 204 +177 155 164 181 159 139 184 169 113 79 130 124 +65 49 87 134 148 140 136 205 209 211 199 185 +206 216 206 187 211 225 228 218 185 150 104 88 +85 117 141 177 192 197 202 209 202 178 190 211 +222 222 211 204 161 130 137 156 175 178 169 78 +47 59 48 65 103 156 172 184 194 141 182 202 +189 144 97 90 158 191 158 73 126 188 188 167 +111 103 129 95 64 63 89 120 79 65 93 108 +75 65 130 185 114 70 94 86 52 82 129 100 +120 92 113 86 64 79 109 87 96 60 77 99 +119 116 114 119 127 138 138 157 167 160 153 150 +151 141 134 139 127 102 115 115 111 105 118 116 +160 169 166 159 172 191 174 197 201 204 205 208 +192 200 188 192 200 199 196 200 198 202 200 201 +209 198 194 200 211 211 204 191 216 197 202 200 +210 190 156 123 167 131 84 77 53 77 80 76 +146 104 107 109 98 150 178 185 205 157 194 177 +119 93 114 88 70 97 97 90 93 83 95 89 +113 138 153 174 189 195 168 148 141 133 140 143 +141 140 143 138 146 118 121 134 106 139 157 131 +148 162 180 157 150 156 178 123 93 88 97 84 +74 99 100 97 97 98 117 171 186 199 210 208 +222 212 225 233 228 227 229 216 202 198 189 178 +184 175 178 189 194 199 201 200 205 206 200 209 +209 204 205 204 199 197 195 192 188 197 192 196 +199 198 189 195 181 187 189 189 185 186 189 185 +187 180 168 160 175 160 175 164 138 123 128 123 +129 141 108 97 94 117 110 119 114 127 96 74 +88 131 102 99 77 108 123 111 88 69 72 67 +111 148 127 126 90 65 62 78 75 84 151 111 +137 119 171 144 108 144 158 116 126 124 111 129 +136 129 154 156 161 179 180 201 195 165 151 148 +158 148 116 83 64 85 102 116 124 186 228 229 +227 197 196 171 117 117 150 134 133 120 164 200 +204 175 109 204 215 198 156 137 121 140 139 149 +198 164 181 172 159 155 188 223 218 222 211 205 +212 201 197 207 226 235 229 209 168 157 178 190 +192 170 144 119 85 184 210 212 197 170 140 162 +125 109 147 123 87 68 57 124 158 156 148 111 +124 100 55 66 68 79 86 127 144 179 179 189 +124 138 123 92 76 98 106 88 77 82 138 194 +189 113 106 113 139 170 172 146 158 195 195 110 +54 107 118 97 108 130 170 188 130 96 115 126 +110 106 140 182 190 141 64 85 143 184 200 205 +201 196 172 144 145 187 213 211 187 172 139 92 +117 137 157 151 110 145 162 169 135 153 134 140 +123 99 124 158 174 156 147 131 144 167 194 162 +178 187 181 192 190 135 60 49 53 103 100 177 +225 225 221 213 210 178 170 145 88 115 130 194 +198 135 99 158 221 208 166 121 95 136 121 103 +116 82 57 74 79 65 75 76 53 72 99 98 +53 51 78 65 86 96 126 113 79 84 121 64 +84 74 74 116 139 65 73 100 130 105 114 117 +140 160 160 156 156 170 178 165 153 162 154 145 +139 148 113 111 119 104 96 105 134 161 175 177 +179 188 185 192 196 204 196 196 195 201 204 199 +185 202 201 200 204 213 213 195 199 211 206 196 +190 189 207 202 169 188 198 182 180 187 159 117 +126 111 69 59 55 79 84 54 96 57 175 96 +138 181 204 192 195 154 182 147 121 171 104 76 +73 84 85 93 90 93 95 97 100 111 126 168 +161 162 145 148 144 139 141 137 131 136 138 136 +130 124 125 123 113 109 155 146 149 174 158 146 +148 160 177 194 113 117 118 88 79 89 90 102 +94 89 106 158 201 223 213 209 210 226 237 227 +227 207 211 209 199 190 177 179 186 199 208 206 +210 216 216 209 207 200 198 202 199 206 210 210 +207 205 197 198 200 195 198 195 180 182 189 182 +189 194 194 190 189 187 188 187 181 182 176 172 +167 147 144 137 143 139 144 133 127 116 98 106 +131 113 86 70 75 63 63 75 74 76 108 119 +88 74 84 76 95 82 111 102 110 98 164 157 +114 52 68 68 67 87 151 191 160 95 126 172 +117 131 164 154 124 99 174 196 184 187 153 84 +89 131 159 123 181 208 143 174 168 174 167 124 +88 84 140 191 178 158 153 159 172 141 102 135 +145 109 125 107 115 154 186 137 141 153 141 127 +165 213 223 217 208 201 170 154 159 181 223 212 +138 159 180 153 169 205 222 217 229 226 217 207 +192 151 184 210 198 204 228 210 164 98 84 103 +89 80 84 66 75 138 138 162 109 68 63 72 +88 125 199 216 182 139 93 117 135 143 114 66 +75 95 94 176 138 141 155 156 +100 119 133 164 +154 88 66 99 104 120 88 98 148 186 146 113 +77 80 136 153 98 109 150 153 139 134 97 85 +117 73 76 103 94 104 110 174 189 145 86 89 +107 63 70 66 155 189 200 190 166 144 72 63 +65 83 96 116 99 86 77 92 129 147 119 96 +118 133 100 90 127 153 129 93 99 138 139 168 +182 186 197 190 175 160 148 174 177 178 154 96 +90 62 70 55 68 54 66 125 199 196 179 176 +160 126 162 172 168 179 215 156 116 136 175 200 +133 111 157 191 185 153 97 58 79 88 88 140 +115 102 106 75 49 68 57 73 53 53 64 92 +141 177 180 182 170 82 72 119 120 105 84 121 +99 86 63 76 109 120 114 137 136 133 158 169 +159 179 177 174 178 175 181 185 176 164 161 147 +114 113 108 97 96 116 140 162 177 191 185 189 +197 192 196 200 196 199 197 198 206 205 196 196 +192 187 197 217 208 199 211 207 198 209 187 207 +215 197 200 207 157 155 162 130 103 135 109 73 +44 90 47 116 149 68 168 93 137 164 178 176 +156 156 178 144 133 144 86 82 80 77 78 84 +94 98 104 123 116 127 158 188 182 187 154 156 +141 138 140 145 137 129 131 128 128 140 138 128 +118 125 156 148 141 146 146 185 194 150 175 162 +130 118 116 107 84 88 90 93 85 88 110 166 +205 218 215 220 220 230 230 228 222 216 218 201 +181 174 174 179 191 196 196 204 204 200 205 200 +200 201 206 200 207 206 204 197 194 199 202 199 +198 197 199 187 182 179 194 196 188 178 184 197 +174 180 184 178 187 172 174 151 146 125 133 116 +129 136 143 135 139 110 104 89 82 80 96 78 +60 58 68 57 55 53 62 57 82 73 69 82 +88 117 144 129 129 127 153 168 106 99 92 70 +70 106 154 184 196 170 88 96 93 103 77 154 +162 119 59 97 133 180 194 172 107 73 70 85 +86 92 148 186 186 140 131 143 138 140 148 162 +208 223 216 170 133 168 156 150 161 181 154 171 +176 189 167 144 197 180 160 148 170 210 189 176 +181 182 182 202 184 182 168 174 185 188 204 202 +199 187 199 198 171 209 235 221 212 211 181 167 +131 164 148 137 154 159 145 166 149 146 150 201 +208 216 226 221 200 178 166 143 178 199 156 114 +181 208 200 157 134 83 82 75 92 85 114 144 +161 157 171 206 +53 58 52 69 88 82 64 72 +86 129 153 134 86 95 162 114 111 69 96 90 +93 83 69 74 129 176 194 172 171 161 110 94 +107 123 102 124 117 184 212 199 151 92 69 90 +78 87 92 151 180 168 151 133 135 111 116 105 +70 60 56 68 94 89 104 144 169 198 178 123 +76 100 78 126 175 177 165 169 188 208 217 229 +217 181 187 151 98 116 124 157 180 178 104 63 +94 98 129 170 176 172 162 146 114 114 138 134 +178 198 149 80 116 123 178 127 117 177 195 178 +147 117 51 62 63 59 115 104 69 98 59 77 +90 67 42 92 113 117 124 154 185 175 145 126 +88 83 72 104 95 73 58 70 104 108 121 110 +125 117 140 167 155 161 171 161 164 169 176 182 +181 179 178 182 185 187 181 159 161 143 129 115 +106 104 105 127 161 175 189 198 196 204 184 192 +202 210 205 204 200 201 209 201 208 207 205 206 +210 210 192 206 209 208 215 204 221 230 211 199 +195 157 127 117 107 110 102 75 48 94 97 67 +66 72 126 90 161 199 187 167 139 145 154 144 +167 113 67 85 93 96 93 90 89 92 96 106 +110 114 108 141 207 221 180 159 136 134 147 138 +138 140 128 117 127 124 129 137 118 89 108 116 +151 150 131 136 141 177 167 147 125 115 117 104 +87 92 100 90 93 104 162 195 186 185 189 213 +222 230 226 202 202 196 189 180 150 158 171 194 +202 200 208 210 210 206 208 205 210 207 211 217 +207 190 196 199 200 199 205 194 190 197 202 191 +188 191 201 192 197 199 189 185 178 164 168 178 +166 156 160 146 141 129 139 127 106 111 119 160 +185 119 100 109 90 95 89 114 127 128 116 86 +77 72 53 78 111 76 80 66 102 89 89 106 +98 96 125 154 133 86 89 90 121 145 202 190 +151 127 111 65 54 58 51 94 127 124 130 119 +100 96 86 143 137 144 161 111 79 92 88 116 +128 123 129 158 141 194 216 180 148 157 180 209 +202 155 120 136 113 117 123 93 110 134 155 159 +143 154 192 220 222 204 199 186 184 188 160 178 +198 178 167 187 205 189 209 171 178 201 223 228 +209 168 185 218 178 182 181 161 191 213 220 229 +212 208 198 181 181 195 182 178 144 166 207 184 +200 229 222 222 229 177 165 219 218 188 158 106 +92 96 134 181 206 200 215 188 154 133 125 93 +105 77 60 74 69 68 84 98 107 110 110 148 +184 149 96 154 75 67 77 80 111 87 117 105 +80 73 62 63 58 105 185 200 166 93 79 134 +166 167 164 172 184 187 198 175 156 164 158 130 +174 199 192 200 199 217 211 181 143 106 116 139 +171 195 148 168 204 176 88 51 60 56 87 80 +119 155 211 200 202 226 210 176 170 199 168 113 +75 164 206 194 181 139 117 150 178 210 208 158 +127 140 121 155 169 144 118 166 149 86 80 93 +83 121 118 139 158 148 149 128 79 58 76 62 +47 55 64 88 73 62 90 111 157 127 140 171 +176 160 127 131 113 125 127 87 67 89 64 57 +55 48 51 57 67 70 77 105 93 120 144 177 +172 164 172 164 165 169 174 181 186 171 162 176 +180 178 174 184 178 174 172 146 123 88 98 115 +133 172 182 190 199 201 191 197 204 208 211 208 +213 209 204 207 205 190 199 206 201 199 210 202 +197 207 217 217 204 211 218 213 182 198 133 109 +117 79 76 73 87 89 84 92 55 76 121 87 +156 206 176 181 158 157 138 146 153 109 87 100 +87 92 103 95 99 109 97 111 133 98 115 176 +189 189 167 146 144 140 151 149 148 145 133 124 +126 108 116 118 117 119 140 135 158 150 161 154 +129 133 125 145 160 162 123 94 94 80 90 90 +104 156 197 215 210 213 222 216 223 228 222 213 +218 204 192 196 198 206 218 210 199 211 204 198 +202 205 207 216 209 212 209 201 205 206 197 200 +208 206 202 207 205 205 204 202 197 202 188 197 +202 180 184 170 166 159 167 166 164 148 133 131 +116 120 116 120 135 127 120 124 120 116 131 100 +118 140 149 136 127 129 134 121 90 70 65 65 +111 121 107 67 98 93 131 92 64 94 118 136 +157 155 73 69 95 93 107 125 162 144 103 85 +90 106 86 92 78 117 89 136 148 161 98 83 +104 131 172 196 160 114 67 95 123 113 180 201 +174 171 168 176 230 230 220 197 147 174 165 107 +115 82 128 141 174 180 151 156 184 156 161 205 +206 217 178 186 187 195 208 204 199 211 213 200 +216 217 212 200 204 186 176 189 206 199 196 171 +207 207 192 177 177 192 182 158 111 137 179 208 +199 227 201 210 192 179 202 137 133 170 228 230 +235 229 220 166 87 110 158 196 172 129 107 154 +186 159 120 124 146 135 89 77 +66 87 121 137 +119 118 155 151 147 160 154 167 136 185 180 109 +124 131 140 141 117 62 62 103 102 124 113 126 +151 111 76 109 171 201 199 155 154 189 190 216 +222 216 211 172 151 178 174 178 182 189 184 204 +167 153 158 136 121 160 194 202 202 209 226 218 +216 187 179 147 99 63 109 141 186 227 225 212 +206 210 205 165 167 185 174 119 151 198 194 161 +164 195 208 213 208 182 190 145 104 136 205 230 +210 177 119 83 115 110 75 76 95 128 88 120 +199 213 149 86 94 68 89 73 42 66 116 99 +62 118 99 160 126 65 93 65 51 66 65 111 +72 77 65 62 49 86 80 85 84 62 53 100 +98 49 72 77 83 89 126 157 165 170 169 170 +167 180 189 181 186 186 182 182 180 168 175 171 +174 169 182 165 138 115 123 109 106 147 180 187 +186 195 191 180 195 205 202 208 206 208 216 217 +211 217 216 211 205 207 199 217 222 215 197 215 +222 189 185 178 204 180 162 178 144 103 86 76 +67 56 87 96 77 106 83 96 175 204 179 206 +154 169 140 149 153 138 123 105 80 79 90 93 +97 111 118 117 123 118 127 165 164 184 176 149 +146 146 144 139 136 135 136 130 118 117 128 128 +134 129 118 143 154 150 154 157 133 157 143 134 +155 146 97 89 82 89 97 93 99 172 194 201 +216 223 221 208 220 202 211 210 196 195 189 187 +198 206 196 196 200 209 212 211 195 197 206 209 +216 215 201 200 202 202 201 209 201 199 207 199 +205 204 206 201 202 201 192 200 191 181 179 174 +167 165 181 167 167 148 130 129 124 121 130 127 +141 153 140 127 145 123 109 120 150 164 155 158 +144 115 111 87 110 87 73 66 90 86 88 109 +109 100 108 134 98 86 107 88 94 157 133 119 +63 92 116 103 144 118 113 95 67 73 75 73 +67 56 92 99 147 151 123 111 109 160 185 180 +154 167 78 78 106 145 130 156 175 185 198 187 +198 195 154 154 174 116 108 111 140 199 167 145 +117 121 180 213 209 172 151 196 213 182 201 216 +223 190 186 187 187 182 166 215 199 207 223 212 +167 151 175 185 192 191 166 133 140 166 191 201 +181 139 136 145 177 186 179 178 211 151 90 133 +158 105 146 141 172 207 184 144 186 179 127 131 +99 131 134 170 198 200 160 136 140 188 172 115 +138 198 205 186 +66 55 59 117 158 167 161 191 +188 171 134 128 118 84 104 113 146 154 168 161 +156 170 180 190 202 205 194 180 213 222 213 180 +116 103 166 189 188 175 149 160 202 195 153 148 +164 196 188 176 188 175 195 204 190 169 181 179 +199 219 219 210 216 169 146 111 80 85 86 63 +66 125 176 197 215 178 158 172 174 157 172 172 +175 184 200 206 190 177 180 156 148 131 175 141 +166 159 129 148 196 194 162 141 130 172 141 168 +145 94 70 128 95 76 156 207 207 149 72 134 +80 110 72 79 73 59 95 99 88 125 102 133 +115 80 76 92 97 54 59 80 79 94 69 77 +85 65 52 55 48 26 28 44 64 59 73 98 +77 138 144 164 185 178 161 165 166 179 177 185 +185 177 169 181 182 179 175 175 182 176 180 186 +159 145 140 129 104 109 138 181 190 190 199 196 +199 197 205 208 207 211 212 217 207 197 202 208 +202 195 205 206 211 228 222 191 213 217 208 197 +178 194 150 154 130 113 104 80 77 48 86 93 +83 104 124 162 179 192 198 187 147 150 130 146 +156 129 118 113 95 99 83 96 99 110 125 124 +125 134 130 153 167 184 157 139 140 151 150 140 +141 139 131 130 135 128 96 111 137 121 130 144 +129 149 154 137 157 177 124 123 127 147 108 104 +100 102 102 90 97 156 194 188 199 210 211 223 +218 217 201 191 202 186 188 202 187 188 192 197 +198 191 197 202 211 201 202 211 212 208 210 204 +199 204 208 210 211 205 204 206 200 195 199 194 +200 198 191 192 189 187 170 165 156 146 131 143 +150 157 155 135 139 123 127 126 144 134 134 129 +149 145 166 164 147 150 133 136 130 105 124 113 +135 137 89 117 111 88 88 116 144 162 166 146 +89 129 157 128 116 104 94 114 84 72 99 113 +149 199 206 136 68 75 84 68 62 57 79 123 +172 195 199 167 120 80 90 184 211 197 126 117 +150 176 207 195 174 189 184 153 100 115 124 120 +130 130 141 141 130 147 192 222 227 219 202 207 +205 154 155 179 194 196 180 158 189 195 197 141 +140 172 189 190 192 209 175 158 155 175 169 181 +213 220 176 164 185 213 211 190 191 219 222 199 +147 133 189 219 171 124 158 196 192 187 179 204 +227 191 177 168 204 213 225 218 207 166 110 103 +86 85 98 154 136 102 137 180 174 135 136 129 +181 89 60 75 70 85 123 138 147 168 181 99 +70 103 69 49 99 139 184 217 207 162 106 85 +96 151 167 174 159 186 188 149 104 102 116 86 +72 99 100 138 158 194 199 175 107 128 156 155 +182 134 89 111 96 103 138 169 155 188 160 124 +126 121 106 85 80 97 105 127 146 188 192 196 +197 150 161 115 113 134 169 164 135 88 123 107 +103 130 125 98 84 70 124 117 154 137 161 199 +146 89 75 129 127 172 215 200 116 70 90 108 +98 155 217 181 117 100 144 185 156 89 70 83 +46 78 77 97 82 106 52 53 43 82 103 72 +102 119 78 53 45 67 51 66 68 85 70 47 +55 75 134 109 42 105 75 66 135 171 154 143 +174 176 174 174 170 170 164 170 180 187 179 188 +185 185 188 186 177 171 176 171 168 179 164 164 +129 138 118 156 188 168 190 209 195 206 205 207 +212 207 205 211 216 204 200 207 210 208 198 208 +210 192 215 215 189 190 207 209 171 111 168 166 +118 106 89 83 70 74 89 86 104 114 109 164 +187 177 175 147 167 165 147 167 158 118 119 111 +86 90 85 93 90 94 119 121 121 126 130 156 +205 206 161 147 162 156 153 129 129 131 136 135 +126 125 127 133 147 128 136 150 157 147 171 171 +145 168 168 146 157 149 125 98 96 99 97 107 +109 159 184 187 213 205 215 229 205 201 200 208 +189 206 197 192 195 210 210 191 201 212 209 212 +211 212 210 206 209 218 205 201 208 208 199 208 +202 204 202 202 195 200 186 192 188 189 189 190 +187 172 162 155 145 130 123 160 189 189 188 177 +154 156 171 170 168 141 144 161 161 160 155 162 +170 162 157 169 169 159 147 136 111 114 118 133 +131 103 108 134 90 120 100 84 121 148 134 100 +109 88 67 87 98 104 82 59 126 136 192 202 +166 64 58 64 106 98 88 96 174 199 213 223 +208 181 126 89 118 187 210 178 166 162 149 135 +176 162 211 211 169 103 148 170 100 76 87 114 +137 131 84 110 129 133 161 188 217 206 136 114 +166 158 171 196 176 143 206 199 182 213 159 113 +110 126 136 130 129 159 186 179 153 165 171 169 +161 182 228 207 187 172 165 141 127 176 184 115 +157 209 212 188 177 207 204 197 171 147 164 216 +220 207 188 147 138 130 109 106 90 83 89 131 +157 165 202 185 128 128 182 200 +176 194 172 110 +97 89 105 115 99 124 115 78 105 120 154 135 +121 87 88 168 181 200 196 186 130 136 103 108 +78 85 92 140 189 137 94 75 79 73 78 120 +128 115 139 131 181 170 139 158 181 165 162 124 +102 124 151 149 168 138 98 172 210 204 204 213 +206 198 200 137 153 176 165 189 155 156 198 150 +167 135 120 136 180 192 189 159 89 89 83 103 +119 141 138 186 182 176 197 165 104 110 90 116 +115 148 161 154 124 169 150 194 182 140 116 118 +179 104 129 196 169 108 121 148 59 52 53 51 +87 141 86 109 110 97 110 59 36 68 63 44 +58 60 67 84 102 111 68 53 60 89 105 85 +70 79 70 70 89 92 131 141 157 174 179 180 +184 182 184 187 187 185 187 192 197 192 189 185 +185 178 170 175 182 192 175 171 157 154 149 137 +154 184 172 196 204 197 204 210 213 202 207 209 +208 220 199 199 211 218 207 204 207 208 204 218 +218 205 192 194 178 154 121 164 137 114 92 94 +72 73 96 66 125 124 128 143 165 156 177 162 +146 147 141 175 160 119 109 103 96 83 94 92 +103 98 107 105 137 147 129 175 172 180 150 140 +144 145 137 130 133 130 148 136 137 126 126 136 +129 133 139 136 127 130 159 174 144 177 156 158 +196 178 129 99 94 98 108 106 113 180 198 215 +195 204 218 217 209 204 210 212 215 206 197 204 +211 204 200 219 218 216 211 208 216 206 200 205 +209 212 206 213 210 200 212 204 204 194 199 199 +197 191 194 201 190 192 199 182 170 141 145 128 +120 137 143 165 159 166 160 157 165 176 175 168 +174 169 170 187 188 181 178 168 168 167 175 154 +149 144 146 155 133 102 86 89 109 126 133 127 +118 143 133 106 123 103 138 166 191 180 149 98 +95 93 140 147 99 118 82 92 114 95 65 74 +123 116 103 100 113 148 119 126 167 189 140 108 +111 120 169 197 176 141 113 134 141 147 147 158 +225 221 208 212 202 190 180 175 158 175 175 184 +184 179 181 191 202 198 196 194 156 128 164 176 +176 156 150 182 233 233 218 191 174 158 139 121 +127 154 189 223 230 218 191 170 168 149 135 158 +129 121 147 129 169 177 162 154 220 230 229 211 +188 171 110 154 194 182 149 117 103 73 68 92 +148 171 158 159 154 114 102 155 195 187 198 195 +164 194 180 97 +157 137 141 170 128 88 75 60 +76 96 109 90 82 68 109 147 160 136 104 78 +93 133 133 133 109 85 72 67 66 87 127 133 +153 149 162 197 181 136 90 57 74 77 154 168 +156 138 155 120 166 213 225 213 187 185 160 146 +139 120 124 140 120 155 169 165 198 201 164 148 +100 143 166 179 145 115 139 128 153 192 219 215 +195 164 103 83 114 87 107 117 140 171 167 139 +82 110 103 127 116 178 178 109 103 106 77 88 +90 116 93 97 125 166 120 165 137 158 176 197 +140 87 77 105 86 66 77 53 55 84 47 99 +89 55 51 58 57 70 65 57 83 76 130 115 +69 87 76 59 79 49 56 60 92 75 90 103 +84 83 96 145 155 166 177 184 179 185 188 187 +190 176 184 179 179 178 190 190 190 187 190 200 +194 187 185 167 165 156 155 146 133 176 194 184 +200 200 207 202 204 210 213 211 204 210 215 205 +200 201 195 202 209 219 206 192 200 222 190 177 +148 160 153 127 174 138 98 95 78 83 104 107 +134 135 143 204 201 174 182 170 169 149 140 157 +128 106 114 107 90 90 103 109 121 117 107 115 +119 125 128 157 184 175 174 146 147 144 145 139 +136 133 131 144 143 121 126 124 139 135 147 137 +161 148 166 162 150 166 180 176 165 134 118 98 +104 100 115 109 123 181 207 207 197 200 202 186 +194 208 211 205 207 199 199 200 196 196 200 202 +213 205 199 218 211 213 208 209 210 208 206 199 +205 204 205 204 207 192 196 199 197 187 202 192 +196 195 182 162 141 127 130 127 145 167 169 171 +176 181 171 164 178 172 170 179 178 180 185 192 +188 182 182 190 184 178 179 170 162 162 161 143 +149 115 114 88 111 110 86 95 86 103 102 100 +93 121 143 134 141 174 181 188 143 113 158 164 +130 98 72 66 65 66 87 84 64 80 78 82 +64 109 182 181 156 140 166 121 100 77 66 110 +155 190 149 144 141 162 180 137 205 221 207 168 +137 140 150 177 182 175 200 220 212 202 220 210 +178 176 184 166 166 135 148 159 155 209 229 236 +230 186 162 131 138 164 187 177 187 177 127 167 +188 206 227 228 220 226 211 207 189 195 205 205 +198 160 196 175 146 154 147 143 123 153 134 164 +161 131 120 111 113 117 124 109 117 143 130 133 +145 119 118 105 133 175 208 188 218 195 190 160 +123 139 118 85 119 94 135 143 125 77 53 78 +85 95 89 87 90 119 129 130 144 156 83 117 +143 146 127 136 185 171 120 158 200 191 198 171 +170 187 176 158 166 172 119 144 208 207 184 154 +160 143 187 199 181 212 202 176 159 135 114 148 +126 131 143 192 209 211 206 213 217 210 150 93 +105 113 121 139 141 169 194 144 158 135 146 175 +177 146 123 144 138 169 184 129 126 119 153 169 +159 166 164 188 133 106 108 123 119 68 74 174 +198 117 128 108 131 190 199 200 117 59 85 114 +96 92 74 65 96 84 65 65 70 98 139 145 +140 137 111 153 149 84 111 97 70 67 85 69 +107 105 102 115 138 148 129 146 120 77 98 143 +168 167 176 179 187 188 187 187 194 189 178 185 +177 181 186 189 189 190 182 175 197 196 187 187 +186 177 174 166 157 156 186 182 196 208 202 219 +210 207 207 219 225 217 220 211 204 209 208 200 +204 202 210 211 205 199 210 167 161 102 115 126 +159 131 126 103 92 97 115 108 119 162 160 186 +186 167 184 176 168 181 147 167 145 114 113 118 +98 108 103 105 109 107 103 99 113 116 119 135 +172 178 169 161 138 139 138 138 136 131 131 139 +144 136 131 131 126 126 130 134 145 143 172 157 +155 157 156 149 148 149 116 92 103 113 126 104 +114 170 197 191 205 206 196 189 199 216 202 194 +194 197 201 208 221 217 207 208 206 204 218 215 +208 208 216 210 211 210 205 211 206 209 211 205 +210 216 209 200 195 198 196 188 191 185 166 146 +130 144 168 168 171 164 149 164 172 167 169 185 +166 180 179 191 190 195 195 192 188 187 187 189 +182 178 180 182 161 176 158 129 153 133 135 130 +115 113 96 96 100 137 123 153 154 116 113 109 +111 104 115 120 116 65 90 117 180 136 136 111 +99 99 56 83 79 102 102 74 94 82 92 153 +118 135 127 100 95 83 96 98 95 87 105 146 +164 164 199 162 134 186 206 199 222 228 218 201 +179 161 164 184 184 177 190 207 213 206 181 202 +210 189 201 210 172 150 165 161 156 154 150 155 +175 174 176 181 204 219 228 230 228 225 206 182 +169 184 200 213 226 204 197 216 231 208 211 179 +169 162 138 86 69 75 75 102 146 134 141 119 +129 126 119 156 159 154 117 106 109 130 153 150 +206 159 96 160 188 192 164 129 +93 84 77 92 +137 94 106 121 93 116 85 51 77 68 98 136 +143 106 94 84 93 127 102 99 134 128 161 162 +160 164 172 184 194 186 172 154 90 68 104 159 +195 221 204 151 118 118 150 131 121 115 141 139 +84 114 140 123 96 98 109 141 108 110 120 111 +135 146 166 157 144 160 145 129 140 119 141 139 +170 140 184 177 189 187 194 153 116 99 100 106 +188 222 205 130 133 136 124 111 119 157 192 216 +194 111 118 150 134 73 102 170 131 75 66 83 +118 164 153 105 57 88 116 93 83 118 113 64 +108 144 160 87 89 105 131 113 83 107 57 77 +110 124 128 95 76 66 82 82 83 100 118 137 +107 140 131 143 129 90 109 105 150 179 179 184 +190 182 188 190 189 182 189 187 187 197 206 191 +185 190 191 186 172 188 186 175 172 186 186 171 +177 162 169 186 198 208 206 200 209 213 220 221 +217 219 209 218 213 210 210 215 196 215 210 194 +201 181 180 171 149 133 104 136 126 129 133 107 +97 97 95 93 90 136 154 199 141 172 156 177 +179 179 146 157 128 102 99 100 100 96 102 97 +110 110 114 100 121 118 94 114 153 177 160 155 +138 144 141 136 140 131 133 139 138 129 131 125 +109 136 137 116 131 156 155 156 164 156 139 167 +144 136 136 111 99 104 107 105 109 162 160 200 +201 202 206 212 216 207 199 211 221 220 216 216 +202 202 213 217 220 218 211 210 213 212 204 208 +207 205 207 201 206 207 206 208 211 217 207 210 +201 199 190 178 158 148 140 139 143 155 164 169 +170 180 186 179 176 180 171 185 192 189 188 185 +187 194 201 197 191 196 199 188 194 194 180 184 +184 180 171 144 126 140 138 129 120 105 96 89 +124 121 151 148 134 108 92 102 107 97 100 105 +128 94 60 52 60 64 126 97 109 148 162 146 +133 121 98 96 100 105 121 102 144 154 197 180 +165 155 133 123 118 135 157 139 110 92 99 86 +68 108 166 186 178 185 159 169 192 197 207 196 +191 180 149 153 179 169 168 205 187 158 139 144 +157 133 150 149 157 179 182 170 172 194 170 144 +178 185 143 115 100 107 125 148 202 219 233 236 +230 218 205 182 141 114 72 84 67 98 114 98 +110 153 200 204 212 207 191 176 148 131 131 124 +127 124 111 168 186 192 189 195 190 150 126 111 +121 66 103 124 +79 57 83 70 90 156 209 208 +175 115 69 65 59 70 98 95 146 175 117 125 +144 124 108 134 96 119 128 159 136 184 155 99 +100 145 137 149 168 127 148 121 141 137 168 154 +133 88 106 90 141 160 139 139 80 80 83 119 +149 197 201 200 204 206 204 174 115 159 181 186 +198 219 221 211 198 185 175 197 184 150 95 53 +62 84 97 78 94 115 172 184 180 178 129 120 +156 184 200 170 176 204 206 167 113 100 86 131 +141 56 56 103 58 55 66 72 115 131 59 68 +65 87 118 139 78 70 58 74 89 75 90 89 +97 133 131 59 65 72 113 65 127 108 63 47 +78 96 128 113 146 149 138 119 139 143 123 145 +141 95 84 84 140 167 170 172 184 189 180 179 +179 181 185 194 185 177 190 202 197 188 188 185 +192 197 196 204 199 174 170 171 174 171 168 179 +190 202 202 200 204 212 217 220 217 230 218 206 +218 208 198 201 210 198 199 205 204 205 182 189 +176 169 135 127 139 144 123 133 116 80 124 111 +127 134 156 188 172 145 128 120 125 138 162 153 +92 70 95 98 99 107 93 93 110 109 117 129 +127 143 140 134 178 206 164 148 141 143 155 151 +140 135 129 131 135 130 128 127 119 141 136 140 +128 167 180 165 177 186 170 168 136 140 143 127 +98 105 116 121 126 174 198 221 217 200 179 198 +200 195 210 212 208 216 209 197 201 206 204 207 +208 209 208 210 210 206 209 209 199 210 208 206 +209 204 207 217 207 211 205 201 196 200 186 159 +147 127 151 170 168 160 175 170 179 174 172 169 +166 175 180 188 184 187 192 199 190 181 186 172 +187 195 197 197 196 189 194 186 162 164 160 155 +135 133 108 108 144 119 98 123 100 98 103 114 +115 100 141 131 150 120 136 125 85 127 103 88 +102 83 78 96 113 127 184 213 180 171 157 120 +107 107 158 187 175 123 136 159 144 162 186 175 +143 134 137 139 136 140 111 73 64 124 161 178 +191 127 93 90 135 123 110 104 84 92 125 148 +161 148 159 155 176 215 199 209 217 185 185 177 +186 149 179 206 217 194 144 164 194 211 191 170 +157 134 175 174 158 162 168 170 143 126 117 110 +126 116 125 119 115 143 108 100 96 125 141 204 +221 216 215 204 174 154 119 114 140 188 184 162 +135 119 109 104 128 151 165 148 154 138 102 130 +107 86 67 93 70 60 92 151 196 204 171 115 +72 92 151 184 174 208 201 167 141 125 107 138 +147 136 80 104 113 131 146 174 149 117 83 138 +156 150 139 87 151 167 135 120 100 56 62 55 +56 95 88 93 131 115 127 123 128 147 113 114 +92 93 96 93 143 186 161 133 126 144 160 171 +181 191 181 130 104 82 45 72 144 131 141 90 +70 155 182 171 111 124 192 202 176 205 192 186 +177 134 133 127 113 80 84 66 59 41 36 34 +49 44 48 55 74 72 54 58 54 95 90 69 +76 94 72 64 106 137 98 56 58 51 58 58 +77 98 129 58 64 110 96 53 76 111 126 126 +127 151 170 167 148 162 151 164 149 121 113 106 +116 139 143 155 182 188 189 192 188 188 192 190 +187 201 208 197 196 191 198 199 190 194 191 196 +191 186 188 186 172 164 158 180 187 185 205 208 +211 212 216 219 222 218 211 206 213 221 216 204 +213 221 213 211 207 213 197 198 184 172 169 140 +133 131 137 130 95 87 106 97 120 137 150 175 +176 165 171 126 149 160 141 128 105 103 94 99 +115 100 129 106 108 114 120 125 140 134 144 139 +166 185 174 160 149 147 137 146 146 140 133 140 +138 133 131 136 143 137 133 155 160 156 147 161 +169 185 187 167 156 157 150 140 99 109 120 121 +125 179 206 221 201 181 192 207 200 205 202 213 +220 208 208 220 216 212 210 200 205 215 218 219 +211 207 209 205 209 204 215 201 185 202 210 202 +212 202 200 196 190 189 180 162 168 158 169 167 +165 174 187 186 188 172 171 174 177 187 196 192 +192 194 199 198 196 185 182 187 187 192 192 180 +192 182 189 186 178 159 149 148 117 117 114 100 +119 147 125 149 129 148 179 143 145 157 148 134 +160 130 124 95 75 73 75 69 82 83 145 149 +87 117 109 154 162 197 199 190 150 83 86 76 +82 118 149 126 108 137 188 204 195 197 178 134 +96 124 125 127 154 111 166 155 124 144 119 127 +156 184 151 137 162 189 158 188 185 153 128 172 +190 196 190 168 139 150 184 161 117 104 124 120 +160 190 157 136 121 124 148 164 165 178 162 206 +230 218 206 209 209 197 188 190 177 177 156 139 +156 154 154 192 215 217 186 181 199 176 192 197 +200 209 201 212 222 207 172 120 147 129 94 87 +92 67 52 68 76 111 141 131 +110 108 96 84 +69 69 70 73 79 87 76 57 82 100 104 105 +97 110 135 176 182 147 76 79 109 184 187 114 +78 85 88 136 157 175 169 138 155 177 181 179 +166 154 180 191 188 162 182 154 200 213 217 223 +235 221 202 170 141 164 148 125 60 49 47 42 +45 52 94 120 80 127 174 140 99 78 74 114 +130 105 184 208 169 93 84 117 83 69 86 103 +128 194 184 146 119 113 125 116 128 172 195 191 +195 138 148 168 143 37 37 36 78 160 119 76 +148 86 43 60 56 54 70 86 84 58 66 48 +60 49 76 89 55 94 89 108 158 78 84 87 +88 155 146 66 79 78 97 155 161 158 167 186 +181 165 165 153 162 174 181 126 106 109 136 169 +177 178 191 188 180 185 185 172 176 184 189 198 +197 192 195 194 196 198 187 194 196 188 179 189 +177 179 185 181 175 197 192 197 209 217 202 215 +211 209 212 212 197 210 216 213 206 225 209 198 +187 201 207 190 182 157 166 134 136 131 120 117 +121 109 133 96 103 143 181 159 174 167 202 161 +167 151 153 129 127 128 126 126 103 105 111 102 +111 116 128 137 135 138 127 140 180 190 165 149 +141 149 135 135 150 145 143 136 140 137 136 134 +149 153 131 140 157 171 145 153 158 171 162 136 +155 147 159 103 73 88 100 105 114 194 209 218 +179 195 208 194 189 199 210 217 208 211 227 209 +205 201 208 212 213 215 218 212 210 209 213 211 +206 216 215 207 210 212 206 218 210 191 199 202 +191 172 150 129 158 140 138 157 168 171 175 186 +180 189 190 171 178 185 188 194 191 186 192 202 +195 191 184 182 188 191 188 196 194 189 185 179 +170 176 146 146 117 102 114 120 127 126 131 119 +131 137 184 187 169 145 175 148 121 130 147 113 +85 76 87 124 143 141 126 109 133 175 159 118 +144 131 98 125 146 124 111 114 95 74 114 94 +144 171 199 185 190 207 223 217 217 217 204 178 +137 108 98 187 154 146 200 219 188 161 164 186 +192 188 167 208 192 154 145 118 121 118 135 187 +190 154 106 90 96 119 103 83 98 138 181 199 +164 158 127 131 143 159 162 178 180 169 178 189 +201 186 188 223 221 219 216 166 114 121 117 125 +98 76 67 68 70 80 95 181 223 216 210 181 +131 157 160 160 128 105 104 95 57 66 80 117 +117 84 109 169 +97 59 83 78 83 95 70 44 +49 64 53 55 60 76 130 147 147 164 88 77 +129 189 196 155 149 111 155 181 192 151 82 125 +121 75 84 92 126 148 130 150 171 151 115 171 +160 175 188 182 196 172 210 232 230 213 186 110 +77 98 89 58 58 59 54 60 105 118 119 102 +121 118 129 146 135 120 141 186 200 201 166 111 +67 87 103 170 121 85 151 144 170 158 129 104 +128 150 120 161 180 151 108 167 127 92 76 83 +80 86 68 64 55 95 109 128 187 123 65 87 +138 146 128 107 123 166 143 89 124 147 143 104 +87 145 151 129 139 109 84 92 99 88 83 80 +127 123 130 148 155 165 154 158 179 178 171 170 +166 154 146 119 100 104 134 171 172 186 188 186 +192 189 188 194 198 197 194 188 199 199 199 194 +195 197 189 187 187 192 190 190 195 187 180 186 +185 195 194 204 196 196 206 222 212 211 204 212 +220 205 207 221 220 212 225 215 202 191 195 182 +194 174 138 131 128 127 121 114 120 108 117 137 +136 158 186 167 158 151 175 165 160 137 149 114 +116 114 110 99 103 97 97 109 105 137 123 127 +119 116 115 147 167 174 167 172 144 129 146 149 +138 138 135 138 140 135 133 149 143 151 145 150 +146 158 170 154 146 171 170 174 156 143 133 138 +96 84 102 100 116 171 196 208 207 215 197 194 +192 198 217 217 210 219 212 206 201 205 221 215 +218 219 209 202 210 212 208 205 216 216 209 208 +209 207 206 207 196 202 198 185 184 167 191 194 +189 179 169 167 167 172 177 187 177 177 176 181 +194 189 198 198 196 196 195 186 188 188 177 182 +187 176 172 172 172 188 174 158 157 154 145 148 +114 117 125 103 99 88 75 96 103 94 98 96 +135 169 166 108 92 95 70 88 113 129 128 117 +137 103 93 102 90 89 151 153 169 191 156 114 +79 83 94 117 126 143 160 159 169 178 207 204 +164 144 135 154 153 140 149 129 146 158 135 121 +148 92 79 138 180 157 139 148 172 146 154 158 +205 215 221 218 215 213 189 176 185 197 188 161 +180 198 194 196 196 188 170 135 128 149 146 124 +165 177 138 104 136 119 130 175 188 171 209 235 +212 198 199 170 148 171 174 157 128 134 128 126 +130 159 166 182 199 192 164 180 154 167 157 135 +123 106 106 104 141 180 110 139 161 109 126 170 +83 83 100 78 105 73 58 80 139 160 137 63 +98 137 147 150 192 190 208 190 166 107 176 155 +136 125 99 93 154 190 186 148 145 138 125 116 +108 154 184 191 190 212 190 137 113 82 113 145 +174 202 218 229 231 229 204 159 95 82 93 105 +82 113 158 191 207 185 194 204 191 162 169 177 +174 141 137 145 137 94 102 168 197 189 166 172 +124 102 133 104 98 115 161 176 157 118 99 149 +167 141 172 124 89 83 97 177 117 82 63 67 +85 90 116 129 107 67 134 108 128 126 168 205 +204 164 138 147 138 100 97 159 150 127 108 118 +115 111 158 146 110 86 90 94 124 141 150 167 +167 168 186 186 172 162 176 170 174 176 168 150 +155 133 110 145 165 176 179 187 187 194 195 196 +191 190 199 200 194 190 196 206 196 200 196 196 +191 195 191 182 186 194 191 182 180 191 194 196 +207 202 200 207 227 219 219 207 210 218 221 209 +218 196 202 211 213 207 206 219 209 198 133 125 +119 124 125 110 93 96 116 116 138 184 190 176 +143 133 148 129 128 137 143 117 117 120 106 115 +107 108 103 109 106 107 115 99 124 133 121 151 +158 140 146 149 134 128 137 138 130 134 129 133 +143 149 145 145 137 157 155 138 157 139 159 162 +177 172 150 144 154 156 154 153 108 93 106 97 +118 174 192 181 188 197 184 196 197 204 208 207 +212 216 215 207 216 226 218 207 213 209 207 205 +208 202 209 216 217 205 217 211 215 217 200 210 +201 199 195 180 129 144 168 161 175 169 176 176 +185 184 178 179 178 182 191 195 198 195 187 191 +190 187 188 194 188 186 195 188 185 180 189 185 +178 170 151 143 159 160 147 100 107 105 110 151 +137 76 86 87 107 89 104 115 118 161 190 188 +179 158 106 103 149 139 119 127 138 117 107 85 +64 80 99 125 137 175 167 198 199 162 129 114 +106 106 137 184 171 197 189 165 197 166 150 172 +182 182 195 190 176 172 168 202 217 185 186 172 +161 192 162 174 143 97 106 107 109 168 208 204 +169 121 110 116 184 195 202 192 194 208 211 220 +198 191 195 181 159 155 169 165 141 156 185 175 +188 180 190 200 209 221 219 207 196 184 181 194 +202 204 209 210 189 189 220 220 198 151 111 140 +174 188 178 147 109 131 168 167 157 125 93 97 +114 109 97 83 67 51 73 69 +120 109 83 88 +131 156 87 56 90 131 199 196 130 74 78 79 +86 104 108 107 135 144 139 199 171 136 79 69 +89 93 116 107 164 180 165 157 137 115 90 119 +131 145 118 107 106 133 190 156 147 147 148 167 +171 200 186 172 169 182 172 145 134 125 131 166 +175 180 190 195 190 199 184 160 138 108 135 171 +135 128 171 202 202 169 144 83 70 63 102 161 +206 195 177 137 116 162 194 186 148 127 69 46 +67 130 107 121 52 92 48 69 89 131 145 87 +57 79 78 84 139 166 181 148 124 109 150 137 +99 123 153 154 99 93 137 129 127 104 87 94 +104 96 83 117 117 146 162 175 180 180 184 191 +185 184 169 186 186 180 190 177 178 149 93 129 +170 158 177 194 204 198 200 199 196 195 186 195 +198 204 199 192 195 184 191 199 205 200 198 202 +202 196 185 176 166 190 212 200 204 205 200 210 +213 217 225 225 202 211 213 212 225 225 212 206 +216 205 201 209 188 179 135 114 124 115 124 126 +108 116 138 129 143 196 201 172 168 159 169 150 +139 130 136 138 131 115 124 109 111 115 99 92 +109 95 107 114 158 139 139 127 154 171 157 160 +164 147 145 144 143 140 136 133 139 146 131 138 +153 140 150 135 143 147 170 154 162 148 157 157 +149 155 153 146 106 77 100 97 103 187 200 202 +210 191 197 210 209 217 218 204 205 215 209 207 +207 210 199 210 218 211 215 217 215 209 216 212 +220 218 212 204 223 216 202 205 195 192 186 170 +162 143 159 172 187 180 190 189 180 184 185 176 +168 164 171 187 194 196 194 189 184 190 192 189 +202 188 198 187 188 182 177 180 186 187 168 126 +97 94 111 102 85 129 120 88 115 134 127 100 +94 93 99 116 108 119 129 161 168 194 219 200 +115 114 144 164 199 210 188 177 141 83 93 117 +168 170 164 118 147 181 185 170 126 106 98 82 +135 161 164 194 149 148 126 113 139 139 151 140 +120 147 135 130 138 153 181 181 175 188 186 179 +184 184 164 172 166 187 174 176 212 200 169 138 +189 197 181 141 145 180 185 188 187 159 176 186 +170 186 206 192 194 198 184 172 151 158 176 190 +155 176 170 165 168 199 200 190 210 205 199 181 +162 138 153 164 176 155 119 100 115 139 172 195 +227 226 226 229 229 211 149 118 118 92 68 103 +105 96 109 146 +82 131 72 58 114 158 179 99 +90 74 88 140 169 148 47 74 76 109 86 56 +66 76 85 154 165 140 155 179 113 102 127 99 +53 87 119 133 176 208 202 167 151 148 103 97 +87 69 138 154 151 182 130 144 167 131 149 139 +137 162 154 177 137 159 177 191 200 187 184 171 +186 194 178 177 178 196 197 192 195 188 139 134 +123 76 92 45 66 123 187 204 202 206 197 102 +133 155 154 106 140 180 178 117 115 151 111 95 +70 62 113 178 111 48 43 42 49 92 74 92 +92 99 114 110 115 141 85 78 135 116 137 129 +140 97 127 109 108 130 124 129 75 68 67 98 +118 134 141 164 176 176 180 181 185 196 186 179 +186 191 188 178 188 180 149 102 144 169 160 178 +192 195 188 185 189 196 200 190 199 200 194 207 +209 205 195 192 204 201 187 188 202 206 202 197 +189 167 189 200 199 209 208 211 208 219 212 226 +227 205 223 229 219 221 210 194 205 205 195 200 +205 141 139 123 127 125 119 117 124 134 126 135 +162 180 192 149 182 159 164 147 148 130 135 135 +125 124 123 119 123 114 106 93 103 114 108 116 +138 151 131 161 151 169 162 151 165 153 143 139 +141 146 139 134 130 156 138 145 149 165 139 136 +141 137 141 148 141 161 148 156 125 144 130 138 +136 97 98 110 126 197 202 216 201 181 208 206 +213 205 209 217 209 204 219 217 211 207 220 219 +208 212 209 211 208 210 207 219 218 218 228 212 +209 207 207 196 184 160 158 164 169 174 190 190 +186 190 195 186 186 192 182 175 168 177 186 189 +196 194 204 198 179 186 179 188 186 187 197 198 +185 185 186 166 169 164 151 153 127 103 119 124 +113 94 97 77 60 88 114 121 125 107 107 115 +150 143 116 124 129 117 175 185 148 127 159 134 +104 128 161 177 174 141 96 102 134 168 201 165 +106 79 76 109 89 76 107 144 115 117 106 128 +185 144 98 121 130 156 191 197 198 228 201 177 +164 137 94 114 134 172 202 195 171 153 136 148 +127 124 123 137 145 161 170 164 151 141 186 210 +198 139 155 194 211 206 207 206 225 219 215 207 +177 146 136 182 171 159 150 169 181 168 137 158 +165 189 194 182 121 121 136 121 88 105 113 99 +115 95 77 135 119 136 150 175 184 188 180 150 +136 97 89 82 84 83 62 80 85 106 114 98 +84 147 168 150 78 75 139 184 154 136 89 75 +56 44 54 57 52 115 129 118 98 110 87 95 +156 166 159 189 166 100 149 192 186 138 126 143 +155 165 204 198 172 141 127 143 141 118 110 118 +98 67 114 157 88 78 118 113 108 95 84 96 +90 96 103 146 175 172 177 200 146 131 129 151 +211 212 217 206 144 73 76 80 89 144 182 164 +145 179 212 206 200 158 120 156 210 179 139 137 +195 196 169 85 77 150 153 116 141 170 133 78 +39 58 57 89 105 85 86 88 127 137 116 121 +126 156 158 184 172 123 168 167 115 115 123 98 +125 111 140 128 68 67 95 97 131 145 158 161 +159 168 180 180 166 185 186 191 196 199 190 188 +174 170 150 110 147 165 162 179 194 195 191 192 +192 201 204 186 180 191 196 196 208 207 201 202 +199 197 198 206 199 188 192 182 184 196 190 197 +196 201 206 217 213 220 221 219 219 220 209 211 +210 206 200 222 210 208 210 190 209 151 146 137 +130 129 111 111 116 80 123 157 179 141 172 140 +194 177 160 139 149 131 127 124 124 121 123 116 +105 100 97 90 116 114 116 116 153 126 133 140 +135 179 151 150 172 162 167 153 151 135 138 130 +130 141 135 147 145 133 145 134 130 154 159 158 +153 172 166 188 148 141 129 118 157 106 115 130 +124 172 199 191 181 198 205 207 197 198 199 201 +208 217 215 213 210 217 215 209 209 210 210 216 +212 212 219 212 211 228 227 221 207 199 197 194 +170 149 155 171 181 195 191 192 194 188 181 178 +179 184 177 175 174 187 188 194 194 187 191 192 +198 196 190 195 190 191 189 189 184 168 162 157 +149 146 126 138 111 103 121 129 136 121 86 75 +87 117 138 118 130 125 106 124 154 161 167 155 +139 114 90 114 175 189 166 143 119 114 94 93 +121 143 154 148 139 96 87 116 109 130 137 103 +107 109 85 89 78 67 75 72 146 199 176 153 +178 174 197 210 188 172 191 192 189 210 188 179 +170 118 111 136 131 200 191 148 104 136 115 98 +98 164 196 153 147 170 140 127 120 125 162 189 +198 216 206 220 219 211 218 222 208 172 186 172 +161 129 115 161 178 165 213 221 200 160 179 185 +168 171 165 153 159 134 138 153 157 164 96 85 +78 109 133 182 220 185 148 208 194 149 176 189 +195 184 139 98 90 67 69 114 +105 77 97 165 +201 177 83 119 184 143 96 95 119 105 69 59 +56 62 67 63 83 87 85 64 51 49 65 97 +137 137 73 89 160 201 208 179 148 139 114 134 +187 186 172 154 158 144 154 177 202 216 188 197 +191 164 138 106 118 141 134 134 145 180 135 69 +88 118 83 98 121 169 179 161 174 171 188 194 +177 155 141 146 141 138 139 155 196 177 147 135 +129 128 156 192 189 172 147 127 147 116 87 95 +115 184 153 130 133 198 110 73 121 75 51 64 +74 105 146 181 212 201 195 155 181 157 131 127 +80 118 90 99 157 158 125 97 60 99 111 54 +31 55 74 126 166 148 157 178 176 179 180 180 +190 172 174 185 189 192 181 168 170 168 154 141 +106 133 159 184 187 185 188 186 190 181 192 187 +185 189 194 195 205 204 195 192 190 195 197 198 +188 199 190 191 197 190 189 195 206 210 201 204 +207 217 225 228 223 220 225 222 215 220 217 218 +219 220 200 187 187 157 146 130 131 125 119 100 +116 121 121 150 165 164 165 189 186 165 131 156 +154 133 131 128 137 127 110 114 100 90 103 111 +131 116 128 128 113 126 113 148 164 179 148 141 +146 162 178 151 148 137 133 129 140 135 146 140 +140 137 138 134 136 137 135 156 175 174 172 148 +151 137 137 129 174 138 108 102 130 180 182 182 +199 211 219 211 201 200 206 204 213 213 213 199 +205 210 208 207 213 211 211 206 207 212 216 227 +228 222 210 211 208 198 178 179 166 164 165 165 +180 178 180 195 190 187 187 180 189 184 186 188 +196 198 191 195 189 188 188 192 185 206 200 199 +197 187 181 185 180 177 168 164 162 141 134 109 +123 150 130 145 166 138 117 121 115 135 138 119 +149 161 127 129 145 129 107 124 170 179 154 109 +138 153 170 151 133 186 148 96 131 180 175 129 +139 138 129 139 139 129 149 165 144 116 160 185 +144 116 93 76 85 127 164 189 170 186 182 162 +155 200 207 176 162 156 199 217 226 184 177 182 +187 178 149 137 146 178 149 146 137 147 160 169 +213 227 229 222 204 207 223 210 196 190 139 159 +154 154 167 138 176 143 127 138 189 200 200 222 +212 194 192 171 151 211 220 196 199 201 189 184 +154 157 204 197 177 126 150 167 176 220 219 209 +167 134 159 174 153 139 159 135 178 207 184 165 +97 118 145 181 +133 137 160 164 137 189 195 123 +126 160 90 86 98 140 164 129 116 75 51 58 +56 72 99 87 86 78 79 79 77 66 119 117 +118 141 147 149 160 154 137 168 154 121 161 200 +225 226 216 191 137 144 162 208 191 145 149 185 +201 226 218 168 103 124 84 66 66 68 69 89 +127 150 165 155 158 134 147 148 155 168 172 127 +125 162 120 130 130 154 162 106 105 97 146 194 +162 161 110 124 120 87 64 43 53 59 64 117 +153 120 104 79 93 83 118 137 191 196 194 161 +133 140 159 159 140 109 99 110 106 85 116 156 +172 113 64 88 100 116 128 83 34 36 62 126 +166 178 161 177 192 190 194 191 189 188 196 201 +196 194 198 196 184 185 158 150 119 117 150 182 +177 185 186 184 182 192 195 196 196 187 192 194 +198 210 198 194 196 187 194 204 200 191 192 196 +194 190 197 187 205 215 192 207 201 212 217 227 +228 221 229 228 202 211 220 221 215 211 217 213 +172 138 141 145 131 128 118 93 135 128 128 141 +169 167 162 186 168 174 141 164 153 128 125 127 +119 96 108 103 110 115 115 118 125 125 131 129 +116 115 115 117 148 180 167 141 145 156 147 141 +136 139 133 130 129 129 137 138 133 144 146 141 +145 137 138 143 150 156 166 153 155 131 138 153 +125 123 96 104 110 179 186 197 204 206 200 195 +199 212 206 211 207 211 212 215 223 222 211 206 +200 204 205 213 211 212 212 228 219 223 211 196 +200 195 179 177 184 176 184 194 189 196 200 198 +190 180 181 190 205 202 198 187 185 195 198 197 +197 194 185 189 180 192 201 200 190 184 175 171 +164 147 150 145 146 136 151 123 156 170 175 149 +154 157 136 119 104 87 94 128 160 172 172 149 +110 121 131 143 113 128 144 105 128 167 178 161 +138 100 159 129 151 168 141 149 148 140 113 135 +124 99 94 108 125 135 138 121 150 166 171 181 +145 133 121 133 174 181 219 229 239 235 241 236 +228 210 189 178 162 165 150 130 134 154 146 135 +157 146 117 121 137 166 160 123 123 126 178 206 +219 207 176 149 128 159 176 156 156 130 172 178 +190 195 202 191 187 211 204 215 239 227 219 207 +192 168 176 156 113 125 130 116 100 90 136 150 +154 150 197 184 124 107 143 160 205 222 205 167 +126 157 154 121 77 137 194 187 178 146 125 106 +115 149 121 93 104 145 174 201 166 131 155 89 +99 147 162 130 162 178 158 96 80 63 69 78 +67 62 89 138 199 207 196 192 213 218 190 167 +170 115 155 144 93 62 63 67 137 190 213 216 +188 111 72 113 130 174 154 166 206 192 169 137 +182 185 198 202 201 184 172 202 210 198 151 131 +172 166 127 117 121 117 99 94 98 87 119 174 +208 197 147 77 78 77 106 140 127 79 58 60 +55 47 36 58 87 124 172 207 149 164 126 148 +116 134 170 134 117 104 79 120 150 156 127 140 +147 109 95 117 121 133 88 131 145 82 65 75 +107 80 46 45 37 53 56 131 168 177 172 170 +186 187 178 182 186 185 185 189 178 169 198 201 +189 160 159 177 150 114 150 164 176 186 188 191 +177 192 202 201 191 196 187 195 192 196 199 202 +207 210 200 198 195 206 210 197 191 196 192 200 +196 199 208 218 210 221 225 216 229 220 212 216 +225 202 206 208 199 198 217 209 174 148 150 151 +129 126 130 133 126 118 130 134 166 177 165 160 +180 171 145 155 140 133 124 127 115 96 113 106 +109 123 108 111 120 121 127 129 145 146 137 147 +176 160 151 143 144 147 145 143 135 150 144 135 +130 130 134 138 143 129 144 140 160 147 164 131 +138 159 181 148 165 126 136 178 148 127 105 111 +120 197 196 205 206 200 204 196 202 211 200 199 +209 211 207 215 220 211 206 200 199 196 216 210 +213 220 219 221 220 210 197 206 196 175 170 175 +185 184 188 188 189 194 196 189 189 197 204 199 +195 199 192 185 186 197 191 194 199 188 190 195 +190 192 192 181 177 174 157 167 157 139 124 145 +148 154 170 135 159 150 148 160 161 129 127 126 +96 93 119 110 138 167 194 150 123 167 166 143 +151 108 96 111 119 115 156 164 130 137 141 161 +158 178 153 108 105 139 94 145 160 141 106 84 +96 114 165 155 159 199 204 188 171 117 137 117 +120 187 216 172 136 159 177 190 211 194 195 186 +154 165 182 165 153 140 157 160 169 171 145 130 +157 189 208 218 217 210 202 199 221 230 236 233 +235 231 223 211 212 190 175 187 212 188 158 158 +204 221 215 199 191 196 191 175 165 187 205 211 +184 150 160 164 145 95 108 111 80 84 95 129 +190 199 202 211 230 205 157 178 148 110 99 86 +96 95 117 103 84 83 107 95 +80 125 119 99 +108 134 139 121 133 85 105 98 99 164 205 196 +144 84 111 116 145 143 115 156 157 108 103 100 +73 87 111 131 139 146 139 171 144 72 78 82 +169 134 68 77 115 166 177 175 202 195 167 178 +130 95 107 104 166 144 124 121 125 110 111 136 +205 232 227 219 208 204 216 209 189 167 144 130 +97 144 171 191 154 182 217 205 179 190 185 143 +178 185 151 154 82 45 56 99 154 167 184 204 +213 196 187 143 88 109 177 170 120 73 63 79 +87 148 171 154 154 109 99 99 130 103 118 110 +145 108 72 76 125 106 84 116 90 79 49 49 +114 85 66 128 154 168 177 181 191 194 196 194 +197 190 184 195 199 184 174 181 194 198 174 167 +165 137 123 159 179 187 196 187 190 185 187 185 +195 198 191 192 200 204 201 207 208 212 207 200 +202 199 202 205 194 196 198 197 182 195 204 216 +212 212 223 231 232 229 226 209 222 218 207 210 +219 206 206 198 189 146 150 133 123 124 124 113 +117 114 104 121 153 186 148 149 176 138 141 159 +136 128 114 119 118 117 120 114 111 118 107 106 +117 124 125 126 133 149 140 157 210 195 194 176 +150 156 138 133 133 131 127 128 131 126 134 136 +136 137 138 138 139 147 153 134 151 148 133 140 +161 139 156 153 161 139 104 126 138 190 189 199 +180 198 209 209 213 210 202 209 212 212 219 220 +212 207 212 208 207 217 218 209 218 213 208 215 +221 208 195 191 194 186 161 175 190 195 191 191 +198 199 198 198 195 200 199 198 191 187 191 181 +190 197 195 197 192 189 192 197 192 191 186 179 +178 160 148 136 148 131 124 150 177 189 178 171 +159 149 181 170 160 156 141 105 78 98 107 98 +78 110 135 165 141 126 133 154 167 162 160 105 +111 88 110 113 150 187 205 192 188 191 206 210 +161 117 115 100 116 171 188 190 156 154 150 123 +96 99 134 171 210 211 170 95 68 68 126 155 +179 189 169 155 182 194 169 180 194 180 189 202 +205 200 196 176 187 159 165 184 181 156 135 143 +148 164 170 190 186 216 220 215 199 169 148 165 +161 144 114 116 95 85 94 102 90 96 97 114 +154 175 177 124 145 115 84 114 120 102 129 148 +154 166 143 162 158 168 205 181 174 192 211 206 +139 157 179 168 130 120 134 133 127 155 182 125 +92 75 98 109 +124 109 147 136 131 144 128 158 +148 96 164 159 148 160 186 220 225 210 162 114 +100 88 110 99 89 110 160 175 195 181 156 99 +38 60 80 93 75 94 123 134 113 162 129 85 +84 115 129 151 181 158 110 88 96 103 118 121 +79 76 73 73 76 118 150 144 139 151 162 185 +171 197 202 182 175 164 158 144 149 120 151 198 +206 182 151 93 93 96 123 119 139 117 77 106 +146 121 102 141 174 189 207 200 191 139 72 76 +136 159 133 102 103 145 158 111 171 178 208 207 +153 141 145 114 168 176 154 95 149 72 62 100 +161 145 128 98 70 62 89 83 85 75 97 137 +156 170 162 176 190 192 200 200 198 200 185 168 +176 182 176 179 184 192 196 184 167 177 133 153 +179 180 188 190 194 175 184 189 191 185 197 196 +192 196 202 199 194 208 209 205 215 211 197 198 +210 205 202 200 200 187 184 199 198 212 217 225 +222 218 223 222 217 219 219 223 226 219 207 209 +207 175 134 129 120 121 123 96 104 130 118 129 +150 197 162 182 185 165 131 139 123 127 128 124 +119 127 131 129 138 117 116 131 128 125 131 134 +131 140 138 145 151 159 161 160 143 147 134 137 +130 136 136 129 133 136 137 130 135 137 137 138 +145 141 148 130 136 145 143 139 150 184 156 151 +174 130 110 120 137 176 194 191 202 206 198 212 +219 199 212 222 211 209 219 215 206 209 213 211 +211 211 219 215 225 228 228 216 209 210 198 195 +184 181 171 196 191 188 187 187 189 195 189 181 +191 185 198 199 188 184 185 179 187 190 191 197 +195 192 189 196 195 185 180 164 164 153 139 129 +133 113 131 156 172 179 188 182 161 153 162 145 +162 159 119 108 104 80 84 82 80 97 99 133 +161 179 143 155 185 154 140 155 167 144 169 166 +156 159 156 156 150 134 160 177 190 181 171 143 +138 179 205 210 218 198 197 200 197 191 171 117 +90 134 153 166 144 116 94 99 124 103 126 150 +208 225 205 186 190 180 164 186 197 208 205 176 +178 202 211 198 222 221 225 231 211 187 160 143 +156 167 127 129 174 202 212 205 198 190 143 115 +119 130 135 114 108 151 160 97 116 176 205 222 +225 211 194 178 169 211 206 177 144 171 199 219 +230 217 180 170 194 192 125 118 185 198 143 125 +117 96 103 111 86 129 140 119 174 199 198 185 +120 135 133 115 86 73 123 143 105 145 186 162 +147 135 144 147 158 156 171 174 164 87 86 131 +119 123 119 114 135 137 133 95 70 73 78 123 +133 129 149 127 111 155 175 170 159 171 153 145 +108 82 63 143 166 168 128 130 124 119 177 146 +127 159 197 201 200 213 213 202 172 141 148 202 +216 231 229 204 165 129 141 110 128 125 72 66 +140 138 123 166 138 103 104 148 130 108 110 73 +88 92 85 67 63 55 78 102 103 127 168 180 +182 191 201 199 196 158 150 139 161 141 127 113 +111 78 64 60 90 103 98 86 74 53 56 67 +60 41 48 41 49 49 59 99 158 171 160 170 +182 189 199 192 191 188 196 192 190 200 196 190 +179 184 186 200 187 171 149 120 172 169 178 185 +189 180 188 191 194 196 191 192 192 189 200 210 +191 195 201 195 205 212 206 207 204 197 197 210 +195 200 205 206 215 212 211 223 228 226 215 230 +220 221 219 207 209 221 215 197 186 177 128 130 +123 119 102 126 110 134 146 169 187 201 148 170 +154 150 134 140 118 125 127 128 127 130 126 123 +120 104 114 126 119 120 126 129 137 140 146 155 +155 157 162 153 144 145 138 137 126 134 135 133 +135 131 139 130 133 138 131 139 140 141 140 140 +156 157 186 169 136 151 155 153 164 133 104 119 +143 176 195 197 196 188 191 207 197 204 212 212 +220 220 205 208 209 204 209 213 206 210 205 216 +220 217 223 221 208 200 199 196 179 181 182 181 +185 196 197 200 202 204 204 201 186 194 189 189 +194 196 189 197 191 195 197 196 189 196 201 180 +180 177 171 165 149 135 126 124 138 170 175 184 +177 161 175 176 158 168 164 165 164 159 138 130 +105 123 102 116 138 125 87 69 128 140 149 121 +111 143 154 140 133 135 107 128 116 86 136 146 +147 116 102 146 153 159 201 197 176 149 181 192 +219 226 211 188 146 116 127 144 114 114 90 134 +161 171 178 156 159 150 111 119 113 116 157 204 +187 179 170 167 188 184 175 178 126 120 139 151 +157 146 159 180 176 168 143 150 168 187 188 197 +192 174 181 197 217 222 233 238 241 237 233 229 +199 172 177 170 153 151 136 143 175 191 227 216 +211 198 160 148 137 129 115 110 140 114 106 114 +99 118 120 188 176 168 126 128 160 160 131 143 +157 145 119 120 107 102 78 60 +127 176 188 186 +204 194 166 145 95 63 55 76 62 46 64 93 +115 116 126 140 120 150 129 120 125 138 138 133 +155 181 139 86 84 113 84 134 120 86 103 140 +138 109 96 90 73 125 130 119 140 144 69 60 +150 189 188 167 207 211 170 141 133 150 111 90 +135 148 166 186 188 176 170 185 172 191 190 172 +131 133 168 104 95 115 102 121 106 89 97 127 +98 72 80 84 125 140 185 182 161 145 123 98 +127 147 146 124 162 194 169 147 158 169 180 139 +118 149 160 156 138 130 168 186 155 161 129 114 +136 115 111 100 59 51 109 108 72 37 87 78 +72 107 109 98 147 171 168 179 176 188 199 202 +195 186 185 195 191 190 195 187 194 197 191 197 +201 187 154 124 159 174 182 188 186 181 191 199 +195 206 208 204 199 205 204 200 207 199 188 200 +200 199 205 191 188 198 208 209 208 194 204 195 +202 210 212 208 226 233 222 227 231 219 218 211 +202 201 206 206 181 146 153 126 126 127 98 96 +90 128 141 200 202 202 151 150 145 177 136 148 +135 135 109 129 136 125 134 124 105 115 118 121 +123 120 121 129 135 141 160 167 155 144 153 154 +144 144 146 140 137 138 129 128 128 131 131 129 +131 135 137 124 126 115 139 151 154 139 160 156 +161 146 145 144 186 134 102 133 150 181 200 194 +186 188 208 197 190 205 202 213 206 204 207 204 +201 211 218 205 213 206 210 222 226 211 211 215 +201 197 194 191 180 172 174 194 191 198 198 196 +191 191 195 191 198 196 189 206 207 195 191 199 +194 201 196 187 196 194 194 187 185 168 170 161 +134 116 125 118 151 162 154 175 185 187 192 197 +186 194 168 176 182 180 145 124 113 120 124 110 +88 82 99 116 119 107 130 102 118 103 115 176 +172 176 157 154 181 185 178 150 94 105 90 102 +113 134 165 179 197 177 136 133 199 198 190 180 +198 190 175 108 114 108 87 94 94 105 111 157 +192 207 175 128 164 158 159 186 197 201 161 126 +143 147 150 176 169 181 219 216 185 150 117 111 +135 141 181 215 211 215 212 204 188 186 185 179 +206 207 206 217 211 187 196 201 211 210 204 210 +208 195 171 216 201 155 154 181 177 167 157 141 +127 136 139 98 145 159 191 179 157 186 217 188 +144 154 171 157 164 138 111 127 130 176 205 188 +143 80 118 146 +74 45 65 69 77 93 70 73 +89 66 78 68 64 48 74 49 44 78 95 168 +157 124 159 181 143 140 143 99 116 144 129 128 +106 88 102 56 55 72 78 133 129 118 133 146 +127 144 175 130 75 77 83 57 58 70 78 59 +99 151 155 138 159 165 184 177 154 145 150 141 +137 130 103 140 157 175 177 157 111 99 86 119 +140 124 127 176 154 149 109 82 95 165 134 189 +213 206 189 133 87 94 94 86 125 121 133 161 +215 220 223 219 192 150 109 79 83 96 95 129 +166 115 89 99 74 113 93 58 88 56 51 60 +62 83 73 64 80 140 162 119 86 72 62 74 +150 178 182 182 181 192 194 195 200 197 191 191 +194 199 191 188 192 201 198 188 184 186 184 158 +130 160 189 190 185 191 197 195 196 200 201 198 +194 186 191 210 205 209 212 208 197 200 208 207 +196 189 200 200 206 195 191 188 194 204 219 212 +230 226 226 225 233 226 227 225 216 208 218 208 +199 157 135 130 133 124 106 107 87 106 136 189 +189 177 147 144 143 160 136 137 133 126 115 123 +127 121 127 116 111 116 105 108 125 127 128 141 +138 153 159 145 148 151 144 148 146 140 140 140 +131 137 129 126 113 124 129 134 131 133 139 141 +149 144 145 166 158 153 170 177 169 174 164 166 +165 113 95 126 124 174 185 178 192 207 212 209 +209 215 206 202 213 215 202 204 209 204 215 226 +222 216 218 216 222 220 218 213 199 198 190 194 +187 189 202 194 196 199 200 191 200 198 194 197 +196 188 191 204 202 192 191 187 190 189 184 181 +188 188 186 182 180 169 154 154 129 98 111 129 +165 176 177 178 177 170 177 176 169 182 176 174 +186 179 179 159 139 117 109 124 165 162 162 182 +154 136 114 135 120 114 92 105 114 125 167 165 +158 136 136 151 131 89 102 149 168 169 113 129 +128 155 166 170 166 204 226 220 178 171 192 187 +191 211 195 194 192 192 208 205 162 145 184 172 +189 176 179 145 127 176 184 219 220 207 196 180 +194 202 223 230 218 216 190 171 191 194 213 227 +222 211 215 218 207 188 195 206 204 191 205 206 +160 188 202 175 159 136 151 172 155 166 199 223 +207 160 115 144 168 184 160 109 131 111 128 134 +144 172 169 154 145 133 135 150 138 154 162 170 +178 172 165 187 180 175 113 89 80 114 125 93 +105 70 59 75 100 72 77 98 102 123 153 145 +151 146 125 99 96 73 83 88 136 174 191 172 +164 116 78 54 56 66 99 151 191 161 185 196 +185 178 177 188 192 172 169 195 205 178 164 162 +144 63 56 39 46 57 54 38 65 85 146 192 +211 202 171 136 102 165 171 187 197 184 145 180 +185 180 158 162 185 194 192 222 213 198 201 194 +148 118 99 170 199 144 103 107 146 147 120 134 +139 131 113 144 154 177 184 169 146 119 115 102 +134 135 144 127 125 119 159 197 188 148 106 113 +136 134 133 100 73 58 74 103 102 95 55 80 +125 135 129 100 72 64 63 76 153 186 186 181 +191 198 191 192 197 195 192 192 199 197 199 191 +187 187 191 180 181 172 162 170 118 146 174 185 +191 192 198 192 197 201 198 199 199 200 201 207 +200 198 195 206 208 209 199 208 191 199 196 198 +190 199 185 184 204 198 210 208 223 213 228 216 +222 221 216 216 216 201 205 209 204 157 133 124 +125 125 128 134 119 131 150 165 171 162 148 151 +154 136 145 144 140 136 126 127 126 125 115 115 +115 118 130 109 125 130 127 131 136 139 156 167 +169 175 159 158 157 146 138 144 143 133 130 134 +120 123 137 141 133 144 144 141 151 156 148 148 +159 153 172 157 165 147 165 159 164 145 105 115 +110 148 158 192 192 208 209 205 215 200 189 208 +204 208 200 206 208 212 222 213 211 222 211 209 +213 209 210 211 191 208 189 185 185 195 190 192 +194 190 196 200 201 199 198 199 194 198 190 191 +196 186 188 194 194 191 179 180 181 196 190 179 +167 151 141 150 166 154 150 161 144 168 168 194 +201 198 195 199 198 188 181 176 174 162 165 149 +120 127 110 88 127 127 127 103 92 69 86 89 +88 136 117 136 170 154 106 172 194 166 148 136 +109 99 90 92 134 204 194 166 153 159 141 137 +127 119 146 180 189 175 176 188 187 186 194 202 +206 206 200 192 175 181 219 230 213 190 190 165 +178 226 198 165 154 164 165 182 156 148 166 139 +155 192 213 225 226 213 207 205 199 225 221 219 +201 166 146 119 158 149 133 153 114 155 172 149 +119 144 194 211 225 228 200 158 146 175 204 204 +177 144 118 127 117 90 161 179 154 90 93 123 +128 128 157 204 196 148 119 131 155 108 108 125 +106 66 45 79 68 73 145 166 +102 105 85 60 +55 67 90 117 154 160 106 106 108 97 77 74 +94 84 115 94 100 155 154 145 156 172 204 194 +155 95 57 53 48 87 102 143 155 171 182 154 +145 166 168 188 174 130 115 127 138 176 194 199 +190 167 129 73 73 64 57 83 92 117 116 161 +182 160 113 108 87 75 80 127 120 150 175 188 +191 182 200 186 138 111 121 119 116 124 189 179 +160 165 188 190 176 131 116 150 115 146 154 160 +188 176 181 118 138 149 175 192 171 143 128 87 +106 135 165 202 168 178 167 211 204 169 133 109 +131 105 117 103 111 85 111 84 41 47 82 68 +73 87 95 94 139 166 177 172 181 189 195 184 +182 178 190 191 194 190 201 200 198 202 202 197 +199 190 160 150 134 113 164 188 190 194 200 192 +201 208 204 204 204 192 200 199 197 200 197 208 +206 213 210 204 206 202 197 200 199 204 206 205 +207 208 218 208 222 231 229 227 230 230 215 194 +198 200 202 198 197 162 155 129 121 127 125 141 +141 133 147 199 205 158 166 160 162 148 147 154 +139 133 128 123 121 129 127 104 134 117 113 100 +111 129 127 130 143 139 150 148 145 144 134 140 +149 150 141 143 154 140 141 136 134 130 135 137 +139 138 141 131 137 165 158 143 160 149 149 154 +179 174 151 164 170 150 115 117 113 138 180 191 +191 194 200 205 202 199 208 216 204 207 207 215 +222 220 223 215 210 223 229 227 220 216 209 201 +189 205 190 190 190 196 195 199 195 187 201 202 +200 205 200 201 201 196 194 198 191 190 198 207 +205 206 189 191 192 190 185 179 171 164 139 114 +151 160 172 166 157 184 179 182 189 196 209 202 +201 186 186 187 182 172 157 145 121 125 104 103 +114 114 126 120 111 105 113 114 148 148 134 123 +127 174 194 168 160 169 136 126 104 94 121 117 +116 134 144 151 154 166 164 139 153 130 144 168 +175 185 172 167 146 156 134 160 208 211 218 225 +229 201 168 135 161 169 108 129 87 192 215 195 +216 207 208 198 177 184 178 172 190 190 171 158 +198 208 205 196 191 188 206 187 201 201 198 191 +171 184 175 149 159 198 215 210 150 125 172 195 +196 191 219 235 229 216 206 199 160 75 60 92 +84 114 121 98 93 135 165 205 216 205 198 188 +186 196 170 125 129 130 135 175 166 103 70 62 +75 68 67 96 +118 107 145 123 135 138 111 90 +111 124 92 58 104 92 108 143 86 103 95 60 +59 73 98 89 88 66 114 175 198 217 208 187 +159 105 99 68 63 84 119 126 149 96 68 87 +85 127 170 187 195 162 154 115 136 124 105 129 +130 179 177 181 167 128 143 134 83 120 98 124 +169 138 177 190 182 180 187 175 168 164 145 139 +165 181 182 198 210 199 200 199 204 199 191 139 +127 135 159 176 172 192 198 180 147 154 161 172 +191 207 187 119 72 95 108 111 144 191 166 156 +121 109 133 92 77 88 109 87 123 102 117 146 +160 160 119 82 33 36 55 51 64 82 92 80 +134 177 184 181 187 195 199 198 192 195 189 195 +197 199 195 195 194 200 199 187 179 189 188 178 +157 129 155 179 186 194 184 190 195 194 202 202 +201 198 201 200 200 208 204 202 208 199 204 201 +204 194 201 199 209 196 194 201 190 194 207 209 +198 210 229 225 215 233 230 216 206 213 212 208 +199 154 134 137 121 115 125 149 144 145 157 172 +190 151 175 157 161 134 134 136 144 136 130 124 +129 139 129 133 145 127 127 125 128 124 119 121 +139 146 144 140 154 160 140 138 140 147 147 138 +153 141 151 144 146 129 130 126 136 137 128 136 +140 177 166 143 141 156 157 157 164 157 154 167 +168 161 129 123 121 126 186 199 197 202 213 209 +204 217 217 198 206 206 201 212 212 217 225 220 +223 228 221 211 221 217 201 197 190 186 192 197 +195 201 198 190 192 205 204 198 204 204 202 199 +197 195 190 182 189 200 200 207 205 199 196 191 +195 188 172 168 154 141 118 118 157 180 178 190 +198 184 182 180 198 197 199 199 206 206 197 192 +179 178 167 157 143 131 117 117 172 166 157 133 +104 85 121 160 125 119 119 129 113 149 169 192 +181 207 194 189 167 116 107 89 87 127 137 134 +144 172 190 172 194 169 154 174 184 189 145 128 +114 111 129 126 133 162 187 204 212 204 187 175 +140 134 165 147 121 114 175 190 125 133 126 141 +149 148 153 141 135 150 139 137 139 148 143 160 +164 188 213 189 208 226 233 228 199 149 129 116 +119 99 93 136 162 146 185 219 232 226 212 185 +196 170 146 116 84 68 68 58 89 120 73 99 +167 208 187 167 119 119 156 141 167 165 137 181 +186 209 202 138 79 69 72 119 114 76 80 97 +80 106 136 121 94 79 70 121 179 212 196 153 +66 89 103 123 99 156 179 133 74 59 60 79 +106 139 138 139 134 114 154 191 188 151 95 77 +78 62 64 97 151 179 188 172 160 169 188 151 +154 111 121 89 107 124 140 145 83 92 106 121 +146 179 184 206 205 176 167 166 162 191 181 166 +170 182 180 166 197 161 164 159 186 164 138 186 +190 182 178 157 148 161 176 169 194 177 198 218 +200 177 131 140 167 141 143 161 96 78 69 76 +62 109 180 202 197 162 116 140 89 82 123 139 +134 155 177 174 200 171 127 100 77 59 53 51 +100 104 94 103 105 104 97 80 118 180 182 170 +177 171 176 167 169 172 195 196 196 197 195 196 +195 192 197 200 194 177 197 199 188 169 134 168 +185 187 195 198 186 195 206 199 195 196 190 198 +200 196 197 201 208 206 213 210 200 202 199 202 +209 211 204 199 206 199 207 209 208 208 211 220 +226 229 229 228 215 192 200 207 190 150 121 124 +121 114 121 140 130 135 157 168 158 148 169 162 +165 137 141 154 134 131 127 126 129 123 129 141 +129 128 131 136 136 121 114 131 145 149 154 158 +171 165 153 135 141 144 143 155 150 146 148 145 +150 140 136 137 136 135 140 135 138 157 181 161 +147 159 167 170 179 171 150 159 159 178 138 116 +116 149 198 201 199 210 205 208 215 211 201 201 +200 202 215 212 215 219 212 223 233 231 220 217 +216 208 204 200 197 189 188 194 200 196 190 197 +207 200 198 197 196 196 202 202 204 195 194 184 +190 187 192 204 197 189 197 190 192 189 182 178 +151 139 113 148 144 175 166 169 169 154 176 178 +194 199 204 206 213 205 197 186 184 182 176 174 +165 160 136 117 114 141 114 123 162 155 148 137 +171 182 174 143 88 95 138 115 138 103 102 140 +185 207 178 170 147 121 126 118 119 149 165 165 +161 130 92 105 168 205 181 188 166 138 136 157 +150 154 148 143 124 147 157 127 129 168 194 218 +213 210 210 212 206 170 189 209 194 175 201 199 +191 184 190 211 209 175 172 186 222 219 220 197 +144 125 123 153 161 190 188 182 194 206 185 180 +177 186 187 187 162 134 123 134 149 126 131 113 +96 114 64 89 169 168 210 227 219 204 178 143 +114 100 125 126 154 140 115 143 200 181 97 137 +133 95 83 124 136 135 162 164 +120 103 140 148 +118 98 82 86 117 113 133 137 79 72 108 121 +125 140 134 188 181 121 73 74 77 98 95 105 +154 177 196 174 140 153 134 96 131 117 76 89 +55 89 167 200 200 197 200 187 216 201 151 143 +125 130 120 167 143 105 118 148 178 178 166 178 +176 164 145 100 86 84 77 106 140 166 197 202 +172 90 103 121 139 114 139 130 105 100 117 105 +127 185 201 178 184 174 171 200 194 143 149 192 +207 182 177 195 192 151 131 153 169 181 180 165 +147 113 121 92 110 130 130 174 207 180 162 115 +102 124 155 148 161 171 150 131 98 74 78 89 +107 89 98 90 103 156 180 182 180 187 194 197 +199 189 180 184 186 190 194 187 199 206 205 191 +201 181 175 188 179 158 140 148 176 180 191 181 +198 200 191 199 201 204 200 202 197 200 201 200 +195 207 201 208 201 205 205 206 204 201 198 195 +192 205 213 220 225 223 223 228 220 225 225 229 +213 201 186 174 143 129 125 133 127 117 119 123 +134 131 167 206 174 158 131 148 151 135 159 157 +136 127 121 127 121 120 129 139 123 126 128 133 +129 138 148 153 150 156 159 165 166 148 145 148 +159 133 136 143 151 157 177 147 139 136 138 146 +140 137 144 133 138 137 148 146 131 138 149 159 +172 141 150 170 169 164 131 116 126 172 192 207 +202 202 199 200 200 200 202 201 213 213 219 223 +220 218 220 227 219 219 223 225 217 210 198 206 +195 187 195 202 198 191 205 208 204 200 195 199 +208 205 209 207 202 204 209 196 196 202 192 198 +206 199 191 195 199 191 166 175 148 139 153 169 +175 184 167 179 191 192 196 206 186 181 186 186 +191 186 175 182 185 170 150 157 159 149 127 121 +131 168 156 136 115 110 110 102 111 109 149 167 +181 162 161 136 120 113 90 96 87 111 150 154 +160 191 184 196 215 207 185 147 160 155 148 94 +66 98 156 180 158 139 149 191 199 196 197 210 +194 187 168 175 191 200 198 185 159 130 153 137 +151 172 162 184 210 201 212 209 169 162 176 169 +210 217 215 218 225 216 209 197 144 119 150 137 +146 195 202 206 218 216 189 168 140 135 178 170 +202 222 219 207 172 99 94 124 135 139 150 143 +157 133 158 190 143 160 190 160 154 196 194 167 +138 160 212 229 195 190 211 217 179 149 118 109 +114 140 110 87 +89 108 145 185 188 156 96 77 +72 100 79 62 68 73 84 92 78 140 175 170 +205 222 207 166 164 136 90 86 83 92 111 113 +96 78 90 93 162 171 107 121 139 117 102 154 +159 178 198 194 189 166 154 128 164 178 143 146 +100 102 133 139 158 178 162 138 97 123 108 120 +167 178 195 172 201 207 178 106 82 105 99 66 +100 99 135 158 153 144 165 172 169 139 151 134 +119 104 161 162 123 105 119 116 133 145 168 169 +146 141 167 146 165 144 86 123 126 113 156 144 +124 184 164 141 111 92 88 129 116 148 188 191 +179 153 120 104 120 114 79 95 83 100 104 82 +133 172 186 185 166 170 182 194 194 196 191 188 +182 191 198 188 175 186 199 198 195 195 185 188 +189 178 157 145 177 185 190 192 200 191 197 202 +205 198 204 201 198 197 200 202 198 211 209 210 +200 198 206 198 196 197 194 204 199 180 192 207 +213 211 223 220 223 220 227 217 222 223 197 189 +134 138 147 124 129 117 123 126 133 141 155 166 +170 184 159 148 128 131 151 145 138 127 107 109 +131 143 154 127 113 121 126 117 138 140 153 148 +153 172 171 162 156 150 145 131 141 162 153 140 +140 140 147 144 133 134 139 136 133 135 137 136 +140 147 154 160 150 170 165 158 143 170 175 187 +176 151 120 125 113 151 184 190 180 200 202 195 +198 198 200 199 195 204 216 220 218 226 229 227 +225 219 226 221 211 201 187 206 197 196 206 194 +200 201 201 196 197 197 199 204 213 207 207 206 +197 202 200 200 197 199 196 195 192 196 192 189 +185 184 162 136 137 157 169 154 172 172 184 191 +199 199 199 201 192 198 196 197 189 191 194 191 +184 174 170 180 165 153 139 108 115 176 162 127 +78 94 129 114 171 179 167 129 126 104 124 138 +125 127 138 151 143 204 176 154 133 148 158 164 +184 157 149 166 162 194 196 175 135 131 93 115 +138 153 147 156 176 181 205 209 207 199 165 135 +110 155 182 194 174 148 117 121 103 130 175 156 +169 200 211 202 195 184 176 155 115 141 202 219 +187 191 192 189 178 176 168 146 141 144 129 129 +144 150 166 167 162 158 134 128 117 117 104 88 +84 109 151 166 153 172 186 191 175 124 80 60 +85 74 136 175 175 156 157 169 206 220 200 179 +184 165 137 134 154 199 218 221 204 137 108 123 +111 114 115 90 116 171 145 90 88 120 110 143 +154 156 104 67 59 60 78 82 138 153 177 185 +190 213 215 189 154 161 140 86 111 154 148 147 +151 140 140 157 157 120 118 131 147 134 150 204 +197 172 194 154 161 186 153 108 114 95 161 172 +165 186 157 140 154 201 212 202 195 204 206 175 +200 172 108 83 97 124 159 128 148 160 171 160 +118 137 118 115 117 86 86 69 99 90 94 125 +161 197 204 192 178 171 149 109 118 157 99 63 +92 143 128 89 94 102 86 88 126 151 159 151 +177 159 147 157 184 155 127 147 137 113 145 137 +109 105 53 69 98 86 105 113 90 137 185 187 +182 174 188 195 198 188 200 206 205 200 196 206 +199 188 194 204 195 191 198 200 206 192 181 155 +159 180 192 201 194 199 204 194 204 197 195 201 +202 200 206 204 205 210 215 208 211 207 195 211 +208 207 212 199 209 200 201 211 211 211 213 211 +221 200 216 220 201 218 219 209 160 134 133 121 +127 107 131 144 130 143 146 181 178 159 159 150 +135 133 149 141 160 137 115 141 160 168 149 109 +123 121 120 121 128 136 145 154 181 161 150 165 +153 139 145 148 144 143 150 153 155 151 141 144 +148 145 138 133 130 126 134 140 135 137 170 136 +135 148 158 146 144 164 166 165 157 164 103 119 +119 180 194 194 195 185 198 209 202 196 202 206 +199 215 209 209 219 221 225 220 216 220 220 226 +207 215 219 215 205 201 205 210 210 200 200 207 +199 207 205 204 205 202 201 198 200 197 196 196 +185 182 192 198 190 186 190 188 186 174 158 146 +161 185 196 166 162 161 174 178 189 189 198 197 +194 197 191 186 195 195 188 186 187 194 187 188 +174 159 138 125 118 155 156 139 133 125 130 98 +102 181 215 213 178 140 134 113 125 107 119 140 +145 107 123 126 157 150 115 115 130 154 167 181 +195 176 137 113 143 140 86 86 145 202 199 176 +200 174 154 153 175 191 207 197 191 190 185 171 +208 219 210 189 157 129 129 146 139 167 194 204 +206 168 144 202 205 169 169 165 141 121 78 116 +175 176 161 184 186 164 150 175 168 184 186 195 +188 201 198 185 186 185 165 140 177 218 239 241 +245 240 233 194 143 96 118 127 137 156 162 129 +106 124 136 167 137 88 120 106 144 128 117 129 +128 157 157 157 123 64 68 82 +167 130 129 133 +80 109 139 121 125 154 159 148 143 135 139 129 +87 86 69 102 121 85 78 69 97 139 169 161 +117 139 118 134 150 190 186 159 155 135 139 123 +125 115 97 123 107 137 162 169 172 187 165 119 +179 170 198 194 179 124 83 87 89 128 143 185 +148 126 119 116 172 184 162 140 146 126 171 191 +190 195 176 171 158 93 54 66 77 148 146 85 +119 147 125 90 72 148 189 192 199 189 198 208 +200 206 215 194 160 83 93 157 191 180 119 160 +165 170 140 135 148 138 161 155 169 185 154 111 +99 57 33 37 70 98 118 150 116 102 96 89 +97 93 111 123 95 145 180 171 167 169 175 179 +195 196 195 189 196 198 189 200 205 212 197 201 +210 204 197 189 186 184 178 128 141 181 192 192 +190 197 201 201 204 198 199 200 196 205 200 195 +198 197 202 201 202 204 216 211 206 195 201 205 +198 192 175 192 215 209 223 217 225 220 223 223 +202 195 208 205 179 143 143 124 124 103 131 131 +133 147 150 180 167 145 144 151 141 145 141 136 +141 133 124 162 159 172 156 136 121 118 125 125 +135 135 137 137 147 144 147 150 139 127 156 148 +136 140 148 146 162 153 138 138 144 136 140 134 +137 130 133 136 145 138 141 166 144 137 160 151 +148 150 157 169 149 166 117 125 137 189 194 196 +204 194 199 205 206 204 196 200 215 218 212 219 +222 216 227 219 213 217 216 211 204 191 211 205 +190 196 209 200 195 200 210 200 205 204 204 204 +200 200 204 196 201 206 196 192 191 181 184 189 +198 198 182 182 191 164 156 147 174 181 187 172 +184 190 199 194 179 187 188 189 191 188 192 194 +185 184 187 187 187 189 185 180 180 170 160 149 +118 139 135 140 145 178 205 205 175 114 106 125 +138 137 146 145 174 155 134 125 129 154 188 168 +180 185 157 105 108 130 150 149 171 165 165 164 +195 202 198 149 85 84 136 147 180 211 217 216 +206 186 151 176 174 162 165 164 170 177 198 198 +154 151 184 204 202 180 195 219 215 212 208 210 +221 211 218 208 211 191 188 184 192 209 207 188 +222 222 211 182 184 150 114 124 145 146 146 144 +159 194 209 204 161 108 166 179 168 150 179 187 +169 157 129 153 172 159 175 178 172 167 154 156 +158 151 111 87 84 75 76 66 104 127 109 117 +97 90 74 84 +92 124 102 75 85 74 66 88 +126 143 181 186 171 153 139 168 155 134 94 126 +125 95 105 111 113 102 107 102 84 108 147 184 +174 168 195 197 206 211 209 208 191 174 160 151 +129 105 137 158 187 197 167 154 172 143 129 157 +171 182 170 118 135 106 96 139 158 157 197 211 +208 199 202 185 158 153 143 136 118 136 141 126 +76 73 98 117 105 148 182 189 194 174 162 121 +106 85 102 167 174 156 176 197 197 168 159 166 +162 180 200 190 153 166 192 196 151 164 174 148 +141 146 161 133 128 133 146 159 144 154 126 105 +118 150 161 176 155 149 82 97 111 116 126 151 +89 111 162 179 179 184 184 186 180 185 190 180 +186 198 197 195 196 192 195 187 191 204 207 202 +198 202 188 174 144 159 192 191 194 199 197 184 +199 201 188 197 206 196 204 199 187 200 210 208 +202 201 208 211 204 206 201 202 206 187 190 182 +208 218 227 222 226 219 215 216 218 188 201 215 +198 145 127 118 126 129 123 125 145 143 164 166 +159 134 149 158 146 146 158 133 128 144 133 141 +127 128 126 117 124 130 146 139 144 145 141 141 +143 153 164 154 143 139 141 144 144 139 140 138 +148 139 137 146 144 138 135 129 135 133 125 135 +141 145 146 157 170 169 158 166 150 168 147 159 +165 148 151 133 129 190 185 190 205 206 194 204 +202 207 208 210 205 208 218 210 208 220 226 225 +226 215 218 220 213 199 195 198 196 207 198 207 +219 211 196 199 195 206 211 198 194 198 195 197 +197 192 196 197 197 194 204 191 197 199 184 179 +177 156 148 148 159 170 182 178 179 186 192 187 +198 209 205 198 198 195 198 204 198 199 194 172 +161 148 151 166 169 167 146 144 126 162 156 134 +154 148 168 185 210 202 185 162 127 149 190 176 +179 160 167 182 169 160 151 138 150 158 178 184 +169 151 127 115 157 187 168 127 148 162 190 220 +221 201 133 84 116 154 169 187 164 195 204 188 +181 156 117 140 168 140 105 134 136 117 147 179 +206 199 177 162 169 184 179 139 150 159 160 165 +208 207 188 172 176 146 158 174 185 190 201 196 +198 189 180 170 121 127 102 80 82 66 92 128 +140 149 176 187 202 201 184 154 148 154 130 97 +143 153 190 207 172 155 149 144 138 123 98 87 +75 66 64 74 83 104 172 190 120 192 191 196 +138 69 59 75 55 47 74 69 70 105 140 167 +177 187 181 146 178 168 167 155 114 125 79 87 +89 62 56 74 140 190 206 218 225 220 205 200 +181 182 166 135 137 121 157 166 179 148 157 125 +131 156 188 206 201 187 178 170 166 102 67 126 +164 116 116 123 164 171 167 190 166 131 168 191 +212 222 197 155 149 182 195 171 113 98 104 128 +179 196 178 147 123 75 75 86 85 113 105 160 +187 167 172 185 189 189 179 176 170 177 192 176 +138 118 88 89 121 120 88 92 99 78 79 107 +109 120 126 141 129 150 138 147 139 108 111 139 +126 114 98 108 114 106 114 119 93 109 167 180 +184 180 180 191 192 187 187 192 195 181 197 197 +207 213 198 198 204 199 189 198 189 189 187 190 +164 139 177 184 200 202 187 192 202 194 205 196 +204 192 187 197 204 205 200 197 196 196 198 209 +208 199 204 198 200 199 197 195 189 205 219 217 +216 216 215 212 223 218 200 199 153 128 130 120 +125 133 135 155 164 140 164 176 182 138 136 140 +130 126 136 151 153 143 148 146 110 118 111 133 +126 130 141 140 145 145 161 155 158 165 158 157 +153 156 154 154 141 160 150 157 140 140 144 144 +146 139 140 134 135 141 135 136 134 138 140 137 +149 175 177 176 160 172 165 157 161 155 126 125 +135 188 199 207 199 197 207 208 206 206 215 213 +210 209 205 218 218 219 218 217 220 219 219 212 +223 202 195 192 201 195 206 208 202 199 206 199 +204 209 202 201 205 192 198 206 200 195 191 192 +200 198 200 194 196 192 194 195 181 181 172 182 +189 191 182 174 181 196 198 198 205 200 206 201 +200 202 202 199 198 190 190 197 188 178 170 178 +174 167 157 148 129 148 159 126 92 124 139 121 +136 165 187 211 207 184 146 138 184 195 195 177 +178 191 213 190 162 158 120 135 200 212 192 178 +144 128 170 175 155 95 94 166 209 223 218 189 +126 90 105 108 143 172 184 178 166 182 186 178 +146 146 155 129 128 114 140 167 127 140 170 180 +177 180 211 196 157 179 168 165 157 179 190 175 +127 121 125 108 123 162 174 164 177 194 188 181 +166 140 119 116 144 168 174 162 121 146 129 138 +179 219 223 213 201 187 176 148 127 119 103 121 +129 96 143 211 199 171 129 107 80 102 107 118 +121 123 106 127 110 130 154 146 +206 195 131 60 +95 110 99 66 47 72 94 120 138 120 161 178 +168 141 67 92 125 137 133 125 85 65 59 66 +68 76 104 123 119 171 186 116 127 164 198 177 +174 127 149 130 97 124 131 109 139 184 188 194 +197 186 156 110 94 94 107 105 139 106 119 182 +205 168 106 151 191 195 182 190 181 138 113 153 +158 143 97 74 77 88 124 138 133 117 100 110 +92 94 107 115 124 102 94 149 191 171 162 189 +185 161 107 84 74 87 79 102 141 97 113 100 +146 153 186 150 99 114 133 146 120 123 143 146 +115 137 129 116 107 116 115 151 131 92 97 137 +151 124 103 136 123 102 176 182 180 176 166 177 +187 196 188 187 200 202 184 191 200 209 210 204 +199 209 206 194 189 186 176 189 182 138 148 174 +186 199 196 198 196 200 205 187 198 191 184 189 +206 205 204 202 209 198 198 204 209 213 209 209 +206 197 191 205 200 208 217 228 226 228 220 206 +222 215 212 209 147 133 134 127 137 130 128 159 +153 146 161 174 164 141 149 158 116 105 136 143 +147 136 146 138 115 136 131 131 143 126 128 140 +153 149 153 162 166 161 155 164 166 164 164 155 +146 157 154 151 141 151 146 151 151 146 144 138 +147 140 133 131 143 141 143 146 150 182 187 169 +165 157 140 164 162 170 131 131 147 180 196 190 +192 196 202 199 198 198 198 209 211 209 205 210 +221 221 218 215 220 220 210 215 219 198 202 201 +202 209 210 202 207 209 207 209 205 206 205 201 +201 211 205 191 197 206 199 202 204 199 196 190 +187 180 177 174 170 170 166 175 186 191 191 186 +190 196 195 194 192 189 182 189 191 194 199 198 +191 184 182 188 184 177 168 166 157 151 148 111 +115 141 137 124 98 146 175 169 161 114 106 128 +160 159 118 123 130 157 177 160 149 139 162 208 +229 219 212 213 199 157 184 213 201 169 166 176 +166 169 139 105 119 113 129 157 182 166 170 189 +194 170 157 182 174 186 196 198 181 204 221 192 +176 167 145 164 180 197 209 168 144 121 149 185 +197 158 120 114 140 143 145 167 170 147 130 146 +151 151 148 169 172 166 146 175 154 156 200 216 +213 207 196 217 210 209 213 191 180 170 160 106 +135 161 128 109 134 95 111 164 176 180 155 143 +76 94 80 87 109 79 136 154 157 181 170 145 +118 116 104 126 +133 159 158 92 46 43 76 77 +72 58 62 108 103 148 160 121 155 146 73 99 +131 144 166 155 120 102 104 166 141 107 82 87 +90 74 90 111 154 134 116 69 118 125 149 103 +73 77 124 161 147 106 114 130 98 105 140 168 +115 123 119 78 56 46 68 87 102 78 58 56 +75 80 105 137 123 140 136 131 147 162 166 162 +141 104 144 202 213 201 191 188 124 137 139 162 +185 175 181 191 206 217 212 196 167 162 97 54 +72 119 178 187 148 103 108 191 197 164 136 121 +99 105 167 148 111 185 210 216 208 184 143 120 +95 108 113 114 73 80 84 124 150 156 138 143 +111 95 154 170 175 165 155 154 171 178 178 186 +197 197 186 191 184 198 204 204 207 209 206 196 +201 200 184 162 188 189 139 175 191 200 194 190 +198 192 202 199 195 186 196 190 196 205 196 192 +202 205 200 207 197 197 197 202 196 201 215 210 +198 204 202 216 221 220 222 211 223 219 207 204 +156 139 134 124 121 130 146 164 146 149 154 171 +171 146 157 190 148 137 145 160 147 121 129 123 +133 168 138 110 145 137 133 133 159 149 155 157 +154 167 170 151 154 169 170 156 150 149 149 161 +139 140 150 145 150 139 146 139 145 139 130 133 +138 137 141 145 151 162 175 166 141 157 139 189 +175 161 146 140 148 178 181 200 210 201 206 206 +207 210 216 216 209 221 220 217 212 205 207 211 +207 213 209 199 206 201 195 194 206 196 198 200 +208 205 206 212 206 210 209 206 208 204 204 199 +204 202 200 209 208 209 205 198 194 189 177 164 +164 176 170 168 171 191 192 192 188 188 195 202 +199 201 194 189 194 198 194 191 197 200 194 188 +189 180 181 176 167 141 149 115 94 155 153 127 +138 106 131 139 113 126 123 111 141 171 174 170 +180 184 168 181 199 181 169 147 166 194 202 210 +228 229 210 185 150 159 169 189 192 194 180 126 +104 121 140 161 191 164 107 116 144 118 162 147 +158 161 176 200 217 222 213 206 225 227 221 219 +223 201 178 175 192 199 174 111 126 148 154 145 +188 210 213 216 218 211 184 176 135 118 134 123 +159 144 134 141 139 135 141 158 107 96 125 165 +170 149 140 126 175 164 134 121 178 196 159 96 +165 124 150 200 197 154 76 84 78 99 154 168 +190 188 213 222 195 149 143 146 153 161 137 110 +118 76 68 80 84 62 70 55 87 130 123 82 +65 63 83 78 68 80 133 149 107 93 96 121 +164 146 137 87 90 109 109 88 85 102 74 78 +100 87 55 56 117 153 179 186 188 198 176 92 +58 48 88 115 162 194 212 197 166 170 177 97 +107 90 104 104 164 119 63 56 59 87 72 111 +130 175 200 210 212 204 161 148 200 179 190 179 +155 124 121 167 160 186 204 208 212 209 199 169 +148 128 104 110 80 83 90 127 140 166 179 147 +107 86 127 128 102 129 178 184 156 155 153 141 +168 153 178 155 144 87 64 57 53 45 96 110 +86 105 162 171 157 141 154 151 136 83 127 167 +158 180 178 180 179 175 187 178 172 181 195 190 +198 201 190 199 211 199 196 207 200 207 211 196 +197 186 136 161 188 184 181 197 201 202 202 199 +200 196 185 191 190 195 201 204 207 200 205 197 +197 196 196 204 212 205 200 209 209 212 215 217 +212 223 223 208 212 213 204 199 170 153 141 128 +126 128 139 143 148 153 149 176 171 140 143 157 +149 140 127 120 130 128 121 116 127 133 131 141 +144 136 139 158 154 150 143 141 151 166 168 157 +147 143 153 146 137 133 135 153 137 134 144 139 +141 143 140 162 140 139 128 133 138 137 148 147 +140 157 162 185 156 150 150 179 170 162 162 147 +154 185 194 207 198 197 200 202 200 204 212 216 +221 223 221 212 199 215 218 226 222 221 219 206 +201 198 201 205 201 204 202 201 211 215 210 208 +208 202 205 205 202 207 199 202 192 195 199 200 +202 196 197 197 185 174 168 158 172 182 181 181 +186 185 187 191 189 190 199 197 196 211 212 205 +200 201 192 180 186 191 201 205 192 185 191 184 +171 156 146 109 139 146 149 168 172 165 176 178 +181 181 156 129 102 109 143 136 126 134 159 168 +164 165 184 137 146 133 124 145 128 140 167 176 +177 166 145 170 190 219 220 227 209 180 164 121 +148 176 208 219 202 172 133 118 119 113 117 106 +151 206 221 213 222 202 190 159 131 115 164 143 +114 156 147 88 96 105 105 137 156 177 169 192 +230 243 239 223 213 199 192 146 117 119 130 153 +187 205 212 200 213 196 146 120 119 119 158 141 +160 155 155 143 111 93 83 107 103 147 141 126 +96 64 84 85 90 109 104 94 83 125 154 204 +229 223 219 216 213 204 197 149 +107 125 102 62 +59 77 116 99 98 57 107 129 69 74 109 125 +94 62 59 73 79 58 72 60 70 95 95 87 +79 78 150 210 189 170 160 179 184 162 144 89 +56 96 117 143 146 134 145 166 139 73 97 93 +75 148 137 86 114 116 148 154 146 146 154 157 +111 76 69 64 120 145 166 178 166 168 157 157 +167 171 207 207 199 190 184 148 107 58 48 60 +75 119 185 207 199 149 115 123 128 111 107 86 +96 155 198 202 170 138 157 165 195 160 124 116 +135 154 167 158 149 174 170 129 116 119 99 74 +73 49 47 65 108 128 134 66 117 125 146 135 +137 145 170 169 157 124 136 177 175 182 191 182 +186 195 189 195 199 196 200 200 199 197 198 195 +206 212 207 202 207 199 204 200 187 176 164 157 +185 194 198 199 200 205 201 199 192 201 201 199 +184 192 197 194 207 210 197 197 198 182 187 205 +201 211 209 191 191 202 210 221 218 216 217 215 +197 197 201 191 167 144 145 129 136 136 136 136 +149 151 148 184 177 148 145 134 144 133 155 171 +153 131 126 128 134 127 124 126 126 131 130 151 +151 153 153 145 174 174 154 158 153 151 148 143 +143 136 134 138 133 140 146 147 131 139 134 147 +145 136 133 137 134 144 162 165 177 155 161 150 +164 154 141 156 162 141 130 124 146 188 199 190 +188 198 201 206 208 210 213 218 221 212 216 212 +218 225 216 225 222 212 217 211 198 194 198 192 +202 210 197 209 219 217 209 217 210 207 206 200 +202 207 197 204 205 195 197 205 207 202 197 192 +189 175 158 171 194 187 191 186 181 181 190 185 +179 184 202 200 197 197 197 197 204 204 196 197 +198 191 196 195 190 175 168 170 160 141 135 123 +120 127 158 190 168 157 175 154 158 169 191 182 +153 149 144 99 113 98 70 104 148 192 170 159 +144 172 157 125 147 147 144 113 105 89 97 136 +148 166 206 201 191 194 204 195 170 174 130 153 +187 200 200 184 118 153 153 158 196 201 202 230 +221 220 196 154 144 161 148 207 208 197 177 194 +201 188 180 134 135 95 98 95 125 150 182 175 +150 144 130 120 169 197 205 190 187 189 144 117 +134 147 146 133 175 201 157 108 92 154 182 194 +191 176 153 107 117 113 145 158 133 141 184 207 +218 210 168 124 95 100 162 107 93 100 98 90 +95 97 169 182 +85 92 98 96 82 69 113 129 +136 133 87 73 56 56 66 113 170 175 153 127 +125 109 90 90 68 105 124 105 88 84 72 138 +169 194 181 151 144 179 148 120 84 104 125 119 +116 90 90 77 89 85 124 133 158 174 166 159 +106 90 103 99 114 123 86 67 68 119 134 140 +144 133 125 120 94 107 158 123 124 169 185 149 +177 175 148 145 119 129 144 133 136 121 86 96 +121 125 141 150 150 126 114 174 202 225 207 185 +198 216 228 206 171 120 97 92 98 157 190 196 +182 177 148 108 106 100 72 55 65 84 136 126 +104 138 115 93 111 124 133 140 179 167 185 175 +153 121 154 179 178 184 184 181 188 176 179 187 +200 206 205 192 191 198 204 204 204 208 209 206 +192 191 189 190 180 178 180 159 170 195 190 197 +206 202 199 202 200 209 212 200 197 194 190 204 +192 202 209 205 202 198 202 199 202 204 205 205 +207 200 199 218 223 220 216 222 221 225 215 199 +174 111 127 129 130 135 143 144 154 171 137 174 +165 154 147 141 140 131 137 148 133 119 111 118 +115 117 125 127 130 127 130 147 149 136 147 144 +166 157 160 166 155 146 143 150 141 135 137 139 +127 133 138 141 136 134 127 126 137 144 134 135 +130 135 138 147 180 169 181 169 159 154 148 161 +144 162 130 140 168 196 196 200 202 202 199 201 +209 222 220 222 216 220 230 229 228 219 222 221 +220 216 198 189 196 195 200 205 210 210 219 220 +221 216 215 209 209 215 205 209 208 208 200 204 +198 205 198 204 201 196 197 192 188 164 168 188 +186 190 191 188 191 199 191 189 205 206 208 204 +190 191 200 191 198 200 202 202 200 181 190 187 +175 177 179 169 141 133 124 110 107 136 106 119 +170 172 177 181 181 157 161 176 185 160 147 126 +118 106 113 123 95 156 190 207 190 180 185 222 +229 209 170 140 155 165 154 104 116 99 125 176 +170 166 199 212 199 210 204 186 165 138 148 150 +151 160 154 113 117 106 102 125 147 184 180 209 +195 148 141 169 209 215 202 211 213 167 131 121 +126 117 103 93 95 130 108 108 136 140 140 196 +199 199 178 151 123 105 129 134 127 100 136 154 +149 164 167 171 159 158 148 118 155 161 150 166 +175 166 131 140 115 155 166 169 166 130 119 124 +164 189 164 144 135 111 124 137 123 95 140 171 +110 133 106 95 119 125 95 123 103 87 77 64 +90 67 58 70 104 153 175 181 139 99 77 68 +113 113 146 177 172 166 95 73 75 94 155 188 +178 178 178 116 48 90 96 106 90 64 58 80 +153 186 171 180 159 158 211 227 221 205 177 103 +70 125 151 155 147 127 165 177 180 167 133 107 +93 83 87 108 146 177 154 165 185 191 191 190 +182 192 200 208 200 172 153 164 179 121 108 157 +141 176 189 188 179 198 197 201 208 207 164 92 +76 82 88 110 182 213 201 178 156 119 103 109 +96 128 153 161 160 141 118 133 144 138 131 157 +127 128 128 147 141 156 164 166 151 117 131 179 +189 180 188 198 191 182 189 177 180 187 188 191 +190 195 200 201 201 206 210 213 206 190 194 198 +198 187 180 159 151 188 196 194 194 200 204 201 +206 207 206 201 199 198 201 201 195 199 195 198 +200 191 201 202 202 194 200 200 195 195 206 204 +213 226 216 216 215 216 208 190 157 110 121 124 +121 129 144 151 159 182 168 157 141 171 167 161 +138 134 131 146 138 123 120 113 107 121 129 131 +149 128 138 144 141 145 147 146 140 151 147 146 +139 146 138 141 151 130 137 139 135 129 137 134 +129 134 127 124 130 134 136 134 135 144 147 141 +144 167 170 155 174 153 147 179 168 158 131 125 +166 192 195 194 187 192 202 207 216 210 216 223 +216 228 231 227 229 227 223 216 223 209 200 194 +196 199 211 210 211 218 209 209 212 211 208 209 +201 206 207 198 192 208 202 204 208 199 195 201 +200 190 196 189 182 168 169 184 188 192 182 194 +198 200 199 204 207 207 205 191 181 188 190 181 +185 187 185 192 176 179 185 189 179 180 184 175 +158 150 123 134 155 146 133 137 114 114 134 154 +181 172 159 127 155 179 186 154 111 113 125 133 +148 116 82 157 187 157 145 166 204 223 221 198 +164 119 172 198 189 169 182 180 189 178 162 158 +189 211 221 230 240 236 230 209 200 188 178 166 +150 143 130 133 135 184 211 220 215 199 189 147 +145 153 143 146 159 168 201 218 201 202 206 198 +192 188 202 208 198 205 202 209 199 157 169 178 +197 174 147 119 98 105 106 144 158 175 158 131 +151 162 170 164 159 145 110 120 143 127 139 175 +198 177 204 191 168 147 166 198 180 93 108 143 +156 138 121 108 80 67 64 115 +120 89 63 96 +92 102 115 131 147 162 123 114 100 93 56 43 +73 74 115 120 97 110 103 105 48 62 53 89 +77 64 70 117 133 156 179 208 202 117 95 59 +75 73 96 102 141 109 126 110 145 150 121 138 +166 202 222 225 227 225 218 209 178 155 131 92 +128 143 131 126 149 159 113 145 141 176 131 115 +149 161 149 196 195 177 188 216 220 204 180 140 +93 120 138 108 127 180 197 184 167 136 78 99 +130 137 160 164 174 170 154 119 113 133 139 175 +217 188 200 209 189 127 131 104 64 80 85 84 +75 100 135 162 179 157 89 121 107 137 144 144 +158 179 165 177 170 127 102 168 180 181 169 178 +181 178 188 184 187 182 188 194 187 201 190 199 +207 205 201 202 215 196 184 185 191 187 189 176 +156 175 190 197 198 197 211 217 212 205 217 202 +205 206 196 197 196 200 207 204 200 204 207 191 +187 200 195 204 204 196 207 213 212 220 228 221 +221 220 210 196 171 126 123 121 116 127 131 160 +169 161 180 164 151 143 155 143 135 145 148 136 +130 127 120 97 100 124 133 133 143 127 129 154 +134 146 149 148 146 160 158 149 146 143 137 147 +141 131 141 137 140 139 134 143 136 154 143 128 +139 134 133 129 135 138 151 144 149 156 165 164 +189 157 149 166 151 153 127 121 147 180 191 198 +196 198 206 212 216 211 210 211 219 229 227 226 +225 217 230 220 225 226 217 191 200 207 205 202 +207 208 211 210 204 210 208 206 200 210 204 199 +192 196 198 202 201 192 199 200 199 202 186 178 +176 181 186 192 200 204 188 184 195 201 205 207 +205 200 188 201 205 201 201 200 195 206 200 198 +192 192 186 186 182 180 178 174 145 110 116 123 +121 143 125 128 143 92 93 107 121 158 161 159 +113 131 144 172 169 135 133 164 167 159 135 128 +187 186 171 121 125 141 179 188 176 176 198 185 +199 209 215 211 211 177 157 156 180 157 129 108 +140 174 182 192 198 175 149 151 165 178 219 202 +151 136 140 151 177 202 209 200 171 178 168 189 +160 148 148 157 155 161 206 220 211 195 175 145 +140 176 170 130 118 169 210 202 147 95 172 229 +221 211 219 208 171 145 148 134 127 117 119 92 +94 103 102 105 144 135 125 153 179 204 181 202 +222 199 217 169 114 131 154 134 106 116 96 79 +68 55 69 131 +89 103 106 95 79 83 135 182 +156 90 94 108 140 144 113 59 63 76 85 121 +139 133 106 147 171 165 164 171 181 166 145 102 +102 134 191 199 185 120 161 118 73 150 153 151 +98 87 121 89 64 73 78 67 76 66 72 80 +90 103 80 83 75 89 128 113 131 99 92 73 +103 150 180 159 151 168 215 220 219 172 110 135 +157 172 171 164 127 106 107 98 146 147 158 125 +116 116 93 77 85 127 137 124 161 130 135 126 +96 98 119 134 151 144 144 110 106 113 100 94 +104 128 105 79 116 106 133 109 94 107 109 106 +80 113 104 136 144 165 162 145 160 170 178 190 +189 174 129 168 186 180 184 188 185 187 189 184 +177 188 190 178 186 189 186 181 184 199 208 198 +205 207 200 188 190 189 186 184 171 156 177 192 +191 197 205 205 216 199 202 215 211 208 201 205 +210 195 202 199 189 195 216 213 196 201 212 199 +200 196 199 216 222 215 218 209 215 209 210 210 +181 116 123 131 129 134 135 162 174 190 158 160 +178 159 144 145 155 153 143 140 143 140 135 129 +123 124 128 139 137 136 137 138 137 150 149 144 +146 149 151 141 137 162 155 140 131 138 131 140 +156 139 136 138 140 137 134 125 138 131 129 133 +140 134 138 146 156 159 143 149 147 149 162 161 +185 164 129 125 160 192 197 195 198 210 206 216 +217 200 212 225 225 220 232 232 216 216 230 221 +219 213 195 196 204 204 210 211 213 212 205 206 +206 211 205 205 211 202 191 191 192 207 213 206 +195 199 205 202 204 201 181 175 175 190 196 181 +186 196 196 202 204 205 208 209 204 196 198 190 +184 194 188 187 192 195 200 194 190 186 179 180 +174 174 172 138 131 137 174 165 145 127 109 106 +107 134 139 138 138 113 127 177 162 144 153 159 +174 181 177 179 186 189 192 181 184 202 202 206 +164 167 156 85 106 131 177 170 171 181 206 216 +221 204 205 196 182 190 180 160 167 166 148 155 +175 155 141 145 109 107 131 179 221 200 195 186 +187 200 209 218 181 222 226 213 215 202 174 175 +192 202 205 205 191 192 198 176 195 206 192 207 +200 197 153 135 137 159 156 160 179 171 177 209 +218 232 232 220 180 130 128 92 90 90 108 108 +134 129 123 172 201 222 223 219 216 171 156 128 +98 147 145 134 131 149 143 103 73 68 68 73 +116 102 114 144 148 146 136 153 176 167 114 116 +72 59 70 130 146 149 117 76 110 147 144 137 +162 166 154 155 95 66 58 53 51 66 79 116 +144 106 82 79 74 118 117 103 145 158 146 127 +120 90 72 52 49 115 127 167 190 194 174 176 +172 148 90 83 102 120 111 127 187 190 139 109 +124 98 134 166 150 92 108 155 191 197 182 156 +145 145 179 172 146 117 120 133 103 75 131 184 +179 154 124 172 170 138 160 178 162 155 137 159 +143 131 103 83 75 115 120 140 147 165 170 104 +107 141 118 85 79 98 120 129 89 89 102 127 +127 135 140 140 165 166 168 174 168 161 113 147 +178 188 187 197 192 188 184 178 180 188 190 192 +188 195 205 202 204 197 207 210 210 201 207 200 +182 186 192 176 169 157 177 187 199 195 198 197 +205 206 208 199 205 210 204 199 200 208 197 196 +207 202 202 215 208 197 200 200 191 197 191 204 +218 212 218 216 210 207 212 196 177 120 120 131 +127 127 137 158 151 172 167 171 169 155 147 157 +158 140 134 143 136 133 139 136 130 136 131 150 +141 130 127 145 143 144 155 148 141 145 145 162 +160 170 159 139 134 124 133 135 135 139 143 131 +136 131 133 128 127 127 129 130 136 136 141 146 +164 167 156 154 160 166 186 182 182 148 130 119 +171 189 192 185 192 204 205 215 216 213 222 221 +226 231 226 229 220 228 227 227 219 194 194 202 +199 209 220 219 211 208 204 213 215 209 207 207 +196 199 194 188 190 200 205 216 206 199 194 190 +189 192 178 169 168 186 189 189 196 191 204 206 +200 202 202 205 199 199 192 172 167 179 191 202 +191 186 192 191 184 187 192 184 179 172 154 123 +117 148 161 146 141 130 129 149 136 129 151 157 +137 109 126 137 158 161 149 140 156 159 172 159 +141 155 140 157 188 219 220 211 211 209 206 198 +159 97 92 111 143 155 180 146 157 175 187 178 +159 140 181 190 172 148 170 179 181 195 202 195 +190 195 172 165 180 176 145 171 179 181 175 188 +170 147 155 164 160 164 155 166 161 174 197 175 +169 199 205 226 212 186 188 170 186 176 196 209 +192 187 149 131 130 131 124 133 198 209 199 197 +165 162 178 186 202 191 151 148 179 188 175 118 +110 89 79 100 79 79 89 127 157 108 58 62 +74 73 90 114 117 136 121 125 +80 82 77 85 +73 67 73 68 75 83 89 105 94 70 92 126 +144 119 88 79 92 136 168 195 180 154 108 78 +80 58 57 56 52 52 56 70 129 182 147 165 +171 207 209 194 188 155 114 80 70 64 57 48 +60 53 52 56 79 84 84 151 202 208 179 181 +166 144 134 151 172 116 135 120 72 82 110 87 +60 79 123 155 175 192 196 182 140 127 118 147 +199 201 177 98 128 174 164 136 123 139 158 143 +168 155 162 147 144 159 119 127 140 139 131 153 +117 130 130 145 137 145 175 164 178 143 99 88 +79 70 58 41 38 56 104 111 121 158 174 181 +181 181 186 189 177 153 113 113 176 189 190 181 +197 199 191 181 185 188 188 200 195 196 195 206 +211 205 197 200 190 196 198 199 199 177 190 194 +190 168 168 187 197 192 199 200 202 207 211 199 +198 201 206 206 197 201 196 194 198 205 201 191 +197 201 201 210 205 200 200 206 218 227 218 210 +218 206 207 194 176 127 125 143 139 128 138 165 +144 154 160 151 168 147 151 159 138 140 136 147 +120 123 128 131 130 137 128 148 145 139 143 164 +140 143 156 165 143 146 143 139 149 138 133 135 +135 141 138 136 133 137 129 125 131 136 130 128 +133 131 134 131 130 126 130 139 147 174 178 154 +135 160 167 155 156 162 135 128 169 182 188 197 +200 208 216 220 216 220 211 221 230 226 228 231 +225 232 229 217 215 196 199 202 208 212 209 212 +207 215 216 211 218 211 204 205 208 205 199 205 +211 200 202 205 215 212 199 205 186 178 165 172 +179 179 187 192 195 192 197 198 200 202 197 202 +207 202 195 176 179 191 189 190 184 178 185 194 +188 186 189 187 179 180 166 126 127 126 128 138 +144 133 133 154 148 131 154 167 138 139 159 146 +113 129 174 147 145 161 179 177 174 178 178 166 +154 141 168 164 144 167 184 186 191 182 180 154 +138 115 130 133 129 150 164 155 165 174 176 155 +167 197 197 172 154 166 146 148 131 127 137 182 +198 199 166 113 138 178 204 204 195 169 191 199 +174 165 140 124 157 180 196 210 205 216 197 164 +179 189 166 126 121 135 164 186 180 206 219 181 +194 197 150 107 137 115 92 138 107 171 181 169 +158 169 162 180 179 169 144 134 135 125 125 130 +136 123 98 100 100 108 109 127 93 96 115 210 +215 215 201 159 +72 73 80 79 96 95 65 84 +79 82 111 75 99 103 133 141 124 107 125 102 +123 159 172 189 179 145 72 63 46 42 44 80 +60 60 68 60 85 113 129 140 141 146 111 85 +114 146 90 83 84 125 155 160 140 120 94 75 +70 63 60 111 178 207 207 221 221 215 192 161 +140 158 187 121 64 77 129 156 143 127 157 187 +206 208 209 216 217 215 202 174 140 134 107 151 +136 104 127 157 157 157 162 177 194 175 186 184 +164 123 127 126 95 88 86 68 126 171 200 197 +202 187 120 78 106 73 54 43 46 60 67 52 +67 66 96 127 146 147 165 174 180 185 184 182 +175 160 137 96 166 178 177 169 177 185 189 188 +192 200 197 204 205 197 207 201 201 210 215 207 +199 197 200 188 197 194 167 176 189 165 161 180 +198 192 194 198 207 209 216 202 202 211 204 199 +205 201 204 196 200 204 211 195 195 187 197 195 +192 194 192 191 202 204 198 195 202 200 206 198 +158 129 124 138 138 151 145 148 145 146 155 158 +151 145 169 149 137 157 128 145 136 133 134 143 +143 139 135 143 136 135 135 145 141 143 157 161 +146 144 140 146 143 143 154 151 150 143 146 137 +134 140 140 137 151 137 137 134 135 131 137 133 +128 128 141 149 147 154 156 156 166 159 156 144 +153 139 106 131 153 179 189 194 198 209 210 219 +215 216 207 228 233 233 233 229 220 228 225 219 +208 195 202 201 208 207 209 202 212 222 208 206 +208 209 198 198 198 199 206 200 196 205 209 197 +209 207 197 200 194 178 177 180 181 176 184 197 +199 201 205 209 211 219 213 208 208 200 194 179 +185 190 188 188 191 189 186 187 187 181 182 187 +184 174 160 156 149 153 159 145 155 138 120 133 +149 135 125 130 137 127 118 150 138 110 165 179 +129 129 129 126 180 199 188 180 196 181 167 159 +138 102 180 213 206 179 190 194 175 159 179 176 +144 139 129 103 170 176 219 235 232 225 206 204 +197 179 177 192 208 197 178 178 167 172 194 153 +89 89 84 119 151 135 136 176 192 200 188 190 +153 146 161 155 128 176 187 156 154 161 177 160 +146 141 178 190 205 202 225 225 225 213 194 162 +196 216 196 175 141 111 137 156 157 184 207 188 +167 166 146 128 131 106 151 153 171 168 134 145 +140 130 135 157 113 120 144 175 187 180 165 151 +88 72 51 87 114 162 180 185 185 119 85 75 +106 96 72 79 86 72 110 118 113 106 106 94 +100 157 198 182 129 84 137 175 179 164 123 59 +51 65 79 72 77 94 131 131 154 159 104 120 +151 176 190 200 209 215 212 189 158 109 86 107 +150 154 137 153 114 139 119 119 139 113 92 68 +77 84 63 97 123 111 114 124 190 232 218 187 +145 187 195 156 117 99 125 121 118 157 158 156 +162 159 154 177 185 154 85 68 98 137 134 149 +147 120 131 108 88 119 126 136 136 123 64 52 +39 51 36 68 95 82 62 57 69 89 126 115 +170 174 157 166 177 178 179 180 151 134 146 94 +137 187 187 188 189 189 188 189 195 195 200 189 +188 188 202 204 188 197 199 207 208 205 210 206 +198 189 185 186 168 153 177 185 200 201 197 207 +208 207 202 199 211 210 194 197 191 197 198 204 +185 191 200 190 201 194 186 190 199 200 194 197 +199 207 213 206 206 209 210 197 154 125 119 124 +128 136 135 141 161 176 166 165 165 158 168 145 +144 147 135 150 129 121 128 124 131 137 130 140 +133 130 134 136 137 154 154 144 143 144 143 138 +156 168 148 139 145 139 134 136 136 128 134 134 +133 147 157 140 135 164 164 127 133 130 130 145 +146 144 155 155 155 166 151 153 170 149 126 121 +162 180 186 195 200 198 208 209 216 215 219 227 +233 237 231 232 228 222 219 208 197 201 205 201 +206 211 206 212 215 211 215 219 205 201 199 192 +192 195 208 207 205 201 209 202 200 195 199 178 +182 178 185 190 198 195 189 200 205 208 207 206 +207 210 201 199 198 187 195 197 200 194 200 201 +200 201 197 182 180 189 186 178 176 167 170 186 +169 176 168 167 160 158 140 123 104 99 140 128 +125 121 102 118 159 162 118 100 141 118 110 92 +103 147 187 187 200 196 166 158 205 191 176 162 +179 187 171 167 186 208 199 207 217 175 149 166 +140 131 130 198 228 225 200 192 222 216 210 213 +222 226 225 201 212 216 194 177 166 174 162 153 +165 169 159 157 145 168 180 178 186 167 150 138 +140 141 155 170 177 149 120 103 126 141 136 149 +155 181 196 172 171 181 200 207 196 197 200 199 +166 145 140 155 154 188 201 176 194 196 168 174 +154 130 143 145 144 166 154 131 154 150 96 86 +86 88 76 104 111 119 128 99 +93 105 120 98 +120 126 124 95 111 149 134 100 92 104 117 89 +72 46 85 107 160 140 74 89 146 139 175 187 +190 182 188 175 160 176 127 127 105 145 156 107 +127 154 175 153 124 148 118 138 162 148 165 125 +95 88 77 86 70 68 60 58 48 51 52 59 +64 83 120 133 170 191 179 168 191 159 151 133 +150 135 127 149 172 184 187 164 117 117 161 191 +180 100 73 116 190 172 161 182 167 165 154 153 +124 86 67 73 76 102 162 134 118 134 156 170 +171 169 150 92 68 68 57 42 51 87 98 131 +128 72 47 45 51 54 64 153 175 167 165 179 +171 181 194 186 167 143 134 106 131 181 188 189 +190 194 197 202 200 190 195 200 196 194 204 206 +196 191 202 213 206 198 198 210 208 200 187 189 +178 179 179 174 198 202 188 198 194 201 209 215 +217 200 195 196 201 201 197 198 205 197 190 197 +199 197 202 199 204 216 217 200 206 201 217 217 +206 190 198 201 160 126 129 131 137 147 157 160 +149 150 139 165 170 158 150 143 135 140 133 134 +134 126 126 128 129 125 131 135 127 134 140 139 +146 176 170 150 150 154 149 149 157 154 151 141 +136 141 140 147 137 129 135 137 133 137 131 131 +137 139 134 131 135 139 135 153 153 159 154 166 +158 178 150 146 160 136 129 137 186 187 197 206 +209 211 221 216 220 213 222 229 231 232 229 229 +222 226 216 185 200 204 198 212 212 208 213 211 +202 204 204 208 207 194 191 197 194 202 209 207 +207 204 204 207 200 201 205 185 179 174 192 180 +184 188 196 200 204 209 202 209 202 201 196 195 +199 204 208 201 202 201 197 198 194 189 187 179 +179 177 194 184 168 160 131 147 148 164 177 182 +166 166 143 131 138 128 116 131 159 167 130 126 +119 149 162 133 131 150 110 108 87 65 86 166 +177 175 186 179 178 194 208 204 204 200 187 187 +180 156 188 209 213 220 202 188 167 154 147 141 +149 200 218 205 202 190 184 188 204 204 200 180 +186 162 198 215 153 175 175 169 176 175 167 151 +170 156 106 125 144 155 137 162 156 168 178 178 +161 130 134 177 196 184 199 191 167 178 206 222 +228 225 219 205 172 161 154 184 181 164 158 154 +171 189 184 169 133 137 131 129 129 127 130 114 +73 109 166 176 155 129 102 107 111 125 180 164 +124 97 89 84 +96 82 100 72 123 154 158 156 +93 103 130 126 110 98 90 95 116 102 74 100 +98 102 102 73 99 110 169 171 108 74 99 114 +75 96 99 118 110 110 116 97 90 138 143 134 +125 98 107 92 123 162 160 88 75 135 119 90 +113 109 127 123 103 84 106 102 159 186 208 212 +201 182 176 155 156 187 180 137 148 184 196 198 +182 197 191 130 123 168 179 149 110 93 134 140 +201 189 168 184 171 150 128 138 118 116 93 90 +129 167 134 121 138 129 99 111 128 82 59 63 +65 63 79 97 126 147 102 64 73 84 85 87 +64 51 36 97 141 177 182 179 182 185 188 187 +180 178 149 111 129 181 179 172 181 181 188 194 +196 196 186 191 195 191 199 204 202 204 204 202 +208 205 195 206 210 194 196 180 185 192 172 169 +180 191 191 202 196 207 219 215 211 209 198 186 +204 196 190 186 191 199 201 205 205 208 199 195 +196 201 204 191 186 191 200 216 210 211 200 181 +153 127 130 155 139 139 165 171 151 146 159 155 +149 146 147 144 169 151 131 140 130 124 123 123 +129 128 127 129 129 128 133 131 139 150 143 145 +158 169 153 159 161 147 154 155 159 146 146 143 +146 130 133 140 144 136 133 136 136 134 127 133 +134 137 134 146 148 138 150 153 156 149 145 156 +164 145 127 126 164 172 191 195 202 217 222 221 +210 215 219 225 229 231 229 227 220 212 201 197 +195 192 210 212 206 213 209 204 200 212 202 206 +204 191 195 201 207 212 206 207 212 201 197 206 +196 195 198 182 176 177 190 187 181 189 188 196 +202 201 204 207 198 206 211 200 198 197 190 198 +204 195 195 196 187 195 199 200 188 186 197 186 +175 172 186 197 181 172 176 180 168 157 144 146 +126 115 108 110 100 146 154 114 118 109 153 170 +144 114 141 129 108 88 79 99 90 83 82 115 +111 155 206 192 200 177 184 179 177 182 166 154 +129 186 192 194 199 197 201 194 161 141 120 128 +169 160 145 104 134 135 174 159 130 137 184 213 +206 184 176 192 207 201 199 186 159 184 189 200 +175 184 147 153 187 178 169 154 179 155 117 108 +90 79 106 139 156 143 123 118 155 180 190 208 +219 200 162 179 208 207 191 208 182 162 172 172 +191 189 178 134 135 110 87 108 90 105 88 72 +117 147 125 106 141 135 125 137 108 94 80 88 +157 118 77 92 111 128 133 105 80 73 66 96 +131 151 133 133 124 130 131 109 119 137 93 113 +128 129 115 107 124 118 103 108 102 90 67 66 +56 96 155 177 145 130 110 124 121 144 153 153 +159 147 158 128 171 209 192 166 168 110 89 106 +135 123 131 155 175 141 123 110 128 151 145 145 +118 104 125 156 198 184 185 199 206 174 139 123 +126 138 164 160 174 186 197 210 185 135 110 129 +164 175 181 179 169 150 145 168 139 90 80 98 +149 149 197 204 169 148 136 88 95 95 114 104 +77 64 58 55 59 74 119 151 133 113 95 79 +126 149 169 172 188 191 188 176 181 169 147 135 +134 159 179 186 192 188 188 182 186 195 196 194 +197 191 180 199 194 201 206 208 207 205 200 198 +202 209 207 199 190 196 195 190 178 188 189 197 +207 209 205 199 204 210 209 190 208 204 210 190 +194 188 198 198 208 208 200 196 199 209 208 195 +198 216 212 218 213 218 204 190 140 123 123 125 +129 153 139 153 145 156 167 176 177 155 146 148 +159 137 134 136 126 124 119 116 121 131 136 128 +127 136 135 136 130 151 146 162 177 155 149 154 +150 169 165 139 145 137 137 143 134 131 136 138 +141 134 137 136 130 129 136 138 144 131 131 148 +155 140 141 141 150 150 156 172 164 129 114 115 +153 178 192 208 205 211 220 217 209 222 226 229 +232 231 229 228 217 202 196 188 199 206 207 211 +209 215 209 206 200 218 218 202 186 197 199 206 +211 208 206 205 204 206 201 196 197 190 181 184 +189 189 192 189 182 190 205 205 204 201 199 200 +200 194 195 195 197 192 197 201 201 205 194 200 +194 187 188 191 187 184 195 187 177 175 162 174 +172 181 175 175 158 150 130 144 134 121 103 103 +103 99 95 93 141 159 165 185 139 144 124 147 +145 123 87 108 156 160 119 127 148 134 108 120 +167 195 162 137 100 137 144 131 124 146 182 196 +219 230 236 227 222 223 229 228 209 186 159 147 +155 170 159 184 169 160 154 131 127 127 149 176 +185 187 225 237 228 208 189 192 216 223 216 186 +182 199 192 185 178 161 161 151 160 149 134 126 +151 160 172 194 186 161 155 147 136 111 102 117 +138 192 182 157 113 137 144 170 189 184 166 158 +136 134 124 118 79 75 119 184 202 196 207 192 +181 139 86 95 98 88 88 84 +138 137 105 60 +95 120 144 127 114 90 104 114 94 78 60 45 +51 60 65 69 59 95 103 102 119 119 98 107 +111 102 83 96 145 140 116 159 191 168 148 134 +115 97 104 123 110 140 149 167 168 121 129 94 +89 105 121 120 83 125 165 160 160 181 159 161 +190 154 135 89 64 107 139 141 150 144 156 128 +127 139 178 162 119 158 167 165 175 199 215 212 +213 197 184 159 149 189 185 162 171 168 155 139 +136 120 121 86 63 76 87 129 182 197 164 159 +185 125 83 76 65 86 93 67 67 78 93 125 +169 153 141 116 99 83 63 94 130 133 168 181 +189 184 185 182 181 180 164 135 113 161 195 188 +196 191 181 185 191 198 192 194 200 200 200 204 +188 196 194 200 208 216 209 207 207 198 202 207 +195 200 199 194 187 188 182 199 217 204 208 202 +191 196 206 198 198 198 202 208 207 185 195 204 +204 200 194 190 196 204 210 198 202 210 218 217 +217 217 220 194 146 127 120 127 146 156 140 141 +146 155 164 162 155 145 151 144 140 135 130 129 +124 119 120 119 123 120 126 131 126 134 133 126 +133 153 175 188 165 160 151 150 155 144 162 154 +157 143 148 140 135 131 133 131 130 134 135 125 +130 131 136 136 130 134 134 144 140 139 161 155 +164 153 136 157 164 128 97 117 136 185 202 207 +210 218 223 221 209 216 226 229 228 229 227 223 +222 206 191 200 206 204 210 222 216 217 215 209 +202 205 206 204 200 206 208 206 205 206 215 215 +202 213 216 207 208 187 186 196 191 181 180 188 +188 189 194 198 198 191 195 205 197 194 202 194 +196 201 198 197 202 200 187 191 191 179 179 188 +186 178 179 167 159 179 179 181 178 185 175 171 +168 161 146 144 175 153 109 82 104 130 143 111 +104 134 169 200 175 189 154 178 186 160 120 104 +114 150 171 147 114 190 210 205 175 138 160 190 +189 172 190 180 154 145 145 162 189 172 164 159 +154 166 192 206 210 207 215 219 219 187 160 189 +180 175 176 180 178 149 114 133 169 197 225 235 +227 232 236 223 220 189 176 155 128 129 151 165 +169 169 194 192 168 186 208 213 220 210 171 189 +202 176 154 159 185 171 147 139 86 65 88 80 +149 197 218 227 213 155 127 123 135 139 121 95 +106 144 131 131 127 127 148 148 118 98 103 73 +97 121 100 90 +118 92 79 106 103 111 117 123 +136 140 98 110 136 133 114 111 93 88 121 137 +182 213 210 175 140 110 100 121 133 124 108 110 +105 154 201 147 96 129 131 149 184 198 195 198 +165 168 164 167 166 180 170 155 161 178 136 98 +157 200 206 185 160 137 146 195 220 180 97 128 +165 185 164 158 158 167 172 181 178 177 199 204 +192 176 164 136 144 156 137 126 118 150 139 159 +166 174 136 97 134 143 128 146 141 99 155 178 +146 151 191 192 171 129 104 115 93 65 69 72 +131 79 55 51 55 98 97 90 82 49 65 120 +113 121 138 99 134 125 155 177 186 186 191 190 +190 188 157 145 118 150 187 184 176 171 180 186 +177 190 205 200 196 194 192 188 195 199 194 205 +204 208 212 209 207 194 199 198 207 195 190 192 +187 169 184 205 210 204 205 204 211 206 200 201 +195 195 200 210 201 189 187 198 202 209 207 205 +206 185 202 200 197 197 216 217 217 207 210 192 +153 126 135 138 130 136 138 141 139 161 153 139 +137 148 156 144 135 133 129 133 125 136 124 123 +128 130 135 133 135 135 139 126 144 167 170 172 +166 145 147 159 162 148 147 156 159 147 147 135 +141 137 138 138 133 135 135 136 131 140 136 140 +137 130 140 144 137 140 143 147 153 158 136 139 +150 135 111 118 151 171 191 204 206 219 221 210 +209 225 222 228 232 225 225 227 211 188 197 207 +201 209 221 225 215 205 205 212 206 199 201 200 +205 201 204 196 208 210 206 211 204 209 210 199 +200 189 188 190 199 202 192 194 197 186 198 206 +204 205 197 201 211 202 201 192 192 188 189 191 +194 190 199 186 190 196 195 186 189 186 170 147 +160 176 179 169 174 187 169 174 171 178 157 136 +148 135 130 99 86 117 140 147 98 103 88 133 +144 129 164 181 186 204 144 136 160 150 109 170 +145 128 164 197 216 218 208 192 197 199 186 145 +150 181 174 135 170 181 182 185 177 175 156 138 +156 135 161 170 178 174 168 147 143 171 169 141 +155 158 146 194 215 204 206 198 167 167 164 147 +130 109 154 172 154 171 174 171 140 150 135 134 +154 202 226 220 212 200 166 125 110 146 147 117 +155 150 115 109 109 139 139 169 182 150 145 130 +114 98 89 72 100 109 108 102 85 74 90 65 +92 102 103 99 144 184 171 155 161 195 181 116 +93 106 103 126 129 116 148 127 102 136 109 85 +89 107 113 115 86 87 124 98 124 147 128 143 +153 135 108 92 103 86 99 150 162 147 138 157 +169 149 144 162 192 190 195 191 191 213 201 200 +195 194 176 162 150 154 164 185 176 153 123 118 +139 198 207 194 178 184 200 204 174 115 139 182 +196 158 149 170 211 215 172 155 178 144 119 166 +187 146 149 154 177 179 138 92 94 111 131 124 +111 87 78 103 154 208 197 169 141 169 137 140 +131 66 72 158 158 141 108 93 108 110 116 95 +42 42 44 82 100 124 139 151 123 121 139 120 +136 151 157 178 188 187 191 192 192 189 179 156 +134 127 176 179 188 192 195 187 182 197 195 198 +204 206 197 195 196 198 196 200 207 212 212 205 +209 200 199 190 177 194 194 186 182 186 192 207 +195 199 206 212 205 212 209 208 199 198 192 198 +201 202 192 205 206 205 213 211 210 206 198 199 +204 208 207 213 212 201 191 186 150 136 150 136 +133 136 133 156 161 146 137 150 185 181 155 145 +135 134 119 135 129 123 130 125 124 125 125 130 +138 134 138 134 148 157 168 168 178 155 149 157 +156 161 162 169 156 143 136 144 136 135 130 136 +135 135 140 136 136 133 128 135 138 134 140 143 +158 143 146 169 141 146 134 131 138 134 115 133 +151 189 204 202 207 212 210 206 222 223 222 232 +228 229 229 218 195 191 194 204 205 210 219 215 +207 207 209 202 200 205 202 198 204 204 210 216 +210 215 211 205 197 204 205 186 188 185 185 188 +185 181 197 186 190 200 207 201 204 206 202 206 +202 195 192 195 184 189 196 192 190 197 196 202 +191 187 190 196 187 181 170 144 160 175 176 189 +190 190 186 184 178 180 175 165 155 130 115 134 +125 158 156 151 114 82 90 99 98 130 145 184 +192 199 192 148 139 158 128 131 167 144 119 140 +174 202 210 216 208 204 209 197 198 200 190 167 +151 149 196 230 216 198 198 194 202 178 164 155 +184 202 185 164 148 145 161 141 118 131 140 117 +79 88 87 94 143 136 137 166 198 199 198 174 +155 176 167 180 180 130 126 155 138 139 168 184 +190 189 160 131 104 88 97 100 124 148 178 200 +184 167 136 106 95 90 90 105 118 117 111 135 +104 93 96 77 87 126 133 107 140 139 141 144 +128 118 92 59 66 73 99 102 +75 89 121 129 +141 120 95 120 133 141 158 182 185 174 167 168 +181 176 165 144 150 153 116 104 96 90 62 83 +111 144 131 138 69 65 85 59 80 85 93 147 +166 168 187 191 185 187 179 175 186 189 192 159 +164 180 190 176 120 79 72 146 195 172 170 141 +162 146 121 108 117 109 168 177 145 147 191 211 +195 174 172 171 156 106 124 127 153 137 160 174 +158 99 102 128 110 135 111 110 103 127 171 191 +186 175 141 144 126 121 77 102 99 120 167 146 +133 116 133 168 182 155 139 69 56 57 103 94 +79 90 121 85 51 52 80 95 116 158 160 167 +179 181 191 199 198 190 182 169 137 111 159 178 +195 189 197 190 186 179 194 196 195 209 208 204 +202 198 188 190 200 201 205 208 208 201 201 201 +196 161 184 188 200 180 192 192 187 204 207 210 +204 205 201 202 206 191 202 200 195 192 200 192 +204 207 196 204 201 202 195 194 194 201 196 212 +209 208 207 180 144 131 135 136 161 150 137 154 +151 139 146 167 174 159 158 162 136 131 127 131 +141 131 131 125 131 128 124 124 130 134 133 140 +137 149 164 166 158 154 158 171 161 164 177 161 +154 138 144 149 141 156 143 135 130 133 135 128 +128 130 136 135 135 131 133 129 148 133 139 158 +157 151 137 140 164 144 123 126 170 194 194 199 +207 208 209 215 218 222 229 226 228 223 218 204 +195 191 196 208 206 208 215 216 209 217 212 202 +205 205 198 207 205 206 206 204 212 215 213 196 +204 205 197 197 191 180 190 191 180 181 188 199 +208 210 204 205 207 205 200 192 191 200 198 198 +202 199 197 196 201 202 197 197 197 191 188 182 +186 181 160 151 184 190 188 162 162 191 191 188 +186 191 178 158 134 131 146 155 165 139 110 108 +109 110 109 104 108 100 85 108 118 119 177 180 +160 141 76 92 160 174 104 99 115 138 143 178 +206 221 219 218 217 189 157 157 167 187 168 180 +166 187 195 204 215 218 207 154 170 210 221 198 +187 185 172 146 111 117 157 178 182 184 140 121 +145 192 205 187 169 170 178 172 150 99 108 140 +185 168 107 109 104 99 105 107 124 149 184 196 +198 178 136 147 137 103 123 135 126 146 150 110 +124 157 133 118 103 106 125 104 114 114 115 106 +82 97 106 115 129 157 166 154 156 133 127 114 +114 98 88 95 +160 113 121 145 155 165 157 141 +166 157 137 116 129 114 117 131 130 138 159 158 +155 176 174 139 106 99 124 149 171 153 125 108 +100 117 141 147 144 117 104 92 94 121 116 131 +133 160 191 199 194 165 108 100 97 79 80 79 +131 164 126 89 83 99 117 113 95 96 67 72 +95 97 146 195 208 207 207 167 146 189 196 172 +174 172 168 144 186 169 127 119 143 151 171 172 +169 155 184 180 185 181 204 172 177 197 175 119 +115 139 98 63 87 85 79 89 79 70 100 116 +108 90 78 96 95 85 80 80 49 53 62 92 +100 102 100 123 143 161 178 190 197 201 195 194 +192 194 184 171 156 116 158 179 177 172 176 178 +182 181 179 177 199 199 195 195 191 195 199 201 +198 194 202 206 197 205 207 202 199 178 174 195 +181 187 195 191 195 204 204 206 201 208 210 205 +206 199 196 197 198 192 207 206 212 206 204 201 +202 211 206 202 191 205 205 202 210 191 208 205 +180 136 133 139 153 143 148 147 145 145 146 148 +164 171 185 201 136 128 130 133 133 127 124 130 +128 121 124 124 125 129 135 140 151 154 167 161 +157 154 156 161 169 165 164 147 160 148 158 145 +140 140 149 136 129 131 135 133 135 130 134 138 +137 134 135 133 138 136 145 164 158 172 139 151 +151 123 113 123 154 185 198 209 218 221 219 216 +226 225 227 230 228 222 223 206 190 196 202 208 +210 212 210 208 205 213 210 208 195 198 196 200 +206 210 204 202 205 208 210 209 204 204 197 190 +188 189 184 195 186 189 194 208 210 210 210 207 +202 205 198 201 209 208 206 196 192 191 200 202 +198 190 184 179 180 191 186 184 175 166 158 164 +186 195 187 166 177 181 179 181 190 191 175 164 +146 150 126 136 164 138 115 124 130 113 117 131 +114 109 123 103 104 113 116 136 133 161 139 102 +86 139 156 126 133 123 118 114 107 150 181 190 +198 189 179 178 172 158 149 141 123 140 155 162 +153 151 196 219 208 194 200 206 208 198 199 192 +177 175 171 161 186 212 208 199 190 175 146 140 +139 138 147 128 110 115 126 159 165 182 181 204 +205 170 143 103 82 93 108 141 172 150 136 109 +104 118 144 135 116 127 167 191 179 192 178 138 +159 167 168 139 106 128 126 156 157 166 113 88 +94 105 128 139 143 118 120 108 95 106 100 80 +114 103 80 83 88 115 98 87 90 94 92 75 +64 74 97 106 129 151 148 127 92 88 90 87 +120 168 165 139 113 143 146 96 82 107 148 186 +198 206 212 202 190 169 134 156 138 113 140 165 +176 136 98 89 89 110 109 68 76 86 98 116 +92 144 127 118 116 161 137 158 171 164 175 174 +166 133 137 135 148 146 136 118 105 103 106 154 +149 151 179 192 219 184 155 175 168 129 145 179 +160 189 186 179 160 138 126 135 99 100 59 75 +62 62 69 59 64 116 136 146 119 107 97 100 +109 124 118 120 138 109 78 77 93 94 123 118 +121 167 175 189 195 200 200 199 200 190 194 179 +158 106 125 179 187 178 185 190 194 196 194 197 +200 196 188 194 207 205 190 198 204 196 204 216 +209 196 200 194 191 192 192 182 181 188 186 195 +198 199 209 210 201 208 201 206 198 200 195 200 +201 190 195 197 199 197 217 209 201 209 202 208 +197 201 212 215 222 207 201 182 150 141 136 146 +146 150 153 151 157 154 167 159 155 151 164 180 +129 129 128 130 126 125 125 121 120 120 123 119 +124 135 133 153 175 145 151 139 151 157 148 156 +172 153 145 147 139 146 147 141 141 134 140 137 +140 136 139 134 129 131 133 133 130 129 133 131 +139 134 144 158 147 159 150 155 171 120 111 133 +162 199 205 215 220 213 215 221 223 225 229 225 +219 216 210 195 197 200 204 207 206 207 207 204 +206 210 207 206 202 200 194 202 209 206 216 218 +206 216 213 205 199 206 196 192 180 184 202 213 +192 187 199 206 206 208 202 195 200 198 201 202 +201 195 198 186 187 197 190 189 196 191 180 180 +184 194 199 194 185 170 158 168 188 189 177 179 +188 180 182 179 170 174 170 151 144 165 151 126 +125 117 113 150 136 97 111 109 153 161 129 120 +134 150 124 120 113 138 169 141 114 87 92 153 +189 198 180 201 178 150 156 126 108 137 107 130 +129 114 131 145 137 118 189 218 212 190 135 143 +178 195 195 188 199 202 199 206 194 172 148 134 +134 140 189 198 195 191 213 166 148 195 209 189 +159 146 140 113 114 99 89 118 127 137 141 108 +114 131 161 164 136 97 136 181 178 184 194 165 +178 181 151 175 196 196 204 195 158 129 108 165 +175 218 190 171 150 107 73 94 90 84 102 154 +154 141 121 79 86 78 79 104 +118 82 106 119 +62 64 55 60 64 69 65 63 77 84 104 115 +131 151 134 110 77 80 124 123 141 113 88 90 +74 55 85 95 113 157 156 179 198 200 202 204 +194 179 143 124 168 181 196 155 90 73 84 124 +164 147 111 124 147 129 114 118 123 169 147 138 +160 120 147 161 186 199 182 207 208 200 204 208 +156 105 120 134 111 106 124 136 153 129 157 180 +194 202 189 165 117 113 144 169 165 169 108 95 +107 144 159 135 89 88 68 60 70 90 93 77 +63 74 69 80 128 154 140 130 88 89 126 107 +93 120 96 131 104 85 129 116 136 176 188 191 +198 198 206 195 190 192 196 185 174 128 105 174 +181 188 196 196 197 186 190 197 199 199 198 194 +201 192 200 200 195 201 205 195 204 209 206 208 +195 189 191 192 190 189 200 188 197 205 207 205 +204 208 202 215 204 201 204 204 198 197 187 192 +204 196 205 215 204 195 204 199 192 186 202 204 +215 222 208 188 160 136 139 159 157 144 146 144 +151 141 151 155 165 164 160 151 131 134 127 125 +121 120 119 117 123 119 124 125 128 135 135 137 +149 145 151 150 145 157 170 145 170 176 172 162 +150 143 139 144 146 145 141 140 143 134 128 131 +138 136 128 131 133 139 136 133 135 138 145 154 +147 174 166 135 140 126 111 136 162 188 199 204 +208 215 223 219 223 221 222 231 220 201 190 195 +196 208 215 212 206 216 213 208 209 209 199 197 +200 198 200 211 216 216 212 202 207 205 200 206 +191 199 192 186 186 184 198 204 206 204 204 202 +207 196 200 205 206 207 207 202 196 196 196 197 +201 192 198 197 198 199 196 191 189 192 192 185 +185 166 177 186 196 198 188 198 191 190 186 185 +186 182 182 177 167 137 119 131 117 89 94 115 +172 162 119 87 143 182 172 158 144 145 156 115 +108 127 82 141 162 123 134 134 82 73 150 182 +221 202 182 167 131 155 154 140 181 190 198 191 +187 190 178 201 219 206 197 186 161 187 186 169 +145 118 141 199 205 180 179 192 169 154 136 151 +144 162 202 222 215 222 209 170 168 145 129 115 +98 119 119 107 126 159 188 182 186 182 165 146 +127 149 170 174 176 144 141 158 145 128 110 107 +133 201 209 177 164 178 180 155 118 140 149 116 +75 87 87 69 89 95 113 137 155 136 113 137 +126 104 98 94 +114 109 114 116 85 63 79 92 +125 99 79 87 84 103 103 111 106 84 78 69 +76 89 110 127 117 84 79 68 94 70 77 75 +73 87 68 102 135 143 116 114 106 114 162 189 +184 154 138 108 83 103 118 186 213 231 230 213 +168 94 93 171 154 164 145 164 161 103 139 106 +116 126 123 118 118 123 110 147 195 170 158 166 +180 185 174 162 174 211 218 196 188 178 134 123 +141 153 158 139 116 96 77 69 108 190 184 125 +158 123 148 184 155 80 87 85 109 85 59 69 +77 97 106 84 149 157 87 119 103 63 64 83 +114 99 115 115 133 171 187 187 189 191 192 199 +204 198 186 169 177 167 96 154 177 182 182 195 +197 184 182 182 191 190 192 199 188 191 200 198 +191 197 204 208 208 201 202 204 199 190 184 176 +190 197 189 191 205 209 215 198 202 211 208 198 +194 201 198 199 204 195 196 205 212 200 202 200 +207 208 202 207 201 201 195 201 199 217 220 199 +149 126 133 134 139 154 158 147 155 146 164 150 +143 156 175 154 134 129 125 121 120 120 124 128 +125 123 124 123 129 136 138 143 137 145 159 141 +147 161 184 165 172 175 181 187 176 147 136 141 +143 136 138 131 129 129 136 140 133 131 128 134 +131 133 139 130 136 146 160 157 131 144 143 139 +135 139 124 127 165 195 197 200 208 220 215 217 +223 225 230 228 215 209 192 190 200 204 201 210 +213 209 211 212 205 205 201 198 204 202 202 211 +217 213 215 206 213 205 211 216 199 200 192 189 +191 190 201 201 205 206 209 200 202 201 209 210 +206 206 199 199 198 205 205 198 195 197 205 207 +209 209 194 196 188 181 176 178 170 158 186 189 +192 184 190 194 188 196 194 187 186 175 164 158 +162 156 136 107 124 118 96 90 100 109 140 128 +105 166 191 191 165 169 197 195 157 92 103 111 +96 123 134 184 198 188 140 160 206 217 219 219 +208 188 160 159 169 187 178 186 204 236 235 226 +236 237 211 192 211 177 156 167 189 171 162 145 +150 155 115 108 106 95 108 128 160 175 223 231 +219 195 177 141 123 147 169 177 171 178 151 131 +118 164 209 210 181 186 202 211 205 172 177 168 +119 87 85 113 121 157 187 197 217 188 140 93 +99 111 109 111 99 85 111 105 100 94 87 60 +83 93 70 85 89 102 94 92 104 110 137 128 +120 84 127 159 139 104 83 90 107 136 116 115 +154 174 188 155 105 93 68 96 107 108 68 76 +74 67 65 74 63 41 66 75 68 116 124 141 +190 221 195 106 108 115 136 130 106 86 89 140 +141 139 169 213 185 164 165 150 153 124 62 63 +84 90 121 151 174 207 177 118 82 88 95 110 +151 159 150 177 171 135 175 195 197 166 144 191 +200 140 120 153 149 141 150 191 180 178 162 102 +64 59 84 106 140 139 108 146 146 86 128 131 +82 159 200 172 98 78 118 175 149 124 168 133 +108 69 95 64 68 45 35 54 80 105 136 123 +145 180 190 194 197 199 194 192 206 204 196 184 +180 168 113 150 182 192 198 197 178 180 190 190 +197 185 192 205 200 197 186 190 198 194 199 207 +206 204 197 190 192 191 192 180 190 188 191 194 +194 200 208 205 201 207 211 212 202 202 205 205 +202 196 190 190 204 208 200 201 206 205 202 212 +202 198 206 205 210 206 206 197 167 134 139 150 +144 157 157 145 157 139 147 144 141 146 151 143 +131 126 125 123 125 129 120 126 127 124 128 135 +124 134 146 141 140 140 149 147 137 140 150 147 +154 154 153 158 148 144 145 149 146 160 154 135 +138 133 131 136 137 133 130 138 137 135 135 130 +128 137 148 153 135 151 155 139 141 154 108 113 +164 206 198 217 206 219 215 218 222 231 232 218 +215 199 188 191 197 207 211 210 204 200 208 201 +206 209 206 205 211 210 209 216 221 215 221 210 +217 201 201 215 208 196 186 187 185 176 195 198 +198 199 202 199 206 210 213 208 197 191 204 205 +201 202 201 194 200 202 202 205 204 194 194 184 +185 191 188 181 166 141 172 181 189 195 195 205 +196 185 185 189 189 186 176 157 136 126 97 105 +130 104 89 82 93 64 82 84 87 120 126 167 +209 180 171 145 181 190 134 118 181 189 176 151 +111 170 212 207 188 178 171 137 172 181 147 126 +117 118 192 204 186 191 178 169 178 186 206 204 +205 184 172 162 171 178 194 192 140 131 159 170 +130 123 141 169 176 161 137 164 168 159 168 198 +187 165 177 187 170 148 137 148 162 175 161 161 +166 170 170 181 155 144 117 115 110 77 95 75 +70 106 172 184 146 128 98 106 128 145 103 92 +108 85 104 89 76 90 97 99 111 127 100 78 +96 78 69 67 114 126 138 139 +110 118 110 135 +166 187 182 149 102 100 149 129 151 155 139 143 +125 99 74 98 96 79 80 73 64 89 95 119 +100 113 147 166 149 121 171 195 165 174 189 206 +206 165 120 120 77 46 41 44 57 63 63 78 +92 88 169 180 171 160 139 153 176 197 210 204 +155 126 135 146 176 204 210 217 211 174 124 130 +123 103 128 136 161 138 126 133 139 148 177 205 +194 172 133 120 138 110 87 70 75 86 86 133 +165 110 62 75 75 64 59 67 121 175 164 97 +124 181 186 131 120 133 119 93 103 117 99 38 +46 47 43 74 90 98 123 133 165 188 196 198 +195 187 182 187 200 194 200 199 189 180 147 139 +176 196 199 199 198 197 188 188 177 179 190 206 +208 207 190 197 197 199 196 200 195 194 187 188 +190 204 200 190 197 191 188 197 196 195 208 211 +211 211 211 220 212 205 209 208 207 197 190 198 +194 200 199 205 198 204 200 205 204 191 202 202 +218 209 205 181 143 131 133 137 136 137 147 145 +138 139 140 137 135 145 148 137 134 137 134 124 +125 130 118 126 116 120 128 129 129 143 136 139 +135 141 147 145 148 140 146 146 154 151 146 141 +143 133 131 143 140 144 151 135 134 138 135 127 +133 129 134 131 137 141 135 130 134 134 136 154 +137 144 147 130 154 156 109 129 168 194 201 210 +212 228 218 219 226 225 219 225 210 187 194 201 +208 209 210 204 210 208 199 202 197 196 206 207 +201 208 217 218 221 212 216 220 212 205 205 209 +194 186 174 184 192 194 192 200 191 192 199 204 +202 204 207 205 198 202 205 202 201 190 194 194 +197 205 211 200 190 196 189 179 179 194 191 185 +161 174 196 185 190 201 194 189 191 189 194 201 +191 175 169 155 157 129 98 72 99 99 105 134 +127 98 118 140 166 161 166 119 175 190 175 181 +137 188 199 174 124 150 177 192 192 138 128 177 +209 194 175 174 174 192 170 158 144 136 125 145 +145 154 205 229 213 202 211 216 223 211 215 200 +145 113 117 149 144 149 186 223 216 208 205 215 +216 186 159 156 171 156 158 151 147 153 168 207 +221 215 202 194 187 174 156 124 88 97 90 124 +177 206 195 194 166 110 105 75 56 77 97 102 +124 175 166 156 155 186 184 213 160 125 126 123 +111 134 138 157 180 167 143 128 92 86 66 118 +150 171 176 131 +110 97 85 68 89 98 136 153 +107 96 131 154 109 88 89 106 141 135 98 70 +78 78 82 73 90 106 137 177 184 177 168 156 +120 78 105 155 160 148 110 99 102 110 109 88 +86 123 146 146 129 143 120 145 191 196 125 137 +185 212 216 215 215 206 187 157 157 168 134 177 +167 140 137 141 167 143 139 158 136 96 126 149 +110 114 137 136 158 187 213 209 181 118 155 167 +169 119 72 143 137 126 179 182 121 63 113 85 +73 60 119 178 161 124 145 162 174 115 95 96 +125 118 133 117 93 93 99 128 131 87 80 105 +127 137 145 134 149 184 187 184 189 192 189 199 +206 209 210 205 185 176 151 127 164 177 191 201 +197 192 189 199 190 196 202 198 198 199 188 194 +195 196 205 208 204 199 204 191 191 199 192 174 +199 201 188 197 191 191 209 204 201 219 219 207 +207 206 198 209 219 205 191 191 199 207 198 197 +200 208 202 202 212 198 211 196 210 212 210 187 +141 121 125 138 134 136 154 181 140 147 154 145 +135 141 157 140 128 130 130 129 130 124 129 126 +118 120 127 119 136 138 139 143 130 138 139 134 +130 146 150 148 149 141 141 148 149 150 143 133 +136 144 147 130 128 136 134 134 136 131 144 138 +130 136 140 136 133 149 147 146 155 144 153 144 +156 148 113 127 171 185 199 201 222 229 227 228 +220 221 220 219 196 194 199 209 211 210 209 218 +217 217 210 201 195 208 210 205 209 204 213 219 +212 207 212 209 209 217 220 204 188 184 184 189 +196 191 197 205 205 208 202 196 207 217 211 208 +213 200 197 194 194 198 195 198 206 202 195 199 +198 192 188 184 181 178 190 176 154 172 185 171 +159 179 189 185 189 197 196 202 181 182 171 156 +136 134 124 124 99 121 143 135 108 88 114 145 +143 150 191 170 154 170 166 199 179 162 175 139 +127 114 87 93 109 148 182 144 103 110 161 158 +109 129 153 148 147 150 149 155 153 139 170 172 +167 182 201 195 198 199 194 199 186 167 159 151 +181 211 190 174 188 164 162 174 171 131 129 131 +150 140 162 190 144 121 104 94 123 165 182 186 +168 171 145 141 145 166 160 177 180 155 123 111 +117 154 145 111 165 207 202 202 186 174 191 198 +187 162 117 139 145 182 196 182 148 95 89 106 +103 107 83 74 82 79 97 135 169 149 149 144 +179 141 93 80 73 103 96 162 198 201 201 196 +186 181 140 63 72 85 69 89 78 64 75 65 +69 79 63 77 87 116 172 194 198 185 131 103 +75 102 79 87 139 186 168 178 145 172 172 169 +165 137 92 92 105 103 93 111 111 107 102 94 +92 80 103 114 154 175 205 213 207 194 167 107 +120 153 161 141 171 206 209 211 207 191 197 189 +189 182 195 159 141 133 154 139 89 80 127 139 +98 166 143 97 88 63 73 55 76 127 169 131 +83 127 166 82 85 120 124 157 133 113 116 139 +144 130 86 88 77 66 79 113 106 115 124 100 +140 166 178 190 187 196 204 206 201 202 201 195 +187 165 146 133 141 162 189 186 194 198 188 190 +199 198 194 197 187 194 198 192 194 191 188 191 +204 206 204 201 197 191 195 192 187 196 200 199 +207 197 189 201 201 207 219 212 205 208 210 206 +201 201 198 196 200 204 210 208 208 201 201 194 +207 208 196 191 202 202 209 200 157 138 149 149 +156 141 148 153 159 148 140 145 146 134 138 134 +131 130 126 126 124 130 127 125 125 123 125 129 +140 136 138 134 136 145 160 153 139 138 141 156 +158 149 150 150 147 145 145 136 135 138 137 139 +137 134 127 130 133 126 131 130 137 144 133 128 +133 136 144 139 157 153 161 149 170 149 110 127 +186 195 209 209 226 231 222 216 222 226 220 221 +192 191 201 204 205 210 216 221 216 217 211 196 +201 202 205 200 201 206 208 212 209 211 207 210 +208 208 210 204 195 195 197 197 204 201 199 192 +202 201 195 202 215 208 201 210 206 197 205 200 +192 192 190 206 209 198 192 184 182 185 194 190 +188 188 175 166 170 187 176 174 170 186 202 198 +192 185 178 188 188 172 157 148 145 160 136 140 +146 129 104 137 136 128 124 103 155 178 189 189 +148 141 144 109 109 121 158 162 157 158 147 126 +136 139 166 124 156 156 166 166 162 164 131 111 +128 166 200 218 208 166 184 180 180 191 158 170 +171 176 189 202 200 188 179 194 196 196 172 145 +136 161 184 197 198 216 192 196 192 175 147 136 +114 107 90 131 153 172 175 179 192 204 174 140 +104 80 89 82 78 88 87 117 97 95 130 186 +192 160 141 104 93 103 96 102 107 103 133 138 +158 146 104 113 103 114 97 90 73 85 90 68 +86 86 93 90 95 106 98 99 +105 123 105 85 +78 86 113 128 165 177 179 135 99 103 80 68 +82 67 95 103 87 89 72 70 67 78 79 108 +126 155 125 149 188 190 167 118 103 103 88 87 +124 211 197 135 117 128 128 168 161 113 84 90 +76 79 96 89 154 190 221 212 207 207 207 215 +215 213 207 208 191 175 162 123 115 94 124 146 +169 171 164 171 159 143 133 104 125 146 127 185 +196 167 182 159 114 118 157 99 97 123 141 115 +92 115 94 55 89 105 99 85 157 167 90 73 +165 162 121 103 127 150 188 167 103 86 45 62 +38 31 53 56 84 124 144 115 162 186 200 199 +194 199 199 199 205 199 209 201 195 189 175 117 +130 168 195 200 200 189 185 195 197 200 204 205 +198 195 194 199 206 205 195 205 202 199 195 201 +197 197 197 200 191 192 197 202 195 196 202 205 +205 218 219 216 218 207 205 201 217 206 211 205 +196 204 199 200 208 210 208 207 211 206 205 205 +207 207 206 201 147 141 137 138 137 136 137 150 +146 133 140 138 133 127 135 137 127 131 129 131 +133 129 137 125 119 123 134 133 133 135 145 146 +147 157 153 148 156 158 150 153 158 157 154 150 +149 144 150 141 135 139 135 136 143 144 129 130 +143 130 134 134 139 138 136 136 133 134 141 137 +135 138 151 153 146 136 114 137 181 197 209 218 +227 220 216 222 222 220 227 217 180 192 200 201 +218 209 215 220 220 213 209 205 201 206 205 202 +215 218 204 200 211 219 211 208 204 201 199 194 +197 207 198 191 200 188 196 204 202 209 207 201 +211 202 195 197 201 196 199 208 196 191 196 204 +210 202 204 200 194 192 200 194 184 188 185 169 +170 171 181 195 185 182 194 201 196 200 200 200 +194 188 175 159 134 144 130 97 117 145 137 131 +126 141 126 120 100 70 89 123 133 133 143 164 +111 92 99 109 181 221 227 218 208 151 171 114 +131 192 181 126 110 136 117 104 120 110 94 141 +166 153 179 138 158 189 176 198 216 174 153 156 +159 196 184 165 154 162 169 167 187 169 139 149 +167 187 182 168 192 212 196 189 164 175 180 188 +208 194 169 143 125 144 162 160 160 172 156 136 +167 146 136 185 211 222 206 192 178 164 154 154 +136 96 93 75 88 90 97 150 178 164 168 178 +174 165 154 125 99 90 88 98 94 90 74 84 +80 78 103 92 +155 100 96 99 57 74 76 69 +75 92 119 154 117 78 86 100 98 92 99 84 +105 96 85 87 67 84 120 140 97 102 128 168 +208 185 137 100 100 93 98 151 192 170 117 83 +73 86 78 103 92 79 119 108 72 51 83 80 +124 140 150 164 176 187 160 146 160 170 130 156 +175 166 134 130 128 135 134 111 111 124 177 140 +133 127 85 73 115 145 175 170 145 116 103 95 +84 131 150 190 165 140 149 124 104 96 83 108 +158 154 174 186 187 123 131 148 174 140 133 128 +169 205 177 146 100 60 79 51 29 33 39 86 +108 126 134 116 156 164 180 184 190 194 191 191 +187 206 205 198 199 189 182 139 143 172 196 195 +187 191 197 197 188 189 186 188 195 199 201 202 +197 200 209 206 191 207 211 215 201 201 200 190 +187 185 204 205 213 206 207 191 200 210 208 221 +218 204 208 205 208 207 212 199 198 200 207 201 +204 204 211 206 210 199 196 201 211 221 199 197 +148 139 135 140 135 138 146 145 161 145 137 139 +157 145 136 130 133 127 125 126 134 131 130 126 +121 124 125 127 135 153 149 137 144 151 143 149 +147 156 156 146 153 154 146 157 165 141 145 145 +131 133 130 128 138 138 129 134 139 136 129 134 +131 131 136 143 135 139 146 140 138 154 145 150 +147 131 116 121 165 189 211 222 217 209 220 223 +208 223 227 207 189 197 205 213 212 211 211 209 +215 212 205 198 197 209 204 210 218 221 211 211 +208 219 211 198 205 208 199 196 194 209 202 184 +187 187 200 207 209 206 206 204 215 209 205 209 +202 198 199 196 190 189 190 194 207 205 202 190 +191 194 198 199 188 178 166 149 171 182 184 191 +188 190 194 206 204 200 196 187 187 184 180 174 +151 153 156 145 131 126 139 160 135 134 158 157 +162 166 116 125 156 170 181 189 187 162 144 135 +155 168 143 155 169 153 149 105 121 159 213 227 +213 189 146 125 92 84 124 126 158 177 168 144 +160 197 206 180 177 191 200 208 222 221 225 212 +217 180 143 154 150 139 167 166 167 197 211 182 +177 192 186 209 201 179 178 174 188 195 166 157 +141 155 182 207 219 222 230 216 213 202 177 168 +161 139 135 134 134 125 131 154 169 164 129 115 +128 155 169 179 178 156 174 159 148 133 113 100 +92 113 72 72 97 66 77 68 58 87 82 89 +140 127 114 121 106 127 104 89 70 83 116 140 +136 127 159 156 154 141 83 78 87 98 96 79 +72 46 45 60 48 94 90 75 98 120 145 160 +161 187 182 162 105 74 63 72 105 138 141 178 +190 209 192 181 180 165 154 159 167 161 158 127 +124 83 60 103 103 124 187 213 185 170 168 182 +169 141 115 111 95 126 148 107 89 76 129 145 +139 129 107 85 67 76 79 80 113 140 196 211 +219 196 108 66 82 100 156 174 137 144 190 191 +182 141 137 86 105 145 178 165 151 99 54 69 +77 92 98 83 82 42 46 73 114 131 130 118 +165 179 185 196 192 195 190 199 201 199 190 189 +189 184 170 161 137 158 182 185 185 200 190 177 +185 189 189 198 195 204 208 198 198 198 202 204 +201 202 201 210 210 200 202 198 197 197 206 205 +211 196 198 209 212 205 202 217 219 220 211 201 +208 201 197 202 206 199 210 201 207 197 205 205 +205 207 196 201 205 220 211 184 133 140 130 135 +135 164 156 139 145 136 139 147 145 133 135 137 +131 130 127 131 129 126 124 123 121 120 130 138 +134 141 139 140 151 149 150 151 144 156 156 172 +160 155 161 155 169 166 157 147 146 137 143 136 +130 139 137 135 138 133 127 139 137 143 143 135 +130 138 154 147 137 146 150 149 160 124 113 145 +185 206 213 211 208 219 222 213 223 222 216 196 +190 197 213 210 202 219 215 216 217 205 206 197 +199 206 208 209 215 221 222 225 219 212 208 201 +198 198 194 195 194 210 206 185 199 196 189 196 +202 199 216 218 210 213 209 199 197 200 204 201 +198 188 191 191 197 197 189 188 187 196 191 197 +196 182 160 140 174 175 182 185 195 197 200 192 +196 194 198 200 196 196 181 169 159 162 153 139 +141 130 135 107 97 106 121 135 151 160 146 105 +115 124 167 182 187 181 154 139 133 128 137 138 +140 130 130 113 86 84 96 179 215 216 201 191 +202 188 168 167 162 155 175 188 178 139 140 186 +172 158 204 218 205 191 187 185 158 131 137 167 +179 177 192 220 216 187 184 175 158 174 182 159 +162 184 179 134 134 134 143 160 162 180 184 175 +159 156 138 130 127 120 109 119 146 156 157 155 +151 125 128 126 120 149 135 151 185 181 195 158 +118 100 79 77 103 139 123 119 106 87 92 69 +78 105 90 75 88 74 88 99 +100 115 90 117 +131 120 129 126 111 103 102 73 106 117 93 115 +125 111 87 75 69 93 96 95 110 87 51 49 +51 58 65 64 67 68 79 144 174 180 164 116 +97 63 79 80 102 113 125 177 188 177 165 139 +103 75 86 93 121 147 171 181 125 70 62 93 +118 155 187 176 139 145 128 126 92 131 123 146 +120 105 117 85 105 140 130 97 92 144 159 128 +80 124 181 197 227 235 225 178 145 123 82 78 +84 102 140 195 206 141 135 153 140 98 76 97 +140 166 127 104 82 106 147 111 99 65 65 82 +41 34 73 115 166 162 171 153 165 178 184 188 +199 199 202 201 210 205 205 201 192 189 174 156 +133 155 181 189 190 181 180 186 182 181 187 184 +182 190 195 199 206 199 197 198 198 202 200 208 +204 202 201 197 196 199 202 215 205 195 198 197 +205 196 201 218 218 210 208 208 211 208 197 192 +195 195 198 190 200 200 195 205 199 192 202 202 +208 212 208 187 143 143 135 147 148 145 145 153 +144 150 166 158 135 139 156 140 139 126 130 128 +124 124 120 116 119 127 126 131 134 135 141 146 +130 147 166 155 155 161 154 160 153 177 189 186 +149 166 148 146 155 136 146 131 141 131 140 139 +141 139 136 129 130 144 140 138 144 146 151 149 +145 172 172 150 150 136 116 135 186 217 216 213 +213 219 226 219 227 222 206 188 194 206 210 217 +216 208 204 212 213 209 211 211 217 207 217 219 +212 205 212 218 219 206 208 202 191 199 198 199 +205 198 199 197 197 195 190 197 204 208 207 201 +209 209 201 204 201 197 204 202 201 190 196 188 +192 197 191 187 192 182 190 187 182 182 155 158 +174 179 176 175 192 186 187 185 170 169 184 188 +186 181 169 166 161 154 157 153 131 146 180 174 +174 180 167 147 119 119 130 137 119 109 100 140 +158 189 194 206 188 137 136 155 138 119 123 149 +99 93 87 84 123 157 166 118 121 155 164 149 +140 128 148 174 205 216 187 217 217 208 169 149 +135 126 121 123 114 150 167 194 217 217 221 222 +216 213 179 135 158 154 161 168 153 143 166 170 +176 148 164 145 156 165 172 185 192 182 190 158 +128 118 114 109 116 129 131 148 158 196 196 172 +164 165 171 175 180 156 111 137 149 96 69 96 +80 86 140 171 160 129 126 111 113 116 123 94 +90 107 109 97 +118 84 82 105 153 148 143 127 +149 157 108 69 53 51 75 95 96 96 107 84 +92 78 90 78 109 128 137 108 74 94 88 108 +153 179 169 118 76 66 92 98 135 154 136 144 +180 198 204 188 181 158 128 134 127 159 175 158 +154 205 179 137 79 99 153 189 186 210 191 195 +190 190 153 136 146 185 190 170 169 194 160 114 +143 149 126 143 174 172 125 86 119 134 130 155 +174 148 110 87 107 80 66 108 119 181 216 211 +182 201 205 155 161 187 171 176 181 140 130 98 +115 125 73 59 48 47 59 47 56 39 99 147 +160 130 146 154 168 172 185 189 195 196 198 198 +200 210 206 205 205 190 177 170 131 161 185 179 +179 182 184 189 192 195 187 190 196 194 188 194 +202 205 194 198 206 205 209 223 209 200 206 212 +197 192 190 204 205 198 194 204 213 205 210 213 +215 205 206 201 201 206 204 200 198 195 209 209 +216 217 205 201 207 205 194 186 201 212 196 176 +160 155 140 174 172 155 139 153 161 174 170 158 +131 148 143 131 130 125 125 119 128 128 124 127 +130 128 134 138 131 138 143 155 138 144 162 167 +165 178 164 155 161 175 184 158 149 167 154 141 +171 162 160 140 137 138 139 140 133 134 126 133 +141 138 150 140 141 137 139 145 141 154 157 151 +150 161 116 128 168 201 217 211 212 213 213 210 +226 217 195 189 195 194 208 206 211 208 201 199 +207 201 190 202 215 208 215 211 209 209 215 217 +220 217 209 204 200 201 190 197 209 204 198 194 +202 206 197 202 205 197 199 204 204 206 209 204 +199 198 191 189 196 192 199 195 197 199 191 185 +191 195 188 189 180 161 157 185 185 178 189 196 +178 179 172 182 182 180 181 181 182 180 179 170 +153 149 146 135 111 108 137 156 181 198 201 195 +161 160 157 137 151 120 119 136 105 123 166 164 +179 194 174 158 133 114 103 133 137 170 153 127 +107 113 120 139 118 114 128 115 166 159 154 153 +167 200 207 220 187 176 209 176 151 158 164 171 +141 136 126 148 174 191 213 211 194 185 156 181 +204 202 188 172 187 167 153 159 162 170 154 170 +162 161 160 174 185 138 130 125 120 124 123 89 +87 109 97 126 126 113 143 186 191 179 137 115 +98 95 93 110 179 197 174 141 97 96 87 117 +149 154 153 168 151 107 85 84 78 95 96 109 +138 94 60 69 82 105 135 144 110 68 77 83 +75 68 55 74 93 96 116 110 92 85 94 75 +99 120 135 140 161 174 176 134 140 136 134 144 +135 128 155 143 135 162 174 172 179 161 109 87 +109 126 121 123 104 82 89 105 140 109 84 111 +159 161 167 135 153 182 159 164 176 135 130 206 +220 185 146 140 143 150 168 184 156 124 147 161 +117 123 131 145 155 165 187 175 106 72 86 62 +55 116 165 177 175 202 178 191 209 196 177 127 +170 216 196 178 118 94 72 74 114 62 69 44 +46 73 80 92 88 66 79 106 127 121 107 138 +186 189 194 196 199 192 184 196 196 200 204 198 +195 194 175 161 147 150 180 178 177 184 188 194 +195 195 187 190 189 191 195 200 198 200 189 199 +202 204 218 218 211 211 208 208 202 194 188 200 +204 205 204 206 199 197 197 199 205 205 199 202 +205 200 198 205 192 198 199 202 208 198 210 205 +205 192 205 198 195 217 209 172 139 133 135 148 +144 143 136 145 153 154 166 141 134 134 128 128 +124 123 126 128 128 127 139 136 127 126 124 131 +139 139 143 143 137 139 138 166 164 179 178 157 +165 162 149 153 156 191 216 185 162 184 160 151 +153 140 137 145 134 129 134 139 147 130 130 131 +138 158 156 136 153 172 154 150 177 138 109 126 +192 210 216 215 221 219 213 220 230 210 192 188 +187 199 204 204 217 215 207 215 212 207 197 198 +211 221 215 209 212 217 217 210 210 212 216 205 +198 200 195 192 211 210 194 196 202 201 202 210 +208 205 204 196 194 209 201 199 205 202 201 204 +202 197 202 199 202 213 204 202 202 198 187 181 +176 155 176 179 182 188 189 186 185 180 184 194 +197 194 190 199 202 187 180 176 165 141 139 171 +172 127 96 124 125 153 159 167 177 186 145 138 +153 172 154 147 111 118 137 170 162 153 148 160 +162 148 111 96 83 118 155 160 134 118 143 157 +185 165 154 144 188 198 211 213 190 187 131 145 +178 172 197 200 204 200 194 201 205 195 147 130 +150 134 154 199 219 207 228 228 226 228 230 215 +170 156 128 151 139 157 147 141 125 138 143 167 +179 188 186 164 133 109 116 104 100 98 99 96 +108 125 119 138 150 162 150 128 123 111 126 159 +146 166 195 200 179 155 121 128 143 169 195 179 +138 100 102 92 121 146 144 128 +156 95 109 80 +78 66 92 86 95 120 93 60 66 74 79 83 +105 96 100 90 97 104 116 129 137 131 84 66 +73 78 73 68 74 103 74 86 67 67 109 133 +113 127 155 154 143 154 148 139 162 178 155 87 +45 63 82 72 52 77 102 136 99 110 161 199 +197 164 156 160 169 167 206 226 192 165 148 164 +197 199 175 151 147 190 174 186 169 130 174 180 +178 159 140 124 93 86 69 53 100 145 106 84 +158 120 126 135 120 119 102 164 187 145 111 119 +51 59 63 64 66 120 94 68 93 95 89 98 +68 79 154 157 148 119 115 138 169 177 196 196 +199 206 196 196 187 191 190 191 189 181 167 167 +146 129 165 182 192 189 195 187 202 202 197 196 +189 195 198 197 185 181 191 204 205 201 208 210 +207 206 204 206 197 195 194 195 210 220 206 197 +208 199 188 199 200 202 210 205 199 204 199 200 +204 196 200 201 206 197 201 204 206 206 198 188 +186 209 201 182 151 144 143 165 155 154 153 151 +160 149 145 149 147 140 137 134 128 127 130 133 +125 126 123 125 128 126 134 130 133 148 143 138 +138 144 156 179 171 158 162 165 147 143 134 164 +167 160 186 210 161 149 141 145 141 140 133 131 +135 133 128 136 149 138 129 128 127 138 146 135 +145 165 145 143 155 139 107 124 179 206 211 217 +213 212 217 229 227 202 174 181 201 201 198 210 +217 213 210 205 213 212 197 200 212 211 211 216 +210 212 218 200 199 213 213 202 201 191 194 187 +190 196 198 197 194 199 212 204 198 200 205 206 +208 210 208 201 209 215 206 197 199 201 196 205 +200 207 201 199 197 197 201 190 175 141 133 171 +195 192 194 184 176 188 192 189 196 197 188 190 +187 191 189 179 170 182 159 150 141 141 133 111 +117 108 128 144 164 172 170 179 156 157 136 121 +133 134 146 133 175 194 194 164 165 166 157 144 +140 131 134 119 144 171 151 136 138 135 148 149 +159 155 184 180 140 136 130 117 106 116 102 98 +118 140 144 153 169 176 168 190 190 188 188 136 +139 178 172 141 102 119 115 125 113 97 109 123 +136 155 145 179 168 153 135 181 189 180 197 201 +178 143 113 126 151 178 175 175 179 200 199 170 +160 141 140 143 143 143 119 113 128 143 164 145 +139 120 109 86 115 143 100 94 104 90 104 109 +113 125 131 125 +90 78 76 70 82 116 88 99 +104 98 79 66 82 60 70 96 96 130 126 108 +118 145 159 182 184 164 144 127 79 84 57 68 +77 74 87 88 102 130 83 77 135 177 150 156 +107 87 60 57 92 90 69 89 110 115 111 103 +129 164 155 150 117 121 136 181 187 179 191 175 +177 201 216 180 141 118 191 208 191 149 126 160 +177 184 157 123 95 75 119 120 110 99 87 108 +111 113 73 109 175 186 156 146 130 110 59 92 +90 79 149 166 135 116 107 70 67 68 72 69 +96 99 70 66 104 80 96 128 111 80 93 126 +145 127 107 133 177 180 182 192 202 207 210 207 +206 199 192 191 190 179 170 175 146 103 145 180 +178 190 190 197 192 195 192 189 192 192 197 196 +202 197 191 194 201 196 195 200 204 210 209 197 +195 190 199 190 198 196 204 202 207 206 206 205 +206 222 211 201 206 206 202 200 200 200 202 202 +200 202 202 195 195 205 207 202 202 210 213 192 +174 144 157 153 170 158 145 156 147 131 144 159 +162 140 137 133 127 134 130 127 126 123 126 126 +123 137 166 135 136 141 138 154 149 139 146 159 +170 169 182 178 153 177 164 145 169 170 159 169 +148 143 148 148 135 139 138 134 134 127 130 129 +133 128 128 127 127 138 136 138 154 151 154 151 +151 150 115 128 189 201 207 215 212 208 216 222 +210 182 184 201 207 207 211 211 213 213 212 213 +210 199 192 202 206 212 205 201 206 222 223 211 +205 201 202 200 197 198 197 190 187 199 198 198 +202 204 211 204 205 218 226 227 213 211 206 210 +207 205 206 197 196 192 206 211 199 206 204 194 +194 186 182 184 172 156 167 186 188 185 185 165 +190 197 182 170 185 196 192 187 186 170 174 168 +162 162 171 148 135 130 108 102 84 94 97 108 +109 110 97 105 121 148 158 151 170 154 164 153 +157 176 200 176 168 181 178 174 176 165 170 172 +144 129 140 130 153 139 140 139 151 175 211 226 +218 218 216 210 207 199 192 156 147 167 148 146 +126 151 168 135 159 195 209 184 155 145 134 158 +151 129 119 97 93 114 110 128 171 202 180 174 +155 170 175 181 206 184 138 107 123 118 103 111 +121 130 156 155 169 165 174 178 180 170 148 117 +95 100 88 87 88 90 80 93 82 85 106 83 +79 98 114 99 125 120 100 98 105 97 75 118 +86 97 88 80 118 141 107 105 96 85 87 94 +85 135 160 156 128 146 160 154 160 139 156 109 +77 75 52 55 89 73 57 53 68 106 165 164 +178 164 144 154 189 198 175 155 149 100 89 89 +90 90 137 192 204 186 195 179 186 158 133 170 +182 148 77 99 113 77 77 66 80 95 136 187 +198 200 199 174 160 140 120 127 134 129 127 149 +176 198 194 169 154 111 137 168 120 117 158 138 +178 180 136 130 85 84 54 56 125 174 162 109 +114 159 138 123 83 73 96 93 75 59 49 75 +73 55 49 55 56 90 116 146 153 150 136 159 +192 195 196 198 199 201 195 199 202 202 207 196 +200 201 184 178 139 115 128 170 184 191 191 190 +184 198 198 190 192 188 196 189 194 197 194 194 +189 197 196 199 201 197 206 212 197 194 198 195 +187 207 215 211 207 194 191 217 215 219 219 222 +213 206 206 202 206 200 189 201 198 192 205 212 +202 202 208 197 196 208 207 184 140 135 156 139 +156 149 156 151 143 146 153 167 175 139 130 131 +131 128 128 134 125 135 134 124 136 197 167 145 +136 161 151 158 153 147 153 150 171 166 159 157 +164 181 181 199 195 162 155 147 148 138 146 149 +146 144 129 133 133 135 130 131 130 131 133 129 +127 139 137 147 143 158 172 158 137 130 93 126 +196 201 202 222 219 220 226 211 201 184 186 199 +208 210 209 209 207 208 213 218 205 198 201 207 +216 219 213 219 226 218 210 207 208 202 199 205 +206 201 196 189 195 187 185 199 202 211 207 207 +217 219 217 210 215 211 201 213 209 199 213 206 +197 195 201 207 205 206 200 189 180 178 178 159 +134 138 144 164 174 184 188 198 201 201 200 201 +192 198 194 189 190 192 188 188 167 124 115 79 +78 85 79 73 65 69 109 97 99 94 104 120 +120 134 151 177 169 200 198 181 171 164 184 198 +169 148 156 159 169 170 172 170 166 127 136 156 +166 167 165 160 156 181 176 147 135 158 191 198 +197 192 177 188 200 204 188 164 156 128 118 124 +149 162 164 170 151 165 174 184 158 157 171 168 +171 165 158 172 143 140 170 175 196 198 187 155 +141 147 171 168 180 180 147 155 159 166 137 150 +136 131 98 125 139 121 184 160 128 119 164 177 +184 182 153 147 145 88 96 99 115 111 128 148 +153 155 146 123 107 89 90 86 +181 153 86 105 +155 161 169 128 78 78 99 129 157 136 108 124 +114 86 116 137 137 131 154 133 120 66 82 74 +90 93 95 151 157 157 168 108 113 119 141 144 +116 120 139 160 167 174 171 111 136 175 201 207 +174 126 88 82 75 85 99 145 131 74 86 64 +68 139 212 217 219 216 186 168 154 120 113 106 +120 177 208 192 184 200 221 225 220 206 185 176 +174 175 195 158 143 145 135 160 205 201 165 108 +66 46 75 157 200 162 127 190 148 126 125 108 +100 116 77 72 58 56 43 58 51 45 56 59 +55 86 123 111 147 153 108 144 176 194 198 197 +194 188 180 188 189 196 206 207 198 201 189 186 +153 140 131 162 181 182 186 186 191 185 186 187 +188 197 205 198 197 205 199 200 195 200 200 205 +208 202 209 215 202 192 188 192 194 199 201 205 +204 207 215 221 218 219 215 221 207 207 207 207 +215 209 204 204 199 205 206 212 217 211 197 180 +195 209 202 194 144 127 136 143 167 169 151 139 +155 171 147 144 137 130 133 130 129 126 129 129 +126 129 127 128 125 143 134 135 137 140 140 137 +148 146 172 160 170 168 160 169 156 161 153 165 +169 153 153 140 143 144 147 138 150 146 137 141 +135 143 133 138 131 136 147 141 138 155 148 139 +160 144 157 168 144 108 95 156 194 199 212 219 +207 218 219 212 201 188 189 201 207 211 217 208 +208 211 205 206 205 206 206 206 208 208 211 212 +211 211 205 197 207 208 200 207 207 191 200 195 +189 187 199 206 211 217 206 204 205 202 205 207 +202 202 209 204 205 208 210 206 201 186 187 189 +195 189 199 195 194 190 178 151 123 139 156 179 +199 201 199 196 195 206 195 189 190 191 188 178 +178 191 181 176 159 146 124 96 75 80 78 65 +111 108 124 98 100 78 69 68 115 151 167 197 +186 159 133 140 146 161 187 192 178 157 140 139 +166 153 146 141 155 185 177 179 148 150 139 144 +143 148 204 187 126 104 103 118 124 149 161 141 +165 156 139 119 94 113 111 120 127 124 172 196 +182 188 176 201 197 199 217 206 188 178 190 212 +198 195 174 157 172 169 160 161 133 138 153 137 +133 143 156 192 223 219 221 185 141 97 97 86 +92 116 151 124 129 147 126 106 110 137 159 137 +111 92 102 117 113 135 169 154 131 145 137 102 +85 86 78 88 +159 141 102 92 92 113 162 187 +176 138 96 78 109 150 160 146 168 182 150 106 +100 125 94 87 85 54 49 53 56 117 125 109 +85 64 51 54 65 82 85 69 56 84 62 86 +109 127 126 88 95 123 104 118 129 128 77 90 +116 114 104 159 175 126 123 128 158 160 205 185 +114 107 89 89 96 92 83 143 174 161 162 136 +170 187 199 177 149 124 161 146 133 160 168 156 +184 148 143 181 186 148 67 59 104 171 213 220 +195 159 189 165 104 130 115 119 135 165 169 143 +54 53 82 96 44 46 45 44 46 58 96 130 +157 134 119 150 172 186 191 195 194 176 188 197 +205 197 198 199 205 200 189 186 170 138 107 162 +175 174 188 186 185 200 191 194 195 197 200 195 +202 194 189 195 200 206 199 199 205 205 210 213 +207 192 194 199 201 186 208 211 199 209 222 221 +215 217 216 219 212 208 200 204 207 209 205 201 +202 207 199 196 204 213 202 190 194 220 212 177 +130 138 138 156 151 176 153 166 171 156 146 150 +148 138 141 133 134 127 141 134 128 127 125 124 +127 126 131 141 144 140 151 143 151 164 160 175 +170 165 162 162 154 148 150 160 148 135 145 141 +133 147 138 136 135 135 133 130 144 136 137 130 +133 128 141 134 133 149 136 151 180 153 175 175 +131 141 103 154 196 194 207 213 208 219 219 215 +184 188 202 206 210 216 213 206 215 210 215 216 +210 213 215 209 208 219 216 215 212 211 218 211 +205 199 204 188 196 194 196 186 190 192 195 202 +208 200 204 207 206 210 211 210 201 205 208 205 +207 205 198 205 200 198 201 199 197 196 200 198 +197 190 178 153 146 155 167 178 185 198 196 187 +192 202 200 187 192 198 191 190 177 178 171 162 +140 111 98 90 93 100 82 69 63 53 51 66 +75 62 73 103 158 136 149 200 202 192 180 168 +129 124 146 170 191 138 131 149 124 137 111 111 +140 165 175 161 140 127 158 175 165 153 174 190 +165 145 133 154 166 165 167 177 188 171 148 124 +137 133 128 118 133 130 160 184 190 198 200 190 +200 197 182 165 157 164 136 153 166 148 139 108 +136 135 144 166 162 188 188 194 215 216 206 175 +135 126 135 123 131 111 98 136 141 164 156 133 +129 120 128 153 153 126 88 99 104 124 134 137 +125 86 88 90 94 104 131 136 133 138 115 102 +99 74 68 79 85 77 74 90 133 168 140 93 +114 146 177 195 145 121 136 141 156 156 134 158 +141 70 52 65 114 95 62 56 60 56 44 82 +72 72 53 64 108 106 114 141 157 169 164 170 +164 158 164 154 119 103 105 168 194 169 156 170 +135 149 178 153 158 117 144 108 85 59 47 82 +96 121 149 176 185 168 149 194 201 185 184 206 +223 216 179 172 150 136 126 185 156 96 137 141 +158 181 158 134 197 202 185 164 150 149 167 151 +175 148 137 145 206 187 140 65 65 99 109 89 +59 47 42 35 68 97 120 133 159 160 124 175 +190 189 190 191 199 197 205 199 195 200 201 205 +215 194 171 174 176 148 139 150 176 188 188 189 +197 199 189 198 201 201 195 194 199 202 194 189 +197 196 191 211 211 197 211 209 202 204 198 194 +204 205 194 210 220 201 211 215 219 219 222 219 +215 208 201 202 209 200 200 205 200 196 201 202 +199 204 210 192 182 213 206 166 144 162 157 181 +157 178 155 157 161 141 138 148 144 141 138 133 +128 130 129 125 128 126 126 130 130 129 135 128 +133 154 149 144 158 153 148 157 153 159 161 167 +172 167 168 162 153 146 149 147 147 141 134 140 +139 137 148 138 129 130 127 129 134 129 134 137 +139 133 133 147 175 177 168 160 139 146 113 165 +197 199 211 212 210 221 220 199 184 187 192 195 +202 205 200 210 208 206 209 206 205 213 218 215 +211 216 222 225 217 206 215 212 205 202 199 195 +199 187 186 182 188 196 202 205 210 202 198 205 +212 213 201 208 202 207 209 209 208 208 195 198 +192 196 195 208 204 199 208 207 201 190 178 157 +156 160 165 170 172 180 196 195 189 192 200 201 +208 204 188 188 189 185 180 174 157 166 157 106 +107 133 89 84 78 70 107 85 57 67 73 88 +80 97 117 158 178 167 176 179 134 103 98 124 +136 153 138 125 121 138 149 169 169 154 178 212 +208 207 200 180 191 184 169 175 184 189 212 201 +171 186 186 190 194 184 190 195 201 197 195 156 +147 165 180 208 219 204 162 153 166 166 161 174 +170 160 172 179 195 179 151 137 137 125 147 140 +145 170 160 165 182 182 174 162 150 120 93 109 +109 105 114 111 146 127 106 115 131 172 189 157 +110 98 127 135 135 106 108 103 123 165 154 113 +96 134 165 161 139 115 117 114 +113 117 118 92 +108 109 90 143 156 151 134 93 69 93 111 166 +182 149 145 146 137 157 172 169 150 116 87 102 +52 68 67 54 65 68 107 106 94 82 86 74 +98 109 130 115 65 70 73 64 64 69 92 68 +82 141 140 135 166 153 168 198 172 110 110 76 +76 87 124 80 51 84 125 194 219 226 212 205 +160 167 186 159 187 213 221 215 189 187 175 146 +135 148 177 207 196 181 151 131 158 157 138 154 +167 156 145 128 130 147 182 207 198 156 191 198 +162 116 110 73 137 110 60 34 54 57 48 62 +77 74 100 145 166 154 120 175 182 195 190 190 +192 195 195 190 181 185 192 200 202 197 195 177 +181 165 169 144 162 178 189 195 188 189 189 190 +197 199 190 199 201 199 196 197 201 198 202 212 +207 202 206 206 209 205 197 197 187 196 205 208 +200 211 220 217 216 208 218 216 211 207 199 199 +206 210 201 204 205 210 195 201 198 200 206 199 +192 202 201 175 145 144 147 159 156 154 158 160 +140 141 155 145 129 144 137 137 135 131 127 130 +130 126 131 134 128 127 128 127 133 145 141 153 +161 144 151 176 175 192 205 210 217 199 180 174 +178 166 154 149 156 149 137 140 141 135 137 129 +131 125 120 137 188 139 140 134 134 134 133 138 +153 151 164 154 140 131 120 156 190 210 216 212 +210 219 212 194 181 195 201 206 210 212 209 205 +208 205 195 201 206 208 210 206 208 218 230 227 +218 213 201 201 207 198 200 200 198 196 192 190 +195 197 198 204 207 197 204 212 213 206 206 213 +204 208 208 206 210 207 197 208 205 192 192 202 +192 196 194 199 200 190 169 162 170 166 177 178 +185 178 188 188 190 188 196 196 196 192 192 180 +187 186 169 172 162 160 177 170 149 135 115 96 +92 76 88 121 69 78 98 108 121 98 96 107 +129 176 190 151 110 114 102 88 102 120 125 147 +141 110 108 106 107 176 186 156 150 148 156 184 +179 150 170 181 150 158 198 204 199 188 164 175 +195 207 230 201 178 140 136 137 118 118 133 137 +158 188 195 170 144 106 86 89 114 114 130 116 +78 115 97 87 86 110 114 129 194 227 222 215 +190 162 137 126 111 100 119 125 159 187 211 201 +174 159 158 145 119 134 143 146 165 168 167 127 +95 110 109 133 133 102 95 103 116 123 137 139 +136 121 116 128 +138 145 108 96 93 114 118 129 +161 165 178 168 136 108 109 97 130 177 177 155 +140 147 155 103 65 72 90 116 157 155 153 145 +146 129 108 76 77 83 79 99 131 144 179 194 +162 85 105 153 149 145 129 86 97 94 108 127 +136 108 110 171 209 195 159 85 94 87 104 83 +68 64 106 105 157 171 151 139 131 178 178 187 +202 192 145 124 151 161 120 141 149 177 184 159 +131 110 92 168 204 177 140 179 202 187 160 162 +161 141 151 179 179 165 170 139 125 134 58 121 +126 88 55 62 76 97 65 69 74 63 106 127 +153 159 116 169 182 190 184 192 188 189 188 177 +181 185 195 195 195 198 198 188 181 168 167 111 +150 179 187 191 190 191 197 190 190 190 189 201 +197 205 199 200 199 206 204 212 209 211 204 198 +212 201 201 207 195 202 215 213 213 218 220 217 +219 211 227 228 220 217 210 204 205 205 198 204 +209 211 204 204 200 204 195 188 197 213 204 169 +136 138 128 143 179 188 145 143 141 144 141 134 +131 138 131 133 133 129 128 126 124 123 124 128 +137 136 139 146 135 135 136 148 155 148 158 179 +190 199 200 178 165 153 175 162 187 186 177 151 +158 168 138 141 155 138 151 150 144 127 131 134 +145 135 137 131 135 135 135 134 134 138 151 160 +139 147 120 148 207 216 218 221 219 226 221 196 +181 194 192 198 204 207 199 202 206 195 196 205 +208 200 202 207 212 217 219 227 225 215 208 204 +208 205 206 210 201 200 191 179 195 205 208 202 +210 204 206 210 211 215 208 211 205 201 207 212 +216 205 204 210 205 200 191 205 205 199 196 197 +192 182 165 161 167 169 176 175 192 180 198 197 +190 191 192 194 199 198 188 177 178 187 172 169 +159 130 107 117 105 88 80 110 125 129 125 121 +95 74 89 85 131 157 154 145 135 144 138 135 +124 134 106 94 133 177 144 140 176 185 184 192 +137 178 205 199 207 201 172 147 156 145 143 200 +202 147 156 153 139 177 180 159 192 201 188 166 +155 108 136 197 205 171 164 161 145 113 119 120 +109 120 149 125 93 95 106 128 109 141 124 115 +162 227 226 222 211 185 138 109 103 143 151 140 +130 120 113 134 147 139 155 171 151 131 165 144 +118 107 118 155 176 149 153 149 124 100 106 89 +97 100 92 127 137 120 110 107 118 116 103 90 +90 128 131 119 92 60 70 85 84 95 102 128 +128 108 115 111 87 72 115 138 138 127 116 126 +130 95 67 82 109 123 154 158 137 120 63 84 +56 47 60 49 93 113 113 104 93 108 136 137 +104 104 127 117 118 77 80 79 74 117 116 181 +169 134 120 123 150 135 138 94 111 136 107 80 +100 124 104 72 111 164 169 167 134 157 135 150 +159 135 126 157 133 141 105 88 110 146 178 201 +196 181 201 202 171 121 154 179 162 199 206 181 +121 99 136 126 108 93 103 78 62 55 49 57 +46 44 37 34 39 76 99 138 145 153 128 164 +167 180 194 191 190 198 191 185 197 192 191 199 +210 207 209 197 170 154 145 128 134 171 169 185 +181 181 198 195 190 184 198 194 197 207 197 199 +202 202 206 211 210 207 212 200 206 205 198 201 +200 198 209 205 199 210 209 213 212 226 231 219 +220 213 207 210 208 209 200 204 204 202 204 202 +209 209 202 199 196 207 208 190 134 139 138 141 +155 153 143 156 158 149 137 137 134 135 134 127 +126 129 128 130 125 124 127 138 137 130 137 143 +140 146 153 146 154 156 177 194 206 207 190 170 +158 157 165 165 175 185 178 146 145 157 153 150 +155 141 146 146 143 127 128 144 135 135 131 139 +144 141 131 138 135 137 137 139 141 145 108 168 +199 209 212 206 213 229 212 189 190 198 204 211 +205 204 204 199 199 198 195 196 204 194 198 211 +216 219 213 221 221 215 210 201 195 200 210 215 +209 186 191 191 199 210 211 200 210 208 207 207 +213 215 208 202 199 197 205 212 215 205 195 206 +199 197 190 196 197 202 209 204 195 178 147 161 +162 164 169 179 191 196 196 198 197 192 187 188 +196 187 182 177 176 168 169 166 160 151 138 137 +107 107 97 117 107 92 110 95 106 105 89 126 +139 117 115 116 114 121 134 119 98 105 109 129 +121 139 138 125 157 174 171 145 126 143 161 187 +191 212 222 223 212 186 141 162 185 191 164 154 +137 131 147 146 157 144 186 223 212 197 177 186 +220 231 216 213 219 213 184 167 141 134 135 123 +97 74 76 137 186 209 189 192 198 198 175 200 +168 136 140 126 120 123 108 116 103 109 99 118 +140 141 130 140 157 175 154 154 149 123 115 128 +130 139 175 170 157 155 148 121 93 104 121 134 +138 145 154 100 116 107 139 151 +97 148 182 187 +155 124 119 104 105 94 114 78 89 106 117 97 +104 139 155 147 148 143 85 59 53 48 70 88 +74 75 70 63 76 67 77 87 93 83 52 42 +57 89 118 131 134 96 76 63 93 87 106 109 +141 125 90 98 107 161 185 189 196 195 167 99 +90 104 128 141 114 86 59 72 136 131 140 130 +150 187 169 157 181 217 197 181 172 178 177 204 +191 174 143 127 125 104 141 159 148 151 165 124 +124 89 92 121 154 179 151 85 137 174 154 82 +64 64 79 104 103 89 82 146 88 51 24 48 +105 92 141 178 170 165 127 167 172 165 176 181 +188 181 187 192 188 189 192 187 191 192 191 185 +185 155 135 145 119 159 178 184 186 195 201 196 +207 212 196 192 191 188 188 198 204 197 194 198 +206 200 207 211 210 199 204 207 194 189 199 209 +201 217 209 219 219 226 228 229 213 213 212 206 +197 200 201 198 206 196 199 202 195 199 206 195 +195 207 191 158 140 143 157 139 156 158 150 147 +150 166 134 145 131 134 134 129 128 136 131 131 +128 120 126 134 133 130 145 144 145 146 138 139 +166 156 151 174 205 213 201 190 171 184 192 188 +175 171 172 149 150 161 144 138 155 150 139 136 +141 143 143 139 133 135 135 137 145 146 146 148 +140 137 137 151 141 127 110 156 200 215 212 206 +219 225 196 180 185 200 208 211 204 206 202 199 +200 198 201 195 191 191 200 210 210 217 217 217 +219 209 201 209 205 208 207 204 208 199 192 194 +196 200 201 202 198 200 208 215 219 219 212 206 +206 207 205 216 206 202 206 208 200 207 204 194 +196 202 201 194 186 166 151 160 178 175 172 178 +192 199 194 191 201 197 198 192 187 179 189 179 +174 177 166 162 147 123 108 95 109 119 117 110 +103 110 102 107 99 87 94 96 111 133 131 141 +164 128 120 160 155 186 181 187 188 201 196 204 +186 162 133 136 143 144 125 200 218 222 227 213 +186 174 168 156 135 138 181 202 179 177 182 175 +168 165 171 170 172 182 188 217 221 222 229 235 +230 220 191 171 155 151 167 158 141 127 188 215 +187 151 114 98 119 129 147 168 184 196 195 186 +184 172 131 124 109 109 115 117 137 166 153 167 +171 184 192 179 154 129 111 102 153 161 182 198 +195 175 144 119 124 118 118 115 104 100 125 129 +127 131 115 144 +99 149 151 169 144 83 78 58 +59 82 83 78 59 64 97 125 133 139 159 161 +143 136 118 131 114 68 84 73 56 72 60 96 +108 104 138 159 131 140 129 102 114 109 93 100 +107 140 172 146 118 119 94 121 108 87 107 164 +204 200 192 187 178 157 123 111 129 113 89 56 +89 174 196 205 218 225 223 206 204 212 191 181 +194 195 179 170 189 201 179 161 124 96 64 48 +85 89 120 109 120 118 134 97 104 114 144 168 +148 135 178 166 151 141 92 74 63 90 98 84 +85 72 90 85 63 46 70 100 96 125 136 161 +170 145 96 166 174 166 186 186 198 197 191 201 +194 188 186 189 184 182 192 192 190 155 156 164 +134 161 191 192 196 189 194 190 199 200 197 204 +198 197 194 191 202 207 197 204 205 207 215 212 +206 212 205 191 197 197 192 210 204 219 216 218 +212 226 227 228 228 223 211 210 207 196 202 200 +198 199 196 205 209 202 200 192 191 210 199 160 +137 143 165 145 172 175 144 137 160 138 140 136 +155 138 129 129 129 128 129 130 138 118 123 124 +123 133 139 147 138 153 146 143 160 157 158 166 +196 208 211 188 156 159 184 188 182 165 150 172 +168 175 157 154 147 136 148 153 144 141 149 133 +134 144 133 145 144 143 147 158 165 139 148 140 +137 130 120 164 208 202 209 211 220 213 195 181 +199 207 200 206 204 202 194 200 197 202 208 199 +201 206 201 212 217 220 221 216 207 202 207 204 +210 217 207 201 206 190 187 196 197 200 212 208 +206 211 212 218 221 206 198 204 210 204 202 204 +199 204 207 205 200 201 202 206 192 197 201 200 +189 174 161 176 199 198 187 188 188 192 192 185 +182 200 201 206 206 205 197 188 179 179 179 159 +123 99 104 96 94 110 105 120 133 141 134 149 +176 158 154 111 102 96 100 108 118 127 143 191 +181 134 133 134 139 148 164 175 186 174 168 153 +167 175 153 149 182 189 175 178 184 188 187 191 +168 182 176 205 201 185 156 139 131 118 116 111 +110 143 153 159 154 164 153 150 154 168 185 185 +170 156 195 184 165 113 87 88 95 107 104 93 +85 144 179 189 197 177 145 123 125 118 111 137 +138 104 76 97 99 106 179 210 206 209 215 209 +209 174 157 136 121 109 104 105 94 79 102 92 +104 134 162 175 160 143 107 85 84 79 94 96 +79 108 104 90 125 100 54 52 43 44 63 55 +75 94 83 85 128 151 134 119 108 120 145 182 +141 98 95 94 48 53 54 48 57 66 49 55 +53 93 116 94 93 135 135 148 117 94 97 131 +117 99 129 98 105 164 171 147 159 131 105 136 +167 190 165 94 105 115 107 135 169 174 131 130 +165 164 174 186 202 215 207 187 187 153 107 88 +86 82 80 68 58 76 92 164 166 130 178 189 +165 144 129 116 144 159 156 138 115 136 123 97 +58 85 75 53 47 51 62 65 34 64 63 93 +103 125 107 88 103 128 156 162 171 176 137 160 +180 169 184 191 192 190 195 196 195 196 198 204 +195 197 198 187 191 189 186 180 162 148 179 187 +185 174 189 190 188 194 187 204 202 200 192 200 +204 204 206 206 200 210 219 215 212 220 211 194 +197 194 196 200 205 218 204 209 209 219 210 218 +225 223 220 210 204 200 208 208 216 216 204 217 +215 205 201 199 185 207 207 159 136 166 154 134 +151 166 138 147 157 137 144 157 161 135 136 133 +137 131 130 126 125 125 126 127 130 140 129 154 +144 146 143 157 164 154 159 174 185 198 211 189 +176 148 158 186 176 166 158 171 164 160 157 162 +156 140 140 137 145 141 151 146 133 138 134 134 +156 150 146 154 158 140 140 140 149 135 119 172 +198 210 206 206 215 207 189 189 206 205 206 204 +205 205 196 196 206 208 204 204 199 199 202 212 +221 225 225 215 204 205 211 207 207 204 199 196 +189 185 188 197 209 212 208 213 210 205 209 210 +220 216 204 199 206 208 198 207 205 200 206 205 +199 206 207 202 192 195 187 184 167 169 174 187 +190 196 198 202 180 177 185 179 190 196 196 201 +199 196 205 196 185 194 186 180 177 158 146 159 +140 115 108 134 131 106 108 158 174 170 144 125 +102 90 94 102 110 118 108 130 167 147 130 129 +120 139 156 137 184 188 184 201 190 202 175 150 +158 150 134 108 107 105 119 128 106 117 117 181 +186 195 198 181 169 178 223 219 220 212 159 109 +106 111 106 105 138 164 148 186 171 158 141 165 +158 153 168 161 184 197 196 195 171 138 147 148 +159 145 131 126 120 116 111 113 110 133 158 139 +130 109 128 99 69 94 96 97 89 102 104 97 +93 82 92 75 95 110 105 166 184 166 154 149 +151 144 129 118 133 129 117 108 +97 68 67 54 +64 65 96 95 66 48 35 31 39 51 84 73 +63 90 60 89 128 162 195 186 125 83 66 54 +45 28 18 23 46 26 39 32 64 136 187 208 +205 168 141 139 104 74 97 109 160 195 188 178 +178 166 156 145 153 136 130 109 100 144 105 167 +165 98 79 99 120 100 140 191 191 190 182 177 +185 168 170 191 195 200 169 145 137 100 87 134 +177 195 207 195 159 143 190 202 157 124 179 145 +131 98 96 102 99 86 74 72 93 165 75 67 +49 62 68 64 52 80 64 56 48 67 72 59 +92 139 165 158 156 171 135 166 186 170 172 182 +187 192 196 196 194 198 201 208 196 195 205 200 +202 186 182 171 149 113 175 181 185 189 200 198 +199 210 194 202 205 207 202 198 202 198 197 198 +208 201 207 218 219 213 212 209 198 194 198 202 +198 212 201 213 212 215 205 221 226 220 217 212 +211 205 211 206 202 195 198 202 204 207 208 192 +188 206 206 167 133 135 138 137 171 155 141 149 +144 131 143 148 134 130 131 127 125 129 127 123 +127 127 125 125 129 140 143 140 148 141 144 156 +156 169 166 165 172 196 194 175 179 167 155 159 +165 162 157 159 160 155 144 150 151 147 147 136 +140 137 136 141 134 141 138 138 139 143 140 137 +148 143 149 147 176 147 110 166 211 208 207 220 +216 208 185 192 201 207 201 198 199 199 200 196 +200 201 202 209 202 200 201 215 230 225 225 219 +202 200 213 207 213 201 181 184 197 179 186 206 +211 209 202 204 200 205 209 204 212 212 199 201 +206 202 201 210 204 205 208 201 199 210 204 205 +199 198 196 188 165 176 184 186 202 199 190 198 +192 191 192 195 201 199 200 199 191 189 198 191 +196 189 180 160 139 126 144 115 103 75 83 96 +105 82 74 97 146 178 171 164 131 143 175 178 +187 195 192 200 202 187 178 133 128 116 107 133 +167 168 162 154 138 158 187 191 185 198 213 217 +225 219 175 158 162 128 111 90 90 102 116 141 +137 160 155 145 148 137 146 118 90 100 96 99 +72 92 87 100 143 151 113 149 161 156 180 172 +186 186 172 170 146 123 126 139 151 159 150 124 +137 166 154 106 99 84 94 110 96 92 68 93 +92 90 116 98 97 89 85 84 100 111 106 131 +130 143 149 162 168 141 129 153 130 129 137 148 +144 146 137 98 +87 85 92 77 66 64 83 119 +149 155 135 119 111 68 58 37 58 49 62 73 +86 77 68 75 66 79 109 88 79 28 19 25 +32 33 25 72 79 114 141 111 86 74 98 134 +134 115 86 86 93 116 95 76 131 174 191 158 +114 117 103 102 126 141 176 175 140 97 72 80 +120 149 148 181 188 165 156 121 120 95 109 115 +97 126 157 151 95 157 204 218 211 206 209 205 +182 199 182 167 134 161 126 69 88 108 162 192 +175 123 127 115 143 125 48 76 60 66 83 84 +65 79 26 41 34 47 63 98 121 139 170 166 +166 160 123 147 169 150 174 180 182 194 194 196 +196 184 188 199 206 205 192 189 199 195 187 186 +160 128 141 171 190 185 195 187 179 195 202 209 +208 205 197 206 202 204 210 209 206 215 213 211 +218 218 211 210 201 196 189 199 202 217 217 212 +220 222 205 213 221 221 202 207 212 202 211 207 +199 202 199 199 194 199 195 185 177 198 207 150 +121 135 131 140 164 154 140 150 134 155 149 148 +139 134 133 131 139 131 124 123 128 128 125 131 +128 136 133 135 141 141 144 158 168 170 153 150 +164 164 165 164 165 162 160 146 174 168 143 147 +168 172 156 140 136 153 150 136 143 139 141 135 +146 149 143 135 148 144 135 129 140 161 143 140 +154 133 117 169 207 207 218 217 216 213 180 191 +201 206 207 209 204 211 205 205 205 204 200 211 +211 212 207 219 223 226 233 221 211 209 213 209 +206 198 186 182 187 188 196 197 202 207 204 208 +199 210 200 196 201 201 196 198 201 206 206 204 +209 205 207 191 189 198 198 199 194 187 185 178 +155 150 181 198 201 199 196 205 201 204 199 194 +200 198 196 190 197 190 197 195 188 186 182 168 +153 114 124 151 130 106 84 67 99 97 96 90 +97 92 95 121 165 165 131 118 123 111 114 93 +97 124 151 147 156 171 171 168 206 184 169 150 +129 131 96 120 108 86 84 123 140 137 146 167 +165 194 200 206 198 168 131 120 118 119 185 209 +185 141 154 171 199 200 182 160 129 97 92 118 +103 136 129 93 103 100 77 76 102 59 86 107 +86 123 174 194 206 199 174 157 141 129 134 130 +110 98 79 75 86 72 95 128 154 158 148 115 +103 108 111 147 147 149 143 120 138 143 133 104 +88 98 102 95 86 102 86 86 119 89 107 125 +84 99 124 160 160 108 60 80 80 82 68 62 +69 52 47 44 67 63 62 70 60 58 106 109 +139 133 134 124 100 123 128 149 128 123 119 99 +108 96 82 93 108 158 156 114 96 92 151 184 +188 176 180 140 175 168 150 172 177 167 130 128 +144 192 174 174 181 181 110 85 63 74 87 107 +84 65 73 45 58 93 131 157 140 148 140 159 +167 146 159 168 178 178 174 151 149 147 99 128 +125 117 87 164 198 175 186 201 170 137 113 88 +67 84 98 54 127 90 62 58 52 63 64 102 +75 56 77 100 111 143 188 186 189 194 158 131 +164 169 177 181 188 190 195 195 192 187 197 192 +205 215 201 200 207 205 186 196 184 144 123 168 +180 191 192 186 187 191 195 205 206 202 200 202 +200 205 212 209 192 210 215 208 211 212 219 217 +198 199 199 198 207 219 221 217 225 213 219 225 +219 225 216 215 215 210 202 198 196 194 194 207 +204 200 207 197 189 197 190 145 135 141 139 150 +135 131 139 150 160 158 160 136 139 131 135 130 +128 124 125 123 128 131 121 126 133 138 137 130 +131 137 149 144 150 175 162 149 155 177 170 164 +172 149 139 170 190 195 185 159 182 165 154 145 +155 146 138 146 166 140 155 149 153 134 140 135 +130 148 147 138 147 167 150 151 165 148 130 161 +206 215 207 215 215 197 180 191 192 201 206 202 +210 210 201 200 199 204 204 206 208 211 220 225 +226 225 220 215 206 205 206 207 206 189 196 190 +187 198 198 202 213 207 213 223 212 215 208 201 +204 206 197 196 201 202 205 197 204 201 207 202 +199 202 189 186 192 182 176 166 189 182 170 194 +206 198 186 195 210 199 194 188 198 202 201 195 +190 187 190 191 186 181 165 162 148 120 106 108 +98 100 119 82 113 125 90 79 120 121 106 98 +80 84 100 93 79 92 92 103 104 80 125 141 +140 138 120 116 166 161 130 118 138 127 120 138 +146 114 94 92 94 110 134 166 158 177 188 182 +178 162 141 127 156 127 100 119 180 188 172 168 +170 177 185 189 188 176 151 137 129 128 156 154 +164 167 159 153 134 116 96 80 73 57 78 72 +72 83 125 154 156 136 125 141 141 120 119 98 +138 161 162 158 134 110 104 111 136 154 156 156 +195 217 178 151 120 127 131 140 126 107 124 135 +136 123 117 105 123 136 148 150 +76 105 110 127 +119 98 83 43 43 55 51 87 96 69 88 69 +100 124 136 144 146 117 100 102 82 69 97 121 +140 144 126 141 111 100 95 113 97 130 158 164 +133 95 86 134 121 155 158 162 149 137 149 164 +161 150 135 114 84 78 82 144 167 157 144 166 +191 159 119 82 117 135 149 118 124 110 74 94 +95 114 133 157 188 196 146 104 108 149 149 153 +103 77 84 95 116 99 103 130 102 84 141 191 +200 189 159 103 48 78 94 129 172 164 106 76 +54 67 95 41 49 43 59 62 47 53 74 80 +120 166 187 187 176 172 164 143 175 166 181 185 +200 192 189 192 194 188 198 212 209 196 209 205 +186 191 182 172 169 153 123 160 195 198 187 191 +195 192 207 200 201 205 202 208 215 211 208 201 +201 212 207 210 215 208 204 209 201 194 189 196 +195 202 215 219 229 225 222 221 227 221 217 223 +216 199 204 205 197 191 199 190 196 197 204 188 +181 201 200 153 147 144 141 150 145 146 148 153 +155 135 141 136 136 133 138 133 134 127 126 126 +130 124 126 126 128 124 133 130 135 146 139 140 +149 150 151 157 172 177 159 157 169 161 157 164 +202 198 161 151 172 187 165 145 151 144 139 135 +148 136 161 151 144 145 144 145 161 158 145 140 +158 148 146 148 147 160 127 166 209 211 210 212 +204 186 175 195 197 199 201 205 202 205 205 209 +204 199 206 209 215 210 223 227 225 223 217 210 +201 204 202 198 212 211 211 200 197 197 201 209 +206 208 207 209 209 218 202 201 204 199 204 204 +200 211 204 197 194 195 197 194 200 199 194 202 +198 184 164 144 184 204 185 187 195 206 209 206 +209 209 207 199 192 200 192 191 191 188 195 202 +194 182 166 165 143 123 104 90 99 90 73 76 +75 73 88 90 107 118 129 123 115 92 79 74 +75 67 75 73 68 84 118 161 181 190 185 146 +125 137 136 120 118 119 166 162 140 110 85 111 +92 83 87 98 104 147 200 180 141 137 116 108 +121 138 149 143 140 141 150 140 131 149 169 169 +148 144 158 129 145 126 157 165 158 174 160 139 +133 128 114 102 98 105 75 92 89 105 169 205 +199 177 143 99 106 106 141 157 133 130 87 89 +87 86 135 167 161 148 156 131 114 154 177 171 +167 176 170 156 157 154 154 158 165 156 133 138 +131 134 133 108 +115 86 82 75 82 83 80 60 +74 109 64 62 83 73 96 93 73 60 54 74 +74 73 74 99 100 62 80 93 123 127 141 143 +141 149 146 119 105 94 113 84 109 137 155 147 +136 118 114 144 147 136 118 90 88 96 73 88 +97 118 83 76 76 108 130 128 99 49 49 92 +89 103 79 76 136 109 97 140 124 102 106 168 +180 185 113 119 158 158 106 92 125 135 106 117 +144 153 134 131 143 200 191 165 140 99 49 60 +74 95 136 154 178 129 92 89 102 118 124 54 +82 62 48 59 75 103 76 51 116 176 187 192 +184 181 156 119 165 164 181 177 199 189 189 201 +192 190 207 212 210 206 211 204 195 191 191 176 +166 167 119 149 184 191 190 195 186 185 197 196 +201 202 209 206 206 208 213 204 201 215 205 216 +219 191 205 207 201 204 200 189 189 196 215 222 +225 213 217 226 222 213 209 213 210 207 206 199 +198 197 194 192 198 192 198 191 177 198 201 146 +159 154 147 150 153 158 150 147 144 141 160 141 +134 143 131 134 127 125 126 120 123 121 119 124 +130 123 131 140 133 138 139 146 149 148 149 151 +156 153 155 176 184 164 147 157 159 167 171 161 +156 177 160 147 140 148 139 140 140 140 160 138 +145 135 150 136 151 154 143 162 158 157 148 135 +138 134 125 164 189 200 198 207 202 187 181 198 +198 197 197 200 196 204 199 208 215 202 196 212 +217 219 229 222 213 218 207 205 202 205 197 202 +201 197 200 190 189 201 202 189 207 215 201 201 +206 205 200 189 198 202 206 201 201 211 202 205 +200 194 190 196 195 192 188 197 195 184 154 139 +184 200 195 176 185 205 217 208 201 205 200 194 +186 195 185 191 187 190 204 205 195 189 175 144 +110 123 107 123 131 125 106 79 116 128 108 127 +143 149 144 123 120 133 116 97 94 67 69 137 +123 104 78 116 98 124 150 182 213 223 202 166 +135 105 116 131 133 131 138 136 129 128 136 117 +105 134 125 128 145 187 175 191 196 195 187 180 +145 151 146 164 190 160 144 130 155 151 160 179 +174 176 150 116 131 116 117 117 124 115 126 159 +160 169 165 177 176 153 119 129 127 135 144 107 +69 82 70 69 97 98 104 123 116 114 125 166 +157 127 98 99 96 89 121 137 118 108 93 99 +113 123 114 119 128 117 121 113 106 86 79 116 +123 88 72 109 94 104 121 131 117 135 119 86 +98 95 79 77 67 88 77 104 102 114 169 160 +168 158 145 157 150 128 124 117 123 135 123 85 +96 104 126 147 134 106 93 59 38 42 44 48 +52 54 64 92 104 138 139 157 195 204 179 134 +126 176 161 124 136 184 199 206 209 169 139 157 +167 154 113 125 90 113 168 179 144 143 172 213 +208 168 167 207 205 165 148 140 129 115 121 147 +151 134 106 78 157 189 148 138 73 72 64 133 +181 191 162 145 97 125 95 56 77 62 45 48 +62 54 53 59 116 186 199 186 185 184 154 90 +128 146 157 168 179 171 190 197 190 196 196 200 +204 210 210 211 208 198 197 184 187 176 126 134 +168 192 196 198 182 185 194 201 204 204 207 202 +205 208 207 202 196 208 208 215 208 205 210 199 +200 202 210 195 199 200 206 222 217 217 226 223 +208 221 216 210 216 216 206 206 201 205 202 196 +208 199 200 195 188 201 196 146 138 157 158 151 +150 144 159 158 144 146 149 135 140 140 137 134 +129 130 138 131 129 133 126 128 130 127 133 135 +145 138 146 157 157 153 155 158 166 159 155 170 +161 139 138 147 153 158 156 155 140 170 149 159 +150 148 139 148 153 150 145 144 156 137 135 130 +138 139 150 156 144 139 143 139 145 127 118 175 +207 215 207 199 192 182 185 196 197 200 207 208 +199 199 199 210 209 205 202 204 216 229 231 227 +225 225 208 209 205 210 206 204 199 191 187 184 +197 202 201 207 208 204 207 208 201 206 209 202 +202 206 206 204 202 207 210 205 204 206 198 204 +206 196 191 192 186 165 134 138 167 185 174 167 +185 209 209 206 204 191 190 179 192 197 198 197 +178 181 187 202 202 196 184 168 149 151 156 164 +130 123 126 127 164 154 108 110 108 103 98 114 +129 162 145 130 146 169 147 131 161 194 180 127 +94 111 176 186 174 177 177 187 199 196 179 150 +126 135 128 157 176 177 192 205 180 127 117 106 +118 141 158 161 174 210 210 198 196 167 137 130 +127 157 151 157 174 190 180 170 170 169 155 133 +117 130 143 129 109 147 129 128 159 169 177 177 +176 184 185 176 137 126 119 117 124 99 96 114 +94 89 84 96 118 118 107 124 146 129 110 88 +99 99 69 117 110 114 133 128 124 119 137 129 +125 118 97 99 79 77 95 109 +182 147 147 150 +144 124 126 116 98 136 138 124 106 116 108 120 +103 103 126 151 180 176 179 156 161 125 137 143 +108 94 74 68 87 64 77 147 171 169 109 92 +93 100 92 96 154 160 151 159 117 43 51 73 +110 171 217 215 202 177 162 154 123 123 117 111 +172 189 150 140 128 128 127 137 138 125 166 180 +164 198 200 186 188 184 207 196 182 202 205 199 +182 171 117 125 119 177 177 147 159 171 178 140 +131 168 144 100 54 56 93 151 149 128 110 100 +67 69 54 53 54 64 68 63 67 43 37 100 +166 189 179 176 171 165 168 131 135 154 164 181 +196 200 199 197 200 197 201 204 204 210 206 207 +200 204 190 177 186 171 145 121 146 182 192 187 +175 194 184 194 202 202 199 211 201 205 208 208 +207 213 205 204 211 208 201 210 201 199 204 201 +194 208 212 217 219 212 226 228 228 225 221 210 +202 210 216 212 197 200 199 197 199 189 196 199 +184 205 195 134 139 160 155 139 141 135 162 165 +136 135 134 137 147 131 135 131 135 138 135 124 +128 127 125 128 128 136 136 133 133 143 167 177 +155 150 160 174 156 144 176 179 168 174 150 146 +160 171 159 147 145 153 158 168 147 157 154 137 +147 140 139 136 144 139 141 147 139 140 136 134 +134 134 134 141 145 139 134 195 208 208 204 208 +194 171 185 200 198 207 210 212 197 200 204 205 +202 204 213 215 217 230 231 231 222 221 205 205 +213 213 209 212 208 189 189 192 198 202 210 212 +204 206 205 202 208 200 212 209 197 200 206 202 +201 204 202 204 204 204 196 201 204 195 185 177 +157 139 130 153 184 188 185 194 194 207 212 208 +205 190 198 197 205 199 195 195 182 185 210 226 +205 194 170 159 121 108 94 97 104 95 76 74 +83 95 135 110 85 93 100 92 79 96 105 159 +151 120 108 83 76 82 89 99 121 114 105 153 +178 181 197 177 167 202 211 207 192 186 135 176 +218 228 202 195 189 186 181 176 195 186 190 190 +208 200 170 157 157 167 165 177 202 219 219 211 +195 174 156 128 161 161 128 124 137 150 164 180 +186 177 199 206 211 191 166 172 177 180 175 168 +137 109 116 85 85 111 89 133 144 139 128 107 +120 135 128 103 118 120 99 120 96 83 94 97 +113 110 106 121 166 172 170 170 162 130 103 94 +94 100 111 108 +174 168 160 115 99 115 128 151 +129 134 125 115 131 139 138 156 151 135 151 154 +113 95 155 157 102 65 92 100 87 115 135 116 +104 124 133 160 164 164 170 160 170 156 121 66 +47 52 59 105 102 100 111 125 137 156 128 86 +67 78 119 154 158 121 108 94 105 95 54 60 +56 67 93 113 110 100 129 116 115 145 189 211 +204 196 198 175 116 119 179 190 175 186 182 170 +160 168 156 145 166 165 159 115 170 144 89 35 +19 43 88 100 43 78 106 121 75 55 64 102 +106 105 106 105 80 67 85 124 168 186 177 182 +190 195 179 155 130 165 155 186 194 191 196 206 +201 204 213 215 212 200 196 206 205 200 181 194 +186 167 145 126 135 176 180 188 190 194 187 189 +192 195 197 198 198 205 200 199 209 207 205 206 +210 209 208 205 207 205 202 200 196 201 207 218 +229 220 222 223 226 225 220 217 211 209 201 210 +199 197 204 199 197 190 195 194 196 200 190 129 +145 162 147 154 143 160 171 168 146 143 146 153 +140 130 129 125 136 128 126 126 125 129 123 130 +128 133 129 141 140 148 170 177 153 150 160 162 +161 170 185 197 177 184 167 156 167 184 150 140 +146 143 151 151 134 145 144 136 137 134 139 146 +143 141 130 138 136 143 133 134 144 145 134 147 +150 146 129 178 205 202 205 209 202 180 186 197 +199 205 207 204 209 209 200 202 208 201 217 218 +220 226 231 226 218 213 207 215 210 201 202 204 +197 181 191 195 204 206 207 209 208 207 206 204 +205 200 205 197 194 200 204 202 199 199 208 207 +192 198 204 200 196 205 196 174 162 129 147 149 +164 176 165 188 188 188 188 199 208 206 202 206 +206 200 199 195 178 181 195 199 199 196 168 140 +120 106 106 83 63 57 67 56 83 103 113 114 +104 102 90 103 68 73 82 82 68 74 45 64 +82 128 167 195 189 179 181 180 200 171 166 180 +186 160 154 164 175 188 180 156 153 176 201 219 +219 222 216 197 180 157 177 171 151 177 194 198 +172 164 159 167 169 158 166 159 176 181 169 146 +114 124 135 139 141 127 155 180 190 187 189 196 +191 188 196 180 138 96 97 102 89 105 117 125 +114 130 111 106 124 100 118 125 108 108 128 111 +92 106 85 84 96 85 92 99 108 102 93 114 +146 169 192 178 146 94 96 90 95 109 105 136 +135 88 82 83 90 80 87 103 104 135 135 119 +117 129 126 135 124 118 146 124 105 67 78 87 +77 100 78 53 49 79 107 108 100 100 113 169 +191 180 165 151 146 149 141 158 160 155 136 70 +60 69 66 100 111 133 113 94 83 119 161 174 +212 182 139 145 129 131 148 157 176 181 155 116 +64 123 128 90 97 119 135 141 160 138 119 107 +189 208 197 184 187 177 136 114 106 85 51 47 +64 74 56 134 180 155 79 22 42 60 58 53 +56 92 74 57 46 59 100 149 157 109 139 137 +69 44 49 121 164 185 186 178 185 188 177 145 +141 171 157 181 170 190 200 198 189 200 200 205 +213 206 200 208 211 212 200 199 179 154 147 121 +128 181 191 192 191 196 197 195 205 211 207 201 +210 202 199 211 209 199 205 209 204 206 201 202 +207 198 197 205 191 190 212 206 208 219 231 227 +229 227 218 217 208 206 201 207 204 202 210 200 +200 199 196 192 191 194 170 134 150 168 160 140 +139 145 166 149 131 147 141 151 135 129 131 129 +127 123 133 123 127 128 127 127 123 128 127 126 +128 136 144 149 153 160 159 167 175 181 201 197 +180 172 169 153 149 159 147 150 157 147 146 144 +151 138 145 135 137 145 139 144 140 135 131 130 +128 138 133 131 138 162 145 146 154 138 126 187 +204 212 220 210 202 176 187 188 197 202 201 204 +202 208 202 195 200 209 217 212 225 228 227 223 +219 219 217 209 219 212 209 210 206 192 191 200 +204 201 208 208 204 202 204 207 201 201 202 210 +204 200 210 208 197 196 200 198 194 189 191 198 +192 188 194 191 149 143 159 172 175 174 185 200 +207 201 198 215 206 197 195 200 204 200 192 199 +192 195 190 192 196 181 167 137 123 117 105 116 +93 78 75 89 87 90 75 83 83 108 106 86 +79 104 102 117 124 116 69 70 99 89 109 125 +135 149 162 171 177 179 171 168 164 154 135 130 +155 158 189 201 192 159 165 202 219 216 175 140 +115 129 174 189 176 157 168 199 196 188 168 129 +115 134 131 138 147 150 144 145 158 190 217 195 +197 206 187 175 164 158 147 129 131 109 108 125 +146 131 120 113 98 131 151 145 131 126 95 108 +92 106 117 139 148 116 113 121 134 107 106 98 +97 107 119 124 129 129 120 116 154 166 180 160 +134 116 100 109 108 115 141 121 +160 140 124 103 +110 107 98 94 128 135 138 143 150 145 136 129 +144 99 94 97 90 89 62 72 59 108 109 124 +73 45 55 52 67 104 95 133 107 106 97 66 +53 67 74 124 145 168 168 155 124 104 86 70 +99 110 95 107 86 80 109 113 140 102 98 140 +137 161 192 201 209 194 158 151 96 129 148 160 +171 149 166 135 120 96 88 129 148 125 111 128 +154 157 164 156 169 119 42 85 92 107 161 194 +129 55 33 47 74 94 111 70 77 115 69 103 +87 154 177 140 92 73 86 57 46 68 55 103 +136 169 176 186 185 189 181 165 131 147 155 174 +178 191 191 197 200 198 205 212 209 197 201 212 +201 189 191 176 169 172 165 166 137 157 180 194 +202 204 205 192 196 202 200 209 212 206 215 209 +205 206 206 207 207 217 216 217 208 207 195 202 +201 198 210 217 206 216 223 230 230 217 221 218 +198 195 202 199 201 195 197 200 194 192 191 182 +174 200 172 146 187 188 170 155 153 135 135 134 +146 150 130 138 136 136 126 128 127 128 127 126 +126 128 130 125 130 139 133 133 139 141 140 147 +146 157 171 167 169 171 199 202 181 176 186 170 +143 141 156 160 168 168 159 138 148 143 135 127 +136 145 143 139 135 140 131 129 136 140 141 138 +148 155 180 168 146 139 128 172 199 218 216 207 +198 179 191 192 199 200 201 199 199 202 202 190 +204 210 216 223 223 227 221 213 205 212 217 217 +221 201 198 208 200 197 200 206 205 204 204 201 +208 204 202 208 207 208 208 215 207 197 201 202 +192 196 195 200 204 201 189 198 196 190 182 168 +138 157 185 181 168 174 200 202 206 206 204 202 +210 215 202 195 201 197 187 187 178 181 178 184 +200 191 166 136 113 98 80 108 108 107 110 121 +139 144 143 140 144 111 98 99 77 79 75 89 +108 123 157 134 130 137 170 197 188 186 201 178 +180 172 159 154 140 147 113 113 121 140 114 95 +102 100 104 115 114 166 176 209 216 175 145 134 +155 199 209 195 185 177 185 174 149 147 120 120 +104 96 110 137 130 131 172 187 155 169 179 170 +174 150 158 146 127 117 128 157 161 135 128 128 +134 111 140 192 186 170 135 127 121 121 162 195 +218 207 196 158 123 126 94 94 120 119 125 109 +100 110 130 135 144 125 113 124 129 131 127 110 +119 123 120 154 +128 115 137 139 123 136 135 148 +135 115 106 124 146 159 170 168 119 96 70 111 +99 85 99 96 78 96 109 159 92 68 34 58 +70 90 94 79 98 83 96 86 78 109 108 115 +145 138 110 86 79 75 73 73 76 63 116 113 +83 78 98 108 103 75 92 123 108 133 176 162 +185 169 139 151 177 148 154 156 134 114 87 63 +57 53 64 119 117 108 116 138 195 196 201 166 +90 86 137 105 99 68 150 165 43 17 33 56 +103 98 83 79 137 105 172 157 157 125 74 83 +86 143 158 158 93 66 69 102 131 159 177 187 +192 181 172 161 96 137 168 160 179 196 197 200 +198 189 196 212 200 197 196 202 206 206 202 191 +176 176 166 168 135 135 176 191 188 189 199 188 +192 197 197 207 211 201 204 208 211 209 201 199 +202 209 216 218 208 213 202 199 195 186 198 218 +220 223 223 223 220 223 221 226 221 208 206 200 +204 202 206 208 202 200 200 204 186 201 189 145 +196 201 178 155 137 177 165 151 159 138 134 136 +129 133 134 129 123 123 125 121 124 126 133 128 +131 134 137 136 131 144 151 153 166 184 180 171 +195 197 206 206 189 177 181 162 145 143 154 159 +155 156 147 151 141 138 143 133 130 133 138 153 +137 134 127 127 129 130 131 133 138 141 172 147 +136 153 130 168 190 202 205 205 185 187 198 192 +200 201 196 199 201 198 204 196 207 215 221 223 +223 223 218 220 216 212 218 225 213 194 196 186 +190 197 199 215 216 201 210 216 213 202 206 207 +211 211 205 199 205 201 204 201 190 196 199 195 +199 197 189 196 201 192 182 155 147 167 176 180 +175 182 205 198 201 188 194 199 209 201 194 192 +196 192 186 179 189 198 191 187 196 189 164 134 +110 100 75 69 79 48 51 67 68 78 123 169 +187 167 140 145 145 93 78 60 53 86 117 178 +191 179 198 201 175 195 217 226 225 220 215 210 +185 161 136 128 130 135 114 114 126 140 131 127 +117 121 181 199 222 230 226 209 195 178 180 180 +175 153 137 120 145 158 133 136 150 140 117 109 +88 111 140 133 128 118 131 147 170 198 185 180 +175 134 116 90 118 113 102 119 145 187 185 188 +174 159 136 105 111 158 179 190 179 162 158 125 +97 94 114 100 93 90 98 107 100 116 144 161 +156 139 127 116 114 118 125 131 128 131 134 150 +129 130 145 147 126 119 138 141 165 170 160 162 +153 156 156 176 182 143 78 87 100 127 123 117 +94 75 67 60 52 46 39 26 39 37 31 43 +48 55 45 59 83 125 177 199 198 175 131 95 +76 98 65 73 89 93 84 76 73 109 117 116 +95 66 63 108 124 148 186 205 186 189 133 115 +137 139 97 117 107 73 62 84 134 169 188 162 +178 171 182 176 170 161 111 156 198 196 158 103 +107 172 174 83 86 43 86 153 98 68 96 146 +128 143 119 66 66 67 89 136 149 135 98 73 +38 37 55 109 159 167 168 174 174 178 198 179 +127 138 158 162 186 199 165 179 181 185 210 222 +208 209 204 194 207 207 204 192 185 184 177 165 +137 134 172 172 174 194 191 187 198 208 205 209 +213 209 216 206 211 215 207 205 219 206 207 221 +211 207 205 206 201 198 202 208 216 223 223 229 +227 226 225 222 212 208 210 206 198 197 189 200 +199 206 208 206 187 202 181 140 167 151 134 141 +153 166 160 160 156 136 147 144 138 131 128 129 +126 130 126 126 124 135 131 125 121 127 135 139 +135 143 157 159 177 195 198 200 207 208 194 177 +195 177 161 144 145 146 143 146 147 149 149 141 +135 129 130 124 133 135 135 154 133 136 133 134 +133 134 128 133 141 130 138 159 143 130 119 166 +207 209 218 216 196 182 186 192 195 194 197 201 +198 202 205 200 206 217 215 212 215 221 225 221 +217 222 207 206 202 204 191 192 198 199 206 207 +215 208 207 209 209 192 197 200 204 205 208 206 +199 199 200 200 197 202 202 199 200 192 196 207 +205 194 178 135 147 176 181 170 181 182 198 190 +185 191 198 195 204 200 180 188 196 188 186 176 +185 191 190 199 189 189 175 153 138 117 85 68 +53 72 85 141 181 188 153 129 103 89 89 85 +105 97 72 78 88 79 75 80 125 157 159 140 +138 147 179 199 212 201 188 165 143 166 157 157 +180 162 143 145 146 144 129 103 116 138 127 135 +185 215 182 186 175 144 137 105 123 140 162 178 +141 141 154 149 134 146 160 158 144 107 115 148 +187 204 209 174 128 133 160 177 182 180 162 143 +127 136 117 107 117 116 117 117 137 151 180 179 +167 161 143 143 146 129 120 115 107 105 117 119 +99 115 106 114 113 109 100 124 136 130 126 118 +127 134 115 141 166 188 171 153 +131 145 139 134 +125 140 170 170 138 123 144 143 144 158 170 169 +174 171 126 107 109 124 134 127 76 72 75 67 +85 98 88 115 92 88 85 84 93 99 103 74 +106 154 141 115 114 143 157 143 116 121 92 77 +75 65 68 78 86 99 84 86 69 65 89 111 +119 133 172 175 179 161 169 175 160 115 105 93 +105 105 93 126 150 169 87 69 83 63 74 88 +64 53 66 129 157 170 161 149 188 175 78 49 +46 82 124 87 70 68 97 139 127 110 52 75 +129 134 118 135 98 108 86 75 44 49 51 107 +140 170 168 166 172 184 187 181 156 136 155 155 +187 202 187 190 185 191 212 205 206 200 196 205 +216 197 202 199 162 150 162 147 140 126 157 182 +196 199 199 202 200 202 204 205 215 212 216 202 +200 200 213 216 211 210 207 208 213 213 207 201 +201 191 194 207 209 218 223 229 226 229 226 223 +211 212 207 213 190 192 197 196 196 197 192 187 +169 199 168 144 157 140 131 146 150 144 144 143 +156 143 157 156 138 129 130 135 131 129 119 123 +135 129 125 130 130 129 138 165 146 133 143 155 +155 177 181 181 197 176 191 191 185 175 167 158 +149 143 141 148 140 150 135 138 144 138 139 135 +137 135 134 130 127 134 126 129 129 136 134 135 +150 133 126 145 156 126 123 166 213 213 218 215 +189 179 186 196 195 201 192 192 197 205 202 205 +209 209 204 210 221 226 222 210 219 218 202 205 +212 207 196 192 190 204 210 199 215 204 201 208 +209 202 208 208 195 205 210 199 196 202 202 200 +196 198 200 204 197 194 197 190 194 182 161 151 +174 189 180 167 178 181 186 192 202 202 202 209 +212 211 199 198 202 188 185 184 181 195 181 186 +186 176 185 184 182 175 141 121 87 77 74 97 +134 157 144 147 131 120 99 69 74 66 70 62 +87 97 85 88 137 155 130 184 207 218 188 130 +136 161 145 123 125 138 181 197 176 178 162 178 +162 155 164 168 165 149 140 108 100 166 199 189 +174 191 212 177 164 146 130 150 136 131 147 149 +153 140 131 145 167 138 111 130 149 170 201 208 +201 155 114 124 113 127 139 143 137 131 125 126 +134 121 108 107 105 131 174 190 164 125 109 90 +88 98 124 116 104 118 106 118 156 134 135 170 +153 133 123 150 150 146 141 129 127 105 119 140 +169 175 141 144 +134 130 135 150 148 138 128 125 +111 89 99 84 86 74 100 114 89 93 98 104 +127 111 114 105 94 94 102 110 111 133 117 143 +168 165 180 172 126 99 46 77 103 109 93 107 +118 119 129 115 153 139 55 49 57 57 65 69 +80 82 82 95 86 63 89 121 121 137 151 159 +131 128 135 116 109 110 111 129 161 182 155 157 +146 100 76 107 140 105 83 64 51 82 144 185 +194 209 194 158 174 99 57 66 60 98 93 149 +82 53 60 139 120 69 140 143 162 127 82 117 +100 86 69 60 36 41 58 90 131 170 175 179 +187 186 191 178 157 115 118 153 182 189 185 188 +176 188 197 197 205 200 208 212 217 217 209 195 +187 162 177 151 133 123 126 174 188 191 198 207 +205 197 205 208 212 208 216 213 204 205 210 219 +207 201 197 205 211 213 207 201 198 199 198 207 +202 218 225 230 232 233 231 230 218 220 212 212 +196 189 191 196 196 198 197 205 188 199 167 151 +151 155 158 150 141 130 153 138 138 154 158 136 +130 145 137 126 127 136 123 128 127 131 127 125 +126 131 131 146 127 138 148 146 139 151 148 164 +162 168 185 204 194 187 181 158 151 149 148 165 +162 141 148 140 137 137 137 135 134 134 131 133 +141 136 130 128 128 141 127 135 145 140 133 137 +151 129 127 176 206 209 212 192 171 188 195 191 +192 195 189 197 196 197 205 208 210 210 211 220 +228 226 217 216 216 213 210 210 213 212 196 191 +198 206 202 210 205 202 202 209 210 211 204 207 +209 216 217 210 195 197 205 202 195 198 187 199 +202 198 192 194 194 170 154 172 164 175 153 166 +164 194 196 208 215 201 205 215 210 210 204 205 +208 202 189 179 181 184 196 198 184 167 140 118 +89 105 110 86 78 95 85 89 106 96 93 85 +95 96 99 111 134 115 129 143 118 110 102 88 +86 134 136 104 111 150 167 141 134 164 170 174 +199 211 201 198 179 178 153 146 166 186 195 181 +148 140 124 128 104 103 96 155 185 169 180 178 +174 160 148 118 134 140 139 139 128 115 108 108 +131 135 157 151 200 188 179 188 159 113 103 121 +100 79 66 82 98 99 120 123 120 140 137 126 +121 126 120 125 126 136 133 109 103 108 95 90 +115 93 99 100 119 148 143 129 148 135 113 131 +115 93 95 84 87 127 108 123 114 116 134 144 +162 157 139 153 170 134 136 147 124 131 130 141 +162 141 134 118 107 55 82 56 65 102 141 159 +181 180 174 151 140 118 100 103 103 99 58 93 +93 67 92 68 37 67 128 104 87 110 147 154 +119 85 60 56 115 139 99 93 75 70 63 56 +111 119 137 130 125 140 198 202 196 181 133 92 +115 148 154 166 126 92 108 116 74 70 95 138 +168 88 64 104 144 184 168 215 220 187 144 157 +106 67 75 110 84 94 106 72 105 120 103 107 +100 161 164 134 104 57 60 64 52 60 62 59 +64 83 106 128 166 168 179 189 190 191 180 185 +167 125 123 160 181 185 186 196 189 184 191 200 +200 199 202 196 201 197 204 204 199 178 180 177 +147 149 127 158 187 190 195 197 180 196 212 212 +212 221 212 206 205 215 202 210 219 209 208 213 +207 216 212 201 205 202 194 211 211 217 226 227 +228 229 228 221 217 218 215 215 201 198 194 200 +204 196 204 195 192 194 172 153 143 149 143 143 +139 147 149 140 139 167 155 137 137 151 133 128 +124 125 125 135 127 128 131 124 126 129 123 125 +127 133 147 149 140 154 157 181 189 200 198 208 +208 177 167 161 160 159 158 162 155 147 155 151 +134 135 135 131 135 131 135 138 141 139 136 139 +129 128 134 128 137 138 135 129 133 128 124 160 +197 210 206 198 171 177 195 190 192 196 197 200 +204 204 202 207 213 210 223 230 229 229 219 216 +205 215 212 200 198 202 195 200 202 204 204 209 +204 208 205 216 222 215 206 211 204 211 215 215 +204 196 200 205 204 204 196 199 196 195 188 186 +170 147 130 153 162 168 172 185 189 201 212 204 +198 191 196 194 199 211 200 202 199 196 185 160 +175 178 189 195 189 176 159 125 98 82 99 107 +108 114 108 79 89 84 75 69 89 96 116 179 +177 146 139 106 94 73 94 103 146 157 175 164 +149 158 135 105 113 133 147 162 156 171 199 191 +174 181 188 156 157 147 143 169 178 167 151 143 +138 120 133 149 158 148 133 143 157 137 120 138 +146 150 165 188 204 204 171 134 166 137 145 189 +201 178 154 144 127 117 105 103 128 117 94 105 +72 70 87 78 87 145 179 192 175 179 156 138 +109 113 129 118 117 107 147 154 129 116 105 123 +175 170 153 102 108 108 105 88 89 111 109 111 +117 125 105 105 133 135 137 159 +159 141 145 151 +145 125 120 135 128 127 130 137 157 135 127 145 +148 146 99 70 84 95 151 157 161 175 166 145 +87 79 49 47 88 104 59 73 89 66 57 52 +60 66 109 134 130 103 77 48 49 56 59 125 +164 144 124 97 73 66 72 79 89 114 128 125 +187 202 172 155 166 162 168 120 121 154 141 134 +118 90 87 69 79 83 128 126 110 68 157 194 +172 127 170 175 133 96 96 102 115 169 165 125 +67 49 39 59 74 73 49 103 124 84 88 95 +94 139 111 126 70 65 54 92 70 88 70 117 +143 177 182 169 188 197 186 191 167 141 117 155 +182 189 178 186 190 190 192 191 189 199 206 205 +208 206 200 199 189 164 146 169 168 159 118 138 +181 191 199 199 204 204 196 196 207 218 216 220 +220 220 219 215 210 221 216 216 212 213 212 199 +200 197 196 197 201 220 225 220 222 228 229 226 +219 213 210 204 199 195 194 179 200 192 191 182 +178 191 174 157 190 188 156 187 178 182 154 161 +164 148 137 139 133 128 124 131 129 125 125 125 +124 123 129 123 129 130 130 143 131 145 145 149 +175 171 186 204 191 197 194 210 213 208 190 155 +164 172 157 153 159 145 145 149 139 128 135 129 +133 131 143 151 144 134 133 143 133 145 143 131 +130 138 140 131 126 126 124 179 201 220 207 192 +169 184 191 199 200 198 197 205 204 198 199 205 +208 211 223 231 235 229 210 211 206 210 211 201 +210 211 198 202 200 200 201 202 200 208 212 219 +217 212 208 197 195 209 208 209 205 200 199 201 +204 202 206 202 196 197 190 186 176 138 145 168 +160 170 172 179 201 208 209 207 200 197 197 196 +192 199 205 207 201 206 197 179 179 177 172 182 +177 165 143 117 98 98 88 83 120 127 125 114 +99 69 72 88 89 108 97 134 154 146 115 103 +107 133 139 151 149 196 219 204 161 136 116 128 +126 136 141 145 137 165 176 175 171 164 147 151 +179 182 181 181 191 198 189 181 153 145 155 139 +116 114 110 153 179 174 161 166 172 146 128 114 +109 119 121 135 131 127 126 117 140 170 184 182 +176 164 148 148 149 166 147 125 111 108 146 158 +165 164 121 113 130 139 138 145 126 96 106 120 +126 146 141 155 165 130 115 92 124 126 120 118 +123 108 103 102 108 111 98 92 105 82 88 104 +114 147 178 174 +118 131 145 146 147 146 151 172 +154 129 117 98 125 149 165 169 157 143 116 120 +96 80 74 78 68 63 76 92 107 119 117 77 +127 120 56 33 39 28 44 55 41 63 140 169 +156 89 89 100 79 102 104 103 84 77 83 110 +124 93 107 108 74 104 109 149 151 113 67 73 +109 105 104 150 157 148 146 159 102 80 65 54 +103 113 136 88 64 97 98 85 89 127 129 111 +139 182 146 100 167 166 85 47 56 57 65 120 +82 53 67 89 54 63 128 145 107 131 126 106 +96 98 114 111 89 82 78 114 130 135 170 176 +180 185 180 161 125 83 76 139 189 187 175 171 +189 194 197 185 191 196 192 199 211 210 217 208 +192 165 164 150 171 186 167 113 156 177 188 206 +215 195 200 211 211 211 219 219 221 228 221 219 +215 210 211 211 210 215 209 205 192 201 197 189 +201 215 219 219 225 225 232 229 219 220 209 199 +201 195 189 191 195 198 194 195 177 196 182 156 +212 210 159 155 143 144 166 178 148 137 134 136 +130 134 127 128 128 127 129 130 124 131 129 130 +134 141 133 135 135 159 149 174 197 184 194 178 +184 182 182 188 201 192 185 149 155 166 158 154 +165 151 135 134 135 126 131 129 127 130 140 135 +136 134 137 133 134 129 130 129 130 131 137 137 +130 123 126 187 207 210 201 195 181 190 192 199 +200 198 199 198 195 200 202 204 211 212 225 228 +230 221 210 213 215 211 196 208 217 200 195 201 +202 207 213 206 207 216 215 215 206 217 216 195 +198 199 202 212 200 199 197 197 201 190 198 204 +202 195 190 182 154 148 165 175 181 170 171 186 +210 215 204 206 202 190 202 199 192 192 185 197 +191 190 192 186 187 182 174 172 177 162 140 130 +116 138 125 117 111 77 98 114 111 114 120 99 +118 130 134 124 159 143 128 136 117 119 150 181 +161 118 144 174 188 168 107 109 116 108 129 125 +131 138 115 83 85 95 109 157 162 170 195 204 +196 197 199 181 157 134 156 171 161 172 177 194 +213 218 210 202 196 169 140 123 121 145 166 172 +160 165 145 113 106 105 107 139 164 148 154 140 +118 124 127 157 187 199 201 210 202 167 147 120 +125 126 124 118 108 98 120 145 123 103 97 88 +106 123 134 121 111 138 120 119 125 102 96 110 +111 116 127 105 85 110 115 105 124 128 147 148 +200 188 162 165 174 158 137 141 134 126 111 110 +125 130 140 153 154 135 155 168 136 123 95 108 +99 111 100 87 99 86 116 118 76 70 52 46 +58 32 37 45 52 52 83 95 128 104 83 104 +93 92 90 96 149 176 207 228 215 160 123 109 +128 129 161 130 89 69 85 108 82 86 123 115 +108 144 176 133 120 77 78 75 59 60 56 65 +85 65 68 99 126 134 151 172 168 161 130 195 +196 102 55 56 88 77 93 58 62 56 41 70 +86 171 177 93 60 106 115 117 85 56 73 51 +47 66 51 60 141 169 185 174 177 177 179 167 +160 125 87 144 178 162 165 162 188 195 200 194 +197 194 196 199 201 200 206 207 199 177 179 157 +158 185 184 125 145 175 182 195 199 188 204 206 +212 211 207 207 216 220 223 221 213 216 213 213 +204 209 213 217 206 194 195 202 211 219 223 219 +222 227 229 231 226 218 211 206 207 199 199 199 +200 198 205 194 186 199 190 161 211 195 162 147 +144 169 175 154 160 150 147 159 146 137 133 127 +121 130 127 130 128 129 130 126 136 138 135 133 +135 144 140 177 159 131 161 170 176 179 190 200 +196 191 184 167 145 156 153 154 151 153 135 135 +139 138 143 140 138 140 138 143 144 141 131 128 +131 124 129 144 155 139 135 136 131 129 124 194 +216 208 213 204 170 179 190 190 197 198 204 201 +204 196 202 205 199 215 231 232 227 219 204 204 +209 192 199 209 197 192 201 201 198 217 206 206 +210 201 205 210 204 211 220 213 206 209 207 210 +205 202 201 204 195 184 192 198 192 187 191 172 +159 176 178 185 189 171 179 191 198 207 212 209 +206 198 208 208 197 191 195 205 195 196 200 195 +192 197 182 179 182 147 117 96 116 108 98 102 +87 74 97 83 102 116 131 116 127 114 92 153 +170 154 139 102 99 120 141 135 148 146 137 95 +74 94 104 90 108 107 120 114 107 116 115 109 +117 116 115 111 148 157 162 153 153 145 171 196 +165 146 150 141 156 167 143 125 137 141 148 153 +155 180 181 172 169 188 192 201 197 200 196 151 +136 127 123 124 136 150 136 120 117 125 131 143 +123 125 141 117 149 171 149 141 118 96 102 102 +88 115 115 93 107 107 95 103 94 99 127 148 +144 127 137 127 131 128 117 119 102 110 110 116 +129 109 135 130 134 136 141 150 +176 194 170 148 +178 174 136 129 96 127 153 116 123 104 106 115 +130 156 133 137 138 126 114 115 102 105 82 79 +104 140 125 103 77 56 73 59 69 85 74 43 +59 66 68 52 48 42 96 125 107 79 66 107 +154 192 204 178 150 139 114 77 87 110 114 97 +68 57 49 55 46 60 51 100 170 174 160 130 +107 46 34 45 34 46 63 82 93 133 140 100 +76 98 94 118 105 127 197 212 190 107 84 137 +182 98 49 78 77 42 67 114 167 125 76 63 +108 149 146 118 107 139 128 68 44 54 55 95 +160 157 150 158 185 196 197 190 174 138 84 139 +177 174 178 182 185 189 198 199 202 202 206 204 +202 215 208 213 218 198 179 175 162 138 171 146 +164 170 186 196 200 196 197 201 207 200 206 215 +212 216 215 221 227 227 225 221 205 196 204 213 +201 198 194 195 200 220 218 221 221 217 228 231 +222 217 218 211 212 202 189 194 201 181 194 197 +185 196 197 158 191 182 157 169 165 150 144 167 +147 141 150 143 133 131 128 129 136 133 125 128 +128 127 133 131 131 129 131 127 140 168 168 161 +162 139 155 179 191 198 215 211 172 166 184 190 +179 164 158 150 144 170 162 155 154 143 130 134 +133 146 141 136 141 137 136 130 126 125 128 133 +130 126 128 137 134 124 137 187 196 215 219 194 +177 190 195 194 200 202 198 202 201 207 207 201 +196 220 233 231 228 213 212 216 201 199 201 200 +196 199 204 201 209 215 208 207 200 200 205 213 +212 211 220 215 205 202 209 208 200 199 201 198 +200 200 198 198 194 182 174 162 150 180 174 192 +189 186 191 194 201 208 216 221 213 202 205 202 +198 194 194 188 192 189 189 192 192 192 185 185 +189 177 144 125 97 94 87 68 83 90 87 107 +106 111 125 133 118 108 88 93 120 129 186 196 +170 121 100 78 92 94 83 64 83 92 76 104 +103 95 117 119 141 158 171 155 180 187 168 128 +110 143 139 128 147 157 130 140 151 135 185 190 +175 169 188 164 127 105 141 125 111 131 167 179 +188 201 181 178 166 151 143 128 137 113 100 110 +133 167 185 172 145 153 166 123 118 104 124 117 +105 127 116 108 110 110 98 98 114 109 90 114 +111 145 131 113 113 108 120 139 156 160 137 127 +127 117 105 106 108 109 123 123 131 117 121 134 +119 126 127 129 +157 138 118 94 94 117 143 165 +169 166 174 156 139 149 135 141 136 97 123 124 +119 120 154 130 108 124 98 60 70 75 87 68 +58 69 79 96 148 188 181 153 76 41 32 26 +38 38 47 53 33 31 55 74 151 167 102 79 +110 110 116 76 123 100 79 68 51 55 49 48 +72 57 83 106 83 68 49 41 42 55 53 106 +180 179 169 160 160 169 146 84 69 55 62 56 +83 155 178 135 95 108 133 180 115 60 90 100 +118 140 145 139 84 48 49 52 67 64 58 78 +128 92 75 41 42 56 64 70 133 158 166 182 +196 204 205 196 195 146 92 113 158 174 172 175 +176 174 187 187 189 200 195 197 204 201 202 200 +198 200 179 174 184 176 180 157 172 170 188 201 +200 204 202 208 212 216 216 219 218 217 216 220 +213 213 218 219 207 201 205 211 206 199 191 202 +199 202 212 223 229 222 231 230 227 225 225 216 +210 204 206 204 200 195 191 201 191 202 191 146 +174 158 147 147 174 165 153 141 145 137 141 136 +136 127 126 123 126 125 124 131 124 121 126 135 +128 147 134 121 130 145 143 138 144 154 182 189 +195 188 195 211 194 182 210 206 188 176 182 164 +147 156 161 161 153 133 128 134 134 140 136 129 +129 130 130 130 134 126 133 133 131 135 143 135 +140 129 135 190 205 215 208 197 181 189 200 197 +197 208 206 204 199 204 199 202 207 223 229 228 +223 216 212 215 210 196 186 195 194 194 207 205 +204 206 207 207 210 209 216 211 219 213 218 212 +210 206 204 197 199 202 195 195 205 208 207 198 +197 191 182 144 158 205 186 198 195 189 190 206 +206 201 201 201 205 198 197 197 198 194 182 188 +190 185 178 181 179 177 179 178 169 128 111 110 +127 117 78 72 69 64 82 64 74 110 114 74 +82 66 55 73 80 116 159 207 209 215 196 147 +124 128 119 94 64 85 106 118 109 95 115 121 +128 134 180 185 190 215 215 195 169 154 135 124 +143 160 189 187 175 153 147 172 195 189 200 196 +175 141 138 131 104 110 121 113 110 140 161 149 +154 150 158 174 170 146 117 94 131 151 158 181 +186 165 139 124 92 80 84 80 84 57 82 67 +79 108 110 136 134 125 123 116 111 94 114 120 +113 107 96 107 110 114 104 94 109 108 106 92 +105 111 124 128 118 131 129 125 123 108 136 145 +137 115 106 128 118 120 110 113 146 167 165 149 +133 95 134 172 179 149 120 113 114 117 125 110 +84 64 60 48 51 39 42 36 37 56 64 78 +126 121 99 80 72 39 46 62 60 51 43 36 +69 75 108 107 105 84 75 87 88 120 99 69 +84 58 43 44 60 82 69 110 98 120 75 83 +89 72 109 74 63 72 80 144 157 121 133 100 +75 80 94 109 121 76 44 74 93 116 108 123 +136 165 174 105 47 77 97 150 135 129 98 59 +68 72 60 69 53 67 60 77 65 57 52 82 +54 53 53 48 114 147 157 178 198 188 169 167 +179 151 127 82 124 158 158 176 192 189 187 192 +201 209 204 196 197 198 202 208 194 195 172 171 +194 184 169 166 170 138 154 177 195 201 194 196 +210 210 208 213 210 211 210 211 219 221 217 218 +221 210 207 208 205 194 190 191 195 200 202 223 +230 222 226 226 228 223 217 208 202 213 207 198 +199 199 199 199 186 195 185 137 144 158 149 137 +157 145 159 154 174 156 150 136 137 131 139 129 +128 128 131 128 129 129 135 131 141 144 136 133 +143 146 133 144 148 156 177 202 195 182 191 199 +195 201 207 189 159 164 148 169 146 154 167 159 +146 135 129 133 125 140 149 145 133 134 143 137 +127 129 128 129 126 146 149 134 138 130 123 194 +210 217 219 197 178 190 196 191 201 204 202 206 +202 210 211 208 216 227 230 235 231 222 205 212 +207 187 205 192 190 202 206 208 207 205 208 211 +211 211 221 212 211 215 217 206 210 211 212 201 +200 195 200 204 201 202 205 189 181 176 161 146 +160 194 177 187 189 189 198 204 210 212 196 202 +211 201 204 211 199 196 190 192 188 178 185 191 +192 177 179 167 146 111 121 123 105 94 60 88 +70 63 64 74 92 92 73 69 72 90 92 111 +124 87 92 95 125 168 176 143 114 135 145 145 +125 137 138 124 161 171 189 171 154 134 133 150 +150 167 199 217 206 174 154 135 141 133 134 145 +174 187 158 124 141 149 155 201 207 165 127 109 +134 123 109 117 128 115 104 117 115 133 147 131 +146 176 180 187 178 146 139 147 113 114 127 131 +106 85 97 74 74 94 73 84 65 88 123 108 +160 157 133 92 97 121 134 154 151 126 113 87 +116 134 128 130 136 123 121 127 111 124 129 117 +116 111 115 117 119 138 162 169 +118 110 106 102 +96 79 67 45 60 80 126 145 144 136 139 145 +133 135 123 128 121 103 100 85 65 67 68 59 +47 58 55 58 131 170 212 219 192 111 48 53 +29 47 56 49 67 47 77 56 51 65 64 84 +90 96 137 174 194 199 175 145 167 146 94 117 +111 99 75 65 62 64 118 174 139 83 114 83 +59 64 69 68 82 78 66 92 82 62 63 52 +47 48 84 116 88 72 109 129 107 135 105 98 +69 99 162 169 69 66 73 128 151 107 65 54 +52 68 100 75 67 106 162 113 52 43 29 59 +134 151 157 186 194 192 185 171 179 146 113 73 +125 174 161 170 189 185 187 187 191 201 197 199 +204 201 208 207 202 199 187 180 168 171 160 161 +158 125 150 187 199 194 190 192 197 207 207 204 +209 209 205 217 216 220 226 217 207 211 213 208 +206 200 192 188 197 201 200 221 226 218 220 221 +223 230 222 216 212 213 202 196 206 201 206 202 +197 200 168 129 134 153 159 147 138 149 171 154 +164 136 137 151 136 133 126 129 121 123 124 143 +128 125 137 138 127 127 138 139 158 153 137 169 +159 153 171 195 187 177 197 213 219 213 209 192 +166 148 160 172 147 148 144 158 151 141 140 138 +133 133 147 147 143 140 129 131 130 127 127 135 +137 134 149 133 126 130 131 198 212 211 208 192 +171 188 195 201 205 197 196 197 205 210 211 213 +217 223 229 228 223 217 207 217 206 202 202 195 +197 197 195 202 206 205 211 207 208 220 213 207 +209 208 207 210 206 196 205 204 197 200 202 201 +204 201 204 199 185 168 154 171 178 198 184 182 +187 180 206 219 223 209 197 204 197 196 198 197 +196 194 192 190 184 187 196 201 197 185 185 164 +126 118 105 116 111 89 76 83 95 67 70 77 +73 96 90 84 105 124 166 206 201 159 110 100 +116 116 131 162 196 181 147 116 128 126 118 126 +118 114 106 129 170 156 146 119 111 135 202 218 +223 206 158 128 140 144 159 185 194 164 141 134 +100 103 127 133 188 200 194 168 141 134 105 93 +100 118 92 85 96 102 135 131 116 135 131 124 +131 145 129 148 162 133 111 93 131 148 109 111 +109 107 117 88 92 107 96 128 162 192 176 151 +118 121 127 120 136 141 156 138 128 124 135 144 +135 139 145 169 160 126 118 113 90 127 108 110 +106 116 126 137 +67 63 84 100 110 96 126 119 +105 79 43 79 72 93 150 190 192 179 144 121 +125 130 111 78 39 34 45 35 44 32 43 74 +96 139 145 149 131 111 107 119 85 87 116 113 +114 75 64 34 23 23 53 46 47 106 110 88 +102 102 124 149 99 83 117 99 66 59 31 76 +100 130 147 136 106 140 116 104 118 117 123 114 +87 87 113 111 67 64 75 60 65 113 123 97 +109 95 85 96 96 68 95 121 89 145 164 125 +83 73 90 149 72 46 60 43 65 80 94 79 +79 111 107 87 38 48 41 49 113 146 161 180 +188 189 186 180 174 150 113 95 115 161 159 164 +182 189 196 189 194 197 195 201 198 200 206 198 +205 209 192 180 179 169 160 174 159 161 151 181 +192 190 188 188 198 215 210 212 209 210 213 220 +209 212 216 216 211 208 210 209 207 194 189 176 +185 204 210 210 216 217 223 230 230 223 223 225 +216 216 209 196 200 197 190 198 200 194 164 134 +143 154 147 164 192 195 178 149 135 140 148 160 +135 129 127 133 127 128 127 145 134 127 129 125 +121 133 153 144 135 139 147 172 161 171 176 190 +189 180 188 199 195 197 196 176 154 155 155 174 +156 134 138 141 149 137 138 136 136 133 146 146 +151 138 140 158 159 144 131 128 135 126 136 127 +135 135 131 187 197 201 204 180 177 194 201 213 +201 195 197 200 205 200 208 210 217 228 229 223 +223 222 202 210 208 205 194 192 198 202 206 208 +213 207 207 209 213 211 220 220 220 215 212 213 +208 204 198 205 209 206 207 208 199 200 207 196 +188 177 170 191 187 202 192 190 189 190 212 229 +215 206 199 198 192 195 191 199 202 192 190 184 +182 186 197 198 199 177 174 168 143 144 133 117 +117 137 84 68 73 83 98 67 85 79 98 126 +141 133 135 124 102 103 134 157 186 194 196 187 +171 165 141 154 169 165 153 124 129 115 115 137 +141 168 207 197 167 134 121 133 170 207 202 201 +196 166 189 191 190 211 190 145 131 88 84 104 +83 114 139 157 139 123 102 108 117 111 98 96 +78 83 79 125 126 116 135 125 95 84 80 82 +128 148 106 93 90 110 127 111 124 141 143 161 +178 167 123 92 69 108 154 151 149 149 147 130 +127 146 145 128 138 146 130 110 143 156 150 151 +134 150 141 126 102 117 125 137 137 121 124 125 +104 86 68 84 76 64 82 90 117 90 80 68 +76 79 76 95 116 151 150 153 153 140 104 62 +79 72 98 98 69 80 121 146 164 161 137 131 +111 96 92 58 58 51 64 59 45 42 39 31 +32 65 70 77 119 119 108 115 123 138 115 100 +102 56 97 84 96 75 73 98 73 92 78 73 +111 136 148 167 168 141 133 127 168 189 143 94 +99 90 87 106 105 102 67 87 65 79 117 102 +84 67 98 90 110 94 52 54 53 100 129 124 +85 99 99 60 65 83 59 37 48 39 34 32 +27 39 43 51 98 150 178 184 192 184 167 178 +177 184 150 99 89 144 165 171 179 184 185 179 +178 186 201 201 195 199 197 208 212 194 181 169 +184 169 127 161 167 174 140 140 159 176 197 202 +198 210 216 218 213 219 221 215 216 213 215 217 +208 210 212 205 202 207 199 196 195 196 210 218 +219 212 211 223 231 227 222 219 223 221 208 200 +198 194 197 199 174 191 165 129 140 139 148 165 +187 188 177 156 144 133 137 138 128 129 128 131 +127 126 128 133 128 124 127 124 123 135 135 134 +128 136 151 172 179 175 178 182 176 181 181 196 +189 168 169 167 138 138 141 158 149 146 145 145 +156 139 149 134 134 146 147 137 153 145 134 133 +136 139 127 131 140 149 145 141 139 149 129 176 +205 222 218 186 186 192 198 213 207 196 198 199 +210 207 204 207 220 229 226 225 227 218 200 213 +210 204 194 188 199 205 207 212 210 202 209 213 +202 209 221 219 223 222 217 218 218 208 202 206 +208 208 206 207 204 204 194 184 179 155 149 172 +175 201 202 182 195 206 211 219 217 215 209 221 +206 202 201 204 200 190 178 180 189 187 191 192 +198 182 182 168 136 118 114 123 98 83 100 98 +106 102 68 51 62 79 103 83 69 104 113 98 +102 93 106 118 124 127 135 119 110 126 144 180 +213 195 177 139 130 127 115 115 99 116 119 119 +134 144 145 136 146 139 134 150 141 120 119 135 +150 171 176 167 130 124 107 107 113 119 117 108 +87 76 96 102 177 164 114 113 102 111 113 119 +137 144 136 165 146 115 90 98 97 125 138 124 +104 93 77 79 84 105 110 117 116 137 129 109 +107 96 111 148 160 155 138 123 140 136 128 103 +110 124 128 141 158 141 125 131 113 123 129 107 +109 105 123 139 128 131 126 114 +92 74 113 138 +133 108 60 57 102 79 104 136 181 196 190 137 +159 180 195 184 148 93 60 57 47 56 48 65 +48 54 59 58 86 66 53 51 51 45 36 39 +56 85 85 59 31 42 56 85 77 83 104 134 +135 159 156 172 169 116 90 120 107 76 72 73 +96 83 90 92 56 39 65 69 87 105 94 94 +82 103 162 201 184 116 76 116 98 109 93 97 +66 62 83 108 143 143 139 89 44 48 39 55 +72 42 49 73 120 154 120 84 100 86 69 99 +123 92 60 34 37 25 48 43 52 66 53 54 +130 161 161 171 174 175 194 205 181 176 156 125 +102 110 149 162 177 176 175 177 170 172 191 196 +194 198 201 205 199 209 202 197 189 179 169 180 +194 192 176 153 148 180 200 196 198 208 206 219 +221 220 212 216 213 215 219 221 210 208 212 210 +205 202 198 201 195 189 218 222 221 226 217 208 +218 228 223 221 221 211 202 199 207 200 195 194 +188 199 172 130 136 149 146 149 168 170 159 143 +141 133 138 130 126 127 123 127 128 126 129 130 +128 129 131 130 124 128 125 128 134 141 159 168 +185 182 159 150 156 162 174 194 184 166 191 190 +162 144 147 143 148 140 137 144 161 135 138 133 +136 141 135 131 130 135 124 128 130 134 127 131 +139 144 137 137 139 147 150 187 212 219 212 184 +182 195 204 202 201 202 204 196 202 199 197 211 +226 228 228 221 219 212 199 196 201 187 189 202 +212 212 205 212 210 208 210 208 210 215 216 226 +223 213 216 218 212 205 209 211 208 208 209 209 +201 201 205 189 166 127 141 161 153 181 176 171 +195 206 208 204 207 215 216 218 210 215 209 212 +204 194 184 185 189 196 191 181 188 179 166 156 +140 123 102 86 60 94 109 99 100 96 93 88 +82 153 118 80 85 105 159 187 180 140 130 119 +118 134 120 121 140 174 207 210 170 161 191 180 +169 167 186 188 188 150 146 130 107 110 99 94 +100 90 89 85 94 77 79 90 104 129 166 180 +187 171 144 118 96 113 127 115 97 105 86 83 +127 188 210 209 196 204 196 168 111 118 128 159 +178 151 115 96 98 102 114 136 120 118 113 151 +170 184 181 144 118 128 117 137 144 114 120 128 +127 123 143 111 137 153 141 121 124 116 117 115 +124 119 113 116 135 161 165 149 134 127 115 109 +108 111 128 126 +76 84 82 120 146 148 127 115 +128 117 92 133 145 140 164 158 147 130 126 102 +116 133 128 110 106 64 69 64 87 93 66 49 +56 90 93 114 110 77 46 56 54 115 135 161 +157 125 69 67 70 63 66 62 77 83 88 100 +85 80 80 97 115 80 83 73 57 94 76 36 +46 47 63 57 41 48 70 58 109 140 166 156 +105 114 139 105 75 73 64 53 63 73 92 134 +100 73 52 52 39 53 98 146 149 143 116 94 +75 67 64 89 57 102 177 154 149 108 67 65 +43 42 42 41 48 47 53 47 110 156 149 166 +174 182 184 188 194 186 166 130 119 117 164 164 +169 171 184 195 185 190 208 208 218 202 205 194 +206 213 198 201 196 172 196 198 182 172 178 161 +146 172 187 195 201 210 208 218 222 216 215 211 +212 215 209 216 215 201 197 211 202 207 200 192 +188 186 195 220 223 218 215 218 218 221 226 226 +221 219 206 192 205 205 201 207 191 198 168 125 +130 135 162 165 164 153 184 150 137 137 135 131 +130 133 126 127 128 126 123 131 137 136 129 138 +130 137 133 141 150 147 162 174 177 166 139 151 +160 155 175 190 178 165 185 199 179 157 164 156 +148 141 131 131 139 137 139 140 138 137 136 143 +145 140 131 130 134 135 130 131 130 134 133 141 +143 134 146 182 204 206 202 182 186 198 198 204 +201 200 201 199 200 205 199 209 228 229 226 216 +216 208 198 207 191 190 199 202 211 216 207 212 +212 211 207 213 223 219 229 225 221 227 223 211 +208 200 209 216 207 197 201 205 202 190 200 186 +154 134 174 182 176 181 175 189 204 210 213 208 +210 210 213 206 206 204 209 212 199 202 192 186 +191 199 189 192 192 174 161 146 125 93 94 65 +59 86 108 111 84 80 74 66 138 161 129 121 +100 92 92 106 136 182 192 184 177 124 103 95 +104 181 196 169 118 114 130 149 146 145 137 125 +87 87 106 103 87 99 98 127 146 131 137 143 +114 109 93 82 111 119 144 140 148 149 184 186 +161 150 158 120 125 134 104 86 105 96 133 156 +153 182 206 210 162 102 89 119 141 151 157 117 +97 134 137 134 121 121 165 169 162 145 187 197 +172 154 144 128 123 99 113 115 135 124 118 106 +92 104 136 126 115 119 135 114 131 144 143 145 +147 171 176 170 155 147 148 146 127 107 105 147 +104 109 83 80 79 128 167 185 197 189 180 169 +150 131 111 109 103 109 93 66 75 85 115 105 +119 121 118 108 99 96 103 100 138 154 139 140 +131 75 49 60 45 67 79 92 109 74 57 84 +74 94 80 118 123 143 124 143 124 58 78 117 +146 177 181 164 127 96 79 77 84 98 107 117 +133 111 82 130 162 179 158 111 126 128 98 62 +65 58 68 105 123 118 80 70 59 65 59 49 +62 66 125 97 69 98 70 47 36 47 73 69 +90 144 125 103 97 103 107 88 48 43 42 36 +47 55 56 67 82 139 155 176 188 201 190 182 +196 190 184 158 146 119 135 167 178 181 184 188 +184 192 201 205 207 208 202 198 206 207 204 197 +189 168 165 178 185 162 157 170 164 169 184 195 +198 215 217 213 223 220 222 219 209 212 217 212 +211 212 209 209 208 207 199 195 197 188 198 207 +222 223 218 213 228 227 220 219 225 220 205 191 +199 197 199 205 189 181 172 141 130 134 164 165 +138 136 144 139 144 139 130 127 125 125 126 129 +128 130 130 133 144 135 133 125 125 127 143 147 +149 155 154 165 167 149 131 133 157 176 184 202 +204 172 181 188 171 169 160 162 156 151 151 161 +144 133 146 137 137 131 140 136 140 140 130 131 +136 133 130 136 137 133 140 141 134 127 145 184 +212 217 204 181 184 189 196 202 197 198 197 198 +204 207 200 220 232 230 222 221 223 206 204 202 +198 198 205 207 208 201 205 207 208 215 217 223 +226 227 225 223 227 226 226 215 205 201 208 213 +217 217 200 207 205 189 174 166 156 154 186 194 +188 195 194 190 206 199 208 212 210 206 217 211 +210 210 208 204 191 195 188 180 184 195 192 190 +186 182 171 145 124 100 109 127 124 70 62 58 +62 58 68 67 116 137 134 170 148 108 118 129 +126 134 114 105 103 109 151 145 141 109 128 150 +127 114 103 110 119 130 120 117 111 88 90 70 +88 99 108 161 169 154 147 179 143 154 167 185 +188 171 156 150 172 166 161 175 178 145 129 125 +123 104 120 129 147 146 157 160 139 108 96 136 +151 137 125 148 158 169 188 155 117 115 131 123 +141 123 97 110 131 135 140 175 192 162 140 127 +129 105 92 117 111 124 125 105 107 85 80 108 +117 98 111 127 133 131 141 168 177 178 185 180 +166 160 161 160 143 130 126 102 +131 121 108 90 +100 104 111 99 103 111 102 117 115 113 125 125 +133 117 89 92 107 92 75 80 106 160 184 185 +208 216 207 170 127 90 86 94 106 123 164 157 +103 66 68 78 77 66 68 66 65 102 126 145 +110 96 106 135 128 85 86 78 118 134 131 137 +123 84 117 151 150 118 135 123 104 128 114 128 +162 150 129 143 134 106 97 97 65 78 78 99 +123 118 98 49 48 52 72 69 51 49 55 64 +64 76 64 58 70 66 58 79 90 79 84 121 +124 106 102 59 73 57 55 49 49 42 39 43 +73 162 161 175 185 197 194 194 192 186 186 157 +140 125 107 140 175 180 181 184 191 195 198 194 +195 207 211 205 211 208 209 215 198 186 182 187 +186 166 167 169 170 158 185 192 200 199 201 208 +213 216 225 219 205 216 215 210 208 212 215 210 +202 197 199 196 186 188 201 199 222 228 227 211 +221 225 216 220 216 222 212 196 196 199 197 205 +195 188 172 129 124 125 131 138 139 153 166 145 +139 127 129 128 131 134 126 133 127 128 131 133 +128 128 129 126 124 128 133 144 128 141 144 148 +159 159 157 197 197 177 200 197 204 205 195 207 +188 164 148 147 147 144 153 162 137 140 138 133 +144 149 143 135 136 145 134 135 134 134 133 134 +133 128 141 150 157 127 144 189 206 218 215 182 +187 197 204 200 201 204 199 201 208 202 206 226 +230 225 219 223 226 209 204 199 204 204 202 205 +201 205 209 201 213 219 216 223 226 221 219 222 +219 215 212 204 206 209 211 220 228 225 206 207 +197 187 175 156 160 175 171 174 171 184 200 202 +200 188 218 219 216 219 216 210 208 208 202 207 +201 199 196 199 201 197 192 196 194 171 153 141 +146 118 90 78 94 110 119 148 113 82 57 59 +77 62 65 72 79 95 113 145 126 100 84 82 +95 90 120 139 155 128 121 130 136 121 143 164 +179 157 139 121 118 124 120 116 138 147 113 108 +134 149 118 127 124 137 154 165 180 189 162 145 +166 176 172 156 167 181 188 187 194 191 135 104 +109 86 126 159 179 150 135 147 139 117 96 95 +94 92 97 117 96 100 93 107 94 110 105 107 +105 116 126 110 139 141 115 92 94 93 95 100 +105 125 138 99 119 115 102 113 107 102 106 102 +111 123 127 130 148 162 155 145 148 136 146 129 +131 133 119 96 +139 127 110 126 127 103 99 78 +55 65 69 60 72 76 68 83 93 106 86 74 +72 106 110 94 99 116 124 138 165 175 166 140 +104 73 66 135 167 168 159 102 60 70 124 148 +130 125 49 39 49 69 75 73 88 110 151 165 +154 95 109 133 110 85 94 78 63 80 110 99 +82 117 149 153 108 100 107 110 174 200 213 192 +176 190 204 210 186 115 120 135 130 88 55 44 +46 52 43 55 45 29 37 51 100 72 66 67 +72 58 64 65 113 111 77 87 86 75 69 78 +94 87 56 48 58 45 41 65 90 158 178 175 +188 196 197 200 196 197 182 168 157 130 83 130 +164 164 176 177 185 191 194 196 205 204 199 205 +210 202 210 212 196 191 199 200 164 191 192 182 +188 159 178 194 195 204 211 207 205 215 217 217 +221 215 215 218 207 200 206 199 204 207 201 202 +196 188 197 216 211 219 227 218 218 230 226 220 +218 220 215 202 209 195 199 197 186 162 158 123 +121 136 133 126 129 145 139 140 137 133 131 127 +124 127 127 127 128 127 134 148 133 131 130 129 +118 124 127 133 130 133 136 146 159 168 170 177 +150 161 166 166 181 196 202 199 195 174 158 150 +143 143 145 141 131 136 135 133 137 141 140 136 +135 139 134 128 135 134 129 130 135 130 138 162 +157 138 145 187 209 216 201 185 186 196 196 208 +210 208 209 207 205 208 206 223 227 225 218 223 +213 201 200 198 190 201 202 204 209 222 219 212 +207 216 222 221 220 230 229 218 213 208 201 206 +208 209 222 218 213 217 215 199 196 180 139 135 +176 185 184 184 147 184 202 206 205 205 212 213 +216 201 205 204 197 210 209 200 195 200 202 206 +210 204 198 200 197 172 154 121 120 116 104 78 +88 75 76 119 109 86 96 93 97 85 60 76 +78 99 103 92 63 77 77 77 85 117 164 162 +147 130 118 138 140 143 143 137 178 190 195 166 +155 181 176 148 156 186 161 145 135 133 185 210 +206 192 148 130 169 154 138 176 198 200 194 159 +141 148 120 103 100 114 146 139 120 106 79 133 +172 150 114 100 174 189 174 127 88 108 120 110 +79 79 84 87 110 95 111 115 128 128 113 121 +108 109 99 72 85 80 90 85 89 121 134 157 +186 182 143 107 129 104 102 111 96 104 120 119 +109 117 150 143 144 128 120 131 127 130 114 118 +168 184 166 153 124 123 97 96 102 98 78 66 +74 78 87 84 80 96 99 108 106 65 70 56 +68 125 131 127 107 93 96 66 68 36 42 65 +62 52 44 47 67 126 150 147 110 72 58 76 +64 76 94 114 157 161 126 80 105 117 144 125 +83 120 149 141 102 82 93 94 115 114 80 67 +36 63 82 115 167 165 148 128 111 137 114 114 +96 64 98 147 126 66 95 156 102 54 31 62 +72 45 38 45 43 42 34 47 48 52 89 105 +109 118 108 94 87 87 72 51 66 70 57 64 +97 106 127 83 69 144 179 182 184 181 178 180 +181 198 188 180 161 133 95 140 176 178 179 180 +174 180 186 187 195 187 189 204 209 204 208 202 +207 202 179 191 184 197 187 188 188 174 175 192 +197 207 210 213 216 218 216 225 223 221 218 213 +205 200 205 201 206 204 205 204 199 191 185 200 +218 220 217 216 223 225 221 217 208 211 216 196 +205 202 200 195 175 149 159 134 128 131 131 133 +148 155 157 140 149 134 129 128 129 129 123 128 +129 129 156 169 154 136 129 129 124 131 133 131 +123 140 149 145 150 159 169 156 158 158 162 166 +165 160 168 168 160 159 149 167 168 146 141 138 +146 139 136 134 137 131 136 130 138 128 128 130 +131 127 128 131 129 129 128 136 160 162 155 197 +209 205 207 182 186 191 201 204 202 201 202 202 +207 209 212 229 232 229 219 212 216 201 201 207 +197 195 204 206 211 211 212 211 209 213 225 218 +226 227 222 226 227 220 218 218 206 216 226 212 +204 215 209 198 190 181 151 140 161 180 165 187 +177 200 198 201 210 206 208 213 205 209 217 210 +201 210 206 192 197 195 201 207 207 200 204 194 +188 176 151 144 114 120 84 58 54 57 83 83 +79 85 90 77 76 99 92 94 98 95 97 107 +94 72 64 64 76 116 130 154 189 186 175 172 +127 116 113 129 126 149 188 208 196 151 157 160 +143 135 138 153 141 138 144 170 168 189 197 174 +146 137 145 141 143 147 158 146 133 139 136 136 +131 104 102 111 104 121 128 114 128 120 119 116 +86 116 164 170 164 158 143 119 116 67 82 140 +156 141 107 108 110 109 118 106 88 77 87 77 +79 79 84 105 104 98 136 130 170 169 138 123 +129 104 109 116 106 115 124 102 104 105 108 140 +153 147 148 150 145 141 125 102 +139 134 141 160 +144 123 116 114 97 103 92 108 131 125 150 106 +90 90 95 95 85 93 143 145 133 127 109 72 +73 83 114 110 66 78 63 76 105 126 114 103 +114 113 84 83 67 102 125 131 94 75 87 93 +105 85 57 73 68 104 75 82 82 84 119 158 +178 161 106 83 95 47 25 31 24 32 74 121 +129 129 131 124 125 126 136 120 85 94 98 120 +106 98 167 113 77 73 53 49 65 65 45 48 +88 44 60 41 46 55 69 94 107 137 111 79 +59 60 51 46 44 56 49 57 62 59 38 32 +44 125 154 161 171 169 185 199 194 192 188 162 +141 140 106 93 159 169 155 170 162 179 185 191 +190 199 197 200 199 205 204 196 205 200 196 171 +172 197 187 187 188 174 181 190 191 192 205 211 +212 219 213 217 219 219 215 216 212 197 204 210 +198 208 211 197 195 192 184 195 219 209 208 219 +219 222 216 207 211 205 207 198 205 199 197 202 +185 165 170 137 134 135 138 146 147 161 145 143 +129 126 124 126 130 124 123 120 124 125 129 134 +129 127 135 141 133 138 141 130 133 140 158 158 +168 171 179 162 157 140 162 160 172 175 175 170 +141 147 141 145 150 164 160 138 138 138 134 129 +138 138 144 138 146 138 133 138 131 128 129 127 +125 129 127 138 149 134 153 204 211 213 207 171 +184 194 202 202 204 198 200 206 209 210 219 226 +232 228 212 208 216 212 208 198 192 201 208 201 +209 210 201 205 210 217 226 225 226 225 225 226 +227 226 212 219 210 212 219 213 202 204 202 195 +186 176 162 171 169 178 160 174 174 207 217 207 +207 208 202 211 215 211 208 209 206 205 208 204 +200 196 195 196 205 196 194 196 188 168 143 123 +106 84 85 64 59 59 75 98 93 75 72 104 +97 119 116 103 86 100 74 80 97 85 119 139 +117 121 155 151 129 150 153 150 141 137 135 141 +167 154 160 149 158 160 143 134 140 147 164 180 +184 168 129 127 123 119 116 131 141 154 143 130 +127 153 140 124 144 117 111 119 115 119 115 115 +133 149 156 109 77 95 103 102 114 78 78 110 +150 149 158 135 97 114 117 96 98 102 107 100 +79 84 109 110 121 118 115 92 107 90 97 108 +119 121 129 139 110 114 121 119 115 117 126 110 +127 169 170 155 117 115 96 115 127 130 135 115 +119 126 117 118 +164 138 110 118 118 121 113 133 +124 123 135 124 159 188 206 186 135 94 110 82 +68 92 136 134 136 117 63 48 48 44 73 66 +57 67 60 78 105 75 82 83 70 118 139 103 +123 115 74 63 47 44 55 63 43 57 63 70 +89 78 83 110 124 124 143 168 157 106 58 47 +44 44 54 53 67 117 105 72 42 64 59 107 +95 100 98 118 138 99 136 145 175 187 146 95 +103 151 149 93 66 85 129 144 128 88 45 44 +47 53 59 69 80 79 69 72 65 52 45 53 +37 48 34 44 51 53 27 26 39 130 155 146 +178 179 186 198 194 190 185 164 145 139 118 100 +150 182 177 185 186 196 195 195 196 192 197 196 +187 199 207 211 212 194 187 182 153 165 165 185 +171 145 167 176 187 195 208 212 216 220 210 207 +215 211 219 222 215 205 198 204 200 206 202 195 +194 186 177 195 215 220 209 220 222 221 221 210 +213 206 198 197 207 202 195 194 190 172 162 131 +134 127 137 149 149 143 155 153 131 135 127 121 +129 129 123 126 125 128 128 129 129 133 133 140 +135 131 135 141 145 143 157 166 179 168 172 168 +162 165 172 180 191 198 201 185 149 148 164 156 +144 158 148 139 137 137 138 133 137 135 135 141 +140 141 137 129 126 125 126 126 129 134 134 134 +129 125 144 205 223 217 206 180 170 194 206 198 +200 206 205 208 210 212 221 231 229 221 219 215 +199 211 202 195 191 205 208 206 217 217 208 211 +213 218 223 226 223 219 227 223 223 226 223 227 +217 212 209 205 208 208 194 194 188 160 146 178 +172 175 153 158 180 205 217 209 202 208 206 213 +212 206 210 208 207 208 204 197 204 204 199 197 +196 186 188 189 186 159 131 134 119 104 115 116 +100 66 68 70 77 64 87 121 96 86 69 83 +86 83 94 84 110 164 166 124 100 87 83 102 +141 141 146 144 136 124 148 144 194 202 184 195 +169 133 128 125 119 103 96 119 169 169 134 124 +127 154 145 134 135 160 169 164 143 140 161 146 +151 171 124 116 127 124 129 151 140 159 176 135 +109 102 109 130 136 102 84 64 69 90 89 99 +95 97 146 171 171 175 175 157 109 92 97 96 +108 100 118 115 123 110 96 105 115 105 93 102 +92 79 106 96 124 134 135 137 109 123 162 155 +126 115 120 118 126 115 130 140 100 110 109 126 +120 121 127 129 157 158 154 133 143 143 149 150 +123 130 157 168 157 143 115 113 100 86 97 96 +105 111 76 37 26 16 32 37 27 27 47 43 +43 48 43 76 123 130 139 97 93 88 74 64 +51 64 64 95 103 98 114 127 117 141 159 176 +166 164 169 117 96 93 94 73 105 95 92 79 +128 159 113 115 47 65 94 76 69 94 178 171 +147 108 137 154 126 92 70 66 89 117 84 68 +77 137 161 160 111 65 78 76 82 57 59 64 +59 76 106 116 69 59 53 56 57 63 45 44 +33 42 46 42 46 126 153 169 181 186 192 192 +196 190 186 177 166 156 149 125 143 177 177 178 +184 191 195 195 190 189 196 197 199 192 197 211 +220 208 194 196 185 182 197 194 187 198 185 170 +178 191 199 208 212 216 220 219 209 215 218 211 +209 208 205 205 199 199 199 199 194 185 185 186 +205 220 219 223 221 220 222 218 210 208 204 185 +201 206 194 189 184 156 125 133 136 169 164 144 +149 156 140 135 128 125 123 126 126 124 124 129 +128 130 131 128 124 128 125 133 135 130 127 137 +148 146 138 148 186 188 175 185 187 207 209 208 +216 211 199 175 154 147 149 146 150 160 151 138 +144 146 135 134 141 134 129 137 144 139 130 138 +138 133 134 141 140 135 144 129 129 128 162 204 +209 212 206 178 182 201 201 199 198 197 202 216 +216 219 223 231 227 225 215 198 211 209 189 185 +198 199 206 211 213 217 208 213 226 222 220 227 +221 217 221 221 222 222 220 221 222 220 207 209 +218 204 189 192 174 161 165 172 185 191 175 184 +192 196 211 210 209 220 213 205 196 204 205 199 +210 196 197 198 194 196 204 198 202 196 192 187 +178 150 138 139 134 105 103 85 69 98 110 82 +93 123 125 156 156 119 94 80 67 84 118 79 +106 82 60 70 75 74 88 70 93 125 156 149 +135 130 159 125 124 130 119 110 108 99 93 125 +125 115 100 105 93 115 94 97 111 130 148 192 +174 172 166 154 161 146 126 127 137 157 136 146 +153 144 129 140 167 135 118 109 140 158 150 161 +170 148 97 78 85 84 84 95 103 99 114 182 +217 229 220 188 167 128 105 90 84 62 73 97 +92 97 77 58 79 68 98 104 106 159 188 179 +154 167 182 158 135 111 117 110 113 113 94 127 +124 115 126 134 114 105 106 119 +147 150 141 123 +128 124 117 137 135 117 153 175 151 133 135 105 +107 105 86 109 102 118 146 137 114 75 59 39 +37 41 63 67 73 118 161 156 143 137 128 89 +113 80 90 90 89 66 57 63 70 68 93 85 +89 74 75 95 77 75 102 102 129 154 174 113 +98 127 133 144 150 149 95 85 87 85 102 108 +75 62 57 56 80 126 127 107 137 87 74 69 +109 151 76 43 53 46 62 70 75 59 82 95 +75 55 84 104 107 82 69 88 73 82 56 67 +58 62 75 58 54 57 38 37 48 47 37 33 +29 105 131 178 188 187 201 205 191 184 172 175 +178 151 127 111 94 157 169 176 187 191 180 184 +189 188 190 190 202 199 206 205 212 209 206 202 +197 185 194 191 190 195 172 162 174 187 195 198 +213 217 218 222 212 208 215 209 209 213 205 201 +201 204 202 201 202 188 180 191 191 207 227 225 +223 226 215 209 209 212 210 194 191 199 204 201 +190 159 130 129 135 146 155 148 139 149 138 129 +129 130 127 128 127 134 128 133 138 135 135 136 +127 129 126 128 130 127 126 137 147 150 146 164 +181 186 172 170 182 191 190 210 209 197 179 171 +180 171 155 161 160 156 138 133 137 134 133 131 +134 139 133 137 141 140 129 133 129 130 131 129 +139 136 133 139 127 125 151 196 209 209 189 184 +191 196 201 204 191 192 200 208 219 223 221 225 +225 220 206 216 208 181 177 180 199 206 200 205 +215 213 209 221 225 222 225 221 225 227 222 217 +222 222 217 221 222 217 207 207 215 209 190 175 +157 149 155 180 186 194 186 182 196 200 209 202 +206 215 205 204 194 194 200 200 201 194 194 181 +196 205 199 188 204 191 181 179 164 138 144 141 +147 128 98 83 86 107 104 97 104 123 116 125 +155 128 117 113 76 69 73 70 79 84 123 145 +177 164 121 105 96 127 121 104 95 72 110 126 +124 136 129 123 109 127 148 160 161 148 133 128 +131 128 111 109 113 123 111 117 175 189 174 139 +126 130 117 116 105 105 83 97 129 139 134 125 +121 103 89 103 106 108 123 102 102 117 119 94 +83 80 99 127 130 138 107 109 129 130 111 111 +96 103 100 110 105 107 92 123 114 89 68 86 +80 108 119 160 157 158 175 177 151 123 145 145 +147 137 105 105 108 105 93 80 97 87 76 97 +126 126 126 133 +174 154 134 129 114 88 85 107 +120 104 127 118 118 113 117 77 69 73 82 94 +99 96 107 93 87 69 44 59 37 49 65 58 +59 85 99 100 89 103 85 107 67 93 115 86 +93 99 68 54 58 52 45 63 58 65 69 57 +90 102 102 98 133 133 138 96 53 85 111 64 +51 33 35 39 79 127 160 165 170 126 60 44 +46 68 53 57 149 126 79 110 143 117 59 48 +84 103 151 149 126 96 48 45 46 54 44 56 +55 55 59 70 82 69 75 83 98 92 78 55 +44 32 35 37 32 37 45 39 35 83 117 175 +179 182 182 176 177 175 180 162 164 164 131 113 +72 151 166 171 181 177 178 192 190 184 189 198 +210 208 200 205 208 198 202 200 194 179 177 168 +199 190 166 155 141 168 188 198 213 210 228 226 +217 210 217 206 215 220 209 201 206 199 209 208 +202 191 178 189 196 208 221 225 226 227 226 211 +202 205 201 196 195 199 192 195 195 161 137 131 +130 133 143 161 138 135 136 124 129 126 126 127 +130 134 126 127 133 126 135 123 124 121 128 131 +134 134 130 141 147 141 154 158 159 164 162 175 +191 181 161 186 195 176 190 176 177 169 145 144 +165 158 139 139 143 140 140 137 129 139 140 134 +144 137 135 135 131 128 134 130 133 138 136 140 +129 128 149 212 219 216 212 195 188 204 205 199 +192 198 198 215 219 219 225 228 220 218 213 225 +216 181 185 194 199 199 204 208 210 202 219 223 +221 221 223 227 227 222 225 218 207 215 215 217 +217 220 212 200 205 206 185 170 160 156 164 180 +182 162 166 199 209 199 200 208 206 200 195 199 +192 187 192 200 202 192 190 200 210 206 205 207 +201 204 199 192 169 138 144 143 117 95 85 92 +87 74 94 72 89 85 96 87 109 129 90 85 +88 88 92 98 103 133 165 147 99 124 97 89 +90 92 93 95 115 126 95 133 160 155 125 146 +124 79 103 86 83 98 98 98 104 110 103 136 +165 127 131 117 103 115 136 127 121 107 115 102 +100 92 117 118 111 128 155 158 165 158 138 129 +151 144 161 172 131 130 149 135 95 99 107 126 +148 108 79 75 64 77 79 77 84 95 87 100 +124 94 85 87 105 106 82 87 93 97 104 131 +131 102 102 89 100 106 90 125 129 120 110 102 +90 94 105 74 60 86 69 89 85 104 125 108 +150 154 145 160 155 109 124 129 116 98 70 77 +104 114 120 97 90 87 114 129 134 127 72 82 +57 58 69 67 55 59 76 69 82 113 99 49 +37 63 66 89 86 85 102 99 107 105 92 67 +68 70 46 80 106 118 153 158 167 160 115 84 +103 83 108 114 99 69 62 29 45 47 45 41 +62 95 78 87 96 76 60 29 29 59 44 58 +79 65 64 84 75 53 48 45 44 46 57 68 +52 32 42 52 57 46 63 46 54 49 72 113 +149 177 139 100 77 57 59 45 33 38 18 18 +16 22 43 37 63 95 133 166 167 185 182 182 +189 194 200 185 182 160 162 146 117 123 167 174 +162 166 164 171 178 166 172 196 211 208 202 207 +210 200 207 189 194 202 188 180 210 198 194 195 +168 171 189 195 208 207 221 223 220 218 220 216 +216 209 217 205 206 199 209 207 205 196 187 187 +199 204 217 222 217 225 226 218 211 220 215 199 +198 198 192 199 184 168 139 126 130 136 153 134 +133 137 131 134 128 130 133 127 133 130 127 129 +139 151 135 130 127 126 128 129 128 145 124 135 +129 135 147 164 165 164 172 182 199 199 186 200 +199 191 168 168 167 157 150 143 140 146 145 130 +138 137 133 131 131 133 135 137 162 160 139 131 +128 134 133 127 131 125 134 131 131 125 175 206 +202 210 215 181 190 202 199 204 194 197 210 217 +210 216 228 225 223 225 215 216 196 175 186 196 +197 200 204 208 218 209 217 219 219 213 225 225 +215 215 213 210 209 209 212 216 210 201 205 206 +191 190 177 140 162 186 196 182 181 154 177 208 +213 206 207 210 206 199 190 190 194 192 196 205 +207 200 200 196 209 212 204 208 199 189 194 186 +146 118 129 126 117 87 84 77 83 70 80 82 +108 104 93 92 105 111 139 133 89 136 155 176 +174 169 172 146 93 65 84 66 59 95 74 75 +97 111 121 115 116 134 134 121 113 105 77 102 +126 126 108 147 177 197 169 125 174 179 115 145 +150 168 166 179 189 182 185 168 158 140 118 105 +134 139 141 136 175 188 184 159 138 106 82 126 +131 137 109 108 97 80 80 87 107 105 95 92 +87 84 97 124 110 93 105 88 83 108 109 108 +92 80 93 78 88 108 115 125 135 129 104 99 +84 104 95 98 119 89 92 85 90 92 93 93 +85 85 87 83 103 103 123 145 +102 84 92 99 +98 111 125 141 104 74 92 103 118 145 149 138 +135 140 151 155 133 113 75 74 92 113 143 134 +126 130 119 85 54 57 36 36 49 62 95 96 +83 65 46 80 113 106 110 126 121 111 149 156 +148 123 100 102 78 64 49 51 55 48 63 58 +54 54 56 87 124 104 62 32 45 47 82 58 +93 87 139 179 169 141 46 37 59 51 77 57 +48 75 96 92 69 82 124 104 89 124 96 126 +103 53 53 85 66 128 168 188 184 136 93 96 +82 79 59 56 45 43 33 24 32 44 31 34 +37 78 147 170 172 185 189 194 210 202 195 188 +181 171 165 138 121 106 159 174 166 168 178 188 +189 180 186 194 188 204 212 202 217 217 208 191 +188 202 195 191 206 196 212 210 175 174 178 188 +198 202 210 225 223 225 222 216 211 218 215 210 +216 205 200 202 200 196 190 185 199 215 220 230 +228 223 226 223 213 210 215 205 199 195 200 195 +190 188 158 130 127 136 138 133 138 135 129 128 +126 129 127 126 131 129 126 129 137 138 131 127 +126 129 121 123 126 128 128 144 145 131 156 148 +157 180 182 188 198 201 197 208 209 195 169 188 +174 176 165 140 145 157 151 146 138 138 136 134 +133 141 134 140 151 153 128 147 130 134 137 134 +129 127 134 134 127 130 175 207 213 210 208 190 +192 196 197 194 196 201 209 213 211 221 228 227 +223 208 198 198 175 164 192 199 201 199 201 207 +205 207 220 219 218 223 225 222 221 220 212 219 +213 208 215 213 200 202 206 201 204 191 166 156 +177 186 199 181 165 180 188 197 205 212 208 210 +204 201 208 207 201 198 199 212 210 210 209 205 +211 211 206 204 191 180 176 160 143 133 134 134 +103 79 117 88 96 103 100 86 79 68 73 76 +79 141 158 144 105 131 171 137 102 76 110 100 +118 110 108 92 59 87 95 87 102 123 127 121 +136 127 131 167 185 187 159 119 146 156 153 105 +120 162 172 166 159 204 150 93 123 151 158 144 +125 119 123 134 129 131 124 123 174 116 120 150 +137 178 179 171 155 150 138 114 96 88 87 86 +63 87 75 67 67 77 75 77 90 86 113 131 +133 133 120 108 102 102 105 103 119 108 118 126 +125 151 128 111 108 90 95 85 110 90 87 92 +92 92 79 87 94 79 102 108 114 87 104 98 +107 111 119 140 +96 76 76 92 119 136 149 144 +134 128 134 153 167 172 144 121 116 114 116 125 +135 116 100 100 99 88 94 102 80 69 67 63 +64 74 86 92 105 123 138 126 109 76 53 59 +62 57 86 85 92 125 106 85 75 62 74 78 +86 66 62 55 55 64 59 49 97 176 176 158 +117 67 60 46 39 54 46 34 64 72 128 174 +156 96 52 62 48 51 82 69 95 130 113 89 +86 77 92 73 87 98 86 102 124 137 110 86 +98 127 119 113 94 68 80 70 62 51 44 44 +38 36 37 33 23 28 29 28 25 62 153 171 +191 196 194 190 202 190 190 197 184 188 176 125 +144 111 125 158 167 176 181 189 185 187 195 204 +205 211 205 195 212 210 200 204 197 192 185 186 +189 170 199 189 185 178 185 198 195 199 205 215 +218 229 226 219 209 219 223 221 213 201 204 204 +199 200 189 184 198 211 217 226 225 222 225 219 +215 207 204 199 205 195 196 198 195 191 160 126 +140 154 141 145 148 139 129 134 133 134 126 131 +134 127 124 131 139 130 128 128 136 129 131 129 +134 126 130 129 124 127 141 144 179 189 186 182 +172 191 208 208 179 160 151 148 159 166 149 143 +133 141 144 149 134 136 133 135 139 135 135 143 +148 134 134 131 129 136 134 134 131 134 141 131 +121 127 187 208 201 199 195 181 195 198 198 192 +200 204 204 212 212 226 230 223 218 202 208 207 +175 162 191 200 200 205 208 210 202 217 225 221 +225 225 226 227 225 220 225 222 217 213 219 212 +210 211 204 200 196 181 154 178 181 171 187 176 +179 197 191 198 210 210 208 207 205 205 206 200 +201 197 185 187 197 198 200 201 207 204 208 205 +197 184 169 153 143 131 131 136 96 94 102 87 +79 72 70 68 69 66 53 117 164 154 100 131 +165 172 154 126 123 177 172 151 127 117 118 140 +127 106 115 117 89 100 125 151 127 140 151 131 +138 162 177 165 134 151 198 161 129 126 157 139 +124 134 156 126 74 106 99 113 129 137 131 125 +118 106 111 115 128 136 117 137 178 157 141 151 +117 114 141 136 111 92 85 89 82 87 76 66 +80 77 89 138 159 158 138 115 125 108 95 96 +106 106 147 148 141 141 137 138 137 121 114 125 +125 86 97 86 89 110 97 88 107 90 87 85 +84 102 128 148 141 111 76 76 75 65 75 69 +137 125 123 113 136 134 138 166 171 176 176 168 +161 157 147 140 149 140 136 146 123 134 135 136 +130 114 115 107 104 103 84 99 110 118 108 98 +72 72 79 66 66 72 82 144 187 161 143 102 +73 90 72 66 88 76 58 107 95 62 57 42 +53 41 51 55 95 105 87 59 37 43 43 49 +47 47 58 74 106 76 78 80 86 70 43 63 +49 119 104 103 144 120 85 62 93 87 57 51 +45 52 72 93 93 68 55 48 49 58 52 51 +58 55 47 47 42 45 48 42 44 63 46 26 +25 22 15 25 27 59 148 165 180 184 190 196 +192 189 192 182 192 196 180 148 121 98 107 137 +160 177 172 181 182 185 189 189 201 210 210 205 +207 207 202 206 218 205 195 204 179 184 187 194 +204 195 177 185 201 215 205 207 199 213 225 223 +212 219 226 215 206 206 199 204 205 190 189 178 +190 196 211 218 211 219 223 213 205 201 197 202 +200 195 197 197 188 169 135 125 133 138 129 131 +136 134 127 127 133 131 129 130 138 140 126 126 +131 125 125 127 120 129 131 130 130 129 125 126 +129 128 139 171 196 207 189 158 174 191 207 200 +169 161 162 179 178 149 146 144 143 139 137 135 +136 139 138 135 139 131 131 135 138 135 125 130 +135 128 134 131 129 130 135 133 127 127 177 198 +207 206 190 180 194 191 200 199 195 200 206 215 +219 228 222 213 213 212 212 198 160 168 185 188 +196 207 213 208 212 221 222 222 219 218 221 223 +219 219 216 211 209 211 219 215 207 202 204 195 +184 168 153 161 178 168 185 177 178 190 190 201 +198 201 218 223 212 204 204 202 198 196 195 198 +188 191 194 195 209 209 202 208 198 181 168 172 +161 158 141 144 134 113 95 96 75 66 44 64 +65 68 67 117 135 118 125 128 109 88 67 80 +95 164 135 137 137 95 75 75 86 114 86 87 +85 104 139 160 138 130 153 137 120 111 136 164 +175 178 166 131 147 147 160 149 148 149 149 190 +156 102 97 70 68 129 141 136 171 169 129 133 +145 140 134 110 108 153 160 150 136 115 125 137 +119 120 121 110 110 90 88 89 83 102 96 92 +133 172 194 185 153 126 94 85 100 140 150 135 +129 87 113 113 94 92 102 90 116 118 86 86 +92 96 127 97 82 92 87 87 97 125 131 116 +108 82 89 83 99 104 94 96 +127 123 140 151 +147 140 128 126 143 147 148 149 159 167 170 177 +185 170 157 139 135 148 158 160 171 160 141 140 +128 129 115 89 82 90 95 100 110 98 94 120 +100 123 154 158 147 151 166 158 149 143 109 102 +102 86 108 150 134 77 92 128 172 160 155 139 +147 106 46 59 102 96 77 105 89 49 68 76 +73 74 72 99 82 51 59 56 97 134 131 140 +106 84 67 82 98 83 103 55 63 76 52 48 +69 64 32 36 48 48 73 64 62 69 55 42 +54 49 54 47 36 31 42 35 22 12 18 9 +16 58 145 146 181 196 196 200 201 206 206 198 +197 200 195 153 127 121 115 158 172 181 179 185 +179 186 187 188 197 195 200 202 207 210 211 211 +204 196 204 216 202 194 178 195 190 187 167 185 +189 206 217 206 200 204 218 223 223 219 223 222 +207 202 201 206 204 196 184 181 181 194 199 208 +222 226 230 227 215 207 208 207 205 198 198 194 +195 168 128 126 127 134 136 128 140 138 127 127 +130 128 131 128 131 130 126 129 138 131 127 126 +123 129 130 129 135 136 134 149 138 148 160 176 +185 198 170 151 188 206 210 213 210 204 216 217 +208 187 172 146 140 137 144 143 136 137 136 129 +128 133 131 131 140 141 128 134 138 133 129 133 +131 139 146 145 130 128 171 207 211 198 178 176 +201 204 204 204 202 197 202 219 217 222 220 213 +211 208 197 187 162 180 191 197 195 202 211 208 +213 219 219 220 223 227 219 205 207 201 201 212 +201 204 207 204 200 200 197 187 176 138 158 185 +184 169 185 172 174 194 194 204 207 207 208 219 +204 204 211 207 202 199 199 198 186 194 190 191 +197 188 192 200 188 180 177 150 164 161 146 158 +133 106 96 87 92 103 83 67 80 65 75 116 +108 94 100 98 120 118 102 94 92 131 191 195 +188 165 144 138 114 102 107 93 87 109 116 133 +138 158 186 184 161 140 120 100 86 115 139 129 +156 164 137 146 144 164 155 135 143 137 121 104 +118 114 83 111 184 215 208 174 148 139 135 117 +86 93 136 136 141 133 105 98 145 148 145 134 +127 121 107 95 106 120 118 116 98 92 127 156 +165 158 126 114 107 109 131 133 111 94 96 144 +106 93 87 110 115 109 124 105 109 116 116 119 +86 88 90 88 102 102 105 84 84 76 80 89 +84 97 95 97 +119 114 110 120 128 128 143 154 +145 131 140 145 144 114 114 127 141 145 128 129 +135 150 144 145 156 176 171 145 127 121 100 97 +87 65 70 96 130 158 180 164 137 99 92 80 +88 96 94 79 64 88 64 60 70 96 119 72 +88 135 136 126 125 102 103 110 107 69 87 96 +96 87 140 115 87 95 62 42 51 66 86 130 +105 76 80 128 147 116 113 90 83 56 77 75 +78 87 78 65 104 82 58 87 73 58 70 48 +72 58 54 69 65 69 60 55 67 92 119 75 +37 25 27 41 34 34 23 16 18 33 117 156 +185 186 190 194 191 206 198 189 189 200 192 164 +148 128 115 138 170 184 168 170 187 190 188 194 +189 195 211 216 202 195 198 199 202 204 196 191 +194 189 182 196 189 197 189 186 196 199 205 199 +213 221 213 216 223 222 221 222 207 202 201 204 +206 206 187 189 189 199 207 192 204 223 226 226 +221 218 202 207 207 199 201 201 187 171 151 121 +121 126 141 159 139 135 131 127 124 126 128 134 +133 129 129 129 133 130 129 128 125 129 137 128 +129 144 135 136 145 171 188 184 177 187 178 153 +186 200 168 189 200 174 160 160 164 160 162 143 +139 158 140 139 134 137 143 138 133 139 134 139 +136 137 139 128 127 129 133 131 129 129 133 127 +124 128 189 211 209 207 187 186 198 201 201 199 +198 198 211 212 216 222 222 221 220 202 188 188 +172 184 201 207 201 210 208 205 216 216 212 222 +231 225 213 213 216 208 208 216 218 221 220 219 +213 205 197 188 160 134 167 185 174 170 153 161 +185 191 196 195 198 207 212 217 217 219 213 205 +196 197 200 197 184 196 195 199 210 208 197 191 +171 164 166 164 164 165 141 131 120 98 103 93 +110 130 141 161 154 123 94 119 105 98 107 100 +108 104 134 146 133 120 113 140 141 130 140 158 +161 144 123 140 144 169 181 147 116 88 136 145 +149 140 129 127 104 98 60 87 109 117 170 140 +113 136 174 165 133 118 131 124 110 137 140 111 +127 196 228 222 202 158 140 149 126 96 77 99 +117 109 83 96 89 102 115 125 127 110 109 102 +119 140 138 135 120 113 92 92 121 133 137 135 +119 105 113 97 79 97 89 85 107 100 135 156 +160 150 151 123 100 103 93 82 109 80 96 125 +120 124 99 90 84 94 87 83 93 79 95 98 +77 77 87 85 96 110 121 141 145 165 168 165 +166 169 171 158 144 134 125 130 134 125 133 123 +114 131 124 121 118 135 130 114 85 93 84 115 +106 110 116 114 113 100 73 96 92 109 80 75 +74 85 69 60 66 68 58 72 80 99 92 56 +57 74 83 67 73 72 77 90 76 105 80 51 +47 69 57 67 62 94 106 94 82 63 80 125 +103 84 117 97 79 73 98 138 115 77 54 72 +84 65 136 162 146 107 62 60 84 76 58 63 +93 107 92 56 62 52 51 49 38 29 43 35 +37 22 22 17 35 25 96 135 167 182 181 192 +201 202 187 186 191 181 172 171 159 115 103 129 +162 172 168 176 184 184 194 190 178 195 201 201 +209 206 206 201 201 195 194 187 189 200 202 181 +175 195 195 184 199 204 216 210 205 211 219 212 +215 221 215 218 216 199 199 202 196 199 197 181 +185 196 215 198 197 211 225 230 225 219 207 202 +200 202 202 198 190 165 147 126 123 130 148 169 +133 125 121 124 120 126 124 125 127 129 137 130 +126 123 128 126 127 135 127 124 128 128 125 140 +145 175 186 172 158 177 178 172 192 192 177 189 +189 159 168 178 166 155 136 135 149 161 153 143 +134 136 133 134 139 131 127 133 136 143 143 130 +128 125 133 134 126 133 136 130 123 135 182 207 +218 216 191 187 192 202 209 198 201 209 216 213 +221 225 226 220 206 201 191 181 184 192 204 200 +204 205 205 209 210 215 225 228 227 226 221 221 +220 210 209 219 219 221 222 220 215 207 191 177 +156 156 177 187 177 172 165 175 192 210 208 202 +206 204 208 219 217 211 213 216 200 200 196 189 +187 201 196 204 215 208 205 189 169 158 137 155 +179 192 174 164 131 98 114 113 97 116 107 97 +109 102 109 106 136 175 201 187 180 162 125 135 +125 124 121 111 124 111 104 123 128 162 165 145 +141 146 147 121 111 100 133 172 150 158 157 157 +153 157 171 124 121 130 140 184 178 149 166 195 +205 180 111 88 118 125 131 138 114 137 202 191 +196 179 146 120 146 154 114 147 121 105 117 125 +110 108 131 128 105 104 117 129 151 145 166 169 +141 143 129 104 99 115 97 106 98 107 111 87 +93 74 77 116 110 117 145 153 154 143 143 141 +125 95 94 89 87 100 106 89 119 129 139 114 +94 66 85 84 70 102 75 94 +99 97 93 109 +88 102 121 120 131 133 145 157 150 148 168 175 +160 147 148 148 157 147 115 83 87 102 75 82 +78 95 83 80 105 111 147 125 99 116 111 135 +140 136 144 127 111 96 108 134 135 106 64 85 +53 62 70 65 84 73 63 46 53 60 67 54 +37 59 62 92 123 133 157 120 80 60 76 68 +66 66 48 55 66 54 131 99 86 140 170 175 +170 126 72 78 55 96 137 107 76 113 130 98 +107 93 105 73 76 57 42 58 88 75 58 56 +43 39 66 57 38 33 54 42 33 25 17 24 +14 21 77 150 176 187 182 188 194 191 200 189 +176 181 187 188 181 150 116 113 150 177 181 178 +175 186 192 189 187 195 188 198 206 202 199 205 +206 202 192 191 177 182 199 171 182 197 185 180 +190 202 216 215 207 196 208 218 210 213 215 221 +219 207 202 198 200 198 192 182 186 181 199 215 +200 201 223 231 226 223 210 208 202 202 199 200 +194 162 138 128 123 130 139 135 127 129 124 130 +130 130 125 126 130 129 130 126 125 135 129 127 +129 128 126 146 155 136 135 135 145 155 164 151 +176 184 187 205 211 212 211 206 197 185 160 135 +136 140 154 154 145 148 144 138 136 138 131 135 +141 137 131 136 130 130 133 129 125 124 129 130 +130 146 135 131 123 131 188 211 202 211 178 177 +195 204 209 208 209 213 217 211 207 219 221 212 +211 217 192 188 189 190 201 205 202 205 210 215 +215 225 222 222 223 222 219 213 206 219 218 209 +218 223 215 205 206 201 185 165 166 177 177 191 +186 186 186 178 194 204 195 206 210 198 197 204 +206 204 206 204 202 202 195 187 187 198 206 205 +206 215 205 191 182 168 149 149 153 157 150 144 +103 102 99 99 124 123 94 114 118 102 105 134 +150 145 155 141 137 121 102 97 121 126 133 145 +159 129 99 86 79 95 117 90 86 110 107 129 +139 118 92 92 138 146 137 151 158 131 145 155 +143 128 123 148 166 148 151 181 187 202 191 148 +130 174 175 140 104 86 126 155 143 165 189 158 +131 120 125 148 169 136 134 156 147 113 87 113 +115 110 146 143 148 143 150 161 164 171 149 143 +129 115 117 93 83 84 86 90 88 89 92 100 +109 133 140 123 115 87 129 131 113 121 114 116 +127 108 120 104 107 117 134 113 105 107 84 86 +65 77 83 83 +104 98 103 104 113 99 103 115 +115 111 114 130 143 166 174 151 147 145 156 168 +170 150 115 95 105 105 127 98 102 100 141 155 +150 147 118 95 85 74 88 75 87 105 113 89 +87 93 121 113 95 109 115 87 70 76 64 67 +93 79 105 138 113 100 72 73 75 56 56 38 +56 62 57 45 75 72 59 73 58 48 65 53 +59 85 85 83 73 92 125 141 114 62 46 44 +79 96 62 36 37 92 85 53 77 62 65 47 +45 64 94 109 74 67 58 73 87 99 103 56 +51 44 33 24 31 39 46 51 45 27 74 129 +157 177 188 199 199 191 181 172 185 200 200 182 +194 181 154 109 135 177 175 179 189 191 190 190 +186 194 191 197 201 201 200 192 204 198 197 198 +182 162 197 189 186 190 185 168 180 194 202 215 +207 199 201 210 215 212 209 219 223 219 215 205 +204 196 192 184 187 192 195 213 221 217 217 215 +221 223 213 206 196 191 197 200 189 170 147 139 +127 135 139 130 125 126 126 128 134 127 127 126 +128 129 128 131 130 130 128 123 126 125 121 143 +160 136 136 138 139 141 167 164 180 185 185 189 +182 190 201 196 167 137 130 138 147 133 149 144 +140 146 137 135 137 136 130 131 131 135 135 136 +135 136 136 135 133 134 128 138 134 130 144 127 +123 140 191 199 206 199 178 190 192 200 208 205 +206 217 216 206 211 220 216 211 222 212 196 199 +196 199 207 199 205 216 215 215 227 229 219 219 +216 212 213 211 211 219 218 218 220 222 223 215 +192 196 182 150 155 186 184 192 174 171 186 181 +184 197 208 211 217 207 202 202 204 196 200 198 +190 194 191 184 182 199 206 191 200 207 195 189 +182 158 143 164 148 150 140 121 118 154 150 103 +98 97 68 96 109 130 118 99 102 76 86 111 +105 82 106 105 86 96 110 113 124 110 111 120 +129 98 80 100 89 125 128 120 146 114 86 107 +116 119 124 154 156 130 117 103 107 107 116 116 +133 124 108 115 117 141 180 151 156 151 155 169 +149 120 83 86 103 114 131 117 131 120 69 76 +115 96 82 115 129 127 109 115 114 88 102 113 +140 157 141 125 153 159 135 117 125 103 114 116 +104 105 90 93 116 106 99 92 100 133 176 172 +156 138 109 111 100 99 116 120 134 96 102 104 +116 113 108 116 96 95 90 64 96 76 89 119 +113 118 127 134 164 161 150 147 133 118 109 109 +110 149 181 197 192 185 177 162 147 128 144 143 +155 143 140 146 157 164 170 141 119 84 89 64 +100 97 100 96 92 68 77 85 92 96 98 86 +121 119 103 114 99 87 78 89 89 96 120 125 +100 57 70 53 42 37 42 38 48 78 138 149 +134 84 64 45 51 52 54 60 76 77 73 68 +83 102 118 102 76 86 63 73 85 57 45 42 +62 55 69 88 83 77 47 45 44 47 67 85 +67 49 52 64 59 79 49 39 35 43 35 23 +19 21 19 21 39 36 54 151 181 186 190 205 +191 182 178 182 191 205 200 185 168 157 170 140 +129 165 174 190 188 192 199 180 176 194 197 201 +206 204 209 207 200 198 200 204 201 189 179 185 +207 197 172 178 179 199 209 211 206 204 206 204 +208 210 216 225 223 216 215 205 197 196 192 180 +182 184 190 212 230 228 229 222 211 216 207 208 +206 196 197 198 188 172 155 137 137 133 136 134 +138 131 130 126 128 128 127 131 127 124 127 131 +126 128 126 124 124 127 121 137 138 130 135 141 +146 160 164 144 158 155 161 174 148 172 202 189 +178 159 164 165 171 176 185 154 138 147 141 134 +135 131 133 128 129 134 144 137 129 134 136 134 +133 130 126 133 126 133 130 123 129 159 189 201 +208 208 186 188 196 204 204 201 199 201 201 209 +209 215 217 207 216 200 199 199 192 201 207 211 +210 204 213 215 222 226 219 216 216 209 202 201 +207 220 223 222 220 228 228 212 189 181 164 161 +174 188 196 204 185 176 179 189 200 207 207 209 +217 197 198 205 199 192 195 194 189 190 186 190 +189 192 205 188 182 188 186 181 174 154 149 160 +154 161 148 97 84 97 110 94 76 66 57 53 +97 131 135 147 130 134 138 116 114 121 89 83 +105 133 124 125 113 90 65 114 145 134 147 150 +129 137 145 144 188 190 166 146 146 161 171 146 +123 90 123 104 83 93 89 134 128 118 123 116 +97 72 79 141 121 133 149 147 125 124 117 83 +86 89 90 86 87 90 84 97 80 89 85 76 +130 153 135 129 115 100 79 76 96 127 143 126 +137 151 118 94 86 88 95 109 129 114 107 90 +109 106 95 109 100 96 119 118 125 116 102 92 +109 87 90 117 115 111 94 106 124 115 114 114 +120 99 99 94 88 104 94 109 +186 185 148 134 +162 158 139 138 131 128 134 148 141 149 153 160 +172 180 160 133 105 95 107 121 103 104 123 143 +146 144 138 136 127 119 118 111 109 124 131 148 +123 87 67 60 46 51 76 90 115 130 129 76 +82 85 69 58 100 83 75 102 113 111 54 57 +57 100 136 120 106 82 92 94 73 73 48 37 +55 62 76 86 90 85 102 134 176 185 144 120 +100 55 43 62 41 39 51 65 70 55 53 83 +70 34 29 26 16 34 51 51 64 84 79 106 +86 74 58 47 53 54 43 35 36 21 18 18 +18 22 41 124 174 182 192 182 182 191 179 182 +200 199 194 199 185 168 184 150 111 153 169 178 +181 192 192 189 190 186 189 198 204 199 198 205 +213 217 212 215 206 204 192 192 204 200 184 171 +185 199 197 202 207 211 213 209 196 194 208 220 +225 225 210 197 202 190 192 197 179 184 198 211 +223 229 226 221 217 201 210 204 204 199 195 202 +196 168 145 128 127 131 133 134 129 124 127 125 +136 126 121 129 123 127 125 124 125 125 123 126 +123 126 124 125 123 128 125 135 145 146 159 151 +172 172 164 168 170 189 184 175 188 182 185 194 +174 161 161 161 150 137 138 131 135 133 128 129 +133 131 136 141 134 139 146 138 130 129 130 128 +127 129 144 140 127 151 199 211 212 206 188 196 +199 198 204 205 204 205 207 205 211 225 213 209 +215 190 194 194 192 204 209 204 204 211 205 212 +221 216 219 216 211 205 208 211 216 223 223 219 +216 217 216 206 186 162 147 164 182 198 191 182 +175 187 186 201 209 209 202 208 213 205 207 207 +205 197 190 199 200 194 192 191 194 198 207 198 +191 186 190 184 155 159 178 178 169 167 150 110 +88 104 105 102 78 72 78 88 92 123 119 143 +128 140 102 74 86 74 78 74 69 93 94 129 +146 117 87 64 84 135 123 120 98 92 74 95 +97 124 147 114 97 113 150 159 113 92 87 125 +113 78 115 140 172 167 158 138 114 95 82 93 +110 117 149 157 165 160 135 120 103 103 87 95 +94 85 104 95 95 110 77 76 83 105 150 181 +170 165 155 108 84 118 126 125 126 110 93 107 +85 72 109 86 108 108 98 92 86 106 114 114 +114 84 111 107 107 96 97 95 85 89 88 82 +100 90 98 108 123 130 127 121 119 135 126 135 +111 92 103 105 +166 176 177 165 128 134 125 136 +135 143 148 157 170 172 141 130 146 144 161 162 +126 119 123 135 127 116 126 137 143 153 148 136 +125 134 111 104 120 118 137 133 115 86 80 98 +95 92 96 135 158 159 147 110 89 84 74 70 +82 69 63 66 66 70 52 59 80 115 119 108 +83 41 37 44 56 55 53 69 117 147 141 144 +136 151 158 170 144 108 63 65 56 56 62 52 +58 100 68 84 59 56 48 73 53 36 33 37 +32 43 51 79 67 76 73 60 82 83 99 103 +93 76 45 31 28 18 25 7 7 14 29 99 +140 176 184 165 177 182 179 177 198 204 201 199 +188 178 178 145 105 138 157 171 174 190 191 195 +194 187 190 196 209 205 198 199 217 215 209 210 +200 208 197 195 188 185 181 178 178 187 194 206 +204 215 225 225 216 194 190 199 210 217 220 220 +212 200 190 186 186 181 182 204 213 223 213 222 +223 220 212 201 204 199 194 205 207 181 159 131 +124 129 141 143 133 130 128 128 127 126 125 121 +125 125 124 126 121 128 133 123 121 134 125 128 +129 126 124 133 138 141 138 148 169 197 200 198 +200 191 168 174 174 178 194 178 161 158 155 157 +162 150 133 131 135 128 126 129 134 130 133 134 +135 141 136 130 131 123 130 130 128 135 141 136 +123 158 198 211 210 198 186 192 191 201 206 199 +205 212 206 216 222 222 216 208 196 189 189 182 +200 202 201 204 209 213 210 217 220 218 218 212 +205 202 207 219 227 222 227 225 219 219 213 191 +167 164 154 184 202 199 190 174 171 196 199 207 +200 202 197 206 217 207 207 201 198 199 192 194 +195 201 204 195 196 198 206 204 191 181 188 187 +164 171 186 184 162 156 153 124 90 85 97 86 +77 82 49 68 79 108 114 84 116 87 105 137 +133 117 90 86 86 95 104 128 119 86 75 102 +110 157 200 179 116 103 103 94 129 138 111 127 +93 89 97 118 115 118 136 121 129 99 92 115 +113 124 109 82 97 83 93 93 92 80 80 83 +113 134 145 114 114 108 98 82 102 106 121 124 +98 106 106 124 105 105 131 133 145 161 179 157 +113 86 110 127 138 127 109 76 86 94 89 97 +78 79 108 98 106 110 104 99 99 98 94 93 +97 107 99 94 106 100 102 87 94 103 98 97 +78 87 74 103 116 123 144 144 116 105 87 104 +174 188 176 153 131 126 114 123 133 128 141 162 +179 181 179 164 155 174 184 180 161 153 143 150 +155 149 154 138 125 151 149 136 167 176 171 169 +153 159 166 192 187 118 98 89 73 64 103 96 +68 74 59 79 99 79 97 131 136 105 58 45 +49 53 44 74 80 119 67 62 55 54 52 70 +96 120 97 94 98 86 56 54 72 82 123 114 +84 72 58 59 58 76 77 68 56 56 98 75 +105 97 107 105 80 47 37 35 55 104 168 155 +105 79 72 57 47 55 67 57 59 48 45 43 +23 8 18 5 8 12 15 38 105 157 172 168 +171 190 190 178 179 182 184 175 186 174 168 167 +124 130 167 181 172 189 185 185 189 184 192 197 +198 200 208 210 210 218 216 213 211 212 206 184 +165 166 180 178 170 190 190 201 215 220 215 212 +209 197 201 201 197 210 222 218 211 204 197 195 +187 184 184 208 204 221 223 220 227 227 212 206 +208 201 202 206 194 178 169 127 124 124 127 130 +129 124 119 126 138 124 124 124 126 120 121 123 +124 128 126 125 121 130 130 127 121 120 120 128 +141 143 135 139 166 204 208 192 199 204 176 172 +205 207 208 211 207 202 201 177 146 154 147 147 +151 136 130 136 135 128 130 135 136 141 143 133 +133 134 129 126 139 138 140 130 127 176 208 200 +199 198 182 194 201 199 202 206 216 204 211 228 +220 220 213 198 195 188 186 189 201 202 211 211 +201 205 210 218 222 209 202 202 200 201 201 220 +222 223 222 220 217 209 207 185 161 168 171 191 +198 186 154 166 181 192 197 200 206 206 206 212 +213 208 216 206 197 204 198 192 190 195 201 198 +194 197 198 202 188 180 180 158 137 150 169 182 +159 155 145 121 108 89 85 109 99 95 106 77 +62 72 60 118 149 138 131 95 89 78 68 60 +82 92 88 98 85 103 172 199 189 164 130 151 +135 99 126 157 128 167 184 149 144 135 140 121 +104 102 127 134 149 144 110 93 110 121 128 120 +103 94 83 92 94 104 92 86 96 76 97 104 +86 104 80 87 92 119 102 90 114 103 124 126 +123 109 113 137 121 123 136 120 113 109 98 88 +118 118 97 102 102 117 104 85 96 76 85 88 +109 96 93 109 94 99 92 93 105 90 103 97 +86 96 110 127 111 115 102 115 123 105 108 103 +107 106 102 127 113 114 102 102 +145 160 151 144 +149 145 151 164 168 169 167 144 158 168 153 159 +176 191 207 210 197 166 144 161 149 145 144 131 +131 129 125 120 143 156 167 170 164 154 155 164 +159 136 129 126 134 140 127 107 102 108 116 104 +104 106 107 102 107 87 104 106 82 93 79 115 +105 118 70 58 84 111 85 78 70 67 41 59 +65 68 59 60 99 100 110 88 69 86 74 68 +68 58 43 36 45 77 123 135 107 93 79 68 +75 76 78 72 69 117 90 69 93 114 99 72 +56 43 75 58 65 47 37 29 23 14 25 22 +12 21 26 38 137 178 185 176 188 201 195 189 +197 194 196 185 196 196 188 171 145 110 156 169 +181 192 189 187 182 185 195 196 202 206 212 216 +208 202 208 217 199 206 218 210 180 170 169 166 +169 176 192 205 206 217 217 207 197 201 204 201 +206 200 217 218 210 206 202 195 185 185 174 200 +202 209 215 221 225 220 218 219 213 213 202 198 +191 180 166 137 125 124 124 127 130 130 130 125 +130 126 129 123 129 126 125 130 131 129 131 125 +125 126 124 121 127 119 118 128 133 129 135 138 +170 194 197 181 184 206 187 171 191 178 179 198 +204 202 199 188 184 166 143 139 140 136 133 128 +130 137 131 130 135 136 138 134 131 128 128 131 +134 134 129 126 137 180 202 200 198 188 180 196 +196 194 209 212 216 209 217 227 223 221 215 199 +191 185 181 187 198 199 202 207 205 208 213 216 +208 194 197 199 196 207 220 223 226 227 225 225 +215 200 199 180 149 182 190 200 189 174 145 168 +190 196 199 205 206 207 218 206 209 211 211 204 +194 196 200 197 187 187 192 184 190 198 197 205 +196 185 181 137 130 151 161 179 171 160 121 92 +92 87 87 92 87 77 79 86 90 95 130 155 +155 119 108 113 133 133 126 116 134 140 137 147 +159 157 116 87 84 85 140 164 117 113 84 105 +127 141 167 162 129 124 134 120 107 105 90 89 +127 187 180 140 129 139 135 115 117 121 104 89 +106 88 98 124 102 124 140 136 119 130 121 110 +95 89 94 84 96 108 125 128 116 113 107 111 +120 116 109 93 99 103 133 162 159 153 145 114 +117 137 143 116 87 111 76 84 94 93 113 143 +146 136 123 89 99 111 98 98 80 93 103 92 +110 98 95 113 127 124 99 105 88 104 97 102 +115 92 100 107 +156 165 187 194 178 180 179 177 +178 172 164 150 147 130 130 134 156 164 165 147 +155 157 155 160 169 180 172 150 143 145 147 135 +143 146 135 126 157 148 141 148 157 154 155 148 +139 138 104 89 90 99 106 82 80 85 87 104 +93 99 83 92 119 100 117 125 140 111 69 109 +127 124 69 88 68 41 43 55 53 70 69 100 +110 94 104 96 97 70 79 66 51 37 28 31 +31 78 72 52 72 69 109 96 109 118 89 72 +67 65 34 69 88 85 63 33 33 59 53 57 +49 32 28 23 23 15 19 16 12 24 23 26 +78 165 178 181 190 186 181 179 196 202 206 204 +208 194 209 166 129 106 131 171 186 192 192 199 +188 191 194 197 199 200 208 211 208 208 205 218 +216 199 195 204 188 189 201 186 181 188 198 201 +200 216 210 206 197 200 204 205 199 198 205 217 +220 217 209 188 188 182 180 199 211 217 215 221 +222 222 208 209 218 217 199 208 199 168 151 135 +129 126 123 125 124 125 130 129 123 127 126 127 +124 123 127 131 130 130 131 123 125 124 124 125 +126 127 129 156 162 133 139 157 160 176 181 179 +155 174 158 172 182 196 199 200 192 174 191 179 +157 171 162 157 138 136 140 133 131 135 133 134 +135 130 137 137 128 128 123 124 124 129 128 124 +133 194 200 206 204 186 175 196 200 207 202 206 +210 201 218 227 219 215 213 189 179 191 184 188 +201 198 200 206 209 211 222 213 198 201 200 199 +204 211 222 226 227 223 227 218 211 207 198 185 +167 192 194 202 191 174 172 175 194 205 205 216 +217 207 211 207 210 207 211 205 198 199 196 195 +191 200 194 196 197 195 200 206 191 188 168 128 +133 170 187 178 171 164 131 124 114 93 109 150 +100 111 96 70 97 110 108 94 82 98 96 95 +108 123 110 117 123 108 106 84 88 96 80 79 +78 144 155 144 130 131 105 83 114 151 146 139 +120 115 108 108 134 146 136 105 87 97 120 139 +115 100 88 69 96 89 115 107 98 105 92 126 +103 93 140 156 158 157 157 137 107 107 109 115 +87 100 115 130 161 185 175 144 125 124 94 94 +80 95 145 159 170 153 131 130 127 125 120 135 +139 141 115 79 102 98 108 174 210 208 190 157 +128 111 111 86 90 87 86 99 111 119 114 106 +104 104 103 85 92 87 98 93 82 103 108 106 +178 180 179 174 158 149 155 148 129 143 149 139 +141 155 159 167 149 138 137 137 146 154 157 174 +174 201 206 186 176 145 136 116 117 119 137 157 +177 153 123 113 86 86 96 109 141 156 160 188 +180 158 127 136 133 131 137 103 109 118 109 129 +108 95 124 143 128 76 76 86 105 87 79 66 +44 43 34 65 82 135 135 125 116 89 78 90 +87 111 128 62 29 21 25 24 26 35 49 53 +79 111 87 79 77 107 66 62 98 93 63 44 +48 35 37 44 59 66 67 67 62 78 128 86 +72 17 9 16 11 18 12 18 67 151 175 177 +177 174 165 178 188 186 202 196 194 194 198 165 +150 115 129 171 181 177 191 198 189 188 197 199 +206 213 216 200 210 209 209 205 212 206 189 186 +178 194 204 175 155 172 181 191 195 205 208 205 +197 201 196 198 195 194 194 191 206 213 218 215 +189 180 175 180 211 221 215 216 222 221 215 218 +207 212 204 201 198 190 179 139 125 126 129 121 +130 126 124 130 127 130 134 123 126 128 126 127 +125 129 129 126 121 124 128 124 130 131 124 148 +149 133 159 155 153 174 189 176 158 167 167 190 +197 207 207 210 207 200 208 198 179 172 156 145 +134 133 133 125 129 130 133 139 133 131 138 138 +140 130 125 125 127 127 128 127 133 194 207 209 +202 184 182 195 198 198 200 207 199 205 216 220 +216 217 216 200 179 177 187 200 205 205 201 206 +210 213 208 216 218 211 210 209 206 220 225 223 +225 227 222 209 207 200 194 174 160 169 167 191 +194 172 176 177 197 209 216 218 217 205 208 208 +212 210 208 208 207 204 195 197 196 200 197 206 +200 198 205 195 191 186 158 149 174 181 190 170 +167 154 126 141 107 88 96 128 129 92 83 73 +98 92 88 97 74 93 134 174 199 159 113 77 +76 89 84 120 100 87 96 94 84 88 95 85 +105 126 93 76 64 68 103 98 114 116 102 100 +96 104 126 125 83 76 93 73 93 77 75 90 +75 67 86 102 100 121 107 97 102 85 75 106 +111 121 121 119 130 106 93 100 117 105 135 156 +158 169 169 146 140 110 111 113 128 127 136 160 +179 159 125 127 121 127 135 117 128 133 118 100 +92 96 90 110 153 175 186 157 137 113 116 113 +90 94 92 88 103 115 128 129 102 95 98 108 +96 103 102 93 117 98 89 96 +170 175 146 129 +135 155 160 155 144 134 124 125 124 131 139 125 +117 117 131 164 168 167 168 179 185 175 147 139 +114 105 135 116 127 144 159 167 164 174 162 134 +100 88 94 107 145 171 156 128 140 127 144 147 +160 161 143 134 147 160 147 130 104 114 134 126 +108 92 115 170 162 121 103 64 38 43 65 121 +172 139 109 127 136 107 73 84 89 106 70 25 +16 26 32 25 57 94 90 95 84 89 98 82 +100 97 130 128 102 73 43 65 43 46 62 56 +85 51 55 73 84 106 108 65 32 23 15 31 +74 77 58 37 68 144 160 158 177 171 180 194 +194 204 204 188 198 207 199 169 156 113 118 141 +170 177 186 190 197 194 192 198 208 207 208 208 +213 208 211 213 213 220 194 188 189 192 197 181 +170 176 186 197 195 211 210 209 206 197 192 190 +194 195 211 207 194 198 211 205 197 186 182 171 +206 215 204 212 215 210 217 219 210 217 212 206 +204 186 170 146 136 131 125 123 123 126 125 121 +128 131 131 125 124 130 128 131 120 125 129 126 +121 119 133 125 134 130 124 138 137 150 144 133 +156 179 175 181 200 186 176 201 218 217 205 207 +212 216 210 206 191 160 156 144 134 148 143 137 +137 136 130 136 130 129 129 135 131 128 133 128 +129 134 124 124 141 205 216 204 192 176 191 189 +185 196 205 201 197 200 218 228 218 218 217 196 +180 184 186 192 202 204 205 211 209 207 210 220 +216 217 218 207 210 222 225 228 227 223 222 209 +196 198 187 167 159 160 170 197 208 188 175 189 +200 217 225 216 218 217 206 202 208 205 205 202 +201 198 198 192 191 200 188 199 207 201 197 191 +195 184 146 150 171 190 188 184 178 153 121 111 +102 83 78 106 106 78 60 86 89 95 80 67 +76 69 96 134 109 93 87 104 104 130 141 131 +146 136 125 129 115 104 107 103 98 118 107 80 +74 59 55 84 80 83 115 165 191 156 123 127 +118 88 75 96 73 95 82 115 120 113 75 87 +123 106 119 158 145 117 99 78 96 118 125 113 +108 104 116 116 107 107 90 100 113 108 118 103 +114 103 92 108 103 84 97 124 127 141 165 130 +103 104 107 117 96 84 76 69 80 108 97 63 +86 92 94 110 104 133 140 154 125 99 96 84 +103 93 98 109 110 115 111 120 113 89 95 97 +111 103 98 100 +153 140 143 129 130 130 147 164 +174 162 171 169 150 143 146 130 117 150 158 164 +171 169 164 168 167 162 164 157 157 158 161 148 +138 134 134 134 125 125 120 105 100 121 120 129 +134 128 114 121 144 153 146 146 128 134 139 138 +174 155 134 120 116 126 108 96 113 144 170 166 +126 68 52 60 66 67 110 111 131 119 115 106 +70 76 74 67 84 44 38 22 19 60 64 105 +103 88 70 68 48 39 62 83 103 119 107 93 +66 76 88 85 60 90 123 123 83 88 56 57 +62 64 45 43 19 9 12 14 25 24 23 35 +37 102 156 175 174 179 175 191 200 195 188 187 +188 172 169 140 139 143 111 123 175 181 184 182 +189 189 195 195 197 202 208 211 219 219 212 222 +221 208 194 185 168 164 192 194 182 180 180 194 +201 206 207 212 206 202 201 192 200 196 200 204 +204 188 187 195 206 190 185 182 196 213 215 217 +217 220 222 221 216 210 206 201 195 190 175 150 +146 165 129 124 129 126 124 125 126 128 126 128 +125 131 130 126 124 126 126 126 127 121 124 133 +133 127 128 134 137 143 147 160 160 159 197 210 +208 182 207 216 215 192 196 202 198 195 206 198 +200 197 198 176 158 137 139 131 130 135 134 130 +131 133 129 136 131 135 139 131 135 136 128 130 +157 204 208 201 205 182 187 190 200 206 201 197 +195 201 227 227 221 218 212 196 184 185 188 200 +206 213 219 211 209 210 215 212 211 213 206 205 +212 218 226 230 225 226 212 199 195 188 174 179 +171 168 192 200 204 186 184 202 204 212 213 207 +215 211 210 212 204 199 206 197 192 198 195 188 +197 201 199 205 200 200 197 185 181 174 126 131 +161 196 190 180 179 148 127 114 123 117 96 94 +74 51 83 72 77 96 103 80 70 86 86 93 +98 108 131 115 85 80 84 123 167 162 146 130 +120 134 117 114 124 126 120 120 113 76 66 77 +102 141 146 150 144 114 114 126 133 134 115 94 +99 84 92 99 119 135 139 129 159 200 189 156 +150 125 102 77 74 62 106 104 74 97 84 92 +103 113 117 97 106 93 107 96 72 68 74 93 +103 99 110 104 109 103 118 157 150 119 96 120 +116 98 108 90 95 94 103 103 89 83 80 92 +96 95 126 129 118 106 97 94 88 100 94 89 +94 119 120 94 107 108 104 110 111 111 105 104 +149 165 166 149 161 148 137 151 172 189 194 180 +159 157 149 153 158 155 164 162 165 172 171 172 +181 190 162 155 167 177 185 141 125 116 134 146 +149 147 149 157 151 136 133 129 131 161 154 138 +160 169 153 128 129 127 149 167 159 143 148 123 +100 89 64 119 156 153 113 66 59 55 54 85 +92 89 69 95 105 96 98 64 73 63 76 65 +44 45 59 51 52 102 123 114 82 44 47 82 +46 70 123 165 177 156 84 88 100 80 54 25 +36 54 65 67 52 46 46 52 48 55 51 32 +24 21 12 11 9 16 12 10 33 82 164 172 +170 156 166 186 189 182 175 189 194 190 185 148 +114 118 113 123 172 168 176 185 191 196 198 195 +196 200 209 212 217 209 204 206 212 201 191 194 +188 184 192 200 187 171 180 195 197 205 212 207 +207 210 192 189 201 198 196 211 215 201 191 182 +196 196 187 179 184 201 216 221 206 212 227 228 +220 218 209 199 201 192 176 156 141 164 145 126 +125 128 127 121 126 133 137 127 124 125 126 123 +124 124 124 125 120 126 119 128 140 133 136 144 +141 166 171 185 191 169 196 210 199 179 199 212 +198 204 223 223 221 208 206 204 199 181 158 160 +165 138 139 130 143 136 135 133 129 126 141 130 +126 130 126 128 128 128 121 120 154 196 199 207 +207 179 181 197 204 198 198 198 200 215 223 218 +221 219 216 205 185 184 198 200 202 217 211 204 +202 205 205 205 207 212 208 204 210 219 222 225 +226 226 209 202 191 174 174 182 159 186 205 182 +185 177 200 211 209 215 211 208 213 216 212 215 +213 195 197 196 191 189 191 196 196 196 201 199 +189 189 176 181 186 153 127 147 179 196 180 165 +168 139 105 100 72 97 107 104 85 84 88 72 +59 95 80 73 78 74 99 97 105 92 111 128 +135 113 106 136 135 146 149 159 151 145 138 146 +136 161 149 127 141 146 108 79 54 64 97 126 +124 144 135 105 131 153 167 133 114 113 110 102 +84 113 109 92 105 146 153 136 127 118 110 104 +85 113 124 117 114 107 104 83 88 82 104 128 +120 108 97 90 90 80 95 95 95 100 96 117 +138 153 115 102 144 166 147 126 119 123 104 102 +94 97 116 135 124 109 97 87 89 85 94 121 +123 117 110 82 72 93 88 89 113 145 130 116 +85 100 120 110 124 106 94 102 +161 175 181 151 +162 171 165 157 156 162 151 134 147 170 178 164 +171 178 170 181 184 169 156 137 135 137 129 111 +134 153 156 157 156 155 136 155 154 149 177 181 +172 162 170 184 184 179 147 118 140 145 124 115 +114 126 131 119 107 109 102 86 103 131 135 141 +123 89 55 37 35 45 64 82 78 66 90 84 +69 69 76 70 67 74 58 47 54 100 78 44 +88 106 65 41 34 56 95 86 87 133 121 94 +96 89 45 41 43 33 31 39 46 69 66 46 +57 56 55 57 60 63 63 45 28 22 21 16 +37 31 46 42 46 33 102 145 156 150 181 187 +181 192 196 207 213 217 215 195 168 153 116 92 +133 177 188 187 196 195 190 190 201 210 219 219 +218 211 199 192 212 220 197 186 189 181 191 191 +176 169 166 181 187 201 213 206 206 202 206 196 +186 206 202 205 210 198 188 186 192 184 189 172 +171 192 215 217 216 215 213 216 227 222 216 205 +201 190 182 154 139 135 139 130 129 130 129 129 +129 125 125 127 137 138 124 123 126 127 124 126 +125 124 123 125 129 151 151 144 141 126 148 172 +165 153 194 197 156 150 186 215 220 218 223 222 +220 205 187 181 177 178 171 146 136 138 135 125 +134 135 144 141 137 133 137 134 129 129 129 125 +128 130 124 133 175 197 202 204 185 167 190 195 +194 191 200 199 200 216 217 210 208 222 221 195 +188 190 192 197 207 202 196 206 204 205 206 199 +220 220 205 202 215 223 228 230 228 221 204 199 +196 172 185 168 154 157 179 196 200 201 219 212 +206 216 201 195 200 201 210 218 215 208 206 191 +185 182 180 189 198 197 199 202 201 194 178 179 +166 133 141 175 178 189 188 172 169 128 100 97 +107 110 106 90 66 120 110 80 87 97 73 66 +79 77 128 168 143 153 154 118 158 190 164 138 +125 116 103 110 103 106 106 104 105 120 141 114 +129 140 129 103 74 73 78 98 165 192 187 159 +116 82 89 113 108 103 113 98 114 96 85 75 +79 86 79 115 114 124 141 124 104 95 120 146 +144 138 167 151 103 94 88 87 105 107 127 130 +107 87 102 123 114 116 103 94 123 150 158 128 +117 118 123 115 105 78 95 78 87 100 115 127 +135 113 97 110 89 68 95 93 125 119 103 86 +82 68 76 99 89 86 118 96 83 85 82 100 +98 85 88 88 +162 175 175 172 170 176 176 162 +177 167 149 131 143 146 145 166 170 196 179 160 +167 179 181 182 164 159 175 184 182 177 169 143 +133 139 156 161 179 198 200 189 184 172 154 147 +129 113 123 116 133 141 99 80 66 63 69 89 +108 100 83 106 129 130 126 110 85 64 45 26 +49 72 51 84 111 104 111 93 68 78 65 55 +82 75 48 72 126 79 48 114 151 96 34 36 +57 69 76 45 68 49 60 86 116 110 62 77 +96 109 119 95 63 78 115 121 69 68 37 48 +55 62 55 45 27 26 27 34 12 17 27 49 +93 59 128 165 171 165 185 188 202 199 201 210 +202 194 202 186 158 143 148 92 118 171 184 191 +191 190 190 187 192 208 210 215 223 221 216 202 +200 209 219 195 184 201 211 198 185 185 178 177 +186 190 200 194 200 200 198 196 195 205 195 204 +209 192 195 201 196 189 195 185 172 191 208 223 +223 211 209 210 207 209 212 200 200 191 182 170 +143 140 135 138 129 126 125 125 128 130 130 128 +146 135 124 124 128 130 128 126 129 131 126 129 +135 145 141 138 131 129 136 143 137 131 160 155 +131 176 207 225 227 216 206 221 219 216 202 190 +184 164 168 157 155 150 134 133 140 135 135 137 +137 131 140 138 130 127 126 131 133 133 126 137 +181 197 205 206 194 177 191 200 198 199 211 209 +207 220 218 211 225 230 218 195 185 187 198 205 +202 198 199 201 215 225 210 204 215 204 210 212 +213 221 226 227 226 218 200 201 192 167 174 175 +176 159 167 190 204 205 210 208 212 210 204 208 +209 206 208 208 209 208 202 185 187 184 184 197 +196 192 198 196 199 194 185 166 147 127 181 188 +184 190 178 166 148 114 90 86 93 97 107 126 +104 66 84 60 84 82 76 77 83 86 110 134 +134 134 140 153 172 157 154 140 118 123 129 126 +131 129 136 108 117 94 80 100 102 121 175 180 +161 111 73 74 103 116 127 127 126 116 95 77 +105 105 89 137 119 106 103 84 56 89 84 70 +102 94 138 167 140 105 110 113 113 117 125 155 +148 117 100 106 94 105 109 113 126 118 102 107 +128 140 128 117 103 108 106 114 119 100 114 116 +110 107 96 83 93 92 84 99 87 103 97 87 +97 86 100 86 105 125 109 100 94 104 88 75 +87 79 117 97 92 82 94 83 76 83 76 72 +165 161 166 168 176 162 164 165 169 164 148 141 +143 126 138 128 147 154 188 172 161 187 194 190 +195 197 202 204 185 151 134 136 131 147 160 171 +175 178 150 146 148 138 135 111 114 125 96 125 +150 127 97 58 56 56 67 73 104 123 113 114 +106 103 104 94 74 59 65 89 93 114 118 140 +134 114 95 85 121 73 77 64 60 74 70 128 +145 139 123 125 84 49 55 78 45 39 35 46 +51 47 39 59 129 135 129 109 97 135 141 140 +130 136 135 118 96 75 86 85 54 51 41 43 +42 55 28 64 37 10 34 78 111 73 114 155 +143 159 169 180 194 186 198 196 206 208 197 195 +165 157 162 162 139 169 170 185 188 195 194 182 +185 197 202 207 204 210 215 204 197 199 202 198 +178 196 213 204 195 196 184 186 192 195 209 201 +205 209 209 198 191 202 200 198 204 204 199 198 +195 190 189 191 175 169 197 215 225 216 216 211 +202 200 192 205 205 191 186 166 130 129 125 128 +130 131 126 125 126 129 128 124 123 125 124 123 +130 130 129 123 127 124 121 125 126 125 133 138 +144 150 143 155 156 147 177 178 182 215 221 225 +218 191 164 192 208 217 220 216 199 171 179 143 +149 141 130 133 148 146 131 135 134 126 138 136 +129 136 138 141 135 128 123 141 202 206 210 213 +209 189 190 199 201 206 198 200 207 211 206 225 +229 223 212 191 188 194 198 195 198 198 202 216 +227 227 216 209 209 208 215 213 219 223 225 226 +221 207 196 186 161 150 177 177 180 195 187 178 +192 189 198 210 212 220 219 208 211 218 209 215 +208 198 194 199 197 195 194 195 189 189 191 198 +205 192 192 181 146 128 185 198 192 180 186 170 +135 87 70 102 93 59 67 96 95 83 88 74 +78 82 67 79 115 104 143 115 92 103 105 116 +110 99 98 119 117 93 121 153 137 119 135 145 +138 128 124 126 135 129 125 129 117 109 80 83 +56 76 124 131 125 121 94 84 130 175 170 124 +128 120 105 97 95 67 67 72 79 92 96 127 +140 139 100 95 79 82 123 130 140 138 116 110 +97 94 126 114 114 103 121 120 125 160 172 160 +133 126 130 115 99 100 118 109 108 136 140 123 +113 131 121 90 97 98 111 95 80 103 77 82 +98 118 124 88 94 96 97 88 85 97 106 106 +86 73 86 63 93 89 72 77 +177 180 202 197 +190 181 177 174 162 147 147 159 157 174 170 172 +181 186 169 191 180 149 151 141 156 169 165 146 +141 107 95 102 100 86 98 148 154 167 178 180 +168 167 137 104 84 89 88 104 114 121 105 83 +95 87 109 133 147 166 133 102 95 79 104 85 +92 124 135 148 139 147 125 125 121 105 109 102 +123 123 67 78 60 74 78 105 103 84 70 57 +53 74 143 124 53 46 42 26 33 63 69 121 +121 102 80 93 100 117 113 103 99 97 90 74 +89 105 96 83 58 52 38 41 27 19 15 18 +11 14 6 27 52 25 52 120 139 162 178 179 +185 182 182 182 198 211 215 197 179 166 137 136 +119 167 179 191 187 192 198 188 181 191 191 201 +215 215 220 219 215 197 204 194 189 198 196 181 +204 192 162 188 198 200 216 210 215 215 219 212 +197 209 209 198 199 200 201 198 188 188 181 184 +179 175 188 209 223 220 220 219 208 201 195 202 +211 199 190 168 162 144 128 131 139 127 127 124 +127 124 128 123 129 130 125 129 129 133 126 131 +128 128 126 131 138 134 130 144 149 153 162 170 +153 160 165 164 179 210 201 185 195 167 162 180 +189 207 204 198 196 194 175 141 131 133 130 138 +145 139 133 129 130 128 134 128 126 133 134 128 +127 130 124 166 205 208 202 217 211 184 194 192 +198 199 201 205 212 207 219 223 223 217 199 187 +189 201 201 200 197 201 206 216 227 226 206 207 +215 210 212 222 226 228 230 231 222 209 199 185 +161 149 175 188 189 198 195 185 191 206 212 216 +218 221 219 215 216 225 220 211 200 198 195 192 +195 191 191 184 184 177 185 185 192 191 189 177 +149 151 189 197 199 177 182 169 126 73 69 51 +65 87 88 100 111 97 113 140 98 102 96 77 +87 88 69 108 129 178 161 165 162 137 114 86 +109 126 115 113 115 119 93 111 139 130 137 130 +128 157 164 139 126 118 105 87 82 74 94 164 +157 147 156 108 88 135 167 156 150 110 96 96 +89 86 52 74 106 139 158 180 165 138 141 153 +124 109 119 140 144 174 170 165 138 113 110 126 +120 134 123 114 106 109 115 121 135 125 126 136 +110 95 94 115 123 114 131 115 109 113 110 102 +103 100 79 95 82 80 106 77 80 92 88 89 +84 75 103 111 99 94 115 85 88 92 66 84 +79 76 77 83 +158 180 186 185 190 202 208 191 +172 175 166 167 168 176 178 192 192 178 164 167 +200 184 156 144 153 165 156 145 127 126 114 82 +100 77 76 80 79 129 140 149 138 128 126 107 +106 90 99 129 149 144 127 140 129 119 150 138 +110 106 104 99 103 104 87 116 131 155 160 146 +110 96 85 102 98 95 121 116 97 84 76 60 +62 59 42 38 43 33 35 45 37 70 82 90 +54 26 27 88 129 116 94 73 59 53 47 98 +77 56 65 76 69 75 117 135 104 85 77 76 +76 56 44 33 32 19 19 25 18 19 14 8 +44 48 42 96 131 165 182 187 188 188 188 186 +171 187 189 182 159 140 119 119 114 170 196 194 +185 191 191 190 186 194 198 209 215 219 223 219 +207 201 200 197 211 216 191 179 215 196 174 178 +186 190 199 205 219 213 216 209 200 208 209 201 +198 201 205 197 188 197 179 178 179 165 187 200 +219 226 228 223 216 217 212 202 197 195 195 178 +150 133 134 126 138 130 123 121 134 124 130 131 +133 128 126 126 134 134 133 133 138 126 124 134 +133 128 138 134 154 166 158 167 157 177 182 188 +211 218 206 200 204 167 143 169 179 195 186 192 +208 188 151 137 143 135 130 143 144 141 131 130 +130 125 136 134 134 137 139 128 127 127 134 175 +209 212 206 206 190 178 187 192 199 205 210 202 +217 219 227 225 217 201 194 187 184 198 200 194 +197 201 205 220 227 217 205 215 215 206 217 217 +225 229 226 227 220 204 191 178 176 175 182 185 +192 196 174 189 210 223 222 222 220 217 218 210 +219 223 218 206 201 200 205 202 199 200 210 205 +199 184 185 179 181 189 181 171 154 153 186 179 +187 175 182 164 127 99 75 102 94 93 102 104 +106 79 85 110 106 121 106 97 97 123 95 82 +109 149 147 158 135 149 157 160 145 123 118 134 +118 129 135 131 156 180 147 134 136 115 137 160 +146 138 127 115 97 96 84 108 149 164 172 156 +98 72 66 103 139 113 77 67 82 108 115 68 +87 93 96 140 180 181 131 115 125 139 153 139 +119 105 126 138 124 109 107 110 123 125 118 133 +133 107 108 120 105 113 111 127 125 89 80 96 +102 100 103 98 88 100 104 121 119 114 106 88 +96 99 84 84 80 86 92 95 115 115 139 121 +115 92 85 96 90 96 82 77 103 102 68 70 +158 170 187 199 206 207 179 158 171 167 161 177 +177 178 168 161 151 145 146 150 172 201 160 155 +156 172 169 158 146 164 174 156 129 129 87 121 +134 146 147 147 144 177 187 165 147 137 125 118 +123 128 144 145 100 103 114 123 90 115 118 139 +151 126 118 128 144 133 103 88 73 76 90 68 +58 70 89 65 58 53 58 70 66 42 47 32 +34 48 26 23 38 41 65 53 25 51 87 100 +87 73 80 69 59 56 72 68 44 51 79 119 +87 109 139 128 106 59 64 55 68 68 66 58 +33 23 24 19 18 24 16 25 54 85 60 113 +150 165 182 181 190 202 198 199 196 209 207 209 +196 168 150 153 136 158 181 191 189 179 188 190 +189 194 196 202 210 218 216 215 200 188 194 200 +194 192 196 188 204 211 192 180 184 185 191 206 +211 207 221 218 210 210 204 192 202 206 200 198 +199 201 185 181 177 165 178 182 200 212 220 223 +211 206 204 212 198 192 197 189 156 148 149 128 +135 133 129 128 126 128 136 137 131 125 129 131 +131 131 128 140 128 136 150 135 121 139 159 145 +169 170 153 157 157 178 199 200 200 205 198 191 +204 186 147 191 217 208 197 207 202 177 169 147 +147 131 139 144 141 135 133 131 128 125 127 126 +120 127 130 124 124 120 120 155 185 201 210 195 +176 176 180 191 202 202 206 204 208 220 231 227 +216 209 191 185 194 191 198 205 206 200 207 225 +221 207 204 209 213 216 215 219 227 227 230 222 +208 194 174 159 160 177 185 181 187 184 190 216 +222 219 213 213 215 219 211 209 211 218 208 202 +192 197 202 197 197 205 197 200 206 196 195 191 +187 186 178 148 155 162 188 190 185 168 165 153 +136 90 59 41 57 55 57 60 48 73 105 104 +110 99 124 115 100 92 102 86 52 63 64 78 +108 118 145 174 171 143 114 104 102 124 144 144 +128 133 146 141 169 170 124 139 167 171 146 146 +150 137 111 109 144 172 145 133 144 133 94 79 +100 125 92 55 75 68 103 120 99 93 105 105 +130 149 127 103 66 67 146 159 119 110 102 100 +123 118 108 98 103 98 120 143 141 145 130 128 +134 123 106 115 116 87 82 75 74 97 108 107 +93 102 106 114 134 140 134 120 129 123 118 100 +88 89 94 106 121 131 129 127 95 89 77 75 +89 69 90 79 107 102 73 79 +171 189 204 207 +194 160 148 177 187 191 190 195 182 159 150 148 +149 149 147 147 141 175 194 127 125 127 133 131 +146 156 154 150 145 144 160 155 167 170 167 168 +171 176 165 153 148 150 169 167 136 140 139 143 +151 143 145 153 119 139 159 154 145 143 123 119 +124 129 98 83 69 99 74 63 62 47 58 45 +38 66 52 95 69 43 35 29 39 41 32 41 +52 63 44 63 58 86 78 53 62 59 49 58 +55 56 52 47 37 34 60 79 116 89 114 124 +88 56 60 72 41 54 58 54 49 21 17 18 +19 22 39 38 33 98 82 106 143 153 161 165 +170 196 199 200 194 205 204 202 198 190 154 151 +129 130 160 180 188 188 195 189 194 196 201 195 +207 213 215 217 209 198 207 206 195 192 191 198 +178 191 190 184 185 190 200 196 198 202 210 211 +219 213 209 202 199 198 208 202 201 197 186 175 +166 160 172 180 204 211 225 226 217 209 206 207 +206 202 197 189 164 130 135 135 131 140 134 128 +128 134 137 146 136 120 128 127 136 129 123 126 +133 137 145 129 135 136 151 141 140 150 145 155 +176 185 185 182 189 191 208 213 205 156 161 176 +190 195 174 169 162 174 179 165 160 148 143 149 +154 146 133 134 131 125 127 123 127 135 136 135 +127 124 133 182 205 205 205 211 186 181 194 196 +200 204 211 206 213 226 229 223 218 211 185 191 +192 197 204 199 197 200 210 225 226 215 213 219 +217 216 219 228 223 222 222 211 199 195 178 160 +147 161 178 181 180 184 201 216 216 216 204 210 +221 217 208 211 207 206 206 197 191 190 180 184 +195 198 194 209 201 195 198 186 182 184 178 147 +172 189 196 200 186 162 148 137 104 49 51 53 +54 85 68 43 60 45 96 126 105 118 140 126 +116 93 76 111 93 58 56 58 68 87 107 139 +179 170 162 146 130 87 110 135 153 177 179 153 +141 170 170 138 138 128 121 137 143 131 93 99 +108 126 134 97 80 100 107 104 158 172 167 100 +66 76 73 98 136 140 135 157 130 124 134 96 +53 58 66 109 120 103 114 117 114 114 115 115 +102 108 93 139 178 178 150 121 133 126 108 116 +119 120 115 102 82 90 129 133 129 107 75 96 +93 98 97 92 99 92 107 110 109 110 97 115 +106 100 104 98 99 87 97 85 84 98 79 86 +83 95 90 89 +164 187 188 176 151 156 166 178 +190 190 182 190 174 159 170 177 179 180 178 158 +147 146 180 169 136 157 167 154 143 143 139 150 +156 162 161 175 180 172 165 153 133 121 134 148 +151 171 166 151 155 159 157 150 156 154 144 144 +131 143 136 108 123 153 145 129 99 75 62 80 +136 137 123 108 70 63 52 62 44 37 98 102 +74 47 46 32 36 26 28 36 55 48 73 53 +51 42 44 56 52 52 95 113 77 47 44 27 +72 69 58 79 88 121 64 66 53 64 62 79 +88 109 64 46 37 25 35 19 16 11 25 23 +51 82 67 52 120 158 167 176 181 172 182 192 +188 187 205 218 201 190 179 169 119 114 147 178 +187 192 191 191 197 195 202 199 204 211 216 211 +208 210 201 212 199 194 199 200 184 181 181 178 +182 190 198 198 200 194 210 217 208 211 220 208 +202 202 209 208 197 195 189 190 178 172 172 179 +191 207 217 227 222 217 205 216 205 201 196 176 +166 131 129 126 133 127 128 131 135 130 134 137 +134 126 130 128 137 139 130 127 131 134 131 130 +137 149 137 134 130 125 139 162 187 213 208 205 +206 202 188 211 201 179 191 178 191 155 125 159 +164 182 188 170 150 146 145 131 145 144 129 130 +130 125 124 121 118 130 136 131 130 123 145 197 +212 207 213 212 187 190 200 198 206 217 211 205 +221 223 223 223 217 197 184 185 190 202 205 197 +198 200 213 226 219 215 215 212 209 212 219 227 +227 225 220 209 196 175 170 167 164 165 169 166 +179 191 201 210 204 215 212 220 228 229 220 210 +213 212 192 197 196 195 189 187 191 197 197 205 +204 199 196 197 188 174 162 153 186 175 188 172 +180 185 160 113 78 68 60 63 97 102 99 73 +53 73 77 96 87 97 90 117 134 123 103 59 +68 68 87 105 116 146 135 161 168 157 174 157 +155 137 117 98 100 86 125 153 156 174 176 167 +147 154 157 147 123 106 104 92 143 149 154 126 +84 72 92 113 123 164 184 170 126 108 95 128 +162 143 127 120 134 129 125 134 120 75 68 80 +78 69 78 119 111 113 131 127 125 116 115 118 +145 178 168 133 106 134 129 100 99 87 102 104 +76 86 135 166 154 146 129 115 109 79 90 86 +73 100 82 97 90 114 104 105 109 97 100 100 +111 109 78 97 106 104 107 99 99 100 90 93 +178 179 151 174 184 178 191 198 204 202 208 189 +180 184 189 189 177 164 155 151 158 145 153 197 +145 145 162 164 167 164 166 150 157 162 167 182 +170 157 140 139 134 148 177 177 156 139 146 150 +150 146 150 160 161 147 153 158 158 149 151 169 +168 136 126 100 83 82 87 90 106 127 107 58 +66 56 62 53 57 60 70 66 57 58 66 44 +46 49 38 35 59 48 34 70 45 57 80 84 +123 129 113 95 48 18 22 52 93 70 55 37 +41 62 76 68 53 65 73 52 48 36 31 26 +32 21 53 54 38 25 8 19 37 107 126 59 +116 155 179 179 167 159 174 184 195 201 209 207 +190 190 180 168 127 124 134 158 176 181 182 189 +191 197 195 196 210 219 216 219 222 217 209 202 +192 196 179 164 184 176 172 180 181 191 202 210 +217 209 207 216 209 204 209 212 206 206 211 202 +191 192 188 196 197 182 168 186 209 210 209 223 +220 218 210 211 206 199 195 185 177 161 136 123 +128 126 126 124 124 129 129 128 123 119 130 125 +137 129 123 127 126 121 119 124 124 126 129 138 +137 164 161 182 178 208 199 196 192 190 174 196 +191 180 165 149 172 176 191 207 188 157 166 161 +150 153 149 146 139 164 147 139 131 128 137 134 +130 138 129 130 135 121 148 194 207 205 204 189 +180 194 196 200 213 212 215 216 222 231 221 222 +210 186 179 181 202 201 210 209 199 211 227 226 +217 206 204 207 217 219 226 228 228 228 223 202 +191 180 168 174 171 167 185 198 196 198 208 210 +209 217 216 226 227 230 219 213 215 211 192 197 +191 194 186 188 194 198 194 199 200 199 201 202 +197 172 138 128 171 158 179 160 162 170 160 131 +80 57 80 94 82 63 60 57 52 60 65 69 +87 102 114 83 76 72 86 62 53 57 72 104 +130 144 185 178 160 140 110 120 123 147 166 143 +110 93 103 83 83 105 90 120 134 111 115 129 +133 118 115 104 110 182 191 171 119 77 72 86 +87 77 108 135 116 129 140 131 114 110 120 99 +99 104 136 148 130 108 83 90 69 79 84 69 +103 114 130 149 121 117 115 103 113 145 138 123 +123 128 155 140 110 115 117 107 95 94 92 130 +146 136 153 131 111 111 98 83 96 94 97 96 +106 85 94 79 77 97 92 99 105 93 102 90 +87 88 86 94 78 80 87 93 +148 151 178 181 +179 187 205 205 199 197 185 168 170 168 167 164 +174 178 174 161 147 149 153 192 191 144 158 156 +154 150 165 161 168 181 186 176 179 168 150 155 +157 150 160 160 141 157 162 151 140 138 137 145 +139 130 120 140 139 165 188 174 159 168 146 110 +98 93 89 121 124 88 68 47 56 58 38 38 +37 41 39 38 55 82 64 56 46 60 49 37 +63 114 126 111 86 62 70 105 113 93 59 31 +31 44 28 42 51 66 80 47 37 75 84 99 +70 49 54 42 29 35 53 44 51 85 28 29 +46 126 104 46 74 113 130 44 93 133 161 162 +155 168 157 160 188 196 202 212 211 206 185 171 +147 143 128 157 188 190 187 188 191 188 196 206 +208 209 210 218 221 220 212 201 194 191 186 176 +199 191 188 176 181 199 209 205 213 218 215 205 +213 207 205 212 198 198 212 209 199 200 196 194 +194 188 182 191 201 218 218 213 212 222 219 210 +207 201 204 194 164 140 155 147 137 130 130 125 +125 130 131 131 124 124 131 127 140 131 125 128 +128 134 130 130 127 128 131 145 138 129 134 149 +140 157 175 206 201 179 170 164 156 156 181 186 +170 161 153 165 167 145 160 178 164 141 146 144 +159 187 138 133 131 127 130 145 137 131 130 133 +135 131 175 207 220 209 201 199 180 197 204 211 +205 209 219 223 231 230 219 226 208 180 176 185 +197 206 206 201 207 222 220 218 204 196 202 202 +213 220 229 222 225 227 213 200 190 170 174 184 +188 171 187 195 192 195 202 216 217 216 217 228 +228 223 222 215 217 212 194 190 197 197 197 199 +201 204 200 199 195 198 199 194 184 171 151 147 +168 166 186 177 174 174 144 92 72 51 53 69 +58 64 72 57 100 77 70 78 87 113 92 72 +65 86 65 57 68 59 74 85 95 106 133 129 +140 136 116 116 114 92 127 149 156 137 92 87 +93 90 98 84 93 103 113 127 123 137 126 105 +100 97 130 134 121 107 105 87 74 100 77 102 +103 99 127 134 139 116 96 85 103 104 74 97 +85 96 111 108 103 86 77 106 104 92 95 136 +154 147 125 113 115 133 134 113 72 108 167 159 +137 117 120 124 118 104 108 97 121 138 131 111 +100 92 106 89 80 82 95 92 96 92 79 94 +98 96 105 78 85 89 97 73 67 86 83 84 +76 79 90 87 +135 146 165 174 178 192 190 185 +189 178 177 174 175 179 180 180 177 181 164 153 +148 146 158 176 196 130 136 147 148 156 156 151 +156 170 162 177 172 166 172 164 158 171 178 171 +174 156 137 141 159 154 140 136 148 178 187 162 +146 135 145 153 160 134 125 127 135 118 105 108 +103 75 63 52 53 69 57 36 26 35 52 53 +57 73 53 60 64 89 52 77 141 153 87 57 +68 118 113 120 111 73 48 47 69 46 55 42 +46 52 41 67 62 42 52 46 62 64 65 38 +45 38 29 52 51 84 65 38 22 35 57 98 +67 92 96 64 73 123 156 174 179 187 175 169 +178 179 202 215 217 205 191 157 131 125 99 160 +179 180 180 181 178 177 186 197 205 212 211 219 +221 218 215 217 208 202 198 185 194 196 188 177 +181 187 202 200 215 219 223 215 208 215 212 211 +206 200 206 208 202 194 198 197 197 186 180 178 +189 212 226 226 210 198 207 208 195 192 202 190 +171 153 156 149 125 127 124 128 124 127 130 133 +129 127 127 135 149 133 125 121 127 131 135 131 +126 130 136 154 139 128 121 148 144 189 211 189 +180 158 148 154 172 181 190 177 141 148 194 198 +176 157 159 187 179 159 147 134 140 171 140 133 +133 129 144 144 133 134 127 131 131 138 184 208 +209 215 213 204 184 197 197 202 205 215 220 226 +228 221 218 216 194 171 175 194 199 198 197 204 +209 221 219 204 196 202 205 199 217 221 223 222 +225 223 208 194 167 145 178 180 182 179 178 179 +191 192 199 212 212 211 218 225 228 225 221 213 +217 204 199 200 197 194 196 192 204 207 198 201 +201 196 196 199 172 151 148 185 202 182 188 168 +166 166 129 68 39 43 58 59 99 98 57 96 +93 90 84 73 64 79 90 106 78 57 73 64 +57 85 74 88 110 92 85 80 67 102 124 88 +86 102 105 120 125 130 129 106 104 107 111 118 +149 179 180 162 140 139 135 123 98 90 92 109 +110 118 100 116 96 83 94 98 148 137 121 88 +110 124 119 127 104 102 100 70 72 67 92 109 +102 94 87 106 147 121 106 105 114 118 137 135 +128 139 129 86 39 66 128 131 128 109 107 103 +107 138 120 108 95 108 111 93 105 89 93 108 +85 94 87 90 102 88 97 85 100 108 103 99 +82 95 82 86 88 67 98 79 86 103 107 108 +140 140 145 140 141 145 155 165 171 174 199 196 +205 211 195 181 164 155 159 145 127 138 127 123 +165 187 148 164 159 166 168 174 174 165 159 154 +157 169 169 169 166 157 172 179 171 164 154 136 +146 156 157 151 174 192 172 158 147 168 182 177 +153 140 146 140 127 123 103 96 75 80 35 32 +34 56 57 44 49 69 65 73 65 55 49 44 +70 55 76 111 116 87 43 88 85 80 105 90 +65 73 121 115 67 39 72 69 57 41 77 55 +73 63 52 53 54 77 79 66 35 49 35 31 +39 33 27 25 10 16 26 33 52 66 84 92 +108 138 148 164 174 178 165 168 176 174 187 187 +211 217 213 189 162 154 111 129 166 175 180 188 +187 189 194 207 202 206 211 211 220 223 223 221 +218 209 191 196 186 158 167 179 167 181 201 204 +211 218 216 212 218 206 201 212 215 216 227 222 +218 213 205 191 201 194 180 167 175 198 222 228 +227 221 212 211 208 205 200 199 186 165 136 131 +138 140 129 127 127 129 129 136 145 127 129 146 +155 126 120 123 124 119 123 127 121 125 144 154 +168 150 136 147 137 146 144 117 143 167 179 200 +196 166 137 137 184 189 182 169 146 135 139 139 +143 139 133 140 126 140 136 141 136 128 135 141 +127 127 129 128 124 140 189 202 206 215 205 187 +190 200 197 199 204 212 219 222 225 229 226 210 +195 174 176 185 196 199 204 208 217 226 213 211 +209 206 208 201 210 218 223 222 225 220 204 187 +175 154 181 185 176 179 185 197 201 200 207 215 +213 209 221 228 232 227 225 218 210 207 206 204 +206 209 200 200 207 201 190 199 201 192 200 188 +148 145 162 199 202 178 195 179 155 148 97 52 +52 68 103 104 75 76 65 102 103 100 80 73 +59 75 127 117 82 78 80 89 68 66 62 60 +131 147 124 90 102 137 148 141 135 105 127 121 +143 120 88 97 108 97 128 166 141 123 139 165 +170 158 107 120 108 114 119 127 116 85 123 137 +135 110 97 114 149 168 138 129 117 111 133 170 +171 150 135 106 65 76 93 97 146 137 131 124 +116 111 133 136 103 98 109 135 144 139 136 138 +125 116 102 114 103 119 109 95 110 130 146 150 +141 107 113 116 70 86 78 86 100 80 104 113 +94 93 98 94 68 103 95 84 90 67 90 82 +85 98 98 88 93 123 127 119 +175 154 156 185 +189 178 169 168 157 158 154 156 156 168 176 184 +199 209 208 185 155 143 134 125 140 197 149 149 +159 178 187 166 166 172 156 148 161 166 175 175 +160 154 165 172 178 180 166 148 172 177 175 164 +154 150 140 162 161 168 172 159 159 148 138 121 +123 133 106 80 70 56 29 31 57 78 44 51 +85 73 88 72 52 49 66 65 76 88 85 84 +53 52 79 114 105 69 59 47 52 69 105 64 +49 69 66 57 80 86 78 75 67 80 67 65 +57 60 55 44 45 35 41 37 66 34 33 9 +17 14 11 22 28 58 113 116 94 128 143 171 +176 182 171 170 185 179 189 198 208 196 205 196 +161 134 111 141 175 178 186 190 190 192 206 208 +202 206 194 199 211 222 218 211 213 211 201 201 +189 168 184 176 153 187 195 218 215 216 221 219 +208 202 200 196 212 217 213 217 212 208 202 195 +196 196 199 180 166 197 216 210 212 223 225 218 +218 210 210 199 189 188 167 134 125 128 120 127 +135 128 127 141 134 125 127 133 156 129 117 121 +124 123 124 123 123 126 144 181 191 131 147 167 +164 150 143 144 185 208 205 184 143 156 185 201 +212 192 192 192 165 151 141 140 134 137 134 128 +139 135 134 138 127 127 164 157 137 127 134 125 +124 161 197 208 197 202 209 194 187 199 200 198 +202 212 225 226 233 223 220 212 175 168 186 191 +200 207 208 208 221 225 215 209 202 208 209 210 +216 227 225 225 226 218 202 188 168 168 169 180 +187 185 182 197 204 207 221 222 225 225 230 228 +228 225 215 215 210 195 200 204 196 196 205 202 +196 201 201 201 196 198 191 181 139 139 180 197 +191 184 186 178 159 138 97 65 62 90 78 64 +62 62 67 78 76 59 47 49 44 64 98 148 +137 108 88 74 85 88 80 67 58 93 97 89 +79 78 90 118 147 150 147 123 120 98 83 105 +111 102 86 97 104 106 107 106 133 147 124 106 +105 98 137 130 100 108 108 125 155 160 135 115 +144 179 186 161 146 139 95 117 162 140 137 144 +121 74 79 58 107 128 136 147 148 140 133 140 +134 87 108 116 140 135 124 128 123 117 108 88 +111 111 121 108 94 96 128 138 117 117 100 82 +94 70 82 85 76 104 106 103 89 102 86 95 +107 96 96 85 75 79 77 77 92 93 94 92 +90 95 96 89 +164 160 150 170 178 179 190 175 +166 143 139 149 158 162 165 182 189 186 185 182 +175 154 141 143 147 190 186 158 176 191 189 170 +161 151 143 151 160 166 156 151 155 164 165 161 +166 176 169 181 190 176 170 157 178 169 157 169 +170 169 172 174 170 135 134 157 160 124 85 43 +45 42 25 39 90 67 46 70 78 105 105 92 +99 95 88 65 87 52 43 37 59 93 113 95 +66 38 54 79 65 57 53 52 93 100 131 161 +133 62 43 64 63 55 77 92 74 92 107 63 +53 49 38 43 46 41 34 28 18 25 38 39 +45 68 102 116 78 115 125 157 181 186 172 174 +189 195 196 201 229 215 202 181 147 116 111 131 +174 188 186 186 189 198 208 210 219 211 204 205 +208 217 217 216 212 206 205 205 190 166 180 176 +149 170 192 210 213 223 227 216 202 209 205 199 +199 206 213 218 208 198 199 191 190 185 189 186 +180 196 223 223 216 211 222 218 215 207 205 195 +186 170 153 147 129 125 124 128 127 125 129 139 +135 125 124 134 155 130 124 118 121 120 121 123 +126 134 146 158 137 116 130 145 137 136 160 191 +190 166 150 136 137 140 165 169 149 167 170 156 +146 153 153 155 147 139 128 128 127 131 134 137 +125 145 169 164 134 129 130 118 118 158 202 212 +215 223 215 177 188 198 197 202 207 217 226 225 +223 222 210 195 177 174 187 198 202 204 213 213 +221 226 221 200 194 194 197 215 223 228 229 230 +223 211 194 169 140 160 161 176 181 187 195 205 +200 215 227 220 229 230 228 228 228 220 207 209 +195 195 211 206 195 194 196 201 204 194 190 206 +201 201 188 164 134 114 150 181 185 185 189 179 +177 138 96 124 134 121 111 67 92 98 111 97 +111 69 51 47 49 55 73 99 109 74 65 84 +110 140 105 86 88 70 74 83 77 86 74 69 +62 90 90 113 117 118 80 84 114 134 123 95 +88 89 83 87 94 97 133 113 97 90 76 108 +145 119 138 126 120 123 134 111 120 141 155 149 +133 143 138 125 135 124 116 106 118 113 98 74 +56 82 83 85 100 149 154 138 128 90 92 103 +117 135 123 108 120 114 103 93 97 102 117 99 +97 123 118 125 114 84 94 84 90 92 82 92 +85 87 93 109 99 93 115 102 105 109 94 95 +86 86 82 99 96 90 109 93 90 89 75 87 +168 166 179 177 186 177 164 149 150 148 154 165 +171 177 177 168 160 175 181 160 151 146 151 148 +158 167 205 191 186 168 171 161 155 154 156 169 +190 185 186 195 170 159 176 186 190 184 182 167 +165 153 156 174 185 159 164 179 165 156 165 156 +140 157 184 165 127 85 96 83 58 55 56 52 +73 58 63 67 69 62 109 146 106 66 56 44 +80 55 41 92 75 93 77 56 54 42 48 51 +35 22 39 59 41 72 108 116 104 53 78 63 +84 59 62 75 74 90 100 69 53 56 58 39 +47 36 34 26 18 22 23 15 23 82 127 129 +92 79 106 131 160 169 169 175 180 189 188 198 +217 205 209 208 201 154 138 118 160 180 184 195 +188 192 200 200 207 213 209 208 216 212 204 227 +229 210 197 207 200 194 195 180 178 187 200 205 +210 221 226 225 215 213 207 192 205 217 210 211 +221 217 207 202 197 188 190 187 159 172 211 223 +227 223 217 217 209 202 208 213 190 185 165 149 +158 140 119 129 127 124 139 148 140 145 130 135 +128 126 123 124 135 126 121 128 138 133 134 137 +137 127 134 136 149 161 191 197 174 128 143 158 +190 189 176 147 129 140 159 135 141 144 144 150 +147 149 138 124 129 136 138 129 126 144 158 148 +129 135 130 121 137 179 197 209 219 216 196 178 +195 196 204 198 202 225 226 221 223 220 206 184 +168 175 188 195 197 201 204 200 216 219 208 196 +198 195 213 222 225 229 225 219 217 197 184 167 +162 174 168 184 188 192 196 201 206 223 225 228 +233 229 228 227 218 220 215 199 191 204 204 196 +192 195 190 197 191 195 192 196 199 206 187 165 +162 161 176 177 171 162 170 155 147 104 62 73 +65 98 90 90 59 58 72 90 85 60 73 133 +159 155 127 97 89 92 73 64 90 105 109 100 +73 82 100 137 146 120 95 124 124 102 92 96 +115 141 121 82 110 123 110 131 136 118 98 86 +78 76 80 128 143 140 131 87 89 116 114 98 +93 96 90 97 119 145 143 126 100 110 154 113 +127 121 99 107 99 115 116 104 94 93 83 128 +139 109 103 133 117 104 87 88 117 115 118 105 +107 102 98 119 98 119 110 110 123 126 172 174 +145 121 110 120 111 118 97 94 87 87 105 102 +90 121 114 102 109 123 109 90 96 68 75 86 +85 100 88 93 77 93 75 65 +147 166 164 170 +166 156 150 147 154 156 179 192 179 185 188 178 +184 179 170 158 150 143 153 158 160 171 197 192 +159 154 172 187 187 184 190 204 202 204 209 197 +188 192 185 181 168 155 156 154 166 176 170 171 +159 162 166 179 178 156 164 156 160 177 155 105 +75 82 109 64 60 56 56 92 84 100 87 80 +96 86 94 99 79 69 69 59 46 53 41 48 +47 51 79 53 47 47 44 37 51 79 49 37 +47 60 72 60 73 57 42 54 43 38 44 49 +54 44 56 39 52 66 57 65 46 44 60 34 +21 25 21 16 12 21 93 159 134 57 63 108 +157 164 161 162 177 185 189 195 199 200 218 220 +199 161 133 115 128 164 185 192 190 202 202 201 +208 217 217 217 219 213 202 199 212 216 207 195 +189 211 191 157 164 176 190 204 208 216 222 221 +215 216 209 199 205 217 217 206 217 221 215 195 +187 190 194 185 174 172 194 213 220 222 219 212 +206 204 201 202 202 191 169 164 156 134 128 124 +131 139 137 135 138 134 133 133 134 121 118 114 +124 125 118 121 125 135 136 140 138 133 148 156 +179 196 200 182 140 145 166 192 205 181 166 155 +195 187 167 174 171 147 158 146 145 149 130 138 +131 129 137 129 124 131 143 134 131 135 130 133 +153 181 194 204 213 209 194 187 209 207 199 197 +207 225 221 227 230 221 216 189 165 175 185 196 +204 199 204 206 210 218 218 209 212 211 217 221 +223 218 212 208 197 190 172 143 143 188 189 200 +212 207 207 205 207 222 228 231 228 231 221 218 +222 219 210 196 196 204 204 200 195 204 197 191 +192 202 198 190 194 199 180 131 189 202 204 192 +178 159 151 149 125 79 45 62 45 60 80 97 +97 66 53 55 56 48 70 108 121 111 114 75 +76 74 87 88 105 110 111 97 90 124 134 119 +105 106 107 93 106 103 88 90 85 86 95 113 +78 85 118 111 99 109 113 109 74 69 75 67 +90 95 134 128 98 84 90 99 87 103 114 102 +84 120 137 130 143 130 129 148 114 104 95 92 +111 109 106 105 108 104 102 146 187 189 144 121 +126 105 102 95 118 129 110 117 107 93 100 92 +109 102 100 120 115 125 138 164 160 129 118 115 +139 117 127 121 103 114 110 102 95 114 105 85 +103 82 78 95 65 79 75 75 93 89 98 94 +93 72 83 80 +156 143 146 145 146 162 169 144 +146 174 178 177 182 171 179 178 161 160 151 153 +174 191 188 198 199 170 167 206 176 185 198 194 +182 196 207 206 195 190 191 199 191 184 175 158 +155 170 172 169 177 179 169 171 184 167 169 189 +165 147 157 153 154 129 89 62 52 94 96 68 +36 48 53 56 76 65 67 82 70 82 70 54 +75 83 68 64 67 51 39 44 48 88 94 70 +37 32 28 64 74 52 34 33 44 54 46 48 +51 59 79 77 92 95 85 89 74 59 59 54 +60 65 67 59 51 45 53 52 24 19 12 18 +26 18 67 135 153 106 72 124 141 156 165 153 +169 187 194 191 200 210 213 207 200 175 138 103 +98 151 178 191 205 207 192 198 189 204 218 212 +212 221 220 205 195 209 211 209 201 211 205 176 +159 159 186 191 202 219 225 226 222 222 220 213 +191 196 210 209 219 217 218 206 197 195 190 188 +169 191 216 221 222 219 217 219 221 210 204 201 +196 194 171 174 205 169 127 127 130 130 138 138 +151 130 134 136 137 124 124 119 124 124 119 127 +143 154 139 137 127 146 162 155 177 182 147 133 +140 169 198 192 182 176 179 186 172 145 133 143 +155 179 177 148 135 130 128 134 129 131 131 126 +126 137 134 129 126 129 131 133 167 190 207 211 +218 220 194 190 200 200 210 202 201 216 220 221 +220 222 215 184 156 171 191 202 205 208 209 206 +221 227 215 209 210 206 213 223 219 216 222 220 +200 192 172 156 165 174 177 201 204 190 199 201 +208 226 229 229 228 231 222 229 226 218 217 202 +195 200 202 197 194 199 196 207 204 204 200 198 +189 179 149 102 174 184 175 182 185 168 155 148 +105 105 83 77 107 104 127 92 85 63 115 63 +42 53 60 96 113 135 84 52 84 108 107 138 +176 165 130 114 113 102 103 87 84 105 97 94 +114 150 115 102 82 73 76 84 82 115 107 150 +151 134 113 110 97 89 131 153 153 140 86 102 +106 98 92 74 102 103 108 107 80 70 94 89 +75 85 99 115 116 111 95 93 100 134 116 102 +113 100 121 119 125 167 177 131 121 120 94 105 +97 141 134 95 119 116 115 109 93 111 95 117 +133 130 117 110 134 118 93 102 107 97 84 100 +100 108 108 118 111 96 107 93 63 82 78 89 +90 80 84 89 69 85 115 113 114 99 68 75 +136 126 154 165 195 196 170 151 161 151 153 157 +159 155 165 167 158 167 166 172 182 184 184 188 +178 168 181 206 210 190 195 181 184 187 184 172 +170 177 172 174 180 175 159 166 178 189 198 196 +189 171 179 189 175 176 175 154 126 110 114 96 +86 65 52 35 63 78 73 44 31 23 35 34 +26 24 24 41 46 28 43 57 53 66 73 58 +49 52 41 54 80 58 46 56 41 41 85 94 +60 36 34 25 31 41 60 69 55 56 68 78 +92 87 80 87 65 69 59 60 48 47 69 47 +33 41 48 79 51 44 32 28 31 38 70 117 +128 94 58 105 131 153 176 170 174 176 190 190 +192 194 199 217 212 188 155 124 98 144 180 192 +194 189 191 196 189 209 213 202 217 221 215 208 +189 188 199 201 200 196 189 175 186 176 190 198 +197 212 228 229 223 218 222 220 205 202 199 211 +222 222 218 210 206 197 190 188 177 192 208 218 +229 225 220 213 209 205 207 198 195 192 162 153 +189 186 139 134 130 133 133 138 133 133 127 125 +120 127 120 118 123 117 128 135 129 133 124 124 +130 128 135 156 170 155 144 139 137 167 177 168 +181 179 149 137 134 127 141 143 134 150 168 167 +143 129 128 131 127 130 129 123 128 133 137 127 +125 131 131 139 178 192 211 221 220 212 196 188 +192 204 202 197 196 210 219 221 223 213 202 180 +160 177 197 204 208 206 212 211 225 225 215 208 +204 209 213 217 221 223 225 220 201 181 180 182 +180 177 167 199 207 194 212 213 221 227 230 230 +229 232 229 226 221 215 215 206 199 201 199 199 +191 197 199 206 201 211 201 197 187 175 137 136 +178 181 180 188 177 180 168 144 99 78 76 92 +125 147 154 116 68 65 75 121 117 102 70 67 +117 94 70 124 116 97 133 124 133 147 153 146 +124 107 86 88 69 68 108 103 92 136 113 105 +102 103 106 74 74 111 119 104 117 144 134 110 +68 88 92 121 161 180 136 94 80 76 98 79 +68 128 116 114 109 85 125 138 92 80 73 94 +96 83 78 100 127 133 137 111 104 107 97 98 +108 113 131 135 99 98 103 72 79 103 116 124 +115 119 116 103 106 114 104 108 123 135 146 131 +115 125 115 96 109 94 88 99 92 80 89 98 +105 109 97 90 84 83 86 83 90 82 88 82 +86 92 102 116 113 94 85 56 +139 160 177 177 +172 177 185 179 167 165 175 176 171 189 187 185 +182 189 195 190 177 169 177 174 170 188 205 204 +215 180 166 161 154 159 178 181 187 189 188 191 +192 185 168 168 165 179 188 181 156 148 155 165 +174 157 133 121 113 113 99 84 59 44 45 47 +70 70 55 39 36 43 34 58 38 46 42 56 +73 43 54 46 51 64 55 43 47 54 70 88 +98 70 104 108 148 128 108 89 31 33 29 21 +53 45 51 56 67 72 45 57 53 65 70 45 +33 55 57 79 54 51 34 43 35 35 44 63 +68 38 37 28 34 38 58 121 148 158 114 109 +148 148 162 172 179 179 187 176 180 190 199 202 +197 170 159 159 120 143 178 187 194 190 191 202 +200 213 220 219 222 221 225 223 216 204 200 194 +190 207 195 181 184 166 187 188 197 206 225 227 +225 217 215 223 212 199 206 213 218 216 207 209 +206 195 189 187 184 162 176 201 219 222 218 199 +205 206 204 200 200 190 174 148 136 149 150 149 +134 131 134 139 139 153 131 125 125 123 120 124 +126 124 130 126 123 125 123 138 159 162 160 171 +162 133 133 154 174 192 151 135 130 126 151 177 +171 179 165 168 181 158 151 145 131 125 126 124 +134 121 135 133 144 127 130 123 130 131 125 145 +184 204 219 223 222 211 184 187 201 205 196 204 +215 223 227 226 227 210 177 157 161 182 194 199 +198 207 217 205 219 227 220 216 210 207 218 220 +221 226 228 221 200 169 161 190 168 167 176 200 +201 205 223 222 228 232 236 228 230 232 222 211 +215 215 204 200 201 199 189 197 206 211 199 201 +202 202 202 201 184 148 117 150 187 194 180 182 +191 187 153 141 85 41 31 36 47 49 56 56 +74 66 67 89 95 106 83 64 41 48 68 82 +79 82 96 100 87 113 108 107 96 109 128 98 +98 102 97 78 62 105 98 80 99 100 119 115 +111 111 124 105 96 109 151 192 187 141 100 111 +111 127 140 123 105 99 87 119 123 141 149 123 +121 115 129 180 180 128 94 82 58 63 78 77 +95 96 105 136 128 102 102 98 100 95 94 86 +93 73 83 92 84 80 88 86 100 114 93 84 +123 130 120 110 92 119 127 131 133 102 99 89 +123 111 103 106 97 94 80 96 109 105 97 89 +92 74 104 143 110 98 86 84 96 89 108 87 +102 90 77 68 +180 168 145 128 124 148 151 154 +161 168 165 177 186 194 199 187 185 188 188 182 +192 188 176 161 171 181 174 177 186 206 162 159 +184 192 191 198 191 180 199 192 184 177 169 159 +148 155 158 145 148 153 167 162 150 148 109 97 +89 114 89 67 70 48 54 66 37 55 35 51 +53 74 44 29 46 38 54 100 62 54 55 57 +66 62 48 44 78 77 102 92 72 83 100 113 +128 88 56 46 47 53 55 56 48 59 39 65 +62 70 65 54 67 83 64 46 42 47 51 51 +54 33 34 29 21 26 42 65 95 39 41 29 +24 31 41 97 138 136 98 80 111 133 158 175 +184 191 189 182 177 179 189 211 223 212 196 175 +167 140 167 189 195 189 187 194 197 210 219 217 +221 221 223 223 221 202 200 205 196 200 186 176 +167 149 161 178 195 198 223 227 223 222 207 219 +213 205 209 210 219 210 207 211 201 197 195 190 +174 166 190 204 215 225 227 219 205 202 201 207 +206 197 199 184 168 139 139 153 136 130 137 135 +144 138 131 135 135 124 125 120 119 120 121 125 +124 134 133 134 153 150 136 148 140 129 147 166 +156 171 160 164 176 167 147 140 157 172 144 133 +143 156 138 140 147 130 124 126 119 124 126 131 +128 127 133 129 127 124 130 159 197 202 213 215 +215 199 182 195 205 215 208 210 226 228 226 221 +215 202 174 123 162 186 198 205 204 206 210 209 +223 222 212 211 206 213 223 219 217 222 225 220 +202 175 164 186 181 179 192 198 187 200 213 223 +229 230 232 228 225 221 215 212 212 218 200 195 +204 206 196 196 206 212 206 201 200 204 200 191 +182 140 140 141 177 184 189 187 190 186 148 120 +53 41 63 72 116 100 70 74 70 94 79 57 +52 73 102 62 67 49 57 106 84 103 99 83 +76 98 99 126 139 120 141 149 124 105 78 48 +57 92 76 70 87 82 79 88 86 108 121 150 +98 73 94 128 171 198 187 143 118 125 149 153 +136 117 137 127 162 170 181 158 129 114 103 107 +146 168 139 99 80 82 77 89 87 116 130 156 +143 125 119 93 90 104 97 96 89 82 80 94 +89 70 80 67 74 95 84 102 87 117 149 131 +110 95 109 97 115 111 98 109 102 116 108 111 +116 103 121 110 107 104 100 102 73 87 99 123 +118 76 75 90 74 100 103 88 99 108 84 60 +130 121 111 115 133 140 159 180 169 167 180 195 +200 200 189 195 200 182 187 192 186 172 158 166 +161 172 164 164 171 204 208 198 201 196 192 176 +174 176 164 166 176 180 174 167 155 145 141 148 +169 157 130 128 118 103 77 67 85 86 75 88 +79 73 93 84 39 35 58 66 92 82 43 57 +37 56 97 107 79 74 83 92 83 66 63 72 +72 80 64 54 59 44 49 64 45 42 34 29 +37 43 34 33 29 37 44 43 38 51 63 87 +92 83 106 106 54 48 52 64 54 45 35 37 +39 31 33 26 39 34 24 18 18 22 34 139 +138 123 97 74 107 136 171 178 167 174 179 185 +187 195 195 208 219 209 182 159 149 157 159 184 +186 191 199 198 204 206 218 220 223 221 225 225 +216 212 213 213 218 215 189 156 140 146 167 181 +187 198 213 223 223 222 213 221 218 197 205 221 +217 205 207 207 198 196 192 187 179 174 186 210 +220 226 230 228 219 217 206 208 211 198 188 175 +179 162 140 143 143 131 133 129 135 128 126 131 +137 121 124 124 126 119 121 119 124 135 135 133 +140 129 150 167 151 161 169 162 153 157 151 165 +178 182 200 199 165 154 125 138 136 153 137 131 +140 127 125 123 124 138 120 121 121 126 127 123 +123 120 131 176 201 200 215 212 215 198 186 192 +198 207 202 206 223 228 230 220 211 205 169 140 +170 189 194 199 200 201 216 221 228 226 218 208 +209 220 216 207 215 221 215 205 182 180 178 185 +202 204 184 175 185 195 207 223 228 228 230 231 +226 221 211 222 220 215 201 208 206 201 205 205 +207 209 210 208 204 206 197 191 172 162 169 172 +196 191 189 192 198 192 162 139 100 86 106 124 +138 131 98 79 58 72 60 57 78 95 79 57 +66 48 39 64 82 73 102 88 89 66 75 105 +126 124 151 156 135 117 108 96 65 57 77 96 +113 151 126 86 89 103 78 103 130 121 104 114 +105 99 168 182 171 135 124 124 139 133 131 126 +97 113 131 134 117 99 117 109 97 115 118 106 +88 97 83 80 93 100 123 134 124 133 126 114 +88 86 102 114 96 75 97 93 94 96 80 89 +82 79 134 129 90 93 147 149 125 129 124 115 +106 108 127 137 134 114 107 109 105 130 150 137 +116 109 96 95 99 80 82 79 73 89 90 105 +108 105 98 85 89 83 86 86 +150 143 138 162 +170 177 171 167 168 171 171 184 198 188 176 177 +171 158 168 166 177 180 196 197 190 196 194 197 +196 202 220 188 181 170 165 158 154 144 147 168 +171 156 160 171 150 144 129 137 135 104 93 97 +88 65 43 44 57 63 75 87 80 73 66 48 +44 53 99 117 86 66 49 33 45 60 102 78 +59 97 118 109 78 55 35 41 39 49 58 35 +35 37 28 60 86 120 80 66 49 55 60 22 +39 38 39 46 56 72 86 77 58 84 84 64 +65 73 107 77 67 55 43 53 35 32 39 38 +34 28 22 23 19 32 23 84 102 129 131 105 +106 126 153 143 151 171 170 178 184 186 194 212 +221 212 215 201 164 143 143 184 199 198 194 195 +191 194 211 219 225 231 231 228 223 213 207 213 +205 212 194 165 157 176 184 186 187 194 210 226 +223 219 213 218 215 212 202 211 221 219 209 216 +207 189 192 194 185 172 184 194 215 221 220 223 +222 215 206 208 202 201 185 176 160 166 165 150 +139 123 129 129 126 135 133 130 128 126 124 124 +127 121 116 127 121 126 128 121 123 129 140 126 +126 133 118 120 136 126 125 156 167 178 160 166 +159 155 147 143 139 137 135 131 134 130 129 126 +121 123 128 130 127 127 126 128 127 127 143 184 +205 219 221 219 207 190 190 205 202 201 207 215 +222 233 225 218 218 195 162 153 178 187 205 207 +204 211 216 221 229 221 213 212 213 216 215 212 +223 227 220 197 174 157 171 189 200 188 176 184 +189 210 220 223 225 228 226 227 225 222 215 217 +206 199 198 197 202 207 197 195 205 201 204 206 +202 194 200 175 139 168 181 185 190 188 178 179 +189 172 150 116 95 86 58 44 47 57 77 69 +73 60 62 64 54 64 36 45 57 38 67 70 +84 99 94 95 110 113 98 67 59 58 78 108 +118 98 85 105 126 109 99 126 148 135 114 93 +92 93 65 95 89 107 86 83 104 106 94 110 +117 113 104 130 139 136 125 155 154 100 94 106 +86 78 73 108 114 119 117 123 119 110 114 90 +92 114 110 106 95 89 116 135 119 119 108 90 +104 108 77 106 97 93 116 102 93 107 94 79 +92 74 72 115 107 123 126 129 127 105 105 118 +127 98 98 97 88 120 127 131 120 92 84 76 +65 63 68 89 82 79 82 111 116 93 86 79 +83 89 83 102 +148 147 157 174 181 157 139 151 +155 162 170 180 185 180 182 174 178 180 171 176 +186 204 206 191 184 178 182 182 180 185 195 201 +146 155 168 169 159 149 153 139 117 121 115 120 +117 118 144 165 151 99 96 97 87 78 55 82 +67 73 86 98 72 53 86 69 79 114 115 113 +94 73 74 54 78 84 67 63 84 123 105 66 +68 56 51 39 49 56 51 58 36 77 73 99 +124 130 90 59 85 92 41 44 29 51 46 78 +75 70 76 70 73 67 66 58 59 76 69 55 +42 39 34 26 32 60 63 41 36 25 16 21 +39 43 63 124 149 143 131 83 64 98 128 149 +160 171 168 168 178 181 185 199 206 206 211 190 +182 150 136 169 178 180 195 190 185 195 211 218 +225 228 229 228 217 220 208 199 204 205 201 192 +155 166 172 179 182 192 215 226 229 226 219 218 +212 207 204 206 221 221 220 222 212 201 199 189 +186 168 171 210 218 218 215 212 213 220 207 200 +204 208 187 175 154 136 137 145 134 129 135 138 +151 153 136 134 128 124 130 131 124 121 125 118 +124 128 135 133 133 136 140 139 146 133 135 138 +146 140 155 139 138 127 135 157 155 131 133 145 +146 143 148 135 140 127 124 129 121 121 121 126 +125 123 121 125 121 123 144 198 208 210 219 218 +198 189 200 198 200 205 206 217 229 229 219 209 +208 185 149 153 181 199 209 205 209 213 211 219 +226 216 219 212 217 218 213 211 223 221 205 189 +174 146 167 198 192 190 195 196 207 217 221 227 +228 222 222 219 218 219 212 199 198 191 188 198 +207 204 205 198 208 206 201 195 204 202 190 151 +105 136 161 174 169 184 176 178 189 167 137 85 +44 34 48 44 73 100 114 111 92 68 73 69 +114 93 42 38 56 55 59 114 130 130 123 104 +88 94 88 107 87 72 93 109 88 82 102 84 +102 119 127 151 174 158 127 131 111 109 115 108 +106 85 87 92 62 80 96 111 116 109 98 93 +125 135 139 126 135 148 135 111 78 86 68 67 +82 82 87 119 109 90 87 97 97 115 111 123 +123 103 88 90 136 137 119 121 94 88 100 86 +93 97 115 104 100 88 88 88 96 114 125 114 +113 110 121 111 100 89 96 96 110 90 88 82 +100 94 119 119 109 105 86 83 77 78 84 78 +97 93 97 111 96 96 75 87 82 87 79 57 +158 166 148 156 149 147 168 170 165 181 194 198 +197 190 181 191 201 186 179 179 187 196 177 149 +138 150 162 167 157 147 146 191 186 149 174 162 +156 136 100 95 107 106 113 123 133 153 182 180 +148 117 121 131 125 113 94 89 67 59 62 58 +62 95 73 66 58 63 83 74 73 76 98 133 +89 76 54 49 72 63 58 36 62 58 54 62 +65 74 66 45 67 75 85 80 85 104 84 77 +103 98 64 33 65 49 75 68 42 53 55 77 +73 56 47 39 62 60 60 62 47 48 41 33 +42 56 86 70 48 32 16 33 49 34 52 116 +138 144 133 119 74 95 134 150 156 168 174 170 +184 177 178 190 191 202 199 172 139 150 110 149 +165 174 177 189 188 190 198 211 221 225 227 219 +221 222 215 215 211 198 199 202 177 174 174 178 +188 191 207 221 225 222 223 220 217 199 206 206 +212 219 223 221 220 202 205 201 185 171 165 198 +198 221 227 222 216 209 205 201 210 199 188 168 +156 139 129 128 125 123 129 135 131 135 127 125 +125 135 139 124 119 121 121 123 124 120 116 119 +128 133 143 144 154 158 167 167 159 138 153 181 +206 190 178 157 153 140 143 137 128 129 125 127 +135 126 138 128 120 124 127 121 127 129 130 129 +126 135 169 191 206 216 220 219 212 190 195 202 +205 199 204 210 221 227 217 210 208 190 167 169 +191 197 200 201 206 199 208 216 219 212 207 202 +218 218 215 210 210 199 194 187 170 178 196 191 +200 204 191 204 211 207 221 227 223 221 218 218 +229 222 206 211 221 207 197 201 204 204 207 201 +216 215 204 199 204 185 168 144 136 157 159 178 +201 197 192 190 179 151 126 100 53 31 26 28 +56 63 93 78 48 41 47 66 59 64 59 59 +55 58 76 129 120 99 103 106 102 88 95 87 +94 124 126 116 127 102 99 127 116 98 141 123 +161 199 192 156 140 102 95 118 145 138 114 114 +79 82 64 85 111 126 146 134 118 110 103 103 +94 90 125 141 99 63 73 72 92 113 108 147 +124 82 87 93 124 130 119 107 113 109 94 92 +70 96 115 107 114 98 105 95 97 103 85 97 +117 105 95 75 90 114 153 153 127 104 93 95 +102 99 109 96 123 104 93 96 94 113 105 119 +110 94 94 68 95 76 72 97 93 110 97 96 +96 89 84 80 76 74 79 74 +146 155 153 147 +150 164 159 164 185 188 194 191 189 192 199 201 +205 205 190 182 194 155 140 148 151 166 184 194 +184 185 182 176 206 185 136 135 130 119 131 153 +146 129 125 117 115 140 143 127 114 97 116 108 +116 98 75 85 72 64 87 94 109 95 77 56 +73 77 60 70 87 103 121 105 85 58 51 52 +49 54 37 46 57 42 64 57 75 62 60 54 +47 66 42 42 57 68 68 75 77 69 63 66 +63 63 38 53 53 68 75 75 52 56 57 59 +76 70 45 45 46 49 72 103 58 55 52 35 +43 56 42 27 22 26 29 59 113 119 126 133 +94 84 131 165 175 175 172 171 184 177 176 192 +188 202 200 198 182 165 153 155 167 170 174 192 +197 200 207 216 221 223 226 230 228 221 219 215 +200 199 190 182 175 165 155 153 179 169 191 218 +209 216 211 208 215 213 205 197 199 209 223 219 +216 202 199 195 194 182 180 202 201 211 220 228 +225 218 217 204 211 209 197 174 167 147 151 144 +133 126 135 135 130 130 128 121 118 126 119 120 +125 121 124 121 120 124 126 123 126 125 133 127 +136 136 137 120 134 135 145 146 162 171 157 149 +150 166 153 145 155 144 144 143 140 126 140 124 +127 123 133 148 135 143 133 125 120 126 175 195 +207 220 221 217 194 179 194 202 200 208 211 210 +225 225 212 213 192 175 156 172 191 200 201 198 +209 212 218 223 220 204 207 210 212 213 216 212 +205 204 187 178 169 171 168 177 189 196 206 207 +200 207 226 228 226 217 221 221 225 220 205 195 +196 205 199 200 204 205 205 201 206 199 204 201 +196 187 157 153 146 184 187 180 196 184 181 190 +164 137 100 104 100 82 74 74 62 70 73 74 +43 62 70 72 75 77 66 51 68 38 67 87 +120 121 114 105 107 97 124 128 137 140 105 137 +165 196 189 172 161 145 124 109 95 136 179 124 +95 124 99 100 99 108 130 131 131 82 80 82 +92 88 110 133 136 138 136 105 93 74 78 116 +125 85 85 74 79 95 97 116 148 100 84 80 +97 160 137 119 124 113 105 68 89 84 78 83 +111 118 105 110 98 100 117 106 106 118 106 85 +97 82 95 124 113 92 115 92 106 114 99 124 +121 113 113 103 98 106 111 109 134 126 96 106 +103 94 89 82 89 97 94 83 87 74 82 86 +76 74 86 68 +166 158 154 157 168 174 177 182 +180 180 175 174 188 195 202 200 201 190 182 184 +182 175 162 164 185 204 197 189 175 168 148 149 +156 205 170 140 165 167 155 151 117 106 104 115 +120 118 108 80 76 90 69 92 76 58 78 68 +84 98 75 74 74 55 80 99 94 102 79 66 +86 93 78 87 73 60 54 48 39 32 42 47 +51 43 62 54 48 47 58 83 54 53 39 47 +59 60 57 39 39 42 42 65 46 44 68 82 +51 53 59 58 55 58 64 74 65 75 62 43 +46 51 60 62 77 68 72 39 38 51 44 34 +39 39 23 96 141 138 145 139 109 80 125 161 +158 169 168 170 180 188 184 192 198 201 199 216 +209 165 140 147 177 186 185 195 197 200 208 226 +222 226 229 231 225 228 219 206 208 196 198 187 +204 197 171 145 149 159 181 212 222 220 213 208 +205 216 215 206 199 207 212 212 215 205 194 198 +199 189 169 204 218 209 206 222 227 225 218 199 +204 197 188 176 165 147 138 135 134 125 124 127 +133 133 138 120 116 120 120 127 121 123 123 117 +120 124 127 131 133 133 140 150 156 151 139 176 +206 206 206 189 196 191 191 195 176 162 167 175 +154 141 137 133 140 137 128 127 123 117 123 125 +128 128 125 123 118 131 188 215 218 223 226 216 +181 189 206 210 206 208 209 226 227 225 215 208 +195 172 153 179 198 202 200 208 209 209 226 220 +215 202 209 208 216 223 212 205 212 219 208 186 +179 184 178 179 176 196 198 197 199 201 219 216 +207 211 226 226 220 219 202 196 191 192 195 201 +200 199 208 207 202 195 197 192 190 176 147 158 +182 204 190 178 191 181 169 182 156 136 90 68 +66 67 83 95 102 92 73 73 80 96 67 53 +66 76 65 63 64 66 68 107 118 124 131 98 +100 110 106 121 116 104 67 93 96 103 128 144 +137 109 95 111 84 96 92 116 158 154 129 88 +115 119 97 109 114 108 92 55 62 79 90 95 +111 118 119 120 82 90 83 95 138 130 98 77 +110 114 110 105 137 140 92 82 97 109 121 114 +102 105 75 92 80 80 83 93 100 75 108 113 +109 111 117 135 135 113 103 102 73 88 96 98 +109 98 94 102 93 82 109 108 114 131 121 86 +98 98 104 114 116 128 121 114 102 105 95 83 +93 88 85 87 68 83 102 98 100 93 95 72 +174 170 169 171 185 181 185 181 185 171 175 198 +201 197 190 200 197 191 189 175 165 151 143 153 +178 192 205 207 198 170 164 148 136 161 200 146 +151 156 149 149 143 158 170 158 127 98 87 97 +110 114 118 114 97 95 87 72 89 87 80 80 +63 111 117 120 136 118 94 94 90 75 94 124 +124 83 57 42 46 32 63 53 58 52 53 49 +46 100 151 145 74 43 47 77 85 74 67 75 +39 54 47 59 76 54 46 44 27 25 41 46 +38 65 57 60 86 109 110 68 52 72 78 54 +62 58 43 32 19 24 52 35 15 17 19 49 +93 115 127 104 90 82 104 149 176 176 160 164 +172 179 187 188 184 197 198 209 218 204 167 128 +167 185 192 200 191 195 206 217 211 223 229 229 +226 223 219 210 204 194 190 175 190 188 165 166 +178 168 171 196 212 216 215 212 213 211 212 207 +206 216 210 218 220 211 205 199 204 192 166 174 +215 219 202 219 228 219 209 212 201 206 200 171 +150 158 149 157 136 126 127 127 129 135 136 129 +119 125 124 119 123 119 127 119 123 124 124 128 +125 133 135 131 149 158 147 166 161 153 145 159 +177 151 141 133 133 139 151 140 136 127 135 135 +136 127 124 126 120 120 127 130 130 140 133 120 +118 140 196 210 221 222 206 191 179 191 202 202 +199 200 208 222 220 220 202 206 200 167 162 186 +194 196 206 209 205 219 225 218 215 205 209 218 +220 220 212 204 212 209 195 185 180 180 180 179 +177 190 194 199 197 205 207 197 217 230 229 223 +218 213 199 198 201 198 195 198 196 200 200 205 +198 191 195 190 171 149 131 144 179 201 192 186 +196 196 192 167 160 133 86 59 46 45 46 69 +85 124 106 103 89 78 65 105 125 110 64 58 +64 86 143 160 166 139 92 111 125 94 106 100 +90 100 96 69 104 125 128 129 131 117 95 82 +69 93 113 126 136 120 139 131 85 118 135 115 +104 105 89 73 76 54 76 117 110 97 108 95 +106 86 85 119 149 138 157 146 89 113 137 120 +111 118 100 110 108 111 126 107 98 99 79 82 +89 77 88 79 85 94 92 95 115 133 129 137 +137 127 123 90 96 80 85 102 119 120 102 89 +99 99 102 95 96 106 108 104 82 93 107 96 +99 106 109 96 89 104 109 106 77 87 84 94 +98 84 96 86 87 95 87 90 +169 170 172 175 +176 179 168 180 187 187 198 201 195 191 186 185 +182 166 147 144 145 138 151 153 167 175 175 170 +164 158 145 148 156 159 177 209 156 158 174 175 +170 167 164 148 111 110 138 123 134 139 136 116 +121 129 114 85 69 73 72 103 115 111 121 135 +134 110 93 100 79 72 83 150 128 68 57 38 +52 76 85 59 52 44 60 54 73 102 99 75 +41 29 51 77 99 98 102 82 62 58 73 78 +62 68 44 44 43 35 47 43 58 66 60 64 +93 82 76 117 118 73 103 102 52 41 44 34 +34 27 24 23 23 25 24 29 57 105 144 135 +107 96 79 131 158 171 169 170 176 180 184 191 +198 201 196 205 207 198 185 130 147 171 188 188 +188 189 185 199 207 226 225 225 223 227 225 208 +202 198 189 181 198 190 182 176 175 178 186 176 +199 217 209 209 216 207 208 200 204 213 219 222 +217 208 198 198 196 186 174 164 201 211 213 219 +217 222 222 201 198 198 196 176 159 160 167 156 +154 134 130 134 128 128 133 126 123 125 125 128 +127 126 127 125 120 120 116 120 124 125 118 141 +139 129 130 124 136 144 178 174 174 157 136 131 +136 145 171 154 136 137 138 138 133 126 128 128 +125 126 125 126 134 124 125 115 119 148 199 215 +220 221 212 207 185 189 200 194 202 209 217 219 +215 215 201 202 187 169 162 186 198 204 206 200 +205 217 221 218 208 197 209 215 217 216 216 218 +222 213 184 177 160 162 188 174 164 178 190 192 +198 207 204 209 218 221 235 229 205 201 198 200 +202 204 202 198 194 196 186 189 180 186 194 195 +168 131 144 172 192 195 191 199 188 182 188 158 +156 153 119 76 80 44 34 44 35 56 67 65 +68 75 99 108 97 84 116 82 94 128 100 86 +86 105 111 111 138 116 70 75 67 60 84 97 +82 123 147 162 120 89 98 92 74 68 88 97 +104 123 104 108 141 133 145 154 127 115 107 69 +57 55 53 86 107 102 108 96 113 106 106 90 +145 148 140 150 144 135 134 123 97 83 89 105 +114 123 125 114 107 117 119 82 98 99 99 100 +92 93 104 115 133 165 155 123 133 128 107 119 +104 92 95 82 102 126 130 103 105 119 95 108 +97 85 96 95 92 67 119 93 87 117 106 105 +94 96 114 94 97 86 104 102 110 95 77 93 +86 90 95 89 +158 153 171 185 184 177 187 197 +185 190 194 188 191 181 166 164 154 151 153 166 +165 169 166 157 161 154 159 175 184 162 161 160 +160 170 164 180 205 157 148 176 181 185 181 151 +121 117 125 118 118 137 113 104 121 143 124 100 +98 105 106 150 136 134 115 105 95 78 108 69 +65 75 83 141 99 68 54 73 98 107 58 39 +35 45 48 44 46 69 58 54 58 52 58 79 +102 103 74 70 63 82 56 52 78 82 53 52 +34 45 57 72 68 64 44 45 49 42 82 77 +138 137 57 66 60 36 27 24 21 21 21 19 +42 58 16 21 43 104 146 144 160 134 73 86 +148 171 170 187 187 187 194 197 192 199 194 191 +186 187 171 148 133 160 177 185 189 194 195 194 +200 221 222 218 225 230 225 218 215 210 199 165 +158 190 196 180 185 178 177 180 180 186 208 211 +207 213 220 207 202 206 211 221 221 209 209 195 +181 182 171 160 184 200 213 215 216 222 221 210 +201 197 191 180 161 155 155 143 149 129 124 126 +130 133 137 127 121 121 120 121 124 124 124 127 +123 116 117 118 116 126 123 134 139 137 129 129 +145 169 190 162 162 153 148 139 136 151 169 147 +138 138 134 129 130 130 125 125 124 127 127 125 +125 124 128 119 123 168 201 206 211 217 210 206 +191 199 190 192 192 202 207 217 209 206 209 197 +180 180 170 190 197 198 202 205 206 211 220 210 +202 212 211 211 210 204 217 226 222 205 176 167 +177 201 202 174 162 175 190 202 205 198 207 217 +221 229 231 223 200 196 192 197 201 199 209 200 +198 206 197 195 184 192 181 172 146 113 178 206 +201 205 199 196 190 180 189 160 137 95 80 96 +147 169 124 83 83 47 53 66 62 42 62 66 +57 89 137 94 63 60 72 69 72 76 80 88 +103 93 78 62 72 67 68 89 76 80 75 94 +116 131 110 94 79 93 97 104 106 89 114 111 +125 166 150 138 161 162 128 111 113 92 78 64 +76 108 127 139 126 108 111 92 115 141 125 141 +144 146 168 156 116 88 84 77 99 99 131 147 +115 136 121 117 90 107 123 109 107 86 109 121 +111 141 133 123 120 109 94 104 106 96 94 85 +80 126 133 131 118 98 100 113 119 108 123 129 +124 128 107 114 93 95 127 110 114 103 83 92 +92 84 85 109 96 96 105 85 74 88 80 100 +145 177 185 170 168 180 188 194 191 170 162 160 +157 158 172 171 172 168 171 182 189 167 161 166 +165 171 184 195 186 171 169 153 159 182 188 186 +196 208 179 166 172 161 145 134 115 108 98 119 +137 134 127 117 138 129 114 127 119 148 151 160 +136 129 105 102 133 130 93 97 104 115 133 109 +70 62 53 126 116 64 38 49 35 46 54 60 +62 72 48 62 83 59 63 90 79 83 69 64 +67 62 57 84 77 55 33 35 48 57 99 120 +96 77 62 51 47 54 63 78 83 87 67 53 +31 37 38 32 22 17 32 26 28 60 37 21 +43 70 127 154 175 164 106 87 146 170 174 189 +186 182 196 195 184 187 201 202 190 191 182 171 +146 149 179 176 186 184 187 186 195 217 228 228 +229 230 230 221 208 205 195 180 182 181 181 167 +176 174 174 179 177 174 182 200 190 188 206 204 +205 210 219 219 212 210 204 195 186 188 176 181 +186 195 212 221 219 211 219 213 205 209 194 187 +169 153 157 165 145 128 133 128 127 138 140 127 +123 121 115 120 123 118 120 123 110 117 114 113 +126 130 119 126 131 136 165 202 190 186 195 181 +194 204 191 171 150 137 149 146 136 130 138 133 +131 131 130 131 123 126 126 125 120 123 126 130 +126 159 196 197 207 201 188 189 182 196 197 189 +185 194 187 197 209 215 217 206 178 170 178 199 +208 201 206 200 205 216 220 218 212 202 210 206 +201 206 215 210 209 199 187 166 161 188 185 178 +181 185 194 194 191 196 207 223 229 230 228 209 +206 198 192 190 195 199 204 194 206 213 202 200 +194 197 192 157 114 123 179 204 197 202 190 195 +202 184 182 158 131 94 47 49 68 79 105 77 +43 31 35 44 49 53 52 62 51 108 85 54 +80 103 100 100 92 95 75 67 76 79 77 88 +90 85 102 89 110 131 97 114 107 102 102 85 +95 90 99 100 126 118 88 104 79 105 127 137 +145 157 169 131 117 133 136 129 83 53 103 110 +131 141 136 127 92 107 135 155 171 138 140 146 +147 115 98 88 70 96 104 137 124 137 135 130 +125 116 117 123 107 108 100 97 105 123 123 111 +121 102 73 88 90 96 80 165 108 109 133 130 +126 109 98 109 126 116 111 136 124 134 134 99 +100 107 105 114 111 111 110 105 74 87 82 78 +98 78 95 92 72 86 84 90 +153 159 160 143 +148 184 197 191 178 171 168 166 175 181 186 172 +177 176 184 186 171 165 174 177 177 189 187 176 +139 149 150 158 187 194 199 180 174 177 192 151 +117 133 130 128 105 99 133 123 119 120 118 141 +138 145 120 120 136 136 133 134 124 119 116 131 +141 146 131 127 135 110 69 77 76 65 126 143 +79 44 25 32 32 34 41 52 64 63 63 52 +56 49 57 60 62 49 62 47 60 47 52 57 +33 31 35 34 41 37 66 68 56 76 59 56 +48 53 52 47 70 77 78 59 43 23 18 7 +21 26 31 43 87 88 111 44 42 100 114 156 +149 159 126 66 114 167 177 184 187 185 190 198 +189 204 209 209 206 207 194 170 133 125 165 182 +189 188 192 194 190 209 223 220 223 229 227 222 +215 200 200 192 200 199 184 155 148 169 181 199 +212 185 170 185 189 191 200 200 186 195 215 213 +215 213 200 194 185 192 189 178 204 215 211 217 +222 215 207 210 213 200 189 192 169 150 155 151 +138 125 118 123 124 124 128 121 115 117 117 121 +123 124 124 116 119 117 116 123 137 127 148 170 +180 182 167 162 170 170 156 127 128 144 156 162 +136 130 141 137 134 129 131 125 133 128 124 127 +123 119 125 120 123 118 120 123 127 146 199 220 +220 218 219 199 187 198 204 206 206 201 204 221 +228 219 207 187 168 164 180 196 204 205 207 207 +210 220 227 222 211 215 207 201 211 221 219 218 +207 192 180 151 129 169 186 175 168 179 190 190 +202 212 223 231 228 230 228 205 200 206 194 197 +198 200 204 199 205 202 198 187 194 192 181 155 +134 146 206 200 176 189 199 189 188 185 182 154 +119 96 67 38 49 42 62 84 96 85 45 46 +52 65 58 35 62 69 60 75 80 84 64 69 +97 105 99 85 92 79 96 138 100 83 87 89 +86 97 98 89 104 136 130 136 123 114 94 107 +117 129 181 153 102 78 67 74 94 126 135 108 +76 93 94 99 110 107 95 107 103 96 126 135 +126 116 128 125 153 144 149 138 118 130 117 109 +93 94 84 104 117 98 121 127 104 109 106 88 +102 97 111 103 104 103 111 108 108 105 79 77 +77 94 106 106 100 84 107 110 106 125 121 127 +118 109 109 94 107 113 120 117 105 100 105 114 +108 118 117 97 90 79 93 106 86 97 93 92 +88 87 95 82 +157 158 139 162 187 191 187 187 +191 184 171 182 196 190 181 180 178 187 182 172 +170 180 187 195 192 182 175 162 161 164 180 170 +169 155 130 113 96 95 118 184 190 135 130 131 +126 136 135 134 143 138 149 145 125 117 105 100 +108 105 106 99 100 123 151 151 143 123 128 105 +115 103 38 36 58 78 118 104 66 38 41 44 +36 57 52 70 75 70 63 55 57 53 44 49 +54 66 59 42 32 34 39 26 62 62 59 49 +37 26 36 43 53 70 54 59 62 45 43 59 +68 68 64 58 51 36 29 34 43 62 69 47 +36 43 44 35 42 70 138 167 157 182 139 76 +99 166 176 164 174 178 189 184 189 199 196 201 +215 197 184 176 138 124 170 186 190 190 185 181 +187 206 221 220 227 226 223 223 212 210 210 198 +200 200 158 126 161 166 186 190 194 191 180 167 +164 182 206 209 196 199 215 215 211 206 209 201 +190 198 190 161 184 201 201 211 210 219 219 197 +194 191 200 197 181 156 145 147 143 127 124 128 +129 130 127 118 123 121 123 128 124 119 129 127 +120 120 124 125 129 166 165 160 148 140 143 137 +128 131 125 130 146 159 135 129 130 127 134 130 +127 128 137 128 124 124 120 125 126 123 120 124 +124 119 119 120 120 145 195 217 220 207 192 186 +187 196 204 207 207 207 209 225 223 207 191 182 +164 156 186 195 196 198 210 218 215 221 219 211 +211 215 213 212 218 222 228 220 195 186 170 170 +156 143 171 170 167 185 191 196 213 221 228 227 +228 222 213 201 196 192 199 196 190 194 200 205 +204 207 205 187 187 179 145 158 150 178 219 200 +199 201 186 166 170 186 170 147 106 79 88 111 +111 96 76 37 76 64 57 57 55 72 75 75 +83 104 113 104 98 92 96 103 94 108 100 98 +156 156 131 111 108 93 82 65 62 74 80 105 +102 94 109 119 131 161 153 134 157 147 126 147 +150 114 73 73 93 136 158 147 102 88 107 82 +64 89 104 110 146 131 104 118 123 88 115 126 +125 129 116 117 130 125 125 117 88 72 102 82 +82 90 87 98 111 97 105 88 104 130 121 111 +102 106 105 113 105 98 95 97 82 90 102 96 +90 97 90 106 104 93 127 113 99 98 98 111 +99 89 95 128 118 102 120 109 109 103 86 108 +99 103 102 106 89 83 106 95 92 99 80 99 +167 174 169 179 192 184 179 188 182 166 178 182 +191 188 175 179 181 185 189 194 186 191 195 195 +185 192 189 171 184 187 184 175 147 119 105 83 +102 130 129 135 182 202 158 135 145 149 146 138 +146 160 157 134 104 89 76 108 123 103 80 83 +109 124 159 140 99 96 55 72 80 75 29 26 +37 78 73 80 44 35 33 46 52 60 74 66 +74 57 43 59 49 52 49 75 56 46 56 37 +26 27 21 46 42 51 47 44 49 48 53 60 +56 52 64 60 62 64 59 65 72 66 65 62 +53 44 58 33 38 25 32 25 26 35 32 36 +28 42 102 136 150 170 118 87 75 127 151 179 +189 189 191 184 195 190 196 206 198 190 176 170 +147 121 149 179 180 184 186 198 196 196 217 220 +221 223 225 219 218 219 211 195 197 178 140 138 +186 196 191 188 200 213 192 170 177 164 171 188 +190 189 192 201 209 204 201 205 199 195 188 171 +150 188 213 219 225 227 221 205 202 199 201 199 +182 157 140 159 135 133 128 127 126 137 137 116 +120 119 118 119 118 114 119 128 120 127 123 123 +141 139 139 149 166 146 144 154 150 147 141 140 +137 133 128 130 147 147 146 140 130 134 127 126 +126 128 133 131 125 126 127 126 127 126 119 123 +133 174 212 222 212 191 182 187 190 192 192 191 +208 208 208 215 212 196 208 199 147 158 192 199 +200 202 205 208 212 215 208 209 204 204 209 206 +208 217 223 220 195 178 168 176 166 157 191 179 +161 179 194 202 218 225 227 227 223 217 205 186 +192 187 196 194 192 196 205 199 197 199 206 194 +191 177 123 131 149 178 215 201 196 187 178 181 +188 178 160 154 140 124 80 80 94 62 66 70 +53 90 64 53 98 94 68 59 77 90 102 88 +84 79 75 113 118 107 80 78 85 98 114 117 +120 106 114 111 110 87 80 92 84 92 104 92 +98 108 120 116 118 115 133 110 107 127 120 98 +110 140 180 189 137 121 119 106 84 60 106 99 +137 156 131 125 108 107 100 94 99 107 107 79 +110 114 114 136 97 103 107 88 102 84 79 90 +119 90 89 120 104 116 127 104 110 113 108 104 +111 110 108 118 84 84 87 95 102 79 88 110 +119 105 115 124 106 103 88 97 89 83 99 96 +100 110 93 95 92 92 99 103 102 106 129 120 +115 102 78 100 103 104 108 106 +175 180 189 191 +187 192 192 179 179 190 192 187 190 191 197 188 +181 194 192 188 177 184 177 170 179 184 187 184 +187 181 168 156 134 116 113 135 159 159 139 133 +131 155 198 198 161 159 164 161 158 161 137 117 +104 94 125 126 127 92 100 119 116 139 143 103 +59 36 36 33 28 24 22 45 69 54 49 52 +48 45 63 34 56 62 51 66 64 53 56 55 +63 48 51 66 57 38 34 29 28 23 31 37 +41 57 70 36 48 31 57 57 69 52 53 45 +45 58 80 66 69 56 41 48 38 18 38 37 +25 43 39 21 23 29 31 38 34 26 88 160 +177 161 175 141 89 89 133 176 192 186 182 189 +194 190 196 205 202 218 201 170 136 109 115 169 +180 177 186 187 187 191 202 220 225 222 210 206 +206 205 205 181 175 170 153 156 177 179 191 202 +215 221 219 205 180 178 171 171 185 186 187 191 +196 199 189 187 190 199 199 176 145 182 204 216 +226 215 215 207 200 204 201 196 184 162 154 166 +154 136 133 131 129 133 137 121 128 120 118 123 +121 121 118 127 120 126 129 138 130 137 157 124 +131 151 143 133 133 141 144 133 133 134 129 127 +157 158 149 144 141 129 124 126 129 126 130 130 +125 135 136 126 123 118 121 130 136 177 213 225 +211 204 190 189 199 190 188 204 201 192 199 216 +211 204 197 169 120 143 186 197 195 206 210 207 +202 207 217 210 202 205 217 216 220 221 217 210 +196 181 165 167 181 182 172 171 174 194 209 220 +221 222 216 215 217 218 207 189 192 182 186 188 +192 206 207 201 205 202 188 186 182 147 107 119 +168 174 217 192 187 199 189 187 195 181 148 131 +151 148 118 74 72 65 53 51 59 65 55 55 +54 48 38 42 47 38 54 70 64 86 109 114 +95 66 77 94 116 83 106 98 111 123 87 119 +120 106 113 88 93 104 154 159 156 170 153 125 +110 97 108 95 95 131 130 109 92 115 145 129 +126 114 115 127 138 103 65 98 93 177 162 129 +124 109 98 86 99 92 78 107 106 115 139 127 +114 105 110 88 93 88 85 96 100 95 93 92 +118 118 138 135 115 131 150 137 109 113 128 128 +114 85 94 92 87 108 99 93 98 109 105 107 +109 97 90 83 92 79 85 87 80 94 103 88 +93 95 75 89 100 105 111 125 111 108 95 105 +111 109 92 104 +184 190 194 190 186 191 186 188 +192 198 197 191 189 187 187 186 182 196 197 194 +176 164 168 176 170 179 188 182 165 156 151 145 +148 150 166 171 153 129 125 135 144 155 153 197 +216 184 156 161 146 150 158 148 129 111 109 86 +87 120 126 128 125 140 114 59 27 23 17 28 +24 26 35 46 57 33 25 34 62 49 68 45 +42 60 52 49 52 55 45 62 51 43 42 57 +60 44 28 33 66 47 39 37 51 28 54 66 +64 59 43 48 49 42 45 53 85 68 47 69 +55 43 28 42 45 27 32 31 28 26 23 46 +69 97 123 140 75 53 63 126 151 160 181 175 +116 88 95 145 157 154 176 180 182 184 192 200 +198 210 205 188 146 125 103 143 174 191 201 201 +204 202 204 213 218 218 209 205 209 199 187 176 +190 175 170 180 187 189 188 198 212 217 216 210 +187 181 188 185 190 189 190 191 192 200 192 184 +190 192 189 169 154 179 187 198 206 215 213 205 +201 196 199 202 197 180 161 150 149 127 125 129 +136 140 129 121 129 118 119 119 125 123 124 126 +126 134 133 137 129 138 118 129 153 153 150 156 +143 130 134 157 179 164 148 135 133 133 135 136 +133 128 135 135 129 126 127 128 127 127 127 127 +126 121 123 120 137 188 216 221 217 204 178 191 +196 190 197 199 194 202 202 196 207 201 181 172 +137 138 178 190 194 200 207 210 208 206 215 218 +210 217 223 216 219 221 209 190 189 176 153 149 +160 168 164 170 185 209 210 222 226 223 216 219 +218 209 205 199 188 190 192 187 194 205 199 202 +206 195 195 192 182 139 114 148 169 158 200 200 +195 190 197 201 198 180 137 117 108 76 59 82 +55 52 72 53 48 43 58 56 52 54 44 53 +34 56 56 53 96 77 85 89 105 107 77 77 +88 119 108 95 97 67 77 85 85 94 92 138 +129 144 141 177 186 161 138 141 168 158 133 146 +149 145 104 87 86 88 86 96 130 115 88 75 +85 121 136 114 78 117 176 143 133 118 92 105 +102 121 116 105 130 109 123 126 116 109 117 102 +72 104 88 92 123 98 93 96 84 109 135 147 +129 150 169 176 159 116 135 128 120 116 103 93 +80 78 72 94 78 86 113 89 102 107 93 98 +87 93 98 95 82 76 95 77 94 92 92 93 +80 102 110 103 96 96 114 90 80 99 97 104 +201 196 201 201 198 188 185 187 200 208 200 189 +194 197 196 201 202 199 191 182 166 177 194 192 +189 190 189 171 166 153 150 156 175 179 157 130 +126 134 137 148 160 157 164 166 169 198 200 145 +127 161 139 127 113 115 94 133 153 141 104 99 +119 117 55 37 25 31 21 19 27 24 95 131 +86 42 29 35 56 69 44 55 51 57 58 53 +46 49 51 47 39 41 29 46 55 79 67 48 +47 38 29 39 34 29 36 38 53 51 55 44 +45 44 45 38 44 67 51 57 66 68 67 45 +33 27 24 22 18 28 32 33 65 54 90 129 +80 67 69 102 128 155 165 157 115 73 92 143 +165 166 181 187 187 186 194 207 215 218 207 195 +192 153 108 153 165 182 186 181 185 188 195 205 +221 222 207 208 215 195 187 187 191 174 154 158 +181 187 184 197 202 202 195 199 198 191 189 188 +181 179 169 175 179 172 171 192 188 181 185 164 +157 191 206 191 202 211 208 218 202 198 206 202 +194 197 176 143 141 131 129 129 134 131 126 124 +125 125 121 125 121 126 124 133 129 149 137 124 +127 125 121 121 136 143 129 138 139 144 153 147 +147 155 149 139 133 128 129 128 137 135 127 125 +124 120 126 126 121 124 124 127 127 120 123 126 +158 202 225 222 199 191 184 192 197 192 195 192 +199 212 206 188 181 182 167 141 158 185 191 200 +206 207 201 209 201 201 206 201 197 200 204 206 +208 207 201 194 182 178 160 155 154 157 164 164 +190 206 212 216 222 223 228 228 213 204 202 192 +194 194 182 191 197 202 209 204 195 195 198 185 +158 137 120 166 209 181 192 205 201 191 195 199 +192 169 144 119 95 100 67 58 90 87 70 66 +47 60 49 57 47 51 29 52 49 42 70 97 +83 90 106 107 123 107 84 100 93 72 96 95 +69 69 42 53 79 78 99 135 130 125 141 146 +134 133 150 165 164 150 126 117 108 121 128 118 +100 89 76 89 66 97 106 70 75 99 125 120 +102 74 105 130 84 90 100 102 108 107 107 102 +90 113 115 119 128 145 113 96 104 96 109 103 +94 82 82 106 84 74 95 111 121 123 129 137 +141 120 120 118 121 116 115 93 109 72 88 79 +77 102 93 94 100 108 99 92 95 85 88 105 +97 107 93 98 104 108 105 95 110 89 103 97 +90 95 78 100 90 88 111 97 +192 189 197 197 +189 178 181 192 196 189 175 186 188 190 197 190 +190 190 181 174 188 201 200 194 177 171 172 185 +181 159 161 179 187 179 154 149 160 170 182 170 +166 167 161 181 177 150 153 206 198 136 126 107 +113 108 155 149 140 84 75 119 104 93 43 49 +49 23 37 28 26 53 90 89 62 41 47 65 +79 84 83 66 80 78 65 63 64 57 44 37 +33 41 38 48 69 77 48 44 39 34 34 21 +22 22 24 24 36 39 47 65 59 52 59 43 +48 60 56 69 69 69 59 55 32 29 32 26 +21 16 28 29 19 26 34 49 47 51 73 94 +123 117 161 159 117 67 82 127 167 187 186 182 +188 195 196 195 213 218 210 201 187 162 137 121 +137 164 179 189 190 189 198 205 210 202 200 210 +215 200 199 199 199 178 177 175 180 165 165 187 +186 191 201 201 219 220 201 211 212 196 170 175 +180 181 187 185 180 178 188 185 164 177 196 200 +198 199 210 217 208 215 213 202 201 190 179 135 +130 120 129 137 130 137 133 121 123 121 125 127 +126 121 123 130 123 124 126 125 129 134 130 133 +133 150 175 178 165 184 175 137 123 135 138 133 +141 135 135 139 129 129 139 131 121 127 136 135 +127 121 121 129 124 119 123 138 170 212 222 215 +204 182 176 192 195 184 184 200 204 217 208 202 +192 155 141 119 175 194 205 207 201 206 198 192 +191 201 196 200 202 198 200 195 184 186 190 179 +180 172 157 159 138 143 176 184 196 211 223 219 +227 225 221 210 198 194 188 187 190 187 184 182 +185 197 197 195 197 198 198 185 139 108 100 194 +218 200 190 200 200 201 189 196 184 159 118 77 +83 73 37 45 34 52 62 59 79 87 106 83 +57 52 69 66 57 70 74 98 59 72 83 87 +94 79 83 97 86 92 85 96 66 69 72 69 +126 137 128 100 154 162 136 93 85 92 102 115 +128 170 180 143 94 106 167 148 133 114 92 103 +119 78 77 72 84 82 75 110 103 89 79 80 +78 70 78 88 95 104 96 119 109 105 121 106 +106 100 108 95 97 105 108 107 96 89 103 99 +113 87 100 116 114 103 108 109 105 109 108 93 +124 102 109 110 94 104 100 97 106 102 117 116 +126 109 89 102 77 83 93 125 115 105 110 108 +117 126 116 110 104 99 93 114 96 90 103 82 +93 98 88 107 +181 187 185 188 177 177 184 194 +184 185 194 196 192 199 190 188 186 195 202 200 +188 176 167 164 162 170 180 181 178 162 160 153 +167 182 190 186 174 167 147 139 147 166 170 170 +160 138 138 159 180 208 196 139 129 134 126 115 +114 100 117 120 74 55 57 63 53 53 32 58 +53 74 72 51 46 38 48 66 75 64 69 90 +121 86 56 57 56 45 48 49 45 37 37 45 +41 43 33 21 32 29 33 41 63 66 45 22 +43 34 31 47 51 39 67 52 51 66 59 44 +53 66 46 48 43 26 36 23 18 19 10 14 +29 22 25 26 28 32 37 39 78 104 168 180 +178 107 87 116 149 172 181 185 188 192 192 198 +197 204 205 200 185 164 146 138 150 156 174 185 +189 195 202 199 197 200 210 209 207 208 212 209 +197 169 179 184 184 179 178 194 197 196 198 215 +220 222 218 212 216 206 205 199 187 194 201 208 +205 190 200 201 177 180 192 197 194 202 213 222 +206 197 205 194 194 192 178 140 126 128 131 140 +139 140 140 133 134 137 135 125 126 128 131 121 +120 120 125 134 130 140 150 154 162 167 171 159 +168 170 146 141 136 140 131 130 120 130 127 131 +126 125 130 128 124 124 131 131 123 123 123 124 +120 117 125 147 197 213 220 212 196 171 182 187 +189 195 207 220 229 222 212 210 202 162 138 116 +169 189 199 201 206 204 198 207 202 196 202 209 +210 213 219 205 200 196 180 172 156 137 136 146 +143 149 170 180 197 215 210 210 222 220 223 215 +200 194 186 182 196 190 191 191 195 186 180 191 +199 194 187 145 107 116 138 179 201 211 204 198 +189 189 191 181 168 154 115 79 52 44 48 46 +47 42 68 78 94 85 109 109 95 120 118 153 +143 120 123 104 109 83 79 62 69 78 72 85 +92 94 87 78 88 93 102 88 63 99 117 120 +89 107 140 155 139 128 149 105 80 120 135 162 +138 99 130 168 133 114 113 93 68 86 69 90 +75 82 84 85 98 99 94 87 66 63 76 72 +84 86 95 104 123 123 124 111 109 104 92 87 +109 123 124 96 108 109 127 114 102 87 106 113 +124 125 108 92 107 84 100 115 97 103 99 85 +105 110 133 143 121 104 111 128 129 124 109 98 +104 84 116 118 116 114 117 103 108 124 114 115 +93 108 133 114 95 100 96 78 95 96 100 97 +179 170 170 148 159 188 191 191 192 196 191 191 +192 190 195 184 180 188 176 159 149 146 141 139 +161 149 164 190 185 166 149 162 166 176 179 161 +153 143 145 157 155 164 170 158 133 153 176 168 +140 153 190 197 169 104 99 107 117 148 176 114 +52 57 68 54 76 70 35 66 79 72 55 34 +55 56 53 78 59 83 87 73 96 80 58 59 +49 43 52 42 28 35 29 38 46 27 27 41 +33 35 55 119 138 156 162 166 143 53 33 64 +94 99 57 58 73 69 84 72 57 57 47 32 +24 17 18 28 16 26 27 28 55 32 47 36 +33 34 37 48 78 117 156 149 161 120 77 97 +137 168 178 176 181 195 197 198 207 202 199 205 +190 154 141 150 149 154 157 167 180 191 189 192 +205 202 210 202 188 202 209 202 191 186 172 181 +179 159 172 185 186 194 215 219 219 227 225 217 +218 218 215 217 210 195 202 202 195 195 207 199 +175 181 188 196 209 195 196 210 197 196 198 191 +189 189 168 136 127 134 129 121 130 137 135 123 +124 133 129 120 127 134 129 129 119 126 131 123 +120 139 165 155 148 156 159 161 156 147 151 164 +147 136 136 131 125 128 130 137 135 129 130 137 +128 127 128 125 127 120 125 129 125 117 129 175 +202 212 221 217 202 164 161 182 197 198 211 220 +226 219 205 196 178 158 148 127 169 188 190 200 +212 211 206 199 197 191 197 202 217 221 227 225 +216 194 177 157 146 135 139 154 172 169 164 188 +196 213 220 218 218 226 222 213 200 199 191 192 +195 191 195 196 190 194 184 181 186 184 156 118 +133 154 176 180 200 211 206 195 180 192 190 176 +165 134 85 89 70 69 84 64 63 53 80 88 +59 57 69 103 118 124 115 96 117 100 137 158 +165 157 126 90 87 90 114 88 93 80 88 85 +47 75 69 80 87 79 97 98 92 92 116 124 +124 146 128 113 123 103 90 109 115 141 160 168 +158 162 143 115 90 58 95 137 143 98 90 86 +127 140 108 111 85 65 99 67 73 83 86 114 +126 125 115 123 140 129 96 92 131 121 147 118 +102 121 126 124 103 96 84 108 117 113 115 97 +92 129 106 98 110 103 110 105 87 94 114 123 +119 107 88 99 102 116 113 99 104 104 102 102 +116 113 98 104 96 108 104 95 97 103 110 124 +100 107 84 105 98 88 96 89 +139 141 159 166 +174 190 196 201 191 178 169 168 159 170 162 156 +153 164 162 157 158 147 153 149 148 166 180 176 +162 134 146 148 168 164 159 164 158 175 181 162 +148 158 139 127 138 151 153 123 86 111 128 129 +180 204 175 134 178 217 212 157 82 94 68 49 +43 67 67 70 89 73 53 48 56 79 74 47 +93 99 90 60 63 67 66 44 38 43 47 41 +45 37 31 35 37 35 29 49 43 35 77 73 +48 46 59 102 161 194 133 66 47 44 72 63 +76 85 58 100 58 53 46 39 28 24 26 14 +32 38 18 22 29 44 49 62 77 53 63 99 +96 92 106 114 109 89 80 87 126 169 184 182 +187 185 191 197 199 206 219 207 202 182 159 134 +158 168 166 174 186 185 184 185 192 196 196 190 +200 216 215 200 191 191 174 155 161 164 151 159 +182 196 216 218 223 221 222 225 216 212 221 223 +209 197 188 187 192 187 196 202 182 167 190 191 +198 208 215 201 204 212 206 201 194 192 172 144 +124 125 135 121 130 138 137 126 127 119 129 136 +124 119 115 125 120 123 121 131 143 141 133 117 +121 123 128 140 139 176 178 180 180 166 146 135 +149 134 143 141 135 133 135 133 123 128 124 134 +128 118 118 123 118 116 129 174 199 205 205 209 +191 145 170 195 199 204 207 223 230 218 197 187 +177 172 151 129 172 196 204 201 201 204 196 198 +201 205 199 202 210 218 227 219 201 196 185 172 +167 146 139 134 184 190 181 186 199 221 222 215 +215 218 215 219 206 195 192 196 190 184 190 189 +185 196 198 205 197 166 129 104 140 185 199 200 +215 216 199 179 181 191 195 176 150 119 99 82 +86 97 69 57 35 37 35 37 57 47 68 100 +111 95 77 56 62 95 115 95 82 86 97 120 +121 108 134 113 96 114 80 92 115 73 106 137 +145 148 170 176 157 144 155 143 138 128 121 145 +139 106 72 63 86 97 86 103 108 149 168 167 +137 118 111 129 168 129 116 120 103 88 89 78 +60 70 63 83 76 70 90 105 123 117 98 98 +130 138 127 96 100 117 127 128 92 93 109 113 +106 96 97 109 99 126 128 113 119 125 120 90 +106 94 103 125 111 97 89 97 102 90 97 85 +104 85 89 119 97 103 107 106 98 105 118 104 +107 100 100 117 107 113 105 111 108 96 111 97 +94 102 89 87 +160 177 188 200 202 200 194 180 +176 178 168 172 184 175 159 178 184 194 197 186 +174 168 175 179 177 155 137 144 169 171 181 180 +170 170 167 174 184 178 168 156 159 147 140 145 +144 147 127 115 126 128 140 147 168 161 195 221 +219 192 157 134 106 68 43 51 45 80 69 79 +89 76 62 74 80 58 60 57 82 88 59 55 +60 46 55 49 48 55 55 70 69 57 57 54 +44 26 32 28 52 62 49 67 93 118 92 84 +57 128 189 174 69 57 47 53 62 73 111 109 +94 67 43 29 55 31 38 52 33 43 21 10 +25 28 29 32 68 88 70 82 58 87 108 110 +119 120 80 88 114 155 171 180 181 177 189 191 +189 200 201 210 195 190 178 135 141 174 180 194 +186 186 180 181 186 186 189 192 209 221 219 200 +188 206 182 155 170 162 145 159 174 187 205 210 +222 223 223 223 222 204 217 229 223 213 205 188 +175 181 202 204 186 169 178 194 196 197 208 208 +190 202 206 210 204 207 176 144 133 136 135 135 +134 131 123 125 125 134 131 123 121 118 119 118 +118 119 126 133 136 139 140 125 123 133 130 136 +147 177 185 195 184 166 138 135 135 130 135 139 +150 141 137 135 130 141 140 131 131 120 118 128 +124 117 134 189 202 206 217 192 169 166 196 202 +205 212 208 215 222 199 174 157 187 167 133 153 +188 209 199 195 199 194 202 208 200 201 207 211 +220 216 202 191 181 182 172 167 146 139 148 146 +171 195 195 194 210 216 206 211 221 220 220 216 +205 196 187 192 188 178 184 186 187 188 189 191 +172 134 111 121 147 204 217 218 205 199 192 176 +180 194 179 161 133 114 121 108 76 54 60 38 +37 55 48 77 103 100 78 72 58 62 67 63 +62 59 69 96 86 68 82 65 63 83 75 100 +93 78 93 80 113 149 131 109 104 127 134 140 +140 147 124 110 117 103 127 158 150 153 113 86 +93 88 119 96 87 74 100 129 157 161 131 121 +126 114 130 125 105 100 102 97 72 77 78 62 +95 96 95 75 87 108 114 111 108 135 131 113 +113 100 111 131 108 95 100 114 114 89 83 87 +105 111 126 128 131 130 125 116 86 96 108 109 +127 102 95 99 82 84 87 89 74 93 89 104 +110 85 98 92 78 107 93 108 116 111 95 97 +116 110 117 104 96 103 104 100 100 99 106 88 +190 199 204 197 207 200 191 180 174 176 190 195 +192 190 185 185 178 172 161 164 167 185 175 175 +160 139 146 179 191 191 181 180 180 172 180 182 +180 170 168 167 161 168 164 165 153 149 151 130 +144 141 148 159 154 134 126 129 170 197 192 138 +54 51 39 49 74 62 82 99 102 86 88 100 +86 45 58 53 96 95 87 72 51 65 56 63 +43 49 56 82 70 77 69 42 36 28 39 47 +49 56 37 29 48 77 80 82 63 47 86 156 +182 131 53 56 94 100 107 84 97 74 58 43 +28 65 70 41 48 70 68 52 82 82 106 136 +92 62 42 49 57 63 119 124 124 149 118 84 +124 153 151 171 178 175 171 182 192 192 205 222 +206 198 182 150 139 168 181 188 184 190 195 190 +180 187 205 204 211 218 215 197 200 206 182 174 +156 165 158 159 148 182 194 195 216 222 221 227 +226 206 200 223 213 213 218 200 179 180 189 195 +190 166 170 197 195 185 196 209 207 199 182 180 +192 206 186 147 129 141 146 141 135 135 119 125 +124 129 127 124 119 121 124 115 119 124 126 127 +139 134 121 137 140 140 166 189 207 179 154 136 +128 124 129 136 144 139 133 134 159 170 161 146 +135 138 135 135 136 124 117 117 119 123 128 170 +207 216 215 177 161 184 202 209 202 205 221 221 +222 205 175 150 154 126 117 158 188 196 195 197 +204 216 217 211 208 205 206 217 223 212 207 216 +200 187 177 151 131 123 139 156 167 191 191 195 +196 211 218 226 230 226 210 199 198 190 189 188 +187 188 181 159 161 178 194 189 176 135 97 107 +146 198 205 202 200 201 189 182 198 198 178 147 +129 149 154 115 98 60 98 136 123 123 94 62 +63 62 44 64 52 49 54 48 59 66 59 82 +63 78 76 99 85 64 105 109 102 100 95 94 +104 105 107 82 84 102 117 105 123 127 125 114 +114 129 117 118 107 144 137 111 104 95 103 94 +65 80 80 73 82 102 113 106 105 105 80 121 +130 98 98 107 102 74 72 74 87 126 111 99 +89 86 114 117 121 114 127 111 105 94 89 111 +116 107 116 116 116 97 84 92 85 114 113 116 +120 133 133 124 125 95 123 129 138 147 145 114 +97 104 109 120 116 96 116 127 100 102 97 99 +97 102 85 103 109 105 115 98 97 109 103 89 +96 89 110 98 89 78 97 96 +176 175 177 187 +184 164 175 171 178 186 192 196 190 189 176 161 +150 147 174 181 180 184 179 175 149 160 177 187 +184 180 169 170 184 189 186 178 179 159 155 153 +151 149 137 139 143 147 140 134 134 145 154 135 +119 96 89 78 86 96 140 189 185 126 54 47 +51 78 113 100 109 106 74 65 69 37 64 43 +70 74 74 73 56 83 72 72 58 46 45 49 +55 53 43 41 38 35 37 52 133 68 47 46 +45 19 18 15 23 29 46 54 117 180 171 87 +49 45 54 62 56 88 117 97 46 52 102 151 +82 70 105 144 60 120 150 116 56 42 45 49 +74 84 87 109 135 170 155 80 102 136 153 178 +187 186 185 188 191 192 196 206 205 209 175 135 +121 154 167 179 186 195 197 184 181 189 197 209 +217 213 197 192 189 181 174 146 136 158 168 174 +178 189 200 197 198 211 217 220 220 212 202 208 +208 210 211 199 202 197 199 195 188 177 167 176 +189 197 195 195 211 198 187 167 167 180 169 138 +128 135 135 135 130 126 118 123 115 124 129 127 +120 119 119 126 127 131 128 126 127 131 135 133 +144 175 202 182 166 155 156 159 145 137 141 154 +150 154 144 127 138 136 138 125 129 125 127 128 +121 121 124 117 116 123 138 191 199 194 201 171 +158 187 202 201 202 213 217 225 228 205 177 146 +144 118 115 160 186 192 197 201 208 209 201 198 +200 206 208 211 220 220 226 226 205 186 189 176 +145 127 121 167 161 170 172 190 208 227 220 221 +228 219 196 194 182 178 180 177 177 179 175 172 +170 177 195 188 175 119 93 194 225 211 200 190 +197 189 174 192 186 171 151 106 105 124 113 104 +119 119 127 141 110 99 87 80 57 35 48 55 +47 66 70 75 70 77 68 93 92 72 86 90 +82 70 67 80 100 86 69 74 126 98 104 99 +87 113 75 93 104 102 99 111 114 95 94 89 +69 118 133 114 107 84 93 95 93 89 105 84 +58 98 74 66 96 99 94 97 114 106 106 85 +88 90 70 69 68 92 141 140 111 123 149 130 +134 117 90 124 104 107 111 93 124 111 127 129 +130 119 79 93 94 102 104 99 117 111 127 124 +108 97 95 110 121 137 150 125 118 96 114 155 +144 116 88 115 97 104 85 92 78 93 102 97 +93 107 93 115 98 98 110 102 105 94 98 97 +108 113 107 102 +176 180 182 175 167 179 176 179 +178 187 185 182 185 174 162 155 175 190 196 185 +186 189 176 169 188 185 172 174 162 172 179 188 +189 197 194 176 160 135 125 126 110 126 134 138 +147 150 141 147 137 156 143 113 88 58 74 80 +93 108 113 89 126 190 197 168 92 83 86 90 +72 65 76 86 75 52 47 57 54 57 58 66 +69 67 74 65 56 56 58 60 38 48 38 32 +29 26 42 90 143 55 45 65 57 45 36 34 +35 35 41 45 48 82 155 174 145 64 43 43 +59 66 79 100 128 92 59 128 171 97 44 93 +164 147 75 47 52 42 43 41 90 64 75 92 +123 162 150 113 89 121 131 166 184 191 190 191 +190 195 191 204 205 196 177 165 130 143 170 185 +182 156 160 151 159 177 186 199 204 207 196 187 +178 188 169 140 153 168 172 167 181 195 210 200 +199 212 213 217 218 205 211 217 215 221 217 205 +200 204 209 201 190 182 179 181 186 191 201 204 +200 208 204 196 202 196 165 134 130 134 136 126 +134 127 120 117 115 115 121 124 121 124 124 121 +124 127 131 130 130 133 136 156 148 155 189 188 +170 170 169 184 170 156 151 149 158 139 130 139 +143 145 140 130 123 126 131 131 126 134 136 116 +117 125 149 205 204 210 216 182 184 200 211 207 +211 216 216 225 219 199 186 161 171 140 129 181 +198 195 192 200 192 182 195 186 190 204 209 215 +219 209 215 213 200 185 188 175 136 116 147 164 +153 177 186 202 223 232 229 217 216 210 185 178 +192 195 185 178 177 172 169 169 177 187 197 169 +140 128 155 179 222 212 198 191 184 192 186 200 +177 161 157 121 118 136 116 82 90 80 73 59 +76 92 77 79 93 93 94 98 56 54 75 49 +68 57 67 74 63 64 72 83 72 77 77 59 +73 69 80 108 56 59 59 69 77 93 92 98 +97 73 75 86 86 88 84 98 87 72 99 126 +117 94 72 68 96 105 93 103 94 92 105 87 +98 119 94 62 99 106 106 120 99 84 106 77 +79 107 157 178 151 141 172 181 188 158 115 117 +114 99 108 103 99 108 141 160 139 128 116 106 +105 90 104 110 103 118 119 121 116 108 104 104 +121 121 133 125 109 105 85 98 133 131 99 82 +95 90 93 96 73 84 79 90 90 100 104 103 +120 103 102 104 92 107 94 107 118 109 109 90 +177 188 172 153 151 158 164 177 184 180 174 176 +175 180 175 170 191 201 192 190 181 171 166 172 +180 170 161 174 176 184 185 200 194 184 161 137 +125 129 136 154 137 145 128 138 141 138 150 154 +154 120 106 83 88 104 121 100 95 105 96 77 +60 95 155 200 198 169 102 66 67 75 82 113 +63 72 60 54 60 62 62 53 49 63 66 53 +44 54 56 63 63 39 29 43 26 26 37 139 +106 33 37 46 47 39 37 37 33 25 18 49 +27 41 55 99 168 180 125 43 46 49 55 48 +115 164 123 65 75 63 86 159 108 44 63 42 +42 37 38 42 104 92 73 78 104 141 170 168 +94 106 121 139 177 188 185 192 191 187 189 191 +211 222 205 182 127 134 177 187 179 172 179 182 +182 178 178 191 196 190 196 211 204 188 175 145 +167 177 170 176 182 196 205 218 217 220 222 227 +216 199 200 209 210 217 218 207 201 195 198 197 +191 179 176 170 188 186 194 197 207 218 198 199 +186 178 154 133 129 123 133 138 136 125 124 121 +121 115 125 120 115 121 124 123 126 135 135 143 +148 120 147 138 138 159 153 156 180 169 161 157 +146 135 134 135 131 129 137 146 140 133 129 140 +139 131 128 123 133 130 120 115 116 130 171 205 +207 201 196 182 191 196 212 217 218 222 226 228 +218 190 159 149 147 106 144 195 198 200 198 200 +194 200 194 186 195 211 223 227 217 207 210 205 +191 186 165 151 126 102 123 135 164 192 195 208 +223 231 226 213 209 195 182 181 196 201 189 190 +190 186 178 176 192 205 194 159 117 140 165 157 +202 220 196 197 190 188 185 185 168 178 146 90 +65 65 93 60 102 98 63 52 49 44 72 139 +141 144 147 134 115 80 60 63 58 68 76 86 +65 79 107 77 55 86 74 65 66 66 88 73 +58 68 60 65 64 59 70 84 76 85 65 66 +77 90 104 63 94 115 92 85 124 148 103 82 +115 148 102 106 84 76 78 83 80 89 78 77 +68 79 104 98 115 98 93 87 63 89 94 143 +154 127 118 162 180 174 147 129 117 95 88 92 +77 93 116 144 140 127 121 127 124 116 83 99 +98 110 104 93 103 94 99 120 115 133 127 111 +106 102 78 68 97 94 82 93 76 98 90 78 +89 83 73 89 97 90 100 111 99 106 103 87 +108 108 111 107 96 114 111 109 +189 178 161 157 +149 165 178 169 159 154 157 184 180 177 188 199 +186 188 179 172 178 169 153 164 166 169 179 180 +177 184 184 170 159 147 141 145 157 172 175 178 +150 127 133 143 157 160 147 146 118 104 124 129 +121 130 106 97 99 105 113 75 109 115 147 118 +121 172 197 168 82 62 58 76 78 47 54 59 +62 82 72 77 68 72 52 46 37 42 49 43 +49 68 73 62 33 31 56 129 103 63 56 38 +34 23 43 31 22 32 47 38 54 56 48 53 +62 97 158 175 123 60 31 24 45 67 124 135 +148 144 124 74 42 34 27 37 49 35 26 45 +96 113 76 73 117 145 159 169 129 90 92 115 +164 186 188 181 180 177 189 194 206 210 200 179 +154 129 165 184 186 195 201 204 202 201 196 196 +200 191 197 204 194 174 146 141 161 164 161 174 +181 189 205 215 215 223 223 223 223 217 210 213 +207 196 209 207 195 195 195 196 187 179 165 161 +188 185 192 192 206 208 196 197 186 145 131 126 +121 120 133 128 128 123 121 116 114 116 120 119 +116 121 126 120 126 126 126 128 133 125 134 138 +136 138 158 159 165 188 170 178 167 168 158 146 +141 147 141 155 159 138 134 141 148 144 140 139 +143 138 127 126 129 147 162 187 206 207 201 171 +178 201 215 221 222 222 227 229 206 169 144 148 +126 107 144 182 198 198 200 200 207 208 205 197 +204 217 229 229 220 210 198 192 191 177 167 136 +111 109 111 135 169 190 196 213 225 225 220 206 +196 190 182 184 197 194 187 188 184 184 175 175 +182 189 172 125 107 176 180 194 207 213 188 180 +172 178 185 181 177 177 149 100 108 104 127 96 +93 69 108 120 110 99 110 143 147 90 75 83 +72 46 44 44 63 129 109 98 76 75 69 80 +66 72 45 51 48 43 69 78 75 100 108 113 +121 114 125 121 92 75 65 66 90 114 138 125 +140 169 179 145 108 94 109 87 82 137 137 98 +72 88 77 86 75 58 80 73 83 73 78 85 +104 128 129 85 84 70 88 99 106 123 110 114 +138 153 146 145 143 103 103 88 80 97 102 131 +151 140 118 119 131 125 108 99 120 123 121 127 +108 105 95 89 108 117 123 105 88 97 94 80 +70 79 80 76 82 77 90 98 114 113 103 85 +102 118 93 92 103 93 110 99 88 99 105 105 +108 104 90 102 +178 167 172 166 168 176 155 150 +148 165 172 171 162 170 170 168 167 161 168 166 +169 162 169 190 188 185 189 177 172 175 170 166 +166 170 166 177 169 164 174 150 137 149 157 162 +166 137 123 102 114 146 157 130 113 115 125 113 +99 99 125 139 116 126 115 93 95 95 116 175 +200 186 130 48 69 70 56 66 73 93 92 77 +53 47 55 53 65 60 58 102 90 74 53 33 +26 45 59 88 80 70 33 23 23 22 27 25 +38 28 41 36 49 47 59 49 57 59 58 86 +131 160 156 106 41 32 65 136 145 78 28 22 +19 24 34 41 28 17 19 41 56 92 94 59 +64 128 167 180 194 144 106 126 169 181 181 185 +195 187 196 204 209 215 200 180 158 114 121 167 +178 188 188 191 197 212 211 205 204 201 196 178 +165 140 137 161 171 160 162 164 175 184 194 199 +207 217 212 212 217 215 215 205 195 205 202 200 +200 196 201 212 200 190 180 150 153 164 185 195 +202 204 195 199 185 133 133 127 119 115 126 141 +133 129 123 117 120 125 119 125 118 126 124 123 +120 120 120 123 126 127 128 133 133 136 164 177 +151 153 155 180 186 182 166 147 138 145 141 157 +157 136 138 135 129 126 127 129 126 124 119 118 +121 128 130 159 192 208 196 189 188 196 222 223 +222 220 231 228 205 191 153 124 107 131 158 181 +197 204 211 207 202 198 195 194 209 211 225 226 +217 216 205 197 185 169 144 109 114 95 129 169 +177 181 192 207 208 215 212 199 201 196 189 188 +187 182 186 184 177 179 180 187 189 186 148 116 +115 179 188 212 209 202 181 164 178 206 186 181 +186 160 157 160 146 138 120 84 94 78 58 69 +59 70 78 75 72 117 125 100 92 58 58 41 +56 63 62 74 72 70 53 60 82 108 160 185 +200 199 201 210 202 204 201 209 213 213 217 215 +220 223 208 194 177 134 116 84 75 87 113 140 +159 126 95 92 64 98 120 110 88 84 95 103 +114 97 65 75 86 93 79 108 104 94 126 109 +69 85 66 103 139 150 137 127 108 108 125 119 +150 136 110 118 106 93 119 145 130 134 140 121 +137 133 117 111 90 109 145 141 123 117 104 94 +94 102 105 96 82 96 83 85 84 80 77 69 +65 68 92 108 117 123 96 104 97 96 99 87 +93 93 83 103 100 115 96 96 84 84 105 102 +174 172 182 186 177 171 169 177 182 181 187 180 +166 171 157 161 171 176 185 178 175 181 182 182 +186 192 191 175 170 164 178 180 170 176 176 164 +162 148 144 141 157 150 144 147 124 107 117 136 +148 124 98 92 117 119 111 96 92 116 165 147 +115 111 110 94 98 106 118 119 138 168 200 179 +124 49 63 53 58 68 58 47 43 43 60 104 +86 66 94 64 67 46 37 38 27 52 70 64 +47 38 35 46 39 33 34 57 44 46 42 36 +41 42 52 57 78 63 51 43 59 73 114 168 +178 154 146 105 44 18 14 8 10 14 12 19 +19 22 19 27 27 68 93 94 74 135 181 192 +181 131 74 103 129 160 178 188 194 196 192 197 +198 201 184 177 153 113 105 153 179 182 186 178 +188 190 192 206 210 208 196 172 169 157 144 141 +150 136 114 151 175 174 181 191 187 213 226 216 +219 208 208 204 196 196 196 200 200 204 213 213 +202 202 188 146 151 179 181 194 208 209 206 208 +180 140 130 124 125 123 119 123 120 118 117 120 +117 124 120 121 121 123 126 124 117 119 120 118 +124 124 140 151 170 164 144 134 130 133 147 144 +137 138 143 145 138 140 144 147 143 134 127 149 +153 145 133 130 135 129 120 119 130 129 136 155 +185 195 171 179 186 204 220 223 222 215 222 226 +208 184 141 110 96 153 185 191 199 200 206 202 +206 206 206 210 210 218 221 219 205 210 205 195 +174 159 131 106 97 115 123 158 186 194 197 204 +211 210 207 199 186 180 194 196 191 189 185 182 +184 181 188 201 191 169 136 109 113 128 185 216 +182 177 153 154 178 190 178 176 169 140 111 154 +181 156 126 84 100 99 60 70 84 92 80 64 +51 47 73 75 92 117 98 70 36 46 54 63 +85 165 197 204 200 176 156 155 141 103 84 73 +62 59 63 98 134 133 127 100 114 146 165 168 +181 196 211 216 206 191 138 119 103 106 107 92 +96 86 134 135 125 93 72 99 118 89 80 86 +76 66 89 78 74 111 124 127 120 106 113 105 +128 137 140 123 117 108 100 110 127 136 124 110 +119 105 106 117 121 116 110 129 151 140 123 116 +93 99 146 159 131 110 104 108 87 96 98 86 +96 86 96 99 100 89 69 93 75 84 67 82 +90 76 102 97 88 84 84 90 67 82 87 89 +110 99 107 98 87 105 99 104 +177 177 182 169 +166 182 179 176 175 168 167 162 156 143 151 156 +156 169 168 159 166 168 157 162 160 167 169 180 +180 190 187 167 155 156 172 179 161 157 159 160 +164 162 169 143 111 113 141 154 134 92 103 126 +129 120 93 103 114 138 145 135 139 125 124 113 +97 118 120 107 88 66 103 154 195 175 121 39 +52 58 34 35 48 35 56 76 58 63 76 49 +47 44 33 28 52 69 128 41 18 28 35 37 +43 59 55 47 58 39 47 44 41 59 43 36 +43 47 32 37 39 36 43 45 116 139 164 141 +104 59 48 39 28 29 19 25 32 38 34 36 +42 79 135 138 106 126 159 171 169 159 93 97 +126 170 177 182 190 189 187 186 185 185 189 205 +172 146 116 135 170 186 186 179 188 181 179 191 +196 184 200 187 166 155 155 174 184 156 126 150 +155 158 180 187 191 212 217 213 221 213 205 206 +211 200 189 188 190 204 210 210 198 199 192 170 +171 187 200 204 205 217 218 218 199 151 125 121 +125 124 125 126 118 120 118 115 125 124 124 127 +124 120 133 135 125 128 128 137 140 167 177 168 +169 145 153 165 168 165 169 170 167 161 146 139 +129 128 137 140 128 124 128 135 140 137 135 148 +139 154 133 124 133 150 134 159 178 194 157 181 +201 208 211 217 217 212 221 218 199 175 134 102 +114 174 191 200 204 201 202 209 209 207 207 197 +216 227 216 210 207 198 201 190 175 154 135 121 +108 108 114 146 185 190 199 220 222 217 210 202 +192 201 197 192 191 184 180 187 184 174 172 192 +186 153 113 113 133 123 164 187 167 169 145 186 +196 189 182 172 158 123 130 106 154 137 121 102 +115 104 105 88 34 58 72 77 79 100 96 97 +56 58 48 48 74 128 185 202 202 179 147 104 +73 67 64 60 57 66 69 76 57 59 88 80 +119 135 120 137 131 97 84 73 73 73 68 103 +131 175 196 225 212 181 148 90 88 76 82 90 +118 114 82 69 97 117 89 65 75 70 73 80 +67 94 127 157 134 155 147 117 138 118 89 102 +89 84 110 138 120 124 135 90 88 107 104 109 +111 106 98 107 131 119 129 118 118 130 120 150 +144 147 133 100 106 92 109 99 87 86 95 120 +117 98 86 55 96 89 83 79 72 88 77 92 +82 102 96 89 104 74 77 107 85 107 113 98 +86 99 96 96 +162 171 159 150 156 175 197 195 +180 187 188 187 186 184 185 196 197 187 176 186 +170 175 172 165 167 159 157 162 165 150 140 145 +155 172 175 169 150 147 150 146 154 160 171 165 +153 151 157 148 128 145 154 141 117 123 133 144 +153 139 131 153 149 130 103 106 103 97 115 103 +72 69 80 78 95 147 195 188 134 47 32 36 +35 27 33 44 56 38 21 27 36 27 42 42 +38 114 108 32 41 33 26 36 42 57 58 62 +53 41 43 47 47 53 42 46 42 31 29 44 +44 45 86 79 52 29 44 75 119 147 127 117 +87 47 38 32 36 32 26 27 33 83 154 111 +76 90 143 158 149 151 107 82 97 150 182 184 +168 176 178 178 184 186 191 202 184 178 146 130 +167 180 182 177 187 195 196 190 201 211 215 209 +192 172 165 146 144 155 167 166 171 181 185 186 +189 202 218 210 206 213 212 207 215 212 200 194 +194 196 202 206 197 195 192 160 159 184 185 191 +200 209 217 205 174 153 128 124 124 128 136 127 +116 116 124 123 115 113 121 124 124 125 126 127 +128 137 134 137 158 167 146 133 145 151 143 158 +159 154 165 156 169 154 141 141 133 134 138 147 +138 139 138 137 136 133 133 143 137 136 129 123 +135 153 125 155 185 176 147 199 207 211 220 218 +220 227 231 220 201 171 121 96 125 179 191 195 +196 200 199 209 207 202 199 205 221 221 216 205 +206 198 197 191 177 148 117 119 110 114 131 161 +186 195 199 219 222 219 202 196 198 199 195 195 +192 192 189 185 189 188 192 195 180 140 115 130 +149 143 168 149 170 175 170 190 199 195 185 166 +128 88 121 119 119 117 102 92 105 127 114 90 +68 54 69 87 60 44 48 41 41 65 104 189 +213 197 182 140 94 82 84 76 62 48 67 70 +66 78 95 99 69 66 72 79 69 88 141 124 +115 99 76 68 70 106 99 87 77 62 63 82 +144 187 209 219 202 147 98 100 89 72 100 102 +96 107 90 102 80 70 85 85 93 62 96 119 +98 103 118 123 130 139 156 128 97 59 102 125 +109 130 135 117 97 96 114 111 119 128 120 87 +100 124 102 116 129 131 134 134 147 160 154 125 +124 113 104 113 114 78 93 97 121 103 93 82 +72 83 87 97 84 76 84 88 89 86 94 109 +105 97 76 94 107 115 119 114 95 93 111 105 +180 181 190 196 191 191 198 200 196 192 189 191 +187 186 191 197 191 175 179 176 166 170 176 169 +176 176 169 174 182 178 171 159 150 149 149 134 +120 136 154 169 172 147 158 168 162 159 164 149 +161 160 135 119 125 136 149 149 144 125 137 131 +127 111 98 117 116 125 125 108 89 129 105 59 +57 66 82 143 188 189 123 37 25 26 32 44 +46 38 24 21 18 31 17 28 38 67 62 44 +42 27 29 27 41 36 41 49 110 117 103 78 +55 60 56 47 39 36 41 67 83 82 51 34 +32 33 31 39 72 136 115 145 186 188 175 145 +106 113 87 38 23 54 104 111 89 78 143 161 +150 150 109 92 93 125 155 169 180 189 189 188 +189 187 192 189 167 170 133 103 145 166 177 187 +191 197 196 191 191 197 208 208 179 154 146 136 +124 111 128 157 158 166 182 189 186 197 212 211 +205 202 195 197 210 208 201 192 190 195 202 205 +194 188 177 157 147 177 185 190 197 207 208 186 +174 168 143 135 136 134 126 124 119 124 125 124 +116 113 115 124 126 125 125 135 138 128 131 143 +153 145 133 131 138 136 136 149 169 167 154 167 +174 168 167 160 150 133 140 154 145 141 144 147 +138 129 134 146 136 131 127 118 120 124 123 168 +196 176 181 204 216 217 211 220 217 211 223 216 +191 164 131 105 133 184 195 191 202 199 206 213 +212 204 198 201 219 225 216 196 188 184 175 161 +151 138 123 102 108 134 148 177 197 201 201 218 +223 207 201 200 200 189 186 180 194 194 186 188 +188 184 194 186 162 111 110 139 159 178 202 159 +136 154 200 198 195 192 175 157 115 83 117 98 +78 115 121 92 87 123 161 169 139 121 149 134 +140 119 98 108 180 192 160 138 104 80 75 75 +105 84 77 64 66 93 72 74 56 62 96 111 +117 87 72 85 88 66 65 97 95 87 103 86 +84 90 90 109 108 74 52 62 53 56 74 121 +184 217 206 175 117 84 68 87 87 104 115 123 +135 115 94 100 98 96 70 83 85 77 98 109 +84 83 129 118 100 87 65 99 93 82 104 118 +118 114 105 106 125 127 128 134 120 105 118 104 +124 140 111 125 141 138 150 149 137 140 116 90 +114 94 77 87 89 99 108 108 85 98 119 140 +115 95 83 84 82 96 88 97 109 103 88 74 +84 85 109 109 99 113 99 104 +178 190 197 196 +185 182 179 188 184 169 165 159 176 184 185 184 +185 192 181 177 177 175 175 188 186 182 181 182 +189 185 169 162 170 174 170 143 125 161 171 145 +143 146 136 127 134 139 143 149 135 121 120 129 +133 141 133 134 141 111 105 103 103 107 125 137 +147 141 124 106 128 140 109 78 57 44 41 46 +76 127 188 192 119 47 45 48 47 43 29 27 +19 27 22 23 48 80 62 47 32 22 25 35 +48 60 68 43 83 90 87 97 83 75 51 51 +56 90 102 123 109 58 80 51 25 28 27 29 +35 59 130 151 119 79 90 135 111 49 24 14 +26 31 73 100 103 77 95 149 161 165 167 137 +97 116 138 158 154 180 187 192 178 171 174 175 +185 198 182 109 124 159 176 184 185 194 191 182 +197 207 213 199 168 168 160 153 144 141 123 127 +153 154 176 188 195 200 206 211 208 199 194 185 +189 184 149 160 177 184 195 187 171 181 187 175 +145 170 182 186 189 202 204 174 169 162 141 131 +133 127 146 127 120 118 120 115 116 109 121 133 +125 123 127 128 141 145 133 136 140 140 144 149 +146 144 167 164 174 178 175 195 179 151 144 150 +154 144 133 133 134 137 140 143 134 128 136 156 +148 129 134 120 118 120 148 171 190 186 168 197 +215 211 217 220 212 220 219 200 176 130 118 102 +149 190 206 205 207 205 206 200 198 184 185 206 +217 204 191 207 201 192 189 189 162 145 134 116 +121 116 125 168 190 201 217 213 211 201 192 196 +198 192 189 187 190 179 178 194 185 180 182 171 +135 89 140 168 167 182 213 191 150 158 206 194 +184 165 141 133 125 139 159 131 77 114 110 106 +111 69 65 69 127 117 109 116 103 120 169 155 +139 114 86 57 55 66 63 60 62 54 56 68 +75 57 77 64 77 85 105 123 96 79 87 70 +57 48 77 96 113 115 87 103 83 124 157 129 +111 96 60 48 73 60 54 66 63 83 145 195 +206 187 114 62 100 99 94 107 118 123 104 102 +124 111 82 88 98 79 75 102 108 89 92 126 +104 76 80 76 69 90 87 103 134 133 116 130 +117 116 128 119 123 117 117 107 104 121 123 123 +106 119 138 127 134 139 117 121 120 129 107 107 +97 93 98 74 94 78 106 126 125 123 93 93 +86 103 96 86 108 92 95 83 72 92 97 105 +107 107 106 95 +174 175 182 177 174 179 182 161 +149 149 141 149 168 165 160 159 177 169 180 190 +188 188 189 182 186 172 171 182 180 153 156 162 +169 161 141 119 143 171 155 140 144 131 134 153 +168 140 127 128 143 158 144 133 146 150 130 120 +111 117 114 124 115 131 130 135 139 116 110 113 +125 110 79 76 34 37 46 38 41 43 75 129 +189 198 148 67 36 38 27 15 22 19 14 27 +116 103 36 23 34 32 31 43 42 41 77 104 +106 140 108 87 104 130 124 119 128 90 74 65 +57 54 43 63 41 24 35 35 21 41 76 86 +65 67 35 46 86 88 69 42 39 42 57 98 +116 106 80 140 168 175 167 162 86 90 159 178 +180 172 178 178 160 144 161 170 184 206 201 124 +102 147 170 182 191 196 194 189 197 192 192 178 +172 186 169 154 161 171 135 125 128 164 184 172 +179 196 187 169 170 190 192 181 187 182 180 184 +182 181 191 182 182 196 200 175 126 164 185 187 +196 208 211 195 160 146 134 127 133 131 141 121 +125 118 118 123 117 119 120 125 124 130 137 141 +136 134 134 138 156 156 149 156 145 146 157 149 +144 150 157 164 156 149 151 133 135 138 136 134 +134 133 135 131 145 130 133 135 133 144 144 125 +120 121 150 179 167 161 176 197 212 216 218 217 +218 223 213 204 176 127 123 119 169 191 205 204 +208 216 202 192 188 181 188 201 204 190 198 213 +215 205 190 185 172 140 124 107 117 114 138 179 +199 216 215 210 202 189 184 190 191 187 188 195 +187 177 179 177 164 176 172 165 125 98 162 159 +164 185 190 160 138 147 180 187 185 170 137 144 +170 187 189 158 123 78 80 89 123 86 75 86 +65 70 62 96 138 147 123 78 76 75 57 79 +77 54 54 48 46 64 64 45 65 66 56 67 +54 70 84 100 90 88 80 67 93 82 59 79 +58 60 64 59 78 127 148 158 153 118 85 77 +78 103 88 68 72 67 67 82 109 165 198 186 +120 105 92 82 116 108 104 98 116 126 115 102 +96 105 95 106 87 80 75 79 82 76 102 89 +77 92 88 88 138 135 125 116 110 118 126 125 +126 134 111 109 116 109 116 109 106 110 134 130 +123 119 113 114 126 126 137 121 124 108 80 95 +86 89 87 107 94 104 110 86 87 103 104 115 +92 98 87 83 98 83 94 103 103 105 99 106 +175 181 187 181 185 184 170 166 179 174 179 171 +168 172 165 170 179 184 189 185 191 180 191 192 +174 171 159 149 164 168 165 157 154 155 141 147 +145 143 143 130 143 114 97 113 126 136 161 144 +157 155 137 151 164 138 117 108 117 144 147 137 +111 134 156 153 134 124 135 127 106 97 93 47 +37 29 37 35 33 46 57 56 62 141 191 200 +159 56 33 17 9 27 29 41 139 72 24 18 +25 28 26 33 32 56 78 104 102 113 104 118 +177 161 137 90 77 62 59 75 75 67 54 56 +36 37 60 36 22 19 25 77 68 75 69 32 +47 106 80 38 27 49 58 107 108 120 72 105 +158 154 135 128 99 85 129 167 180 169 178 181 +168 140 136 151 174 197 195 147 114 134 168 170 +174 187 195 189 198 188 171 158 186 195 185 178 +160 144 135 151 128 114 130 148 171 180 169 181 +196 188 176 177 189 196 191 186 192 189 184 200 +195 189 207 190 131 134 158 170 200 215 212 180 +157 144 130 128 130 133 119 121 118 120 119 120 +120 117 121 124 126 123 128 126 127 126 128 128 +137 139 143 139 140 133 149 146 150 165 171 172 +181 174 155 143 135 133 148 148 144 148 155 160 +148 137 145 151 165 164 156 135 121 120 126 153 +179 197 196 200 212 217 217 221 220 225 218 200 +162 115 124 123 174 198 196 211 204 205 206 200 +196 194 201 195 198 197 194 201 197 187 170 154 +151 144 100 118 151 133 154 185 211 207 204 206 +194 190 197 195 191 190 180 185 188 188 191 180 +170 177 167 130 123 143 141 145 170 187 171 149 +143 145 151 177 181 150 110 117 153 167 179 167 +144 111 83 74 72 80 59 52 82 108 165 162 +118 94 80 65 64 78 92 72 53 54 57 58 +78 69 69 79 86 78 78 96 64 51 64 59 +93 111 125 109 94 104 100 121 109 111 85 68 +74 74 87 97 103 99 87 99 125 131 110 74 +69 79 73 80 68 76 85 161 202 190 145 131 +146 117 102 95 89 116 94 98 89 83 121 127 +120 95 82 89 62 75 80 95 125 102 90 87 +106 131 120 114 110 97 93 108 115 109 124 113 +121 123 109 121 114 111 116 129 119 95 120 106 +123 133 128 127 114 116 109 88 83 96 98 89 +103 94 88 92 80 83 99 100 100 82 83 100 +99 98 103 105 87 98 95 107 +172 184 195 194 +181 181 170 174 169 178 176 178 186 182 192 194 +196 196 187 192 195 190 195 178 168 161 167 184 +177 158 150 172 170 151 149 141 128 133 141 118 +97 102 121 124 151 138 123 125 125 121 133 154 +151 134 124 148 144 144 147 144 149 169 169 155 +128 120 104 82 86 99 93 60 37 25 35 23 +28 32 32 36 23 38 65 138 182 206 181 98 +25 16 28 107 124 36 21 21 31 28 14 28 +21 32 35 48 118 180 198 182 133 68 63 100 +139 119 73 51 38 39 45 69 74 95 41 28 +22 28 53 135 126 92 52 54 88 126 117 93 +67 65 74 83 124 137 107 115 138 127 139 131 +108 88 114 148 157 168 178 174 129 120 137 175 +196 185 170 158 110 107 128 161 176 189 192 179 +171 167 154 190 199 192 180 178 166 134 147 160 +141 125 145 164 156 164 177 177 169 162 146 156 +190 189 178 184 186 181 178 196 202 194 194 179 +158 135 151 164 207 215 186 171 156 150 148 158 +151 129 127 115 119 121 127 118 121 121 123 124 +126 127 126 124 135 135 123 136 130 140 150 155 +150 154 167 161 169 158 143 151 160 150 143 144 +131 141 153 138 130 134 143 146 139 141 141 138 +140 134 133 121 119 119 123 150 207 211 210 210 +208 211 207 211 210 217 191 171 139 113 99 113 +172 199 198 197 197 198 195 185 191 184 190 197 +197 186 190 185 194 185 182 176 151 136 113 123 +136 147 176 191 208 212 201 191 181 184 189 182 +184 185 185 186 184 196 190 161 169 174 167 118 +139 160 157 143 172 167 169 162 161 158 161 176 +176 137 124 119 136 179 194 156 148 129 94 96 +102 82 92 85 119 143 141 127 129 134 118 93 +120 106 109 69 58 75 84 93 73 82 86 100 +99 89 94 90 68 66 70 66 73 96 102 89 +72 60 84 93 102 109 114 87 55 66 72 67 +106 99 97 82 108 141 128 110 80 62 64 69 +76 68 72 62 93 157 199 190 151 160 156 159 +147 139 134 114 98 82 103 144 135 110 118 89 +95 72 74 83 118 145 108 92 93 111 131 125 +107 103 100 87 98 113 92 109 113 120 134 119 +119 130 123 116 128 111 99 115 109 136 141 118 +127 124 105 86 96 83 93 124 110 113 107 102 +93 86 78 89 90 68 76 93 96 110 103 82 +86 88 95 93 +179 182 188 192 195 199 198 188 +182 175 167 174 170 174 191 190 169 191 192 192 +196 195 184 164 168 176 180 182 176 151 172 181 +169 153 127 136 147 143 114 87 108 126 141 156 +153 133 107 115 116 130 137 136 128 130 155 166 +157 156 141 160 174 158 136 125 104 89 89 106 +88 80 62 51 43 32 38 34 47 24 37 35 +31 26 38 45 58 94 157 195 190 167 67 108 +66 16 10 18 24 25 25 32 53 118 189 196 +199 155 100 63 43 41 70 67 68 92 78 79 +48 43 41 41 41 43 41 58 37 24 27 56 +72 70 28 26 38 47 69 67 44 153 118 38 +102 118 120 95 145 153 147 125 127 124 82 134 +167 179 172 149 138 150 137 144 181 195 189 179 +130 85 123 156 178 187 178 164 167 164 147 181 +190 192 189 187 174 136 143 141 129 113 139 158 +176 184 187 197 194 174 178 181 186 195 198 195 +191 195 185 184 180 177 184 178 162 160 184 181 +198 200 169 165 164 145 141 146 149 136 127 119 +121 125 127 128 128 126 125 131 131 129 126 129 +127 126 130 137 129 131 138 144 150 156 157 151 +154 160 169 179 182 159 141 147 140 133 127 138 +140 138 141 144 146 131 145 146 135 138 136 128 +124 120 123 154 196 209 211 207 191 192 198 206 +192 187 178 171 123 86 93 128 171 194 190 187 +189 192 192 198 194 197 205 204 197 198 208 213 +211 189 184 179 151 114 95 100 99 138 172 187 +199 198 198 198 181 176 180 180 188 185 185 194 +195 188 172 165 172 156 135 88 126 175 194 182 +196 196 178 157 149 153 160 161 140 98 90 121 +127 176 177 168 130 126 138 111 127 119 118 104 +82 83 103 156 141 123 103 85 83 79 65 59 +58 73 74 70 80 66 62 78 93 98 83 83 +69 90 102 106 119 107 75 62 65 69 54 92 +76 80 86 65 67 62 65 90 92 98 82 123 +124 105 120 121 128 115 73 84 72 77 107 99 +136 168 170 181 210 188 128 106 94 118 108 86 +77 90 92 107 135 126 117 110 99 103 89 60 +78 102 111 96 108 118 137 113 106 113 96 98 +89 83 89 98 95 111 133 116 108 106 114 134 +124 115 102 94 99 116 131 118 123 117 105 98 +82 86 102 93 98 105 119 105 94 92 84 80 +73 76 73 66 92 90 109 98 106 93 88 97 +185 187 187 195 197 198 176 184 179 178 181 178 +165 170 178 182 180 186 187 188 178 160 161 164 +160 167 160 159 172 178 178 162 140 126 126 136 +120 108 88 104 128 131 141 154 156 144 129 129 +128 145 157 134 124 130 155 187 170 159 157 179 +149 125 120 103 78 75 65 85 63 49 53 36 +45 44 38 52 32 32 29 41 42 25 36 24 +35 39 38 64 109 177 205 201 159 113 54 33 +32 62 99 161 157 172 149 85 58 43 67 84 +49 36 35 28 49 47 37 49 56 59 84 57 +53 75 46 41 52 58 43 49 65 29 37 55 +53 59 63 79 78 96 67 37 77 105 93 78 +99 138 157 157 180 174 87 104 154 149 139 137 +166 194 180 159 143 166 160 134 125 99 107 130 +164 178 180 179 190 158 131 143 174 195 197 192 +182 148 143 127 127 139 156 171 189 189 187 186 +176 170 187 191 199 205 198 194 201 199 194 199 +197 185 190 185 185 171 162 158 168 149 156 172 +158 146 156 144 133 125 119 120 127 120 120 129 +125 115 119 123 127 127 124 127 128 133 135 155 +149 139 133 126 135 133 144 164 181 165 165 175 +190 171 155 146 140 133 129 135 133 146 139 144 +137 133 133 150 144 135 137 129 127 123 125 135 +162 178 201 211 206 202 205 196 167 170 182 166 +114 87 88 111 168 184 191 186 192 199 204 199 +200 207 208 202 199 197 207 206 194 178 161 157 +151 126 106 103 89 115 172 190 191 199 202 194 +186 179 178 175 182 185 189 200 187 181 161 153 +160 139 107 116 160 196 205 201 195 179 176 169 +156 151 158 161 133 92 110 153 146 145 160 165 +116 102 148 166 116 119 99 67 80 54 69 87 +75 76 80 98 97 73 63 73 76 85 69 70 +78 77 70 77 66 55 69 79 100 107 106 97 +121 134 103 127 104 106 103 99 88 83 83 95 +115 100 80 80 103 125 113 88 126 131 108 124 +105 98 88 65 111 164 199 195 165 145 129 107 +102 166 195 158 90 111 106 89 86 70 90 111 +115 123 113 116 107 102 97 84 106 88 104 93 +97 125 127 127 103 96 97 96 92 76 87 85 +78 104 100 118 108 109 131 123 117 99 110 94 +84 119 97 120 108 107 121 99 109 82 89 92 +86 111 89 114 108 70 94 77 78 72 76 77 +78 83 70 104 99 94 103 102 +192 187 195 196 +189 187 176 172 176 188 182 185 191 186 194 190 +186 185 178 169 168 179 164 155 160 149 147 169 +187 171 157 151 161 140 139 124 98 103 110 129 +130 136 137 139 162 145 143 140 144 166 154 145 +158 187 180 165 138 151 147 141 127 115 105 103 +97 99 89 63 55 52 39 54 46 39 49 37 +37 48 52 48 43 29 22 39 31 32 28 21 +31 44 79 126 172 205 204 154 185 187 141 85 +45 28 36 36 35 39 48 63 125 155 98 35 +38 44 97 102 62 62 52 60 56 47 59 47 +48 64 82 36 43 44 87 108 99 95 82 52 +49 36 24 28 44 74 95 94 84 123 139 155 +157 153 134 95 128 141 144 149 164 175 177 185 +184 154 153 164 145 118 85 106 137 158 170 170 +153 135 149 164 178 200 202 190 186 182 153 155 +139 130 136 145 159 172 178 185 197 194 191 191 +205 206 205 191 191 195 190 187 180 180 184 185 +182 154 136 133 141 148 141 153 168 164 159 134 +127 123 121 128 133 135 123 124 121 123 126 129 +126 127 127 125 134 136 139 144 139 138 138 144 +150 153 145 148 157 155 156 158 151 149 140 131 +133 135 139 137 138 159 143 148 158 134 153 180 +139 136 126 125 125 123 124 157 180 176 205 210 +202 197 206 181 149 187 218 199 123 86 90 126 +170 195 199 182 191 195 201 200 196 198 208 212 +210 201 200 199 184 167 170 149 120 99 98 99 +98 139 187 178 186 186 182 182 182 182 180 184 +187 182 195 195 190 166 155 135 130 102 83 123 +137 189 202 192 189 185 164 162 147 144 128 130 +106 88 124 181 190 179 171 157 105 93 124 136 +121 161 168 139 102 79 53 57 83 73 67 94 +80 78 67 69 111 124 129 144 121 88 60 67 +69 73 76 66 76 86 87 114 103 97 117 106 +89 96 97 74 90 119 111 102 93 106 136 103 +68 77 106 120 96 103 114 108 90 120 166 190 +171 144 121 134 117 97 114 138 129 114 129 196 +179 103 92 110 116 109 85 110 116 137 130 106 +109 106 96 109 85 119 115 98 92 110 121 113 +130 113 80 102 87 90 82 77 83 97 100 94 +115 118 138 149 145 113 85 107 95 74 108 98 +113 109 88 103 103 99 92 96 92 94 115 106 +110 98 80 85 86 75 99 120 108 90 83 70 +93 119 129 124 +201 198 196 197 194 199 195 192 +186 182 187 182 182 184 190 195 194 184 185 176 +186 180 168 165 160 162 169 184 190 172 162 158 +165 155 119 110 114 117 125 126 129 134 138 141 +144 139 147 156 155 155 159 158 181 198 196 171 +148 133 126 127 128 121 133 133 119 94 66 70 +55 51 58 36 33 34 34 43 38 31 55 59 +47 35 53 62 51 35 33 34 29 29 44 54 +64 93 116 116 160 176 176 174 176 157 117 85 +62 46 42 35 57 119 150 161 157 120 51 60 +59 56 102 106 146 126 138 143 109 99 67 89 +66 79 90 60 56 83 79 47 42 33 23 18 +31 63 86 86 86 120 133 171 188 177 144 86 +87 123 145 158 174 179 189 188 191 187 188 196 +181 131 89 78 97 117 145 151 129 140 165 182 +202 198 208 200 192 179 153 140 157 141 121 136 +170 180 191 215 216 201 192 187 194 204 201 195 +198 198 189 188 180 200 200 187 177 149 127 126 +158 145 147 165 156 165 159 133 127 128 145 144 +134 126 124 125 124 126 124 127 128 127 120 123 +126 126 135 156 165 157 170 168 166 170 174 177 +178 151 148 144 148 157 154 158 144 145 143 136 +140 157 145 135 140 140 144 149 143 137 148 137 +138 131 126 140 164 172 197 194 187 179 188 171 +179 204 221 190 123 95 116 144 171 182 192 196 +191 192 194 171 166 188 197 199 195 185 182 187 +169 153 161 119 99 105 96 102 124 181 192 180 +175 170 186 177 169 179 185 180 188 194 199 204 +185 141 138 159 136 100 86 137 197 223 213 199 +207 199 167 162 151 141 107 80 77 114 157 191 +188 174 177 169 120 102 104 93 93 150 147 159 +157 125 94 60 74 106 93 65 57 60 60 49 +54 75 107 136 100 72 74 78 93 93 75 73 +67 70 65 62 84 118 114 93 88 98 78 90 +136 128 99 89 85 69 127 166 144 134 98 115 +104 97 124 104 108 170 161 153 117 96 100 86 +80 108 124 139 130 102 85 125 162 179 129 104 +97 110 92 88 133 139 105 116 102 109 116 113 +115 95 109 93 88 93 102 106 124 121 83 104 +119 121 127 107 118 133 134 115 110 117 107 150 +146 120 105 89 105 104 98 105 89 96 105 107 +92 88 103 103 108 96 93 106 104 104 100 87 +84 102 86 105 115 98 96 94 74 85 106 117 +184 184 192 197 196 197 197 198 192 197 195 196 +199 194 196 202 191 185 186 185 169 155 157 155 +166 181 179 187 177 168 164 161 131 120 123 124 +115 100 116 124 139 143 150 149 150 157 164 148 +154 149 135 153 171 174 141 143 145 151 167 157 +131 135 131 114 85 76 64 75 72 57 55 38 +32 45 48 39 23 51 48 70 104 80 79 84 +45 80 83 82 82 76 60 47 29 25 26 46 +33 62 70 102 117 155 157 161 146 126 144 146 +137 128 136 140 155 184 169 139 167 185 195 190 +182 175 150 139 133 120 113 69 57 83 80 45 +23 34 36 34 39 37 21 47 60 49 66 131 +107 93 109 160 186 194 172 127 77 114 129 164 +180 186 187 190 195 186 200 196 169 145 95 73 +70 94 114 121 123 138 160 185 198 196 198 199 +190 185 158 139 135 140 120 117 155 175 191 210 +215 200 192 196 188 187 187 190 192 191 196 195 +197 209 205 199 189 145 124 144 167 157 156 146 +151 165 140 129 129 130 139 133 135 129 126 126 +119 126 121 130 130 129 127 128 137 141 157 162 +161 149 147 150 154 167 161 148 149 141 148 148 +145 156 161 149 140 158 159 141 136 138 141 137 +125 130 136 126 128 123 121 120 125 124 125 131 +148 189 201 198 200 197 185 175 186 201 187 148 +98 87 104 162 179 178 187 188 191 186 191 188 +191 192 195 196 187 182 189 180 151 109 99 87 +93 98 93 95 116 180 197 199 179 181 189 178 +165 174 174 175 202 206 198 202 175 127 146 170 +145 137 133 185 229 229 202 191 197 186 172 154 +144 125 99 89 100 105 133 155 156 148 158 127 +100 103 104 104 105 94 120 79 84 85 72 85 +106 107 72 79 74 53 51 62 65 76 86 80 +75 70 70 75 86 78 86 76 74 72 60 69 +65 73 98 84 80 77 97 88 100 128 110 99 +94 103 65 77 115 137 107 83 103 156 187 135 +95 95 90 90 144 127 95 89 99 97 117 153 +151 111 99 104 111 131 147 136 131 94 95 95 +88 133 130 107 121 110 100 111 98 80 109 111 +96 119 109 111 108 104 108 116 113 146 154 135 +107 120 117 128 120 117 106 92 127 129 104 109 +116 124 96 98 99 95 106 113 110 98 94 107 +94 109 97 105 102 89 105 74 83 74 85 97 +100 109 103 100 104 83 94 93 +159 162 165 167 +168 179 191 200 207 205 194 198 199 195 195 177 +158 171 170 156 157 159 157 164 162 166 175 176 +180 175 162 138 133 131 138 131 103 104 124 127 +135 150 144 144 158 148 138 141 154 144 137 156 +165 159 150 149 161 192 200 179 137 107 93 90 +83 85 115 114 100 80 45 75 86 59 76 67 +55 86 95 141 147 137 127 129 86 70 53 54 +31 18 25 32 35 11 14 31 22 37 57 67 +38 54 73 124 137 135 140 129 127 116 139 129 +143 137 114 100 82 73 78 73 92 83 62 63 +82 74 104 58 22 57 34 29 55 42 54 52 +37 70 41 51 56 57 62 106 107 82 92 130 +167 189 164 136 93 107 135 169 168 180 187 195 +189 188 197 191 165 162 124 78 79 90 113 103 +114 143 177 185 189 204 212 202 180 159 153 138 +144 146 123 120 144 176 194 206 199 201 219 222 +210 204 201 197 188 187 187 180 201 211 201 209 +191 161 128 137 146 158 147 153 168 145 127 126 +129 134 128 124 130 130 128 126 126 127 129 136 +126 128 134 131 129 133 137 138 134 138 140 153 +164 174 167 168 151 140 141 135 138 144 149 148 +144 146 148 141 139 148 154 141 129 133 130 125 +135 128 123 124 130 126 130 138 148 201 213 218 +206 185 175 171 167 186 180 153 127 97 113 159 +180 190 195 196 195 192 198 194 188 195 205 200 +192 200 202 190 161 151 133 111 111 113 97 84 +136 180 187 186 184 180 178 176 177 166 145 175 +189 197 197 189 162 147 170 148 106 124 141 188 +219 213 185 182 184 172 165 133 119 109 97 100 +126 123 151 177 187 155 115 79 107 144 128 151 +151 126 107 111 69 75 88 69 90 103 104 90 +78 87 104 78 55 75 68 67 74 64 89 88 +95 108 78 62 78 70 60 66 84 76 77 70 +79 73 72 80 86 104 120 118 92 82 75 62 +78 70 79 169 191 169 134 99 75 67 73 77 +77 78 90 69 64 78 77 87 103 84 93 94 +85 94 106 104 98 127 107 90 95 117 131 114 +120 131 98 96 98 100 86 103 99 103 115 113 +106 116 105 134 125 126 153 159 134 123 110 107 +131 126 109 115 103 116 99 113 125 126 123 106 +103 110 111 126 113 99 96 92 85 82 105 90 +87 108 97 96 95 93 100 99 99 95 110 90 +102 109 93 104 +182 188 176 180 168 169 188 192 +194 188 197 198 204 197 184 181 159 140 148 158 +162 166 153 144 141 161 169 177 178 165 155 138 +120 114 133 138 127 147 145 149 166 156 149 149 +159 157 148 157 161 137 138 146 158 160 158 156 +164 179 174 135 126 107 113 96 76 82 74 75 +73 64 73 78 83 96 98 92 88 94 85 79 +74 53 78 76 102 115 108 140 76 73 111 120 +131 100 60 53 55 33 39 56 69 72 65 85 +90 108 86 67 85 111 84 73 68 66 49 48 +56 54 53 46 33 53 60 57 78 113 96 70 +52 64 33 34 57 59 93 107 58 48 18 51 +51 107 97 100 110 89 65 97 144 179 156 140 +89 87 123 166 167 169 167 176 192 196 202 201 +192 185 154 98 77 80 105 144 178 158 158 180 +180 204 213 199 177 150 145 140 136 107 115 118 +149 182 194 196 190 194 207 210 218 220 216 208 +202 194 189 176 179 200 215 212 200 182 133 134 +159 172 170 143 133 131 137 135 137 133 130 131 +139 127 134 133 129 135 137 135 123 126 129 130 +130 129 135 141 143 149 161 158 168 177 170 157 +150 145 159 165 148 138 144 150 139 139 138 140 +136 138 144 134 128 126 131 129 124 135 137 135 +130 121 129 134 150 177 192 205 196 197 206 199 +191 197 181 145 126 93 104 148 162 176 189 195 +192 200 204 196 196 195 202 200 189 191 195 191 +157 135 131 118 131 123 96 88 150 176 156 159 +182 196 171 162 160 138 161 182 181 184 182 164 +137 147 141 114 85 120 147 169 201 197 184 181 +170 162 167 147 121 104 80 104 129 166 178 178 +162 134 133 90 82 174 158 119 121 117 92 123 +134 117 128 119 102 99 108 121 108 104 79 77 +57 62 76 64 60 70 74 77 79 73 55 86 +84 67 72 76 86 83 73 80 69 75 69 74 +76 114 138 113 104 108 90 102 94 150 158 157 +126 100 90 95 111 94 94 99 116 128 118 96 +97 83 88 67 86 102 92 110 95 92 78 80 +87 84 98 90 97 103 116 126 103 110 110 92 +106 102 105 103 105 93 103 138 147 124 118 121 +137 119 110 131 143 116 111 119 130 129 137 120 +120 98 98 96 114 127 125 134 125 119 127 113 +121 110 109 98 90 88 90 114 104 104 116 102 +106 108 92 85 93 82 80 103 92 98 115 109 +202 201 204 207 206 204 204 201 200 202 206 209 +208 199 180 184 168 169 175 171 159 151 155 162 +178 174 169 165 153 141 123 121 126 140 154 144 +161 174 176 175 176 180 165 164 148 146 155 166 +157 126 138 158 158 145 136 135 151 161 141 123 +127 127 125 98 77 64 57 49 47 57 78 113 +102 86 85 77 66 86 95 87 94 67 85 107 +114 121 117 119 111 73 76 75 72 49 41 48 +44 37 44 39 46 45 47 56 103 88 95 97 +86 79 57 68 75 65 53 56 75 93 70 44 +60 56 37 34 35 58 83 102 96 82 52 69 +53 43 76 65 64 78 35 38 35 80 84 149 +130 111 94 73 130 175 166 168 125 88 98 123 +141 159 159 175 188 196 200 192 197 164 136 104 +70 78 125 151 161 161 151 148 151 181 184 185 +178 154 141 148 119 102 118 121 126 164 177 186 +187 198 207 201 202 205 205 211 210 197 201 200 +186 197 208 210 197 172 140 139 170 187 157 131 +127 129 131 124 127 126 136 140 141 123 125 127 +125 126 135 139 126 129 126 135 131 131 131 143 +155 164 161 154 172 177 166 170 174 164 151 156 +145 145 143 139 138 140 149 148 139 139 145 144 +145 136 139 127 128 136 138 139 146 127 125 138 +148 160 180 195 205 206 201 198 206 213 190 157 +119 98 136 161 170 190 194 199 211 219 212 205 +197 206 215 202 194 197 186 169 133 116 121 124 +116 111 92 96 148 161 150 144 171 180 171 175 +154 120 139 175 182 185 177 170 180 145 123 126 +144 131 169 190 201 198 186 184 169 146 137 113 +84 65 58 136 165 162 148 155 130 103 73 75 +128 157 150 131 155 153 119 92 97 83 76 100 +113 138 105 109 130 134 104 77 70 69 66 85 +108 120 113 105 94 78 115 84 79 95 98 131 +102 82 69 53 67 60 79 75 70 119 110 98 +72 74 85 109 154 137 102 83 92 94 74 79 +66 79 86 85 107 118 131 146 146 121 100 105 +76 90 106 98 123 104 75 74 68 69 75 99 +102 117 109 111 124 108 116 123 103 100 114 95 +90 108 86 100 169 149 111 116 147 134 133 100 +125 128 108 117 127 124 141 115 109 116 104 93 +113 117 125 133 145 125 120 118 105 94 106 116 +96 78 109 109 107 118 114 88 104 92 102 104 +92 89 85 74 84 78 114 111 +198 204 211 207 +201 198 197 189 188 192 197 195 199 201 191 185 +198 200 187 169 165 175 197 198 194 181 164 138 +134 126 119 133 141 144 146 169 176 184 187 170 +169 162 141 143 147 149 168 164 125 127 155 154 +135 121 134 139 168 168 153 128 134 129 120 79 +76 83 80 78 94 97 111 102 89 77 90 93 +76 60 79 80 60 48 54 48 43 59 51 51 +56 38 26 19 22 17 17 29 44 21 38 45 +70 53 74 99 73 72 80 83 87 62 55 52 +57 64 53 47 35 88 88 74 93 67 38 15 +25 25 29 53 74 108 136 116 84 84 117 124 +100 106 57 48 52 60 83 105 130 111 109 88 +108 157 168 178 184 158 104 121 131 147 176 189 +195 198 198 195 189 149 128 99 78 76 119 126 +141 146 148 151 159 164 161 164 168 140 128 115 +108 104 100 89 116 164 189 197 188 196 206 204 +206 207 195 207 209 198 189 188 185 196 200 199 +195 169 138 138 165 168 138 137 149 148 144 129 +135 127 130 135 130 126 130 129 125 130 140 138 +125 131 130 131 140 137 133 137 149 141 147 126 +125 127 137 141 149 145 134 143 150 155 161 154 +138 144 139 139 148 148 150 148 133 128 129 123 +126 124 129 129 134 128 127 134 135 146 177 211 +209 201 201 209 201 207 189 148 114 98 153 180 +189 199 199 208 221 233 236 222 211 221 220 196 +192 190 187 162 113 102 123 127 107 99 84 126 +157 140 138 129 150 155 155 158 138 120 127 149 +160 185 195 196 185 144 115 113 141 137 178 200 +199 194 178 174 158 123 95 70 74 77 107 153 +182 172 117 120 94 72 75 102 145 172 154 127 +116 135 149 131 124 105 89 109 129 88 85 96 +98 130 104 90 96 133 125 124 107 82 68 72 +59 84 87 102 94 100 84 98 104 80 92 80 +107 113 84 69 93 104 124 108 77 127 144 98 +86 103 87 93 74 82 100 100 86 84 88 67 +70 96 88 84 85 93 94 85 87 68 79 98 +100 95 92 73 82 75 77 85 120 126 133 124 +120 117 104 105 127 113 98 100 110 95 82 84 +109 161 148 117 150 153 136 117 120 116 111 102 +116 135 130 121 100 102 116 109 105 125 130 123 +130 131 123 115 93 89 90 93 93 70 98 102 +99 119 115 104 93 102 97 96 118 96 93 83 +78 98 90 113 +198 201 199 210 200 194 192 180 +184 191 189 182 196 188 178 177 180 177 171 164 +175 198 204 194 181 160 129 119 125 134 145 135 +128 150 169 171 174 180 151 143 147 141 148 145 +140 145 137 133 139 144 138 131 125 126 140 145 +136 135 125 125 119 108 67 74 75 77 90 88 +64 37 47 53 77 108 93 49 39 52 51 51 +38 38 67 57 54 73 54 46 45 48 54 36 +31 36 52 60 69 69 63 58 42 34 46 52 +56 85 83 67 56 65 105 108 67 73 82 84 +76 94 99 79 74 72 38 34 15 18 42 49 +84 80 129 108 82 102 145 159 137 108 56 60 +77 57 82 51 79 135 118 82 80 115 144 151 +156 161 141 97 126 146 155 175 192 189 201 202 +181 139 151 138 96 83 83 96 115 148 154 148 +155 162 157 161 180 156 130 118 105 102 102 97 +111 159 190 195 205 216 209 204 199 205 208 216 +205 189 175 174 190 204 208 204 198 185 158 157 +140 141 138 143 139 131 128 124 129 128 134 131 +129 126 125 123 128 130 134 130 125 134 134 133 +138 135 140 137 148 150 141 145 140 149 155 158 +165 159 149 137 138 134 137 143 139 143 147 146 +144 150 148 144 143 145 159 138 129 130 135 148 +156 135 133 133 133 134 168 210 213 212 211 207 +206 204 169 119 105 93 150 184 188 194 200 201 +208 222 227 221 215 208 216 211 191 182 177 154 +131 124 127 115 92 92 110 150 165 145 137 137 +130 138 141 130 133 144 165 177 186 189 200 192 +166 127 90 95 148 175 206 227 208 178 167 162 +146 128 126 90 63 55 89 126 162 154 134 126 +108 85 94 105 137 111 100 99 114 130 161 167 +145 118 94 108 88 90 120 127 108 107 99 93 +110 131 131 102 95 95 92 129 126 111 96 67 +52 56 68 80 100 103 72 96 106 85 118 137 +119 136 134 144 186 175 106 75 69 70 90 80 +63 80 69 83 88 86 88 89 84 87 103 106 +118 105 106 103 97 93 107 92 88 89 89 72 +97 88 87 93 166 178 155 127 116 114 127 107 +136 120 114 107 119 121 93 92 86 119 146 121 +116 116 129 118 109 121 115 116 113 126 128 118 +105 90 104 98 89 118 121 119 109 118 118 95 +100 94 93 94 84 82 78 106 97 106 113 89 +110 105 90 113 113 113 119 118 99 105 116 103 +188 194 199 198 192 190 181 180 188 192 194 195 +191 186 181 179 167 159 164 171 176 184 171 165 +149 138 130 134 137 139 130 129 158 177 180 175 +164 147 157 160 155 157 148 159 140 140 137 137 +140 135 126 136 150 156 169 145 127 106 110 103 +78 93 82 90 109 119 125 85 31 34 51 60 +100 90 56 36 38 38 38 35 48 49 52 58 +51 68 69 44 53 59 51 75 62 49 60 65 +63 62 58 39 49 37 29 53 59 39 47 54 +54 64 85 87 73 59 52 57 60 64 79 80 +72 65 48 31 45 38 37 63 83 65 32 42 +99 124 95 89 94 107 92 65 49 38 44 37 +97 148 137 158 121 94 116 140 159 151 143 98 +115 123 143 168 190 189 196 199 189 164 156 134 +116 76 78 98 113 117 126 164 162 169 171 189 +204 194 169 140 113 114 100 88 104 144 171 187 +199 206 210 202 197 201 194 186 181 172 150 187 +204 197 196 187 179 194 195 179 150 146 138 141 +143 126 130 129 124 130 131 128 130 135 141 136 +133 129 126 138 137 134 139 137 131 134 131 127 +133 133 133 134 140 155 174 196 176 160 157 151 +148 140 147 147 134 131 136 144 137 140 143 136 +134 124 136 131 130 125 124 139 156 154 131 135 +128 141 168 190 207 218 218 205 205 201 177 118 +89 94 148 178 191 194 190 191 198 204 213 219 +210 205 205 201 200 192 179 147 129 127 133 120 +106 103 130 160 140 118 128 148 153 127 143 133 +144 154 176 178 188 202 202 187 159 121 94 103 +164 192 211 202 196 190 177 155 136 139 130 86 +54 43 85 115 128 133 145 151 145 114 127 138 +128 110 126 114 105 109 105 119 136 121 83 87 +90 76 102 111 104 116 98 88 93 87 72 65 +99 159 154 128 88 95 77 58 74 70 63 68 +70 70 58 76 67 90 87 84 103 129 153 121 +105 73 77 57 82 84 82 100 94 85 77 89 +89 130 110 97 113 94 92 105 111 111 100 123 +103 94 109 87 88 104 111 98 79 114 104 90 +124 199 165 138 128 120 125 115 103 136 131 113 +111 131 120 69 90 87 93 111 92 105 103 104 +114 114 124 121 117 114 119 130 111 93 107 96 +106 97 113 114 105 102 106 116 98 109 96 93 +96 79 99 90 98 99 99 116 105 114 115 131 +115 120 133 120 118 114 95 107 +194 195 192 199 +194 177 180 187 188 195 196 191 191 188 184 182 +170 167 181 179 172 150 138 161 164 159 148 133 +125 126 137 168 172 176 170 168 155 154 165 166 +159 151 161 160 162 144 114 128 123 147 157 144 +155 148 140 140 120 124 127 115 104 95 83 87 +89 93 93 86 75 39 37 64 60 57 54 43 +44 31 22 52 57 54 54 73 80 127 104 55 +48 35 34 38 46 73 43 45 45 32 38 43 +32 37 62 38 29 26 23 42 65 47 68 110 +85 60 78 90 85 66 47 41 58 60 97 69 +62 87 70 57 36 47 70 60 109 116 109 66 +56 67 72 32 45 72 77 45 84 146 157 156 +115 89 99 137 127 120 118 86 74 119 143 176 +187 181 179 185 171 155 151 130 137 96 82 111 +117 120 134 137 124 130 162 184 178 179 160 135 +134 127 104 97 126 153 169 181 185 197 209 201 +209 209 202 196 191 181 174 178 187 196 198 195 +197 196 176 154 144 135 144 141 129 129 128 129 +135 137 139 128 135 124 130 133 129 134 139 141 +130 131 126 131 131 137 147 143 154 147 153 155 +150 168 175 175 165 148 143 169 150 136 141 139 +136 133 149 148 138 135 140 141 139 130 140 130 +128 135 131 129 150 160 133 133 129 141 159 159 +185 209 211 204 206 198 157 105 77 96 143 169 +174 190 200 200 210 220 219 212 217 207 205 197 +185 186 168 139 121 115 114 89 88 102 149 179 +150 128 168 155 147 143 154 151 150 150 166 191 +200 196 190 175 137 103 111 107 134 182 197 192 +194 191 162 133 119 130 110 79 117 136 165 168 +164 150 144 147 130 104 123 147 160 137 138 151 +151 168 155 135 136 140 110 103 102 86 120 134 +125 125 127 129 116 97 121 135 135 124 113 109 +94 94 86 100 70 68 74 68 86 79 78 92 +87 92 102 121 147 167 167 139 90 88 102 92 +63 87 76 88 93 99 114 100 96 79 102 99 +94 100 97 115 109 107 113 93 106 110 106 104 +104 121 111 105 95 107 125 100 99 129 188 145 +129 140 137 120 118 123 154 158 134 103 117 108 +80 100 89 92 121 109 98 99 105 87 125 139 +125 110 110 120 108 93 92 99 83 106 129 115 +115 126 116 125 119 106 98 89 75 93 103 110 +107 97 96 104 107 117 133 117 130 130 125 125 +124 129 100 97 +200 191 179 178 179 180 181 191 +197 198 192 189 188 178 182 190 184 180 167 160 +162 158 178 176 172 153 127 114 135 151 164 167 +168 174 168 164 150 150 144 155 168 170 172 164 +144 129 115 127 164 167 139 145 148 150 156 137 +128 140 121 109 114 89 73 89 106 73 62 60 +39 43 52 56 53 56 51 39 33 43 51 72 +77 44 57 79 64 82 70 55 26 24 22 29 +34 41 63 49 27 25 14 21 17 25 42 35 +52 47 62 87 57 53 44 77 84 92 89 51 +45 43 35 33 32 14 26 70 115 96 66 74 +90 97 99 66 63 80 74 99 111 55 52 38 +96 109 115 94 59 109 175 177 138 110 106 158 +143 128 160 155 100 94 115 147 169 181 181 175 +144 135 147 147 126 110 79 93 121 120 139 154 +140 141 143 148 154 182 188 170 147 137 114 102 +134 175 181 190 188 189 191 201 210 209 218 211 +187 178 168 176 191 208 208 198 196 185 160 151 +153 147 147 134 126 127 126 130 135 135 127 126 +130 136 128 131 134 139 136 131 135 125 124 127 +130 130 133 131 136 137 146 147 168 191 179 165 +158 146 141 139 138 134 135 138 133 131 138 133 +135 140 138 137 137 136 145 140 136 134 131 126 +137 150 135 134 130 127 143 151 174 195 204 206 +190 159 141 98 78 108 144 146 172 192 196 201 +222 226 215 219 211 213 215 190 177 174 145 119 +118 111 103 94 106 148 188 187 166 144 174 170 +160 171 170 166 162 136 149 158 188 199 189 156 +108 89 107 128 184 204 209 181 189 184 159 135 +97 79 69 97 114 178 191 197 180 157 124 109 +103 95 104 159 176 154 131 133 187 169 160 156 +140 143 125 102 89 95 95 87 85 89 76 86 +102 118 105 90 58 66 65 74 79 75 88 75 +87 73 79 77 65 93 84 85 85 95 136 156 +143 138 104 75 73 83 82 99 89 90 100 83 +80 108 128 126 113 72 70 98 95 94 127 121 +130 134 116 119 98 99 115 117 113 124 124 116 +83 102 104 98 92 113 128 126 115 130 136 127 +117 102 115 144 137 123 116 94 95 75 88 94 +97 118 104 80 100 107 96 117 144 129 107 103 +102 95 94 87 96 104 118 128 128 135 119 113 +108 114 103 99 85 78 96 121 116 100 115 104 +106 113 106 114 108 123 124 110 116 117 115 100 +186 182 181 178 180 186 194 197 199 200 199 187 +179 189 182 190 189 179 171 172 168 191 182 159 +134 128 116 140 169 168 157 174 168 156 151 151 +135 144 158 171 171 162 149 127 111 126 141 157 +174 175 171 165 165 162 147 141 133 127 117 130 +85 66 68 65 93 55 56 56 37 38 47 68 +76 74 64 44 64 60 73 117 111 72 75 90 +74 65 53 46 36 47 67 43 42 33 29 38 +62 36 39 23 29 52 39 36 39 44 42 67 +56 45 84 52 37 55 68 79 74 67 70 69 +59 77 66 62 78 76 52 69 66 90 93 66 +69 62 70 48 38 38 65 36 55 58 53 97 +119 99 146 166 138 155 145 140 131 124 127 157 +144 79 106 140 169 180 174 169 155 156 165 170 +175 129 87 113 118 136 147 140 133 130 164 177 +185 207 202 181 144 126 109 97 126 159 170 176 +172 186 188 184 194 194 195 190 171 159 165 195 +207 208 209 205 197 169 143 148 154 140 137 131 +127 123 123 128 136 131 131 126 129 130 126 133 +131 137 137 137 129 130 126 125 127 128 127 133 +136 140 148 155 168 191 175 148 143 150 149 146 +140 139 146 145 136 129 129 128 134 150 139 134 +139 137 140 131 140 144 145 141 144 149 141 130 +147 147 143 144 166 176 186 189 170 149 109 77 +80 128 141 137 171 195 192 198 209 216 207 201 +199 206 201 182 167 149 126 115 97 95 85 96 +131 167 186 176 166 168 177 180 170 167 157 164 +177 167 175 182 198 189 186 150 104 100 144 172 +180 192 196 162 180 170 131 100 88 86 45 110 +134 187 200 176 149 145 128 131 106 102 169 177 +138 104 138 114 146 139 140 157 165 168 174 159 +134 148 120 87 72 97 90 85 75 93 119 124 +181 194 167 117 73 72 76 65 84 86 86 86 +115 107 106 100 128 164 147 93 95 92 105 98 +74 69 83 93 94 102 85 92 102 116 83 88 +102 103 120 120 106 90 99 109 113 119 114 94 +90 85 79 103 116 108 104 128 102 117 100 88 +82 100 117 102 106 105 107 107 93 110 105 105 +141 141 126 119 107 86 69 90 96 111 99 94 +105 86 93 85 113 124 99 108 87 75 77 97 +97 80 108 120 147 160 129 119 118 128 113 97 +95 89 109 113 120 117 113 117 97 109 107 100 +116 109 134 125 110 123 106 111 +175 176 184 197 +195 194 197 196 202 201 186 177 182 180 169 165 +157 168 187 179 184 176 145 138 133 141 144 166 +170 161 168 166 162 158 148 144 146 174 181 171 +162 162 162 139 140 156 176 187 185 174 170 162 +156 159 158 135 127 129 129 114 63 39 43 96 +62 62 68 52 48 33 67 75 95 90 89 93 +96 63 52 69 60 39 64 69 82 68 74 103 +64 100 100 66 63 73 67 46 65 59 42 87 +80 58 70 82 109 130 130 109 129 103 73 74 +53 69 72 53 84 96 99 96 88 85 65 70 +66 41 31 39 56 77 98 120 106 46 48 105 +48 60 93 84 86 104 102 115 156 96 110 138 +121 151 126 144 147 133 97 92 96 57 89 147 +167 169 147 128 139 155 167 172 179 135 99 110 +149 171 179 175 155 154 180 185 197 207 200 195 +170 139 117 96 98 106 121 141 157 185 202 205 +200 191 184 158 148 176 180 186 198 206 207 205 +188 153 150 145 138 134 127 136 141 136 130 129 +134 129 124 127 126 126 127 127 128 133 131 127 +126 129 125 127 130 131 129 138 140 140 140 137 +131 131 140 141 148 141 145 148 141 133 139 131 +125 134 134 135 133 145 136 140 139 138 144 148 +150 151 150 146 146 136 138 139 147 143 138 149 +165 180 196 190 182 136 83 66 100 143 155 167 +189 205 208 215 219 210 205 200 206 198 195 174 +158 159 136 110 107 79 99 123 168 188 196 188 +182 196 195 169 169 175 172 182 186 187 189 196 +195 180 179 139 118 119 176 184 185 172 162 179 +181 141 120 80 56 83 77 111 169 182 169 165 +159 158 144 171 126 125 194 184 99 79 120 135 +106 109 103 135 154 106 94 78 82 124 134 124 +118 110 95 99 80 74 106 139 141 118 115 126 +126 181 182 136 103 97 124 127 109 86 154 197 +178 137 143 133 113 127 129 87 85 94 86 93 +87 124 110 78 90 102 111 95 106 104 83 87 +97 85 117 110 107 109 114 104 114 111 80 96 +88 96 98 75 86 87 82 78 72 79 83 104 +97 96 80 84 100 96 100 100 114 149 144 129 +108 105 97 88 111 89 96 118 107 107 109 105 +86 107 111 80 100 67 62 92 88 104 114 108 +130 159 143 120 135 125 113 111 92 107 109 124 +124 126 116 100 106 87 103 98 96 118 109 119 +127 119 129 116 +187 186 199 201 190 187 187 196 +199 186 179 174 170 168 168 167 178 168 153 166 +168 170 162 153 154 166 162 164 167 170 172 168 +167 174 175 170 190 197 184 158 146 165 160 146 +159 174 186 186 172 155 144 153 151 167 159 131 +145 143 114 75 36 44 46 66 70 57 76 77 +32 48 79 86 124 114 102 99 73 36 54 60 +41 47 51 42 59 43 49 45 53 55 46 46 +27 37 55 83 70 51 64 76 88 102 100 115 +134 117 121 125 128 114 110 111 107 80 58 77 +100 111 90 111 66 52 48 85 129 66 39 22 +23 26 36 53 65 65 63 47 67 127 135 82 +74 113 117 109 103 75 87 137 124 128 138 165 +190 181 150 140 120 72 78 131 154 174 176 165 +140 115 144 177 165 136 108 119 175 186 190 194 +191 175 180 190 181 178 169 151 146 124 111 85 +93 104 109 119 153 176 196 199 196 184 181 190 +199 189 184 196 191 186 190 188 172 169 159 138 +139 134 141 136 137 137 138 136 128 124 120 123 +124 128 124 126 130 141 137 130 134 126 126 130 +136 137 135 146 148 143 146 153 158 145 147 159 +153 145 146 144 149 136 134 145 137 133 137 151 +147 151 146 131 138 141 135 140 147 146 136 131 +135 137 156 148 135 134 144 144 166 185 192 192 +186 129 94 103 151 179 176 169 195 205 213 223 +210 197 205 197 188 197 200 172 154 124 102 110 +111 94 100 129 167 189 198 187 200 198 186 174 +174 172 172 190 205 205 204 196 187 179 166 121 +131 140 175 196 199 170 155 157 160 117 107 85 +72 95 129 172 194 184 174 178 174 160 121 92 +68 86 166 180 151 102 106 145 141 125 111 104 +100 85 118 104 85 104 111 109 107 94 128 105 +59 63 76 83 90 140 149 94 88 93 114 121 +135 168 175 182 188 199 186 133 110 102 100 90 +80 86 80 85 99 92 89 94 110 77 87 90 +82 106 86 97 80 83 96 82 97 74 104 107 +89 113 85 104 114 93 95 97 104 96 107 88 +66 109 88 93 96 76 86 98 115 107 108 102 +105 127 102 97 111 107 137 141 147 129 97 96 +96 94 76 97 119 116 99 114 124 105 102 113 +83 82 84 69 105 107 117 121 92 121 138 117 +116 135 127 121 120 119 123 118 106 114 128 113 +92 95 88 88 103 86 116 97 113 123 126 128 +189 198 204 194 178 176 187 194 190 188 178 175 +176 186 182 177 168 157 160 177 189 187 174 165 +156 156 171 177 180 179 177 179 179 182 187 194 +198 189 159 154 166 169 169 157 156 167 169 167 +151 145 147 157 172 175 157 160 162 134 69 49 +42 43 87 106 78 68 77 60 58 72 104 116 +87 62 49 34 45 43 47 63 65 39 42 65 +48 41 38 27 31 35 53 38 47 64 73 58 +59 54 76 125 165 149 159 164 151 151 137 130 +151 162 175 168 160 154 133 90 86 79 73 63 +53 54 69 73 52 23 35 23 29 26 32 27 +26 45 60 46 45 76 63 88 57 70 63 64 +111 93 87 117 114 137 154 164 189 188 197 188 +190 159 70 105 144 176 169 134 123 131 167 177 +177 139 98 98 154 185 192 198 195 190 192 195 +196 206 196 174 144 129 111 93 121 151 155 158 +157 162 158 169 180 161 180 196 187 189 196 191 +191 182 169 154 149 156 137 137 144 131 144 138 +135 133 135 128 138 128 121 126 121 124 125 124 +129 136 134 126 131 134 131 130 128 131 136 144 +149 151 160 162 164 156 148 153 151 150 144 137 +143 136 148 157 146 145 143 156 150 150 149 141 +136 138 146 146 140 135 133 128 133 136 144 138 +136 144 154 160 172 186 190 181 151 116 89 111 +151 158 175 187 190 209 215 209 200 207 205 194 +197 201 190 164 155 137 100 100 105 97 116 143 +174 187 182 182 201 197 176 175 172 168 177 190 +205 200 198 202 185 164 136 96 114 138 178 187 +161 138 164 167 130 94 89 70 85 116 124 157 +191 194 190 185 171 145 88 87 78 126 123 114 +139 143 127 125 144 153 133 135 117 109 130 100 +84 68 82 131 154 115 74 88 68 87 102 82 +105 109 156 165 120 111 109 106 93 84 139 151 +140 155 143 139 161 157 135 138 115 100 116 100 +87 94 103 103 89 111 96 86 125 130 121 99 +89 93 118 95 83 99 70 77 87 107 131 111 +118 108 98 87 90 98 110 117 94 90 118 104 +123 89 75 84 94 90 107 111 90 87 104 83 +90 86 89 125 144 149 119 107 110 106 106 94 +118 117 115 109 111 127 125 116 106 114 107 98 +87 102 117 105 97 110 111 118 113 125 118 116 +123 121 123 118 114 123 105 113 109 103 108 90 +104 93 98 93 107 125 107 121 +196 197 198 190 +177 189 206 196 191 186 168 174 179 181 178 184 +179 184 187 191 192 175 179 174 160 168 179 192 +192 175 169 182 185 190 195 198 184 189 189 188 +200 189 161 144 145 149 150 164 153 149 166 170 +190 191 194 177 146 108 63 38 72 83 86 104 +52 33 67 56 60 100 107 78 42 47 38 51 +45 73 59 41 98 66 35 32 52 47 56 48 +47 62 42 29 55 43 42 58 62 58 70 69 +76 66 75 58 63 54 43 51 84 95 110 109 +111 117 115 108 77 66 80 74 105 124 96 110 +92 47 48 19 11 31 32 46 107 108 72 86 +79 64 97 123 85 72 78 74 107 158 102 104 +147 165 164 174 181 181 202 198 191 169 110 79 +125 162 157 123 109 138 172 187 189 150 107 82 +143 176 185 191 190 187 182 192 204 211 211 192 +170 139 109 107 160 177 177 184 185 174 169 169 +172 180 191 190 188 198 202 205 205 181 170 162 +159 149 131 131 131 134 140 144 131 135 138 137 +135 123 126 129 126 125 134 129 129 129 127 126 +130 129 124 130 128 133 140 146 147 139 140 140 +154 154 153 174 169 155 146 144 143 140 137 146 +153 144 145 155 153 158 156 134 135 145 156 151 +147 144 137 137 133 129 131 133 131 156 166 155 +171 170 170 151 110 88 77 108 164 178 186 188 +195 205 213 205 207 200 195 198 186 192 204 192 +162 138 113 104 94 94 148 198 189 172 175 179 +188 188 171 161 166 166 190 198 191 198 201 192 +176 151 115 125 139 176 198 156 143 150 168 157 +127 72 75 60 79 114 111 144 176 185 192 179 +136 109 93 68 83 146 136 100 124 139 137 120 +127 143 148 140 153 144 160 133 95 98 96 103 +108 111 123 133 115 130 133 108 98 100 84 106 +153 141 99 89 119 102 114 90 60 73 57 47 +68 65 78 85 104 117 107 98 98 129 130 143 +119 111 125 102 123 155 134 146 164 154 148 136 +106 83 88 82 83 89 90 121 125 111 85 90 +66 85 116 143 93 87 94 100 107 88 97 107 +92 110 109 105 124 92 86 93 79 83 92 106 +119 129 121 104 109 93 102 113 104 130 118 113 +127 123 120 114 134 108 123 136 106 105 109 108 +98 103 100 94 117 109 103 124 103 125 121 116 +118 106 107 99 116 100 97 108 80 102 106 93 +103 113 119 118 +192 182 192 184 187 188 205 200 +184 171 167 175 180 186 189 197 195 184 198 197 +186 181 182 172 171 178 168 170 186 207 208 200 +179 172 190 191 188 197 189 181 175 162 154 164 +159 150 169 172 179 176 176 191 191 200 182 147 +114 86 58 72 73 98 88 65 52 45 55 67 +75 68 54 38 60 67 45 44 77 52 41 46 +55 78 62 45 103 136 157 153 130 115 100 75 +45 31 28 46 24 8 26 34 22 28 65 62 +57 45 47 57 51 53 64 55 59 69 111 155 +181 199 208 198 202 205 202 201 202 199 200 205 +196 181 137 89 62 66 75 87 74 55 64 73 +43 59 69 104 103 105 78 76 104 135 138 159 +185 182 171 174 156 144 119 70 93 145 138 139 +103 113 150 160 166 164 118 102 118 157 176 184 +189 190 192 190 192 205 209 190 161 140 117 127 +135 167 175 186 180 188 191 186 202 190 186 194 +205 208 213 215 198 195 182 175 149 134 129 131 +127 141 140 133 134 147 138 125 130 128 127 126 +130 126 127 135 131 124 125 129 128 128 124 131 +139 157 155 136 140 135 144 161 150 148 147 139 +146 135 134 134 139 135 131 139 145 137 137 137 +139 143 138 130 133 143 143 148 150 149 148 138 +141 138 143 135 129 143 155 160 166 177 166 129 +84 89 99 137 182 197 204 211 207 188 208 216 +211 206 202 207 205 210 208 190 140 107 97 104 +83 102 158 206 206 191 186 184 168 149 141 134 +156 182 200 201 196 208 205 192 167 129 96 113 +127 176 210 167 155 160 159 143 124 96 59 48 +103 151 130 181 185 165 169 161 125 98 56 83 +87 88 126 128 99 120 145 148 129 102 93 134 +126 119 123 136 125 115 124 106 115 95 84 98 +80 57 69 58 66 83 74 105 106 137 181 116 +121 109 86 79 88 99 77 63 65 66 86 77 +93 105 84 100 121 107 97 89 127 108 137 108 +106 110 100 109 109 116 120 129 119 96 78 83 +76 114 97 99 110 98 99 86 89 75 88 104 +92 104 87 89 80 78 80 72 89 70 82 80 +76 100 92 100 117 104 109 93 113 110 99 110 +99 106 100 115 117 117 130 123 116 108 105 116 +116 129 123 128 129 116 127 111 94 98 95 100 +87 95 103 113 129 119 128 125 121 119 119 117 +102 128 115 107 107 78 97 90 87 115 118 129 +171 177 182 195 190 185 194 178 179 177 187 194 +190 197 207 205 196 201 210 198 197 190 188 174 +165 166 160 170 197 204 204 205 207 205 194 195 +201 188 181 180 182 174 172 169 156 161 162 169 +184 172 184 188 187 174 155 110 94 88 74 87 +115 106 102 96 49 46 56 59 45 47 37 64 +56 52 62 65 74 97 78 54 63 58 105 135 +130 98 97 76 76 97 87 53 31 21 21 21 +23 22 16 28 21 27 35 39 42 39 28 26 +33 36 54 136 189 202 196 167 138 107 86 77 +58 55 57 67 83 63 80 98 134 149 184 198 +199 185 129 82 52 44 95 89 67 64 58 47 +95 107 123 119 129 164 168 143 162 175 145 151 +160 116 85 58 62 99 136 162 164 146 130 115 +117 109 113 107 65 124 167 177 188 195 195 195 +197 200 200 189 159 135 115 104 124 156 167 172 +159 180 191 201 206 194 198 204 210 210 201 207 +209 198 168 147 135 134 123 131 135 135 131 133 +151 149 134 130 134 127 131 138 141 133 131 134 +134 125 126 127 130 127 125 136 136 139 144 137 +143 141 137 145 143 141 146 154 159 154 138 130 +139 134 138 146 147 140 135 135 136 136 137 128 +137 140 137 136 140 141 146 149 153 134 133 139 +133 134 141 145 156 168 165 138 120 148 177 191 +198 208 218 207 188 199 205 211 201 180 182 199 +205 202 200 176 135 113 105 94 113 139 176 204 +200 195 198 192 169 168 145 134 160 188 199 208 +208 210 207 195 162 121 87 111 161 191 206 174 +164 144 127 125 90 51 51 80 108 168 178 187 +196 184 161 128 111 75 56 69 100 129 135 116 +86 60 118 161 159 130 127 149 172 136 96 95 +87 76 80 107 86 83 79 69 69 63 69 73 +84 86 89 117 131 116 98 119 161 99 67 67 +66 64 76 98 89 93 126 107 120 108 103 121 +127 140 121 116 102 114 94 88 104 96 123 133 +119 95 85 97 98 98 96 85 94 105 109 102 +121 110 93 87 82 93 76 96 105 104 94 76 +79 85 85 93 84 88 113 118 139 97 106 119 +113 120 114 94 92 97 105 113 107 93 95 102 +93 107 108 121 119 107 98 98 116 109 136 127 +110 129 141 124 108 119 100 102 102 89 103 107 +95 119 129 123 120 131 117 120 126 113 126 130 +118 117 100 103 105 119 120 133 +189 184 187 187 +180 188 182 192 188 192 201 200 198 200 196 198 +199 202 200 195 194 190 180 153 133 147 184 196 +202 201 188 184 198 200 207 200 180 187 201 198 +195 184 160 162 156 136 134 160 167 174 167 177 +168 145 130 124 128 95 82 99 92 85 96 93 +72 68 66 63 34 49 38 45 42 43 48 85 +119 138 148 134 134 100 85 88 105 85 65 47 +38 45 27 18 15 18 22 24 28 29 33 28 +31 28 28 36 43 51 53 66 69 149 206 201 +149 103 93 100 78 60 65 43 37 49 34 31 +28 27 35 44 39 66 53 60 96 146 156 166 +131 107 134 130 64 76 66 70 98 125 126 141 +136 144 150 143 150 174 190 201 200 189 170 125 +55 65 125 161 170 160 133 111 110 138 148 115 +78 90 141 167 184 188 194 199 194 207 200 187 +153 126 93 93 114 156 167 177 172 175 178 185 +198 198 197 198 212 215 211 209 207 177 145 143 +137 146 136 131 129 127 137 134 136 129 129 133 +135 136 134 129 129 129 130 143 135 128 126 131 +134 128 135 136 134 134 133 135 133 139 133 147 +156 171 160 143 144 149 144 139 145 141 147 148 +143 140 137 137 140 133 136 135 145 140 137 137 +133 139 139 147 155 146 136 140 141 138 133 133 +150 166 168 176 181 188 189 196 218 229 219 207 +189 189 207 219 208 195 194 189 189 194 196 156 +135 100 95 110 128 157 190 207 204 207 188 164 +168 175 155 128 139 184 204 202 201 196 187 166 +134 92 104 138 166 174 197 187 172 138 114 109 +85 55 77 125 147 169 195 186 186 178 150 99 +94 95 107 100 109 117 126 103 94 92 74 94 +105 102 124 134 145 127 95 114 116 100 100 99 +76 70 92 70 68 72 80 107 62 89 110 125 +120 93 89 64 124 140 164 96 73 95 97 94 +104 98 98 86 100 79 62 74 100 141 123 105 +117 97 103 92 76 89 62 75 88 98 98 96 +116 119 138 126 104 98 73 92 100 79 80 86 +69 86 107 98 113 115 88 85 72 62 80 87 +72 73 88 114 151 155 149 133 110 105 147 134 +110 116 105 95 105 97 89 95 80 103 103 95 +114 103 92 105 107 110 118 119 107 113 120 135 +145 118 102 100 90 86 95 114 117 116 114 118 +123 111 118 113 117 126 129 129 119 127 119 106 +104 104 118 120 +176 178 180 176 191 195 207 202 +198 199 197 196 204 201 196 195 199 204 200 189 +172 168 156 148 170 195 202 199 196 176 186 202 +191 184 171 172 184 181 191 200 189 174 156 161 +139 133 154 161 166 174 178 159 143 136 146 138 +115 102 92 97 74 77 94 69 86 90 69 45 +25 16 32 35 28 26 39 49 32 35 42 57 +60 42 38 62 74 108 120 114 129 136 159 166 +182 196 209 208 206 209 198 185 191 192 195 201 +207 212 212 215 228 229 232 218 213 219 217 216 +212 187 178 191 187 172 145 45 29 36 22 22 +32 72 60 41 42 43 53 67 106 111 96 118 +99 65 57 54 83 86 145 154 77 86 124 156 +147 159 171 195 200 199 192 138 54 57 77 106 +129 134 109 107 141 169 179 120 56 68 100 136 +150 147 169 176 170 181 177 185 180 139 88 99 +96 115 129 137 151 176 187 197 208 205 207 207 +212 209 208 195 168 146 137 161 171 141 144 135 +129 137 139 140 130 131 141 135 130 129 127 134 +136 135 144 147 134 137 134 144 148 139 131 137 +151 148 143 151 155 159 156 153 165 169 158 154 +144 140 139 141 144 145 148 149 153 145 133 135 +137 136 133 134 136 134 138 144 136 135 131 144 +147 136 136 141 151 146 139 141 137 156 178 192 +204 202 205 204 223 229 226 211 202 205 210 202 +197 191 186 172 188 194 186 145 123 107 104 100 +120 157 189 202 205 196 185 160 150 156 154 137 +146 175 191 185 191 185 175 143 110 116 154 175 +178 199 206 175 165 119 96 66 51 99 120 134 +178 198 191 166 150 144 137 131 97 87 123 125 +96 86 76 84 133 107 106 97 114 100 116 148 +167 134 155 99 141 153 130 98 106 120 83 109 +116 95 87 88 117 72 58 79 85 89 96 115 +116 113 176 187 134 87 86 77 72 84 102 99 +85 108 108 88 108 110 110 113 113 106 109 93 +109 103 103 76 93 102 100 74 72 97 79 86 +102 98 94 77 82 92 106 87 76 80 79 98 +111 98 97 93 75 85 68 93 111 77 68 113 +151 109 127 139 131 111 116 137 131 97 105 119 +103 98 88 88 92 84 98 85 105 106 96 95 +98 107 98 96 106 96 98 103 118 134 108 108 +92 95 97 102 127 123 120 110 104 118 109 102 +110 120 128 119 127 124 126 126 114 115 109 111 +178 184 190 199 200 199 201 194 199 195 202 205 +205 196 197 194 199 196 188 172 170 160 156 165 +184 204 201 187 185 189 191 185 186 167 176 197 +206 212 201 178 160 149 156 168 149 162 172 174 +170 180 176 135 141 167 145 120 107 105 108 90 +74 77 85 102 93 83 68 28 14 22 32 33 +48 87 108 147 145 172 174 176 185 196 191 189 +195 198 201 197 201 186 161 151 146 151 147 140 +138 137 92 75 96 104 99 108 118 118 165 217 +185 136 118 138 159 159 178 190 189 195 176 166 +169 172 159 104 27 24 36 33 15 24 23 36 +28 45 69 92 59 53 85 104 117 123 106 64 +70 80 140 151 87 82 93 97 130 131 172 202 +204 198 166 115 63 46 44 68 87 96 103 105 +154 156 126 98 66 85 109 131 126 107 115 138 +154 161 169 172 164 121 99 90 99 118 157 150 +162 184 199 206 204 207 206 198 206 213 205 192 +162 153 156 156 137 130 130 127 123 129 148 145 +129 134 131 133 130 130 131 133 131 127 134 141 +129 130 129 135 144 144 130 138 147 154 155 162 +165 161 149 162 189 176 158 167 157 143 141 138 +140 138 151 145 146 138 137 136 146 138 138 139 +135 145 136 143 141 136 134 138 143 139 135 144 +144 148 153 143 135 153 172 188 208 208 206 219 +219 222 220 215 212 204 185 185 187 182 179 174 +185 191 188 164 115 105 99 102 140 177 206 218 +217 209 196 169 145 143 155 153 171 171 171 179 +185 182 166 127 89 129 177 195 192 197 195 161 +131 99 63 73 52 90 128 138 164 192 200 187 +156 140 108 107 116 63 90 143 140 107 87 80 +109 153 161 134 124 104 114 131 127 105 148 149 +144 141 137 148 138 117 128 123 129 104 69 90 +107 82 67 64 48 66 48 58 85 93 95 123 +166 159 118 108 105 100 90 83 93 84 111 114 +100 117 120 111 120 115 109 84 83 75 103 102 +99 82 68 80 78 94 90 88 102 98 99 87 +88 88 73 85 87 84 93 139 118 90 105 87 +87 103 117 106 107 108 95 117 164 99 92 100 +117 123 89 106 139 111 102 123 107 98 103 94 +87 105 93 97 95 106 100 80 103 94 98 104 +92 96 87 97 99 111 123 117 128 108 102 108 +87 129 123 114 124 120 99 97 111 90 107 116 +111 125 118 123 121 117 108 109 +195 196 205 205 +202 200 205 197 196 201 200 199 201 200 194 200 +201 188 185 184 177 170 168 172 192 196 196 198 +197 195 191 187 187 186 195 201 206 206 189 180 +175 178 180 176 190 192 182 158 155 164 139 143 +165 141 124 102 77 65 75 70 70 69 89 85 +116 151 154 174 181 206 205 212 211 217 205 197 +189 150 120 107 116 124 115 100 92 70 69 63 +111 126 116 52 22 24 32 31 41 42 48 69 +90 75 57 43 52 149 213 160 125 120 139 129 +125 127 100 97 80 65 67 49 54 55 82 64 +33 29 10 21 21 26 37 49 43 64 63 51 +49 68 119 80 57 102 124 103 74 79 95 118 +97 59 90 110 145 153 178 182 176 169 160 144 +96 43 43 99 118 109 94 85 133 167 151 110 +69 82 89 74 89 128 130 124 129 165 174 147 +146 136 96 80 79 125 171 185 182 197 205 206 +199 205 211 210 205 192 178 166 148 158 153 146 +151 137 129 126 126 138 156 136 134 137 136 127 +127 130 127 135 134 129 136 133 129 138 137 128 +131 134 135 140 137 135 139 144 147 133 136 154 +164 165 148 141 144 147 148 148 139 140 161 153 +140 136 139 139 140 146 141 154 160 145 144 149 +141 129 136 143 138 145 130 129 134 140 141 150 +140 158 179 182 206 209 197 196 190 202 208 207 +201 188 194 204 191 191 181 192 200 194 186 166 +135 97 93 117 160 189 204 207 208 199 181 169 +153 143 175 188 190 186 166 170 166 153 114 85 +98 124 155 180 181 196 185 143 117 80 57 46 +38 64 114 159 174 195 194 179 164 130 110 93 +82 88 125 114 146 155 131 115 96 123 135 130 +97 85 125 141 141 111 68 92 97 123 156 159 +141 116 95 105 104 99 108 94 80 86 68 65 +78 76 89 77 74 85 63 70 72 109 135 103 +82 67 79 85 95 102 88 111 117 111 115 104 +106 89 89 116 113 107 115 126 124 110 98 83 +80 72 87 90 88 111 90 89 84 89 80 88 +100 70 86 117 116 96 83 85 84 75 107 113 +116 137 110 135 180 126 82 78 98 98 114 94 +105 136 98 116 124 110 95 120 115 99 90 78 +77 92 85 88 99 88 94 118 110 104 110 105 +88 103 102 120 110 133 115 108 106 113 125 121 +133 130 134 121 98 102 104 103 113 120 116 126 +123 121 119 108 +195 204 206 200 199 209 207 198 +201 198 196 201 201 197 192 199 194 190 180 177 +174 172 167 184 199 198 191 197 201 200 196 197 +192 198 208 208 198 188 182 179 169 174 171 171 +174 188 198 217 215 209 200 209 211 209 206 207 +204 197 207 212 217 218 215 217 217 202 187 170 +147 131 128 108 103 100 72 65 80 60 36 42 +58 67 64 65 80 124 168 146 92 74 110 106 +46 10 23 29 53 56 84 116 138 137 92 100 +185 211 148 111 123 135 149 130 85 90 83 85 +90 75 62 64 72 72 68 59 64 93 54 23 +25 41 48 22 48 89 100 70 119 159 113 111 +156 95 126 125 73 88 96 86 72 55 74 140 +114 129 158 179 184 162 172 145 108 53 62 84 +99 99 103 105 175 198 156 97 52 60 65 68 +84 94 119 83 95 119 119 120 138 127 96 94 +116 138 181 199 207 199 198 205 207 210 209 190 +166 164 155 155 148 151 148 141 139 129 139 139 +127 143 143 128 137 134 135 125 128 125 129 131 +129 131 139 126 128 137 134 127 133 135 128 137 +139 154 162 164 146 143 151 149 159 149 145 158 +150 131 144 155 147 148 157 143 138 135 140 143 +140 141 137 140 141 151 149 150 147 137 133 137 +139 135 136 137 131 130 131 143 135 137 147 175 +204 210 213 198 185 197 209 199 190 191 195 202 +184 167 159 165 160 157 138 137 130 99 90 119 +164 181 192 201 198 179 154 134 125 146 160 172 +194 172 178 166 141 130 97 83 141 133 134 172 +195 188 140 116 105 110 103 72 66 106 139 166 +188 191 175 162 139 105 88 109 130 161 181 187 +162 109 136 149 127 124 109 96 77 113 114 148 +153 126 76 42 63 78 116 121 134 139 103 89 +94 99 104 129 111 72 76 102 111 114 99 90 +83 75 84 66 79 68 78 156 165 103 75 103 +103 134 114 77 85 73 95 115 143 149 116 105 +113 120 117 107 150 135 108 107 84 82 77 82 +83 78 87 85 95 102 89 89 98 80 65 95 +100 85 95 84 82 78 65 108 137 168 137 135 +180 141 114 85 74 95 113 103 103 116 131 120 +131 125 130 115 117 117 109 100 83 78 79 82 +73 86 87 92 115 110 102 121 109 109 111 106 +119 119 116 111 118 116 119 131 129 135 127 128 +110 108 113 109 109 97 111 116 124 126 127 128 +200 199 194 202 205 206 202 200 199 190 199 202 +200 200 200 199 189 185 177 186 191 176 166 172 +191 192 191 187 200 199 194 201 204 211 211 205 +187 187 188 174 181 175 179 188 181 164 176 166 +148 169 194 187 179 177 182 182 171 165 166 159 +143 120 121 126 111 85 38 46 63 70 66 64 +46 51 57 74 63 28 32 48 72 39 43 28 +25 72 114 124 77 62 57 85 106 105 87 79 +86 99 111 143 148 136 72 175 210 147 125 143 +139 148 130 80 69 73 97 114 123 103 94 60 +55 64 65 70 109 107 151 157 119 153 153 100 +106 98 60 59 56 65 95 98 57 57 49 76 +67 83 105 108 121 131 117 125 113 97 102 146 +162 149 165 134 127 128 93 75 55 41 58 103 +139 159 121 73 67 78 92 75 75 73 74 72 +93 133 136 153 138 124 115 155 168 179 197 200 +196 196 201 206 210 217 202 171 158 149 140 144 +136 135 146 135 130 139 153 147 133 136 136 135 +141 145 143 134 131 131 133 135 145 141 134 141 +135 136 136 128 133 138 131 136 149 157 162 157 +151 147 161 156 141 141 144 165 169 148 141 157 +148 153 148 150 147 140 140 135 135 136 136 138 +134 136 138 141 154 153 133 138 133 145 139 135 +133 129 126 131 136 134 128 157 175 201 208 202 +202 206 206 206 199 188 182 179 162 157 157 145 +157 176 169 154 126 78 72 92 110 149 158 171 +186 172 169 149 120 143 131 170 156 157 178 154 +114 105 82 107 144 147 150 181 178 134 96 67 +88 141 118 102 120 159 174 181 182 179 180 166 +120 109 82 88 118 145 155 175 177 148 114 123 +123 109 86 82 127 168 140 114 131 95 73 79 +58 62 84 116 97 103 134 128 121 79 97 134 +126 103 116 120 109 93 99 67 69 68 60 76 +62 58 88 74 133 190 161 93 102 93 108 106 +88 86 99 88 139 165 144 139 114 92 121 127 +171 153 155 139 126 97 86 95 87 96 113 84 +92 105 99 94 86 88 73 76 94 95 82 110 +106 95 82 83 120 130 153 131 133 139 126 110 +72 82 86 95 79 88 121 129 117 99 116 127 +121 127 119 120 107 96 93 78 95 80 85 106 +105 118 102 115 124 111 106 107 115 117 105 120 +106 118 99 115 130 127 136 117 115 107 109 113 +113 108 117 111 121 118 130 128 +199 199 210 211 +207 206 206 197 200 204 204 202 204 194 198 189 +179 179 182 180 184 172 170 179 199 189 194 200 +202 198 191 196 206 215 212 199 195 187 179 171 +174 184 190 182 168 161 164 178 170 161 168 155 +128 147 166 153 129 108 113 141 125 97 120 119 +87 49 29 49 67 73 55 49 48 48 69 58 +44 51 55 60 43 42 35 36 51 65 65 60 +33 33 66 121 156 187 197 187 137 82 87 84 +77 57 176 199 127 102 96 109 98 88 95 130 +154 145 127 104 80 94 115 150 174 169 188 195 +195 186 181 180 175 188 181 180 185 213 221 211 +204 200 190 165 137 66 42 49 48 78 79 118 +156 149 109 102 113 108 114 125 172 160 153 128 +117 93 43 52 55 96 83 113 149 171 111 54 +64 105 118 131 111 107 120 144 169 178 185 178 +143 127 141 177 182 187 185 188 191 187 198 204 +200 190 179 175 154 126 126 136 140 140 131 136 +133 130 141 131 133 146 134 133 131 138 140 126 +131 133 129 137 139 130 136 130 131 129 129 130 +143 145 137 139 147 138 136 144 147 162 157 160 +159 146 143 157 151 143 143 143 153 139 140 151 +153 145 137 141 136 128 144 141 153 146 140 146 +149 157 140 138 136 139 144 133 134 135 135 131 +135 130 134 144 153 168 201 213 208 198 210 210 +204 205 199 202 199 186 185 192 186 178 181 168 +131 105 73 70 93 134 174 190 161 136 141 138 +135 128 116 133 135 161 154 118 108 92 76 88 +139 140 143 157 168 135 102 75 129 117 95 119 +147 172 194 188 182 179 161 137 120 98 90 84 +99 136 143 130 144 153 116 94 124 136 111 90 +68 108 110 94 85 102 73 68 92 107 119 106 +96 70 72 98 140 149 119 100 85 83 66 95 +111 86 76 69 69 76 90 89 90 105 107 125 +114 89 162 181 149 121 105 117 134 141 136 128 +113 99 96 126 110 118 136 123 104 123 143 133 +155 123 102 104 77 131 172 141 108 97 90 76 +90 100 100 93 84 92 78 82 106 114 129 95 +94 102 99 121 113 128 119 104 88 75 76 84 +89 65 64 111 106 114 104 115 129 113 121 117 +126 113 85 90 76 75 96 95 114 106 124 110 +111 111 106 105 103 116 123 114 116 105 115 98 +97 121 124 130 120 121 108 92 115 96 97 121 +114 128 138 133 +197 209 212 208 204 206 202 196 +201 204 208 206 191 195 181 172 176 179 185 189 +187 186 192 197 196 195 197 195 197 195 188 205 +212 208 198 201 195 175 171 170 179 190 189 174 +154 160 186 190 178 148 140 134 145 155 147 151 +135 102 125 125 120 120 120 126 84 41 74 62 +48 47 52 35 46 73 67 59 53 49 39 32 +32 48 56 54 87 99 98 95 100 85 86 108 +123 106 127 158 162 131 68 65 84 189 195 110 +85 79 78 59 57 70 93 120 121 92 75 131 +176 200 194 171 151 107 98 110 90 49 56 57 +49 54 56 68 84 94 123 138 143 177 192 181 +186 194 186 174 155 111 97 95 87 86 78 64 +74 87 93 106 158 160 123 126 157 144 94 84 +123 138 116 116 145 161 120 93 128 136 109 108 +116 139 178 188 176 186 199 186 179 185 177 182 +196 195 187 195 206 209 202 184 170 175 165 148 +128 135 139 143 129 130 135 136 128 146 172 159 +144 137 146 138 131 130 128 134 129 127 134 134 +129 124 129 138 126 128 137 135 130 134 134 136 +137 148 154 149 143 146 145 144 140 139 140 144 +149 144 139 137 139 139 144 139 138 140 144 149 +144 137 136 144 154 153 148 140 143 145 138 135 +135 144 137 139 140 140 130 127 131 134 128 146 +149 158 189 204 209 221 221 220 215 213 206 207 +187 189 201 210 210 202 175 140 116 78 83 98 +118 159 181 172 150 140 148 144 134 102 108 136 +169 164 155 117 99 104 98 118 140 166 157 134 +133 119 84 111 110 86 88 128 153 151 170 156 +148 129 133 134 111 97 144 155 134 126 115 85 +111 126 128 95 120 129 128 114 107 108 97 124 +147 123 102 114 106 126 151 166 149 117 80 64 +89 93 103 88 105 78 88 110 103 105 87 69 +69 60 65 68 79 77 82 82 88 113 97 135 +190 160 108 76 99 109 140 123 110 121 134 143 +125 109 113 99 119 104 118 129 138 138 118 99 +96 89 138 146 148 121 87 98 88 92 102 97 +95 93 97 93 98 110 118 116 100 105 106 100 +100 107 121 102 67 90 77 89 87 80 105 97 +89 111 117 104 109 134 117 125 131 119 118 90 +75 90 86 94 110 111 102 126 117 103 125 110 +109 111 99 118 108 119 108 113 100 100 117 111 +121 121 109 100 108 95 105 116 117 138 138 135 +195 199 194 199 199 192 197 200 198 205 199 191 +182 180 185 181 188 192 196 200 195 199 205 199 +200 199 199 201 194 197 202 209 204 204 201 195 +191 178 167 171 194 190 178 169 153 179 190 177 +165 182 170 158 143 126 119 124 109 116 131 119 +125 117 117 95 46 68 99 75 68 57 63 64 +56 62 60 65 84 68 42 31 49 38 60 104 +141 165 136 149 113 82 95 99 79 48 57 57 +79 136 155 170 213 210 161 133 106 84 97 94 +117 129 92 80 100 161 195 192 164 100 70 54 +44 37 47 47 67 63 64 63 43 63 55 96 +129 120 99 99 42 44 49 51 46 79 108 137 +156 108 77 70 83 92 114 86 53 82 106 106 +86 124 160 156 174 174 149 94 110 146 149 149 +130 141 121 115 113 102 95 106 158 187 195 192 +180 178 171 188 194 190 192 195 197 204 210 205 +204 210 184 156 140 137 131 123 120 124 124 123 +134 127 131 138 145 145 165 160 140 144 131 137 +127 126 121 125 128 129 140 138 133 135 134 131 +127 129 135 133 135 131 129 136 139 149 150 147 +137 131 141 140 149 147 143 143 150 143 141 143 +140 136 139 146 139 155 168 155 145 146 141 144 +144 145 155 143 135 137 134 135 136 135 134 136 +133 135 137 137 141 138 140 137 145 148 150 169 +207 215 217 213 202 211 219 219 206 204 204 207 +190 175 150 145 123 99 107 141 138 178 182 158 +151 158 158 146 141 126 116 147 178 150 120 104 +84 90 94 111 128 150 165 150 136 125 92 75 +95 84 70 131 141 134 161 160 133 116 98 87 +88 106 135 153 168 159 102 109 118 135 130 92 +110 140 131 169 137 113 93 111 117 95 96 128 +123 133 134 131 104 103 116 88 92 92 72 75 +69 72 65 70 65 76 92 92 98 105 84 98 +78 99 97 84 79 69 74 59 85 128 186 156 +96 114 133 106 106 109 95 117 133 118 121 120 +144 139 107 88 137 129 104 107 93 73 84 103 +105 127 123 95 95 87 73 84 62 77 86 90 +72 99 88 106 116 111 113 97 90 92 98 98 +100 103 98 95 90 96 134 104 85 80 99 120 +99 93 113 102 125 135 127 98 109 108 88 104 +95 114 119 111 115 124 114 125 109 109 100 107 +108 108 115 104 109 100 108 110 117 127 125 126 +105 99 89 100 113 120 130 123 +184 181 181 187 +194 205 197 200 211 209 204 204 200 194 200 191 +197 208 199 188 195 204 202 207 208 200 202 202 +199 200 195 194 205 207 206 198 186 179 174 181 +189 195 174 170 177 190 192 182 174 165 161 167 +137 143 139 118 93 96 90 103 140 156 149 125 +109 79 86 70 42 47 45 46 49 27 41 55 +62 47 33 34 57 111 147 156 130 130 116 96 +82 117 119 114 74 99 96 102 120 129 167 219 +205 150 127 129 139 127 117 128 165 160 167 199 +216 185 143 107 97 102 86 59 52 38 35 46 +69 36 38 32 56 87 67 65 100 56 36 45 +41 37 51 93 121 94 94 84 89 66 73 104 +125 139 125 98 79 105 121 82 76 113 166 196 +180 137 104 78 95 139 139 111 98 136 131 134 +113 80 114 160 177 189 198 200 194 185 192 188 +185 194 198 180 190 207 198 185 172 165 149 138 +123 123 119 125 130 133 129 146 159 141 130 135 +145 141 141 136 126 129 129 125 126 123 125 128 +127 127 135 135 134 141 141 137 126 128 126 130 +136 139 134 130 146 155 157 149 153 149 159 165 +157 159 160 147 146 145 136 144 154 147 135 134 +143 155 158 159 154 141 149 138 144 149 151 145 +134 137 136 141 134 137 136 140 134 134 141 147 +149 153 151 147 138 135 143 148 171 192 202 201 +198 197 202 206 199 198 199 198 192 191 190 169 +140 114 118 134 146 162 189 186 155 169 174 165 +149 161 160 159 177 168 129 110 84 82 108 121 +166 191 176 159 131 121 111 102 99 98 102 124 +164 186 164 133 109 99 105 74 59 62 147 167 +188 170 110 131 127 125 135 186 207 217 210 204 +141 129 76 63 88 85 82 87 102 106 106 90 +67 65 75 95 107 88 95 93 74 77 77 65 +78 98 94 93 67 58 104 104 103 94 85 92 +88 86 83 85 86 92 135 169 175 131 125 137 +131 131 133 140 128 137 141 118 124 110 93 99 +90 89 98 96 96 102 90 82 102 93 96 85 +64 82 85 88 115 109 87 104 79 79 79 78 +93 92 88 97 78 75 94 97 89 94 114 108 +103 107 129 143 105 86 116 116 104 104 108 100 +119 138 128 121 94 97 99 89 87 92 120 125 +119 116 118 125 115 109 100 90 117 115 119 111 +104 109 107 109 106 116 119 111 121 109 109 110 +98 120 113 117 +188 179 182 196 205 202 205 208 +210 210 208 199 202 200 192 191 204 202 199 190 +197 204 207 202 206 204 197 208 207 185 190 189 +206 206 207 191 179 184 190 195 195 176 177 185 +191 197 192 171 154 159 149 126 120 126 125 105 +100 106 124 149 171 179 177 199 220 222 217 217 +218 212 206 206 205 195 195 196 172 164 178 156 +158 170 136 113 113 92 65 60 79 94 92 82 +98 77 84 103 98 150 205 160 110 133 148 166 +164 145 118 138 157 197 210 191 172 128 98 79 +86 98 143 159 192 197 194 181 167 103 45 82 +65 68 44 45 52 41 37 52 46 52 86 117 +117 85 88 72 89 111 138 121 156 137 148 140 +85 68 87 95 73 155 168 180 156 117 75 64 +94 82 96 119 115 128 147 138 133 120 143 167 +179 189 200 194 185 187 187 174 188 206 197 172 +176 172 154 137 144 138 139 129 121 127 126 125 +141 138 140 146 138 136 130 133 135 130 134 129 +129 135 130 131 133 129 125 130 133 135 135 131 +139 141 131 131 128 134 134 135 144 145 134 131 +135 146 158 166 157 145 147 153 147 161 167 149 +164 160 144 147 149 146 134 137 140 134 136 137 +146 154 139 143 153 144 153 143 137 138 141 150 +143 136 131 139 131 129 135 138 146 147 140 139 +137 134 131 137 144 160 175 171 167 186 200 192 +190 186 180 160 185 195 195 180 154 139 134 147 +158 174 198 190 175 189 185 178 151 160 184 180 +157 144 137 114 93 96 104 109 146 179 180 167 +125 117 120 111 96 158 141 160 186 164 139 107 +117 104 126 108 103 120 155 168 176 145 118 118 +146 114 76 119 136 178 181 208 223 221 212 200 +177 123 93 94 113 140 117 116 113 123 70 60 +88 77 74 80 59 83 98 90 93 111 128 98 +88 90 100 103 95 109 88 68 73 84 85 93 +99 88 96 115 125 151 130 93 110 115 106 119 +124 107 128 131 133 127 121 121 128 105 83 92 +109 106 123 109 100 111 92 95 93 96 118 107 +93 106 118 114 94 115 88 94 92 80 79 83 +62 56 67 84 89 104 110 110 104 99 115 140 +129 103 105 103 97 116 100 119 115 108 133 115 +120 108 92 99 92 105 100 123 121 106 124 114 +109 127 116 107 118 121 127 133 110 105 111 115 +118 121 105 119 115 125 125 121 114 110 128 123 +185 178 191 204 205 208 211 209 208 208 204 198 +208 204 202 200 205 202 202 200 202 206 205 205 +210 204 207 206 196 189 191 205 211 212 199 182 +184 188 188 192 186 189 194 195 205 207 188 161 +155 154 126 120 114 110 100 72 67 94 103 126 +141 136 134 149 150 155 148 144 145 161 165 177 +192 195 200 205 209 211 209 207 208 205 215 220 +220 229 222 212 206 189 150 139 134 149 154 146 +185 206 168 146 158 160 157 148 151 176 190 192 +181 162 133 124 164 187 201 211 195 198 190 177 +162 134 90 64 43 26 31 37 36 38 29 34 +34 35 26 51 58 106 113 148 164 104 70 92 +117 144 137 126 140 159 136 139 109 127 76 94 +116 143 126 128 127 102 103 111 98 97 113 121 +111 121 157 180 155 140 144 156 176 177 177 177 +167 169 167 178 176 167 161 150 146 147 138 134 +147 141 129 135 128 127 126 127 130 135 133 135 +134 128 131 129 125 127 129 129 127 130 131 128 +138 128 123 129 135 135 136 127 129 135 137 134 +126 134 140 146 137 144 140 130 143 135 151 156 +135 140 158 154 156 159 154 140 148 150 141 143 +147 143 131 135 135 153 157 151 145 141 153 140 +150 146 144 149 138 140 140 140 138 141 143 143 +129 135 139 137 144 148 144 140 135 136 130 141 +146 150 158 166 171 188 199 179 186 185 175 180 +179 184 201 187 149 121 123 161 170 169 185 191 +181 188 196 178 147 162 182 181 171 153 124 95 +105 104 120 139 150 131 140 160 136 139 141 106 +100 109 104 127 165 137 125 113 119 134 129 116 +128 114 130 160 169 158 130 130 154 95 53 74 +117 117 102 62 99 124 154 182 210 222 219 201 +150 134 96 89 119 148 121 104 108 96 87 113 +75 85 90 92 119 87 92 93 118 110 88 89 +83 85 100 96 117 103 108 118 102 111 95 116 +123 119 145 191 179 99 87 106 96 102 109 124 +127 140 137 114 128 123 124 115 93 108 124 118 +103 118 119 104 113 87 113 125 93 95 98 109 +98 108 118 105 93 77 69 84 78 63 85 104 +104 102 104 93 104 99 97 108 118 117 97 98 +114 113 98 84 113 114 107 118 124 133 123 114 +99 90 117 107 114 131 109 117 123 120 126 121 +116 128 139 115 120 121 102 113 110 114 125 120 +111 129 128 120 121 121 119 126 +181 187 192 205 +204 208 210 206 199 197 201 207 208 205 207 202 +202 200 199 196 202 204 206 207 207 208 206 201 +191 191 201 217 219 213 200 190 188 184 194 198 +200 199 207 208 200 197 185 176 166 150 133 108 +120 127 94 77 93 100 120 129 120 89 88 79 +78 73 76 67 58 58 58 60 76 77 58 67 +66 75 82 78 79 118 161 178 180 177 186 189 +196 197 200 198 197 198 201 205 211 184 186 184 +179 177 160 151 148 145 155 174 196 209 212 206 +209 205 184 154 141 146 141 106 97 84 103 117 +90 87 51 96 59 59 84 78 90 108 93 120 +102 106 105 138 141 92 76 94 128 99 85 114 +110 104 115 97 109 159 105 97 123 86 90 128 +147 121 116 130 113 98 97 107 140 153 160 150 +166 160 133 130 144 136 148 165 160 158 161 159 +155 149 144 145 145 135 137 135 136 135 135 127 +129 128 129 130 135 136 127 134 131 131 128 135 +126 130 134 129 138 136 139 134 133 127 129 134 +137 135 144 137 136 138 136 137 145 147 149 135 +134 133 131 134 144 147 143 137 141 148 167 171 +155 141 137 137 147 145 141 144 147 147 136 143 +144 147 155 148 140 149 155 143 140 134 131 134 +143 140 137 136 138 147 143 131 129 133 134 129 +130 131 133 130 137 141 130 128 130 129 141 148 +157 176 177 161 174 189 196 191 194 194 184 178 +156 133 143 178 187 196 194 187 188 178 157 171 +165 150 157 171 162 148 144 103 110 136 138 172 +186 161 170 170 129 108 117 95 86 118 136 164 +145 121 106 110 104 87 67 69 100 131 105 94 +117 118 100 98 82 60 68 87 87 83 110 125 +69 66 59 88 83 98 159 201 226 219 191 134 +83 107 113 110 124 115 100 118 100 90 78 78 +95 90 75 78 84 96 102 92 96 121 166 162 +144 129 130 130 133 139 135 125 128 130 121 126 +184 191 181 145 139 144 130 113 115 115 126 124 +114 114 118 108 108 105 83 92 111 96 99 133 +99 94 95 84 109 92 104 107 105 104 138 139 +100 108 105 72 83 80 96 96 108 98 89 83 +88 108 104 109 106 94 105 96 109 123 109 89 +108 118 108 107 121 121 131 105 108 99 94 106 +104 126 136 136 118 131 127 110 111 107 126 125 +115 120 119 121 128 121 124 116 115 104 129 136 +123 129 123 129 +195 181 189 199 202 208 210 208 +197 201 204 204 205 204 201 205 198 192 195 194 +205 207 207 201 207 208 207 207 201 205 211 215 +215 206 198 195 199 194 187 198 190 176 178 175 +166 159 165 178 171 153 134 123 129 116 90 102 +124 128 127 130 90 83 86 80 88 87 89 70 +82 74 65 53 59 99 89 69 47 52 76 102 +114 105 107 109 95 86 80 96 133 131 146 150 +172 192 218 219 212 211 207 211 209 212 216 213 +215 204 196 216 219 209 207 184 160 164 155 148 +174 164 138 109 82 78 59 67 66 83 109 154 +170 151 118 90 36 93 76 92 109 103 103 103 +82 79 96 109 150 115 77 80 97 110 148 113 +96 121 92 88 105 75 119 148 149 117 89 114 +105 95 116 157 172 158 146 135 138 135 149 150 +133 140 138 146 150 147 145 154 144 143 144 138 +128 140 146 136 125 127 129 128 130 138 135 138 +134 131 129 137 134 134 127 129 127 128 129 135 +138 137 131 131 130 127 136 133 140 131 134 137 +135 143 146 138 148 140 138 140 130 139 141 155 +155 151 143 144 135 150 160 149 146 135 138 136 +136 140 145 149 150 143 143 146 148 137 130 147 +160 148 147 141 140 135 137 140 145 137 135 136 +136 134 130 131 134 131 135 135 135 137 137 136 +135 140 138 138 133 129 128 138 140 153 155 157 +174 190 189 174 187 190 181 171 158 161 177 179 +186 195 187 179 192 184 176 186 168 146 151 175 +181 168 144 113 115 144 154 196 205 189 186 168 +136 118 115 103 111 124 143 149 154 138 107 105 +102 104 97 74 89 114 97 79 98 88 134 125 +123 102 85 70 62 67 67 106 115 128 128 100 +75 113 90 84 128 165 205 229 208 156 126 110 +104 100 98 99 99 124 133 119 111 76 72 70 +73 86 76 111 113 124 143 126 130 107 115 100 +104 116 107 109 109 114 114 115 121 134 180 200 +166 94 83 95 84 83 105 102 129 127 125 130 +138 155 134 96 89 117 119 108 117 130 100 96 +72 75 100 103 103 107 93 113 121 111 109 104 +70 76 96 103 89 116 104 102 97 108 125 110 +111 97 80 77 94 118 119 124 106 118 111 95 +113 123 115 114 102 114 95 108 108 106 137 126 +130 133 119 120 110 107 110 114 108 102 118 116 +134 128 128 138 125 120 121 128 118 116 130 118 +191 188 180 191 201 200 199 200 198 200 196 196 +194 196 198 196 199 205 204 209 213 209 206 202 +202 206 212 200 199 207 211 213 208 198 190 192 +191 187 192 189 188 190 179 180 172 166 172 179 +167 156 146 174 201 190 172 136 125 125 108 104 +85 85 107 118 113 92 68 62 60 79 69 125 +148 125 90 51 48 62 54 80 76 72 109 107 +88 96 131 144 170 168 170 153 182 201 161 108 +125 162 189 199 217 205 188 195 179 181 197 185 +176 165 159 148 166 172 165 157 135 99 74 84 +90 66 69 130 88 36 52 60 58 88 67 56 +56 80 76 76 70 70 58 74 95 95 85 109 +107 100 72 55 62 121 164 133 106 88 79 103 +119 73 97 115 97 111 72 85 90 103 138 149 +155 149 146 119 118 129 140 136 136 130 128 134 +137 145 141 147 138 137 137 134 136 137 139 131 +130 140 137 133 133 140 139 140 140 141 148 144 +144 130 130 131 139 141 138 140 137 137 135 126 +134 131 131 140 146 136 141 135 138 148 137 139 +140 141 137 134 144 141 138 144 146 150 149 149 +146 149 155 161 146 140 146 140 141 143 149 148 +146 134 138 155 151 137 135 146 143 146 147 141 +140 139 144 159 149 146 136 131 133 126 134 136 +134 133 136 137 137 138 133 135 133 138 136 137 +135 137 136 138 138 134 135 137 147 154 154 160 +176 192 190 184 186 185 186 185 188 189 190 165 +176 194 204 190 187 177 162 153 159 158 136 110 +115 137 176 192 204 191 174 162 164 127 107 118 +155 150 171 154 146 130 96 114 87 92 119 109 +131 141 110 108 94 106 117 105 69 110 94 68 +77 58 62 64 75 118 103 136 127 86 65 104 +113 103 73 141 184 221 213 155 116 121 167 136 +130 107 116 106 89 85 68 95 90 88 87 86 +79 77 93 103 108 131 140 143 133 130 131 98 +111 137 128 134 133 124 108 118 181 199 164 98 +108 95 103 123 120 128 128 123 110 128 129 119 +110 100 104 123 146 140 124 110 100 75 73 85 +93 89 99 87 98 105 114 108 103 80 84 100 +85 82 109 103 94 94 86 116 110 99 80 78 +92 86 117 114 107 113 93 95 88 92 99 110 +98 97 105 104 109 118 106 130 126 130 131 128 +124 107 99 99 94 110 102 105 117 125 135 118 +129 124 130 123 123 135 103 120 +194 188 179 190 +198 199 192 184 189 192 186 181 190 198 191 192 +198 201 210 211 213 206 196 187 195 209 199 200 +205 207 208 200 184 182 201 200 204 202 202 195 +198 201 190 199 186 175 185 175 148 129 113 147 +167 179 213 222 208 166 108 98 106 124 141 128 +107 88 86 84 73 76 127 151 136 107 75 41 +35 43 69 68 53 93 82 72 88 111 130 154 +178 186 169 206 216 192 189 192 196 185 185 179 +175 187 185 161 146 170 165 162 166 169 182 197 +171 144 128 127 130 119 120 123 93 46 34 43 +36 60 99 151 169 189 179 185 185 197 197 198 +202 205 194 186 176 155 148 129 73 87 86 83 +76 111 120 107 78 107 103 117 134 102 82 86 +119 144 116 109 98 97 118 125 136 137 133 119 +130 129 138 139 131 134 134 138 136 143 147 139 +139 148 147 151 153 148 146 143 143 137 134 128 +136 143 144 145 145 136 141 141 133 128 134 138 +138 134 134 131 129 130 126 126 128 129 131 143 +143 135 140 133 135 140 131 140 138 146 143 139 +133 136 137 130 131 136 149 156 149 139 143 156 +155 144 146 141 149 157 155 157 160 146 143 155 +155 141 138 140 146 148 139 143 145 138 137 146 +140 138 138 133 136 131 135 137 136 136 140 137 +140 146 135 135 137 134 135 128 135 137 145 144 +136 136 130 124 129 140 137 139 162 174 178 192 +186 187 195 188 184 191 182 165 161 159 172 178 +186 185 176 155 145 160 141 103 98 143 167 175 +179 151 150 162 158 115 97 134 162 145 151 160 +148 108 68 57 70 68 77 99 105 106 103 85 +76 77 94 135 147 161 175 170 161 170 155 119 +139 149 113 92 90 80 95 52 35 88 85 74 +82 115 200 223 201 116 118 116 113 131 146 156 +148 126 129 110 90 77 89 98 114 120 106 119 +125 119 124 120 111 105 111 118 141 137 135 128 +114 115 105 100 118 131 185 189 141 108 97 108 +99 105 111 111 114 97 92 92 103 108 87 99 +98 96 93 111 113 86 75 85 105 92 84 105 +87 93 113 96 128 100 83 98 94 80 95 103 +86 94 98 99 118 106 85 77 58 78 86 107 +104 115 107 88 98 85 75 97 102 94 77 84 +116 123 123 109 117 133 120 131 134 116 103 111 +99 102 124 102 126 133 114 130 133 137 130 130 +119 127 128 108 +192 176 182 189 197 199 188 190 +196 195 197 195 194 200 201 201 197 206 210 215 +211 199 194 191 207 212 202 198 204 204 204 195 +196 201 205 209 215 213 205 198 200 198 196 194 +180 175 176 170 162 110 108 141 141 126 137 156 +177 190 177 139 130 146 134 131 148 125 128 109 +94 92 107 119 114 90 54 44 41 48 68 70 +76 69 57 89 100 146 178 185 164 180 210 190 +154 146 174 177 170 172 180 175 187 186 171 133 +167 196 219 216 209 196 169 156 158 149 159 156 +155 176 157 149 108 108 153 166 185 195 178 184 +172 149 133 119 95 96 100 105 121 136 147 169 +180 186 195 205 182 157 136 136 118 99 130 117 +102 84 89 129 109 84 78 92 149 150 120 120 +128 134 118 119 127 114 121 120 136 137 144 143 +124 127 136 130 127 134 139 144 141 144 154 166 +165 140 133 136 129 130 131 131 137 131 130 133 +133 140 137 138 137 133 130 134 131 133 131 135 +128 130 126 127 136 137 135 138 138 125 140 139 +136 140 144 138 139 147 146 139 145 140 133 131 +138 147 148 153 153 151 156 157 156 150 153 146 +147 159 144 140 143 134 138 145 133 146 170 159 +147 141 138 133 139 136 137 135 131 130 134 131 +131 134 134 136 137 135 139 135 133 140 137 145 +141 138 143 138 136 140 145 140 139 138 139 135 +134 134 130 139 148 156 159 150 156 185 177 161 +179 199 194 189 177 158 141 153 181 187 175 170 +185 182 143 105 113 148 167 168 153 145 117 118 +124 121 111 106 145 160 128 113 118 108 85 53 +75 92 69 68 85 99 139 166 188 195 198 185 +185 195 211 220 219 216 205 208 205 202 197 181 +154 109 111 127 90 74 73 93 125 98 73 123 +202 216 172 100 54 106 113 123 118 119 144 126 +82 111 119 109 84 89 77 55 89 96 141 160 +147 172 196 205 211 213 211 216 215 205 206 208 +207 202 200 208 208 218 210 205 215 211 215 210 +201 175 169 140 107 106 110 84 95 74 68 88 +82 100 86 84 102 94 90 97 111 96 95 108 +116 139 128 107 116 100 92 96 108 84 94 89 +96 110 95 83 78 86 84 95 105 106 99 96 +106 108 87 87 97 100 90 82 80 128 106 114 +109 117 119 139 121 117 127 110 115 108 121 111 +130 134 125 134 108 120 138 123 121 131 123 121 +187 194 184 191 207 200 195 192 195 201 202 204 +196 204 208 202 206 207 208 204 205 189 201 209 +209 204 192 192 204 213 209 212 204 207 217 213 +209 210 202 204 206 205 197 190 177 170 177 177 +150 116 137 137 136 138 125 144 131 124 137 116 +127 131 136 145 160 127 118 111 83 97 114 114 +96 59 68 54 80 68 55 64 66 87 131 109 +126 120 107 109 146 208 191 174 170 180 156 157 +176 169 180 192 186 185 170 179 198 197 180 157 +167 143 124 145 167 162 180 201 194 180 157 149 +192 208 207 197 164 80 52 68 63 72 57 60 +70 82 74 75 63 80 90 85 114 87 93 114 +94 136 161 195 188 166 113 97 115 92 103 119 +145 138 121 136 143 162 160 145 117 105 116 141 +146 125 123 128 136 130 133 135 134 135 139 139 +141 149 148 148 150 139 140 140 140 128 134 128 +133 135 140 136 144 139 131 137 134 144 143 135 +129 127 128 127 123 133 126 129 129 129 129 128 +135 137 138 157 137 129 140 141 143 139 137 136 +137 136 137 135 135 137 140 134 136 147 153 146 +139 137 146 167 158 155 145 138 164 160 150 144 +135 131 145 148 137 155 167 143 137 144 135 130 +140 148 147 144 140 134 144 146 139 136 143 138 +137 139 140 138 139 138 141 138 141 140 143 133 +137 138 135 140 137 138 140 137 138 145 131 133 +128 137 146 144 141 153 159 141 153 168 194 194 +187 189 160 131 148 180 156 146 171 179 148 92 +109 118 158 153 129 140 124 96 89 111 160 130 +165 175 149 147 148 128 89 83 104 140 164 167 +178 185 189 189 155 149 123 99 105 111 113 117 +141 150 131 130 120 139 165 169 167 174 177 157 +129 83 67 87 90 85 59 108 141 171 215 215 +153 77 78 83 75 82 65 68 85 82 83 96 +128 175 190 202 208 211 204 195 165 127 130 131 +123 102 105 103 96 111 89 88 90 84 95 86 +102 127 188 175 114 126 124 127 162 168 187 194 +207 204 188 179 141 98 79 69 84 92 85 92 +98 86 97 102 103 121 126 133 138 134 138 153 +144 128 146 134 102 118 95 115 116 113 102 96 +73 83 98 86 102 105 84 93 102 98 98 83 +92 111 117 87 88 114 105 121 103 107 120 125 +130 119 115 115 107 120 108 123 118 113 130 120 +123 117 121 131 125 128 119 127 +207 197 189 200 +199 196 196 191 200 207 209 209 205 205 209 207 +205 212 210 202 195 192 202 206 205 191 192 199 +190 209 216 211 210 218 215 212 204 202 207 215 +213 206 196 180 174 171 182 167 143 134 154 159 +156 135 135 166 154 137 109 96 104 133 156 160 +144 113 116 99 89 85 129 103 68 75 58 58 +63 75 83 79 90 106 127 145 130 116 148 192 +208 177 170 197 200 199 204 199 202 202 197 204 +202 191 179 188 197 177 166 179 138 131 138 153 +182 202 212 213 206 196 198 197 196 185 175 154 +95 54 45 59 69 92 131 86 56 67 66 63 +100 127 128 110 126 74 59 42 47 83 83 85 +118 153 189 170 109 110 121 126 137 137 149 159 +140 158 143 117 94 102 111 124 124 123 135 131 +140 135 137 146 130 135 149 141 146 147 153 147 +135 131 136 133 135 136 145 140 141 144 143 145 +139 145 146 149 144 138 145 128 130 130 128 128 +130 134 130 138 133 129 131 129 131 137 136 140 +139 137 140 138 135 145 141 144 137 137 133 133 +138 144 138 138 151 140 158 157 143 141 140 166 +166 146 138 134 145 145 143 141 143 140 144 143 +138 139 139 140 155 141 137 134 138 138 143 149 +147 138 140 137 134 130 136 137 135 136 143 143 +146 144 140 137 146 149 140 138 136 136 145 138 +137 139 138 135 143 148 143 134 133 134 134 148 +145 149 133 135 136 135 151 178 189 186 177 168 +167 179 149 148 179 168 121 92 93 130 184 180 +129 107 102 89 89 108 164 140 167 158 134 133 +145 137 150 182 189 185 157 133 90 74 68 75 +70 66 103 107 121 107 128 140 119 87 90 105 +93 84 118 130 100 86 136 162 162 169 140 108 +107 90 99 87 102 117 127 188 218 176 89 116 +114 48 52 86 114 182 201 213 201 178 143 100 +99 94 105 100 84 86 75 86 79 68 63 96 +86 87 93 70 75 78 75 97 95 96 92 159 +192 178 136 118 106 114 102 89 98 118 134 168 +184 191 192 164 128 96 92 67 80 92 75 102 +109 133 136 119 117 106 114 110 113 130 117 113 +125 115 111 90 118 114 106 103 79 94 88 90 +110 97 103 84 99 108 96 96 79 102 107 99 +104 105 117 108 128 124 121 129 121 125 108 123 +117 117 135 125 119 127 114 133 115 118 127 126 +125 129 137 125 +205 200 191 190 201 201 198 201 +208 208 211 209 205 206 209 201 204 205 202 195 +186 188 197 202 200 200 197 197 210 217 215 211 +212 215 213 204 210 211 208 211 212 206 182 171 +178 165 175 165 146 145 143 154 151 146 138 153 +126 118 107 85 116 128 133 134 121 110 99 78 +74 93 108 94 105 90 68 43 47 85 82 73 +111 111 115 135 109 171 213 218 209 204 197 191 +192 194 205 211 206 198 187 185 191 198 179 156 +134 166 202 209 216 223 225 225 219 200 180 162 +129 140 124 88 73 72 64 54 54 80 102 99 +148 133 121 99 64 95 88 86 96 93 84 59 +51 55 68 49 43 52 43 36 65 90 145 110 +92 93 106 107 114 124 162 146 129 128 106 100 +103 109 125 116 118 125 126 131 131 135 144 144 +144 141 149 162 159 155 156 145 139 141 148 153 +151 139 136 137 134 131 133 128 129 138 137 136 +134 140 135 127 124 128 133 133 130 130 136 136 +137 136 131 127 133 125 130 134 135 147 145 150 +159 150 140 141 138 143 148 141 156 169 167 153 +136 133 135 141 151 143 150 159 143 140 143 143 +160 150 149 141 138 143 143 146 143 141 157 165 +158 153 133 130 135 134 133 136 140 145 139 134 +134 137 139 128 134 138 146 146 145 148 147 149 +149 153 148 139 140 148 145 136 138 137 133 141 +139 136 134 138 138 134 136 138 139 143 151 155 +145 126 136 137 162 172 159 151 138 149 149 140 +170 154 117 104 121 109 162 154 156 133 97 113 +100 117 156 174 162 143 115 138 172 160 166 138 +118 105 111 107 86 83 103 97 117 104 97 85 +68 73 74 106 95 89 134 111 129 118 108 115 +102 113 102 93 109 149 174 160 156 133 118 110 +118 102 76 113 149 200 207 168 107 157 191 201 +186 160 121 123 129 114 151 168 165 143 126 154 +165 167 136 161 145 133 137 136 119 116 114 104 +104 116 90 64 74 77 100 83 104 177 192 155 +93 109 116 94 94 105 133 125 133 111 118 148 +176 198 182 151 107 83 83 72 95 105 114 106 +98 118 98 102 92 100 115 107 115 105 86 105 +92 107 109 105 99 92 96 89 100 104 89 111 +96 99 99 98 102 96 104 90 90 115 98 118 +125 131 131 133 129 124 115 113 115 126 118 131 +129 121 133 139 125 116 117 113 118 127 124 136 +201 200 195 191 192 198 202 201 208 212 207 201 +200 205 199 198 208 205 199 196 197 204 202 204 +198 191 198 208 216 210 212 210 212 215 210 199 +202 210 209 212 217 199 175 176 168 159 172 166 +146 155 154 147 145 138 128 146 118 104 92 100 +134 143 136 133 119 99 111 149 166 120 97 66 +63 41 32 29 38 64 52 56 42 54 74 110 +170 200 207 191 185 204 207 210 211 189 174 158 +146 151 170 184 185 205 212 221 231 227 216 206 +212 190 181 156 114 117 136 169 181 156 131 109 +98 57 48 26 39 38 53 72 96 92 119 103 +64 77 53 41 52 51 57 62 63 88 111 114 +123 76 54 57 86 120 118 86 88 96 136 159 +145 137 148 130 106 87 99 117 110 119 127 119 +126 127 131 129 143 143 136 144 149 159 175 166 +164 166 145 134 147 148 159 153 141 133 135 139 +144 140 145 138 143 141 133 134 138 134 133 125 +134 138 130 129 131 130 133 134 137 138 135 129 +126 125 133 141 149 145 139 149 159 151 146 141 +146 141 145 130 137 150 151 139 150 145 145 156 +145 141 150 145 145 146 149 157 159 155 149 149 +140 151 167 154 153 155 156 149 145 140 125 128 +133 136 140 146 136 144 145 137 141 141 138 137 +137 140 146 147 147 150 149 145 148 143 143 146 +147 157 146 147 145 143 144 148 144 140 136 136 +130 135 133 136 136 130 140 143 139 135 129 141 +154 156 156 150 137 144 153 141 166 155 128 110 +116 116 159 160 171 138 113 115 104 136 153 166 +138 114 114 133 118 131 133 143 129 98 109 135 +139 126 137 169 164 172 156 139 115 105 69 43 +47 43 56 92 78 97 79 87 79 102 119 117 +103 78 94 114 134 114 82 113 143 118 106 110 +94 87 189 225 211 181 128 96 92 96 161 185 +169 154 168 180 164 162 148 166 172 149 153 156 +141 171 189 198 196 198 174 182 180 168 131 106 +90 82 76 109 92 89 111 187 197 127 111 96 +84 88 102 126 129 141 114 99 86 97 138 170 +179 169 126 83 82 102 110 98 90 88 109 109 +87 79 93 109 93 117 110 105 110 92 113 116 +99 106 107 64 83 95 84 99 123 100 96 100 +85 113 110 108 108 105 99 116 116 129 143 136 +131 135 129 123 120 118 113 136 133 133 140 139 +136 121 110 115 111 117 125 121 +197 199 201 197 +190 198 195 204 208 204 207 205 206 209 205 200 +199 196 200 198 207 204 200 198 195 199 206 211 +215 216 210 206 217 218 205 206 210 215 212 216 +215 192 177 170 174 176 178 175 161 150 158 149 +141 155 143 133 100 68 67 116 159 147 146 150 +119 90 128 130 165 200 198 162 66 33 53 66 +58 60 59 74 121 165 189 170 149 157 167 172 +189 196 188 180 157 144 161 170 188 206 219 221 +221 216 210 222 211 196 197 188 166 139 108 134 +136 129 126 118 138 140 140 164 164 174 176 180 +191 188 196 139 48 44 55 86 64 69 63 53 +58 108 138 146 146 111 151 105 107 131 130 96 +103 106 102 110 102 94 128 143 125 123 153 151 +121 110 118 114 123 117 119 128 125 134 147 143 +148 153 143 150 158 158 171 176 169 148 143 155 +153 150 153 143 140 140 147 156 146 150 149 141 +133 137 140 140 138 140 133 137 133 134 128 125 +130 128 131 136 134 130 135 135 144 136 133 143 +146 139 145 144 146 149 140 128 133 141 139 137 +138 135 140 146 162 153 150 150 148 141 145 148 +150 146 149 156 160 157 150 146 147 164 162 143 +136 136 141 143 140 133 133 134 138 143 141 139 +137 131 130 136 134 136 143 135 135 136 136 138 +147 148 150 145 139 139 139 133 129 133 144 145 +139 141 134 143 137 133 129 131 130 130 140 144 +133 144 139 137 145 143 134 140 144 143 148 147 +147 160 140 144 159 159 146 116 108 129 168 174 +154 135 117 110 106 121 139 130 102 111 154 165 +115 79 123 172 146 129 105 141 113 136 126 139 +120 133 138 154 169 129 85 87 105 108 99 90 +83 85 76 82 83 88 93 113 73 92 86 98 +124 111 128 141 146 128 102 75 69 109 123 185 +219 205 200 195 191 192 184 189 189 190 191 198 +198 201 201 205 204 211 205 204 201 198 185 164 +144 105 107 100 113 149 151 199 209 204 197 167 +167 121 92 86 145 189 182 134 110 89 86 90 +98 110 138 125 126 109 96 105 86 127 148 154 +151 98 100 109 100 83 87 111 99 82 84 85 +93 88 96 99 86 97 114 99 99 105 86 98 +85 73 93 103 107 115 104 115 104 106 110 116 +99 92 114 113 114 127 130 139 135 138 135 118 +116 115 128 127 131 133 115 136 131 121 120 103 +111 119 128 124 +201 207 200 198 199 197 208 205 +206 207 209 205 209 211 205 196 195 192 199 210 +207 202 200 194 200 204 213 213 215 213 208 211 +217 217 207 206 216 213 216 213 209 194 170 182 +195 195 189 166 160 174 157 157 165 159 133 125 +103 95 94 141 149 149 140 124 106 118 135 98 +73 90 118 128 98 49 33 72 96 140 184 196 +189 175 123 118 143 158 205 199 182 166 165 176 +196 211 212 209 195 189 189 199 199 196 188 153 +120 161 164 164 133 128 136 121 126 167 194 205 +222 223 205 179 170 144 118 126 127 110 126 106 +54 32 47 67 72 73 64 85 121 127 131 97 +94 99 109 117 111 94 128 116 95 68 72 89 +94 86 79 90 100 126 100 87 78 97 119 115 +116 115 136 128 128 136 139 147 141 138 146 161 +179 162 167 161 150 143 151 156 147 140 140 155 +154 148 156 153 149 144 147 141 137 144 130 137 +141 143 147 148 130 140 135 133 129 135 135 133 +136 134 135 131 144 141 136 139 146 158 148 147 +149 140 139 139 138 136 141 134 135 136 140 145 +153 145 140 141 136 153 161 159 148 150 139 143 +143 140 143 150 147 140 141 134 130 130 136 139 +135 137 140 147 146 146 138 141 139 134 140 138 +139 135 140 136 131 144 140 134 138 140 143 145 +146 144 146 146 139 147 150 148 146 144 139 138 +141 147 136 138 141 141 144 141 130 146 148 138 +133 137 133 131 137 137 138 134 150 140 124 128 +134 147 149 139 159 161 150 175 162 118 114 129 +145 150 157 149 124 128 131 131 161 129 109 124 +145 171 155 145 129 138 143 154 135 111 128 136 +161 155 127 76 106 123 139 104 73 93 93 148 +157 136 116 155 129 80 110 96 123 124 116 161 +170 197 194 155 130 171 139 110 137 192 190 129 +109 99 117 111 98 85 88 79 87 104 82 92 +108 109 106 110 119 144 169 182 198 208 208 201 +198 185 154 131 95 131 167 178 199 191 155 123 +116 105 176 197 153 105 113 98 110 105 87 108 +102 119 107 89 78 74 74 94 137 172 160 108 +99 100 85 95 117 83 93 68 82 86 89 96 +72 85 105 100 96 94 103 93 80 93 83 103 +99 107 115 100 113 99 103 100 105 111 108 131 +121 130 124 135 147 125 126 120 107 118 119 124 +129 135 137 121 134 124 116 118 109 123 131 141 +200 201 204 200 198 206 208 204 208 211 208 202 +205 201 192 198 200 201 207 204 202 200 197 201 +208 208 210 219 210 209 211 216 221 213 205 205 +213 208 208 210 205 179 180 189 196 198 180 155 +165 176 165 153 158 151 129 105 116 103 134 149 +150 160 137 109 108 141 108 75 80 60 52 55 +67 118 129 162 138 133 123 94 92 108 144 175 +176 157 138 117 165 200 205 199 187 172 174 165 +170 201 204 186 176 167 146 147 150 159 165 159 +130 154 190 211 221 220 197 171 161 149 136 124 +107 93 105 96 46 21 26 35 36 24 39 38 +43 89 77 111 95 94 111 96 126 145 146 130 +126 117 116 127 114 99 88 86 127 174 129 102 +124 141 145 111 80 79 107 120 127 127 129 130 +137 136 155 146 141 141 150 168 174 144 149 146 +151 159 167 160 155 154 158 157 161 155 155 147 +144 147 153 155 155 149 140 150 150 148 138 141 +143 140 138 130 131 136 141 135 136 133 136 127 +131 137 127 138 141 147 151 148 139 141 135 138 +139 137 133 138 134 143 145 143 156 175 162 137 +129 154 166 162 151 134 134 144 145 140 137 149 +154 151 149 141 147 143 138 153 159 149 143 144 +151 145 136 133 137 151 147 131 131 128 133 130 +131 137 140 134 144 143 146 154 146 144 146 144 +157 150 153 150 153 154 146 148 150 153 147 147 +149 157 164 155 141 143 141 135 133 134 137 138 +139 139 130 128 120 128 117 121 161 180 150 147 +169 156 162 167 155 123 154 149 171 154 158 134 +124 102 88 124 137 125 135 158 139 139 133 127 +117 116 130 147 136 133 134 123 138 120 89 166 +157 165 154 123 149 116 108 116 135 128 162 139 +154 145 128 120 94 70 93 95 115 116 175 201 +181 124 73 57 60 78 150 178 131 109 93 103 +106 110 99 108 103 99 92 83 80 94 115 107 +107 104 96 100 104 97 100 110 129 162 188 210 +207 196 171 144 119 129 160 176 151 115 119 144 +177 175 135 120 103 116 100 99 115 110 128 109 +79 103 75 79 73 86 114 133 134 102 97 100 +93 100 77 82 76 74 86 80 113 95 100 121 +98 108 102 79 90 88 72 87 111 99 99 105 +88 115 106 99 111 105 105 128 140 121 118 140 +141 138 123 111 131 117 130 118 121 126 134 141 +134 134 131 126 113 104 125 131 +206 205 206 202 +204 207 208 211 209 199 205 201 197 184 189 196 +204 206 200 199 200 195 202 205 205 209 211 211 +212 210 212 218 218 209 204 206 212 211 209 210 +200 180 179 190 199 187 174 162 161 167 151 147 +146 148 104 83 83 105 124 133 161 179 143 120 +136 117 104 125 118 77 73 93 118 127 109 100 +84 54 47 63 116 153 141 153 165 171 180 198 +187 168 158 172 190 192 202 197 185 184 165 160 +172 164 162 169 187 174 166 168 194 223 225 220 +205 189 180 159 136 126 121 155 155 162 128 89 +64 32 23 43 18 33 35 96 60 92 62 78 +119 93 93 103 133 160 116 114 110 130 130 79 +102 138 117 90 108 154 140 140 169 170 155 121 +90 97 111 126 131 129 137 129 148 159 157 153 +141 148 150 149 150 136 143 160 155 165 181 164 +164 156 158 162 159 160 159 159 170 155 155 151 +153 156 150 159 161 154 148 141 144 147 144 136 +130 135 147 144 144 143 141 146 145 137 139 137 +135 141 155 151 140 140 135 136 146 151 140 145 +149 141 136 134 161 179 169 145 147 159 162 153 +140 135 139 141 146 143 146 144 135 144 145 148 +146 141 133 137 138 137 138 146 148 136 141 138 +146 145 141 139 138 133 131 131 134 144 149 150 +145 148 147 146 150 151 154 157 160 160 155 153 +159 149 157 160 148 154 158 149 147 157 162 154 +150 151 141 141 137 138 137 143 139 138 143 137 +137 121 111 117 139 175 182 159 178 161 158 170 +174 162 178 150 151 150 130 128 143 118 134 114 +133 170 180 159 128 89 108 141 155 161 169 138 +154 125 108 107 96 82 93 104 128 116 92 97 +116 107 121 120 124 147 181 146 144 150 131 123 +125 94 87 63 78 78 74 123 184 185 145 128 +80 62 57 95 184 175 100 99 123 85 92 79 +104 92 117 110 100 113 96 82 85 90 107 103 +111 105 100 86 60 78 68 67 99 124 164 192 +208 209 191 160 124 118 114 108 110 125 175 171 +137 121 126 116 113 121 126 133 104 97 85 77 +93 83 88 105 130 144 108 104 102 104 93 93 +92 66 63 96 89 106 104 114 127 105 94 100 +95 92 95 105 102 104 110 103 102 105 115 114 +106 100 103 113 128 143 127 129 149 133 133 124 +117 123 134 118 118 119 114 135 134 138 129 124 +114 114 120 121 +204 207 206 204 208 211 213 211 +206 204 207 200 198 189 192 205 206 202 195 196 +196 198 200 204 204 208 215 219 217 211 217 220 +213 206 207 208 213 211 207 206 198 185 176 190 +189 184 167 155 155 151 146 151 139 113 84 79 +74 120 149 149 169 171 127 127 134 117 123 109 +82 70 113 117 95 77 68 53 54 82 103 143 +154 148 149 159 182 179 158 140 109 116 147 180 +191 178 172 168 194 171 161 145 158 151 149 141 +130 133 198 227 211 189 186 170 151 154 148 160 +157 151 169 165 139 96 83 68 42 27 18 44 +55 103 86 102 80 60 74 82 95 105 66 67 +100 157 115 115 119 104 99 107 110 147 140 118 +125 123 123 154 165 155 133 105 97 115 126 119 +125 127 128 137 139 154 154 151 128 137 139 131 +127 131 136 144 147 146 147 157 156 151 155 150 +161 164 164 164 159 160 166 160 154 157 160 147 +144 148 134 130 127 135 144 131 133 133 138 138 +141 146 143 141 136 147 151 147 151 139 141 148 +147 143 143 141 140 146 146 151 151 144 139 141 +158 148 145 146 156 161 150 140 137 136 143 139 +137 141 143 140 136 136 133 136 148 147 143 143 +136 147 145 141 138 143 147 137 133 133 138 136 +138 130 134 134 134 143 154 147 149 150 149 145 +149 156 158 161 167 167 160 154 160 158 159 161 +159 158 162 162 153 149 150 149 154 158 150 147 +145 144 147 144 143 143 135 138 134 120 113 113 +111 162 194 176 181 166 136 160 186 180 165 146 +172 168 153 127 141 177 171 139 136 149 145 126 +125 118 139 172 167 154 141 130 117 121 95 105 +127 136 158 99 102 106 100 90 105 128 121 102 +110 140 140 131 150 147 153 138 149 113 134 114 +97 66 102 73 92 124 167 157 123 92 110 95 +98 174 157 167 138 95 103 100 97 123 104 89 +103 89 108 104 88 107 94 90 95 109 78 87 +104 76 87 75 74 105 118 104 96 130 157 185 +202 204 194 169 137 119 98 149 175 157 140 137 +120 110 118 124 118 96 80 86 85 88 100 104 +94 120 119 103 104 100 84 84 80 82 89 94 +106 107 85 98 125 126 114 108 94 89 85 93 +102 100 99 111 115 110 120 121 107 115 92 111 +119 129 129 117 137 137 129 135 121 118 115 117 +118 108 110 126 137 135 115 123 117 119 123 123 +198 202 204 206 209 208 202 202 202 198 207 205 +197 191 196 197 205 196 192 192 194 192 195 208 +207 216 216 220 221 217 219 217 213 199 202 212 +212 204 204 200 189 181 181 188 190 184 164 150 +141 147 161 155 150 153 100 96 116 140 149 153 +158 150 138 130 104 85 105 66 76 107 104 79 +60 84 79 69 68 98 136 108 94 98 133 147 +129 88 88 108 145 153 184 196 197 192 201 188 +174 191 174 117 131 117 141 147 169 208 205 174 +187 192 178 176 175 171 166 179 175 145 140 155 +161 114 83 74 25 16 58 51 25 52 63 68 +53 104 94 70 77 69 74 121 133 126 72 75 +107 124 129 111 106 126 139 130 110 105 99 110 +120 121 114 83 93 124 127 121 127 129 138 135 +146 148 146 138 129 144 139 136 137 143 137 145 +147 149 149 151 154 154 153 154 160 170 165 157 +167 178 179 162 149 151 153 155 148 149 144 150 +141 135 134 131 135 145 137 146 154 150 146 143 +137 139 141 150 156 146 151 141 145 141 143 143 +138 148 135 129 147 144 146 160 145 146 137 139 +154 141 138 135 133 135 133 145 153 151 146 147 +154 138 133 138 136 135 139 144 139 141 141 153 +143 139 138 137 135 131 137 136 136 137 144 148 +145 146 158 155 157 162 154 153 155 151 155 159 +159 161 167 162 165 169 165 170 159 166 165 157 +150 155 148 153 158 160 154 144 145 146 141 138 +139 137 137 138 137 123 119 107 121 123 174 196 +190 171 155 156 153 143 120 116 158 144 155 136 +139 167 172 146 129 153 167 159 139 157 135 130 +141 169 147 133 97 96 110 103 141 175 161 117 +106 92 92 109 107 89 137 119 140 127 84 116 +151 139 133 150 149 113 124 138 114 103 127 104 +95 69 87 136 149 131 121 104 97 76 131 170 +151 114 109 105 121 116 102 108 136 150 143 135 +154 136 116 115 96 85 85 86 111 116 99 88 +94 75 95 123 135 114 110 96 95 125 158 194 +206 207 194 164 113 161 172 144 143 145 136 121 +116 111 90 80 87 95 100 87 99 98 108 121 +106 107 84 82 95 82 83 82 83 93 107 103 +97 127 113 116 105 88 89 73 106 97 88 115 +110 105 109 127 118 103 109 95 120 119 123 125 +115 140 138 130 134 125 125 117 121 110 111 124 +119 139 131 121 120 124 134 134 +202 204 201 198 +205 201 205 212 206 206 206 201 195 178 184 195 +194 192 199 200 195 204 211 211 215 217 218 225 +221 219 217 217 209 201 210 211 208 204 198 194 +188 187 182 188 191 170 164 158 157 167 157 155 +161 133 108 133 146 136 144 141 144 148 140 124 +96 78 77 105 86 85 76 52 77 70 72 42 +58 79 75 116 170 151 120 139 145 136 184 202 +190 177 184 198 180 153 127 124 159 172 140 100 +140 155 189 196 202 182 167 174 167 157 170 160 +175 187 185 180 185 184 159 164 158 135 120 119 +125 86 74 64 38 95 115 79 64 67 83 74 +57 63 103 137 88 86 63 104 113 88 115 133 +94 141 121 116 113 124 114 108 137 123 106 84 +93 127 134 124 123 125 129 137 143 146 144 141 +134 138 135 133 148 140 141 137 136 145 149 146 +155 149 158 162 159 167 166 159 165 182 176 153 +147 150 153 168 164 159 165 160 149 151 145 146 +146 150 144 143 150 154 149 151 140 130 140 134 +144 141 146 153 138 140 143 143 148 146 138 148 +153 150 153 165 157 140 149 151 136 126 138 155 +150 135 136 149 146 151 144 153 150 134 139 155 +147 144 140 138 136 141 141 147 143 141 143 139 +131 136 135 137 134 146 146 155 161 161 158 155 +162 157 161 162 166 162 153 161 164 162 166 171 +171 177 175 181 170 171 165 162 155 153 161 164 +168 172 162 151 156 149 145 147 149 137 140 146 +145 129 131 129 115 118 157 180 174 159 165 181 +177 136 102 111 174 162 140 129 114 124 146 149 +124 125 160 166 130 165 127 120 168 166 135 147 +155 171 138 123 97 133 138 129 165 153 145 128 +137 111 92 127 157 166 140 86 87 92 118 168 +179 155 124 143 119 127 130 136 137 87 88 117 +107 116 118 111 104 90 164 192 204 200 211 190 +180 172 179 196 186 195 181 185 199 205 208 177 +187 209 200 196 182 170 153 146 95 92 104 76 +99 109 109 111 107 102 86 86 97 124 169 209 +205 201 188 185 146 134 138 119 109 109 100 85 +103 95 93 105 97 109 111 115 102 85 92 84 +87 87 90 99 90 95 103 92 95 87 118 111 +105 92 93 88 89 114 115 104 124 107 110 124 +119 115 109 110 105 134 129 123 125 120 133 144 +129 137 140 131 125 113 106 114 138 133 126 138 +104 130 134 137 +205 207 205 201 205 210 202 206 +215 204 196 197 190 180 187 188 188 186 197 201 +205 210 209 216 213 213 217 221 218 218 219 211 +207 205 204 210 202 195 194 188 181 185 184 177 +170 165 157 165 165 156 161 169 131 108 121 135 +136 143 150 150 155 134 109 83 76 92 109 144 +109 78 76 102 87 70 49 41 44 96 157 181 +176 169 177 194 188 191 185 174 161 161 170 187 +185 176 175 168 181 170 107 136 196 210 190 157 +178 181 178 180 167 182 201 204 206 201 181 177 +171 166 133 124 149 169 179 170 143 93 56 47 +26 31 41 76 87 65 66 74 96 83 90 103 +80 103 124 146 154 93 96 126 95 97 109 123 +98 92 124 126 134 118 99 103 108 116 133 121 +128 128 127 139 144 136 148 140 136 137 130 134 +133 139 140 135 143 143 137 146 140 149 151 151 +155 168 169 166 164 168 167 155 156 156 162 167 +165 168 167 168 160 146 161 140 144 154 137 145 +150 150 153 155 138 136 139 143 141 133 134 137 +139 151 140 141 141 144 148 139 151 141 146 169 +158 153 151 159 136 135 151 156 151 139 138 161 +166 164 158 151 160 156 148 157 150 149 149 145 +140 138 146 139 137 137 137 136 146 138 140 139 +137 148 157 159 159 164 157 156 169 171 172 177 +177 169 169 164 174 182 175 179 181 176 171 176 +175 168 172 165 157 165 168 159 160 167 162 157 +166 153 144 146 141 153 154 154 148 136 136 127 +109 105 119 167 167 146 137 157 158 176 161 150 +188 169 120 114 140 166 126 123 116 133 143 143 +119 141 148 117 121 127 100 127 178 177 139 108 +111 109 90 110 133 125 127 126 158 145 115 133 +137 155 136 115 98 95 135 119 149 150 146 129 +125 151 126 124 115 83 98 120 102 120 140 136 +136 125 170 158 145 164 157 121 103 114 116 120 +124 113 139 144 140 149 135 133 119 115 106 125 +138 168 175 189 190 201 194 170 131 110 96 99 +109 99 104 113 88 87 72 77 104 139 186 215 +220 204 175 151 148 144 120 99 109 92 115 127 +128 135 137 119 87 94 79 93 79 77 106 123 +107 87 87 96 74 86 93 118 114 109 99 79 +102 92 103 126 126 125 115 113 123 125 110 111 +109 108 127 133 121 124 148 141 138 139 135 127 +126 114 120 118 129 131 133 143 127 124 129 134 +199 200 192 198 205 208 210 205 201 194 198 185 +179 190 190 194 200 201 211 211 210 211 209 213 +210 212 216 216 216 215 210 210 202 206 205 206 +199 197 192 186 185 181 182 177 168 165 170 174 +141 156 168 154 124 129 141 145 134 137 140 155 +141 118 118 141 107 92 126 117 111 102 100 107 +113 114 130 138 171 201 199 186 168 141 161 178 +172 160 169 175 185 191 178 165 174 198 209 205 +189 166 133 208 210 169 149 160 174 184 189 197 +209 206 209 201 181 177 199 211 209 194 179 192 +211 170 115 72 60 41 59 25 27 49 49 78 +79 63 109 104 70 83 87 87 87 130 108 154 +166 108 93 119 135 134 118 114 98 105 120 106 +100 110 108 103 118 118 133 128 125 128 133 131 +134 134 137 136 130 130 133 127 127 133 139 138 +129 129 130 138 146 144 144 143 144 148 157 153 +162 158 164 160 160 169 168 169 182 170 178 187 +181 172 170 155 149 149 151 151 159 161 153 166 +154 135 140 145 143 135 135 136 139 147 147 138 +136 139 144 140 147 159 149 148 149 160 176 160 +148 158 157 150 146 135 144 161 162 159 150 147 +149 145 148 145 139 145 147 136 134 135 144 141 +137 130 127 139 147 139 136 139 138 154 160 154 +167 172 169 162 164 169 175 185 191 186 180 179 +182 187 178 177 180 169 170 175 172 166 172 169 +165 170 170 158 156 166 158 168 166 160 170 158 +151 160 148 151 147 140 139 144 123 120 114 128 +172 136 115 115 135 145 128 134 141 148 130 146 +159 168 125 121 153 149 138 126 133 137 138 129 +110 118 99 111 145 136 129 147 167 123 98 78 +111 105 124 135 140 149 161 145 123 124 128 119 +141 147 95 83 105 135 141 141 115 113 118 128 +102 83 107 126 120 110 114 109 104 116 104 82 +79 103 143 156 130 104 114 116 158 160 155 149 +125 115 121 135 134 106 104 104 97 100 93 96 +109 116 156 180 184 199 207 186 151 111 93 102 +84 68 87 77 77 88 103 114 155 199 223 219 +199 169 150 150 154 151 133 119 145 148 130 123 +95 97 111 83 75 92 89 128 116 95 90 100 +79 102 103 103 121 102 102 92 90 103 117 128 +129 124 111 110 110 109 125 105 99 116 108 125 +134 134 151 138 140 137 135 123 126 124 107 121 +129 126 130 141 130 125 124 119 +197 200 192 190 +200 205 206 202 202 202 186 176 187 190 204 205 +201 206 205 204 206 211 208 212 208 208 217 215 +209 207 209 205 204 202 197 199 201 188 196 192 +180 171 181 176 165 161 170 169 164 166 161 146 +128 127 149 154 139 151 167 164 149 148 168 157 +117 114 135 121 97 99 80 97 96 68 148 197 +209 179 154 133 103 123 133 115 109 124 166 175 +167 175 136 158 176 172 185 197 194 199 188 186 +169 194 213 217 213 189 182 184 164 165 157 137 +153 165 171 170 151 138 145 137 140 140 159 165 +117 111 93 69 64 32 43 36 42 67 66 83 +96 108 100 95 58 78 116 111 124 99 126 166 +149 109 120 130 128 125 121 90 113 114 104 108 +123 121 131 126 129 135 139 144 133 131 130 136 +135 130 131 133 125 131 136 133 138 127 119 134 +143 138 147 140 148 139 144 146 141 157 159 165 +170 177 182 185 181 171 181 192 197 194 184 162 +159 157 155 154 159 164 164 165 149 151 141 138 +146 140 143 137 140 137 136 139 136 141 145 138 +147 164 158 149 145 143 157 148 151 157 154 147 +140 139 148 158 153 143 143 149 140 138 156 155 +141 149 151 145 133 136 144 133 135 134 131 136 +146 151 143 144 148 153 160 170 179 188 186 177 +178 187 202 205 200 200 194 191 188 189 176 179 +172 174 175 170 167 158 165 167 166 170 158 154 +155 156 164 167 169 165 153 147 153 153 155 144 +146 140 145 135 120 121 128 110 144 138 117 127 +119 105 106 138 141 162 151 125 148 148 124 129 +125 134 147 164 156 130 127 137 143 150 108 114 +165 143 139 161 174 138 119 95 128 160 150 146 +125 169 191 181 161 121 160 148 126 144 160 167 +133 123 123 128 105 116 134 116 97 107 90 82 +73 60 68 92 79 95 115 118 108 100 95 127 +138 149 165 165 146 131 130 121 121 117 107 117 +147 159 148 157 158 133 139 138 118 108 103 95 +113 110 119 170 198 206 206 184 140 85 74 65 +90 75 82 104 97 97 147 200 206 215 209 170 +141 131 134 143 129 124 114 94 94 77 94 104 +85 88 93 125 115 113 98 103 106 93 92 100 +104 114 99 94 79 94 97 98 131 117 120 117 +113 121 113 118 110 106 100 109 121 125 141 146 +138 147 131 130 123 121 104 107 131 118 125 141 +115 125 118 124 +190 187 186 180 192 196 194 196 +202 187 189 189 196 182 189 205 207 202 198 200 +208 211 212 211 202 206 213 208 207 200 199 198 +198 197 204 204 199 189 194 188 175 177 177 159 +159 174 169 171 172 166 172 148 147 158 157 150 +138 150 148 135 130 129 139 127 105 116 113 95 +76 65 92 85 57 118 195 187 119 100 96 96 +116 137 128 134 133 160 168 196 200 180 180 192 +186 184 185 204 220 177 190 190 186 208 208 187 +141 121 115 135 180 172 182 200 184 162 196 172 +164 172 171 153 161 175 159 125 93 57 88 103 +116 60 65 120 130 157 182 194 204 209 209 213 +200 204 194 190 180 162 116 143 146 133 147 130 +118 119 127 108 96 96 104 102 120 128 125 124 +123 128 130 134 128 131 127 138 136 137 138 130 +129 127 126 130 130 127 115 119 133 133 135 128 +135 136 139 143 147 151 148 153 155 178 180 179 +180 175 171 174 181 174 179 167 162 171 182 177 +175 172 168 166 159 156 149 150 158 151 146 144 +153 146 141 145 129 133 141 147 151 154 157 154 +147 145 137 147 155 151 160 144 136 150 147 161 +155 140 140 145 136 137 141 148 148 141 162 159 +140 144 137 139 131 143 143 138 141 143 140 146 +150 165 178 181 190 201 199 190 195 202 211 215 +188 196 189 182 174 178 169 165 167 169 166 165 +154 154 162 164 165 166 158 153 149 151 157 159 +159 159 158 153 153 162 160 145 143 138 141 136 +131 129 126 110 128 153 148 143 131 107 114 153 +141 146 131 119 104 130 125 116 109 103 125 145 +156 157 177 180 154 140 108 127 127 133 94 99 +160 167 160 134 95 80 114 139 114 148 155 162 +159 129 123 161 146 98 113 119 136 160 164 130 +102 88 117 111 115 143 129 131 138 144 144 150 +127 109 109 129 146 159 141 146 141 149 162 138 +100 93 108 127 130 135 140 134 127 128 160 150 +138 137 143 135 115 118 103 107 99 98 97 90 +99 107 136 186 209 205 169 127 86 70 88 94 +102 95 97 121 168 180 168 196 211 207 158 114 +108 110 113 94 82 103 76 82 97 66 82 98 +121 92 103 89 93 113 90 100 113 96 120 98 +93 88 93 118 116 129 115 118 123 103 128 116 +109 106 118 130 119 141 151 147 154 149 136 135 +136 121 114 103 113 144 129 127 134 135 128 120 +184 178 178 186 191 190 197 207 194 194 189 188 +196 206 199 204 198 201 200 200 201 210 211 204 +208 211 210 211 209 209 198 189 202 202 201 205 +200 200 191 189 172 172 165 150 166 171 177 175 +166 175 175 160 144 148 138 130 120 118 109 120 +123 110 111 100 94 80 84 104 94 108 97 68 +105 178 181 100 51 48 67 73 97 143 138 126 +168 195 186 158 156 156 148 166 158 171 215 226 +212 186 201 201 207 213 190 155 160 188 192 204 +197 215 200 171 179 210 186 162 191 201 189 202 +191 144 144 169 158 161 134 156 182 197 208 207 +186 172 150 137 125 121 131 126 124 125 109 124 +171 140 94 107 89 111 134 110 100 103 117 104 +114 117 94 111 130 126 129 133 133 144 140 137 +129 129 125 130 128 129 133 133 131 134 133 129 +133 128 125 134 126 127 134 127 127 131 130 130 +133 136 144 150 159 167 168 174 168 166 171 168 +172 177 181 187 188 188 192 185 179 172 181 182 +172 143 138 159 164 160 144 146 154 151 156 150 +141 144 149 153 157 154 166 168 157 149 154 160 +157 156 167 147 146 145 143 148 141 146 148 138 +137 138 150 151 148 149 157 158 156 146 147 137 +138 148 144 153 153 145 148 143 168 179 185 188 +204 211 211 204 201 209 202 195 185 174 169 170 +174 166 162 160 158 162 158 151 146 155 156 149 +153 159 167 154 145 148 151 153 153 149 159 151 +156 161 155 153 145 151 140 138 131 134 130 116 +131 143 136 136 129 138 159 170 159 165 135 128 +105 96 111 118 123 97 85 109 146 158 147 149 +169 175 137 164 159 137 106 97 133 174 170 176 +161 108 110 134 162 149 139 141 158 146 149 124 +124 121 120 98 127 107 92 108 93 82 82 73 +113 139 133 106 97 73 89 103 103 120 95 124 +146 189 187 154 139 119 147 184 179 141 115 115 +130 138 145 156 146 133 131 145 146 141 157 165 +144 116 117 109 107 100 103 97 96 109 103 94 +108 128 188 210 208 167 102 83 75 82 72 78 +95 154 177 116 111 174 200 211 176 134 106 113 +90 86 106 88 97 92 66 88 102 104 88 97 +90 108 105 85 118 113 107 114 97 83 106 103 +107 114 125 118 107 123 115 126 114 126 127 127 +138 138 146 149 164 146 150 146 138 136 121 110 +119 123 136 134 137 145 133 115 +180 180 181 181 +194 190 191 200 192 194 192 199 196 192 196 197 +205 204 206 204 208 209 209 208 206 207 211 209 +209 207 197 199 202 206 202 205 202 192 186 181 +176 177 169 165 184 181 178 184 172 172 169 160 +133 140 141 141 149 133 115 118 151 123 95 78 +84 65 90 124 85 83 73 60 147 184 133 84 +70 65 86 140 170 191 198 212 211 212 206 206 +197 200 196 186 196 220 207 172 164 151 145 168 +179 171 155 179 204 217 221 218 207 195 208 217 +208 182 175 196 210 202 196 187 162 134 153 153 +180 208 217 201 182 139 98 79 59 57 49 57 +49 53 48 48 57 68 115 115 113 108 72 90 +110 104 113 118 108 100 97 89 99 115 113 113 +121 135 138 137 135 133 140 134 125 124 121 123 +124 128 131 128 133 134 130 135 127 127 123 121 +113 110 110 107 117 127 117 116 120 113 120 139 +153 157 166 160 157 159 151 164 168 175 182 196 +190 196 186 171 174 177 182 196 180 157 154 160 +168 162 150 147 155 155 149 150 140 146 137 143 +160 153 170 174 153 141 148 161 165 157 153 144 +155 141 133 140 144 145 150 144 144 150 148 154 +153 150 156 161 171 167 154 150 154 161 149 162 +171 174 167 176 184 196 197 200 209 212 209 194 +197 192 180 179 169 161 160 165 164 156 161 156 +156 155 136 141 147 145 149 149 135 146 149 147 +150 143 145 141 150 149 145 155 165 166 159 151 +156 158 147 136 143 137 133 124 136 153 140 121 +138 149 160 161 162 179 167 169 131 93 127 137 +133 138 116 104 111 143 168 154 145 147 130 141 +117 120 100 98 131 103 125 139 129 143 146 176 +195 179 153 113 113 88 119 106 117 102 141 139 +115 106 99 125 87 66 77 57 68 89 69 79 +72 83 87 106 123 153 149 158 151 170 196 195 +170 151 164 167 185 186 146 93 99 93 78 108 +108 108 104 119 145 126 124 143 162 158 154 149 +160 124 120 124 103 93 102 113 128 116 100 98 +159 188 209 190 146 75 79 84 90 108 120 165 +145 111 99 137 188 206 176 123 102 97 78 107 +128 120 103 97 78 115 113 109 111 113 103 119 +103 127 121 118 123 103 103 102 107 96 119 116 +113 129 121 131 135 130 126 123 133 130 135 149 +161 150 135 137 149 126 126 116 116 119 138 143 +135 146 135 136 +187 189 181 189 197 195 191 198 +197 202 197 191 194 196 196 199 206 199 202 207 +210 208 208 207 211 209 207 208 207 204 200 200 +205 202 202 207 208 201 188 184 186 180 170 172 +179 187 180 179 172 172 176 141 137 127 129 153 +147 128 118 146 153 114 103 104 97 98 123 143 +97 75 53 95 167 99 78 125 157 171 179 196 +198 192 196 192 174 160 181 198 192 195 200 219 +227 196 150 140 143 117 129 116 117 156 189 177 +208 225 222 208 213 205 186 191 164 185 210 192 +181 177 169 158 174 210 216 229 213 168 114 57 +38 36 28 42 62 79 49 29 67 58 73 77 +125 130 127 93 56 75 107 104 102 100 76 95 +118 109 93 98 94 109 123 123 135 126 131 141 +139 140 149 137 126 127 124 128 129 127 131 127 +127 125 130 126 128 125 119 114 110 109 100 106 +110 114 119 111 126 115 109 118 136 153 149 153 +151 148 149 156 167 181 186 195 187 191 175 166 +186 187 177 170 164 154 164 170 178 175 148 156 +162 153 158 150 147 146 138 145 145 149 150 144 +164 158 154 165 172 178 164 145 164 141 138 146 +145 153 148 149 157 156 157 164 164 174 177 168 +168 157 157 160 171 165 164 174 187 198 192 191 +201 208 204 196 192 190 192 179 180 179 167 161 +166 155 156 159 157 153 151 151 153 147 150 157 +148 139 138 149 151 154 148 143 147 153 137 145 +145 140 147 155 164 164 154 156 156 150 150 144 +137 141 137 125 116 135 146 126 134 144 155 157 +148 150 165 153 128 96 141 154 140 125 126 155 +136 131 160 153 130 139 192 149 113 92 109 108 +128 154 121 133 108 94 128 177 147 129 159 127 +97 109 93 154 206 187 158 151 146 126 82 87 +70 65 88 89 93 102 107 153 127 120 109 106 +114 134 147 153 161 145 144 133 143 139 125 147 +149 172 197 204 191 182 180 175 160 151 135 134 +110 111 125 123 118 128 131 131 147 147 144 131 +123 129 125 120 118 130 130 121 95 86 111 166 +199 204 162 100 66 78 109 126 149 128 108 93 +82 111 169 174 141 102 89 74 95 125 121 100 +100 87 100 129 105 117 111 113 117 125 134 133 +116 105 88 100 98 106 115 116 131 120 127 125 +126 126 127 126 118 137 139 146 158 150 141 139 +138 134 130 126 115 124 123 131 135 124 137 143 +185 177 184 196 205 200 190 195 192 194 194 188 +194 195 206 205 207 208 204 208 206 202 200 209 +218 211 216 209 209 204 204 206 202 207 204 211 +207 204 194 189 181 172 169 164 177 176 169 169 +171 172 167 134 92 104 134 149 140 124 123 145 +121 106 113 111 114 118 118 119 82 44 64 161 +175 158 181 194 186 186 184 182 168 162 134 102 +90 108 133 149 117 119 202 209 176 182 200 202 +186 189 174 168 192 195 206 221 215 192 192 188 +169 155 189 197 206 209 156 172 184 175 198 202 +208 222 199 150 97 62 41 32 35 37 54 118 +129 156 154 134 176 129 120 123 123 162 138 97 +98 76 83 100 149 127 102 108 119 126 92 98 +93 119 117 123 135 134 133 131 136 140 134 138 +133 125 128 133 129 124 130 137 130 130 130 123 +123 109 103 103 100 95 96 89 87 98 95 92 +107 126 109 110 124 133 146 144 140 153 148 155 +165 160 172 178 185 184 175 174 187 185 166 162 +169 170 178 180 191 181 164 171 161 165 178 159 +137 155 161 154 151 151 157 151 150 153 157 148 +149 160 155 144 145 148 140 135 147 155 161 164 +170 155 155 158 170 181 185 169 162 149 155 155 +168 180 189 187 190 200 204 201 208 197 196 185 +182 179 179 168 172 170 157 157 153 149 145 160 +164 155 155 150 148 157 155 153 154 144 141 148 +157 161 150 149 144 155 157 146 144 146 141 145 +151 157 154 157 162 155 144 138 138 134 131 126 +125 117 131 144 113 138 164 171 167 141 157 125 +99 96 155 133 131 141 136 136 116 127 158 153 +147 140 127 95 88 147 156 137 118 129 141 111 +144 131 94 125 134 140 168 126 82 77 100 78 +111 177 207 210 176 131 84 67 57 113 151 147 +158 189 180 177 155 148 158 153 141 136 117 93 +100 106 75 78 86 119 129 114 103 110 104 135 +148 139 121 151 155 145 160 170 174 176 176 166 +145 148 124 121 116 117 129 123 117 113 96 106 +119 106 116 114 129 138 120 104 94 128 189 206 +186 115 93 85 97 121 115 115 94 93 95 131 +127 99 104 100 78 96 100 119 107 93 74 106 +117 98 124 118 125 135 129 138 115 104 100 86 +105 105 119 113 128 136 124 131 128 130 134 125 +124 131 139 139 151 151 151 137 143 137 127 133 +136 124 124 133 133 135 133 140 +182 182 179 197 +206 198 188 192 194 196 196 196 197 199 202 207 +210 202 202 200 199 196 205 215 216 208 209 206 +201 201 207 201 202 208 209 205 199 192 196 187 +176 164 166 165 169 175 162 172 169 154 144 124 +121 126 136 149 146 123 120 125 124 114 107 118 +110 120 130 125 124 105 165 176 133 136 138 136 +128 144 166 174 181 188 199 195 179 150 118 117 +138 201 195 130 123 136 126 118 108 161 197 213 +228 221 209 204 197 209 202 192 192 199 187 205 +204 167 177 174 167 200 223 219 199 139 83 62 +52 48 85 130 169 191 201 187 167 151 109 86 +99 98 88 145 137 121 128 96 88 113 105 109 +129 135 129 114 126 115 97 108 103 111 125 124 +133 138 138 144 141 141 131 134 127 128 128 128 +133 137 138 130 129 130 125 117 126 117 100 97 +94 85 82 80 78 66 59 70 75 96 94 98 +99 109 120 121 124 136 143 153 153 160 159 172 +167 166 172 178 189 175 170 165 171 177 186 177 +171 165 168 162 164 161 172 165 154 164 166 150 +146 165 167 155 154 170 172 165 151 143 143 151 +156 143 145 151 154 168 167 168 172 157 158 170 +176 174 177 178 172 167 178 176 171 190 200 191 +180 182 182 184 180 180 177 176 175 164 166 167 +162 157 154 156 150 137 145 146 143 145 140 140 +149 146 148 151 143 149 139 148 148 146 148 140 +143 141 139 146 146 149 157 150 156 157 159 164 +164 153 158 147 145 140 140 134 127 118 129 135 +128 134 177 184 167 143 135 118 117 150 129 123 +130 138 133 118 144 149 144 178 178 174 168 134 +99 85 96 100 105 108 126 114 125 138 129 151 +153 154 143 141 120 139 92 62 65 117 98 124 +180 192 201 171 109 45 66 65 83 108 129 161 +151 119 124 125 114 95 98 95 75 95 94 118 +95 75 106 136 118 100 111 118 131 135 139 138 +134 139 148 140 127 120 123 128 147 157 162 158 +155 153 130 120 131 106 109 113 129 123 104 105 +106 120 123 105 100 78 87 116 180 208 195 134 +89 90 121 99 108 100 96 110 108 104 83 100 +107 111 105 96 107 115 94 82 114 120 114 134 +138 136 138 124 133 121 98 100 106 109 117 131 +135 141 144 133 129 126 118 134 131 130 150 144 +154 156 141 136 146 134 130 147 137 137 135 136 +137 138 138 134 +181 175 179 188 192 190 190 192 +192 197 198 192 201 205 202 208 208 205 205 198 +198 206 212 215 212 205 200 210 207 205 204 200 +204 208 208 209 202 205 198 188 182 170 185 188 +176 171 165 155 165 155 130 131 133 134 147 172 +151 95 109 120 116 128 116 102 98 125 128 130 +117 117 161 103 64 62 55 46 44 55 53 60 +78 108 140 136 172 197 180 165 210 194 136 119 +113 131 124 113 157 202 216 225 217 195 179 172 +178 164 151 164 179 146 184 211 162 133 128 195 +217 220 195 130 78 89 123 168 168 197 186 167 +140 98 77 60 52 63 46 63 95 105 128 164 +159 138 105 103 114 125 105 129 124 117 133 137 +147 111 98 106 107 108 117 129 130 133 128 131 +131 134 126 133 129 126 126 133 130 135 139 134 +130 127 137 131 133 130 120 115 118 106 92 93 +75 70 67 73 73 65 59 56 65 65 68 87 +99 123 134 151 154 150 158 162 158 169 166 177 +182 178 168 166 167 166 164 157 164 178 169 174 +168 155 169 161 156 166 166 143 146 171 164 149 +153 169 178 168 153 153 145 156 162 139 149 158 +160 162 174 171 174 169 172 172 184 190 197 202 +191 177 182 182 177 188 196 187 182 172 170 166 +166 170 164 177 168 161 162 156 156 146 147 144 +135 125 128 127 125 115 127 119 120 136 134 131 +139 144 139 146 151 154 151 155 161 143 144 148 +147 157 154 151 155 156 165 166 155 157 155 151 +154 135 130 128 136 125 133 148 137 123 177 190 +157 140 135 100 138 175 145 140 137 146 156 118 +113 138 130 159 127 141 168 178 165 117 104 98 +104 155 128 111 121 172 153 171 149 143 125 172 +205 197 149 78 76 138 146 96 76 86 149 199 +217 196 145 77 52 64 87 87 103 146 127 107 +95 96 84 89 89 73 116 126 123 121 135 151 +165 154 109 118 107 125 140 175 154 117 126 146 +146 136 130 139 141 129 138 127 127 131 136 148 +134 134 121 109 125 138 134 117 102 100 93 111 +111 105 84 90 90 99 167 204 188 134 93 92 +105 104 93 109 118 107 123 111 93 107 104 94 +106 115 103 105 103 109 124 123 126 131 136 135 +138 129 118 118 102 117 125 119 135 134 128 131 +127 123 125 130 125 130 139 138 147 146 149 141 +144 143 124 141 129 134 127 130 141 138 145 136 +178 177 188 190 198 198 190 192 200 196 199 204 +196 206 211 208 208 202 198 198 204 212 212 210 +204 199 209 208 206 204 202 208 212 211 207 211 +207 208 195 191 185 196 189 190 182 156 157 166 +158 153 133 136 137 146 153 151 130 109 138 137 +133 135 109 83 111 150 138 95 82 134 103 49 +43 35 99 114 86 60 56 79 83 144 116 82 +88 105 156 225 220 207 176 156 155 187 179 159 +202 213 199 165 169 139 121 113 133 153 166 171 +148 185 201 146 141 176 222 233 209 184 164 160 +180 202 195 162 120 90 56 33 19 19 24 78 +96 79 86 105 103 93 82 99 110 96 100 98 +69 76 56 77 103 73 105 117 129 110 118 123 +113 107 117 125 126 131 129 127 129 133 130 131 +131 128 134 127 128 126 130 133 130 135 136 146 +143 145 143 137 134 129 116 100 97 90 80 75 +78 74 64 59 59 56 52 62 68 100 133 146 +148 157 150 149 149 157 167 164 176 174 159 161 +165 154 153 169 172 180 181 175 167 169 174 159 +159 167 170 153 166 169 161 161 150 166 176 168 +179 177 154 162 160 138 141 167 171 174 186 172 +177 174 172 172 178 189 191 199 181 171 176 172 +176 179 177 187 177 169 169 166 161 165 161 151 +159 166 155 154 139 125 117 118 110 95 95 94 +80 85 79 82 93 118 113 116 133 130 140 150 +149 149 162 160 160 161 149 158 157 148 151 159 +159 160 166 168 164 161 158 157 147 140 138 135 +136 130 128 150 133 108 114 136 119 116 161 151 +127 133 158 149 133 133 139 141 147 140 155 170 +164 174 165 154 149 124 114 145 138 175 135 116 +134 153 150 147 136 111 93 111 178 195 210 212 +207 177 136 104 141 131 77 113 124 166 200 208 +191 148 86 100 137 180 184 161 149 120 168 154 +133 153 157 162 156 148 149 139 145 160 131 90 +97 89 95 127 131 139 138 134 128 137 138 146 +153 120 130 137 124 135 138 128 139 129 123 138 +127 120 138 119 108 108 96 99 96 87 103 110 +102 93 102 85 164 202 171 116 97 89 95 84 +94 99 114 108 90 97 118 121 93 107 129 115 +110 100 100 110 116 135 137 143 127 117 123 109 +120 116 125 124 125 136 129 126 133 123 123 126 +117 113 126 140 137 148 144 148 153 143 139 137 +139 134 131 136 123 127 135 140 +181 175 182 200 +202 198 191 192 199 202 202 201 205 207 201 205 +204 200 202 205 206 207 209 200 207 207 207 208 +198 198 204 205 206 208 207 206 206 199 199 196 +192 194 198 197 181 179 156 159 164 164 140 133 +140 139 148 138 109 137 147 126 130 114 77 89 +145 158 113 107 111 116 75 57 96 125 94 131 +143 82 89 108 121 125 100 124 133 174 217 212 +169 187 181 184 207 218 190 189 159 113 95 123 +144 174 172 148 124 137 191 185 201 198 161 168 +196 227 232 196 202 212 211 200 164 124 84 54 +64 56 68 89 100 93 95 135 92 99 74 42 +24 32 35 80 110 125 113 130 104 88 93 90 +115 98 120 97 117 100 106 106 98 124 116 121 +136 133 124 130 131 127 131 134 141 140 138 137 +136 136 144 141 135 138 137 141 147 154 140 139 +136 144 128 124 113 99 87 80 67 74 76 76 +66 65 67 59 60 60 99 130 139 153 149 145 +145 156 162 166 166 160 159 159 157 150 159 168 +177 172 180 179 171 168 167 172 177 175 180 160 +170 168 160 160 171 176 171 167 170 174 162 164 +172 149 147 160 172 178 177 177 176 171 174 186 +197 200 190 189 181 165 172 181 177 174 165 164 +160 160 161 158 161 166 162 157 150 155 144 129 +113 96 78 73 60 73 58 63 66 65 55 54 +65 76 77 93 111 123 130 148 146 134 151 149 +153 155 158 150 145 145 139 151 151 147 146 156 +159 154 149 150 141 131 131 127 124 124 128 130 +131 117 141 131 119 125 155 134 109 145 154 114 +136 131 159 144 120 108 168 134 108 138 155 156 +176 153 125 117 105 110 165 121 107 143 143 175 +160 113 86 89 51 62 78 129 185 208 221 213 +199 186 174 156 156 117 95 111 158 201 207 187 +136 110 82 53 109 131 134 130 88 87 106 96 +92 118 123 162 169 180 175 187 174 167 153 137 +121 131 130 139 145 111 110 118 117 123 127 127 +120 119 118 121 127 114 127 116 118 119 123 120 +113 102 107 100 94 80 95 99 98 99 96 109 +95 109 169 205 174 106 85 88 76 98 93 104 +108 89 124 176 149 106 99 129 125 125 98 110 +125 115 125 125 130 126 113 121 119 114 129 137 +130 118 134 121 124 116 110 124 108 119 129 127 +134 140 149 145 151 147 137 148 144 144 145 138 +130 135 136 140 +186 186 197 201 194 191 186 198 +199 205 208 205 208 209 208 207 205 206 199 197 +195 196 206 207 205 201 207 206 205 210 206 205 +208 196 200 208 211 202 208 201 192 196 206 189 +186 177 162 157 171 162 140 154 141 151 175 137 +118 143 120 110 105 85 96 128 162 134 130 128 +121 107 137 144 134 145 109 123 136 137 126 128 +137 149 144 149 156 210 188 130 127 155 182 208 +208 181 168 190 197 185 189 185 156 146 148 165 +167 198 222 228 221 213 219 227 230 212 197 221 +221 178 146 150 155 95 78 68 78 97 108 129 +106 77 96 98 39 49 29 29 41 58 54 79 +97 92 76 82 118 126 102 125 129 102 107 73 +107 111 102 104 96 118 129 130 136 133 125 130 +136 131 126 128 134 133 128 127 133 133 130 141 +139 136 136 138 148 149 145 144 146 143 135 129 +123 125 111 98 82 76 70 67 69 68 64 62 +62 59 60 85 126 143 148 149 143 154 148 157 +157 158 165 157 165 154 166 170 162 160 164 164 +177 184 167 166 172 179 194 171 162 170 165 185 +206 197 181 171 176 179 164 168 166 154 143 155 +179 174 179 177 175 176 175 174 191 202 191 181 +178 161 164 167 167 171 162 154 164 159 159 168 +162 154 164 153 143 137 115 87 60 54 53 64 +72 77 64 64 68 62 76 66 69 75 80 72 +98 120 125 131 134 135 150 146 149 157 166 151 +157 154 138 147 145 139 151 154 155 151 150 146 +141 134 136 141 131 127 129 127 108 119 149 149 +147 155 148 129 99 114 153 139 131 117 144 170 +169 143 154 136 139 123 106 126 156 164 131 121 +113 130 129 125 116 129 151 175 133 108 98 90 +94 139 111 92 58 74 106 156 188 212 204 181 +148 155 164 186 175 154 151 170 178 188 185 137 +82 102 107 130 138 154 165 149 123 98 97 121 +127 118 129 165 176 158 161 174 178 174 156 146 +139 140 125 120 118 129 144 136 150 123 127 131 +119 128 116 115 117 109 109 127 143 125 97 107 +92 99 93 92 103 104 115 109 130 116 95 135 +190 199 147 104 107 82 100 92 97 87 76 115 +184 171 128 136 134 130 133 121 129 135 128 127 +124 111 135 111 111 124 128 117 129 139 124 133 +135 125 131 119 124 127 135 116 141 147 144 156 +158 153 140 143 143 144 146 139 139 129 130 139 +190 189 197 198 198 188 195 200 199 202 204 204 +206 204 206 202 206 204 197 195 195 198 207 207 +202 202 205 205 205 210 213 210 204 200 202 210 +204 213 210 199 195 204 204 204 196 181 166 164 +169 154 143 145 161 175 161 127 121 115 102 85 +83 100 113 154 156 117 125 116 96 126 149 141 +148 138 105 119 67 106 125 127 150 117 87 93 +196 186 110 129 194 212 191 180 177 129 139 165 +190 195 201 209 215 220 219 215 225 233 210 190 +207 201 226 228 210 219 219 176 143 123 108 123 +167 175 191 178 100 78 94 79 87 99 75 35 +15 24 59 140 181 199 149 60 64 54 72 119 +151 114 121 133 111 105 94 89 105 107 93 109 +98 121 129 127 131 131 134 134 128 130 133 134 +123 127 129 129 133 136 135 138 137 137 137 165 +167 156 157 154 167 148 139 138 131 141 137 129 +115 102 90 77 65 56 57 67 65 60 60 58 +82 129 144 144 138 147 149 149 161 157 162 164 +159 166 175 171 162 156 150 154 171 177 158 160 +164 188 196 166 165 179 186 191 205 192 177 186 +184 179 181 194 185 164 159 169 181 188 185 184 +175 164 169 184 184 178 170 159 172 170 159 154 +158 164 160 160 158 155 158 156 153 154 149 139 +129 98 82 62 69 70 56 63 73 73 69 69 +75 83 92 89 86 83 69 74 85 120 123 121 +131 140 145 138 144 149 151 151 148 137 130 139 +139 144 157 162 141 145 151 145 139 140 144 133 +128 129 130 124 114 108 124 135 145 158 143 128 +131 121 134 131 113 106 146 147 165 162 157 174 +191 146 95 113 125 117 141 148 147 130 126 153 +145 153 154 134 97 67 69 62 89 106 117 117 +88 102 76 63 55 109 159 206 210 194 99 89 +116 105 93 96 75 103 139 167 184 175 156 147 +161 127 118 164 184 197 186 164 143 92 85 93 +151 154 115 115 115 135 145 158 170 172 158 149 +149 125 129 147 169 155 143 115 144 131 140 145 +116 107 104 106 121 134 127 111 113 93 95 111 +113 109 121 107 113 145 128 123 109 154 206 185 +137 150 124 93 100 107 95 77 84 166 194 144 +137 147 134 134 134 135 127 127 118 127 131 126 +127 125 118 125 128 124 126 133 127 130 127 126 +137 131 125 117 114 124 130 141 151 145 153 145 +140 138 149 155 140 140 130 137 +196 197 200 202 +197 201 201 198 201 201 199 200 205 196 197 199 +194 194 188 187 196 200 200 206 206 205 204 211 +208 208 213 206 201 202 199 206 206 209 208 200 +195 202 213 211 196 187 168 168 167 146 141 160 +179 161 131 128 116 105 105 99 111 126 119 137 +103 72 114 121 134 149 134 138 144 121 107 100 +83 100 96 104 104 88 76 151 220 198 188 213 +218 218 211 198 167 150 158 174 170 160 167 169 +143 128 158 215 212 176 172 200 198 216 228 220 +218 188 146 146 178 197 200 208 197 190 176 153 +116 63 80 119 127 58 33 79 138 181 197 185 +143 98 60 32 66 107 96 103 103 89 108 100 +98 94 118 115 123 146 115 127 114 107 125 128 +133 137 127 126 128 130 138 136 129 127 128 133 +125 125 133 136 136 141 136 145 157 154 201 181 +156 154 149 141 133 138 151 138 125 118 110 104 +87 57 55 65 72 66 62 58 53 86 125 138 +149 150 143 156 157 159 169 161 157 168 177 172 +166 161 156 155 158 167 169 162 154 171 166 148 +171 185 191 201 198 184 195 196 182 159 179 198 +194 181 174 188 179 175 170 189 186 166 168 184 +184 174 172 178 170 160 158 164 160 159 155 155 +149 149 153 148 143 140 119 95 78 57 67 69 +72 59 59 70 76 80 94 89 117 110 120 127 +131 143 117 120 121 127 127 121 120 130 139 144 +145 147 153 140 138 138 135 147 147 148 158 150 +150 151 149 145 141 138 144 135 133 138 138 136 +129 129 137 128 127 134 131 115 129 109 121 154 +153 137 140 119 138 174 160 149 146 129 128 139 +114 97 121 168 138 129 128 113 79 111 111 110 +104 60 66 67 72 128 166 140 141 123 90 56 +89 65 94 103 130 199 211 166 80 89 99 96 +99 79 89 100 88 100 126 135 175 174 164 157 +123 121 177 191 195 189 139 131 98 125 149 123 +105 102 119 136 138 143 151 153 145 134 146 123 +140 161 166 149 140 130 139 151 153 143 118 109 +128 130 114 124 104 103 114 96 120 127 111 94 +116 126 123 113 128 130 115 180 207 168 157 136 +107 106 109 89 74 86 135 175 127 128 145 149 +135 125 140 128 121 120 114 128 109 115 118 119 +116 123 127 129 124 124 135 133 124 137 134 125 +134 118 135 144 146 149 143 148 136 137 146 139 +146 147 147 140 +200 202 208 200 205 206 200 196 +196 199 204 205 194 197 197 184 191 189 179 190 +196 202 206 209 208 209 210 200 189 199 202 200 +200 191 200 205 215 213 206 204 205 212 220 208 +186 178 185 182 157 135 131 160 159 144 151 144 +119 119 109 106 114 113 118 104 83 105 115 107 +121 149 160 156 162 128 96 74 88 98 94 139 +117 124 184 220 194 174 190 177 151 139 124 127 +88 85 107 123 97 94 123 129 186 211 225 212 +160 182 199 201 226 230 212 198 197 209 212 219 +221 217 208 198 182 160 155 117 84 111 126 95 +59 111 190 209 177 133 80 53 39 77 55 57 +77 103 118 73 88 133 155 168 186 189 176 140 +140 170 128 120 119 114 124 124 134 135 130 136 +135 133 136 137 135 129 133 134 130 130 136 143 +133 135 136 143 146 149 202 175 161 157 151 148 +141 138 149 151 147 129 129 124 114 100 79 73 +63 53 63 62 53 47 90 136 140 140 141 146 +156 164 164 160 153 155 168 164 160 156 148 147 +157 172 181 168 151 170 168 147 166 186 191 194 +188 179 182 178 155 135 159 175 177 176 175 195 +191 189 181 182 190 180 172 177 174 158 169 179 +174 160 164 170 158 159 154 158 159 157 149 141 +129 121 100 66 62 70 74 78 64 65 70 89 +104 114 118 139 136 141 138 139 158 162 155 170 +140 128 125 125 126 136 137 137 147 149 143 140 +140 145 144 145 157 153 150 150 155 151 148 139 +140 148 140 130 134 136 130 135 129 130 130 135 +140 126 110 98 133 131 162 159 135 123 96 99 +134 197 190 184 141 115 134 123 100 133 156 159 +126 107 87 80 75 70 76 97 84 118 88 75 +89 103 113 156 127 89 109 141 123 107 147 160 +189 187 201 221 212 204 207 212 216 212 194 198 +200 189 180 175 150 123 94 127 165 155 135 151 +134 107 124 161 190 171 141 127 167 155 135 135 +141 151 147 154 154 136 149 139 133 130 150 154 +143 125 113 118 137 135 140 129 125 128 124 120 +114 116 98 119 116 119 126 111 109 116 113 119 +116 134 137 110 134 202 194 134 116 115 111 125 +102 96 92 98 130 119 116 126 127 125 118 131 +126 118 123 118 123 114 103 104 117 133 119 134 +129 134 139 124 129 144 143 133 137 134 125 149 +154 155 159 157 148 146 125 143 137 146 139 147 +205 205 201 209 206 197 200 198 197 199 202 202 +192 197 199 197 190 188 191 197 205 209 212 211 +209 204 200 194 197 196 197 196 198 192 200 204 +205 209 205 198 207 215 215 196 174 187 201 192 +165 143 137 145 149 141 162 167 139 109 134 118 +118 131 96 87 95 109 93 88 127 170 185 165 +139 120 94 106 95 120 172 148 103 138 215 194 +155 176 175 174 190 197 190 179 175 201 198 209 +206 200 219 217 221 225 225 210 204 201 216 232 +228 219 219 219 191 185 185 176 167 156 143 134 +108 85 98 130 143 147 150 166 204 199 155 95 +116 119 143 99 39 39 46 31 89 144 190 209 +206 199 176 155 134 109 77 52 66 94 95 115 +119 120 125 129 129 131 130 126 129 133 134 136 +127 127 137 133 127 133 146 155 139 136 141 146 +154 143 150 145 156 165 156 158 182 162 164 159 +165 161 155 161 150 118 109 105 78 57 57 63 +63 60 74 93 113 133 138 150 158 160 160 153 +150 148 154 156 155 148 147 151 162 174 179 175 +172 179 170 151 171 194 187 188 196 189 168 151 +140 140 161 170 180 180 170 177 181 186 185 179 +166 164 172 166 159 151 155 167 161 162 167 161 +162 157 157 160 155 155 155 139 116 90 76 62 +65 67 74 74 65 87 106 120 133 147 147 154 +159 148 140 157 151 155 154 151 140 145 139 131 +133 133 138 146 158 150 153 137 143 143 153 149 +156 149 150 150 148 139 145 144 139 139 139 133 +140 131 130 136 131 127 118 121 128 146 134 139 +138 167 171 159 113 89 92 95 157 167 157 140 +126 113 125 117 119 92 94 126 167 85 69 127 +140 95 69 73 79 98 105 130 172 164 139 124 +117 90 106 103 97 82 59 56 110 117 110 161 +174 218 195 149 157 161 176 174 160 161 153 133 +120 110 117 124 110 158 175 136 171 115 108 93 +113 134 168 186 181 190 180 144 131 135 146 162 +147 148 153 157 139 124 120 110 143 147 137 128 +129 127 137 144 126 117 130 124 120 107 105 109 +107 123 127 139 124 117 120 114 126 130 135 129 +102 108 187 202 158 111 99 105 119 100 110 111 +100 129 125 115 126 114 125 127 129 131 117 120 +115 107 102 109 116 125 135 137 138 129 131 136 +130 133 137 144 143 138 141 134 147 166 162 161 +154 150 140 145 147 143 153 137 +194 207 210 210 +207 197 199 197 194 199 204 198 185 191 189 188 +188 202 208 212 210 210 210 210 204 198 198 199 +192 205 200 195 192 197 199 211 207 194 199 207 +208 209 212 195 185 199 207 198 170 143 135 143 +149 154 162 138 120 138 134 135 128 96 80 84 +95 97 82 85 133 178 166 145 119 106 128 144 +119 148 158 120 103 192 215 169 151 171 179 185 +191 187 186 158 165 186 180 176 189 222 223 179 +143 178 172 179 217 220 231 219 190 175 169 170 +180 135 136 137 146 158 159 166 148 172 189 175 +184 211 216 206 164 92 66 97 97 65 57 56 +100 150 165 168 185 186 166 157 128 96 76 63 +73 55 58 57 79 105 111 129 118 113 128 120 +130 134 125 128 137 130 131 134 130 131 140 144 +128 135 141 150 154 149 147 141 143 145 149 145 +157 162 146 160 179 168 161 157 172 167 167 154 +156 156 126 116 98 77 58 51 56 66 72 73 +89 125 137 143 148 157 151 154 160 155 156 166 +155 147 146 144 151 164 168 164 175 174 164 151 +169 182 179 185 198 197 170 154 160 167 162 180 +180 181 175 164 175 166 170 168 164 161 156 156 +156 158 168 170 169 164 166 165 155 159 160 153 +150 151 143 119 87 60 68 80 74 88 90 85 +114 138 135 143 147 146 170 158 148 151 138 139 +150 151 154 144 143 141 141 137 151 138 148 144 +154 156 149 140 140 137 137 139 145 140 136 145 +141 144 143 136 136 138 133 131 131 126 129 135 +137 134 127 113 128 128 141 153 144 148 161 143 +171 178 167 119 98 126 127 146 138 124 141 129 +126 110 88 76 106 103 147 138 155 115 87 113 +94 118 130 119 110 165 178 161 139 125 140 140 +93 76 63 47 77 88 54 87 90 131 188 200 +128 53 63 116 127 134 124 155 148 121 123 127 +129 130 124 138 176 158 110 104 98 90 123 119 +141 170 198 210 179 137 128 146 141 139 146 139 +146 151 143 140 134 150 175 174 140 130 137 137 +141 121 123 129 119 123 127 110 114 115 124 129 +137 109 107 120 109 124 127 110 120 105 83 155 +211 192 111 104 94 102 97 95 103 97 120 141 +118 119 128 117 121 139 128 138 124 110 111 114 +117 123 124 134 138 146 130 135 126 128 140 128 +147 144 135 146 154 161 162 162 156 157 148 148 +149 141 141 153 +200 207 204 200 201 190 194 195 +196 198 194 192 189 194 200 202 208 215 216 216 +209 208 211 202 201 197 198 194 201 202 197 199 +196 192 200 196 190 199 200 205 200 200 200 187 +190 194 210 198 167 139 131 147 159 141 120 130 +134 143 147 127 113 94 82 82 113 95 62 125 +180 176 161 151 150 151 151 99 72 107 77 72 +130 195 138 151 155 135 128 111 118 138 139 113 +125 144 186 218 213 190 157 139 172 208 202 208 +227 225 180 156 166 151 124 146 156 158 174 169 +165 167 143 145 186 178 169 211 219 201 168 168 +106 59 108 146 131 126 156 188 181 161 138 118 +94 115 104 80 56 84 114 102 89 93 62 70 +106 115 137 125 97 110 127 130 124 129 130 126 +134 129 128 135 125 129 125 131 131 130 129 139 +135 136 134 136 141 139 145 154 143 146 143 167 +176 164 157 170 161 155 150 136 146 157 138 144 +131 109 92 80 66 65 62 55 60 108 128 135 +146 148 144 156 161 159 151 154 149 148 146 146 +149 154 154 160 164 149 157 156 164 178 174 177 +190 185 165 175 187 190 180 182 177 179 171 168 +165 167 159 166 161 156 155 154 157 159 160 168 +164 166 164 159 161 158 151 149 141 133 113 78 +57 53 57 87 97 105 117 120 139 135 148 144 +147 157 164 151 158 157 143 147 151 151 160 153 +150 153 150 149 156 151 151 137 145 149 154 151 +144 146 144 149 159 154 156 138 136 144 148 137 +133 134 134 128 133 129 131 131 133 134 131 113 +120 118 111 117 149 158 126 109 140 176 202 220 +207 190 164 119 115 128 123 127 93 103 103 80 +76 110 131 147 141 117 130 146 92 85 111 140 +117 79 108 172 156 128 129 166 146 85 78 56 +57 54 90 83 74 72 84 168 205 151 63 63 +72 70 106 110 146 177 192 188 177 166 172 150 +147 185 178 125 118 119 120 134 121 131 144 162 +196 200 195 179 162 147 158 149 140 134 139 147 +144 130 134 161 185 151 133 133 127 117 120 109 +100 119 127 137 133 115 126 137 123 124 118 119 +113 100 110 102 88 96 95 87 129 207 186 110 +103 102 109 93 110 111 107 119 162 146 105 100 +111 119 136 137 128 116 115 123 111 124 125 135 +137 136 139 123 127 129 124 141 148 153 159 157 +164 172 161 147 162 148 136 155 145 134 146 143 +201 205 205 198 189 195 188 191 194 186 181 188 +194 195 204 207 209 216 211 205 210 209 204 204 +195 187 197 194 197 196 198 188 195 189 197 190 +197 201 211 209 200 195 198 182 189 192 194 192 +179 148 146 156 150 124 115 136 143 137 157 145 +134 131 90 103 110 89 98 143 175 153 141 129 +135 169 145 135 123 94 70 120 208 181 172 176 +188 191 180 188 190 190 176 179 202 212 216 210 +191 187 199 213 215 213 218 227 220 195 196 201 +201 187 198 200 185 167 151 147 153 153 191 190 +170 213 225 201 156 146 170 161 111 137 147 156 +181 184 186 170 146 136 67 31 31 62 58 59 +60 109 108 123 114 77 90 64 107 131 116 128 +105 110 129 131 123 128 136 128 127 131 137 129 +130 130 127 133 129 127 126 131 134 133 145 143 +144 140 154 149 140 140 149 150 169 176 175 166 +153 146 161 145 141 161 159 174 160 124 119 121 +103 64 56 43 52 66 104 137 138 141 147 148 +158 157 148 150 144 147 151 141 144 138 145 155 +147 153 157 153 161 176 180 180 190 184 177 198 +204 194 171 170 170 166 166 174 169 171 169 157 +160 162 161 159 158 157 162 162 161 167 162 165 +161 160 156 147 134 115 77 58 46 45 75 100 +113 133 141 141 145 153 153 149 144 148 154 144 +150 150 157 154 147 166 179 172 170 161 159 154 +162 164 172 149 150 156 151 146 144 140 138 143 +151 148 148 141 131 137 143 137 133 139 133 133 +138 131 133 131 133 136 127 99 105 114 133 149 +146 138 105 107 98 69 84 133 167 200 215 200 +181 148 106 113 127 117 98 82 86 92 124 114 +88 109 103 95 137 153 119 109 118 148 110 72 +93 124 184 191 180 160 155 153 130 92 76 114 +84 93 85 77 151 207 162 67 37 56 62 57 +69 73 102 138 165 147 171 190 195 188 213 210 +208 213 207 207 194 180 159 164 149 133 156 187 +197 204 195 172 174 171 155 139 147 143 137 128 +143 175 169 129 131 140 130 108 107 104 117 129 +133 140 124 144 136 119 131 116 106 108 116 99 +82 92 82 84 96 107 186 198 139 106 98 108 +107 120 111 102 108 172 166 111 104 120 137 148 +128 129 121 124 125 116 129 131 128 137 125 134 +139 126 133 134 138 145 162 164 174 179 169 161 +165 151 148 156 139 139 147 140 +198 202 198 195 +194 197 185 199 189 186 186 191 197 199 201 198 +211 213 210 210 209 211 210 199 199 204 199 192 +192 192 186 182 185 177 185 195 201 206 209 205 +198 196 192 181 196 188 187 181 175 154 158 157 +150 155 131 145 143 170 177 153 140 123 87 96 +89 56 52 111 141 130 110 103 98 99 131 116 +66 67 56 164 188 155 161 130 110 129 179 180 +190 215 210 197 187 190 171 179 202 197 195 194 +188 220 227 229 223 221 220 205 206 197 197 182 +190 192 191 189 210 211 206 218 226 201 176 187 +154 149 184 166 186 191 197 196 177 139 109 69 +45 48 66 47 93 148 136 94 87 74 92 108 +133 94 65 76 98 113 116 126 111 113 119 126 +125 125 125 124 129 123 133 128 127 134 131 129 +131 138 139 137 134 128 137 133 138 143 144 136 +141 148 149 136 135 147 146 143 143 137 146 138 +154 165 161 158 153 155 154 148 119 84 67 48 +60 65 74 107 140 151 138 157 153 147 154 148 +155 150 153 150 140 143 133 135 143 140 154 154 +153 170 177 177 178 174 172 194 197 179 153 166 +168 166 161 167 162 162 164 156 154 159 156 160 +156 157 162 170 166 161 157 153 160 158 148 137 +106 83 56 45 60 85 109 121 138 146 149 151 +154 150 147 154 150 147 149 146 150 164 150 155 +157 153 166 160 147 159 172 164 151 160 175 157 +139 155 147 147 143 137 146 138 140 136 139 154 +140 143 147 139 129 139 135 130 133 131 128 134 +131 123 111 100 104 107 159 195 182 126 88 120 +119 107 123 99 78 78 133 175 206 217 197 145 +119 109 104 99 138 95 73 124 98 68 102 107 +144 145 107 93 121 154 174 178 153 117 144 144 +137 137 148 154 139 162 167 156 154 107 104 104 +73 143 204 179 75 36 42 67 65 118 123 111 +115 118 140 175 172 129 169 185 124 145 161 147 +153 166 172 188 180 194 188 190 191 174 184 176 +177 176 162 159 168 170 162 157 143 129 143 167 +149 119 134 143 114 124 119 106 130 119 130 147 +138 119 115 133 102 105 110 103 94 86 89 92 +85 72 83 168 192 135 107 106 124 106 119 115 +99 107 147 165 146 121 126 133 136 126 133 124 +117 134 118 135 137 131 126 127 135 143 148 144 +136 141 147 157 180 176 175 167 151 150 155 148 +150 149 137 150 +204 201 196 192 197 195 192 184 +180 185 188 197 197 199 200 200 210 212 212 207 +206 209 211 208 209 204 194 185 194 191 182 181 +182 191 204 200 209 207 200 196 195 192 188 196 +196 195 186 175 170 164 170 174 164 153 138 131 +160 176 160 136 106 100 94 77 64 48 49 114 +111 95 106 92 86 157 144 94 48 74 153 205 +147 111 107 115 176 207 217 211 213 189 155 123 +115 140 191 191 166 150 155 206 219 228 218 194 +165 150 147 179 198 181 177 184 196 213 213 189 +192 218 231 221 181 179 213 199 164 176 192 179 +162 130 86 64 47 45 38 94 76 66 52 106 +159 116 77 57 46 54 82 100 86 75 87 92 +92 97 107 111 106 119 117 131 129 128 129 124 +131 127 133 138 137 136 137 133 143 139 139 138 +131 129 134 140 140 141 137 148 146 153 135 136 +151 146 149 140 131 137 140 140 144 141 160 137 +137 143 147 147 123 103 80 56 62 68 70 66 +119 135 141 141 147 148 155 158 154 153 149 146 +144 125 136 153 143 148 153 147 154 154 171 179 +174 158 159 169 174 166 162 168 169 176 165 172 +167 156 166 160 158 158 159 153 157 155 156 161 +164 159 160 160 154 147 131 110 84 76 66 62 +84 115 125 140 148 164 172 160 154 149 146 155 +149 151 160 158 165 148 154 164 162 172 162 144 +137 151 159 145 150 166 164 155 146 151 151 148 +145 134 133 145 141 143 149 140 143 156 156 143 +133 137 135 135 130 131 131 147 130 116 111 100 +110 128 116 130 189 192 153 131 119 159 167 113 +104 107 56 53 84 155 204 213 192 134 88 78 +106 150 151 127 128 86 139 150 136 110 121 155 +140 119 128 138 166 185 197 184 153 164 138 105 +104 98 89 85 100 120 107 111 111 145 147 206 +201 133 110 111 82 70 84 111 130 117 94 116 +165 162 136 175 148 120 118 133 115 109 97 108 +135 129 145 157 159 181 198 201 200 202 182 179 +160 150 166 158 154 155 136 134 148 149 128 127 +140 138 139 127 111 113 111 119 124 121 124 130 +130 97 73 95 87 102 94 89 105 99 77 65 +161 196 136 116 108 109 117 110 128 121 103 124 +165 158 145 147 138 140 141 126 123 128 129 136 +135 131 129 117 133 138 141 147 134 140 154 147 +160 174 172 161 149 145 139 150 141 139 145 141 +201 199 198 196 196 200 190 185 192 195 194 200 +201 205 206 205 210 216 209 209 209 208 205 208 +208 204 194 197 194 191 184 188 201 200 204 207 +210 209 206 196 189 192 191 195 194 188 179 179 +161 165 178 182 168 160 143 154 177 170 146 130 +90 82 68 68 51 49 105 123 111 96 99 85 +115 127 109 54 43 79 202 215 199 199 201 190 +170 135 128 151 185 167 141 144 170 177 174 148 +127 123 160 223 226 211 153 125 130 120 88 98 +140 162 196 206 206 185 167 182 220 220 174 141 +146 206 174 127 169 185 147 145 121 106 54 41 +90 93 83 114 86 62 68 74 67 51 34 43 +66 74 69 80 113 113 105 57 92 120 115 125 +107 107 116 118 121 131 128 127 129 129 133 133 +129 127 138 135 138 133 126 126 140 141 135 136 +144 153 140 140 135 134 145 143 145 137 131 135 +145 157 164 137 141 153 154 177 165 151 153 138 +124 113 99 80 68 65 55 68 94 130 146 141 +144 157 166 169 159 159 150 145 144 143 141 149 +156 150 141 145 149 149 167 184 176 164 153 159 +162 160 160 175 176 175 175 174 170 164 164 154 +156 159 154 155 160 159 156 156 155 157 159 155 +145 141 123 80 69 85 77 89 115 134 141 133 +150 150 158 157 148 153 147 161 154 171 168 158 +166 157 144 157 162 165 158 154 153 162 168 151 +151 151 157 146 135 140 145 130 130 131 138 141 +145 134 143 158 149 139 141 131 138 139 135 128 +131 128 130 131 119 114 119 133 138 123 111 113 +100 149 201 198 143 120 119 144 128 164 134 69 +51 62 110 179 210 212 192 143 86 115 125 135 +135 124 109 99 148 174 167 144 105 99 109 113 +77 69 86 93 124 164 171 181 182 178 153 105 +82 89 85 74 79 100 121 129 196 191 106 129 +179 177 146 106 86 109 131 130 151 148 145 159 +194 175 150 131 124 141 148 134 129 136 133 130 +139 143 133 135 168 188 202 199 192 174 148 145 +141 151 137 119 126 125 151 138 125 121 129 128 +126 133 115 95 114 106 110 134 140 125 111 89 +102 99 86 92 82 90 104 94 84 139 186 129 +108 109 114 117 119 117 127 116 107 151 171 157 +137 145 139 130 119 127 127 124 131 133 116 126 +128 130 146 141 144 140 148 148 150 164 167 156 +154 153 144 139 143 144 146 149 +202 196 196 192 +194 192 189 191 194 204 196 197 202 204 207 207 +204 209 209 204 202 194 192 198 209 196 192 200 +197 192 186 200 209 204 206 208 215 208 192 196 +186 190 198 198 188 181 176 161 157 165 178 184 +171 169 140 147 166 162 143 103 100 80 74 78 +66 94 102 126 100 79 82 67 120 145 177 178 +188 207 218 191 181 151 145 155 117 108 125 116 +109 155 177 200 174 156 148 133 128 162 215 215 +208 170 147 144 138 131 160 188 202 200 191 174 +154 177 206 209 184 169 192 215 220 165 150 189 +219 201 165 131 95 120 75 31 51 27 23 56 +76 70 45 36 44 36 26 69 103 117 159 153 +124 113 86 72 127 128 133 125 125 115 110 137 +136 124 124 126 125 131 130 128 135 139 133 131 +134 130 130 137 129 139 131 149 145 140 155 141 +129 139 141 136 133 128 124 127 155 172 172 146 +164 172 170 177 159 146 140 149 159 147 117 106 +98 90 68 66 72 98 127 140 149 158 154 160 +154 151 141 140 136 130 138 148 150 140 153 146 +145 157 154 155 168 171 171 165 169 169 166 177 +177 177 166 155 155 158 160 157 155 159 161 155 +161 164 158 157 151 155 159 149 139 113 90 79 +77 85 108 125 148 144 147 155 147 146 165 160 +161 154 158 161 147 154 150 158 164 159 162 157 +155 166 156 169 154 162 180 159 155 162 149 164 +148 146 156 137 135 137 147 156 155 141 150 141 +129 129 139 134 141 143 134 135 137 130 129 133 +131 123 117 137 141 117 96 119 134 90 121 189 +211 170 125 144 135 136 135 118 92 58 70 149 +148 165 188 215 187 124 105 107 102 135 118 97 +67 141 151 157 161 145 104 77 93 104 94 106 +158 133 131 110 115 174 182 185 131 135 134 114 +79 106 114 82 106 189 190 106 64 105 154 159 +168 139 99 126 139 125 151 151 153 185 161 184 +170 164 138 141 145 138 140 137 138 140 137 128 +128 134 167 174 156 171 196 192 184 146 137 124 +126 123 115 143 138 120 124 128 137 109 116 125 +113 102 96 109 106 120 115 94 82 83 102 99 +99 92 90 110 106 98 126 144 119 104 105 114 +113 118 114 119 117 102 137 186 178 145 136 138 +124 130 118 126 130 133 120 110 135 131 131 153 +139 136 153 147 149 157 166 161 155 156 149 144 +144 146 149 162 +201 201 198 191 185 180 187 194 +197 196 199 206 204 205 211 208 207 209 211 207 +204 198 195 207 206 197 196 196 197 190 192 200 +209 209 208 207 207 190 189 186 190 188 200 206 +195 185 175 175 172 153 168 178 169 146 131 148 +158 148 116 99 109 84 62 38 48 90 104 88 +128 162 186 196 199 179 164 137 128 207 175 119 +115 144 181 156 131 120 94 76 119 124 134 171 +182 180 162 172 208 218 207 204 166 144 161 176 +199 198 196 178 148 149 160 164 200 227 225 199 +208 221 225 223 174 153 196 192 171 118 64 75 +129 79 47 17 37 90 102 59 55 47 26 29 +32 23 29 55 97 94 105 106 82 96 185 200 +186 123 118 139 145 137 124 124 118 120 125 134 +119 128 136 127 127 135 130 129 128 136 133 139 +141 143 153 159 145 155 143 145 145 136 141 136 +134 140 138 140 149 145 154 155 155 165 181 184 +161 145 136 144 155 151 127 119 109 102 94 77 +73 75 99 128 140 149 149 159 161 154 149 134 +133 131 135 136 135 140 146 145 146 139 146 147 +151 161 161 166 168 161 165 164 164 156 143 148 +154 157 159 149 156 157 160 156 158 162 174 155 +156 148 151 140 117 98 76 77 99 121 126 144 +144 151 153 151 155 151 164 162 167 166 158 157 +143 139 148 149 147 161 165 157 157 162 157 157 +162 158 160 146 148 156 164 158 151 147 137 133 +133 136 129 136 136 135 139 134 128 140 145 137 +126 131 130 128 138 135 133 129 124 120 136 150 +137 105 104 135 133 97 67 78 161 197 192 169 +161 170 147 110 109 93 49 69 126 107 77 145 +202 209 168 107 77 119 120 102 97 127 96 55 +89 155 147 155 153 133 88 92 139 164 169 177 +168 160 129 176 176 169 109 89 107 123 131 124 +78 96 204 179 103 90 89 102 149 155 148 148 +140 111 141 138 168 182 166 164 162 177 184 159 +137 144 156 140 134 130 131 135 138 144 156 161 +169 162 144 144 172 196 197 191 176 136 124 118 +131 129 128 123 134 140 118 107 114 104 98 80 +108 105 123 107 83 98 95 100 107 107 105 108 +119 102 99 114 106 104 105 115 117 108 118 125 +130 111 107 125 165 188 156 135 130 119 123 126 +120 120 125 126 124 126 129 136 141 134 148 148 +148 160 162 166 159 155 150 151 144 145 149 151 +204 205 195 192 184 191 189 191 194 192 201 206 +202 206 202 204 208 204 200 204 200 195 197 204 +204 194 189 198 200 198 194 204 206 201 201 200 +182 174 185 184 181 185 195 202 192 179 180 185 +156 144 168 160 158 148 131 141 143 126 118 137 +138 87 43 54 102 174 185 199 195 156 135 104 +95 92 80 96 164 206 153 98 98 170 168 153 +131 118 103 100 150 126 140 162 150 166 196 208 +213 215 221 213 213 211 200 188 177 170 170 155 +138 144 179 221 218 199 172 144 160 169 174 182 +180 196 166 108 113 77 133 159 109 60 53 140 +198 210 190 111 21 47 70 125 100 84 49 60 +54 63 93 124 194 205 182 136 104 90 110 130 +129 141 128 129 130 120 126 128 129 127 129 125 +126 131 131 131 136 134 137 144 139 155 144 135 +134 138 140 134 135 138 141 135 139 144 149 147 +151 147 150 143 133 143 156 168 157 134 133 139 +146 144 139 131 120 111 100 86 77 67 78 127 +148 145 155 157 160 151 150 143 134 143 147 139 +136 129 138 148 150 149 149 156 159 150 151 155 +155 158 149 164 158 154 155 154 157 167 153 155 +155 157 162 159 158 164 168 165 151 154 147 125 +100 86 88 97 116 129 146 148 149 144 138 151 +156 156 159 149 162 156 156 160 146 146 151 139 +148 149 150 160 150 153 153 156 162 157 143 144 +147 154 159 137 141 141 134 137 137 133 127 136 +128 134 139 139 135 137 136 130 130 137 129 135 +137 135 137 128 135 139 156 137 121 118 143 126 +99 109 95 64 78 139 190 198 172 124 118 106 +108 123 78 59 79 69 89 94 106 180 208 199 +135 84 99 129 90 76 73 110 114 82 77 68 +105 147 181 166 109 74 66 89 120 154 166 171 +165 194 215 198 167 159 125 134 129 67 121 205 +149 80 92 86 88 149 140 104 124 131 158 162 +153 176 164 141 136 149 148 162 175 160 143 153 +150 160 165 162 148 149 153 135 125 131 139 150 +139 125 131 154 180 208 207 190 149 146 121 116 +124 140 145 131 127 103 95 97 96 105 127 120 +111 104 114 109 97 109 120 126 120 117 126 117 +123 120 111 115 120 114 125 130 124 135 120 117 +130 138 169 158 138 135 125 127 127 130 128 134 +130 123 139 151 146 140 146 148 148 158 147 160 +155 145 153 148 148 144 138 158 +202 194 198 194 +188 198 198 192 192 198 205 209 211 201 208 204 +197 205 205 199 201 208 204 211 202 190 192 207 +206 208 210 207 200 196 181 186 188 180 188 190 +181 192 194 197 176 184 199 179 149 140 162 177 +170 168 141 128 136 147 135 151 134 96 104 137 +187 188 165 137 113 92 72 70 77 54 70 74 +196 168 113 97 140 170 160 134 106 105 123 156 +171 174 194 200 200 208 219 209 206 216 187 155 +137 145 159 151 167 160 160 168 158 204 228 211 +197 207 219 209 208 204 198 157 174 126 87 86 +119 129 150 111 95 154 202 212 208 160 98 94 +88 96 88 64 74 58 56 48 77 145 194 201 +171 105 73 65 110 96 93 109 133 127 120 124 +130 131 133 133 129 130 129 126 129 128 131 129 +134 134 138 140 138 136 136 145 140 137 141 144 +145 143 140 138 171 175 156 150 150 147 179 192 +171 153 151 162 151 150 139 138 137 153 147 143 +125 115 111 105 95 84 76 99 126 134 144 145 +145 151 147 143 135 138 146 145 144 140 130 143 +150 145 159 156 148 150 146 151 154 147 157 157 +159 159 148 153 151 153 154 148 151 159 159 159 +157 159 171 161 158 151 130 100 75 92 110 118 +129 138 155 151 137 143 157 154 156 157 150 158 +158 151 151 161 157 151 155 153 145 145 158 157 +153 159 157 155 153 159 153 141 146 146 137 133 +134 137 139 141 140 133 135 137 136 138 140 146 +141 135 129 129 135 135 133 135 134 130 131 130 +136 129 123 103 106 120 128 139 149 135 151 126 +82 79 108 175 208 158 151 134 134 138 96 96 +77 69 93 94 114 128 166 202 206 164 102 110 +104 95 74 109 135 127 78 64 69 107 89 137 +179 184 131 87 66 66 92 114 105 129 177 216 +222 204 170 140 170 181 161 182 209 158 146 129 +94 100 121 135 108 113 120 157 159 155 180 160 +140 149 156 154 149 157 177 177 164 148 143 150 +150 145 151 138 140 149 145 140 154 157 158 155 +161 170 191 211 212 213 211 187 151 153 157 147 +139 124 121 114 102 93 100 109 116 126 136 120 +108 116 106 108 128 133 123 111 113 108 118 108 +110 129 111 119 140 126 128 124 125 135 147 154 +145 136 128 129 125 129 129 128 131 124 126 148 +146 137 145 141 143 156 156 159 164 158 149 155 +145 139 139 143 +204 211 197 188 194 196 195 192 +194 200 209 209 208 206 208 201 199 204 211 205 +201 204 206 208 195 186 199 207 204 208 209 198 +194 182 176 186 196 184 178 180 186 189 194 192 +170 182 196 182 149 140 177 182 189 175 140 117 +133 130 148 170 135 123 103 96 138 141 130 118 +95 51 28 92 72 67 63 128 200 145 121 120 +177 188 164 148 168 181 186 205 200 209 215 209 +197 189 186 184 206 207 204 206 207 208 221 226 +220 216 209 219 229 222 210 204 192 186 177 164 +160 195 178 139 106 79 100 115 194 210 197 184 +207 225 218 189 131 129 115 102 73 97 116 127 +51 43 69 145 202 209 154 89 73 62 72 86 +114 102 90 93 118 123 118 117 124 134 124 134 +129 125 130 127 124 130 131 134 141 134 138 151 +151 140 145 155 145 138 138 134 134 129 136 134 +160 153 146 171 166 167 181 192 196 184 156 139 +129 136 141 131 145 153 150 138 126 120 118 114 +111 98 85 80 104 128 138 139 151 153 151 141 +134 146 137 136 133 126 138 146 150 157 164 161 +153 151 140 145 143 147 148 154 156 150 156 154 +157 156 154 158 158 161 164 160 162 167 160 165 +146 129 109 95 88 100 120 128 133 137 154 151 +146 131 143 150 158 150 149 158 156 153 145 153 +146 140 145 154 158 148 147 151 151 147 141 139 +136 146 138 143 149 148 146 133 133 134 133 138 +154 150 148 146 143 144 144 146 138 135 137 129 +134 136 139 135 130 140 134 131 139 153 127 105 +104 107 124 167 148 109 127 121 102 73 110 131 +167 172 192 215 196 150 109 104 84 52 99 113 +143 105 65 100 174 202 160 75 97 151 84 63 +79 94 87 97 69 80 87 48 95 131 117 124 +106 74 46 69 126 96 52 89 134 162 194 194 +168 175 179 182 221 215 170 165 170 125 103 139 +147 143 127 144 174 147 158 177 148 125 123 118 +166 172 161 164 170 158 145 148 138 148 175 181 +185 175 187 177 180 156 149 136 144 158 179 167 +148 154 171 204 206 191 154 124 116 123 115 104 +111 106 87 102 92 111 120 137 129 106 110 95 +114 116 114 125 114 120 128 126 117 118 115 111 +135 143 126 133 128 136 145 147 147 130 131 133 +123 134 128 134 131 133 135 140 148 130 136 143 +121 150 148 160 153 153 153 148 154 149 144 145 +208 198 197 187 188 197 195 189 194 207 208 209 +208 210 204 198 204 209 210 207 205 199 192 192 +200 200 202 207 208 204 206 198 195 194 201 200 +195 174 165 180 187 190 201 187 174 190 191 176 +145 148 169 197 196 177 161 146 160 174 156 131 +110 102 82 97 138 131 145 117 67 73 87 88 +92 73 82 188 171 118 111 108 157 155 136 148 +150 147 166 184 176 201 201 202 192 158 180 195 +197 188 180 180 170 179 192 202 190 181 212 225 +207 172 151 153 140 137 131 156 164 211 197 192 +190 184 207 215 191 165 151 215 225 206 167 131 +121 100 90 158 169 133 58 53 105 175 217 208 +166 109 75 55 67 77 83 97 78 107 119 116 +126 127 119 117 124 127 131 134 129 129 148 136 +126 126 129 135 136 126 131 138 150 157 153 137 +140 139 149 145 154 159 180 151 139 135 144 153 +137 147 151 177 179 155 154 162 147 151 147 144 +131 129 137 143 140 134 128 119 116 105 107 104 +97 116 125 147 140 153 147 144 135 143 153 136 +136 135 139 148 153 154 155 151 148 154 144 146 +144 145 150 158 159 158 156 158 151 155 159 158 +162 162 159 162 164 158 162 154 147 124 105 109 +114 123 143 139 138 143 154 153 148 144 156 165 +158 150 159 156 145 145 137 147 155 146 143 141 +154 145 140 143 136 143 137 138 135 145 143 143 +136 149 145 138 139 136 126 134 144 141 146 159 +143 146 153 143 140 134 131 127 127 135 134 131 +139 140 130 135 140 134 126 110 119 99 137 156 +166 135 130 114 108 121 94 105 119 116 131 167 +206 213 174 123 109 73 32 66 117 151 159 102 +94 169 207 190 140 120 129 133 93 55 72 49 +52 56 67 90 79 113 135 107 75 75 94 78 +65 100 83 63 55 56 76 143 177 213 211 180 +156 215 204 188 191 186 174 172 169 185 159 131 +134 164 143 164 176 150 137 143 158 159 159 159 +149 151 182 171 177 179 176 167 175 159 151 157 +167 168 180 188 191 178 168 170 156 150 144 128 +143 169 197 204 191 160 127 117 100 106 100 104 +107 96 121 121 134 131 120 107 96 102 119 118 +124 115 121 162 136 114 113 120 123 144 136 126 +135 135 149 155 146 141 138 127 129 127 121 127 +136 133 140 149 145 140 141 138 136 144 147 158 +157 147 155 169 164 147 146 151 +200 191 182 185 +197 194 194 191 201 200 204 208 209 210 209 204 +204 209 209 204 199 197 187 196 206 201 201 207 +201 207 205 194 200 211 211 199 188 160 167 181 +195 199 195 185 184 197 191 169 141 133 182 212 +195 155 138 150 138 115 134 123 108 102 95 108 +144 150 121 70 58 77 86 68 86 105 143 205 +144 129 166 186 204 182 178 159 157 153 150 177 +172 176 185 184 165 153 130 125 158 158 170 180 +189 198 174 150 166 202 207 172 176 194 195 181 +174 176 181 188 211 201 157 136 140 199 191 134 +118 171 211 219 184 137 109 102 159 179 169 108 +69 65 127 178 219 213 181 134 117 73 45 42 +64 76 72 67 85 84 103 119 108 126 149 133 +129 125 128 143 124 123 128 138 137 126 133 133 +136 139 129 131 146 148 146 146 138 143 140 157 +167 146 158 148 151 143 147 184 158 160 197 172 +143 145 153 148 149 144 137 138 145 146 140 151 +155 145 139 133 124 118 116 107 96 92 118 135 +153 147 150 151 140 145 149 143 147 143 143 159 +157 154 157 156 158 151 145 147 145 150 151 155 +161 147 156 151 149 158 158 164 167 165 164 167 +167 164 161 149 130 111 111 117 124 133 141 150 +147 140 147 155 153 160 147 147 151 137 138 143 +139 133 134 143 145 134 140 137 140 141 136 136 +144 151 154 145 139 139 145 148 131 139 145 133 +139 134 138 147 139 136 144 148 148 151 149 137 +134 133 134 133 135 135 133 137 133 140 137 128 +134 116 105 111 98 98 130 150 131 126 119 135 +154 158 127 109 127 111 131 106 82 160 209 220 +179 86 41 89 104 67 90 119 138 113 150 195 +174 190 190 164 128 94 89 88 96 69 88 83 +89 108 137 114 85 82 110 107 96 73 73 76 +66 46 55 46 55 126 202 219 187 191 186 111 +107 141 145 148 177 184 191 186 197 201 190 167 +176 190 166 162 162 156 158 181 189 190 180 167 +165 156 153 139 136 145 141 131 149 185 199 179 +178 170 172 159 156 168 175 175 166 153 153 154 +191 209 205 200 194 164 162 143 126 134 123 119 +120 124 135 127 115 99 95 118 134 129 108 131 +188 134 109 124 123 120 138 137 121 144 145 155 +154 143 135 133 135 126 133 139 134 144 136 135 +140 147 134 138 135 138 149 159 160 150 157 166 +159 149 143 143 +198 188 187 194 198 189 197 204 +207 209 208 208 211 212 209 210 207 205 200 198 +200 199 199 207 207 202 204 204 199 197 199 201 +204 210 207 187 167 171 169 186 199 191 190 186 +188 190 179 166 145 157 170 168 164 143 165 160 +126 145 166 125 123 128 114 135 162 148 113 65 +76 62 60 82 119 126 187 176 137 148 159 172 +177 159 145 135 136 160 170 187 162 151 160 168 +135 131 107 167 186 157 158 167 156 153 148 199 +219 216 200 199 185 169 166 181 185 159 136 159 +197 127 116 141 192 171 109 134 200 219 223 164 +137 140 158 189 188 117 76 86 123 127 184 213 +188 134 105 106 67 46 48 33 38 67 97 99 +73 96 109 115 139 144 134 127 121 125 126 141 +143 127 130 136 144 143 131 128 133 129 126 134 +134 135 146 144 154 146 149 149 162 160 141 151 +168 150 164 184 164 167 176 166 155 161 162 139 +131 141 141 149 146 149 151 147 144 143 155 140 +133 121 118 114 100 97 93 121 144 156 151 149 +153 136 149 147 145 140 143 156 150 159 159 158 +158 148 149 145 155 166 161 160 147 147 155 150 +156 161 161 166 162 159 167 156 167 165 154 126 +110 110 119 126 135 143 143 151 155 151 140 139 +141 157 143 144 144 143 145 139 138 146 141 141 +138 144 130 134 140 137 133 131 139 141 139 136 +135 131 131 133 130 129 133 138 141 130 144 147 +146 144 136 145 139 138 139 133 136 136 140 133 +131 143 136 131 134 130 131 139 141 110 109 120 +117 135 147 124 97 114 115 126 166 176 143 114 +105 110 139 127 98 80 100 192 221 205 140 72 +57 92 95 60 86 104 110 135 195 150 96 146 +194 213 204 179 128 74 55 67 128 141 85 125 +134 117 118 130 117 63 93 60 64 39 45 53 +48 68 84 161 206 219 222 171 93 118 176 150 +128 84 87 131 113 124 186 154 138 165 170 127 +131 171 174 169 162 153 159 140 145 170 158 140 +143 155 151 157 182 175 154 147 155 179 189 179 +184 184 175 167 165 146 128 117 117 123 120 153 +195 212 210 187 159 144 139 121 127 127 129 135 +133 113 109 110 130 144 124 102 188 175 131 130 +121 128 119 119 130 139 143 139 148 138 134 133 +131 131 127 124 131 138 139 139 141 141 144 141 +131 141 137 155 160 148 153 155 166 157 159 159 +189 185 200 201 198 198 205 209 208 206 207 210 +211 204 204 199 198 200 200 197 204 209 202 207 +206 199 200 199 190 196 195 200 206 206 199 184 +177 171 175 191 184 180 191 194 182 177 174 143 +129 156 182 194 171 160 170 129 128 165 143 146 +137 123 125 131 134 100 78 82 76 72 93 90 +117 123 204 134 113 151 161 178 160 120 121 129 +154 158 172 160 123 153 201 197 176 120 125 165 +162 151 167 159 184 201 217 188 155 153 130 126 +144 125 129 136 141 167 169 210 182 167 167 184 +156 116 158 209 219 201 172 170 171 167 116 168 +154 108 86 100 98 176 208 159 85 68 93 49 +37 33 47 17 24 41 70 84 103 94 88 102 +116 118 123 128 116 124 118 124 134 141 125 127 +138 156 139 138 131 121 128 130 134 136 138 141 +153 164 153 164 160 146 149 149 160 161 145 148 +154 148 158 150 145 145 138 135 144 169 162 150 +137 145 147 147 141 151 157 140 127 125 119 117 +110 102 100 126 135 145 161 165 156 156 160 155 +158 160 153 144 146 160 166 162 154 151 146 153 +155 156 162 155 143 144 155 162 156 160 162 156 +160 162 150 159 167 159 128 114 116 114 123 141 +141 160 153 141 162 156 138 139 137 156 140 140 +147 139 147 140 147 160 147 144 139 136 131 129 +136 141 136 135 137 138 145 140 135 135 133 134 +134 133 135 137 136 141 161 166 148 133 133 140 +144 137 136 130 136 139 134 131 138 139 130 138 +137 130 134 143 125 117 127 131 121 113 139 125 +115 121 133 160 181 164 138 131 109 88 108 129 +123 90 84 77 147 202 225 197 145 55 68 58 +59 77 89 128 168 194 136 80 75 129 157 208 +220 206 166 107 86 106 90 96 109 168 180 162 +148 131 114 98 57 45 54 46 63 78 94 75 +96 174 220 219 182 128 128 175 171 151 138 141 +161 140 149 164 139 166 184 189 167 154 147 135 +135 151 146 159 190 178 149 146 148 149 177 181 +156 144 126 139 155 147 153 170 167 153 160 133 +121 115 115 113 113 116 111 105 97 103 150 179 +204 209 194 158 127 117 110 125 133 116 121 108 +123 133 133 119 126 205 150 135 137 121 130 126 +129 125 138 144 135 144 139 139 137 135 135 134 +131 124 138 138 133 150 140 151 145 131 143 156 +159 154 157 166 158 170 170 155 +188 202 198 202 +205 201 205 211 206 206 211 210 199 196 197 200 +202 197 204 208 207 205 197 191 182 182 188 184 +189 195 196 190 198 204 192 180 178 174 178 176 +175 171 184 196 184 172 147 134 138 182 191 178 +172 169 143 150 167 159 134 133 102 105 119 128 +96 76 116 105 97 70 85 107 104 172 170 125 +150 175 154 145 124 109 126 139 141 166 182 178 +165 210 192 165 123 119 146 168 150 149 147 148 +191 210 180 164 185 196 188 187 199 202 198 206 +184 178 202 199 160 168 207 188 151 170 200 221 +190 144 144 125 127 80 140 134 78 79 82 120 +188 171 120 107 167 164 148 63 42 52 108 179 +147 49 56 105 139 92 93 89 85 109 129 123 +118 119 114 129 134 136 125 130 127 136 137 130 +139 131 133 145 141 137 133 149 155 147 154 168 +171 184 191 187 164 170 151 148 191 177 169 143 +135 151 159 145 178 175 157 167 155 151 130 130 +131 146 149 138 140 134 119 119 110 109 103 104 +117 143 157 159 158 159 150 159 153 148 155 143 +145 157 162 158 155 149 153 156 155 146 153 153 +144 144 158 162 160 162 150 157 158 159 165 146 +153 130 123 108 115 121 127 136 140 143 144 141 +150 147 137 134 146 149 136 140 145 154 143 136 +159 146 137 133 134 128 131 135 136 133 130 128 +127 130 136 130 131 125 133 131 134 139 137 129 +135 136 141 147 136 139 141 146 145 134 138 128 +137 140 138 135 139 144 135 143 137 137 138 135 +128 130 124 127 121 145 148 153 149 138 159 150 +126 129 145 137 94 59 80 121 109 98 100 87 +72 82 150 212 222 186 99 94 70 67 74 68 +115 171 199 127 62 44 46 72 106 168 207 215 +199 159 100 72 100 88 137 140 157 194 174 124 +90 86 82 66 88 78 54 68 77 87 123 209 +190 195 180 140 161 170 166 153 140 144 153 181 +179 172 176 150 171 153 150 164 175 157 158 155 +148 162 170 162 154 164 156 155 178 177 155 154 +135 121 131 145 148 156 155 146 145 141 131 126 +119 103 110 108 106 86 90 100 99 136 165 198 +207 198 177 131 126 118 106 121 111 126 126 119 +99 184 179 133 136 133 124 130 114 128 141 139 +140 134 139 140 129 133 134 136 125 127 138 135 +148 141 140 151 154 139 144 155 156 157 150 153 +166 168 155 154 +198 199 201 201 197 202 205 206 +211 209 207 200 196 190 198 207 198 202 201 204 +197 196 176 167 177 185 179 187 190 189 197 188 +187 190 191 180 182 174 170 169 172 177 199 194 +174 166 168 143 154 197 189 176 169 143 136 144 +136 148 135 117 90 82 106 105 119 172 175 123 +94 95 108 99 139 201 137 133 167 169 140 134 +108 98 127 164 180 196 182 159 209 178 164 143 +82 107 131 161 178 174 177 209 210 188 194 194 +192 154 133 127 134 133 137 150 178 187 209 157 +125 195 210 195 187 207 216 162 129 108 109 80 +67 111 181 150 150 117 184 212 189 188 180 135 +108 75 38 48 113 187 199 172 103 126 184 179 +141 95 93 94 89 99 105 118 138 110 119 124 +131 135 140 137 128 128 127 146 137 128 134 148 +160 153 137 147 154 151 157 169 159 170 178 164 +153 153 160 153 164 159 135 134 134 148 151 146 +171 154 134 148 143 149 133 133 136 139 143 144 +144 145 134 125 119 116 109 106 100 125 149 153 +158 145 146 156 148 157 159 159 158 158 160 158 +150 147 151 154 150 138 140 143 140 146 146 161 +160 146 158 156 149 148 154 150 137 124 121 119 +133 133 130 145 148 141 143 141 139 131 136 138 +141 136 153 162 148 139 136 141 143 141 138 136 +131 138 135 134 138 143 148 134 141 149 133 130 +133 143 131 134 149 145 135 139 144 136 137 144 +149 134 136 131 136 135 138 136 131 140 141 134 +135 133 127 130 130 140 144 139 131 141 115 121 +141 125 123 141 123 120 153 164 130 111 109 116 +102 60 74 108 88 87 125 104 65 57 69 108 +184 225 201 115 113 130 151 143 98 78 170 192 +105 47 34 48 54 44 73 133 192 210 192 137 +97 82 52 65 89 109 141 186 180 103 148 174 +93 99 86 58 98 105 92 145 215 198 165 178 +182 170 143 148 186 172 185 180 189 179 165 153 +177 189 160 144 150 158 172 157 154 157 176 187 +167 138 125 125 136 162 184 166 143 143 125 137 +145 145 129 127 145 156 146 143 125 110 96 126 +120 95 109 102 97 107 115 86 100 150 182 207 +205 191 151 127 111 114 127 123 109 114 200 148 +129 126 126 116 121 135 131 137 145 140 139 141 +145 143 135 133 141 138 137 140 141 140 151 158 +154 148 138 160 167 150 143 153 159 165 153 151 +189 205 202 198 204 201 205 213 215 207 207 205 +195 199 205 201 205 207 202 194 192 194 184 180 +182 179 189 187 187 190 188 191 202 195 189 184 +176 172 176 182 178 187 198 194 170 167 165 153 +170 201 199 185 149 137 113 120 150 153 107 99 +107 87 67 99 143 175 141 110 114 127 108 114 +194 194 115 120 118 126 136 145 161 170 164 175 +178 175 151 205 196 162 172 130 125 153 160 145 +150 135 192 179 134 144 159 159 157 150 150 153 +157 179 185 180 161 187 213 176 188 170 133 181 +209 217 156 95 83 89 129 153 141 195 208 177 +110 181 227 222 196 131 76 37 21 55 110 178 +192 160 105 145 177 161 118 90 89 107 135 118 +109 106 100 129 148 121 119 129 130 118 126 134 +127 129 127 136 150 151 133 135 145 137 134 145 +147 146 143 145 155 151 157 147 138 141 138 149 +151 148 156 161 161 165 153 160 150 139 140 138 +141 146 133 160 151 146 153 141 148 159 146 133 +131 120 110 110 92 96 124 154 162 164 149 150 +155 154 160 161 158 154 161 159 150 144 150 146 +136 143 133 135 145 144 147 151 153 160 157 157 +155 150 153 134 119 116 127 128 139 137 143 146 +148 138 136 147 147 138 137 144 143 130 139 143 +143 137 137 137 134 136 134 138 130 135 130 134 +133 130 131 131 129 131 138 133 135 153 131 130 +148 159 135 133 148 154 140 149 147 136 130 133 +138 138 137 138 137 145 138 135 134 135 129 135 +145 146 133 136 124 125 127 135 135 124 128 127 +114 116 154 178 147 140 118 108 123 104 97 85 +89 103 136 186 170 99 64 74 86 154 217 210 +136 72 137 154 145 171 146 197 157 83 86 77 +77 79 59 86 137 156 180 208 162 95 103 97 +114 92 56 89 146 184 150 131 164 137 171 127 +94 96 58 79 187 168 199 165 148 188 187 150 +146 146 178 178 185 197 177 143 144 161 186 179 +169 151 154 153 162 187 171 157 157 150 139 136 +119 128 133 159 153 131 143 148 155 155 146 134 +137 149 139 131 134 126 114 108 108 113 104 79 +102 103 95 106 107 95 98 99 133 177 198 198 +188 157 119 131 121 96 168 168 123 118 126 125 +128 137 129 141 135 144 141 144 154 144 144 130 +138 148 136 143 146 145 135 146 158 136 135 149 +148 148 146 156 159 164 149 151 +202 207 200 207 +208 206 209 207 206 207 209 202 207 206 208 211 +207 196 201 195 195 197 192 187 188 190 184 187 +191 177 195 192 201 205 198 186 186 179 179 184 +189 189 189 184 167 175 166 159 188 210 199 169 +162 153 133 133 134 123 113 114 89 90 107 113 +135 157 138 133 118 107 107 151 212 160 105 117 +153 164 168 176 157 135 118 147 154 133 199 204 +134 134 135 111 124 106 80 106 118 180 170 123 +128 118 124 162 164 160 155 169 178 161 177 168 +146 207 219 213 161 139 170 213 207 135 97 116 +139 176 174 154 215 190 109 146 205 215 195 159 +90 76 96 109 145 192 191 154 107 147 139 123 +90 52 45 55 87 95 114 94 86 125 117 115 +106 100 108 121 120 123 138 148 139 128 129 135 +145 150 138 149 143 138 136 140 158 148 151 144 +143 161 194 172 146 135 150 149 154 148 139 168 +166 147 141 149 140 134 161 165 136 141 149 148 +144 148 159 168 171 156 137 129 134 129 121 116 +108 105 97 116 147 144 154 159 143 157 160 147 +153 145 164 161 157 140 143 139 138 148 141 144 +154 154 146 156 151 151 144 154 148 136 143 124 +116 119 126 135 143 158 148 165 154 151 147 153 +135 144 150 161 158 141 139 147 157 143 138 138 +138 144 138 141 140 137 131 135 138 127 134 134 +128 131 135 138 129 134 133 127 125 130 137 135 +140 139 143 136 135 130 134 134 137 144 138 139 +135 140 135 135 133 134 129 140 153 146 124 138 +124 114 100 126 143 161 164 141 96 95 109 129 +124 114 143 151 114 92 92 77 70 103 104 168 +213 162 88 46 43 54 124 207 210 153 64 59 +93 133 141 177 196 160 111 83 56 66 117 87 +67 115 139 160 194 190 135 86 75 72 84 66 +68 88 154 179 157 188 167 157 119 79 89 64 +172 170 128 206 190 127 162 191 176 154 139 140 +170 205 196 155 153 178 185 196 181 170 172 181 +175 164 155 155 156 154 144 138 137 134 133 145 +150 166 174 154 162 176 172 159 150 160 141 139 +129 139 143 126 127 116 120 120 100 114 117 109 +111 110 123 106 99 100 97 108 141 160 161 154 +140 120 130 167 127 128 129 136 126 138 143 139 +143 140 137 144 149 147 137 133 129 133 134 129 +148 155 151 153 146 146 139 161 155 148 150 159 +167 160 144 158 +197 207 210 208 207 212 208 205 +205 208 206 208 206 200 205 207 202 198 191 194 +198 185 180 181 189 187 188 188 188 181 191 195 +199 204 201 197 188 172 181 186 182 187 197 182 +164 171 178 177 196 204 172 162 176 158 145 145 +151 130 116 106 107 124 124 115 103 118 151 128 +85 94 125 189 209 147 136 159 158 145 143 129 +98 99 136 138 143 185 211 159 149 131 145 155 +130 113 108 145 188 189 168 181 194 191 182 170 +150 140 138 150 167 172 154 134 184 198 219 168 +144 172 217 202 137 141 184 191 160 164 160 188 +202 139 158 207 204 192 151 135 138 113 158 198 +201 154 135 169 180 153 93 70 43 35 58 77 +105 89 100 133 149 129 104 120 134 113 108 118 +126 138 130 138 137 129 145 140 134 141 134 143 +147 144 137 140 145 148 135 133 130 135 153 147 +145 148 175 170 148 154 147 143 140 137 136 147 +134 141 156 156 143 139 149 150 145 139 143 145 +146 140 136 140 138 128 119 111 109 99 98 93 +124 145 151 149 149 157 148 146 146 144 149 160 +158 149 160 144 140 153 147 148 153 143 146 150 +153 160 158 160 150 137 111 110 125 129 130 139 +144 134 133 150 151 177 159 158 148 157 157 146 +160 150 140 141 143 134 149 144 140 140 135 147 +157 149 162 154 143 125 126 137 136 134 136 138 +134 135 133 148 136 135 136 130 136 138 135 137 +133 130 130 140 131 140 141 138 130 134 135 129 +131 137 128 144 136 127 137 133 131 134 127 126 +128 161 175 161 128 116 97 108 97 139 154 108 +104 129 129 99 82 100 96 107 200 181 146 95 +45 33 60 145 194 212 182 109 85 92 83 102 +157 174 104 97 105 88 88 84 43 37 49 104 +140 160 196 154 83 51 95 114 99 67 84 87 +161 190 207 175 154 179 125 75 100 185 138 134 +200 192 153 180 206 210 191 176 148 140 186 190 +171 164 151 151 189 182 180 174 174 171 154 164 +160 159 168 165 165 172 171 159 151 149 156 164 +156 155 145 143 148 150 145 133 139 125 123 137 +139 117 126 109 109 96 118 100 103 124 124 133 +121 111 109 94 97 90 110 116 128 130 116 159 +135 115 128 123 137 136 134 143 150 150 148 141 +146 151 139 134 133 133 147 143 139 151 151 147 +160 157 154 156 157 144 161 166 157 153 154 149 +201 209 208 210 209 208 206 200 202 202 207 202 +198 202 206 196 188 192 188 194 189 179 174 177 +188 194 187 179 181 178 184 202 206 202 195 189 +182 178 177 177 182 187 187 180 170 169 178 190 +200 190 179 162 154 160 148 156 153 145 119 121 +107 118 116 110 93 109 128 86 72 96 129 208 +178 138 129 125 99 120 135 116 106 124 116 120 +169 208 153 143 128 164 200 192 179 158 146 168 +160 145 164 172 162 167 189 199 201 196 198 200 +198 195 166 176 215 218 180 149 175 222 198 146 +170 191 171 181 202 184 153 161 157 174 210 217 +218 213 180 129 130 184 217 198 189 206 182 146 +75 77 63 68 48 42 34 41 67 88 166 165 +104 89 99 113 104 105 97 114 129 128 140 131 +125 121 127 129 150 150 134 138 159 157 144 151 +148 140 147 137 146 164 128 139 154 147 160 169 +153 165 158 139 139 135 140 141 144 164 158 145 +134 136 141 138 136 141 134 146 137 131 134 137 +137 135 124 117 114 114 103 97 119 139 144 155 +157 162 155 148 144 150 155 144 145 145 154 151 +141 149 144 146 147 143 158 156 146 154 146 161 +137 123 113 111 129 135 138 147 157 145 148 151 +160 180 162 144 140 162 155 140 162 166 149 162 +171 156 154 147 138 140 141 146 154 147 153 148 +146 137 143 141 144 135 137 137 134 133 131 133 +130 138 130 130 130 133 131 133 134 137 135 139 +138 136 136 136 129 134 130 130 127 127 124 139 +140 128 128 118 107 115 117 123 120 110 135 157 +145 143 137 128 114 116 127 114 129 175 180 121 +60 76 89 100 185 186 127 138 109 62 54 85 +92 160 206 185 109 108 118 92 118 187 145 96 +92 68 74 64 73 78 58 55 93 119 147 180 +174 133 74 68 129 157 94 64 67 109 194 217 +186 156 171 128 85 179 127 86 116 201 189 147 +167 158 188 204 205 200 195 181 192 189 167 170 +190 202 159 143 148 164 178 174 172 169 162 161 +158 149 131 121 125 153 180 166 143 158 149 138 +143 164 164 161 155 146 147 135 141 148 134 133 +131 136 113 123 124 124 133 134 119 118 104 108 +114 95 98 120 121 123 129 141 178 180 161 128 +129 124 134 148 147 150 150 147 140 148 155 147 +137 140 138 144 147 146 149 140 156 153 150 161 +153 156 153 153 165 157 156 155 +210 212 210 211 +209 208 206 195 202 202 201 209 212 205 192 180 +174 189 192 192 192 188 177 176 190 189 180 190 +178 177 205 202 204 204 197 190 185 185 179 186 +189 187 189 185 179 171 172 181 195 189 187 181 +161 175 175 159 156 143 135 108 86 110 125 103 +95 110 107 74 72 80 158 210 162 144 138 107 +102 111 134 134 120 135 136 131 192 171 138 135 +150 206 207 177 175 157 154 185 197 190 177 159 +136 148 176 190 185 195 202 195 185 184 171 221 +226 213 157 164 221 213 182 194 191 184 192 170 +124 121 194 187 180 217 215 212 165 85 78 172 +211 188 158 178 165 120 113 158 73 98 69 62 +73 53 51 66 87 187 170 117 93 110 104 98 +107 104 100 117 120 136 129 126 138 159 141 135 +138 146 151 131 138 136 130 138 137 144 140 136 +141 149 134 135 146 156 156 144 138 131 145 143 +137 146 154 155 134 153 141 134 135 137 135 136 +146 136 131 134 150 135 136 130 139 139 139 123 +118 110 108 88 93 110 154 161 154 160 156 153 +147 155 153 151 165 164 156 156 151 159 148 140 +147 155 154 149 153 148 140 135 123 124 124 125 +140 148 153 149 161 146 162 166 147 170 153 137 +139 149 150 143 137 139 146 151 150 140 138 144 +144 135 135 134 139 131 133 129 133 139 146 139 +129 128 126 128 135 138 138 137 134 136 136 131 +134 136 139 133 134 134 137 141 138 141 136 135 +138 138 135 127 127 131 140 150 141 134 126 125 +105 105 120 124 136 125 103 110 141 147 126 121 +93 88 119 120 110 166 168 161 140 93 84 83 +124 168 115 64 80 98 79 59 74 89 139 198 +200 145 76 60 83 171 188 131 98 117 95 68 +89 92 77 76 67 106 135 135 175 199 190 165 +166 191 135 127 90 72 78 162 210 201 151 181 +176 164 171 109 92 138 205 179 164 166 178 191 +202 181 175 204 200 201 206 187 164 171 204 198 +182 174 153 153 151 150 159 164 157 159 146 156 +166 154 160 161 148 144 145 167 160 160 160 162 +169 172 179 179 171 167 172 180 169 165 169 164 +150 138 136 136 130 127 117 120 104 107 113 107 +118 125 108 113 148 165 195 202 189 148 143 134 +138 140 154 146 140 156 149 147 137 144 149 145 +150 158 150 154 146 161 161 166 159 145 156 164 +155 159 166 158 +210 211 210 202 205 191 190 197 +202 200 190 204 207 196 182 178 192 200 190 195 +194 189 179 190 190 180 175 188 190 192 202 205 +194 182 186 184 176 185 188 189 186 194 181 185 +176 161 170 190 200 202 188 166 162 170 181 169 +162 143 130 118 90 106 124 106 78 88 96 62 +88 108 192 200 169 156 141 108 106 131 133 125 +119 124 110 194 202 177 179 159 180 211 166 141 +124 119 143 169 146 165 165 136 143 176 184 171 +174 185 178 164 174 156 198 222 180 201 184 222 +226 202 199 186 206 195 147 134 147 196 211 211 +218 190 191 140 77 148 209 205 140 106 102 75 +131 199 194 135 60 49 39 97 96 76 48 44 +80 126 107 107 120 123 111 102 105 115 119 100 +111 115 119 125 133 154 135 125 130 127 146 140 +134 134 136 143 150 150 143 136 131 138 144 137 +140 146 148 166 136 134 141 147 134 143 162 149 +151 155 154 139 154 141 138 147 159 149 136 139 +157 136 138 133 128 134 137 127 123 117 118 104 +107 136 147 147 147 144 151 164 151 158 149 156 +170 170 164 155 155 162 158 157 151 149 160 166 +159 156 136 127 126 128 129 137 149 147 139 137 +149 149 153 153 149 145 149 155 141 156 159 150 +155 140 134 146 144 146 144 138 145 157 148 138 +143 139 137 143 136 137 134 137 139 135 127 126 +134 140 156 144 134 135 138 129 139 149 151 136 +135 130 134 133 133 130 133 134 133 133 130 130 +135 156 179 162 129 126 133 125 117 116 123 131 +124 120 100 96 134 110 90 96 99 118 115 159 +145 107 146 143 117 102 110 119 144 186 138 93 +66 58 94 110 73 115 127 128 189 211 151 65 +57 88 200 170 108 92 97 116 77 126 99 56 +111 63 104 115 149 188 202 199 174 198 181 107 +123 124 102 78 134 207 210 187 162 205 204 155 +131 120 144 209 204 185 165 162 135 194 189 161 +162 165 178 201 211 212 201 207 178 164 147 146 +161 165 166 169 172 175 190 177 175 159 160 172 +159 155 182 184 182 185 179 172 172 165 168 172 +154 140 139 140 138 133 134 150 150 145 144 143 +125 126 131 106 118 118 113 121 109 128 121 115 +147 150 116 135 185 201 200 166 137 145 145 141 +146 150 155 141 140 140 137 149 149 153 149 140 +156 153 168 169 166 155 157 162 159 153 157 161 +210 207 195 206 204 197 199 201 206 194 191 196 +190 172 175 194 198 196 202 201 196 189 185 194 +192 189 186 189 196 182 198 194 197 190 185 187 +180 179 182 197 199 192 186 187 170 151 161 190 +202 185 168 159 167 156 154 168 157 143 166 151 +94 117 128 121 96 79 84 76 99 158 207 180 +165 157 129 113 137 133 125 146 140 127 169 209 +171 166 160 130 176 195 143 144 177 172 158 129 +108 153 140 117 146 172 158 133 164 165 144 156 +140 155 210 185 174 218 222 206 166 191 191 176 +168 184 208 213 211 219 181 186 196 178 153 110 +195 209 178 181 118 102 162 194 192 170 128 120 +77 49 58 75 55 42 35 32 65 69 116 141 +123 113 106 95 95 102 109 136 118 115 120 121 +127 125 127 137 140 130 143 149 140 148 139 154 +147 146 144 139 131 133 138 133 140 155 148 147 +143 137 131 131 131 141 150 128 127 134 136 137 +156 144 146 139 140 136 135 147 146 139 147 148 +147 144 151 141 133 137 126 126 125 144 156 158 +143 145 153 154 155 145 155 170 170 169 168 172 +175 180 170 165 174 172 170 165 161 148 138 121 +116 121 130 140 137 139 129 128 141 140 145 145 +149 145 148 146 144 185 161 148 154 143 135 144 +147 137 137 139 139 134 137 139 149 139 141 136 +130 128 129 135 143 143 149 162 138 134 140 136 +137 131 136 144 151 158 160 144 136 138 143 131 +134 138 138 137 131 135 136 134 149 181 192 166 +131 128 134 136 140 149 153 143 148 121 108 131 +109 106 89 89 99 95 110 133 148 117 85 128 +99 93 89 83 150 138 110 74 53 63 70 80 +106 92 76 93 138 200 211 174 99 92 176 194 +134 96 125 158 143 90 83 63 95 149 149 99 +94 105 158 175 200 188 206 188 149 133 165 155 +96 105 194 220 174 128 200 166 106 119 143 158 +200 176 138 170 182 168 198 211 196 170 148 174 +182 186 205 213 222 200 178 175 180 179 182 189 +188 188 195 177 169 166 169 176 182 185 175 170 +143 144 144 140 144 133 143 133 139 137 121 124 +124 120 116 124 126 126 138 149 146 130 108 115 +104 105 124 127 115 115 130 113 143 169 120 133 +133 128 162 196 200 166 148 133 140 159 150 155 +148 147 140 130 141 153 156 144 161 172 170 172 +169 157 160 165 159 143 144 157 +201 209 207 195 +195 200 201 204 201 191 184 184 185 182 191 196 +197 198 198 200 201 188 188 191 194 181 182 190 +179 184 194 192 197 192 192 185 180 178 186 199 +202 201 197 178 169 161 160 189 194 181 172 162 +150 151 165 153 146 170 191 159 121 147 162 108 +89 102 82 83 106 189 192 174 171 159 146 144 +137 123 126 147 134 174 210 162 162 148 129 107 +145 144 138 174 202 156 139 125 150 162 158 174 +186 192 168 154 169 148 155 147 140 188 198 188 +196 223 206 179 207 205 184 167 188 207 210 184 +205 190 162 190 165 174 195 215 195 140 128 194 +169 194 192 178 157 83 52 52 45 39 63 92 +95 52 100 179 188 121 133 130 119 109 110 137 +118 155 197 206 168 129 126 126 131 125 133 151 +149 135 133 136 140 136 140 153 144 144 149 144 +146 138 143 128 133 145 133 135 131 125 134 135 +130 136 138 147 133 134 135 136 133 131 135 148 +136 136 141 127 139 130 146 149 147 149 147 133 +129 134 130 133 131 143 164 159 157 151 150 149 +149 157 160 169 166 155 175 171 181 181 160 171 +174 167 156 157 159 153 131 126 124 129 143 154 +137 134 133 145 157 144 159 157 151 139 146 140 +138 171 159 159 150 134 134 138 144 151 164 151 +140 153 140 137 147 133 135 159 159 135 143 141 +137 144 141 147 155 140 145 153 146 144 131 141 +149 135 128 129 129 134 139 131 127 134 135 130 +135 134 130 130 136 143 143 150 156 135 123 125 +131 158 160 143 155 121 107 116 100 100 134 176 +127 103 123 117 154 128 77 74 79 79 63 92 +168 155 177 111 64 47 56 65 52 56 66 41 +60 135 211 227 196 138 137 216 207 156 115 114 +146 108 77 66 78 70 123 157 153 96 97 108 +166 197 217 219 150 119 133 159 145 95 94 180 +208 178 196 206 187 137 119 104 165 208 170 145 +197 208 188 171 197 209 170 149 170 171 148 160 +185 199 207 204 206 202 186 154 164 170 157 170 +178 181 184 186 176 167 159 135 141 126 154 147 +143 137 141 135 130 136 136 128 134 123 127 126 +110 128 120 115 131 139 127 121 113 111 115 117 +124 133 121 127 117 164 130 121 116 131 133 115 +148 188 186 162 148 148 157 144 141 147 147 139 +145 148 145 153 166 175 168 174 170 150 151 162 +155 150 145 156 +206 204 200 196 199 208 206 197 +188 184 185 175 182 192 198 194 197 198 204 199 +189 186 190 189 184 191 192 194 188 181 194 200 +199 194 188 177 179 186 194 192 192 188 187 187 +176 157 162 170 178 169 158 155 162 182 176 148 +158 174 176 156 151 155 140 107 89 83 82 100 +144 210 187 185 180 174 153 148 125 137 138 141 +150 207 168 131 133 105 89 85 100 107 120 202 +178 135 121 106 119 158 189 194 189 172 159 147 +159 160 170 181 216 211 201 189 215 219 204 221 +215 192 184 194 199 166 150 141 206 162 194 204 +206 219 195 150 99 70 144 220 200 139 170 205 +166 84 45 56 59 53 54 54 88 172 212 176 +107 66 85 126 130 90 103 166 212 205 167 130 +134 118 130 127 126 125 125 131 131 131 129 147 +143 131 139 137 130 133 153 146 137 143 133 125 +128 127 123 130 131 135 139 141 128 129 137 144 +129 129 127 141 138 138 150 147 151 136 131 137 +149 146 141 144 135 133 145 135 134 139 150 154 +136 135 154 160 155 157 162 170 174 161 161 165 +160 166 178 180 169 167 165 170 159 159 151 149 +145 138 124 128 133 137 141 143 135 145 149 157 +164 149 171 151 137 133 135 141 147 149 138 139 +143 150 134 140 140 147 168 151 150 174 162 131 +133 143 137 156 158 141 175 172 145 143 131 131 +149 151 144 139 138 136 136 144 141 147 149 133 +133 141 138 137 139 133 137 134 134 135 134 135 +133 137 135 133 158 184 139 118 137 126 114 134 +137 114 119 104 84 102 150 180 128 108 119 149 +157 128 117 87 63 65 70 68 67 114 202 218 +194 131 77 42 52 80 109 116 109 70 146 221 +228 208 170 200 179 200 199 117 106 93 85 66 +100 135 143 171 129 167 164 129 126 170 192 216 +201 118 90 87 99 108 90 88 172 219 217 189 +171 188 144 120 108 178 210 164 146 170 175 125 +123 156 206 194 165 164 179 176 159 165 196 192 +189 198 185 198 204 201 194 197 195 192 190 198 +197 188 177 169 181 171 170 170 161 140 153 149 +141 129 137 136 134 127 128 131 128 121 117 124 +121 129 123 126 125 115 116 123 117 117 131 124 +118 147 134 134 137 124 127 133 121 130 160 191 +196 170 153 150 144 139 149 146 148 156 147 143 +168 175 172 174 165 153 145 162 167 158 155 156 +205 198 200 206 209 211 201 189 189 177 178 190 +191 187 194 196 192 209 207 195 199 194 190 197 +189 189 196 191 184 192 200 196 199 190 178 180 +190 195 186 177 188 191 196 195 174 172 170 172 +180 164 174 168 172 180 186 176 175 185 177 162 +146 138 118 80 98 75 73 85 167 180 190 185 +174 178 143 140 126 120 131 126 184 194 125 108 +121 128 118 98 97 92 162 206 147 161 137 116 +124 159 195 184 178 169 162 164 185 198 199 222 +230 219 189 207 219 221 223 194 179 176 175 171 +166 175 176 190 200 192 187 199 207 141 82 102 +108 174 220 206 149 146 195 180 110 45 29 41 +69 54 86 176 212 204 138 86 83 108 131 117 +105 162 211 218 192 138 113 110 124 133 126 129 +138 130 131 137 138 135 133 127 128 129 133 133 +133 130 141 141 133 139 135 136 137 133 137 167 +140 136 133 143 138 146 146 145 136 134 126 131 +141 144 136 131 154 153 149 135 141 147 136 139 +134 136 137 140 138 135 155 124 125 146 164 150 +154 151 157 162 162 165 167 168 161 171 189 195 +164 170 167 170 156 161 153 151 141 133 135 140 +138 148 148 146 143 154 153 145 148 135 149 141 +131 136 148 138 147 151 162 148 146 153 141 151 +161 139 139 139 154 157 136 143 140 137 143 134 +126 123 145 149 144 136 141 136 171 191 151 135 +129 130 129 134 130 128 135 128 130 130 140 135 +129 136 139 131 135 135 130 129 128 128 127 124 +123 158 197 162 147 113 102 139 147 123 98 85 +79 92 174 166 133 95 73 114 139 186 172 104 +60 56 63 49 82 70 134 187 204 215 197 127 +43 35 53 64 103 109 118 145 211 217 196 207 +208 175 201 189 121 80 68 60 54 111 167 199 +185 135 153 171 167 134 175 186 212 178 104 85 +85 84 106 128 102 167 216 212 137 141 200 178 +151 144 191 205 153 124 143 162 143 145 171 201 +202 185 177 190 188 181 185 197 197 185 178 186 +190 201 205 209 208 209 196 186 182 179 180 181 +186 192 187 179 164 156 158 151 138 146 136 136 +127 116 124 121 120 125 127 121 126 131 123 117 +109 108 121 117 118 124 128 118 120 157 143 138 +134 133 136 127 130 120 138 127 160 205 197 164 +146 145 147 137 157 155 137 139 150 168 174 176 +171 158 153 146 165 161 155 153 +204 207 210 210 +204 197 196 192 187 190 188 190 194 191 198 199 +206 205 204 201 194 185 195 197 200 196 191 190 +192 198 206 198 192 176 175 176 179 182 178 185 +200 208 202 199 179 172 171 172 182 187 187 172 +176 187 181 171 178 170 151 156 160 143 107 105 +108 92 80 110 181 184 186 187 194 168 137 121 +123 135 130 172 211 164 119 105 111 105 120 93 +85 154 202 171 168 182 141 115 127 153 180 160 +158 166 177 197 213 212 219 233 215 160 192 230 +213 208 202 180 170 190 208 211 196 177 175 215 +178 195 211 199 108 66 99 159 207 209 202 182 +179 169 185 111 82 53 55 64 70 113 191 213 +180 83 75 106 137 139 98 144 202 222 198 158 +119 109 116 129 125 137 146 136 128 128 134 137 +144 141 139 143 139 140 134 135 133 136 143 141 +130 128 126 130 135 134 127 144 138 141 131 143 +134 129 126 135 135 148 136 128 136 136 137 136 +143 153 164 147 144 141 128 141 136 130 146 141 +137 127 131 141 170 178 160 161 157 155 164 159 +156 155 151 157 159 149 156 165 155 150 160 167 +165 164 161 149 139 134 135 135 138 140 144 134 +150 144 146 154 144 162 172 147 141 148 160 151 +137 148 157 154 147 147 139 149 150 146 143 147 +160 154 150 169 165 146 141 151 148 129 143 136 +139 134 134 139 131 157 158 137 138 141 130 133 +137 143 129 131 130 129 130 131 136 135 127 129 +135 137 125 131 127 127 118 116 110 110 177 207 +184 123 103 109 111 121 134 136 106 84 117 172 +179 128 92 96 113 176 218 179 98 58 55 83 +84 69 78 107 84 181 225 220 179 109 41 39 +44 36 62 130 185 172 178 207 216 195 198 216 +211 164 84 57 57 62 75 165 205 192 128 116 +134 185 175 138 169 216 184 125 70 74 78 85 +111 104 181 221 216 175 168 202 182 129 123 194 +195 146 143 172 195 176 158 177 178 200 198 168 +166 176 175 172 202 208 174 161 184 175 169 190 +190 191 194 184 180 182 185 176 174 146 139 148 +147 157 169 174 181 178 160 130 130 121 116 117 +117 135 113 115 127 133 134 114 113 108 106 114 +111 133 129 128 124 161 153 123 134 138 135 136 +136 139 144 140 141 139 196 202 172 154 141 151 +158 158 140 139 143 156 166 171 160 153 156 148 +158 164 155 155 +199 202 205 201 179 185 194 189 +190 192 192 189 180 190 198 201 199 204 196 189 +187 190 196 200 202 195 192 199 205 208 207 200 +188 172 160 172 186 188 181 188 202 200 198 197 +177 172 175 170 180 187 188 195 195 190 167 161 +168 189 150 150 166 154 114 116 117 89 90 127 +178 194 197 187 171 136 119 140 153 144 148 215 +176 133 104 102 117 128 131 111 86 190 199 169 +189 157 139 121 121 184 175 156 170 172 199 199 +205 207 232 221 196 200 228 217 201 186 190 192 +189 169 146 155 166 171 199 188 191 225 213 160 +129 166 202 216 181 171 179 199 158 176 119 73 +62 45 55 140 197 218 216 194 123 78 156 178 +155 123 190 222 215 159 100 96 107 118 124 121 +126 135 141 136 140 143 146 140 141 141 140 147 +135 130 133 136 130 133 135 143 145 129 120 124 +126 128 128 130 134 133 125 125 128 139 136 128 +129 126 134 127 130 143 146 153 148 137 144 145 +147 144 134 149 137 144 138 131 126 143 156 179 +175 140 143 150 140 149 149 149 151 153 159 167 +156 153 149 151 145 143 157 156 160 159 148 145 +136 139 145 141 145 136 135 143 157 147 161 182 +150 143 147 154 144 146 153 156 147 149 145 137 +147 167 143 164 162 138 146 146 153 154 143 150 +160 169 147 148 154 154 150 144 135 130 134 131 +138 143 141 134 133 136 134 135 134 128 128 136 +133 129 131 134 130 133 133 130 135 129 126 128 +137 184 182 120 113 105 119 184 206 162 92 86 +86 106 106 126 154 126 89 114 179 188 128 88 +92 89 147 208 202 135 60 78 95 66 74 117 +84 66 143 202 218 205 135 49 52 47 78 44 +57 76 171 219 221 199 166 167 210 197 202 186 +156 127 102 94 170 201 186 156 150 160 168 196 +171 191 223 208 165 130 85 78 79 97 149 202 +198 210 176 147 188 168 125 133 208 197 191 207 +191 202 186 154 143 131 182 209 201 187 181 176 +184 188 200 170 145 145 143 156 178 181 187 190 +178 168 153 159 158 162 150 133 137 149 157 166 +167 161 153 143 130 129 118 115 126 119 124 125 +125 129 136 131 118 115 118 108 116 116 125 128 +114 164 180 140 129 137 135 150 135 126 151 140 +143 155 140 172 205 190 151 151 153 166 155 140 +155 168 169 174 162 150 148 156 151 150 154 149 +206 201 195 178 182 195 191 196 194 186 189 192 +188 198 202 202 196 195 188 180 187 187 199 199 +204 206 208 205 202 207 200 189 190 172 181 188 +191 187 176 180 186 195 196 188 176 169 167 178 +175 186 188 190 199 187 170 178 182 175 139 145 +146 121 119 129 114 103 96 158 172 199 192 171 +140 119 161 158 138 138 185 199 159 170 115 125 +137 145 136 104 139 209 155 148 140 129 139 128 +144 190 181 187 202 204 215 201 198 222 231 199 +210 227 190 207 206 174 140 115 98 137 179 180 +148 130 197 197 218 218 174 125 153 205 184 159 +121 177 186 213 204 133 84 74 75 129 191 219 +223 222 185 108 82 119 151 124 172 218 229 209 +137 80 75 88 98 103 103 115 135 133 133 125 +124 138 143 130 147 140 130 133 135 138 134 134 +136 137 134 137 137 136 130 125 140 139 141 133 +136 134 136 135 129 140 138 137 143 133 130 138 +146 156 148 154 144 136 140 144 146 140 153 156 +157 148 133 131 138 160 164 147 121 123 125 140 +143 146 146 145 149 150 164 175 170 158 160 148 +154 161 154 165 162 155 141 135 138 135 138 145 +133 137 140 150 161 146 151 158 145 145 144 138 +151 166 156 135 138 153 150 153 149 145 139 145 +138 135 140 140 144 141 143 134 140 166 156 141 +149 141 144 138 139 130 136 138 135 141 134 131 +135 139 128 135 135 131 129 134 127 136 129 134 +134 138 133 131 129 131 125 130 147 186 208 166 +124 120 93 93 174 209 167 113 118 82 58 64 +100 126 136 99 93 180 179 108 84 86 77 94 +182 211 157 54 65 55 56 109 77 66 49 96 +181 206 201 161 70 53 35 44 43 66 87 162 +205 176 128 131 178 177 186 178 155 174 177 180 +189 197 200 202 198 151 96 105 148 169 218 220 +174 187 164 145 164 157 149 177 206 177 196 171 +126 178 172 159 174 211 200 158 128 143 189 187 +167 170 191 191 205 209 200 179 181 184 196 187 +153 153 164 169 191 194 195 198 174 137 124 113 +129 139 147 162 190 179 178 181 156 145 149 130 +135 133 131 126 124 130 128 128 124 128 123 116 +123 126 121 124 123 121 127 130 123 153 192 150 +133 119 138 131 146 135 135 141 137 149 151 145 +146 190 204 159 155 162 148 153 141 155 168 172 +160 150 155 156 159 157 150 158 +204 192 184 181 +185 192 194 191 188 191 197 192 201 201 198 201 +200 197 196 187 186 200 197 191 207 204 205 204 +202 204 206 202 188 185 185 185 186 168 155 180 +192 195 192 184 166 174 172 162 167 179 178 189 +191 180 188 181 179 157 137 140 117 105 102 105 +115 106 153 180 186 192 181 154 126 137 180 165 +138 160 196 159 174 151 115 140 150 153 156 111 +184 190 118 123 140 140 158 110 160 195 189 194 +204 211 201 182 227 230 217 202 225 213 186 209 +188 131 86 147 185 206 202 195 175 156 222 227 +204 188 137 175 184 168 136 110 123 191 180 218 +147 117 58 153 196 223 233 230 222 153 89 57 +75 110 124 201 229 226 180 92 78 93 115 118 +118 111 120 114 117 140 159 151 131 127 123 129 +135 141 141 133 135 145 143 141 140 133 129 128 +133 129 121 121 125 130 126 133 134 127 126 126 +131 148 150 136 148 131 135 131 136 144 146 135 +146 131 134 141 137 135 143 135 146 147 133 151 +150 140 121 120 119 119 130 146 139 150 155 156 +172 166 162 169 162 162 164 176 164 160 150 149 +158 153 127 124 130 137 136 141 145 139 138 150 +140 133 143 140 141 138 134 155 160 159 149 147 +155 154 156 165 156 158 149 140 139 131 138 147 +139 140 141 130 131 137 130 128 137 136 144 158 +150 161 204 177 150 155 145 128 136 128 125 129 +138 129 127 134 129 134 134 126 127 130 133 131 +131 130 127 140 140 139 166 199 170 114 90 64 +85 158 206 189 158 120 107 89 96 124 135 117 +125 111 145 176 136 79 74 69 76 167 215 179 +73 41 72 87 109 89 52 54 53 145 192 213 +197 111 46 39 89 58 51 102 188 215 179 117 +62 155 136 166 172 106 95 114 130 166 190 196 +212 213 174 134 115 84 144 206 192 114 119 128 +104 149 175 174 187 202 147 202 204 188 209 185 +143 166 206 179 154 143 151 195 209 182 179 172 +159 188 211 198 177 165 154 196 196 171 182 195 +200 199 181 168 190 185 153 157 162 171 171 166 +158 153 129 127 137 127 140 133 129 128 129 124 +129 131 123 138 137 121 131 125 127 128 138 134 +121 126 123 126 115 138 199 145 128 137 131 141 +141 139 141 137 147 149 146 147 138 141 180 206 +175 157 153 150 158 149 164 158 146 155 151 166 +157 150 155 154 +199 198 182 182 186 190 192 186 +189 192 199 200 195 198 202 198 194 194 192 190 +192 195 194 206 210 207 205 197 197 199 200 195 +191 196 190 188 181 151 149 180 190 185 191 182 +174 181 166 168 167 161 178 191 182 181 186 185 +166 146 144 138 116 111 104 104 129 116 182 151 +164 178 175 136 126 150 160 149 133 175 179 160 +181 145 148 140 153 174 146 151 196 144 117 144 +140 172 176 156 181 179 186 201 205 175 151 198 +225 213 182 208 211 187 182 181 198 186 191 194 +182 164 158 156 127 191 227 191 200 205 189 174 +187 135 83 107 134 196 201 150 108 77 156 221 +229 221 228 210 123 64 54 84 97 160 217 226 +199 115 85 87 102 144 148 90 82 90 118 137 +124 115 124 128 130 123 125 127 129 145 150 130 +136 138 138 137 140 137 134 134 129 139 135 129 +141 138 131 131 128 128 139 134 134 145 138 129 +130 136 137 130 128 133 144 148 143 143 145 136 +144 136 143 131 135 143 135 129 137 124 118 119 +118 118 125 137 136 147 143 141 154 153 139 150 +150 149 150 155 154 149 153 144 138 136 133 137 +135 136 139 138 136 137 158 154 137 129 135 147 +140 137 134 137 148 151 137 139 149 151 136 139 +139 137 136 140 141 139 139 144 145 148 143 137 +136 134 130 130 137 127 134 143 144 150 179 150 +140 143 137 136 135 128 128 131 126 131 128 127 +128 131 134 129 124 129 138 139 131 135 124 135 +143 141 119 162 201 158 115 84 63 110 215 212 +182 134 87 88 104 148 124 123 133 104 72 110 +151 136 103 93 87 80 158 215 202 136 137 147 +170 144 76 53 38 52 103 168 204 196 98 48 +68 131 77 53 164 200 171 145 111 139 169 141 +184 172 103 85 99 116 140 133 156 184 204 205 +164 168 147 164 220 190 97 105 129 109 114 116 +150 199 209 187 206 210 167 188 177 149 182 207 +165 151 148 157 187 218 204 188 191 168 172 197 +198 166 160 156 204 204 187 179 174 154 158 151 +154 186 201 186 186 189 174 151 145 125 121 115 +117 111 127 139 126 125 123 119 129 128 127 131 +141 129 116 124 117 136 143 127 135 121 133 125 +119 124 197 154 131 136 145 143 150 144 151 150 +148 148 136 145 137 146 144 165 197 182 159 145 +150 155 157 160 151 153 156 155 145 146 159 156 +198 180 175 187 182 184 184 184 185 197 195 188 +199 202 199 195 186 189 187 188 197 191 204 206 +206 205 201 199 202 200 196 188 191 200 201 182 +170 164 177 191 192 185 190 186 180 171 168 170 +170 170 186 189 187 191 166 168 159 148 156 161 +131 126 114 118 126 151 170 126 148 165 155 125 +135 133 148 145 153 187 164 149 157 130 146 150 +174 154 114 133 127 113 111 146 157 185 161 161 +182 196 205 196 177 177 202 223 222 188 205 223 +187 170 198 186 206 204 186 188 185 148 135 137 +206 223 192 182 219 175 108 150 116 67 86 115 +153 218 198 157 156 206 229 228 228 220 186 106 +86 64 70 134 199 223 208 149 92 79 75 88 +127 121 135 131 114 113 124 143 114 115 116 120 +120 125 123 124 136 139 133 131 138 130 134 143 +133 135 138 135 147 147 134 133 148 135 134 130 +125 126 133 139 128 131 131 121 121 125 126 123 +128 130 135 141 145 133 127 144 140 143 136 135 +130 131 139 128 126 128 118 123 126 125 126 130 +146 150 145 144 144 150 157 139 143 147 138 150 +147 151 136 140 131 135 127 135 138 137 150 156 +137 135 157 138 137 134 131 135 144 130 128 138 +158 161 162 156 158 149 135 134 137 133 133 137 +149 157 150 157 148 144 140 148 150 149 136 137 +133 134 137 138 129 127 130 128 131 127 133 136 +133 133 133 140 136 136 136 134 125 129 135 134 +144 156 141 129 133 140 140 136 124 136 134 107 +179 210 151 98 80 84 178 228 221 176 105 79 +78 102 108 160 166 103 85 70 87 125 108 82 +68 72 65 109 177 194 178 148 149 213 178 84 +56 46 47 70 145 182 184 131 54 62 85 94 +98 191 169 159 150 141 186 145 131 191 148 90 +83 95 165 111 120 119 160 172 189 149 92 106 +194 210 204 149 105 139 158 160 151 160 205 200 +160 179 206 172 186 141 124 189 209 179 180 188 +190 187 201 213 196 170 141 134 182 207 187 191 +195 206 190 171 180 184 181 177 166 176 194 197 +175 149 135 148 137 125 120 123 118 128 123 128 +128 119 118 120 121 123 127 131 134 127 126 104 +123 117 137 139 136 131 134 129 134 126 192 149 +145 134 141 147 155 147 145 157 150 140 145 157 +149 146 146 146 164 200 180 161 153 155 164 157 +156 164 160 154 151 156 155 169 +170 167 182 192 +186 181 186 184 192 204 194 195 202 200 200 188 +184 185 179 182 191 201 198 206 211 201 198 195 +201 202 195 195 196 202 192 179 165 174 191 192 +180 182 191 184 176 175 172 168 167 172 192 190 +179 170 170 148 140 148 162 151 145 126 107 121 +131 131 138 126 144 166 136 116 136 136 131 155 +171 156 153 154 162 154 158 150 160 144 127 175 +125 97 137 165 167 185 166 168 189 197 179 166 +179 208 231 222 185 171 223 206 184 188 211 162 +192 175 134 119 107 102 98 169 198 210 185 220 +205 184 177 175 157 128 131 139 192 212 174 141 +200 232 232 225 217 201 117 105 96 79 150 217 +217 187 171 129 105 78 73 77 94 140 172 131 +111 113 121 120 161 148 110 105 114 124 136 124 +128 138 133 131 135 138 141 129 128 138 130 139 +136 133 127 131 134 135 137 138 134 127 126 126 +127 135 138 138 123 130 128 127 133 136 139 149 +141 134 128 138 141 128 130 130 135 141 133 125 +129 125 125 127 131 123 125 129 133 143 139 139 +140 150 157 151 146 141 143 144 154 155 137 130 +128 124 125 130 136 137 134 143 134 128 131 136 +140 133 134 153 147 130 131 137 156 143 146 135 +141 150 145 135 136 131 134 144 141 146 153 156 +161 153 151 153 147 148 146 143 135 135 134 144 +150 136 135 136 141 137 134 130 130 134 137 136 +134 134 131 131 134 133 133 133 140 143 140 128 +129 129 130 133 129 124 123 107 94 182 190 116 +74 59 78 182 226 215 160 79 82 93 123 131 +151 162 139 97 65 64 126 167 146 97 54 72 +108 141 201 209 149 190 198 168 82 33 38 78 +116 110 144 195 158 79 58 147 169 213 211 195 +191 145 168 201 144 153 199 153 113 90 154 116 +97 107 79 118 160 188 175 93 90 186 212 202 +182 194 157 158 155 150 159 211 184 165 159 194 +186 178 148 140 195 202 171 144 153 164 161 174 +208 202 177 178 191 201 212 201 177 178 201 186 +181 185 189 200 198 184 175 166 168 144 135 129 +138 133 116 119 127 120 119 139 136 126 131 120 +131 134 124 133 138 128 140 138 116 129 129 128 +133 129 135 133 129 119 194 156 130 137 138 147 +147 146 148 143 151 149 146 157 153 150 143 149 +146 166 196 174 157 154 160 161 167 171 156 150 +147 148 164 150 +184 191 184 182 185 181 184 196 +198 191 200 201 198 198 190 180 179 179 185 198 +195 199 207 205 197 198 199 197 206 207 197 202 +198 194 180 174 167 191 206 184 191 179 178 184 +187 180 170 170 158 170 195 182 168 165 169 156 +149 145 174 161 147 111 116 146 137 126 143 143 +156 158 128 128 141 125 128 151 169 160 139 170 +166 154 147 145 128 126 164 181 162 120 158 172 +190 194 167 176 187 159 155 166 192 227 232 199 +177 208 212 191 205 202 196 105 171 157 103 100 +97 99 165 205 184 225 211 211 166 153 178 174 +181 184 164 205 212 220 206 211 229 225 228 216 +156 191 150 130 119 179 218 191 167 131 137 134 +80 68 78 123 175 181 138 105 88 90 117 145 +144 113 143 134 139 149 139 139 130 125 125 133 +129 134 136 130 128 127 124 127 128 129 128 131 +149 129 128 136 137 127 134 131 125 130 143 146 +130 126 129 126 133 134 131 136 144 135 130 136 +131 128 130 133 134 127 130 131 130 124 126 120 +127 129 125 128 150 149 140 138 141 139 150 149 +144 153 149 140 147 138 146 138 124 126 137 145 +155 146 139 139 139 136 133 137 127 127 138 155 +165 153 139 148 151 141 140 143 135 147 134 138 +145 133 134 140 134 140 134 136 135 148 146 138 +137 135 137 130 135 134 127 136 144 130 131 140 +139 136 131 131 131 129 131 128 130 135 140 137 +126 134 136 137 133 135 134 129 138 136 135 149 +131 118 121 128 98 125 200 180 96 72 69 92 +181 228 212 165 94 98 98 116 96 106 150 127 +89 105 88 88 131 136 126 85 64 97 185 215 +208 162 159 206 179 77 58 44 118 119 66 146 +206 184 116 84 177 212 210 175 202 198 145 210 +194 166 181 212 184 127 121 153 78 106 87 63 +118 178 171 180 127 120 212 194 137 162 192 178 +175 158 136 174 198 150 157 170 201 209 187 158 +160 202 198 174 167 166 155 150 164 192 211 213 +204 185 189 201 191 168 171 207 199 186 198 192 +180 171 149 125 147 144 129 128 131 126 129 124 +117 129 134 123 131 143 128 119 129 127 127 135 +139 135 129 121 120 116 124 121 131 124 133 128 +119 134 191 158 135 143 148 137 147 149 147 147 +140 154 158 156 151 148 154 139 157 162 156 180 +160 155 159 166 171 175 164 149 153 147 154 159 +200 194 186 182 184 187 189 195 207 207 196 202 +205 187 184 191 186 178 189 191 191 197 204 195 +188 196 195 205 211 206 201 201 192 191 177 177 +178 197 195 177 177 174 171 176 179 182 176 165 +171 185 180 172 166 160 158 135 143 168 174 156 +127 106 134 155 131 128 146 172 156 139 121 141 +134 127 133 149 145 129 147 181 169 155 140 138 +128 147 196 174 192 164 166 181 179 146 155 209 +197 138 154 210 229 231 208 187 207 221 204 194 +135 180 181 141 191 192 169 185 180 201 209 194 +206 212 176 186 109 117 157 186 165 116 176 187 +219 212 204 220 196 225 188 184 181 201 151 144 +195 213 182 200 170 174 168 90 68 88 162 181 +139 92 113 129 144 156 134 109 123 147 154 158 +145 130 136 148 128 124 125 131 128 129 134 127 +129 128 124 124 128 129 135 134 133 126 137 134 +130 128 126 129 128 126 138 145 139 130 134 134 +143 136 129 135 137 137 131 137 131 136 131 130 +125 121 123 123 121 125 125 129 123 118 118 121 +141 154 150 159 154 150 137 143 144 148 144 146 +141 149 144 137 120 119 129 139 137 139 137 129 +137 139 140 145 131 133 139 141 162 164 158 165 +164 154 165 158 145 140 135 137 150 151 134 137 +138 151 147 137 140 151 147 164 164 139 144 140 +153 150 136 133 131 141 134 128 135 127 131 131 +136 128 126 133 133 141 140 131 129 133 127 129 +127 128 129 140 134 131 127 130 121 108 108 120 +116 75 149 196 137 88 56 60 92 194 222 201 +147 93 70 88 79 67 92 161 144 82 63 58 +63 74 127 159 127 70 191 204 190 206 151 153 +209 188 92 59 64 115 77 59 153 207 176 159 +126 206 208 192 158 209 194 200 216 166 151 189 +200 158 137 149 72 57 52 56 68 89 171 177 +188 155 188 210 165 141 136 175 207 184 154 129 +192 192 179 185 184 209 199 164 149 164 208 201 +165 154 165 178 187 190 179 191 206 189 172 160 +194 196 187 187 206 199 159 158 160 158 160 145 +145 141 138 138 118 127 120 111 119 119 128 129 +134 146 138 137 129 129 120 123 128 126 125 126 +127 118 116 121 125 140 128 121 133 139 187 148 +137 131 136 148 133 145 149 139 145 153 155 160 +148 149 143 146 157 158 158 150 157 159 161 162 +174 172 162 160 147 141 150 156 +200 187 180 186 +191 187 194 198 201 199 200 196 188 188 197 197 +190 188 200 194 188 191 191 192 188 194 197 201 +205 204 195 197 189 185 186 181 178 192 197 188 +176 178 172 174 184 179 170 170 176 178 171 161 +160 162 146 133 144 176 165 130 109 111 133 151 +154 143 168 158 165 147 119 130 134 156 136 118 +129 155 178 186 157 137 136 137 133 186 201 171 +199 184 192 192 184 171 194 201 188 190 201 229 +227 205 189 179 220 202 155 119 98 180 167 135 +189 198 157 156 191 202 150 170 209 180 184 170 +151 169 175 139 105 158 198 201 217 208 219 194 +211 212 170 177 211 180 175 216 217 181 194 159 +157 165 95 83 151 172 160 133 78 87 135 176 +182 135 85 89 127 148 157 129 131 141 131 125 +123 125 126 133 124 127 127 130 119 126 161 157 +125 130 139 130 131 129 129 131 130 126 130 124 +124 130 133 131 136 148 131 130 138 129 133 131 +126 130 127 127 133 141 136 130 129 126 127 128 +128 134 129 127 121 119 121 130 138 147 159 151 +156 151 151 161 157 153 155 153 144 145 137 125 +121 128 138 137 143 144 139 148 145 145 144 141 +135 139 158 151 143 141 143 139 134 135 136 141 +140 137 129 137 141 135 137 139 138 151 144 137 +153 149 145 157 156 139 135 143 165 162 140 133 +135 137 136 130 131 133 135 138 130 133 136 139 +137 129 128 126 130 129 128 135 131 137 130 128 +127 137 139 133 124 121 119 130 115 98 83 185 +186 121 86 38 60 99 194 227 188 113 70 79 +136 165 130 95 145 155 126 123 85 69 106 102 +109 157 196 156 187 194 195 149 164 213 200 174 +145 106 115 65 108 160 204 165 172 204 208 207 +158 178 211 171 218 190 125 123 194 174 136 157 +92 38 64 54 51 43 45 147 185 176 184 209 +195 150 154 140 201 195 194 179 158 207 177 158 +182 184 201 197 180 177 174 213 206 194 201 202 +171 147 146 139 150 192 209 196 189 196 200 168 +157 187 180 151 154 158 151 149 150 157 143 124 +124 106 127 123 123 115 119 129 135 166 167 140 +137 118 119 121 121 119 129 140 121 127 124 108 +129 128 133 129 119 130 184 158 125 141 144 141 +148 147 145 148 147 156 158 155 154 147 137 155 +154 156 156 147 156 153 155 162 171 175 175 165 +161 155 158 157 +202 188 190 194 200 196 190 200 +198 197 202 188 181 191 199 199 191 187 195 198 +191 188 196 190 192 195 195 200 205 204 199 190 +192 196 205 187 185 198 185 171 176 181 170 179 +181 184 179 181 175 175 160 165 153 141 136 153 +162 172 148 118 100 113 133 136 160 155 176 189 +172 143 140 131 139 139 117 115 169 160 167 162 +133 121 123 134 140 206 186 160 192 171 155 158 +158 181 182 190 208 196 226 219 205 184 164 198 +197 134 131 107 131 187 129 100 174 200 138 157 +199 166 175 164 211 184 204 199 194 133 95 93 +151 182 118 209 212 211 201 177 204 171 188 178 +187 198 226 228 212 217 209 201 178 90 95 131 +167 195 171 116 136 192 167 161 128 94 82 90 +99 118 114 125 148 130 114 118 120 124 124 133 +148 176 156 129 150 189 204 162 138 138 131 136 +134 128 139 139 130 128 130 126 126 126 121 129 +131 137 139 138 127 131 135 129 129 126 129 130 +125 128 128 126 139 134 129 137 130 144 126 120 +123 120 124 126 133 137 135 146 153 148 154 156 +166 162 153 146 149 139 133 125 131 127 140 149 +137 140 137 149 147 146 139 135 131 146 155 154 +144 129 135 129 134 135 137 138 139 156 174 160 +139 144 157 138 136 139 144 143 141 137 131 133 +136 134 130 139 148 139 136 134 139 129 138 137 +133 130 133 146 129 127 143 167 135 131 123 129 +125 127 138 140 136 133 129 121 134 138 136 130 +138 156 111 100 97 89 83 148 199 155 100 95 +76 68 92 201 221 181 113 86 123 124 165 168 +146 154 175 165 157 136 68 67 45 100 176 150 +170 210 188 187 167 174 216 210 189 119 130 126 +109 153 205 204 187 198 192 205 196 127 194 199 +206 215 130 113 137 194 121 130 149 78 54 36 +47 56 48 44 136 196 191 198 213 172 127 137 +213 185 165 180 169 181 211 194 174 180 174 189 +194 148 143 201 220 197 176 165 159 172 167 160 +167 180 190 208 210 176 180 196 167 138 172 184 +160 161 160 155 157 151 153 141 124 125 124 141 +133 136 147 133 136 140 158 143 121 125 116 116 +106 137 128 125 131 109 113 108 105 124 128 125 +128 147 165 153 137 131 140 148 136 144 149 146 +147 154 149 154 156 151 153 147 156 151 154 159 +158 155 155 156 168 176 181 166 158 156 145 158 +199 188 197 195 195 196 194 202 202 198 187 187 +191 195 201 196 186 188 189 182 192 197 198 205 +204 197 201 201 197 202 199 196 199 208 206 190 +195 194 184 174 170 177 161 174 187 189 186 182 +187 178 158 160 140 135 148 178 179 162 127 113 +120 117 121 149 167 164 190 178 151 131 159 137 +147 128 106 140 187 162 155 138 128 124 135 138 +158 212 168 144 146 141 141 177 171 175 200 204 +202 226 199 156 166 156 159 213 161 124 121 100 +137 179 114 124 181 195 130 190 192 192 155 175 +201 147 192 160 127 123 114 147 194 157 172 225 +222 206 182 144 210 148 180 154 194 225 225 221 +206 174 204 205 155 136 133 178 205 153 96 166 +205 188 143 107 86 97 151 181 120 95 124 146 +128 117 120 136 120 127 118 145 157 149 134 126 +169 188 153 150 139 133 128 125 124 125 123 128 +128 125 128 131 131 130 129 131 131 130 135 140 +140 129 133 128 121 128 133 131 123 130 136 127 +136 133 130 138 137 130 130 131 126 128 130 131 +129 144 144 147 155 156 147 157 164 158 159 144 +134 130 124 123 134 135 134 139 140 141 136 138 +138 154 150 131 137 148 133 129 121 133 137 135 +129 143 155 159 149 144 158 140 130 136 140 139 +130 126 136 138 134 136 135 135 134 128 126 133 +137 143 134 134 130 130 140 133 136 139 147 158 +143 125 138 140 128 130 135 126 125 141 174 172 +146 127 129 137 150 141 130 137 169 202 175 116 +99 113 74 80 175 172 129 104 82 59 55 105 +210 217 177 124 87 97 87 93 149 178 141 147 +145 143 155 164 109 102 115 87 147 199 210 185 +179 172 178 211 218 165 116 138 108 106 198 209 +207 199 143 166 210 180 157 206 190 213 175 106 +96 165 171 86 140 117 80 34 62 62 74 93 +106 143 199 209 210 197 147 140 210 169 145 162 +186 201 209 206 179 179 191 191 208 204 182 165 +171 210 180 160 164 177 176 178 187 204 199 185 +194 205 197 186 198 177 157 185 199 169 172 165 +159 151 144 138 137 130 137 141 144 143 137 130 +133 133 138 138 119 121 103 120 113 109 115 114 +118 114 111 115 118 121 121 124 135 147 149 139 +135 145 136 144 141 146 150 141 150 148 155 156 +151 157 146 141 148 154 150 155 165 158 146 159 +172 169 172 170 153 156 159 156 +187 197 198 198 +195 186 197 205 199 187 192 190 198 207 201 192 +191 181 184 188 194 200 205 205 200 202 205 191 +195 197 199 200 208 208 199 192 188 189 179 182 +177 168 158 172 184 190 198 187 178 162 166 165 +154 165 170 176 156 141 113 121 134 117 135 166 +174 167 177 176 146 151 162 149 155 111 114 146 +174 148 127 121 123 121 120 133 178 197 154 149 +168 149 177 167 189 208 190 201 225 196 145 164 +168 153 201 199 136 121 116 115 155 187 168 176 +158 217 207 195 199 137 126 174 215 200 177 136 +115 105 123 197 155 172 223 225 204 116 74 178 +199 171 198 213 215 226 219 205 178 188 210 179 +167 178 211 197 131 130 200 196 157 100 84 79 +128 191 217 165 95 99 126 124 143 186 166 157 +130 131 151 146 128 120 137 182 180 153 137 125 +126 130 128 128 126 119 124 127 125 124 128 131 +131 136 133 131 139 129 130 133 133 128 126 126 +126 123 125 127 125 120 127 125 130 128 124 130 +129 124 126 134 128 124 120 126 124 136 145 150 +155 151 155 148 154 147 151 154 138 135 137 125 +121 135 134 141 145 140 133 140 136 136 138 130 +133 135 130 131 125 139 153 137 133 139 158 155 +154 136 136 148 138 136 139 134 146 140 140 146 +137 134 143 146 143 143 149 143 144 137 135 135 +130 126 136 137 128 131 134 130 129 126 133 134 +127 126 134 129 133 147 181 198 176 148 130 135 +131 128 118 146 149 138 190 192 126 106 96 75 +133 196 137 119 125 69 51 48 130 217 218 182 +121 103 119 77 55 102 111 147 155 107 94 154 +182 160 99 63 58 107 192 210 185 155 192 200 +208 210 115 139 162 145 156 174 206 209 172 141 +186 215 188 194 204 209 201 178 171 125 192 134 +128 88 109 108 62 88 102 84 64 67 99 187 +216 215 169 124 207 184 159 165 170 166 191 222 +200 179 197 211 207 200 211 197 180 191 216 196 +182 161 177 176 178 172 167 190 181 185 187 190 +192 200 169 144 172 198 176 170 161 157 149 154 +162 158 164 150 146 145 128 136 126 134 131 126 +130 107 118 123 103 110 106 118 117 117 114 110 +127 110 128 138 126 160 144 136 131 137 136 138 +143 137 155 150 138 149 150 148 153 148 145 143 +159 149 143 153 161 164 144 156 164 167 166 168 +164 155 160 166 +192 191 194 186 181 190 204 201 +191 191 201 209 210 207 198 191 191 184 178 195 +199 205 207 206 205 200 199 190 190 195 197 194 +198 201 195 187 188 190 184 194 181 168 157 171 +182 181 187 186 174 171 175 178 176 177 164 159 +151 138 120 127 133 124 135 176 191 164 169 177 +131 149 176 146 133 120 128 162 187 144 126 127 +129 127 128 138 200 190 155 147 151 129 165 206 +191 154 202 220 174 143 155 159 166 159 210 161 +135 125 135 133 179 165 126 130 123 212 210 205 +139 105 150 201 191 205 138 106 103 137 194 185 +189 223 225 209 105 41 44 207 190 196 207 213 +222 211 192 202 208 209 204 206 209 202 194 172 +181 222 200 125 89 117 116 165 211 207 136 82 +88 99 127 170 198 184 128 133 155 190 139 114 +110 135 198 178 124 134 129 129 126 123 120 123 +123 124 123 120 120 124 124 121 126 137 140 141 +137 130 134 129 125 126 129 137 133 126 131 138 +139 128 127 129 130 126 125 129 131 129 128 130 +135 128 123 121 120 133 144 148 153 164 162 156 +168 148 155 153 134 135 130 126 121 130 135 131 +130 139 139 140 130 137 126 126 135 144 133 130 +121 131 139 131 136 134 128 134 139 130 140 134 +147 149 130 128 145 146 146 151 146 151 155 150 +137 148 161 147 153 150 144 148 139 154 157 138 +138 136 140 133 136 136 135 133 133 141 134 129 +129 136 143 144 165 181 167 133 127 121 114 109 +109 98 102 190 201 140 88 73 74 189 181 139 +207 189 120 94 59 157 221 210 160 114 85 89 +77 53 89 87 119 172 138 74 116 153 121 90 +70 58 97 195 191 192 194 191 202 216 189 115 +138 158 129 136 127 201 164 164 206 218 195 208 +216 201 216 180 185 164 164 185 140 117 88 96 +113 102 102 72 84 92 87 85 164 208 204 187 +213 161 160 154 138 156 190 205 219 216 195 190 +187 157 182 217 185 171 196 217 199 189 178 184 +181 165 164 162 151 159 171 181 178 195 207 191 +159 174 197 177 157 154 169 166 157 162 140 147 +146 144 139 123 121 120 133 131 123 127 109 116 +108 107 115 111 117 113 120 130 125 133 139 140 +145 157 134 129 138 129 133 155 133 143 149 139 +141 145 147 148 155 143 148 150 148 153 146 150 +153 155 156 156 172 168 166 172 161 165 160 171 +187 188 185 179 188 197 200 199 195 200 210 210 +208 202 195 185 190 190 185 194 202 202 204 210 +202 198 199 189 194 204 201 201 206 202 196 194 +176 185 188 186 182 176 157 167 178 184 172 170 +169 170 174 186 188 165 146 133 155 137 130 119 +118 107 137 165 181 166 154 165 147 157 172 138 +119 144 143 174 159 117 114 139 137 136 167 186 +219 201 201 205 195 143 160 149 107 187 215 162 +115 133 160 175 146 155 209 145 119 127 161 135 +187 135 92 117 121 207 210 139 83 102 180 185 +182 207 147 127 150 201 172 175 221 200 215 160 +46 29 96 206 166 198 221 230 231 227 208 198 +209 205 216 217 181 177 181 212 227 184 108 77 +92 100 195 220 189 124 92 77 97 120 184 176 +133 105 118 179 198 148 105 106 130 186 180 128 +121 128 134 127 125 128 125 125 126 129 123 136 +133 125 120 123 125 127 130 138 135 134 136 136 +133 128 127 126 127 120 127 128 134 146 131 131 +127 136 129 128 134 125 125 128 127 128 120 116 +119 130 137 143 150 160 167 184 191 178 164 145 +130 127 119 126 131 137 144 146 139 139 137 137 +129 128 130 134 148 144 138 136 128 126 131 138 +133 133 128 133 138 136 134 140 134 135 135 133 +131 140 138 143 138 133 139 133 134 135 139 138 +134 130 130 138 137 139 135 128 129 131 125 130 +130 126 129 125 126 133 130 126 131 137 133 129 +134 154 197 188 145 119 107 98 111 118 93 105 +177 201 149 82 70 147 196 103 119 199 189 124 +78 74 166 220 192 145 104 60 56 68 51 57 +48 121 150 129 82 93 153 127 128 141 67 141 +198 159 178 186 179 210 218 160 117 150 155 128 +143 197 207 189 165 212 161 150 206 195 209 176 +135 170 154 205 144 108 74 64 85 82 65 77 +72 86 126 137 154 177 219 216 211 154 139 149 +150 166 169 179 204 218 197 151 155 160 169 199 +218 191 162 196 205 170 160 175 192 191 195 184 +165 155 143 159 157 145 191 217 208 189 176 184 +175 182 178 172 157 133 136 131 135 137 128 126 +127 126 140 148 137 137 127 123 118 108 111 115 +117 121 116 121 121 123 139 139 159 153 129 135 +130 138 136 139 140 141 141 143 150 150 153 148 +154 162 141 149 147 150 139 150 153 160 168 162 +162 176 167 168 164 158 166 172 +186 179 181 192 +200 204 206 191 194 205 209 206 202 199 188 181 +189 185 199 197 195 200 205 209 204 202 187 186 +190 197 207 206 195 199 200 179 191 196 184 182 +180 166 159 177 185 179 172 172 179 172 180 186 +191 159 178 174 150 167 164 134 125 126 141 171 +171 159 160 180 133 166 151 118 146 160 156 148 +141 143 167 164 162 144 161 178 216 171 157 155 +126 107 102 92 177 210 157 105 115 141 190 171 +137 179 182 120 108 164 156 114 187 129 119 107 +140 216 170 94 104 184 175 176 201 198 139 119 +172 181 192 222 190 211 186 72 23 38 164 194 +187 216 227 220 192 184 186 205 212 227 213 168 +189 209 223 222 176 99 84 89 134 208 219 165 +84 79 79 87 110 184 169 117 144 130 206 211 +130 90 106 108 179 182 127 121 117 128 121 118 +120 120 120 121 120 121 121 137 133 124 123 123 +126 130 128 128 136 129 135 135 134 128 127 123 +134 135 126 126 127 128 129 139 127 133 131 127 +139 135 131 121 123 120 127 124 114 125 145 144 +144 153 164 171 184 159 141 139 130 127 127 126 +131 135 130 130 135 143 137 129 131 129 130 136 +136 128 130 134 134 126 131 138 135 128 127 133 +130 130 131 128 136 128 127 134 136 138 139 138 +141 137 129 130 135 138 138 138 136 137 136 143 +137 135 136 129 130 134 131 135 141 129 124 127 +128 131 134 137 130 134 129 125 133 134 148 195 +199 160 113 104 111 111 93 83 89 191 213 155 +69 115 206 157 92 92 184 192 97 48 79 182 +223 182 128 120 140 77 57 78 69 56 66 139 +156 79 60 130 127 164 128 82 168 201 134 180 +188 165 209 208 129 109 135 144 171 180 189 200 +195 215 199 181 160 200 205 187 118 106 156 188 +199 133 67 68 46 77 72 89 113 151 166 157 +140 156 209 220 221 207 182 164 168 186 192 174 +158 179 211 188 181 166 181 172 194 212 186 178 +208 217 190 172 174 155 155 166 169 174 191 190 +181 177 175 191 202 200 201 188 198 181 168 159 +154 150 144 128 131 121 126 123 110 126 148 147 +143 120 119 118 110 118 113 114 120 120 131 121 +123 120 125 148 150 150 136 137 136 123 141 140 +140 133 144 136 139 157 157 151 153 155 147 138 +147 143 146 145 143 159 171 162 170 178 175 170 +164 156 162 174 +184 187 196 200 206 204 187 187 +201 204 208 206 200 194 184 174 186 195 195 205 +205 206 206 205 201 197 187 179 182 198 196 192 +190 194 188 187 192 192 169 167 167 166 165 177 +181 175 184 185 174 174 177 188 161 166 192 184 +170 184 148 135 138 135 149 180 168 157 184 164 +140 166 143 127 167 176 156 157 139 148 156 145 +130 123 115 177 206 129 127 128 119 87 103 191 +207 166 147 136 121 157 194 148 136 198 146 139 +150 171 156 144 192 141 119 147 192 210 186 154 +191 196 151 187 207 169 128 177 196 205 217 190 +211 202 144 44 49 82 185 200 217 209 211 191 +165 180 210 222 221 202 168 200 218 221 215 184 +124 94 117 192 215 210 178 79 83 94 111 128 +191 170 133 140 157 210 200 126 120 194 194 176 +192 129 118 128 123 118 121 121 124 121 124 129 +127 125 129 145 125 125 119 123 124 129 125 124 +136 128 129 126 127 126 130 128 128 127 135 129 +123 127 128 130 127 124 125 121 125 130 128 127 +130 138 128 121 118 133 143 144 134 137 144 153 +154 146 141 135 130 139 131 126 131 129 127 137 +141 151 143 137 130 131 128 134 130 126 129 128 +126 125 129 133 126 126 124 131 139 126 128 130 +130 139 133 130 135 140 143 131 149 147 135 140 +143 138 146 140 140 137 146 144 145 136 131 130 +130 135 131 129 134 125 141 144 140 134 133 130 +126 128 130 131 162 172 135 129 186 209 186 127 +113 105 92 96 90 129 220 223 169 96 185 171 +90 62 73 168 192 123 73 108 190 227 205 157 +181 174 111 92 68 69 79 104 148 159 117 99 +151 138 171 159 102 207 196 148 188 166 161 204 +157 84 88 121 194 178 181 205 196 189 192 168 +179 206 200 207 144 107 135 188 215 149 158 126 +72 78 69 82 120 123 138 136 144 150 192 219 +209 197 206 199 195 168 160 130 116 130 190 223 +197 165 164 165 167 192 205 178 182 216 199 189 +157 162 170 164 184 180 164 171 188 196 188 196 +188 176 192 195 186 185 169 159 157 155 147 143 +138 129 125 117 127 123 134 139 125 129 113 107 +115 109 117 107 116 111 120 135 123 136 130 138 +156 146 141 135 129 125 129 134 136 143 143 144 +151 150 162 165 160 144 140 147 136 155 147 149 +141 145 166 162 159 178 185 168 159 161 161 169 +185 194 198 204 204 196 191 201 201 205 204 190 +184 180 172 189 201 195 201 204 200 208 205 204 +201 199 185 178 198 197 192 199 188 187 187 195 +185 172 167 161 177 162 160 178 178 174 192 180 +175 177 179 154 157 190 181 166 180 159 139 137 +123 133 150 158 157 171 170 154 161 191 164 171 +177 174 166 162 126 127 153 126 121 104 120 189 +191 116 123 116 92 115 206 201 160 166 133 117 +106 177 185 126 135 187 115 123 150 150 119 171 +196 134 166 212 201 191 216 204 189 162 130 202 +212 151 153 204 200 209 191 211 160 198 179 175 +171 189 223 219 190 198 169 109 127 201 221 213 +198 166 210 228 223 202 186 187 106 139 209 211 +188 190 85 70 73 162 184 192 178 137 120 169 +221 195 115 167 209 191 169 201 131 109 114 114 +116 123 149 157 143 131 120 121 121 115 111 129 +121 126 133 128 128 153 130 125 130 130 131 130 +135 130 130 130 134 131 128 130 127 126 123 128 +126 125 123 128 130 130 139 135 131 127 127 123 +115 133 147 149 157 176 153 141 147 141 134 129 +127 135 136 123 133 133 130 137 140 148 138 140 +140 133 131 125 127 126 133 123 121 127 125 129 +130 128 124 131 138 126 128 138 148 143 136 136 +143 136 131 131 134 134 134 129 131 137 156 155 +136 144 136 135 138 134 138 135 140 150 138 128 +126 126 135 141 127 120 125 123 125 127 136 137 +150 164 141 116 114 179 211 200 131 88 84 96 +86 74 146 220 223 182 192 205 148 98 62 59 +149 196 147 72 80 192 228 200 133 180 169 100 +94 77 107 106 65 115 186 177 182 144 141 177 +129 146 200 185 182 184 171 180 192 117 63 73 +178 182 158 167 195 205 191 171 158 177 201 210 +207 139 82 82 191 185 145 202 184 136 111 120 +118 134 158 176 160 144 186 194 222 205 190 189 +192 164 157 170 182 207 190 194 220 196 162 177 +171 157 177 190 148 156 212 192 175 146 124 155 +172 172 181 184 191 189 188 181 186 209 195 192 +200 200 179 160 154 149 148 140 148 149 133 137 +120 116 133 140 135 129 130 110 107 125 107 121 +115 115 127 126 133 131 129 135 148 146 139 139 +126 121 145 133 121 149 149 139 143 150 149 147 +154 151 136 129 154 149 134 148 141 153 158 158 +153 184 174 162 161 146 160 170 +185 190 196 208 +201 198 198 201 207 205 191 187 185 179 186 188 +195 201 205 202 204 213 208 200 200 197 184 187 +199 190 199 197 191 194 190 186 180 171 159 168 +172 154 162 170 172 186 194 194 197 182 159 150 +179 187 174 159 143 153 145 139 146 169 172 165 +184 162 171 166 161 185 166 165 184 166 144 150 +126 127 146 157 145 148 141 198 192 135 143 86 +151 210 190 155 129 106 78 85 93 170 172 135 +164 182 124 158 148 117 130 182 185 154 204 174 +129 179 212 150 145 128 107 206 206 141 197 215 +220 199 216 191 180 200 145 138 187 208 202 179 +160 199 154 156 206 209 202 204 181 213 229 217 +190 172 197 194 162 215 213 172 185 158 92 99 +192 212 208 167 111 106 174 219 187 141 200 202 +156 127 201 168 120 118 119 126 126 133 146 134 +136 143 118 117 113 114 125 161 146 121 130 123 +124 138 129 123 125 126 130 128 136 129 128 128 +127 127 129 130 131 133 127 129 129 129 123 127 +125 130 127 131 129 123 125 126 115 120 123 130 +178 185 146 154 155 135 135 121 128 131 130 128 +130 131 131 135 139 136 137 134 129 127 129 131 +129 129 133 130 126 129 130 139 133 126 123 125 +138 131 127 143 145 133 134 140 146 136 128 131 +131 135 138 139 134 127 125 134 134 139 139 133 +141 136 141 136 129 134 130 129 128 130 129 137 +128 126 145 141 134 129 133 129 130 127 133 134 +109 118 162 204 207 149 94 96 105 79 80 128 +206 219 200 208 172 137 80 51 47 143 207 157 +73 107 216 227 197 159 178 153 72 80 100 82 +56 65 115 197 177 166 134 169 177 154 199 205 +205 171 160 192 216 191 108 68 161 158 156 144 +137 174 204 192 102 140 202 208 216 196 176 127 +146 213 172 185 185 188 200 178 149 139 165 153 +141 144 195 197 217 217 201 172 178 204 213 210 +195 194 177 177 198 219 196 177 182 178 160 195 +208 171 196 220 198 185 171 172 181 179 167 154 +161 170 187 177 167 184 195 189 186 200 208 197 +172 155 146 146 146 143 138 133 133 134 130 130 +124 146 129 130 129 108 113 93 111 124 113 108 +128 130 125 136 139 146 144 148 141 129 140 143 +139 147 153 145 144 147 141 146 158 146 154 154 +147 154 149 144 138 148 145 151 157 169 180 170 +162 164 162 169 +187 199 205 198 200 198 204 206 +200 200 192 186 182 189 195 196 198 201 201 207 +207 201 202 195 197 201 188 181 190 199 196 202 +194 179 184 182 166 169 166 172 166 147 158 170 +180 185 192 197 188 174 162 153 181 190 166 158 +153 156 155 156 166 190 192 186 178 154 168 158 +172 161 160 162 169 146 141 153 123 134 154 153 +143 155 148 207 177 130 116 166 223 187 115 118 +120 93 80 87 129 172 170 167 192 169 159 162 +159 186 182 190 185 196 202 166 186 199 200 147 +127 115 145 212 202 207 210 219 210 216 176 110 +187 160 82 80 179 196 96 160 168 204 168 195 +207 187 213 200 225 228 229 223 211 188 210 215 +221 200 207 206 195 175 157 207 212 198 159 88 +79 182 225 184 180 213 186 97 98 189 198 115 +103 119 117 139 143 134 128 125 127 127 123 117 +119 135 187 208 147 120 130 131 135 131 126 127 +131 133 129 140 133 138 131 131 141 134 131 126 +128 126 128 129 127 128 128 131 129 130 125 131 +128 128 135 127 124 121 114 129 176 166 127 128 +147 139 124 129 128 124 131 129 130 128 131 134 +138 133 127 130 137 138 125 131 127 131 140 149 +135 128 128 130 128 124 126 134 136 133 140 133 +137 135 134 134 129 130 130 129 131 131 131 133 +129 131 131 130 136 146 144 136 134 139 138 127 +130 135 134 135 134 129 127 135 131 129 140 135 +125 130 137 125 119 121 118 124 119 103 110 158 +199 204 162 119 89 94 79 64 95 180 219 218 +168 148 162 107 52 52 134 204 168 79 135 217 +221 210 200 190 180 169 130 67 56 108 156 156 +201 180 165 150 187 165 204 192 211 210 131 129 +197 211 154 89 153 103 88 134 116 149 176 198 +118 89 167 208 219 207 190 201 176 211 190 138 +102 95 126 165 166 130 137 168 161 160 206 205 +178 211 199 187 184 187 194 206 188 182 171 158 +158 192 209 186 161 153 161 175 209 211 197 208 +202 194 206 199 197 202 187 184 176 169 168 167 +160 170 187 164 159 149 151 198 190 157 136 136 +131 138 137 127 130 124 123 134 129 133 147 144 +134 123 124 119 117 104 117 110 110 130 127 130 +137 137 136 144 131 128 139 154 145 149 149 151 +156 145 146 156 154 156 151 151 161 150 141 141 +141 137 140 151 149 178 177 164 159 147 159 167 +197 200 206 200 191 195 204 198 201 198 186 194 +200 202 198 194 201 204 206 206 206 208 198 188 +202 198 175 180 198 194 200 200 189 178 182 181 +180 175 180 177 168 156 168 182 190 194 201 185 +159 161 161 166 180 185 172 154 159 159 159 141 +161 191 202 187 162 153 149 154 166 170 168 146 +153 119 149 167 143 127 137 126 150 153 140 206 +154 138 185 218 192 134 74 103 94 99 93 108 +153 187 192 177 205 192 154 168 204 199 178 202 +218 220 177 186 192 131 181 178 170 174 190 222 +219 209 213 184 209 185 121 118 189 121 93 192 +219 165 69 155 198 180 177 199 162 202 215 228 +221 212 228 228 208 198 226 229 207 182 211 169 +188 201 192 179 191 136 85 125 177 222 192 209 +205 161 97 120 204 209 141 105 123 124 133 134 +127 115 117 118 118 118 118 115 153 202 211 162 +124 123 126 123 123 124 131 137 134 128 130 134 +127 136 129 120 127 127 127 125 123 123 125 127 +125 130 126 130 128 131 127 138 140 138 139 129 +131 127 133 129 179 160 136 128 137 129 128 126 +127 124 141 135 133 139 134 140 137 136 135 135 +128 131 128 134 127 134 131 128 131 139 136 134 +131 137 129 130 131 133 131 129 134 134 128 125 +126 130 138 140 151 141 136 137 134 130 133 129 +134 138 133 147 140 134 134 133 130 131 130 148 +138 131 127 128 129 126 129 133 129 133 128 120 +128 113 106 113 110 95 87 107 138 184 208 170 +111 102 100 85 59 89 197 228 202 116 141 186 +137 76 74 151 211 169 75 171 210 196 218 186 +205 200 146 97 125 134 161 166 148 192 206 164 +160 201 178 160 205 213 162 87 151 201 187 119 +123 93 92 93 150 161 158 187 167 85 110 195 +187 215 201 194 201 218 201 177 171 120 123 131 +139 184 190 172 174 178 207 199 164 198 205 194 +194 179 174 178 200 184 174 184 190 162 178 216 +198 166 148 160 180 210 206 185 212 196 189 191 +179 188 196 197 185 180 161 147 168 180 186 187 +169 153 133 131 176 201 184 149 141 144 130 136 +123 131 128 118 136 135 131 135 138 128 110 113 +113 109 111 96 107 116 128 131 127 137 127 138 +131 125 138 148 145 136 144 147 150 157 146 149 +153 147 157 153 158 157 150 156 149 144 138 143 +148 176 176 168 160 148 154 164 +204 205 205 199 +201 202 198 200 196 191 194 198 198 204 204 202 +198 202 192 198 204 202 196 198 204 195 188 186 +182 195 198 198 191 185 189 188 187 179 175 156 +161 167 180 187 191 194 189 165 141 156 154 177 +181 180 171 148 164 169 149 148 166 178 187 182 +145 159 159 141 155 182 149 141 141 138 149 170 +165 136 139 146 164 158 140 205 198 161 200 200 +137 115 104 107 109 111 140 171 192 170 157 164 +209 190 188 196 171 139 145 196 229 206 178 171 +135 143 181 221 209 191 199 222 217 218 182 201 +192 117 105 116 186 156 201 220 213 125 107 150 +190 192 204 165 196 222 222 201 194 206 221 217 +206 218 226 215 188 206 199 180 216 188 125 169 +159 151 171 204 228 219 216 182 117 97 134 204 +219 177 106 119 117 138 143 126 121 125 118 121 +130 133 149 197 209 166 151 128 125 123 156 160 +126 131 168 188 146 130 124 123 137 160 135 127 +123 126 135 128 127 129 127 127 129 127 131 125 +126 124 124 134 129 131 127 121 116 127 125 148 +186 161 159 147 149 125 131 139 128 124 126 135 +135 128 129 130 130 131 136 127 128 124 134 135 +133 127 127 131 129 128 130 127 131 139 128 126 +131 125 124 129 127 129 126 129 126 131 136 131 +140 138 134 133 131 128 125 139 171 175 143 139 +141 134 151 165 148 134 127 127 127 130 131 128 +124 123 123 125 119 124 128 116 117 125 131 123 +116 123 111 123 157 140 192 212 180 114 106 94 +77 84 98 196 227 204 107 136 191 161 97 84 +179 212 169 79 186 194 188 211 168 204 176 170 +135 159 107 191 161 184 200 205 149 170 210 177 +176 200 202 111 104 180 198 174 105 83 97 100 +153 162 167 186 206 176 84 144 169 194 206 180 +177 210 206 137 166 190 180 164 144 123 149 188 +194 174 215 204 176 171 196 184 207 195 198 202 +197 195 190 186 179 180 178 164 210 196 150 148 +141 160 207 186 184 208 178 176 186 178 177 188 +194 195 178 174 170 160 177 176 176 174 148 127 +131 160 192 184 162 146 136 119 121 139 135 117 +117 145 136 136 141 119 130 120 115 115 106 106 +106 115 131 127 134 128 137 140 130 128 127 146 +141 136 141 149 146 147 155 150 158 147 154 162 +150 155 154 150 147 139 134 130 150 162 170 165 +157 160 166 160 +199 202 199 202 205 201 200 195 +197 199 197 198 200 200 198 196 206 204 201 201 +204 200 197 196 197 197 190 188 194 191 187 204 +191 194 208 195 188 180 175 161 157 171 176 185 +191 196 189 150 151 166 165 172 185 177 159 165 +172 166 151 169 179 190 184 154 148 168 134 140 +174 178 168 153 141 166 178 194 190 147 151 153 +160 151 166 218 182 147 202 149 147 153 144 119 +155 159 171 165 146 150 155 135 199 187 187 151 +139 135 143 208 221 171 157 129 161 196 209 220 +160 147 191 226 221 188 175 196 124 100 98 102 +197 218 209 207 204 160 169 187 204 202 164 184 +223 210 170 191 219 229 213 216 226 231 215 200 +196 208 208 222 205 134 130 186 140 208 208 228 +215 185 138 75 79 153 201 208 194 104 119 111 +154 151 121 124 194 180 117 118 120 147 215 207 +136 125 115 116 113 118 130 133 114 143 204 200 +137 127 124 123 126 147 130 124 120 126 128 127 +128 125 129 129 127 127 128 127 126 131 127 136 +129 137 125 121 114 113 117 165 185 147 146 129 +133 129 130 134 121 117 124 130 135 135 138 134 +136 139 137 137 129 128 134 128 130 126 129 129 +121 123 121 124 130 125 125 131 134 134 130 133 +127 124 127 127 121 128 133 127 123 128 131 134 +135 134 136 128 166 196 165 139 136 146 181 198 +168 143 136 126 131 146 130 124 126 119 129 126 +118 123 130 110 110 107 131 137 114 125 138 113 +108 139 146 192 206 170 119 92 82 83 67 148 +220 228 210 131 120 184 184 133 111 176 209 171 +114 196 171 171 191 195 212 170 137 192 130 167 +204 168 186 200 205 129 186 184 171 154 208 154 +83 106 130 161 113 84 93 92 137 110 151 198 +199 171 185 161 194 175 206 140 147 196 223 211 +178 143 169 172 192 188 174 155 162 197 210 186 +182 171 174 204 190 205 190 186 182 177 165 160 +185 178 162 148 140 201 207 182 167 157 189 199 +154 194 190 177 205 194 175 175 176 188 186 174 +166 160 147 146 164 164 168 170 157 145 154 184 +176 153 126 128 109 123 131 133 127 127 141 134 +125 139 127 129 119 109 119 115 103 116 133 119 +141 139 134 144 135 138 144 147 143 148 150 140 +151 151 147 162 161 159 149 155 157 150 165 158 +145 141 143 137 147 168 170 162 162 158 168 170 +204 200 201 200 194 190 195 196 196 199 201 202 +184 184 188 189 202 205 196 190 206 205 199 196 +196 192 195 195 198 197 198 199 192 200 201 200 +190 179 174 164 153 180 186 182 188 194 166 160 +167 175 172 172 181 162 179 187 178 167 165 189 +202 194 172 137 151 148 137 151 169 177 157 141 +146 170 179 202 192 139 136 134 124 159 196 201 +144 166 162 144 146 162 147 147 184 164 145 106 +134 138 107 98 201 166 143 127 120 174 211 223 +196 153 126 157 189 180 174 213 176 130 199 226 +198 150 207 158 107 85 105 175 228 206 207 217 +176 169 158 171 207 171 200 222 205 157 169 167 +158 181 198 226 221 229 201 186 187 210 225 211 +204 155 201 171 166 222 228 205 133 167 118 58 +174 218 186 204 143 92 94 143 150 113 106 180 +210 166 115 130 181 218 200 134 117 130 110 109 +119 123 121 124 125 164 188 140 125 128 123 124 +124 127 127 123 121 121 125 127 136 134 128 123 +121 123 119 128 136 131 127 126 133 146 135 129 +123 115 117 159 176 139 131 130 125 119 131 121 +119 130 128 131 125 131 133 133 137 138 141 126 +127 125 128 129 130 130 131 137 131 135 131 127 +127 133 128 128 134 131 130 130 129 130 129 131 +127 140 143 134 131 134 128 129 134 130 134 134 +145 171 177 139 127 130 157 165 156 141 131 127 +125 126 128 125 121 124 123 118 133 179 167 136 +121 100 130 133 111 111 105 98 93 96 118 159 +195 201 158 109 78 80 72 115 201 208 226 206 +139 103 167 179 154 121 182 211 164 149 206 136 +162 205 215 210 162 188 149 151 179 182 148 156 +187 205 165 205 157 93 174 210 158 139 111 115 +191 153 66 63 69 70 99 170 200 131 150 158 +188 174 189 179 124 125 202 220 219 208 181 176 +172 175 182 187 176 195 190 195 199 187 179 202 +190 191 194 178 175 181 175 197 185 164 167 176 +175 172 200 210 189 171 157 208 189 179 207 158 +154 162 160 161 166 166 168 178 186 179 161 150 +158 168 170 165 172 161 154 164 174 174 141 136 +115 123 140 135 145 153 127 133 127 119 127 129 +120 124 125 126 126 117 124 130 129 135 129 131 +134 133 136 136 144 153 147 149 137 154 150 148 +164 153 156 160 153 154 158 156 141 143 144 135 +155 164 169 168 161 167 168 172 +201 199 192 189 +188 181 195 206 199 199 201 192 191 178 177 196 +201 189 180 195 205 200 194 195 198 198 196 187 +197 197 189 189 188 194 200 198 185 177 165 156 +170 184 186 177 192 186 157 169 171 170 157 172 +179 180 188 186 179 171 184 194 192 187 159 140 +157 139 169 148 167 175 153 137 151 157 174 199 +174 137 110 105 157 199 161 200 194 168 126 140 +157 166 139 153 157 139 111 115 136 90 78 135 +206 180 168 151 154 199 195 216 182 148 159 172 +179 198 197 207 196 166 217 223 170 195 172 128 +145 147 187 219 198 197 191 207 134 148 138 195 +195 211 220 218 140 75 80 69 83 141 219 192 +200 207 185 189 213 199 217 200 201 190 211 161 +205 230 218 167 172 198 103 155 213 160 178 167 +96 99 174 184 109 128 181 211 148 117 141 192 +220 182 109 118 119 115 105 109 115 115 117 125 +156 166 129 121 121 125 128 125 127 126 131 149 +139 130 125 129 139 151 151 127 128 131 127 125 +127 129 126 125 127 148 179 149 123 123 123 165 +162 143 137 127 130 141 139 121 134 139 130 137 +160 155 139 137 139 134 133 135 136 131 136 131 +129 129 130 129 130 128 129 126 133 134 129 127 +125 125 126 131 125 128 134 130 125 135 138 133 +135 137 135 133 138 134 126 128 128 141 171 166 +127 124 126 131 151 148 126 127 124 125 118 125 +126 128 123 124 139 202 199 133 110 119 121 129 +113 105 98 106 100 99 99 117 159 189 199 161 +107 120 172 165 199 139 191 227 215 149 75 127 +143 128 140 199 213 176 185 195 126 190 218 212 +202 196 176 139 161 125 155 170 116 175 206 211 +200 111 90 187 198 143 151 107 147 202 159 104 +89 89 97 150 213 199 151 169 204 187 114 189 +141 143 191 209 197 209 217 194 179 181 186 180 +189 208 188 185 192 198 196 197 208 141 169 190 +171 186 192 174 168 154 149 180 200 191 174 185 +206 189 160 162 190 150 161 167 114 114 129 138 +140 166 157 158 171 188 187 180 176 176 169 151 +164 169 161 148 141 139 171 143 123 123 114 134 +140 146 134 131 137 129 121 125 131 129 121 133 +130 130 126 118 136 128 130 126 137 147 129 145 +136 151 166 155 148 150 146 145 146 157 148 153 +161 159 162 149 145 148 146 129 141 166 170 158 +164 168 169 168 +197 201 195 191 184 194 200 205 +202 199 197 191 192 190 198 200 195 182 184 195 +200 196 188 191 199 188 185 191 194 181 188 188 +178 184 191 192 185 169 165 164 186 180 178 184 +181 170 166 184 181 168 165 181 184 192 192 182 +168 176 191 185 192 170 145 145 150 146 154 159 +177 180 156 151 153 147 165 181 166 115 123 181 +194 151 157 212 197 139 127 144 168 138 116 134 +141 146 117 113 98 102 126 162 211 189 174 150 +180 169 208 212 160 158 134 174 189 186 169 187 +210 205 225 182 180 200 168 155 136 174 207 213 +195 191 201 199 143 166 208 204 215 210 178 184 +69 47 108 89 165 211 207 131 199 205 212 200 +184 188 219 201 197 205 196 221 227 218 212 197 +196 161 162 221 186 130 188 121 93 175 212 146 +109 168 216 155 109 157 215 221 171 118 99 103 +119 114 108 106 117 115 110 139 158 125 118 120 +119 119 119 120 123 120 155 182 144 123 127 127 +135 162 154 133 125 126 130 128 145 136 120 121 +126 172 171 146 117 126 116 151 166 150 136 131 +127 135 129 125 125 134 129 136 170 171 137 134 +141 141 137 131 128 130 130 131 140 131 128 130 +127 124 127 126 124 127 126 130 127 136 140 136 +130 131 134 138 129 136 136 135 131 134 127 126 +128 129 125 128 126 124 146 174 139 125 126 125 +133 149 125 125 114 130 162 149 125 131 118 108 +107 168 206 153 124 120 144 147 167 119 99 131 +119 149 165 113 94 154 194 197 148 136 194 184 +206 178 176 190 218 211 148 56 90 115 95 169 +212 202 180 207 162 154 221 215 217 208 202 139 +176 131 149 162 155 110 154 210 221 154 84 125 +216 166 158 156 145 190 165 155 109 70 79 123 +206 156 161 139 178 211 153 169 192 114 138 200 +168 169 205 212 215 206 198 191 209 199 171 165 +161 160 158 184 210 187 141 181 187 160 164 177 +179 185 184 171 171 161 145 131 172 212 198 159 +199 181 154 195 159 151 154 156 179 187 180 178 +184 186 181 184 169 169 168 148 150 149 155 161 +149 150 149 174 155 128 126 129 145 140 143 136 +127 129 115 130 120 123 137 126 123 120 123 121 +126 134 121 133 147 151 140 148 157 160 168 161 +155 153 133 140 149 147 140 154 161 156 158 155 +150 147 140 143 149 168 166 161 162 161 167 165 +201 196 192 195 188 191 200 206 196 195 197 192 +196 198 196 197 190 190 197 206 205 195 189 199 +194 187 187 192 188 195 192 180 184 192 191 194 +179 167 172 185 179 179 174 185 185 170 165 182 +169 148 172 190 185 191 189 169 180 199 194 196 +178 169 155 146 141 170 181 161 178 162 155 177 +168 146 146 155 148 140 177 174 151 156 165 209 +164 118 115 135 150 127 108 110 126 148 106 87 +127 117 126 149 204 172 139 168 196 166 215 199 +169 180 187 176 179 181 171 187 210 225 210 158 +205 178 149 126 171 195 155 206 200 160 213 160 +116 211 217 216 219 160 185 143 59 65 139 184 +219 194 177 135 218 206 187 185 192 202 210 204 +200 230 233 231 222 210 215 182 172 176 221 219 +138 170 198 110 128 206 159 102 145 209 182 125 +178 219 205 151 107 99 103 124 104 104 116 104 +100 108 150 159 124 114 118 121 124 125 126 119 +117 134 191 190 143 129 126 126 141 153 144 129 +127 126 120 130 158 147 124 119 147 164 135 127 +124 118 107 159 179 137 129 119 115 125 123 129 +126 128 135 128 146 162 138 131 134 141 140 138 +131 135 133 136 143 141 134 129 124 130 129 119 +123 123 125 129 129 127 127 126 124 136 140 130 +135 144 135 129 131 133 131 130 131 133 129 127 +126 130 130 164 154 127 128 137 128 133 151 131 +138 172 221 195 129 118 98 98 109 113 195 194 +148 141 133 125 134 154 121 104 94 99 149 162 +89 90 151 208 197 129 165 159 210 180 180 146 +177 221 220 162 75 140 139 131 191 174 205 216 +210 164 202 226 205 216 218 137 180 160 136 167 +175 130 85 125 210 191 110 86 191 195 144 162 +108 164 174 107 137 105 67 67 182 140 68 129 +149 201 180 151 204 180 153 212 189 184 202 200 +202 213 206 199 200 182 157 153 161 151 136 138 +164 205 201 180 190 181 179 191 195 204 187 180 +169 176 187 189 180 186 212 216 195 210 177 196 +202 187 191 195 199 190 192 179 165 176 190 184 +153 143 149 158 156 154 141 150 161 157 149 149 +177 167 138 130 134 140 140 151 151 133 124 126 +123 125 129 125 123 116 109 127 139 125 134 133 +140 147 147 140 157 155 161 167 154 151 147 136 +141 146 149 150 155 162 157 160 148 151 150 140 +158 164 166 161 162 162 162 159 +196 187 188 185 +187 194 207 198 188 187 185 191 199 198 202 205 +196 199 205 212 197 192 188 185 185 188 196 198 +195 191 192 177 180 189 194 181 179 175 172 179 +168 167 179 172 166 164 170 169 164 167 179 189 +181 184 180 180 185 187 199 188 175 166 139 140 +153 186 192 165 166 165 161 172 156 137 127 154 +147 164 157 134 165 168 162 210 149 129 120 127 +150 141 121 109 139 138 115 131 115 106 116 130 +192 159 134 188 168 192 189 199 168 171 175 186 +179 161 186 161 212 223 211 206 190 133 123 164 +200 144 113 190 196 170 207 147 190 210 218 227 +187 144 180 79 64 75 186 225 202 148 186 202 +181 96 125 185 197 178 213 218 229 227 227 209 +209 204 198 186 197 221 217 143 156 210 184 121 +174 205 130 121 208 202 138 197 218 182 156 121 +105 113 180 196 108 99 148 127 105 144 153 171 +137 114 115 118 123 120 124 120 121 160 164 144 +126 128 129 145 154 136 126 126 123 121 121 135 +143 134 120 139 171 145 123 119 118 107 131 158 +170 126 115 119 119 128 130 131 140 128 129 135 +153 172 149 131 139 137 133 130 147 146 162 154 +146 136 131 127 133 150 157 121 128 125 135 133 +131 127 125 128 135 135 139 138 156 176 151 139 +141 135 131 131 140 127 129 128 126 131 128 143 +148 131 139 147 137 128 141 147 133 146 204 209 +139 102 102 116 103 102 129 190 166 118 121 108 +108 137 154 134 107 95 105 175 171 102 89 180 +211 178 121 175 206 195 172 197 125 182 227 215 +158 130 148 123 166 160 179 209 220 198 188 225 +225 210 217 160 148 171 124 105 162 159 93 56 +180 207 164 66 128 202 204 188 108 85 171 148 +86 123 102 68 157 148 68 70 115 197 211 151 +145 210 172 205 188 151 165 179 182 192 216 211 +217 188 168 162 157 165 181 182 168 209 212 201 +196 178 177 172 176 181 186 185 172 168 185 188 +184 180 187 205 218 218 200 191 216 192 186 196 +190 195 195 190 194 189 192 191 198 177 168 171 +179 166 148 137 138 143 151 146 145 169 160 143 +134 129 151 150 153 135 125 120 126 126 124 133 +120 113 120 123 129 128 139 139 139 141 143 144 +150 157 170 158 160 150 138 141 138 140 144 145 +151 157 165 158 150 156 145 146 153 165 158 155 +166 161 154 149 +182 189 188 187 189 201 198 195 +187 175 192 204 201 205 205 200 197 198 198 202 +196 179 182 192 192 200 199 198 198 192 179 178 +181 184 184 188 178 179 180 180 171 168 168 167 +167 174 176 178 167 176 182 180 185 185 180 182 +184 200 196 182 187 166 131 139 176 204 184 153 +175 180 174 160 159 128 138 154 135 156 146 146 +167 149 177 200 141 129 120 121 155 134 111 107 +120 130 134 118 97 103 116 127 196 161 184 182 +170 210 178 197 137 110 139 177 182 189 181 190 +225 219 219 208 153 104 145 198 153 120 147 217 +178 191 196 198 211 219 227 171 111 188 169 74 +85 188 228 210 156 140 166 197 120 72 83 184 +201 187 225 228 220 218 216 180 212 209 195 220 +225 228 195 154 215 209 141 120 210 207 136 184 +202 160 218 227 194 127 127 116 115 146 212 164 +106 138 148 118 154 136 166 174 123 116 117 113 +125 126 128 131 168 161 126 126 131 123 141 166 +147 134 126 125 126 123 126 128 130 129 141 175 +159 124 124 123 110 106 118 159 171 134 120 127 +147 177 148 131 150 133 121 143 172 187 151 130 +140 133 126 137 135 133 146 138 136 129 129 126 +128 151 145 129 123 125 121 128 128 130 134 130 +131 136 139 137 153 185 172 141 134 131 134 134 +146 145 144 137 131 131 127 126 140 144 136 135 +133 139 133 144 147 133 159 215 189 147 126 116 +123 100 105 191 198 136 155 141 118 99 123 148 +146 94 87 118 188 175 86 94 178 208 153 185 +219 215 176 212 184 103 182 226 210 161 175 116 +174 208 155 177 198 212 207 202 222 220 220 187 +115 162 119 93 105 165 139 76 119 156 187 157 +118 184 209 206 145 74 107 166 95 67 98 109 +165 182 111 78 80 147 216 188 139 160 179 164 +191 137 153 171 191 202 179 201 209 179 171 160 +155 169 184 184 182 189 210 187 190 194 186 165 +181 172 179 171 176 175 170 186 194 184 176 185 +195 219 226 198 208 200 175 151 158 149 154 165 +168 170 170 167 175 189 197 172 195 192 180 172 +153 153 167 160 149 156 178 169 144 131 135 139 +148 141 121 128 121 130 136 110 115 115 125 133 +129 134 123 143 147 148 151 140 150 155 168 165 +166 154 143 143 145 129 145 138 143 161 158 157 +156 157 149 141 161 166 159 147 154 156 149 146 +199 190 188 195 201 200 188 192 172 177 196 199 +205 196 192 200 200 198 194 190 176 178 195 186 +194 200 206 202 194 192 197 185 186 184 174 170 +174 182 181 176 184 167 172 170 179 184 189 188 +186 181 191 179 187 185 182 184 197 188 188 196 +187 174 130 146 184 194 154 141 178 180 160 155 +143 127 136 145 136 137 120 157 172 130 201 191 +145 128 127 127 137 155 119 104 121 137 120 85 +107 120 128 123 187 215 196 154 204 195 162 192 +106 94 150 156 155 182 160 215 194 215 219 168 +119 162 199 150 124 155 151 205 137 204 208 200 +213 227 188 107 130 197 115 103 194 219 180 114 +77 90 145 176 80 88 149 207 222 226 228 225 +223 225 199 180 215 206 212 222 220 225 200 174 +221 164 92 159 217 179 174 206 186 220 225 210 +189 139 117 134 111 197 200 128 161 148 109 148 +136 123 197 143 111 111 108 110 117 116 121 149 +161 125 119 119 116 125 159 160 130 131 124 124 +131 140 137 128 124 151 178 175 127 119 114 124 +140 121 121 157 158 130 130 126 155 182 155 155 +149 138 135 135 169 189 169 134 131 140 127 137 +139 135 134 134 131 135 133 138 136 133 128 129 +130 121 127 125 129 128 136 128 127 129 129 134 +150 166 168 137 139 130 135 128 130 130 135 130 +147 134 127 123 134 146 130 124 129 139 127 140 +164 154 125 189 213 159 113 111 141 133 103 144 +212 194 213 195 135 114 100 123 138 105 100 90 +137 202 176 97 100 171 192 185 225 195 171 207 +190 107 113 197 227 218 189 147 177 218 184 160 +191 216 223 197 208 223 223 212 143 174 144 90 +64 106 179 109 162 140 143 205 182 190 198 212 +182 126 68 155 118 67 53 59 127 198 106 65 +65 87 200 194 162 140 165 182 217 177 157 162 +182 166 158 208 177 174 201 212 199 171 161 176 +186 170 208 199 185 177 192 189 177 172 169 155 +172 170 164 176 184 182 174 167 175 177 201 210 +191 204 187 171 139 140 129 129 134 137 137 131 +137 135 140 144 153 162 164 180 165 153 143 158 +155 138 145 168 149 138 128 128 134 130 134 121 +118 123 124 121 113 124 124 124 124 119 140 140 +150 144 139 144 141 149 156 160 164 157 154 136 +138 137 134 137 145 150 156 150 146 155 156 141 +168 174 157 151 154 153 151 153 +195 196 195 198 +202 194 190 190 190 182 198 205 205 194 197 195 +196 190 185 175 176 185 194 195 199 194 200 199 +194 191 190 178 165 184 176 172 186 179 179 187 +188 185 189 182 177 194 195 190 194 190 190 188 +187 181 180 184 187 186 189 187 189 180 134 160 +175 154 137 138 176 174 160 140 123 124 135 166 +137 127 137 141 137 138 216 184 153 135 134 125 +115 124 103 87 126 135 124 105 104 119 114 86 +190 217 169 184 219 172 150 191 107 129 145 162 +191 160 192 205 148 206 208 143 160 195 146 123 +168 145 151 198 158 217 218 213 217 207 134 100 +165 192 185 209 221 178 85 79 70 75 159 147 +119 161 213 229 221 207 213 226 226 202 182 165 +204 209 227 202 219 198 187 211 206 139 157 213 +194 202 226 210 223 208 180 168 186 121 107 111 +159 217 168 127 151 116 166 182 121 170 194 118 +108 108 114 114 115 115 134 161 131 117 118 115 +117 150 171 131 119 128 125 119 128 137 121 125 +120 178 200 146 119 127 145 141 141 123 150 148 +156 133 113 119 174 190 165 143 146 137 127 121 +138 176 170 131 131 148 138 135 130 135 131 134 +141 144 141 155 140 134 134 133 133 126 127 127 +126 126 131 125 125 128 130 129 127 135 156 159 +133 134 129 131 130 126 131 155 196 188 147 126 +124 149 134 136 137 134 128 151 143 136 124 146 +213 190 108 118 156 158 108 105 188 195 204 223 +171 133 111 86 119 121 95 87 97 134 202 170 +80 96 178 198 212 202 136 180 210 160 130 119 +217 227 211 194 168 209 207 138 167 205 222 218 +185 216 222 220 196 195 182 157 124 77 97 111 +127 202 196 166 213 209 185 186 207 165 93 133 +166 78 60 53 97 202 143 73 82 70 179 206 +182 191 167 207 221 201 154 171 182 181 200 202 +174 151 144 204 212 207 195 182 174 168 187 202 +184 160 160 168 186 186 185 181 180 179 181 175 +177 178 189 189 186 168 141 209 217 199 180 164 +153 146 148 149 151 147 140 147 125 140 135 121 +146 158 166 153 150 153 158 157 151 153 155 144 +154 139 133 131 126 137 140 131 125 135 125 114 +120 111 135 118 119 141 135 154 147 135 143 144 +148 150 162 154 165 160 150 150 143 129 133 135 +137 139 157 147 151 153 144 159 166 164 147 144 +160 156 167 157 +196 201 198 201 204 190 187 199 +195 191 207 200 195 196 186 192 202 190 182 181 +195 190 195 198 188 198 194 185 194 188 185 179 +182 175 182 186 172 178 185 180 175 186 186 184 +175 178 180 187 192 186 188 192 186 179 162 178 +168 178 184 185 188 170 131 157 159 156 139 149 +179 182 158 131 129 131 143 149 139 121 134 143 +130 174 199 176 155 123 131 120 108 94 94 97 +116 119 99 97 119 129 123 147 212 189 176 213 +202 149 159 201 148 171 187 198 171 167 220 188 +196 221 213 206 196 138 133 176 155 104 174 182 +190 222 216 212 206 182 138 144 205 191 205 219 +161 77 67 72 77 85 186 157 197 226 229 220 +176 174 215 227 217 188 171 167 208 220 211 220 +194 139 199 226 181 150 213 221 167 226 231 221 +201 184 131 175 159 109 151 139 208 187 116 137 +157 167 176 144 107 197 155 114 109 103 108 107 +110 125 155 146 119 110 117 118 126 182 160 118 +124 120 116 125 136 120 121 125 144 199 165 119 +128 156 158 130 118 116 139 159 161 141 138 124 +164 188 156 159 166 157 140 121 123 157 170 143 +137 172 157 128 130 130 131 137 125 128 139 158 +153 133 127 128 138 128 134 155 139 126 133 133 +131 130 128 130 130 134 139 166 156 127 124 131 +124 128 135 150 185 201 164 125 130 175 168 156 +137 130 134 127 133 125 119 107 182 218 147 98 +118 129 143 106 136 195 151 216 216 138 131 98 +108 117 97 77 93 98 186 209 143 88 155 209 +222 207 153 165 206 197 197 137 180 220 223 211 +199 182 202 171 157 162 221 221 202 211 226 222 +216 206 144 107 134 149 106 76 136 195 140 83 +128 210 215 167 211 178 159 111 180 126 70 51 +75 207 180 135 124 113 171 204 148 179 174 184 +206 199 178 176 170 171 199 161 139 166 172 162 +197 208 178 188 182 162 155 198 180 162 154 164 +167 196 188 177 185 194 185 190 198 197 198 196 +189 189 186 198 219 192 188 177 168 145 139 143 +126 145 170 165 165 169 149 139 131 135 153 169 +165 180 181 157 151 140 141 145 139 145 145 135 +137 135 124 121 136 123 125 116 111 126 123 127 +129 133 143 145 147 139 139 136 145 151 150 167 +161 154 151 140 145 134 131 131 139 143 147 157 +151 156 154 153 166 168 148 143 153 150 154 170 +209 194 197 202 197 182 182 199 199 202 200 197 +196 190 191 200 190 182 171 185 192 199 197 192 +194 192 189 186 180 190 190 182 187 190 188 189 +187 184 180 182 182 194 191 172 180 169 178 190 +196 184 181 198 186 170 178 177 168 171 175 186 +171 148 138 150 167 149 146 149 181 180 158 141 +143 145 143 139 129 129 139 139 124 188 189 175 +145 140 131 107 78 73 98 106 117 115 155 157 +182 153 129 190 213 186 171 213 167 117 138 189 +141 167 210 176 162 212 221 165 220 202 210 211 +143 143 174 175 127 127 195 195 221 218 204 208 +137 187 176 182 185 157 219 174 84 75 68 72 +96 158 195 213 229 223 211 185 144 181 216 220 +202 184 184 196 222 218 195 219 164 131 222 226 +172 200 220 155 200 232 215 187 151 149 131 189 +135 99 139 194 213 133 150 157 148 161 141 99 +160 195 115 172 159 104 102 100 123 145 159 184 +120 119 118 115 155 174 129 121 115 123 159 147 +125 116 117 120 174 175 126 118 147 165 141 123 +113 119 149 158 156 155 120 120 156 174 154 143 +151 141 129 117 119 146 174 151 141 165 168 137 +130 124 126 127 126 123 127 147 143 131 121 125 +126 130 137 175 169 165 168 137 127 135 131 129 +131 131 134 157 176 144 127 123 124 127 131 135 +145 167 182 169 138 162 182 147 138 125 123 131 +134 133 120 106 115 209 190 98 93 106 143 140 +107 175 176 171 220 200 140 154 199 176 107 95 +79 105 129 212 211 162 108 206 220 221 178 155 +194 218 204 150 128 208 228 225 217 190 185 184 +174 145 172 226 216 189 212 217 199 218 172 93 +62 100 115 121 178 161 78 63 69 121 200 176 +160 206 161 155 200 196 160 139 141 206 196 130 +80 97 113 198 148 145 180 147 171 217 171 151 +159 194 180 168 165 178 179 174 159 172 199 169 +146 168 179 184 205 178 168 153 154 172 188 196 +181 170 167 170 155 158 154 159 169 171 180 168 +213 171 206 194 157 161 145 153 161 145 153 148 +136 160 167 147 133 138 130 137 154 165 184 187 +167 144 134 128 127 134 145 147 149 137 133 123 +128 130 114 130 118 123 131 121 130 128 136 150 +135 138 125 137 136 144 155 148 148 149 144 138 +130 141 136 143 134 138 146 140 144 161 156 156 +167 171 156 141 148 146 159 162 +196 201 200 198 +200 192 196 199 207 206 198 189 186 194 196 195 +190 170 174 192 202 197 198 204 196 194 192 196 +187 182 180 180 189 188 195 192 181 169 178 185 +195 205 190 184 181 168 190 197 191 182 186 192 +185 179 180 174 165 187 187 166 154 128 147 171 +157 153 157 151 187 187 150 133 144 135 130 144 +135 140 138 107 120 188 194 164 140 126 117 97 +74 96 136 103 137 171 154 126 147 120 161 206 +205 190 195 207 146 123 117 196 141 185 161 133 +175 221 207 172 215 213 192 195 162 186 174 153 +124 130 205 221 216 192 218 197 174 205 178 198 +170 208 200 123 75 84 134 174 186 210 229 222 +189 187 187 186 179 199 226 222 213 222 217 199 +227 185 216 196 115 156 231 225 201 220 204 191 +220 200 178 170 167 171 145 202 130 96 135 210 +176 162 161 118 153 150 105 114 201 180 136 198 +127 108 99 114 146 135 187 184 116 109 110 119 +182 145 114 117 116 144 206 157 119 115 116 167 +194 133 121 139 166 151 125 116 118 135 167 159 +150 157 134 135 171 181 151 143 137 129 127 126 +129 135 170 162 140 144 168 135 128 127 124 133 +148 130 125 147 150 123 127 126 126 135 150 172 +197 200 199 161 139 143 138 131 131 133 131 143 +180 179 153 123 125 130 141 145 129 131 181 187 +126 145 188 150 131 130 124 123 154 202 166 117 +102 177 211 149 93 97 118 141 147 210 206 127 +191 226 174 155 213 215 160 86 90 96 117 178 +215 215 134 179 223 223 211 160 194 221 215 145 +114 169 222 220 218 220 204 181 182 169 110 194 +220 199 200 219 194 212 207 133 92 86 114 124 +165 168 69 37 34 56 120 196 148 192 167 92 +139 198 151 117 150 215 197 184 167 159 166 205 +176 186 188 156 151 211 208 149 181 179 150 161 +170 182 169 159 139 156 156 191 174 168 166 172 +194 175 162 148 145 174 186 157 151 139 133 134 +143 136 141 123 124 148 145 128 162 185 147 209 +200 169 170 166 147 145 127 129 119 127 140 147 +161 147 146 143 133 123 126 151 164 174 167 149 +143 127 133 137 131 135 137 131 127 124 126 115 +124 106 126 121 121 140 146 151 144 137 136 134 +147 146 144 147 147 153 146 137 131 127 138 138 +135 139 135 139 158 162 153 154 159 154 148 144 +148 149 156 162 +200 201 197 197 195 194 197 199 +201 198 189 179 187 198 201 196 178 171 180 195 +195 202 202 197 198 192 188 188 189 177 180 180 +186 182 190 187 176 168 166 181 200 186 169 181 +177 166 187 198 180 186 187 186 180 171 165 181 +187 191 176 127 126 137 164 159 159 153 154 161 +178 172 151 164 171 144 148 172 159 136 121 123 +141 149 189 158 136 115 110 86 96 108 119 139 +147 128 102 108 123 143 207 187 176 204 212 179 +145 133 126 205 190 167 130 155 211 226 166 190 +226 197 149 158 205 150 148 131 94 148 209 208 +201 215 201 164 158 197 146 211 210 194 120 113 +166 200 187 202 218 226 210 148 158 206 218 212 +204 222 229 185 149 153 179 207 196 189 221 192 +131 204 226 209 223 226 215 227 222 177 197 180 +161 176 207 201 108 109 189 211 154 138 100 113 +147 124 107 184 211 151 187 160 100 110 120 136 +129 134 209 154 108 129 119 159 179 123 118 109 +114 166 192 127 114 118 129 198 175 114 114 160 +159 118 115 116 116 143 180 167 141 155 134 162 +191 177 149 133 120 120 118 118 123 128 180 161 +131 131 169 145 125 125 125 149 185 155 125 145 +157 127 128 125 130 128 129 153 181 154 134 127 +128 144 137 126 128 127 126 131 162 190 138 128 +137 130 124 127 128 130 146 198 170 129 196 181 +131 134 125 127 154 204 201 135 100 129 211 192 +96 116 100 119 170 219 213 174 131 216 213 154 +170 218 211 151 113 140 139 139 196 220 195 166 +220 217 221 196 172 217 217 188 128 128 207 216 +212 213 218 175 197 197 136 134 199 191 172 210 +209 164 208 170 97 83 113 99 85 171 114 52 +55 49 75 167 209 209 208 93 74 170 191 124 +97 195 174 171 104 89 116 194 211 179 154 138 +127 157 216 187 170 144 155 170 166 160 153 170 +171 167 164 168 196 195 177 171 175 191 164 151 +137 139 153 134 130 121 116 119 118 127 125 149 +148 141 139 120 130 190 141 171 215 177 147 150 +144 140 140 135 147 148 145 146 146 147 146 140 +147 140 135 135 138 146 162 162 140 136 131 124 +139 133 128 134 137 115 126 133 118 131 131 128 +135 130 147 145 145 137 130 137 134 147 145 151 +157 159 150 143 136 146 135 129 139 131 136 149 +155 164 160 156 166 148 144 138 134 138 148 167 +200 191 199 196 198 204 198 200 201 201 191 199 +200 196 200 182 168 180 188 195 187 196 201 205 +194 192 195 186 176 168 175 181 196 190 177 181 +164 158 169 192 195 187 176 167 174 176 184 181 +189 182 188 186 171 159 165 180 187 174 138 137 +138 153 160 157 150 159 158 150 186 189 185 195 +167 156 170 165 155 129 138 129 143 154 182 144 +124 125 93 77 98 123 143 140 136 118 115 133 +124 195 196 139 155 215 208 143 144 121 148 206 +176 129 123 189 220 206 148 216 201 168 145 171 +207 176 129 96 131 198 213 209 222 189 137 165 +169 189 176 222 207 168 188 200 175 153 207 225 +192 195 167 194 204 190 153 145 172 223 221 148 +59 94 140 207 190 220 184 179 161 216 192 205 +233 230 222 227 208 197 182 182 190 187 211 177 +121 162 215 195 130 106 144 150 148 191 159 210 +195 158 188 129 170 119 108 127 136 180 200 117 +124 182 140 192 133 115 125 106 117 174 146 115 +119 114 187 208 140 102 129 172 139 127 127 118 +154 195 206 166 128 149 148 194 156 133 128 109 +117 121 121 114 121 116 165 172 140 129 167 170 +120 121 120 138 186 160 125 147 145 126 126 126 +121 123 123 133 178 160 126 124 126 128 133 123 +121 124 127 119 135 187 174 123 128 128 118 143 +144 131 123 161 199 157 176 184 134 129 155 123 +121 159 208 168 105 100 186 220 167 103 102 105 +130 196 217 194 108 165 218 195 130 176 218 213 +151 169 188 130 187 225 222 192 211 215 207 206 +154 195 212 216 160 128 172 217 195 205 209 204 +184 202 158 99 135 204 169 195 202 194 206 212 +146 77 58 65 75 146 113 69 39 37 49 57 +168 220 222 160 76 104 201 164 146 198 158 180 +128 148 194 200 184 124 110 100 114 118 191 200 +159 144 151 182 178 171 186 182 179 178 164 147 +157 199 175 146 149 181 179 150 136 144 125 126 +123 134 126 119 127 111 141 159 154 148 156 149 +140 153 135 136 182 205 147 133 147 130 116 127 +126 137 141 130 134 143 128 135 139 125 127 133 +125 125 134 138 135 135 130 131 130 133 146 136 +124 128 125 123 123 133 130 130 139 138 144 140 +133 138 127 139 140 140 147 153 160 168 158 147 +141 140 141 141 144 143 149 143 153 166 166 161 +151 150 143 129 133 131 155 153 +188 197 192 197 +201 199 199 202 196 199 195 194 192 200 182 171 +186 194 182 191 191 201 205 195 182 181 182 175 +153 165 185 196 189 175 169 171 150 165 180 195 +189 180 175 174 178 179 184 182 191 189 180 166 +164 153 161 187 178 166 143 154 148 150 164 158 +164 161 149 172 205 197 194 167 155 158 167 153 +138 117 130 120 131 154 169 123 121 130 103 104 +138 143 150 146 131 121 127 159 168 206 153 99 +135 217 192 125 141 157 177 211 167 154 160 218 +210 174 194 198 149 131 155 180 188 205 166 167 +208 212 198 213 181 157 176 159 166 171 198 229 +215 187 168 156 190 223 212 170 130 208 207 188 +139 98 115 111 201 220 216 161 153 170 190 217 +215 211 149 157 215 207 189 226 230 208 195 222 +195 187 153 190 204 191 205 139 154 215 217 171 +138 171 177 159 160 210 195 217 179 195 161 170 +195 102 85 114 121 206 176 108 153 180 182 190 +113 120 107 103 174 206 135 110 117 138 205 200 +123 120 169 174 131 125 114 107 166 192 198 149 +116 130 171 185 135 150 138 114 118 119 137 127 +116 114 144 168 136 121 138 177 136 121 120 120 +170 164 124 147 160 133 140 135 127 129 123 128 +166 171 144 130 126 135 134 124 127 164 174 128 +120 166 189 138 125 144 141 153 160 144 125 116 +180 198 181 209 184 130 138 146 124 114 186 207 +138 96 131 225 215 150 94 88 78 148 209 216 +161 136 171 218 187 139 189 222 197 139 197 167 +174 219 213 206 213 209 201 207 156 178 204 213 +202 127 123 187 191 169 182 215 202 212 184 105 +93 180 198 197 148 184 208 210 199 140 74 51 +94 150 67 66 55 52 55 48 84 201 229 210 +99 84 178 169 180 202 123 158 185 188 157 164 +191 146 135 144 141 147 161 207 198 179 171 161 +145 151 156 149 165 162 154 162 162 158 194 190 +154 153 186 162 148 131 127 131 144 136 127 126 +126 158 167 159 148 147 162 157 144 161 190 170 +144 185 192 136 124 143 136 126 129 137 130 128 +123 139 137 138 133 141 136 120 135 134 128 128 +124 129 141 141 136 139 130 135 131 117 126 118 +113 123 121 131 133 145 145 135 145 134 135 131 +140 143 136 153 154 154 166 154 135 134 137 141 +146 139 140 143 146 150 162 153 147 138 143 136 +136 139 139 159 +182 195 199 199 200 202 206 207 +198 195 191 188 195 195 186 191 187 189 188 194 +201 201 198 189 188 191 185 177 150 182 198 189 +185 176 176 160 158 168 174 184 178 177 181 171 +172 180 197 192 198 192 182 172 179 143 159 175 +159 144 136 146 125 129 154 149 168 157 158 188 +182 165 158 149 148 168 150 136 125 121 117 136 +140 168 178 140 141 146 143 157 150 149 165 169 +118 115 155 135 191 191 137 100 146 212 160 127 +174 190 194 210 167 149 194 199 209 221 213 162 +148 149 205 206 192 197 218 221 195 192 201 212 +178 169 127 114 176 206 216 176 118 130 178 215 +222 211 181 196 206 198 118 78 83 111 118 164 +202 209 192 196 149 111 213 220 215 127 85 145 +218 196 217 229 220 197 213 219 185 178 196 197 +199 196 215 161 200 227 205 156 195 195 189 174 +181 216 201 206 194 198 126 204 167 84 103 133 +150 212 139 117 205 182 196 147 116 148 105 120 +191 202 131 107 113 192 211 180 133 180 185 180 +118 109 111 121 185 187 189 141 116 121 186 160 +118 141 154 135 113 110 115 115 119 108 147 171 +149 121 125 181 153 118 115 116 162 169 119 141 +160 133 129 139 120 118 119 119 149 185 156 137 +118 121 138 127 133 180 202 147 120 136 189 162 +124 119 124 139 144 146 144 121 135 206 209 213 +207 139 114 139 127 95 130 204 187 107 103 192 +223 202 153 97 90 141 196 223 194 147 134 204 +219 181 155 207 219 156 164 189 138 182 181 170 +211 215 189 194 199 176 207 218 212 180 121 134 +199 162 155 201 211 213 200 115 64 103 198 208 +141 108 198 200 218 209 143 76 94 184 141 110 +130 129 99 126 160 181 219 228 184 135 126 184 +145 205 171 187 175 147 133 133 204 153 131 127 +124 135 146 201 210 165 148 125 131 128 135 139 +138 141 147 137 148 155 156 179 157 149 167 182 +156 140 153 145 146 140 130 133 147 155 155 144 +130 141 157 148 162 191 208 177 147 139 198 171 +134 121 128 131 136 138 145 148 133 136 120 121 +130 134 134 123 134 127 125 126 115 131 131 135 +137 126 134 140 137 133 121 130 111 126 139 133 +149 149 143 149 141 134 136 144 141 147 145 156 +150 154 159 160 138 143 147 151 149 143 141 139 +147 148 157 144 141 150 131 135 154 145 147 153 +190 194 191 185 199 201 201 202 205 198 191 190 +190 189 186 185 189 187 186 200 207 195 186 186 +182 190 188 161 159 188 198 198 190 184 171 169 +159 181 180 167 164 187 175 162 168 178 186 192 +191 188 177 181 178 175 174 176 159 121 140 148 +120 151 157 160 168 171 186 185 161 157 150 153 +171 172 145 138 125 128 137 133 156 176 161 139 +153 179 171 138 141 159 177 147 121 149 148 155 +198 146 104 99 149 199 138 135 181 176 171 208 +161 167 202 182 219 210 177 179 186 192 204 166 +131 194 225 180 146 204 218 170 115 146 177 168 +201 223 196 107 158 200 217 205 205 189 167 148 +192 199 128 134 199 209 145 204 168 200 188 171 +82 171 219 219 186 113 88 195 209 212 223 190 +201 201 225 205 200 216 212 195 218 218 221 179 +223 222 178 140 209 186 194 180 209 204 209 197 +207 139 134 212 137 86 123 125 188 208 129 150 +201 189 189 116 160 181 126 129 177 197 121 97 +153 207 204 164 153 174 191 147 97 105 100 147 +201 180 192 136 107 160 199 141 104 141 154 161 +118 116 120 120 116 127 167 171 145 131 126 177 +188 120 111 115 156 179 131 136 157 127 131 143 +126 125 119 121 125 175 155 143 125 127 143 125 +128 157 197 155 117 118 185 194 136 125 129 127 +133 158 137 120 97 137 199 209 209 170 104 123 +144 120 86 162 211 143 83 144 221 219 199 138 +97 124 197 209 213 151 147 177 218 211 179 210 +226 210 160 182 148 167 180 160 210 221 197 185 +215 178 175 206 200 198 145 115 175 205 144 182 +208 205 213 150 97 86 151 207 201 140 187 208 +198 223 212 153 137 148 102 89 96 62 52 46 +67 99 176 191 225 207 166 202 216 229 205 191 +175 160 147 145 181 149 119 109 130 145 130 143 +212 199 148 155 151 148 156 148 141 149 148 161 +160 151 147 158 175 155 160 172 174 154 141 149 +138 146 148 166 171 171 161 140 128 143 154 151 +154 199 191 178 156 133 160 205 144 111 104 128 +115 127 137 140 145 133 126 123 116 124 128 133 +114 126 125 125 130 125 129 136 130 128 129 138 +135 137 141 119 125 120 125 140 148 146 147 150 +136 140 143 145 155 155 144 156 151 156 162 166 +149 145 144 148 147 135 137 138 138 144 148 143 +141 143 141 134 145 143 153 145 +189 178 174 192 +200 204 205 189 185 196 191 187 194 188 179 180 +192 194 201 202 194 182 174 176 189 192 179 171 +179 185 207 202 187 177 165 171 175 179 161 167 +174 179 178 172 172 191 191 185 190 186 192 190 +195 181 184 170 133 140 154 133 130 162 165 171 +181 171 174 175 162 158 169 182 194 169 149 138 +126 133 128 139 151 159 144 117 137 166 158 121 +130 155 159 144 125 153 153 191 168 116 90 94 +165 205 139 140 165 170 188 205 164 186 198 208 +175 158 176 160 190 201 174 136 184 201 174 194 +160 206 198 176 196 184 136 103 210 219 169 161 +198 202 171 180 177 157 199 201 157 184 160 177 +146 123 150 204 149 189 169 182 131 210 212 221 +145 95 164 227 218 223 192 155 208 209 212 194 +207 202 206 215 210 212 217 208 228 221 184 143 +202 182 184 185 207 182 207 196 204 107 169 206 +126 75 123 130 213 208 119 191 218 207 151 105 +187 185 139 133 201 197 125 125 197 212 199 166 +161 159 198 160 126 133 114 175 188 182 197 126 +157 174 175 123 124 140 158 188 125 119 134 116 +116 137 177 170 162 124 120 172 196 136 110 108 +138 188 176 182 167 128 116 125 125 111 111 144 +167 184 172 145 133 129 129 117 109 109 190 171 +118 116 161 200 151 125 127 137 127 143 137 117 +98 80 157 205 189 209 137 141 211 182 102 109 +200 194 120 100 194 220 201 181 149 118 179 185 +213 177 154 180 204 222 212 213 220 219 206 191 +187 169 197 179 197 197 211 192 208 211 184 207 +206 189 160 111 113 194 184 143 202 199 201 186 +98 77 98 196 210 133 126 182 175 215 218 184 +139 166 110 82 54 42 59 97 108 82 149 168 +196 228 185 185 217 207 164 195 185 182 181 170 +190 172 140 126 110 114 123 117 185 218 178 151 +158 160 160 172 185 186 174 168 177 187 184 182 +174 176 171 158 162 184 175 162 170 180 184 177 +165 161 151 138 140 150 154 147 135 196 177 182 +151 139 109 192 189 131 127 113 110 120 127 136 +141 145 137 133 131 136 130 128 133 130 129 131 +128 129 129 128 130 136 118 133 138 134 141 141 +128 126 137 141 150 145 139 144 143 134 148 143 +145 149 141 145 143 147 166 162 165 140 147 151 +149 144 127 143 145 150 149 136 143 148 141 137 +150 154 148 155 +179 162 179 190 201 202 181 190 +196 196 197 195 189 176 174 187 196 202 195 187 +177 169 176 190 189 190 181 179 184 206 205 195 +186 171 164 182 179 169 155 175 181 181 165 167 +184 179 176 187 194 202 202 196 181 180 184 168 +145 165 146 121 145 174 182 172 153 146 154 148 +151 157 178 186 187 162 153 151 134 134 131 128 +153 166 140 110 134 170 150 135 131 141 145 139 +130 172 188 191 119 107 88 118 184 206 147 135 +172 182 159 182 208 221 221 205 188 174 168 179 +195 171 138 167 207 166 169 168 208 205 202 187 +161 116 99 174 215 205 157 143 148 171 191 189 +179 201 189 153 135 192 164 82 70 90 186 178 +172 195 191 181 195 209 222 201 90 97 212 228 +220 226 169 175 215 219 192 200 208 190 199 198 +202 213 212 228 223 216 186 174 212 208 189 198 +188 201 200 209 208 117 181 197 90 75 114 161 +211 184 127 207 221 178 104 140 212 165 126 158 +213 184 100 156 211 197 190 174 137 189 197 178 +127 130 120 186 194 191 161 165 192 164 182 170 +137 134 159 185 124 118 135 123 121 118 176 165 +156 127 121 145 181 160 113 113 127 184 204 206 +166 126 113 124 119 99 110 161 186 175 179 143 +124 117 126 119 116 118 177 190 123 111 135 191 +174 121 141 194 145 117 138 117 88 77 133 209 +186 204 179 117 194 200 136 95 155 213 166 89 +139 219 206 176 190 135 164 194 196 209 161 190 +194 215 219 218 215 198 219 211 172 161 169 198 +191 156 215 212 199 212 179 190 210 194 197 139 +111 129 206 165 201 207 175 200 154 100 145 190 +211 169 84 99 170 191 207 192 198 155 85 64 +73 45 39 62 86 86 67 175 139 211 226 206 +199 198 128 129 167 139 120 129 166 180 194 194 +185 178 177 171 162 210 218 168 151 153 168 169 +174 176 177 180 192 187 188 186 190 195 199 192 +171 191 202 181 182 185 179 171 162 153 168 179 +177 171 166 166 161 206 167 164 184 146 133 143 +204 146 141 137 133 121 121 137 128 136 133 127 +141 134 135 136 127 136 126 127 125 138 133 123 +140 131 129 127 137 147 144 140 138 126 130 138 +153 151 144 138 140 144 145 146 150 145 141 140 +143 139 155 168 160 156 143 148 144 137 144 139 +144 148 148 147 140 138 138 140 144 141 147 158 +176 181 185 198 197 190 188 194 200 197 192 189 +187 181 181 197 201 198 189 187 178 185 192 192 +186 184 174 177 182 194 191 188 166 170 184 194 +174 151 157 168 182 182 162 180 176 178 192 201 +202 202 200 189 180 177 170 169 170 159 145 145 +166 187 179 149 127 134 147 131 160 167 182 182 +171 150 159 147 128 111 116 147 192 170 144 115 +140 157 148 131 141 147 155 144 162 172 191 167 +123 116 120 138 189 185 161 184 176 153 107 147 +229 209 172 204 179 167 151 166 159 169 175 198 +154 196 191 202 216 189 189 129 111 121 166 213 +221 204 146 167 198 195 155 165 207 188 167 156 +150 166 84 70 75 138 206 141 197 197 208 205 +216 220 196 145 80 188 215 194 226 210 153 153 +216 221 179 197 204 196 206 199 206 211 221 231 +211 216 179 197 211 189 189 206 206 213 206 217 +195 148 210 175 139 129 144 204 215 127 182 221 +198 126 94 172 211 158 156 194 218 161 138 197 +201 198 182 134 168 207 188 164 116 174 149 209 +195 181 181 212 172 174 211 188 147 126 184 181 +123 114 134 119 137 137 192 166 166 128 119 134 +174 186 118 109 115 184 207 210 167 131 143 127 +131 102 108 148 187 150 188 144 123 155 147 125 +114 120 156 195 133 114 129 184 198 145 151 202 +165 109 126 144 102 88 139 211 205 195 201 127 +178 215 156 130 130 202 205 127 104 207 223 191 +204 178 160 209 207 216 192 172 160 191 200 221 +218 176 178 213 197 185 160 188 177 128 205 221 +210 210 199 158 208 148 167 191 143 121 162 196 +172 205 177 189 215 199 171 180 199 198 96 62 +93 164 212 161 197 201 106 69 52 43 38 36 +52 76 94 120 171 212 194 191 189 206 180 175 +187 188 171 170 170 179 179 176 169 164 167 155 +143 182 227 211 174 155 140 144 153 158 161 181 +180 179 177 171 168 166 182 184 175 169 172 169 +149 153 185 187 177 182 190 185 178 178 167 159 +171 191 157 138 178 146 123 121 191 176 129 143 +144 146 136 128 135 125 134 136 134 146 133 143 +133 123 130 127 139 126 125 133 136 148 128 120 +125 131 144 146 134 113 126 146 136 160 146 130 +140 134 136 146 144 139 141 141 131 143 157 164 +165 160 147 139 139 127 137 147 127 146 149 141 +140 136 137 139 155 148 151 167 +166 175 182 180 +179 188 179 188 188 182 185 190 196 192 200 197 +189 191 184 180 190 190 188 186 186 181 179 187 +195 199 196 177 171 181 179 175 159 144 153 176 +177 179 175 174 182 181 196 201 187 182 185 190 +181 161 169 176 178 156 166 154 178 181 153 128 +127 155 160 140 158 171 180 169 153 139 140 133 +118 130 145 176 188 156 149 131 147 141 143 140 +137 158 149 165 174 166 199 126 130 121 121 130 +184 185 196 158 121 113 109 168 210 158 191 218 +171 158 149 168 174 161 192 148 182 208 212 202 +151 174 189 131 125 140 205 219 219 197 194 201 +164 109 138 206 204 195 177 139 148 139 90 116 +88 181 207 170 213 211 212 225 198 204 129 140 +186 223 169 207 219 185 168 188 226 210 198 209 +210 210 215 211 216 209 223 223 213 212 175 207 +198 185 191 212 217 219 215 207 196 189 209 149 +141 169 172 216 196 119 192 213 160 124 102 191 +185 153 176 206 200 123 188 200 186 199 154 117 +200 199 188 154 139 169 141 209 178 184 201 208 +133 175 215 190 144 137 207 192 109 121 158 123 +128 138 196 175 176 119 131 158 176 206 153 97 +108 181 209 215 182 139 169 150 139 119 114 121 +191 158 191 150 113 148 160 135 119 118 137 195 +158 109 114 175 201 157 121 190 181 118 115 124 +100 87 119 197 212 205 201 174 124 202 167 116 +154 215 219 199 147 180 223 210 198 195 179 209 +209 221 221 200 181 192 156 197 219 176 148 189 +207 202 190 195 202 129 181 213 212 205 209 156 +199 168 117 176 169 120 130 199 187 180 207 185 +215 202 140 158 182 207 171 83 73 107 189 176 +138 212 194 150 99 95 96 90 88 72 83 162 +209 198 180 119 150 205 139 130 151 175 171 147 +140 138 135 138 147 143 153 160 159 158 212 223 +191 169 159 159 154 170 189 184 184 178 172 171 +174 159 144 167 150 149 178 196 192 180 186 188 +191 178 167 176 164 151 153 137 178 194 164 164 +174 182 160 151 175 212 174 151 155 160 162 147 +144 153 136 139 139 133 136 141 136 127 126 127 +127 135 140 135 140 139 138 133 126 123 139 143 +123 118 137 137 151 155 146 141 138 130 149 149 +130 143 146 137 138 146 148 150 162 149 161 143 +136 137 136 134 146 135 148 141 154 147 135 143 +150 146 148 157 +162 167 176 171 188 182 177 190 +181 174 187 197 204 205 200 191 196 191 186 188 +187 182 186 186 178 180 181 180 195 204 179 175 +170 170 171 160 145 149 176 175 182 191 176 179 +177 176 196 195 181 186 198 187 171 159 166 187 +168 150 159 154 146 158 155 120 138 167 166 150 +171 176 170 153 148 146 153 149 133 149 167 165 +168 149 140 123 143 138 136 145 150 147 141 155 +141 159 176 144 139 133 116 166 196 171 157 133 +103 144 187 217 184 148 199 194 148 141 169 177 +134 170 168 178 207 200 195 121 118 126 191 146 +130 192 229 210 219 172 161 128 111 146 205 192 +172 160 187 135 85 113 105 84 137 209 205 202 +201 199 219 216 207 177 164 217 213 209 177 216 +200 180 140 200 218 200 197 211 222 227 219 221 +220 215 228 208 212 205 185 212 195 184 206 215 +220 219 216 199 204 209 191 103 120 186 197 211 +156 164 217 206 126 110 146 205 153 174 190 208 +159 141 204 162 195 191 130 129 207 196 191 118 +159 148 144 206 177 198 219 191 118 184 210 161 +123 153 211 206 149 114 158 166 158 140 200 199 +188 131 140 180 198 211 179 99 104 174 216 216 +176 151 176 134 124 125 105 160 202 164 202 168 +118 128 162 151 114 119 110 196 180 103 113 194 +211 179 121 180 205 121 136 167 134 105 133 196 +196 211 216 208 129 185 198 109 141 194 201 218 +175 159 223 220 195 190 196 210 194 219 223 215 +177 197 151 174 212 179 165 159 179 219 209 210 +212 166 155 200 182 207 207 186 182 201 113 133 +200 131 79 128 205 169 207 211 180 205 167 96 +172 213 194 105 98 106 151 196 147 169 200 201 +169 131 121 114 98 118 188 205 172 178 188 105 +136 196 184 118 124 140 176 166 137 144 141 151 +169 166 161 157 167 158 192 220 217 191 189 187 +191 181 178 181 180 188 198 205 208 212 215 209 +208 205 189 192 197 192 192 190 181 190 205 187 +190 195 180 160 185 168 146 140 151 151 134 124 +114 199 187 161 156 137 146 144 136 141 140 135 +131 129 121 138 133 129 126 123 128 130 147 143 +143 146 147 134 118 136 131 123 133 131 135 138 +140 143 136 136 133 141 137 151 145 144 145 144 +139 139 143 156 156 167 161 156 139 125 137 137 +129 147 144 148 147 150 146 148 155 141 154 157 +175 181 188 189 190 181 187 182 184 189 196 202 +208 202 194 192 194 182 186 181 184 182 176 185 +189 174 180 194 197 196 188 174 162 168 167 159 +143 167 182 179 178 160 171 175 170 187 172 195 +194 195 192 187 168 146 176 189 150 141 145 123 +138 159 138 115 140 170 172 174 175 168 161 143 +130 143 157 148 154 170 168 145 145 153 139 139 +144 129 139 156 151 147 146 153 107 164 161 137 +151 154 177 189 186 158 115 102 136 186 211 200 +201 178 181 141 130 121 134 129 139 151 150 210 +185 202 140 121 131 117 190 205 204 226 207 182 +205 131 116 105 144 208 195 148 160 195 160 104 +129 146 127 169 208 221 182 207 174 216 221 198 +218 169 199 207 205 176 206 206 179 150 153 222 +202 209 208 213 220 219 213 215 215 226 227 200 +220 202 191 211 190 198 204 218 223 211 198 190 +205 215 179 113 102 158 198 201 125 194 223 197 +178 128 170 206 154 184 180 206 129 150 205 161 +206 172 115 147 196 185 182 106 149 146 157 205 +172 208 218 162 129 191 206 174 148 156 212 215 +165 143 181 191 155 153 196 213 196 123 159 192 +196 216 209 118 89 180 211 221 199 181 179 154 +110 111 121 196 204 185 198 184 121 115 156 168 +143 155 115 187 195 125 119 194 217 204 153 151 +209 135 155 187 158 113 140 188 168 208 225 221 +185 167 212 182 98 162 170 216 201 154 205 228 +215 177 177 208 181 210 222 222 188 194 190 157 +209 211 168 170 159 206 223 216 195 200 131 200 +165 206 220 215 164 207 144 104 130 187 137 67 +158 201 182 212 165 171 200 124 136 215 212 136 +106 113 105 134 171 137 131 195 184 134 82 59 +90 184 181 119 98 124 191 139 170 178 219 196 +169 192 190 202 200 188 177 182 185 172 169 151 +140 131 141 208 215 207 175 170 185 176 172 180 +180 188 186 187 199 198 199 194 210 200 185 170 +185 192 200 204 191 176 179 168 158 158 181 186 +170 145 147 121 123 149 128 107 114 178 192 174 +162 153 147 131 150 151 126 128 133 127 124 130 +135 125 125 118 135 131 134 141 139 137 139 130 +129 125 128 134 129 118 131 141 141 148 136 135 +130 126 138 145 149 150 145 148 129 140 139 137 +154 147 162 164 144 138 128 144 138 146 150 148 +150 147 151 150 159 146 143 153 +177 179 181 182 +189 189 180 189 186 196 208 196 191 196 195 186 +176 185 182 186 195 181 184 187 180 174 181 189 +195 187 178 165 165 165 159 143 154 174 178 162 +146 149 170 184 189 191 186 192 190 179 187 184 +161 165 197 180 146 143 139 125 164 160 117 119 +130 176 194 179 168 167 144 138 138 135 159 158 +157 175 167 141 150 166 137 145 147 136 154 170 +157 175 153 134 105 158 136 154 186 175 143 179 +175 120 84 138 178 143 201 182 199 186 184 131 +136 153 141 191 177 129 188 187 211 164 131 162 +148 124 129 216 230 192 143 162 184 131 121 149 +208 201 158 164 202 156 120 141 162 172 196 204 +206 207 162 208 166 226 225 217 212 198 218 167 +197 209 210 130 156 117 197 218 171 205 222 218 +220 222 211 211 222 230 217 205 213 172 205 197 +185 198 197 221 223 211 172 186 212 213 180 131 +128 174 208 198 139 216 222 195 156 157 204 202 +161 194 200 190 126 169 188 168 208 138 114 177 +175 189 188 115 150 170 172 208 190 212 208 133 +138 192 209 197 149 162 213 208 164 184 204 192 +128 176 207 216 194 109 181 200 192 218 212 143 +93 181 215 221 196 186 180 159 137 174 113 198 +202 187 189 195 138 105 137 175 175 202 124 165 +205 138 98 175 210 205 172 136 207 171 120 149 +168 133 154 194 166 191 218 225 211 156 200 205 +123 175 197 208 218 170 179 225 218 160 174 187 +199 208 217 221 218 205 190 143 205 225 195 167 +156 157 213 213 172 196 167 180 159 175 223 218 +165 194 181 105 86 150 181 113 77 184 178 190 +197 144 208 182 100 206 225 164 121 93 92 118 +179 138 85 113 197 187 111 116 189 187 162 147 +137 146 205 187 178 149 199 187 190 192 162 162 +162 176 177 186 170 158 168 147 143 131 130 186 +215 213 186 162 174 186 185 184 187 188 180 181 +175 177 175 172 184 184 172 153 171 184 186 182 +167 149 138 157 150 128 134 154 146 156 172 167 +143 147 144 146 137 167 208 159 151 151 131 131 +139 159 144 126 137 120 129 116 126 128 125 135 +128 136 143 137 154 151 141 137 117 125 124 134 +141 136 134 144 160 144 136 134 124 130 124 130 +145 160 153 137 144 134 139 145 143 150 155 156 +144 137 139 141 146 148 150 148 147 147 138 140 +156 153 146 140 +185 178 177 188 194 186 192 194 +194 201 200 188 187 186 188 181 177 179 189 199 +196 194 190 179 175 175 182 185 189 181 166 157 +171 167 159 145 167 164 141 137 157 176 185 190 +196 187 187 175 167 184 178 167 180 192 181 166 +136 146 157 147 159 147 126 131 157 184 190 174 +167 147 150 148 125 150 171 175 182 177 144 136 +170 159 161 162 146 165 169 156 178 170 138 129 +120 127 126 174 177 154 140 169 125 99 153 169 +125 162 204 176 156 192 164 149 145 114 168 201 +147 148 194 205 195 165 177 166 145 184 205 225 +219 157 96 160 179 119 134 205 208 155 158 196 +141 130 166 179 190 196 208 179 190 170 188 188 +171 232 221 205 213 212 180 204 213 218 171 103 +141 172 220 194 167 213 200 184 161 161 164 213 +229 230 202 218 210 212 209 188 185 159 201 226 +225 206 175 189 213 207 156 146 153 164 216 205 +178 221 215 198 121 165 215 199 192 210 211 175 +160 170 192 194 188 119 141 186 195 216 186 129 +164 192 180 204 180 212 207 116 169 212 209 198 +143 171 212 208 187 184 209 191 141 202 208 206 +185 104 192 205 178 208 210 165 137 189 217 221 +190 209 195 156 137 192 137 210 179 181 189 202 +176 113 106 160 174 206 126 146 210 175 96 139 +205 209 187 136 205 196 113 171 184 148 198 196 +186 189 188 211 211 182 168 216 155 156 194 196 +216 205 151 213 223 180 195 176 194 194 209 221 +211 209 191 160 182 221 212 167 154 119 195 216 +188 177 201 164 177 149 206 215 212 176 198 110 +78 74 172 140 124 126 197 178 205 141 167 211 +149 187 229 174 117 109 131 63 153 189 94 59 +116 202 205 199 165 104 75 77 84 73 168 198 +155 116 158 187 141 197 143 93 93 131 159 148 +145 140 147 155 143 146 136 135 201 212 213 170 +169 175 170 158 148 158 161 161 177 178 184 164 +179 188 192 179 162 150 154 153 145 130 128 128 +159 171 151 171 169 168 174 176 176 185 167 174 +160 133 206 165 134 136 134 111 120 143 161 134 +117 133 109 124 118 123 135 131 126 127 144 123 +115 137 135 130 121 121 127 120 140 137 141 143 +150 143 135 138 124 125 134 124 148 154 156 154 +138 149 148 146 148 162 156 156 151 141 148 149 +141 145 150 145 146 154 151 150 169 151 158 148 +182 174 186 185 191 192 194 184 190 190 176 174 +177 192 186 189 180 195 191 192 197 190 178 175 +171 174 187 191 179 164 160 161 174 174 150 143 +166 145 148 160 169 187 192 195 201 194 174 167 +187 187 194 189 190 182 156 135 140 171 167 160 +171 143 139 141 172 188 186 176 151 138 139 130 +143 151 178 178 182 164 136 134 154 159 166 165 +158 145 157 176 176 155 129 137 123 121 144 165 +149 141 160 147 141 158 149 130 160 213 188 146 +154 200 137 125 113 109 184 156 129 196 202 199 +146 171 165 174 195 218 202 201 174 188 133 186 +174 129 200 205 169 171 195 154 131 172 210 213 +181 177 170 144 196 159 210 160 191 226 216 206 +217 143 184 215 220 160 107 128 154 217 200 110 +117 189 137 177 84 121 134 225 231 213 172 221 +209 212 205 198 175 160 186 220 213 195 189 195 +219 200 158 155 157 168 210 165 199 219 188 188 +135 162 211 195 200 212 209 174 182 181 200 205 +162 131 190 178 210 205 179 176 190 179 194 194 +165 212 180 88 172 216 217 197 146 191 218 210 +194 181 211 194 176 205 200 187 167 115 202 202 +185 187 189 172 175 180 206 220 200 218 211 178 +156 199 155 202 169 188 200 210 202 127 105 156 +169 209 137 138 211 202 111 117 199 215 204 151 +190 210 126 166 200 177 197 185 195 197 153 205 +209 202 167 209 187 147 176 169 195 212 175 197 +229 216 196 170 192 167 209 219 187 199 195 189 +192 209 212 182 121 107 197 213 208 184 197 156 +177 197 195 194 225 186 210 155 90 95 124 158 +98 95 172 204 170 197 141 207 164 166 223 186 +109 66 87 110 68 201 201 113 96 169 221 184 +113 86 88 97 84 74 126 196 130 97 123 192 +162 199 192 171 137 138 131 170 169 151 130 121 +129 116 130 124 157 212 217 196 166 165 172 169 +169 162 153 149 143 139 139 156 165 179 197 179 +168 165 159 176 174 179 172 167 159 178 209 201 +181 187 180 171 166 155 140 158 155 120 194 187 +139 137 129 110 108 128 121 131 137 120 119 120 +124 134 129 126 128 127 133 120 109 109 134 130 +124 124 134 131 137 146 145 146 138 130 140 134 +129 125 127 133 141 144 151 155 143 148 143 138 +140 147 151 155 148 162 149 140 149 147 139 135 +149 148 147 160 159 166 155 149 +175 176 177 185 +195 192 181 180 179 174 177 178 181 189 186 176 +180 191 184 199 188 181 176 158 177 184 192 195 +178 159 150 165 165 141 129 141 169 170 177 182 +197 190 189 191 184 171 175 186 192 187 184 192 +185 160 150 149 176 168 158 182 164 160 155 153 +172 195 194 169 149 141 134 134 144 153 176 172 +176 150 127 144 166 153 160 175 161 144 165 191 +161 134 150 135 116 125 148 148 128 136 177 185 +181 146 139 126 197 205 146 154 191 185 117 116 +104 161 179 125 164 212 208 153 150 159 174 209 +215 195 188 164 136 156 186 207 185 186 198 168 +162 197 169 148 190 212 178 135 177 179 114 138 +206 188 206 161 220 228 225 218 154 116 212 221 +194 111 162 172 177 221 155 79 121 201 128 160 +154 107 130 225 225 168 155 217 177 208 204 191 +175 154 192 219 199 188 192 202 213 198 194 182 +171 191 204 140 197 210 170 202 157 191 206 180 +206 211 200 182 178 136 191 208 141 144 209 174 +205 195 175 191 195 181 195 181 177 213 174 102 +165 210 211 174 138 197 209 198 196 155 211 198 +171 204 198 179 162 113 197 213 191 172 176 175 +185 176 202 209 209 218 208 166 191 210 178 207 +153 174 186 204 210 138 97 165 188 213 135 124 +199 205 113 107 189 215 207 168 187 218 158 120 +197 190 191 170 166 185 179 202 215 209 192 202 +211 160 190 177 167 200 204 181 225 223 198 154 +191 176 208 220 196 155 202 199 216 210 184 208 +164 100 182 188 192 191 182 184 167 218 187 139 +207 210 191 200 125 111 141 170 137 57 120 202 +191 207 162 177 191 147 208 201 97 83 62 94 +126 177 225 181 166 147 168 204 147 87 72 104 +103 109 103 161 121 72 76 159 137 189 157 164 +189 164 146 156 176 182 155 141 129 123 130 136 +125 191 206 215 179 176 189 185 181 182 170 164 +157 155 169 162 177 184 170 174 185 184 167 162 +157 159 161 159 140 153 206 177 148 143 135 144 +140 133 133 130 136 129 185 187 137 119 118 124 +115 116 128 126 130 118 116 114 121 128 133 136 +118 113 141 127 135 128 131 131 125 121 127 135 +134 146 155 147 145 135 145 140 116 129 125 129 +139 145 151 151 144 129 144 144 137 156 151 155 +165 153 158 155 151 141 141 136 128 146 151 157 +169 164 150 154 +171 172 188 195 189 191 180 186 +186 175 178 184 192 185 177 174 185 188 182 171 +179 171 156 175 176 184 185 175 158 164 180 175 +165 148 139 171 190 186 188 200 197 184 187 181 +180 174 177 180 184 175 189 189 167 159 154 171 +181 170 170 182 185 169 164 172 181 191 189 179 +151 144 140 140 137 157 160 157 150 124 133 161 +167 156 158 165 148 168 182 167 149 128 147 144 +125 148 162 141 129 159 192 182 129 97 159 150 +200 147 110 181 204 167 116 87 134 167 130 156 +208 215 153 139 143 175 220 208 172 204 206 155 +116 119 182 212 206 204 144 167 201 172 186 210 +200 144 130 165 194 135 108 178 213 207 209 207 +218 222 225 204 118 141 217 215 158 187 159 133 +210 210 148 68 103 182 110 125 157 76 167 223 +207 126 154 204 177 205 198 168 159 136 202 207 +151 168 195 202 210 190 176 182 177 198 201 189 +216 188 136 201 194 201 164 189 219 204 207 191 +147 113 191 201 129 177 196 179 208 178 171 191 +192 195 199 181 184 216 155 117 188 211 212 191 +146 196 199 186 171 169 201 168 191 210 194 185 +161 116 204 212 178 185 180 156 182 195 187 202 +210 204 202 170 202 187 184 205 127 133 160 198 +210 155 100 190 188 211 136 121 190 212 124 100 +175 213 202 178 184 219 199 135 191 211 202 188 +171 184 178 207 222 212 209 205 221 182 195 175 +179 182 209 208 216 225 207 146 182 178 201 215 +207 153 192 215 217 215 172 210 206 134 171 157 +126 199 160 194 199 200 177 145 164 210 186 202 +118 129 125 116 174 137 68 138 211 200 207 141 +194 146 204 206 105 49 96 135 143 153 218 219 +178 123 88 144 181 123 69 63 83 120 115 141 +143 110 120 161 187 199 144 106 139 161 148 136 +141 146 176 159 150 156 148 151 151 156 212 216 +207 161 169 162 162 176 181 190 182 170 157 155 +160 153 155 150 160 175 158 148 153 153 146 118 +123 166 178 174 150 133 143 137 143 127 126 120 +119 104 148 186 138 113 129 115 119 114 124 127 +138 129 111 127 130 130 136 128 131 120 121 120 +120 133 125 130 140 120 129 134 131 140 144 148 +140 150 138 126 129 123 133 133 147 154 143 144 +135 140 139 136 145 143 159 164 155 151 145 149 +134 135 129 116 130 136 140 156 169 158 151 150 +175 177 192 194 185 184 177 182 177 171 176 174 +170 179 166 174 186 189 181 181 181 165 162 178 +186 189 184 179 180 179 177 174 160 151 151 174 +192 196 207 201 192 191 189 186 186 168 178 188 +177 172 178 159 158 164 147 150 162 169 150 174 +171 165 176 178 184 187 175 156 154 147 147 151 +151 165 169 168 147 140 148 177 182 177 153 160 +167 178 166 154 134 143 157 146 140 158 149 137 +126 175 195 147 136 125 146 165 161 88 134 187 +194 134 115 102 179 146 124 198 217 157 140 118 +160 220 207 164 136 212 176 176 117 131 177 215 +215 153 148 188 217 205 212 191 149 136 166 187 +168 125 143 201 210 220 202 219 220 229 227 176 +92 158 223 211 194 135 99 180 215 153 89 114 +151 172 100 80 145 103 204 226 188 102 195 220 +210 196 153 143 146 156 207 197 155 120 134 192 +209 204 180 192 181 209 196 208 218 162 119 184 +207 201 162 213 220 209 210 185 134 113 187 198 +160 199 176 170 177 175 166 190 199 199 196 169 +204 208 157 160 209 211 213 194 161 197 170 176 +168 178 182 147 184 212 204 198 170 134 208 212 +180 199 194 181 198 207 171 196 209 212 196 171 +197 160 195 205 115 86 160 201 206 141 102 179 +190 212 149 125 187 215 150 107 138 201 206 177 +181 218 213 167 189 220 206 187 175 182 170 198 +215 215 212 197 218 204 188 188 191 196 210 211 +192 225 216 156 182 197 211 196 215 176 137 202 +222 206 156 184 216 168 181 133 80 160 199 185 +208 187 190 162 120 191 204 208 149 77 78 92 +135 178 140 90 148 212 204 161 151 167 186 220 +140 87 104 84 92 127 204 211 205 171 167 144 +162 182 140 138 102 100 102 105 190 171 131 148 +201 209 198 181 169 155 182 177 162 171 160 169 +164 146 159 168 160 181 204 216 217 185 176 177 +178 168 186 192 179 169 186 182 169 154 153 148 +148 145 140 140 127 136 133 120 124 175 154 128 +141 129 111 126 130 141 139 153 140 110 153 186 +137 125 127 135 123 119 119 127 141 150 140 124 +125 127 114 131 118 118 120 111 119 114 124 129 +134 137 143 138 136 135 148 153 141 149 151 126 +125 137 134 149 139 151 151 139 147 146 143 133 +137 155 153 160 164 157 146 141 134 127 121 126 +125 129 136 151 159 153 141 141 +178 178 188 188 +186 180 182 175 168 172 177 178 177 170 180 185 +195 187 187 185 175 170 185 189 197 180 175 181 +174 172 164 159 155 138 148 166 199 204 199 194 +190 187 181 191 186 188 196 182 177 157 148 171 +180 172 162 170 161 155 157 157 150 161 170 191 +189 171 175 156 154 145 151 154 153 172 167 144 +135 145 155 178 187 172 167 182 178 169 158 143 +147 141 150 155 166 154 154 146 158 195 155 133 +151 135 123 161 125 86 179 137 129 105 93 170 +158 116 146 215 176 135 116 165 210 199 167 131 +185 194 158 191 144 107 171 207 197 128 176 220 +190 194 201 166 157 175 165 192 143 144 165 210 +222 215 201 216 206 227 221 125 109 207 209 162 +116 116 126 201 177 98 143 156 164 143 87 62 +94 178 227 223 179 158 215 216 207 157 139 170 +158 187 216 189 156 160 120 195 185 119 118 160 +175 212 196 217 212 167 133 180 209 192 168 217 +216 207 199 159 129 138 204 190 170 201 170 179 +172 196 151 182 189 186 200 166 204 200 167 168 +189 196 206 174 159 199 157 169 158 195 196 153 +195 217 204 196 177 149 212 213 177 204 208 187 +189 213 164 179 200 201 192 201 199 139 192 200 +119 97 162 199 213 153 127 188 184 213 150 136 +168 215 180 111 136 205 206 187 185 211 217 192 +174 212 191 140 155 181 157 185 212 208 210 200 +207 211 201 207 187 179 190 215 195 219 220 187 +176 202 209 178 218 207 144 167 218 209 166 145 +213 192 190 157 76 87 184 212 213 206 177 171 +109 115 200 219 175 80 63 53 64 154 137 83 +90 184 204 207 127 179 171 220 155 78 146 116 +109 124 169 209 206 211 176 172 164 177 179 177 +182 179 130 106 188 186 137 141 181 206 175 177 +178 170 165 164 178 166 156 165 170 149 137 139 +138 134 159 211 207 206 169 177 170 154 139 136 +146 128 130 149 174 184 157 148 138 134 136 133 +149 127 127 127 140 156 128 133 146 151 145 143 +154 151 139 147 137 117 126 179 146 126 128 129 +123 107 126 121 130 139 140 149 136 123 126 123 +118 114 129 119 117 123 118 137 141 135 139 141 +124 128 149 137 137 143 133 130 117 123 140 143 +149 148 148 149 155 150 140 145 130 149 153 157 +167 156 151 141 135 123 119 126 121 146 151 147 +156 149 148 151 +159 174 188 190 192 189 174 166 +174 171 181 169 162 172 184 191 196 195 185 179 +176 176 181 186 158 148 170 166 165 157 153 147 +151 155 156 182 199 204 204 185 167 178 178 182 +189 192 179 165 158 160 165 184 185 176 154 161 +157 146 146 160 151 153 171 177 165 170 170 171 +155 156 161 153 157 161 150 135 137 148 169 192 +177 166 172 184 172 157 135 130 138 148 166 177 +169 170 167 140 186 168 129 146 148 120 116 151 +83 134 178 108 144 136 134 166 111 99 189 194 +133 105 157 205 187 144 137 145 198 161 133 153 +184 119 178 192 212 205 217 200 178 194 164 162 +184 161 164 146 154 180 219 220 218 212 215 209 +207 219 207 123 189 221 187 191 137 129 168 200 +120 119 135 120 87 141 95 76 88 206 228 220 +189 206 207 209 208 169 151 169 191 202 218 191 +156 192 151 198 165 105 127 164 161 213 199 216 +198 145 131 174 216 177 166 223 206 206 195 147 +125 146 199 204 189 177 165 174 159 194 151 196 +205 218 202 162 206 201 187 187 174 194 202 155 +167 206 178 176 161 204 200 162 201 213 206 194 +195 198 216 209 189 220 212 197 185 204 151 198 +195 185 198 209 187 135 205 202 151 130 169 207 +216 184 165 195 185 215 159 157 158 213 187 121 +150 211 212 187 177 211 218 195 159 206 188 141 +154 174 171 169 209 197 213 206 189 206 196 195 +157 134 158 208 205 208 221 213 168 210 205 138 +204 211 192 157 215 220 196 133 188 225 211 159 +111 80 109 201 215 217 178 164 139 135 171 222 +209 106 58 49 55 65 160 88 49 108 204 215 +166 160 177 215 200 94 133 149 85 68 67 169 +177 208 176 176 176 149 157 120 90 128 120 144 +171 200 146 138 162 205 185 181 172 172 170 162 +161 192 172 146 157 160 151 134 140 136 120 184 +210 217 194 161 171 162 138 135 130 139 133 141 +136 153 162 166 168 162 140 140 146 147 138 133 +167 150 136 133 144 168 148 137 155 139 127 121 +125 116 135 175 147 134 136 128 135 119 107 115 +118 115 127 135 133 131 129 130 126 118 121 127 +120 120 115 123 146 146 153 137 133 114 129 147 +144 147 143 120 124 121 131 138 135 126 136 147 +143 153 143 136 141 126 137 155 167 168 144 144 +140 140 126 127 135 128 145 151 151 158 144 146 +159 170 192 192 179 178 179 169 176 177 167 153 +161 174 182 189 194 192 189 184 172 169 169 164 +165 174 178 178 175 168 161 146 156 156 171 192 +204 202 190 175 168 172 177 189 194 179 162 168 +164 164 178 184 174 159 156 150 147 148 156 171 +159 167 179 171 159 169 171 177 165 159 156 165 +164 156 135 129 139 165 169 181 176 178 171 180 +158 140 118 137 127 153 146 133 138 147 144 172 +177 157 131 134 121 111 141 128 84 167 136 165 +194 185 190 139 102 155 187 129 123 168 205 175 +143 159 144 199 185 136 95 131 187 155 191 200 +212 205 211 174 185 157 165 191 170 155 175 156 +211 221 187 204 221 209 220 212 190 216 215 168 +226 215 202 128 116 120 208 192 131 145 133 86 +74 162 135 95 145 221 226 209 165 199 216 211 +177 153 175 184 161 205 220 195 167 186 169 195 +162 130 134 143 185 212 198 202 176 146 135 150 +208 160 184 217 187 205 188 147 119 151 199 210 +198 137 153 134 155 185 151 192 205 205 205 187 +204 196 189 182 169 195 187 141 192 201 188 175 +164 204 197 176 204 220 205 185 195 188 208 205 +182 222 226 216 189 190 180 211 211 201 205 210 +177 184 225 229 200 139 164 208 219 196 166 195 +186 210 159 164 165 209 189 121 154 218 218 186 +177 206 212 208 158 199 179 126 144 160 176 154 +201 177 209 210 192 185 210 204 137 120 127 184 +213 200 217 218 191 212 205 161 192 201 162 165 +207 202 204 149 145 212 215 139 136 111 166 154 +208 227 206 146 95 119 154 225 226 154 69 66 +49 52 102 110 54 48 151 216 208 146 176 202 +210 110 102 167 95 54 49 111 194 156 192 131 +121 153 145 143 108 85 96 149 136 192 171 124 +111 189 166 160 169 192 181 169 166 168 192 177 +147 145 154 160 166 162 143 140 209 206 210 170 +179 181 182 178 167 170 165 127 120 118 119 137 +155 165 155 134 128 139 119 143 197 161 141 145 +149 157 164 138 126 138 127 126 121 100 126 162 +148 146 136 138 135 130 128 107 113 119 127 115 +121 134 129 138 117 115 130 119 120 119 117 114 +131 138 148 143 126 124 149 145 151 154 140 127 +119 139 130 136 140 129 147 146 140 153 143 138 +134 143 131 148 161 160 149 136 129 136 126 130 +123 120 127 140 141 147 145 135 +164 177 185 180 +179 180 182 188 184 172 157 153 166 175 190 185 +187 196 194 180 162 165 164 168 172 182 178 182 +174 168 162 157 166 177 185 189 206 188 180 170 +172 182 181 192 179 160 167 177 190 184 184 188 +151 145 151 145 147 160 174 164 162 171 176 184 +168 166 189 180 166 161 159 174 170 156 131 137 +160 168 176 180 175 174 168 172 165 135 123 129 +149 137 144 144 141 135 141 168 166 123 113 134 +119 119 154 138 123 164 108 104 190 219 151 105 +96 190 149 117 164 197 162 153 150 154 170 211 +146 130 120 115 175 215 208 197 208 207 196 192 +138 154 190 172 140 184 182 217 206 164 168 210 +220 223 207 209 186 226 202 210 229 200 127 113 +113 177 211 149 135 144 143 84 80 109 93 128 +200 225 227 199 150 209 206 179 192 134 103 93 +124 211 220 197 178 182 205 196 186 180 191 151 +182 209 206 192 166 180 121 148 202 150 189 208 +196 197 167 125 110 170 197 205 191 130 140 124 +149 164 171 184 192 196 181 140 195 192 180 165 +153 194 176 155 195 181 167 167 177 212 211 202 +209 206 190 175 177 175 205 207 190 222 216 182 +180 210 194 212 204 192 195 217 196 146 194 217 +178 143 140 199 220 205 164 195 182 199 160 156 +164 213 196 125 158 212 215 185 164 195 210 213 +176 198 190 130 130 157 166 160 202 168 189 213 +200 172 213 207 149 117 116 148 208 212 218 218 +208 219 202 134 179 207 144 143 213 175 218 206 +150 179 207 107 98 167 158 97 155 222 220 157 +89 97 124 208 230 190 78 74 77 48 66 156 +99 37 46 187 223 185 187 170 213 175 94 176 +121 54 57 76 191 160 179 179 127 137 172 157 +167 155 111 156 128 170 201 172 169 208 164 164 +168 190 187 166 159 154 151 185 186 166 143 129 +160 155 154 155 192 206 211 185 148 156 150 157 +186 189 179 145 111 114 104 109 115 144 156 158 +169 146 137 175 191 168 150 153 145 140 162 141 +128 124 127 128 103 115 136 159 145 137 136 123 +143 138 119 113 110 121 120 125 129 130 140 126 +129 128 133 123 123 129 113 119 126 123 137 140 +138 131 138 147 159 157 131 123 126 131 135 144 +138 139 149 141 145 149 141 141 127 119 136 151 +148 158 159 144 138 134 136 131 119 130 140 130 +130 139 145 143 +174 192 182 177 186 175 181 178 +164 154 160 165 181 190 188 186 188 181 169 176 +177 175 178 179 175 186 188 189 169 157 160 171 +170 177 185 200 194 190 190 176 182 182 180 180 +174 156 180 190 191 196 199 172 149 147 151 143 +154 155 167 178 157 168 181 185 176 172 184 180 +169 162 169 175 161 136 123 150 166 176 184 184 +178 174 180 184 158 123 120 136 144 144 156 151 +144 149 169 174 158 120 130 135 121 117 115 116 +178 153 84 76 179 186 100 92 174 191 125 172 +208 181 143 127 140 143 201 182 125 134 156 138 +189 212 176 179 216 202 201 156 135 198 189 160 +164 206 218 199 159 161 170 216 220 208 208 188 +213 228 223 227 187 103 154 171 136 212 172 168 +123 89 113 85 92 136 175 197 227 229 222 172 +130 215 191 148 184 98 74 66 120 225 219 208 +188 204 212 201 207 196 151 144 194 209 205 155 +110 139 149 178 210 153 202 196 197 186 150 129 +129 169 195 209 185 125 139 141 150 144 167 143 +194 188 166 129 188 154 161 180 154 204 171 137 +192 174 148 194 190 199 201 207 209 215 200 164 +176 182 200 209 201 221 208 162 190 201 187 216 +196 192 194 221 199 145 169 196 146 131 167 202 +217 211 159 191 177 207 160 139 162 216 205 128 +127 196 217 184 151 179 194 211 189 189 200 151 +127 147 167 157 189 169 145 205 210 175 198 215 +165 124 133 126 168 212 211 213 215 217 208 131 +133 197 168 160 201 153 201 220 185 169 210 156 +135 189 126 102 89 189 229 198 110 105 94 157 +223 205 96 70 65 58 77 108 147 72 43 117 +215 204 133 189 215 210 128 159 166 99 52 57 +130 166 108 182 165 143 144 174 181 157 143 174 +164 165 201 164 147 209 206 171 169 192 178 174 +164 149 134 146 181 196 186 154 135 153 169 156 +168 218 199 216 190 159 146 155 130 143 161 168 +167 172 170 161 160 160 155 156 149 168 158 194 +167 144 150 140 146 143 151 167 143 129 138 136 +128 123 157 149 135 129 119 121 131 135 127 136 +128 113 118 127 123 131 129 131 125 128 127 120 +124 120 129 123 123 123 136 139 139 130 139 167 +153 139 131 119 124 139 129 135 135 134 136 138 +136 135 140 137 147 134 131 149 156 153 150 153 +137 131 130 124 125 123 121 127 113 138 130 140 +186 182 178 184 179 179 174 149 143 159 164 176 +192 189 187 175 165 169 177 175 188 192 181 172 +188 184 177 185 168 160 160 160 174 179 189 188 +190 171 170 185 185 167 166 171 176 169 184 188 +197 200 189 172 157 168 145 138 150 164 180 171 +159 162 176 188 186 176 184 168 175 169 182 180 +147 148 135 177 187 182 177 157 166 177 174 168 +133 127 119 130 147 157 155 145 131 141 158 168 +146 136 135 131 119 102 72 73 184 99 126 129 +192 125 84 144 210 167 179 213 182 121 104 105 +120 164 208 150 127 174 165 182 209 200 160 155 +216 198 191 137 185 201 159 169 216 204 186 167 +165 194 186 217 204 195 209 189 199 216 229 212 +133 170 187 138 176 207 172 100 83 130 164 128 +194 188 188 220 229 218 219 164 172 188 146 134 +189 137 94 64 164 223 212 215 208 217 212 199 +206 210 181 156 206 212 202 157 111 117 148 208 +213 188 208 186 196 191 166 160 140 161 196 195 +169 127 144 135 154 147 146 139 198 189 155 139 +188 155 150 167 150 195 170 151 172 144 136 145 +184 189 140 186 207 216 182 157 175 177 196 200 +189 220 206 141 189 178 179 215 182 171 175 209 +176 139 180 202 164 135 165 204 220 205 140 184 +187 211 176 139 170 211 208 128 127 185 212 194 +140 162 190 212 202 171 206 169 120 144 141 170 +175 174 127 189 212 194 174 213 157 133 145 141 +133 198 210 215 215 212 211 136 116 181 185 160 +177 98 172 215 206 160 218 202 179 145 95 97 +83 109 208 222 182 119 95 110 181 212 165 80 +79 68 69 74 144 119 57 57 155 219 164 159 +205 223 181 116 164 138 117 88 90 175 105 120 +175 115 92 119 161 170 195 178 148 149 198 195 +177 210 208 191 187 187 168 172 171 158 151 140 +133 150 179 184 174 165 170 169 164 208 207 198 +212 191 191 174 170 174 171 160 180 182 176 169 +177 178 174 167 154 145 151 207 170 130 129 140 +125 127 136 154 159 148 144 144 146 128 160 147 +119 126 135 120 131 134 124 130 135 128 121 124 +120 128 129 134 126 123 126 120 129 123 114 118 +121 121 125 137 136 133 146 153 155 137 121 123 +127 134 134 129 144 131 144 149 138 139 135 139 +143 136 138 145 151 155 154 159 155 145 139 140 +123 127 121 119 121 127 134 137 +185 185 176 177 +180 166 155 140 157 159 175 185 189 185 171 177 +187 187 188 189 187 188 182 187 177 172 174 176 +161 165 161 168 182 178 178 178 181 174 189 181 +167 156 159 170 175 184 179 191 201 192 172 157 +149 154 145 140 147 164 167 168 159 147 174 185 +185 180 175 159 174 172 189 161 161 157 161 186 +178 162 148 145 164 182 171 155 131 114 127 139 +146 145 145 124 134 153 145 158 151 134 127 125 +107 82 70 127 174 128 119 181 206 138 126 196 +213 201 218 170 105 90 99 121 130 204 185 126 +158 155 178 196 160 186 186 191 217 188 159 174 +196 170 195 219 197 190 180 182 177 187 174 213 +208 211 188 211 185 206 229 194 189 187 113 123 +210 206 140 98 162 176 155 205 216 202 209 225 +208 213 219 170 210 166 133 102 176 154 115 133 +208 223 220 221 221 220 200 177 207 223 217 172 +199 215 185 125 111 118 151 211 205 204 207 167 +148 178 167 153 169 176 196 187 161 129 130 135 +149 148 148 133 195 182 135 133 195 156 157 161 +143 188 161 162 170 145 129 127 188 178 127 194 +207 196 155 149 161 180 199 199 201 219 192 153 +198 179 176 213 170 160 200 206 182 150 181 199 +153 143 172 195 216 196 137 186 192 199 178 127 +164 201 204 139 137 172 210 190 143 145 165 195 +206 167 192 181 120 123 119 165 177 184 158 164 +215 200 153 198 164 107 131 135 145 168 209 212 +204 213 210 140 116 153 179 192 176 89 146 180 +206 213 213 221 200 127 88 80 79 90 150 206 +165 154 137 145 172 184 211 153 79 64 80 64 +78 162 109 53 80 201 199 133 206 222 199 190 +126 70 96 117 90 178 165 102 178 171 120 104 +138 168 207 165 124 145 161 201 191 206 209 169 +159 185 186 156 160 180 160 146 146 140 141 185 +195 184 179 172 164 175 211 164 200 179 151 166 +172 169 195 184 165 167 166 162 167 175 177 181 +176 151 175 208 162 165 151 146 141 137 134 135 +171 153 133 130 131 148 151 129 117 110 118 115 +118 125 118 117 125 141 125 129 126 120 138 131 +134 131 116 116 119 119 117 120 121 120 134 125 +141 138 144 159 150 134 123 110 129 124 143 130 +129 144 141 151 144 140 138 144 147 136 137 133 +146 156 154 159 159 146 143 145 131 126 140 120 +117 124 117 135 +182 177 176 177 165 159 150 155 +155 161 180 190 190 178 161 177 188 186 190 187 +186 175 181 186 180 176 170 159 169 157 165 182 +179 171 178 176 179 181 180 178 168 151 158 160 +165 181 192 194 192 177 162 146 153 146 139 161 +162 167 167 158 159 153 175 177 182 181 165 172 +175 174 179 178 177 170 164 159 154 160 137 158 +174 188 179 154 134 119 131 143 135 143 133 114 +145 154 149 162 146 119 113 116 92 85 59 164 +140 104 136 159 205 191 178 202 219 210 165 109 +103 107 130 144 165 209 143 120 171 194 200 178 +153 157 187 210 210 146 162 161 175 212 211 175 +189 165 187 165 180 182 170 220 215 204 211 196 +153 210 222 192 198 143 109 179 212 147 131 179 +211 210 206 207 217 207 172 219 197 194 213 208 +209 165 119 99 167 198 190 205 226 227 217 221 +209 215 206 185 204 206 201 185 195 217 176 136 +126 135 147 197 177 211 208 161 153 175 138 146 +185 177 202 171 167 156 145 148 144 140 151 161 +199 178 136 144 191 156 148 153 147 189 151 172 +145 119 114 127 177 154 129 201 189 194 136 134 +144 178 175 204 207 212 184 170 201 151 161 197 +170 166 205 194 192 144 179 185 135 133 157 182 +215 197 133 181 196 185 167 133 141 187 207 130 +127 154 208 199 138 144 165 208 204 166 181 195 +136 130 125 149 168 187 177 155 198 208 164 184 +190 119 123 117 127 162 207 218 190 197 212 149 +100 113 158 201 194 105 128 158 162 200 185 211 +184 139 109 83 77 76 93 177 196 130 158 162 +130 174 226 216 140 77 80 64 51 134 156 94 +41 135 210 168 172 225 181 194 198 162 76 114 +133 178 186 133 104 186 174 160 188 148 169 210 +157 124 151 196 191 199 215 182 168 162 164 172 +180 169 164 179 168 168 169 178 195 198 161 169 +172 157 201 186 177 199 146 115 99 123 138 160 +169 164 160 160 170 157 154 153 172 185 194 194 +149 131 135 144 129 126 114 109 126 172 154 130 +138 147 140 108 102 106 99 114 106 117 120 111 +124 134 130 126 131 127 131 144 153 136 123 107 +109 97 121 119 114 121 119 133 121 136 147 156 +151 137 125 115 117 126 129 120 126 121 135 149 +145 155 148 133 149 150 135 134 146 149 158 158 +153 150 150 140 129 128 127 116 104 110 121 126 +177 161 165 171 168 162 156 158 147 159 174 184 +184 179 185 186 185 189 186 181 176 176 180 182 +181 174 171 171 162 161 177 181 182 180 160 167 +178 153 169 166 157 160 160 170 178 176 192 195 +188 168 165 153 144 155 151 150 153 158 160 162 +157 154 176 189 174 174 177 171 181 176 174 170 +187 169 154 156 155 159 155 150 176 192 162 145 +138 147 137 129 146 128 124 133 157 166 158 153 +131 130 118 106 110 89 89 181 107 73 131 115 +197 202 137 206 213 143 117 103 109 129 147 105 +189 185 102 148 192 172 166 115 164 156 190 212 +205 153 169 192 221 204 170 188 156 147 200 168 +176 160 186 218 212 216 206 158 174 225 207 206 +178 151 136 201 181 180 199 213 204 167 167 217 +202 133 201 210 194 178 215 190 207 184 178 177 +167 202 165 192 221 223 222 222 218 216 211 211 +209 211 207 198 206 207 130 130 133 139 133 177 +131 196 196 161 108 145 138 133 164 190 197 150 +143 156 148 136 144 127 127 165 197 179 129 149 +202 165 127 144 154 175 156 174 126 120 118 131 +177 149 146 191 169 187 125 135 145 177 172 205 +206 218 201 197 192 128 170 206 169 174 195 181 +192 138 175 176 129 135 157 181 217 197 139 176 +204 205 186 141 129 178 205 138 114 121 197 205 +145 149 170 206 207 170 165 200 169 131 120 129 +128 172 172 166 187 215 178 162 206 151 117 118 +119 123 192 217 197 178 212 141 109 111 143 208 +164 145 110 160 106 181 209 211 196 104 125 104 +80 85 100 145 210 178 98 116 143 168 220 229 +188 127 76 72 63 69 154 115 90 67 170 207 +161 219 175 145 189 192 148 113 75 96 182 145 +128 166 187 195 179 133 128 197 206 162 146 182 +208 189 198 195 168 155 161 148 157 181 195 184 +179 175 175 176 179 185 204 192 185 179 197 198 +176 202 184 148 148 134 141 155 154 177 178 178 +186 189 160 161 164 156 198 194 168 134 115 150 +159 167 160 143 146 165 169 144 127 151 135 131 +114 114 111 107 114 127 120 117 109 119 120 128 +125 127 125 130 166 158 131 110 102 105 105 111 +115 113 129 127 136 131 134 138 138 140 128 124 +117 110 123 123 124 121 139 151 148 139 135 148 +139 141 146 134 140 147 153 154 150 149 148 144 +125 131 133 117 125 124 125 143 +165 172 162 160 +167 164 164 154 155 165 165 178 177 190 187 188 +191 184 180 171 164 171 177 182 188 185 182 174 +164 164 178 191 177 164 178 176 168 174 177 168 +174 164 167 171 167 180 187 182 175 172 165 154 +164 153 139 149 157 158 162 171 159 162 172 179 +170 167 161 176 179 181 171 170 174 155 149 151 +156 161 144 150 174 189 159 148 149 154 149 146 +139 133 117 136 148 166 148 135 131 108 124 107 +93 78 102 165 90 147 175 115 180 131 159 209 +135 102 106 107 124 166 110 108 201 158 136 159 +156 165 133 74 147 164 194 202 217 201 205 217 +195 165 186 180 139 188 192 191 191 195 200 223 +217 209 190 169 200 226 221 206 165 156 182 212 +197 205 206 161 148 182 213 190 131 143 210 182 +206 167 209 191 210 148 123 102 146 206 167 189 +222 219 218 225 226 218 215 212 201 200 179 195 +212 205 169 157 129 154 153 185 128 178 177 128 +100 149 136 161 187 185 170 137 138 149 126 129 +141 131 119 158 196 168 120 144 197 165 128 137 +154 165 159 158 139 157 125 151 172 151 180 184 +170 171 118 127 139 175 168 210 205 212 196 190 +166 116 175 204 164 184 177 160 185 140 167 160 +123 131 158 174 205 190 135 167 208 201 170 148 +133 172 208 160 139 136 187 206 156 143 162 196 +212 190 145 192 181 131 125 136 123 151 162 178 +171 207 192 134 187 180 120 108 99 106 155 211 +210 154 210 165 108 104 153 194 115 145 143 140 +103 146 195 218 210 127 74 117 113 94 98 94 +172 215 139 79 109 174 221 232 208 179 143 79 +65 68 108 146 84 84 104 195 161 211 201 98 +150 197 139 148 123 105 175 181 145 118 187 197 +130 115 117 156 208 194 158 156 202 187 186 198 +172 165 178 188 185 165 165 180 194 176 158 165 +176 185 188 204 194 172 184 217 199 194 212 185 +156 140 127 133 138 159 184 181 171 181 177 177 +185 170 202 189 176 172 155 148 153 156 153 151 +134 129 140 131 128 143 125 126 127 116 124 126 +115 124 131 114 117 131 117 124 131 119 129 124 +146 164 129 108 102 96 116 113 108 110 139 138 +139 138 135 137 137 143 136 118 115 129 133 133 +134 123 127 154 157 141 147 137 140 147 141 135 +138 147 140 150 148 147 149 139 131 137 133 126 +125 130 123 140 +170 161 175 167 171 186 179 165 +164 170 177 181 187 192 188 186 175 178 176 172 +170 165 172 185 181 174 170 171 170 178 182 171 +171 166 180 179 176 177 189 172 165 162 175 176 +176 182 184 181 189 187 159 158 160 149 147 138 +162 165 172 159 162 166 158 174 168 162 167 178 +181 175 167 172 170 150 137 153 172 160 138 154 +176 186 168 145 139 151 134 130 117 114 128 150 +154 157 165 160 144 135 105 93 88 90 149 149 +146 200 161 160 179 172 210 162 98 85 93 99 +161 136 97 154 197 154 176 149 150 144 85 98 +147 134 180 181 199 205 192 184 172 199 192 161 +147 190 189 168 169 188 209 215 196 204 174 161 +219 209 204 169 147 168 216 221 210 194 150 159 +204 217 174 104 114 187 209 192 212 189 210 187 +178 135 167 198 182 188 204 216 227 219 217 208 +162 150 111 110 165 150 135 189 220 211 196 194 +196 204 186 185 151 174 181 130 111 151 155 167 +192 180 165 148 143 154 136 126 143 120 133 170 +184 154 118 145 188 141 118 135 150 157 180 158 +148 148 138 166 156 164 189 156 180 162 120 131 +145 180 177 211 205 216 196 179 145 125 180 204 +159 186 153 150 155 131 165 154 130 129 156 167 +207 182 133 160 206 196 160 144 143 160 205 162 +138 131 177 198 151 143 159 175 190 180 149 170 +184 130 136 155 125 128 168 170 164 191 211 149 +161 202 147 100 103 107 126 200 217 182 210 180 +110 123 136 171 96 89 127 172 110 135 129 198 +220 165 80 77 135 136 108 107 124 207 199 106 +121 102 199 230 220 167 170 137 80 74 69 143 +97 51 45 161 210 197 217 166 128 188 140 107 +145 114 110 176 160 144 181 190 125 94 98 105 +175 211 174 164 196 197 184 204 165 155 177 179 +185 186 182 176 181 175 184 188 189 188 194 199 +210 192 168 211 196 190 209 204 187 192 169 181 +187 178 171 156 134 141 145 133 127 137 169 165 +151 131 133 143 133 129 127 129 125 119 120 138 +144 127 123 125 119 131 146 133 114 121 120 120 +123 115 110 115 128 139 127 123 139 159 143 121 +117 99 120 108 109 128 131 147 140 133 138 124 +131 145 138 121 114 134 130 134 128 116 134 130 +144 146 138 136 145 151 143 139 148 149 144 150 +149 141 141 137 117 131 120 134 127 111 128 130 +166 160 171 166 184 182 181 174 179 177 179 185 +187 188 170 172 184 176 185 185 167 164 172 181 +172 170 160 172 182 187 171 153 150 166 172 172 +185 198 192 175 159 164 161 169 180 178 167 178 +191 177 170 169 160 156 141 134 166 161 168 166 +160 164 158 150 154 169 180 186 180 170 158 172 +170 148 137 159 157 139 145 145 170 184 157 148 +141 128 145 121 107 123 157 153 161 171 158 140 +138 134 105 95 111 89 159 157 181 205 194 205 +218 202 202 136 96 72 94 129 137 125 102 184 +194 184 167 125 162 110 72 129 143 171 178 185 +205 211 155 166 185 177 151 138 171 181 181 162 +202 208 218 209 210 182 151 192 219 207 212 160 +166 208 223 218 211 182 161 216 216 171 159 109 +151 198 218 210 216 174 202 196 205 202 169 151 +136 192 220 220 212 162 148 176 133 107 95 97 +97 141 139 204 223 213 199 201 177 145 158 166 +140 164 191 130 130 126 124 157 187 168 179 145 +133 129 124 140 154 124 133 136 162 159 128 141 +182 141 128 146 154 151 182 151 144 145 147 166 +153 174 176 141 177 156 131 138 151 174 187 213 +202 201 192 178 134 134 181 200 153 179 141 125 +143 156 179 169 133 133 159 187 204 175 125 135 +207 205 162 149 141 170 207 167 147 137 184 201 +150 148 143 157 157 185 171 166 199 135 137 157 +116 120 151 125 145 174 215 188 131 201 188 109 +90 146 107 156 212 209 213 209 164 124 164 196 +137 75 83 149 172 120 86 125 207 201 92 69 +83 130 156 111 99 164 217 180 92 72 155 227 +222 198 119 172 165 105 70 107 147 58 36 66 +192 161 197 165 135 194 179 105 120 170 148 176 +115 131 172 168 168 127 130 124 143 204 187 143 +202 197 176 208 176 141 146 153 160 156 145 159 +170 167 161 168 146 160 148 138 172 177 166 202 +205 191 198 212 186 185 177 165 172 172 157 146 +121 121 135 133 129 120 158 140 124 135 126 141 +144 138 140 125 124 121 116 133 146 131 115 113 +124 125 134 116 116 105 123 127 116 131 119 119 +134 133 139 130 136 134 134 126 109 111 118 119 +126 123 134 147 154 136 126 128 119 131 135 121 +126 117 130 137 138 128 126 141 144 138 143 131 +129 143 144 143 140 143 143 146 138 134 127 127 +118 123 131 125 126 131 118 134 +169 169 177 180 +181 180 178 179 177 185 184 182 184 165 157 174 +176 171 182 180 170 166 171 181 175 154 154 167 +175 166 158 138 150 171 177 181 189 199 179 161 +158 159 170 168 165 169 169 175 194 188 182 170 +172 155 138 148 156 167 160 160 155 155 151 154 +164 180 171 178 169 161 170 176 166 150 146 162 +166 145 137 146 154 168 155 145 136 140 150 121 +110 154 166 160 155 157 138 124 137 124 120 118 +113 129 176 204 169 218 195 210 171 184 175 123 +96 110 148 139 134 105 140 206 169 154 127 107 +139 76 99 147 111 179 212 189 200 198 180 177 +191 148 153 146 196 179 172 213 200 196 219 219 +201 171 162 216 217 209 219 215 213 219 223 205 +182 176 217 211 158 201 143 148 192 211 196 199 +182 138 206 215 169 138 118 168 204 205 207 207 +172 99 169 189 135 166 116 114 136 159 146 216 +226 201 184 156 117 109 174 165 149 151 185 117 +103 107 137 187 185 147 159 123 111 133 145 158 +151 133 117 123 151 129 139 155 174 136 126 148 +139 166 184 154 154 159 160 177 146 181 161 137 +159 149 137 144 154 169 175 217 196 198 190 162 +131 139 182 182 159 157 141 133 133 138 169 158 +127 125 144 174 199 172 125 141 210 196 149 147 +135 176 209 167 150 149 195 205 149 146 144 158 +144 202 192 158 191 160 120 160 140 115 110 113 +110 148 209 215 158 170 202 141 115 133 103 133 +206 217 222 227 209 161 208 210 170 97 85 116 +179 141 80 82 151 210 143 72 74 85 133 148 +102 98 199 217 143 92 108 212 191 207 176 108 +168 156 138 93 153 125 54 45 123 149 170 172 +108 144 182 147 85 108 148 195 182 160 151 136 +188 158 133 139 135 172 211 162 184 176 153 195 +192 180 185 167 174 175 164 160 157 154 155 165 +154 145 150 149 158 148 162 186 197 165 162 184 +175 162 167 165 149 138 150 136 147 148 145 153 +139 140 147 129 136 136 151 156 144 161 158 141 +116 123 111 110 151 169 144 127 126 120 108 125 +108 113 118 116 117 114 115 121 131 124 130 143 +133 127 131 125 116 110 119 135 134 126 133 154 +149 137 133 119 135 135 137 131 115 128 123 140 +138 124 131 139 136 143 131 129 130 133 128 143 +141 145 148 145 145 128 129 125 127 134 129 138 +138 133 134 136 +160 166 172 178 186 190 174 185 +189 190 181 175 158 157 161 171 180 179 171 169 +171 169 175 176 155 133 140 161 172 180 149 147 +166 171 177 196 198 189 175 161 162 161 172 161 +161 157 168 188 196 187 182 174 162 158 155 138 +156 167 160 149 145 162 151 168 171 175 170 159 +160 166 177 172 167 144 149 172 174 140 141 136 +159 169 167 148 127 150 148 124 134 156 166 160 +153 143 131 135 135 120 111 127 125 128 201 199 +150 208 207 196 135 186 136 86 100 130 146 153 +136 102 187 190 139 147 121 124 138 109 120 119 +125 205 182 155 206 177 192 194 177 170 174 169 +191 197 218 190 168 209 219 211 188 161 178 219 +212 194 222 210 192 225 204 179 208 220 205 154 +198 160 167 202 192 207 172 212 194 172 211 201 +123 124 190 220 187 123 184 215 180 138 144 166 +145 162 167 149 165 181 170 221 218 157 139 146 +157 131 181 199 146 107 138 115 106 110 146 192 +162 148 166 116 117 135 136 131 126 119 121 139 +151 121 137 146 165 141 144 138 127 162 172 150 +140 166 179 167 158 182 137 138 161 139 141 136 +145 157 194 217 192 195 179 150 128 136 185 176 +154 134 141 128 131 137 160 160 141 137 157 177 +198 160 131 161 205 194 148 143 133 166 205 170 +136 166 192 208 147 126 151 149 129 186 200 158 +184 177 145 180 146 130 128 133 113 126 202 225 +200 153 197 179 133 103 92 109 187 216 198 218 +208 189 210 189 198 104 74 86 138 140 116 87 +97 209 208 138 82 80 94 129 153 98 159 219 +199 111 74 191 199 178 216 168 124 161 131 147 +148 165 79 64 84 172 157 190 95 74 168 199 +157 134 116 157 206 164 127 140 179 191 157 135 +153 144 192 206 188 161 162 184 189 159 185 174 +147 160 172 176 175 167 166 169 160 169 169 174 +172 185 175 168 196 164 147 170 187 150 157 167 +171 168 160 150 156 176 174 175 181 181 170 157 +147 145 155 148 140 121 154 164 157 143 138 139 +138 156 167 150 120 120 108 103 121 121 109 119 +126 113 116 120 120 135 124 123 133 121 117 120 +118 111 121 123 134 140 126 141 158 136 137 126 +130 147 139 115 120 125 128 134 137 129 140 143 +140 145 137 127 125 134 137 136 141 145 149 137 +137 140 119 127 113 127 138 135 139 138 134 123 +157 172 177 188 188 190 180 184 194 179 166 153 +157 160 168 184 178 172 176 168 161 166 169 164 +145 137 153 170 170 150 151 170 172 176 171 182 +188 190 171 166 161 168 174 171 162 167 176 184 +192 195 185 168 166 156 153 145 156 165 169 154 +144 151 175 179 187 178 172 154 162 166 162 171 +159 143 160 182 176 151 138 138 157 164 166 154 +137 148 143 125 166 161 154 148 164 124 127 138 +128 100 139 124 114 157 217 150 162 195 172 157 +109 165 97 70 125 126 140 139 114 128 208 172 +141 131 111 143 131 105 109 159 184 199 149 151 +199 182 176 207 202 174 129 187 220 218 194 153 +181 213 213 202 162 155 208 223 210 184 217 209 +216 205 179 215 216 202 172 204 205 188 212 204 +177 210 206 209 188 191 211 204 148 194 215 169 +139 116 169 211 153 97 186 188 124 172 161 133 +170 206 209 225 208 148 159 161 143 174 201 169 +97 90 136 144 114 115 160 191 133 138 167 135 +139 138 145 143 136 133 137 145 153 131 129 144 +140 145 164 141 121 156 154 138 138 140 172 165 +174 177 144 150 164 151 143 147 143 138 196 210 +186 187 178 148 126 134 187 175 157 134 126 140 +136 133 145 144 127 121 138 177 196 158 133 145 +202 181 134 140 134 171 212 172 124 138 188 208 +159 124 126 141 125 154 205 176 161 181 140 140 +119 131 114 137 125 110 162 217 201 159 180 199 +137 118 82 77 158 206 191 215 202 180 202 141 +201 128 86 103 145 100 121 117 88 184 223 190 +108 90 95 100 125 164 116 191 212 178 104 153 +211 167 201 162 154 147 160 106 135 179 143 63 +73 158 196 199 120 54 119 188 178 153 146 174 +202 177 172 130 134 184 162 126 128 118 129 202 +190 166 155 168 194 157 161 182 184 184 171 161 +144 133 140 139 134 144 143 149 161 165 148 157 +180 171 175 169 187 170 151 154 161 148 148 148 +138 143 150 141 154 164 162 145 144 143 139 136 +141 148 156 140 144 158 143 134 121 115 131 147 +140 115 98 102 99 104 114 114 125 127 115 125 +124 118 127 121 126 116 118 129 118 111 125 127 +137 127 133 138 145 139 131 130 139 155 145 128 +126 127 133 125 123 125 126 144 130 141 148 126 +127 128 135 126 130 140 140 148 135 127 129 114 +124 124 139 137 143 149 144 136 +157 164 190 194 +197 179 169 175 175 159 149 153 171 172 181 189 +186 178 175 170 172 168 171 168 151 154 161 175 +168 161 169 176 184 177 177 182 185 181 170 159 +159 167 176 158 156 171 175 189 189 196 175 161 +153 156 169 154 157 174 169 160 168 171 179 185 +188 166 154 157 161 169 170 159 155 139 162 185 +174 143 129 135 141 159 165 148 143 161 138 145 +161 160 148 165 144 108 128 133 115 107 124 127 +100 169 188 184 189 151 170 115 135 126 100 114 +134 157 143 131 123 185 210 144 133 109 113 139 +147 137 172 154 201 185 127 168 197 206 196 176 +190 149 195 218 210 195 160 167 202 207 206 200 +164 202 225 212 182 143 212 221 210 166 216 213 +175 194 198 198 189 208 201 200 213 210 200 200 +197 162 204 185 187 206 148 147 177 159 165 206 +143 124 182 191 157 171 127 176 216 197 181 217 +171 147 136 166 189 159 182 150 103 97 151 170 +137 159 184 150 107 126 185 186 139 128 141 144 +140 130 129 144 141 129 121 138 176 184 156 137 +129 155 143 133 141 139 162 154 177 181 136 143 +159 129 139 158 154 151 197 194 187 192 168 138 +140 140 190 176 151 127 126 129 137 159 140 150 +127 120 127 174 188 150 133 139 196 165 136 139 +134 181 209 153 125 139 198 209 164 114 125 139 +133 130 197 194 168 198 149 129 100 99 109 128 +124 114 119 195 217 178 179 205 159 119 102 87 +118 205 210 212 211 218 211 175 194 161 79 106 +153 93 90 121 92 158 219 208 167 92 86 94 +89 125 169 139 178 206 129 127 212 201 167 188 +110 156 180 171 107 136 169 107 69 85 180 199 +189 113 78 166 161 130 150 169 205 198 187 181 +159 153 178 149 135 111 126 179 197 156 153 156 +197 158 169 176 166 179 185 185 184 178 151 155 +161 162 150 147 139 134 127 105 125 137 126 141 +175 161 131 137 119 115 118 116 133 121 114 126 +137 147 150 154 165 145 144 131 135 146 135 126 +116 135 145 148 148 123 117 129 126 124 110 100 +98 115 111 115 130 117 126 127 109 120 130 140 +137 130 135 113 117 105 119 129 129 139 137 160 +158 138 136 128 148 158 154 134 129 140 135 136 +123 119 118 133 134 139 146 134 119 118 120 137 +134 146 146 146 146 131 131 136 127 128 128 140 +148 141 143 133 +167 181 194 197 194 178 168 155 +148 137 146 162 181 192 197 188 189 176 168 171 +161 166 157 154 166 167 159 160 167 165 158 181 +171 172 175 178 187 190 170 156 157 170 160 159 +158 166 177 181 181 185 172 149 162 156 158 161 +172 171 184 178 172 172 180 185 174 160 150 146 +157 164 168 165 149 149 156 180 165 139 137 126 +155 175 176 155 160 153 145 170 165 156 156 140 +118 117 116 126 102 107 123 127 125 196 178 150 +138 135 135 94 123 103 99 133 168 166 135 127 +140 213 192 125 105 103 113 149 159 175 151 127 +202 164 136 174 191 180 145 131 172 210 209 187 +208 160 195 196 186 209 211 196 192 213 223 169 +153 157 216 221 201 211 220 186 187 205 200 165 +188 201 221 207 221 190 201 208 158 177 204 205 +196 188 201 178 128 107 184 217 165 113 174 185 +135 139 201 219 176 118 165 206 176 131 186 201 +160 107 170 133 144 121 125 179 134 144 145 109 +107 160 190 161 165 155 143 138 135 135 131 131 +138 125 124 147 160 128 118 119 137 155 150 145 +135 139 156 160 192 156 136 138 141 135 166 168 +140 136 185 179 205 194 147 134 141 138 196 166 +129 166 129 123 138 151 134 153 136 151 139 181 +179 145 143 143 200 162 166 145 120 177 209 153 +123 127 195 200 161 130 108 120 141 155 199 196 +164 201 181 131 114 111 133 149 141 131 115 166 +218 209 147 182 191 135 123 100 100 186 211 217 +201 219 195 204 197 181 78 86 94 89 86 95 +111 120 207 194 204 139 78 90 78 83 108 150 +139 179 182 106 191 220 162 194 149 100 141 187 +171 82 149 194 136 87 137 198 192 129 110 161 +179 154 161 157 169 181 155 156 156 170 196 169 +143 129 115 133 205 185 139 137 189 150 162 177 +191 179 172 167 172 197 184 141 143 148 148 148 +145 135 121 127 114 130 134 103 134 150 164 157 +141 111 96 106 92 90 118 116 129 128 134 125 +134 134 118 130 124 130 144 144 138 138 127 133 +125 138 136 135 117 114 110 84 107 106 113 118 +105 115 105 123 111 116 136 138 145 146 136 128 +116 111 108 113 125 127 137 157 155 130 134 137 +143 157 162 147 139 149 136 140 139 113 118 137 +128 143 146 133 130 127 129 137 138 145 146 140 +139 141 127 136 129 137 146 137 136 143 137 126 +190 192 198 200 184 170 157 143 143 148 148 171 +190 188 195 195 180 176 169 157 161 157 159 170 +172 166 167 175 169 159 177 181 175 181 166 178 +181 186 160 166 171 175 169 170 168 172 171 174 +176 166 160 169 160 154 169 175 169 179 177 178 +167 161 177 176 165 153 156 157 157 167 165 161 +138 141 158 170 156 149 130 137 148 172 175 166 +161 147 165 167 167 162 141 123 124 117 124 133 +108 126 138 114 164 200 137 110 177 158 120 117 +131 94 123 141 156 155 124 120 171 213 153 115 +98 95 126 175 176 159 130 123 205 158 175 171 +176 178 144 182 210 206 178 206 188 170 181 198 +197 205 195 205 200 221 213 167 181 186 218 221 +210 209 206 176 207 190 186 199 216 221 210 180 +215 182 219 168 160 164 209 219 210 202 180 155 +161 179 198 210 187 136 174 170 188 216 215 190 +126 92 165 196 161 195 194 165 121 105 168 136 +156 109 107 149 130 123 136 118 135 185 190 160 +128 138 121 117 120 121 123 118 128 126 117 111 +146 118 114 116 149 168 151 143 144 149 161 162 +143 126 125 134 139 147 164 148 130 133 185 185 +207 180 130 127 126 139 199 155 135 166 151 133 +127 130 149 151 137 169 155 187 166 138 153 143 +208 172 189 156 126 188 207 151 129 138 195 180 +191 182 133 126 139 140 166 197 172 185 178 119 +113 115 119 131 143 127 108 113 196 221 192 138 +204 158 115 103 94 168 207 217 184 205 145 198 +210 207 110 157 107 138 131 92 84 99 189 166 +178 202 119 119 83 86 86 129 181 148 197 146 +156 225 202 177 186 107 88 118 164 146 83 129 +171 184 137 186 208 140 115 129 179 194 174 139 +150 194 139 146 139 147 166 198 180 164 136 100 +159 210 165 149 171 162 140 159 164 158 165 169 +171 169 176 171 172 180 138 119 128 134 121 125 +125 120 144 139 104 135 129 156 166 151 117 110 +108 118 110 114 115 133 120 109 125 128 141 128 +127 135 143 139 140 131 118 121 119 111 126 131 +134 116 104 103 90 103 110 120 119 107 114 116 +119 105 118 144 139 149 147 121 115 107 106 111 +119 120 138 149 137 138 125 129 137 150 154 140 +143 138 149 138 130 120 116 117 131 140 147 134 +118 125 135 131 136 143 135 139 138 139 137 136 +135 144 144 143 135 136 133 133 +198 202 194 186 +179 172 155 151 159 159 174 182 189 189 195 189 +186 168 164 151 155 158 172 178 171 166 170 165 +168 169 179 185 180 162 172 180 170 169 168 174 +174 176 182 185 174 170 160 177 177 172 165 167 +154 172 172 172 177 171 162 162 161 175 182 176 +166 155 162 147 156 165 166 159 155 151 159 168 +145 140 138 144 157 185 185 172 168 156 159 162 +156 153 141 116 133 124 138 145 128 130 129 153 +190 156 117 97 190 161 106 147 139 108 124 136 +137 135 120 125 184 190 134 107 98 87 135 161 +138 125 117 155 202 140 184 145 169 181 212 202 +179 180 185 208 172 182 202 206 200 212 202 195 +201 223 179 174 188 181 215 211 205 216 170 178 +185 210 217 215 204 216 185 195 216 216 210 174 +179 208 211 207 184 204 166 169 176 147 199 181 +184 165 174 198 202 190 121 159 131 125 188 205 +181 178 178 161 158 146 167 153 141 100 97 113 +131 143 157 176 166 156 147 119 131 136 139 129 +118 125 130 133 135 124 154 187 169 128 123 125 +148 151 146 131 134 182 171 155 139 124 129 141 +160 156 139 129 134 151 189 175 209 171 126 119 +127 149 190 131 156 155 136 133 143 153 126 135 +133 165 150 186 156 137 160 156 204 172 188 161 +135 185 199 147 139 159 201 170 174 171 123 114 +121 130 128 194 178 177 184 123 108 105 111 99 +118 124 97 100 161 212 215 181 187 195 129 123 +96 189 185 217 198 200 114 146 207 213 130 111 +89 137 157 98 76 78 178 189 116 188 175 108 +121 85 82 86 150 170 167 200 135 208 218 161 +198 127 67 54 95 125 118 90 131 176 190 172 +210 180 141 145 186 175 172 156 155 202 181 149 +149 116 130 168 150 154 158 134 138 208 168 143 +166 168 127 130 145 175 172 174 178 185 182 200 +192 196 201 196 172 156 129 105 115 119 124 151 +128 106 133 133 130 145 155 145 127 106 98 113 +115 113 126 113 96 106 100 126 128 115 140 141 +137 127 127 116 118 120 127 126 129 117 125 127 +106 107 111 117 115 114 100 116 110 113 115 138 +147 151 150 135 116 105 96 107 105 125 126 137 +143 125 127 131 131 135 155 148 146 145 145 139 +137 124 118 123 129 137 147 140 121 126 120 128 +134 126 131 135 140 138 136 145 130 136 140 137 +131 125 124 128 +194 188 180 181 165 156 168 169 +181 180 168 181 178 182 188 186 175 155 164 162 +164 181 181 186 174 164 165 161 171 169 179 182 +160 166 179 171 175 171 162 168 179 168 174 187 +175 160 168 172 166 166 165 166 180 181 180 184 +180 168 169 170 170 181 184 169 167 170 164 150 +154 162 166 166 159 179 174 166 146 134 144 149 +161 171 167 162 157 170 161 159 170 157 128 125 +134 135 139 156 124 116 117 153 170 154 116 117 +197 124 103 148 103 97 121 133 147 115 110 130 +201 161 125 95 94 120 128 144 126 119 120 166 +182 145 155 128 184 221 192 159 184 179 205 184 +164 197 184 201 198 187 182 184 218 212 155 178 +194 220 220 213 223 198 171 206 218 212 206 204 +215 208 169 200 215 211 219 200 216 206 211 207 +205 166 191 194 139 141 201 199 215 206 177 170 +172 148 114 127 178 192 199 196 178 184 196 189 +177 150 176 194 176 105 95 102 158 201 207 190 +127 120 146 157 133 121 125 115 129 128 128 136 +136 184 202 171 127 124 123 119 139 130 128 138 +181 198 156 155 128 135 157 155 147 149 139 126 +123 144 186 175 204 184 133 118 118 160 187 133 +156 129 121 121 146 169 131 126 129 168 158 189 +156 129 147 165 204 170 178 158 133 191 200 139 +125 160 195 144 129 165 120 123 123 106 117 174 +192 162 196 141 107 103 100 102 100 126 121 98 +128 205 210 209 199 216 157 121 123 190 153 206 +216 205 131 87 138 211 200 109 70 89 118 145 +82 63 144 190 99 108 192 176 106 105 90 92 +100 160 184 201 180 202 225 160 188 182 89 85 +89 89 123 126 135 138 165 158 199 187 175 169 +170 157 161 145 108 182 201 190 182 178 144 148 +165 130 129 135 139 194 201 129 144 155 133 139 +166 178 165 171 176 177 170 159 169 168 168 179 +185 191 190 172 123 111 131 148 143 125 126 133 +137 125 117 133 129 125 127 105 117 118 128 123 +96 94 97 102 121 126 145 131 135 123 117 124 +119 124 119 135 129 121 123 123 117 105 109 118 +118 119 109 109 126 108 114 127 139 158 157 138 +109 116 109 106 125 116 131 123 127 119 128 137 +125 135 149 155 159 146 147 148 137 125 120 134 +120 138 144 126 124 111 120 121 121 123 118 129 +131 139 137 131 140 138 133 139 129 133 123 120 +195 186 186 175 168 172 178 178 189 180 174 180 +179 175 174 164 155 161 169 176 184 190 188 182 +174 160 158 159 160 168 180 169 161 175 166 181 +178 170 167 166 167 165 175 171 168 168 166 170 +175 164 166 170 175 179 184 177 175 179 174 177 +177 170 176 171 166 177 171 166 147 160 159 166 +171 170 177 171 150 158 155 166 161 174 165 156 +164 179 165 158 151 145 125 138 135 134 144 125 +98 121 138 146 138 136 111 137 174 103 124 116 +79 100 123 135 139 124 96 138 196 125 121 114 +114 117 118 130 127 134 120 172 176 124 130 172 +213 205 156 187 199 209 184 167 149 170 194 199 +198 206 186 197 223 190 153 206 216 216 201 216 +213 200 217 212 202 205 204 210 216 186 184 221 +220 217 202 210 213 188 212 211 186 194 211 161 +159 192 219 206 189 197 190 178 149 139 150 197 +210 153 189 199 195 174 191 192 184 180 204 186 +110 93 109 147 197 197 197 175 143 146 165 124 +117 120 115 118 123 126 128 139 187 175 117 110 +111 116 114 145 134 113 121 186 191 178 146 141 +125 130 139 130 133 160 148 133 126 139 174 168 +201 182 130 118 125 157 161 153 149 125 124 126 +135 177 157 121 133 170 144 190 156 119 146 180 +186 168 172 160 124 201 201 144 131 162 189 147 +143 147 157 111 118 107 100 148 199 145 187 165 +113 98 95 102 93 105 136 113 104 185 195 199 +196 202 204 139 137 174 117 194 204 189 148 76 +74 180 217 166 92 75 78 111 115 69 107 196 +148 88 162 204 154 97 106 93 89 140 199 190 +199 182 226 180 162 200 153 75 128 133 78 102 +138 156 125 134 171 207 185 177 156 155 154 155 +138 151 190 149 140 154 171 166 194 172 192 176 +153 158 208 174 140 167 131 128 162 174 172 168 +170 156 162 175 161 162 150 148 133 146 179 180 +172 151 157 169 180 149 144 141 131 131 137 123 +114 116 139 154 144 144 138 146 135 113 118 104 +105 127 146 138 127 136 123 119 127 120 128 131 +128 128 117 123 103 102 111 117 119 114 110 113 +117 111 113 125 133 148 159 136 123 109 110 104 +109 111 124 125 119 125 134 129 134 136 147 158 +166 157 155 146 131 129 121 118 133 125 135 134 +125 128 110 121 127 125 114 133 138 128 137 140 +134 139 140 134 131 126 120 113 +192 191 190 176 +174 176 181 178 168 162 177 164 174 167 150 154 +172 161 178 185 177 176 181 178 170 168 151 159 +161 171 156 171 164 158 176 171 164 177 171 166 +168 171 177 166 169 160 168 167 165 177 166 162 +176 174 167 165 179 179 182 181 170 181 175 175 +177 182 172 151 147 156 164 176 164 165 170 159 +146 139 151 167 171 167 151 158 167 166 149 150 +156 137 128 137 134 113 97 114 116 124 170 157 +135 139 130 155 170 105 105 104 93 96 110 134 +129 99 79 169 161 110 119 113 116 124 108 148 +144 130 114 165 129 148 181 195 189 195 168 188 +196 159 185 168 137 188 200 161 209 202 177 211 +215 162 212 209 205 213 209 212 222 211 201 197 +213 208 201 216 202 207 211 221 205 201 216 213 +196 199 216 194 194 208 181 196 210 201 217 200 +165 174 188 149 139 191 205 160 130 134 202 180 +175 157 174 156 179 188 196 123 95 116 154 175 +172 194 166 154 160 145 124 108 114 114 116 153 +175 170 159 168 144 119 117 110 123 120 136 146 +118 115 176 177 146 164 148 134 119 123 137 133 +134 165 140 130 144 144 170 175 207 164 117 125 +127 148 150 141 133 150 130 125 128 161 162 133 +138 172 167 185 169 154 146 195 184 158 154 179 +131 211 204 145 149 180 176 123 125 128 181 109 +124 94 103 125 189 185 184 164 135 134 116 105 +118 104 129 161 105 166 197 157 189 207 216 176 +117 134 88 157 180 166 172 94 70 151 213 202 +174 97 84 76 146 133 105 196 164 103 97 170 +200 131 110 104 90 105 188 184 199 168 206 196 +130 192 196 140 104 121 116 108 110 147 165 168 +169 208 176 141 174 154 153 165 160 148 199 139 +105 130 158 166 139 148 172 145 143 149 201 189 +137 180 167 136 136 151 161 161 170 170 159 156 +167 155 157 155 140 144 126 123 133 137 137 156 +188 178 180 170 175 175 164 172 172 157 143 154 +167 140 160 162 155 157 135 130 136 133 146 147 +138 141 146 141 133 135 125 128 125 118 120 125 +114 106 115 99 119 130 104 124 114 106 116 121 +129 138 153 141 116 121 108 106 114 117 121 124 +125 123 124 129 127 134 145 153 158 162 149 149 +147 131 131 138 127 136 136 138 130 125 118 114 +116 111 127 133 129 138 138 154 138 140 145 135 +136 133 126 107 +188 186 189 179 170 167 168 165 +151 165 164 172 160 145 154 158 172 178 178 171 +169 168 171 179 168 151 150 144 154 156 158 159 +154 176 166 169 172 174 171 182 181 186 179 169 +171 170 180 168 175 168 168 177 187 177 177 177 +189 194 191 178 169 182 170 171 179 184 174 153 +137 165 175 159 162 170 171 148 143 125 150 157 +167 161 175 176 171 157 148 150 146 134 126 120 +97 99 95 113 121 144 174 146 158 148 120 174 +175 118 107 93 84 98 119 133 124 100 99 192 +130 108 125 115 107 114 95 147 138 131 99 180 +187 201 164 125 179 204 206 192 162 147 168 158 +194 171 138 186 211 186 194 212 204 208 201 174 +205 213 216 216 205 180 182 192 212 191 218 219 +212 216 202 219 190 210 205 187 190 188 207 204 +217 208 210 196 198 197 212 191 161 196 197 181 +209 205 140 166 184 159 205 186 164 159 160 158 +182 174 182 150 170 190 118 133 120 135 107 123 +113 103 113 100 105 115 168 192 169 175 172 134 +114 113 120 118 146 141 168 135 139 137 162 134 +119 125 148 124 120 116 140 121 138 147 136 139 +156 127 170 172 195 135 115 138 145 155 137 147 +151 176 130 126 124 162 172 136 130 175 192 181 +161 143 136 195 160 147 145 186 133 213 192 121 +139 168 156 115 124 117 190 169 106 121 113 107 +178 204 187 175 125 148 103 123 124 103 136 169 +155 129 191 146 161 188 213 195 140 162 103 140 +195 174 175 100 73 106 197 202 197 180 129 85 +95 161 109 176 155 110 115 108 182 199 136 102 +93 100 159 197 185 190 176 211 141 140 198 143 +127 127 135 115 118 123 137 166 167 196 204 179 +151 164 154 150 151 153 188 169 107 95 126 164 +165 172 165 97 95 110 159 198 143 174 184 162 +155 170 184 177 160 149 146 161 179 177 139 156 +160 140 136 121 124 136 136 123 139 165 156 140 +141 160 154 155 146 139 145 128 129 144 130 135 +133 125 127 124 125 130 137 110 118 129 116 135 +135 126 136 148 136 127 125 124 115 100 100 115 +108 118 119 120 121 107 110 125 129 137 144 127 +114 117 111 108 120 123 119 121 118 114 126 131 +121 140 139 150 162 155 166 153 140 139 124 131 +139 138 141 134 124 119 118 114 105 124 118 125 +131 127 143 136 143 135 138 128 126 138 127 124 +184 181 178 155 150 155 153 153 159 175 172 167 +158 156 154 160 175 165 166 166 156 157 171 184 +175 168 157 155 160 160 165 165 164 166 168 165 +164 174 186 175 179 179 176 155 182 177 169 167 +170 175 185 186 185 178 165 180 195 192 184 187 +168 162 166 176 178 189 172 148 155 169 162 167 +164 165 171 143 127 141 147 164 171 168 166 175 +176 153 160 162 133 124 117 119 116 99 121 118 +133 161 154 150 158 128 103 162 164 127 103 75 +89 102 113 139 114 89 137 189 108 136 137 104 +111 104 97 159 114 98 90 196 207 138 93 105 +188 201 195 161 136 171 184 180 194 147 141 161 +205 208 201 218 205 184 177 204 220 205 206 212 +179 188 177 207 191 198 222 209 209 182 199 218 +202 212 197 200 204 168 210 215 218 212 195 202 +201 199 210 171 179 199 202 221 209 162 191 185 +138 160 209 194 149 138 149 191 171 187 201 174 +174 125 143 137 100 93 146 161 107 104 116 124 +117 181 176 127 111 148 131 110 109 125 116 128 +130 146 133 139 190 158 150 117 124 136 141 115 +134 137 149 125 134 139 138 136 138 131 175 194 +184 125 115 159 164 164 139 140 144 176 128 120 +115 133 168 123 121 172 195 156 143 126 135 185 +147 156 147 196 161 212 184 121 137 196 167 129 +114 127 179 189 119 126 119 95 146 202 197 176 +110 165 139 99 99 87 105 141 138 121 188 176 +128 186 184 210 176 155 176 190 199 184 186 106 +80 118 199 155 181 184 186 114 79 99 139 167 +181 102 92 97 127 204 198 148 89 100 134 202 +165 192 206 215 179 137 186 160 94 120 151 172 +162 158 151 143 172 189 200 191 187 149 138 167 +151 162 182 199 131 107 99 110 153 190 137 103 +95 96 130 198 154 165 194 136 136 139 150 180 +175 170 139 140 135 170 175 156 153 166 141 119 +129 138 125 121 111 125 160 156 124 111 127 123 +123 119 115 123 130 133 133 135 128 131 124 126 +140 126 117 119 103 116 116 108 128 133 140 128 +130 123 121 136 118 116 111 103 117 116 114 121 +119 111 102 121 131 136 138 125 124 121 107 103 +104 120 115 125 117 117 127 119 134 129 141 145 +150 167 162 149 155 140 129 115 131 135 137 137 +119 123 114 114 108 114 119 123 136 125 130 146 +130 133 148 138 128 128 137 130 +184 166 159 155 +160 159 160 162 162 177 161 147 155 151 159 168 +165 157 167 154 147 164 170 178 180 158 149 155 +162 165 166 178 178 177 167 167 176 184 165 169 +182 164 164 166 180 184 180 168 169 178 187 185 +182 171 174 176 187 185 189 180 172 174 168 174 +186 182 168 164 159 167 171 164 167 168 159 140 +139 128 151 172 175 161 168 181 166 154 146 137 +136 115 133 109 113 120 124 130 129 157 158 162 +126 123 121 169 186 150 85 80 104 105 124 126 +108 98 161 160 120 139 133 117 119 115 123 136 +108 114 199 212 140 116 133 138 187 196 175 148 +179 181 153 189 175 149 174 128 209 208 213 202 +151 196 219 217 207 212 190 197 177 196 187 196 +200 221 198 196 196 191 213 220 201 213 210 210 +182 184 217 208 201 204 209 212 196 210 205 185 +207 191 213 211 188 191 185 134 110 145 194 120 +140 177 206 199 196 186 191 154 134 130 138 117 +105 131 184 143 104 104 120 115 182 181 115 131 +147 124 116 130 118 108 121 127 119 123 123 139 +147 166 127 109 108 127 143 120 118 134 135 111 +133 145 145 120 123 129 195 210 167 127 136 165 +159 171 126 128 136 174 128 130 141 131 167 139 +118 156 201 162 153 148 150 194 167 158 141 206 +180 220 186 127 178 206 151 119 114 98 147 207 +140 116 113 102 100 185 198 181 125 134 167 103 +125 84 92 110 120 128 179 192 115 156 174 197 +209 158 209 181 194 178 189 133 98 90 184 161 +130 187 184 180 117 77 102 187 198 123 90 98 +128 185 211 191 147 95 98 176 199 176 204 210 +181 154 179 200 138 85 146 156 184 192 171 151 +136 164 190 196 190 178 150 154 175 156 169 210 +169 148 114 97 124 181 143 124 97 93 108 191 +188 144 194 144 104 117 133 156 145 153 156 170 +147 115 153 186 165 160 165 154 128 141 138 121 +137 123 157 156 138 123 117 117 124 135 136 113 +109 116 119 130 130 126 125 139 149 147 141 118 +106 105 117 120 127 138 138 138 119 104 127 115 +114 98 94 103 110 127 111 114 125 109 118 121 +136 146 147 137 133 138 108 117 121 114 120 118 +126 124 113 119 119 116 129 135 155 158 158 145 +143 136 135 128 124 138 143 138 135 127 127 116 +111 108 114 133 127 129 128 133 134 135 143 137 +137 138 136 130 +174 144 155 170 160 160 160 162 +170 167 158 154 153 164 169 169 169 158 159 160 +165 175 178 174 160 165 168 166 155 164 164 176 +176 169 165 178 171 169 174 170 174 169 159 167 +176 190 164 165 166 178 182 179 180 182 182 182 +178 181 180 188 180 167 162 178 171 176 175 167 +158 167 162 161 175 160 164 141 121 136 151 171 +168 162 169 172 171 160 159 155 144 130 123 117 +116 123 120 115 128 146 138 123 121 129 118 181 +202 130 78 78 100 108 118 118 110 104 178 146 +98 110 126 105 107 105 113 119 165 184 157 206 +175 127 103 154 181 210 187 172 137 153 174 194 +147 161 159 141 207 221 218 198 217 198 207 204 +198 190 189 198 200 200 205 208 217 208 191 215 +198 188 218 210 202 208 209 179 197 198 213 200 +209 216 220 211 196 210 209 208 204 205 189 195 +205 185 185 127 118 156 181 124 159 175 213 171 +135 174 198 151 121 151 125 106 124 157 120 106 +119 134 144 170 195 120 100 156 139 119 161 133 +125 148 186 128 135 123 127 144 170 160 129 119 +113 124 121 123 119 172 134 130 133 120 140 124 +117 119 204 208 147 124 146 164 153 153 124 118 +128 178 146 131 161 146 156 136 117 146 191 146 +133 127 156 167 138 155 138 200 186 217 171 124 +182 188 139 110 107 108 105 188 179 114 109 114 +105 134 207 198 137 98 184 165 146 105 86 95 +139 108 176 202 125 107 166 171 208 199 177 154 +199 178 186 185 97 83 174 192 107 151 186 170 +179 134 80 161 202 139 150 110 108 119 190 209 +189 146 95 124 197 171 205 210 210 168 169 202 +186 139 120 143 165 175 186 198 162 150 146 201 +200 198 182 127 159 167 175 209 184 160 155 124 +150 136 164 160 144 100 105 170 204 135 195 161 +135 100 107 119 155 143 119 165 186 161 148 162 +164 170 167 151 160 140 127 136 144 139 167 157 +138 134 133 114 113 115 123 126 109 127 113 117 +127 121 137 139 140 144 145 121 109 106 104 121 +128 117 136 139 129 131 127 127 118 104 96 103 +110 116 121 120 104 111 100 123 138 148 139 145 +134 137 125 109 113 121 117 114 111 114 127 124 +120 121 138 125 138 143 139 143 133 136 130 134 +140 133 149 143 133 120 121 117 95 114 117 129 +133 119 128 139 145 151 165 161 140 146 137 133 +149 146 159 172 166 146 151 157 164 166 157 148 +161 156 158 171 158 157 157 160 169 177 171 162 +162 169 159 155 144 148 166 181 178 166 179 174 +169 167 160 178 178 160 159 161 179 180 172 170 +177 186 174 179 187 182 182 181 180 184 180 184 +170 156 166 167 177 177 172 153 146 151 156 161 +164 166 160 134 128 150 160 169 160 154 153 174 +164 164 175 176 155 140 110 105 125 119 117 103 +109 117 146 133 128 144 136 187 192 109 87 77 +105 124 125 119 111 124 172 118 92 98 120 111 +97 80 123 196 189 120 102 189 166 90 108 125 +184 159 140 153 131 157 187 168 134 185 139 155 +209 216 217 200 191 164 208 197 192 180 178 197 +195 196 211 205 215 189 218 219 201 200 223 210 +209 201 194 207 196 180 212 212 212 217 220 207 +207 210 216 215 213 202 196 194 196 200 166 141 +117 164 176 131 190 211 169 133 169 184 202 175 +139 151 126 144 186 127 100 103 119 137 157 194 +135 99 134 129 93 107 171 138 128 197 155 130 +121 127 120 136 184 135 124 126 120 126 130 133 +140 191 146 131 116 133 146 129 135 143 207 199 +150 117 128 166 139 145 140 119 130 164 121 121 +156 146 155 139 113 157 202 155 128 114 161 172 +123 146 131 184 201 215 171 136 188 181 149 146 +115 123 92 147 201 124 118 97 97 128 202 197 +148 108 150 182 103 111 102 103 114 121 143 196 +139 97 115 180 211 216 157 162 198 177 170 191 +159 97 159 191 108 88 147 196 175 153 130 118 +189 143 143 147 111 103 115 190 206 190 180 114 +184 172 178 207 217 189 179 201 202 175 171 149 +168 159 157 178 199 189 172 204 195 197 192 179 +130 158 159 196 207 144 145 168 141 128 118 151 +145 138 130 138 187 140 175 153 143 136 88 95 +135 140 134 119 156 165 158 148 164 185 156 146 +165 162 136 116 129 126 145 171 141 125 136 134 +113 99 118 113 115 114 113 104 113 118 126 133 +129 138 135 137 120 103 109 111 121 137 128 135 +129 133 141 141 125 107 99 82 100 118 114 123 +109 98 104 136 154 139 147 146 141 145 115 114 +106 137 137 128 140 125 127 124 127 110 124 137 +121 137 140 135 136 121 123 130 136 135 139 144 +134 145 143 118 118 109 116 133 133 126 125 136 +137 143 153 156 148 131 136 126 +156 165 167 161 +145 143 166 171 167 165 161 169 179 157 170 161 +155 160 161 165 170 172 164 151 161 167 159 157 +148 148 165 171 169 176 172 175 166 157 172 179 +174 166 164 165 176 177 174 170 182 175 170 178 +185 192 191 177 179 180 175 174 165 157 161 175 +174 174 160 151 128 160 158 161 166 176 162 145 +137 149 176 174 154 149 162 157 167 174 171 179 +162 135 116 109 116 130 123 114 128 169 161 156 +155 143 143 179 149 97 60 85 107 123 128 133 +117 137 149 102 98 111 110 127 95 156 200 194 +154 104 58 174 146 85 97 151 178 125 130 147 +126 155 184 143 164 170 172 208 220 217 199 202 +179 196 206 194 184 197 170 201 208 206 192 215 +201 211 220 195 189 209 222 208 206 213 215 202 +169 192 219 209 211 215 205 205 205 216 210 208 +198 190 175 165 177 187 165 140 135 174 191 196 +205 161 135 135 155 184 196 192 191 133 143 202 +159 135 167 151 150 138 191 156 106 121 154 113 +102 165 190 140 187 168 127 119 114 117 108 165 +168 144 129 118 115 120 140 135 167 164 119 130 +110 109 121 141 113 159 197 177 150 126 135 153 +120 164 137 120 116 154 126 111 129 128 130 125 +124 174 194 148 138 130 175 170 127 137 125 162 +220 218 153 160 207 189 123 145 133 107 102 108 +194 168 120 120 103 117 201 211 149 90 111 182 +141 116 137 123 113 125 118 186 175 105 95 139 +211 220 184 151 202 184 141 159 135 127 148 199 +126 89 82 145 198 160 129 127 194 175 140 140 +151 134 126 128 189 188 197 160 174 191 144 197 +217 199 187 192 207 191 189 171 156 165 146 141 +175 185 186 204 201 168 197 182 153 135 148 169 +217 181 166 187 172 144 127 134 151 136 140 131 +160 153 156 149 115 115 123 75 128 166 131 131 +131 128 148 145 128 172 171 133 121 141 169 155 +137 127 131 167 156 129 118 128 129 116 106 102 +115 119 118 109 126 127 127 125 124 119 127 124 +119 124 107 118 120 130 125 126 125 129 141 131 +128 114 93 96 94 109 111 110 124 106 115 136 +160 156 137 146 140 146 123 100 110 114 128 131 +135 125 119 133 103 104 125 123 125 120 137 130 +131 129 120 131 125 125 136 135 125 138 145 129 +116 120 118 123 130 126 125 121 124 131 133 130 +129 130 116 121 +170 176 154 140 125 151 171 179 +167 174 182 185 177 165 162 154 149 161 156 160 +164 156 162 158 157 168 155 140 141 155 156 176 +177 171 179 164 153 165 171 172 175 179 171 170 +180 181 185 184 181 171 170 176 188 186 180 176 +175 162 164 166 161 158 168 179 182 180 164 145 +135 154 164 165 175 172 169 150 138 159 170 169 +150 144 160 158 168 171 185 169 149 136 111 131 +123 119 136 138 153 156 158 159 154 148 130 194 +146 84 78 79 113 130 127 138 121 125 120 87 +76 98 117 104 162 211 185 146 116 63 38 165 +165 119 121 151 177 155 123 144 148 174 180 126 +171 197 220 216 219 212 171 206 190 205 197 185 +191 200 199 209 196 196 204 207 205 218 198 194 +208 209 220 182 207 215 205 176 180 210 212 213 +213 215 189 210 210 219 217 206 181 175 184 194 +208 201 175 165 164 200 218 210 176 154 144 174 +180 180 179 178 155 154 209 181 136 168 208 195 +150 169 174 114 113 153 129 94 133 197 134 157 +181 134 117 110 121 124 135 181 149 145 137 130 +125 146 133 133 185 146 147 137 123 123 124 160 +114 176 179 182 156 118 121 139 111 167 148 118 +105 153 133 129 127 140 182 140 143 180 180 175 +133 137 174 179 137 149 113 141 218 208 135 179 +197 161 127 117 143 106 85 90 167 192 118 125 +108 87 166 208 174 120 85 172 198 137 154 128 +97 92 134 171 187 115 93 116 212 218 187 191 +211 202 151 147 130 99 157 204 146 113 83 103 +148 186 141 143 197 200 169 171 160 175 151 131 +143 172 176 195 182 199 164 169 209 213 169 188 +205 184 189 170 178 168 159 136 184 166 136 185 +215 191 181 189 175 171 170 156 204 188 192 156 +166 169 149 124 155 136 136 134 153 181 153 138 +120 116 138 124 119 161 141 138 125 118 155 157 +148 149 168 164 130 114 143 168 160 134 135 149 +160 128 115 118 134 118 104 108 111 118 120 113 +136 135 129 123 113 124 115 111 97 105 121 117 +134 129 130 129 124 131 111 129 126 127 113 92 +97 102 107 114 120 127 107 125 154 155 157 140 +130 130 120 94 89 130 135 154 141 115 116 124 +118 107 114 111 117 118 117 121 128 114 116 118 +117 123 135 130 133 146 141 138 131 119 113 118 +131 118 123 126 106 118 136 123 118 123 119 108 +178 169 156 135 146 160 186 169 172 185 182 182 +172 150 148 148 151 170 160 156 149 151 153 160 +170 165 156 140 147 154 175 174 168 184 179 166 +167 171 171 182 176 177 179 172 177 186 187 178 +175 161 167 175 176 176 180 177 171 165 165 160 +161 175 175 180 178 171 161 155 149 151 168 161 +175 177 168 155 153 164 174 171 150 143 153 158 +154 169 181 165 149 135 129 133 135 136 144 128 +125 147 154 155 147 148 117 167 139 73 87 95 +121 134 133 134 117 116 106 89 90 82 140 185 +194 148 127 93 84 57 55 162 180 126 159 130 +161 141 131 144 169 177 157 149 221 215 182 206 +222 195 177 191 197 188 192 181 197 200 181 185 +205 190 217 199 220 208 209 200 205 202 211 204 +212 207 199 182 201 212 211 217 215 190 205 219 +217 217 202 192 187 179 204 198 210 197 205 201 +195 213 213 191 159 146 149 182 161 188 201 182 +177 207 184 146 167 208 205 167 126 184 151 126 +160 130 103 106 195 157 130 199 143 118 105 106 +119 151 172 170 127 124 121 131 131 158 123 128 +169 115 172 119 119 129 141 172 121 161 162 174 +133 107 110 115 105 174 161 146 113 125 128 131 +138 150 200 171 150 192 168 154 153 158 166 175 +124 119 111 124 213 198 121 176 175 133 141 103 +150 157 137 115 121 199 156 115 125 103 124 182 +200 146 115 147 201 140 130 133 99 108 143 185 +181 137 109 128 200 197 200 195 188 202 186 158 +164 94 121 201 147 102 121 98 103 143 179 156 +195 175 176 157 170 170 188 147 150 147 166 187 +189 211 195 162 204 216 179 158 184 171 181 184 +158 161 164 149 169 191 174 139 189 199 196 180 +166 172 187 159 194 200 190 186 166 161 137 125 +110 149 129 139 166 190 171 150 125 115 114 129 +130 150 150 118 135 119 125 174 146 140 146 161 +159 127 130 129 153 159 143 154 166 139 113 108 +119 117 118 109 123 125 129 131 137 138 135 130 +124 115 119 94 97 98 115 120 136 140 128 135 +135 115 115 100 118 114 103 97 97 115 102 116 +133 119 113 125 140 151 150 131 138 138 108 118 +97 117 166 168 144 123 119 129 129 124 109 119 +105 120 130 121 125 119 108 125 111 105 126 139 +133 145 148 136 134 113 109 120 113 106 108 108 +103 115 136 131 134 118 114 120 +177 164 146 146 +156 170 180 174 179 184 191 177 153 157 133 137 +150 162 167 157 143 149 157 169 181 175 161 151 +165 170 166 176 185 179 175 172 172 176 179 180 +186 185 178 179 182 185 177 172 172 162 176 176 +170 174 171 177 177 166 160 160 171 174 184 182 +170 171 162 162 154 169 169 172 170 169 167 161 +156 167 181 175 157 147 148 153 158 166 168 151 +131 141 137 135 126 130 125 100 114 153 156 146 +149 121 108 166 129 93 87 102 134 119 119 126 +126 99 92 79 84 151 197 171 116 86 92 77 +89 55 51 145 171 164 135 141 159 150 127 147 +176 145 175 213 202 153 180 208 209 147 178 187 +192 182 198 182 187 189 181 201 191 216 200 218 +221 207 161 201 204 207 217 207 207 204 180 192 +210 204 208 213 206 198 219 218 215 212 180 195 +192 207 192 211 195 199 212 206 206 210 209 172 +175 157 179 177 198 195 169 177 207 205 191 168 +209 210 186 164 156 185 149 184 159 118 99 181 +181 105 184 160 116 113 105 150 143 196 174 174 +111 108 129 126 151 158 111 133 158 121 190 149 +120 127 160 171 128 165 159 170 166 137 129 121 +99 175 178 140 123 156 151 120 118 120 187 160 +139 187 151 136 140 157 141 159 171 129 126 129 +216 206 167 186 161 116 135 157 146 189 159 109 +110 188 181 131 140 148 127 154 208 175 126 130 +197 176 136 156 130 87 125 196 197 129 117 169 +170 140 200 182 196 176 202 156 157 127 114 194 +176 121 125 116 89 106 145 179 196 188 177 177 +161 166 190 201 161 162 161 177 180 205 217 191 +196 218 201 161 172 158 177 186 198 157 154 148 +154 181 189 141 178 171 171 187 196 168 170 180 +194 210 178 184 182 166 156 146 143 140 136 138 +155 198 182 171 128 103 119 120 139 136 138 125 +126 123 117 136 141 139 146 134 158 169 138 136 +123 124 131 134 169 154 140 124 134 134 131 131 +135 125 135 134 121 128 116 125 137 123 116 115 +106 107 95 109 137 123 137 136 126 115 106 98 +114 111 87 95 80 93 109 119 127 119 113 136 +154 143 143 139 131 136 123 99 108 123 162 170 +143 129 124 135 128 126 118 97 113 116 118 128 +126 126 119 118 119 117 124 129 135 134 146 141 +130 137 115 105 108 104 107 99 113 114 124 125 +113 129 117 114 +181 156 156 164 177 182 182 174 +169 175 161 158 160 144 129 139 147 160 167 158 +159 153 162 170 178 165 162 158 169 159 159 172 +179 176 179 177 178 179 172 180 192 190 179 178 +174 179 180 171 161 169 168 180 179 172 158 169 +169 166 161 172 177 184 184 171 165 162 161 168 +167 160 165 161 161 169 174 154 169 175 170 167 +148 135 146 149 159 166 168 139 134 147 131 128 +127 131 117 109 123 140 153 148 124 115 111 170 +153 98 113 131 137 121 130 138 130 108 86 105 +174 188 160 126 87 67 66 72 82 45 73 114 +202 149 110 150 161 147 108 135 181 208 217 199 +174 149 198 205 205 147 167 188 176 167 198 198 +181 194 195 204 209 209 210 227 209 169 177 195 +200 219 202 189 201 172 198 202 208 210 213 213 +211 220 212 208 209 205 194 199 206 192 191 207 +201 210 201 197 208 206 189 169 200 188 205 209 +202 170 178 195 172 188 169 207 204 178 164 165 +154 172 179 175 144 139 143 189 116 138 174 119 +105 103 125 187 195 170 184 134 108 133 175 113 +182 137 171 158 156 165 201 150 135 133 174 167 +137 146 126 182 168 133 121 117 99 184 180 123 +114 129 123 113 147 118 180 165 140 185 134 121 +148 175 153 160 202 179 147 131 209 192 175 188 +161 156 135 160 147 156 157 115 105 161 205 143 +127 145 121 117 202 202 165 162 172 194 147 156 +126 96 100 170 207 145 102 195 154 106 174 206 +215 175 199 158 151 130 114 188 174 146 135 129 +113 85 116 131 194 215 180 202 169 155 157 197 +200 178 174 176 185 184 213 200 182 212 213 191 +160 160 166 158 179 194 165 153 182 189 179 167 +180 158 149 160 198 208 189 179 188 208 161 149 +172 177 167 146 126 139 177 153 154 207 192 182 +127 106 100 124 135 134 150 129 120 136 113 117 +144 148 129 140 134 149 164 134 118 117 107 120 +141 145 137 139 124 117 131 127 121 126 120 129 +120 111 121 121 126 131 123 123 118 115 109 111 +130 140 141 130 115 116 93 98 116 109 100 80 +73 92 97 90 99 118 109 145 148 137 138 123 +126 133 120 108 96 133 164 166 148 131 136 126 +125 120 111 109 109 127 115 118 126 108 108 105 +119 114 113 131 128 141 138 136 139 123 117 104 +97 92 103 100 92 102 97 120 111 108 117 110 +170 175 177 179 186 181 172 170 166 155 148 161 +157 150 136 138 144 153 159 158 171 168 160 174 +176 155 168 175 169 156 159 172 180 172 185 182 +176 162 182 188 190 188 177 167 172 170 174 172 +171 167 175 185 172 172 158 157 166 172 167 178 +184 175 178 177 167 164 175 169 168 172 159 164 +164 166 155 155 166 164 155 155 144 130 147 147 +154 169 165 157 151 130 145 134 140 144 134 128 +119 155 161 139 120 110 124 168 150 100 105 129 +109 103 121 134 116 93 134 178 164 143 144 114 +82 86 105 74 79 95 78 100 201 110 88 125 +128 139 159 186 205 208 154 172 149 185 200 211 +190 146 188 186 172 185 189 174 175 195 197 197 +206 205 219 207 181 165 192 215 218 195 187 191 +181 194 207 201 209 213 216 221 221 218 211 204 +199 195 188 191 198 197 209 209 210 202 196 197 +201 202 179 197 177 206 201 201 187 189 198 192 +199 167 197 210 181 168 177 172 175 177 165 135 +139 137 192 175 134 186 150 139 109 97 168 200 +175 148 182 121 107 166 177 148 184 135 190 148 +136 195 185 128 135 126 174 160 125 126 128 186 +169 133 114 115 113 172 178 129 107 124 121 123 +190 143 169 161 164 187 159 135 139 165 145 154 +189 184 130 151 213 178 179 174 134 128 126 140 +171 150 167 116 140 139 205 182 111 120 136 116 +164 204 197 146 144 196 150 136 133 137 97 155 +200 167 135 178 123 106 135 208 205 189 196 192 +166 136 137 182 169 144 166 136 159 148 103 109 +156 210 205 198 187 170 180 164 192 210 191 185 +195 178 204 212 181 204 225 200 178 182 179 159 +156 178 189 179 154 187 160 149 164 188 151 131 +167 194 186 185 185 196 170 153 140 151 175 169 +121 107 157 144 123 181 201 198 139 121 117 108 +120 140 146 127 113 106 119 120 116 158 156 130 +135 139 138 129 148 110 106 128 128 146 131 123 +116 115 128 120 113 107 123 127 109 119 114 124 +119 113 134 96 104 103 114 120 115 143 143 135 +121 108 97 78 110 114 95 83 78 96 79 84 +102 102 116 131 141 134 125 131 123 124 120 120 +116 116 168 176 135 119 124 129 116 115 107 116 +105 95 121 111 106 114 105 117 115 108 121 126 +119 131 139 127 128 117 96 111 94 100 92 88 +87 90 100 96 106 117 115 118 +169 177 182 187 +191 179 175 164 147 140 147 146 160 146 138 137 +137 135 150 172 164 171 169 169 159 157 157 159 +165 151 157 175 187 188 194 185 171 179 177 176 +189 182 171 164 175 170 170 174 172 172 177 170 +176 171 157 170 164 160 166 178 185 180 186 172 +162 161 169 174 168 169 168 165 167 170 147 154 +161 153 156 150 147 141 139 134 153 165 167 150 +139 146 149 156 151 150 135 127 143 140 158 128 +98 111 116 150 149 88 92 113 100 87 120 119 +130 165 188 139 108 141 140 105 87 57 66 82 +73 79 87 107 196 113 84 98 141 191 184 185 +204 151 154 182 141 194 196 197 170 166 170 189 +189 192 185 172 179 199 186 207 198 219 202 196 +168 177 219 217 188 197 184 188 185 205 181 204 +215 213 213 216 220 215 211 182 195 197 184 191 +211 206 211 209 192 208 216 198 207 197 191 180 +205 205 208 202 187 178 189 204 180 199 209 187 +160 174 178 169 186 176 171 156 147 172 188 162 +161 181 151 200 159 126 200 196 137 186 139 111 +105 189 141 171 165 141 194 144 136 202 169 121 +133 120 195 166 118 117 128 186 175 124 115 129 +108 162 196 188 137 115 123 136 200 155 161 176 +164 167 141 138 130 164 120 134 176 197 130 164 +209 159 174 175 145 146 146 120 181 172 185 161 +146 131 202 213 167 147 148 128 161 208 211 167 +131 170 178 133 136 129 105 131 197 201 190 151 +89 95 114 192 200 157 207 209 161 148 137 176 +180 114 131 150 159 153 127 108 161 191 200 213 +210 195 196 171 187 209 199 194 187 189 199 218 +210 199 219 208 187 189 194 162 159 161 171 188 +165 179 156 166 171 167 165 161 162 160 188 185 +200 210 197 160 146 147 156 181 178 138 149 161 +109 164 196 194 141 108 123 96 117 127 133 146 +124 117 119 129 124 144 175 155 123 129 129 133 +146 139 118 111 123 135 138 121 128 130 128 125 +107 119 123 113 123 118 115 131 123 105 99 114 +106 108 111 111 108 118 131 138 127 106 102 105 +96 119 113 86 84 77 93 88 103 114 110 129 +134 123 126 136 125 136 139 126 114 127 166 175 +143 127 134 131 118 121 121 110 105 118 89 106 +100 98 113 126 120 110 108 123 130 129 130 139 +123 125 113 98 98 96 82 78 87 74 88 108 +79 98 114 104 +168 170 184 188 185 178 155 146 +140 134 157 159 158 139 136 134 133 137 161 170 +175 171 161 169 160 158 147 154 148 153 162 177 +181 192 187 178 171 180 176 176 186 188 172 159 +168 174 178 169 174 172 165 172 161 155 154 155 +164 162 170 177 191 187 176 177 169 153 168 166 +167 170 161 165 165 166 154 145 162 146 148 158 +148 116 138 139 149 166 150 143 147 137 149 150 +149 145 136 134 138 153 134 114 107 110 118 136 +148 92 99 96 78 103 109 144 167 150 120 104 +99 127 129 108 78 74 57 99 93 83 115 76 +176 121 109 185 170 157 172 164 166 144 153 180 +176 199 178 192 170 164 187 164 181 198 178 172 +185 202 210 202 206 218 182 191 190 216 215 200 +191 180 177 199 185 175 196 218 212 212 218 218 +213 218 191 154 189 186 177 210 202 202 206 190 +208 220 195 201 200 195 188 202 204 207 207 192 +166 199 197 170 194 204 186 176 179 180 195 189 +179 192 177 150 171 196 167 139 159 151 184 202 +176 166 210 159 174 201 159 154 153 202 164 195 +140 165 180 123 164 212 165 153 124 156 206 167 +124 127 134 194 189 130 120 138 138 166 194 202 +145 140 131 149 197 165 150 195 172 137 133 128 +133 143 116 145 184 204 185 184 198 182 182 190 +171 167 143 140 148 182 197 179 164 154 187 208 +198 141 140 148 137 189 210 201 166 197 204 144 +124 165 151 146 184 200 198 125 96 126 110 171 +205 161 182 199 186 136 119 172 186 123 111 136 +172 174 162 137 160 196 167 211 218 216 202 197 +177 189 191 192 206 202 184 213 207 192 219 219 +182 200 201 170 147 158 165 170 181 185 154 139 +168 154 145 143 172 158 140 175 187 186 211 186 +146 140 129 164 186 179 156 165 139 155 206 195 +133 111 89 103 115 114 128 148 148 126 121 134 +129 124 147 184 164 123 120 111 136 140 126 128 +133 137 141 148 135 139 136 97 118 119 120 125 +127 115 111 117 100 115 109 92 114 118 113 108 +104 116 135 135 119 117 102 80 109 107 107 94 +84 86 84 75 111 120 100 123 131 119 131 130 +133 146 136 139 118 138 177 178 148 129 135 133 +124 126 106 111 97 116 118 106 103 105 106 117 +124 116 110 120 105 120 123 111 128 116 109 90 +98 89 83 72 66 75 83 87 93 92 110 109 +169 186 195 186 182 158 146 129 131 148 154 154 +139 135 130 137 144 143 164 175 169 167 164 168 +165 159 160 160 158 161 175 182 185 179 172 172 +179 184 178 178 182 178 166 167 171 170 169 176 +166 164 175 169 162 148 143 145 158 167 169 180 +182 181 188 180 158 154 153 162 178 172 159 170 +171 160 143 145 143 135 144 154 148 124 131 153 +149 145 159 151 145 149 160 155 144 130 126 144 +156 146 128 114 126 111 119 113 141 114 102 86 +74 92 162 192 146 119 114 99 102 133 141 118 +89 64 107 100 83 95 113 66 156 190 129 151 +117 160 156 129 151 109 126 175 196 181 146 200 +182 161 136 139 191 204 162 187 202 187 215 195 +216 202 188 211 216 209 209 199 198 171 205 202 +176 205 220 202 204 218 216 215 220 189 159 169 +199 200 207 202 187 209 207 206 218 202 205 210 +187 200 192 194 202 211 199 164 179 201 201 188 +206 176 171 175 186 191 189 197 191 187 164 180 +192 182 166 159 160 145 195 154 138 196 170 144 +200 182 154 149 184 186 175 192 120 190 160 131 +191 204 138 134 137 202 202 162 118 129 143 202 +188 116 103 127 130 157 181 196 157 150 154 149 +194 174 162 204 174 145 140 153 159 180 179 160 +194 199 186 156 162 172 187 179 195 184 154 120 +119 168 205 187 180 160 172 198 200 161 175 172 +157 179 209 207 188 164 198 156 136 138 137 135 +161 205 185 138 104 123 115 164 212 169 184 192 +202 171 133 168 204 176 167 136 164 176 168 175 +171 205 189 191 216 225 208 208 194 170 171 194 +185 202 191 190 213 209 207 222 189 189 211 171 +172 151 156 151 160 186 187 153 161 160 133 126 +154 168 150 158 194 194 211 179 167 141 120 137 +172 174 170 169 153 159 208 191 133 118 96 89 +111 95 97 134 140 136 129 130 121 123 138 144 +175 171 121 111 119 117 119 118 117 124 143 133 +141 140 138 113 114 116 127 119 130 136 116 110 +125 104 113 115 99 114 111 105 104 118 128 131 +124 114 109 95 99 109 116 99 90 82 87 93 +120 107 111 108 128 134 120 135 120 136 147 137 +134 137 167 171 144 129 117 137 125 115 116 99 +97 106 102 95 97 88 96 115 114 117 110 98 +106 95 110 110 117 120 96 100 89 92 92 94 +80 68 77 83 88 95 95 100 +178 188 184 186 +167 150 134 131 140 161 164 148 150 136 140 161 +160 166 172 177 168 169 169 156 159 166 165 161 +166 165 176 176 172 174 169 171 181 180 169 172 +190 177 172 170 169 169 179 162 168 166 167 159 +154 133 134 131 139 160 167 167 176 178 177 166 +164 148 154 160 158 169 165 164 171 159 150 145 +130 143 153 164 138 130 146 150 166 154 143 146 +149 141 151 159 150 140 128 156 160 131 131 120 +77 114 121 111 135 117 103 85 106 162 182 137 +125 123 110 86 105 127 146 108 76 69 88 78 +90 110 89 90 139 180 96 104 124 120 147 141 +136 118 136 172 206 144 133 208 155 141 119 160 +185 195 186 182 160 213 202 220 211 174 215 221 +206 198 217 192 171 180 213 207 218 219 212 198 +216 219 220 215 206 174 176 187 206 213 206 200 +209 204 204 217 208 206 215 190 201 188 197 200 +210 199 186 171 204 205 205 207 165 166 186 170 +170 199 198 182 195 176 187 177 184 174 150 145 +154 171 180 135 182 200 138 178 188 153 157 166 +199 170 195 171 150 201 149 194 210 191 169 169 +171 201 195 169 127 138 158 213 185 154 171 151 +138 155 191 200 160 169 160 170 186 175 170 202 +168 169 182 182 181 187 177 180 186 177 196 162 +166 197 186 166 189 150 135 130 150 159 206 202 +174 160 161 188 197 192 172 170 189 176 200 208 +165 172 186 197 172 136 155 146 176 206 180 164 +140 100 125 172 207 199 179 210 207 198 131 145 +205 181 164 158 156 184 174 192 175 211 199 184 +202 209 209 209 199 169 179 174 174 189 187 195 +217 208 198 222 210 185 216 184 176 164 155 129 +168 179 176 181 181 194 149 131 118 155 170 177 +167 189 205 181 168 144 129 120 141 154 150 158 +168 157 196 182 125 121 97 97 120 88 82 113 +128 138 136 136 137 130 130 128 119 161 180 124 +109 130 108 105 126 118 136 127 135 138 139 131 +119 117 114 118 144 125 121 130 120 114 107 118 +111 120 121 95 99 100 141 138 118 120 109 107 +110 113 115 93 92 82 97 103 118 119 95 108 +126 131 134 123 117 130 135 143 143 158 161 161 +139 127 135 137 128 120 106 96 93 104 83 100 +89 92 106 102 115 118 121 94 89 82 84 115 +121 103 129 114 111 95 84 92 88 75 98 107 +87 84 102 89 +177 179 176 162 146 137 129 143 +168 162 153 156 135 137 144 156 166 158 155 175 +171 167 156 151 148 167 175 178 180 180 170 160 +158 162 175 172 170 174 187 175 180 179 180 172 +174 172 167 176 166 166 169 165 160 148 135 117 +135 160 161 165 167 166 174 170 158 159 164 158 +160 165 157 161 154 155 147 139 145 147 160 159 +135 140 143 155 161 162 159 141 146 140 146 149 +149 139 144 143 130 140 131 118 106 96 109 99 +106 100 88 141 182 164 129 127 116 94 114 126 +124 154 143 103 80 89 76 99 126 108 99 87 +88 180 109 96 117 129 129 139 126 145 120 189 +180 125 157 208 150 156 131 154 186 208 174 168 +202 208 209 213 199 211 215 197 182 201 206 191 +172 188 210 216 209 205 205 210 209 217 220 206 +186 175 197 198 210 211 198 200 210 202 215 210 +206 215 197 199 212 200 202 215 191 192 200 196 +207 200 202 187 167 168 207 198 196 204 196 188 +196 180 206 192 186 178 192 186 147 184 165 149 +191 187 168 200 179 143 149 169 191 165 196 145 +156 201 158 192 215 176 134 176 178 196 186 164 +123 117 182 204 180 126 137 154 138 134 186 199 +156 169 175 177 186 180 175 198 182 187 181 169 +161 160 174 179 179 171 190 161 170 190 178 160 +189 158 148 146 165 164 189 205 190 191 167 184 +199 201 176 178 194 181 196 207 175 170 177 210 +190 162 192 179 171 205 188 179 182 125 115 158 +182 206 157 191 210 211 176 129 197 198 184 180 +188 184 179 196 190 208 194 194 192 202 207 215 +217 199 171 166 177 181 180 197 216 211 207 213 +225 194 209 192 182 172 165 161 162 176 196 169 +160 201 159 139 133 138 137 161 161 150 196 177 +164 146 109 135 143 140 138 144 159 165 202 181 +116 123 138 157 129 94 95 99 143 126 116 119 +124 133 129 143 140 118 150 177 153 118 110 104 +100 121 124 131 130 129 147 147 135 109 107 127 +143 135 131 129 104 117 118 104 121 127 102 98 +88 107 137 138 126 121 120 102 113 97 92 97 +79 93 95 82 106 108 97 96 144 139 126 136 +119 131 138 147 161 167 161 147 135 116 127 137 +118 120 104 93 92 87 102 86 85 106 108 115 +114 124 118 117 97 88 106 105 115 121 107 110 +105 98 85 80 69 79 77 66 92 84 84 97 +180 174 153 141 140 131 160 159 171 165 159 148 +146 139 149 164 160 166 154 154 161 167 157 143 +154 169 174 176 184 175 168 146 144 162 168 174 +170 170 169 174 180 179 178 177 165 162 168 174 +168 167 166 161 165 158 129 119 143 156 171 172 +166 171 172 165 168 168 172 175 167 154 151 150 +146 159 156 139 127 148 150 157 156 151 146 153 +161 160 157 133 130 148 140 143 153 143 141 140 +138 131 128 116 100 98 92 99 97 85 151 177 +139 114 117 126 121 124 138 136 135 155 136 99 +96 76 98 124 110 90 99 89 75 179 137 102 +135 129 128 134 147 127 110 197 162 159 182 181 +161 153 139 160 198 189 155 180 216 191 216 177 +212 207 204 187 181 189 202 195 202 206 216 204 +191 201 215 202 208 209 208 186 175 191 205 208 +209 208 182 207 209 213 210 211 215 211 209 215 +206 207 212 196 180 206 180 200 200 204 206 186 +165 197 200 190 200 199 177 200 179 189 192 187 +178 180 189 199 196 188 150 169 206 166 197 212 +176 158 161 189 202 205 196 185 180 190 186 199 +209 167 158 161 187 202 181 177 127 118 181 178 +168 116 131 157 145 143 195 200 162 164 166 168 +192 172 171 189 181 189 197 185 172 184 185 181 +188 164 188 180 167 176 168 155 182 176 182 174 +177 171 186 205 206 199 190 185 198 207 209 195 +207 205 191 202 190 162 177 210 199 179 188 192 +166 198 166 190 186 170 125 177 179 190 194 188 +210 211 197 157 196 200 200 200 197 184 202 181 +205 213 209 188 196 198 205 219 219 210 187 177 +177 194 188 180 209 205 206 201 225 197 212 180 +184 168 168 153 147 156 182 174 159 160 182 192 +156 145 117 135 135 145 174 190 184 169 138 123 +147 137 125 136 144 147 190 186 139 103 126 146 +150 136 119 125 129 134 111 108 130 130 134 127 +146 145 130 131 164 174 150 115 114 116 133 129 +129 135 131 145 149 131 116 123 138 137 129 123 +114 106 102 115 120 107 102 96 94 110 127 136 +129 111 116 109 94 99 111 98 96 88 80 89 +99 87 88 115 135 141 121 118 119 115 130 138 +167 171 146 130 124 110 105 134 126 117 104 89 +86 98 95 92 97 97 111 134 131 125 140 115 +98 80 84 100 104 117 118 114 104 93 95 76 +87 75 74 84 80 92 78 82 +169 149 133 145 +153 157 151 165 166 167 154 154 146 137 147 170 +165 157 154 147 166 169 157 146 169 170 174 160 +170 159 153 143 158 166 172 174 164 176 169 174 +169 176 174 171 165 167 168 169 169 161 155 164 +166 150 135 134 141 170 175 172 167 156 156 169 +169 167 175 164 156 145 140 140 153 155 145 133 +129 139 149 151 157 160 143 145 160 165 147 136 +138 139 146 140 149 144 146 147 153 121 125 107 +83 93 97 84 115 135 162 129 118 107 129 144 +145 161 141 125 144 157 157 115 97 80 97 109 +108 110 103 90 78 123 167 98 137 128 109 128 +151 129 118 202 167 134 181 166 153 125 139 128 +187 175 151 211 191 212 198 206 201 196 210 189 +184 201 213 210 192 212 205 185 198 211 213 204 +208 208 202 179 171 215 210 206 207 205 198 211 +210 210 209 207 202 212 206 212 213 207 204 204 +204 209 201 204 209 217 204 187 200 210 176 182 +175 199 192 201 177 198 201 178 196 199 190 186 +199 204 191 202 192 171 205 204 165 169 169 197 +199 208 191 200 207 196 202 199 198 170 160 146 +201 188 180 178 149 137 192 186 189 164 148 153 +155 138 187 202 167 169 174 176 194 174 176 189 +199 200 192 186 181 181 177 180 180 174 180 189 +170 174 160 149 181 201 187 182 187 195 196 198 +208 207 188 171 197 204 205 200 208 205 194 197 +194 171 179 201 199 185 181 198 177 184 169 189 +197 165 158 184 189 155 204 179 196 198 207 189 +190 188 209 202 179 195 197 199 196 211 207 197 +189 189 194 220 218 216 201 178 171 195 187 192 +200 199 205 194 220 209 211 180 174 186 176 169 +160 149 157 177 138 149 182 179 178 170 137 135 +139 134 162 171 187 179 177 153 139 151 116 117 +141 123 181 185 164 154 150 144 130 121 104 113 +157 151 131 124 123 123 119 121 136 141 124 107 +120 123 147 151 154 145 151 156 140 146 139 126 +139 137 114 114 128 111 124 115 94 105 95 102 +109 100 107 94 80 105 128 135 121 130 106 108 +110 97 120 108 99 98 95 86 103 99 77 119 +144 136 127 123 118 119 119 139 164 162 141 121 +120 103 120 124 126 116 106 103 93 103 90 104 +103 98 120 133 128 131 135 134 108 94 84 99 +99 99 120 102 110 103 82 103 83 82 78 85 +77 84 96 75 +157 150 155 158 176 150 138 156 +161 161 158 155 149 150 150 166 168 162 149 144 +161 158 164 162 177 176 154 157 158 149 154 160 +156 156 170 167 165 167 164 158 166 174 175 162 +154 154 162 157 153 169 162 159 161 157 148 155 +167 168 180 181 178 164 160 161 164 175 164 147 +140 134 127 139 139 150 149 135 137 138 157 153 +166 149 136 147 151 160 161 139 141 146 143 140 +141 146 145 146 137 131 125 109 110 97 80 116 +164 146 128 116 126 131 124 171 175 138 124 120 +130 161 165 123 120 99 102 109 115 98 106 92 +69 95 190 125 136 111 105 128 139 105 125 202 +157 133 176 136 143 169 134 86 174 164 188 211 +202 216 207 181 177 209 208 197 202 209 215 196 +184 211 199 204 197 219 202 209 204 201 197 175 +199 209 208 209 209 201 205 211 216 213 211 202 +207 202 210 209 213 209 196 196 209 209 199 204 +217 209 188 189 212 196 180 205 207 196 202 190 +189 209 192 191 186 188 194 186 195 196 198 208 +178 200 209 180 182 201 197 204 197 199 208 194 +209 204 202 208 184 154 161 175 202 191 187 189 +161 153 190 188 194 167 156 166 165 145 201 198 +178 186 192 176 197 170 172 191 202 195 200 191 +187 189 185 177 172 170 171 198 176 156 137 137 +169 206 190 182 182 202 189 199 207 200 205 188 +191 202 210 209 198 196 175 177 199 167 185 192 +208 206 185 178 205 204 186 184 195 187 160 204 +171 156 200 200 201 209 207 209 202 195 205 212 +186 175 198 205 198 217 212 192 184 200 185 202 +206 205 204 202 170 186 185 185 192 209 188 205 +220 218 213 200 176 178 172 158 159 170 158 181 +177 130 167 170 166 170 172 175 129 119 154 153 +156 190 168 167 166 160 149 130 124 127 178 178 +161 153 145 130 114 89 92 69 123 145 129 137 +123 108 107 109 100 126 148 114 115 109 96 114 +126 140 128 134 128 123 123 107 114 118 108 115 +106 117 106 102 102 94 102 108 107 97 104 114 +87 117 119 121 131 111 108 107 106 114 119 120 +99 99 85 90 115 103 95 116 147 135 114 125 +119 126 125 130 158 156 135 124 107 105 95 105 +110 123 113 96 97 80 90 106 111 113 124 136 +133 136 138 134 118 98 100 85 87 103 95 94 +92 93 88 92 102 86 102 84 80 87 64 99 +153 157 178 181 164 139 134 151 162 165 161 151 +155 154 156 161 162 148 148 146 151 157 156 160 +184 171 150 150 140 143 157 156 162 164 167 172 +172 161 147 148 170 171 174 167 161 162 161 153 +159 159 172 168 159 158 154 169 174 182 177 177 +177 177 170 157 158 151 138 135 140 146 159 144 +149 153 150 141 144 150 141 164 167 154 148 143 +154 166 148 143 141 140 146 145 137 143 144 138 +135 131 129 111 100 92 96 162 157 114 97 109 +113 117 161 180 155 121 103 117 134 148 177 148 +114 83 97 107 109 99 90 72 59 57 184 143 +121 104 109 113 119 111 174 164 175 134 157 135 +150 146 115 79 151 178 213 200 219 210 182 184 +197 208 213 210 206 207 209 178 190 209 197 205 +206 213 206 212 198 188 187 180 209 200 204 215 +204 194 210 217 215 208 215 210 207 211 212 210 +211 208 189 208 210 201 196 215 212 204 187 204 +216 182 192 202 188 208 199 190 199 207 188 192 +200 188 176 178 201 187 202 198 187 204 202 178 +172 175 175 198 210 200 205 204 205 197 184 209 +181 171 179 181 191 180 181 189 166 153 185 194 +178 164 151 140 150 153 191 198 191 194 187 170 +196 179 172 187 207 204 196 185 177 174 168 170 +189 177 162 195 187 169 178 179 194 204 204 197 +201 205 198 202 198 204 209 201 190 200 202 207 +186 180 175 161 187 178 181 189 208 204 177 171 +192 207 168 153 182 202 177 200 190 182 201 206 +198 206 194 208 210 204 198 217 209 188 176 192 +212 219 215 201 189 174 201 200 200 208 204 208 +204 187 192 170 187 202 192 201 194 223 219 207 +176 180 177 174 185 157 146 174 184 150 161 161 +171 166 136 189 174 147 135 156 119 145 177 151 +155 157 139 129 141 139 171 176 158 128 138 127 +109 96 89 95 107 131 121 110 121 114 115 94 +104 110 115 120 108 114 96 80 108 115 131 125 +113 125 106 120 106 123 120 110 117 107 110 108 +94 90 88 120 85 85 106 103 105 106 123 127 +129 115 118 114 92 107 129 119 117 103 80 85 +94 96 97 121 131 138 133 102 137 128 106 130 +145 158 148 128 111 106 90 85 117 117 110 106 +96 103 96 97 111 127 123 133 140 117 123 131 +123 118 94 93 99 105 100 97 100 88 79 84 +80 92 94 90 77 90 97 86 +164 178 179 166 +150 149 149 156 157 144 158 145 159 153 156 155 +151 143 150 158 149 155 172 175 169 156 140 137 +144 155 149 161 159 150 165 174 162 159 146 155 +170 180 168 164 167 166 157 157 162 167 168 174 +172 162 168 175 186 172 162 166 178 172 162 164 +162 164 166 162 161 159 147 144 141 149 147 146 +155 138 141 149 162 147 133 139 150 149 145 151 +146 149 143 138 146 146 126 130 129 120 120 121 +85 78 151 165 113 100 95 103 119 135 148 148 +120 105 111 110 109 115 161 143 104 87 95 111 +106 95 87 72 95 67 160 179 136 111 93 130 +127 99 195 135 161 143 137 123 172 120 110 78 +119 207 192 213 212 209 160 200 182 208 208 198 +199 196 201 186 206 215 208 191 210 217 202 209 +192 198 175 206 213 205 208 211 209 210 220 215 +200 209 211 207 213 215 207 207 213 204 194 210 +205 202 212 211 205 207 208 213 202 172 205 191 +189 210 186 195 204 192 197 206 198 177 184 174 +194 174 200 166 202 211 184 188 186 195 184 177 +204 205 197 202 187 191 189 204 177 165 175 201 +191 186 179 194 172 190 197 201 195 188 172 187 +184 159 177 199 195 200 198 184 200 198 197 197 +199 195 189 186 184 195 195 191 190 178 176 181 +188 187 202 195 192 200 209 205 205 209 199 191 +199 199 205 208 184 190 188 205 194 199 195 169 +187 197 191 189 204 178 150 156 153 198 194 154 +165 200 169 201 191 177 208 207 197 207 209 210 +209 217 198 206 211 198 181 188 205 216 208 213 +195 195 201 207 220 209 199 215 205 190 206 174 +186 200 187 194 185 218 218 208 195 180 179 167 +170 151 160 164 187 186 164 170 164 165 178 171 +143 140 172 155 126 135 159 157 134 133 119 93 +134 126 165 167 155 141 123 133 117 98 106 96 +105 117 115 98 96 109 84 105 103 103 106 116 +127 106 107 100 87 105 129 123 114 106 116 104 +107 120 129 110 103 106 105 110 106 103 104 113 +92 93 92 106 103 113 117 111 110 119 104 103 +98 102 124 120 107 100 88 80 102 103 90 121 +144 120 128 124 119 130 119 121 149 166 153 137 +118 84 102 95 111 120 109 105 103 89 107 117 +129 125 134 121 130 116 106 141 130 113 125 96 +97 102 97 93 100 87 76 99 82 87 96 90 +80 87 84 86 +179 176 157 140 150 156 168 177 +150 138 144 149 159 161 150 139 150 146 162 162 +166 159 159 169 169 154 141 161 153 150 159 164 +151 155 164 176 168 165 154 154 168 154 166 160 +157 161 160 156 161 162 172 172 182 180 182 184 +184 169 169 169 169 169 151 149 159 151 144 158 +148 143 134 139 137 133 145 141 156 144 130 151 +150 143 139 144 144 141 143 139 133 135 131 145 +143 151 137 127 120 125 118 105 97 156 164 126 +105 113 100 113 111 125 135 121 109 97 109 111 +90 117 149 147 104 82 109 124 120 100 120 123 +82 65 78 181 144 125 125 129 116 100 188 102 +146 146 119 147 185 108 98 78 117 206 194 216 +210 181 147 191 175 197 208 201 177 195 216 198 +207 213 194 205 216 213 208 204 179 180 189 215 +212 200 217 210 206 217 216 205 205 212 208 211 +210 216 204 200 207 189 189 195 206 216 216 208 +196 209 220 209 188 192 210 194 216 199 204 213 +212 194 202 204 185 202 195 171 199 194 186 187 +192 205 189 199 197 206 198 185 195 209 168 199 +186 171 190 185 146 172 176 197 196 189 164 202 +192 205 198 202 196 177 174 192 196 196 184 202 +200 197 200 177 200 196 190 187 186 197 190 178 +190 197 205 191 195 182 176 171 199 195 212 202 +201 204 206 200 202 202 206 204 199 192 205 206 +188 191 191 190 199 194 188 169 180 205 200 180 +187 182 174 162 159 185 204 189 165 188 191 205 +197 202 202 207 210 207 211 209 206 210 213 208 +202 207 188 196 189 215 206 212 206 192 206 202 +207 201 202 205 208 190 195 198 187 197 178 198 +181 208 226 213 194 186 170 172 161 161 154 150 +170 188 145 140 166 156 185 186 143 131 133 164 +174 144 157 156 146 138 115 106 110 129 140 148 +164 165 136 135 115 102 121 94 82 125 109 85 +104 89 98 90 85 102 110 113 115 127 102 108 +90 82 121 107 96 113 118 94 98 107 114 114 +95 96 104 94 116 110 113 106 92 86 99 96 +96 115 114 114 125 102 114 96 79 107 129 128 +107 104 80 84 110 100 111 127 108 119 123 125 +117 109 113 126 149 157 156 146 115 108 85 102 +105 115 113 111 108 104 105 93 111 131 121 125 +116 105 118 114 120 109 102 90 96 116 93 99 +88 102 100 93 114 97 104 99 90 98 80 93 +168 162 154 139 133 156 161 164 148 138 144 151 +149 154 149 143 141 151 175 170 165 157 156 160 +155 144 146 150 151 162 166 165 157 143 153 161 +169 168 169 154 154 148 143 148 151 160 159 169 +160 156 172 168 169 186 182 182 172 175 162 160 +175 166 160 153 147 155 151 154 141 141 133 131 +138 126 138 139 159 143 130 157 162 157 149 135 +139 148 135 139 135 130 133 139 153 141 138 124 +129 128 118 109 128 159 134 123 118 111 104 106 +116 120 134 126 104 119 113 96 97 110 141 127 +92 93 125 118 121 140 137 110 89 39 63 177 +169 153 125 115 114 141 181 104 119 147 129 174 +176 107 106 102 190 211 217 209 184 167 168 188 +157 201 195 187 156 200 205 194 200 207 196 210 +206 198 212 187 172 205 204 212 209 209 207 209 +212 220 212 211 211 207 208 210 211 210 204 207 +195 178 205 208 215 213 211 197 197 217 221 188 +175 204 206 212 216 209 215 207 209 205 207 198 +201 206 190 188 205 178 188 204 208 191 197 196 +201 209 184 200 205 189 170 199 190 169 199 159 +141 169 199 175 192 186 168 204 184 191 201 201 +185 180 174 194 190 194 189 206 192 176 174 166 +192 192 180 168 182 194 188 188 186 187 192 178 +181 184 170 166 196 206 204 201 205 197 201 199 +190 201 206 198 197 194 194 202 198 174 192 168 +199 196 195 192 194 205 188 166 197 176 202 185 +166 187 202 201 186 199 196 210 200 201 207 212 +215 209 202 210 207 204 207 213 202 211 191 197 +192 212 217 215 207 189 204 195 210 195 212 207 +212 198 178 194 177 181 188 202 171 201 222 206 +179 177 189 188 170 156 159 131 148 176 171 130 +154 157 202 182 148 129 125 145 119 105 149 166 +172 140 127 103 116 115 145 154 138 157 146 130 +131 102 102 115 94 107 113 103 87 104 107 95 +97 102 98 131 116 125 128 110 96 93 100 83 +82 94 110 116 100 102 125 111 128 97 80 109 +121 115 105 104 79 92 103 82 95 113 117 106 +106 109 102 105 93 87 125 119 111 96 89 105 +93 108 115 124 113 110 125 104 116 111 114 135 +149 161 157 137 121 109 99 92 110 98 102 120 +126 107 102 99 110 115 114 105 115 83 90 108 +103 117 113 99 100 113 106 93 100 96 116 121 +97 117 109 92 87 88 90 89 +161 154 149 136 +144 156 159 154 149 149 144 148 146 139 138 148 +148 162 159 169 166 154 165 159 148 144 146 154 +161 166 174 168 145 138 157 165 161 160 159 153 +146 148 153 155 146 149 167 167 165 168 165 172 +182 187 177 176 166 167 162 166 164 166 164 164 +161 159 161 168 157 139 134 130 135 137 139 148 +149 153 157 158 165 153 144 147 154 133 136 126 +134 143 143 135 151 160 133 135 135 135 129 134 +155 140 133 124 114 109 97 107 110 125 141 131 +108 104 97 85 90 133 130 103 92 89 111 129 +121 139 124 78 62 43 52 138 194 119 110 113 +96 157 155 77 88 143 110 161 178 105 100 162 +198 211 215 188 164 171 178 178 177 205 195 197 +189 200 198 200 202 210 207 206 206 219 200 176 +195 208 215 207 211 211 207 210 221 219 209 200 +209 207 212 205 210 199 209 205 190 188 204 215 +215 201 196 192 208 218 212 172 191 215 208 219 +213 219 210 217 209 208 198 199 194 192 190 182 +206 184 202 208 202 179 205 206 215 206 185 190 +194 168 179 200 199 176 202 181 195 179 204 171 +189 189 172 205 207 187 205 201 176 185 200 211 +202 204 199 205 207 196 175 179 190 190 179 184 +187 197 198 197 191 182 191 189 185 189 179 182 +191 207 210 198 190 185 194 204 195 208 200 198 +197 190 194 189 204 186 186 179 190 202 205 200 +197 192 184 159 199 189 210 200 184 179 191 201 +202 201 198 213 207 201 202 208 212 213 199 212 +216 204 208 217 209 208 208 190 192 205 210 216 +208 205 189 200 208 192 197 202 196 210 184 184 +192 187 195 186 161 190 215 215 185 181 169 196 +201 174 175 143 139 158 191 157 165 153 199 185 +156 137 113 116 130 107 90 140 160 165 143 124 +129 126 145 160 138 138 130 130 120 116 117 94 +102 106 105 98 82 90 88 111 98 94 107 108 +123 116 111 106 82 110 98 83 93 94 110 97 +105 106 108 111 106 100 92 105 113 113 111 85 +104 100 94 103 79 129 110 95 108 114 110 94 +99 100 109 127 100 102 94 97 103 113 139 140 +127 114 108 118 100 115 123 135 145 145 146 138 +130 107 92 92 75 100 106 96 106 113 105 102 +110 115 114 103 87 98 80 98 110 103 118 103 +96 117 105 95 107 105 92 109 118 108 121 99 +84 98 75 82 +130 141 159 156 149 153 156 165 +162 154 143 137 143 130 149 158 154 157 159 166 +156 155 148 153 148 141 135 156 162 166 168 158 +149 148 154 164 170 165 164 150 143 158 156 157 +150 155 165 170 165 148 162 176 184 186 180 177 +171 174 170 169 177 168 167 162 161 165 161 165 +166 148 144 140 143 147 146 144 145 165 159 174 +170 155 164 150 146 137 125 124 128 121 129 160 +159 148 136 131 131 123 121 136 137 127 131 120 +97 108 103 107 113 130 140 134 134 115 95 99 +94 125 127 96 78 75 121 116 126 135 115 89 +47 74 99 110 185 114 120 108 84 171 127 69 +45 127 113 135 161 116 123 207 200 213 200 161 +151 151 161 162 194 210 205 199 190 196 206 197 +206 211 200 207 209 213 184 177 213 207 211 210 +202 211 201 215 221 199 205 201 206 210 210 201 +197 210 206 190 185 204 211 219 208 199 207 206 +215 218 201 160 209 212 192 212 211 212 217 205 +212 206 200 198 195 182 188 201 207 190 206 201 +192 194 208 206 217 201 189 194 201 146 185 200 +167 185 200 184 191 185 200 162 200 179 170 204 +201 181 209 205 199 210 211 208 199 205 190 205 +208 209 202 191 201 196 179 175 192 212 206 202 +194 181 189 186 184 196 192 198 190 210 206 186 +184 198 205 208 198 204 202 205 189 186 195 189 +211 200 194 189 181 206 216 201 186 194 198 166 +202 197 207 211 207 199 197 207 199 199 200 207 +205 202 195 206 204 210 206 210 212 199 209 207 +187 205 209 208 201 205 189 210 213 212 205 197 +216 200 169 194 210 212 191 191 194 190 201 205 +162 191 204 208 191 194 167 168 200 176 162 138 +150 155 184 145 168 154 179 160 148 129 111 120 +140 125 93 116 119 154 166 149 140 127 143 147 +134 125 151 141 130 120 121 116 99 133 116 104 +94 84 108 104 94 102 95 113 115 111 98 89 +108 86 92 75 80 96 97 94 104 99 103 102 +124 94 113 105 118 120 107 98 88 76 83 95 +99 106 110 96 96 109 104 104 100 99 106 125 +108 87 88 97 94 121 150 140 111 109 104 87 +111 108 124 131 144 137 144 144 129 128 95 92 +100 89 98 108 103 96 114 102 95 109 78 97 +104 82 85 89 86 114 100 100 103 103 95 110 +108 92 110 114 109 119 105 104 98 95 90 93 +137 137 147 159 161 164 157 167 158 157 153 138 +129 134 146 156 157 165 162 155 148 149 153 151 +135 141 147 156 160 165 165 149 150 154 168 162 +162 164 167 161 148 165 167 157 156 151 167 177 +168 166 166 174 180 188 181 182 184 168 169 170 +159 151 167 159 155 158 165 172 170 159 136 144 +148 143 140 137 139 165 172 172 164 164 159 158 +148 133 130 127 121 125 136 157 156 141 128 129 +127 114 116 124 116 121 127 117 110 102 120 113 +115 138 154 151 127 118 107 86 123 135 114 103 +92 84 125 117 133 144 119 86 76 85 108 117 +167 190 128 103 109 176 96 74 87 119 144 111 +151 116 176 211 204 202 179 159 144 159 194 179 +191 206 199 195 195 198 206 197 207 201 210 204 +210 198 188 197 218 191 208 212 205 208 209 210 +216 202 206 207 194 209 200 206 212 202 199 186 +180 205 215 209 202 202 206 213 215 213 190 197 +212 200 210 206 208 211 219 213 208 198 207 204 +207 180 201 210 201 211 207 201 202 205 212 209 +219 195 189 205 190 150 199 187 148 192 202 178 +176 185 189 160 197 170 168 191 192 190 195 205 +197 206 207 197 194 208 199 198 206 205 199 196 +205 198 189 187 208 213 204 197 185 191 196 170 +184 196 184 192 191 207 202 196 202 196 207 209 +197 208 200 209 204 201 191 195 210 209 198 199 +192 206 215 196 195 201 199 202 207 188 207 201 +205 205 195 202 204 199 196 206 201 206 197 206 +199 212 201 191 205 208 206 208 194 191 209 212 +198 209 184 189 212 209 205 210 222 197 175 182 +209 202 192 184 189 169 209 198 172 177 189 215 +201 191 159 136 169 200 182 150 141 144 165 138 +148 182 190 137 144 139 126 120 130 150 107 117 +119 120 151 146 153 143 145 138 133 127 121 133 +130 102 98 110 111 96 119 113 82 84 95 88 +98 82 83 106 110 94 105 79 93 106 90 74 +87 64 88 89 76 96 119 104 111 108 92 110 +116 113 114 98 80 104 109 75 90 104 102 103 +96 107 98 103 95 97 116 118 126 93 82 99 +86 140 154 146 131 99 109 94 88 100 114 138 +138 140 148 156 145 121 100 92 88 92 107 124 +105 115 106 102 105 96 104 75 80 83 79 90 +90 102 114 106 121 103 94 106 105 92 106 114 +110 116 114 109 95 96 84 68 +125 133 144 151 +164 167 150 145 148 157 149 141 139 150 147 162 +174 168 164 147 133 155 147 146 139 138 141 150 +166 164 153 154 159 159 168 162 170 167 158 155 +157 160 165 147 143 166 164 168 168 170 169 182 +185 182 181 187 182 179 174 161 155 154 150 154 +161 156 162 167 174 161 140 129 131 141 130 120 +153 165 180 188 176 162 159 150 155 151 137 133 +131 130 144 146 155 135 125 136 123 116 123 106 +118 123 124 120 110 115 96 104 111 141 157 127 +130 121 94 94 121 130 107 93 103 89 129 126 +133 136 128 110 92 126 106 110 121 198 143 116 +128 155 59 53 96 134 179 102 170 130 207 211 +177 166 165 148 145 177 181 187 198 202 194 212 +201 194 209 187 204 207 208 200 208 200 197 210 +200 195 210 207 201 208 215 219 212 206 201 204 +206 199 205 209 206 200 199 186 206 217 207 211 +212 202 209 216 212 210 189 209 210 207 217 211 +192 208 217 208 197 197 216 212 200 192 212 207 +197 211 195 200 199 191 212 206 216 207 207 210 +189 187 199 172 171 202 199 191 140 200 180 162 +201 197 186 194 196 195 187 206 197 206 207 198 +202 207 182 190 205 202 191 198 202 201 202 200 +206 211 200 200 182 184 204 188 191 185 187 194 +188 202 205 190 205 200 185 209 200 197 195 209 +206 201 200 202 209 211 197 208 195 195 213 210 +201 204 210 201 212 201 201 204 211 210 192 190 +206 198 195 206 197 205 197 206 204 210 206 198 +196 202 211 211 191 192 211 204 216 212 190 177 +206 208 201 211 216 192 198 171 188 202 189 179 +180 178 208 196 187 189 197 220 196 187 154 128 +150 171 182 176 150 134 141 150 131 172 170 148 +141 150 126 124 120 136 118 118 128 108 134 147 +131 124 144 134 117 110 103 131 123 116 98 97 +104 104 106 94 83 74 95 113 90 93 107 83 +99 94 89 94 108 98 78 78 62 79 93 67 +84 92 89 105 108 105 114 113 125 116 108 85 +94 89 70 77 68 102 95 90 113 99 105 87 +106 98 105 134 107 95 95 89 106 124 149 139 +118 106 102 102 102 107 120 133 138 118 139 150 +149 129 108 98 77 94 97 113 118 107 113 97 +96 110 92 85 70 90 98 92 108 99 108 116 +108 106 95 102 94 95 98 100 113 103 114 124 +107 102 92 95 +115 121 145 160 162 141 135 139 +143 148 147 139 148 153 159 160 175 172 155 136 +145 155 158 153 135 137 146 155 164 167 158 167 +166 161 162 161 157 166 162 154 154 155 148 147 +147 159 164 177 167 167 181 182 184 184 181 182 +186 186 174 164 153 139 165 160 153 162 160 172 +174 167 147 137 137 134 129 133 146 178 185 186 +180 167 157 155 158 146 135 138 136 140 144 156 +139 127 136 131 120 114 98 118 127 116 131 128 +105 99 109 86 126 145 138 130 128 114 96 114 +139 126 104 79 89 88 133 144 135 120 126 118 +100 126 119 114 92 189 158 88 140 135 46 53 +68 126 174 86 176 192 218 168 143 124 150 141 +161 155 170 197 191 204 207 197 190 199 200 199 +211 208 206 198 196 204 209 208 192 199 210 213 +209 213 216 206 197 202 196 208 209 198 210 208 +197 194 189 195 218 201 210 212 211 198 215 210 +213 207 207 205 206 215 216 205 195 210 218 199 +198 213 211 201 202 208 210 198 188 207 197 197 +201 184 209 210 213 212 216 210 195 197 201 180 +196 207 208 200 189 209 158 150 195 161 176 205 +197 209 182 204 189 209 212 204 210 207 176 198 +184 200 192 199 204 194 196 191 205 207 194 202 +184 192 208 188 195 198 201 207 202 206 199 207 +206 202 178 210 205 191 186 202 210 197 194 195 +205 208 198 209 201 192 210 211 191 204 208 196 +211 199 199 205 209 208 190 198 196 207 201 200 +199 204 201 201 205 202 202 198 190 200 207 208 +179 196 202 194 192 206 205 177 200 213 201 207 +218 190 198 178 192 197 190 188 169 188 208 206 +186 189 198 210 198 191 185 118 124 168 161 168 +168 146 118 145 158 161 137 149 140 128 146 129 +133 126 120 111 135 130 121 144 143 124 121 131 +124 107 111 120 111 110 89 84 97 111 93 98 +106 85 92 99 90 87 78 98 88 99 107 105 +99 78 75 67 70 87 65 89 86 90 97 99 +119 108 114 116 124 125 109 104 92 86 75 73 +82 89 107 93 93 104 98 109 93 97 105 111 +117 94 96 87 92 138 141 125 108 103 100 89 +109 105 116 129 140 131 130 140 146 129 118 99 +119 95 98 123 120 116 103 90 95 98 84 88 +90 75 96 100 87 98 94 104 110 108 96 103 +89 68 99 93 85 105 99 111 102 89 92 92 +106 126 151 168 165 143 128 129 139 144 143 145 +159 151 150 168 168 151 145 140 150 159 167 140 +139 139 147 164 167 165 164 165 162 155 162 168 +157 158 156 153 162 160 148 146 150 154 176 170 +167 168 162 181 188 185 186 185 186 176 174 168 +147 150 148 147 162 139 154 162 165 166 149 155 +143 136 126 120 146 160 172 175 179 164 154 153 +150 137 138 128 118 134 147 146 140 127 130 136 +118 116 136 145 125 119 131 119 125 106 96 98 +114 136 128 127 110 106 103 121 145 128 106 86 +96 105 135 144 111 119 139 124 127 129 110 119 +109 164 182 72 140 108 57 88 83 120 166 93 +162 220 201 143 130 105 139 158 155 151 186 196 +187 201 200 189 188 196 204 195 211 207 206 187 +172 212 213 199 179 206 207 215 216 216 212 201 +204 205 205 210 209 206 209 208 194 199 194 216 +211 196 207 211 207 212 207 213 213 200 209 197 +200 212 213 204 198 215 211 207 205 211 198 184 +208 210 208 190 202 215 199 202 202 175 212 215 +215 216 212 208 202 209 192 185 210 208 212 207 +205 210 186 161 195 153 125 184 191 201 170 205 +194 208 209 198 206 206 199 201 202 204 198 204 +195 188 204 206 205 188 175 185 197 191 205 192 +197 198 207 209 207 210 207 212 206 207 169 211 +211 200 185 201 213 187 198 202 206 212 200 208 +207 194 204 211 197 202 207 200 207 201 199 204 +210 216 201 197 187 199 202 204 199 197 205 204 +206 208 200 195 198 194 202 211 197 184 202 200 +179 204 208 189 187 208 209 206 218 195 194 198 +182 200 196 195 176 178 198 211 197 179 196 200 +191 181 181 141 136 154 155 144 161 176 140 157 +162 158 144 134 144 138 167 139 125 123 102 107 +135 146 123 121 136 118 134 129 127 119 102 113 +99 99 100 76 96 97 99 106 96 100 78 94 +94 70 86 86 84 86 114 114 82 93 72 68 +67 64 79 58 85 113 110 94 85 118 102 119 +134 119 120 114 96 84 85 63 74 104 89 111 +115 117 126 111 103 102 109 116 117 95 74 93 +103 118 140 120 98 93 82 87 98 106 120 145 +136 129 129 129 151 131 120 113 89 102 104 127 +121 118 105 98 98 89 77 74 76 89 78 92 +99 92 106 106 100 92 95 83 77 84 73 80 +90 84 115 116 107 102 102 94 +123 148 167 151 +154 140 136 145 146 138 140 157 145 166 171 162 +165 155 157 156 166 159 155 156 151 156 154 172 +176 172 153 164 148 160 161 155 156 154 140 155 +158 157 155 148 138 153 165 170 171 154 159 171 +180 186 191 186 180 181 170 158 154 144 149 156 +155 135 148 149 160 164 151 151 146 139 128 131 +147 148 175 176 167 160 160 151 155 138 134 125 +135 131 150 134 125 129 130 130 136 157 155 130 +117 114 134 135 124 131 111 113 129 130 127 120 +126 96 100 134 128 109 73 85 89 102 138 115 +89 105 151 133 137 140 117 137 138 129 179 106 +165 96 55 76 78 136 140 73 175 216 156 123 +125 113 149 186 158 156 192 178 189 204 199 196 +197 198 202 200 209 204 199 171 180 209 200 196 +186 205 207 215 210 213 196 199 208 205 210 211 +206 207 215 196 196 205 211 212 200 177 206 215 +212 207 206 205 207 207 207 190 212 205 209 206 +194 216 216 197 208 215 184 191 212 212 210 208 +209 215 196 199 198 187 208 213 215 200 196 209 +216 209 194 198 208 209 215 204 209 211 201 177 +204 172 148 178 187 186 178 206 199 211 199 199 +207 212 197 204 208 199 206 201 197 200 207 200 +209 197 185 195 209 195 212 209 204 204 202 205 +201 210 210 213 211 206 165 202 209 207 191 187 +209 191 196 197 207 209 206 209 201 199 201 208 +191 204 208 192 210 201 194 197 213 215 202 195 +194 189 206 206 204 202 201 205 211 204 197 202 +202 196 196 206 208 182 196 207 189 191 210 190 +186 202 209 201 218 210 184 197 186 197 201 196 +189 174 200 208 179 192 204 196 189 177 187 170 +121 143 151 160 147 154 171 167 172 161 127 136 +124 114 165 157 139 109 115 97 118 150 137 126 +139 128 128 130 120 120 128 103 88 92 96 82 +62 103 83 83 97 82 84 97 79 85 85 85 +66 103 94 107 98 65 70 74 59 63 62 64 +83 110 102 96 90 82 123 138 137 120 117 103 +103 88 63 83 68 85 102 78 115 124 120 119 +108 98 110 128 115 107 104 78 100 94 107 113 +100 87 86 85 100 108 129 124 140 120 108 136 +137 138 114 105 102 106 117 114 126 109 107 90 +84 89 70 79 86 88 90 86 104 87 90 103 +90 96 93 84 85 84 87 62 95 94 99 113 +96 109 98 98 +155 160 155 161 139 136 141 144 +144 155 143 137 148 150 154 159 165 161 155 165 +165 144 157 158 155 157 149 170 169 162 146 145 +165 158 158 147 149 151 133 145 156 157 157 154 +145 141 167 176 170 157 161 167 179 187 191 188 +184 180 172 162 154 153 153 153 161 157 136 139 +155 154 150 147 145 137 131 133 129 134 137 145 +160 154 160 161 150 133 129 129 135 146 143 123 +110 117 135 144 170 157 140 124 109 103 127 138 +133 128 127 116 124 149 133 139 116 102 124 116 +113 107 77 70 93 105 116 104 74 118 144 124 +143 128 131 118 127 117 143 174 169 73 42 47 +51 160 143 109 204 198 136 113 128 111 140 158 +138 178 175 182 186 196 194 199 197 201 190 205 +210 208 170 181 172 209 200 196 204 196 199 212 +212 208 197 190 207 216 213 206 211 209 211 192 +196 211 213 216 196 206 210 216 204 196 208 211 +208 215 210 204 210 209 212 201 208 223 213 204 +210 219 179 209 208 210 212 208 211 217 191 201 +202 198 207 218 216 198 194 209 210 200 188 185 +209 207 216 197 213 208 205 192 202 175 180 187 +195 197 181 206 206 208 187 201 207 205 191 210 +192 179 195 200 198 198 201 198 207 210 206 207 +207 205 210 206 209 205 205 211 208 209 210 213 +207 205 185 200 216 210 196 189 212 202 199 207 +209 209 215 207 208 202 205 211 205 204 205 204 +212 209 209 190 209 212 204 187 197 185 202 206 +205 197 206 202 206 204 196 202 195 188 185 199 +211 191 198 216 196 178 207 199 188 194 201 202 +209 215 184 186 202 192 202 188 194 165 201 205 +182 170 205 198 170 165 180 172 114 141 140 155 +137 119 147 181 179 160 137 129 130 128 134 134 +148 118 85 124 117 119 139 125 125 127 121 123 +119 110 108 107 85 89 83 83 82 96 94 88 +93 82 79 95 88 80 73 86 88 95 89 104 +87 84 74 65 68 58 57 93 96 108 115 85 +92 107 124 141 146 127 105 96 86 90 79 62 +82 89 82 99 95 127 125 127 115 103 106 96 +109 108 98 97 73 103 103 100 94 90 89 86 +104 102 116 138 130 124 107 118 148 130 104 94 +109 102 110 113 106 119 113 104 97 72 80 72 +73 79 72 96 79 94 85 85 89 75 93 99 +90 83 85 79 80 106 102 97 102 90 98 86 +172 155 145 131 113 131 138 140 154 159 140 144 +130 144 151 161 156 154 149 147 143 144 141 157 +159 154 159 167 151 141 144 154 170 165 145 151 +154 155 154 150 151 154 158 158 147 148 160 167 +177 164 156 169 175 186 187 185 187 180 174 168 +159 157 145 168 171 157 155 144 151 151 155 161 +154 149 133 136 128 113 130 156 158 158 159 155 +150 135 124 140 150 133 127 94 102 121 123 154 +158 143 126 123 110 106 113 130 144 139 129 137 +141 138 141 128 123 121 106 118 120 94 83 72 +72 113 124 86 78 109 120 127 143 116 123 108 +109 105 92 199 164 75 67 54 58 162 121 177 +215 190 157 110 96 131 139 125 179 184 127 184 +185 184 178 208 209 201 204 202 206 196 157 177 +178 202 197 206 197 209 218 208 210 206 200 195 +210 213 207 199 212 208 212 199 215 210 216 216 +210 210 217 209 204 195 210 212 215 204 188 202 +205 207 207 207 221 222 211 210 207 211 188 210 +202 207 210 213 216 217 190 202 206 204 210 213 +205 202 205 209 211 204 199 190 209 208 215 189 +212 200 199 195 206 181 187 182 210 191 196 201 +206 206 176 200 205 197 180 198 171 157 182 190 +192 201 204 200 207 215 191 197 209 201 211 212 +204 208 202 205 207 202 208 211 208 211 198 197 +206 206 200 198 208 202 186 207 208 201 211 210 +206 188 198 202 207 206 210 211 215 210 207 197 +206 207 205 188 197 178 201 204 198 200 200 200 +194 208 198 195 188 168 188 196 205 197 195 206 +204 194 199 207 200 192 197 198 197 211 200 170 +204 180 191 196 179 175 197 209 182 167 200 187 +166 155 159 158 159 155 134 156 133 90 129 175 +188 182 135 120 140 127 136 119 113 127 107 120 +128 133 118 124 129 113 123 127 135 129 123 116 +103 86 95 74 82 106 97 99 85 93 72 89 +82 64 95 94 86 78 90 124 107 94 67 72 +62 63 70 75 100 98 96 93 85 123 121 137 +137 115 116 96 96 96 77 69 74 99 94 84 +115 113 130 121 115 106 92 103 114 117 98 96 +90 82 102 90 87 88 87 95 95 102 120 136 +130 107 108 96 127 120 102 106 89 94 96 93 +103 106 113 95 99 92 78 70 66 82 77 86 +102 77 72 70 83 87 89 85 79 88 78 70 +85 82 94 93 89 86 87 75 +11 12 14 15 +15 16 19 22 18 19 18 19 19 17 19 18 +23 22 21 23 21 21 21 21 19 22 22 23 +23 22 21 19 19 22 21 23 23 22 23 21 +19 21 17 18 18 17 16 16 12 11 14 14 +12 8 7 12 14 11 6 2 2 1 1 1 +3 4 5 5 6 4 5 3 2 1 2 3 +4 4 5 6 5 5 6 5 6 8 11 16 +15 16 18 18 19 18 17 18 21 19 18 19 +17 16 17 17 17 21 21 21 21 21 19 19 +21 22 21 22 18 19 16 16 15 15 16 17 +15 16 15 16 16 17 18 18 21 18 19 19 +19 19 19 19 22 19 21 19 19 18 19 18 +18 17 18 17 17 17 17 14 15 16 14 14 +14 10 14 11 8 5 5 4 5 5 6 4 +5 5 3 3 0 0 0 0 0 0 0 0 +0 0 0 0 0 0 0 0 0 0 1 6 +17 10 2 1 0 0 0 1 0 0 1 3 +6 6 7 6 7 6 4 4 4 3 4 3 +3 4 3 3 4 2 4 4 3 2 2 3 +2 2 3 2 4 3 4 4 3 3 3 3 +4 4 5 5 5 5 5 4 3 6 3 5 +12 10 15 16 17 17 21 22 21 19 19 21 +21 19 22 21 21 21 19 22 19 19 18 19 +19 21 21 23 23 22 22 22 23 23 23 23 +23 23 22 19 17 18 16 17 17 16 16 16 +16 15 17 16 10 8 6 12 10 9 6 3 +2 4 5 5 11 12 12 12 11 7 6 3 +3 2 3 3 4 4 4 5 4 4 4 5 +5 9 10 17 17 18 19 21 22 22 19 21 +21 21 19 19 18 16 17 16 17 21 21 21 +21 19 21 19 19 22 21 21 19 21 18 19 +19 18 18 18 17 17 17 17 15 16 17 18 +21 19 21 21 21 21 21 21 23 21 22 22 +22 19 21 19 18 17 19 18 18 17 18 15 +16 16 14 14 14 10 14 12 8 6 5 3 +3 3 4 2 4 5 4 8 3 0 0 0 +0 0 0 0 0 0 0 0 0 0 0 0 +0 1 2 7 18 15 5 3 1 1 1 1 +0 0 1 3 5 5 6 5 6 5 3 3 +4 3 3 3 2 3 3 3 2 0 3 3 +3 2 2 3 2 2 2 1 2 1 2 1 +2 2 2 2 3 3 3 4 4 4 4 4 +3 6 3 4 diff --git a/intro/07-streams/index.html b/intro/07-streams/index.html new file mode 100644 index 00000000..d8a9ae6e --- /dev/null +++ b/intro/07-streams/index.html @@ -0,0 +1,110 @@ + Streams - Awesome GameDev Resources

Streams and File IO

Estimated time to read: 12 minutes

At this point, you already are familiar with the iostream header. But we never discussed what it is properly. It is a basic stream and it has two static variable we already use: cin for reading variables from the console input and cout to output things to console, see details here. It is possible to interact with all streams via the >> and << operators.

But C++ have 2 other relevant streams that we need to cover: fstream and sstream.

File streams

File streams are streams that target files instead of the terminal console. The fstream header describes the file streams and the ways you can interact with it.

The main differences between console and file streams are: - You have to target the filesystem path for files because we can manage different files at the same, but for console, you only have one, so you dont need to target which console we are streaming. In order to not mess each target, you have to declare a different variable to store the target and state. - Files are persistent, so if you write something to them, and try to read from it again, the that will be there saved.

Files are a kind of resource managed by the operation system. So every time you request something to be read or write, behind the scenes you are requesting something to the operating system, and it can be slow or subject by lock control. When you open a file to be read or write, the OS locks it to avoid problems. You can open a file to be read multiple times simultaneously, but you cannot write more than once. So to avoid problems, after reading or writing the file, you should close the file.

#include <fstream>
+#include <iostream>
+#include <string>
+
+using namespace std;
+
+int main() {
+  // Open the file
+  // this file path is relative to the executable, so be assured it exists in the same folder the executable is placed
+  // fin is the variablename and it is function initialized via a file path to target, but it can be any valid identifier
+  // I am using fin as variable to follow the same metaphor `fin` as `file input` as we have with console input `cin`, 
+  ifstream fin("file.txt"); 
+
+  // Check if the file is open
+  // it is a good practice to check if the file is really there before doing anything
+  if (!fin.is_open()) {
+    cerr << "Error opening file" << endl;
+    return 1; // quits the program with an error code
+  }
+
+  // Read the contents of the file line by line
+  string line;
+  // getline can target streams in general, so you can pass the file stream as a target
+  while (getline(fin, line)) { // while the file have lines, read and store the content inside the line variable
+    cout << line << endl; // output each string into the console
+  }
+
+  // Close the file
+  fin.close();
+
+  return 0;
+}
+

String Stream

The sstream header describes string stream, which is a type of memory stream and is very useful to do string manipulation. For our intent, we aro going to focus 3 types of memory streams.

  • ostringstream: works just like cout but the content will printed to a memory region.
  • it is more efficient to build a complex string in this way than couting multiple times;
  • istringstream: works just like cin but it will read from a memory area.
  • it is safer to read from a closed memory area than, and you ran reset the reading pointer to re-read previous elements easier than with cin.
#include <iostream>
+#include <sstream>
+using namespace std;
+int main() {
+    ostringstream oss; // declare the output stream
+    // print numbers from 0 to 100
+    for(int i=0; i<=100; i++)
+        oss << i << ' '; // store the data into memory
+    cout << oss.str(); // convert the stream into a string to be printed all at once
+}
+
#include <iostream>
+#include <sstream>
+using namespace std;
+int main() {
+    // read input
+    string input;
+    getline(cin, input);
+
+    // initialize string stream with the content from a console line
+    istringstream ss(input); // declare the stream to read from
+
+    // extract input
+    string name;
+    string course;
+    string grade;
+
+    iss >> name >> course >> grade;
+}
+

You can combine string stream and file stream to read a whole file and store into a single string.

#include <fstream>
+#include <iostream>
+#include <sstream>
+#include <string>
+
+using namespace std;
+
+int main() {
+  // Open the file
+  ifstream file("file.txt");
+
+  // Check if the file is open
+  if (!file.is_open()) {
+    cerr << "Error opening file" << endl;
+    return 1;
+  }
+
+  // Read the contents of the file into a stringstream
+  stringstream ss;
+  ss << file.rdbuf(); // read the whole file buffer and stores it into a string stream
+
+  // Close the file
+  file.close();
+
+  // Convert the stringstream into a string
+  string contents = ss.str();
+
+  cout << contents << endl; // prints the whole file at once
+
+  return 0;
+}
+

Homework

You have the job of creating a small program to read a file image in the format PGMA and inverse the colors as a negative image.

You can test your code with different images if you want. You can download more images here. But here goes 2 examples:

  • Sample input easy: baboon.ascii.pgm - max intensity is not 255 and don't have comments.
  • Sample input harder: lena.ascii.pgm - have comments, and the max intensity is different than 255.

You can test if your output file is correct using this tool. You can open this file via any text reader, use the online viewer, or use any app that reads pnm images.

Attention:

  • To create the inverse image, you should read the file header and search for the maximum intensity. You should use this number as a base to inverse. In the Lena case, it is 245.
  • You should pay attention that every line shouldn't be bigger than 70 chars;
  • Pay attention that the line 2 might exists or not. And any comment found in the file should be skipped.

The user should input the filename to be read. So you should store it into a string variable. The output filename should be the same as the input but with '.inverse' concatenated in the end. Ex.: lena.pgm becomes lena.inverse.pgm; If you find this too complicated, just concatenate with .inverse.pgm would be acceptable. ex.: lena.pgm becomes lena.pgm.inverse.pgm

In order for your program to find the file to be read, you should provide the fullpath to the file or simply put the file in the same folder your executable is.

HINT: In order to find comments and ignore them do something like that:

string widthstr;
+int width;
+fin >> widthstr;
+if(widthstr.at(0)=='#')
+    getline(fin, widthstr); // ignore line
+else
+    width = stoi(widthstr); // covert string to integer
+

\ No newline at end of file diff --git a/intro/07-streams/lena.ascii.pgm b/intro/07-streams/lena.ascii.pgm new file mode 100644 index 00000000..23dd92cd --- /dev/null +++ b/intro/07-streams/lena.ascii.pgm @@ -0,0 +1,22191 @@ +P2 +# lena.pgma created by PGMA_IO::PGMA_WRITE. +512 512 +245 +162 162 162 161 162 156 163 160 164 160 161 159 +155 162 159 154 157 155 161 160 153 156 154 157 +154 157 155 151 156 154 154 155 153 157 154 159 +158 166 159 166 166 165 166 171 170 175 173 170 +171 171 167 174 168 166 161 160 148 148 154 140 +129 118 117 105 97 97 94 92 87 97 102 96 +102 99 103 104 105 104 103 110 109 107 106 105 +104 109 109 109 108 107 107 107 110 108 106 109 +108 109 109 107 103 105 105 107 108 110 117 110 +113 117 121 118 112 122 120 121 124 122 121 123 +124 130 129 123 122 127 132 130 131 128 135 129 +127 130 130 127 134 136 132 133 131 130 127 130 +134 125 129 126 133 130 129 130 128 132 128 128 +134 133 135 133 127 134 130 134 132 133 133 135 +131 134 130 136 134 132 133 133 136 132 133 133 +131 132 130 131 132 134 136 134 133 131 133 131 +134 135 132 134 135 136 132 137 135 134 133 135 +135 136 132 133 139 132 131 139 133 131 129 132 +132 126 130 131 132 130 129 131 131 128 134 133 +132 135 130 131 132 131 130 132 129 130 131 133 +135 133 132 134 132 134 134 138 132 131 132 134 +128 128 133 137 138 142 134 131 131 128 128 128 +132 133 128 130 134 132 130 127 129 126 131 132 +125 130 134 134 130 126 126 131 127 131 133 126 +126 132 131 127 130 127 131 125 127 129 124 126 +126 131 125 128 121 123 124 121 119 122 121 118 +117 114 112 112 115 105 102 102 104 112 116 118 +121 131 135 139 140 143 145 149 153 152 153 158 +158 158 162 158 162 160 154 155 148 149 153 149 +153 150 150 154 151 156 154 152 156 155 154 153 +159 157 154 156 153 153 150 157 153 151 153 152 +154 152 152 152 152 150 151 157 154 153 152 152 +153 157 153 158 157 157 154 154 155 159 158 158 +156 156 156 151 155 154 157 176 192 198 205 207 +212 212 212 215 217 218 217 218 220 215 210 203 +191 171 151 122 106 104 100 103 103 110 104 113 +115 116 119 117 118 118 120 123 126 121 118 117 +120 124 121 117 122 122 124 127 120 119 123 117 +120 123 123 119 122 121 121 122 122 123 129 118 +123 125 124 125 125 126 122 124 124 125 117 117 +128 122 126 125 125 130 123 126 124 120 129 124 +125 126 119 122 114 120 115 119 118 115 120 123 +137 163 167 169 171 169 154 128 +162 162 162 161 +162 156 163 160 164 160 161 159 155 162 159 154 +157 155 161 160 153 156 154 157 154 157 155 151 +156 154 154 155 153 157 154 159 158 166 159 166 +166 165 166 171 170 175 173 170 171 171 167 174 +168 166 161 160 148 148 154 140 129 118 117 105 +97 97 94 92 87 97 102 96 102 99 103 104 +105 104 103 110 109 107 106 105 104 109 109 109 +108 107 107 107 110 108 106 109 108 109 109 107 +103 105 105 107 108 110 117 110 113 117 121 118 +112 122 120 121 124 122 121 123 124 130 129 123 +122 127 132 130 131 128 135 129 127 130 130 127 +134 136 132 133 131 130 127 130 134 125 129 126 +133 130 129 130 128 132 128 128 134 133 135 133 +127 134 130 134 132 133 133 135 131 134 130 136 +134 132 133 133 136 132 133 133 131 132 130 131 +132 134 136 134 133 131 133 131 134 135 132 134 +135 136 132 137 135 134 133 135 135 136 132 133 +139 132 131 139 133 131 129 132 132 126 130 131 +132 130 129 131 131 128 134 133 132 135 130 131 +132 131 130 132 129 130 131 133 135 133 132 134 +132 134 134 138 132 131 132 134 128 128 133 137 +138 142 134 131 131 128 128 128 132 133 128 130 +134 132 130 127 129 126 131 132 125 130 134 134 +130 126 126 131 127 131 133 126 126 132 131 127 +130 127 131 125 127 129 124 126 126 131 125 128 +121 123 124 121 119 122 121 118 117 114 112 112 +115 105 102 102 104 112 116 118 121 131 135 139 +140 143 145 149 153 152 153 158 158 158 162 158 +162 160 154 155 148 149 153 149 153 150 150 154 +151 156 154 152 156 155 154 153 159 157 154 156 +153 153 150 157 153 151 153 152 154 152 152 152 +152 150 151 157 154 153 152 152 153 157 153 158 +157 157 154 154 155 159 158 158 156 156 156 151 +155 154 157 176 192 198 205 207 212 212 212 215 +217 218 217 218 220 215 210 203 191 171 151 122 +106 104 100 103 103 110 104 113 115 116 119 117 +118 118 120 123 126 121 118 117 120 124 121 117 +122 122 124 127 120 119 123 117 120 123 123 119 +122 121 121 122 122 123 129 118 123 125 124 125 +125 126 122 124 124 125 117 117 128 122 126 125 +125 130 123 126 124 120 129 124 125 126 119 122 +114 120 115 119 118 115 120 123 137 163 167 169 +171 169 154 128 +162 162 162 161 162 156 163 160 +164 160 161 159 155 162 159 154 157 155 161 160 +153 156 154 157 154 157 155 151 156 154 154 155 +153 157 154 159 158 166 159 166 166 165 166 171 +170 175 173 170 171 171 167 174 168 166 161 160 +148 148 154 140 129 118 117 105 97 97 94 92 +87 97 102 96 102 99 103 104 105 104 103 110 +109 107 106 105 104 109 109 109 108 107 107 107 +110 108 106 109 108 109 109 107 103 105 105 107 +108 110 117 110 113 117 121 118 112 122 120 121 +124 122 121 123 124 130 129 123 122 127 132 130 +131 128 135 129 127 130 130 127 134 136 132 133 +131 130 127 130 134 125 129 126 133 130 129 130 +128 132 128 128 134 133 135 133 127 134 130 134 +132 133 133 135 131 134 130 136 134 132 133 133 +136 132 133 133 131 132 130 131 132 134 136 134 +133 131 133 131 134 135 132 134 135 136 132 137 +135 134 133 135 135 136 132 133 139 132 131 139 +133 131 129 132 132 126 130 131 132 130 129 131 +131 128 134 133 132 135 130 131 132 131 130 132 +129 130 131 133 135 133 132 134 132 134 134 138 +132 131 132 134 128 128 133 137 138 142 134 131 +131 128 128 128 132 133 128 130 134 132 130 127 +129 126 131 132 125 130 134 134 130 126 126 131 +127 131 133 126 126 132 131 127 130 127 131 125 +127 129 124 126 126 131 125 128 121 123 124 121 +119 122 121 118 117 114 112 112 115 105 102 102 +104 112 116 118 121 131 135 139 140 143 145 149 +153 152 153 158 158 158 162 158 162 160 154 155 +148 149 153 149 153 150 150 154 151 156 154 152 +156 155 154 153 159 157 154 156 153 153 150 157 +153 151 153 152 154 152 152 152 152 150 151 157 +154 153 152 152 153 157 153 158 157 157 154 154 +155 159 158 158 156 156 156 151 155 154 157 176 +192 198 205 207 212 212 212 215 217 218 217 218 +220 215 210 203 191 171 151 122 106 104 100 103 +103 110 104 113 115 116 119 117 118 118 120 123 +126 121 118 117 120 124 121 117 122 122 124 127 +120 119 123 117 120 123 123 119 122 121 121 122 +122 123 129 118 123 125 124 125 125 126 122 124 +124 125 117 117 128 122 126 125 125 130 123 126 +124 120 129 124 125 126 119 122 114 120 115 119 +118 115 120 123 137 163 167 169 171 169 154 128 +162 162 162 161 162 156 163 160 164 160 161 159 +155 162 159 154 157 155 161 160 153 156 154 157 +154 157 155 151 156 154 154 155 153 157 154 159 +158 166 159 166 166 165 166 171 170 175 173 170 +171 171 167 174 168 166 161 160 148 148 154 140 +129 118 117 105 97 97 94 92 87 97 102 96 +102 99 103 104 105 104 103 110 109 107 106 105 +104 109 109 109 108 107 107 107 110 108 106 109 +108 109 109 107 103 105 105 107 108 110 117 110 +113 117 121 118 112 122 120 121 124 122 121 123 +124 130 129 123 122 127 132 130 131 128 135 129 +127 130 130 127 134 136 132 133 131 130 127 130 +134 125 129 126 133 130 129 130 128 132 128 128 +134 133 135 133 127 134 130 134 132 133 133 135 +131 134 130 136 134 132 133 133 136 132 133 133 +131 132 130 131 132 134 136 134 133 131 133 131 +134 135 132 134 135 136 132 137 135 134 133 135 +135 136 132 133 139 132 131 139 133 131 129 132 +132 126 130 131 132 130 129 131 131 128 134 133 +132 135 130 131 132 131 130 132 129 130 131 133 +135 133 132 134 132 134 134 138 132 131 132 134 +128 128 133 137 138 142 134 131 131 128 128 128 +132 133 128 130 134 132 130 127 129 126 131 132 +125 130 134 134 130 126 126 131 127 131 133 126 +126 132 131 127 130 127 131 125 127 129 124 126 +126 131 125 128 121 123 124 121 119 122 121 118 +117 114 112 112 115 105 102 102 104 112 116 118 +121 131 135 139 140 143 145 149 153 152 153 158 +158 158 162 158 162 160 154 155 148 149 153 149 +153 150 150 154 151 156 154 152 156 155 154 153 +159 157 154 156 153 153 150 157 153 151 153 152 +154 152 152 152 152 150 151 157 154 153 152 152 +153 157 153 158 157 157 154 154 155 159 158 158 +156 156 156 151 155 154 157 176 192 198 205 207 +212 212 212 215 217 218 217 218 220 215 210 203 +191 171 151 122 106 104 100 103 103 110 104 113 +115 116 119 117 118 118 120 123 126 121 118 117 +120 124 121 117 122 122 124 127 120 119 123 117 +120 123 123 119 122 121 121 122 122 123 129 118 +123 125 124 125 125 126 122 124 124 125 117 117 +128 122 126 125 125 130 123 126 124 120 129 124 +125 126 119 122 114 120 115 119 118 115 120 123 +137 163 167 169 171 169 154 128 +162 162 162 161 +162 156 163 160 164 160 161 159 155 162 159 154 +157 155 161 160 153 156 154 157 154 157 155 151 +156 154 154 155 153 157 154 159 158 166 159 166 +166 165 166 171 170 175 173 170 171 171 167 174 +168 166 161 160 148 148 154 140 129 118 117 105 +97 97 94 92 87 97 102 96 102 99 103 104 +105 104 103 110 109 107 106 105 104 109 109 109 +108 107 107 107 110 108 106 109 108 109 109 107 +103 105 105 107 108 110 117 110 113 117 121 118 +112 122 120 121 124 122 121 123 124 130 129 123 +122 127 132 130 131 128 135 129 127 130 130 127 +134 136 132 133 131 130 127 130 134 125 129 126 +133 130 129 130 128 132 128 128 134 133 135 133 +127 134 130 134 132 133 133 135 131 134 130 136 +134 132 133 133 136 132 133 133 131 132 130 131 +132 134 136 134 133 131 133 131 134 135 132 134 +135 136 132 137 135 134 133 135 135 136 132 133 +139 132 131 139 133 131 129 132 132 126 130 131 +132 130 129 131 131 128 134 133 132 135 130 131 +132 131 130 132 129 130 131 133 135 133 132 134 +132 134 134 138 132 131 132 134 128 128 133 137 +138 142 134 131 131 128 128 128 132 133 128 130 +134 132 130 127 129 126 131 132 125 130 134 134 +130 126 126 131 127 131 133 126 126 132 131 127 +130 127 131 125 127 129 124 126 126 131 125 128 +121 123 124 121 119 122 121 118 117 114 112 112 +115 105 102 102 104 112 116 118 121 131 135 139 +140 143 145 149 153 152 153 158 158 158 162 158 +162 160 154 155 148 149 153 149 153 150 150 154 +151 156 154 152 156 155 154 153 159 157 154 156 +153 153 150 157 153 151 153 152 154 152 152 152 +152 150 151 157 154 153 152 152 153 157 153 158 +157 157 154 154 155 159 158 158 156 156 156 151 +155 154 157 176 192 198 205 207 212 212 212 215 +217 218 217 218 220 215 210 203 191 171 151 122 +106 104 100 103 103 110 104 113 115 116 119 117 +118 118 120 123 126 121 118 117 120 124 121 117 +122 122 124 127 120 119 123 117 120 123 123 119 +122 121 121 122 122 123 129 118 123 125 124 125 +125 126 122 124 124 125 117 117 128 122 126 125 +125 130 123 126 124 120 129 124 125 126 119 122 +114 120 115 119 118 115 120 123 137 163 167 169 +171 169 154 128 +164 164 157 155 161 159 158 159 +159 160 154 159 153 153 155 154 156 156 152 157 +151 152 152 149 156 156 154 154 155 152 154 157 +157 153 152 151 156 159 161 165 163 167 169 169 +171 173 175 170 170 175 170 171 167 167 157 158 +149 147 143 129 122 119 110 109 101 95 92 94 +89 94 95 97 101 101 98 99 107 103 105 106 +104 106 107 105 100 105 103 107 107 101 106 104 +105 107 105 102 108 104 110 103 104 107 111 104 +108 111 109 112 119 115 118 119 119 121 118 121 +123 121 122 127 125 121 126 126 124 123 124 124 +130 132 131 129 133 130 129 126 131 133 127 127 +135 131 130 132 131 125 128 129 129 133 130 130 +128 130 130 130 136 134 135 132 129 134 134 136 +135 137 137 136 134 134 132 135 133 136 136 132 +134 134 137 134 131 132 127 132 136 127 131 132 +130 130 133 133 133 133 132 133 132 133 131 130 +133 133 135 132 132 133 131 136 131 133 134 137 +127 132 127 128 128 127 128 132 130 131 129 131 +131 126 126 130 132 137 129 122 129 130 127 129 +130 127 128 136 129 132 130 134 131 131 134 129 +131 134 128 130 129 132 134 129 131 136 134 134 +131 130 132 124 132 127 131 128 126 128 129 133 +127 128 131 130 128 129 133 132 123 122 124 129 +132 126 131 129 127 125 130 130 129 133 126 127 +126 131 127 128 126 127 125 125 123 120 121 122 +123 123 118 116 115 115 118 108 111 105 105 104 +101 110 108 119 122 128 128 139 136 144 144 150 +150 148 152 155 156 160 158 163 158 157 158 152 +152 151 152 153 152 150 154 150 146 152 155 147 +154 155 151 153 153 150 156 156 154 154 153 152 +152 153 151 151 152 151 152 155 151 155 150 154 +157 159 154 152 153 155 151 153 156 157 154 155 +158 153 155 156 157 155 153 152 149 151 157 169 +185 193 199 207 210 212 214 215 215 218 217 217 +217 219 215 209 199 186 163 139 110 101 97 103 +101 104 112 111 110 120 115 118 117 118 119 121 +121 125 121 121 116 122 121 124 122 124 123 122 +121 123 117 118 116 123 119 116 121 120 123 126 +125 123 125 124 126 121 120 125 127 124 122 128 +123 123 118 118 126 122 120 124 128 127 127 124 +126 125 129 124 123 124 120 123 118 115 113 122 +121 122 125 126 137 142 149 145 138 123 102 77 +160 160 163 158 160 161 159 155 159 161 156 161 +155 155 156 151 153 159 154 153 158 150 155 152 +154 155 152 155 151 149 152 160 158 155 154 154 +158 158 164 165 168 167 168 170 170 170 171 173 +172 172 169 167 166 165 158 156 148 146 138 130 +121 125 107 106 96 97 89 94 91 98 92 99 +96 96 96 102 104 108 111 103 101 99 105 103 +106 101 106 102 99 103 104 108 107 107 100 106 +104 106 106 104 101 101 114 102 106 107 109 112 +120 119 114 119 117 119 120 123 128 121 123 123 +124 124 120 126 124 122 128 132 132 129 128 130 +134 135 125 128 125 134 127 131 132 129 129 122 +131 125 132 133 130 130 131 126 125 134 131 127 +130 129 130 129 134 130 136 134 135 132 135 132 +132 133 134 131 133 134 138 131 132 134 130 131 +133 130 133 127 132 129 128 129 130 130 133 127 +134 133 134 134 132 131 133 130 136 134 131 131 +133 128 133 132 135 133 130 136 132 137 129 124 +132 131 128 126 130 134 128 128 130 130 132 131 +135 138 128 128 131 130 128 126 130 131 131 131 +131 133 130 134 132 134 133 126 132 133 130 128 +131 135 131 129 131 135 133 131 133 129 129 126 +129 125 128 124 125 129 132 130 127 123 131 129 +127 128 125 126 127 127 126 126 127 131 133 125 +131 127 130 127 126 128 125 127 129 129 129 127 +127 123 124 123 123 121 123 122 123 126 119 116 +116 112 111 111 109 103 103 103 101 101 113 118 +121 126 124 132 135 140 144 149 144 149 153 157 +157 157 157 158 162 157 155 154 154 151 152 152 +152 153 153 152 151 151 157 152 157 149 153 151 +157 154 154 154 153 152 153 151 153 152 151 153 +151 154 155 157 155 155 155 152 153 153 151 151 +154 151 154 158 154 153 156 154 156 152 155 156 +154 155 154 153 151 149 151 161 174 192 199 203 +208 212 212 214 216 216 217 219 219 218 216 211 +205 195 178 155 128 107 105 98 101 102 108 104 +113 116 115 115 119 123 118 114 119 122 120 117 +120 122 126 122 121 123 125 126 120 120 117 121 +123 120 123 120 126 118 121 128 125 123 123 127 +127 120 124 122 123 121 118 127 125 122 125 122 +122 122 126 122 124 127 120 122 122 125 124 126 +124 126 126 123 119 120 117 126 125 125 129 129 +126 127 121 112 92 78 63 58 +158 158 155 156 +158 158 156 157 158 160 160 158 153 153 152 151 +155 153 156 153 154 153 151 151 154 154 153 151 +152 152 153 153 155 156 151 152 157 158 163 162 +166 168 168 168 174 172 173 171 170 174 169 172 +165 164 162 153 149 150 135 132 123 121 113 109 +93 93 90 83 86 85 87 92 91 99 96 99 +104 109 106 108 106 104 103 101 99 104 105 108 +102 104 103 98 106 103 104 106 102 103 106 105 +105 104 107 105 109 110 111 110 112 114 115 118 +121 122 124 124 126 127 126 124 127 125 122 122 +129 120 123 126 127 131 127 128 129 126 129 131 +128 130 129 131 125 131 133 126 131 133 132 134 +131 134 130 130 131 130 130 129 134 133 127 130 +129 131 130 131 132 134 133 132 135 132 128 129 +132 136 134 131 130 131 129 130 131 133 132 132 +128 130 133 132 130 129 131 133 130 135 129 134 +131 131 131 134 131 130 129 130 127 133 132 127 +136 137 128 129 139 136 132 129 136 131 130 130 +130 129 128 128 128 128 135 137 130 132 131 129 +128 131 125 124 128 132 132 129 133 134 132 133 +133 133 133 126 130 132 131 125 129 134 132 132 +132 136 130 131 130 132 130 130 127 125 127 129 +128 128 134 129 126 128 127 126 124 130 130 128 +126 127 125 132 128 130 131 128 128 130 129 130 +129 130 125 129 128 129 124 127 126 125 129 123 +126 121 120 117 118 121 120 115 118 113 113 116 +110 106 105 108 99 101 113 116 121 122 126 136 +137 140 142 145 147 155 152 154 154 156 158 162 +160 159 159 154 158 156 149 151 149 151 154 152 +147 152 153 152 153 151 153 150 154 151 152 160 +155 152 155 153 156 153 153 153 152 149 152 152 +154 154 151 154 155 151 150 150 152 150 154 150 +154 154 151 154 159 156 156 156 155 153 156 153 +154 151 148 150 164 180 193 201 204 207 211 214 +214 215 216 217 217 217 217 214 209 200 187 168 +139 122 102 96 102 104 111 108 113 113 116 114 +118 119 113 115 119 116 119 119 120 115 123 119 +117 120 123 122 125 120 125 124 122 124 118 123 +122 124 126 123 124 124 126 124 122 128 124 120 +124 122 118 125 123 121 125 121 121 118 122 126 +126 127 129 128 121 126 129 130 127 127 125 125 +123 124 119 128 128 126 126 124 113 94 83 70 +67 50 55 46 +155 155 157 157 159 160 157 157 +163 157 158 158 158 153 155 157 155 155 161 157 +156 152 155 151 157 154 151 153 152 150 156 154 +154 153 152 156 160 160 168 165 170 168 175 168 +171 169 170 174 173 167 168 169 164 162 159 150 +146 148 138 136 123 120 110 113 96 94 90 87 +87 92 92 95 94 102 99 104 104 103 103 101 +105 109 106 102 103 100 107 107 103 102 106 105 +107 103 108 103 101 108 114 102 106 107 103 113 +109 113 109 112 109 113 119 116 118 119 121 123 +118 120 127 122 125 126 130 123 125 124 128 128 +121 126 126 129 129 124 132 132 132 129 133 130 +129 130 127 128 132 127 129 131 130 130 131 128 +129 128 131 129 130 133 129 138 127 133 132 130 +133 133 133 134 131 132 133 137 133 130 133 131 +131 130 134 133 135 130 133 133 129 127 141 131 +134 128 132 130 131 130 134 132 132 131 133 134 +132 131 131 130 129 136 128 131 132 122 132 131 +134 131 136 133 131 128 124 128 124 127 129 129 +129 134 135 133 139 132 133 132 127 128 128 129 +131 131 132 128 132 134 129 132 129 129 133 131 +127 129 131 129 133 133 133 129 130 131 135 131 +133 131 127 127 131 127 123 130 130 126 130 130 +125 124 132 124 126 125 131 127 124 125 128 124 +129 126 129 127 129 130 130 127 128 125 128 129 +128 131 126 125 125 123 128 120 125 128 121 126 +122 118 121 115 114 113 113 108 110 112 110 105 +101 103 107 105 114 116 120 131 133 134 139 147 +143 153 148 151 153 156 155 158 162 159 157 156 +155 155 154 153 152 153 150 151 152 155 156 156 +152 155 154 153 154 157 154 157 155 157 158 158 +153 156 157 153 156 155 151 152 154 155 152 154 +152 153 155 154 154 156 156 153 154 155 154 152 +151 155 155 153 155 153 155 152 151 153 152 148 +156 169 186 195 203 206 212 211 212 215 216 217 +215 216 218 216 213 204 195 179 157 130 110 102 +102 109 108 106 112 110 114 113 115 117 123 119 +117 124 119 122 117 121 124 118 119 122 119 119 +118 123 124 123 118 116 119 121 120 123 124 123 +126 124 122 118 122 126 122 121 123 125 122 124 +120 124 124 122 125 123 123 124 128 129 124 127 +122 127 126 125 128 128 127 125 127 129 125 127 +127 128 122 107 95 72 64 49 49 45 46 49 +154 154 157 158 154 154 154 157 161 153 155 156 +157 157 157 152 155 154 153 153 155 157 154 153 +152 154 152 155 153 151 154 157 152 149 154 162 +162 162 163 166 169 167 170 168 169 172 168 172 +171 172 169 168 170 160 155 153 150 140 139 132 +121 121 113 106 96 94 90 92 89 91 89 91 +97 92 100 101 98 98 100 102 107 101 105 102 +98 104 104 111 105 103 107 106 105 103 103 101 +99 107 102 99 99 109 104 108 109 108 104 113 +114 115 116 113 117 115 124 119 118 123 126 120 +125 125 125 121 125 123 125 127 125 130 128 128 +125 127 131 129 130 128 127 127 129 128 136 130 +131 131 128 126 130 127 127 130 132 132 128 128 +129 128 130 132 130 131 132 128 133 130 133 134 +135 133 135 133 136 137 133 131 132 127 133 135 +140 129 131 133 132 131 136 138 132 136 132 131 +139 132 131 130 127 124 132 132 129 129 131 134 +131 126 124 126 130 127 134 131 130 124 131 129 +129 128 130 125 127 127 128 126 128 133 133 128 +129 129 130 132 126 122 124 128 127 126 131 130 +129 128 129 131 131 130 131 130 129 132 128 131 +128 128 129 130 130 132 136 129 128 132 132 128 +129 131 127 132 127 126 129 126 128 125 130 126 +129 129 126 124 125 125 126 124 123 127 121 123 +128 125 130 128 128 123 125 127 126 129 118 122 +124 129 125 125 123 126 124 125 116 119 119 119 +115 114 112 112 110 112 103 110 105 103 101 107 +111 116 118 123 130 134 139 138 143 149 149 149 +154 153 157 157 161 162 159 157 157 152 158 154 +153 156 154 152 154 160 155 158 156 154 156 154 +158 155 153 151 153 153 153 156 156 157 156 153 +153 152 154 152 154 150 156 155 149 150 152 154 +156 153 157 155 151 157 152 154 153 156 153 152 +157 148 152 153 153 153 154 149 149 160 178 190 +198 205 210 210 213 214 216 217 216 216 217 218 +215 212 203 189 170 148 122 109 105 104 104 108 +110 112 111 115 117 117 116 117 120 121 117 121 +118 120 122 119 123 118 119 129 125 119 121 120 +117 120 122 121 124 122 122 123 125 121 122 123 +124 126 123 116 121 127 125 121 126 126 128 122 +122 123 125 128 125 124 125 127 125 127 125 124 +126 125 131 130 123 129 126 126 124 118 105 96 +82 60 53 45 48 47 45 43 +155 155 155 160 +156 154 154 152 157 157 157 155 159 153 157 154 +155 158 153 156 158 156 156 154 151 151 153 155 +155 157 150 153 154 154 155 158 160 160 166 164 +169 165 167 169 171 172 172 166 167 169 164 167 +164 162 158 148 144 142 133 137 130 123 113 104 +96 90 89 88 90 91 95 98 104 95 97 100 +99 100 104 104 103 101 102 104 103 104 99 103 +101 107 110 106 100 103 103 101 103 104 101 100 +105 110 108 110 111 107 108 108 113 116 120 114 +119 122 123 124 121 125 121 123 122 122 123 126 +123 125 130 129 125 129 132 126 125 128 126 128 +132 127 130 130 127 127 130 128 129 130 132 131 +134 130 125 130 125 132 129 130 129 130 133 130 +127 130 134 128 135 133 137 130 131 132 132 130 +131 131 132 133 131 134 135 133 129 129 127 126 +132 127 133 133 131 135 131 131 129 137 129 128 +128 129 130 132 134 126 133 130 133 129 129 130 +128 129 135 130 135 126 128 130 131 126 130 127 +125 127 126 124 132 124 128 127 128 129 129 129 +132 127 127 130 131 130 128 129 134 127 128 128 +132 131 128 130 132 127 129 129 131 127 128 129 +129 131 129 128 132 128 132 129 128 129 128 130 +130 129 126 128 126 126 129 124 129 126 128 127 +126 129 127 125 127 127 126 124 127 124 129 128 +132 128 128 128 128 127 128 126 128 131 127 126 +124 119 119 122 112 117 117 121 117 111 114 117 +112 107 110 105 110 105 103 100 109 113 119 124 +127 135 139 136 143 148 149 150 154 153 159 159 +161 159 163 155 155 159 155 150 153 156 152 151 +155 156 154 159 160 157 158 156 157 159 155 155 +154 157 157 155 155 156 154 154 155 154 153 158 +153 155 157 158 154 154 152 152 152 157 153 157 +149 153 154 156 151 149 154 152 150 151 152 154 +155 149 149 149 150 155 168 184 194 201 205 210 +213 213 215 215 216 216 218 218 217 213 207 197 +183 163 139 109 105 100 100 105 104 107 109 110 +115 109 117 116 122 122 116 119 118 116 121 123 +121 117 121 121 117 119 119 119 118 116 120 119 +119 118 120 119 121 123 123 125 121 122 117 126 +122 123 121 121 122 124 126 123 121 123 124 124 +126 125 129 128 122 124 123 123 126 129 132 135 +130 130 130 125 114 106 91 76 60 47 49 50 +47 45 50 51 +156 156 156 158 158 155 150 148 +158 157 157 156 156 155 156 157 154 159 158 152 +156 155 155 153 155 150 152 155 156 154 153 152 +153 156 156 156 165 161 163 166 168 168 169 171 +171 170 171 172 173 170 169 166 166 167 159 146 +143 138 134 131 126 116 106 106 95 91 89 90 +86 87 87 93 98 92 97 101 95 99 104 102 +101 101 104 105 102 105 108 106 106 102 103 104 +102 103 106 104 104 110 103 100 101 104 103 106 +112 109 112 113 111 113 115 116 115 119 119 121 +126 123 127 124 121 124 123 127 126 124 131 126 +127 126 131 125 130 124 132 128 126 128 129 127 +125 128 136 130 132 134 131 129 130 133 130 129 +131 132 126 129 129 129 133 131 127 130 136 129 +132 133 131 133 131 131 130 132 132 133 133 130 +132 133 133 129 133 132 126 131 130 134 132 133 +128 130 131 135 132 131 132 127 133 130 135 132 +132 128 132 129 129 131 126 133 129 131 134 132 +131 129 129 131 131 130 133 131 129 132 132 132 +127 129 130 129 135 129 132 129 127 130 125 134 +127 130 128 131 130 132 132 133 133 139 132 132 +128 134 128 129 134 123 128 129 125 128 134 128 +132 129 134 130 134 126 131 126 128 130 130 126 +130 128 128 129 130 130 129 129 126 130 128 129 +125 129 134 127 128 125 128 128 132 128 128 128 +129 128 129 126 124 128 127 125 128 124 124 121 +119 118 121 120 117 113 113 117 107 109 109 110 +103 108 104 108 105 106 113 118 127 131 132 137 +140 145 150 148 151 153 152 160 159 159 160 156 +157 156 157 154 152 160 155 154 152 154 156 158 +156 158 154 158 158 158 156 152 158 156 155 158 +157 156 155 153 154 150 154 153 154 153 158 156 +157 152 152 152 151 153 153 154 148 146 150 154 +153 153 153 157 153 150 150 151 152 155 149 149 +148 150 154 173 187 198 203 207 211 212 213 214 +216 218 218 220 218 216 212 204 190 174 151 126 +106 103 106 104 103 106 112 112 113 111 114 117 +120 121 120 120 122 116 121 121 119 121 125 119 +116 122 119 122 122 119 118 120 117 118 120 124 +119 120 122 123 119 123 123 123 123 126 124 123 +121 123 121 121 123 125 126 122 123 125 124 125 +125 126 125 128 133 129 128 134 134 134 124 118 +105 86 71 55 53 43 45 43 47 46 45 47 +157 157 157 155 156 152 158 155 159 155 157 155 +155 153 156 156 156 155 161 154 156 157 157 157 +150 156 153 153 152 154 151 157 155 155 163 164 +162 163 166 171 168 167 169 168 169 164 165 172 +164 170 166 166 167 161 158 149 142 140 138 131 +125 116 107 101 99 94 84 89 88 87 97 94 +88 95 96 99 100 103 106 104 103 102 104 106 +105 109 106 108 107 105 106 101 102 96 104 103 +100 102 104 102 102 98 104 107 113 112 108 114 +112 114 114 118 119 120 116 119 122 121 123 121 +122 128 121 129 129 121 125 125 123 129 126 123 +126 126 137 126 127 128 131 130 128 132 132 134 +130 135 131 129 129 127 128 130 128 131 132 126 +126 131 135 127 128 127 131 130 135 135 129 132 +132 132 130 131 131 132 135 134 131 131 133 129 +130 132 133 133 136 130 130 134 127 131 130 130 +128 135 131 132 129 129 128 130 134 127 129 132 +135 129 133 132 132 133 135 131 131 134 129 133 +130 129 126 125 130 129 126 132 129 131 131 128 +129 130 132 133 127 127 130 124 129 132 130 132 +129 135 135 136 132 133 133 134 132 132 130 130 +137 127 130 130 129 126 131 128 128 131 133 127 +129 135 132 131 128 130 128 129 128 128 126 132 +129 130 128 127 129 123 130 131 128 124 133 126 +127 123 124 124 124 128 128 127 123 123 128 126 +132 131 126 124 120 128 124 119 120 120 121 120 +116 115 112 113 113 112 110 110 106 111 105 103 +101 104 110 121 120 128 133 141 136 147 146 150 +150 151 153 154 163 157 159 159 158 159 159 153 +155 157 154 160 153 155 157 158 159 156 158 158 +161 163 159 160 160 159 157 157 156 159 154 158 +155 152 156 154 153 158 155 157 153 156 154 154 +152 156 153 151 152 156 151 152 152 155 154 155 +154 152 156 151 160 153 146 151 150 151 152 166 +180 195 201 205 210 212 213 217 217 219 217 219 +218 218 217 209 200 184 167 142 115 105 103 105 +103 106 107 109 112 111 117 114 115 117 122 120 +120 117 120 121 123 121 120 124 121 119 117 122 +125 114 117 121 117 123 119 121 129 121 123 120 +121 122 118 118 121 122 120 121 125 122 120 122 +124 127 127 124 124 120 122 127 123 127 122 127 +132 131 131 137 127 128 123 109 94 73 59 50 +51 41 46 43 47 46 48 49 +157 157 157 156 +160 156 156 155 158 155 154 158 155 154 153 160 +159 154 157 152 158 159 150 154 154 155 152 155 +154 157 156 153 156 159 158 164 166 166 166 168 +170 167 166 171 171 169 167 168 167 168 166 162 +162 158 158 147 147 140 137 134 123 114 109 105 +102 90 86 90 95 91 92 89 95 97 99 101 +102 99 106 104 104 104 110 109 105 106 109 106 +112 108 102 105 103 102 107 105 101 100 102 102 +106 101 104 110 113 112 110 113 115 114 118 122 +121 116 116 119 123 120 118 119 121 123 122 125 +126 124 126 125 125 128 122 127 125 128 130 127 +128 127 131 130 131 131 134 129 133 130 132 133 +132 129 132 129 130 130 128 128 132 133 134 129 +123 135 129 132 131 133 127 132 129 131 133 133 +138 137 132 136 131 137 132 129 127 131 129 136 +132 131 130 131 136 133 134 129 126 128 129 135 +131 125 135 134 130 126 129 134 131 128 135 130 +133 132 130 130 131 128 133 129 129 128 132 131 +129 131 128 127 129 128 129 134 132 129 129 132 +129 123 127 129 130 134 128 131 136 135 134 133 +138 133 132 129 134 130 129 130 132 130 130 130 +131 131 132 131 128 129 131 125 131 137 127 134 +130 126 127 129 127 126 134 128 129 126 129 128 +125 127 131 124 126 131 126 131 126 124 125 126 +127 131 129 125 127 131 127 129 130 129 124 129 +126 120 124 125 121 126 123 116 114 120 111 106 +109 108 112 113 111 111 107 102 99 103 106 117 +122 131 131 141 141 143 143 147 153 153 152 155 +156 161 160 160 162 159 158 156 160 155 157 156 +155 156 157 163 159 160 161 160 162 156 160 162 +159 158 159 158 154 159 153 155 161 151 156 154 +156 158 154 154 155 154 149 155 153 155 152 150 +154 152 151 155 148 150 154 153 153 150 152 150 +152 150 151 147 147 149 150 154 170 186 196 201 +205 209 213 213 215 217 218 219 219 221 216 215 +206 197 179 156 132 106 103 106 104 109 115 115 +108 116 115 112 115 124 114 120 117 117 122 119 +115 124 118 121 119 123 120 124 123 118 120 120 +123 124 118 122 125 118 121 119 122 126 122 123 +124 123 123 125 124 118 121 124 125 129 129 126 +124 126 129 127 124 125 125 129 132 137 132 133 +123 115 108 94 70 56 59 66 48 42 40 45 +44 49 48 49 +157 157 158 155 154 158 157 155 +155 156 151 158 156 156 155 154 154 159 154 154 +151 155 154 153 153 156 152 153 154 153 155 156 +160 159 165 166 167 167 169 166 168 167 167 168 +167 170 168 165 168 165 163 165 161 154 158 151 +143 145 134 129 125 126 112 106 99 90 93 88 +87 95 95 93 94 98 99 103 101 97 104 103 +103 107 107 108 103 107 110 106 104 114 106 103 +101 98 104 105 108 101 102 97 102 100 105 105 +110 105 111 114 114 114 113 119 116 118 118 120 +122 124 122 124 124 127 122 122 120 123 131 124 +127 124 124 129 128 125 127 123 125 125 133 127 +133 129 134 126 131 128 128 133 131 128 130 129 +129 131 129 127 134 129 130 131 127 130 127 131 +130 129 129 130 131 128 131 138 134 131 133 132 +129 129 130 129 133 131 134 131 133 132 130 134 +136 133 128 128 130 128 131 132 136 133 135 133 +132 132 134 134 127 133 136 125 132 130 130 134 +134 127 132 130 133 126 129 130 133 130 132 127 +131 130 133 134 127 126 131 128 129 128 126 130 +130 133 129 128 134 129 132 137 131 133 137 129 +136 125 130 131 130 133 132 131 129 127 136 129 +130 131 130 129 129 129 125 128 136 127 127 131 +129 128 132 126 128 126 124 130 127 126 130 126 +126 127 127 129 128 128 123 130 128 131 130 124 +133 128 127 131 125 133 124 122 119 121 122 130 +124 122 121 119 117 117 117 107 115 112 110 116 +105 109 107 106 103 103 108 112 118 118 127 137 +140 145 146 147 150 150 154 154 156 160 159 165 +162 157 161 161 160 159 158 158 159 159 160 160 +159 160 165 164 163 160 163 164 163 161 157 156 +155 155 157 156 155 150 154 157 158 153 157 155 +150 153 153 155 155 155 152 151 151 150 150 151 +151 151 152 153 151 153 153 153 152 151 155 153 +151 153 148 148 162 181 193 200 206 207 212 215 +215 217 218 218 218 218 219 216 210 204 190 174 +147 121 102 106 106 108 106 106 108 112 111 111 +117 117 113 115 116 112 120 117 122 121 117 122 +124 122 119 122 121 117 118 119 114 119 123 122 +124 119 116 120 122 125 125 120 121 126 126 125 +129 125 122 124 125 122 122 124 122 124 126 129 +128 131 127 131 130 136 130 124 113 103 89 66 +53 46 49 71 51 49 49 48 53 51 48 51 +158 158 159 156 154 157 156 153 156 157 156 159 +155 156 153 155 156 155 156 157 155 156 153 155 +149 155 151 158 150 156 157 159 163 162 162 165 +168 164 168 169 169 169 172 167 166 167 165 168 +167 161 164 159 159 156 154 151 142 142 132 128 +121 115 109 112 100 92 93 89 91 91 90 91 +90 98 103 102 105 100 103 102 106 107 110 103 +107 106 105 104 100 107 105 103 103 103 104 102 +107 106 101 99 101 103 105 108 111 109 109 110 +110 113 118 113 116 117 118 119 120 123 125 125 +126 125 127 125 126 127 133 126 126 126 128 126 +128 131 132 126 126 131 131 126 129 131 126 133 +129 130 134 128 127 131 129 130 128 129 129 126 +129 133 133 129 130 134 133 131 128 134 132 131 +129 130 137 132 127 135 133 129 133 132 130 130 +130 130 131 131 133 130 131 138 129 132 128 133 +127 131 132 136 130 130 135 132 130 130 129 133 +132 128 130 129 130 133 128 134 129 134 127 133 +132 129 130 131 131 130 134 128 129 132 127 130 +132 130 131 132 128 124 131 133 130 131 130 131 +132 129 134 134 130 135 135 136 135 129 128 128 +135 135 126 129 130 128 128 132 128 133 129 130 +129 129 132 133 132 126 126 130 128 130 127 126 +125 128 126 125 129 128 124 128 129 131 129 131 +123 129 131 126 128 130 130 128 126 123 129 135 +128 129 128 130 128 130 122 127 123 120 121 119 +116 117 116 109 115 115 125 106 110 112 104 105 +104 105 105 111 112 121 127 134 136 143 146 147 +150 152 152 153 157 155 159 158 161 160 161 163 +159 161 163 160 158 156 160 159 162 160 158 160 +162 162 163 161 159 157 159 157 158 160 155 154 +156 157 155 154 159 150 153 152 154 154 156 156 +154 154 161 155 153 150 150 151 148 151 149 151 +152 153 151 153 154 151 151 152 148 149 149 144 +153 171 185 195 201 205 209 213 215 215 217 219 +219 218 220 218 214 206 196 185 164 142 111 104 +104 108 104 109 108 107 106 111 122 116 118 114 +114 117 121 122 116 115 120 118 126 126 120 121 +117 119 122 124 121 123 119 122 124 119 122 122 +120 121 125 121 121 125 124 123 123 124 126 120 +126 126 126 126 130 124 129 132 132 133 128 137 +139 133 122 111 99 84 64 53 50 42 43 50 +47 47 45 44 53 45 54 48 +156 156 155 156 +157 155 157 153 154 156 153 154 158 157 154 156 +152 155 154 159 155 157 153 156 154 149 150 154 +150 157 164 161 161 162 164 164 171 164 166 165 +165 168 169 164 166 167 167 165 167 166 165 160 +156 158 156 149 142 141 140 131 129 122 108 103 +98 92 89 83 90 88 92 90 91 94 102 102 +103 100 95 98 106 111 110 105 109 103 110 108 +98 106 101 101 105 102 110 101 101 104 103 104 +99 99 104 103 106 111 111 110 114 114 113 113 +114 120 121 123 120 127 124 124 119 129 124 128 +125 124 130 127 129 127 129 127 126 129 131 128 +125 125 129 129 132 129 131 129 134 130 130 130 +129 134 129 130 130 132 128 134 128 126 130 133 +131 134 131 138 136 131 133 133 129 130 140 130 +134 135 134 134 131 136 135 132 132 134 134 131 +137 130 131 135 133 130 129 132 128 131 130 128 +128 134 131 132 130 131 125 128 132 130 134 133 +132 135 130 135 134 128 129 131 137 131 134 133 +132 128 128 124 126 128 132 134 132 131 133 131 +127 131 128 127 130 128 131 130 134 131 138 135 +131 135 141 137 133 133 132 131 133 132 129 129 +130 131 132 129 129 134 129 128 130 129 129 130 +130 126 125 127 131 131 131 127 128 127 124 127 +130 123 122 126 128 126 129 128 130 130 129 127 +129 128 128 128 128 128 127 127 127 130 127 129 +126 125 123 125 115 117 122 125 115 121 118 113 +114 115 122 118 110 104 109 108 106 101 102 107 +114 118 120 129 136 143 142 145 148 144 152 152 +156 158 155 160 158 162 165 166 159 162 158 156 +157 159 161 159 163 162 162 164 158 158 160 165 +161 161 162 154 157 156 159 155 161 159 159 160 +158 154 155 153 152 155 152 152 152 151 153 155 +156 155 149 151 154 148 147 152 153 151 149 152 +149 152 150 149 148 152 152 144 148 162 177 192 +198 205 208 212 214 215 215 219 219 220 220 218 +218 211 206 194 179 154 123 112 104 104 99 106 +113 107 108 114 121 117 115 114 113 114 118 121 +121 120 120 118 122 121 117 120 115 124 120 122 +118 119 127 118 121 125 118 123 125 125 122 120 +120 124 123 129 127 126 125 130 128 130 132 126 +128 130 132 132 132 134 136 135 133 122 112 95 +81 61 46 49 48 42 40 48 43 49 48 48 +44 41 49 52 +156 156 155 156 158 153 150 153 +155 158 158 157 154 157 155 155 155 153 153 157 +157 153 156 156 155 150 153 153 152 159 163 158 +161 164 165 169 168 165 165 166 165 166 166 165 +163 167 164 164 165 163 160 161 157 158 152 147 +145 138 135 128 121 111 108 103 94 87 92 89 +83 88 94 94 87 96 103 99 110 100 100 101 +109 104 101 103 104 103 106 110 108 104 107 106 +98 105 110 104 100 102 101 100 102 103 103 102 +108 110 111 111 112 116 112 120 117 116 117 120 +118 124 121 125 125 123 125 121 121 131 125 125 +129 128 127 127 125 127 131 132 129 130 126 131 +130 132 130 128 127 129 131 132 132 128 131 131 +132 135 132 126 129 128 129 131 131 130 129 135 +136 129 133 127 132 132 132 134 131 134 131 132 +145 137 134 132 133 134 126 131 133 127 132 134 +135 138 132 132 134 131 130 131 128 142 131 134 +134 130 129 130 133 135 134 134 131 135 134 136 +135 134 132 130 139 128 129 134 133 123 132 125 +129 130 131 128 129 135 130 129 130 130 125 130 +131 129 130 131 131 137 138 133 134 134 136 135 +133 131 130 131 130 132 131 127 130 136 127 131 +131 130 131 131 133 133 131 129 127 127 130 127 +122 134 130 126 128 129 129 128 127 125 125 126 +127 128 124 129 131 130 133 128 126 130 128 129 +131 130 128 129 125 135 128 131 127 123 125 126 +124 125 122 116 113 114 112 113 113 116 119 111 +110 109 115 104 107 104 104 101 111 113 121 128 +139 141 150 144 148 147 150 152 157 153 153 161 +159 161 162 160 160 164 162 161 159 160 158 158 +159 163 163 163 162 163 160 161 160 162 158 160 +156 161 160 157 161 161 155 158 157 155 157 155 +152 154 155 154 150 152 155 152 158 157 149 151 +154 148 151 149 153 154 151 149 151 150 150 152 +149 147 147 148 147 152 170 182 193 203 206 210 +215 217 216 216 217 220 217 219 219 214 209 202 +186 171 142 118 99 102 111 107 103 105 110 113 +116 117 116 116 119 121 121 118 119 117 123 119 +123 121 125 119 121 122 125 126 123 121 127 122 +121 121 125 124 126 126 127 128 123 121 127 127 +125 125 125 128 127 128 128 129 125 132 130 131 +134 136 131 129 123 112 95 80 60 47 44 49 +43 44 45 40 49 51 46 48 43 39 45 53 +157 157 159 154 157 157 154 153 157 157 153 154 +157 158 160 156 158 158 158 160 155 153 154 156 +154 154 154 157 160 159 161 161 165 165 166 166 +168 166 164 169 166 170 166 164 167 167 161 161 +169 164 163 161 160 155 153 148 142 142 134 131 +124 115 109 100 94 99 94 87 93 87 92 97 +95 97 102 105 98 99 101 102 101 105 100 103 +109 105 103 105 103 103 108 103 103 105 103 104 +98 98 103 101 101 103 108 109 107 108 114 112 +114 120 113 120 117 118 117 117 119 121 124 121 +121 124 127 123 119 123 128 128 126 126 131 129 +126 128 130 126 129 125 130 130 132 134 129 131 +125 135 128 130 131 131 132 131 131 133 128 129 +129 132 127 132 131 131 130 132 135 129 130 128 +128 134 130 135 132 135 131 131 134 129 137 137 +133 130 129 131 128 130 135 129 134 134 130 133 +130 135 128 128 131 130 137 139 130 132 131 133 +130 138 130 129 131 129 131 127 135 132 129 133 +142 131 128 128 129 126 130 126 127 127 135 131 +136 131 127 129 129 127 126 127 124 132 130 134 +132 136 135 136 135 135 134 135 134 134 131 130 +132 135 130 131 131 130 129 130 132 133 134 129 +132 130 129 130 126 131 126 122 128 128 129 135 +132 127 129 130 129 123 126 127 126 124 125 126 +129 131 128 130 129 129 126 131 132 126 122 124 +126 127 129 126 128 124 127 125 124 123 123 121 +115 115 117 112 112 117 115 108 111 107 113 103 +101 106 102 103 109 115 119 129 127 136 139 141 +142 149 153 154 153 157 160 158 159 160 166 160 +159 161 159 163 161 160 159 160 158 166 163 164 +162 164 161 158 164 162 163 164 158 158 158 155 +155 158 159 160 160 160 154 156 156 155 154 153 +154 150 158 154 153 156 153 151 152 153 154 149 +151 152 152 151 153 152 150 150 150 147 148 147 +145 145 153 172 186 199 203 208 211 215 218 217 +217 217 219 219 218 219 212 205 197 176 155 135 +105 102 103 103 108 108 107 110 112 116 110 121 +113 119 120 115 118 119 120 125 124 126 120 124 +129 123 129 125 121 119 122 122 122 123 133 121 +124 123 121 124 127 119 125 124 130 125 125 127 +130 127 134 128 130 131 134 134 137 137 128 122 +109 92 83 57 50 42 39 46 51 45 45 42 +50 46 49 45 48 49 46 49 +153 153 154 155 +156 160 156 155 156 156 159 155 160 153 159 158 +160 158 159 155 157 154 156 159 156 153 153 153 +156 154 159 162 161 164 165 164 165 161 166 169 +162 167 164 166 169 162 163 160 165 165 162 161 +153 154 155 148 148 143 143 141 136 125 127 112 +95 98 87 85 86 89 95 95 95 97 96 97 +107 99 99 99 104 107 109 106 104 113 107 106 +105 103 104 104 103 109 102 105 109 102 110 105 +101 101 106 107 111 113 116 110 116 115 115 114 +123 122 124 121 119 120 120 117 127 125 125 121 +121 123 128 127 129 129 124 127 129 130 131 130 +128 130 128 129 130 131 132 131 130 132 130 133 +136 132 131 133 133 135 130 130 128 130 132 132 +129 128 127 133 130 132 127 134 131 128 129 133 +132 134 133 132 132 132 127 131 128 132 134 129 +135 128 132 132 129 128 129 128 131 130 127 130 +129 132 138 134 134 134 130 131 132 129 132 134 +131 130 130 128 129 128 131 135 136 130 130 131 +133 135 132 132 130 130 134 127 135 127 131 140 +127 126 131 126 129 133 129 130 130 134 134 130 +133 138 139 135 133 134 136 130 131 133 129 134 +133 132 130 135 128 126 129 140 144 129 128 125 +126 128 126 128 129 130 127 131 131 129 130 135 +130 126 131 124 130 126 132 126 126 124 132 129 +133 132 132 128 131 125 125 125 129 130 128 128 +125 121 131 123 121 125 122 117 120 117 120 115 +113 116 114 108 110 109 113 106 107 101 101 103 +109 113 115 121 129 135 141 139 146 151 149 154 +153 157 157 157 162 161 163 162 162 162 161 165 +161 162 155 161 161 160 160 160 166 165 163 162 +163 161 162 160 159 155 157 158 159 157 159 157 +156 160 159 155 155 156 154 153 154 156 154 155 +153 153 154 150 150 150 150 152 151 151 156 149 +148 150 152 154 152 150 149 147 150 146 151 159 +180 192 200 207 210 213 214 217 217 217 217 219 +219 218 215 210 202 190 172 145 116 102 103 102 +103 105 106 109 113 113 113 116 111 114 119 117 +119 121 126 120 125 118 120 121 122 123 120 122 +121 124 123 121 120 125 123 122 120 123 123 130 +124 125 127 130 129 126 125 129 130 128 134 133 +135 136 134 135 134 131 125 108 98 75 64 48 +38 45 50 50 45 49 46 49 60 50 52 44 +42 44 44 52 +156 156 154 161 155 156 156 153 +157 158 158 154 157 156 159 161 157 162 155 158 +153 152 159 158 154 150 154 160 158 157 160 161 +162 163 165 166 165 164 166 170 168 163 163 162 +162 165 164 158 160 163 163 160 156 155 156 145 +147 141 136 137 130 127 126 115 102 94 98 84 +86 90 88 94 95 95 99 97 101 105 105 102 +106 106 109 104 103 109 107 105 102 102 102 101 +105 102 101 101 105 107 100 104 103 103 99 104 +108 112 112 112 113 114 110 114 121 117 116 119 +118 120 118 121 125 122 124 115 123 124 127 124 +123 126 126 125 127 128 130 127 131 129 129 132 +131 129 127 128 126 128 134 132 128 128 131 135 +132 130 132 132 133 130 130 131 129 129 127 130 +132 130 135 132 129 131 126 131 134 132 130 131 +132 134 126 130 129 131 131 133 130 130 130 132 +131 132 131 129 135 127 131 128 131 133 134 126 +130 132 131 129 133 126 129 137 133 128 130 134 +128 127 131 129 133 131 129 128 139 135 133 128 +131 130 132 129 133 130 130 132 124 126 128 125 +126 134 127 132 133 128 134 134 134 133 133 140 +142 137 134 132 130 132 129 131 134 131 125 138 +126 126 127 133 141 133 124 133 133 126 124 127 +129 129 128 131 128 129 130 135 131 128 124 122 +125 125 127 126 127 128 126 129 129 130 130 126 +130 124 126 125 129 127 127 125 130 126 121 124 +121 127 123 120 138 121 121 120 115 111 115 114 +108 109 106 105 109 104 100 101 108 112 116 122 +129 135 138 140 147 148 147 152 152 158 156 156 +157 163 163 161 162 162 161 164 160 162 158 160 +159 164 164 164 162 161 164 164 160 162 160 160 +161 159 156 155 159 157 158 156 160 156 164 159 +152 153 157 158 156 155 156 154 153 152 153 150 +150 153 150 155 152 157 154 154 152 149 148 153 +152 149 150 150 156 149 145 151 169 185 197 203 +207 210 214 215 217 217 219 219 221 222 218 212 +207 197 184 161 136 112 99 111 112 108 106 112 +118 113 113 109 116 119 117 119 114 122 121 121 +121 120 122 123 121 122 119 124 116 118 126 122 +115 120 122 120 120 127 127 129 126 127 126 126 +126 128 130 130 131 131 134 133 134 139 139 135 +132 124 111 99 81 63 52 50 43 43 54 66 +53 50 45 47 56 51 47 49 45 53 45 52 +155 155 155 153 156 156 156 155 158 151 154 160 +159 158 154 155 158 157 158 155 156 153 153 152 +153 156 152 156 160 157 162 167 167 166 167 165 +167 160 162 167 161 164 164 166 163 164 161 160 +158 163 161 163 160 156 161 147 145 141 137 131 +125 120 110 105 100 92 98 87 85 93 92 98 +97 92 101 99 103 105 102 101 119 106 105 105 +100 102 105 108 103 106 109 104 94 99 102 97 +103 108 98 103 101 103 104 107 110 112 111 113 +114 112 116 113 119 114 117 121 121 120 125 122 +122 130 124 125 123 127 123 121 121 128 131 127 +125 131 127 128 130 127 126 131 132 130 129 126 +127 133 131 132 128 126 128 129 133 128 131 128 +130 129 132 130 130 129 128 132 131 131 129 129 +129 129 129 132 130 129 134 133 131 131 132 127 +127 130 131 134 127 130 125 133 133 128 131 135 +132 130 127 132 134 133 133 134 129 128 131 126 +129 128 131 136 144 131 128 126 132 131 130 128 +130 126 131 131 136 128 126 131 133 131 130 129 +127 130 129 127 130 126 127 128 127 131 127 129 +129 129 132 132 135 135 137 139 143 137 130 137 +134 129 131 126 131 135 126 130 135 128 127 132 +127 132 126 127 127 128 131 123 132 130 128 123 +128 124 125 125 126 128 128 124 123 123 125 128 +130 124 122 127 127 129 130 126 126 129 129 129 +127 129 126 126 124 125 122 122 123 122 123 122 +133 124 121 113 111 112 113 112 111 105 109 105 +111 107 106 103 108 111 111 114 128 132 139 140 +145 155 147 152 153 152 155 159 161 162 162 164 +162 163 165 167 160 162 157 160 159 159 161 159 +160 159 162 161 160 158 161 162 157 161 159 157 +152 158 154 156 157 156 154 155 155 155 155 154 +156 152 160 152 151 150 153 152 150 152 152 150 +150 150 152 153 151 152 148 152 152 147 150 151 +147 144 144 146 160 178 189 200 207 209 212 212 +215 217 217 219 218 220 218 216 214 204 196 174 +146 120 104 104 109 113 106 104 112 114 112 110 +117 118 116 119 116 119 122 115 120 123 126 127 +116 124 115 122 126 123 124 123 120 123 123 125 +124 127 133 134 127 125 131 128 130 129 130 134 +130 133 134 138 133 137 141 133 129 110 95 71 +59 51 46 44 45 40 41 48 48 53 49 44 +41 43 47 46 48 46 55 50 +158 158 155 156 +153 150 156 157 156 156 152 157 157 158 158 159 +159 162 157 158 157 158 156 155 149 155 154 154 +157 156 161 161 167 164 166 170 165 164 161 165 +165 163 167 161 165 162 162 160 159 156 158 159 +157 156 151 148 151 140 137 138 132 121 120 104 +97 90 92 87 89 97 95 96 94 100 98 98 +99 102 97 103 128 106 102 103 104 104 99 99 +102 103 108 103 97 100 104 99 106 102 103 104 +101 103 105 109 109 109 116 115 110 110 117 120 +114 118 124 116 116 119 119 119 117 128 125 124 +127 121 121 123 126 125 124 127 126 129 129 130 +133 131 129 127 131 127 132 126 130 127 127 128 +132 128 130 128 128 126 128 131 129 130 128 133 +128 131 132 132 130 130 133 129 129 131 130 130 +130 133 132 128 131 133 131 128 134 132 132 130 +127 129 125 132 130 133 130 131 130 133 135 131 +127 130 132 129 131 134 130 122 130 129 131 132 +130 127 127 125 130 129 127 131 130 128 128 129 +129 125 127 132 130 131 129 127 126 131 125 129 +126 127 128 125 127 129 127 126 132 129 131 133 +133 134 135 132 135 131 130 129 130 130 130 130 +131 131 131 129 131 131 130 128 132 129 129 130 +128 125 132 127 126 129 130 129 124 125 124 124 +123 128 126 125 124 130 129 128 128 125 127 126 +126 127 129 127 125 124 124 131 129 127 127 126 +124 126 121 122 120 123 123 120 119 120 122 115 +114 116 112 110 108 113 116 107 105 105 102 102 +104 109 108 113 126 130 136 138 144 150 151 153 +154 154 155 158 158 163 158 164 162 162 160 164 +159 159 162 163 157 159 160 161 160 160 162 164 +159 162 163 160 161 160 162 160 157 154 151 157 +157 157 154 156 154 152 155 154 152 152 154 149 +150 154 152 152 152 150 151 154 149 149 151 151 +151 148 149 150 150 148 149 149 141 143 144 143 +150 167 183 196 201 209 208 213 214 216 216 218 +217 218 218 219 216 211 203 186 164 137 107 105 +102 105 105 107 110 117 115 108 120 113 120 118 +116 117 118 114 115 113 121 123 125 126 123 120 +119 122 118 117 121 120 117 124 128 129 126 125 +133 131 132 129 130 129 130 133 130 134 134 138 +135 141 133 126 115 90 71 54 49 52 40 41 +44 43 44 54 52 62 47 51 52 42 47 49 +49 55 51 53 +156 156 156 153 151 156 155 157 +155 161 155 159 158 156 157 156 159 157 154 156 +158 153 158 157 154 155 155 154 159 157 162 165 +168 167 169 166 165 170 158 164 165 163 164 163 +162 163 159 163 160 159 164 164 156 155 155 150 +152 143 139 132 132 125 116 101 99 95 85 88 +87 87 94 94 97 99 102 97 99 106 107 104 +105 102 101 101 102 104 106 103 101 103 103 102 +106 109 108 102 99 100 107 104 103 105 106 103 +105 106 108 107 110 113 112 115 112 115 124 119 +117 124 121 118 121 126 119 124 125 127 127 124 +127 129 126 134 128 128 133 127 130 126 128 129 +131 131 127 126 131 134 130 135 133 130 128 127 +131 127 127 128 126 132 128 127 127 131 131 130 +131 135 128 129 127 130 131 133 132 133 132 129 +133 130 128 128 128 131 128 126 128 132 125 126 +136 128 124 128 130 129 130 135 127 126 131 131 +132 130 127 126 127 128 131 128 130 123 125 127 +126 127 127 132 127 129 126 132 127 124 129 130 +129 131 135 125 128 127 130 133 127 128 126 129 +127 126 131 132 134 138 130 129 131 130 130 131 +131 134 128 130 133 131 130 125 126 125 129 130 +129 128 130 132 128 129 132 133 130 131 126 128 +129 128 132 131 123 125 126 126 124 126 126 123 +126 124 126 128 124 126 125 131 125 124 126 128 +128 123 123 125 134 127 126 128 125 125 122 126 +123 120 125 118 119 119 118 122 114 114 113 112 +108 108 112 112 105 106 109 104 108 111 111 113 +121 129 132 138 145 147 148 146 151 157 158 156 +156 163 161 162 160 163 165 160 159 160 163 159 +160 161 159 159 158 160 163 162 159 159 159 159 +162 160 158 161 156 154 155 156 152 156 155 158 +157 153 156 152 154 151 154 153 150 151 154 151 +149 149 152 151 153 150 151 150 150 150 148 147 +151 151 148 153 152 142 142 146 146 158 172 190 +198 204 208 212 215 216 216 219 217 219 219 221 +218 213 205 193 179 153 126 112 107 101 107 115 +108 109 110 113 116 113 116 119 113 116 121 114 +120 117 122 119 121 122 120 120 121 123 116 122 +121 123 119 120 123 123 126 128 127 126 128 128 +128 131 130 133 135 133 132 137 135 139 124 113 +96 71 56 50 58 57 46 53 63 50 50 48 +53 50 46 46 47 47 47 48 47 47 48 60 +156 156 156 151 152 156 158 160 159 159 155 158 +158 157 157 158 159 162 155 156 157 155 159 157 +153 157 158 156 162 163 163 166 166 164 165 168 +169 166 163 165 164 162 165 159 164 165 154 157 +159 157 159 161 158 155 153 155 149 143 138 129 +127 120 113 105 98 93 88 88 89 86 92 93 +97 93 94 98 102 100 101 106 109 101 105 103 +104 103 103 98 101 110 105 107 103 100 102 104 +105 98 101 103 103 106 107 110 106 106 108 116 +108 110 111 115 120 119 119 124 120 122 124 119 +121 123 116 123 127 131 125 128 130 128 131 128 +124 120 131 123 126 127 139 126 125 130 129 131 +130 125 126 129 129 131 130 131 127 126 127 126 +130 129 129 131 131 127 130 125 133 129 127 132 +128 127 132 131 135 134 132 141 129 130 129 133 +131 130 132 130 129 130 129 129 135 132 134 131 +129 129 133 133 126 125 131 131 129 128 131 128 +127 128 127 129 127 125 131 132 125 131 124 124 +128 125 127 126 123 129 126 128 127 125 127 128 +128 127 129 126 127 125 129 126 125 127 126 126 +132 133 129 128 133 130 133 129 129 136 135 130 +133 133 128 133 132 128 128 132 134 129 135 128 +128 131 130 125 125 127 128 126 128 128 132 130 +127 128 127 122 126 127 126 125 122 125 125 128 +124 127 130 125 128 124 128 124 123 128 124 124 +126 128 127 128 123 124 121 126 126 119 120 122 +121 119 118 116 116 110 110 109 110 107 106 109 +106 106 106 107 110 118 117 117 124 132 133 135 +142 148 149 151 151 155 157 158 158 163 161 165 +164 162 164 159 160 162 167 162 160 156 155 160 +159 161 159 161 160 159 158 161 157 160 160 162 +159 156 155 153 156 156 159 154 159 154 153 156 +157 154 156 152 149 153 147 156 154 152 150 151 +149 151 151 151 154 151 150 150 149 151 149 149 +149 144 145 144 142 150 166 179 196 201 206 211 +213 217 217 217 220 218 219 219 219 216 210 203 +191 169 150 115 101 105 103 109 108 112 113 112 +117 117 122 124 118 122 125 121 116 118 122 118 +122 126 119 121 120 120 121 118 117 120 119 123 +121 119 129 128 125 125 125 129 128 131 129 140 +137 134 139 132 131 127 113 94 73 58 74 62 +47 47 43 44 47 44 49 39 43 52 43 45 +43 54 48 51 55 55 53 54 +154 154 152 153 +151 157 156 153 156 163 161 157 161 157 155 158 +158 157 156 157 157 157 156 158 158 157 159 162 +160 163 166 166 168 167 164 167 168 164 167 165 +160 162 162 162 162 156 156 157 162 161 162 159 +162 156 150 151 146 142 139 134 125 119 114 102 +96 95 88 85 82 88 91 101 94 92 96 97 +96 101 104 107 105 110 103 108 105 105 104 100 +104 106 109 102 103 103 103 101 98 104 105 98 +103 104 109 106 112 113 111 110 112 112 115 113 +120 118 123 120 121 122 120 118 121 124 120 125 +125 125 126 126 127 124 129 128 128 123 127 122 +132 131 127 129 130 131 129 131 126 130 129 126 +129 130 131 131 122 129 133 127 130 128 125 128 +129 126 129 130 130 128 129 128 125 127 131 132 +135 132 128 133 132 126 131 127 127 128 126 128 +132 125 128 127 128 129 129 141 146 132 134 131 +133 135 130 127 127 128 129 126 129 129 125 126 +124 125 121 124 123 128 125 126 125 128 129 123 +125 125 126 128 124 128 128 121 128 126 124 126 +125 129 129 125 122 130 124 126 126 128 126 130 +127 128 133 131 129 132 128 134 130 128 129 132 +129 129 131 133 130 131 130 133 124 127 129 128 +125 129 125 122 126 123 128 127 127 128 130 122 +128 127 125 123 128 125 128 126 127 127 129 127 +128 125 126 124 124 123 125 126 127 133 128 128 +124 125 123 125 126 125 123 121 127 132 121 117 +115 111 110 106 108 110 108 106 104 104 104 109 +111 112 119 121 128 125 136 140 140 145 147 154 +153 153 158 159 161 162 161 162 161 162 161 161 +162 167 166 162 161 157 159 161 160 159 159 161 +158 158 158 162 158 158 159 160 158 157 152 155 +151 154 157 154 151 154 154 157 152 153 155 156 +152 153 154 152 152 153 155 152 150 151 151 150 +151 152 150 151 149 148 151 146 149 148 147 147 +145 147 157 172 188 198 202 209 213 213 216 217 +219 219 221 220 220 219 213 207 199 185 164 130 +106 101 100 105 106 109 107 114 118 113 118 121 +121 118 121 122 118 125 124 122 125 123 120 123 +124 122 121 120 121 122 116 118 124 123 127 126 +122 121 125 132 131 129 128 133 135 137 139 134 +129 110 94 71 56 62 73 73 49 48 39 46 +43 45 47 40 39 46 45 44 42 47 49 50 +51 54 54 57 +152 152 153 156 153 157 155 157 +157 157 155 159 159 157 159 155 158 155 155 163 +158 155 155 155 154 160 160 166 160 162 165 165 +165 167 165 167 169 165 165 164 161 162 160 158 +162 159 158 159 160 161 160 160 161 155 150 153 +148 143 140 133 121 116 108 99 92 85 86 86 +77 82 83 96 93 94 97 100 100 103 103 100 +104 100 107 101 107 102 103 102 105 105 101 104 +102 99 100 105 107 102 102 101 104 103 108 106 +109 110 108 107 113 113 113 114 119 121 122 118 +119 118 125 117 121 121 123 124 123 122 125 125 +125 128 130 129 129 124 131 123 124 127 130 127 +131 130 128 131 124 129 130 125 130 127 124 131 +128 129 130 131 129 132 128 130 128 131 131 128 +128 130 126 128 125 124 130 127 126 129 126 136 +128 128 132 133 129 130 125 130 130 129 136 133 +136 133 134 128 138 139 130 126 133 140 127 131 +130 131 129 120 126 121 125 126 123 127 128 126 +122 125 126 128 127 122 131 125 127 127 129 129 +130 128 124 124 125 124 125 131 127 127 126 124 +121 126 128 126 121 127 127 132 126 129 133 131 +131 131 128 133 132 127 129 129 130 131 131 134 +130 130 133 130 129 126 128 126 126 126 127 123 +125 125 129 126 128 125 127 123 136 125 126 124 +126 127 130 127 124 129 128 123 128 127 127 127 +128 127 129 130 126 128 126 127 126 127 123 125 +122 121 121 123 124 123 126 119 117 113 108 112 +113 107 107 106 103 105 105 109 108 114 112 117 +119 126 130 137 139 141 144 146 152 155 157 161 +157 157 162 161 159 164 160 161 160 162 162 161 +157 159 158 158 157 160 156 163 158 158 159 157 +157 158 160 157 159 157 158 156 156 158 155 160 +151 156 153 156 155 155 151 153 152 154 152 151 +150 153 151 151 153 150 152 152 151 150 152 148 +151 151 150 152 146 142 148 146 144 147 145 162 +178 196 203 206 211 213 216 216 217 219 220 219 +221 221 218 213 205 193 178 145 120 99 103 106 +108 109 110 111 114 114 115 114 124 124 121 122 +125 126 120 124 123 120 122 123 117 120 118 119 +121 119 128 124 124 125 119 123 123 126 127 128 +128 135 133 135 135 134 136 125 111 95 82 53 +49 39 47 58 52 45 38 39 36 40 46 42 +41 45 45 46 46 47 55 51 58 59 47 47 +156 156 158 155 158 156 157 153 158 158 161 160 +159 157 154 158 160 159 158 159 156 154 159 158 +159 156 159 160 167 167 169 165 168 164 170 164 +164 166 166 167 158 162 157 164 158 157 160 159 +157 160 163 160 165 158 154 154 147 143 139 130 +121 113 109 98 96 86 90 92 83 85 83 84 +95 94 97 103 101 100 106 103 103 105 105 103 +107 106 116 107 103 106 106 108 100 104 103 100 +105 99 102 103 103 107 107 109 108 106 107 106 +111 115 116 117 117 120 124 120 119 116 123 125 +123 125 126 124 122 123 127 132 126 127 128 129 +127 126 123 126 128 123 129 125 127 127 131 127 +130 126 127 126 129 126 130 129 128 130 128 132 +129 131 133 129 129 130 133 131 129 130 131 124 +126 129 129 130 127 130 127 131 130 133 131 129 +125 128 123 129 126 129 129 132 130 127 135 133 +132 134 140 142 130 128 130 131 128 125 125 123 +126 124 126 125 129 119 120 125 124 124 122 125 +124 126 129 128 126 130 127 125 126 125 126 128 +123 123 124 127 127 126 126 125 127 127 127 132 +123 123 127 129 123 126 126 127 137 132 131 130 +133 132 131 130 133 131 133 131 128 132 128 137 +125 126 124 128 127 127 128 127 126 128 126 127 +127 124 128 122 127 126 127 126 122 127 127 123 +128 131 129 125 126 127 123 126 124 125 129 131 +128 125 123 125 125 123 121 124 118 120 122 124 +127 121 127 121 115 119 107 110 112 110 112 105 +108 102 105 105 110 114 118 121 121 126 132 138 +136 146 145 147 153 154 157 159 158 164 160 158 +161 161 160 163 159 163 161 161 160 162 156 159 +156 158 158 158 159 156 156 156 157 160 159 159 +159 159 152 154 154 157 158 152 154 159 157 159 +156 156 155 153 152 156 150 155 156 152 156 154 +154 151 154 151 153 153 148 152 150 149 150 151 +147 146 147 149 143 143 146 155 172 189 198 205 +209 213 214 215 218 218 220 219 221 223 221 216 +207 200 192 164 142 108 103 103 104 112 110 114 +115 114 108 110 125 125 124 121 123 123 119 121 +125 123 126 123 122 121 119 127 115 116 122 126 +122 119 120 126 122 126 125 130 129 133 134 136 +138 133 126 113 94 70 55 43 47 44 46 53 +47 46 39 43 40 44 46 45 46 45 50 50 +47 44 49 57 51 51 47 48 +158 158 157 156 +161 156 157 156 156 156 156 161 159 158 157 157 +158 160 155 161 159 158 159 156 157 160 163 164 +165 164 169 167 167 171 167 163 165 164 165 162 +159 154 157 158 160 156 157 161 157 162 161 160 +158 156 153 152 148 141 138 129 123 118 111 102 +95 85 88 82 85 83 85 95 95 98 95 100 +100 102 100 105 102 99 106 102 105 107 103 103 +105 109 104 100 105 107 98 104 102 102 99 105 +105 103 108 108 107 108 110 109 114 117 113 116 +115 121 124 120 123 119 117 123 121 123 127 121 +124 124 126 127 127 127 124 124 119 128 124 126 +133 128 128 124 127 127 128 128 127 126 126 127 +131 127 129 130 133 130 130 133 124 128 134 127 +131 130 130 127 127 131 131 134 128 130 128 129 +129 126 133 136 133 127 130 130 130 127 127 130 +129 129 131 130 128 132 133 132 132 136 140 137 +138 132 129 131 128 124 124 123 124 127 125 125 +123 124 120 121 123 120 125 122 123 124 127 128 +129 128 128 127 124 122 126 123 125 123 124 125 +122 124 128 129 124 125 128 124 128 129 128 129 +128 126 126 127 127 134 131 128 130 137 131 128 +130 132 132 134 131 136 131 128 129 132 129 127 +129 128 123 126 129 127 126 128 127 125 130 126 +122 125 125 126 126 127 125 123 124 126 124 124 +126 129 126 124 123 122 129 131 129 125 125 124 +127 123 122 122 123 123 125 117 120 124 121 113 +122 118 116 110 114 111 110 108 105 106 107 107 +114 110 120 122 128 129 135 135 141 143 145 151 +154 154 153 160 159 158 159 160 166 161 162 160 +161 166 159 159 160 159 157 162 160 158 156 159 +159 160 154 154 161 157 156 159 157 157 156 158 +155 154 156 153 157 159 156 157 156 157 156 156 +156 155 153 153 152 157 156 155 152 153 150 151 +152 151 150 151 153 154 149 150 147 146 149 145 +144 147 143 143 162 176 194 202 207 210 215 216 +216 218 218 218 220 221 221 219 215 207 197 180 +152 125 100 102 107 106 108 108 110 116 116 115 +116 120 121 119 119 118 123 121 121 123 118 121 +120 121 122 120 120 123 119 124 125 126 123 130 +122 127 127 135 131 132 136 136 132 115 112 88 +73 53 42 38 41 39 48 48 46 48 42 44 +43 46 44 47 45 48 45 47 49 52 57 54 +47 53 56 76 +157 157 158 160 157 156 156 158 +159 157 159 157 160 157 159 154 156 160 157 162 +159 155 159 160 158 166 163 168 169 168 170 169 +169 167 165 169 169 165 165 160 161 159 161 159 +159 154 156 159 161 164 161 165 159 164 156 155 +146 142 141 130 127 114 111 102 103 90 89 87 +82 86 92 93 96 103 96 97 97 104 106 106 +102 102 108 103 103 105 105 105 107 106 101 105 +104 103 101 106 106 105 102 100 103 107 106 109 +105 110 103 109 114 112 114 116 115 116 118 119 +123 120 120 124 122 121 123 125 123 126 129 125 +126 127 127 127 125 130 121 131 126 124 129 122 +128 126 129 125 126 125 131 130 134 124 128 127 +130 126 127 131 128 125 130 128 130 128 131 132 +129 133 128 131 130 129 130 128 130 128 133 126 +132 123 133 130 128 123 125 129 128 126 123 128 +127 128 129 136 132 136 131 133 134 131 133 131 +127 125 123 126 124 128 125 123 120 122 120 121 +122 123 124 124 122 118 123 126 129 132 127 125 +125 124 125 123 122 127 124 123 122 121 124 124 +129 129 124 123 130 128 128 133 132 130 126 126 +130 128 129 127 126 128 129 131 129 128 129 132 +135 135 135 128 130 126 122 122 128 129 127 126 +125 128 132 129 129 128 129 127 128 129 125 127 +126 130 124 125 123 125 127 124 124 127 124 124 +127 121 127 129 129 126 132 128 126 124 125 123 +125 127 119 113 118 118 123 114 122 118 110 108 +113 112 112 111 111 108 108 108 110 114 115 118 +125 127 131 132 138 146 147 145 152 150 156 157 +155 156 158 158 159 160 163 161 161 159 158 162 +161 162 158 159 158 158 159 161 160 161 156 158 +159 160 161 157 155 160 160 158 158 158 154 155 +155 156 154 157 156 153 154 151 157 156 157 158 +152 158 155 155 156 152 152 152 151 154 149 153 +151 149 148 148 147 146 145 149 148 142 148 144 +149 168 186 199 204 208 212 214 215 218 217 219 +220 220 221 220 217 212 203 193 170 142 109 103 +104 106 107 111 113 113 116 116 114 115 116 121 +124 121 121 125 124 120 120 125 123 123 120 118 +123 117 119 122 119 124 124 133 124 123 131 131 +128 134 138 132 130 108 89 70 50 48 47 39 +38 43 45 45 43 47 51 53 41 42 42 57 +50 49 53 50 52 47 53 50 46 50 50 62 +156 156 157 159 158 160 156 159 158 158 159 158 +158 157 163 158 159 160 158 158 158 165 161 162 +162 165 166 166 167 164 168 166 167 166 165 165 +163 166 165 163 159 157 160 157 159 154 158 159 +158 162 162 164 162 161 157 158 144 141 137 128 +131 116 113 101 95 89 92 90 87 84 90 92 +93 99 100 100 96 104 101 106 107 107 104 104 +113 103 99 102 105 108 103 102 103 102 102 100 +103 105 102 100 101 107 101 110 105 109 106 106 +109 111 112 116 115 118 117 119 121 121 122 123 +121 127 126 124 127 121 121 123 128 126 125 125 +127 126 126 126 127 133 131 124 130 127 124 125 +126 127 127 125 129 128 129 127 128 130 130 126 +130 127 128 129 127 128 130 135 127 127 129 128 +129 133 131 126 129 128 127 134 128 131 132 128 +130 125 124 135 129 127 124 130 128 134 132 137 +134 133 129 132 129 134 130 136 131 126 128 127 +124 119 123 124 122 120 121 123 123 125 119 123 +125 128 123 123 128 126 130 128 128 130 128 125 +126 127 127 125 129 122 124 121 126 128 124 125 +129 123 132 129 133 130 128 128 130 126 131 129 +130 129 130 138 134 133 127 132 129 129 130 125 +129 127 124 124 128 131 126 126 127 127 131 128 +128 127 127 130 129 131 126 123 120 127 129 121 +126 128 123 123 126 127 125 126 130 123 130 131 +125 129 128 129 130 128 132 131 121 121 122 115 +117 120 117 118 119 116 117 114 113 108 113 108 +108 109 108 104 107 114 116 119 123 132 133 137 +136 139 147 147 151 151 152 156 158 157 158 156 +159 159 164 160 161 157 161 157 158 158 154 160 +161 159 154 159 162 157 158 158 159 159 157 157 +157 155 157 157 156 159 155 153 153 156 154 156 +159 156 153 154 152 151 152 155 154 155 160 157 +152 158 156 154 150 152 150 152 149 149 151 150 +148 148 149 143 148 142 143 143 146 157 178 195 +198 207 210 212 215 217 216 218 220 219 221 221 +220 215 210 203 186 159 127 102 98 105 114 109 +113 113 119 118 113 115 117 116 115 116 124 123 +116 124 115 124 119 122 122 120 119 127 120 128 +120 123 128 125 128 131 134 130 132 131 130 122 +112 94 74 47 43 40 44 45 46 49 48 45 +49 45 40 45 47 54 41 46 46 48 52 51 +50 53 49 46 52 56 57 56 +158 158 161 157 +156 158 157 157 160 159 156 161 165 160 157 158 +160 160 160 161 159 159 163 164 164 166 165 165 +167 167 168 171 169 169 168 168 166 165 159 159 +160 157 159 158 155 154 161 158 157 164 161 161 +165 159 152 156 149 143 138 133 125 113 113 102 +97 94 91 86 86 87 94 95 96 97 97 103 +98 99 101 105 110 107 112 110 109 111 103 100 +106 108 108 99 101 100 102 107 103 108 102 103 +104 107 106 107 106 108 109 110 111 115 115 117 +117 122 119 125 124 123 123 121 123 122 118 124 +123 125 124 124 123 130 123 127 128 129 126 128 +126 123 129 126 127 129 125 127 131 124 123 125 +125 130 130 127 126 127 133 129 131 128 126 130 +129 129 130 133 131 126 133 132 132 131 131 126 +130 127 132 129 126 130 130 130 129 131 126 130 +128 128 125 130 131 130 132 128 132 130 129 131 +128 133 128 134 130 129 128 126 124 125 122 127 +121 116 123 123 122 122 121 126 121 124 125 125 +121 126 127 126 126 122 126 126 123 125 125 125 +128 120 122 125 126 123 124 128 127 123 132 129 +132 127 132 126 130 124 131 126 128 131 127 130 +132 132 126 129 132 135 126 126 130 128 125 126 +130 127 124 123 121 125 128 127 127 127 124 126 +130 125 127 127 123 126 131 125 127 127 122 126 +128 123 130 127 127 124 130 125 127 129 129 128 +126 127 128 125 122 121 121 112 117 120 116 119 +117 118 118 114 112 107 112 112 112 108 106 108 +113 109 124 124 126 136 134 135 137 137 143 149 +149 153 152 157 160 157 155 156 157 159 164 161 +157 162 160 158 160 154 152 157 161 157 155 158 +160 160 160 155 155 155 157 156 161 156 158 157 +154 155 151 154 157 154 155 156 158 158 154 154 +152 156 159 157 159 155 155 152 153 156 158 151 +152 154 155 154 148 148 152 152 149 147 146 143 +148 146 146 139 144 147 166 183 198 203 206 211 +214 215 217 218 222 222 221 220 221 220 215 208 +198 173 151 118 107 106 106 106 104 110 110 113 +115 116 117 122 117 119 121 124 124 124 117 120 +121 118 119 123 121 125 123 124 121 126 124 126 +129 125 130 134 138 129 122 108 91 72 53 40 +42 39 42 49 49 42 45 44 49 47 45 46 +53 45 48 52 52 49 50 48 52 46 49 45 +52 53 56 50 +156 156 156 155 159 159 155 154 +158 157 157 160 158 158 156 159 159 159 162 160 +157 158 161 165 168 164 170 168 168 169 166 170 +169 166 165 166 168 164 163 162 158 159 157 158 +156 159 156 159 159 163 159 160 159 163 156 152 +153 146 141 135 132 120 108 105 99 92 89 86 +85 91 91 99 98 95 93 97 101 102 100 102 +103 103 110 104 108 109 109 107 108 107 110 100 +99 100 101 99 104 103 97 100 102 103 103 106 +105 106 109 113 117 113 112 112 116 117 116 121 +122 118 120 120 121 126 120 118 119 126 123 124 +125 126 125 125 129 128 123 122 127 130 131 125 +128 131 126 121 130 123 123 125 126 123 131 127 +125 130 131 126 127 131 125 131 130 129 129 128 +130 130 132 125 132 127 131 130 134 128 132 129 +130 127 130 128 132 138 129 133 130 126 125 128 +129 132 128 129 127 134 131 131 135 135 127 125 +130 126 134 134 128 124 123 124 127 119 120 124 +122 123 122 121 125 124 120 109 124 125 126 127 +124 124 119 123 124 126 126 126 125 128 123 124 +124 125 123 127 124 122 127 127 131 129 129 126 +130 128 130 128 127 126 125 133 132 135 130 129 +132 131 128 125 128 126 124 125 125 126 126 126 +119 130 128 128 127 126 125 124 127 126 130 126 +121 125 126 126 123 126 123 126 125 124 125 122 +128 127 125 124 127 127 130 124 124 127 126 127 +121 124 119 124 120 119 120 119 115 115 104 116 +112 109 109 111 108 105 107 105 106 106 115 120 +128 122 130 133 135 139 142 139 145 151 150 152 +155 156 157 158 159 159 160 157 161 159 162 160 +160 156 157 158 160 157 157 158 160 160 158 160 +158 155 161 158 157 155 146 158 158 158 158 156 +156 156 156 158 156 159 155 153 157 155 156 153 +156 160 156 156 156 143 157 154 154 153 155 155 +154 153 153 149 153 151 151 149 147 147 144 130 +141 140 150 160 181 189 198 190 203 209 208 212 +216 216 219 218 222 222 221 218 209 204 187 160 +132 116 112 116 106 118 112 113 114 118 121 117 +117 116 118 119 117 121 123 121 122 121 119 124 +124 129 118 124 123 124 127 132 128 129 133 132 +134 125 120 110 86 67 51 49 52 40 41 43 +56 52 46 41 47 46 42 43 47 49 48 51 +55 53 51 51 50 51 46 50 51 60 56 56 +155 155 158 160 157 157 160 153 160 158 155 158 +157 161 163 160 161 161 164 161 160 163 164 164 +167 167 170 169 170 170 170 171 170 166 168 167 +168 164 159 160 160 157 160 159 160 157 157 157 +160 163 160 163 164 156 155 151 148 141 136 132 +124 118 111 101 95 88 93 88 93 88 95 96 +92 95 97 104 98 97 100 103 105 105 104 103 +104 107 104 106 106 110 100 102 103 102 102 99 +98 105 102 105 105 108 106 105 106 111 112 107 +111 110 114 117 117 117 118 118 123 123 120 128 +124 126 119 120 124 126 124 125 128 126 128 126 +127 133 123 127 127 129 123 129 129 127 125 134 +125 126 126 128 130 127 128 129 126 130 127 129 +131 128 127 133 130 131 130 132 131 127 132 130 +132 131 129 131 132 132 127 125 127 127 131 132 +131 134 127 126 129 127 127 134 128 130 131 130 +133 135 129 128 132 128 126 126 127 126 124 127 +124 124 123 120 126 122 124 122 122 117 117 119 +124 123 120 121 123 126 125 124 127 125 126 125 +129 124 124 124 122 124 127 120 124 122 125 119 +125 125 123 129 130 126 127 126 131 132 129 126 +128 125 128 127 134 132 131 130 129 129 127 131 +127 128 130 123 129 129 128 125 124 130 132 129 +126 128 126 127 130 127 126 127 122 127 128 129 +129 129 126 124 124 129 125 126 124 128 125 125 +129 127 129 124 121 127 126 126 126 124 121 118 +122 121 121 114 117 109 113 110 107 109 114 108 +103 104 107 110 109 114 116 123 124 128 131 136 +136 137 143 142 145 148 150 154 153 153 155 156 +159 160 157 162 160 158 160 160 155 159 158 158 +157 157 156 160 161 159 161 159 159 158 156 161 +159 158 157 155 155 158 154 155 157 156 153 158 +156 156 156 151 157 156 153 157 158 156 155 155 +155 156 156 156 154 154 153 152 152 150 153 151 +151 150 149 149 149 141 143 141 138 141 144 162 +178 192 202 208 211 214 216 216 220 220 223 222 +221 222 221 216 212 201 184 154 127 110 106 105 +104 109 107 111 117 114 113 116 115 115 120 116 +121 121 124 124 125 124 120 125 122 124 126 123 +124 126 129 127 135 131 131 131 120 107 94 70 +56 51 38 37 47 49 39 40 53 53 51 52 +54 51 42 46 57 59 54 51 53 49 49 47 +49 48 48 51 50 58 55 55 +160 160 160 157 +156 157 156 156 161 156 162 158 158 159 159 162 +162 161 159 162 161 164 165 162 168 169 166 166 +167 166 167 166 167 165 164 167 168 166 160 155 +160 162 159 158 157 158 157 159 160 163 159 163 +161 158 153 152 148 141 133 131 123 115 109 102 +94 96 81 85 91 92 97 90 91 102 98 99 +96 99 105 103 102 106 106 105 104 105 107 104 +98 103 103 99 103 103 102 99 101 96 105 101 +102 102 104 102 111 111 109 114 107 115 116 114 +112 118 114 117 123 114 122 120 125 124 123 121 +117 126 127 121 124 124 126 124 128 128 130 130 +127 129 127 126 130 127 130 129 124 125 130 125 +127 125 127 130 125 124 126 129 128 128 133 130 +133 131 133 127 126 129 125 128 128 131 130 132 +134 124 132 127 125 132 130 128 130 131 129 131 +126 129 130 130 128 132 130 128 133 134 129 137 +134 130 129 129 124 125 124 125 124 124 121 122 +124 121 126 120 123 118 117 123 122 119 124 119 +124 124 124 123 123 128 132 127 123 121 121 125 +120 121 126 125 122 125 126 125 122 124 126 131 +130 129 127 126 129 129 132 129 130 127 128 128 +128 135 132 130 132 130 131 129 127 128 132 128 +123 127 126 130 129 130 129 131 125 124 127 128 +129 126 127 124 121 127 126 126 123 129 128 121 +123 125 124 124 129 129 124 130 129 122 126 125 +124 126 126 129 123 123 124 124 124 120 117 114 +121 114 112 111 114 106 116 109 110 102 108 111 +112 117 116 119 124 124 129 130 136 138 141 145 +145 151 152 154 151 157 156 154 159 153 157 160 +155 161 164 160 159 157 159 157 159 156 156 158 +158 159 155 158 160 155 158 159 157 157 155 155 +157 156 159 156 154 154 155 156 156 158 155 161 +155 154 156 153 154 157 154 153 153 156 156 154 +154 153 151 154 153 149 153 151 152 152 145 147 +150 146 143 141 141 142 141 151 171 186 201 205 +209 213 215 217 217 218 222 223 221 222 222 220 +213 207 192 176 141 114 105 105 103 105 106 110 +105 115 113 111 115 118 117 118 119 122 121 121 +122 120 121 120 123 128 128 126 124 128 130 130 +133 135 130 123 113 98 75 57 46 43 40 38 +42 44 42 43 45 50 55 60 50 52 52 48 +56 53 45 48 51 58 49 49 53 48 51 55 +59 52 51 56 +159 159 155 158 160 156 155 158 +158 157 159 163 165 161 162 159 161 157 160 167 +163 165 165 166 169 166 168 168 168 168 166 167 +166 167 164 168 166 163 163 161 158 156 160 159 +154 158 159 159 157 160 165 162 162 157 152 154 +145 142 136 134 125 114 109 99 95 92 86 89 +89 88 88 93 97 98 99 101 98 103 104 111 +104 104 103 104 103 105 105 105 103 103 106 103 +108 104 102 103 102 102 100 95 98 105 104 103 +107 107 110 112 110 116 114 117 118 118 116 118 +122 122 121 117 123 124 119 123 124 128 121 123 +124 123 126 123 122 132 127 127 128 124 127 125 +129 132 127 125 129 127 127 133 123 124 125 127 +124 121 125 129 132 133 131 129 131 130 126 127 +130 126 124 124 127 131 126 133 130 127 130 127 +129 130 128 126 130 127 127 129 129 126 129 128 +124 126 127 133 129 135 133 131 129 125 128 127 +123 130 127 126 126 123 121 124 123 123 127 122 +123 121 120 122 123 120 122 123 122 124 127 122 +123 129 125 131 122 118 123 120 119 123 122 117 +119 122 119 128 123 124 125 129 129 126 129 132 +128 123 131 134 129 130 132 128 132 133 132 133 +134 132 128 126 126 128 129 128 131 129 127 129 +128 128 124 133 127 124 124 127 126 126 123 126 +123 131 125 126 124 129 128 125 120 127 122 128 +124 129 123 126 127 127 129 126 129 125 123 125 +124 120 120 118 115 123 118 113 119 114 110 110 +113 114 107 120 112 104 110 110 111 115 116 120 +119 125 128 134 136 137 139 144 144 148 150 152 +149 151 154 157 155 157 156 160 158 157 157 159 +158 155 157 156 157 158 155 158 157 157 156 159 +157 156 153 155 155 156 151 159 160 159 156 156 +158 151 158 157 156 157 155 158 155 155 151 156 +155 156 156 151 157 157 158 156 154 157 152 150 +152 154 156 148 154 148 146 148 145 150 142 143 +143 144 142 144 161 180 193 202 208 213 213 217 +222 221 223 221 223 222 223 222 219 209 200 189 +165 134 105 103 107 98 111 107 112 113 114 113 +115 114 116 118 123 120 124 125 123 118 122 119 +123 121 127 133 127 133 128 134 139 131 125 116 +97 70 52 45 43 43 40 44 43 37 43 47 +48 44 54 58 48 54 67 52 51 52 51 49 +55 51 51 49 50 48 54 55 52 49 48 45 +159 159 157 159 156 160 160 161 158 158 157 164 +161 162 162 159 167 162 164 162 163 166 168 167 +166 167 166 166 167 165 168 169 164 169 166 168 +161 162 161 157 155 158 155 158 157 161 159 153 +161 158 160 160 159 160 155 152 147 139 135 130 +131 117 106 108 96 88 89 85 85 93 87 93 +101 97 99 103 100 99 98 101 99 107 104 100 +103 102 103 102 103 101 100 104 104 101 98 104 +100 104 107 105 107 104 106 102 109 108 110 111 +115 111 109 115 118 119 116 117 118 122 121 118 +120 120 117 121 123 126 121 125 120 119 125 123 +125 128 127 127 127 126 124 130 126 134 127 132 +129 127 124 126 123 125 124 130 122 121 127 130 +132 124 127 130 122 129 124 126 129 131 129 127 +130 129 125 125 122 128 125 130 123 124 132 126 +132 128 128 127 127 130 129 131 125 124 130 127 +125 128 129 132 128 125 130 125 120 125 126 129 +125 125 127 122 128 125 124 128 123 122 122 121 +125 125 126 120 125 134 128 123 125 124 126 126 +124 122 119 123 124 119 121 119 119 120 125 125 +122 118 121 127 129 128 130 127 130 130 127 131 +131 133 128 129 131 133 131 130 133 126 127 127 +129 129 126 123 123 128 125 126 128 129 125 129 +124 128 126 127 125 128 126 123 123 125 123 124 +122 124 127 131 125 126 127 124 124 129 124 124 +127 124 127 126 130 128 122 120 125 117 125 119 +117 122 117 114 118 121 113 112 114 118 113 111 +109 103 106 109 110 112 118 120 121 123 132 130 +137 140 138 139 143 147 147 153 155 153 154 155 +155 160 152 156 157 154 161 158 160 156 157 157 +157 153 158 156 159 156 159 158 158 157 155 156 +155 156 152 158 156 159 156 153 154 155 161 159 +156 156 155 156 155 158 152 155 155 156 155 154 +151 155 156 153 155 156 153 153 149 153 149 149 +149 151 150 150 151 147 143 146 142 146 144 141 +148 168 184 199 204 212 213 215 218 219 222 220 +221 222 222 222 221 212 205 200 178 150 123 105 +99 106 104 100 107 113 114 116 114 113 113 118 +119 121 118 124 124 124 129 124 127 121 128 135 +125 136 136 133 125 121 106 91 74 59 41 42 +42 40 41 41 47 45 46 53 53 50 56 58 +56 55 56 52 51 46 49 54 49 50 48 45 +51 47 56 55 53 47 49 43 +158 158 159 158 +159 157 156 159 162 170 170 164 158 162 161 162 +161 166 164 164 170 166 169 168 165 170 167 169 +167 165 166 167 166 164 161 163 163 160 157 160 +154 155 158 159 158 158 160 161 157 160 161 160 +161 159 155 148 144 139 134 132 125 119 107 101 +93 89 82 83 82 82 91 88 101 89 91 100 +99 105 103 102 105 103 101 99 102 98 103 100 +100 106 102 105 102 101 99 104 96 101 105 107 +104 105 105 106 110 107 107 114 113 111 111 114 +119 117 113 117 123 123 115 120 121 112 121 122 +122 129 123 119 121 121 125 130 133 122 129 123 +128 124 122 127 131 132 126 123 124 125 128 125 +121 125 127 127 120 122 124 125 125 124 127 128 +127 127 126 126 130 129 124 123 127 123 123 127 +128 127 128 130 135 132 135 134 136 140 136 133 +129 130 129 127 129 132 126 126 131 129 127 129 +127 132 127 125 127 124 126 124 126 127 124 123 +125 119 123 123 123 119 118 126 120 130 119 122 +125 124 124 124 126 125 126 122 118 117 122 116 +122 121 122 118 120 120 124 123 126 122 124 128 +128 128 128 128 126 130 126 128 131 129 131 128 +132 132 130 128 133 133 129 132 125 129 126 127 +126 129 129 128 127 130 128 131 129 129 127 125 +126 127 126 126 121 127 126 120 124 122 124 128 +132 129 125 124 123 128 128 124 125 128 126 123 +128 126 122 123 122 120 126 122 120 117 117 114 +124 119 122 114 113 115 111 111 111 108 109 104 +110 107 119 114 124 127 128 133 135 138 140 141 +140 146 148 148 149 150 153 155 154 156 153 154 +158 157 158 154 155 155 155 160 154 154 157 155 +156 156 160 157 160 157 156 154 157 155 153 155 +159 162 157 156 152 153 155 156 159 155 157 155 +156 154 155 155 157 157 154 156 154 156 153 152 +158 155 154 149 149 149 151 150 152 149 145 146 +151 146 144 146 139 145 140 142 141 155 173 190 +200 209 212 214 218 219 219 220 221 222 223 224 +222 220 211 203 191 168 138 113 95 96 103 102 +111 107 111 110 118 115 117 113 116 124 124 124 +120 124 122 128 123 127 129 132 131 133 133 129 +118 105 91 66 56 43 39 41 44 42 44 41 +46 44 45 46 49 47 44 49 50 51 54 52 +52 54 46 58 51 58 51 49 49 46 52 52 +50 43 44 43 +159 159 160 157 163 158 157 159 +161 162 158 162 158 158 162 164 163 164 163 166 +165 168 169 167 168 168 165 170 168 167 162 165 +163 163 163 163 161 162 161 162 156 158 156 158 +162 161 160 158 162 161 161 160 162 156 152 151 +143 138 140 131 123 117 112 99 92 83 80 82 +87 82 87 91 90 94 93 99 98 105 99 103 +108 104 101 104 99 98 102 100 100 106 100 101 +103 101 102 103 103 105 103 103 99 100 104 102 +105 109 108 111 111 116 115 114 113 118 118 115 +123 120 120 119 118 118 117 121 120 124 125 129 +121 128 123 124 123 124 127 125 122 122 126 124 +126 130 126 128 124 124 122 124 121 124 124 124 +126 128 123 131 125 126 128 128 131 127 126 127 +131 130 129 124 126 124 125 126 129 123 129 129 +130 126 126 133 127 128 128 129 132 128 125 131 +123 128 127 126 132 130 127 125 128 126 127 128 +124 125 125 125 125 125 124 121 123 126 123 123 +120 117 122 126 125 120 118 120 123 125 126 124 +127 121 122 118 122 118 119 119 120 117 118 118 +123 121 118 121 123 127 125 125 124 125 125 130 +125 130 125 129 128 125 129 133 135 131 128 129 +132 128 130 131 126 126 128 123 129 128 128 125 +129 127 127 130 127 132 124 125 126 125 125 129 +123 125 125 126 126 123 123 127 125 125 125 128 +128 129 125 120 124 127 125 128 128 127 124 125 +125 121 118 121 121 117 118 122 125 117 127 119 +116 115 109 110 105 107 104 104 107 106 112 114 +124 126 126 134 136 136 141 143 143 146 147 151 +150 149 152 152 154 153 155 155 155 159 159 159 +155 160 156 157 156 155 159 157 154 156 157 156 +153 155 160 153 153 157 154 156 156 158 155 158 +151 151 153 155 153 156 158 162 156 156 155 156 +153 156 152 157 151 151 152 155 157 152 153 151 +150 149 153 147 154 149 145 150 146 146 143 143 +141 143 138 142 140 145 162 185 196 205 210 212 +215 219 220 222 220 222 222 223 224 222 216 209 +203 185 156 125 101 98 97 99 106 104 110 110 +111 111 114 115 113 119 118 118 117 120 123 126 +120 125 132 128 135 134 127 117 107 92 75 55 +45 43 48 49 44 40 41 42 42 39 46 53 +48 52 50 53 55 54 61 57 56 60 53 56 +53 52 50 55 52 46 44 49 47 47 51 52 +164 164 159 161 161 159 158 159 156 160 160 159 +164 161 157 164 160 166 167 167 168 169 168 166 +162 163 164 164 164 161 158 163 161 163 165 159 +159 161 159 159 157 157 158 157 157 162 161 161 +162 158 162 161 158 154 155 153 145 145 137 135 +125 118 108 96 87 90 87 81 83 82 86 92 +98 98 99 99 101 99 102 101 101 103 108 111 +100 101 105 101 100 102 100 103 99 105 104 103 +100 105 105 102 97 100 103 104 103 112 113 108 +112 112 117 116 116 117 117 116 120 123 117 117 +122 117 114 122 118 118 124 124 124 123 124 123 +127 124 129 124 124 122 125 127 128 128 126 121 +129 124 126 121 121 119 124 129 123 132 126 132 +128 130 128 130 135 129 132 125 129 129 129 125 +122 122 128 132 127 135 125 127 128 126 131 131 +131 131 134 126 128 126 131 128 125 128 128 131 +131 130 127 123 126 130 127 128 125 127 128 125 +123 126 126 123 132 121 121 121 119 120 123 130 +121 122 123 121 117 122 121 122 123 122 117 116 +116 123 117 120 119 121 116 118 122 118 123 122 +126 121 121 125 125 124 128 130 125 124 122 132 +130 130 126 126 133 130 131 130 128 127 127 126 +125 126 125 127 127 122 128 124 126 130 130 131 +125 129 125 126 129 128 130 128 128 123 125 125 +126 127 123 123 123 122 126 127 128 125 126 128 +123 129 125 126 126 124 122 122 126 124 122 120 +119 115 118 114 115 115 116 115 115 117 111 110 +112 105 108 109 109 114 118 118 123 125 131 131 +133 137 141 142 148 147 146 151 147 150 152 151 +155 153 153 152 155 156 155 157 155 162 159 159 +156 154 157 156 156 155 155 155 155 158 160 153 +156 155 157 153 155 155 155 154 154 152 149 152 +155 156 159 156 159 156 159 154 157 152 159 155 +153 159 151 153 149 153 150 155 147 148 146 149 +149 145 147 149 145 147 149 142 140 140 140 141 +139 140 152 175 191 200 207 210 215 218 220 221 +222 221 222 224 224 222 221 214 208 197 176 143 +116 97 97 99 112 110 111 108 109 111 113 114 +118 120 120 112 118 120 124 124 131 128 127 131 +131 133 120 108 92 74 53 43 38 44 40 45 +49 44 48 48 44 40 46 58 64 67 74 68 +62 63 63 64 56 61 50 51 53 49 50 52 +50 46 49 44 44 46 46 57 +164 164 165 161 +163 161 157 162 160 161 163 161 160 162 160 166 +164 163 164 167 169 168 165 165 164 165 164 162 +160 160 163 165 164 167 165 157 161 163 155 161 +158 159 158 159 161 160 160 160 161 160 161 164 +158 156 154 153 146 141 135 127 122 116 104 99 +95 88 83 79 80 85 91 99 91 90 100 97 +106 106 103 102 104 99 102 98 100 105 102 106 +101 101 102 100 102 99 100 108 100 99 104 102 +107 101 105 105 105 109 116 111 115 115 117 114 +114 120 119 117 121 117 123 121 121 122 124 120 +120 121 121 120 126 129 118 120 120 122 127 126 +128 123 122 125 125 126 125 128 125 126 123 127 +121 125 122 126 124 122 120 131 127 128 124 126 +133 127 131 127 129 129 124 130 125 126 132 130 +124 129 126 128 125 128 126 127 131 131 127 127 +132 130 128 127 130 128 127 128 130 130 132 125 +125 127 128 130 126 127 125 129 127 125 124 127 +132 126 117 130 121 120 120 128 124 123 127 120 +117 114 120 119 121 120 121 121 123 121 120 123 +116 119 120 118 122 119 119 118 122 121 119 123 +125 129 126 127 125 125 126 131 129 129 129 132 +132 130 129 128 126 128 128 122 127 129 124 129 +123 122 125 124 126 130 128 128 125 127 128 124 +126 128 121 121 127 129 127 125 128 128 128 125 +125 127 128 121 126 124 122 126 127 126 129 124 +125 123 124 126 123 121 119 117 121 113 115 116 +116 118 118 114 110 117 113 112 114 116 108 109 +110 114 113 121 124 124 128 129 132 137 139 142 +142 143 147 149 148 147 148 153 152 157 152 153 +152 155 160 154 155 154 160 157 156 156 152 160 +158 158 153 159 156 157 151 154 154 156 152 156 +156 152 155 150 151 154 152 152 154 154 156 158 +157 156 156 154 156 154 152 155 157 153 153 151 +148 154 152 152 151 147 149 148 150 151 147 146 +143 146 145 142 143 143 142 140 141 139 146 165 +183 196 204 211 213 215 218 220 221 222 221 224 +224 224 221 217 209 201 192 162 132 107 99 101 +104 104 114 103 107 112 110 110 113 117 114 118 +120 122 123 120 128 132 129 131 132 121 111 91 +75 56 49 44 38 44 49 44 41 42 45 51 +45 40 44 48 50 51 55 53 48 55 49 51 +51 52 48 48 48 46 47 47 52 47 45 44 +46 44 47 50 +162 162 160 157 160 163 159 160 +158 159 163 164 161 160 166 163 165 167 169 170 +169 168 167 166 164 165 163 159 160 162 162 163 +160 159 160 160 156 162 161 159 161 159 158 160 +161 158 158 162 160 162 158 161 157 156 153 150 +146 138 136 126 121 115 102 100 94 88 83 80 +83 88 89 89 98 86 88 107 102 102 112 104 +102 107 100 98 98 100 101 101 101 103 101 99 +99 106 100 102 98 105 98 102 101 102 98 104 +102 103 107 110 111 111 114 114 117 122 120 120 +116 119 120 121 119 119 125 122 119 127 118 118 +121 123 120 122 123 119 122 129 126 126 128 124 +123 124 122 127 121 125 121 123 124 125 124 126 +122 127 124 125 130 127 123 129 130 127 123 131 +127 129 126 130 129 124 128 131 131 129 127 129 +129 133 124 129 128 127 125 127 127 131 131 126 +127 123 128 128 128 128 133 123 129 126 129 127 +127 126 122 129 130 128 125 126 124 124 121 128 +124 124 126 124 127 122 122 122 121 119 116 116 +117 120 121 116 116 120 117 120 121 119 120 120 +117 120 115 122 120 120 121 120 124 128 126 128 +123 130 127 130 133 132 131 126 126 129 129 130 +127 126 129 124 125 131 126 129 127 124 126 127 +126 122 127 128 129 128 129 127 126 124 124 125 +127 125 129 129 125 125 122 130 126 126 126 127 +126 122 128 126 134 126 122 129 125 124 119 126 +124 122 120 120 120 114 116 113 116 113 117 115 +110 120 116 110 110 108 108 114 109 112 114 125 +121 123 130 132 133 135 139 145 142 144 147 146 +147 147 149 151 152 153 157 153 155 155 157 154 +155 155 159 155 159 159 154 153 155 156 158 154 +155 152 157 153 155 157 154 153 156 156 156 152 +152 151 153 151 155 151 154 156 159 157 160 155 +156 153 153 154 155 152 153 153 150 151 152 149 +149 148 149 147 147 149 144 145 148 142 143 143 +144 142 140 138 139 138 141 152 174 191 203 208 +212 215 218 218 221 222 221 223 223 225 222 219 +213 205 197 174 149 120 100 97 105 109 107 108 +106 111 113 116 112 113 111 112 116 120 124 121 +124 131 131 125 123 112 96 80 53 54 46 43 +44 43 45 42 45 40 42 47 52 46 51 58 +53 53 51 57 51 59 52 49 46 52 55 54 +48 48 44 46 48 45 45 44 44 46 41 44 +159 159 157 161 161 159 157 160 155 157 159 162 +160 158 165 164 169 169 167 170 167 164 161 161 +159 162 165 157 156 160 159 160 158 157 158 156 +157 164 164 160 161 157 154 160 162 160 161 160 +158 160 162 162 159 157 154 150 142 139 135 126 +124 111 104 100 93 86 88 81 80 83 89 92 +88 98 100 105 103 101 99 104 101 99 107 102 +103 103 101 104 103 105 105 108 97 98 107 99 +100 97 105 101 103 103 103 105 105 105 109 112 +110 112 114 115 113 121 120 120 121 121 116 118 +120 119 122 129 122 123 126 120 124 127 121 125 +123 121 128 122 121 124 128 124 130 125 123 125 +123 129 124 129 128 123 127 126 127 127 127 129 +135 125 131 129 124 128 123 124 126 128 131 125 +122 128 130 130 128 124 128 130 131 130 127 131 +127 130 130 130 128 131 125 135 126 128 129 130 +129 130 129 124 126 126 124 131 125 124 126 124 +134 131 128 128 124 124 123 128 129 122 124 122 +124 120 125 121 119 120 119 115 119 117 121 122 +118 121 120 116 116 117 118 120 117 113 115 117 +120 119 119 124 124 125 127 124 128 128 126 126 +130 129 129 128 128 128 134 129 127 126 128 123 +122 126 127 127 126 124 128 127 119 124 127 129 +131 129 137 131 125 124 124 125 130 130 132 124 +125 125 127 124 124 127 124 127 124 124 128 126 +130 124 129 123 124 123 125 122 122 121 122 120 +117 113 121 117 114 114 114 119 115 113 120 114 +109 112 109 107 110 113 115 119 119 125 124 126 +135 136 132 142 143 145 143 146 146 151 148 150 +150 152 153 153 152 154 151 156 153 157 157 153 +158 159 153 153 155 155 156 155 152 154 154 156 +155 155 152 156 150 154 153 152 154 152 153 154 +153 154 153 156 154 157 154 153 155 155 157 155 +154 151 152 151 150 148 146 148 151 150 145 149 +149 144 150 145 141 144 145 140 143 140 138 141 +139 139 140 147 162 181 196 202 210 215 217 219 +219 220 222 222 222 223 223 223 218 212 202 186 +162 133 107 98 103 103 108 103 105 109 106 113 +110 113 107 115 114 120 122 124 132 131 129 118 +112 94 81 61 46 46 43 44 41 40 41 43 +46 42 44 52 48 46 54 53 54 57 59 60 +53 51 51 53 49 57 49 50 51 48 47 52 +50 43 47 45 45 45 40 48 +158 158 163 159 +162 163 164 161 163 160 159 162 161 163 166 167 +168 168 169 167 172 165 160 160 161 159 158 158 +155 157 159 157 158 157 157 153 158 160 161 158 +165 158 157 155 159 158 160 157 159 161 160 160 +161 162 154 149 145 142 149 128 128 120 108 97 +93 86 85 79 89 87 86 96 95 92 95 100 +98 100 103 105 100 102 106 103 106 108 105 105 +102 100 109 106 99 101 107 106 101 104 98 98 +107 105 101 104 108 109 107 111 108 112 114 113 +114 124 123 119 122 120 120 116 116 117 118 121 +124 123 120 125 122 127 124 122 123 120 125 119 +124 127 127 125 131 128 118 122 122 123 126 122 +124 120 130 132 129 130 131 127 129 125 128 127 +128 128 127 128 124 126 125 126 122 124 127 129 +127 125 127 128 125 128 126 126 129 129 125 132 +128 131 124 125 125 131 127 128 128 129 124 131 +125 128 127 130 125 124 128 126 134 129 128 128 +127 125 127 122 125 122 125 126 123 117 121 125 +124 124 121 120 123 114 122 116 117 113 119 120 +112 119 122 116 118 116 122 118 121 115 119 116 +124 122 121 121 123 124 125 122 124 128 126 127 +127 128 127 130 125 131 127 124 123 128 127 127 +128 127 129 128 123 127 127 131 129 129 128 133 +125 126 126 128 130 130 130 124 123 129 128 128 +123 124 122 128 126 123 127 124 129 125 126 130 +125 117 118 119 120 126 122 119 117 117 123 117 +114 115 113 115 113 112 110 111 109 108 109 106 +108 109 113 114 119 121 127 127 135 138 138 140 +139 144 143 147 145 148 147 149 148 148 150 153 +155 153 152 152 156 159 157 157 160 154 153 152 +154 155 153 153 154 154 155 159 151 156 153 155 +155 154 152 152 153 156 156 156 152 151 153 155 +150 149 159 156 156 155 151 150 154 151 151 150 +148 150 146 145 145 146 143 145 143 144 145 142 +145 144 145 141 139 140 139 144 139 140 140 141 +150 174 188 200 206 212 216 218 220 219 221 222 +220 222 224 222 222 215 205 197 179 147 120 99 +97 102 105 108 109 107 105 110 107 116 113 117 +118 121 121 125 129 137 119 113 94 72 63 44 +48 44 39 42 43 41 44 46 47 48 47 47 +56 55 53 59 57 68 62 61 58 57 49 52 +53 51 50 56 51 51 47 45 43 45 45 47 +51 45 40 44 +161 161 160 156 161 163 163 157 +159 161 159 160 162 164 167 167 173 169 169 174 +165 162 158 160 157 157 159 156 155 155 156 155 +154 153 156 154 155 160 160 160 164 158 160 160 +156 158 158 157 162 163 160 158 162 156 153 153 +148 144 133 128 124 116 105 97 95 93 83 79 +87 85 90 93 91 96 100 100 104 97 98 108 +105 98 101 103 106 99 101 105 101 101 106 111 +104 100 102 102 101 99 105 102 101 101 102 106 +108 106 107 109 110 113 113 119 117 115 120 116 +120 121 122 119 121 121 124 123 129 126 121 125 +128 128 122 126 125 123 123 128 122 124 125 124 +124 125 123 127 123 124 123 126 125 128 126 127 +125 126 128 125 132 128 126 125 129 128 125 127 +125 124 126 122 126 128 128 130 129 128 131 129 +128 128 130 132 130 126 131 133 126 127 129 129 +126 128 125 125 128 134 133 129 125 126 129 131 +125 122 126 122 132 129 130 130 130 126 126 123 +124 120 123 124 121 116 120 124 126 121 127 145 +143 128 128 139 138 124 121 125 123 116 117 120 +115 116 115 115 119 119 118 120 118 125 126 120 +118 119 119 122 122 135 125 128 123 125 124 126 +123 121 130 126 128 128 127 127 129 127 127 127 +123 129 128 128 129 130 129 129 128 131 125 127 +130 129 125 129 126 123 127 126 132 131 125 127 +128 125 124 123 125 128 125 124 129 123 122 121 +123 123 124 124 116 117 121 112 112 111 115 116 +116 116 112 114 109 106 108 107 111 113 112 113 +114 122 127 125 132 134 139 138 138 140 143 144 +143 145 147 144 148 150 151 150 151 150 151 150 +156 156 154 155 156 154 157 156 155 155 153 154 +151 153 157 151 151 157 150 152 155 152 152 152 +157 152 155 153 156 153 154 152 151 153 155 151 +155 152 152 152 151 148 153 147 151 148 148 142 +143 146 143 142 145 145 142 141 144 143 144 144 +143 143 141 143 141 139 143 141 145 157 181 196 +203 209 212 216 216 219 221 222 221 222 223 223 +222 218 210 205 192 167 134 106 97 105 102 107 +106 105 109 111 113 114 112 116 119 121 120 130 +129 122 107 97 78 57 49 43 43 41 41 46 +48 45 41 49 48 49 50 50 54 49 54 60 +57 52 58 56 52 61 55 58 53 51 49 51 +52 49 44 42 43 46 46 46 48 47 42 48 +161 161 158 157 161 159 156 161 159 159 160 161 +162 161 167 171 169 172 169 163 161 161 157 154 +152 154 155 154 154 156 158 154 158 155 160 154 +159 162 165 164 160 159 159 159 158 161 157 160 +162 161 161 166 160 159 152 152 149 143 136 129 +125 113 105 97 95 88 82 78 82 83 96 92 +93 96 96 98 98 101 99 100 104 103 106 101 +105 103 98 106 97 102 98 103 106 105 101 101 +107 100 102 103 106 103 103 108 114 109 107 109 +111 117 119 118 116 118 120 119 121 115 118 122 +118 122 127 123 122 121 123 120 119 123 127 123 +125 123 123 125 128 125 130 126 120 123 123 125 +122 128 127 122 126 128 129 129 128 128 137 127 +129 139 127 126 130 126 127 126 125 123 124 123 +132 127 133 132 131 127 126 129 130 129 128 133 +124 128 131 128 125 124 129 130 124 124 124 130 +129 132 131 130 127 123 125 125 121 126 126 122 +122 122 126 127 121 124 126 124 123 125 122 125 +129 122 131 147 139 143 170 176 153 143 168 179 +162 146 154 163 147 139 143 148 131 117 121 123 +118 115 118 121 117 122 124 123 124 119 118 122 +121 122 122 121 120 124 122 125 120 121 121 130 +126 125 128 122 127 128 127 128 127 127 127 129 +128 128 129 131 130 126 124 127 125 124 127 127 +131 123 129 130 129 127 125 125 129 126 129 125 +125 129 131 127 121 124 128 124 129 124 121 121 +117 119 119 113 115 118 110 117 118 113 111 110 +110 102 107 109 106 110 115 112 116 122 129 126 +133 139 138 140 138 142 146 150 143 147 152 144 +149 149 152 153 154 150 150 153 152 153 157 155 +157 155 155 154 154 154 155 151 154 155 154 155 +154 154 155 152 159 156 153 155 152 155 158 156 +153 155 156 151 151 155 157 155 153 153 153 151 +151 151 148 148 149 149 149 146 143 144 140 141 +147 148 144 142 143 141 142 145 140 140 143 143 +137 145 144 139 143 151 169 185 200 207 207 214 +217 220 221 220 222 222 223 223 223 221 215 207 +199 178 154 118 100 99 106 101 104 107 107 112 +120 112 111 114 121 129 125 126 119 102 94 80 +58 47 43 48 48 47 43 45 43 43 41 47 +49 44 49 48 52 53 49 57 57 57 62 59 +58 53 51 51 50 47 55 54 59 49 47 43 +44 44 47 51 47 45 49 44 +164 164 158 161 +163 158 162 160 158 157 161 162 163 164 167 165 +166 167 164 159 164 156 154 159 154 153 156 154 +153 149 151 150 154 154 152 155 158 164 161 164 +166 163 163 158 160 160 157 163 162 160 161 164 +159 156 154 154 150 143 141 132 123 116 105 102 +91 89 86 78 85 82 93 90 89 90 95 94 +100 99 105 100 103 101 109 104 104 108 103 108 +104 105 100 107 105 107 101 102 101 101 103 102 +102 106 103 109 116 109 111 109 117 116 116 114 +115 119 124 120 118 122 121 122 121 122 126 120 +122 124 122 121 121 124 121 123 120 128 125 129 +125 126 122 127 124 126 121 126 123 129 128 125 +128 130 129 130 125 127 125 129 127 132 128 127 +132 130 129 125 126 122 126 128 128 130 147 141 +130 131 129 128 128 133 130 139 129 120 126 126 +130 127 125 125 133 127 123 128 129 137 140 136 +129 121 122 126 128 124 122 123 127 126 127 126 +132 148 140 135 140 139 134 137 132 135 156 142 +145 177 183 157 156 177 186 169 162 178 177 165 +166 174 183 172 159 164 167 155 134 123 127 123 +114 119 118 117 117 115 119 121 119 118 122 122 +120 120 127 124 124 124 125 126 125 123 124 124 +121 127 125 128 125 128 133 129 132 127 127 132 +127 130 125 129 127 127 125 121 126 123 125 128 +124 127 127 124 125 123 129 125 127 125 127 122 +123 127 125 123 124 122 119 118 116 119 115 113 +116 111 110 117 119 113 110 110 113 109 106 106 +111 112 117 114 118 120 127 128 132 135 136 139 +140 143 142 143 143 146 148 144 144 150 149 147 +150 151 151 150 153 154 154 157 154 152 156 156 +155 150 155 153 153 151 153 151 150 153 152 150 +154 152 152 156 155 153 154 154 155 153 156 154 +151 152 155 153 149 154 152 151 148 149 149 147 +145 149 146 147 149 147 143 143 142 148 141 143 +142 142 142 150 137 143 144 144 144 142 141 140 +140 142 157 178 192 204 205 212 213 220 219 220 +221 223 224 224 223 222 219 212 206 192 171 141 +108 97 102 117 105 105 109 116 117 117 116 121 +124 124 124 115 104 87 82 63 47 45 43 43 +43 51 49 48 43 42 42 48 45 46 48 51 +52 53 59 58 55 58 55 59 52 55 55 55 +61 53 42 59 50 47 53 43 46 45 46 45 +51 44 44 47 +163 163 159 165 164 163 159 157 +158 159 161 164 163 162 170 170 168 170 161 160 +159 156 153 154 149 152 149 152 148 150 147 148 +151 152 154 156 159 163 162 162 165 161 161 163 +157 158 163 168 163 159 162 162 159 157 157 152 +146 144 146 130 131 123 107 102 97 90 89 81 +85 83 93 90 99 98 97 100 97 103 103 104 +103 108 104 101 108 109 113 107 101 100 103 101 +100 101 101 107 101 102 105 99 102 106 101 108 +113 106 111 110 111 113 113 114 118 119 121 121 +119 119 121 124 117 123 122 123 121 122 124 122 +126 126 124 125 123 126 125 129 124 124 128 126 +131 126 123 126 126 122 127 126 126 126 132 129 +129 124 124 126 128 128 130 130 132 126 127 129 +126 124 124 128 122 125 130 131 126 128 131 129 +131 133 135 129 133 125 130 129 127 125 123 124 +128 127 128 124 124 125 133 132 135 129 126 126 +126 125 121 130 132 140 124 129 153 155 136 143 +144 142 146 139 148 154 153 158 180 179 155 161 +183 175 164 167 180 177 159 174 189 189 173 176 +187 192 189 174 167 167 167 143 127 121 120 116 +113 115 117 113 118 117 112 116 122 120 123 122 +124 122 122 123 123 125 129 124 123 124 127 128 +123 127 129 130 130 131 129 132 130 130 129 129 +129 127 121 124 125 125 126 124 124 123 123 126 +127 123 133 120 126 125 125 124 123 122 123 123 +119 119 120 120 118 118 115 118 116 112 116 117 +113 112 111 110 107 106 112 103 107 112 113 117 +118 120 127 131 131 137 140 138 139 147 142 148 +145 144 144 141 143 145 148 148 148 151 148 150 +152 157 153 153 154 155 156 154 155 156 157 155 +151 152 149 155 151 155 155 150 154 152 152 153 +155 155 153 152 154 155 155 152 152 149 150 152 +149 154 151 149 147 152 147 143 147 147 146 145 +146 143 145 147 143 148 143 143 145 144 142 142 +143 139 143 144 145 140 141 140 141 143 150 168 +185 198 203 210 213 216 219 220 221 223 221 223 +223 223 220 218 209 203 188 160 125 110 108 125 +111 111 110 112 117 111 114 123 117 125 119 105 +88 66 47 45 46 44 46 42 44 49 48 48 +44 42 46 50 48 52 50 50 56 53 55 56 +57 64 62 59 58 56 55 50 51 50 44 47 +43 43 48 43 45 47 45 43 47 48 48 45 +163 163 160 160 161 160 158 163 159 162 162 162 +170 167 169 170 172 167 164 162 158 155 154 152 +149 151 147 150 148 150 151 147 147 148 153 157 +161 165 162 160 163 159 162 157 161 159 155 161 +164 163 163 162 161 157 155 151 152 137 138 131 +129 125 108 104 92 94 88 83 82 85 91 90 +94 95 91 93 95 103 99 101 102 108 106 104 +106 105 106 109 100 100 103 102 107 100 103 101 +101 105 101 103 104 104 106 107 112 111 113 114 +110 111 112 108 111 118 117 120 121 124 121 119 +121 124 124 123 123 128 124 122 122 125 124 124 +123 123 128 125 127 126 126 130 121 125 126 127 +124 125 127 127 129 131 129 126 128 129 132 131 +127 123 125 125 127 128 127 130 126 129 127 126 +127 128 125 131 124 127 131 127 129 129 134 131 +126 128 125 129 126 129 129 130 126 127 128 127 +125 127 127 125 129 136 132 125 131 140 122 137 +157 139 131 150 153 142 143 143 141 144 151 157 +160 158 167 173 168 153 171 184 174 160 178 178 +168 162 178 192 183 167 177 193 192 179 175 187 +196 194 182 163 162 159 160 142 125 122 121 113 +116 117 116 115 115 117 121 123 121 123 127 122 +126 123 123 121 127 121 126 125 125 130 131 130 +131 128 128 131 132 131 130 130 131 128 125 128 +129 131 121 126 127 128 127 128 127 125 130 129 +124 124 124 126 131 126 125 120 123 121 118 120 +120 120 119 117 113 111 112 111 115 110 114 114 +112 107 108 107 109 108 112 113 119 120 123 124 +128 138 136 143 143 143 143 143 144 141 145 142 +145 149 145 146 150 150 147 152 152 152 156 153 +156 154 154 157 154 154 154 157 152 149 152 153 +150 157 152 153 152 154 153 155 154 154 155 151 +154 154 158 152 152 149 151 150 150 149 152 150 +150 149 147 148 144 146 142 147 150 145 145 142 +144 145 144 141 146 141 142 143 145 137 146 139 +142 139 140 139 140 144 144 151 175 191 203 205 +209 214 217 220 221 222 222 221 224 222 223 220 +215 208 197 175 148 115 104 108 105 101 109 116 +113 114 123 124 121 114 109 97 77 59 44 39 +46 40 37 41 41 43 44 42 41 47 48 50 +50 50 58 60 51 51 59 54 54 61 57 58 +56 55 51 51 52 49 46 42 42 44 45 45 +48 47 40 46 44 47 48 53 +163 163 163 160 +163 160 161 158 154 157 159 164 168 169 170 168 +172 169 163 160 156 154 153 153 145 147 146 147 +140 146 146 149 145 151 155 154 161 162 161 159 +158 162 161 158 158 158 160 161 167 162 162 162 +160 155 155 153 150 140 138 133 128 120 111 100 +95 92 91 83 82 87 87 90 91 96 95 104 +98 98 100 100 100 101 100 102 104 102 104 106 +100 106 101 103 106 103 105 102 101 97 101 100 +101 104 106 106 111 111 115 112 114 112 112 112 +113 119 118 119 119 121 120 117 118 122 120 124 +122 127 125 124 124 129 124 122 127 125 126 128 +123 127 126 122 130 129 128 126 125 125 125 126 +124 126 126 128 125 128 133 130 132 126 127 129 +129 126 121 124 124 131 129 130 130 126 123 125 +128 128 131 131 131 131 127 127 127 128 132 126 +128 128 131 128 121 123 125 122 125 131 125 128 +131 148 145 141 150 139 144 154 150 146 156 149 +143 145 145 147 150 153 159 155 162 179 161 147 +166 170 178 172 173 185 180 162 174 184 182 176 +168 186 198 184 172 178 188 194 186 177 175 184 +191 194 187 174 159 157 144 122 118 119 114 119 +120 115 115 118 115 120 129 122 121 123 120 124 +125 124 122 126 127 127 131 131 132 130 126 129 +129 132 130 129 130 123 125 122 130 130 123 127 +126 126 129 124 125 126 126 129 124 123 126 125 +124 126 126 124 127 116 119 119 121 120 119 117 +117 110 114 112 113 111 114 112 108 108 107 105 +110 107 112 112 122 118 124 132 131 133 137 139 +141 142 145 147 146 140 145 143 142 151 143 144 +145 153 150 148 150 153 150 153 154 152 153 152 +154 156 154 154 152 146 149 153 152 151 152 152 +151 152 150 152 153 156 155 154 153 153 155 151 +149 149 150 153 153 148 149 151 148 148 150 146 +148 145 143 144 141 142 143 143 143 147 142 140 +137 140 143 142 146 141 139 141 143 144 141 139 +144 146 144 149 162 183 196 202 210 213 217 216 +218 220 221 223 224 224 224 222 218 213 203 188 +168 133 107 110 103 107 111 119 116 118 124 124 +117 105 92 76 50 43 37 41 43 45 49 42 +44 42 48 44 44 43 48 50 53 50 55 56 +53 51 54 72 58 63 57 57 55 63 62 56 +52 44 45 39 43 44 42 41 48 53 47 50 +54 49 47 44 +161 161 162 161 158 160 160 160 +159 162 165 164 169 171 174 165 168 167 161 157 +157 152 151 146 145 146 144 142 143 143 147 146 +143 150 153 157 160 163 163 167 162 166 158 160 +163 160 161 160 163 162 163 161 160 155 157 154 +148 144 135 131 127 121 108 98 88 94 81 83 +88 89 92 91 93 90 99 99 98 99 98 107 +102 106 105 101 104 106 104 99 102 101 101 99 +103 104 106 102 101 100 102 102 104 103 110 108 +112 110 113 111 114 115 109 115 116 120 121 124 +121 123 123 123 122 122 121 124 125 125 122 123 +132 126 124 120 124 121 125 126 122 125 131 122 +124 125 127 124 128 126 127 132 129 130 132 128 +128 131 129 127 127 137 130 128 130 129 127 125 +126 130 123 129 125 126 124 128 133 128 127 134 +141 128 130 130 127 128 135 128 125 128 124 124 +126 122 120 123 125 138 131 144 150 145 152 153 +146 149 155 146 158 160 153 146 146 150 142 146 +158 158 164 180 176 154 158 166 178 161 166 175 +179 180 175 181 186 171 169 175 185 186 178 174 +180 184 185 177 168 178 185 185 191 192 193 193 +189 187 171 155 145 141 128 117 117 112 114 122 +111 115 122 121 118 120 123 123 123 124 122 122 +126 128 133 129 129 130 129 131 129 128 129 127 +135 126 125 127 128 128 125 123 124 123 125 124 +123 126 123 125 126 126 124 128 125 125 126 121 +121 117 117 121 117 121 120 124 118 109 112 109 +114 111 110 111 111 107 106 110 108 110 112 115 +118 125 125 132 130 134 142 135 140 144 142 146 +145 144 141 143 143 143 144 143 145 149 150 150 +146 150 149 154 152 155 154 153 153 154 152 154 +152 153 154 152 154 154 153 155 152 154 152 148 +158 151 151 152 155 154 155 152 148 149 151 150 +154 148 146 146 145 145 150 149 142 144 143 143 +141 144 143 143 141 147 145 139 141 141 142 141 +142 138 140 142 140 141 140 139 141 143 145 146 +150 169 188 199 205 209 214 216 218 219 221 223 +223 224 225 224 222 217 210 200 181 156 128 110 +106 108 117 120 125 122 128 115 103 93 71 57 +48 41 37 41 41 42 42 44 44 41 44 45 +45 41 46 50 53 57 49 57 54 55 55 54 +56 53 59 54 53 51 54 56 44 48 46 40 +41 44 43 43 44 42 47 43 48 43 47 50 +161 161 159 161 158 159 155 161 161 159 163 166 +169 171 173 169 171 165 160 159 153 152 147 141 +144 142 140 143 143 137 141 140 145 149 155 158 +163 164 165 164 160 159 164 161 164 159 160 163 +162 162 164 163 161 158 155 152 146 141 141 136 +130 116 105 100 92 87 86 82 83 83 89 89 +91 94 97 88 94 98 98 100 103 108 102 103 +102 105 101 103 102 98 102 101 104 104 106 104 +110 110 103 102 102 108 108 111 109 111 113 114 +111 112 117 118 118 116 122 122 120 117 119 122 +118 117 119 120 124 125 122 125 130 125 127 123 +123 129 125 124 124 123 127 126 125 126 128 122 +126 125 135 138 128 128 125 130 129 128 129 128 +123 129 132 126 131 134 126 129 130 125 124 124 +125 131 126 132 127 127 127 133 137 128 123 128 +127 127 126 125 130 125 124 128 126 125 126 132 +137 143 148 149 140 150 151 148 148 145 149 153 +137 148 159 144 151 148 155 149 160 169 175 173 +157 158 175 166 160 167 176 168 170 185 193 185 +171 184 181 173 171 169 180 186 175 167 165 177 +178 178 183 186 190 191 187 184 188 188 189 189 +187 177 156 141 131 129 113 113 109 111 114 120 +119 119 122 123 120 119 121 121 126 124 124 127 +127 132 129 127 128 126 129 124 128 126 123 126 +126 129 127 123 124 125 127 127 129 122 126 127 +124 128 123 123 124 118 118 116 121 116 121 120 +118 114 113 116 118 115 115 110 113 111 111 110 +109 106 106 103 110 104 111 112 116 116 123 134 +133 137 141 137 142 143 146 145 142 145 144 144 +145 147 146 145 145 145 149 148 151 150 148 150 +155 155 151 153 151 157 155 153 150 153 155 153 +157 150 152 155 153 154 153 150 152 151 152 151 +152 151 155 153 149 153 153 150 151 147 146 146 +150 143 143 145 148 144 140 143 139 144 141 142 +137 140 140 139 136 143 141 141 142 137 139 143 +137 140 135 141 138 140 142 143 148 157 180 191 +202 209 211 215 218 217 220 223 224 225 226 225 +225 221 215 207 191 171 142 119 113 111 119 114 +119 122 122 101 93 74 51 45 43 42 40 42 +43 41 42 47 45 45 44 42 46 47 45 46 +55 51 48 55 50 50 51 54 52 51 50 54 +54 56 51 50 47 47 38 43 43 45 42 47 +48 44 43 45 48 40 41 47 +160 160 159 154 +156 162 162 161 157 160 168 167 170 168 170 169 +165 162 158 154 153 146 145 144 143 141 139 139 +145 139 136 142 146 151 152 157 160 164 162 165 +164 161 161 159 161 156 160 163 164 167 161 162 +163 161 154 150 148 143 137 130 126 119 109 101 +97 84 86 82 82 80 88 89 95 92 90 88 +102 101 101 101 102 105 104 103 104 101 102 105 +101 98 108 105 102 100 100 102 104 108 102 103 +98 109 103 108 108 105 109 116 113 115 116 116 +119 117 120 120 119 125 124 125 116 119 122 120 +121 122 124 125 128 130 129 125 129 123 121 125 +122 122 126 123 122 126 130 124 124 127 130 127 +129 128 131 129 128 126 131 128 131 130 135 126 +130 132 130 127 124 134 124 133 126 126 126 126 +126 125 130 126 128 128 128 128 128 124 127 126 +126 125 124 124 125 131 140 144 139 146 146 151 +156 139 157 159 149 145 134 141 147 149 153 143 +144 147 151 150 173 173 161 170 180 172 161 166 +171 169 164 182 184 184 173 184 185 185 174 168 +184 186 182 159 159 173 173 167 175 181 192 181 +175 173 186 188 189 188 193 196 193 190 187 182 +174 158 140 124 117 117 115 118 118 114 117 115 +119 123 117 121 125 124 127 124 126 127 123 125 +123 125 129 127 129 129 122 124 126 127 128 125 +127 126 131 126 122 124 123 124 125 126 124 128 +123 123 116 120 118 123 120 119 116 120 123 116 +118 113 111 115 112 111 112 108 109 104 108 103 +107 109 109 111 119 118 126 130 136 136 140 142 +139 141 154 145 142 144 142 142 141 143 147 143 +143 148 151 145 145 150 154 152 151 153 154 159 +151 156 153 150 154 152 149 151 151 151 150 152 +155 153 151 151 151 151 152 153 150 150 153 153 +148 153 150 149 144 145 146 148 145 144 145 150 +147 142 140 141 139 139 142 143 142 139 140 141 +140 141 146 139 141 145 143 143 143 141 142 138 +144 137 142 142 145 151 167 186 196 204 208 213 +216 217 219 220 223 224 226 226 227 226 221 212 +205 190 166 136 116 111 116 118 118 119 115 100 +76 58 49 42 41 39 40 41 44 45 43 41 +43 47 47 47 42 46 43 50 50 59 54 52 +49 51 56 52 53 51 50 47 53 49 48 48 +47 50 44 44 47 47 47 50 44 45 47 42 +40 49 44 44 +162 162 161 157 161 160 160 162 +163 167 167 168 169 167 167 165 164 162 155 154 +151 146 145 141 137 135 135 136 138 137 133 144 +142 150 154 159 163 162 163 163 164 166 163 159 +162 162 161 164 165 165 162 162 159 158 155 150 +147 141 141 132 125 118 104 102 95 85 83 80 +79 90 86 87 94 92 93 94 102 97 102 98 +103 108 103 107 101 101 106 107 97 107 108 102 +102 105 105 101 100 106 105 106 107 112 110 107 +106 108 107 115 113 115 119 114 118 120 123 120 +121 125 121 123 120 119 121 120 128 124 125 123 +128 123 129 122 125 126 125 124 122 124 125 124 +129 124 127 125 127 134 127 130 127 124 129 128 +127 123 129 130 129 131 127 127 126 128 130 131 +130 126 122 129 128 130 125 127 127 129 126 123 +128 127 128 125 130 126 122 128 125 126 126 129 +137 140 141 141 138 145 143 149 143 150 156 146 +144 138 131 146 141 144 139 143 149 141 162 165 +161 158 175 176 161 159 168 173 166 175 180 176 +172 184 178 181 175 168 179 184 182 171 160 169 +172 171 170 173 183 181 174 168 182 187 190 184 +173 183 191 196 194 193 190 191 189 182 175 163 +144 129 106 109 115 114 116 118 119 123 116 131 +123 122 124 124 127 128 126 123 125 127 127 125 +129 125 129 127 124 125 128 123 121 120 128 123 +119 123 123 124 121 123 125 129 118 122 119 118 +119 121 119 119 118 111 113 114 116 113 111 113 +114 112 113 115 108 106 106 104 106 109 114 110 +116 123 132 130 135 133 140 139 140 144 145 146 +148 143 144 148 142 144 144 147 150 147 147 147 +147 148 150 151 148 148 152 155 151 152 152 155 +151 156 148 155 149 148 151 151 151 150 152 149 +151 149 149 150 151 148 150 149 147 147 149 146 +146 144 147 146 143 146 139 142 146 142 141 143 +139 140 144 139 140 138 138 140 138 141 140 138 +137 141 140 141 143 143 138 139 139 141 135 143 +136 142 152 171 189 200 206 212 215 216 220 222 +224 224 224 224 227 225 224 219 212 201 182 153 +125 118 121 121 118 115 103 79 58 46 45 44 +40 36 37 40 43 47 43 45 43 46 46 49 +43 45 50 53 57 51 59 54 49 55 45 48 +53 51 51 50 51 49 52 52 44 48 43 51 +51 50 49 49 52 52 42 44 41 44 44 41 +159 159 160 161 158 158 162 164 164 168 166 169 +170 168 166 170 160 161 157 155 147 143 144 141 +131 131 128 129 134 135 137 141 145 148 155 158 +157 164 162 164 163 162 165 159 163 164 162 163 +162 165 161 166 160 156 160 150 145 143 138 136 +122 118 108 97 93 85 81 83 87 88 86 90 +98 96 92 97 103 96 102 98 101 102 106 104 +104 98 94 108 101 103 106 104 100 103 99 104 +108 106 101 99 105 103 108 108 108 114 112 116 +121 118 117 114 116 121 122 122 120 118 127 121 +122 122 123 120 120 125 125 126 121 127 128 126 +131 126 125 123 125 126 121 124 125 128 127 130 +129 131 139 125 126 122 126 129 129 128 130 128 +131 131 121 127 128 128 125 123 127 125 122 121 +126 130 127 125 123 124 128 127 127 126 124 121 +126 123 126 128 126 128 130 130 138 144 151 148 +135 143 139 142 146 146 161 149 134 147 133 141 +134 140 148 147 145 150 153 142 151 169 171 162 +161 161 158 160 172 172 167 168 178 186 171 176 +178 185 187 170 173 173 177 171 167 168 181 174 +164 172 184 187 186 181 173 181 187 192 195 190 +180 183 192 198 191 195 192 191 180 159 131 117 +114 112 116 115 115 117 117 123 118 120 124 122 +124 122 129 125 125 128 125 125 129 124 131 130 +124 124 126 126 122 118 128 125 127 126 123 124 +124 122 118 123 123 122 122 118 121 120 117 115 +118 109 112 115 117 111 111 109 111 113 115 114 +109 105 105 101 106 111 108 114 121 123 125 132 +133 133 139 140 143 146 143 146 147 140 142 145 +144 145 144 142 147 148 146 148 149 148 149 149 +154 149 152 153 154 152 157 153 154 153 153 150 +148 147 151 152 150 154 148 149 149 148 147 146 +145 148 150 152 147 146 147 148 147 144 146 142 +141 144 142 142 148 146 147 144 140 139 140 143 +140 141 138 136 138 140 140 137 142 142 140 139 +141 142 142 137 140 138 140 144 137 135 138 155 +180 197 203 208 213 216 220 222 222 224 223 224 +226 227 227 222 217 209 200 176 145 119 121 125 +110 97 79 63 48 39 38 44 49 42 46 41 +44 46 52 49 48 47 52 53 48 55 56 57 +55 53 55 55 48 56 45 55 55 48 51 44 +51 41 40 45 51 53 50 53 46 53 49 46 +47 48 47 49 49 42 47 51 +158 158 162 162 +160 162 167 166 167 166 169 166 170 166 166 162 +160 158 157 151 147 140 136 138 130 129 127 131 +134 134 136 143 144 151 156 162 161 165 164 164 +164 161 162 163 159 162 162 161 166 167 161 164 +162 162 160 152 147 141 140 135 126 118 111 98 +90 85 73 78 82 86 87 89 88 87 92 93 +95 95 93 98 100 101 101 104 101 95 98 103 +103 101 98 103 104 102 103 103 111 103 103 102 +105 101 102 111 111 110 112 119 120 117 116 116 +120 119 123 118 121 117 121 118 123 123 126 122 +122 126 127 125 126 128 123 126 125 124 125 126 +126 121 124 126 126 132 131 131 132 128 122 128 +130 125 125 126 126 125 123 128 130 126 125 127 +128 125 125 123 129 130 119 122 125 124 126 131 +129 133 130 126 127 129 125 128 129 124 131 132 +133 127 133 130 143 154 146 147 132 138 149 145 +148 155 156 147 142 151 144 139 135 142 144 162 +159 146 149 159 160 155 152 170 162 144 165 174 +169 154 168 179 172 163 168 187 191 180 178 174 +178 176 167 178 183 176 165 167 176 187 192 176 +164 174 183 190 183 178 184 185 189 194 194 196 +191 190 192 197 197 188 175 157 125 111 111 113 +117 123 115 115 118 116 122 123 126 125 127 125 +122 123 129 130 125 126 128 131 124 125 126 123 +121 130 126 130 127 120 117 124 125 121 122 122 +124 122 118 117 124 117 118 121 124 111 114 114 +116 114 116 111 112 113 107 112 106 107 107 105 +107 124 107 115 118 123 125 132 135 140 137 141 +140 148 144 145 149 144 142 143 145 142 147 142 +142 147 147 148 147 149 149 151 155 151 150 155 +152 153 152 151 154 153 147 155 149 150 146 153 +149 154 152 149 150 147 145 147 147 145 147 146 +147 146 148 148 147 144 146 145 143 145 142 142 +144 146 142 141 142 140 134 140 140 143 139 141 +143 138 140 142 141 141 140 143 140 140 142 139 +141 139 142 140 137 137 136 146 170 190 201 207 +211 215 218 221 221 224 223 225 226 226 226 226 +221 215 208 191 164 132 121 112 98 89 60 50 +46 53 37 43 41 39 40 54 55 43 48 48 +53 50 52 50 48 54 52 54 55 53 56 57 +49 51 51 53 52 54 45 46 42 42 45 47 +51 53 57 58 47 49 48 43 48 47 41 42 +43 44 46 50 +161 161 163 156 158 160 162 166 +167 172 171 170 169 166 164 160 158 155 152 151 +143 136 135 135 128 124 127 126 127 133 139 144 +146 152 154 157 161 162 165 164 165 163 165 161 +161 164 167 167 166 165 164 164 161 162 163 152 +145 144 137 134 129 120 108 94 91 84 79 79 +78 81 87 84 88 88 93 96 98 94 95 100 +104 100 100 102 107 98 100 100 100 102 107 105 +104 104 102 100 106 103 104 105 105 105 102 111 +110 107 110 113 122 114 115 115 120 119 119 119 +122 118 119 120 123 124 118 118 127 128 120 125 +126 129 125 124 121 128 123 123 127 126 127 121 +129 132 124 126 126 129 124 128 131 126 124 131 +128 133 131 123 131 130 127 129 128 128 127 120 +125 124 129 122 128 128 124 125 126 129 127 128 +133 133 132 136 138 133 133 125 124 122 135 142 +150 149 145 140 132 148 143 142 154 145 143 139 +150 146 146 148 148 140 145 161 139 134 156 153 +146 156 155 155 156 161 170 153 154 164 173 160 +149 168 181 182 180 167 185 183 167 182 186 183 +171 166 167 186 187 174 173 175 180 186 187 176 +170 181 187 195 195 193 183 189 190 192 201 201 +202 196 191 184 168 143 121 112 111 115 115 119 +121 115 117 122 123 126 125 125 123 135 127 128 +127 126 121 131 126 122 126 122 121 125 126 125 +124 121 121 124 121 119 124 123 123 117 122 118 +119 120 117 119 117 106 116 115 114 115 110 113 +116 111 108 109 112 107 105 100 112 123 108 114 +122 124 127 128 137 143 139 150 140 138 143 141 +146 145 145 143 140 144 144 144 146 148 148 147 +148 148 148 146 150 153 148 152 152 152 151 152 +153 153 152 148 150 147 148 146 148 150 148 148 +146 150 149 143 141 147 149 145 145 147 146 145 +142 146 145 142 142 144 144 147 144 143 142 137 +144 140 136 140 141 142 139 138 138 138 141 141 +139 142 143 141 142 142 140 137 139 140 140 141 +136 135 138 139 153 178 194 202 211 214 220 220 +222 223 223 224 225 228 227 226 226 221 215 203 +182 147 120 103 83 65 44 39 41 46 40 44 +42 42 36 49 52 41 42 46 47 51 53 53 +51 53 51 52 51 55 53 48 52 51 54 51 +51 47 46 42 42 48 56 55 53 50 49 47 +46 44 42 40 54 39 42 47 45 54 48 44 +158 158 157 159 160 165 163 167 165 171 173 170 +170 165 164 160 157 151 148 144 141 135 129 128 +123 122 122 128 125 134 137 144 150 153 156 160 +164 166 163 164 164 165 164 163 161 165 166 165 +167 164 167 164 162 159 158 153 150 149 132 136 +125 119 107 94 89 86 77 79 77 82 85 87 +82 93 91 92 99 99 96 93 95 94 95 98 +100 100 95 101 104 100 100 99 100 101 97 101 +101 103 103 111 109 103 102 104 107 109 107 114 +116 115 112 113 118 116 116 118 120 120 122 120 +119 123 121 125 125 121 121 122 126 127 121 121 +124 122 126 124 123 124 126 123 123 128 121 123 +121 127 127 123 126 129 124 123 128 124 129 127 +123 135 127 122 124 129 124 123 122 124 123 121 +125 124 132 128 131 134 132 145 155 144 149 143 +137 128 120 121 126 131 137 144 150 149 142 140 +141 152 142 144 147 135 148 141 138 142 148 134 +157 158 148 147 154 148 147 145 147 152 144 157 +166 159 145 149 169 166 158 162 169 172 162 167 +177 181 178 173 167 182 175 165 173 187 186 177 +164 163 183 192 189 177 171 181 187 188 188 186 +187 184 187 195 196 199 199 196 193 191 195 197 +194 180 158 128 113 112 111 109 118 111 115 125 +127 124 124 122 123 127 127 130 124 126 123 126 +121 123 120 127 125 130 128 124 121 124 119 126 +124 121 119 125 122 119 121 114 113 113 111 117 +111 113 114 112 116 113 111 110 111 117 105 109 +114 109 109 106 106 109 111 112 121 120 126 130 +132 137 140 140 140 142 147 146 148 149 149 144 +144 146 145 144 145 144 146 147 147 150 148 147 +150 151 149 151 152 149 152 149 150 149 156 148 +148 149 148 146 151 147 148 146 144 145 146 144 +145 147 150 145 147 146 145 142 147 145 141 145 +143 143 144 142 144 138 145 141 139 144 141 134 +139 136 140 139 138 136 142 139 140 137 142 141 +140 142 141 141 140 143 139 141 136 140 133 138 +140 164 183 197 208 210 218 221 223 222 222 224 +224 226 228 227 227 225 217 210 199 166 120 88 +63 50 44 41 45 39 39 44 38 43 38 45 +41 47 48 52 56 56 57 58 55 59 49 52 +61 53 56 50 53 48 51 53 53 47 50 49 +44 50 47 54 55 59 57 47 46 46 57 45 +39 42 44 45 45 50 46 45 +159 159 162 162 +162 165 162 167 167 173 173 167 169 162 162 157 +155 149 150 142 143 133 124 124 120 118 119 119 +125 137 140 146 152 153 155 159 161 162 163 167 +164 163 167 166 162 164 163 164 166 160 164 161 +159 160 154 150 152 145 134 135 126 113 104 98 +88 84 77 76 78 86 85 84 87 90 96 94 +95 99 92 98 97 100 97 100 100 98 105 104 +100 95 103 98 105 102 98 97 94 101 107 109 +108 109 106 105 104 111 110 113 112 114 118 113 +115 116 122 117 118 119 123 122 123 121 120 127 +120 124 124 123 125 121 116 122 124 121 129 119 +119 123 127 125 124 122 125 123 126 130 128 123 +126 124 125 129 127 129 129 128 126 127 130 124 +125 125 119 120 121 124 123 119 119 136 142 140 +152 148 149 156 147 139 136 128 122 118 115 120 +123 139 128 132 142 132 137 136 143 137 151 149 +140 149 149 138 140 140 143 150 160 142 143 162 +151 139 154 156 148 147 163 163 143 157 160 170 +167 150 167 173 165 164 160 167 180 176 175 172 +172 165 171 177 185 186 169 161 180 180 189 185 +175 172 187 195 195 185 178 185 190 192 192 196 +194 191 195 191 193 196 200 198 194 194 189 168 +137 118 113 109 108 115 116 124 123 121 122 121 +125 124 125 135 128 127 122 117 120 118 120 128 +123 126 123 122 122 120 125 123 123 120 122 119 +119 115 118 116 116 114 114 113 110 112 111 108 +110 115 109 108 108 109 106 105 103 104 107 104 +110 111 115 112 115 122 128 126 129 137 136 145 +145 147 147 148 146 144 142 145 143 147 143 144 +144 143 152 143 145 147 150 147 147 148 145 151 +151 153 152 149 148 156 153 152 151 147 149 146 +146 147 147 145 150 143 148 146 142 145 143 141 +148 146 143 146 150 143 143 144 140 142 141 143 +145 138 143 140 143 140 141 140 140 141 141 143 +134 139 138 142 140 138 137 142 143 136 138 139 +140 141 138 139 139 134 137 136 136 150 171 191 +205 210 213 218 220 220 223 223 224 225 227 226 +227 225 222 216 205 184 132 76 47 45 45 41 +42 41 38 46 51 38 43 41 51 45 41 43 +54 52 55 57 49 49 56 55 56 48 48 53 +62 50 59 61 52 50 50 57 45 45 47 54 +59 50 51 47 45 48 49 42 40 44 47 45 +45 49 44 50 +162 162 162 160 163 167 170 168 +174 174 167 169 165 158 160 153 148 151 143 138 +132 123 121 115 119 117 115 119 131 139 151 150 +153 157 157 162 166 164 164 164 164 167 163 164 +164 161 160 164 165 165 164 163 158 157 158 150 +150 146 144 133 127 113 106 98 89 84 77 78 +76 77 78 87 101 102 90 99 101 98 95 97 +93 95 99 100 101 98 98 103 99 99 101 99 +98 99 98 99 99 101 105 105 101 106 105 105 +107 108 109 115 112 110 116 113 121 118 117 115 +119 117 117 120 122 118 120 120 120 118 122 122 +122 123 121 127 123 119 119 119 120 118 124 124 +132 126 124 126 127 127 125 131 125 125 126 127 +124 129 126 127 127 124 124 122 126 122 120 126 +132 142 130 126 136 158 164 158 149 151 147 145 +134 129 125 125 116 114 120 122 125 136 124 134 +134 134 140 133 135 138 136 135 131 138 132 138 +135 150 159 152 144 145 148 154 141 146 149 141 +152 169 161 145 151 167 160 161 176 176 172 156 +159 172 164 169 175 172 169 163 157 171 184 182 +172 170 172 175 188 178 171 175 185 194 197 190 +181 177 190 195 197 194 188 186 186 191 197 198 +194 199 195 190 190 197 201 197 176 152 126 110 +109 109 113 119 118 120 117 118 118 119 120 119 +120 125 122 120 121 120 120 119 121 125 127 118 +120 122 122 126 123 123 123 118 119 114 114 114 +113 118 117 118 115 114 116 110 114 112 110 109 +111 110 105 105 103 103 107 103 109 112 107 114 +116 116 124 128 134 137 138 140 138 143 149 144 +145 148 147 147 141 148 146 142 144 147 145 146 +147 146 154 147 145 148 147 148 148 153 155 153 +150 153 152 149 149 150 144 145 149 146 143 142 +151 146 146 147 143 143 144 145 146 145 148 143 +145 144 147 147 143 144 143 138 144 143 141 142 +140 139 141 141 141 138 142 140 138 139 137 140 +138 137 135 139 144 141 143 139 140 141 142 149 +141 138 138 136 137 141 161 183 201 205 210 215 +219 220 222 225 227 227 226 227 228 228 226 223 +215 187 131 67 42 43 39 42 43 38 40 44 +49 42 48 52 43 49 41 47 46 52 54 53 +54 54 48 49 55 53 52 51 53 53 50 44 +44 46 52 46 46 51 50 46 49 47 45 46 +49 46 57 47 57 51 44 43 39 47 48 52 +160 160 164 161 170 168 169 172 171 172 167 167 +162 161 156 153 152 150 142 136 127 119 116 111 +109 103 113 119 127 134 138 154 150 154 156 164 +161 169 168 167 162 165 168 164 165 160 164 164 +161 160 165 165 160 157 158 156 148 137 142 133 +129 118 105 95 88 83 79 78 82 86 85 95 +98 91 92 91 96 94 100 104 105 98 98 97 +101 101 98 95 97 101 103 97 97 99 101 100 +98 104 108 102 107 110 107 105 106 108 109 112 +112 112 113 107 119 114 125 112 116 116 120 113 +119 119 123 126 119 121 119 123 116 119 121 118 +128 120 121 125 123 120 122 119 125 122 126 122 +123 123 131 126 125 125 128 124 124 128 125 124 +123 124 124 126 123 120 123 137 173 180 154 143 +150 163 154 149 147 145 141 134 127 128 128 124 +122 125 125 119 121 125 120 131 127 133 136 133 +141 132 133 131 135 132 131 127 138 153 141 142 +153 144 143 159 151 149 149 150 156 151 148 152 +160 151 149 166 175 163 170 159 169 173 168 169 +172 159 155 171 172 184 178 175 174 181 183 176 +168 171 186 186 192 190 180 179 185 192 189 193 +190 186 187 191 194 199 201 195 190 189 193 191 +196 200 201 201 193 185 164 132 112 110 109 120 +121 119 112 114 121 118 119 119 117 124 121 118 +120 125 123 115 122 121 126 118 122 119 121 123 +120 122 119 123 121 121 115 118 112 115 114 111 +114 112 117 113 112 109 111 105 105 108 105 107 +99 102 98 104 106 106 110 115 117 120 128 134 +131 137 142 147 141 146 145 147 145 145 147 145 +139 148 143 143 142 146 144 148 147 146 147 145 +146 144 149 146 154 151 157 154 149 152 153 150 +150 154 149 150 148 143 142 143 147 145 144 146 +144 141 144 141 145 145 146 143 146 146 149 142 +143 145 146 138 142 144 140 143 142 142 141 144 +140 139 135 139 141 141 140 141 137 143 141 136 +140 143 141 142 142 139 143 141 139 139 138 138 +137 139 147 169 193 198 207 212 217 219 221 223 +224 228 229 228 230 229 225 224 214 179 112 46 +34 33 41 37 40 36 39 41 44 48 46 48 +51 49 41 45 52 57 52 52 50 51 48 50 +50 50 53 51 51 46 47 45 46 45 48 48 +49 49 77 55 51 50 53 47 46 43 54 54 +55 47 45 46 57 51 50 56 +162 162 159 165 +172 166 168 170 171 171 169 167 161 159 156 155 +151 149 139 135 122 121 110 105 106 101 107 116 +126 136 135 147 150 153 156 159 159 169 169 165 +165 162 166 165 164 161 163 166 162 165 164 165 +162 160 161 155 153 147 142 139 127 122 111 97 +92 85 89 83 73 74 76 84 90 81 85 83 +92 93 91 99 96 102 110 105 96 93 100 99 +99 98 97 103 95 101 97 106 102 104 101 103 +99 106 104 103 107 111 110 110 112 111 112 113 +125 115 118 114 120 122 118 116 121 123 123 119 +119 120 121 121 122 122 121 127 128 125 122 123 +126 120 122 121 127 127 128 125 126 124 129 125 +127 124 129 128 125 132 128 123 117 123 121 128 +123 118 135 144 166 171 149 143 150 147 144 144 +136 136 132 133 125 124 132 122 122 121 126 118 +123 124 118 134 136 138 127 141 134 131 124 121 +131 131 129 140 145 145 139 133 138 126 144 155 +144 140 164 150 147 146 156 151 143 160 172 170 +158 151 166 160 164 179 177 164 160 161 167 176 +168 171 169 185 187 182 176 167 165 183 192 190 +179 178 182 188 193 193 183 179 180 192 193 194 +193 189 192 190 191 191 196 200 199 198 193 196 +197 201 197 183 158 130 106 115 115 115 108 116 +116 112 112 116 113 119 122 120 124 120 121 118 +119 122 121 118 120 119 115 118 121 121 122 121 +117 118 118 117 114 116 116 115 117 114 115 111 +111 113 111 108 112 110 108 107 104 103 102 103 +110 106 112 111 117 116 124 131 135 133 136 142 +143 145 145 147 148 149 148 144 145 144 143 146 +141 142 146 148 148 149 148 147 143 142 147 144 +151 150 147 149 147 150 151 152 154 153 149 151 +144 144 141 143 143 143 141 143 142 141 142 145 +143 142 146 146 144 144 144 148 140 144 144 143 +141 141 145 140 140 141 141 140 141 142 140 140 +141 141 140 143 140 140 142 141 142 141 140 146 +142 140 143 142 141 140 137 138 135 135 142 147 +176 194 201 207 213 215 219 220 223 226 228 228 +229 230 229 222 214 184 112 41 36 34 45 40 +40 42 45 45 45 41 47 51 39 45 50 53 +52 55 56 59 54 53 52 55 51 60 61 59 +49 43 47 44 45 42 43 49 52 50 51 54 +52 50 54 43 39 42 49 51 55 42 45 44 +47 55 50 49 +161 161 162 167 170 169 171 173 +171 169 163 160 158 158 150 149 146 141 135 126 +117 109 101 98 100 103 114 124 130 133 141 148 +154 153 158 160 164 166 165 170 164 168 161 171 +166 166 162 162 165 164 165 162 164 158 158 152 +149 145 137 132 126 120 111 100 87 87 82 74 +76 78 82 82 91 89 87 85 94 88 91 94 +96 97 98 97 99 94 91 99 96 100 96 101 +99 95 100 106 103 98 98 103 101 105 104 105 +113 107 115 108 109 111 116 116 115 114 117 122 +113 112 124 117 118 121 119 122 117 121 114 120 +121 121 121 122 122 124 122 125 123 125 125 123 +122 124 123 125 123 129 126 124 128 122 126 123 +125 125 129 123 121 123 126 134 126 122 129 135 +133 130 143 139 139 137 134 133 132 124 118 127 +124 130 121 121 116 120 120 120 120 120 126 138 +135 139 140 134 133 134 131 123 120 128 136 134 +138 147 133 124 139 141 141 144 148 154 156 151 +159 148 143 144 160 163 163 170 161 163 167 159 +162 173 155 159 176 175 172 165 171 174 181 190 +170 162 179 183 188 190 181 177 175 189 191 192 +183 168 175 188 196 192 191 185 178 187 193 196 +199 194 193 193 193 194 195 200 206 201 198 194 +183 164 140 120 114 113 116 111 112 111 113 120 +122 117 119 117 120 117 118 118 123 123 120 117 +121 119 120 116 120 115 119 118 119 116 119 116 +117 114 114 115 112 111 112 113 104 107 108 108 +110 109 101 105 101 102 98 104 104 111 112 112 +119 121 129 131 137 135 138 141 144 143 147 148 +146 149 147 145 143 145 145 143 142 143 146 149 +146 146 149 145 147 147 145 148 148 147 149 151 +147 149 152 152 151 154 148 152 148 146 145 145 +144 144 140 140 139 142 144 144 145 145 144 145 +144 149 148 147 145 142 140 145 139 140 138 142 +144 144 143 139 142 141 139 144 140 143 142 141 +140 140 142 142 143 141 141 140 144 144 142 142 +139 138 141 139 142 137 141 148 168 185 198 207 +214 217 219 223 225 227 228 229 229 230 225 216 +195 132 55 34 39 42 39 41 42 40 46 41 +41 46 48 48 50 50 52 51 56 56 52 53 +50 53 53 52 53 54 52 45 46 44 45 41 +46 42 50 49 56 59 47 52 48 44 46 47 +42 42 45 45 47 44 42 51 55 57 56 50 +164 164 165 165 165 171 172 176 166 169 164 164 +158 155 150 149 143 142 127 122 114 103 102 91 +91 103 113 123 132 134 148 147 153 154 158 158 +168 168 166 165 166 164 164 164 162 168 163 165 +167 164 162 167 163 157 157 153 150 147 139 134 +127 115 108 97 91 83 77 74 82 77 83 84 +86 83 89 87 93 88 92 97 97 93 95 96 +96 97 94 99 101 96 99 96 102 96 102 102 +98 104 98 102 103 103 104 99 103 105 109 105 +113 112 110 114 113 121 112 117 116 115 111 118 +120 121 117 127 122 122 114 121 124 126 119 120 +127 120 124 119 120 121 122 123 124 125 124 128 +124 126 123 127 127 124 124 122 120 124 121 122 +126 125 146 177 152 120 122 127 123 124 125 137 +134 127 127 124 127 122 119 127 126 124 123 124 +125 125 122 125 124 126 123 131 135 132 131 129 +130 140 131 127 128 134 128 129 147 139 133 130 +145 132 141 149 153 137 153 160 151 148 162 164 +160 155 164 165 151 162 163 150 160 175 165 172 +173 165 167 177 183 182 180 180 176 177 188 192 +192 180 182 189 188 191 183 173 174 184 191 194 +195 183 176 186 189 192 196 197 192 187 189 195 +199 201 201 202 198 194 189 196 197 199 184 146 +126 108 105 108 111 111 112 113 115 119 118 117 +115 116 117 120 121 123 119 122 119 123 119 119 +119 124 120 122 118 120 117 117 119 115 115 113 +112 109 116 113 110 111 103 109 105 107 103 104 +108 105 95 98 108 108 105 111 117 119 127 130 +135 139 136 143 143 144 147 150 148 150 146 144 +144 144 146 142 144 148 145 145 147 149 147 146 +150 146 146 146 144 146 149 153 148 148 148 147 +152 150 158 152 149 146 149 142 142 143 140 140 +140 139 144 142 142 144 145 142 147 142 140 143 +142 143 145 148 143 143 143 148 147 144 142 142 +140 142 140 140 138 144 141 141 142 138 141 140 +145 142 146 142 144 143 144 141 139 139 142 138 +143 142 141 144 151 175 190 203 212 217 219 222 +225 226 229 230 228 225 218 203 166 90 36 39 +39 39 41 43 44 43 42 45 50 41 39 47 +46 47 53 51 52 53 55 56 50 55 55 55 +53 53 48 44 47 43 44 47 45 43 50 51 +55 54 51 49 47 43 43 44 44 48 46 45 +49 47 51 52 54 59 58 51 +165 165 167 168 +174 177 171 172 168 169 161 159 158 155 149 148 +142 138 121 116 105 104 90 91 91 99 112 120 +126 134 141 150 152 155 162 159 165 169 164 166 +167 166 162 165 164 163 163 169 163 169 165 162 +167 161 158 152 151 146 143 131 124 118 106 97 +93 80 81 72 74 77 75 79 80 85 85 90 +95 91 98 94 96 94 99 94 90 96 94 103 +100 101 99 98 98 99 99 98 101 102 102 107 +105 102 104 105 107 106 109 109 104 107 109 110 +118 120 114 118 119 112 112 121 114 121 118 122 +119 123 115 121 124 122 121 119 123 125 122 119 +118 125 121 122 126 129 123 123 123 124 122 121 +123 125 123 123 124 125 121 124 124 135 175 197 +140 111 112 125 124 123 122 130 123 128 123 124 +121 118 118 124 121 122 118 121 124 126 121 125 +134 125 129 132 139 130 134 131 128 127 133 127 +129 136 140 140 132 138 143 135 137 135 143 143 +148 153 147 141 138 144 153 158 158 155 159 167 +160 154 146 146 164 172 149 157 174 179 182 175 +165 164 171 182 183 189 189 188 187 185 190 190 +181 176 176 183 188 191 192 186 183 191 188 192 +198 192 185 181 189 191 194 200 199 197 192 194 +190 195 194 195 203 200 195 182 160 127 111 105 +110 105 108 110 111 110 112 115 116 115 118 122 +118 113 120 119 115 121 120 118 117 117 117 118 +116 117 113 115 117 117 115 113 111 107 114 110 +109 107 108 111 105 106 109 109 103 104 99 101 +106 108 111 113 115 120 128 128 134 140 136 144 +144 148 148 148 148 148 144 144 145 144 145 143 +143 147 147 144 144 148 144 142 146 146 142 145 +147 147 146 146 147 146 151 153 148 154 151 147 +149 149 141 140 138 144 145 139 141 141 139 142 +140 142 147 140 144 143 144 143 142 143 144 142 +144 141 145 146 142 149 142 141 140 141 136 138 +140 144 140 139 138 137 141 143 146 143 144 142 +145 146 149 142 144 142 140 141 142 137 137 138 +144 158 179 200 208 214 218 224 226 227 228 229 +224 218 208 182 121 51 33 38 41 39 34 36 +38 42 43 42 51 49 43 51 52 47 52 56 +53 53 49 50 46 59 61 52 52 56 50 40 +45 46 45 46 43 46 50 52 54 50 56 48 +46 45 42 41 45 42 47 40 49 51 55 56 +55 51 49 48 +164 164 169 173 174 174 172 172 +168 167 156 158 155 150 149 146 136 131 120 108 +101 92 82 80 87 99 112 121 128 135 139 148 +153 156 158 159 166 164 168 163 168 164 164 167 +166 164 163 163 164 164 166 162 163 162 153 154 +150 141 139 129 127 117 108 95 89 79 74 74 +73 79 84 87 79 83 86 85 88 89 93 95 +95 95 93 95 94 95 97 101 97 94 105 98 +99 102 102 95 103 103 102 99 104 104 106 105 +105 103 111 109 104 106 115 112 109 116 115 117 +124 114 114 121 119 119 114 116 115 118 117 115 +122 125 123 123 123 122 125 123 120 123 118 124 +125 127 124 125 126 128 125 120 128 125 122 120 +124 122 122 122 129 151 176 147 104 101 109 126 +123 123 122 116 121 120 118 127 116 118 122 122 +119 124 124 118 129 121 122 121 122 120 133 139 +136 129 133 134 131 133 126 117 121 130 139 129 +140 143 130 139 139 138 132 144 145 137 148 150 +142 135 141 162 147 146 165 159 150 146 157 167 +167 159 159 172 180 177 161 160 172 175 175 183 +181 184 183 186 189 188 186 177 170 184 188 190 +187 180 185 188 192 194 191 186 182 174 180 194 +195 195 193 193 191 192 191 195 194 201 198 198 +195 193 193 193 191 176 153 126 109 105 108 107 +109 110 107 114 117 116 116 127 114 116 118 118 +114 118 115 117 117 119 117 117 116 118 115 120 +118 113 115 115 112 115 112 116 113 112 112 112 +103 107 106 108 101 105 104 104 100 104 108 109 +109 121 127 130 131 135 139 145 143 146 148 150 +152 152 148 148 147 145 146 143 142 146 144 140 +144 144 146 140 144 143 145 144 147 144 146 143 +144 146 147 153 150 152 153 143 151 145 143 144 +140 143 135 138 137 143 143 144 140 140 140 143 +141 144 151 147 143 143 140 140 144 140 142 140 +142 141 141 142 141 140 138 139 142 142 142 138 +138 138 140 141 145 144 145 140 143 141 145 141 +145 140 140 142 142 140 142 140 146 147 163 183 +207 216 218 222 226 228 228 224 218 209 187 139 +68 39 38 34 42 42 42 37 41 40 42 46 +43 49 46 49 50 55 59 60 53 54 54 51 +51 59 52 57 50 44 44 39 43 43 40 41 +48 49 45 55 51 49 47 55 46 46 43 45 +47 41 46 47 48 48 54 51 48 44 39 36 +167 167 170 172 175 173 170 170 165 160 161 160 +153 150 146 145 134 128 117 105 94 85 81 79 +87 104 108 119 130 131 142 149 150 158 161 168 +165 170 166 165 167 165 163 166 167 166 160 163 +162 162 165 164 159 159 154 150 148 143 140 132 +124 115 113 94 85 78 77 73 71 76 81 80 +84 86 90 88 90 95 93 92 94 91 98 91 +98 97 96 97 95 95 98 99 98 102 107 97 +100 104 97 103 110 106 103 102 100 109 102 104 +105 101 109 111 109 114 117 113 117 114 114 119 +122 120 115 113 113 117 119 117 122 128 121 122 +122 121 127 124 122 124 121 125 120 127 121 123 +127 124 125 124 129 121 121 122 121 118 125 122 +140 189 168 108 90 87 106 109 119 120 125 118 +121 122 111 122 124 121 114 120 124 121 120 122 +117 123 122 112 126 125 135 141 131 129 130 138 +135 132 126 124 130 133 133 134 138 136 129 135 +139 139 134 135 130 140 149 141 145 145 149 160 +150 158 151 138 151 159 154 155 164 180 186 176 +165 164 162 172 184 179 173 173 186 186 190 188 +176 176 186 189 189 191 187 183 176 183 195 190 +192 188 176 173 181 190 193 198 196 190 189 194 +196 199 196 198 199 198 194 194 193 192 192 197 +196 193 186 163 125 110 106 103 108 103 109 106 +113 111 115 125 113 112 114 112 119 114 115 114 +116 123 119 118 116 114 116 119 114 110 114 111 +111 115 107 107 108 111 107 110 107 105 107 105 +98 102 100 98 101 106 108 111 113 125 129 129 +137 137 139 142 145 148 148 149 151 148 153 149 +148 146 144 146 146 143 144 143 146 142 149 141 +144 144 143 144 144 141 142 142 147 141 145 148 +149 150 150 149 152 147 145 141 146 140 141 136 +137 140 142 142 140 143 141 141 145 145 144 146 +146 145 142 142 139 142 143 143 143 140 140 143 +142 142 141 141 140 144 142 141 137 141 143 140 +143 147 143 146 143 138 145 144 142 145 140 141 +143 146 145 141 143 143 150 170 202 212 216 222 +225 226 222 216 210 190 153 86 48 35 43 35 +37 43 43 43 41 42 41 43 46 53 44 51 +56 52 59 56 50 55 61 55 56 52 59 56 +54 53 45 44 46 43 47 45 50 49 53 53 +49 45 41 46 43 46 46 46 48 46 46 56 +54 54 59 54 44 39 34 32 +170 170 178 172 +175 176 171 170 170 160 157 154 149 145 145 137 +129 125 111 101 93 88 71 78 90 102 114 121 +133 139 142 148 152 155 157 165 163 163 167 167 +166 163 167 168 165 166 159 164 165 161 159 164 +163 157 154 147 145 142 136 137 128 119 110 100 +90 81 82 73 70 78 74 79 80 84 87 91 +92 96 91 93 92 95 98 94 94 95 98 98 +97 102 103 98 98 96 98 99 96 103 104 98 +100 104 98 101 109 102 105 106 101 106 107 115 +113 113 112 114 117 111 113 112 115 114 117 115 +113 118 117 119 129 130 124 125 122 120 123 126 +123 122 129 120 125 123 121 122 124 123 125 122 +125 120 123 123 116 115 121 125 161 206 168 102 +97 90 110 115 125 121 120 122 130 120 119 119 +126 122 117 115 127 121 119 119 124 119 117 115 +127 125 126 129 129 129 131 135 119 121 137 123 +127 132 133 132 131 134 133 134 144 139 128 143 +149 146 132 133 152 138 142 157 146 147 156 157 +164 154 152 164 176 184 172 156 171 178 182 181 +173 170 180 185 184 186 183 174 169 183 188 191 +193 183 167 182 191 195 194 189 179 182 185 191 +193 192 190 193 189 188 195 200 200 199 194 191 +194 194 194 195 196 197 195 189 190 195 194 192 +169 143 118 101 100 97 105 104 106 110 108 113 +111 113 113 108 115 112 112 114 110 116 118 114 +116 116 115 117 116 115 111 111 110 111 107 108 +108 110 107 108 108 108 105 107 103 105 100 101 +103 106 114 112 121 122 123 134 139 139 138 145 +144 148 149 150 151 148 149 148 151 148 146 145 +146 147 141 145 146 139 144 146 142 142 142 143 +143 139 142 139 148 144 143 145 148 149 151 149 +157 146 145 139 140 142 138 140 143 140 142 140 +139 144 145 141 145 144 145 145 145 143 145 140 +140 142 145 142 144 140 140 142 143 140 141 140 +137 146 142 140 143 141 141 144 142 143 143 145 +144 140 144 142 149 142 143 143 147 141 143 143 +142 146 147 159 185 204 212 219 223 219 215 211 +190 148 87 51 41 40 42 37 44 42 42 46 +47 45 40 45 42 52 49 48 56 56 54 58 +49 55 51 58 58 54 51 52 52 49 40 38 +42 44 50 50 50 52 49 57 51 47 41 41 +46 47 42 47 47 56 55 54 58 55 53 43 +38 35 30 29 +167 167 167 174 170 173 166 170 +164 157 154 151 150 144 139 135 128 118 108 90 +80 74 75 79 85 99 110 118 131 137 141 145 +150 153 165 163 162 166 170 164 168 164 164 161 +165 163 165 159 165 164 164 160 161 158 152 153 +145 141 133 133 125 117 108 98 86 84 80 72 +68 75 86 81 83 84 90 95 93 92 93 100 +95 96 100 94 102 96 98 96 98 100 100 101 +103 95 98 101 102 104 102 98 99 100 99 103 +101 105 108 106 109 111 111 111 113 111 115 114 +114 113 115 107 114 120 115 114 117 119 116 115 +120 125 122 118 120 116 124 118 119 124 121 122 +123 119 124 120 124 124 125 124 123 125 121 124 +121 127 124 123 151 176 134 105 95 101 110 115 +116 116 115 118 124 124 116 119 122 118 122 124 +131 130 121 120 116 120 115 117 122 124 128 127 +131 133 134 129 127 127 121 123 136 125 126 134 +135 128 135 142 140 123 129 138 140 141 143 146 +148 143 144 139 136 152 161 156 143 158 170 169 +165 163 166 178 183 177 172 164 167 182 183 184 +177 171 174 186 185 188 186 177 182 184 182 188 +196 191 181 179 185 194 194 194 188 182 186 190 +194 196 197 197 195 193 190 194 199 199 199 196 +193 188 192 190 195 199 199 200 196 187 161 131 +108 100 102 103 105 112 105 106 103 106 110 109 +115 111 115 115 109 115 116 114 115 113 113 113 +112 117 116 111 111 107 111 109 112 110 106 103 +108 106 106 109 108 100 104 102 105 102 107 115 +114 118 127 133 133 139 143 149 148 146 150 151 +151 154 151 151 148 150 148 147 145 145 146 146 +143 142 148 141 139 142 146 141 140 141 140 141 +136 141 141 144 147 144 150 153 146 150 145 144 +147 142 143 143 138 139 142 139 141 143 145 143 +142 149 147 148 142 147 140 140 141 145 146 140 +139 142 143 141 142 142 141 140 138 145 141 142 +143 140 143 144 141 143 147 143 143 142 145 146 +145 143 148 146 143 143 149 147 149 144 144 151 +174 197 208 217 218 214 206 190 155 98 49 44 +37 38 42 44 45 47 41 43 45 42 46 43 +44 48 53 50 48 52 49 46 53 58 54 55 +53 52 56 45 44 44 46 46 45 45 48 50 +53 48 51 44 45 43 45 40 42 48 42 44 +51 57 53 59 63 58 60 41 35 31 26 28 +171 171 174 174 173 171 167 161 158 158 156 154 +149 143 132 126 122 107 94 82 78 76 74 81 +89 98 113 119 127 129 137 142 148 154 161 164 +163 166 165 170 168 165 163 162 164 164 165 162 +162 164 164 161 159 156 156 151 141 137 135 132 +125 114 106 94 83 86 70 73 70 80 77 84 +88 88 91 84 92 90 90 97 93 95 98 100 +97 100 96 99 95 99 97 99 98 99 100 99 +105 102 101 98 103 100 100 110 106 107 105 110 +111 109 113 108 112 116 113 111 110 115 116 112 +112 117 117 116 119 119 120 116 117 118 119 121 +120 119 118 120 126 123 128 126 122 121 127 130 +124 126 125 123 124 126 123 124 127 128 121 123 +127 128 114 108 112 115 111 115 119 120 118 122 +126 123 116 117 116 119 128 123 126 127 120 124 +112 123 121 126 127 133 125 127 132 130 136 132 +127 129 137 127 128 126 134 134 137 144 145 133 +134 132 137 131 134 136 136 143 141 139 138 143 +152 153 151 150 154 169 163 148 156 171 178 185 +172 164 179 183 180 177 166 170 183 180 183 185 +179 178 182 181 184 190 190 179 180 180 182 188 +197 197 189 186 185 188 190 193 190 190 195 188 +191 195 197 201 201 202 195 193 188 193 199 202 +201 197 200 201 198 201 189 170 134 112 102 102 +110 108 106 104 106 105 105 107 104 105 111 113 +114 114 112 116 115 111 114 113 112 113 114 108 +111 107 112 110 112 107 105 107 110 103 105 106 +103 104 97 102 102 108 110 112 114 117 127 132 +139 140 141 143 147 149 151 155 154 149 152 145 +150 151 148 148 144 145 143 144 148 141 141 142 +139 139 141 146 143 137 143 138 137 139 141 139 +141 144 148 151 152 153 146 142 142 148 143 140 +141 142 143 142 145 147 143 144 145 146 144 146 +148 143 144 143 142 143 140 143 142 143 144 142 +141 143 140 138 144 142 143 144 143 141 143 144 +143 146 143 148 138 141 141 145 145 145 142 147 +146 147 148 150 151 147 149 152 165 191 203 212 +210 203 183 147 90 54 39 43 43 42 42 44 +44 44 44 41 42 40 46 43 50 45 59 51 +45 49 54 50 51 51 53 55 55 56 48 47 +50 44 48 51 50 49 55 54 52 57 54 47 +43 43 50 48 44 48 47 47 52 58 60 63 +52 56 43 31 30 28 29 33 +170 170 170 171 +172 169 165 163 158 158 152 152 144 136 132 117 +117 101 85 80 76 72 74 81 88 102 113 121 +130 131 139 145 146 152 159 164 163 167 166 167 +167 169 163 163 163 165 169 164 167 165 167 162 +161 154 156 147 140 139 139 131 125 115 108 99 +80 84 80 69 68 75 78 81 84 93 84 91 +96 87 92 99 97 104 107 102 104 107 107 103 +97 104 100 103 97 104 97 96 99 101 99 102 +104 108 106 102 107 107 106 108 103 107 113 112 +117 115 115 119 110 110 113 114 116 117 117 117 +117 117 117 116 122 116 121 117 118 117 120 119 +124 120 122 126 128 124 127 128 127 119 126 119 +124 132 124 127 125 122 134 130 114 109 108 108 +113 116 109 108 115 118 118 122 124 119 115 121 +114 122 126 120 119 128 123 116 117 119 120 126 +128 130 133 132 134 130 138 129 123 138 134 124 +126 132 129 136 143 135 128 137 134 127 129 130 +139 134 135 129 117 132 145 151 147 142 155 158 +161 162 156 157 171 173 169 169 169 176 187 183 +166 162 168 185 188 183 174 166 161 184 190 190 +186 178 172 174 186 192 192 195 189 188 184 191 +197 197 194 189 186 187 195 197 199 201 201 196 +196 193 193 197 196 196 198 200 198 196 200 200 +204 203 201 194 171 141 111 96 101 100 96 98 +103 108 103 103 108 106 110 105 105 111 113 113 +112 114 109 114 116 110 110 109 113 108 112 108 +114 105 105 107 106 107 110 106 101 103 98 95 +103 107 109 113 112 122 125 126 137 142 140 147 +147 149 150 152 150 151 151 149 151 150 149 152 +148 151 143 148 144 144 140 140 139 139 138 144 +139 137 142 138 133 138 139 139 141 144 146 149 +149 151 146 147 146 145 142 141 139 143 144 144 +144 145 144 145 147 143 145 146 146 147 142 144 +140 141 141 141 140 141 143 144 142 142 144 137 +143 142 143 144 147 140 145 146 142 142 143 146 +145 145 142 143 144 145 146 145 146 145 145 153 +150 154 150 152 160 183 200 203 193 173 137 83 +49 45 39 47 46 43 44 47 47 41 44 47 +44 44 47 54 50 54 48 48 51 52 48 48 +53 52 55 51 53 50 44 44 49 44 58 49 +56 53 56 64 56 52 54 52 50 43 47 46 +49 49 49 53 61 62 63 69 60 48 38 30 +26 27 34 35 +175 175 170 168 171 166 166 164 +160 155 148 147 143 136 132 117 106 95 81 72 +74 74 81 87 94 103 113 118 129 134 140 143 +148 152 156 163 166 166 168 170 165 167 162 162 +163 164 167 162 164 164 163 162 159 154 153 149 +144 138 139 131 126 115 109 93 80 80 70 72 +73 76 80 87 86 88 87 84 91 92 93 95 +100 104 105 98 97 100 97 108 95 96 102 104 +97 99 99 99 104 99 101 101 96 105 97 102 +106 107 107 108 110 108 108 111 112 119 118 118 +106 108 109 111 113 118 116 113 118 117 120 118 +120 118 119 119 120 117 121 120 124 119 119 119 +123 124 119 123 129 122 123 121 121 125 123 124 +123 128 159 135 112 108 109 115 114 114 110 113 +122 118 119 118 117 112 110 123 122 123 120 114 +122 126 124 125 125 125 121 119 126 128 132 141 +142 135 135 130 123 130 137 136 131 138 135 147 +137 133 136 130 121 122 129 137 143 141 134 128 +128 146 150 138 135 155 162 145 150 159 163 174 +167 155 169 173 181 178 169 161 170 177 188 187 +173 165 174 176 184 193 185 175 167 175 181 186 +192 198 195 184 180 192 197 197 195 188 185 185 +195 195 197 200 194 194 192 190 195 196 201 200 +199 192 193 190 192 198 204 204 202 200 199 203 +197 179 144 107 97 95 98 100 99 100 103 102 +101 107 106 106 111 113 112 112 117 117 110 112 +113 112 114 109 115 105 111 105 109 104 105 107 +104 110 109 106 106 108 105 96 99 106 103 110 +113 121 122 127 134 139 139 143 148 150 151 154 +151 155 153 152 152 150 150 155 149 149 149 152 +145 144 144 136 139 134 136 137 136 136 134 137 +133 133 137 139 138 140 144 149 147 149 148 146 +145 146 146 141 144 144 141 140 145 144 141 141 +143 144 146 142 145 145 139 141 142 141 141 145 +144 142 139 139 139 143 140 141 148 144 142 143 +143 144 145 144 142 141 145 145 147 146 147 149 +147 145 149 148 144 145 148 153 150 154 153 149 +157 178 189 183 162 127 83 53 45 43 43 45 +50 44 41 42 41 45 42 45 51 44 44 50 +47 39 52 49 48 48 49 60 59 50 49 52 +50 47 45 44 48 51 63 52 55 54 51 45 +52 46 49 50 41 42 50 51 49 46 49 52 +69 66 76 63 60 46 37 27 24 30 34 54 +172 172 172 171 170 168 163 157 161 154 148 145 +138 133 125 114 101 91 80 75 76 71 78 87 +96 101 111 120 129 132 140 145 152 153 161 160 +165 164 165 169 171 166 165 165 164 166 166 161 +162 163 161 161 163 155 154 148 145 140 138 132 +120 115 105 95 81 75 79 72 71 77 80 83 +85 83 95 90 88 93 94 93 101 101 99 98 +95 98 110 113 103 98 101 98 93 97 96 100 +103 98 100 101 93 98 97 104 101 104 104 111 +111 111 109 110 112 113 114 112 113 122 116 115 +114 118 116 111 113 122 113 115 121 120 116 121 +112 117 121 119 121 122 118 121 125 122 122 124 +125 124 118 123 122 115 119 123 126 141 149 123 +109 114 113 110 112 117 119 115 121 115 115 113 +109 107 108 122 120 119 118 116 122 125 122 123 +129 128 132 124 121 120 139 132 124 127 133 125 +120 137 141 125 127 141 141 137 142 142 134 121 +119 131 131 141 145 136 139 147 146 148 140 145 +151 154 141 133 154 163 163 154 159 163 178 176 +160 158 171 171 178 178 174 169 177 180 188 188 +189 184 174 174 179 191 194 195 191 185 184 189 +191 196 200 191 185 188 191 196 199 195 193 195 +193 193 197 197 198 198 198 193 188 188 195 197 +200 200 204 203 201 199 198 204 203 201 181 146 +114 98 87 92 93 98 98 92 99 101 103 100 +107 108 104 112 114 112 109 112 113 113 106 110 +108 109 105 106 105 108 109 111 113 111 105 108 +103 103 101 99 100 106 105 110 111 118 128 130 +135 140 144 144 145 149 151 155 152 152 153 153 +151 152 148 147 152 147 147 143 145 143 142 139 +138 132 135 132 134 128 136 132 131 132 131 135 +135 138 141 143 146 152 149 147 145 146 144 145 +144 139 139 142 141 146 141 143 147 149 147 143 +145 144 141 147 142 145 142 143 142 137 140 142 +142 143 146 139 142 146 144 144 144 145 141 148 +145 143 145 150 148 143 145 145 148 148 150 151 +146 150 147 152 153 155 152 155 159 159 160 152 +116 73 49 49 40 41 44 49 51 45 41 41 +43 44 46 50 50 52 48 47 51 53 48 50 +48 58 55 54 49 60 58 50 49 41 40 41 +47 50 61 62 55 50 53 46 50 42 43 48 +43 43 57 53 47 57 63 68 74 72 67 53 +50 43 31 31 29 33 52 97 +171 171 172 170 +167 167 162 157 155 150 147 137 131 125 119 108 +95 82 83 75 74 71 81 87 99 100 108 120 +128 134 140 145 150 153 158 162 168 169 169 169 +169 167 169 165 168 165 163 162 161 163 161 158 +161 156 155 150 146 137 140 130 122 121 108 93 +84 76 76 72 69 71 78 80 85 92 86 88 +93 99 96 100 101 94 102 100 102 92 95 102 +97 97 101 100 97 94 97 102 96 98 101 101 +96 101 104 103 102 109 107 108 106 109 107 108 +117 109 113 110 113 119 116 117 112 116 117 117 +114 116 121 118 118 125 118 120 119 121 122 120 +121 120 122 120 122 125 125 121 122 126 120 120 +124 127 117 122 138 162 136 118 105 110 118 111 +114 121 117 117 112 110 115 108 110 110 116 114 +113 118 114 117 121 125 124 123 124 129 123 116 +124 137 138 120 115 125 131 129 139 137 133 132 +132 138 128 142 139 121 124 136 130 132 146 134 +132 137 150 149 131 131 149 150 146 137 140 150 +163 155 145 156 168 171 163 152 160 170 180 179 +165 155 161 179 189 188 183 183 175 177 185 188 +192 192 187 191 188 187 193 197 196 190 184 185 +192 197 199 196 192 186 192 196 196 198 199 198 +195 189 187 195 197 199 199 201 199 194 194 199 +203 202 202 203 202 203 195 180 160 112 92 95 +92 95 94 91 93 101 98 100 102 105 107 106 +115 110 107 104 110 111 111 110 107 103 105 101 +107 110 108 107 111 110 104 108 102 104 102 99 +101 103 105 109 117 119 124 132 134 143 144 147 +146 149 152 155 152 153 152 153 156 157 151 152 +153 149 148 147 145 144 141 138 135 135 134 132 +135 134 131 126 128 129 130 129 135 135 139 143 +149 148 152 149 148 149 145 141 141 144 145 143 +142 145 144 145 144 144 150 146 145 144 142 141 +141 143 143 144 144 141 139 145 142 141 141 146 +144 144 145 146 142 142 141 148 143 142 145 146 +143 139 146 148 150 148 147 148 148 149 149 143 +154 156 154 157 163 151 136 109 79 52 51 44 +46 48 50 39 42 45 46 39 47 51 47 49 +42 49 51 53 53 52 52 55 49 52 54 48 +44 48 49 45 44 43 40 44 47 54 59 58 +54 49 49 45 60 50 44 44 48 48 53 53 +55 56 64 69 64 69 60 42 37 37 29 31 +36 51 94 129 +175 175 170 172 167 162 161 159 +157 146 143 138 127 121 112 99 88 80 77 76 +77 78 79 88 99 103 116 121 126 137 138 143 +152 155 160 162 164 166 170 167 166 166 168 166 +162 165 162 164 163 165 164 160 158 157 151 147 +146 141 134 130 125 121 109 91 85 71 80 73 +71 77 82 82 87 87 86 89 93 96 90 92 +93 99 97 92 98 100 101 102 99 99 105 101 +101 92 101 101 102 96 98 98 97 101 107 103 +107 107 105 105 111 108 111 109 116 113 114 112 +116 111 118 116 111 115 113 115 113 116 119 117 +119 125 120 120 120 118 120 124 122 121 119 123 +125 123 121 123 126 124 124 120 120 121 121 135 +180 180 124 108 111 111 113 116 117 112 113 107 +108 113 105 111 108 112 112 112 118 116 121 118 +130 127 127 137 129 122 111 126 141 133 130 121 +116 121 138 135 131 137 138 138 126 140 144 134 +122 120 133 135 132 146 141 127 126 145 144 130 +128 143 149 138 127 148 158 155 142 140 155 164 +165 146 156 160 169 171 158 159 163 168 182 185 +183 172 175 181 180 185 187 188 184 179 179 191 +193 194 195 191 189 179 189 194 196 197 194 187 +190 195 201 198 197 196 196 192 192 193 192 196 +196 199 198 198 195 195 199 200 197 201 196 195 +199 197 200 203 200 152 114 109 108 106 99 89 +88 96 94 101 96 102 103 101 112 107 107 107 +111 112 110 111 110 106 105 105 107 107 106 100 +106 113 102 104 103 102 102 96 102 99 106 110 +109 114 127 130 134 146 148 147 150 153 152 154 +151 154 159 157 153 156 152 153 150 147 147 149 +148 150 143 137 134 133 132 130 126 126 128 124 +121 128 124 130 134 133 141 141 144 151 153 148 +149 145 145 143 145 142 141 141 143 146 150 144 +147 147 148 148 146 149 141 138 140 142 144 143 +141 138 139 141 145 140 143 143 144 142 147 142 +141 145 144 145 145 147 145 154 145 144 148 147 +145 152 148 148 147 148 149 152 158 156 157 154 +150 136 113 81 58 48 45 47 48 45 43 38 +38 47 41 46 38 40 41 47 50 53 59 60 +68 57 53 49 50 51 46 49 50 45 45 42 +38 41 40 47 54 52 53 57 56 57 57 60 +48 46 54 52 48 51 53 54 52 61 68 67 +67 55 47 38 34 30 32 39 51 85 121 147 +170 170 170 167 161 164 157 155 154 144 143 132 +123 115 108 92 85 77 77 79 74 76 86 84 +90 103 118 119 127 136 137 144 158 154 163 160 +168 168 166 170 164 167 167 167 171 164 161 166 +164 167 165 160 161 157 150 151 145 144 139 127 +122 113 103 98 83 77 74 71 74 76 81 83 +84 88 101 88 95 96 95 99 100 101 101 99 +97 104 104 101 100 98 103 102 103 97 101 103 +99 96 100 97 101 101 100 99 102 107 105 106 +110 108 110 103 115 110 112 114 115 114 114 112 +110 114 111 114 120 116 117 122 121 120 118 116 +120 116 120 116 122 122 126 122 118 123 125 125 +124 122 123 121 123 125 127 151 198 168 116 113 +113 111 114 116 113 114 115 110 113 106 104 112 +115 113 117 120 119 118 117 118 123 120 130 128 +123 110 124 134 126 125 126 120 122 128 128 119 +131 142 129 126 133 146 140 129 140 143 127 139 +148 138 136 134 142 142 130 134 145 149 133 130 +143 159 155 141 141 154 160 151 148 156 166 174 +159 149 154 171 173 187 183 178 178 168 182 185 +187 189 177 172 187 190 191 192 192 191 188 185 +192 194 196 196 186 189 189 192 200 200 202 199 +190 185 196 197 200 198 195 189 193 190 190 197 +200 197 198 191 186 182 180 187 193 201 203 208 +209 187 172 170 162 154 138 105 88 89 93 93 +95 104 103 110 109 112 109 109 113 107 105 103 +105 109 108 106 103 106 102 105 104 107 104 101 +100 96 99 99 96 103 108 111 116 117 123 135 +138 146 152 149 147 154 152 154 153 156 155 157 +158 160 155 155 151 148 150 148 148 146 142 140 +137 131 132 128 126 120 128 118 117 123 124 126 +130 129 140 140 143 143 148 150 152 144 147 146 +146 141 140 144 143 144 148 146 149 146 154 147 +148 146 140 140 140 143 141 142 146 138 143 141 +146 141 141 142 145 146 147 141 143 147 142 145 +145 145 152 148 149 144 145 148 148 150 147 148 +152 149 153 150 153 153 158 153 144 122 87 64 +47 45 44 42 40 38 47 41 43 51 41 37 +41 41 42 48 49 51 54 52 51 54 52 53 +54 47 51 45 43 44 46 45 40 42 46 48 +51 53 51 56 54 54 47 47 45 45 50 47 +49 54 51 63 61 67 66 70 59 50 47 37 +34 29 33 48 82 112 139 159 +171 171 166 165 +160 164 156 154 152 141 142 125 118 108 96 86 +81 77 82 88 78 79 81 84 94 107 115 124 +128 134 136 148 149 152 159 164 166 165 167 170 +164 165 169 165 166 169 163 161 160 167 160 159 +159 156 154 149 147 142 136 128 126 114 102 92 +84 72 77 71 73 78 83 80 83 85 85 83 +96 100 93 101 101 102 94 93 96 95 102 96 +99 97 101 97 100 98 100 98 100 100 102 103 +99 101 105 100 111 103 99 107 104 112 107 106 +106 112 114 108 114 118 116 119 110 117 117 117 +117 120 125 120 122 118 119 110 120 117 118 113 +124 118 120 123 118 122 123 119 122 127 123 123 +122 117 128 156 170 130 110 113 115 116 118 110 +105 105 110 103 104 109 109 113 110 115 119 117 +120 120 113 118 122 128 120 118 116 126 132 125 +123 125 125 124 132 130 128 135 140 122 122 132 +133 133 132 140 144 141 138 146 140 137 142 132 +132 124 137 143 131 132 137 145 160 152 146 144 +150 156 143 140 157 168 158 152 151 170 177 180 +171 167 172 179 184 182 187 185 182 181 181 187 +190 192 189 178 180 191 191 194 196 196 189 184 +188 188 193 200 197 197 191 195 192 195 197 197 +198 194 186 187 191 194 197 197 189 182 177 180 +185 184 192 197 204 209 212 215 218 217 214 213 +208 204 192 158 112 94 83 88 94 96 98 102 +108 106 106 107 110 99 112 107 107 103 106 101 +102 105 102 103 108 108 109 103 103 100 102 98 +100 112 109 111 116 115 126 133 139 145 145 150 +151 154 152 157 154 157 154 154 160 154 156 153 +152 152 152 154 151 148 140 140 134 131 127 127 +119 122 119 114 118 117 119 122 130 131 133 135 +143 144 146 149 149 150 147 146 146 142 146 141 +144 145 147 143 151 147 151 144 147 146 144 139 +144 141 142 140 143 142 141 140 143 143 145 143 +144 143 144 145 143 145 146 146 147 146 144 142 +143 144 145 145 146 149 146 148 149 149 153 156 +152 159 158 149 128 106 71 45 44 45 45 42 +44 45 40 53 47 41 43 39 40 46 49 53 +54 51 55 50 53 49 56 60 53 54 51 48 +44 45 44 42 48 43 54 54 53 56 68 53 +50 49 45 45 43 49 49 48 49 54 53 61 +67 71 65 56 47 40 38 36 34 40 48 74 +111 133 150 166 +166 166 164 164 160 159 156 150 +146 139 131 124 118 100 93 79 82 110 80 79 +78 73 80 90 97 102 113 121 129 134 138 146 +152 154 161 164 162 166 165 165 166 169 169 168 +164 165 163 166 160 161 160 164 161 160 153 152 +149 145 135 127 124 113 103 95 85 78 73 77 +74 75 83 80 84 86 86 88 93 95 94 91 +107 100 97 98 101 94 98 95 98 95 100 101 +97 102 101 100 102 98 99 101 97 106 100 101 +105 100 107 111 105 109 111 111 107 114 115 111 +114 120 118 118 112 117 113 111 113 113 122 121 +116 117 122 117 122 122 123 117 123 124 123 120 +117 118 121 123 127 130 123 122 125 122 142 169 +141 115 112 115 113 113 113 106 109 109 112 106 +103 108 113 115 111 120 124 117 117 120 112 121 +119 122 113 122 136 128 130 129 124 118 125 121 +128 130 138 133 124 127 137 129 120 128 140 137 +137 141 133 130 132 140 134 123 133 145 148 129 +116 132 138 155 146 136 146 149 147 142 152 156 +161 159 139 155 166 182 180 168 167 172 180 185 +182 183 177 177 180 187 193 195 186 181 178 181 +187 191 192 192 188 182 181 190 195 198 192 188 +193 194 191 199 198 198 196 194 189 189 190 195 +195 193 192 180 181 175 187 198 202 207 210 211 +214 215 221 218 223 226 227 228 226 226 222 202 +162 106 84 87 90 90 100 101 107 109 108 105 +109 106 110 101 104 105 100 98 106 103 108 107 +102 102 100 101 101 103 100 96 98 103 107 109 +116 119 134 131 136 141 143 145 150 153 151 157 +155 154 156 156 157 154 154 152 154 149 152 152 +148 147 141 140 137 128 126 121 119 116 113 110 +114 117 114 117 124 128 132 137 141 143 143 148 +152 146 148 145 143 142 147 145 146 147 144 145 +149 150 149 145 144 145 141 141 142 141 143 144 +142 142 144 144 140 143 146 145 145 147 145 141 +144 142 145 142 148 147 144 142 145 143 148 148 +145 152 150 153 152 153 153 158 158 157 149 136 +111 85 54 45 46 40 42 47 47 40 40 39 +43 40 43 40 44 50 51 56 47 51 54 55 +55 56 54 49 48 49 48 42 42 45 46 48 +48 52 59 50 57 58 50 49 51 46 53 48 +49 51 49 48 52 54 55 65 77 77 63 55 +42 37 38 33 35 44 70 98 125 148 159 168 +164 164 162 164 157 157 155 147 142 140 128 121 +108 93 81 78 80 79 84 85 84 80 80 88 +90 102 119 120 130 134 140 146 153 153 157 162 +162 167 169 168 172 169 168 165 170 166 165 165 +163 161 163 160 158 157 155 153 144 144 139 130 +121 115 111 96 89 80 70 74 78 79 75 85 +94 88 85 88 90 95 96 104 113 99 99 101 +97 98 104 96 105 95 97 101 98 104 99 98 +97 104 101 101 101 101 108 102 105 99 105 111 +111 110 111 114 109 118 117 113 115 113 113 114 +112 110 113 117 114 121 114 119 120 121 119 117 +120 115 119 122 122 121 123 122 121 119 123 116 +121 125 121 122 123 124 153 163 126 112 112 122 +110 108 107 108 110 106 104 110 107 108 111 117 +117 116 120 116 114 114 115 118 115 106 126 132 +122 115 135 125 118 121 124 118 134 136 127 121 +130 136 126 125 132 131 132 136 139 129 129 138 +144 136 118 133 145 149 139 137 136 143 144 144 +146 143 159 142 141 151 155 151 150 160 162 168 +172 168 156 169 181 184 189 189 175 175 187 185 +188 195 194 177 168 181 189 191 195 188 180 179 +189 192 187 193 200 198 181 180 193 197 198 200 +197 189 186 190 193 194 196 188 183 180 184 185 +192 197 209 209 210 211 213 215 215 217 218 218 +219 224 227 227 229 227 228 220 201 145 91 88 +88 88 89 92 100 105 103 101 106 108 108 104 +101 102 99 102 101 103 104 104 105 105 100 104 +101 105 96 96 106 106 104 110 108 119 130 129 +139 144 144 149 148 148 147 158 160 155 155 153 +157 156 155 154 154 149 157 152 156 148 148 139 +137 131 127 121 117 119 105 106 108 112 114 110 +116 123 126 132 139 143 142 145 145 153 149 148 +144 145 143 144 145 143 146 142 145 144 148 148 +145 145 142 141 143 140 146 145 145 140 140 145 +141 142 143 142 145 145 143 144 147 139 141 145 +146 147 145 144 146 148 149 148 150 151 151 154 +151 156 152 157 158 150 139 118 88 60 50 49 +40 42 47 48 51 44 39 42 44 56 39 39 +43 46 50 49 49 53 51 52 51 53 50 45 +49 44 43 47 44 45 43 50 47 58 57 53 +55 56 54 54 46 47 44 47 54 50 48 52 +59 56 57 70 78 73 62 55 38 36 41 44 +49 59 91 118 137 153 162 168 +166 166 161 158 +154 152 151 141 135 133 120 113 103 89 81 80 +88 85 86 89 83 81 73 87 97 102 110 123 +127 132 141 148 147 157 157 161 164 169 164 168 +166 167 168 171 170 169 165 165 162 164 160 159 +162 156 154 152 145 143 141 130 122 115 103 96 +87 79 73 76 73 81 83 83 87 89 87 88 +94 100 101 98 105 97 95 102 95 99 99 101 +105 97 93 102 101 99 98 99 103 103 100 100 +102 102 102 102 106 106 103 104 113 110 114 110 +121 113 116 122 126 112 111 113 117 113 116 111 +120 112 114 111 124 124 119 119 124 119 117 124 +124 121 120 122 124 118 120 123 122 126 125 123 +127 129 142 137 117 117 113 113 112 109 106 108 +99 103 105 116 111 105 113 123 119 123 120 118 +117 114 119 112 106 122 129 122 125 122 131 121 +118 121 131 132 135 122 129 133 128 119 118 130 +129 132 139 138 133 123 139 138 132 126 134 140 +132 130 141 136 139 137 141 149 148 148 142 139 +149 157 145 137 157 163 170 161 155 165 173 174 +182 180 173 178 179 188 193 192 192 186 181 182 +180 190 192 192 187 179 178 185 192 194 198 197 +194 180 183 196 204 197 196 189 184 187 192 197 +188 189 178 171 181 189 200 199 207 208 212 214 +215 212 213 215 216 217 215 216 216 219 222 226 +226 228 229 227 218 187 121 84 82 83 82 89 +96 97 101 105 105 104 100 100 98 102 99 101 +99 100 99 104 103 103 101 103 100 96 94 99 +102 104 107 109 107 118 124 132 137 137 146 148 +150 149 149 157 155 155 155 151 156 157 151 153 +152 150 150 151 152 151 145 145 136 136 123 118 +115 110 101 97 102 104 102 104 110 120 123 128 +135 139 139 142 148 148 150 150 147 147 146 143 +143 145 145 147 146 146 145 144 148 144 147 141 +141 142 145 141 142 143 145 144 142 145 145 139 +142 142 143 143 143 141 143 142 145 147 143 145 +148 149 149 149 148 146 150 150 151 156 157 158 +155 144 124 90 64 56 47 46 45 43 42 42 +44 45 36 38 46 50 44 46 48 52 51 49 +52 52 51 51 50 51 49 51 43 41 40 45 +42 42 43 54 47 56 62 58 48 45 50 55 +47 49 49 46 48 46 48 54 57 65 71 79 +85 76 59 51 41 36 36 49 62 86 107 131 +150 159 162 170 +161 161 163 158 151 150 146 142 +134 126 116 109 96 94 81 77 83 82 84 85 +85 88 80 86 95 106 115 126 133 136 143 145 +152 154 158 164 163 164 168 165 165 170 167 166 +167 167 168 164 164 164 162 160 162 157 153 149 +146 141 138 125 122 114 107 93 87 86 77 74 +66 75 77 83 82 83 88 92 94 93 95 95 +92 97 96 91 98 97 98 103 104 99 98 100 +93 97 99 101 101 105 101 102 98 102 102 104 +104 107 107 108 103 112 110 109 112 107 112 114 +117 118 111 119 120 111 118 117 124 122 119 120 +123 120 119 118 125 127 120 124 119 128 121 123 +117 118 118 119 122 130 125 124 128 139 134 124 +122 116 110 106 110 105 109 110 105 106 111 110 +108 110 114 117 115 125 113 112 114 119 114 111 +124 127 126 128 123 126 125 124 119 126 135 122 +118 133 131 124 121 126 126 120 126 136 135 123 +129 136 141 131 132 147 149 127 119 133 134 134 +129 134 153 152 138 138 149 146 159 145 148 158 +168 164 148 140 172 175 182 180 175 170 177 190 +191 195 192 183 176 173 187 187 191 189 181 175 +179 191 190 193 194 191 190 192 187 190 194 195 +195 192 184 182 190 190 186 182 181 176 183 192 +201 207 211 210 210 211 209 213 218 215 211 212 +210 214 215 214 214 216 219 223 226 225 230 230 +226 213 161 97 82 76 81 86 92 96 100 99 +104 103 102 98 101 104 103 101 99 101 102 103 +98 100 104 100 102 95 101 100 105 102 108 114 +115 114 131 128 135 136 144 146 148 150 155 153 +153 156 157 152 156 155 153 157 153 151 153 151 +156 149 144 144 137 134 127 120 112 108 103 93 +96 90 99 100 103 113 121 128 130 131 135 142 +145 151 154 150 147 147 148 144 143 141 144 144 +143 139 144 148 147 143 144 142 143 144 141 140 +143 143 144 142 145 144 149 144 144 147 147 143 +140 144 139 149 145 142 143 144 146 148 144 151 +150 144 151 150 152 157 157 151 141 131 109 71 +45 42 46 49 43 43 45 48 41 42 41 47 +53 53 45 49 44 49 57 60 45 48 50 60 +48 52 50 53 51 56 46 45 41 42 47 51 +52 56 55 57 48 47 44 50 47 46 46 44 +49 48 50 53 61 68 74 89 81 73 61 51 +42 44 48 67 89 112 133 145 151 159 165 169 +158 158 164 154 150 150 146 133 132 119 112 106 +89 83 79 81 83 82 83 80 83 85 84 88 +99 105 114 126 130 134 143 150 149 154 156 163 +161 165 165 168 167 166 166 165 166 170 166 164 +166 163 165 163 159 155 155 151 148 138 138 125 +119 115 103 89 87 79 74 75 68 75 80 84 +89 87 92 91 94 88 93 100 96 97 96 103 +101 94 92 93 98 106 100 104 97 102 103 102 +96 106 101 99 97 104 103 104 105 106 108 110 +112 111 108 109 112 110 114 114 114 113 111 111 +115 112 122 119 121 114 123 129 124 121 123 123 +127 119 121 119 122 122 119 121 119 118 123 119 +124 126 126 125 131 140 126 116 117 106 109 112 +103 109 109 114 109 110 111 110 120 114 117 118 +128 123 112 115 112 110 119 129 128 121 119 122 +123 119 123 114 118 126 123 115 133 129 127 126 +130 128 118 122 132 130 127 135 135 135 122 133 +135 141 130 125 138 137 134 123 138 150 161 140 +126 139 146 146 149 150 157 165 163 141 142 162 +169 174 169 170 170 180 186 193 189 177 171 182 +183 186 192 197 182 171 179 184 187 196 197 191 +184 179 183 194 195 197 198 190 183 182 186 188 +187 180 176 183 193 195 201 210 210 214 210 216 +211 210 209 210 215 215 214 210 210 212 214 214 +217 215 215 220 223 227 225 227 225 220 187 131 +89 74 82 89 91 92 99 97 99 102 103 100 +107 101 100 98 104 104 101 102 100 100 97 101 +102 94 93 91 96 101 109 109 112 115 127 131 +134 136 143 148 148 149 152 155 155 153 153 151 +156 155 152 152 155 154 153 155 152 150 147 142 +140 134 128 121 113 101 96 93 91 91 84 88 +97 110 109 119 130 135 138 140 146 145 149 147 +150 145 148 142 143 141 144 141 145 143 145 147 +145 145 144 143 141 144 144 141 147 143 140 144 +146 140 146 147 144 140 147 145 144 148 142 146 +146 145 146 147 147 145 148 150 149 144 153 150 +157 156 154 146 128 110 79 53 44 42 49 52 +39 44 57 38 44 44 37 57 42 48 46 51 +49 57 56 53 50 49 53 52 55 54 53 46 +46 47 45 39 42 47 54 65 53 60 59 55 +48 45 40 49 50 48 42 42 50 47 55 59 +68 77 80 81 79 70 61 47 39 48 60 88 +110 132 145 148 152 159 165 170 +163 163 158 157 +151 144 138 131 123 113 103 94 79 80 83 82 +81 82 84 83 87 82 87 86 93 105 110 125 +132 133 142 144 150 155 157 161 163 169 170 167 +166 167 165 170 169 167 164 168 165 163 162 161 +157 157 155 150 144 137 138 128 122 114 103 90 +87 81 77 77 75 76 80 86 87 88 91 93 +94 95 97 93 92 99 102 105 113 93 98 97 +103 103 94 103 95 98 98 100 99 99 103 99 +103 103 106 104 105 108 103 105 110 107 110 111 +110 111 110 112 116 117 113 118 116 113 118 111 +116 117 120 119 119 118 118 117 121 121 123 123 +124 114 119 113 121 125 124 121 124 122 127 122 +133 127 122 117 110 107 115 110 105 110 104 116 +110 114 112 115 119 114 120 124 117 117 121 113 +110 121 124 124 124 116 117 125 121 124 122 119 +120 119 118 130 126 113 125 130 125 118 124 136 +127 120 138 140 130 118 125 137 131 124 132 134 +142 134 121 138 143 145 141 131 139 140 140 127 +146 148 157 152 143 160 173 171 173 155 165 173 +180 189 196 184 170 168 179 186 191 193 187 181 +169 185 192 194 194 189 180 174 181 189 194 194 +195 191 184 177 178 183 179 177 175 183 187 198 +207 207 210 212 213 214 209 208 212 209 210 208 +208 213 215 211 209 209 211 214 215 215 214 215 +219 224 224 226 226 221 205 171 116 80 75 85 +88 88 94 99 99 103 98 100 105 100 100 107 +100 99 97 99 103 103 98 102 100 98 96 97 +95 105 104 108 111 112 128 132 140 137 143 146 +146 147 153 152 153 156 150 152 158 156 153 153 +151 154 152 154 154 149 144 144 145 138 131 123 +118 105 89 88 81 85 81 86 88 96 107 112 +120 131 133 139 142 143 146 150 149 148 145 143 +145 143 139 144 144 146 143 149 146 145 143 142 +141 141 145 141 146 144 141 147 144 141 145 146 +146 143 144 143 143 144 145 145 148 146 148 146 +151 147 147 152 147 146 156 157 156 157 148 141 +114 88 55 41 42 41 47 41 39 40 40 46 +41 44 46 42 51 46 46 52 47 52 51 57 +51 48 54 49 54 51 49 50 42 46 49 42 +44 48 52 58 55 56 59 50 45 46 54 45 +53 46 45 47 53 54 59 65 60 77 70 77 +75 64 57 48 48 59 83 107 126 137 149 151 +155 161 160 167 +162 162 152 154 149 142 137 127 +118 113 97 94 84 79 83 79 84 92 86 81 +76 84 85 85 94 105 114 120 133 134 142 146 +150 153 157 162 160 164 168 167 167 164 169 166 +169 167 164 163 168 164 160 160 161 156 150 147 +143 137 135 124 118 109 106 93 81 80 72 75 +78 72 81 85 87 89 88 95 96 96 96 95 +95 96 98 105 102 96 103 100 99 96 94 104 +103 99 94 101 94 101 99 104 103 103 102 105 +101 105 107 111 113 110 119 105 116 114 115 112 +111 112 113 115 112 114 113 120 117 117 122 119 +125 120 119 120 124 122 122 121 124 120 121 122 +125 123 124 119 129 127 126 133 125 121 116 111 +107 105 106 107 113 114 108 110 111 110 115 119 +120 115 124 117 125 118 115 108 126 125 121 123 +126 110 115 129 120 119 123 115 116 124 126 120 +108 110 123 128 122 132 130 131 127 138 146 133 +125 131 141 134 122 131 140 136 130 126 136 141 +137 134 138 142 142 130 131 135 150 154 135 136 +161 161 164 157 156 166 163 172 179 181 185 177 +183 186 187 192 194 178 179 184 186 192 197 193 +182 174 180 185 194 195 196 188 178 173 179 178 +170 165 173 188 195 200 202 206 212 213 213 214 +212 211 208 204 209 210 210 210 207 209 212 212 +210 207 208 209 214 215 213 214 218 222 225 226 +225 224 219 204 164 102 77 79 83 86 88 90 +99 100 96 99 100 99 101 100 101 101 97 98 +99 97 98 100 96 99 93 89 92 101 106 113 +112 115 128 128 137 137 141 150 148 150 148 154 +154 156 154 150 152 153 153 154 150 152 149 157 +154 148 145 146 141 135 134 126 117 108 94 85 +78 80 82 78 82 86 102 112 116 128 132 137 +137 144 141 144 155 144 146 146 146 143 141 147 +146 147 147 149 144 143 146 141 143 141 144 140 +146 142 141 142 143 139 144 138 143 147 146 154 +145 144 143 145 143 145 143 145 144 150 144 148 +147 154 155 154 156 156 145 127 104 65 51 46 +49 39 41 40 38 35 37 40 43 40 41 43 +47 49 48 54 56 52 52 54 63 52 50 51 +48 45 47 41 41 43 44 39 48 51 57 54 +59 49 48 43 39 45 50 43 48 44 48 47 +52 58 64 65 69 74 64 76 70 58 47 47 +67 82 108 124 135 144 149 151 156 157 158 160 +153 153 153 149 143 142 131 123 115 101 95 87 +78 76 85 81 87 84 84 85 84 88 88 91 +98 110 114 124 126 130 141 149 151 153 156 157 +164 166 167 168 168 166 167 170 166 166 166 167 +166 162 162 159 156 155 154 148 141 140 133 126 +117 108 113 103 83 83 73 72 73 73 77 85 +86 90 90 90 99 95 94 95 99 99 97 98 +102 92 101 98 104 99 96 99 105 105 105 100 +99 95 98 103 98 99 103 101 100 98 101 111 +110 111 111 109 113 119 116 112 112 114 112 124 +117 113 115 119 122 113 120 120 121 123 122 118 +124 114 121 122 123 125 121 119 127 123 121 121 +122 131 128 137 124 113 111 109 111 107 101 109 +109 111 111 108 112 118 117 123 121 116 114 118 +115 113 116 122 123 119 121 115 113 119 121 116 +122 122 115 109 122 124 118 116 123 122 117 124 +132 133 122 133 136 138 136 127 147 140 138 130 +139 144 140 123 123 140 140 138 128 139 139 140 +132 128 141 149 153 140 134 152 161 157 151 152 +165 172 172 180 167 169 176 187 188 193 185 188 +182 176 188 189 197 199 194 181 179 190 193 192 +190 184 182 176 171 172 170 169 175 180 194 200 +208 209 212 210 206 213 212 212 211 210 209 204 +206 210 211 211 207 207 209 211 211 207 202 207 +207 210 214 215 216 217 224 224 224 222 227 223 +202 145 88 82 86 80 86 85 92 93 96 98 +93 100 100 98 96 98 100 94 100 97 96 97 +100 97 97 91 96 101 110 109 110 119 125 127 +133 139 143 144 147 150 153 159 156 152 154 151 +152 154 152 151 151 153 153 154 150 149 144 145 +140 137 131 125 115 106 89 85 83 63 68 67 +71 82 91 106 117 124 129 134 134 139 146 143 +149 148 144 152 147 146 142 145 145 146 147 147 +147 144 146 144 140 141 146 141 148 142 140 144 +142 139 146 146 146 145 144 142 139 145 142 149 +145 144 147 148 146 150 146 149 148 149 156 155 +153 149 127 107 81 50 48 41 45 35 35 36 +34 39 41 47 54 43 44 48 52 54 49 51 +54 52 54 44 49 57 48 47 48 49 49 45 +43 46 52 43 48 48 53 50 55 49 48 46 +45 47 50 45 48 52 50 51 54 61 68 72 +72 75 65 64 66 60 62 69 82 102 119 138 +142 154 148 149 153 150 156 157 +153 153 149 148 +141 136 125 118 104 94 85 81 79 82 87 88 +86 85 90 83 88 86 85 92 94 102 113 119 +124 137 141 143 150 155 157 161 163 167 168 166 +167 170 166 170 166 167 166 164 166 164 163 161 +156 154 152 147 143 140 136 125 116 112 104 101 +93 86 82 75 79 80 82 85 84 86 88 93 +92 94 99 95 93 98 100 98 101 96 102 93 +98 100 93 102 106 110 104 104 105 100 104 102 +101 96 105 109 101 103 107 108 110 112 110 113 +111 115 118 116 115 114 110 116 118 116 117 122 +114 117 118 126 114 118 121 122 125 119 121 121 +119 124 121 122 124 126 127 123 119 130 131 125 +119 109 101 107 109 110 104 113 113 104 108 109 +109 107 116 124 114 120 120 118 109 123 125 128 +123 125 116 119 126 123 123 124 120 123 113 119 +128 115 108 129 126 129 126 129 133 123 131 134 +129 135 129 148 141 132 131 136 139 148 125 123 +139 142 132 126 132 151 143 134 131 139 146 150 +140 142 150 164 168 149 153 166 166 174 169 163 +170 180 190 192 186 177 169 184 187 190 190 195 +195 186 189 188 190 191 186 182 174 169 173 172 +170 168 179 189 196 199 207 210 210 212 211 213 +207 209 209 208 209 205 208 209 208 205 210 209 +206 208 207 209 211 213 206 204 206 207 210 216 +217 214 220 224 224 222 224 225 216 186 118 84 +79 81 86 86 87 92 95 91 92 93 102 97 +97 100 97 100 102 101 99 96 95 98 99 98 +96 97 104 106 113 113 127 129 130 138 138 143 +151 148 153 160 155 157 152 152 151 151 152 151 +158 155 153 152 151 149 146 142 140 139 127 126 +120 105 95 82 70 57 64 61 61 77 90 100 +110 118 127 133 131 140 143 144 147 146 146 147 +144 150 143 139 143 147 149 146 150 145 146 143 +143 143 145 143 146 141 140 141 141 143 144 140 +147 147 144 142 140 147 142 142 145 149 145 147 +149 155 149 152 154 153 156 158 151 138 116 84 +54 42 41 35 41 41 44 39 41 40 40 43 +42 45 45 59 55 51 60 54 54 55 54 48 +53 54 54 52 51 46 45 36 41 45 50 50 +53 56 60 56 50 49 41 43 45 42 47 46 +52 51 52 50 61 61 70 78 81 79 66 63 +55 60 75 91 106 118 133 140 149 151 147 148 +149 151 149 160 +149 149 148 144 137 128 116 110 +99 87 78 80 85 85 85 86 88 95 87 87 +84 80 91 91 88 102 112 119 127 139 143 145 +151 154 160 160 164 168 168 169 166 168 170 168 +169 167 167 165 165 166 162 166 157 153 154 149 +143 139 134 128 120 114 106 96 89 85 79 76 +84 74 81 86 91 87 91 92 88 92 92 91 +97 97 100 97 96 101 99 96 101 98 100 103 +108 103 103 100 100 102 99 98 100 101 102 102 +104 106 104 107 106 106 110 113 111 111 112 112 +115 114 114 116 117 115 114 117 114 116 118 118 +121 120 122 120 125 118 120 122 121 122 120 124 +132 122 122 124 127 129 130 116 115 105 104 105 +101 110 109 104 114 106 113 112 123 113 121 117 +113 112 115 114 126 125 120 124 120 114 121 123 +116 124 121 120 117 119 125 116 114 110 122 130 +123 130 134 131 128 131 136 127 126 136 140 149 +129 129 135 141 142 131 134 136 142 129 130 137 +140 146 134 134 141 145 145 129 146 154 157 167 +147 149 156 164 171 157 157 172 171 187 195 181 +166 164 176 187 188 190 181 187 178 187 194 193 +195 185 165 160 171 169 165 168 180 189 201 204 +206 208 219 216 208 214 208 209 206 205 204 208 +208 206 208 211 210 208 207 207 208 205 204 207 +210 212 212 210 202 203 206 212 215 218 215 223 +224 224 221 223 224 209 167 109 87 74 79 78 +86 86 97 89 92 98 95 97 95 94 94 98 +105 102 94 97 96 92 98 88 96 98 104 112 +112 114 124 129 132 138 140 146 151 153 151 159 +155 154 154 151 152 156 154 153 153 154 151 153 +153 150 144 145 142 137 131 128 118 102 96 79 +64 53 57 57 58 65 85 92 114 112 123 126 +132 136 138 142 147 148 147 147 147 145 143 145 +143 144 142 144 145 147 150 144 140 142 141 141 +145 149 145 138 143 144 144 142 145 149 149 144 +141 146 144 142 142 149 140 145 145 146 148 151 +154 157 157 155 144 127 94 55 41 42 36 36 +38 40 42 38 41 39 37 45 40 47 44 51 +50 53 62 51 65 53 56 52 57 54 53 50 +44 41 38 38 46 49 52 53 53 57 56 46 +47 45 41 52 55 43 50 58 66 77 72 60 +63 64 69 81 90 61 70 60 59 73 80 102 +119 132 141 145 152 152 144 146 146 146 148 156 +149 149 146 140 132 123 114 104 87 82 81 81 +86 90 87 91 89 90 94 88 85 82 90 93 +98 107 116 124 127 132 136 144 151 152 161 163 +164 165 164 169 168 165 164 168 165 163 161 165 +167 164 164 160 159 158 149 149 145 137 132 128 +123 115 109 97 91 82 77 75 83 81 82 83 +92 88 89 91 95 92 96 94 97 97 99 95 +100 102 100 100 101 95 98 108 100 107 103 101 +99 100 96 99 102 100 101 102 100 108 108 109 +107 110 108 110 116 110 115 115 112 112 114 116 +119 111 114 121 116 118 118 120 122 120 116 119 +115 123 122 117 125 126 123 124 121 125 125 123 +126 126 124 113 112 106 105 104 100 109 103 107 +114 115 112 118 117 113 121 118 106 108 124 122 +125 124 118 121 115 124 121 119 120 121 115 107 +116 125 115 109 117 120 121 119 126 129 125 132 +137 139 127 118 140 145 146 135 132 141 136 139 +136 135 135 141 135 127 142 145 151 144 137 143 +144 144 132 135 153 150 155 149 154 158 155 163 +164 163 172 175 180 172 176 179 175 181 183 190 +179 172 177 181 186 191 191 191 186 170 158 157 +159 165 175 189 198 201 211 212 211 212 216 215 +209 208 209 202 197 202 202 203 207 205 208 208 +208 210 204 203 205 209 203 205 207 211 212 213 +210 203 205 210 214 215 214 216 220 222 222 220 +221 217 199 161 108 77 75 80 80 83 88 90 +91 94 97 102 97 97 98 98 100 94 91 98 +96 93 93 91 96 99 102 107 114 116 123 128 +132 136 142 143 150 149 153 153 153 155 152 148 +150 152 152 153 152 153 154 154 152 148 145 144 +140 140 138 128 123 108 97 80 66 60 55 47 +51 57 77 88 99 110 118 122 138 131 138 142 +143 151 150 148 149 146 146 147 141 144 141 144 +143 147 146 144 139 142 139 143 146 145 144 141 +144 144 140 143 142 146 143 141 140 140 142 142 +143 143 144 146 147 146 153 152 153 158 158 146 +135 109 72 52 43 49 37 38 39 42 40 40 +41 41 40 44 50 47 54 58 59 51 55 49 +45 54 55 50 51 57 52 49 46 45 40 40 +48 55 50 54 60 52 55 45 48 45 45 43 +44 48 45 56 60 70 69 80 66 64 68 84 +71 65 68 66 75 90 104 118 130 140 144 155 +152 148 147 144 145 145 150 145 +146 146 142 130 +124 114 105 94 88 85 78 80 86 89 86 91 +91 88 91 82 82 79 85 90 99 105 109 125 +128 136 140 148 149 158 159 162 161 168 165 167 +171 166 165 165 168 162 168 164 169 169 164 162 +156 155 154 146 141 138 135 130 124 114 106 96 +89 87 77 77 71 77 77 80 82 87 92 95 +90 95 93 96 92 96 93 97 96 101 99 103 +104 103 103 106 104 102 98 101 103 103 98 103 +103 102 105 99 106 111 106 106 107 110 115 104 +107 113 110 116 113 115 116 116 117 115 111 120 +117 118 121 121 121 116 120 121 122 117 122 120 +121 128 119 124 122 125 128 132 123 116 116 109 +110 108 113 107 106 111 105 103 114 110 112 115 +109 110 120 111 108 118 128 121 124 122 113 119 +115 115 122 130 124 116 114 113 120 114 111 116 +118 119 125 132 122 123 133 132 124 125 128 129 +138 137 137 137 140 138 127 126 137 138 136 131 +124 143 149 141 132 141 140 142 144 135 139 154 +154 153 142 154 162 159 149 154 163 167 174 175 +166 163 171 180 179 187 185 178 166 176 183 189 +192 185 176 169 175 169 156 153 173 190 193 202 +209 209 209 215 213 211 211 214 210 206 205 205 +199 199 202 205 208 207 205 203 205 208 208 204 +202 206 206 206 205 207 208 212 212 210 205 201 +206 211 211 209 214 217 224 224 222 221 216 198 +153 104 80 75 77 84 85 80 92 92 91 97 +96 98 97 94 97 99 93 101 97 95 93 92 +96 100 104 106 116 117 124 127 135 139 141 148 +149 153 155 156 152 155 155 151 155 155 151 153 +153 155 147 150 152 148 145 150 144 138 132 128 +124 112 101 88 69 60 50 45 55 56 65 81 +87 101 117 117 123 130 139 136 141 146 151 145 +152 151 147 146 141 145 143 145 142 146 143 148 +145 142 142 141 144 144 142 144 141 144 142 144 +141 143 144 146 139 141 145 142 144 145 145 147 +151 148 154 152 155 155 150 141 111 80 52 39 +43 38 38 43 48 50 39 45 40 43 49 46 +47 53 59 58 59 51 53 57 52 56 55 56 +53 50 52 48 41 48 38 46 49 59 57 61 +54 48 47 43 44 37 40 44 46 45 52 67 +64 63 60 69 70 66 74 85 74 74 66 80 +90 106 124 126 140 147 149 152 152 149 144 141 +143 141 140 141 +142 142 138 130 123 113 100 89 +85 78 85 87 86 87 91 85 90 87 88 83 +85 88 84 91 94 106 111 123 129 140 141 149 +148 150 161 158 162 166 165 168 165 168 168 166 +162 165 166 166 165 166 164 160 159 155 151 146 +148 138 129 130 116 113 105 94 86 83 78 74 +73 76 81 87 84 86 92 91 88 96 97 99 +96 95 94 101 95 96 100 108 100 97 102 100 +109 101 102 106 99 100 102 97 103 97 102 99 +106 107 110 111 105 111 109 105 110 117 111 118 +121 112 115 116 118 117 116 115 119 121 119 118 +122 119 120 123 123 125 125 122 117 121 121 121 +122 133 127 128 119 109 108 114 112 101 110 102 +104 113 107 111 111 115 116 114 117 108 111 108 +121 116 118 121 117 118 112 115 108 112 127 123 +107 114 126 116 111 112 117 118 115 121 129 124 +123 132 136 126 115 133 135 141 132 133 143 135 +136 122 127 140 141 145 127 134 138 145 150 133 +132 139 143 141 139 150 150 154 141 131 145 152 +152 151 139 158 162 169 164 152 163 171 175 183 +184 178 170 174 175 183 190 192 173 164 158 158 +160 155 165 184 195 199 202 203 212 215 211 211 +212 207 205 207 205 207 205 203 206 202 199 206 +207 209 206 204 205 206 206 208 202 201 205 208 +205 206 207 203 209 212 207 204 204 211 213 208 +210 214 223 227 222 219 222 217 196 148 91 74 +82 76 79 84 88 87 87 91 98 95 94 93 +93 94 93 94 94 96 94 98 101 94 103 109 +112 116 120 127 134 136 141 146 149 151 152 154 +152 154 155 156 154 155 153 152 148 150 148 154 +151 149 147 148 145 133 130 125 122 108 106 82 +73 63 51 45 48 53 58 71 87 95 109 115 +119 128 132 136 141 143 148 148 150 151 149 146 +143 144 141 147 145 143 147 145 143 142 144 142 +142 142 146 143 145 144 143 148 143 148 149 145 +144 138 144 148 144 144 145 147 148 149 152 156 +155 152 140 127 90 60 49 53 44 39 48 41 +40 39 43 45 43 48 45 53 58 60 58 51 +53 57 47 60 52 53 54 49 50 46 44 47 +45 43 43 52 60 62 58 57 52 51 50 45 +44 51 48 50 47 62 54 57 59 59 61 65 +70 66 73 80 73 74 76 88 103 114 126 137 +143 149 152 151 156 148 143 141 137 136 141 142 +136 136 134 125 114 98 90 88 83 83 84 86 +85 89 89 87 90 90 90 86 86 88 85 90 +96 107 112 121 124 136 141 146 151 149 156 154 +163 164 164 168 165 169 167 164 164 166 165 167 +165 165 166 162 156 154 150 147 143 137 129 127 +116 110 106 96 89 79 79 73 73 77 84 87 +92 89 94 91 93 95 95 96 97 93 92 99 +105 98 103 104 101 96 107 105 104 102 103 97 +102 101 96 103 101 98 101 105 107 107 109 110 +105 105 106 112 110 113 113 120 114 115 116 116 +111 117 118 114 122 118 125 126 125 122 122 120 +120 114 123 121 121 118 115 122 124 129 130 123 +115 103 110 107 102 106 110 105 106 112 106 107 +116 110 113 115 112 106 117 121 125 122 119 113 +116 117 112 109 117 125 118 110 113 114 113 108 +120 122 123 118 120 122 125 130 136 127 123 114 +125 139 136 133 137 145 138 126 128 132 145 144 +139 137 141 145 145 142 138 142 140 145 142 138 +151 150 153 146 139 147 145 147 150 154 153 165 +168 151 149 165 171 177 187 188 171 173 180 177 +178 191 191 177 158 158 154 151 160 174 181 197 +207 207 207 206 208 216 214 207 206 206 203 201 +200 203 204 206 209 208 197 198 207 208 207 206 +206 207 204 207 207 203 201 206 208 208 205 201 +203 207 209 209 208 213 216 211 214 217 220 225 +225 222 218 220 215 175 111 84 78 78 80 83 +83 89 90 89 88 88 90 102 99 97 99 95 +97 97 94 95 96 95 100 103 111 114 125 128 +133 136 138 145 149 151 153 155 158 154 154 156 +154 157 153 150 153 152 152 151 151 149 150 148 +142 136 136 127 123 114 100 92 80 57 51 41 +42 44 52 66 76 91 102 107 113 122 127 134 +137 146 149 148 143 151 150 147 144 142 140 144 +144 145 143 145 143 142 142 137 143 143 140 143 +146 148 142 144 140 146 146 144 145 142 147 147 +146 152 145 150 150 156 153 155 154 143 125 102 +69 47 42 38 60 60 72 70 60 41 44 42 +42 45 52 59 54 62 55 52 53 54 56 57 +58 47 54 52 54 47 45 50 45 45 43 55 +54 57 60 50 54 47 51 43 44 44 48 44 +41 55 63 57 59 57 60 68 76 77 75 77 +80 80 90 100 114 130 133 144 148 149 151 150 +155 150 138 136 128 135 148 152 +135 135 130 119 +111 98 91 82 84 82 82 92 87 93 86 88 +90 90 86 85 87 88 82 86 97 102 111 116 +125 132 140 142 146 152 155 160 163 162 165 164 +164 170 167 165 165 166 161 164 164 161 161 164 +160 156 153 151 143 141 133 129 120 114 109 97 +91 78 72 72 77 78 80 85 86 92 88 95 +92 97 100 97 97 95 96 100 105 95 100 105 +101 95 101 100 102 104 103 93 100 100 96 102 +103 98 103 108 103 105 104 106 106 111 111 106 +112 115 109 113 114 120 116 118 115 114 116 121 +121 119 121 121 123 120 120 123 117 114 128 123 +119 124 121 127 124 131 122 110 106 108 115 107 +105 106 111 110 112 115 109 108 113 113 117 112 +105 115 122 124 130 118 115 113 123 115 115 123 +114 121 119 120 114 101 106 119 116 120 125 129 +121 121 128 133 126 121 115 121 128 133 130 138 +145 139 133 127 139 141 143 136 131 136 141 138 +135 141 144 146 150 140 141 143 145 150 147 143 +152 153 150 139 150 151 157 169 159 150 166 167 +178 185 180 174 168 181 181 175 177 189 173 160 +149 145 155 175 188 194 198 201 205 209 208 205 +202 211 211 204 199 200 203 205 203 203 206 208 +204 207 204 199 202 207 208 211 207 206 205 207 +204 205 200 201 202 206 205 203 205 206 211 215 +216 213 218 212 216 220 223 227 229 227 220 220 +218 203 157 101 79 73 80 78 81 83 81 87 +84 88 86 90 93 92 88 93 93 93 90 87 +92 100 102 103 111 118 123 130 132 134 142 142 +148 152 156 156 157 154 157 157 156 155 156 152 +151 153 151 153 154 155 153 148 148 146 136 134 +124 114 102 91 78 57 44 40 39 48 44 60 +75 84 99 107 113 117 122 132 133 141 146 145 +144 151 149 149 149 143 146 143 145 147 142 142 +145 142 142 141 144 144 141 143 142 144 139 142 +148 144 144 147 141 144 146 146 146 150 151 152 +148 153 161 154 148 133 107 72 50 41 47 48 +82 85 59 62 57 58 47 43 43 50 53 53 +51 55 52 50 51 48 53 54 54 58 54 47 +47 44 47 45 41 49 52 53 55 58 56 54 +49 44 48 45 47 56 51 48 46 56 62 55 +62 66 67 74 76 74 75 67 82 91 100 112 +121 133 143 145 147 146 148 155 155 152 143 129 +133 137 150 154 +130 130 124 115 101 93 79 83 +87 90 85 89 92 92 90 85 93 90 81 83 +89 86 87 89 92 104 114 124 124 132 142 145 +152 150 154 158 162 165 166 164 163 166 167 171 +164 166 165 164 167 166 161 161 157 160 152 148 +143 137 134 126 123 111 99 98 92 80 76 77 +70 75 83 87 84 86 89 95 96 95 96 96 +96 94 93 98 97 93 98 103 97 97 98 98 +100 102 98 102 98 94 100 97 104 98 101 106 +106 106 105 106 107 106 109 110 107 116 107 115 +116 115 115 116 114 116 117 118 119 117 119 121 +124 118 124 124 121 117 119 120 123 121 123 121 +127 126 116 105 107 110 111 102 104 110 110 112 +114 121 110 114 113 116 112 108 117 120 118 122 +119 116 116 116 117 117 121 116 107 121 120 106 +99 102 115 114 115 125 129 129 123 126 136 124 +118 129 133 130 126 129 141 141 141 133 130 144 +148 146 135 133 138 148 140 131 133 150 145 151 +140 146 148 146 148 137 138 140 143 143 136 146 +150 149 149 157 160 166 176 182 179 172 167 182 +181 183 179 172 162 166 161 151 143 168 188 198 +201 203 204 199 200 204 207 206 204 198 204 205 +201 201 207 209 213 211 206 206 203 200 204 204 +198 203 205 206 204 203 204 205 203 203 202 202 +199 203 209 208 212 206 214 215 216 213 218 217 +216 219 223 225 228 229 225 221 219 219 193 142 +88 75 75 78 74 85 82 83 85 88 89 88 +89 84 87 88 90 90 92 95 93 99 103 103 +115 118 123 129 133 139 143 147 149 153 153 156 +159 151 156 153 153 152 155 155 156 152 157 151 +153 152 145 151 145 146 140 132 124 119 103 93 +77 63 47 44 40 45 45 58 70 83 98 99 +105 115 117 130 132 141 144 145 145 148 150 151 +149 144 145 139 151 144 146 142 144 140 145 142 +144 140 141 142 144 146 138 149 146 144 148 146 +145 145 142 145 146 148 148 150 152 156 156 157 +141 118 89 61 42 51 51 42 41 49 44 45 +47 45 46 42 45 49 47 51 54 50 51 55 +48 51 52 52 57 56 54 48 48 42 45 43 +46 51 60 56 59 51 48 46 46 48 46 51 +47 52 55 50 49 53 53 60 61 73 63 69 +78 75 83 80 87 99 109 120 130 139 142 144 +153 147 150 150 153 148 135 133 141 150 156 160 +122 122 119 105 98 87 86 84 84 81 92 91 +92 97 90 86 90 91 91 88 91 88 84 87 +88 100 111 124 127 130 140 148 147 156 161 159 +165 161 164 162 168 168 167 169 164 162 162 160 +163 162 163 163 159 157 152 151 143 138 133 120 +121 111 100 95 93 83 78 72 77 81 85 88 +89 91 91 95 98 95 97 100 102 98 93 91 +101 94 98 100 97 96 95 101 102 99 89 99 +101 99 99 98 105 101 104 108 104 103 100 106 +105 109 117 113 112 115 110 121 115 116 117 115 +117 115 118 118 121 119 115 121 115 118 123 122 +121 118 122 120 119 125 123 129 126 116 109 110 +106 106 109 109 111 109 115 109 115 110 111 119 +111 111 107 118 117 118 122 116 115 121 118 122 +119 116 115 115 114 118 110 104 109 117 116 111 +126 125 121 132 132 135 126 119 131 133 132 128 +131 140 147 145 134 141 143 146 139 138 137 145 +146 147 141 138 148 149 147 140 147 148 136 137 +136 136 141 142 137 138 143 150 152 138 145 161 +160 172 171 166 162 167 182 172 185 177 164 155 +152 150 144 149 176 195 200 204 204 206 206 204 +201 198 202 205 203 197 197 199 205 210 210 211 +214 212 206 207 208 202 200 202 198 197 201 198 +203 201 200 197 198 200 201 204 209 208 214 216 +217 207 212 216 217 210 212 215 216 216 222 222 +223 227 224 224 220 222 217 190 130 76 71 74 +77 79 78 76 85 83 85 84 89 85 87 94 +91 91 89 91 95 97 102 104 114 117 126 127 +138 140 144 144 149 152 154 155 159 155 153 151 +157 155 152 151 151 156 151 153 153 154 146 143 +143 139 135 134 126 119 105 92 73 54 49 40 +37 44 48 55 58 83 97 96 103 107 119 123 +127 140 139 143 145 148 149 148 147 146 145 143 +146 144 142 144 141 141 143 145 146 140 142 143 +146 146 140 143 143 145 142 146 145 143 144 145 +148 150 150 149 156 158 159 151 136 100 65 42 +40 47 38 41 45 39 51 44 39 41 42 47 +42 53 52 51 53 51 54 51 46 51 55 52 +50 48 45 46 44 47 45 48 50 53 58 61 +68 66 46 46 48 50 53 57 50 52 46 48 +50 46 52 65 61 67 72 73 80 81 82 86 +99 112 121 133 141 141 145 148 145 149 152 153 +151 138 133 139 150 156 158 163 +121 121 109 97 +86 82 81 85 85 81 88 105 99 90 92 91 +91 90 86 88 82 86 84 86 99 99 113 117 +126 133 139 145 145 152 153 156 156 161 163 164 +167 170 166 166 167 164 170 165 167 166 159 161 +159 156 154 150 144 138 132 126 121 107 105 97 +87 82 78 75 84 78 80 84 91 94 92 100 +96 98 100 99 101 98 102 97 102 94 94 104 +97 98 95 103 104 103 93 96 107 102 99 98 +96 103 105 107 109 103 103 106 110 106 110 109 +121 118 108 116 111 115 115 115 115 115 122 117 +120 117 120 119 122 121 123 123 124 125 123 121 +124 124 129 127 121 116 118 112 105 107 105 106 +110 113 123 114 114 110 110 111 123 113 113 116 +116 120 117 114 116 115 115 121 113 99 111 116 +114 104 110 111 113 109 119 125 120 117 131 137 +132 125 118 133 134 128 123 135 143 141 137 132 +145 143 142 133 130 142 144 148 141 143 146 145 +154 148 141 144 153 134 120 133 148 138 144 135 +138 147 148 149 140 145 160 163 172 167 152 162 +177 181 176 170 172 159 160 153 140 129 160 169 +193 204 207 207 205 208 207 207 205 200 195 199 +201 204 203 202 204 217 215 207 206 208 209 205 +202 203 201 199 197 194 195 191 195 201 199 202 +201 198 209 207 218 213 218 216 214 212 207 215 +213 212 207 211 212 212 217 219 218 224 227 228 +222 223 226 213 168 95 84 82 75 74 72 73 +80 80 86 79 88 88 87 94 89 90 89 86 +94 95 101 104 113 118 130 128 134 142 143 146 +151 151 152 155 155 157 153 152 156 153 152 152 +157 155 155 156 151 155 147 146 143 140 134 126 +128 112 96 87 78 60 46 36 37 36 43 54 +61 73 79 101 102 113 120 121 127 136 142 140 +146 143 148 153 149 146 150 145 146 144 147 140 +141 140 145 144 142 142 149 142 143 141 145 138 +143 146 141 144 145 145 146 145 148 148 149 152 +153 155 152 143 112 80 56 39 39 36 38 37 +44 45 43 40 43 42 51 49 48 52 55 55 +54 49 49 53 63 59 53 53 48 48 46 43 +35 40 43 44 52 54 59 60 64 57 47 43 +48 48 49 49 55 49 49 52 54 49 56 57 +65 65 80 77 77 79 93 103 113 120 135 141 +144 148 149 145 145 148 148 148 144 131 135 145 +152 160 164 161 +115 115 104 93 83 86 80 88 +88 88 88 94 92 91 89 90 88 88 93 87 +80 86 86 88 97 99 107 122 131 137 138 147 +149 151 155 157 160 164 167 164 168 169 167 169 +164 169 167 167 164 165 165 159 158 158 154 150 +143 140 132 126 115 112 100 96 89 83 76 70 +77 77 78 87 84 87 97 95 99 97 94 96 +112 99 99 96 99 95 98 101 101 98 101 102 +99 99 102 106 101 101 102 99 97 103 104 107 +102 100 106 105 106 107 107 113 109 108 116 116 +113 119 120 118 117 113 116 115 118 117 115 114 +118 116 114 120 121 123 125 129 124 125 129 119 +114 113 114 113 109 108 105 108 108 116 117 110 +111 115 106 109 118 110 113 117 119 118 114 117 +116 121 121 111 106 109 115 108 99 102 109 112 +113 127 115 119 113 119 133 124 121 132 134 134 +120 125 136 131 130 128 128 139 140 134 125 133 +143 150 143 138 137 147 140 148 145 148 152 148 +141 124 126 143 150 141 129 134 146 151 147 144 +151 155 161 167 164 152 165 179 186 181 171 145 +153 155 144 135 148 174 190 188 196 209 207 205 +203 206 206 205 204 201 196 193 201 206 208 205 +202 214 212 204 201 202 206 203 201 196 200 199 +198 194 188 192 194 196 207 210 208 200 209 205 +215 211 215 214 210 210 202 207 207 208 205 206 +205 208 207 213 211 214 219 221 222 219 223 221 +196 133 105 89 78 77 75 71 81 80 81 78 +84 83 82 86 83 88 87 88 96 96 103 105 +113 119 125 126 136 138 140 145 149 151 153 156 +153 156 153 153 158 155 150 151 154 150 155 155 +154 151 154 145 143 145 135 128 120 109 100 86 +77 62 47 37 35 43 44 49 54 68 80 100 +97 102 116 121 127 135 136 136 144 144 148 145 +148 149 150 144 144 142 143 145 141 141 142 144 +138 140 142 141 147 145 145 141 145 142 144 148 +145 144 144 149 145 149 151 153 155 155 140 125 +99 62 42 41 41 38 35 41 47 42 44 43 +49 49 48 50 55 58 49 52 58 54 55 51 +57 53 53 53 48 38 44 41 37 39 44 47 +55 60 54 59 49 48 40 43 42 51 48 48 +51 51 47 48 58 53 61 54 59 63 73 73 +79 91 104 113 121 131 143 144 149 148 153 148 +146 144 147 144 136 136 147 153 159 162 163 162 +106 106 101 84 79 82 83 90 88 86 90 89 +90 88 93 90 90 90 86 90 87 79 88 84 +94 100 111 119 130 134 139 144 146 149 157 159 +157 162 163 165 162 164 165 168 168 166 166 164 +163 164 165 161 158 156 154 156 144 138 141 127 +119 113 107 118 89 82 71 71 79 87 85 93 +88 87 95 94 96 101 88 93 97 104 101 104 +92 98 97 100 99 97 102 95 100 96 101 106 +104 98 101 103 96 101 105 103 98 100 101 104 +108 109 111 111 116 108 113 117 118 122 120 120 +112 114 115 115 116 117 119 120 119 121 120 118 +122 120 124 123 125 128 131 117 117 120 115 115 +109 106 114 121 111 106 116 117 112 112 118 108 +112 115 116 116 119 122 116 120 123 120 112 114 +114 116 110 109 112 114 114 114 121 123 118 118 +123 131 123 115 139 139 124 121 120 135 139 130 +128 136 138 139 133 122 132 145 148 145 131 142 +147 145 147 147 147 150 148 136 132 128 137 139 +144 132 129 142 148 147 135 155 157 158 153 147 +154 167 172 176 181 165 154 143 145 137 139 157 +172 188 202 201 199 206 205 203 203 201 202 202 +201 202 201 199 200 207 210 207 201 199 207 209 +205 199 197 200 201 193 194 200 204 203 196 200 +206 197 209 211 209 201 205 205 212 209 207 203 +200 207 199 201 203 204 205 206 205 204 208 211 +211 210 213 215 216 217 220 223 213 183 158 121 +96 86 80 79 75 74 80 77 76 85 88 83 +93 88 82 83 85 93 96 105 111 117 123 130 +135 136 140 145 148 151 154 156 155 152 154 155 +155 158 152 149 154 149 156 154 149 150 150 147 +144 141 137 127 126 115 98 88 75 59 47 38 +46 64 53 44 42 59 80 92 96 106 106 115 +126 128 132 132 141 142 146 151 147 148 146 145 +143 146 139 140 141 141 140 140 141 139 139 140 +142 144 148 143 145 143 146 144 149 145 147 152 +147 156 154 155 156 148 133 108 75 57 53 44 +38 35 36 36 42 47 43 44 49 47 50 58 +54 55 53 63 62 53 50 49 57 51 49 44 +44 44 42 38 37 49 49 53 57 60 59 51 +45 43 42 49 56 53 51 53 48 53 54 55 +63 72 59 61 54 63 70 79 85 98 115 121 +127 139 144 149 146 148 150 150 144 139 143 139 +141 148 152 156 158 161 163 164 +99 99 91 84 +84 87 86 83 86 88 89 95 93 90 94 91 +93 92 86 85 82 82 90 92 90 100 106 122 +126 133 137 140 145 151 154 158 162 161 168 163 +165 169 167 165 168 167 167 162 165 162 168 162 +159 158 150 152 143 138 136 130 123 110 106 96 +89 80 78 74 78 79 75 82 93 92 87 94 +98 97 96 101 98 99 96 103 90 104 100 99 +100 98 99 93 103 103 96 99 97 100 100 104 +102 105 105 102 106 104 103 107 108 105 113 111 +113 112 115 114 125 121 115 115 120 115 116 120 +117 118 119 119 120 119 123 119 122 118 117 125 +129 134 122 113 114 122 115 111 118 111 110 121 +106 105 110 113 111 114 111 107 110 120 114 115 +122 116 111 119 111 104 110 113 112 108 125 121 +112 122 127 122 116 115 129 120 123 124 121 129 +133 122 121 131 130 136 126 124 142 142 137 128 +118 135 144 139 137 124 142 152 141 138 144 148 +148 146 135 126 139 155 143 143 138 140 145 146 +142 137 139 156 153 148 145 165 171 169 178 168 +154 153 149 128 126 148 166 191 189 187 202 206 +202 201 202 199 200 201 202 204 204 202 204 204 +204 200 207 206 199 194 197 202 199 198 193 186 +196 197 195 196 206 210 204 201 210 197 204 211 +204 199 199 196 199 197 196 196 196 201 207 205 +204 206 207 211 207 211 210 211 215 213 211 211 +213 217 221 222 222 216 205 184 154 125 106 84 +76 70 74 73 75 76 76 83 83 90 89 86 +91 96 95 105 109 124 125 130 134 139 141 146 +148 152 155 153 155 155 153 154 152 155 149 155 +152 153 152 155 151 151 147 150 147 143 136 128 +129 115 99 85 75 58 48 44 41 35 41 57 +66 62 59 84 91 93 100 110 116 128 136 131 +135 144 145 147 146 149 149 149 145 146 143 144 +140 144 141 142 142 141 140 145 141 145 141 147 +143 147 148 144 148 144 148 153 152 154 153 153 +151 137 116 89 51 40 43 44 36 36 40 39 +38 39 40 44 45 55 51 59 59 56 59 60 +52 45 52 51 54 49 46 44 44 50 46 41 +42 50 59 61 59 55 57 49 44 44 44 45 +54 53 53 55 59 57 58 59 63 63 65 63 +57 62 70 82 99 108 127 127 136 142 145 147 +149 151 149 149 146 135 134 141 145 155 154 158 +161 164 162 165 +96 96 87 80 84 86 88 85 +87 88 91 96 92 95 90 91 89 93 90 88 +85 89 84 89 103 103 107 119 128 131 136 144 +147 152 154 159 161 162 163 163 164 169 165 167 +166 168 166 163 162 161 163 159 158 157 151 147 +139 135 131 126 123 111 105 97 89 82 77 75 +74 77 77 77 88 87 95 94 95 95 97 97 +100 103 95 105 97 102 100 102 97 97 100 99 +96 99 99 98 104 103 105 98 109 104 104 102 +105 105 112 105 103 108 110 108 115 115 114 122 +117 124 116 119 115 117 115 113 122 117 124 121 +124 121 119 123 118 121 122 127 136 134 119 111 +112 113 112 113 115 120 118 110 110 109 110 112 +107 111 113 112 111 111 115 118 111 114 122 115 +107 112 124 112 119 113 123 120 107 126 125 113 +108 128 124 122 119 127 138 133 122 127 136 136 +132 122 120 138 137 146 133 126 135 144 139 130 +124 132 150 141 132 129 143 149 147 140 133 141 +145 139 141 138 142 143 144 141 141 151 150 153 +138 144 152 166 170 174 163 156 147 137 122 120 +154 175 183 195 198 192 197 203 206 201 201 198 +193 197 202 205 206 208 208 206 201 195 195 202 +202 201 196 195 190 192 196 192 192 197 204 198 +205 212 207 201 205 196 196 202 197 196 194 197 +198 198 201 200 201 200 205 209 207 210 209 209 +212 210 210 208 213 212 210 213 216 215 218 219 +222 226 225 221 204 180 146 97 70 68 67 72 +73 75 73 86 87 82 87 85 86 93 97 100 +110 118 125 131 132 137 141 143 149 149 154 158 +153 156 154 154 155 162 154 152 153 154 153 151 +154 152 147 149 148 143 137 129 124 114 100 89 +82 55 51 41 45 40 44 60 59 51 48 60 +79 93 95 103 121 120 123 130 136 140 143 144 +147 148 146 146 147 146 147 142 143 143 141 143 +139 143 141 138 144 141 146 142 145 146 150 143 +145 147 147 152 153 153 155 147 143 128 102 61 +39 41 36 40 40 37 40 40 38 47 49 50 +46 60 68 55 55 54 53 53 53 56 51 55 +49 57 48 44 45 47 43 49 44 48 55 62 +57 56 51 47 47 42 41 51 56 56 50 52 +56 51 51 56 56 54 58 60 60 69 69 87 +103 120 130 136 142 143 145 147 149 153 151 149 +143 139 136 147 153 158 162 168 158 162 164 162 +90 90 84 82 83 90 83 89 91 87 87 94 +92 96 90 89 88 95 90 90 85 85 83 86 +92 107 106 120 121 129 135 141 153 147 153 158 +161 159 161 167 165 166 164 163 166 163 166 161 +162 163 161 159 159 158 152 150 143 136 133 125 +121 113 106 97 95 83 74 72 74 73 77 76 +83 94 85 92 96 95 100 93 98 95 98 97 +100 96 99 103 97 96 100 97 94 98 98 99 +96 100 100 96 103 97 107 103 106 104 100 106 +107 107 112 109 108 113 112 117 116 114 113 113 +122 112 115 111 121 115 116 117 119 126 122 121 +120 125 125 135 142 120 118 110 106 114 107 109 +108 114 119 116 117 113 112 109 111 109 114 111 +117 116 114 116 119 121 117 117 114 113 120 119 +125 120 123 121 124 118 117 118 121 120 114 121 +136 137 133 119 124 133 137 121 123 131 134 143 +140 145 143 136 141 148 131 132 139 146 146 139 +134 142 140 142 138 129 141 143 138 129 122 134 +142 136 133 139 155 145 144 135 139 153 154 169 +169 159 155 155 137 123 130 162 187 191 191 187 +200 196 189 193 202 203 201 201 195 193 203 207 +208 208 208 207 201 197 192 195 201 206 203 200 +190 189 199 204 194 190 205 199 205 209 208 200 +198 192 198 200 196 196 201 207 209 203 202 205 +200 204 207 209 211 211 210 207 211 211 210 211 +209 211 212 212 214 213 215 220 219 221 226 224 +223 217 194 145 95 77 81 77 68 70 75 83 +76 83 78 82 86 98 96 104 109 117 123 126 +136 140 141 147 146 147 154 154 152 156 152 151 +155 155 155 156 153 151 153 153 152 156 157 150 +144 141 136 130 123 113 100 87 83 59 50 45 +44 44 46 41 34 44 47 50 63 85 89 97 +107 118 122 127 130 135 141 144 149 152 150 147 +147 145 148 140 142 145 142 139 139 141 139 140 +144 141 144 144 146 143 145 146 148 151 150 155 +153 155 156 147 134 106 74 55 44 45 45 36 +41 37 39 41 38 44 48 44 57 50 58 59 +62 55 57 57 57 55 55 55 52 48 47 41 +41 36 46 44 48 50 59 61 60 53 47 42 +47 43 48 47 48 52 58 51 54 46 54 54 +57 64 59 67 62 68 82 99 111 127 136 146 +147 145 147 146 149 149 152 146 143 135 144 154 +163 162 166 161 163 166 166 165 +87 87 77 88 +81 93 93 93 87 87 90 92 87 88 90 85 +90 98 93 86 86 88 83 89 93 99 106 118 +122 128 139 142 145 147 160 159 157 160 163 165 +167 167 169 162 166 165 166 163 170 167 165 161 +163 158 152 147 144 142 134 131 120 115 107 95 +88 81 74 76 75 79 78 81 87 84 91 94 +93 94 99 98 95 101 106 99 100 104 98 102 +97 102 102 101 97 99 102 99 98 102 101 106 +102 102 102 101 102 106 105 112 109 109 110 108 +109 110 113 116 118 113 114 114 112 119 123 120 +120 116 116 119 130 115 117 122 120 122 129 140 +142 120 109 104 108 114 107 108 109 109 117 115 +117 106 110 107 107 107 111 109 114 114 111 123 +116 115 115 124 110 109 124 120 119 120 124 122 +117 113 128 122 113 122 122 131 132 126 122 126 +132 132 129 113 136 143 132 136 133 142 139 137 +137 129 131 139 144 144 142 131 143 141 142 137 +136 136 144 137 125 129 133 140 138 133 129 142 +142 137 134 144 153 152 163 170 155 162 147 128 +129 144 170 191 196 197 192 189 191 197 193 192 +191 195 203 207 202 196 195 204 207 205 206 204 +202 202 198 187 198 199 200 201 196 191 203 209 +198 185 199 197 196 197 200 199 198 201 203 201 +202 201 202 205 208 205 202 208 204 204 207 205 +207 212 211 209 206 210 209 211 208 209 211 212 +214 214 215 218 218 217 221 228 224 226 219 194 +145 110 107 82 61 68 72 77 80 81 81 85 +87 92 97 102 107 113 124 125 133 138 141 146 +154 150 152 158 153 155 155 150 157 153 151 154 +151 150 154 156 155 156 170 153 144 137 135 130 +121 108 102 89 83 61 48 39 42 38 39 44 +42 40 49 49 62 70 79 93 100 113 118 125 +128 133 136 138 146 150 147 147 145 146 146 144 +142 143 141 141 138 142 145 143 144 149 138 147 +144 145 147 148 149 148 152 153 155 154 150 134 +116 87 50 41 36 42 39 37 39 38 40 47 +43 43 42 48 60 54 49 51 59 54 68 57 +55 55 50 50 51 56 54 43 42 37 47 49 +56 65 58 57 53 48 44 43 49 57 47 44 +59 54 53 60 50 54 54 59 58 62 65 66 +71 79 89 109 125 138 135 145 146 144 141 145 +150 152 152 142 139 144 148 158 161 163 164 166 +165 162 162 166 +90 90 85 85 85 89 89 89 +92 90 89 89 89 90 90 92 95 88 88 86 +83 87 86 90 96 99 113 117 126 130 140 146 +143 151 154 158 159 163 163 166 160 165 164 164 +168 164 163 165 166 160 163 163 159 157 154 148 +144 141 133 124 120 113 107 98 92 83 79 75 +76 72 76 85 88 88 85 90 97 92 96 93 +90 101 102 100 97 97 99 95 96 101 101 101 +97 99 100 104 95 102 103 107 111 100 102 99 +102 105 103 106 108 110 109 109 111 113 112 115 +119 113 117 115 114 118 117 118 116 117 117 121 +125 115 116 117 124 120 137 139 130 116 112 106 +104 105 109 104 110 110 115 120 120 112 110 118 +114 111 111 110 111 108 109 111 114 116 122 112 +114 112 117 116 112 122 122 110 117 123 115 112 +121 137 129 135 126 126 142 128 124 121 127 131 +140 132 129 131 139 143 142 142 130 132 144 136 +138 134 146 150 139 141 137 142 136 137 142 127 +131 141 130 135 132 136 144 144 134 142 150 148 +150 144 152 157 148 140 125 128 154 174 188 198 +199 198 196 189 188 189 199 195 190 193 202 207 +202 196 192 197 202 202 199 200 199 197 197 198 +195 194 201 205 203 196 197 209 198 184 192 197 +196 193 193 202 207 207 206 203 205 204 204 205 +205 208 205 207 208 204 207 207 203 209 210 207 +208 206 210 211 211 211 210 211 214 215 216 214 +218 217 218 222 223 225 225 220 197 156 119 84 +67 69 71 72 71 79 81 77 83 85 94 102 +109 115 122 124 136 137 144 148 149 151 153 154 +156 156 153 154 158 153 153 150 152 150 156 150 +157 151 154 153 143 137 136 131 120 113 106 89 +78 64 53 61 50 50 42 41 35 42 42 52 +52 61 78 87 97 103 115 124 128 132 135 138 +141 148 145 147 149 144 145 146 143 141 142 137 +139 139 144 144 141 142 140 145 144 148 149 147 +148 149 153 150 154 152 145 126 96 62 45 37 +35 37 39 40 43 37 39 44 44 45 44 47 +47 54 59 58 56 55 54 55 56 53 55 55 +51 53 44 45 42 44 46 48 54 55 53 53 +50 44 46 50 51 48 45 46 57 53 51 52 +63 59 48 58 51 57 57 62 79 93 106 122 +134 140 145 145 141 143 141 146 149 151 146 139 +139 148 157 164 165 163 165 163 163 164 163 162 +89 89 90 81 83 91 89 91 96 92 88 96 +89 93 93 90 93 94 91 87 85 88 88 90 +93 101 111 115 125 131 140 144 145 151 157 157 +161 165 165 166 166 165 165 167 167 171 167 168 +167 162 162 160 158 156 153 149 147 138 131 126 +126 114 110 99 95 87 77 73 71 77 78 83 +85 85 91 91 94 95 94 96 102 99 95 98 +99 94 93 98 96 97 101 101 97 97 100 99 +101 103 104 102 96 99 104 103 100 101 110 108 +109 108 113 111 111 113 117 117 118 117 118 120 +117 118 117 119 116 121 118 122 121 118 121 120 +121 127 140 129 122 115 106 110 115 111 101 105 +111 111 110 114 116 113 111 115 110 113 113 109 +116 113 105 112 114 112 109 113 114 117 115 119 +114 113 117 121 126 119 113 123 131 134 138 130 +135 133 135 119 122 135 137 140 132 133 142 148 +147 144 132 128 145 147 143 137 128 138 151 139 +132 137 138 137 135 130 133 129 137 133 126 128 +138 138 146 132 132 145 147 139 130 130 147 149 +133 129 134 166 178 190 199 196 198 198 196 196 +195 183 194 202 197 192 189 194 200 197 195 194 +193 198 198 197 198 194 196 197 198 198 199 206 +203 195 186 197 197 193 197 204 206 202 194 197 +206 208 210 208 204 207 206 204 205 208 206 205 +209 209 207 208 208 205 209 208 209 209 207 211 +211 214 205 207 212 213 213 212 215 212 212 217 +220 220 225 229 219 196 151 96 65 64 67 67 +70 72 79 77 85 88 93 97 106 115 127 131 +136 138 141 145 150 153 155 156 155 155 152 154 +154 155 152 149 156 150 154 151 161 151 154 147 +141 138 135 125 120 108 102 91 80 64 52 45 +42 49 41 39 35 40 42 46 47 56 70 87 +89 105 103 117 128 129 132 137 142 148 148 149 +145 150 147 146 144 145 140 138 140 138 139 141 +144 145 143 144 147 152 149 148 150 152 155 154 +150 147 136 113 71 45 51 40 35 40 37 42 +43 39 42 41 54 47 53 46 53 65 55 54 +56 51 53 48 55 55 58 53 47 47 50 46 +49 45 53 58 57 64 70 59 53 45 44 46 +57 60 48 52 53 51 52 50 55 52 49 53 +56 55 62 77 90 113 121 132 145 140 144 142 +142 140 145 146 147 143 140 144 146 153 157 161 +164 166 163 167 163 164 162 161 +90 90 86 88 +86 94 92 94 90 92 92 89 93 91 98 91 +86 88 92 88 84 89 90 91 97 102 108 114 +128 134 136 145 147 148 153 157 157 163 166 164 +169 165 165 165 165 169 164 163 167 163 164 162 +159 157 154 147 142 138 132 126 123 109 107 98 +99 87 77 72 70 76 81 81 85 81 89 92 +90 96 90 93 98 99 93 99 101 99 105 102 +101 103 101 102 104 98 101 99 100 103 99 103 +95 99 103 100 103 105 104 106 110 113 109 110 +111 114 117 114 117 117 117 115 120 119 116 121 +120 115 114 115 116 119 119 120 127 146 136 120 +117 107 105 114 111 106 103 99 104 109 110 117 +117 118 113 109 112 119 111 111 111 114 116 118 +114 105 112 113 111 118 117 113 107 121 124 112 +118 117 126 130 130 129 132 133 132 127 121 121 +143 140 136 142 136 147 147 143 140 138 136 139 +147 150 135 130 136 147 139 124 132 141 142 140 +130 128 137 141 138 124 123 135 142 143 136 142 +145 143 142 116 127 142 134 123 131 146 159 187 +194 190 192 194 196 198 195 199 198 192 184 204 +202 195 188 187 185 195 196 194 190 191 191 190 +196 196 197 197 203 200 201 197 200 192 189 195 +200 201 200 206 211 208 203 193 195 203 211 211 +206 207 209 205 204 205 206 210 205 208 211 206 +207 203 205 207 207 208 206 210 209 208 202 201 +211 211 213 212 211 209 208 212 215 212 221 227 +227 217 194 124 75 60 66 59 68 70 75 76 +85 88 92 101 107 117 122 131 128 136 138 144 +147 151 152 160 155 150 155 151 153 157 154 152 +153 152 153 152 158 155 153 144 143 140 136 129 +120 111 101 93 78 66 52 44 53 49 42 42 +38 40 46 49 42 53 62 76 89 91 94 110 +128 129 132 136 138 142 145 147 149 144 146 147 +144 142 142 139 139 141 140 139 141 141 147 146 +145 146 145 147 151 152 156 156 149 141 116 86 +52 42 40 41 36 46 42 42 42 42 50 43 +49 44 48 53 58 55 55 51 48 55 51 54 +52 57 54 51 48 43 43 42 53 48 52 56 +54 51 53 48 40 45 45 50 56 55 52 52 +49 52 55 50 53 53 48 57 52 62 79 83 +104 125 130 139 145 146 140 143 142 143 145 145 +143 138 138 144 154 162 163 164 166 164 164 164 +165 165 158 161 +84 84 92 87 94 94 91 93 +93 91 90 94 96 90 97 94 89 90 94 93 +89 86 86 97 97 101 109 120 127 134 140 148 +144 150 158 159 159 160 158 163 164 165 165 168 +165 168 165 162 165 164 164 161 159 156 155 149 +145 139 134 132 122 113 108 94 99 84 76 73 +77 77 81 82 88 87 87 93 94 97 91 96 +94 95 95 92 94 96 105 101 103 101 97 101 +102 95 102 100 97 99 103 102 98 96 106 101 +102 103 103 105 107 112 108 103 107 112 112 116 +117 114 118 115 117 118 121 121 120 116 117 116 +117 113 115 123 146 153 122 114 113 110 104 94 +103 99 99 102 106 103 107 116 123 115 118 118 +112 115 110 110 113 120 114 117 121 118 120 111 +116 110 114 113 121 120 113 110 121 120 126 126 +126 133 138 123 119 125 136 141 140 132 135 147 +149 148 140 141 135 135 139 136 141 134 141 146 +144 140 131 134 141 141 139 131 133 140 138 139 +132 137 142 133 133 140 139 141 145 135 124 125 +138 128 127 136 156 169 179 182 196 194 191 196 +199 195 201 198 201 196 188 187 196 195 192 189 +189 188 194 196 194 189 188 186 194 200 197 198 +195 195 192 188 194 201 203 202 205 207 200 199 +207 208 209 203 197 195 205 214 207 206 207 210 +205 206 206 207 209 203 211 208 205 200 200 205 +205 206 206 209 207 206 203 205 213 212 214 212 +212 208 210 213 211 211 215 224 223 222 214 181 +114 62 52 54 63 69 71 75 83 88 89 100 +108 114 124 126 132 132 139 145 151 150 151 154 +153 155 153 155 153 153 152 155 151 152 153 152 +155 153 151 147 146 140 135 128 118 113 100 90 +78 69 51 47 44 40 42 43 37 37 37 44 +41 46 52 57 75 88 93 104 122 120 128 131 +133 138 141 144 147 145 145 148 143 139 139 135 +141 137 140 140 140 139 145 149 142 148 148 147 +151 155 150 156 146 129 98 64 45 44 43 39 +40 44 46 48 42 40 44 44 53 45 50 49 +57 52 60 55 52 46 50 51 53 71 51 51 +47 48 44 50 48 51 51 59 49 51 44 43 +41 41 46 48 49 51 50 62 64 54 51 47 +51 50 51 51 58 69 84 102 122 132 141 145 +149 146 146 141 141 143 140 136 134 137 139 147 +154 159 161 164 165 165 162 165 162 167 161 163 +85 85 85 84 80 94 91 94 94 90 94 92 +89 92 92 89 93 91 86 89 86 86 93 94 +96 100 116 124 128 132 135 143 146 147 154 159 +155 163 162 166 166 166 166 160 165 162 166 162 +161 160 162 158 157 156 151 150 146 141 132 127 +120 109 104 91 94 89 76 76 78 71 75 82 +81 91 92 93 97 90 96 95 99 96 101 93 +99 95 104 99 108 106 104 100 99 95 98 98 +100 98 98 100 107 100 97 103 102 103 112 105 +107 110 109 107 115 111 110 115 116 116 119 116 +122 120 118 122 119 116 111 111 114 115 113 142 +188 153 124 114 101 101 93 109 105 101 97 107 +108 99 107 111 110 115 115 117 115 119 108 105 +116 110 106 115 111 113 116 120 115 107 109 118 +113 119 117 124 118 118 120 126 138 131 126 123 +133 144 143 138 133 135 141 150 144 141 134 140 +146 142 137 133 134 142 148 143 143 136 134 146 +146 142 128 129 137 137 132 132 134 137 135 121 +130 139 137 140 129 129 129 131 128 131 144 174 +175 178 178 180 182 195 191 193 201 202 198 197 +197 200 192 182 185 196 198 193 189 186 185 190 +196 194 195 191 189 198 196 192 186 187 193 198 +199 206 207 205 204 205 205 194 199 209 209 208 +204 198 197 206 210 206 204 210 209 206 205 203 +208 203 207 207 202 202 202 210 206 211 207 213 +209 209 208 207 208 211 217 214 213 214 213 216 +212 211 218 219 214 220 225 213 167 90 59 56 +59 66 69 75 80 86 94 94 109 113 121 126 +132 132 138 144 147 153 150 150 152 156 153 151 +152 151 154 156 153 153 153 153 153 156 154 147 +145 139 136 132 124 118 107 95 90 66 59 44 +45 46 40 44 43 43 37 42 38 44 49 55 +65 74 90 100 114 123 122 128 132 141 142 141 +145 146 146 143 143 143 143 139 143 134 138 138 +139 141 144 148 144 147 147 149 150 155 156 145 +133 115 83 47 42 43 43 44 39 42 50 43 +45 51 46 48 53 49 58 52 52 52 50 54 +56 52 52 58 55 54 49 51 49 45 44 45 +51 60 59 60 46 49 43 44 43 40 49 52 +50 51 48 49 69 53 50 47 50 51 46 58 +61 76 102 118 128 141 146 151 148 144 143 139 +145 141 137 135 137 144 149 153 157 160 168 167 +169 161 165 165 163 163 160 164 +84 84 84 82 +87 90 89 94 93 93 93 96 91 96 94 94 +93 93 89 93 86 91 89 96 101 105 112 115 +129 136 135 141 146 150 155 156 159 164 164 164 +163 162 162 162 168 162 171 163 160 159 164 163 +158 159 154 149 147 141 138 134 119 113 106 95 +87 87 80 75 78 74 79 83 85 83 87 91 +97 93 96 95 94 91 94 101 101 95 97 100 +101 101 104 96 98 99 94 98 99 95 93 100 +101 99 102 103 101 106 105 103 107 109 111 112 +111 116 111 110 114 112 118 120 118 116 113 119 +123 109 116 116 113 113 124 178 196 141 124 109 +100 100 105 100 104 108 103 99 106 104 108 111 +112 111 113 114 113 115 110 110 111 107 111 113 +106 114 112 109 106 115 115 114 105 121 125 123 +118 120 132 118 121 123 125 133 136 137 130 123 +133 143 142 143 143 134 140 146 132 129 128 131 +139 145 142 141 142 145 140 142 140 138 144 135 +133 132 125 139 129 128 114 124 137 134 127 122 +123 129 123 119 139 170 182 188 187 177 174 176 +176 193 197 192 196 205 199 193 192 193 195 191 +184 190 198 198 190 181 182 187 193 199 198 191 +178 188 186 187 187 190 195 203 201 201 203 207 +205 204 205 202 194 199 206 211 207 205 200 197 +205 209 202 202 208 203 199 203 206 207 208 213 +206 206 204 213 212 209 208 209 208 208 207 204 +203 206 216 217 215 215 215 214 218 215 222 220 +210 220 221 218 197 137 69 60 65 64 68 71 +78 81 87 96 107 112 122 130 131 134 141 145 +147 146 153 153 154 154 153 153 154 155 157 153 +153 150 153 154 151 153 147 151 143 141 133 130 +125 114 106 93 85 67 56 48 42 44 40 48 +50 39 44 39 41 39 44 48 63 73 84 93 +95 114 118 125 131 135 134 142 142 145 148 147 +146 141 140 142 139 136 137 140 140 140 143 146 +145 151 148 154 151 151 152 132 117 87 54 39 +45 43 44 40 40 43 44 39 41 55 41 46 +52 53 53 57 50 54 53 56 63 64 51 62 +55 55 50 45 44 44 46 43 51 63 58 54 +50 56 42 45 47 50 45 61 51 52 48 47 +49 53 49 44 52 54 58 59 68 91 110 121 +137 149 149 150 151 142 140 138 135 133 136 136 +144 148 153 162 161 160 163 166 163 163 166 166 +163 165 162 162 +88 88 91 84 88 97 91 99 +89 93 85 91 89 91 95 94 92 93 88 90 +90 91 88 89 98 103 113 118 129 131 136 143 +145 149 161 153 154 159 161 164 161 163 160 160 +162 161 166 161 158 161 161 162 160 154 155 149 +143 140 136 129 119 112 105 97 89 83 76 76 +77 75 74 84 87 86 95 92 91 91 95 94 +94 97 95 94 98 92 97 105 102 104 98 102 +102 102 100 96 98 96 99 103 101 101 101 103 +101 104 107 105 109 108 106 111 116 108 113 112 +117 114 113 119 112 113 114 114 113 110 112 106 +111 115 135 188 184 143 120 103 99 102 103 103 +107 108 106 100 112 106 110 115 114 106 114 115 +109 115 109 113 116 114 113 114 117 114 110 110 +113 112 109 111 122 122 123 119 131 127 124 111 +121 129 140 145 137 131 125 131 142 144 144 143 +145 144 144 130 117 116 135 149 142 133 134 146 +153 141 136 136 143 143 145 134 122 130 136 126 +120 117 127 137 137 127 118 127 126 129 124 141 +162 188 195 189 185 173 181 179 185 188 199 199 +187 201 201 194 188 189 195 196 193 186 182 196 +197 193 187 192 194 193 192 177 172 181 187 194 +196 196 198 203 205 206 202 205 207 200 205 205 +201 196 200 206 206 210 206 197 197 209 204 201 +208 206 202 205 207 209 209 211 206 206 204 206 +205 205 205 207 205 206 209 205 201 204 212 212 +211 213 213 214 217 215 222 219 213 218 217 216 +215 176 86 62 60 64 66 66 76 80 90 92 +98 109 117 126 129 134 139 142 150 149 151 153 +155 153 155 153 155 153 155 155 155 153 152 153 +152 155 149 149 147 139 136 127 125 116 107 94 +81 65 58 49 46 45 49 45 46 48 38 48 +42 40 45 43 47 65 72 84 90 108 118 117 +125 129 130 140 138 142 143 149 146 139 139 136 +139 137 138 141 143 140 140 149 145 147 148 151 +155 153 148 128 103 67 54 40 41 47 44 43 +45 46 41 49 42 40 49 46 53 54 49 58 +57 51 50 60 56 50 54 49 54 50 54 46 +51 45 52 48 51 52 55 50 49 48 42 48 +47 53 53 51 58 54 50 47 46 52 44 43 +46 58 60 73 85 105 124 134 140 152 156 150 +143 146 140 136 133 132 130 139 150 152 159 160 +160 162 162 162 163 162 163 164 163 166 163 164 +93 93 90 87 93 92 92 88 95 89 92 92 +88 90 83 87 88 95 91 89 88 88 90 86 +99 101 114 120 128 129 139 142 148 151 157 156 +160 160 161 164 165 164 162 162 164 163 163 162 +162 165 162 160 163 160 155 149 143 139 135 133 +122 112 110 99 96 88 76 79 76 78 82 80 +86 87 91 90 95 91 89 94 96 96 103 96 +100 95 96 101 100 102 98 101 102 98 101 98 +99 99 100 96 103 100 106 100 104 101 104 105 +106 109 109 109 118 114 114 117 119 115 113 116 +109 110 116 115 119 112 113 110 114 114 153 198 +169 148 117 100 98 97 98 103 103 108 112 101 +103 111 115 116 111 109 113 111 111 108 113 114 +109 113 120 117 107 110 117 116 113 114 113 127 +118 121 121 128 131 124 108 117 128 132 131 129 +133 137 130 137 143 140 148 151 143 138 133 117 +115 139 147 141 133 127 143 149 143 135 135 133 +145 141 128 124 134 138 138 122 117 128 131 132 +130 123 120 124 119 138 160 173 172 181 196 191 +184 180 179 190 190 184 188 200 194 189 195 198 +187 186 193 192 197 190 184 179 192 200 193 190 +186 175 184 180 185 187 195 198 199 200 198 197 +200 205 201 204 205 206 204 205 206 199 198 205 +211 212 209 197 186 209 206 205 209 209 205 203 +205 208 209 208 203 206 204 205 206 205 205 203 +204 205 206 202 199 202 206 207 208 214 215 216 +214 214 223 221 218 223 222 222 223 194 112 84 +89 86 70 65 69 78 85 97 104 109 116 123 +127 133 144 141 147 148 152 154 152 154 153 153 +153 153 155 155 153 151 156 155 152 148 148 148 +145 135 134 132 122 114 107 93 84 67 60 53 +42 42 45 44 43 45 42 37 38 36 37 41 +47 54 66 78 88 98 111 117 122 124 126 135 +136 139 141 144 144 143 139 135 139 137 135 138 +140 141 143 148 148 148 149 151 155 154 133 115 +75 49 40 47 38 42 42 41 41 40 43 44 +59 51 46 49 49 59 50 55 56 53 58 55 +59 48 54 49 62 49 46 40 47 50 52 60 +56 56 59 51 49 47 50 53 51 54 52 62 +61 58 53 48 53 41 40 44 45 54 78 87 +104 118 136 145 147 154 148 147 145 143 140 136 +127 130 140 147 151 155 158 159 162 161 160 161 +165 160 164 158 163 166 163 165 +88 88 88 89 +88 89 95 100 89 91 96 94 90 90 93 90 +89 91 89 88 86 88 85 84 95 101 111 120 +122 133 140 143 148 152 158 157 159 159 164 163 +168 165 162 165 165 163 163 161 165 163 163 167 +162 158 156 150 148 141 134 127 119 112 105 97 +94 87 78 68 69 80 85 83 81 86 89 87 +89 93 91 93 99 99 96 103 102 96 99 98 +97 100 97 100 106 100 101 96 100 96 103 100 +103 97 102 101 106 106 103 106 105 108 110 112 +116 114 117 110 117 116 115 115 116 115 119 115 +111 111 111 115 109 128 186 198 168 140 110 99 +89 102 106 107 105 114 109 100 108 115 110 113 +104 108 118 112 104 114 111 115 110 116 111 109 +109 114 114 118 113 124 123 121 114 122 127 127 +125 121 121 131 129 123 122 123 135 137 134 140 +138 141 149 139 127 125 122 131 137 144 133 124 +131 141 147 138 133 133 144 144 133 129 122 136 +140 125 123 116 120 131 115 120 116 125 112 119 +135 163 173 182 176 172 190 198 191 186 188 187 +194 184 179 198 193 184 181 192 192 187 191 192 +193 199 194 185 181 194 193 180 181 182 193 192 +193 194 196 201 198 200 203 195 198 205 207 202 +201 204 206 206 208 211 201 195 211 209 206 199 +192 203 211 207 203 207 206 205 205 206 208 204 +204 206 208 207 206 205 203 198 199 202 202 197 +202 203 208 207 210 213 213 218 213 214 218 222 +221 223 225 223 221 208 165 123 97 80 56 69 +74 74 83 87 93 110 117 123 128 134 140 142 +145 150 153 151 153 156 153 152 155 161 154 153 +155 151 156 153 153 151 151 148 143 137 134 129 +123 113 105 92 86 65 58 49 46 45 45 45 +43 46 46 41 44 38 40 44 46 45 52 71 +77 88 97 104 114 120 123 130 134 137 142 141 +142 139 137 138 137 138 134 142 145 138 140 143 +148 146 149 151 147 137 120 95 55 44 41 41 +42 45 43 43 49 42 48 45 53 48 50 52 +57 55 48 47 46 48 54 53 50 50 53 57 +49 47 47 44 46 54 50 53 55 58 52 49 +53 44 44 52 47 55 53 59 55 49 55 48 +46 41 41 46 56 56 75 102 121 134 146 149 +152 153 150 147 143 145 138 133 129 142 147 154 +156 155 160 160 163 164 159 165 159 160 162 162 +162 165 162 161 +91 91 88 94 91 90 92 92 +95 87 89 88 89 90 95 95 88 90 86 85 +81 89 87 83 94 101 112 118 128 133 143 149 +149 151 158 159 161 159 162 163 163 163 165 165 +163 169 160 161 162 162 162 166 162 159 154 150 +146 146 142 126 126 116 107 100 85 87 76 78 +75 77 79 88 86 82 86 87 91 96 94 90 +94 96 98 95 101 97 98 102 101 101 100 98 +101 99 101 102 99 98 101 100 104 95 102 100 +108 108 105 112 112 112 110 112 114 114 113 113 +116 111 116 118 116 118 118 115 112 107 105 111 +111 146 198 198 169 127 104 98 104 101 98 113 +116 97 102 104 107 107 107 106 107 112 117 107 +108 119 109 116 115 116 111 112 120 118 118 121 +120 115 123 117 119 127 123 118 132 128 131 131 +120 121 132 130 138 140 135 143 147 150 140 124 +123 131 137 135 142 133 115 132 150 146 142 136 +137 142 147 139 124 125 131 136 129 124 130 131 +122 112 102 113 112 110 121 150 173 166 172 175 +185 180 182 195 200 197 190 187 192 189 178 186 +188 189 182 186 197 194 194 190 192 196 197 190 +176 172 185 190 192 191 197 197 199 196 196 192 +198 201 202 200 195 198 202 204 202 203 205 202 +204 207 206 191 202 209 209 206 198 200 205 206 +205 201 203 205 203 201 205 204 204 202 204 203 +201 204 205 202 200 202 206 207 203 205 210 213 +212 212 213 217 217 214 215 220 223 223 226 227 +224 223 204 164 109 73 55 62 72 75 81 85 +98 108 120 121 131 136 140 143 145 145 149 151 +150 154 150 152 156 155 154 156 158 152 156 152 +155 152 149 147 142 141 130 130 124 111 105 91 +84 70 57 54 47 46 43 47 50 48 40 45 +39 37 40 41 40 42 51 54 67 78 91 97 +106 112 119 125 126 131 141 151 158 156 154 157 +147 140 132 138 139 140 144 149 153 144 150 150 +146 126 103 66 49 43 43 40 41 43 48 39 +41 45 49 48 50 52 47 51 62 59 55 48 +51 52 56 55 55 58 54 47 52 50 43 52 +54 53 58 55 56 56 46 42 50 47 45 53 +55 55 60 59 48 48 48 44 37 33 40 46 +50 69 92 115 128 140 147 151 150 149 143 142 +144 138 134 135 137 149 154 157 159 157 157 160 +165 163 161 162 160 160 159 161 161 161 161 160 +94 94 92 90 90 89 91 92 95 89 87 92 +93 90 90 94 93 93 87 88 87 91 92 85 +90 101 108 112 124 131 140 139 145 148 151 157 +157 160 161 165 163 165 165 164 164 163 164 160 +165 160 162 168 165 162 155 153 146 139 136 129 +122 114 105 98 91 81 77 71 74 79 81 79 +87 89 81 85 86 96 94 93 96 98 100 98 +95 96 98 98 103 100 100 101 103 105 101 106 +101 102 101 102 100 105 102 108 108 109 109 113 +109 109 107 107 113 111 111 112 113 108 114 114 +117 111 108 108 106 104 106 111 118 171 206 190 +163 116 98 106 97 96 101 103 103 103 109 109 +107 110 107 110 112 109 108 114 104 104 111 116 +113 115 117 112 119 129 125 122 122 118 116 128 +122 119 118 123 127 127 119 120 127 135 132 134 +138 138 145 140 146 136 124 123 137 135 127 131 +130 130 134 146 139 133 132 135 143 141 131 133 +134 137 131 122 118 133 132 120 110 108 111 114 +111 127 157 175 183 173 163 173 188 193 182 192 +202 200 192 185 187 192 180 179 181 183 193 187 +187 194 198 194 188 183 179 177 171 179 190 199 +199 194 192 197 203 196 194 187 192 196 200 200 +197 195 194 204 207 203 205 203 203 204 206 197 +194 200 209 208 202 201 198 202 206 204 202 204 +206 202 198 202 198 200 195 198 195 203 208 209 +209 206 206 209 205 203 202 210 212 210 212 213 +215 214 212 215 222 223 223 225 228 225 220 204 +161 97 56 55 69 71 79 88 98 111 123 127 +129 134 139 141 146 150 155 149 154 155 151 153 +153 154 153 153 154 153 152 154 154 152 152 147 +145 138 135 131 123 111 107 94 83 75 64 49 +53 47 44 48 41 42 50 44 43 41 40 37 +40 39 40 45 60 66 79 90 94 103 108 123 +146 172 178 184 193 195 200 199 188 161 137 141 +143 142 164 172 162 146 149 147 135 112 74 47 +42 41 47 48 43 41 52 49 43 43 45 48 +50 56 58 57 59 64 54 49 48 49 60 52 +52 57 56 53 54 49 55 51 49 48 58 50 +51 56 49 44 46 53 55 55 51 59 57 56 +52 49 47 41 42 35 35 49 59 92 104 125 +141 146 152 149 149 147 140 145 136 129 134 139 +140 149 156 158 160 160 164 159 161 163 163 160 +160 162 164 160 159 160 156 161 +88 88 100 93 +86 93 92 87 93 93 94 98 94 91 95 92 +91 93 86 93 81 83 88 86 93 98 105 117 +126 133 141 140 145 150 153 157 159 161 165 165 +167 164 163 165 164 165 164 162 163 162 168 162 +163 160 154 156 143 140 135 126 118 114 109 94 +91 79 81 73 71 80 85 81 86 87 87 88 +88 101 95 95 96 93 96 93 91 96 99 99 +97 98 100 108 106 103 98 100 102 96 98 98 +104 104 104 109 110 105 102 106 108 112 114 110 +108 108 116 117 116 115 119 111 113 109 114 111 +111 107 111 112 142 204 206 182 143 113 99 100 +102 106 105 101 106 106 104 107 109 103 111 107 +104 112 115 113 106 110 116 110 112 120 111 112 +122 117 117 117 122 122 120 111 114 120 130 131 +124 122 124 126 133 135 134 132 147 147 137 136 +132 125 128 136 143 131 124 131 135 140 141 140 +132 135 135 148 146 136 127 138 135 133 121 116 +127 132 123 107 106 117 103 122 145 167 175 187 +180 182 177 177 184 195 192 182 195 201 197 181 +178 183 183 184 182 176 191 194 189 183 192 194 +180 173 165 174 186 193 197 200 203 196 192 192 +202 200 199 194 191 192 191 201 199 197 198 200 +205 204 205 205 204 206 207 202 196 198 202 210 +204 207 203 200 207 209 207 202 204 202 190 189 +193 198 201 202 202 205 207 214 211 211 208 205 +207 204 206 206 210 211 210 214 213 212 212 212 +215 222 222 223 225 228 227 221 198 137 62 54 +61 66 75 87 96 109 118 127 127 136 134 144 +147 151 153 149 148 151 151 151 152 151 153 149 +156 151 155 159 155 155 159 151 144 141 131 128 +125 113 108 98 82 67 61 55 50 45 43 41 +41 46 48 43 44 38 49 41 37 39 36 39 +45 53 66 79 84 99 132 166 195 194 201 210 +218 218 219 216 208 195 170 155 172 179 199 196 +171 149 145 136 113 91 53 44 43 39 38 42 +47 45 41 57 51 53 51 47 55 54 47 55 +58 53 55 50 48 45 56 51 55 57 60 55 +52 46 57 48 48 59 55 52 53 43 45 45 +54 55 53 60 51 48 55 50 49 52 48 46 +39 40 44 59 80 101 123 134 143 150 150 149 +145 141 137 138 133 134 132 141 147 153 157 161 +158 156 162 160 162 159 160 161 158 154 156 160 +157 160 161 159 +96 96 89 97 89 92 88 94 +93 87 90 88 90 93 91 91 89 86 88 92 +84 79 80 87 91 98 106 115 128 139 144 144 +151 149 154 157 159 163 162 162 162 165 162 164 +167 160 165 163 164 163 164 160 163 163 153 150 +145 147 139 126 122 116 110 101 89 81 79 78 +73 76 79 84 85 87 86 94 96 93 93 98 +90 91 97 92 94 97 96 101 100 97 101 103 +108 102 97 100 104 99 103 108 102 103 109 111 +108 106 109 102 111 107 109 113 108 113 111 117 +115 116 116 113 112 108 109 106 111 102 107 121 +179 213 199 173 140 119 96 99 102 112 105 106 +104 98 102 105 105 105 115 110 108 105 110 114 +112 113 114 113 112 109 108 120 118 110 117 126 +127 116 117 116 127 124 125 127 128 130 127 135 +137 131 133 137 140 136 133 131 129 136 142 134 +138 124 130 145 135 135 128 136 142 135 137 146 +138 141 143 133 124 123 121 127 124 125 109 103 +102 107 122 144 171 184 181 179 181 185 191 187 +182 186 193 187 182 191 189 189 177 187 188 189 +186 183 184 194 195 183 175 177 172 172 183 186 +191 192 199 200 199 202 197 195 195 196 201 200 +194 193 189 188 198 202 202 199 201 205 208 206 +207 204 200 200 200 204 202 203 204 204 204 202 +200 204 206 200 196 198 191 191 198 205 204 203 +205 206 206 209 209 212 211 206 203 206 208 204 +208 211 210 210 210 213 214 211 212 221 223 223 +224 227 224 225 220 178 88 53 61 66 74 82 +95 104 112 126 130 132 136 144 145 154 152 150 +149 151 149 152 155 154 151 154 153 149 151 155 +151 154 156 151 148 139 135 127 126 118 103 92 +82 62 62 50 43 46 46 44 49 45 40 48 +42 41 44 38 40 40 34 39 45 46 61 78 +104 155 190 201 201 211 216 221 217 213 213 212 +207 200 190 185 198 203 211 205 192 169 147 128 +89 63 47 45 44 46 42 42 44 49 46 48 +45 40 49 48 54 55 49 56 52 55 57 53 +54 55 59 65 65 58 57 54 48 59 56 53 +52 47 45 54 47 44 48 47 48 50 56 56 +59 56 49 48 44 46 47 44 43 44 56 77 +96 113 133 143 146 155 150 150 143 139 135 137 +136 137 141 149 154 156 163 161 160 161 160 160 +162 161 159 157 161 160 159 156 159 157 157 160 +90 90 97 99 91 87 91 91 92 88 89 91 +85 87 89 84 86 84 86 85 82 85 83 87 +92 102 108 119 130 131 138 144 147 150 151 156 +158 160 164 164 164 166 163 162 164 159 164 161 +166 159 163 168 162 163 153 148 147 138 142 129 +125 124 108 103 93 88 83 69 79 74 81 81 +82 89 92 93 89 96 95 94 94 91 90 96 +98 102 94 104 108 97 99 99 105 97 101 97 +94 97 101 106 104 105 120 112 111 105 108 106 +107 105 103 110 106 112 110 111 111 116 114 110 +111 112 113 107 106 105 105 132 196 211 193 165 +151 114 101 98 98 110 109 106 100 104 105 105 +108 110 109 115 108 103 112 116 112 115 117 109 +104 107 107 108 100 112 125 122 116 115 117 126 +127 124 118 123 134 131 121 129 129 134 137 128 +129 128 131 132 144 141 138 135 131 137 139 140 +130 127 117 141 138 137 138 143 142 125 125 115 +110 134 127 126 121 116 109 107 113 133 155 159 +164 172 185 178 184 188 188 194 181 176 186 194 +180 179 180 190 189 187 188 189 190 191 183 177 +180 167 161 169 182 181 185 197 191 191 193 196 +195 198 200 196 195 193 195 203 200 199 196 189 +193 203 201 201 196 204 206 205 203 200 202 198 +200 202 205 200 199 205 207 203 200 196 197 195 +199 203 202 200 199 203 203 202 204 206 207 204 +203 210 212 211 208 203 202 201 209 212 212 206 +209 211 214 214 214 216 225 225 224 226 226 222 +223 196 104 51 51 66 73 91 93 107 109 125 +131 138 140 142 146 151 151 150 149 151 152 148 +155 153 153 155 155 152 153 153 152 151 153 154 +146 138 140 127 128 118 98 94 85 72 56 53 +51 39 41 44 47 45 45 43 46 45 37 34 +38 35 35 35 38 50 73 113 174 198 205 210 +218 224 218 216 211 206 205 195 194 197 204 210 +218 215 218 218 215 206 176 112 70 47 41 43 +43 43 50 41 40 54 65 53 42 50 50 60 +58 58 53 52 55 53 51 52 57 54 57 62 +66 65 55 52 49 49 59 56 52 58 50 46 +48 44 44 50 54 50 54 59 54 54 49 48 +43 43 43 46 54 60 76 90 115 129 135 151 +151 150 148 147 144 141 139 135 135 144 144 154 +151 158 160 162 163 160 162 160 156 161 160 158 +159 158 161 156 157 157 158 159 +91 91 95 86 +88 93 87 88 91 89 86 87 84 86 91 92 +84 86 83 83 85 84 83 85 89 98 105 116 +127 127 137 143 148 151 158 155 164 158 160 164 +167 165 159 161 165 164 161 160 160 162 160 159 +163 160 153 148 148 141 137 128 123 121 112 102 +90 82 79 73 73 80 82 80 78 82 85 91 +91 93 92 92 90 95 96 96 95 98 98 96 +97 95 95 93 98 96 98 96 94 96 96 100 +104 102 99 103 102 103 106 112 106 108 111 110 +106 111 112 118 106 112 112 111 111 108 108 109 +107 100 108 159 210 207 191 161 124 105 94 97 +103 104 100 106 104 103 100 106 99 107 105 114 +117 113 113 116 115 112 107 109 111 111 104 101 +111 121 121 112 109 124 127 121 122 125 125 134 +133 128 129 135 135 138 136 128 129 130 143 141 +144 143 142 143 138 136 133 126 128 135 137 142 +140 133 141 141 130 109 99 107 124 127 119 114 +112 113 107 119 147 163 175 169 157 159 181 194 +192 194 190 193 188 174 175 184 179 175 175 190 +196 188 193 191 198 196 180 164 156 165 172 171 +187 194 187 188 194 193 192 192 196 196 197 199 +201 195 192 197 202 202 195 193 193 201 199 202 +195 195 202 204 202 203 204 202 198 196 205 204 +199 197 199 197 193 197 198 199 202 211 210 206 +203 197 197 204 205 206 207 207 203 208 212 209 +212 206 198 199 203 210 211 209 209 209 211 214 +214 215 220 223 225 225 225 224 222 211 148 66 +58 63 76 82 88 106 119 124 129 136 139 145 +147 147 150 150 151 150 155 149 153 151 150 154 +152 152 153 157 148 150 152 153 150 139 135 126 +123 115 105 94 82 72 51 54 48 46 48 42 +45 49 42 43 43 38 40 35 37 34 34 39 +49 64 124 183 208 208 214 223 224 213 213 207 +196 185 189 194 205 209 212 215 215 212 215 219 +221 220 201 148 63 41 41 39 43 43 46 42 +42 42 43 45 41 46 43 51 57 58 50 49 +54 54 54 51 52 50 48 53 51 55 55 48 +48 54 53 51 55 54 49 44 53 44 53 49 +54 53 60 55 47 45 42 39 36 38 50 55 +56 77 89 108 126 139 144 152 149 147 145 144 +145 138 136 135 142 149 151 159 158 162 163 164 +161 164 163 159 160 156 159 160 161 155 159 159 +159 153 160 160 +87 87 88 92 90 93 88 87 +94 84 94 86 86 88 86 91 85 94 89 86 +83 88 87 84 89 100 104 112 120 129 140 144 +143 153 157 155 162 163 163 165 164 166 162 165 +161 167 164 160 162 163 162 164 162 159 150 151 +146 140 136 128 121 115 108 97 95 84 72 69 +70 76 78 80 79 85 87 90 85 90 87 93 +89 95 97 88 99 93 93 93 98 98 95 95 +94 98 94 97 101 102 103 96 94 100 102 98 +99 102 104 109 106 107 112 109 110 113 118 112 +109 113 109 114 110 110 105 102 108 98 121 190 +217 201 182 155 117 107 92 100 103 107 101 105 +97 107 106 104 109 104 107 113 117 114 120 117 +110 113 105 121 118 108 106 112 119 117 109 121 +122 120 117 114 127 132 131 131 128 128 135 138 +134 142 132 133 136 137 136 133 140 140 141 134 +126 125 122 129 134 135 140 140 141 138 134 125 +109 112 119 123 125 120 112 112 112 110 126 146 +173 171 177 174 165 170 176 197 199 192 192 188 +187 178 173 168 174 175 172 181 188 188 196 192 +193 189 169 165 170 180 187 183 183 196 192 184 +185 193 192 192 192 195 197 198 201 201 196 190 +197 202 196 195 198 197 198 200 194 194 193 197 +203 204 204 203 201 195 199 203 198 191 188 196 +203 204 207 201 200 207 212 209 206 200 196 199 +202 204 206 207 208 206 206 209 211 209 204 200 +207 207 212 210 208 205 211 213 212 215 215 218 +223 226 221 223 223 217 173 83 52 61 70 80 +91 103 112 122 128 134 137 144 144 149 152 151 +150 153 158 152 155 154 151 155 155 153 156 157 +151 152 154 154 145 140 138 125 127 111 108 103 +82 70 58 46 49 45 45 47 48 44 45 39 +40 42 40 38 50 38 39 44 69 132 187 211 +212 219 220 217 212 206 196 187 183 192 204 208 +207 208 212 215 217 214 216 217 218 217 209 183 +79 34 35 36 40 46 43 48 44 47 48 52 +41 49 57 52 62 65 61 52 57 56 56 62 +47 49 56 48 53 52 46 60 52 57 54 55 +56 60 52 52 47 46 51 50 59 54 69 61 +53 46 42 39 36 41 44 44 63 88 105 121 +137 145 147 152 149 149 145 142 143 138 135 140 +146 152 156 156 161 162 167 161 158 160 159 161 +161 159 162 159 159 157 157 156 158 156 157 160 +85 85 88 88 88 85 92 92 90 89 89 89 +88 92 91 94 92 97 92 84 83 79 85 81 +87 97 106 116 121 129 140 139 145 152 154 155 +161 161 165 165 164 164 163 160 166 163 166 164 +162 163 161 162 158 161 151 152 144 140 137 128 +119 114 102 97 91 80 69 66 67 74 79 78 +81 83 86 89 90 84 87 87 90 96 94 93 +95 94 94 96 92 95 97 96 95 96 93 94 +99 97 100 94 101 104 109 103 101 103 101 106 +102 105 106 110 105 107 109 108 110 108 112 111 +105 104 101 98 100 99 138 215 215 201 165 146 +123 108 102 96 101 108 105 101 99 103 109 109 +110 109 113 108 112 119 124 113 103 111 109 117 +113 118 115 110 104 116 123 122 116 110 105 122 +130 124 129 125 127 136 129 132 135 147 141 139 +132 125 125 129 145 146 136 129 117 123 131 139 +135 137 134 144 138 124 120 110 110 121 121 112 +113 110 114 113 117 138 153 157 171 173 178 176 +177 172 174 192 200 193 186 185 176 185 171 170 +169 171 175 178 185 193 198 186 173 174 175 185 +185 186 197 195 181 181 192 190 188 189 197 198 +194 196 195 195 198 200 196 185 187 200 203 197 +196 191 193 195 200 198 197 193 197 205 204 200 +197 195 191 190 192 193 195 204 207 205 208 204 +200 202 207 208 208 206 200 195 199 203 204 206 +206 205 206 205 209 209 208 208 206 209 210 208 +211 209 210 208 210 213 213 214 221 228 222 223 +224 216 195 120 63 60 71 75 89 96 110 118 +126 136 135 145 148 151 154 150 151 152 152 153 +156 153 155 153 153 155 155 151 151 155 149 150 +149 141 136 127 120 110 107 96 85 73 59 49 +42 46 41 46 40 42 39 37 36 35 39 32 +37 39 46 78 150 192 205 216 218 219 212 207 +201 183 182 190 198 205 207 209 213 219 223 223 +226 226 225 225 217 210 211 199 111 38 38 42 +47 44 44 40 47 47 46 46 48 50 51 54 +54 54 51 55 48 51 65 65 77 55 50 43 +50 52 49 53 54 51 53 53 56 50 52 50 +47 47 52 54 67 57 60 64 57 53 41 49 +42 43 45 51 70 94 117 132 143 148 151 152 +151 147 142 140 141 137 139 143 153 156 156 161 +162 166 168 164 159 159 160 158 159 159 157 160 +156 158 157 158 158 156 159 155 +96 96 90 88 +90 86 93 92 90 87 84 86 85 87 89 89 +91 90 87 85 84 81 89 80 83 100 104 111 +126 131 134 141 148 152 153 157 159 162 163 165 +161 165 162 164 166 163 161 162 159 164 164 161 +160 159 153 150 146 143 136 129 118 112 107 96 +83 78 69 67 75 74 80 83 86 81 84 86 +92 86 87 93 96 91 95 90 97 97 93 97 +94 97 99 95 97 94 96 95 100 97 101 96 +100 97 104 101 101 106 101 104 104 105 107 104 +108 105 111 111 110 107 108 108 108 102 99 99 +105 108 162 221 210 188 154 146 121 109 106 95 +100 105 98 99 106 105 105 103 114 109 107 106 +113 115 117 112 109 116 111 112 114 120 116 111 +111 126 127 118 109 122 121 124 125 124 127 134 +132 133 127 127 132 152 137 139 136 121 137 138 +135 128 125 115 126 139 139 138 137 138 136 138 +127 113 106 112 119 122 109 96 96 104 108 124 +143 166 167 161 162 171 182 183 184 183 172 186 +200 183 174 172 178 177 180 176 173 168 174 182 +190 182 180 168 171 175 186 192 192 187 187 192 +187 180 181 188 191 191 192 199 196 195 189 194 +192 195 196 191 187 195 204 198 194 191 192 194 +198 198 199 196 198 198 203 200 190 187 187 193 +195 199 200 203 207 206 205 205 207 199 201 206 +208 207 207 202 199 200 202 204 206 207 209 205 +206 210 209 209 207 208 209 203 208 211 209 209 +210 212 213 211 218 224 226 225 225 219 206 158 +78 56 66 75 83 92 110 122 123 130 139 141 +145 145 149 149 149 153 152 156 153 155 155 151 +152 155 154 155 153 155 155 151 145 140 136 129 +119 110 101 98 78 63 56 50 45 42 41 43 +44 38 42 36 36 38 38 34 45 53 107 163 +196 207 217 224 216 208 203 189 179 186 201 206 +205 214 216 220 224 225 227 228 228 232 231 230 +226 220 220 215 159 48 42 40 40 44 43 49 +44 45 45 47 51 53 59 61 51 54 53 48 +53 49 60 54 61 56 55 58 59 50 51 51 +50 47 54 52 58 53 48 47 50 46 56 54 +51 56 51 55 53 48 45 38 40 42 46 68 +86 110 127 139 148 153 148 147 145 144 145 138 +138 140 143 147 152 159 165 158 166 163 168 161 +160 160 160 159 157 156 161 158 157 159 156 154 +158 159 158 159 +94 94 87 89 91 88 88 86 +89 85 88 89 89 91 89 88 88 89 88 86 +84 85 84 87 87 96 103 115 124 132 133 138 +145 150 156 158 161 162 164 164 161 162 163 164 +163 161 162 164 163 163 166 166 165 159 152 148 +141 142 135 133 121 116 104 94 83 80 69 74 +69 78 73 81 76 89 81 84 90 84 94 90 +94 93 95 95 102 96 97 98 95 93 97 93 +97 95 93 89 97 94 101 100 100 100 104 108 +104 105 108 107 107 106 105 104 106 105 107 116 +106 110 110 115 108 104 103 102 108 121 194 218 +203 182 167 141 124 110 103 100 92 95 106 102 +106 106 105 113 112 104 110 116 106 106 109 119 +116 114 115 118 115 117 116 120 115 118 115 121 +127 122 115 123 128 121 128 131 132 129 122 133 +134 135 133 126 129 132 137 129 119 116 121 134 +134 135 135 136 137 143 133 124 121 123 131 131 +118 108 100 107 104 112 135 159 159 171 169 164 +166 173 187 187 189 182 166 182 191 182 176 169 +171 177 177 178 180 180 178 176 176 157 160 171 +184 185 186 194 193 188 183 181 190 187 178 177 +185 193 194 193 198 194 191 192 194 196 197 199 +192 187 192 198 199 190 192 195 193 197 199 197 +197 194 188 189 186 194 196 201 200 200 201 200 +203 203 207 206 207 201 200 202 207 207 205 206 +201 201 200 204 204 206 207 206 204 204 206 207 +210 208 206 202 202 207 210 209 206 210 210 214 +216 217 223 225 226 223 215 190 115 66 66 77 +85 97 105 113 128 134 132 141 149 146 149 150 +154 152 150 153 157 155 153 150 152 150 158 155 +152 149 150 150 148 140 136 129 119 109 98 91 +78 67 58 49 46 43 43 40 41 39 33 33 +40 37 40 42 64 120 176 199 209 217 223 217 +208 194 171 175 192 206 210 208 215 220 224 225 +225 226 223 228 228 228 230 231 230 229 226 223 +190 79 33 41 44 41 45 39 44 53 46 42 +47 58 55 59 61 56 48 51 49 53 61 54 +51 57 48 50 50 45 50 52 55 50 55 50 +48 45 44 57 51 60 46 54 55 54 54 54 +59 44 49 39 43 42 61 75 106 122 141 147 +154 152 151 150 144 142 140 141 139 141 149 152 +157 158 167 159 162 162 163 161 159 160 158 161 +161 156 159 159 157 158 156 158 157 161 155 156 +87 87 88 94 89 85 90 90 90 94 92 93 +87 92 89 94 92 92 94 92 87 88 79 84 +91 100 111 115 123 133 133 141 144 148 154 159 +158 159 163 164 165 165 161 165 163 164 162 163 +162 162 163 162 159 159 154 148 142 141 132 120 +120 114 107 92 78 78 75 70 69 72 72 77 +75 78 82 88 89 92 91 91 95 93 99 99 +96 98 99 98 96 99 98 101 100 93 96 97 +102 102 98 101 100 96 108 102 102 101 101 109 +107 106 108 106 110 111 109 111 110 114 108 106 +110 105 102 100 107 145 215 215 195 178 169 155 +132 114 104 97 94 103 105 106 107 101 104 108 +112 111 111 103 102 114 115 117 112 112 121 112 +109 115 125 123 111 113 118 125 122 117 115 133 +131 124 123 125 133 133 129 136 128 130 121 139 +138 134 119 110 106 119 133 137 137 133 132 143 +134 128 122 119 134 138 126 118 107 107 106 105 +112 137 162 171 174 166 173 170 176 178 191 189 +176 169 165 169 176 185 180 174 172 167 173 175 +183 191 182 157 153 161 168 170 190 189 188 189 +189 188 179 179 181 192 190 186 181 187 193 196 +196 196 190 193 196 195 195 197 197 191 188 192 +197 197 189 189 194 194 192 193 192 186 180 190 +196 197 203 204 203 201 202 200 201 203 202 207 +206 201 200 199 199 203 206 206 204 203 197 197 +202 205 204 206 206 205 207 208 206 207 205 203 +202 202 203 205 203 205 209 210 217 214 221 227 +225 223 219 205 160 92 62 65 87 90 109 116 +123 130 135 146 145 149 149 149 155 151 149 151 +155 153 156 156 152 154 151 153 154 153 153 150 +146 145 137 129 120 111 99 92 82 66 51 45 +45 38 41 38 39 50 36 34 35 39 48 76 +138 184 204 212 220 220 213 205 184 161 167 195 +208 210 215 217 220 221 222 226 223 222 224 222 +224 225 228 228 234 234 232 227 211 126 42 40 +46 41 43 50 46 42 43 48 48 46 52 56 +57 51 55 54 58 54 52 56 51 54 49 48 +45 45 46 52 49 48 55 50 47 43 50 52 +48 55 58 50 51 49 62 54 49 44 42 41 +61 67 75 102 116 131 144 153 152 148 151 148 +145 142 140 137 141 146 151 156 157 160 161 162 +162 163 163 160 159 156 159 159 159 159 159 158 +160 156 160 159 156 156 156 158 +86 86 84 88 +86 93 90 89 92 93 95 92 94 94 93 97 +94 95 90 88 88 91 84 88 90 98 108 116 +122 131 133 140 144 149 152 157 161 161 163 168 +163 168 168 165 165 162 167 162 163 165 161 164 +160 156 156 154 145 143 131 130 126 115 106 93 +88 78 67 66 72 73 75 78 82 82 83 85 +86 93 90 92 90 99 96 97 96 96 98 96 +96 98 99 98 101 96 98 100 98 97 96 96 +103 96 100 102 109 102 107 102 106 105 105 106 +110 109 115 113 114 109 109 108 112 106 97 99 +107 159 214 207 194 173 171 160 129 114 102 102 +104 97 106 99 99 106 109 113 110 114 106 99 +107 118 118 116 114 108 114 117 116 119 114 116 +118 119 121 124 113 112 123 137 131 125 126 130 +137 134 128 121 119 118 133 133 126 115 100 114 +134 135 140 139 140 130 137 134 128 124 119 123 +133 122 113 106 110 107 101 118 141 153 165 166 +174 176 174 181 181 185 186 186 172 161 161 163 +163 172 179 176 178 178 183 181 185 172 160 160 +169 177 176 177 181 183 187 177 182 190 185 186 +188 186 190 193 187 186 189 198 188 194 188 190 +200 195 191 194 196 197 195 184 188 199 194 188 +188 193 186 182 184 187 193 197 199 201 204 207 +202 201 201 202 202 201 202 208 207 201 201 200 +196 195 199 207 205 204 198 192 198 203 204 205 +205 206 202 204 205 202 204 204 202 199 201 202 +206 206 207 208 212 216 219 224 224 223 220 216 +190 128 76 71 74 84 106 113 127 130 136 144 +153 155 151 154 152 154 156 154 158 153 153 159 +156 154 155 153 153 154 153 150 146 142 133 125 +118 107 103 93 84 67 48 50 44 43 36 41 +33 36 37 38 39 50 96 156 188 205 212 218 +216 210 198 171 159 175 201 208 210 217 221 217 +220 220 221 224 223 222 219 221 221 223 225 226 +228 234 234 229 219 159 51 40 42 42 40 41 +44 46 42 49 49 48 48 50 53 59 53 53 +54 57 49 50 47 46 43 48 50 47 57 46 +53 50 46 49 47 44 47 46 57 52 58 62 +53 57 45 52 45 47 46 51 49 69 87 113 +133 139 149 154 153 153 146 145 144 132 139 146 +145 152 155 158 160 159 158 161 159 161 160 161 +159 158 165 160 160 160 160 159 159 158 160 157 +153 159 156 157 +89 89 85 88 91 87 84 90 +90 89 89 89 89 95 94 90 95 96 94 85 +89 89 89 87 93 99 105 118 125 127 132 137 +148 150 152 156 161 165 161 164 168 163 168 167 +167 167 166 164 162 165 163 159 160 156 156 151 +147 140 132 132 124 116 100 89 85 76 73 66 +68 72 70 74 80 78 80 89 90 93 95 94 +91 93 93 101 98 98 104 99 98 98 105 98 +96 98 95 98 99 100 104 99 95 101 100 102 +104 99 107 104 103 104 104 105 105 113 115 113 +110 111 111 103 105 104 101 104 122 171 213 209 +192 177 167 134 119 105 99 105 96 99 100 96 +105 96 104 111 107 101 103 105 110 119 126 115 +110 108 109 120 118 110 107 120 124 119 107 112 +109 127 126 126 132 131 130 140 129 124 116 110 +123 130 128 113 106 93 117 128 134 143 137 139 +140 132 137 130 123 128 130 127 122 113 111 110 +108 105 119 148 160 162 159 166 171 186 184 179 +180 181 178 172 169 161 159 162 166 163 165 178 +184 193 190 180 166 162 172 173 178 183 185 180 +171 178 185 179 179 185 189 189 191 188 184 190 +191 191 186 196 196 193 185 181 191 200 196 193 +194 197 197 191 190 189 196 192 185 182 181 181 +193 197 202 203 198 200 201 205 204 200 200 202 +204 202 203 206 201 200 200 201 199 196 194 198 +200 202 197 195 197 199 207 204 207 206 203 201 +205 202 203 207 205 203 202 203 210 210 208 205 +206 213 216 221 226 225 221 221 211 178 105 75 +75 85 103 111 123 130 139 143 139 145 154 160 +156 150 152 157 156 153 158 155 152 154 153 151 +153 152 149 153 142 140 133 129 123 111 104 89 +71 55 43 39 38 39 32 35 34 37 35 45 +67 107 178 198 208 214 214 214 205 187 161 157 +183 206 211 210 217 217 219 219 216 217 218 217 +218 216 216 219 222 220 222 223 226 233 233 230 +222 181 65 39 42 42 44 44 42 41 44 52 +46 46 48 53 49 51 56 60 70 46 44 48 +49 56 49 44 45 50 53 57 60 58 48 47 +44 57 45 47 50 52 50 51 51 53 49 54 +44 48 52 50 68 87 104 128 137 142 153 149 +153 151 142 144 137 136 139 147 148 155 157 160 +159 163 161 162 161 159 160 161 161 160 159 159 +157 159 160 157 157 159 153 157 158 159 155 156 +90 90 94 87 92 91 88 100 96 89 94 95 +93 90 102 96 95 98 91 87 90 92 89 82 +90 97 109 117 120 131 136 140 149 145 154 154 +160 160 162 164 165 167 168 167 165 164 166 165 +162 162 160 163 160 157 155 152 145 139 132 131 +118 109 101 91 87 81 69 70 74 68 76 74 +73 75 80 85 88 93 99 95 90 91 97 95 +98 98 97 95 99 101 103 97 101 100 100 99 +98 100 99 99 101 97 100 105 106 105 107 104 +101 107 107 105 111 113 114 109 114 113 107 119 +104 104 100 104 130 202 216 209 193 182 151 134 +116 105 101 103 99 98 96 104 107 103 106 113 +105 105 110 107 110 120 126 119 109 109 109 116 +111 115 115 125 115 106 109 119 128 133 124 127 +136 132 134 133 118 111 116 125 131 126 115 99 +110 118 130 136 135 131 138 135 128 130 126 123 +129 126 122 112 106 112 114 101 104 134 152 165 +171 159 163 168 180 184 188 171 177 174 171 170 +163 165 165 156 160 167 166 175 188 194 171 164 +166 175 186 186 181 175 182 180 172 166 170 183 +185 181 186 192 194 194 187 180 191 195 193 186 +191 193 192 185 181 196 202 194 194 197 194 195 +192 183 178 186 182 185 188 188 200 199 198 203 +201 199 200 199 201 196 198 202 204 204 204 201 +198 195 198 202 201 199 197 194 193 202 200 196 +197 195 205 202 204 208 204 202 201 203 205 207 +208 207 207 209 208 210 210 204 205 209 215 215 +222 223 222 221 218 200 151 88 73 86 97 112 +123 127 131 137 143 141 156 163 161 152 155 154 +155 158 158 154 156 157 154 153 154 147 150 145 +148 138 135 124 121 111 89 87 68 50 42 43 +37 35 31 39 35 41 47 72 128 181 203 212 +216 214 207 200 179 150 154 186 204 210 213 219 +220 219 217 217 216 216 215 216 216 213 211 217 +219 219 220 220 220 230 233 232 223 197 95 43 +42 44 37 39 44 43 46 50 53 59 51 58 +64 50 52 55 55 46 50 58 51 48 45 51 +50 59 54 52 47 41 39 44 49 49 52 50 +49 56 51 53 57 56 50 49 47 46 57 61 +70 103 121 138 145 150 152 151 149 145 141 144 +137 137 144 149 159 156 160 157 157 160 163 158 +158 158 159 161 160 160 160 157 156 155 160 154 +160 155 158 159 158 158 159 154 +90 90 94 85 +93 96 95 93 92 89 90 95 91 92 95 95 +95 94 91 91 89 90 86 90 88 100 112 111 +119 126 134 138 145 146 151 156 158 162 165 165 +165 169 166 168 164 164 163 166 162 166 165 163 +160 156 151 151 144 141 135 125 119 109 104 96 +84 79 82 72 72 75 74 75 69 78 87 84 +82 92 97 91 93 96 98 97 99 101 98 95 +95 97 100 104 98 95 101 100 97 100 103 99 +99 99 101 101 102 105 101 102 107 110 103 104 +109 111 112 114 114 113 116 119 104 100 102 106 +151 219 213 205 195 162 152 137 117 102 95 99 +96 98 101 102 104 104 102 102 106 109 108 106 +116 118 122 113 112 105 105 112 126 121 114 114 +104 114 124 125 128 138 127 134 133 128 126 119 +114 122 124 126 122 110 110 122 127 127 134 138 +135 137 134 128 121 119 124 132 121 116 106 108 +110 106 89 101 130 157 167 163 175 173 163 175 +179 186 183 174 166 170 169 166 171 163 164 162 +152 167 189 178 164 170 155 163 177 176 186 195 +187 177 180 182 178 168 165 176 193 190 187 190 +194 198 189 179 183 196 193 184 182 185 197 191 +184 182 196 199 195 194 193 198 192 176 169 185 +192 197 196 189 194 202 199 198 202 200 197 194 +195 199 196 200 203 205 202 200 200 195 200 202 +201 201 200 195 194 199 200 199 199 195 201 206 +205 206 210 204 199 207 208 207 208 209 209 206 +210 208 208 207 209 207 214 215 219 223 222 219 +222 209 186 122 76 82 91 111 121 129 135 137 +142 151 153 158 156 156 159 152 159 158 158 157 +158 157 153 155 159 152 151 154 145 138 137 128 +117 104 95 79 69 48 43 36 34 36 34 35 +37 49 83 150 187 201 212 217 216 206 192 171 +152 154 183 201 209 218 221 219 217 215 214 213 +212 211 210 215 216 215 217 213 212 210 215 218 +221 226 232 233 223 203 115 43 43 41 44 40 +48 43 46 54 47 46 49 49 52 47 58 51 +59 52 51 56 47 51 46 51 45 51 42 44 +43 41 36 42 55 45 47 49 56 56 57 58 +57 56 56 51 55 46 56 69 87 111 134 138 +153 150 152 151 148 144 144 142 138 142 149 152 +160 156 160 157 161 162 162 158 158 160 159 164 +158 160 161 158 159 159 159 161 157 158 158 159 +158 158 154 155 +97 97 91 88 86 94 87 90 +94 89 95 93 95 93 99 100 95 93 90 93 +90 84 79 91 91 98 105 110 122 127 138 142 +150 149 154 155 161 165 167 166 168 165 168 166 +169 166 168 165 167 168 165 161 161 156 154 152 +150 138 132 131 120 112 102 91 81 74 80 77 +74 79 80 77 76 76 87 86 92 91 97 95 +95 101 104 100 97 108 99 99 98 99 100 99 +104 94 99 100 99 101 101 100 96 98 104 103 +103 103 106 107 106 107 106 110 108 111 115 113 +115 120 115 114 105 107 103 109 173 220 211 200 +187 172 145 128 116 98 96 93 93 104 103 106 +108 100 104 104 107 105 111 118 112 105 115 121 +108 94 102 117 124 117 105 106 120 132 129 127 +121 131 131 138 128 119 116 122 129 134 121 112 +104 116 122 127 129 132 131 138 134 127 126 119 +121 130 129 125 114 105 111 116 112 101 101 129 +153 168 168 174 166 180 177 174 177 184 180 165 +171 161 166 161 167 164 168 166 174 183 182 165 +150 166 168 173 181 186 182 186 189 181 175 175 +172 172 171 176 185 199 196 186 189 195 192 187 +177 180 184 186 189 183 188 194 191 186 183 192 +201 191 187 183 172 180 186 194 199 201 202 196 +192 197 200 196 198 198 199 196 189 194 196 196 +198 205 202 200 198 196 199 200 201 201 200 200 +198 198 198 206 204 200 202 204 207 208 209 206 +203 207 209 209 207 210 211 206 205 208 207 203 +204 206 210 211 209 216 220 217 222 218 206 170 +105 78 90 112 119 127 135 139 141 146 155 156 +157 154 155 154 157 158 157 154 159 154 153 156 +158 151 150 148 137 137 129 125 112 106 97 88 +62 47 45 35 35 34 35 42 55 95 164 196 +207 213 217 209 203 186 158 154 175 191 198 213 +218 217 219 218 216 214 213 212 210 209 210 212 +214 215 211 206 201 202 212 212 222 224 231 234 +224 206 141 44 40 41 45 42 45 43 46 47 +49 49 51 54 55 46 55 48 50 50 50 46 +43 46 51 52 47 49 49 46 38 43 46 46 +56 54 48 56 59 57 54 58 50 49 54 48 +46 46 63 77 106 126 138 149 155 159 149 149 +148 140 144 140 140 148 151 153 157 161 159 157 +160 156 158 158 154 155 157 157 156 160 159 161 +156 160 157 157 158 156 157 158 155 158 159 157 +90 90 92 91 96 91 91 96 99 88 93 93 +93 97 96 96 99 92 98 95 95 86 85 89 +93 104 107 108 121 126 138 139 149 148 153 157 +161 162 170 170 171 165 165 167 169 168 166 163 +165 163 167 164 162 156 154 149 146 140 132 131 +123 115 108 92 83 78 73 75 77 74 72 79 +80 77 87 83 91 90 95 92 97 93 100 102 +96 99 97 98 96 104 103 102 105 98 102 99 +99 97 100 103 105 101 101 101 101 100 102 110 +107 112 114 112 114 115 109 116 115 113 113 121 +110 106 105 113 176 217 210 190 183 177 140 132 +113 95 93 92 98 96 108 105 100 103 104 105 +102 112 114 118 111 116 113 101 89 98 112 127 +112 106 108 122 128 128 126 126 126 130 134 132 +120 114 124 117 124 117 113 114 118 124 133 135 +140 138 133 129 120 117 114 121 136 137 126 118 +112 111 118 110 104 105 137 148 158 168 170 171 +175 175 186 177 174 168 168 163 158 167 162 161 +164 164 175 184 185 171 160 162 175 175 186 175 +174 178 181 178 184 184 181 172 175 173 182 184 +179 190 198 193 185 194 196 194 189 178 181 188 +181 186 185 188 195 195 186 176 183 187 175 170 +179 194 197 201 200 201 203 201 195 194 194 199 +198 193 196 198 190 188 185 190 196 201 203 203 +200 201 198 198 199 202 201 201 203 198 198 203 +202 204 202 204 208 211 207 206 207 206 208 207 +207 205 202 203 200 203 204 202 204 208 207 205 +208 212 214 213 217 222 214 196 136 81 87 104 +120 126 133 141 146 146 150 150 155 154 152 154 +156 160 158 155 157 154 155 154 154 147 150 144 +143 137 130 117 108 105 95 98 58 42 37 33 +31 38 42 67 113 168 201 210 220 217 209 201 +180 156 147 178 197 204 212 219 220 218 217 215 +214 213 210 209 210 210 210 215 211 206 208 202 +200 205 212 215 221 223 229 232 226 211 146 47 +45 44 42 41 43 45 41 44 48 47 49 56 +56 50 49 60 59 58 48 47 46 48 44 47 +48 49 43 47 38 40 49 50 52 50 52 47 +60 54 55 50 54 53 47 47 51 56 69 97 +112 136 145 152 155 153 149 142 146 143 143 142 +145 149 156 156 160 160 161 157 156 157 157 159 +158 158 157 158 161 157 157 159 159 158 155 154 +157 155 155 158 154 158 158 157 +95 95 89 92 +89 95 89 92 93 93 95 95 95 97 92 94 +96 97 96 94 98 95 89 91 91 100 107 114 +126 131 132 137 145 148 151 154 161 163 163 170 +166 164 167 166 166 168 166 167 167 168 168 163 +158 152 151 154 143 143 135 128 117 113 107 96 +87 76 70 68 73 70 77 78 83 79 88 88 +92 92 92 97 98 99 100 97 98 100 96 98 +100 98 100 104 99 100 99 103 105 99 99 99 +102 101 101 106 103 105 104 106 110 107 109 112 +109 106 111 115 107 109 110 107 108 101 103 124 +197 215 206 192 187 161 161 129 106 92 90 97 +94 99 99 98 101 99 108 107 112 106 107 113 +113 110 95 88 95 108 117 117 110 115 118 126 +123 123 131 131 126 120 124 125 126 126 126 115 +108 104 114 125 126 128 139 141 144 141 128 116 +112 118 131 137 129 126 115 112 116 106 102 106 +116 136 153 163 158 163 176 173 174 178 179 181 +169 168 159 159 162 160 165 169 167 179 179 176 +166 151 162 176 182 187 181 184 176 171 174 181 +176 174 180 183 182 181 187 192 180 178 199 196 +185 180 191 195 192 184 182 184 181 179 185 183 +184 195 193 176 163 174 182 185 186 197 201 201 +199 199 199 200 199 193 191 196 200 197 197 200 +195 190 187 185 189 199 201 204 203 200 200 196 +200 203 202 204 203 205 202 203 203 204 207 205 +207 208 205 202 199 201 197 200 199 198 200 200 +204 206 205 207 203 209 207 207 209 209 210 212 +215 216 214 208 168 107 94 109 118 124 131 135 +142 149 151 154 154 156 154 154 156 154 156 153 +154 154 156 156 159 149 147 140 148 135 126 113 +112 91 84 70 50 44 40 36 38 47 77 134 +182 203 215 221 217 205 192 171 152 150 172 198 +205 213 216 215 216 216 216 214 212 210 210 208 +208 208 206 211 208 203 203 200 205 208 214 216 +219 221 228 231 229 213 146 44 40 38 40 39 +42 48 47 48 51 46 49 50 48 49 54 55 +53 46 47 44 46 50 49 49 53 42 47 42 +45 37 47 45 51 43 48 45 49 55 55 52 +52 45 46 44 47 62 86 111 131 144 154 159 +155 153 152 145 145 144 142 146 147 151 156 157 +163 160 159 158 157 157 156 158 156 153 159 156 +159 159 156 155 158 155 157 155 156 160 159 156 +157 159 159 161 +92 92 95 89 97 93 98 96 +94 93 97 96 99 91 96 93 96 98 93 95 +106 94 98 98 97 97 110 117 123 133 132 141 +145 148 155 156 159 158 165 164 168 172 166 167 +168 169 168 164 167 168 165 162 163 155 156 153 +146 148 139 127 119 110 103 94 83 79 77 73 +77 78 80 68 81 86 88 90 93 95 92 95 +96 97 95 94 99 98 98 99 95 100 101 106 +100 101 98 99 102 95 104 99 107 106 102 108 +109 104 104 106 108 111 110 108 112 111 113 117 +112 110 106 99 104 96 104 135 213 215 201 195 +173 171 171 143 109 100 91 96 103 103 99 97 +108 105 111 112 111 99 107 107 111 91 86 103 +114 113 121 118 120 122 117 120 121 126 131 126 +118 112 122 126 127 122 110 112 111 121 127 127 +126 127 133 137 136 127 122 116 121 133 133 137 +128 122 114 119 110 103 105 121 145 160 160 159 +160 160 173 180 173 177 171 170 170 163 163 154 +153 153 162 174 182 181 171 157 158 167 176 185 +183 183 186 182 181 174 174 178 175 171 177 190 +192 187 185 196 188 175 181 193 189 181 176 193 +195 188 185 192 194 183 179 181 185 185 182 173 +174 180 193 192 190 190 196 200 199 197 200 197 +199 199 192 190 193 199 200 199 199 196 196 188 +185 193 200 200 202 200 200 197 196 199 200 201 +200 206 208 206 208 199 206 205 203 200 198 190 +193 194 199 200 200 201 204 205 204 205 205 206 +204 206 205 206 207 208 209 212 214 215 215 213 +195 153 113 106 118 125 130 133 144 147 151 150 +151 155 157 152 157 157 157 152 153 157 155 152 +153 146 150 142 137 134 123 112 105 90 80 63 +52 43 40 43 62 100 151 193 209 218 217 212 +206 191 167 153 163 182 199 204 215 215 214 213 +214 214 213 214 214 210 207 206 201 195 200 210 +204 203 203 207 210 211 214 217 220 224 225 230 +227 214 147 39 42 38 41 40 43 45 45 50 +54 53 62 52 56 54 48 45 51 40 42 43 +44 46 51 48 46 44 43 39 47 43 45 49 +49 47 50 61 54 54 51 49 45 42 42 50 +53 77 100 124 141 150 151 156 153 148 148 145 +144 139 145 148 154 159 157 161 159 161 159 159 +160 161 159 157 158 159 158 156 159 161 156 155 +160 158 156 153 154 155 157 157 157 159 159 157 +92 92 95 94 99 90 95 98 93 94 106 95 +102 98 96 96 97 101 94 98 96 98 93 89 +97 98 108 119 124 129 129 141 145 147 153 159 +161 167 165 166 166 166 168 164 171 170 167 167 +165 167 166 165 163 161 157 154 145 144 140 127 +123 112 109 99 91 85 72 76 77 76 81 81 +82 81 85 90 87 90 92 94 96 98 97 98 +99 98 103 102 100 105 101 100 99 101 98 100 +98 100 103 100 103 107 104 108 106 103 108 108 +108 108 105 108 111 112 113 109 114 119 108 105 +102 96 99 149 216 213 207 188 171 169 150 137 +112 101 94 96 99 106 108 104 106 102 110 105 +108 106 108 97 83 95 106 117 112 114 117 115 +118 124 121 125 128 125 125 122 113 123 129 123 +119 116 103 116 125 126 127 126 126 130 136 129 +131 124 123 134 130 131 134 135 122 127 113 108 +108 99 112 137 163 169 167 162 161 166 169 177 +177 167 166 161 161 170 162 157 157 157 169 184 +181 166 152 165 177 178 182 180 182 180 185 181 +176 175 170 167 172 182 176 188 194 187 181 188 +190 180 173 178 189 190 178 180 189 193 186 181 +189 192 184 174 170 164 160 179 190 192 193 195 +193 189 187 194 200 199 198 198 202 201 199 187 +186 192 199 199 199 198 199 195 191 189 191 201 +201 202 202 203 198 196 197 199 196 203 209 205 +205 201 192 190 193 197 193 191 199 200 204 204 +206 206 205 203 201 201 204 207 206 205 206 207 +205 208 210 207 212 216 216 217 210 195 162 125 +120 118 128 135 144 147 148 149 150 154 155 153 +155 158 156 154 155 154 156 156 147 150 142 141 +135 135 114 108 99 95 87 71 46 45 57 86 +132 172 197 213 217 215 209 200 185 174 163 175 +192 202 208 212 215 213 214 212 213 211 209 209 +212 207 208 201 190 195 200 204 202 204 204 208 +213 214 218 217 220 225 226 233 228 212 146 41 +39 38 41 41 49 54 49 49 54 57 56 49 +59 43 47 43 45 41 46 39 41 44 53 51 +48 44 50 49 54 45 46 49 59 50 54 51 +54 44 44 37 39 42 49 51 66 87 112 134 +149 154 159 154 153 149 146 146 139 144 149 153 +157 156 159 162 158 158 159 157 161 157 155 156 +158 159 157 155 158 156 157 155 158 158 155 156 +156 158 156 155 157 159 159 156 +94 94 95 93 +93 93 97 96 99 93 98 96 102 100 98 97 +95 102 95 97 97 95 98 95 96 101 109 112 +119 127 138 142 143 149 154 156 160 165 164 164 +171 168 169 164 170 168 170 167 168 161 166 165 +161 160 157 155 146 145 139 127 123 113 104 99 +84 83 77 78 74 75 77 78 85 86 86 91 +88 94 98 94 103 95 104 95 95 99 100 100 +95 107 100 102 98 97 105 102 102 99 97 95 +100 107 109 106 106 110 102 108 108 106 107 114 +109 114 114 112 110 109 106 110 104 100 109 159 +216 209 212 184 184 158 139 120 110 107 94 100 +104 104 104 97 98 113 104 105 100 101 96 82 +86 109 114 115 113 121 119 110 114 128 129 129 +120 120 117 121 126 131 119 118 121 120 123 125 +121 118 113 126 136 138 131 130 133 134 149 138 +134 134 128 121 117 111 101 98 106 120 137 145 +156 166 171 172 162 164 172 164 165 163 156 161 +159 158 168 168 168 172 168 176 161 152 161 170 +188 183 178 182 179 185 182 178 178 171 171 171 +177 187 189 181 194 189 180 179 183 187 183 182 +178 184 190 177 177 189 191 187 176 185 184 167 +156 166 169 180 195 194 189 186 188 192 188 193 +196 200 199 197 201 200 198 193 188 189 191 191 +198 196 197 198 198 193 189 194 201 201 202 204 +200 196 196 194 190 194 206 204 193 183 179 189 +196 194 197 189 197 205 203 202 203 206 205 203 +203 196 207 205 204 203 206 207 206 206 208 204 +207 214 213 214 215 214 199 169 144 130 128 132 +141 147 147 151 154 150 152 151 154 158 155 153 +155 155 152 151 148 147 147 143 133 129 120 107 +95 81 70 56 60 73 114 159 186 208 217 218 +211 203 196 180 170 168 184 200 203 209 216 216 +214 212 213 211 213 208 210 208 207 204 202 197 +196 201 203 201 200 203 208 208 212 215 217 220 +220 226 226 228 225 211 142 38 36 37 39 42 +44 46 46 49 55 59 57 66 61 50 52 50 +45 49 45 48 44 43 43 44 46 40 42 53 +50 44 55 52 48 51 47 50 55 41 41 37 +34 37 56 55 74 102 129 144 153 153 153 155 +146 143 145 143 142 144 153 154 160 159 159 161 +163 158 159 158 160 156 157 158 158 159 159 156 +157 155 159 157 159 157 157 154 156 156 153 154 +156 162 156 154 +95 95 95 101 94 98 95 97 +98 99 94 99 100 98 97 101 95 101 98 94 +97 94 93 93 92 99 111 113 123 130 140 142 +146 146 152 159 160 163 167 167 168 168 168 165 +168 167 164 164 166 164 163 167 163 162 158 157 +153 148 139 132 121 112 106 100 88 84 85 73 +77 80 84 83 81 88 88 91 97 92 96 92 +97 98 102 101 100 103 103 99 103 97 96 98 +110 101 104 97 102 101 100 103 102 101 107 106 +102 104 104 109 111 112 110 108 111 112 113 114 +112 111 107 106 100 101 112 181 217 212 199 199 +170 156 134 119 117 104 98 99 102 105 99 93 +107 107 104 103 106 101 89 96 107 116 119 121 +120 115 117 111 119 126 131 125 117 121 126 127 +122 117 115 113 122 130 125 122 120 109 123 131 +133 130 133 132 141 150 140 130 130 133 130 127 +109 97 97 105 128 146 153 149 148 155 171 178 +173 167 164 151 144 161 162 159 154 162 164 181 +186 171 144 143 155 160 172 170 179 189 182 181 +176 179 181 174 182 180 173 177 180 186 184 178 +181 193 192 178 183 185 182 185 176 174 186 191 +180 177 183 192 181 169 168 157 171 188 187 179 +190 194 189 179 182 191 194 192 193 198 202 197 +194 196 198 194 195 195 192 191 197 197 196 195 +197 199 196 192 192 199 201 203 202 199 198 192 +191 182 185 182 164 175 193 200 201 196 197 195 +195 204 203 203 201 203 203 203 202 197 204 206 +202 205 204 203 207 205 203 205 209 211 214 214 +212 215 214 205 191 158 133 131 134 147 148 153 +149 152 155 150 154 156 152 154 155 154 151 153 +149 144 147 143 131 123 119 102 89 80 68 75 +97 148 183 201 210 219 215 207 193 183 176 170 +169 189 203 206 212 215 220 216 213 211 208 211 +209 207 209 204 206 202 200 201 201 205 203 204 +203 205 207 211 212 215 218 220 221 225 226 225 +223 211 134 40 39 37 41 41 46 53 53 54 +51 56 55 55 57 56 41 49 49 49 42 46 +43 46 44 44 41 41 44 44 49 53 49 56 +50 53 51 49 47 40 36 33 32 37 45 71 +89 118 141 150 152 156 151 148 150 145 146 143 +141 149 154 159 159 160 162 164 162 159 158 158 +156 161 157 156 157 156 157 156 160 161 156 161 +155 154 154 156 154 151 149 151 154 155 159 155 +94 94 101 96 98 98 97 94 98 97 101 107 +99 97 97 98 98 96 98 91 96 96 95 94 +94 102 108 113 126 132 130 145 145 151 154 156 +158 161 168 166 165 164 165 166 169 169 170 165 +164 167 168 168 164 163 155 150 154 148 141 136 +122 110 107 99 86 84 78 74 76 79 77 83 +80 89 90 95 96 92 92 97 97 99 102 97 +97 97 106 102 98 103 97 102 106 102 112 102 +103 103 99 101 101 102 103 109 109 107 108 106 +111 108 108 112 113 113 110 116 114 112 104 102 +101 98 119 206 218 202 197 200 157 147 125 127 +103 109 90 98 96 94 98 99 103 100 105 103 +98 94 104 108 112 117 124 119 114 112 118 122 +114 113 115 115 122 125 124 118 105 102 111 121 +121 123 126 121 118 123 130 133 135 130 132 133 +126 127 128 122 130 126 121 110 91 91 111 125 +154 159 162 159 147 151 159 176 180 171 158 142 +143 148 154 156 159 168 179 187 172 156 144 156 +163 172 173 178 171 178 190 186 175 179 173 173 +183 186 188 182 186 169 180 178 179 184 191 191 +182 181 181 187 184 177 173 184 190 183 174 177 +180 157 163 168 176 189 195 189 189 191 189 184 +181 182 183 191 194 193 194 195 195 193 198 198 +199 198 196 195 193 195 196 192 196 200 199 194 +188 195 203 201 204 202 198 190 182 169 152 167 +173 191 198 202 201 199 201 197 197 198 205 204 +201 200 201 203 200 200 199 201 202 203 205 203 +203 203 200 203 205 206 213 212 212 212 215 217 +214 194 161 137 132 143 147 150 147 151 150 152 +153 151 154 153 155 152 149 149 149 147 140 139 +132 120 112 99 89 86 90 119 165 193 211 220 +213 206 202 191 176 181 173 173 191 203 208 214 +214 213 214 214 209 207 206 210 210 208 205 204 +204 201 201 199 201 201 202 203 204 208 212 212 +214 215 217 219 223 226 225 225 223 208 124 38 +47 39 44 49 50 43 49 49 51 51 53 59 +55 54 48 47 53 51 50 49 47 47 47 46 +41 40 43 54 48 54 61 50 53 56 62 48 +40 32 34 32 36 41 64 84 106 133 144 149 +155 153 149 149 147 145 143 144 145 154 156 161 +158 162 163 161 162 160 156 160 159 157 155 158 +157 155 158 157 155 157 157 153 155 157 159 157 +159 152 152 155 156 155 155 161 +99 99 101 96 +99 98 92 100 99 99 99 99 100 98 96 100 +97 96 95 94 101 92 87 91 97 102 106 113 +126 131 135 140 144 149 155 153 164 163 162 168 +164 167 163 169 164 164 168 170 170 172 168 167 +169 163 158 154 151 144 138 127 120 115 106 95 +88 84 79 74 79 81 81 79 86 87 89 97 +97 94 92 101 100 103 101 98 99 102 104 108 +104 108 100 102 104 100 108 103 106 102 96 102 +100 105 101 108 109 109 113 112 107 109 110 111 +115 118 112 115 116 110 108 106 99 100 131 208 +216 202 207 194 149 146 132 120 113 107 101 93 +91 96 99 97 98 103 100 97 94 107 112 110 +113 113 121 116 107 114 126 124 115 109 109 125 +132 127 118 110 101 113 128 124 122 119 120 124 +129 132 123 129 140 130 132 125 121 116 125 122 +131 117 102 92 94 100 123 148 155 167 161 162 +158 157 153 160 173 165 157 147 148 145 143 156 +175 182 174 162 143 147 158 173 172 172 173 174 +170 170 175 186 184 174 176 172 185 188 191 186 +176 168 170 176 178 180 179 190 188 177 173 175 +182 184 180 177 184 190 171 154 160 168 173 180 +176 183 186 192 194 191 189 182 184 180 180 185 +192 191 189 188 195 197 199 196 194 196 192 196 +195 199 196 196 197 195 202 199 194 193 201 203 +202 205 200 185 160 153 154 179 196 197 200 203 +198 201 201 198 200 199 203 204 200 196 200 202 +202 201 199 199 201 201 201 200 198 200 199 204 +202 204 209 212 214 210 212 218 218 212 192 157 +136 140 144 150 150 152 152 151 152 153 151 154 +147 151 153 147 147 141 137 137 125 116 112 95 +100 113 156 186 204 214 219 212 203 191 178 192 +184 177 178 196 202 207 214 216 213 210 210 210 +207 207 206 205 205 205 203 202 202 201 196 199 +200 202 202 203 207 208 212 214 217 216 218 218 +221 225 226 223 221 204 108 39 43 41 41 48 +49 50 50 51 51 50 53 52 69 48 48 47 +51 51 47 45 44 51 46 55 45 49 54 56 +55 55 56 53 57 59 52 48 44 35 32 30 +36 48 75 98 127 140 150 151 155 151 149 148 +140 142 142 144 149 154 159 162 158 159 160 159 +161 157 160 157 156 155 157 154 154 158 158 154 +157 154 153 155 157 157 157 155 157 154 154 156 +154 154 153 155 +99 99 96 98 100 99 100 98 +100 98 99 97 103 101 98 100 96 95 97 95 +94 97 96 94 98 101 106 111 120 131 137 139 +150 148 153 156 162 161 164 166 167 165 166 168 +170 168 167 163 167 168 170 167 165 162 158 154 +148 146 142 131 122 114 106 95 88 79 77 74 +79 79 82 81 90 84 86 89 95 94 97 94 +100 94 99 97 102 101 101 103 98 102 104 106 +102 106 105 106 99 102 98 99 100 99 103 104 +104 114 104 108 107 113 108 115 111 107 119 111 +115 112 105 105 104 102 144 212 210 208 206 176 +147 141 119 119 111 101 100 92 92 98 94 100 +104 104 96 101 109 109 109 111 113 110 112 110 +112 118 114 105 96 106 119 132 117 113 101 106 +122 126 128 126 118 117 126 128 130 124 117 129 +133 128 122 115 113 122 127 132 124 109 102 95 +112 124 141 152 152 158 165 159 166 165 149 143 +144 158 157 155 142 144 150 162 180 178 151 146 +150 161 178 172 183 173 170 169 169 171 170 176 +181 186 181 181 182 187 190 191 177 168 172 171 +175 181 176 177 191 185 180 173 180 183 181 182 +174 172 162 152 167 176 183 179 181 177 176 182 +190 193 190 184 188 187 180 177 189 193 190 191 +192 196 197 195 198 195 191 187 199 199 201 200 +196 195 196 198 203 195 198 202 200 197 195 173 +152 158 168 182 196 195 194 199 199 202 199 199 +201 201 204 204 199 197 201 200 204 202 203 201 +200 199 198 196 193 198 198 204 202 202 204 208 +208 212 211 216 215 217 205 186 150 142 145 148 +152 155 154 153 150 151 152 152 149 147 151 148 +139 140 134 133 126 117 111 119 146 181 199 211 +221 215 206 199 190 182 189 191 178 187 197 206 +208 214 212 212 213 210 209 208 207 202 201 204 +206 203 201 200 201 199 200 200 205 205 202 206 +207 207 210 213 216 218 219 220 221 223 224 221 +220 202 90 44 47 41 38 37 45 45 48 46 +46 45 45 52 61 54 55 66 54 54 52 47 +49 50 47 46 53 49 51 48 50 45 54 51 +49 55 51 44 38 34 31 33 43 57 92 117 +132 145 156 155 156 152 150 147 144 142 146 154 +153 157 157 160 161 160 161 158 161 161 159 155 +157 158 164 154 153 159 157 155 159 156 156 156 +156 153 152 156 157 157 157 151 157 152 157 154 +97 97 96 98 98 100 98 106 96 100 101 99 +100 99 99 105 98 100 106 94 93 93 95 98 +92 101 106 113 126 127 135 140 146 154 154 157 +158 161 165 164 166 167 166 165 166 168 166 163 +165 170 165 171 164 164 158 156 149 148 143 127 +124 115 106 97 91 86 76 73 82 78 84 79 +85 83 84 87 95 93 95 91 100 97 100 97 +99 97 98 101 98 103 100 99 105 106 106 98 +105 100 100 99 99 99 101 104 111 114 107 108 +109 110 111 111 113 109 114 112 113 113 108 100 +102 105 170 223 210 212 200 182 160 122 117 116 +115 116 102 95 97 87 90 99 96 99 104 113 +109 113 117 115 107 101 106 113 121 107 95 92 +102 123 117 116 117 103 104 118 124 126 128 125 +125 129 127 126 131 124 127 133 118 113 108 112 +119 120 122 118 105 98 101 110 129 151 155 148 +154 152 163 164 159 159 146 140 141 143 151 154 +150 149 162 167 149 147 144 152 167 169 179 178 +175 171 172 169 175 173 174 170 169 191 190 185 +175 169 185 191 182 174 178 172 167 176 180 179 +176 183 187 177 182 179 180 178 168 148 157 176 +181 183 187 185 182 179 178 176 184 192 192 190 +187 186 184 181 186 188 189 195 190 187 192 195 +197 195 193 188 195 199 203 202 197 196 194 198 +204 196 197 202 196 176 169 153 166 176 184 187 +187 190 195 195 197 198 200 202 201 201 202 204 +201 201 201 203 202 202 202 200 200 197 196 196 +196 195 193 199 200 203 201 203 206 209 209 211 +211 212 211 203 170 143 146 152 154 156 154 153 +152 152 150 145 150 150 148 143 143 138 132 131 +126 131 147 172 196 208 216 219 217 204 195 183 +191 188 188 181 192 201 206 212 213 214 209 210 +211 209 208 208 204 200 201 203 206 204 200 197 +200 198 202 203 203 202 206 209 208 208 210 213 +216 218 218 219 221 224 225 220 223 186 62 40 +49 45 42 43 44 50 50 44 49 48 50 54 +51 55 55 52 55 55 50 46 43 42 42 45 +45 47 52 60 49 53 54 53 52 51 50 39 +35 30 35 38 52 82 107 126 139 148 154 155 +152 155 150 145 141 144 150 150 156 158 160 163 +158 158 163 157 158 157 156 155 159 159 154 154 +154 152 153 155 157 155 154 157 157 155 156 156 +154 150 154 153 155 152 153 153 +101 101 98 98 +99 99 99 101 98 100 98 99 99 102 98 98 +100 105 96 95 99 98 94 94 100 99 110 115 +125 132 139 137 144 148 152 156 161 164 165 167 +165 167 166 168 171 171 168 167 169 167 167 164 +163 168 159 156 152 145 142 133 122 118 110 101 +89 82 73 74 77 81 77 79 86 88 86 85 +94 93 93 96 103 101 100 97 96 104 100 103 +102 101 99 104 103 99 98 105 102 98 96 98 +91 103 100 108 108 107 103 105 108 108 107 109 +111 110 115 111 108 110 101 95 93 106 181 227 +214 207 187 177 144 126 117 108 118 115 102 99 +94 91 101 101 93 104 108 108 104 108 120 112 +99 99 111 118 110 99 98 104 117 122 117 117 +113 117 123 122 121 118 121 123 125 129 132 127 +128 138 133 124 115 113 119 121 120 119 116 107 +102 107 115 137 144 153 162 156 157 155 157 161 +164 156 148 143 139 140 140 150 164 169 157 143 +128 135 153 165 169 175 174 176 178 170 173 172 +176 179 175 177 176 178 187 181 178 167 169 181 +182 179 175 169 169 172 182 183 176 176 190 188 +182 174 170 165 149 157 160 180 191 190 190 183 +184 179 175 178 178 188 192 193 189 187 181 185 +185 185 193 195 191 187 187 188 194 193 189 185 +190 197 202 201 200 200 198 199 201 201 201 194 +181 150 149 166 181 189 195 190 188 191 190 195 +197 195 202 203 199 197 202 200 199 203 205 200 +202 200 201 199 198 200 197 198 196 196 191 195 +197 198 201 199 203 206 207 207 206 207 209 209 +189 150 142 149 154 154 154 149 148 151 145 149 +151 147 151 148 141 136 132 138 154 181 192 205 +216 219 211 207 198 183 186 193 191 177 186 195 +199 207 212 213 211 211 209 209 207 208 207 203 +200 200 205 207 203 201 200 198 199 203 204 204 +199 204 206 210 211 210 213 215 215 216 216 221 +220 223 223 221 222 174 52 41 46 43 48 45 +51 52 51 44 47 50 46 54 52 50 56 54 +51 48 46 48 47 40 46 45 42 46 53 50 +49 52 54 54 57 54 50 39 30 35 36 43 +59 95 115 134 150 150 156 153 151 150 151 144 +141 148 151 153 161 163 160 164 158 157 160 161 +160 157 156 157 160 154 155 157 156 154 156 156 +156 156 156 156 151 155 157 156 155 153 154 155 +155 153 151 155 +101 101 105 95 98 96 95 105 +105 103 98 99 98 101 102 99 98 96 98 97 +99 96 90 99 98 103 111 117 121 132 141 138 +148 149 152 158 157 159 162 162 166 163 166 167 +169 171 167 168 167 165 169 167 167 162 159 156 +155 146 137 135 121 117 113 103 89 79 80 73 +72 79 81 82 86 87 83 93 93 90 98 101 +100 104 107 102 103 101 99 102 101 102 101 105 +96 94 106 107 100 103 95 100 95 102 100 99 +103 106 102 108 110 103 113 111 111 108 112 110 +107 104 103 97 95 105 174 222 215 201 186 158 +129 138 121 123 118 109 105 101 92 99 102 102 +106 107 104 108 112 106 104 96 96 109 110 101 +95 101 110 115 118 116 116 116 120 119 119 119 +116 123 123 122 123 126 129 129 125 125 120 111 +113 124 129 124 116 115 108 107 108 113 133 148 +153 150 163 169 162 152 157 154 155 150 145 141 +145 138 136 146 174 174 144 136 135 145 156 168 +170 173 177 172 172 172 172 177 178 177 183 184 +171 166 168 173 179 175 170 167 173 181 187 176 +172 175 175 181 184 172 177 193 189 174 161 152 +162 171 173 178 185 191 190 183 182 186 180 179 +185 184 183 190 189 192 186 187 187 185 186 193 +190 189 190 185 190 193 192 185 192 197 201 198 +202 204 200 201 198 199 198 181 156 154 164 179 +185 193 195 190 190 192 193 195 198 199 196 200 +198 200 199 199 196 202 203 199 200 200 199 197 +202 198 199 198 197 197 195 193 197 196 196 201 +196 200 203 204 207 206 205 214 203 167 146 151 +152 152 155 148 155 149 147 144 152 145 143 142 +138 140 153 183 195 205 209 217 215 208 198 185 +180 189 194 182 174 185 198 198 208 210 212 212 +210 210 209 207 208 204 201 200 202 203 203 202 +200 198 200 200 203 203 203 202 203 206 207 209 +213 212 215 214 216 216 218 221 220 225 221 222 +216 148 42 38 41 41 47 54 47 57 60 49 +47 48 46 52 48 47 50 48 52 54 46 38 +42 41 44 42 43 45 51 50 47 55 52 47 +51 40 42 45 38 38 45 64 81 111 127 139 +150 154 155 154 150 147 143 144 149 151 153 156 +157 160 163 160 158 158 160 163 161 159 157 157 +159 156 157 157 159 157 152 158 160 159 157 156 +156 152 155 155 153 152 152 153 155 155 153 155 +98 98 104 98 102 99 101 100 101 97 97 97 +96 99 98 96 104 96 98 98 99 98 96 99 +99 104 109 118 124 130 139 138 149 148 150 152 +151 160 167 164 165 167 165 169 170 168 171 167 +169 170 167 170 168 171 160 153 155 145 139 130 +123 115 112 99 89 77 79 76 79 82 78 86 +86 89 88 92 90 93 93 97 95 100 100 101 +101 97 102 101 101 102 103 98 97 98 103 100 +105 99 96 103 98 103 103 105 97 103 102 107 +110 106 106 109 116 108 107 105 103 102 98 94 +95 111 192 221 209 192 178 151 138 125 132 131 +117 116 111 97 104 104 95 97 108 102 105 111 +105 101 97 100 104 103 95 90 100 117 118 115 +119 116 119 121 118 112 109 119 128 127 124 126 +130 127 123 122 117 111 109 114 124 126 117 120 +113 113 105 105 115 130 135 146 157 150 153 169 +164 155 145 147 144 148 149 145 147 155 156 152 +143 140 134 144 152 154 156 162 172 178 173 171 +169 170 178 173 181 177 178 186 167 170 168 161 +173 174 172 167 163 172 190 191 186 177 171 173 +183 181 168 177 179 161 159 166 179 182 181 176 +175 183 187 186 181 188 182 177 183 182 180 175 +175 184 194 192 187 184 179 175 181 191 193 190 +188 189 190 195 190 192 201 201 201 203 204 202 +197 188 179 168 164 171 177 180 187 189 188 186 +194 199 199 196 199 199 198 197 196 197 198 197 +194 196 200 200 196 198 199 198 198 197 201 197 +200 197 197 193 192 194 192 201 195 195 196 199 +205 207 203 212 206 185 145 148 151 152 155 154 +149 148 149 146 146 143 143 142 150 172 193 200 +212 219 213 210 203 190 183 184 197 194 170 178 +192 200 204 209 213 211 210 209 206 207 206 207 +204 202 199 202 202 202 200 199 200 202 201 200 +203 203 204 202 206 209 209 210 212 216 216 215 +216 218 219 221 221 222 219 222 213 127 47 41 +46 41 43 45 52 51 47 48 49 48 44 45 +48 54 47 54 58 50 49 49 46 48 45 48 +37 44 50 51 54 53 51 48 47 51 45 42 +45 51 56 74 97 121 139 149 150 154 156 152 +150 147 142 143 147 151 154 158 156 164 162 161 +157 158 159 156 158 156 157 153 156 157 155 158 +155 154 158 155 156 157 158 155 153 154 155 154 +158 150 157 151 154 156 153 156 +99 99 96 96 +105 104 103 103 101 99 100 103 98 100 98 98 +103 101 94 99 97 98 96 103 104 109 112 120 +126 132 140 142 145 152 149 155 157 157 164 166 +163 164 170 169 170 176 169 171 170 169 169 172 +173 168 158 154 149 148 139 129 124 118 108 96 +88 77 77 79 74 80 81 85 84 85 90 98 +90 97 96 92 99 99 93 95 99 101 108 101 +101 104 105 101 102 95 103 104 99 100 97 101 +95 100 98 101 99 107 108 105 105 107 108 108 +110 108 110 109 106 105 98 94 97 132 215 219 +204 197 156 159 141 134 137 120 120 120 109 100 +108 98 98 106 104 100 106 103 101 90 100 116 +104 89 89 106 110 115 109 112 114 122 117 110 +98 101 109 120 128 124 127 129 128 133 125 115 +105 106 116 121 118 118 115 116 115 118 105 118 +140 146 141 139 151 153 150 156 162 160 141 141 +143 147 145 150 155 165 162 133 118 122 141 161 +164 163 167 158 156 166 171 171 173 176 178 184 +179 176 166 171 175 166 173 163 157 160 172 173 +176 174 177 195 195 188 181 172 171 178 168 153 +157 162 175 179 178 181 184 178 172 171 176 187 +189 186 179 181 179 180 181 176 167 170 181 188 +188 182 180 172 172 179 188 193 193 194 193 194 +195 191 197 201 203 201 201 197 185 163 158 175 +188 188 187 190 190 190 191 187 189 193 196 194 +195 197 198 193 195 195 196 195 194 189 200 198 +197 196 197 196 197 200 198 196 199 194 195 197 +190 185 194 196 196 194 193 198 203 205 203 208 +208 195 153 150 153 151 154 150 147 149 146 141 +137 141 144 159 187 193 204 212 215 210 204 192 +179 174 193 200 187 180 188 198 205 207 211 210 +212 209 208 207 205 205 205 201 200 202 201 199 +201 199 197 201 204 204 203 203 203 203 204 204 +206 209 210 212 212 215 211 214 217 218 219 221 +221 222 220 222 206 104 39 41 43 38 41 49 +52 51 45 55 58 46 47 50 49 45 50 55 +46 50 49 40 45 42 46 43 44 44 48 52 +46 53 46 53 48 49 49 47 47 58 73 95 +114 132 142 153 153 153 151 150 145 147 147 143 +147 151 160 157 161 160 160 160 160 162 160 156 +162 158 159 157 157 158 159 157 155 152 157 156 +157 155 152 154 157 160 155 155 153 155 153 148 +155 155 154 152 +97 97 102 99 94 103 97 101 +99 102 102 94 101 97 103 98 103 97 94 93 +95 102 92 99 107 109 110 119 127 134 137 142 +149 152 152 155 156 163 165 166 166 165 172 168 +169 168 172 170 171 172 171 170 170 165 161 155 +154 149 142 133 128 117 108 98 94 79 74 78 +76 77 76 82 85 89 91 98 89 92 93 94 +99 94 103 98 98 97 103 107 99 100 100 99 +103 99 102 101 98 101 98 98 99 101 100 104 +99 105 105 102 108 108 107 106 105 106 106 111 +110 98 96 96 100 144 217 217 208 195 154 148 +148 143 126 128 126 117 106 107 106 103 108 102 +101 110 103 98 94 101 103 104 95 92 104 113 +102 95 103 116 116 111 103 90 101 114 123 121 +118 119 120 127 123 121 114 108 107 118 127 123 +114 114 116 112 116 114 123 143 150 150 144 141 +148 158 156 149 156 153 142 143 141 149 147 156 +170 164 139 126 126 142 156 156 165 170 165 158 +150 153 167 175 175 180 182 179 183 166 165 163 +169 165 164 174 160 159 159 170 184 185 180 179 +191 191 187 175 167 162 153 153 157 177 185 185 +179 176 179 178 177 178 167 175 189 192 184 180 +177 183 179 180 175 177 173 171 179 190 188 179 +172 171 179 187 193 196 199 198 196 192 187 196 +199 195 192 182 165 164 175 189 192 189 196 196 +188 191 190 191 182 190 189 187 190 196 193 189 +194 194 196 195 194 191 195 200 196 194 190 193 +190 196 196 196 197 197 196 196 192 185 189 190 +195 191 190 191 194 198 200 205 209 196 159 143 +151 152 151 152 150 150 147 142 140 155 173 190 +198 207 215 208 201 197 186 185 183 193 192 175 +178 191 199 206 212 210 211 208 208 205 207 204 +203 203 201 198 199 199 201 200 202 200 202 203 +204 205 204 205 202 203 204 204 205 207 209 211 +214 211 212 214 216 218 219 219 220 222 221 220 +199 83 44 41 47 50 50 67 53 53 53 52 +53 48 53 49 56 48 48 56 43 43 52 41 +41 42 39 40 44 46 49 53 53 52 51 55 +49 53 53 54 54 70 82 106 126 140 146 153 +157 148 150 147 148 148 144 146 149 157 155 159 +161 160 161 161 160 158 161 159 158 155 158 157 +157 155 158 159 153 156 156 157 156 155 155 155 +157 155 156 155 156 157 153 155 153 156 150 155 +102 102 100 102 98 98 96 94 99 96 99 96 +102 98 100 94 102 104 96 95 99 97 96 103 +99 112 113 118 127 132 140 144 150 152 152 155 +159 163 164 164 166 166 168 170 172 171 173 173 +169 170 171 167 168 166 162 161 155 147 142 135 +124 116 109 96 92 75 79 76 75 73 77 90 +92 87 89 99 86 95 97 102 98 104 98 97 +99 98 97 101 104 100 96 103 101 104 104 101 +104 103 96 107 101 95 101 104 98 104 107 109 +105 106 108 109 103 104 108 103 106 95 88 100 +103 159 217 214 204 194 165 158 151 134 121 129 +127 116 104 102 103 107 109 101 109 108 98 100 +105 109 96 89 90 111 112 110 101 95 113 113 +105 100 95 107 118 123 121 118 116 120 124 115 +113 112 102 109 123 122 123 123 119 117 117 112 +109 128 148 152 148 144 154 148 143 149 154 149 +146 142 147 143 144 142 151 161 161 133 120 126 +151 160 160 166 161 163 166 164 155 155 159 177 +189 180 177 165 172 173 164 168 168 164 162 166 +172 172 164 166 171 190 188 175 178 188 184 176 +159 149 148 163 168 179 187 183 179 171 169 170 +175 177 175 170 174 186 191 182 174 171 177 178 +180 179 177 164 167 183 188 182 177 175 174 178 +194 194 191 194 189 185 172 179 179 176 176 170 +168 176 181 186 189 187 189 190 185 183 187 181 +179 182 183 183 191 193 190 189 192 197 196 195 +197 197 188 184 192 193 192 190 187 186 196 195 +192 199 196 193 193 190 180 189 193 191 188 186 +186 194 198 199 205 200 177 148 143 150 146 151 +150 148 151 153 172 190 195 202 208 215 212 202 +188 178 181 198 199 183 177 184 197 201 212 212 +211 210 207 206 206 204 200 202 198 200 202 200 +200 199 199 200 199 201 202 203 202 203 206 205 +201 202 205 205 204 208 209 211 210 212 212 215 +219 220 224 221 222 221 222 222 182 66 40 40 +47 47 50 47 51 56 50 55 52 49 50 55 +49 46 48 45 47 43 43 40 38 41 45 53 +50 51 51 54 54 51 56 60 53 56 62 63 +69 76 94 118 134 143 147 150 154 150 148 147 +146 144 146 151 152 158 158 161 157 161 160 162 +163 159 159 156 156 159 158 156 156 154 159 161 +156 161 160 157 158 154 154 152 155 152 150 158 +155 154 152 153 154 152 150 151 +98 98 101 96 +104 98 100 101 96 99 98 97 102 95 97 98 +101 102 97 94 101 94 92 102 102 109 108 119 +131 133 137 141 149 154 154 157 161 166 163 167 +166 168 168 171 171 173 171 171 170 172 173 171 +172 165 162 156 154 148 143 133 128 115 104 96 +88 79 80 78 79 75 78 84 85 89 88 97 +89 95 93 96 101 102 94 100 96 96 99 102 +103 103 102 98 102 100 103 94 93 96 102 97 +101 98 99 104 101 104 106 110 106 110 107 110 +105 105 104 105 105 96 94 88 105 182 220 211 +202 183 175 161 139 142 135 122 125 122 106 96 +106 111 106 104 108 106 105 110 111 111 99 102 +104 105 105 102 104 110 117 112 108 98 112 117 +122 121 118 126 126 124 120 107 111 113 115 127 +120 126 125 122 121 120 111 108 124 147 160 149 +144 146 149 151 147 140 147 148 143 138 144 148 +152 159 147 148 132 121 129 146 152 154 160 160 +160 163 163 167 160 166 171 164 178 183 170 168 +172 169 169 167 167 166 166 168 173 179 181 164 +161 168 189 182 173 174 178 171 150 146 157 174 +178 180 176 176 175 170 174 176 169 173 177 181 +172 176 181 186 183 175 167 177 182 189 178 170 +168 168 182 187 186 181 179 186 189 189 182 179 +181 174 155 161 167 172 172 178 180 185 190 190 +193 183 187 176 177 171 182 181 179 182 189 186 +191 191 190 188 191 200 197 198 196 197 191 182 +184 191 194 191 189 188 186 191 189 195 193 191 +191 188 181 186 186 190 187 184 182 192 195 195 +201 202 188 160 143 143 153 147 153 152 169 187 +197 198 206 213 204 195 190 192 193 195 201 191 +181 185 197 196 203 211 212 212 208 206 205 204 +205 202 196 199 198 199 202 200 201 201 198 201 +199 202 202 204 204 206 203 203 201 205 207 201 +205 204 205 210 208 210 213 216 220 220 221 223 +220 222 222 218 157 48 52 47 47 50 51 50 +51 50 53 54 58 50 44 55 54 44 48 48 +41 42 41 38 41 45 52 52 43 49 51 53 +47 47 54 56 58 66 66 68 73 87 105 126 +144 147 151 148 148 147 145 146 144 143 146 154 +160 154 161 162 161 159 158 157 162 155 162 159 +162 157 160 157 158 156 158 154 155 159 160 159 +159 157 156 153 154 154 149 152 154 155 153 150 +152 156 152 154 +102 102 101 98 100 96 96 99 +97 99 97 97 98 99 100 102 101 106 98 100 +96 95 97 103 103 109 115 116 126 128 138 143 +147 154 157 163 163 164 165 166 168 171 172 176 +172 172 171 168 173 177 172 173 173 171 165 159 +155 148 138 135 125 116 108 94 95 76 78 77 +79 80 87 84 90 92 96 89 90 97 96 94 +103 101 96 101 96 99 100 101 95 99 101 102 +99 99 101 99 95 95 102 96 100 102 103 105 +100 104 104 108 103 108 107 108 103 105 106 100 +98 96 93 90 118 206 221 211 201 185 172 156 +150 139 134 121 128 123 109 97 103 102 107 103 +98 103 110 110 112 108 108 111 108 98 98 107 +106 113 111 111 104 118 119 112 111 115 119 132 +121 111 108 114 111 121 131 126 126 130 124 123 +118 112 110 122 146 150 153 152 143 150 158 155 +148 142 139 137 149 140 139 145 166 166 137 115 +121 132 150 155 159 155 154 157 153 161 163 158 +171 175 169 157 151 169 177 174 169 167 167 171 +169 159 168 163 166 181 182 183 163 157 170 188 +175 163 158 152 152 158 166 173 176 185 178 175 +174 173 176 174 175 172 174 180 178 177 170 171 +182 183 171 169 177 192 183 181 174 168 173 184 +192 187 179 188 188 191 173 165 169 154 156 171 +181 178 180 179 184 189 190 190 185 161 178 175 +181 179 183 189 189 188 186 191 195 198 195 190 +191 192 198 200 195 195 192 190 183 184 187 190 +190 190 193 187 189 193 191 191 188 190 183 178 +185 190 188 185 187 191 190 191 194 200 198 182 +146 143 143 148 158 171 197 200 202 204 207 202 +188 191 187 197 201 197 189 181 190 198 199 205 +210 212 211 208 207 202 205 205 200 199 200 202 +201 200 201 201 202 200 201 202 201 203 204 204 +204 205 203 203 203 203 205 200 200 201 201 210 +210 210 211 215 219 219 220 221 222 222 223 214 +142 52 45 47 45 44 48 48 54 47 58 51 +53 53 51 52 56 49 50 50 45 46 38 39 +49 45 52 51 45 51 57 52 50 57 56 57 +63 58 69 70 84 100 115 133 147 151 148 150 +146 146 144 144 145 151 151 152 160 159 160 162 +157 156 159 160 162 155 157 158 162 159 156 153 +157 156 157 154 156 158 157 156 157 152 155 153 +156 154 152 157 155 152 156 151 150 156 154 152 +99 99 103 96 99 99 97 103 104 96 102 96 +96 98 98 97 102 101 100 101 100 96 94 101 +101 103 113 120 125 133 138 142 147 155 157 159 +165 162 165 169 169 168 168 169 175 171 173 173 +171 171 179 171 171 167 168 159 153 148 140 136 +130 113 103 99 92 82 81 71 78 80 81 87 +90 108 101 93 87 92 95 97 96 98 101 96 +98 100 96 101 98 99 102 99 100 99 102 97 +95 98 102 96 102 105 99 99 104 101 106 102 +103 106 101 105 110 106 105 102 97 89 93 97 +131 210 217 213 200 195 158 166 165 138 131 129 +132 114 106 110 99 101 107 99 95 102 105 104 +103 111 109 109 102 103 107 115 104 96 104 113 +111 114 113 110 112 121 122 121 112 106 107 114 +125 120 125 127 129 125 122 112 106 104 125 136 +148 153 147 151 151 148 156 158 148 141 138 134 +137 148 148 148 154 149 127 120 135 142 156 159 +164 162 155 153 151 156 164 171 171 177 157 151 +146 151 165 173 168 163 166 169 174 174 168 165 +167 177 183 184 172 157 152 165 172 154 147 153 +171 178 176 172 172 173 180 180 177 177 180 180 +177 180 176 170 174 181 176 168 170 180 183 177 +171 176 185 185 181 169 173 184 192 186 182 184 +189 194 181 163 159 167 179 186 186 183 183 181 +188 187 182 182 170 163 171 181 192 190 189 191 +196 191 188 188 195 200 195 192 191 189 194 197 +194 191 188 185 181 183 184 191 191 193 190 190 +184 191 188 189 186 189 184 179 181 190 190 188 +186 183 189 188 189 198 201 195 169 144 149 171 +183 200 212 210 209 200 190 180 174 196 199 192 +187 185 195 202 204 206 207 209 209 210 207 205 +204 205 204 201 200 199 200 204 201 201 203 200 +199 199 201 202 206 206 204 205 204 203 201 202 +203 201 200 200 198 201 205 210 210 211 212 216 +217 221 222 221 221 224 223 209 126 43 39 44 +48 55 50 54 54 55 63 53 52 43 54 59 +57 54 51 45 50 50 44 42 47 46 50 49 +45 44 45 51 47 46 48 62 64 64 69 73 +89 110 128 140 148 151 152 150 151 144 141 146 +145 150 150 155 157 160 160 160 161 161 157 159 +156 159 157 158 159 158 156 156 157 157 154 156 +155 157 157 156 156 152 153 152 155 153 155 155 +155 160 154 153 155 152 153 156 +100 100 103 102 +100 102 99 99 98 100 103 99 103 101 103 98 +102 100 97 98 97 102 96 98 100 109 113 117 +121 132 137 142 149 150 157 162 161 167 164 165 +167 171 169 170 174 167 173 170 170 173 170 174 +171 169 165 163 158 144 148 138 123 115 111 101 +90 82 74 77 81 74 78 83 84 87 98 89 +90 89 91 93 95 100 100 103 102 100 99 102 +99 98 98 98 99 99 99 98 91 99 95 99 +99 101 97 100 105 101 102 103 105 106 106 102 +102 103 100 99 97 91 88 92 146 211 213 210 +200 182 158 181 165 137 139 137 121 128 118 118 +102 101 106 100 99 104 110 104 107 107 103 101 +103 110 118 117 100 101 110 122 113 108 104 106 +123 128 121 113 111 109 122 124 127 120 129 130 +126 125 115 106 106 116 141 140 144 143 149 143 +153 151 153 153 146 135 132 132 139 151 161 164 +136 115 120 136 148 148 146 148 153 164 160 157 +156 157 157 173 175 159 160 149 157 153 153 158 +168 170 168 175 173 179 178 172 168 162 172 180 +181 174 151 146 153 149 161 168 178 183 183 175 +173 166 165 174 182 177 175 176 178 179 175 167 +167 176 182 176 168 169 181 183 177 171 170 184 +190 186 183 186 190 192 189 190 193 181 168 170 +174 177 177 187 187 188 187 188 192 189 183 187 +182 176 176 182 189 191 190 190 194 197 193 186 +193 198 196 189 193 190 190 192 193 187 184 178 +178 186 186 186 188 186 187 190 181 182 190 190 +188 183 187 181 178 187 193 187 185 186 184 186 +183 191 197 199 187 166 177 193 200 212 211 211 +202 191 179 173 190 191 184 176 191 201 200 207 +205 208 207 205 205 206 203 204 202 204 202 201 +199 200 202 199 197 199 200 201 200 203 202 204 +205 204 207 206 205 204 203 205 201 201 198 198 +198 203 209 211 210 212 210 215 218 222 224 220 +222 223 222 207 100 33 36 41 44 49 47 49 +49 44 53 50 53 47 51 48 53 54 47 44 +41 45 43 42 51 44 52 49 46 50 53 54 +57 64 56 62 64 68 75 93 106 127 141 149 +150 152 150 149 144 145 144 144 148 152 153 157 +157 162 161 160 160 158 158 159 159 159 159 161 +159 155 155 155 157 157 155 153 159 157 157 154 +157 151 156 156 153 155 155 153 155 150 150 150 +154 158 153 152 +97 97 98 97 102 98 100 105 +105 103 98 97 94 92 99 100 97 97 96 96 +102 97 97 103 103 108 112 122 128 130 139 141 +146 153 153 159 161 162 165 169 169 173 171 171 +174 173 173 169 175 171 173 174 172 169 163 159 +156 147 145 133 124 116 109 104 91 84 79 73 +70 75 77 79 84 84 84 91 90 93 91 98 +94 98 98 97 98 95 102 101 102 96 100 101 +96 98 97 99 97 98 96 102 102 97 99 99 +106 101 103 100 105 102 105 104 103 105 101 102 +97 87 88 99 167 219 219 209 198 180 180 166 +149 142 140 130 127 121 116 106 111 100 98 106 +110 105 111 107 107 100 96 99 107 109 107 111 +108 114 117 115 116 114 111 115 122 119 116 110 +107 120 125 123 132 127 126 124 121 114 108 106 +118 136 152 145 140 148 149 151 149 156 149 146 +143 135 133 139 142 146 154 153 122 123 126 147 +149 156 148 144 143 158 163 163 166 160 168 166 +160 154 165 166 161 156 160 153 158 171 175 177 +183 177 177 181 170 159 159 176 174 174 155 144 +158 162 171 179 174 176 178 181 175 164 165 166 +174 184 182 179 177 180 172 172 175 172 176 174 +174 164 169 185 183 177 170 172 189 194 192 193 +191 196 192 184 176 171 176 175 180 178 174 176 +178 180 181 190 192 190 191 188 192 185 180 185 +189 188 192 190 191 194 195 187 182 195 193 192 +188 186 181 185 188 187 185 179 180 183 185 186 +188 189 186 189 185 177 185 190 188 181 185 183 +175 178 191 188 183 183 186 190 185 189 193 198 +189 190 199 204 206 208 201 197 185 188 190 196 +193 184 189 194 197 202 206 207 210 205 204 204 +204 205 204 203 201 200 201 202 202 200 202 195 +196 196 199 199 199 201 204 205 205 205 205 204 +201 203 203 207 198 195 194 195 196 206 211 210 +211 211 211 212 220 221 222 219 223 225 222 194 +74 37 36 43 43 41 39 49 44 39 44 47 +50 54 70 54 63 56 46 49 51 41 39 41 +51 47 46 44 45 48 54 50 56 65 62 68 +78 73 88 107 120 130 143 149 152 152 148 146 +145 143 143 146 152 154 157 155 160 160 162 162 +162 160 162 162 158 161 156 156 159 158 158 156 +154 157 157 158 154 158 157 157 156 155 152 156 +157 156 156 155 151 158 151 154 154 157 157 153 +100 100 96 101 99 101 99 102 103 95 100 97 +96 96 100 95 108 101 99 98 98 94 101 102 +104 110 115 118 129 130 136 143 149 158 155 158 +160 170 166 171 171 170 172 170 175 175 178 174 +173 175 175 171 168 171 163 158 154 148 144 136 +126 117 112 97 87 82 75 77 79 76 82 78 +86 88 91 89 92 94 96 96 88 93 101 98 +103 99 103 102 97 97 100 97 99 98 99 94 +94 99 101 102 94 93 101 98 96 97 98 105 +102 107 114 103 106 103 101 97 93 93 90 107 +190 220 214 208 191 180 183 157 159 148 139 137 +129 119 112 108 109 98 101 106 114 114 109 104 +110 97 99 103 104 108 111 104 112 114 114 117 +117 123 121 116 114 119 114 111 122 118 122 125 +132 122 122 115 107 105 102 118 139 149 154 148 +141 144 151 152 150 151 143 140 141 143 142 147 +157 132 120 118 118 139 146 143 147 151 152 153 +148 142 155 170 180 169 152 152 147 161 159 162 +161 157 161 167 161 161 175 183 184 183 179 187 +182 160 160 162 165 159 148 152 171 183 177 181 +176 169 171 177 179 175 173 167 165 164 181 185 +176 173 174 171 178 177 172 169 168 167 165 176 +183 181 175 174 178 193 198 196 186 184 176 171 +176 182 182 184 184 180 182 181 182 179 177 185 +192 188 191 188 191 187 186 184 184 186 187 193 +192 190 192 187 186 186 193 192 191 185 176 177 +182 185 181 183 183 185 182 185 185 186 182 187 +187 179 180 187 186 176 178 180 173 173 177 182 +183 180 175 186 185 185 186 192 199 197 201 206 +205 199 194 183 187 199 194 192 192 200 199 199 +202 207 210 206 205 202 200 204 203 202 202 202 +201 199 197 201 199 197 199 195 197 201 201 201 +201 200 201 205 203 204 206 203 201 205 204 201 +195 194 192 198 199 206 208 208 209 208 210 212 +219 220 222 223 224 222 219 168 51 39 44 37 +42 48 42 43 51 53 49 43 43 50 56 50 +49 53 47 52 45 39 45 40 43 55 51 60 +51 47 59 59 60 65 60 65 73 84 92 112 +125 140 147 155 152 151 147 147 145 144 147 149 +154 153 160 159 159 160 158 159 161 161 157 158 +158 159 161 161 159 159 157 155 157 155 156 157 +155 155 157 159 155 154 155 153 158 152 154 156 +154 156 151 156 155 159 157 155 +99 99 100 94 +96 98 101 98 104 105 92 99 103 93 101 95 +103 101 96 99 98 102 102 99 102 108 117 115 +127 128 135 142 146 153 158 160 167 166 169 170 +170 168 174 171 174 176 174 172 173 175 175 171 +171 168 165 158 156 149 144 135 120 112 115 100 +86 86 78 73 78 76 79 80 83 87 90 92 +91 95 95 94 94 96 93 99 96 97 104 107 +101 104 97 101 98 96 93 102 98 95 98 100 +98 102 99 94 98 99 97 106 107 105 102 100 +101 102 100 98 97 92 92 115 196 224 212 206 +201 182 167 174 156 146 142 152 138 114 123 123 +111 104 116 110 108 108 102 105 99 101 104 102 +109 109 107 112 108 108 110 116 122 125 119 119 +116 124 131 129 125 118 124 129 134 125 120 108 +105 96 111 140 148 146 154 152 148 141 144 153 +143 145 140 144 140 146 156 149 138 123 119 118 +132 140 151 150 145 145 149 160 150 147 151 165 +175 165 147 142 149 155 153 154 159 165 164 168 +173 168 165 170 179 181 185 180 183 169 161 152 +153 142 158 162 170 181 190 172 177 178 167 165 +173 177 173 170 169 163 173 174 184 177 168 174 +176 177 173 166 172 170 171 163 169 178 182 182 +179 181 191 190 182 176 176 175 180 184 183 184 +185 184 179 184 189 184 179 178 176 184 189 190 +185 190 192 191 185 185 188 192 191 189 188 191 +192 187 184 189 191 181 180 176 171 178 176 178 +183 187 184 184 187 186 173 182 188 182 178 185 +184 182 179 179 170 168 168 175 184 182 174 185 +184 185 191 201 200 200 199 197 193 186 193 193 +195 196 194 193 197 203 204 207 211 211 207 207 +202 204 201 199 201 198 202 202 201 200 199 201 +200 199 197 199 198 199 200 203 204 201 205 202 +202 203 204 204 203 205 204 197 189 190 191 197 +201 203 206 209 209 209 210 214 219 220 220 223 +222 221 213 139 38 35 35 39 42 41 41 49 +53 47 44 44 45 55 49 52 47 46 47 43 +41 42 43 42 47 53 48 51 59 48 53 53 +48 49 56 62 71 91 103 118 135 145 152 152 +151 153 149 145 147 143 146 150 152 157 158 158 +160 163 160 165 161 161 160 158 160 157 157 157 +155 158 160 156 156 156 157 155 156 159 157 155 +155 158 155 155 156 155 155 156 153 156 152 158 +155 156 155 156 +105 105 99 96 101 99 97 100 +98 93 86 94 97 94 103 95 101 97 100 102 +101 102 98 101 105 107 111 118 122 128 137 141 +145 154 152 162 162 164 167 171 175 171 171 172 +174 177 175 173 173 171 173 169 170 168 166 159 +155 147 142 133 123 114 114 95 91 82 82 74 +71 75 83 79 84 87 89 88 95 97 90 93 +94 99 94 93 98 101 97 99 94 99 100 98 +97 95 100 99 99 98 96 98 95 105 95 104 +98 102 99 107 108 106 104 105 100 100 102 97 +90 90 95 118 206 226 211 203 199 172 180 187 +153 140 146 154 125 124 132 123 109 123 131 116 +107 109 105 98 103 114 99 99 107 110 105 116 +108 112 115 117 112 112 107 114 123 122 132 119 +120 121 126 126 128 121 120 109 102 114 129 148 +144 142 144 150 155 142 136 141 137 133 138 140 +143 158 151 137 123 120 122 137 146 141 141 147 +147 143 146 151 155 158 145 146 162 163 154 150 +148 149 155 163 159 166 164 168 175 178 170 158 +165 171 173 179 173 169 161 144 149 165 165 166 +163 178 187 181 181 169 169 165 167 177 175 179 +180 170 168 163 173 178 176 173 174 177 175 173 +164 171 167 166 163 168 180 184 186 179 173 172 +175 183 184 182 181 181 181 181 179 180 183 187 +188 178 176 177 177 178 185 188 188 190 197 193 +187 183 183 188 191 191 190 188 191 185 181 177 +177 182 187 183 172 166 175 178 176 186 186 188 +185 185 179 174 184 183 182 176 184 184 177 169 +168 164 164 167 176 178 179 185 195 194 204 205 +201 195 179 170 170 186 199 201 195 194 195 195 +201 206 210 211 211 209 207 203 203 197 193 196 +201 201 200 200 200 199 199 200 198 198 199 199 +195 198 201 201 203 201 206 203 200 204 202 204 +206 205 195 187 182 188 189 196 202 203 206 210 +209 208 212 212 221 219 218 220 216 217 202 104 +41 39 38 36 49 42 45 45 51 46 45 42 +52 52 51 46 46 44 45 41 47 39 62 48 +47 48 55 56 61 54 51 58 46 54 57 79 +77 105 116 135 142 148 154 151 152 143 148 141 +141 145 149 155 157 158 159 157 163 162 159 159 +158 160 160 159 159 159 157 159 157 155 159 155 +154 157 156 157 156 160 156 154 158 155 157 155 +158 154 153 156 156 155 155 153 154 156 152 154 +105 105 103 95 94 97 95 100 96 99 99 99 +97 97 97 97 96 96 96 96 98 95 98 101 +106 102 112 113 124 126 135 141 146 154 154 160 +161 169 171 172 171 171 173 173 175 176 172 172 +171 171 176 173 171 168 167 158 154 149 140 134 +127 117 111 99 88 81 74 71 77 74 77 76 +86 90 90 86 90 95 98 99 93 101 101 99 +94 93 100 99 95 100 99 95 98 99 100 101 +98 98 94 95 103 96 101 101 97 100 100 107 +112 107 103 106 101 102 107 97 92 88 93 122 +212 219 212 205 186 179 194 183 143 160 148 147 +129 137 131 119 119 132 130 118 115 107 111 110 +106 109 103 104 109 106 107 103 111 115 124 109 +103 98 105 113 121 120 115 116 121 121 127 128 +120 120 114 103 112 128 140 146 148 147 148 147 +152 149 141 129 133 135 144 142 157 168 135 121 +132 128 135 147 155 150 143 143 148 146 143 152 +151 167 154 128 133 151 160 154 147 146 153 170 +168 172 173 171 176 173 179 166 165 157 160 167 +171 160 150 152 164 179 178 170 162 164 176 178 +174 170 168 169 170 171 175 176 179 179 168 168 +166 163 179 184 174 176 171 173 175 176 169 166 +169 172 169 169 185 179 172 172 174 177 184 192 +187 184 180 179 174 176 176 185 185 174 168 178 +182 180 184 185 183 188 193 194 190 186 187 181 +185 191 192 187 184 184 180 180 176 171 178 179 +178 170 169 173 178 184 184 185 186 183 187 173 +171 181 179 172 177 179 171 164 161 167 162 163 +171 187 191 199 209 204 195 190 182 174 165 168 +185 194 197 199 193 197 198 204 208 209 211 212 +208 207 206 204 200 188 191 197 199 200 199 199 +200 199 201 199 198 195 197 198 196 200 203 200 +200 201 206 205 203 203 204 204 207 201 185 183 +176 180 185 194 199 202 205 206 210 208 211 211 +215 218 218 216 216 217 182 65 41 36 32 38 +43 46 48 41 43 48 45 50 44 48 50 54 +48 53 45 39 40 46 45 43 43 51 58 54 +53 53 43 52 39 46 59 80 92 109 124 143 +145 154 151 151 150 145 144 143 141 146 149 153 +157 160 158 159 160 159 158 160 156 160 160 157 +159 160 161 159 161 157 158 158 155 160 158 160 +156 157 158 157 159 158 154 157 159 158 156 153 +155 155 156 158 156 158 154 156 +101 101 98 96 +98 95 97 105 102 101 97 101 93 95 97 96 +95 96 93 96 97 102 96 99 100 107 113 117 +123 127 135 150 146 151 153 157 163 170 169 170 +170 172 173 176 172 174 176 172 173 173 177 172 +169 167 163 161 150 147 140 133 122 115 110 103 +89 81 78 72 74 75 81 85 84 85 93 88 +98 91 95 97 95 99 102 94 100 98 100 96 +94 98 98 98 100 98 102 94 97 100 99 94 +92 100 102 101 102 100 101 105 103 110 103 103 +99 102 104 101 92 90 95 126 210 217 210 199 +177 192 181 157 147 157 138 141 145 135 134 132 +122 124 121 114 116 112 114 121 103 103 106 109 +111 97 103 111 108 109 109 96 83 102 117 118 +121 113 112 124 123 128 120 113 114 115 106 118 +130 137 141 139 140 148 155 146 143 145 145 132 +125 140 143 153 162 151 119 122 129 137 146 152 +156 149 151 152 147 151 151 156 162 158 146 132 +134 136 152 158 151 148 152 169 176 180 180 177 +172 168 170 177 167 156 150 147 151 150 156 166 +182 177 181 178 168 161 164 161 167 180 175 165 +170 175 171 173 178 184 179 174 166 164 169 180 +178 172 174 171 174 174 169 169 177 174 171 164 +170 172 176 178 172 178 183 187 190 188 186 185 +184 177 174 181 183 180 177 171 175 180 185 186 +183 186 190 194 191 189 185 183 184 187 188 186 +181 177 184 185 182 175 168 164 171 182 172 173 +178 183 185 183 183 185 185 180 165 177 179 165 +167 176 166 159 151 163 166 176 186 198 206 207 +203 190 179 171 177 179 188 191 198 197 198 195 +196 200 205 207 208 208 208 208 205 204 204 199 +192 190 196 200 199 201 200 197 199 200 201 199 +195 195 197 200 199 202 202 204 202 201 202 204 +205 204 206 207 204 190 175 179 171 172 184 191 +199 193 205 205 207 206 205 211 215 216 218 216 +215 214 146 53 46 35 37 42 45 45 41 53 +45 45 59 51 47 54 56 58 54 50 51 44 +48 46 44 46 44 56 52 60 55 53 46 42 +38 51 59 74 97 118 134 144 149 152 150 151 +146 147 147 142 146 149 153 154 158 160 161 160 +163 163 160 161 156 162 162 160 154 157 160 162 +165 157 155 155 157 155 157 160 158 158 161 159 +154 156 158 156 157 158 156 157 154 157 157 157 +158 160 155 155 +95 95 97 93 94 98 97 101 +95 100 98 96 97 95 98 96 96 99 97 102 +97 101 97 91 98 106 113 112 119 129 135 142 +147 151 154 159 162 167 167 171 171 175 172 171 +173 172 171 171 174 175 174 171 170 167 165 161 +150 144 143 132 129 117 113 98 91 85 78 77 +76 80 82 84 85 87 94 92 95 91 96 95 +95 96 98 100 100 98 99 96 98 96 100 102 +98 102 94 102 95 99 100 103 98 98 99 99 +103 103 104 101 102 101 106 106 105 99 99 96 +91 89 91 133 213 220 206 196 192 187 158 179 +155 140 148 150 138 132 134 136 116 115 131 126 +119 111 117 116 103 103 109 111 103 101 111 111 +109 101 99 95 103 110 114 117 133 113 115 123 +126 119 115 116 109 104 114 132 148 138 133 137 +145 143 153 148 140 136 142 141 132 140 156 164 +134 119 111 114 134 144 148 153 150 152 150 151 +152 151 160 160 158 142 133 139 143 136 139 143 +159 159 156 156 161 176 183 180 172 167 169 169 +170 155 143 137 148 161 176 182 177 177 178 175 +177 170 158 159 158 173 176 175 171 171 175 171 +174 184 180 184 172 164 167 169 179 180 176 171 +175 168 170 173 167 168 172 166 168 165 172 179 +179 178 178 183 182 185 186 181 177 178 180 180 +182 186 188 178 176 172 185 183 183 187 190 190 +192 192 188 187 183 179 178 182 182 179 183 183 +185 183 176 169 164 176 178 172 166 176 186 181 +181 183 181 178 163 166 179 169 155 165 165 156 +156 170 186 196 202 206 199 191 186 166 161 177 +190 195 188 195 198 198 200 199 203 205 208 205 +207 207 205 206 206 203 196 193 192 198 198 198 +200 200 202 201 197 199 201 197 196 199 197 199 +200 203 202 203 203 203 205 204 205 205 207 206 +190 175 167 169 165 168 179 186 192 191 203 207 +205 205 203 209 213 219 218 213 216 204 108 51 +46 34 38 43 40 39 42 40 42 47 47 51 +48 51 51 63 72 56 44 41 43 49 46 50 +54 58 49 62 50 55 42 42 36 48 63 86 +112 129 140 148 154 156 152 145 146 143 145 146 +150 156 154 159 162 160 159 160 159 162 160 164 +159 156 161 162 161 158 161 159 162 158 158 160 +154 157 158 159 156 158 155 160 157 160 159 156 +154 158 156 157 156 156 156 159 158 162 161 153 +99 99 94 95 98 98 95 103 94 109 105 99 +96 96 95 97 98 96 101 96 90 97 97 97 +98 101 104 115 125 128 142 141 145 150 157 160 +163 165 166 166 173 172 173 169 176 173 170 172 +173 173 174 171 173 167 162 164 150 148 141 136 +130 120 116 98 89 79 75 78 73 76 79 78 +83 86 91 91 98 95 98 96 94 95 98 100 +99 97 101 100 95 98 97 98 102 99 96 98 +95 100 95 101 96 98 100 98 100 103 105 100 +98 103 101 107 100 101 103 99 94 91 96 145 +223 217 206 199 194 177 178 176 141 139 157 139 +132 138 143 136 115 121 147 132 122 117 108 105 +102 100 104 104 102 104 119 112 105 106 109 114 +113 106 113 119 125 115 118 112 108 105 112 110 +103 120 131 135 148 145 135 142 152 148 144 147 +143 129 135 141 148 151 146 138 116 108 117 135 +140 143 147 152 151 147 148 147 158 152 153 153 +149 138 131 128 139 146 140 144 147 161 173 165 +154 160 179 179 180 167 161 167 163 152 138 141 +157 172 178 180 179 175 177 177 171 169 170 159 +152 162 172 181 179 174 170 174 177 177 178 183 +180 173 166 175 170 175 178 172 175 171 168 171 +161 155 165 174 175 173 166 174 179 184 180 180 +178 173 179 166 164 177 180 183 184 186 184 182 +179 172 171 182 186 187 189 192 189 191 189 188 +180 180 171 176 177 183 182 179 184 185 183 178 +175 167 173 183 173 163 178 184 182 179 184 180 +171 164 174 167 150 154 161 160 180 191 204 206 +204 194 185 180 171 169 184 184 196 196 196 198 +195 201 203 208 208 204 205 207 204 203 203 205 +199 197 196 194 195 198 200 199 200 199 200 199 +200 199 198 200 200 199 199 201 203 203 202 201 +205 205 200 204 203 207 210 198 182 165 163 165 +167 164 170 179 186 193 204 209 203 200 201 209 +211 218 215 211 215 186 61 45 41 41 37 41 +42 45 46 44 47 43 51 51 50 49 58 65 +58 50 38 42 46 55 44 50 51 53 54 61 +55 51 48 41 41 53 71 97 120 133 147 159 +156 151 147 147 144 143 147 150 152 155 158 160 +159 159 155 160 161 159 158 161 160 159 159 159 +159 164 160 160 159 161 159 159 156 159 158 155 +157 160 161 157 155 157 157 158 158 158 157 157 +153 156 158 156 159 159 155 154 +95 95 98 99 +103 101 96 99 91 97 93 95 96 96 91 102 +100 94 102 98 93 95 94 101 100 102 112 116 +121 131 140 144 142 153 155 159 163 166 169 171 +170 169 170 171 175 171 174 171 171 169 172 172 +170 166 164 162 154 147 142 136 125 121 115 97 +92 85 76 75 76 80 83 85 88 91 87 92 +94 94 91 94 96 97 100 98 100 97 101 104 +100 96 94 97 101 100 98 99 96 96 99 99 +93 99 99 97 102 104 103 102 104 103 107 107 +102 105 99 96 94 87 95 152 224 219 210 201 +178 191 184 159 154 167 162 133 130 147 145 139 +122 128 133 128 130 121 104 105 114 100 100 107 +105 104 108 107 101 108 115 116 107 101 112 127 +130 128 115 100 96 101 102 110 119 138 147 141 +136 143 141 141 146 152 138 136 143 139 134 146 +156 158 121 108 113 118 130 145 148 145 148 142 +145 154 154 154 150 155 155 147 144 137 134 135 +144 142 143 151 147 152 160 170 156 151 159 173 +177 175 158 157 149 146 147 156 166 179 174 176 +183 180 175 175 171 164 165 168 163 158 162 178 +178 176 175 167 171 177 173 181 181 179 171 165 +164 164 154 162 171 173 176 178 168 160 157 161 +172 172 172 177 173 178 183 182 166 161 170 175 +175 177 176 177 183 187 187 183 184 181 171 177 +186 187 191 188 188 187 186 184 179 175 174 175 +172 176 179 179 178 180 181 188 183 171 165 176 +183 167 162 183 180 178 178 174 168 155 162 160 +151 155 178 193 201 206 208 195 190 180 171 174 +188 190 186 186 194 195 196 199 203 208 206 207 +206 202 203 203 203 202 203 198 197 197 196 196 +194 198 198 199 197 200 199 199 200 194 198 201 +198 201 202 200 201 206 203 202 203 202 206 205 +202 206 202 183 173 162 157 155 165 160 167 178 +186 196 204 197 192 191 196 205 211 213 210 212 +210 149 42 45 45 37 41 46 44 43 45 46 +49 56 48 48 43 47 54 48 45 52 50 43 +45 45 49 45 49 48 50 49 53 52 48 48 +45 62 82 109 127 143 149 155 151 151 148 145 +145 140 147 150 157 158 160 162 159 159 159 164 +161 163 161 163 159 159 155 160 159 162 162 160 +155 162 157 156 157 158 157 155 156 155 159 156 +155 158 158 158 155 158 162 160 158 156 157 156 +155 161 156 152 +95 95 102 101 99 103 94 98 +95 96 100 98 98 98 97 100 101 95 104 97 +98 98 95 97 101 104 114 117 123 125 136 142 +144 151 163 159 165 166 166 169 175 172 174 172 +172 175 172 171 175 172 178 172 169 170 162 156 +151 149 142 138 124 117 113 100 91 85 83 81 +78 80 83 85 95 92 91 92 94 93 95 90 +99 92 102 102 103 101 102 100 98 101 95 96 +101 98 100 103 97 96 102 100 98 101 97 98 +103 103 103 102 101 105 104 104 98 101 99 97 +94 89 94 148 217 218 209 194 183 188 179 157 +170 183 164 150 147 141 139 149 142 127 127 126 +128 118 104 112 110 105 110 110 104 99 99 98 +101 117 116 114 107 110 119 127 126 114 108 102 +98 100 100 112 136 149 151 145 131 136 146 145 +136 147 142 132 142 148 146 140 145 142 114 109 +123 132 135 145 148 151 144 143 141 149 155 151 +154 153 152 151 137 138 136 143 150 151 155 157 +150 136 144 167 164 156 144 151 168 172 157 142 +149 157 168 170 166 175 170 170 172 172 177 165 +165 171 171 164 166 166 158 161 166 179 182 177 +174 172 171 171 175 178 176 170 160 159 149 153 +155 165 177 179 175 165 164 165 165 166 176 178 +176 164 169 171 162 163 167 173 181 183 177 176 +176 186 187 189 185 187 177 175 176 184 186 188 +185 183 183 177 180 181 175 175 178 178 179 182 +178 178 182 190 183 185 171 164 184 171 157 171 +177 178 174 169 165 157 152 160 164 185 200 208 +206 201 191 180 178 175 188 195 195 191 194 194 +195 198 201 205 203 207 204 203 202 201 200 199 +200 201 197 198 196 197 197 197 199 198 201 200 +202 199 198 199 197 200 199 199 202 199 201 200 +201 204 205 205 204 204 207 202 203 204 189 173 +169 159 158 160 158 159 165 175 188 201 193 172 +180 187 188 201 209 209 207 212 197 93 40 37 +41 41 51 41 48 45 43 51 45 47 54 49 +44 47 50 46 48 42 43 44 49 47 46 45 +49 42 50 49 51 55 57 50 62 73 100 118 +129 145 151 153 154 149 145 147 147 147 150 155 +156 160 159 160 159 162 163 162 165 161 162 160 +161 160 158 157 158 160 161 158 161 159 156 155 +156 157 159 153 159 159 157 155 154 158 154 154 +156 158 158 155 157 154 159 155 155 153 159 155 +98 98 95 96 97 97 96 100 99 95 99 106 +95 96 96 97 96 93 102 95 93 99 97 97 +106 104 108 115 126 130 137 143 147 149 158 161 +164 161 172 171 172 171 170 172 175 174 173 175 +172 172 173 172 174 165 163 158 156 149 141 137 +130 115 108 97 84 88 78 81 75 78 81 87 +89 89 95 94 97 97 97 95 98 99 97 98 +104 101 102 96 103 102 96 96 99 96 101 99 +98 98 96 98 99 97 101 98 98 100 98 105 +98 97 102 103 104 100 99 97 88 90 89 132 +218 217 203 181 195 182 164 178 173 168 147 176 +170 136 132 154 155 135 131 138 122 117 110 113 +116 109 112 110 97 83 85 104 110 114 103 103 +108 119 125 120 118 113 104 105 102 102 114 134 +141 149 145 141 138 134 135 142 141 144 142 135 +141 157 156 133 113 115 117 117 127 148 144 144 +149 151 151 146 148 144 153 161 151 145 149 148 +140 140 142 153 153 156 168 162 143 138 136 143 +166 166 153 149 150 152 143 145 161 172 177 174 +174 173 171 167 166 164 166 163 172 169 168 168 +166 167 162 159 157 164 167 181 179 173 170 167 +161 169 167 162 165 163 162 163 160 155 165 174 +172 167 174 169 168 171 162 173 166 154 159 160 +170 177 167 169 173 180 179 178 176 179 187 188 +186 187 180 182 173 179 180 183 184 180 176 177 +176 180 175 173 168 175 182 185 182 185 186 182 +183 179 177 157 176 176 159 157 177 171 165 161 +157 155 161 181 194 205 208 207 191 181 183 176 +185 194 194 187 197 195 194 199 201 201 206 200 +203 204 201 202 199 200 195 198 194 198 194 195 +196 198 197 197 197 198 202 200 200 200 198 199 +197 198 203 201 202 202 198 201 203 204 203 207 +205 208 202 201 207 198 179 167 166 157 159 154 +155 159 165 180 190 186 157 158 170 179 191 200 +205 206 210 212 161 61 40 44 41 40 59 50 +55 54 54 45 44 53 48 55 52 53 58 46 +45 43 42 38 42 49 45 46 45 43 48 51 +58 58 73 65 69 88 113 129 145 150 151 152 +152 146 148 146 145 148 150 155 158 153 163 160 +162 159 161 160 163 158 158 157 161 158 161 159 +160 157 165 159 159 155 154 157 162 158 155 157 +160 161 156 153 157 157 155 157 160 159 161 158 +157 154 155 153 155 157 158 154 +96 96 98 95 +98 93 95 101 91 97 92 92 95 95 97 98 +93 98 98 97 93 97 94 96 103 104 111 118 +124 132 139 147 151 153 155 162 164 170 172 170 +172 172 176 170 171 173 173 173 167 168 170 171 +171 167 165 157 154 149 142 134 127 118 110 95 +86 81 79 78 77 77 82 84 89 88 95 92 +95 96 99 91 96 97 99 98 99 107 99 100 +100 94 96 101 100 99 99 99 97 96 99 101 +96 98 103 100 98 101 101 104 102 102 104 101 +99 102 102 100 87 89 92 152 222 215 199 197 +184 172 172 177 160 149 156 169 153 130 141 148 +140 130 143 136 129 125 112 121 117 116 110 97 +87 83 93 114 109 108 98 106 119 120 119 119 +117 119 109 103 94 115 128 142 145 142 143 144 +144 139 124 133 136 135 135 141 147 160 153 113 +104 110 119 121 141 151 148 148 150 151 152 150 +147 148 149 151 151 132 148 156 148 144 152 152 +161 158 155 151 145 138 133 141 159 167 163 151 +135 135 149 162 160 170 178 175 178 174 167 163 +164 162 164 165 170 174 169 166 171 168 169 171 +163 158 158 169 171 178 173 166 157 156 158 165 +168 170 167 161 167 162 155 155 168 172 174 175 +174 164 154 158 161 161 170 174 174 178 171 172 +170 167 177 178 172 173 182 186 184 186 188 183 +181 171 174 180 177 179 175 175 174 175 176 172 +164 167 172 184 181 180 177 178 178 174 180 159 +153 174 163 150 168 162 167 158 164 172 180 200 +206 202 195 188 178 168 180 192 194 192 189 192 +194 193 204 207 206 203 203 199 202 200 199 198 +195 193 186 191 193 192 191 194 195 198 198 195 +194 197 200 198 198 199 200 200 196 197 201 203 +202 203 199 203 204 203 202 207 205 207 199 203 +207 187 174 159 160 153 156 155 157 165 176 190 +185 146 139 147 168 178 190 195 200 206 213 207 +115 44 44 39 43 44 49 64 56 47 46 54 +47 49 53 62 50 48 50 43 48 41 41 47 +46 51 48 41 39 41 45 51 67 75 80 79 +84 104 121 136 144 149 151 152 146 146 146 140 +144 150 151 157 156 157 158 158 160 158 160 162 +162 161 161 157 160 160 159 160 157 154 161 161 +160 156 156 158 159 158 157 154 158 159 157 158 +157 158 157 159 160 158 158 159 157 156 155 157 +159 159 154 156 +94 94 98 93 92 95 100 102 +96 92 94 97 94 96 94 100 95 98 92 94 +92 97 101 98 102 102 105 120 126 132 136 144 +151 156 157 162 167 170 170 171 168 170 171 169 +172 176 172 168 169 170 173 174 167 167 163 157 +156 147 144 136 131 117 106 102 90 80 84 75 +78 77 83 81 89 88 97 95 93 95 94 93 +98 99 98 100 97 95 95 97 100 100 95 99 +99 96 100 97 102 97 99 96 97 99 105 101 +98 98 100 102 101 105 100 103 103 97 101 93 +95 92 93 154 220 217 202 195 171 194 180 158 +145 169 158 150 137 141 143 145 139 134 138 131 +128 135 125 125 121 112 105 90 88 97 104 97 +94 103 101 114 124 119 115 110 117 115 100 95 +119 134 140 139 146 141 140 139 143 140 127 128 +135 138 133 151 159 146 116 110 111 113 130 138 +144 143 150 149 145 149 156 151 150 141 141 142 +147 129 139 148 157 152 157 160 150 149 141 138 +142 143 139 142 150 159 165 148 138 139 157 166 +168 164 170 178 178 174 170 170 161 163 164 164 +164 166 170 170 168 168 173 165 169 163 160 158 +165 172 174 171 162 159 161 165 167 174 167 159 +164 170 168 157 161 169 171 168 168 141 146 154 +160 163 172 172 173 175 171 174 172 173 176 176 +178 169 175 181 185 188 185 184 183 173 176 173 +177 176 177 179 174 174 175 174 171 163 163 175 +177 181 185 180 174 174 173 166 149 165 162 147 +156 159 160 169 184 193 198 206 193 184 179 181 +181 185 189 187 193 194 195 197 200 205 209 205 +205 197 201 197 196 202 198 197 192 189 186 191 +193 189 195 193 194 196 192 194 199 200 198 197 +197 201 199 196 198 199 200 202 201 199 201 206 +204 200 206 206 207 204 201 209 198 169 164 155 +149 151 156 160 169 177 188 183 143 126 137 148 +165 182 186 197 195 206 214 185 63 45 50 45 +35 38 60 55 68 45 50 46 50 47 54 48 +48 46 48 40 50 40 41 47 49 54 44 44 +50 46 51 58 63 70 78 79 103 116 134 140 +148 151 149 151 148 147 144 143 147 151 158 153 +158 159 156 160 160 161 159 163 161 159 152 152 +159 161 161 160 158 160 158 161 160 157 159 158 +157 150 158 157 158 158 156 155 157 155 158 159 +163 156 160 160 157 155 157 154 156 159 156 155 +101 101 99 101 96 96 93 105 89 92 98 94 +100 95 97 93 94 96 99 96 96 100 104 95 +99 101 106 117 125 133 140 147 155 158 156 162 +165 166 170 174 170 170 169 173 170 172 169 172 +173 165 172 166 166 162 164 161 154 146 145 132 +130 117 108 96 88 89 78 80 78 78 75 79 +88 84 93 95 96 96 100 96 104 104 105 99 +102 95 94 101 99 101 100 98 98 101 98 98 +99 97 97 100 97 99 100 101 100 103 103 99 +105 107 99 95 100 99 99 93 90 84 91 151 +223 213 198 179 191 195 175 152 164 166 158 152 +162 160 146 135 153 138 137 129 134 142 133 123 +120 104 102 100 101 108 95 87 80 97 112 116 +112 109 113 111 113 103 107 116 137 143 136 134 +135 137 142 138 137 138 137 132 134 139 143 153 +144 129 110 114 120 124 135 140 143 139 143 151 +147 151 153 153 146 142 139 139 147 144 142 144 +150 160 160 149 130 136 149 152 149 153 156 143 +149 145 143 146 152 154 146 166 169 171 170 170 +168 173 168 166 171 163 162 161 157 164 171 172 +169 168 177 170 169 170 160 153 157 162 167 174 +180 162 159 159 162 167 167 166 167 167 172 170 +160 159 163 151 147 156 153 162 166 166 164 170 +168 177 176 175 176 173 176 165 173 170 165 172 +186 186 186 180 179 178 174 170 167 176 176 175 +172 174 174 166 172 165 166 162 171 183 184 183 +178 172 165 170 147 149 165 151 144 168 180 192 +200 200 196 188 177 167 174 190 190 194 192 190 +195 194 196 205 207 207 203 201 203 198 199 196 +195 196 194 192 193 189 191 194 188 190 193 192 +196 195 196 197 200 201 200 198 200 202 203 200 +197 198 202 201 200 200 201 207 205 202 207 206 +207 201 205 208 179 163 160 154 151 158 167 171 +178 188 189 147 125 130 141 154 167 184 186 192 +197 208 211 146 47 38 38 47 39 38 41 46 +61 52 49 74 58 52 49 49 44 45 43 43 +42 44 50 47 49 54 42 43 49 46 57 61 +76 84 85 95 112 125 144 149 152 148 151 147 +143 143 143 144 150 155 158 160 159 159 159 161 +159 161 160 158 161 154 159 158 158 160 159 161 +159 161 159 157 156 156 161 154 161 156 154 160 +158 151 160 157 159 160 156 157 155 156 157 158 +155 158 156 153 157 157 158 159 +97 97 93 99 +97 92 96 91 92 94 96 91 91 93 96 96 +97 99 94 92 98 100 97 102 97 104 111 119 +126 132 141 149 153 155 159 159 163 167 169 170 +172 167 168 170 169 169 170 169 172 166 170 171 +168 164 163 157 153 150 144 135 127 117 108 99 +87 86 75 76 77 77 76 85 87 90 93 95 +91 91 99 95 95 97 108 96 100 99 98 99 +95 98 98 100 98 99 97 101 96 98 93 97 +97 99 98 99 99 104 96 98 99 105 104 97 +99 95 100 95 87 86 95 165 223 206 186 187 +189 183 156 180 173 164 141 177 181 167 136 140 +151 135 130 141 142 141 126 119 112 106 104 100 +105 97 93 84 95 106 116 112 105 110 112 105 +95 100 118 139 144 145 141 133 134 133 139 137 +130 134 137 133 133 146 155 140 109 118 117 112 +122 134 135 137 138 141 147 153 154 150 146 148 +146 142 134 130 145 150 152 150 154 145 156 140 +137 146 160 156 159 154 153 151 141 134 136 158 +171 163 149 151 161 167 171 166 161 165 164 167 +169 173 166 166 166 160 167 169 169 167 164 172 +172 164 163 160 154 155 155 161 183 176 166 158 +160 164 165 168 171 172 172 160 156 140 152 157 +159 166 165 159 164 172 164 164 171 168 179 175 +169 179 176 159 165 178 166 162 177 184 184 186 +179 173 175 174 165 165 168 174 170 175 176 174 +163 170 173 167 159 175 181 176 173 171 161 162 +156 143 153 156 170 186 193 206 201 185 182 173 +176 180 187 180 180 190 197 199 199 205 203 204 +206 203 203 200 200 203 199 196 189 185 189 194 +192 197 191 189 189 192 192 197 198 196 196 198 +201 201 201 200 200 203 199 202 200 200 205 200 +200 201 204 208 207 206 204 207 206 204 208 199 +164 154 157 152 153 163 169 178 185 190 151 123 +123 138 150 161 173 182 185 199 204 216 200 89 +36 37 39 36 37 40 40 42 51 47 48 73 +64 59 53 45 44 42 39 40 51 44 50 53 +51 46 43 46 51 50 55 65 74 79 91 108 +124 136 143 150 153 151 146 149 145 142 148 142 +147 153 158 162 159 162 158 163 160 160 161 158 +159 160 160 155 161 160 157 157 155 159 157 158 +160 156 158 159 159 157 156 154 153 156 155 160 +157 155 156 158 160 157 154 160 156 160 156 151 +155 156 155 155 +97 97 97 94 90 90 95 92 +93 94 87 95 91 93 97 89 87 94 98 93 +91 95 98 98 100 100 112 120 128 135 138 146 +148 150 157 162 161 171 168 168 169 170 169 171 +170 173 172 167 169 169 171 168 169 165 164 160 +153 149 145 133 125 118 106 102 90 88 77 75 +77 82 78 81 81 86 92 90 93 94 99 94 +98 95 100 96 97 101 97 100 98 97 94 106 +95 93 97 101 99 99 97 95 97 96 96 102 +102 102 103 101 101 104 102 95 100 97 95 92 +85 88 100 171 219 201 194 195 184 169 173 176 +172 149 146 172 171 142 146 145 143 121 140 154 +142 134 125 118 109 99 107 103 99 90 93 94 +112 103 104 107 105 108 106 91 89 117 140 146 +146 141 141 138 140 135 129 139 137 129 135 144 +142 139 139 122 98 119 126 123 133 147 143 139 +139 137 144 145 155 153 145 133 135 146 143 137 +135 142 155 156 152 121 152 148 147 150 161 162 +156 155 149 145 132 134 146 161 168 174 166 156 +154 154 158 166 160 155 154 164 173 169 173 177 +162 162 159 170 171 165 165 166 165 164 160 161 +161 159 149 154 173 174 177 170 161 162 163 165 +169 165 156 155 157 142 158 167 170 169 171 167 +169 175 173 168 167 165 168 179 172 180 174 163 +158 176 171 165 169 173 184 183 181 178 175 172 +170 167 167 168 172 176 172 171 160 162 173 170 +166 169 180 172 170 166 160 151 161 148 167 182 +194 199 202 199 179 164 177 180 190 191 185 179 +191 194 196 205 210 210 206 203 203 200 200 199 +198 197 195 186 183 189 192 194 194 194 190 194 +187 194 196 195 195 197 196 200 200 200 200 202 +199 200 200 201 201 201 204 200 200 203 205 208 +206 207 205 208 203 208 207 177 152 147 153 161 +165 163 175 183 186 149 125 128 131 143 161 169 +174 177 183 196 210 218 185 60 37 42 38 41 +38 43 41 43 52 49 56 70 55 52 48 44 +45 38 43 43 46 47 54 52 48 53 45 44 +44 53 63 63 69 83 96 113 131 149 148 152 +156 148 150 148 147 144 147 149 156 157 158 158 +159 159 162 160 161 162 159 165 162 159 153 158 +160 158 157 156 158 156 157 160 160 157 158 160 +161 160 153 158 157 154 155 156 154 155 156 154 +164 158 159 160 155 159 156 154 155 160 153 159 +92 92 100 104 95 89 94 94 95 96 95 97 +98 95 96 96 96 96 95 95 95 103 94 96 +101 106 114 120 128 131 142 144 147 154 158 161 +163 167 167 168 169 174 172 171 170 173 168 174 +172 172 174 169 170 167 163 160 156 150 147 140 +128 117 109 98 94 80 73 77 79 77 77 83 +85 92 92 93 95 93 100 96 95 96 99 103 +100 104 100 100 101 97 94 92 95 98 98 99 +95 101 99 101 94 98 100 99 102 102 99 100 +106 98 95 97 98 94 94 89 89 86 97 180 +225 204 199 191 164 181 184 170 148 167 161 161 +141 134 152 158 141 130 144 142 129 151 134 121 +105 107 106 102 98 99 108 106 109 109 104 114 +107 102 93 97 109 138 146 143 142 143 139 141 +138 135 123 129 140 131 139 147 150 118 106 117 +115 116 118 130 141 144 150 143 141 137 144 147 +146 148 151 131 134 145 151 142 137 139 134 159 +139 119 145 156 153 156 153 159 159 156 143 133 +137 142 145 150 171 166 167 166 160 148 148 152 +151 161 153 157 165 171 176 179 169 161 161 160 +168 162 160 158 156 161 164 166 160 163 162 155 +158 160 169 176 170 166 159 150 152 149 144 167 +171 159 160 158 164 159 166 168 165 166 168 171 +171 165 164 179 177 168 169 166 161 168 174 169 +171 164 174 181 176 173 175 167 173 168 166 166 +165 182 175 173 164 158 163 178 163 158 170 166 +166 162 156 151 170 175 189 198 204 190 176 170 +161 166 184 188 182 185 195 198 196 201 208 208 +207 204 205 202 202 200 198 193 193 191 192 191 +191 194 194 195 193 191 191 193 190 196 196 196 +198 196 199 201 201 202 201 201 200 198 198 203 +201 203 200 200 201 203 203 207 207 207 207 206 +204 207 192 158 153 152 161 163 169 175 180 185 +149 126 132 137 142 154 167 173 178 179 181 199 +214 214 154 45 35 35 39 41 39 38 42 46 +50 49 52 50 47 54 48 51 46 41 43 48 +47 58 48 47 50 50 44 45 47 61 68 71 +72 89 108 124 140 149 155 157 151 148 147 142 +144 146 146 152 158 161 160 158 157 161 163 160 +157 160 161 161 164 161 158 159 159 155 155 158 +160 157 158 157 158 158 156 159 159 157 159 158 +157 158 158 157 157 156 154 152 156 158 159 156 +154 154 154 160 156 158 155 156 +95 95 109 105 +96 95 102 95 92 93 97 99 96 97 93 91 +95 92 98 94 94 90 97 101 98 107 115 117 +127 132 137 143 151 157 160 159 163 165 166 168 +173 171 169 172 172 171 172 171 174 168 172 171 +168 168 163 160 153 150 147 141 129 117 108 101 +90 85 77 77 73 81 84 83 88 92 94 96 +92 96 98 95 101 98 97 100 93 97 94 98 +101 97 93 95 96 95 99 97 97 97 96 98 +101 100 100 98 105 103 100 93 97 95 102 96 +99 91 90 88 84 80 104 199 220 203 194 170 +186 185 178 161 164 168 158 142 151 151 148 147 +141 144 134 121 133 153 130 115 106 116 115 100 +96 107 105 108 108 109 110 108 102 108 102 116 +134 137 144 141 142 136 137 135 138 131 121 120 +130 139 143 142 125 109 119 128 125 117 124 137 +140 142 147 144 148 139 139 139 136 144 146 137 +135 143 142 146 149 136 117 140 137 128 141 151 +162 154 154 152 153 149 138 142 157 159 146 154 +152 154 163 166 164 158 153 144 145 157 168 160 +155 157 178 180 177 159 158 152 157 156 158 155 +159 163 163 165 170 165 170 165 158 157 160 175 +175 164 135 134 145 152 160 164 177 174 165 162 +158 161 167 166 160 154 169 168 173 170 159 169 +178 172 164 171 160 161 167 176 171 165 159 168 +170 169 168 167 177 173 167 162 165 168 172 171 +166 161 153 168 162 153 158 151 158 161 162 174 +186 193 201 198 182 173 169 168 176 187 183 186 +186 196 199 199 201 203 205 206 206 201 202 199 +197 196 193 191 193 190 191 195 193 193 192 193 +192 193 192 192 192 199 196 198 199 199 199 198 +198 203 201 201 199 199 202 201 202 204 204 203 +203 204 206 207 208 207 210 211 208 207 168 153 +154 156 162 169 178 185 182 148 132 137 142 153 +153 169 172 171 174 174 186 205 219 207 109 38 +39 37 42 40 46 40 41 48 48 50 46 50 +53 47 47 37 44 37 42 45 46 53 56 52 +47 45 45 48 53 55 68 81 78 98 122 130 +145 153 159 152 148 145 144 142 144 147 150 151 +154 158 158 159 159 158 162 162 161 157 159 159 +160 159 156 155 155 158 155 159 157 157 155 160 +158 159 157 160 158 159 156 155 156 156 154 156 +157 157 154 157 158 159 155 155 159 156 152 159 +158 156 157 162 +96 96 95 100 99 91 91 93 +91 96 96 97 97 91 93 91 96 93 96 98 +102 94 96 96 96 109 117 118 127 135 140 144 +151 154 157 159 164 166 168 171 175 172 170 173 +172 170 170 171 170 169 173 170 171 169 162 158 +154 148 144 138 135 117 108 101 92 88 79 76 +77 80 83 82 85 85 93 93 92 99 100 91 +97 99 99 99 98 100 98 101 95 98 96 96 +102 101 95 96 98 96 98 103 103 106 106 99 +100 102 99 98 105 95 100 96 94 93 91 89 +91 85 115 209 219 198 181 176 188 182 160 170 +180 172 146 135 169 160 139 139 146 136 121 123 +141 143 123 116 118 113 119 109 107 110 102 105 +103 115 109 101 93 116 129 133 142 144 145 141 +142 138 135 139 134 133 125 130 125 147 155 127 +96 116 130 129 122 130 141 141 142 145 141 143 +146 154 140 132 135 138 140 137 138 154 141 134 +145 124 130 141 148 148 147 144 154 153 148 142 +141 135 140 155 158 163 170 160 154 152 153 163 +161 160 157 152 151 151 160 166 165 157 157 173 +167 167 159 150 156 160 157 156 160 159 164 160 +165 167 171 170 171 158 156 161 163 137 131 141 +152 170 173 166 159 167 172 166 166 161 169 169 +163 159 156 162 173 175 171 161 175 176 170 166 +163 166 159 169 174 167 160 160 161 160 165 171 +174 170 171 168 163 160 167 171 170 161 154 151 +164 152 149 139 152 165 176 193 199 197 190 180 +165 171 184 183 183 183 192 196 197 201 204 203 +202 204 200 200 198 196 196 196 194 194 192 194 +190 190 193 194 193 194 194 193 193 197 195 194 +194 198 199 200 200 200 205 196 201 200 202 199 +201 201 201 204 201 200 203 205 205 206 206 208 +210 207 210 206 211 192 157 152 152 158 166 176 +181 180 154 134 133 148 153 163 167 168 167 165 +172 184 196 213 221 181 61 38 37 45 38 42 +41 47 41 50 48 53 46 48 51 53 69 41 +38 43 46 43 45 51 54 53 47 45 43 54 +52 67 70 69 96 111 128 139 149 159 152 149 +148 148 143 146 146 144 148 155 154 158 161 158 +161 161 159 162 167 159 160 158 154 159 157 155 +155 154 154 156 156 157 160 153 158 161 156 155 +158 157 159 154 155 157 156 152 159 159 157 156 +159 155 156 156 155 158 151 156 153 155 155 156 +93 93 94 97 98 93 93 95 95 93 92 94 +90 101 94 93 92 89 90 95 92 93 97 99 +100 103 109 117 131 135 141 142 152 155 160 162 +166 165 168 171 170 168 168 173 173 167 169 171 +171 171 168 171 170 170 168 157 153 146 145 139 +128 121 107 98 97 88 83 76 76 84 82 85 +91 92 88 92 92 93 96 103 97 99 92 99 +95 99 94 99 96 101 93 98 99 96 99 101 +100 97 97 100 101 103 103 95 97 101 99 97 +102 100 99 96 94 92 93 89 83 83 124 207 +212 192 191 194 188 178 176 185 184 160 154 147 +157 153 145 164 147 127 121 147 143 140 135 130 +124 115 117 116 110 110 99 103 104 103 100 96 +96 125 139 138 148 144 142 138 139 140 135 133 +128 131 131 137 134 139 131 107 105 123 129 119 +126 142 148 146 148 137 135 149 153 153 142 133 +134 138 145 139 148 144 139 118 128 134 144 145 +148 158 149 146 142 151 144 127 130 134 148 160 +159 161 161 165 154 151 153 154 157 154 157 162 +162 149 149 152 167 156 158 155 157 159 155 149 +154 162 162 160 166 166 165 159 166 167 171 169 +169 154 142 148 138 145 149 150 160 168 171 179 +166 158 161 164 169 173 173 168 169 164 159 156 +165 169 176 165 164 178 173 159 168 173 164 156 +161 169 166 160 156 156 162 161 172 173 168 167 +162 155 156 173 165 164 151 143 158 155 158 156 +171 178 193 202 195 180 172 171 174 186 187 171 +181 195 195 195 200 203 205 200 201 200 199 196 +195 197 193 190 192 191 195 188 187 191 194 194 +192 195 197 195 195 196 197 196 198 197 200 198 +199 202 202 202 204 202 204 199 202 200 202 204 +203 204 202 205 203 207 209 210 209 209 210 207 +204 163 155 150 151 158 168 180 174 156 137 142 +150 163 169 168 169 167 151 152 168 191 208 217 +215 147 46 40 40 45 49 43 52 43 49 47 +46 47 56 52 47 41 60 65 42 41 42 46 +50 55 50 47 52 52 47 49 60 65 71 74 +96 120 131 148 151 156 153 152 142 145 144 147 +148 151 150 155 156 158 158 157 158 162 160 158 +157 157 158 155 158 157 155 159 153 157 154 157 +155 156 158 157 159 155 161 158 152 156 158 156 +156 156 155 157 159 158 157 157 155 159 154 154 +157 158 153 158 157 156 154 158 +96 96 93 104 +104 91 91 93 91 93 93 97 98 96 99 93 +97 91 96 94 91 96 100 98 106 110 114 123 +127 130 137 144 149 153 161 160 163 168 169 173 +166 169 170 170 172 165 171 173 171 173 170 167 +170 172 161 164 153 152 148 143 131 119 109 102 +90 83 81 72 75 85 80 83 89 91 92 96 +91 99 100 96 99 99 98 99 101 96 97 98 +101 94 97 101 102 98 95 104 95 95 97 98 +98 95 100 98 97 96 95 99 100 101 101 102 +95 90 90 84 81 86 121 210 205 194 203 195 +174 181 193 192 170 159 172 158 148 137 163 169 +143 132 139 148 136 140 157 129 122 117 130 121 +114 108 104 111 106 100 95 99 119 131 131 124 +140 146 142 135 136 132 136 129 134 130 142 139 +135 119 105 109 117 118 122 121 137 153 151 143 +145 140 140 149 150 151 141 133 133 140 143 148 +146 116 131 125 130 138 146 149 152 151 153 144 +145 144 136 124 139 148 150 155 157 163 156 156 +163 160 151 145 149 148 156 170 168 157 151 148 +151 160 159 140 141 147 145 137 155 163 163 162 +165 165 169 167 166 169 169 170 157 144 136 149 +155 158 160 163 161 158 163 177 172 161 152 157 +165 166 169 168 170 167 162 159 161 160 162 175 +159 162 171 163 161 170 170 161 150 161 170 163 +157 159 162 156 159 169 168 163 160 156 161 163 +163 156 151 143 145 160 174 181 191 195 201 190 +173 166 170 183 180 180 185 190 196 200 193 196 +200 197 197 194 197 194 195 192 187 184 179 186 +189 195 191 189 191 190 194 193 195 196 197 194 +195 195 193 197 197 200 200 198 203 201 202 205 +204 204 203 202 201 202 203 202 203 203 203 206 +208 208 207 208 209 208 208 206 180 151 152 150 +156 167 178 177 145 135 145 152 165 169 172 165 +155 148 143 151 172 201 215 222 201 95 43 43 +39 37 42 49 55 40 50 49 48 47 52 43 +47 41 44 47 52 56 48 52 52 58 57 48 +44 49 47 53 71 59 70 83 108 129 143 152 +154 152 154 148 146 141 143 143 150 152 158 160 +157 155 162 158 161 159 159 159 161 153 159 157 +156 155 155 155 155 157 154 160 156 158 156 158 +158 155 155 156 156 156 158 160 154 158 153 156 +156 157 157 155 156 156 155 157 156 156 158 156 +158 160 158 155 +98 98 97 96 100 99 95 98 +87 89 94 94 94 92 97 96 93 91 95 95 +92 97 105 98 107 110 117 126 130 139 139 144 +149 154 160 160 162 165 168 168 169 172 169 173 +175 170 168 171 172 174 171 169 169 168 161 163 +156 146 145 138 128 120 111 103 93 79 81 72 +70 78 80 86 89 88 87 90 90 94 98 95 +97 102 94 100 98 94 96 96 99 97 99 98 +94 97 95 94 95 94 92 97 97 96 99 97 +97 100 93 96 98 99 103 92 97 89 92 84 +81 84 147 221 202 200 199 182 185 188 192 174 +171 168 169 166 143 156 158 154 139 164 150 135 +128 147 144 122 120 123 135 111 109 108 106 107 +96 90 98 111 134 137 135 123 127 136 138 137 +134 131 132 137 136 140 146 141 113 109 113 123 +122 117 123 135 137 146 142 143 143 147 147 146 +142 145 141 136 134 146 148 133 126 111 125 129 +137 141 148 149 146 153 159 153 135 136 130 143 +151 160 156 155 151 160 162 153 157 162 155 146 +144 148 151 170 173 168 157 147 144 151 161 155 +145 150 145 136 142 151 159 153 164 163 156 168 +168 157 153 143 147 157 156 152 168 168 162 164 +164 156 161 160 167 162 159 163 157 161 161 168 +168 162 166 169 165 154 158 172 167 152 162 169 +166 161 168 172 165 152 152 163 165 166 165 157 +158 158 168 163 160 155 156 157 160 156 153 148 +157 177 186 194 199 190 179 170 176 180 176 171 +174 189 198 199 201 202 201 197 197 192 191 190 +190 189 183 183 179 180 182 185 189 190 191 189 +192 194 199 196 193 199 197 195 195 198 196 197 +201 200 202 202 204 203 201 202 203 203 203 200 +201 201 203 201 202 205 204 207 209 209 210 208 +212 208 206 195 158 146 152 157 165 177 173 144 +141 145 156 166 171 167 154 138 132 134 146 163 +185 206 218 223 174 56 42 39 37 43 40 42 +48 46 50 50 54 47 45 51 62 53 40 41 +50 70 52 54 58 51 55 51 47 51 51 67 +68 69 79 101 122 142 150 153 152 150 146 150 +146 139 142 142 151 151 155 158 160 158 159 160 +160 159 160 159 158 155 157 156 154 159 154 153 +158 158 157 158 157 158 163 159 159 155 158 156 +154 156 157 156 158 153 156 156 158 157 156 156 +156 152 155 155 158 156 154 153 157 154 156 155 +95 95 97 96 102 97 99 101 96 96 95 95 +104 95 95 96 98 93 101 94 99 100 99 99 +105 113 115 121 130 134 141 145 148 150 158 158 +165 167 172 169 173 172 172 171 174 174 172 172 +171 172 172 171 170 166 164 163 156 146 147 141 +132 124 115 109 99 83 77 75 70 84 76 83 +88 90 89 90 93 92 97 96 94 96 102 96 +96 96 94 95 98 105 94 94 100 98 99 98 +98 97 98 99 101 94 99 100 98 99 99 99 +105 102 100 92 94 89 90 84 82 88 160 224 +212 201 190 191 202 194 176 163 190 176 172 154 +157 167 164 144 147 159 149 125 143 153 148 125 +130 124 120 105 104 109 106 97 91 91 122 128 +138 137 140 131 118 125 137 140 134 130 124 136 +138 146 144 121 106 114 121 120 117 120 140 144 +136 139 138 144 145 145 153 151 138 135 139 139 +141 143 130 108 115 122 132 135 147 145 151 157 +142 144 160 150 130 129 146 151 157 157 158 161 +154 152 156 156 159 151 156 152 151 144 145 156 +168 170 166 157 159 159 165 155 146 150 140 134 +130 131 126 123 138 148 131 141 146 135 143 156 +154 157 159 163 159 165 171 161 165 162 164 163 +157 159 164 169 162 154 159 158 169 163 169 173 +168 157 154 165 171 165 156 168 172 167 163 170 +171 159 154 153 164 171 166 162 153 146 161 162 +155 149 150 149 150 154 158 174 183 186 200 199 +183 168 169 176 187 188 174 186 190 194 202 204 +205 201 199 198 189 193 190 185 185 185 181 180 +183 183 184 185 186 192 193 195 193 195 197 192 +193 197 197 194 199 197 199 200 200 203 202 203 +203 204 202 204 202 202 202 201 199 202 204 201 +203 203 205 208 210 208 209 207 215 208 206 170 +147 153 155 168 177 168 144 139 147 160 168 163 +162 136 121 115 126 141 159 178 196 214 221 212 +125 40 35 41 41 44 43 48 45 53 55 53 +51 51 50 47 58 57 46 51 51 70 68 61 +54 52 61 45 56 55 46 49 59 73 85 109 +127 144 151 155 150 157 146 150 147 143 144 148 +153 154 160 154 158 160 156 159 154 158 159 156 +154 158 155 154 160 157 158 156 154 156 156 156 +156 154 154 158 161 158 157 157 157 156 155 154 +156 156 156 154 157 157 156 154 160 156 156 158 +157 156 156 156 158 155 153 153 +94 94 93 93 +98 93 99 97 101 99 95 93 93 93 98 94 +97 97 97 94 100 99 102 99 102 109 118 121 +126 135 139 147 151 154 159 160 163 168 167 167 +171 169 173 170 173 172 173 176 171 174 175 170 +170 164 161 162 156 153 150 142 128 123 113 98 +99 85 75 74 76 81 74 82 84 84 88 92 +97 93 95 91 92 94 102 96 95 94 96 97 +92 94 93 93 95 95 96 103 100 101 99 99 +98 98 98 91 93 97 99 103 93 99 96 93 +91 93 87 82 79 85 154 217 210 202 196 208 +203 183 174 190 199 173 156 177 178 167 146 168 +158 146 129 130 145 155 148 140 149 129 117 107 +107 107 98 89 88 106 140 136 144 141 138 133 +121 122 131 135 137 126 128 135 141 137 123 110 +118 127 126 119 122 140 146 147 143 135 133 137 +143 145 150 141 132 134 146 150 136 120 124 119 +121 135 136 135 149 154 150 152 148 135 140 141 +125 137 148 151 157 165 161 158 158 155 152 153 +158 159 149 147 159 152 143 144 155 154 157 160 +160 162 148 138 143 142 138 134 124 123 117 124 +112 104 88 89 94 111 150 169 169 158 154 164 +167 164 163 165 159 159 161 164 163 156 163 164 +157 162 156 154 161 163 164 171 164 161 154 154 +163 171 160 155 160 163 162 164 159 165 162 154 +155 164 171 162 154 138 152 162 156 155 151 145 +146 164 185 193 190 196 192 179 164 162 178 176 +186 192 193 188 186 202 203 205 203 197 195 191 +187 186 187 186 181 185 184 186 186 188 191 190 +192 193 192 194 192 195 197 191 194 197 199 197 +198 199 198 201 203 203 203 204 202 202 204 204 +201 205 203 200 201 202 202 207 203 205 205 210 +209 208 211 210 212 213 199 152 147 153 165 176 +166 140 140 154 162 166 153 133 108 103 108 112 +120 150 168 191 208 220 223 195 81 37 37 36 +41 41 44 49 43 49 56 54 56 50 51 61 +53 58 46 52 54 51 66 68 56 58 49 47 +49 52 54 47 62 73 97 113 134 149 152 152 +151 148 148 145 145 142 147 151 155 157 156 155 +160 158 159 159 160 159 159 156 159 157 158 157 +157 156 154 155 156 157 153 154 155 156 155 159 +158 156 158 158 157 154 156 155 156 158 154 156 +154 157 158 159 155 157 155 155 158 159 157 156 +156 154 156 154 +94 94 96 96 98 94 98 98 +98 95 101 95 96 94 94 94 98 98 98 97 +104 103 108 107 110 110 122 120 127 133 139 144 +151 155 161 159 163 168 171 171 172 175 173 170 +169 171 174 171 171 172 169 169 167 167 163 163 +158 150 150 138 134 128 107 93 90 81 74 73 +76 73 77 77 81 84 92 92 98 92 98 92 +96 91 96 100 97 96 96 99 96 98 92 94 +101 96 100 99 98 99 97 96 104 98 99 97 +95 97 96 94 101 97 95 92 94 94 84 80 +79 82 143 215 206 202 208 205 189 177 193 205 +186 156 168 182 173 156 153 174 158 133 141 149 +143 143 151 146 145 128 119 130 108 99 91 85 +100 120 137 130 140 140 137 133 137 122 122 127 +130 137 130 142 141 113 104 117 128 129 121 119 +134 147 149 140 140 138 135 136 142 144 136 137 +137 139 142 147 121 120 128 133 126 135 136 142 +146 161 151 146 150 139 122 117 130 141 150 150 +152 162 168 165 158 159 158 148 153 157 145 136 +143 152 150 142 135 141 146 148 146 157 150 143 +147 146 126 122 131 139 142 141 142 115 107 97 +75 70 143 169 165 162 155 156 159 166 161 158 +156 158 157 159 159 162 160 164 163 160 163 161 +159 159 166 162 166 162 161 150 156 163 159 160 +154 152 164 168 159 157 161 162 156 151 164 166 +156 144 139 156 157 153 147 151 169 187 195 204 +190 179 176 174 172 172 174 182 196 197 196 186 +192 201 204 202 201 196 186 190 187 186 187 187 +189 187 190 185 188 189 190 196 196 192 195 194 +195 194 197 194 198 199 200 198 199 197 199 203 +203 201 203 201 202 200 201 202 202 203 204 202 +199 203 204 204 204 205 208 209 208 209 210 209 +212 207 171 146 153 165 172 158 141 143 158 157 +141 119 109 101 84 96 108 117 126 151 176 197 +214 223 219 169 54 35 40 41 35 37 45 46 +49 53 54 59 62 48 45 49 55 47 50 45 +46 57 72 65 52 56 49 50 45 49 54 63 +64 88 106 126 144 151 157 153 149 146 147 146 +147 144 147 154 155 159 158 161 161 162 159 156 +158 154 159 157 157 156 157 158 155 157 155 159 +152 157 154 153 154 158 157 155 156 156 154 154 +155 154 156 156 154 157 154 154 158 155 155 156 +154 156 158 156 157 152 150 156 153 155 154 153 +98 98 96 98 97 95 99 101 99 95 97 95 +96 94 95 96 97 99 103 98 100 102 107 103 +105 113 115 122 130 133 137 144 148 151 159 162 +163 165 169 171 170 172 170 170 172 175 173 170 +169 169 172 171 169 167 165 161 156 148 147 141 +135 118 109 93 92 81 80 74 72 71 76 88 +86 90 89 90 91 95 100 100 95 97 96 102 +101 99 94 95 95 90 94 94 100 96 100 96 +96 91 94 97 96 101 96 101 98 99 98 98 +97 97 95 96 92 86 85 79 77 88 161 223 +208 212 206 185 182 196 203 194 160 175 177 171 +148 169 166 160 143 139 164 152 139 139 169 150 +146 127 131 134 113 98 89 93 114 130 132 124 +132 137 135 134 138 128 120 124 130 143 138 141 +130 102 109 130 126 126 119 132 149 147 141 138 +133 137 139 140 137 144 136 137 140 138 122 118 +120 128 133 139 139 128 127 138 145 158 159 142 +135 137 128 132 143 136 145 150 155 153 160 156 +162 157 148 140 139 116 108 101 106 105 110 114 +117 118 127 128 130 144 155 156 152 144 128 121 +148 156 146 139 154 137 123 107 89 59 125 162 +161 163 162 161 157 161 164 164 159 157 158 152 +146 155 160 160 166 159 164 168 157 162 163 162 +163 167 158 152 152 156 151 163 164 150 142 162 +169 159 153 167 161 148 148 166 157 149 139 143 +155 149 154 178 187 192 202 196 173 158 170 171 +173 175 191 194 188 197 201 195 196 195 200 199 +197 192 187 192 189 190 187 191 190 192 190 188 +191 193 193 193 194 193 197 197 197 194 198 195 +199 197 197 198 201 202 202 200 201 200 201 205 +204 203 204 200 204 204 206 202 201 205 205 205 +203 208 207 213 210 210 210 211 209 192 147 154 +165 172 156 145 154 159 143 119 93 94 103 100 +95 93 110 127 140 164 187 213 219 222 210 120 +42 43 33 34 36 38 45 45 54 46 52 44 +48 47 51 46 47 48 43 46 48 60 61 60 +52 50 52 65 70 55 59 64 67 97 124 134 +151 152 156 151 147 143 148 144 148 148 152 155 +154 159 158 159 159 160 163 159 160 159 158 156 +162 156 158 157 154 156 153 155 155 154 156 154 +155 159 156 158 154 154 160 155 158 155 156 154 +157 156 156 155 157 156 156 158 154 155 153 156 +151 156 155 157 154 157 155 153 +101 101 95 99 +98 98 94 96 96 93 98 94 99 100 94 96 +100 96 98 100 101 108 107 105 108 110 115 121 +129 137 139 145 149 153 159 160 163 168 169 169 +168 172 172 173 170 171 171 171 170 168 172 171 +168 170 166 163 158 153 145 137 129 120 110 98 +91 85 78 72 73 72 82 77 83 86 88 89 +98 88 102 100 97 98 95 96 97 98 97 96 +93 90 93 92 99 97 98 96 100 94 97 99 +93 97 97 98 103 104 99 99 106 97 96 96 +92 86 84 84 78 84 156 222 218 212 195 190 +201 201 189 168 170 191 179 150 148 188 171 148 +152 168 168 155 140 146 163 146 142 142 131 124 +103 96 100 103 120 128 132 127 126 128 128 132 +129 134 124 125 135 140 142 122 103 104 118 128 +126 115 129 143 151 147 144 145 136 136 143 139 +138 140 140 138 144 131 109 110 125 139 137 136 +140 135 133 138 142 144 155 144 124 121 141 149 +149 144 145 147 153 156 152 149 148 137 113 99 +92 99 107 105 110 104 103 91 89 93 91 105 +112 118 131 151 152 135 113 119 144 163 139 141 +147 149 141 123 105 79 111 159 162 160 163 162 +162 160 163 167 166 163 157 157 143 133 131 136 +144 157 156 157 157 158 164 163 165 162 162 157 +150 146 145 148 149 134 97 121 170 168 159 159 +166 148 138 152 156 146 141 130 153 164 178 193 +197 192 184 178 171 161 176 174 185 193 195 190 +193 200 202 199 196 195 199 197 193 190 188 184 +186 191 189 192 192 191 189 191 192 193 192 195 +195 196 198 197 198 197 199 198 201 198 197 199 +198 200 204 200 197 203 205 203 204 201 204 202 +204 203 203 201 201 202 206 204 205 207 209 211 +211 212 210 209 201 163 155 163 168 155 149 156 +152 124 102 81 79 82 86 93 93 101 127 144 +157 175 202 218 221 222 186 67 38 32 33 33 +35 37 44 44 45 45 43 48 54 41 46 53 +45 46 45 43 52 55 60 55 50 50 55 51 +52 51 60 75 85 109 129 138 153 152 156 150 +146 146 147 141 146 152 150 156 154 158 161 157 +158 156 160 161 159 158 155 159 160 157 153 158 +156 155 155 156 156 155 157 155 153 154 155 158 +155 154 153 153 157 156 156 156 155 154 156 156 +154 157 159 158 156 156 156 155 156 149 152 154 +153 153 152 151 +98 98 92 97 100 99 98 99 +92 93 98 98 100 100 100 97 96 101 99 99 +106 105 103 104 108 109 117 123 126 135 140 145 +146 154 158 161 161 170 174 174 170 172 171 171 +174 175 172 172 171 173 169 174 170 170 170 162 +155 150 143 142 128 120 107 92 92 83 75 68 +73 74 80 81 85 84 89 88 89 90 98 96 +101 99 95 93 96 95 94 93 94 96 95 100 +101 94 95 97 95 100 102 99 98 97 95 98 +98 98 98 99 98 95 93 96 92 90 84 76 +76 79 146 218 217 199 195 209 210 196 175 188 +194 186 157 161 165 180 159 141 163 169 160 136 +161 159 155 136 163 152 135 112 99 117 111 112 +120 131 128 124 126 124 119 135 125 131 131 131 +140 145 145 98 103 121 124 119 123 129 140 145 +142 144 141 144 141 134 138 141 136 139 143 148 +132 115 123 123 122 135 132 136 144 149 139 143 +136 132 138 139 127 128 150 156 153 151 148 147 +145 147 150 137 124 107 83 100 119 121 125 132 +125 117 109 108 110 97 85 93 94 100 106 128 +135 127 95 114 135 148 144 158 162 162 153 139 +126 102 92 109 133 128 131 143 157 162 160 154 +157 168 169 163 145 135 142 140 142 139 136 137 +137 147 167 162 157 153 168 164 149 144 120 107 +99 82 55 62 122 144 155 154 154 157 142 138 +153 146 142 143 169 182 193 200 191 173 170 168 +170 170 187 192 196 197 199 197 200 201 200 198 +196 198 198 195 193 190 189 189 188 189 193 192 +194 191 195 192 195 188 193 196 195 195 197 198 +198 199 200 197 203 201 198 197 201 202 200 203 +201 204 205 204 205 203 201 203 204 205 204 203 +203 205 208 205 207 208 210 212 212 213 210 204 +175 162 167 164 153 146 153 138 101 86 81 81 +80 84 99 98 99 111 135 159 177 199 212 221 +221 216 152 41 35 35 34 35 37 36 45 43 +46 50 49 53 52 43 40 39 46 46 48 54 +49 57 57 52 50 45 49 56 48 59 55 72 +94 119 130 145 154 151 156 148 143 146 146 144 +149 153 151 157 159 160 158 161 159 160 161 158 +157 158 159 160 159 155 154 156 155 153 157 156 +155 157 154 154 157 156 156 159 158 153 159 156 +155 153 156 155 152 153 154 156 150 154 154 158 +153 159 157 155 155 153 155 154 154 152 156 153 +96 96 100 101 96 98 100 101 93 99 100 98 +99 94 99 98 97 98 101 99 102 103 105 107 +106 112 116 116 126 134 139 148 149 154 158 159 +165 168 167 170 166 171 171 172 172 172 170 173 +173 173 173 173 168 167 170 163 156 155 149 140 +132 123 110 99 90 87 82 72 68 72 72 78 +86 88 88 94 90 97 98 102 96 100 94 97 +97 101 97 96 97 101 96 100 96 93 102 97 +94 94 98 97 96 95 98 98 100 97 101 93 +96 91 97 93 95 94 88 80 80 81 145 219 +209 203 210 209 194 182 197 208 190 163 152 177 +170 159 152 159 161 153 131 147 169 158 138 144 +162 156 133 122 120 119 128 120 118 126 129 119 +123 129 123 126 121 132 135 137 133 127 122 93 +105 126 122 114 127 140 146 137 138 139 143 146 +139 128 134 132 142 138 134 125 117 120 129 138 +123 131 134 138 138 146 153 143 134 126 120 129 +136 138 151 155 157 157 151 152 147 139 136 117 +92 91 95 119 149 142 135 137 140 127 118 116 +117 118 109 96 101 87 78 98 111 99 86 128 +139 152 166 164 167 163 163 156 141 127 113 102 +98 96 95 104 112 123 136 138 137 149 161 172 +160 155 156 152 148 157 146 118 108 105 153 160 +145 128 153 161 162 148 118 127 126 119 85 53 +56 78 129 159 150 159 148 132 138 152 160 172 +187 194 198 177 165 164 176 164 163 186 196 193 +202 208 204 201 204 201 196 192 192 194 197 195 +193 192 193 193 189 192 191 194 194 192 189 194 +195 194 194 195 197 196 202 200 198 199 199 200 +200 201 201 199 200 202 201 202 201 206 204 203 +202 200 201 204 204 202 203 203 202 203 207 206 +208 210 211 212 213 215 210 180 162 171 159 148 +152 138 117 87 79 74 86 82 90 87 96 107 +112 124 155 178 194 208 217 218 221 194 91 38 +39 37 39 36 37 40 45 44 52 51 43 46 +48 51 42 45 45 43 51 57 48 54 54 51 +47 50 49 49 54 60 63 79 103 127 141 145 +154 152 152 151 146 148 145 146 151 154 159 160 +158 158 161 157 157 159 161 163 157 157 159 159 +157 155 157 156 157 159 159 157 157 157 153 158 +156 156 159 155 158 152 156 156 157 151 157 157 +154 157 155 158 154 158 154 152 155 154 153 155 +154 153 151 153 157 157 154 150 +99 99 100 97 +98 97 97 99 94 94 96 100 99 98 95 98 +104 99 97 103 100 106 105 103 107 113 118 122 +134 138 138 148 146 155 159 157 164 170 170 172 +169 171 174 174 171 173 172 171 175 172 170 173 +173 168 166 163 157 161 143 139 131 121 112 99 +89 79 79 69 68 71 78 79 88 90 88 89 +89 96 98 92 100 97 97 99 95 101 95 102 +98 105 96 99 95 98 102 102 101 100 97 99 +94 97 99 104 98 100 100 96 95 95 96 95 +94 91 83 78 76 84 148 222 210 216 212 195 +179 193 211 201 173 168 176 177 159 149 171 171 +159 136 152 156 157 142 150 168 149 141 127 131 +109 114 122 124 119 112 125 122 120 130 127 126 +121 129 137 142 126 98 108 108 119 124 126 128 +136 142 145 138 137 135 140 137 142 132 133 132 +144 147 112 109 112 125 136 130 131 128 134 138 +136 142 160 145 133 124 122 134 148 150 144 147 +149 153 154 154 147 136 120 91 88 111 128 130 +150 150 142 138 133 137 127 120 119 120 118 113 +114 108 81 73 75 79 78 128 152 163 169 168 +166 165 164 164 155 142 127 128 126 115 113 117 +114 108 95 90 96 111 134 166 168 159 158 162 +166 167 163 133 130 103 103 131 139 119 113 152 +165 152 100 111 143 132 107 71 45 51 89 146 +156 157 154 137 134 158 182 195 198 182 176 170 +157 164 166 166 179 194 192 189 203 209 204 202 +198 198 196 191 191 192 194 194 194 194 193 195 +191 193 193 190 189 189 192 194 195 194 192 195 +196 199 201 199 199 202 201 201 200 201 201 203 +198 205 205 202 204 204 205 202 202 203 203 203 +202 203 202 205 203 203 204 208 209 209 212 212 +213 212 186 166 164 165 160 148 121 95 78 75 +80 86 86 97 90 95 104 113 121 139 166 190 +208 213 220 219 212 143 47 33 33 38 33 42 +38 39 48 44 55 45 46 55 49 45 44 52 +43 46 48 50 50 54 61 62 61 49 54 56 +56 64 76 93 114 139 144 154 146 149 145 151 +145 145 143 147 152 154 159 159 163 160 154 156 +160 154 155 155 159 154 158 161 154 159 155 157 +154 157 154 156 156 157 158 155 156 154 157 154 +157 153 155 154 153 152 154 154 152 157 158 152 +153 158 152 155 153 155 154 157 153 153 151 149 +153 154 153 150 +99 99 98 97 97 96 97 102 +97 99 96 95 94 97 101 98 103 96 93 97 +100 99 99 105 107 111 116 125 132 136 140 148 +149 153 158 162 164 169 174 172 171 171 175 173 +175 177 172 171 173 170 169 175 169 168 166 164 +156 154 143 141 130 123 110 100 90 80 74 67 +75 78 78 85 82 82 86 87 89 92 93 97 +96 98 103 97 96 93 96 101 101 94 100 94 +100 96 101 98 100 98 102 101 98 102 99 98 +99 98 98 95 100 97 99 91 87 87 84 77 +79 80 138 217 219 218 199 183 201 209 202 179 +182 193 187 174 159 171 171 155 128 145 172 151 +136 135 165 162 139 134 133 135 119 118 113 118 +128 117 119 121 110 120 127 124 125 137 135 133 +113 101 121 117 118 116 129 143 146 140 140 142 +137 136 133 128 136 138 136 132 123 129 115 110 +126 125 133 129 133 134 134 135 140 138 143 145 +130 121 130 138 149 151 149 147 145 147 153 153 +144 126 107 103 118 134 138 137 141 146 138 124 +131 125 123 120 119 104 109 104 111 101 91 81 +77 56 84 128 152 172 171 165 168 166 168 163 +155 132 122 130 130 119 111 114 124 117 125 115 +104 99 88 105 120 128 141 146 151 146 171 154 +138 126 110 102 103 91 67 80 98 90 63 65 +111 125 113 96 50 34 47 123 164 155 147 149 +160 177 195 197 180 156 153 163 162 162 170 182 +190 188 185 188 196 200 197 199 200 198 191 193 +193 192 196 195 194 194 192 194 196 194 197 191 +188 190 195 194 195 197 194 197 198 201 198 199 +200 201 199 200 201 201 203 199 199 205 203 200 +204 206 206 203 202 203 202 203 202 202 202 202 +205 204 205 207 208 213 211 210 204 189 171 159 +150 146 144 108 86 75 83 88 86 91 89 105 +95 97 109 118 136 154 180 198 211 217 218 220 +174 66 39 32 39 38 46 60 42 44 45 49 +47 45 47 51 50 45 42 42 39 45 54 54 +54 61 55 56 51 46 45 53 57 74 85 104 +123 141 147 150 151 147 147 147 143 147 148 144 +151 155 156 160 164 160 164 158 160 157 158 157 +161 160 162 155 161 160 155 158 154 155 153 155 +158 158 155 157 154 158 153 156 154 155 154 155 +154 158 154 151 153 152 153 153 153 155 154 151 +153 154 153 155 152 154 152 149 153 154 151 147 +99 99 100 96 96 96 99 99 98 102 100 96 +94 98 97 98 103 99 97 99 98 105 101 106 +115 110 119 124 132 136 140 144 148 156 157 163 +164 168 169 172 171 172 170 171 177 175 174 173 +172 171 173 173 170 171 167 160 158 154 150 139 +131 120 113 99 90 80 76 69 69 79 75 81 +79 82 84 93 90 97 97 94 94 103 94 92 +95 99 98 100 99 101 100 96 98 101 101 101 +95 95 104 99 101 96 97 102 101 100 98 96 +101 93 95 89 90 86 86 77 81 81 127 214 +221 204 195 205 210 197 187 178 200 197 181 161 +177 185 164 137 151 157 153 128 134 165 158 147 +141 155 144 135 121 119 111 115 124 120 116 114 +111 115 122 122 128 135 130 105 107 108 123 120 +116 126 137 142 143 142 135 139 137 136 135 131 +141 138 143 118 112 117 125 120 134 126 130 131 +132 133 135 138 138 138 134 127 127 125 140 146 +138 141 148 147 148 147 144 147 140 122 113 126 +142 147 138 141 141 131 120 113 112 110 106 108 +103 92 93 88 85 89 90 98 75 58 69 125 +144 157 166 171 164 159 163 161 142 114 129 130 +140 133 134 139 133 127 132 115 104 83 69 65 +69 81 92 111 103 98 114 103 86 96 97 95 +87 88 51 49 56 65 69 50 52 83 94 70 +42 33 44 89 146 149 155 176 186 198 189 168 +154 157 161 155 160 180 181 189 197 191 192 192 +196 196 197 199 197 193 190 194 194 193 198 197 +194 197 195 195 193 194 195 190 192 192 192 193 +193 196 197 197 197 200 201 200 200 198 201 199 +199 202 202 200 198 200 201 202 205 206 206 204 +199 201 204 201 206 205 203 204 205 204 206 208 +212 212 206 193 172 162 158 147 130 104 88 89 +79 76 84 91 99 86 92 94 93 102 120 133 +158 178 192 203 212 217 218 202 104 40 44 42 +36 36 41 46 47 47 47 52 45 45 46 54 +45 41 41 42 41 43 51 51 54 51 47 52 +45 48 48 49 54 69 100 118 134 150 150 154 +154 149 148 141 143 145 148 151 161 157 162 158 +160 165 159 159 161 160 157 159 157 161 158 156 +159 160 159 159 159 155 154 155 158 154 155 155 +157 158 154 154 156 154 155 155 157 156 156 152 +154 152 155 151 155 155 155 153 155 150 153 154 +154 154 152 152 156 157 154 151 +98 98 99 98 +102 96 97 96 97 95 101 108 92 98 100 106 +107 102 101 105 103 104 104 105 114 116 125 126 +136 138 139 146 153 154 154 159 165 166 172 170 +176 172 170 174 172 176 175 169 174 170 171 171 +172 167 163 165 162 150 146 139 132 115 109 98 +86 83 75 71 73 73 79 77 83 85 86 91 +98 92 90 92 94 93 96 98 99 94 106 101 +103 106 99 95 94 101 105 107 98 98 101 98 +98 99 96 98 101 96 98 99 103 99 97 94 +88 88 86 81 82 84 124 220 214 193 210 214 +202 182 191 201 203 188 175 182 181 179 148 157 +164 147 130 119 153 162 143 137 161 177 149 128 +110 109 112 103 106 126 123 116 115 113 120 132 +133 130 113 94 102 115 126 123 127 136 143 139 +137 144 135 132 137 133 136 133 139 135 134 108 +114 123 131 130 130 127 127 133 138 132 133 134 +128 134 129 122 127 138 145 144 137 138 145 147 +153 149 138 134 118 115 139 144 147 148 143 138 +136 126 113 102 100 101 102 107 98 82 73 69 +61 59 63 72 67 50 63 121 148 142 147 163 +166 168 162 150 131 119 137 134 124 133 132 122 +123 116 110 97 95 91 83 81 87 116 96 79 +69 71 82 82 81 88 67 71 67 80 59 47 +44 54 55 52 40 45 64 50 38 36 43 71 +122 162 180 199 195 179 162 151 156 159 159 160 +184 195 193 202 201 197 198 195 196 197 198 198 +193 190 190 191 195 191 200 197 193 198 193 191 +192 194 193 192 193 190 192 194 196 196 196 194 +199 199 201 198 197 197 200 202 199 199 202 198 +197 202 200 205 205 205 205 204 203 205 206 201 +204 204 205 202 206 206 207 209 209 199 179 169 +157 142 128 113 97 83 80 86 82 84 87 88 +92 87 95 100 101 109 130 154 178 186 200 211 +213 215 206 151 49 38 36 32 38 37 36 50 +51 48 46 51 53 41 45 55 43 40 41 41 +40 45 46 53 55 55 54 48 46 44 46 52 +78 87 104 126 142 146 151 154 146 144 145 143 +143 145 149 153 156 161 162 161 161 160 157 161 +165 165 157 157 161 160 158 158 156 161 159 156 +155 156 156 156 155 157 157 155 156 156 156 158 +155 158 155 155 154 154 154 152 153 156 154 153 +155 153 153 154 156 153 154 153 156 153 154 153 +154 154 152 152 +97 97 103 99 100 99 102 97 +96 95 100 102 98 96 95 98 101 96 104 102 +103 105 109 112 112 119 123 125 130 138 141 151 +152 156 160 162 166 168 173 170 174 173 171 170 +170 176 172 174 174 174 177 175 172 171 165 160 +159 151 145 142 133 124 110 103 97 84 74 78 +70 68 76 78 84 83 83 90 95 90 101 94 +95 93 90 99 95 96 102 99 101 99 99 94 +96 100 96 101 95 97 97 98 99 102 96 100 +97 98 102 100 96 97 92 93 91 96 85 79 +80 79 126 215 212 207 215 205 185 194 205 205 +186 183 188 196 182 165 176 167 143 121 131 136 +135 139 126 154 166 167 129 116 115 101 108 114 +111 120 129 126 120 119 126 131 126 109 89 107 +111 119 113 120 133 139 139 140 141 132 134 139 +135 138 140 138 133 120 111 116 121 126 130 134 +129 126 135 133 135 137 131 127 128 130 123 127 +140 146 155 148 137 133 140 144 148 147 132 108 +91 120 141 149 153 143 137 127 122 106 92 89 +102 107 98 109 88 79 79 83 79 73 69 58 +62 72 71 121 145 139 153 155 154 150 145 137 +140 134 140 124 112 101 86 82 97 100 83 64 +60 80 81 94 115 109 82 63 65 76 65 61 +63 61 70 54 57 69 52 43 42 50 46 46 +47 43 39 38 39 43 41 72 141 184 201 199 +175 148 147 146 157 166 176 184 187 193 199 202 +205 199 196 193 199 199 196 194 195 190 192 190 +193 194 197 196 195 198 192 191 191 192 193 189 +189 192 192 197 196 197 195 198 199 201 199 200 +202 202 201 198 199 201 201 199 200 199 203 206 +205 204 202 201 203 207 205 205 207 205 206 203 +205 209 205 198 177 159 147 143 128 108 93 91 +87 83 80 87 84 87 86 89 94 88 97 109 +114 128 146 174 191 194 203 211 214 215 185 80 +39 40 41 36 45 41 48 46 49 54 46 51 +48 43 49 54 41 44 48 49 47 46 56 52 +62 50 49 42 41 44 51 49 76 98 117 134 +150 149 152 150 147 147 145 142 140 145 154 158 +158 161 160 161 159 158 160 156 159 159 158 159 +158 158 159 158 163 160 155 155 157 156 154 153 +157 156 156 157 158 157 154 155 153 154 155 155 +153 154 157 154 156 155 153 156 154 150 152 153 +156 155 152 155 156 153 153 153 155 152 154 152 +101 101 102 99 99 99 101 100 101 98 101 96 +95 103 96 100 100 97 105 104 108 103 105 105 +106 120 119 124 132 141 141 147 154 154 158 161 +166 172 172 172 173 173 173 173 172 179 174 174 +173 173 172 176 168 170 167 162 158 151 147 138 +132 124 111 102 91 82 73 75 69 75 78 80 +84 80 82 92 97 93 91 94 100 98 94 95 +98 97 96 101 99 99 103 96 95 102 103 100 +96 95 99 91 100 95 98 98 98 102 98 97 +99 95 93 97 94 93 90 85 82 75 111 195 +219 218 209 191 189 205 205 184 176 202 201 191 +169 169 171 160 128 122 141 133 123 112 147 168 +152 132 118 105 109 105 106 110 116 113 126 129 +118 126 131 119 111 92 95 116 122 120 119 133 +142 142 136 132 137 133 129 137 136 137 145 139 +118 113 126 127 129 124 134 126 129 133 136 136 +132 142 133 122 127 122 124 137 139 142 148 148 +140 134 135 136 139 135 117 100 119 127 134 146 +151 140 128 114 104 92 97 99 103 110 101 97 +88 86 94 104 107 97 84 71 87 89 95 125 +129 123 149 152 142 131 134 138 135 133 126 111 +77 69 62 73 67 71 68 62 57 77 98 121 +128 100 54 58 65 89 64 64 55 50 52 49 +54 54 44 40 46 46 42 43 46 39 38 36 +35 43 82 119 173 195 191 174 149 144 153 157 +170 189 193 193 194 198 198 199 200 195 194 194 +201 196 194 191 193 194 192 194 196 197 197 197 +195 193 193 192 192 188 191 186 192 196 195 194 +193 196 199 198 199 199 200 200 200 199 202 199 +198 198 201 199 198 199 205 204 209 205 207 202 +206 208 205 208 206 204 208 203 203 199 172 149 +135 126 108 101 93 90 90 90 88 85 86 88 +87 90 93 88 94 89 99 117 135 154 171 186 +190 195 206 215 217 208 130 43 44 40 43 38 +41 45 49 42 47 49 49 49 49 44 44 50 +38 44 53 59 54 51 52 52 56 45 44 44 +42 39 48 54 76 110 125 141 148 149 146 147 +144 142 142 139 146 149 156 162 161 158 159 159 +161 160 160 161 159 160 158 159 159 160 156 161 +159 157 156 159 161 157 155 159 156 155 155 156 +157 157 151 151 153 152 154 155 154 158 156 154 +157 156 155 154 155 152 153 152 153 152 150 155 +157 155 151 153 154 152 154 152 +99 99 94 97 +97 107 103 103 101 100 98 96 98 98 95 98 +102 98 101 104 107 108 109 113 110 117 116 125 +132 143 146 147 153 155 158 161 166 171 172 173 +170 170 172 169 172 173 170 172 173 174 171 172 +169 170 165 165 157 149 150 141 133 122 115 102 +84 82 80 78 65 75 75 81 84 80 84 95 +97 94 92 96 95 95 100 95 100 97 95 107 +104 96 98 93 96 103 102 105 98 96 97 98 +100 99 96 97 101 100 98 100 100 95 100 98 +95 94 88 85 82 77 99 175 222 214 195 195 +209 203 190 183 204 217 197 176 186 173 163 143 +150 143 139 122 108 129 152 146 138 123 118 106 +101 110 113 109 113 115 115 122 127 124 128 107 +91 97 105 119 119 119 129 147 141 141 137 130 +135 133 132 134 137 138 141 120 118 127 128 134 +128 129 132 130 125 135 136 139 135 136 133 127 +118 115 137 146 139 144 145 139 143 141 142 135 +120 105 101 123 134 139 137 137 137 136 126 112 +88 96 113 117 118 119 100 88 92 113 116 118 +121 109 101 96 104 94 103 133 126 104 112 117 +123 127 138 140 125 104 89 87 77 76 72 60 +50 54 59 71 81 107 128 124 101 62 59 59 +57 95 78 65 53 45 46 44 40 46 39 37 +42 45 52 43 41 39 44 48 55 94 137 168 +193 177 152 156 148 148 165 181 195 197 200 199 +201 201 200 197 196 194 195 194 197 195 195 191 +193 194 193 196 194 197 197 194 193 193 196 194 +190 187 193 192 193 197 193 196 195 198 198 199 +195 200 200 198 197 200 200 203 197 200 201 191 +194 201 208 207 204 203 205 203 205 205 207 205 +208 207 200 190 175 150 123 113 98 92 82 91 +84 92 96 90 92 82 90 88 82 90 96 98 +102 98 113 134 156 167 180 189 194 201 208 215 +211 166 68 38 101 38 45 37 45 45 48 56 +45 54 51 55 51 50 51 48 55 42 43 46 +46 55 57 55 49 47 46 47 36 39 46 63 +91 119 133 144 154 150 148 146 143 144 141 141 +148 151 154 157 159 163 165 161 161 161 157 164 +159 160 159 160 158 157 159 159 160 161 160 159 +158 158 157 159 154 156 153 157 158 155 152 153 +150 151 156 150 153 153 154 155 155 153 153 157 +156 152 152 152 153 152 154 154 152 153 158 154 +155 157 153 152 +98 98 98 103 99 104 101 104 +98 102 98 98 99 103 106 92 96 106 99 98 +107 110 107 112 109 114 120 126 130 145 143 146 +152 156 161 166 164 170 171 169 170 176 172 172 +174 170 174 173 171 170 171 177 172 169 166 160 +157 153 152 139 131 121 114 100 89 80 75 71 +67 74 79 81 84 83 86 90 90 96 102 90 +92 98 103 100 102 101 96 94 97 94 102 102 +96 99 99 97 97 96 101 97 103 101 102 95 +100 98 98 101 108 98 96 95 96 94 86 89 +84 81 93 160 223 206 202 212 205 192 184 205 +212 204 182 186 196 172 153 149 151 133 129 107 +131 142 140 128 135 120 118 117 115 110 112 112 +109 111 112 121 131 128 112 91 103 110 110 114 +117 127 135 140 135 133 141 134 136 131 137 129 +136 135 134 107 117 128 133 134 128 134 132 140 +126 128 131 134 139 134 130 129 120 127 139 139 +143 141 141 136 140 142 143 136 112 90 108 124 +139 145 143 142 130 124 115 105 106 116 128 136 +131 116 111 102 116 132 143 128 122 121 107 79 +74 70 86 99 105 92 88 94 115 137 139 117 +92 82 76 81 102 72 56 68 56 53 65 107 +119 131 95 67 57 61 61 56 68 89 86 71 +43 44 48 40 36 37 35 37 41 71 71 39 +37 50 99 93 109 145 183 189 177 151 133 141 +149 162 185 198 198 203 202 202 202 200 198 195 +197 195 192 189 194 196 191 189 193 192 192 192 +193 193 192 194 194 197 196 190 190 188 192 193 +193 192 194 196 193 196 197 197 198 199 197 197 +202 201 199 197 199 201 195 189 196 202 211 205 +204 203 205 205 209 208 208 204 201 185 148 130 +110 97 89 90 85 86 86 91 94 93 89 87 +93 84 88 91 86 98 101 110 112 118 141 158 +179 179 184 192 197 204 212 212 179 88 44 38 +49 45 47 37 41 44 50 48 53 53 44 57 +51 52 46 44 47 43 41 45 47 57 52 51 +46 43 43 54 37 45 55 75 93 124 139 145 +148 150 145 146 145 144 143 147 148 157 161 159 +168 163 158 160 159 160 161 163 156 162 156 159 +158 158 162 159 161 157 160 158 156 158 157 157 +160 158 156 160 159 156 155 152 153 151 153 152 +153 153 152 154 154 156 154 153 155 154 155 155 +156 154 156 150 152 152 157 154 154 155 153 154 +94 94 101 99 99 100 105 103 106 100 98 98 +96 99 95 98 101 104 100 101 103 107 111 110 +109 116 119 123 129 136 139 147 152 156 160 162 +172 170 166 170 175 173 172 170 172 169 173 176 +169 173 174 174 170 168 166 163 160 157 148 141 +134 125 118 99 84 79 70 71 73 75 80 80 +83 87 86 93 93 92 92 99 91 94 97 98 +98 95 95 97 91 99 98 97 99 103 101 105 +96 99 101 98 97 97 101 95 104 104 103 99 +98 100 97 95 91 98 89 86 81 77 88 134 +206 211 214 210 194 189 202 214 202 185 200 205 +189 157 166 160 136 116 117 111 120 123 116 123 +137 126 113 117 120 114 113 119 108 114 115 121 +130 126 105 95 112 120 114 114 122 136 137 139 +138 134 129 135 135 132 135 133 138 117 109 113 +122 129 130 132 133 132 134 139 132 131 127 129 +130 135 124 125 130 141 143 138 145 140 140 140 +139 138 129 116 96 116 120 124 133 140 139 133 +125 118 102 104 118 132 137 127 104 97 104 107 +126 141 142 119 119 115 85 64 83 82 73 100 +96 79 75 94 115 124 111 91 80 84 71 86 +85 48 48 69 65 71 108 134 108 66 48 59 +73 77 76 80 60 69 86 63 56 48 41 42 +48 38 32 35 38 41 36 34 37 73 131 135 +158 181 187 168 160 138 139 154 158 183 202 202 +202 206 206 205 200 198 197 197 197 195 193 190 +194 193 193 192 192 190 194 193 193 195 191 196 +195 195 195 191 193 192 192 192 190 196 198 195 +195 195 197 199 197 197 196 199 199 198 199 196 +200 201 192 196 194 207 208 207 205 204 207 209 +207 209 198 177 151 118 95 90 89 86 90 84 +83 89 88 88 92 101 86 92 93 95 93 92 +100 103 112 124 133 142 159 172 189 188 194 202 +202 202 199 158 87 45 36 41 43 40 38 43 +51 50 54 51 55 51 44 47 46 51 54 59 +53 46 42 52 50 61 56 55 48 46 42 37 +37 44 56 84 106 133 142 150 148 146 146 145 +141 145 143 147 153 159 163 163 164 162 160 159 +159 159 162 158 157 161 161 162 164 158 161 158 +163 160 156 157 152 161 158 157 159 157 155 157 +153 154 155 155 157 154 154 155 154 156 150 153 +157 155 153 156 151 154 155 155 156 152 153 155 +148 151 146 150 151 152 151 154 +98 98 98 99 +101 102 105 110 107 102 100 98 97 97 96 94 +97 102 109 106 105 104 103 110 108 115 122 122 +129 135 141 147 149 153 161 164 167 173 171 172 +170 169 172 171 175 172 171 174 174 170 173 173 +172 173 165 159 157 156 147 139 137 124 112 93 +93 79 82 75 72 77 85 83 84 80 92 90 +92 97 101 93 97 96 96 99 99 97 96 101 +96 100 96 101 104 99 97 100 99 95 97 100 +100 101 99 99 104 98 96 95 100 97 94 90 +98 94 91 83 81 81 77 107 195 222 212 201 +198 205 213 201 187 196 208 203 179 174 176 166 +127 116 125 111 108 103 122 133 134 140 129 114 +115 119 112 123 112 108 124 119 119 111 102 106 +112 120 117 119 137 142 138 136 133 138 136 133 +132 138 135 137 135 109 107 120 122 126 128 126 +134 136 135 140 136 135 127 126 123 125 125 127 +136 141 143 138 134 136 135 137 142 138 113 99 +109 128 131 130 131 136 130 123 124 106 102 115 +127 135 123 103 106 108 108 109 128 134 117 91 +99 84 67 68 77 90 78 80 79 67 83 111 +114 112 95 98 107 101 73 79 69 59 76 86 +85 107 119 84 61 63 73 95 93 78 75 67 +72 74 95 50 54 72 43 41 38 37 36 36 +31 33 33 36 45 85 150 176 193 180 158 141 +145 138 151 161 184 190 198 200 194 203 202 199 +197 195 195 197 196 192 194 194 193 193 194 192 +193 193 190 192 193 198 200 196 194 191 190 195 +194 193 192 190 196 197 192 192 192 196 198 199 +194 195 195 196 199 198 199 199 205 203 201 199 +201 209 211 205 206 210 206 209 201 172 125 106 +97 90 85 88 87 84 89 88 86 87 87 96 +97 93 87 92 92 95 97 97 99 115 129 142 +153 161 174 180 198 196 199 207 195 150 99 63 +48 36 40 38 41 38 41 49 47 51 55 46 +51 49 48 52 50 55 43 50 53 51 50 56 +49 60 58 52 46 40 41 37 41 46 63 98 +118 137 151 152 151 146 146 147 144 143 151 147 +158 159 162 164 164 161 160 163 165 160 161 159 +158 160 160 163 162 158 160 158 162 161 160 158 +157 157 157 158 160 155 156 154 153 156 154 157 +156 159 155 156 154 155 155 153 154 154 156 156 +155 153 156 155 152 153 156 153 156 154 152 148 +151 153 154 154 +101 101 102 102 103 101 99 99 +102 95 101 100 102 96 97 93 96 99 106 105 +111 108 111 107 115 117 121 127 133 136 139 149 +152 157 161 161 168 171 170 173 169 171 167 170 +171 172 172 173 174 171 173 172 173 167 167 166 +161 153 149 140 132 122 108 96 90 80 79 72 +68 75 83 76 84 87 91 92 94 96 97 101 +95 95 95 98 101 99 103 97 98 103 96 95 +99 101 101 100 106 96 96 97 102 100 98 101 +101 97 95 96 95 100 96 96 92 91 90 85 +80 78 82 105 203 223 202 202 208 213 203 187 +195 207 201 182 189 185 173 151 136 127 121 113 +106 117 156 145 132 140 148 126 114 120 120 136 +121 115 118 116 106 95 105 115 118 114 126 132 +134 141 142 137 131 138 136 136 127 139 133 114 +108 123 120 125 125 123 133 136 131 139 135 133 +135 137 136 130 117 115 125 133 134 142 142 143 +136 138 135 137 138 133 107 103 127 130 136 136 +133 127 128 112 108 95 113 127 130 122 117 124 +128 121 110 101 100 83 73 65 77 65 60 52 +57 54 65 64 69 69 82 98 112 102 90 120 +128 88 97 97 93 93 99 105 127 110 62 65 +83 91 101 81 57 54 51 45 79 93 100 47 +46 47 53 46 37 40 27 32 31 31 38 49 +94 131 179 195 180 148 131 134 129 153 177 189 +186 179 197 194 194 201 196 195 194 195 198 196 +197 192 194 194 192 192 195 194 193 190 190 195 +195 196 195 191 191 195 195 196 191 190 190 191 +191 191 191 191 196 194 195 198 194 196 194 198 +199 202 205 204 204 203 201 203 207 204 210 210 +207 208 205 186 142 99 92 87 92 93 82 88 +89 88 84 87 83 84 86 91 92 96 92 92 +96 104 105 112 113 133 151 162 167 177 185 193 +199 196 202 192 127 60 48 48 45 40 40 38 +48 38 45 50 48 50 51 50 48 50 46 43 +47 42 45 45 55 46 50 51 59 53 57 48 +51 43 42 41 40 50 85 114 134 138 147 151 +148 146 143 143 143 141 151 154 157 158 162 162 +167 164 161 162 162 160 160 159 157 163 162 162 +159 157 163 157 155 159 160 156 159 154 157 159 +156 154 154 157 157 157 158 154 157 156 157 156 +157 156 155 149 151 151 154 155 155 156 152 157 +156 150 153 151 154 150 157 154 153 153 150 153 +97 97 99 99 109 102 100 103 104 101 103 100 +101 91 100 93 96 100 99 111 100 108 105 110 +110 115 121 129 134 136 138 150 152 157 159 161 +167 171 173 173 173 170 171 171 172 167 169 174 +173 171 173 171 170 168 166 166 159 154 147 138 +131 123 111 102 91 79 77 73 70 78 80 82 +83 84 90 98 91 95 93 96 93 93 97 94 +98 96 94 101 95 104 94 97 100 102 97 102 +105 96 98 100 106 103 94 103 100 102 94 100 +97 95 95 98 96 89 93 88 81 82 78 95 +184 216 205 214 214 204 192 200 210 204 186 198 +195 174 151 153 152 132 120 105 104 127 162 155 +135 134 149 152 123 110 123 130 130 112 110 102 +92 100 110 118 115 117 129 133 132 136 145 139 +138 136 138 135 129 137 124 112 115 124 125 127 +127 128 129 133 133 134 136 133 131 135 127 130 +124 122 129 133 138 134 140 136 141 136 131 134 +122 98 109 125 133 131 135 133 135 132 123 114 +104 106 126 136 135 123 117 119 119 100 82 78 +59 70 58 60 55 61 57 55 57 56 60 65 +69 73 95 105 99 92 124 140 98 90 116 112 +104 102 127 144 108 71 91 110 135 111 55 47 +53 60 44 43 56 100 118 58 47 41 45 37 +55 43 30 31 32 37 60 105 145 175 192 176 +147 114 115 130 152 186 195 195 187 183 191 188 +190 191 190 193 193 194 198 197 195 193 188 190 +192 193 192 189 187 186 193 192 190 189 188 194 +194 195 196 193 192 192 193 190 190 192 192 194 +193 195 197 195 195 197 198 202 202 201 204 203 +202 201 199 201 207 206 210 205 204 200 172 116 +101 92 86 90 90 99 89 89 93 90 89 87 +86 86 89 100 96 100 100 114 106 108 120 129 +143 153 167 175 181 191 197 203 198 203 196 127 +55 40 43 41 38 40 43 42 47 49 47 52 +55 52 48 49 50 45 43 42 48 54 42 42 +55 56 51 55 55 60 54 56 48 44 43 47 +51 67 90 113 132 141 148 152 150 146 142 140 +139 146 150 155 155 161 162 164 163 160 163 159 +162 163 160 160 158 156 159 161 164 155 159 163 +161 158 163 159 157 160 157 160 156 156 159 158 +153 156 159 154 156 158 154 156 154 153 154 154 +155 155 155 155 151 153 152 151 154 155 152 155 +154 152 154 157 155 152 152 155 +103 103 101 104 +97 102 105 104 102 101 98 102 98 95 95 93 +96 101 101 107 104 105 106 108 115 115 117 131 +134 136 141 145 149 157 157 164 167 170 169 172 +172 173 170 172 170 174 176 174 172 172 170 172 +165 168 167 162 161 155 146 138 132 125 106 96 +93 78 73 75 74 76 82 81 75 82 87 94 +91 100 91 97 93 96 99 101 103 102 95 98 +100 98 97 94 103 99 102 103 96 99 95 95 +94 102 98 99 96 97 99 94 99 95 94 93 +92 91 94 86 83 78 78 85 154 213 219 211 +200 193 205 212 203 184 199 218 195 162 165 153 +148 128 119 107 117 142 160 162 151 133 133 159 +136 112 124 127 124 112 113 106 93 110 123 112 +125 126 134 137 139 127 135 140 137 134 134 137 +136 118 112 122 125 127 122 129 126 132 127 134 +133 132 134 129 124 127 124 121 123 134 141 139 +140 143 137 137 140 133 117 115 109 97 111 131 +130 135 134 132 132 131 122 107 100 116 130 118 +116 109 97 104 97 82 67 58 58 64 55 49 +59 57 55 59 55 57 56 57 73 92 109 102 +91 123 145 104 79 106 110 87 76 101 121 102 +69 91 117 128 123 61 54 56 79 68 59 63 +73 102 125 54 38 31 33 31 35 41 35 43 +48 62 118 159 185 182 162 137 115 106 126 155 +184 196 198 196 194 187 187 183 182 185 185 192 +191 195 195 194 195 191 192 193 190 194 191 191 +189 189 191 186 190 189 191 197 191 189 192 186 +191 190 189 190 192 193 193 193 191 195 194 195 +196 195 199 199 196 196 201 201 198 199 200 203 +206 203 204 202 192 160 127 96 91 93 90 94 +94 97 93 91 89 91 89 85 82 93 89 92 +100 106 116 123 130 137 143 150 159 170 176 182 +193 198 200 198 204 207 157 51 38 42 43 41 +42 45 50 43 45 45 47 51 50 54 47 52 +43 44 47 48 49 49 38 43 45 45 51 50 +55 58 55 54 47 46 45 50 55 80 106 128 +141 151 150 148 148 150 144 141 144 152 154 159 +163 164 165 162 162 164 163 162 159 163 162 159 +156 157 160 157 159 162 161 157 161 156 156 161 +156 160 162 159 157 156 157 158 155 156 158 156 +153 155 156 153 154 154 156 150 156 151 153 154 +153 153 151 155 154 153 151 155 153 152 154 155 +153 151 151 155 +104 104 105 106 105 102 107 103 +105 103 100 98 97 99 99 98 98 99 98 108 +104 106 109 109 110 116 118 127 133 132 142 147 +149 151 157 164 166 168 170 169 172 169 170 167 +171 172 174 175 168 173 170 172 173 169 163 164 +157 155 148 140 135 126 110 96 91 84 80 73 +75 79 75 76 84 83 85 91 93 96 91 94 +91 90 98 99 101 100 97 98 98 96 100 99 +98 99 97 109 98 95 97 93 98 101 100 100 +97 99 97 92 94 94 95 90 98 99 96 92 +84 81 83 81 120 213 224 200 185 202 212 206 +190 194 212 210 184 172 166 156 130 119 130 123 +152 148 142 145 156 136 119 138 150 126 125 125 +114 105 101 102 104 109 120 115 128 133 131 132 +142 130 132 142 137 140 136 130 117 109 113 124 +126 129 122 124 129 139 131 129 131 133 131 131 +131 124 121 121 132 143 142 136 138 139 139 137 +132 129 118 98 99 124 124 132 130 139 143 128 +125 127 125 102 96 111 115 100 95 79 76 78 +76 69 71 78 78 70 64 49 52 55 63 62 +65 58 63 67 86 109 108 90 122 147 108 82 +100 96 80 54 75 107 101 90 67 118 137 117 +101 50 70 73 79 83 58 44 50 111 119 57 +36 33 35 32 34 35 44 71 86 117 168 194 +184 158 129 113 110 118 155 180 190 195 198 195 +192 185 189 186 185 188 182 185 189 193 194 192 +191 192 189 190 188 190 195 194 188 181 184 186 +190 195 192 194 186 189 194 191 186 189 192 193 +193 193 193 192 195 199 193 194 195 194 200 196 +198 197 201 197 196 197 201 203 201 196 185 163 +141 124 121 110 89 92 91 90 94 93 92 89 +90 92 88 87 91 91 90 103 117 119 130 138 +152 156 156 157 163 176 179 190 193 194 194 206 +210 180 84 42 36 41 41 49 46 41 43 44 +44 45 54 54 48 53 55 55 46 43 48 48 +47 42 46 48 49 50 48 58 65 56 57 59 +54 53 52 59 67 93 114 131 144 150 144 152 +149 146 142 143 144 155 156 164 163 167 164 166 +165 164 162 160 161 164 164 162 156 161 162 158 +161 158 160 160 164 157 156 162 157 156 156 157 +156 156 160 156 159 156 159 155 155 154 156 157 +156 157 153 157 156 157 154 153 155 156 154 155 +157 153 156 155 153 153 150 154 153 153 149 150 +107 107 105 101 102 104 101 101 102 102 97 100 +96 93 95 98 99 94 98 105 103 109 110 108 +105 113 119 126 131 135 147 146 150 151 158 158 +163 168 170 172 170 171 171 171 170 171 174 171 +172 170 172 173 171 166 168 161 159 155 146 140 +133 127 112 94 93 82 82 82 74 72 82 78 +84 84 93 89 93 94 90 95 96 101 92 96 +94 95 96 98 94 97 100 96 97 100 96 102 +102 100 91 95 97 96 97 106 98 105 94 99 +99 94 100 93 98 97 91 95 100 79 82 80 +113 205 219 196 198 210 205 190 195 206 205 193 +194 185 165 144 137 131 131 135 148 139 140 135 +152 154 122 133 147 144 128 121 103 94 96 114 +112 114 110 122 131 135 133 130 139 140 134 133 +132 130 138 124 111 113 125 128 127 131 118 125 +128 136 135 135 129 134 132 132 126 123 121 130 +140 144 141 132 135 134 142 138 133 125 109 86 +123 130 129 126 126 132 139 137 134 132 114 99 +101 97 95 72 60 62 59 75 93 79 76 78 +78 65 61 59 54 59 59 56 51 58 68 86 +106 128 98 93 128 114 82 89 87 62 57 53 +63 91 96 80 92 128 93 91 75 75 94 99 +96 78 48 37 45 120 122 39 36 34 32 29 +32 37 64 88 131 170 192 178 153 125 116 115 +124 154 181 187 192 198 196 189 186 179 176 179 +181 182 179 189 192 192 193 192 190 190 188 190 +190 192 192 188 180 181 188 187 191 190 188 190 +192 190 191 186 186 194 196 193 192 190 195 196 +196 195 196 196 196 197 198 196 201 197 199 195 +197 200 200 195 185 139 104 125 133 129 129 126 +98 96 96 93 101 96 86 88 87 86 91 93 +97 102 110 124 136 144 148 154 160 166 162 167 +174 178 181 187 189 192 199 208 185 99 45 42 +47 50 49 48 48 45 52 48 48 50 53 51 +52 49 51 52 46 45 44 41 41 41 45 50 +57 60 63 61 64 63 76 50 44 47 48 51 +74 105 122 137 144 149 151 148 147 147 139 139 +150 157 164 157 164 165 163 165 161 166 165 161 +161 161 161 161 156 165 164 162 157 162 159 159 +162 158 155 160 158 160 162 158 156 155 155 157 +157 158 158 155 155 154 155 159 155 156 156 156 +158 156 156 157 152 154 153 154 157 155 152 155 +154 157 153 152 156 155 150 151 +107 107 105 107 +106 111 101 100 101 102 97 94 102 97 101 95 +100 99 100 102 98 106 104 108 108 111 123 126 +128 133 144 144 150 152 156 163 166 167 171 168 +175 170 170 173 170 169 170 172 172 175 172 169 +171 169 164 163 158 152 147 140 132 122 110 99 +87 88 73 68 72 71 75 84 81 86 101 87 +92 93 97 96 97 94 94 99 98 93 99 98 +93 96 100 96 101 105 101 100 100 99 98 94 +95 102 100 106 100 96 94 95 97 101 101 98 +101 97 96 95 92 82 74 79 94 178 212 213 +214 203 191 190 206 205 186 193 204 186 150 146 +155 145 136 130 135 130 146 145 137 161 145 138 +133 142 132 119 97 94 102 114 116 110 118 131 +145 133 130 135 129 136 142 131 134 130 133 115 +113 122 127 126 128 126 126 124 127 130 133 141 +132 127 121 125 123 117 133 142 146 143 137 131 +137 133 131 133 126 124 105 70 130 143 132 134 +137 132 125 128 119 99 97 80 75 86 63 59 +59 72 71 99 97 82 83 90 69 51 54 47 +44 51 55 46 50 62 74 106 138 115 91 114 +122 92 100 76 54 46 50 59 51 71 88 102 +107 80 74 79 80 93 107 78 63 52 33 46 +46 116 105 35 34 35 30 30 33 41 93 136 +167 191 173 154 136 113 114 134 162 182 183 191 +192 194 188 185 181 177 179 178 180 178 185 187 +191 190 190 191 190 188 191 191 189 190 185 188 +185 186 189 191 191 186 188 193 191 190 189 187 +191 192 191 190 191 193 192 191 192 196 195 194 +194 197 197 200 200 200 202 201 200 192 185 159 +120 90 85 118 136 135 129 127 117 103 98 97 +98 96 85 93 89 94 103 114 117 123 136 149 +154 159 156 163 167 171 166 171 177 181 182 186 +194 199 206 170 94 51 38 40 43 47 45 52 +45 47 44 46 54 50 52 54 53 58 49 50 +49 41 42 49 41 42 42 43 45 51 49 51 +50 45 57 71 78 46 50 68 83 115 131 147 +152 149 151 151 145 144 142 142 153 155 163 161 +164 163 163 165 166 161 159 160 160 163 161 161 +158 160 159 161 158 160 159 158 159 160 158 159 +160 157 160 159 158 163 158 159 159 159 157 157 +155 155 153 158 155 158 155 152 156 154 154 153 +153 155 153 155 156 154 152 155 156 151 151 151 +151 148 147 152 +102 102 105 105 103 111 103 105 +104 106 98 93 100 100 101 101 102 100 97 102 +101 101 107 104 108 110 121 126 132 137 140 147 +153 151 158 162 166 165 172 170 173 172 170 171 +172 169 171 168 171 169 172 170 168 169 167 164 +162 155 150 142 132 124 112 99 93 85 84 71 +69 77 73 78 88 81 91 91 92 96 95 94 +99 90 95 99 96 95 97 98 97 101 95 99 +99 101 101 97 103 96 102 99 97 96 93 102 +96 99 99 98 98 98 95 99 99 99 94 88 +88 85 76 76 82 131 213 224 208 194 198 209 +202 181 183 209 196 167 173 165 163 143 122 120 +129 131 141 154 130 157 164 161 129 122 127 112 +95 108 117 113 114 107 123 133 135 136 131 137 +127 127 138 138 124 123 119 111 116 127 126 129 +123 125 130 123 129 135 132 136 132 125 121 118 +115 121 135 146 146 144 137 134 136 140 130 131 +132 129 102 76 123 136 140 136 134 134 118 103 +86 93 83 77 60 48 64 74 85 97 106 103 +91 69 62 54 59 51 49 51 53 53 52 44 +57 73 96 128 132 94 106 129 102 96 74 48 +46 40 51 46 47 89 113 118 65 56 77 90 +108 99 88 61 53 59 33 40 46 125 70 42 +40 30 29 35 50 90 139 177 186 157 140 126 +120 120 139 173 191 189 185 192 192 194 182 179 +177 175 182 177 178 187 189 187 189 191 187 189 +188 188 189 191 189 191 181 186 189 189 190 185 +188 188 189 190 190 189 189 195 193 192 191 195 +193 193 193 194 194 195 198 197 197 197 197 197 +200 204 201 196 188 158 110 104 102 98 93 115 +132 140 132 126 123 109 98 94 96 102 96 100 +109 118 133 141 143 147 159 165 164 163 162 165 +169 170 172 176 177 176 186 196 202 204 173 84 +48 46 39 39 41 49 45 49 44 55 46 51 +58 61 59 53 52 57 62 45 42 47 40 45 +47 44 43 44 52 60 67 72 59 50 58 57 +49 59 60 82 103 129 137 149 149 150 146 148 +150 141 146 148 152 160 163 165 166 167 163 160 +163 161 163 163 163 159 162 161 164 162 158 159 +163 162 162 160 161 158 160 159 159 160 159 159 +156 157 160 159 159 157 154 157 155 153 155 154 +155 157 153 154 151 153 153 156 156 155 153 154 +155 153 154 157 155 153 148 153 150 154 150 150 +106 106 106 104 106 108 106 102 103 101 103 101 +105 100 105 98 104 98 102 99 102 103 107 104 +111 113 118 125 129 144 142 146 150 152 157 158 +165 166 167 171 169 170 169 169 168 167 172 166 +169 168 170 170 172 166 164 161 156 154 150 141 +135 126 111 106 89 85 77 76 76 75 79 85 +83 83 84 90 85 94 90 96 96 93 92 97 +96 100 96 100 104 94 89 99 94 99 101 96 +105 96 94 94 104 98 97 97 106 101 97 98 +99 99 99 96 99 98 97 93 89 88 80 77 +77 112 200 223 202 204 208 204 185 184 204 208 +176 183 195 177 149 139 139 112 117 135 151 155 +136 131 153 165 142 115 108 96 90 111 118 119 +118 125 137 134 131 138 136 132 135 134 134 135 +116 96 110 119 122 128 127 131 119 129 125 128 +127 132 131 128 135 124 120 116 116 132 137 138 +134 141 137 137 137 139 131 136 134 130 106 87 +133 133 136 137 125 111 98 89 81 81 59 53 +51 56 73 95 111 113 92 65 64 66 53 55 +53 56 43 46 55 58 49 40 57 99 124 140 +116 114 131 116 101 75 41 43 41 43 51 46 +66 119 131 84 57 61 81 105 122 93 58 42 +37 42 34 35 73 124 64 85 46 28 34 58 +103 141 175 188 161 137 125 123 133 149 171 196 +197 189 189 193 190 188 182 180 179 179 181 181 +187 187 187 187 184 191 188 185 186 190 187 190 +184 190 185 188 187 187 184 185 187 191 190 190 +191 192 186 189 188 190 191 193 194 194 195 196 +193 195 199 200 199 199 198 198 199 200 189 170 +131 88 74 97 107 110 98 119 129 140 143 132 +127 127 109 108 113 122 121 125 138 146 155 162 +160 166 168 166 164 161 165 163 162 167 170 176 +179 181 193 205 206 167 82 44 43 38 42 45 +44 43 47 46 45 45 55 46 56 53 49 49 +56 56 58 48 48 51 47 42 39 41 44 48 +51 57 59 66 74 56 53 48 54 50 57 88 +112 130 141 149 150 147 147 148 139 144 140 151 +158 161 166 165 166 162 164 167 164 162 164 166 +164 164 163 162 164 162 163 161 160 163 164 163 +158 161 159 157 158 163 159 160 154 154 155 160 +158 159 153 154 157 153 154 156 155 157 158 154 +153 156 157 152 155 155 155 158 154 155 154 157 +153 156 152 156 152 149 152 148 +109 109 105 101 +106 107 106 104 99 102 103 105 106 105 104 94 +101 97 104 96 98 104 103 106 112 113 121 126 +129 136 148 146 150 154 156 161 165 166 169 172 +168 168 168 174 171 171 173 167 174 171 172 170 +169 169 166 162 156 153 148 143 136 125 115 103 +88 85 77 71 75 74 76 79 82 84 82 89 +90 97 91 93 91 95 93 96 93 99 102 92 +96 99 90 102 98 101 96 96 96 100 101 97 +99 99 95 102 101 100 100 98 104 103 102 97 +102 97 98 93 92 90 86 79 76 98 168 216 +211 212 200 188 192 201 201 185 186 203 192 160 +148 168 161 131 112 129 153 153 152 121 133 143 +153 115 107 106 100 107 119 117 128 135 144 140 +129 134 140 135 134 139 131 127 117 109 110 125 +126 121 126 132 126 126 129 125 123 129 132 134 +125 119 124 122 126 140 139 135 132 130 136 140 +136 137 135 143 139 131 111 74 123 141 133 125 +99 97 92 79 67 55 56 53 57 75 111 114 +97 76 50 49 48 48 55 52 53 55 48 45 +55 60 49 45 77 116 117 123 115 121 100 94 +81 45 48 57 42 38 44 64 113 141 91 63 +70 89 94 102 95 76 44 42 34 39 35 42 +95 122 93 103 43 39 66 114 145 174 178 153 +134 123 128 137 159 174 192 202 196 192 192 192 +187 181 179 184 180 178 180 182 188 186 186 188 +185 187 182 190 185 188 184 186 187 186 185 183 +178 185 185 187 187 188 190 191 192 193 188 190 +192 192 190 190 194 193 192 195 193 194 194 199 +201 199 197 194 192 182 142 106 81 71 78 101 +109 109 103 117 131 140 144 138 134 142 142 131 +139 146 145 152 159 161 162 168 165 166 168 166 +171 174 167 165 163 168 173 180 181 192 202 204 +175 85 42 42 39 44 47 39 40 52 45 49 +50 52 65 57 52 55 55 48 53 55 50 46 +45 54 47 48 40 42 41 43 51 63 58 53 +53 50 48 53 50 48 66 102 123 133 146 147 +149 145 146 149 141 138 142 153 159 162 164 165 +165 158 164 164 165 159 165 162 167 163 163 166 +162 164 158 164 163 163 162 159 160 161 163 157 +159 158 157 155 156 156 165 155 157 158 153 157 +155 153 155 153 153 158 155 149 156 154 156 153 +154 156 156 155 156 158 153 156 154 154 150 150 +153 151 150 151 +109 109 105 100 99 104 101 100 +108 104 104 104 104 101 100 94 99 101 100 98 +101 107 101 104 112 113 118 127 127 141 140 143 +149 154 155 161 167 163 168 169 170 167 167 173 +169 170 172 171 168 169 171 172 171 167 165 167 +157 156 147 146 131 122 108 100 92 84 77 70 +74 72 75 79 83 83 82 85 88 93 92 96 +99 100 97 97 96 97 105 96 97 102 101 97 +98 98 97 96 96 96 100 98 100 97 95 96 +95 96 95 99 97 100 99 99 101 103 99 98 +92 90 84 83 78 80 129 210 220 207 189 198 +205 204 181 185 205 203 179 157 177 164 152 157 +134 123 133 144 163 131 120 134 143 121 105 111 +106 115 115 122 133 138 136 139 134 134 136 133 +133 128 126 113 98 107 121 122 129 119 128 136 +130 129 135 131 117 116 126 134 125 114 120 129 +144 143 139 141 133 129 133 136 135 137 143 147 +148 131 115 81 116 140 132 111 89 83 70 60 +55 52 56 70 101 109 111 82 55 51 47 46 +45 43 49 58 60 54 42 49 50 53 43 45 +92 119 127 107 122 107 85 76 46 48 48 56 +47 43 65 111 135 105 81 61 75 86 87 92 +79 48 34 32 48 47 36 38 108 107 65 107 +50 72 121 159 176 177 152 135 119 117 130 156 +180 191 199 198 195 191 192 185 186 185 180 183 +180 176 179 181 182 185 185 184 181 182 182 187 +184 179 186 187 188 184 180 182 185 184 188 189 +186 185 191 190 191 188 192 189 191 188 189 195 +195 193 196 197 196 199 198 200 201 197 192 176 +141 84 67 104 94 81 77 91 112 108 107 107 +121 138 140 142 145 152 160 156 160 160 158 165 +167 168 163 166 166 169 164 165 173 174 168 167 +169 173 180 183 194 205 211 181 96 47 38 38 +39 45 37 43 46 50 50 50 59 54 55 66 +54 54 60 52 49 51 48 43 49 52 47 49 +55 45 50 51 55 60 49 45 45 39 43 52 +53 52 89 108 124 140 151 148 149 147 149 145 +138 141 144 153 165 162 164 164 164 163 165 166 +167 166 163 162 167 165 166 163 162 159 159 162 +159 161 162 157 162 159 157 161 158 160 159 164 +156 156 162 155 159 157 156 157 155 152 156 151 +157 155 154 152 151 155 153 156 156 157 156 156 +155 155 151 150 152 157 150 151 151 152 150 147 +108 108 108 103 99 112 103 101 107 101 96 103 +103 102 103 95 99 100 96 102 100 100 103 106 +112 113 112 122 127 132 144 146 152 156 153 164 +165 169 167 172 172 172 172 171 166 173 171 174 +170 169 170 171 173 170 165 162 160 153 147 139 +135 128 114 105 89 87 78 71 73 75 74 83 +81 84 88 91 94 95 90 95 94 95 96 97 +96 92 99 99 105 94 99 102 98 100 101 100 +103 100 93 100 100 97 93 100 93 93 94 95 +95 101 101 101 99 104 97 99 97 89 81 79 +78 85 108 203 222 199 201 210 200 182 183 205 +205 186 186 190 190 163 150 165 166 135 121 145 +168 150 119 126 120 106 102 113 118 113 113 125 +136 137 132 135 138 138 126 130 128 115 102 96 +113 115 130 122 130 126 122 132 132 129 131 130 +127 121 117 121 119 118 103 108 132 135 128 130 +130 135 131 134 135 140 143 147 143 133 120 95 +107 138 121 86 67 58 58 61 56 61 74 103 +110 81 57 58 47 49 49 46 50 43 54 62 +46 42 44 47 48 48 47 60 99 127 126 83 +95 100 92 51 51 51 55 54 55 66 106 150 +120 89 71 61 77 97 95 70 46 36 33 42 +48 42 34 48 129 84 43 72 89 125 155 182 +178 139 128 124 122 129 162 182 192 196 197 197 +195 188 183 183 188 184 179 177 177 180 182 183 +185 190 183 181 183 186 183 179 177 179 187 185 +185 177 184 184 188 189 183 186 188 189 190 188 +189 191 191 189 192 193 192 195 192 193 196 198 +200 198 201 201 199 185 153 95 54 52 67 92 +104 100 89 87 98 109 101 93 112 134 131 146 +151 159 165 164 161 164 162 162 165 167 166 166 +163 165 166 164 165 173 171 167 176 181 186 196 +206 210 192 114 51 35 38 40 36 43 45 47 +48 45 53 55 53 60 54 56 49 52 50 44 +48 55 48 43 48 55 42 49 52 48 53 46 +52 58 53 45 41 41 46 48 48 68 99 118 +136 146 149 147 144 144 147 143 139 145 150 158 +163 166 169 164 161 162 163 165 165 163 167 168 +167 163 161 163 161 162 160 162 162 163 159 161 +162 162 160 158 158 157 163 157 159 159 159 156 +157 155 157 155 162 155 154 152 156 156 158 156 +152 154 155 156 156 151 157 154 153 155 157 154 +156 155 152 152 151 151 154 149 +110 110 105 107 +105 104 103 101 103 101 106 105 105 101 97 99 +101 104 101 108 104 100 105 105 108 109 115 124 +125 133 141 146 151 152 157 165 163 164 172 171 +171 171 172 169 167 174 169 171 169 172 170 171 +173 168 166 162 157 151 144 138 135 124 110 101 +89 81 78 68 70 78 75 86 86 88 86 91 +94 94 97 98 96 90 96 94 95 98 98 101 +98 100 98 100 98 102 100 98 102 100 97 101 +93 98 96 97 95 100 99 93 96 98 100 104 +99 104 98 104 96 88 85 82 80 80 97 187 +219 208 208 203 185 187 204 208 189 184 197 201 +189 163 155 155 174 166 135 147 166 166 131 116 +100 94 104 113 122 124 124 131 135 138 133 133 +137 145 135 122 117 103 98 98 118 116 125 127 +125 129 124 126 126 130 131 129 125 126 121 113 +110 116 128 121 125 115 97 88 90 106 120 128 +137 137 142 152 141 137 113 87 85 114 95 68 +63 65 57 61 56 83 103 102 80 51 50 56 +50 42 40 45 53 58 67 53 43 36 37 51 +55 46 50 98 116 143 100 63 80 86 66 45 +43 44 50 58 70 109 134 130 103 90 73 77 +89 105 64 36 38 35 48 74 43 32 45 51 +137 71 48 99 129 156 177 172 147 121 115 133 +139 159 184 190 194 198 199 197 190 181 183 180 +184 179 176 176 181 184 182 185 184 183 183 183 +181 179 179 174 179 180 179 181 177 179 187 184 +184 183 183 189 188 188 190 191 194 191 190 188 +190 193 193 196 193 196 196 198 199 199 198 192 +159 92 92 67 46 47 59 105 121 116 112 96 +96 119 107 96 104 138 137 139 153 164 163 167 +159 165 167 165 166 168 167 167 165 166 170 165 +172 175 178 172 188 193 199 206 209 188 118 56 +46 40 42 44 37 42 39 44 44 51 49 51 +54 49 55 61 55 45 50 54 60 55 50 45 +47 45 44 48 53 48 50 50 53 52 49 49 +38 46 62 48 50 79 103 127 140 150 150 148 +145 145 147 141 144 150 157 160 164 165 164 163 +164 165 162 165 164 162 163 166 166 164 165 160 +162 163 160 163 163 162 157 165 161 160 162 154 +162 155 157 158 154 158 161 157 159 156 156 159 +158 156 156 156 160 154 155 153 153 157 155 157 +154 155 151 155 155 151 152 152 156 153 155 151 +151 153 153 147 +107 107 107 110 106 105 104 103 +105 102 108 99 105 107 95 101 100 97 97 103 +101 101 106 108 106 116 114 126 130 133 141 146 +147 154 158 162 167 167 171 175 170 173 172 168 +166 172 171 170 170 175 172 170 170 171 169 164 +158 152 147 141 136 126 114 109 91 89 84 69 +69 77 76 82 87 86 88 89 95 86 91 95 +93 96 100 92 91 94 94 100 100 100 97 101 +100 103 100 97 102 97 100 98 98 102 99 103 +100 96 97 94 103 102 100 97 99 100 100 100 +94 92 94 83 84 83 90 172 220 221 208 188 +197 207 211 190 179 205 206 197 169 165 169 158 +164 180 156 133 151 170 147 104 92 102 108 121 +125 132 132 136 141 135 136 133 132 138 139 128 +105 95 99 113 119 125 120 125 122 132 135 119 +120 121 122 128 128 124 119 119 118 128 141 140 +133 125 117 111 97 90 78 83 116 128 138 139 +138 127 111 90 85 88 62 52 70 82 66 63 +82 98 85 68 56 53 64 66 49 45 45 45 +60 68 70 49 42 35 43 52 56 45 70 116 +125 121 77 51 76 73 49 49 48 46 56 74 +111 142 115 104 90 93 103 102 126 88 39 34 +36 48 97 82 31 25 30 70 141 76 95 140 +157 180 157 144 128 117 128 142 169 187 179 185 +195 199 199 193 188 180 182 183 178 173 177 182 +182 177 187 185 185 184 181 181 181 177 181 178 +182 178 175 178 180 183 180 181 185 180 183 188 +186 189 193 194 192 195 193 189 189 194 194 193 +194 199 196 193 193 192 179 121 64 55 80 97 +62 51 66 97 141 126 118 100 101 112 120 105 +97 129 149 144 147 164 166 166 162 165 165 166 +167 163 169 166 164 169 165 166 172 174 183 187 +192 198 204 209 186 112 46 41 36 38 39 38 +36 43 45 48 51 54 46 53 53 49 56 56 +61 55 55 59 54 56 49 42 45 42 45 45 +41 45 52 59 56 57 62 54 48 43 55 51 +56 88 112 131 147 152 146 146 146 142 146 142 +145 149 157 158 164 165 163 169 163 166 164 164 +162 162 164 168 165 163 166 161 159 164 163 162 +160 160 163 163 162 159 157 157 157 158 159 157 +158 157 157 159 160 158 159 156 157 155 157 156 +156 155 155 155 156 155 156 157 155 154 155 153 +155 153 153 151 154 151 150 153 154 153 150 150 +106 106 105 106 110 102 105 103 103 106 105 101 +105 100 98 103 99 104 102 104 97 101 102 106 +106 113 121 128 130 136 140 146 150 154 155 163 +161 168 167 173 172 171 172 170 171 173 170 171 +172 171 173 170 171 171 162 160 159 154 146 141 +133 124 114 104 90 90 75 70 72 81 74 82 +89 83 87 94 92 91 93 95 88 98 94 93 +100 93 101 96 94 103 95 97 95 101 97 94 +101 94 94 99 91 97 101 102 97 94 99 99 +102 100 101 101 101 98 99 105 98 92 89 91 +82 79 86 137 201 223 200 202 211 211 196 182 +200 209 194 176 155 164 178 177 158 176 174 144 +136 154 155 109 95 101 116 128 127 125 131 137 +139 133 137 135 133 135 130 120 101 112 119 118 +122 122 124 126 129 128 129 119 120 117 126 131 +125 124 119 115 123 138 142 142 136 141 142 132 +120 109 99 80 75 88 120 121 132 127 117 88 +85 64 58 60 63 79 86 85 82 76 64 65 +62 64 55 54 57 46 47 61 79 78 47 38 +35 36 39 45 54 71 102 107 115 92 59 58 +60 54 43 50 51 48 55 99 123 112 78 78 +91 122 118 112 92 50 34 38 41 95 118 73 +25 25 32 92 152 113 140 173 171 149 136 121 +121 124 141 169 187 193 181 191 196 197 198 190 +187 178 181 176 170 176 180 183 186 179 183 177 +186 186 177 181 182 178 179 179 177 180 180 177 +177 171 180 177 186 188 187 187 190 191 186 191 +188 187 186 192 193 194 194 193 194 194 192 192 +190 161 90 48 49 61 87 103 93 63 65 87 +134 142 128 115 102 116 121 119 100 118 138 141 +150 165 161 164 159 163 167 169 168 168 170 169 +170 168 175 172 183 183 187 192 195 206 207 193 +124 45 39 40 40 37 41 42 45 47 44 48 +48 49 47 55 56 47 49 56 55 49 52 53 +55 50 50 45 44 46 45 48 49 48 49 55 +50 48 52 44 50 45 53 51 74 101 119 136 +145 148 146 143 142 142 143 142 147 154 161 163 +168 160 164 166 165 168 165 165 164 160 161 170 +166 163 163 161 161 164 163 161 161 167 164 160 +165 164 160 158 160 159 158 159 161 159 159 161 +161 157 154 157 154 156 156 156 158 156 156 153 +153 154 154 156 156 153 156 151 156 152 153 153 +156 156 151 154 154 153 149 152 +107 107 106 109 +106 104 107 104 101 101 103 103 101 100 99 104 +97 104 97 106 103 98 101 103 107 109 115 123 +127 134 140 146 147 151 159 162 163 166 170 171 +170 169 167 176 171 174 171 172 171 172 168 170 +171 169 167 159 159 155 150 143 135 133 118 104 +89 87 76 71 73 74 73 80 89 87 90 94 +95 91 94 95 93 97 94 101 97 91 97 98 +97 97 97 97 100 101 104 94 94 93 95 92 +95 100 96 97 100 100 96 98 101 104 99 106 +108 106 102 102 97 100 93 90 87 82 85 103 +166 213 210 217 211 200 189 200 212 197 179 171 +159 160 174 185 171 157 167 162 130 131 127 103 +97 101 110 132 127 122 122 126 132 138 139 136 +127 129 123 106 109 122 130 127 125 123 132 125 +126 130 121 117 118 120 123 129 124 119 115 120 +137 141 139 135 137 139 137 129 126 129 123 107 +106 87 84 79 99 111 108 79 59 57 66 64 +66 69 75 86 73 68 78 61 57 58 59 59 +51 57 60 81 80 55 45 39 41 39 39 52 +52 94 99 77 108 69 43 47 58 55 68 57 +51 61 100 120 99 74 64 94 120 125 116 100 +67 42 42 43 85 131 117 33 30 28 47 120 +158 144 176 178 139 122 119 117 120 142 164 189 +200 196 192 194 193 197 196 192 187 183 181 177 +180 180 177 180 179 182 186 179 179 182 179 185 +183 181 175 177 177 180 181 177 167 171 177 182 +182 189 189 191 190 186 187 191 189 187 186 191 +193 192 195 195 194 189 191 187 151 68 45 34 +42 71 94 113 112 91 60 71 120 149 142 120 +104 106 119 125 100 106 127 138 153 157 157 160 +155 168 171 168 172 172 169 168 175 176 175 177 +187 187 194 195 199 205 188 130 59 38 36 43 +57 40 44 46 50 45 47 50 48 54 53 53 +52 59 53 54 52 48 49 55 51 52 52 46 +42 43 46 56 44 51 50 54 57 48 49 57 +50 58 52 60 87 105 133 134 146 145 147 146 +140 142 144 145 152 158 160 167 164 165 166 163 +164 167 166 165 162 165 163 168 168 166 164 163 +163 163 161 161 160 161 164 161 162 159 163 161 +162 161 158 160 159 157 156 158 155 155 154 153 +155 155 155 156 160 154 160 155 157 156 157 156 +154 157 154 155 152 153 154 149 153 157 153 152 +153 153 153 148 +102 102 104 103 102 106 104 107 +103 104 102 102 103 100 99 100 103 99 100 101 +99 99 107 98 101 108 113 117 127 127 140 143 +148 154 159 160 166 169 169 171 173 174 168 170 +171 169 170 167 170 170 170 174 172 170 170 163 +159 157 145 143 140 129 116 99 93 80 72 64 +74 66 79 80 83 83 93 85 91 87 93 90 +94 94 96 95 97 94 93 92 92 95 94 95 +101 104 104 99 95 94 97 95 94 92 99 94 +96 97 92 102 106 105 105 107 108 106 102 98 +102 99 96 93 96 88 89 88 118 186 223 217 +203 195 207 216 203 185 182 169 162 165 170 186 +187 160 157 171 127 104 98 89 96 115 125 134 +130 125 119 118 125 139 134 132 121 118 102 96 +122 124 129 125 127 121 134 130 116 119 122 112 +112 122 124 122 118 124 123 131 138 136 145 139 +138 137 134 130 111 105 103 94 114 110 90 79 +76 72 82 77 74 73 71 67 64 73 84 93 +82 79 76 63 63 63 56 49 49 61 92 99 +73 43 39 35 38 38 43 60 61 101 72 96 +114 61 45 53 59 53 57 60 53 77 129 97 +73 67 84 110 119 93 83 68 44 38 49 76 +125 133 81 30 31 39 70 143 159 176 174 137 +122 109 119 122 142 170 188 198 199 197 196 195 +189 193 191 191 190 182 179 181 178 176 180 181 +179 183 181 173 179 185 178 180 178 176 172 177 +173 180 176 174 173 176 176 182 181 189 193 187 +186 192 195 194 191 187 194 188 190 195 197 192 +192 185 169 128 88 54 47 45 45 56 94 107 +114 104 75 61 95 132 146 135 111 104 123 132 +116 111 127 138 147 153 147 151 153 169 166 172 +169 169 173 172 174 179 180 178 186 194 199 205 +191 153 97 56 44 37 38 40 41 41 41 47 +45 47 46 50 52 50 51 49 52 52 55 52 +50 58 52 62 55 44 48 44 45 45 43 51 +42 53 53 52 50 50 49 45 45 53 49 72 +96 111 131 136 146 144 145 142 139 136 143 146 +156 160 162 168 163 167 167 166 165 165 169 165 +165 163 164 163 164 166 165 167 164 167 165 162 +161 163 159 162 161 160 160 161 159 158 160 156 +156 159 155 160 160 158 157 157 154 158 158 161 +158 157 154 157 154 157 157 154 154 155 154 157 +153 155 151 154 154 159 150 152 155 154 149 152 +106 106 107 105 106 103 105 103 107 102 102 100 +100 99 99 98 105 99 100 98 98 107 101 105 +104 108 114 122 128 129 137 148 149 153 161 163 +167 170 171 170 172 172 170 169 173 175 169 170 +171 173 172 171 173 172 169 163 158 156 146 145 +139 127 117 107 89 85 78 71 67 70 71 78 +79 81 87 93 89 89 92 91 93 96 99 95 +93 92 98 96 97 101 94 98 96 99 98 97 +101 94 96 96 98 97 101 98 97 94 96 99 +100 100 102 101 108 102 101 106 102 102 96 99 +90 85 90 83 95 165 219 220 205 213 218 206 +188 196 189 171 155 156 173 178 181 180 155 174 +153 108 89 87 102 126 140 128 133 134 133 122 +121 129 137 125 116 105 98 106 126 131 122 130 +128 121 123 127 122 119 122 120 115 120 121 126 +114 119 131 136 129 134 138 141 147 136 138 136 +111 86 60 54 74 92 92 70 68 68 79 90 +87 83 69 68 77 98 103 80 70 62 68 63 +62 45 43 50 57 93 120 98 45 42 38 35 +38 38 40 72 77 109 59 96 88 44 45 42 +44 43 42 42 51 63 95 82 74 67 84 86 +96 94 81 61 38 37 77 129 144 124 42 29 +30 45 110 165 159 158 144 126 116 115 127 145 +172 190 193 196 199 198 196 192 187 191 191 188 +186 184 184 181 182 175 181 181 180 181 175 179 +183 180 181 180 176 173 174 173 173 177 174 180 +183 176 170 175 181 187 187 189 189 192 193 193 +193 191 189 189 190 195 192 180 182 159 113 85 +77 71 70 57 50 54 71 106 109 115 109 81 +69 99 139 146 129 106 116 137 121 111 105 123 +144 152 144 153 151 169 168 169 171 168 174 172 +177 182 180 185 192 200 202 185 126 59 50 42 +41 52 34 37 39 42 42 44 45 47 50 53 +55 54 52 51 51 54 58 59 59 61 52 55 +50 47 53 54 48 45 43 45 49 50 50 48 +54 46 48 51 55 55 58 83 100 119 132 142 +142 141 143 148 141 134 144 149 155 160 163 168 +164 167 167 165 163 158 166 167 162 162 164 163 +164 161 167 161 161 166 160 164 162 161 163 165 +165 162 162 160 155 163 160 158 153 161 159 158 +157 157 156 159 157 157 157 159 157 157 156 157 +155 155 159 157 155 158 157 155 153 153 155 151 +155 153 152 147 148 153 152 151 +107 107 109 106 +104 108 113 107 107 102 104 102 103 98 100 100 +105 97 98 100 103 101 102 94 97 111 115 120 +128 128 138 144 150 154 159 166 165 170 172 173 +170 172 169 171 171 168 170 170 172 171 171 173 +172 169 162 161 160 155 148 139 135 129 119 102 +91 83 73 64 68 75 73 87 84 87 86 89 +89 89 87 93 94 92 90 90 96 98 98 90 +95 99 96 94 93 97 96 94 95 99 103 95 +94 94 95 100 96 98 96 99 103 107 105 103 +102 108 106 108 101 107 102 99 95 92 86 84 +88 127 198 216 216 221 211 197 198 208 189 169 +160 144 174 175 171 187 176 166 160 115 95 98 +105 135 143 126 130 138 132 122 123 127 129 124 +115 108 110 116 127 127 123 125 132 121 124 121 +123 121 119 119 124 123 124 126 120 130 141 136 +136 139 138 138 141 135 119 113 99 77 55 50 +52 61 67 60 77 81 84 81 64 69 77 86 +86 98 86 72 65 61 66 62 43 36 40 44 +84 114 106 64 40 40 39 40 43 42 47 81 +88 108 53 93 68 41 41 38 47 45 54 58 +60 87 91 80 69 51 62 72 100 103 59 48 +39 45 99 164 145 108 33 31 41 70 145 172 +146 113 123 121 119 130 153 178 190 192 195 197 +200 195 195 193 191 192 189 188 189 186 186 181 +183 181 185 181 180 179 178 179 181 181 179 174 +176 178 174 170 172 176 181 177 186 174 177 176 +181 187 189 192 193 190 192 191 192 193 191 189 +184 189 182 175 166 152 113 90 82 72 80 91 +86 61 69 82 103 110 117 101 95 79 115 141 +142 122 108 124 129 125 98 116 142 155 151 150 +153 164 166 163 167 170 173 169 172 182 188 196 +206 204 172 102 51 37 41 44 38 36 32 35 +42 47 45 43 45 49 49 50 52 52 56 63 +60 54 52 69 67 53 52 64 54 50 47 52 +48 43 47 48 51 55 48 55 58 52 49 48 +48 63 68 86 107 123 135 141 138 138 137 139 +131 131 145 154 161 166 167 164 165 166 163 164 +162 162 168 166 165 168 164 165 161 163 162 160 +164 161 162 162 165 166 162 162 161 161 160 165 +159 159 163 158 159 159 157 158 160 155 158 158 +159 158 153 155 156 157 159 156 157 154 155 155 +155 156 157 155 153 152 153 151 151 155 149 153 +151 154 152 154 +116 116 106 109 104 111 110 100 +108 104 106 106 110 104 98 99 97 98 97 99 +100 99 101 101 99 110 115 119 129 126 137 142 +147 152 159 167 164 170 170 171 169 168 169 169 +172 172 174 176 174 171 171 171 174 168 165 160 +160 153 149 142 136 128 119 103 91 77 77 75 +67 72 76 79 85 85 83 93 94 94 100 96 +96 94 91 104 96 97 96 98 95 98 96 96 +96 95 90 93 98 98 105 100 95 98 97 99 +103 98 97 101 101 106 99 103 102 103 108 103 +103 100 100 102 97 93 89 85 87 95 151 204 +224 214 202 203 212 207 194 182 164 158 165 174 +167 184 189 165 142 106 100 109 122 140 137 131 +128 130 135 129 126 125 119 116 110 106 112 122 +120 125 131 127 128 127 127 122 120 122 121 118 +120 126 126 115 123 135 143 137 129 121 117 109 +106 92 101 99 105 90 84 77 70 62 63 66 +84 71 72 70 65 65 96 90 78 71 67 61 +61 62 52 45 42 45 49 60 95 126 114 54 +41 37 36 44 38 43 51 83 96 97 47 100 +56 42 46 47 52 61 80 74 61 62 65 50 +45 45 56 87 105 92 41 40 36 54 123 158 +137 56 34 41 70 105 148 143 121 94 109 119 +134 153 181 197 196 190 194 198 195 193 191 192 +188 189 188 190 189 184 184 178 182 185 181 178 +178 182 183 184 183 184 176 172 175 173 170 167 +171 180 181 180 181 178 181 175 184 186 186 193 +189 192 188 191 189 186 189 186 182 187 184 178 +179 164 144 119 93 76 73 92 104 95 81 61 +70 105 102 102 101 98 74 127 146 132 110 111 +128 118 108 103 131 147 151 151 146 162 166 167 +167 174 176 174 181 188 202 207 197 153 94 52 +40 41 41 41 47 53 41 39 43 44 45 50 +52 47 48 45 47 49 52 59 55 62 56 55 +68 52 49 47 47 44 52 43 45 41 43 41 +47 50 51 55 49 50 46 49 64 64 74 87 +112 128 137 136 133 133 134 137 134 136 146 154 +158 164 165 163 165 171 169 168 169 167 164 163 +162 166 167 166 166 162 162 158 160 163 164 164 +164 162 160 162 162 161 163 162 160 161 160 158 +158 157 162 157 157 155 157 156 157 159 155 157 +157 159 157 154 156 155 158 155 158 154 153 155 +154 154 152 150 153 155 152 150 151 148 153 150 +103 103 108 109 109 108 111 103 114 106 110 107 +104 105 103 98 96 97 98 99 101 99 101 98 +101 106 115 119 127 127 139 141 147 155 158 162 +164 168 167 172 168 171 173 170 170 174 173 174 +171 173 174 172 173 168 163 160 156 152 148 144 +135 124 116 99 87 87 77 74 74 70 76 80 +82 82 83 88 92 89 93 96 92 93 94 97 +100 101 99 102 96 97 100 98 97 96 96 93 +97 93 104 92 96 93 100 98 97 98 95 101 +102 101 102 107 104 108 109 104 102 102 101 98 +98 98 93 86 84 86 107 173 221 206 204 216 +216 202 191 190 180 168 171 169 180 184 190 175 +146 116 102 128 130 134 132 129 126 128 131 133 +123 125 119 106 107 116 117 130 126 133 134 136 +131 126 130 125 120 125 127 122 120 118 124 124 +136 135 138 129 121 103 105 104 105 105 118 116 +107 105 110 90 87 83 82 84 75 66 60 61 +66 85 98 90 72 59 65 46 46 52 44 43 +42 45 64 94 113 133 107 42 33 34 37 42 +42 41 57 80 97 100 48 92 46 44 42 61 +58 57 55 52 59 51 52 45 48 39 62 101 +116 77 39 35 34 64 132 147 109 37 64 91 +101 135 125 117 116 96 103 134 162 184 191 198 +198 195 194 196 194 191 194 193 190 184 186 186 +185 182 178 182 181 179 176 173 182 184 184 183 +183 182 182 175 171 165 166 168 176 180 186 181 +180 178 181 177 185 186 188 189 186 185 191 190 +184 189 183 176 184 192 192 190 187 174 167 133 +102 81 75 74 87 110 108 82 77 88 96 92 +94 97 87 91 138 141 124 114 117 118 104 100 +123 140 155 152 151 160 164 172 173 179 181 187 +194 200 205 191 142 74 52 42 42 43 53 40 +49 37 44 39 44 45 46 46 51 54 50 49 +51 45 57 56 53 52 64 53 56 47 52 41 +43 46 56 47 42 44 46 43 52 49 54 49 +57 48 53 66 68 66 81 103 118 134 137 136 +130 134 133 130 126 142 150 158 166 168 167 167 +165 164 168 166 161 164 167 164 159 164 165 159 +162 162 160 160 163 162 162 163 164 162 163 162 +164 161 162 161 161 159 159 162 161 161 162 158 +161 159 160 162 161 161 159 160 158 157 159 158 +157 159 158 158 155 160 154 153 156 155 154 154 +155 153 151 152 148 150 152 150 +107 107 106 104 +104 107 109 111 105 105 104 100 106 98 103 100 +100 97 98 98 96 93 92 98 96 106 110 119 +127 128 138 143 149 155 156 160 167 167 170 173 +174 173 173 170 172 171 174 169 174 176 170 170 +172 169 165 164 161 157 149 147 136 123 116 102 +86 81 74 74 73 75 78 85 85 87 78 83 +87 91 91 92 93 93 95 94 93 98 97 97 +98 100 103 94 95 97 97 98 102 97 98 97 +96 95 94 99 100 96 99 101 103 108 105 104 +103 107 104 102 107 110 105 102 102 101 98 92 +89 83 87 129 194 205 221 217 208 199 187 188 +194 186 176 171 183 186 186 169 148 107 119 153 +125 124 123 130 135 132 133 130 125 117 114 110 +112 122 122 126 128 131 128 133 127 130 126 125 +125 121 117 125 122 111 114 137 141 134 135 122 +118 119 124 118 123 121 118 113 113 100 102 104 +101 89 91 85 65 57 62 68 81 90 90 79 +59 53 46 43 40 37 38 34 48 67 66 89 +109 132 104 45 41 41 36 42 48 46 51 86 +98 94 49 101 46 41 46 55 60 56 47 49 +59 58 54 52 49 50 62 110 119 66 45 34 +44 75 128 136 89 66 112 126 123 137 81 99 +112 98 110 162 190 196 188 197 198 195 191 192 +192 192 194 191 185 184 186 183 183 181 181 182 +176 175 177 178 181 180 183 176 185 180 174 170 +165 165 168 171 176 181 183 178 176 181 186 178 +184 189 184 188 186 185 187 182 176 179 181 178 +191 194 195 192 190 177 171 147 119 94 83 75 +68 74 111 117 99 75 82 100 97 88 101 88 +112 143 130 123 117 124 107 101 124 135 147 150 +153 160 169 180 180 186 194 197 202 194 182 130 +63 44 44 39 42 42 46 42 41 46 37 42 +48 49 51 53 55 58 53 54 49 49 57 53 +55 58 63 52 56 49 49 44 46 41 41 48 +49 47 43 47 57 59 54 61 49 50 56 71 +69 68 88 114 121 136 135 130 129 132 129 127 +132 144 154 160 167 166 168 168 165 165 168 162 +163 167 161 163 163 162 165 162 161 163 162 161 +161 160 162 163 162 164 162 164 162 164 160 162 +161 160 157 161 165 159 163 156 157 162 162 158 +161 156 157 157 158 158 155 161 156 154 154 157 +155 156 157 155 154 153 151 156 154 153 149 156 +150 146 149 150 +110 110 108 106 107 106 102 110 +104 98 105 102 105 102 102 101 98 101 99 99 +92 98 94 99 99 101 111 116 123 134 136 141 +148 152 157 160 166 166 166 166 174 172 173 171 +173 178 174 173 172 171 172 170 172 167 171 163 +159 155 148 144 136 126 118 105 88 81 73 70 +73 71 77 78 82 84 86 83 91 91 92 93 +89 88 101 99 97 95 99 97 96 97 98 95 +97 95 99 99 100 98 96 95 94 95 97 101 +101 95 101 105 99 104 103 103 105 108 104 104 +105 103 103 100 102 97 94 95 91 84 84 99 +147 210 224 208 207 200 188 192 196 199 183 181 +187 185 174 145 105 93 135 160 137 117 117 124 +130 132 133 129 128 127 116 117 115 122 123 126 +129 133 128 127 133 139 130 123 127 122 116 122 +116 109 112 126 139 132 135 130 126 128 127 126 +130 122 116 121 116 94 95 100 98 89 78 75 +62 72 70 87 98 94 94 85 61 58 44 45 +38 38 41 40 43 70 66 102 114 130 78 41 +37 47 42 48 47 40 47 86 75 90 58 88 +56 38 42 45 59 59 50 43 48 58 53 42 +41 39 63 112 112 66 42 37 53 112 137 125 +100 109 144 142 140 123 65 86 110 113 131 177 +195 184 190 195 195 192 191 192 191 193 193 191 +182 181 183 183 180 178 178 176 178 177 180 180 +178 180 186 177 183 177 173 169 170 170 172 174 +180 182 183 184 181 186 181 183 184 187 185 185 +183 185 178 180 176 184 188 188 193 190 194 190 +188 182 172 159 131 110 92 92 79 59 67 107 +124 105 91 104 103 89 95 119 101 136 144 124 +120 125 121 114 119 135 148 153 153 166 178 184 +187 199 205 201 188 155 112 67 47 44 47 38 +37 45 42 45 47 41 42 49 52 46 54 55 +55 59 57 52 51 49 50 60 50 54 55 53 +58 50 49 49 48 48 44 54 45 44 44 51 +49 56 58 49 57 52 58 68 71 80 98 114 +127 141 138 129 126 124 120 121 132 148 154 165 +166 166 167 165 166 168 167 165 162 165 161 165 +162 161 158 167 165 160 162 159 163 164 165 168 +164 165 163 163 162 162 161 163 161 160 158 159 +159 159 162 157 156 160 154 157 160 156 160 160 +161 158 159 160 158 155 159 157 156 157 157 157 +155 150 153 157 154 154 153 150 153 154 153 151 +109 109 109 108 109 107 108 108 105 101 101 102 +103 103 102 100 103 100 98 102 96 98 94 98 +96 101 107 114 121 129 138 141 149 153 157 160 +167 165 168 167 173 170 172 173 171 172 174 176 +174 177 173 173 172 168 167 166 157 155 146 142 +135 128 116 104 87 81 74 75 67 73 75 80 +75 79 87 86 87 91 91 94 89 94 98 97 +97 93 98 97 99 97 94 96 95 98 101 98 +100 99 102 100 97 98 99 91 104 100 101 104 +105 103 106 106 110 108 105 106 104 111 106 106 +105 101 97 97 95 89 80 89 114 193 226 207 +209 204 192 192 189 198 196 182 192 186 165 118 +87 104 145 147 134 115 116 120 121 129 131 123 +120 110 117 117 123 121 123 129 131 133 123 121 +131 144 140 136 125 134 139 133 131 124 126 121 +120 111 122 135 134 133 127 127 122 104 80 70 +73 77 86 88 77 70 76 72 73 83 82 101 +92 105 101 66 57 51 49 46 43 43 39 37 +40 50 70 107 122 123 64 38 35 37 37 54 +56 64 65 71 63 61 63 74 58 50 47 70 +75 61 59 49 49 55 60 45 47 45 78 111 +87 74 49 43 77 129 126 104 120 144 160 141 +140 108 70 103 126 142 146 184 191 186 191 194 +190 192 189 193 194 191 190 188 187 183 185 181 +182 181 174 177 178 181 176 179 180 179 184 179 +178 171 169 172 176 173 172 178 180 182 184 186 +180 181 179 182 186 189 182 183 178 180 180 186 +185 185 191 195 194 191 193 195 193 184 178 162 +139 122 102 92 94 89 71 69 112 135 117 111 +104 109 102 111 107 125 149 140 127 122 130 122 +120 142 146 154 159 169 183 189 197 199 198 172 +124 89 54 45 45 43 48 46 41 42 43 47 +46 43 44 48 51 53 56 57 51 53 49 49 +50 47 51 57 50 58 55 50 54 57 47 45 +45 48 48 48 43 45 49 55 54 57 56 46 +44 56 59 58 73 90 109 120 132 136 134 131 +127 123 122 129 136 152 157 165 164 168 168 170 +165 170 166 166 165 161 161 162 160 162 162 164 +163 163 164 160 161 163 163 160 165 163 163 165 +161 160 161 165 161 160 161 157 159 159 158 161 +156 157 156 158 160 156 161 161 160 160 158 157 +158 153 157 155 156 154 153 160 154 152 155 156 +154 154 155 152 156 154 157 152 +107 107 107 106 +110 107 105 108 105 101 105 106 104 103 101 99 +96 98 100 101 97 94 94 97 96 104 109 113 +120 128 138 139 144 152 160 163 167 169 173 169 +172 172 173 174 171 173 170 172 175 175 178 176 +170 170 170 163 162 152 148 143 133 124 113 105 +90 83 76 71 71 73 75 83 81 83 91 82 +87 87 91 90 90 96 99 98 100 93 93 91 +95 96 96 90 96 95 100 102 97 95 101 99 +99 104 103 101 98 98 100 103 104 100 105 106 +107 107 107 106 111 109 106 110 110 100 103 102 +93 86 87 84 91 155 211 214 205 198 194 191 +195 187 191 191 198 188 154 112 103 140 152 141 +125 116 112 116 126 126 123 124 120 105 118 127 +128 129 124 130 132 132 125 121 119 133 129 121 +115 119 129 123 124 126 132 114 113 101 94 115 +127 135 131 119 111 102 86 68 62 67 93 89 +73 64 81 87 83 95 89 95 96 103 81 68 +54 51 48 45 50 43 42 35 47 57 82 120 +108 113 54 34 35 40 43 49 92 98 43 58 +53 59 57 53 54 57 63 60 77 87 90 81 +84 81 87 78 56 48 92 120 84 70 69 50 +96 123 120 92 121 152 125 142 127 106 83 119 +154 172 155 184 186 190 190 189 190 185 186 189 +193 190 187 185 186 182 184 180 183 176 177 178 +184 178 176 178 183 179 179 173 174 169 173 175 +177 173 172 177 178 186 182 186 181 185 181 181 +186 181 177 179 186 187 187 187 193 187 192 198 +198 196 197 192 190 184 178 168 147 130 110 95 +88 89 93 74 73 127 137 116 107 106 98 92 +91 92 136 149 134 131 138 128 121 135 145 154 +163 179 187 193 192 176 147 104 59 50 51 40 +48 46 44 46 47 44 43 42 41 41 46 54 +51 60 50 57 58 56 52 54 47 49 55 52 +51 50 58 55 49 49 42 48 42 43 47 50 +47 46 50 51 53 55 53 50 53 58 61 65 +72 97 116 129 134 138 134 127 128 119 122 132 +140 154 160 168 166 169 171 166 166 168 168 162 +163 162 163 162 163 162 162 163 162 161 162 165 +164 165 163 166 165 159 160 162 162 161 163 162 +161 158 159 159 159 160 160 161 159 160 159 159 +160 160 160 157 159 159 156 155 162 157 158 154 +153 155 156 153 157 152 152 154 154 155 149 148 +154 151 149 152 +107 107 106 108 107 108 106 108 +100 105 105 102 100 101 99 99 98 98 103 99 +95 97 94 94 92 103 105 111 120 134 138 139 +144 148 160 163 167 170 170 172 170 170 169 175 +172 173 170 171 174 175 175 174 174 171 169 162 +158 151 152 142 135 128 120 100 88 88 75 75 +70 71 70 79 77 82 81 85 92 86 93 97 +92 92 103 96 97 96 97 100 96 98 95 98 +99 96 97 96 95 94 98 97 100 101 97 96 +99 101 100 105 105 104 100 105 107 110 107 113 +111 111 110 105 108 105 103 101 92 91 87 88 +82 115 180 223 207 199 198 198 194 193 187 193 +198 192 153 108 117 164 136 134 122 113 118 112 +117 121 114 112 107 110 120 135 129 126 129 130 +134 131 128 118 122 121 117 110 108 110 117 120 +127 131 128 121 122 119 117 109 113 107 101 100 +90 91 80 72 61 70 79 75 71 83 91 88 +77 89 100 97 100 89 63 66 56 54 57 56 +53 42 39 49 49 60 90 110 96 110 63 38 +46 48 65 53 86 91 42 46 50 47 48 50 +53 63 60 63 79 91 88 97 93 93 98 89 +83 77 97 121 89 80 78 75 68 124 115 85 +96 104 123 131 124 107 117 156 183 173 163 188 +186 186 190 183 186 183 184 187 187 189 186 184 +180 184 181 176 177 177 176 179 178 174 177 176 +174 177 175 170 176 173 174 175 178 172 168 177 +181 183 179 186 181 184 180 181 184 182 186 191 +193 188 191 185 193 193 193 197 199 200 203 199 +197 186 187 179 159 137 124 103 91 88 90 82 +66 75 120 134 107 77 92 68 83 62 104 138 +134 130 132 131 126 133 142 149 165 173 182 171 +157 130 89 64 52 49 44 39 40 42 43 47 +45 46 52 47 43 41 44 52 52 56 55 55 +66 56 57 54 54 63 57 56 54 57 57 53 +53 57 45 40 39 41 43 51 44 46 55 51 +61 51 47 49 54 67 72 67 80 107 118 129 +132 131 128 123 125 118 128 136 147 156 163 169 +167 168 166 170 168 170 163 166 162 160 163 161 +164 163 165 164 164 165 161 163 162 163 163 164 +161 157 163 161 160 158 161 163 163 158 160 162 +159 159 155 160 159 159 156 161 161 159 159 156 +156 158 156 157 156 154 157 155 155 159 157 153 +157 154 152 153 156 153 155 154 151 151 149 150 +106 106 106 108 107 112 108 103 104 104 100 99 +106 103 106 101 101 103 99 93 95 93 93 95 +93 97 103 112 123 129 133 144 148 154 160 162 +163 165 168 174 171 172 171 171 178 171 173 172 +172 173 175 175 174 171 171 163 158 154 150 142 +140 132 114 100 89 79 76 68 66 68 74 79 +76 84 82 91 87 86 89 92 94 95 93 97 +94 96 95 94 97 98 95 96 98 100 97 100 +99 97 96 95 98 99 98 96 96 97 105 105 +108 103 108 104 106 117 109 108 113 107 105 107 +109 104 107 95 100 95 89 89 85 98 158 219 +220 215 203 200 190 194 191 191 204 194 153 125 +133 162 129 125 124 120 114 115 116 118 112 100 +101 108 113 124 128 125 130 129 133 128 116 112 +118 114 105 101 111 123 124 128 133 136 137 132 +136 135 137 125 110 108 108 91 65 62 59 66 +80 83 75 67 73 87 92 71 76 95 104 95 +100 71 66 69 54 62 52 66 54 48 42 42 +54 67 81 85 73 101 70 42 45 54 56 65 +107 70 42 45 49 52 53 51 46 50 47 65 +56 59 62 72 66 58 53 69 57 60 85 106 +57 73 77 64 62 111 107 84 85 98 138 142 +121 106 150 183 173 158 167 187 185 184 184 180 +180 177 183 183 187 186 181 184 181 179 174 168 +172 174 175 176 174 178 175 172 173 174 178 171 +178 174 174 180 173 175 171 174 176 179 178 180 +180 178 177 182 186 191 192 192 192 192 196 193 +192 196 197 194 195 202 202 201 198 196 192 185 +167 153 140 112 98 87 87 88 80 58 64 103 +129 89 82 85 82 71 64 130 139 133 133 131 +136 128 138 152 158 165 157 142 129 109 82 53 +40 42 43 43 38 42 46 44 41 48 51 50 +50 49 47 46 48 56 57 52 56 50 54 53 +55 58 55 61 57 57 60 56 47 43 42 42 +42 46 49 46 49 50 53 50 51 53 43 43 +50 61 63 76 88 107 126 126 134 132 130 123 +124 127 125 136 147 160 165 166 169 168 170 162 +165 168 164 168 162 166 164 161 167 161 165 161 +162 162 167 165 163 162 165 161 160 162 160 160 +158 160 162 162 163 162 162 163 161 161 160 162 +159 159 158 160 160 161 160 157 159 156 160 158 +157 160 157 156 159 155 156 154 158 157 154 151 +154 156 154 151 150 152 151 151 +109 109 108 110 +111 107 108 107 101 103 103 104 102 104 101 105 +102 100 97 99 97 97 92 92 95 94 106 114 +123 129 134 145 146 154 158 162 160 170 171 173 +173 173 172 171 173 168 172 178 175 173 175 170 +173 170 170 163 157 155 153 145 137 127 116 105 +96 82 76 64 69 74 71 81 84 84 83 84 +90 93 88 90 89 91 99 94 95 92 99 97 +96 98 91 97 95 92 95 97 100 98 99 100 +97 93 99 97 100 97 101 105 104 102 110 105 +108 108 107 111 114 111 110 111 108 108 107 104 +102 96 93 89 85 90 143 213 222 224 213 200 +194 196 196 192 200 192 154 151 141 141 125 120 +121 121 119 115 119 114 110 98 106 116 119 123 +126 132 130 127 121 119 110 108 106 112 106 111 +128 137 138 135 123 128 128 114 120 132 140 133 +124 113 104 85 67 64 64 69 76 62 61 59 +71 82 80 67 73 91 98 84 93 70 70 73 +60 56 55 51 48 50 45 44 61 67 72 86 +81 99 79 50 63 70 70 69 72 45 42 47 +44 46 46 49 48 50 50 56 47 43 49 56 +57 60 41 45 43 45 66 95 55 76 75 63 +68 107 99 69 94 123 140 138 117 124 165 169 +157 155 170 180 182 176 179 175 175 180 184 180 +187 185 182 181 175 172 170 171 171 169 169 172 +179 176 169 171 167 173 172 175 179 175 173 175 +177 175 173 178 174 177 176 173 178 178 186 189 +196 196 191 195 192 190 193 190 197 195 196 193 +197 198 201 201 198 194 194 193 178 160 144 121 +103 94 82 82 81 69 46 54 126 127 85 82 +83 89 64 90 132 143 134 132 139 130 143 150 +157 162 141 123 113 113 88 56 41 41 37 41 +41 46 51 45 41 47 44 43 46 49 53 49 +51 51 56 55 58 61 59 52 54 60 61 53 +55 54 55 56 51 47 44 39 41 53 49 48 +52 49 58 48 47 53 49 54 60 60 73 81 +99 120 133 131 135 132 123 123 126 126 130 139 +153 162 167 168 171 167 162 166 167 167 166 166 +166 163 161 165 166 166 161 163 159 162 162 161 +164 163 163 162 160 162 162 160 162 161 163 163 +161 161 162 160 161 160 156 161 163 162 163 161 +161 160 158 158 158 154 158 156 156 157 158 159 +155 156 154 156 156 157 152 152 153 153 155 150 +148 149 156 151 +107 107 106 106 108 107 102 105 +103 105 106 103 101 100 99 103 98 96 95 97 +98 91 91 94 93 99 105 110 119 129 138 139 +148 154 155 158 159 166 165 171 171 173 171 173 +171 172 171 173 175 175 174 175 173 170 166 168 +158 156 147 145 134 129 118 108 90 84 77 69 +68 72 72 76 78 80 76 83 88 91 89 88 +95 98 93 95 98 94 98 93 97 95 94 100 +95 95 92 97 94 98 97 102 101 97 98 100 +99 100 102 100 104 103 109 108 103 111 109 108 +115 109 111 106 107 100 107 98 99 99 94 95 +86 90 134 207 216 220 222 208 198 205 197 198 +197 191 164 175 140 123 124 116 126 126 128 120 +118 103 101 105 111 114 123 127 124 132 131 127 +126 113 113 108 105 115 122 129 136 136 128 134 +126 120 120 92 92 124 141 133 133 116 107 88 +78 71 65 84 71 59 57 53 59 70 71 63 +65 87 90 96 90 72 73 68 55 53 47 48 +44 48 44 58 66 69 66 69 64 94 96 65 +87 77 66 49 42 42 46 53 45 48 44 44 +45 45 47 49 48 52 49 47 48 44 40 36 +36 42 59 86 60 65 76 91 75 92 90 55 +81 121 115 120 115 131 138 146 144 153 167 180 +180 177 178 169 173 182 184 177 183 182 178 175 +171 167 173 166 167 162 174 181 179 169 170 175 +175 174 171 179 178 170 176 173 171 173 177 177 +171 170 173 174 178 191 191 195 200 194 190 193 +192 193 193 192 196 197 196 195 194 196 198 196 +197 192 196 192 181 171 149 133 111 98 91 74 +65 80 63 44 59 120 121 86 97 86 69 63 +123 137 134 130 138 144 134 150 151 147 137 125 +117 107 90 57 39 35 41 42 45 46 46 38 +43 44 46 43 50 54 46 54 53 54 58 57 +58 60 57 51 54 51 55 55 60 53 56 50 +47 41 46 37 41 44 48 49 57 58 53 56 +49 48 47 56 66 64 75 97 108 130 130 135 +132 127 123 120 118 129 130 141 152 155 166 166 +165 167 163 167 168 166 163 165 166 163 165 163 +165 163 161 160 163 164 164 160 163 164 164 161 +165 163 161 163 158 164 162 166 163 160 163 162 +160 162 161 164 160 163 164 163 161 161 159 159 +154 159 157 153 161 154 160 156 154 156 156 157 +155 156 154 151 155 154 152 150 150 152 153 150 +104 104 112 112 110 106 107 102 103 104 107 103 +101 103 95 102 104 102 96 101 97 91 90 96 +90 94 103 113 120 130 131 140 148 152 153 158 +165 167 171 169 169 175 172 176 172 172 171 172 +173 177 176 170 172 171 170 168 160 156 148 141 +139 128 119 108 96 81 73 67 64 72 72 81 +78 87 87 82 91 89 85 87 93 95 100 95 +97 101 98 96 95 97 95 96 101 95 95 91 +93 97 94 96 97 96 98 98 100 100 99 99 +105 103 106 106 105 107 113 107 115 115 121 106 +118 106 111 105 103 98 95 85 87 93 130 208 +212 210 217 217 205 200 196 200 202 189 171 181 +146 128 119 123 126 124 124 127 114 96 95 103 +116 115 122 131 124 127 122 117 118 116 125 115 +110 124 135 139 136 130 132 136 127 125 113 92 +78 121 131 132 124 121 113 88 64 62 65 62 +71 70 59 56 57 54 57 56 64 88 97 78 +84 80 67 66 60 69 50 47 53 53 51 63 +69 79 67 51 62 94 101 93 88 95 75 49 +50 53 45 46 43 47 48 46 46 49 52 48 +54 50 46 49 41 48 49 37 41 41 52 79 +69 81 105 108 82 83 89 55 76 103 106 116 +121 136 139 147 156 163 170 181 182 178 173 171 +178 179 181 178 183 178 176 170 169 176 169 167 +163 170 179 177 172 172 174 171 173 179 176 180 +177 171 178 169 176 175 175 171 162 168 170 186 +190 197 196 199 200 196 191 195 193 195 193 192 +196 197 196 197 195 197 197 197 200 199 196 192 +183 170 154 134 115 101 97 92 75 73 72 56 +41 61 109 89 93 84 80 53 95 131 131 129 +133 144 144 154 154 147 138 126 114 104 83 56 +50 40 36 39 44 43 41 40 44 43 47 44 +52 55 59 54 56 51 56 53 56 59 59 62 +55 56 54 58 53 50 48 46 53 46 45 41 +37 42 48 49 51 56 50 50 50 47 48 62 +66 66 78 98 119 132 138 136 131 132 121 119 +118 130 140 145 153 160 165 165 168 165 163 164 +167 168 165 165 165 163 164 165 167 171 161 162 +163 164 163 161 163 164 165 168 165 160 163 162 +160 164 159 162 162 163 160 160 160 160 160 163 +160 162 161 160 160 159 157 158 156 161 158 158 +159 154 157 158 157 157 155 155 154 154 157 152 +157 158 149 153 152 152 154 151 +105 105 106 108 +104 105 105 104 107 102 100 105 106 99 100 101 +100 101 99 101 97 93 90 89 85 98 104 110 +115 124 132 140 147 149 150 157 162 170 168 168 +169 172 170 169 172 170 172 172 174 176 173 172 +172 173 167 166 161 154 151 140 133 130 117 108 +93 80 76 67 69 74 78 83 74 80 82 84 +92 96 94 95 92 97 97 102 100 102 98 99 +103 101 102 98 102 95 95 96 95 96 96 100 +97 93 99 100 103 100 101 103 106 105 103 104 +108 110 115 115 111 107 110 107 112 106 111 105 +104 99 95 85 85 90 126 210 219 213 212 217 +214 199 202 196 201 190 181 154 133 118 123 128 +125 121 126 128 122 108 106 110 121 122 121 125 +120 119 121 113 105 116 131 124 129 139 138 142 +129 129 125 126 131 127 118 99 90 120 118 116 +108 99 99 86 66 79 70 64 61 58 53 55 +62 46 45 53 60 86 99 67 83 68 67 72 +76 82 65 54 62 53 50 58 70 84 59 39 +51 102 107 111 102 88 73 40 39 40 45 46 +52 47 49 46 50 48 47 45 52 59 50 43 +45 46 44 45 41 43 64 93 88 103 120 102 +86 86 94 63 91 134 140 129 139 160 157 163 +166 172 177 174 179 176 176 180 183 184 185 180 +182 176 169 168 172 174 163 166 169 173 175 171 +174 176 179 175 179 180 175 175 168 171 176 175 +176 173 171 164 161 174 186 191 190 189 193 198 +200 200 193 198 195 197 196 194 199 199 199 200 +197 197 195 200 202 199 194 191 185 175 155 139 +120 99 94 101 85 64 59 61 43 37 60 104 +85 91 78 67 65 114 134 130 132 135 149 148 +158 152 145 130 116 103 73 51 50 48 42 39 +41 41 39 40 47 47 45 50 56 60 61 57 +55 54 52 53 58 58 64 59 57 62 57 67 +63 53 52 48 54 41 50 34 40 45 45 45 +47 54 50 49 48 45 56 53 62 70 89 109 +126 131 136 131 126 130 122 118 127 133 141 149 +152 159 161 165 167 167 165 169 166 167 164 164 +165 166 166 163 165 161 159 166 164 164 162 163 +161 163 161 167 161 165 164 165 163 164 160 161 +162 160 162 163 156 159 158 160 160 157 162 163 +162 159 157 158 159 160 154 154 158 154 158 157 +156 157 160 156 157 153 151 153 157 153 151 154 +157 154 151 149 +108 108 106 103 109 104 103 105 +105 102 104 105 102 101 102 98 96 101 99 96 +97 91 90 88 87 100 100 111 125 124 138 140 +145 150 156 158 163 166 169 170 174 172 169 169 +174 168 169 175 176 173 172 176 174 173 171 167 +158 156 150 144 134 132 118 104 90 77 76 68 +67 72 77 80 76 79 82 83 89 93 89 87 +89 91 98 100 97 97 96 100 100 92 97 98 +100 100 95 103 102 97 100 99 97 95 99 98 +101 104 98 104 106 105 99 103 109 114 112 114 +112 114 110 108 110 107 108 108 107 98 96 90 +90 86 127 210 220 219 210 213 217 205 206 198 +194 186 163 133 119 113 117 118 124 119 124 119 +118 114 120 118 124 127 121 122 115 112 116 112 +116 120 128 131 141 144 134 134 134 131 127 126 +123 118 110 91 90 123 113 105 88 86 83 72 +74 80 77 75 60 61 58 49 47 40 42 56 +56 70 76 72 77 67 64 68 69 85 80 71 +61 59 39 53 75 81 56 37 54 112 91 120 +119 94 87 50 40 43 42 47 58 45 44 45 +48 47 53 48 47 58 47 41 41 43 40 38 +41 43 64 95 107 131 106 87 84 88 96 78 +114 166 160 131 156 181 175 172 169 177 183 176 +175 178 180 182 186 187 187 182 179 172 173 173 +165 163 165 170 172 175 172 178 179 174 178 180 +179 174 168 167 160 175 179 172 172 170 162 167 +177 188 188 192 195 194 194 198 201 198 191 195 +197 199 196 196 199 197 196 194 197 197 198 198 +195 200 199 188 181 175 159 144 132 105 92 98 +78 81 63 55 47 39 48 86 106 98 74 78 +76 103 136 127 137 132 153 146 156 150 150 130 +117 95 59 45 44 46 37 44 41 37 40 43 +43 44 46 44 49 58 56 57 54 56 54 53 +54 59 55 55 73 59 65 57 52 49 45 47 +51 44 45 42 44 43 39 46 46 56 48 50 +46 53 55 53 71 72 97 115 119 134 136 134 +127 126 127 121 124 138 147 154 159 157 161 164 +162 165 170 163 166 164 166 165 162 167 167 168 +164 161 164 158 162 161 163 160 164 164 162 161 +164 161 165 160 159 162 158 162 161 161 162 164 +155 158 160 162 161 161 158 162 161 158 158 161 +162 158 158 156 160 156 159 159 161 156 158 157 +159 156 156 159 153 151 157 154 151 152 152 151 +109 109 109 103 107 105 103 107 101 101 105 103 +103 105 98 95 100 97 95 100 96 89 88 92 +91 99 103 110 124 126 134 138 143 151 157 157 +159 169 171 171 175 174 170 171 174 173 174 174 +174 174 174 177 175 173 172 163 159 153 152 142 +140 132 118 106 93 78 73 71 69 77 75 80 +78 88 84 89 92 95 88 87 95 96 96 92 +95 99 98 94 101 97 98 101 98 95 98 99 +95 99 100 93 93 95 93 98 98 101 100 101 +105 109 102 105 107 112 112 114 110 112 113 110 +113 110 105 106 100 101 97 95 90 89 124 209 +217 220 214 210 218 212 210 205 195 187 134 114 +109 106 116 120 128 122 123 113 113 121 124 127 +123 126 121 117 103 101 107 117 121 125 137 138 +136 137 133 133 136 138 130 125 119 105 101 88 +78 103 97 93 79 71 60 67 86 90 78 66 +51 52 45 47 44 46 43 49 52 60 73 84 +80 69 85 68 71 84 95 76 61 56 36 56 +74 78 62 40 44 93 89 122 127 108 93 52 +40 45 47 50 44 48 48 48 52 48 44 42 +48 51 42 46 33 39 44 38 54 60 82 110 +137 117 86 72 84 93 108 101 123 176 153 134 +165 188 182 181 174 179 182 181 181 182 185 188 +191 188 185 182 181 174 172 165 162 159 169 168 +168 173 173 176 178 177 183 175 173 177 170 155 +156 169 173 168 165 166 171 180 187 192 196 196 +197 194 197 200 201 199 195 195 196 197 194 194 +198 197 198 194 200 198 196 198 196 199 199 190 +184 172 167 154 134 113 97 88 80 77 70 55 +48 44 39 52 108 98 84 72 86 75 134 129 +137 133 139 143 151 151 146 134 123 93 61 50 +43 50 38 44 42 40 41 47 44 51 45 49 +45 48 61 57 53 54 58 59 56 55 59 51 +58 66 55 56 54 50 49 51 68 46 47 40 +44 39 42 49 50 56 50 48 45 47 46 57 +75 87 108 124 132 140 141 133 129 123 118 128 +125 140 150 156 161 158 161 162 160 164 166 165 +164 163 164 165 162 163 163 166 160 161 162 163 +161 158 163 160 162 166 161 164 158 162 161 162 +162 167 164 162 159 165 162 162 160 162 160 163 +162 162 160 158 158 157 159 160 161 158 159 159 +166 158 159 159 156 157 157 157 154 158 156 157 +156 152 151 149 149 148 150 150 +106 106 99 106 +102 103 104 107 105 105 108 104 107 101 96 97 +99 98 99 95 92 92 87 89 91 92 106 114 +117 126 132 143 145 150 155 159 160 166 171 171 +170 171 173 172 174 174 177 174 176 171 172 173 +172 175 170 158 157 157 151 145 139 128 118 108 +93 81 78 71 70 65 78 79 81 86 87 91 +94 91 91 92 99 99 98 99 99 99 98 98 +103 100 99 106 98 102 98 99 96 98 100 99 +98 95 99 94 95 99 100 102 101 105 106 111 +115 108 113 112 112 110 118 112 108 107 105 106 +103 102 98 92 88 89 124 207 217 216 218 209 +215 215 214 203 188 164 117 105 101 106 118 124 +128 124 115 115 121 115 119 124 122 126 117 112 +103 102 102 120 135 134 138 140 135 128 129 135 +126 128 132 125 121 108 93 86 67 74 83 68 +50 49 51 74 102 88 72 64 45 51 51 41 +41 48 43 46 51 49 69 97 74 59 69 67 +88 85 90 89 68 40 44 55 71 80 55 35 +46 59 90 118 132 124 110 75 41 43 43 48 +45 49 56 47 43 41 41 40 43 44 40 41 +34 35 36 39 53 91 105 111 122 106 79 78 +94 111 136 129 124 177 150 133 178 182 179 181 +177 181 178 181 186 181 187 189 187 184 180 180 +176 169 168 160 161 163 164 166 166 166 164 170 +177 181 181 175 172 170 162 153 157 164 166 169 +167 174 184 189 189 192 195 195 198 191 197 202 +204 202 198 198 195 196 194 195 195 198 197 200 +205 202 195 197 200 194 193 192 186 174 167 157 +131 120 100 95 81 73 60 55 46 47 43 50 +77 95 85 75 83 70 112 137 132 125 129 146 +152 148 152 135 112 80 52 52 43 45 44 42 +46 44 47 49 48 47 48 47 51 51 52 60 +54 53 68 50 54 54 56 59 59 57 52 59 +61 49 45 49 46 42 48 42 42 45 47 54 +55 51 53 42 42 49 46 56 82 97 116 132 +135 139 136 130 133 129 125 125 137 141 149 157 +157 159 164 161 161 164 164 165 165 167 165 162 +163 161 164 164 164 164 165 164 161 161 160 159 +160 160 160 163 164 164 163 158 163 167 164 163 +161 162 163 158 162 163 161 158 160 160 159 160 +159 159 162 159 157 157 159 156 159 160 160 158 +155 157 157 160 157 157 157 152 155 155 152 151 +151 150 151 149 +106 106 107 103 103 99 108 107 +108 105 107 110 100 104 102 100 103 95 100 99 +95 90 94 90 88 94 101 110 124 126 129 141 +144 152 155 162 163 167 166 166 168 170 172 173 +172 172 176 176 174 172 173 175 173 172 170 160 +161 154 153 146 138 125 117 106 90 81 78 71 +72 75 72 73 87 86 84 94 95 91 94 93 +100 99 100 101 96 99 103 99 102 104 98 100 +98 98 98 104 97 102 98 100 106 99 100 99 +101 102 104 104 104 102 108 105 111 110 116 115 +117 117 113 112 113 111 112 103 103 110 97 94 +87 90 128 202 216 214 219 212 206 215 217 200 +175 138 116 100 98 111 118 122 124 117 116 120 +121 122 121 126 121 124 109 105 99 112 114 127 +137 134 131 137 138 128 131 135 117 116 118 123 +128 117 92 66 52 52 60 57 47 43 56 78 +95 73 53 51 43 45 50 48 41 49 46 50 +51 55 73 97 88 73 62 69 71 81 84 96 +59 43 46 53 72 85 66 39 39 45 70 117 +116 126 128 98 57 42 41 44 45 45 48 49 +52 42 47 43 45 34 34 33 35 38 40 54 +95 119 124 109 117 92 77 90 118 147 163 139 +121 177 152 146 183 181 179 182 179 183 182 183 +186 187 186 189 186 181 180 179 171 165 164 162 +160 160 159 166 163 166 171 171 178 185 179 174 +172 166 153 154 162 157 165 173 180 184 186 188 +188 193 196 195 200 196 199 200 203 202 198 202 +199 200 196 191 195 200 198 197 204 199 201 198 +204 197 196 197 190 182 168 157 133 116 103 91 +82 82 66 47 47 50 47 43 54 77 83 79 +72 73 92 144 145 132 136 157 149 153 157 130 +96 71 44 57 53 44 46 53 49 50 45 52 +48 43 46 48 52 52 50 54 59 62 61 56 +59 59 72 65 64 62 62 62 53 51 48 43 +47 39 51 50 40 48 46 56 51 49 49 40 +44 51 56 58 88 106 120 133 143 142 136 128 +127 124 125 132 140 149 154 156 153 159 160 156 +162 165 162 167 168 165 166 163 164 166 164 166 +163 167 163 165 161 160 161 159 161 160 160 164 +166 163 159 161 163 164 162 160 164 163 165 160 +160 162 158 159 160 158 159 159 160 158 161 158 +155 157 156 157 157 158 159 158 154 157 158 160 +159 155 155 155 156 155 156 153 153 154 153 147 +105 105 111 107 103 103 105 105 103 106 104 103 +105 103 108 96 96 101 99 95 96 87 89 90 +88 92 99 105 116 130 132 144 145 148 155 157 +163 165 170 172 170 170 170 174 174 171 173 173 +171 175 173 173 170 173 168 161 157 153 149 143 +137 124 112 108 92 82 77 72 73 75 70 77 +79 84 79 95 90 96 93 92 100 93 98 98 +96 97 98 95 94 103 97 97 96 101 97 104 +95 99 100 95 96 100 98 101 101 97 102 106 +109 101 103 108 111 113 116 115 114 114 116 113 +114 109 114 109 106 108 97 95 91 90 122 192 +222 215 216 216 206 210 217 207 170 120 98 100 +96 106 112 120 119 111 112 113 118 120 126 122 +125 117 109 105 112 118 126 132 129 138 134 128 +133 132 131 132 118 122 121 119 127 117 81 46 +39 42 49 59 52 44 59 83 80 61 57 48 +43 43 44 47 46 52 47 46 42 47 60 88 +94 87 65 58 65 84 86 96 77 42 38 47 +63 87 80 37 42 43 57 91 103 124 141 133 +91 69 62 54 46 46 41 47 41 42 38 41 +35 33 34 36 40 37 46 95 127 148 122 103 +105 95 91 118 149 180 173 134 119 165 158 166 +188 182 178 179 180 181 180 185 188 192 190 190 +190 185 180 176 170 162 165 154 155 162 164 165 +168 171 172 176 181 182 178 176 165 162 154 158 +165 171 173 181 182 180 186 184 186 192 197 195 +196 193 193 200 200 200 197 199 198 196 200 198 +199 197 201 198 198 205 204 204 205 199 201 198 +193 183 173 159 136 118 106 90 87 86 66 52 +40 45 43 41 41 68 88 84 81 64 81 135 +152 134 137 164 150 156 156 137 88 56 48 54 +58 51 53 44 44 43 48 44 43 51 48 47 +58 56 58 52 58 55 54 59 57 59 64 70 +59 57 67 57 54 51 45 51 47 44 43 39 +46 54 47 51 46 46 43 43 49 53 58 67 +90 106 126 138 139 140 136 135 121 127 129 135 +144 150 152 155 152 150 149 155 158 160 165 164 +164 165 167 162 161 164 167 168 166 165 163 160 +162 165 162 157 161 159 159 158 162 156 161 163 +157 162 165 163 160 162 164 163 162 160 161 161 +162 157 160 159 163 161 160 155 159 157 158 159 +159 159 155 157 157 160 159 157 155 156 152 155 +156 152 153 155 153 151 148 148 +102 102 105 107 +102 104 104 108 101 111 105 102 109 98 101 97 +97 97 95 99 95 91 92 90 88 91 99 116 +120 126 132 141 145 154 155 161 161 164 167 174 +169 171 172 175 172 172 172 173 173 173 169 172 +172 169 167 164 163 156 150 142 138 130 119 110 +96 84 76 76 67 75 78 76 80 83 86 88 +89 98 94 95 94 93 99 97 100 102 104 100 +95 104 104 99 101 96 98 97 97 101 98 96 +103 102 98 93 100 99 105 110 106 108 103 109 +109 110 111 116 113 110 110 114 114 111 112 108 +108 106 98 97 93 92 110 182 223 218 212 218 +212 208 215 196 140 111 100 103 102 105 111 117 +114 115 110 114 113 115 121 118 114 114 112 111 +118 127 126 126 123 128 127 119 131 139 131 118 +113 126 125 118 120 114 93 51 45 38 41 47 +60 50 67 89 71 64 50 48 47 43 44 48 +45 48 50 55 45 47 50 69 91 80 83 58 +62 74 78 89 75 60 43 45 57 99 82 36 +35 41 55 49 83 114 136 135 107 104 94 95 +91 71 52 35 34 37 42 36 33 37 36 36 +33 50 90 131 155 149 116 90 83 101 117 150 +179 182 164 137 119 141 149 172 186 186 182 175 +181 186 185 187 192 193 193 192 188 181 178 167 +168 164 164 161 161 161 165 164 170 175 172 180 +183 182 178 172 166 164 160 165 170 173 171 177 +184 182 184 186 188 192 197 194 194 191 194 198 +202 202 198 201 199 200 199 197 203 199 203 202 +203 205 204 201 205 201 204 199 195 185 175 163 +147 127 108 93 85 83 71 51 43 41 46 39 +37 54 89 81 76 60 73 128 149 147 135 160 +159 163 157 129 86 53 47 49 43 42 41 47 +44 48 46 47 49 47 50 50 49 55 54 61 +52 65 57 54 57 63 62 61 62 59 61 59 +43 52 45 42 45 45 44 44 47 47 54 50 +47 45 48 47 47 53 62 80 103 118 132 141 +140 138 133 131 127 128 138 142 146 152 152 153 +148 147 151 150 154 155 156 162 167 163 164 166 +165 164 163 167 165 165 165 164 162 162 163 160 +160 163 163 161 160 160 162 161 161 160 165 163 +165 164 164 162 163 162 162 161 157 160 159 161 +161 156 156 156 158 157 158 157 158 159 159 156 +155 157 158 155 158 152 153 157 154 159 154 153 +149 155 150 148 +106 106 106 104 107 110 104 110 +101 105 97 101 102 98 101 101 100 100 100 97 +97 96 93 90 91 100 105 107 121 128 135 138 +144 151 153 156 162 169 168 171 169 172 172 170 +174 174 174 175 174 172 170 173 174 173 166 163 +159 156 150 143 142 126 117 102 97 85 82 73 +66 76 75 77 80 82 79 86 94 101 93 90 +99 99 95 98 96 101 98 95 100 101 101 104 +103 103 102 95 97 99 95 97 97 98 105 103 +108 102 100 106 102 106 108 111 109 108 110 110 +111 112 115 113 112 113 109 109 109 110 103 100 +94 94 99 167 221 221 214 218 217 209 205 173 +120 108 102 103 106 105 103 104 111 114 111 117 +118 113 119 110 102 103 112 122 127 132 132 122 +122 124 109 100 127 132 123 115 109 114 123 127 +129 119 104 87 48 43 37 42 53 63 91 94 +53 45 46 43 43 52 41 42 42 42 46 47 +47 43 53 66 76 84 80 77 59 63 72 86 +84 68 56 40 57 104 83 35 34 44 57 43 +59 98 144 134 98 86 80 100 109 98 87 50 +37 33 41 34 35 30 33 39 45 79 133 158 +162 130 101 92 98 124 158 180 170 161 164 141 +122 123 134 175 189 186 174 175 180 180 191 192 +191 191 193 190 181 174 169 165 162 165 162 158 +156 160 159 165 169 172 181 185 182 178 176 162 +157 158 162 167 173 172 172 175 187 187 187 188 +192 192 198 195 192 196 195 198 200 203 200 201 +198 201 199 203 203 202 203 205 204 205 207 205 +205 205 205 201 199 189 180 171 152 135 108 100 +91 92 74 51 39 36 47 48 44 48 80 83 +75 65 68 114 154 152 146 158 162 168 157 119 +74 51 48 45 46 46 51 43 41 43 45 51 +44 52 49 47 50 50 49 55 56 50 54 58 +65 62 56 61 62 58 51 55 46 47 54 44 +48 46 39 47 42 51 49 54 45 53 49 57 +55 56 72 87 112 126 134 144 142 135 134 128 +130 132 143 146 149 153 155 149 153 149 147 151 +151 157 152 157 158 157 164 160 164 167 168 164 +164 165 164 166 163 165 164 160 163 162 162 159 +160 159 162 161 160 160 164 161 164 163 162 167 +161 160 160 160 162 159 154 159 160 158 160 157 +158 155 159 158 159 159 156 157 156 158 158 159 +157 154 153 157 151 157 150 152 153 155 148 149 +99 99 107 105 107 110 103 105 103 102 96 102 +103 99 98 101 101 102 101 100 92 98 90 92 +91 100 104 113 122 126 134 137 145 153 158 156 +164 168 164 174 177 173 173 169 171 168 176 176 +171 172 173 174 174 170 168 163 157 157 153 146 +139 129 119 102 98 78 71 72 72 70 83 82 +81 82 84 91 93 91 90 91 96 94 97 93 +102 98 102 102 100 100 100 99 105 107 100 97 +95 101 97 98 98 99 100 102 104 103 103 104 +105 103 107 110 108 110 114 109 115 118 119 117 +110 111 109 112 110 107 106 94 102 97 99 141 +206 223 219 212 218 215 202 152 107 106 105 104 +105 106 104 105 106 112 119 117 114 119 120 117 +109 116 123 127 126 130 132 132 126 132 106 87 +119 122 114 112 113 113 120 110 110 117 104 70 +44 39 42 44 61 87 96 85 44 45 40 46 +37 43 46 54 51 45 42 49 48 43 48 50 +56 73 85 79 68 57 63 73 74 68 63 48 +69 99 89 42 44 60 60 44 50 81 142 132 +87 49 61 63 74 65 61 46 41 37 36 35 +34 31 32 41 85 129 154 160 135 114 108 104 +119 158 184 180 159 166 162 152 127 123 141 160 +187 186 177 180 166 182 188 195 188 188 189 183 +181 172 170 172 161 164 162 160 160 158 158 167 +176 180 182 187 177 176 158 152 154 162 167 168 +167 175 175 180 186 184 186 189 190 191 196 196 +194 194 198 201 203 200 201 202 200 201 200 202 +203 204 203 203 209 209 209 208 207 209 209 206 +203 192 185 174 164 137 115 104 88 89 76 62 +45 37 41 46 47 46 65 73 84 75 62 101 +146 153 147 155 173 162 153 124 76 44 44 47 +50 48 42 43 46 49 44 49 43 51 51 54 +49 52 53 52 57 49 63 58 61 55 63 62 +68 71 57 52 47 42 44 43 49 46 50 45 +47 50 61 49 41 45 45 48 54 62 78 94 +118 130 142 139 135 132 131 127 126 135 146 150 +154 153 154 149 150 151 149 151 154 151 152 154 +155 158 158 156 161 159 161 165 167 164 162 163 +160 167 161 164 162 164 166 161 159 159 160 159 +161 162 161 161 163 160 162 166 160 161 160 159 +162 160 159 160 159 158 158 160 156 156 156 155 +160 159 158 156 158 159 159 161 159 153 156 155 +154 156 151 153 154 151 147 150 +101 101 102 100 +99 105 99 103 105 104 103 97 101 100 104 96 +99 102 99 103 99 95 91 88 89 96 102 109 +118 130 133 141 146 150 153 160 163 166 167 170 +173 170 171 172 170 172 172 176 174 175 174 173 +173 168 168 167 157 158 159 149 137 129 122 109 +105 84 81 74 69 67 78 76 78 84 81 86 +90 97 90 96 91 101 100 100 97 96 102 94 +97 101 102 97 102 97 101 103 98 98 101 101 +99 101 99 100 106 100 105 102 102 103 106 109 +105 106 111 111 113 119 118 120 114 113 111 110 +112 109 107 104 99 95 93 119 185 220 221 213 +218 217 201 137 107 104 112 110 112 109 114 105 +104 112 117 112 109 109 118 112 116 133 134 129 +121 125 127 128 128 130 115 86 101 115 112 110 +112 111 101 85 86 79 86 63 46 46 50 51 +81 95 97 77 50 42 41 40 38 44 49 54 +50 46 49 58 50 48 52 46 51 56 83 84 +72 72 69 66 68 65 66 58 63 96 87 43 +45 62 63 55 60 86 145 142 90 40 39 43 +43 43 41 37 36 42 32 30 29 32 36 73 +133 164 156 136 112 107 114 132 160 185 188 167 +163 164 163 162 134 127 131 152 175 180 181 173 +163 178 193 192 183 185 178 187 179 168 166 165 +160 167 160 164 160 164 163 174 175 179 187 181 +165 155 156 155 162 166 172 171 172 180 182 178 +188 184 191 195 194 197 196 198 198 195 195 200 +206 202 200 204 197 198 200 202 202 205 207 206 +211 212 211 210 207 211 211 208 199 193 186 179 +163 148 121 107 95 96 82 62 44 41 38 43 +45 46 53 66 76 72 63 86 135 153 155 159 +171 165 151 117 77 49 43 49 47 47 43 41 +50 55 49 44 46 52 52 52 55 58 63 52 +59 54 56 53 54 57 64 65 62 53 46 50 +47 44 45 39 43 39 41 45 46 54 51 46 +44 45 45 54 56 67 79 111 125 138 141 143 +138 137 133 126 131 144 148 155 158 153 155 153 +151 149 148 149 148 156 147 149 149 156 159 153 +156 155 161 156 161 161 158 157 160 157 160 159 +161 161 159 158 161 160 161 160 158 159 164 160 +163 163 161 167 163 161 163 157 156 159 156 159 +161 158 157 157 156 157 158 159 157 155 156 159 +157 157 157 157 155 155 156 155 156 155 154 153 +151 151 149 149 +103 103 104 102 105 103 106 102 +107 101 104 104 103 101 104 103 98 98 100 101 +95 101 96 90 92 99 107 112 119 127 133 142 +145 150 156 159 164 164 167 169 172 174 170 171 +172 175 169 173 174 177 172 174 174 171 169 165 +162 153 156 146 141 131 119 107 97 81 81 67 +67 71 78 80 81 79 86 90 90 95 93 90 +91 96 98 94 103 96 99 95 96 101 97 100 +102 106 100 100 99 104 100 99 101 99 102 98 +102 105 103 101 104 100 104 105 112 125 124 106 +111 116 116 114 112 115 112 115 113 112 112 106 +100 97 94 106 167 220 222 216 218 216 187 128 +113 109 109 111 114 112 113 115 109 110 118 114 +107 107 98 109 125 141 139 124 119 119 122 128 +128 128 109 88 86 98 90 94 78 75 64 56 +64 67 65 67 52 52 46 46 84 97 98 63 +45 42 39 44 40 44 51 58 46 46 55 61 +49 48 46 52 48 50 64 80 75 73 64 60 +68 57 64 77 70 88 79 40 42 75 59 52 +44 88 135 137 94 39 41 38 35 45 39 35 +35 32 29 30 30 38 65 115 163 171 136 113 +103 115 134 159 182 190 173 165 164 165 164 163 +140 134 128 155 165 163 171 171 162 176 191 190 +182 173 172 188 173 167 173 169 169 170 161 167 +160 168 162 174 176 182 181 157 142 153 159 166 +164 169 176 173 175 180 187 179 184 189 193 196 +194 196 204 199 199 198 199 200 202 201 202 202 +199 200 200 204 202 202 207 206 208 208 209 208 +210 212 212 208 204 200 194 184 166 149 126 107 +98 91 80 69 49 37 34 37 45 46 48 63 +69 76 70 60 116 149 155 155 178 174 155 127 +77 47 46 49 48 53 45 46 48 66 68 54 +56 62 56 52 56 57 52 53 54 54 58 61 +65 66 56 63 64 58 53 48 51 43 47 46 +43 49 50 50 50 58 55 48 40 44 43 52 +54 76 95 116 129 143 147 143 135 134 123 125 +139 145 153 155 161 155 156 152 149 154 152 150 +152 152 149 146 146 152 155 151 152 152 153 153 +159 155 157 160 163 159 157 159 157 159 163 161 +161 161 161 160 159 160 163 159 167 160 163 165 +164 164 159 158 160 160 158 160 161 161 160 160 +155 156 156 160 154 160 156 157 156 158 157 155 +152 155 157 152 156 153 152 150 150 152 152 149 +99 99 99 109 103 101 108 102 106 100 104 103 +104 103 100 98 97 94 98 96 96 94 90 91 +89 88 99 108 117 132 133 141 147 150 153 160 +164 163 167 166 171 169 171 175 171 171 172 177 +176 173 170 172 174 175 173 168 161 154 147 142 +137 135 121 115 96 89 80 76 72 80 81 74 +79 81 84 84 94 95 93 96 97 96 101 103 +103 99 106 100 98 105 108 105 98 104 99 98 +101 101 103 101 101 100 104 100 101 105 101 102 +97 98 103 111 139 166 123 108 112 116 114 118 +111 113 118 115 110 112 108 102 100 98 96 104 +147 208 224 221 219 213 180 121 114 115 106 112 +116 122 119 116 115 112 109 111 102 98 104 122 +133 138 130 124 127 121 118 108 99 103 80 64 +63 58 72 87 79 81 73 75 77 91 91 90 +67 56 46 55 84 104 91 50 45 40 42 45 +38 45 64 66 55 45 64 57 49 42 46 52 +43 47 58 59 65 76 57 58 65 53 52 72 +85 93 80 49 54 96 58 43 45 63 111 142 +112 43 45 41 35 38 37 33 34 33 30 32 +37 54 111 151 167 142 115 102 114 131 159 180 +191 177 168 164 164 163 165 159 142 131 136 163 +168 163 157 158 168 182 192 186 181 172 182 180 +171 171 171 168 169 171 166 168 164 170 167 178 +179 174 156 137 147 156 158 166 165 167 170 173 +175 179 184 187 183 188 193 192 193 192 199 200 +195 193 202 200 201 201 202 199 201 201 198 201 +205 202 208 208 206 208 210 210 208 208 210 210 +207 201 196 185 170 157 134 120 101 97 89 70 +55 48 38 39 38 38 44 56 69 76 79 55 +85 144 158 159 168 172 158 136 82 48 55 58 +54 58 47 58 43 53 52 49 51 65 54 53 +53 52 58 51 59 57 55 59 65 65 62 64 +59 52 50 47 44 46 48 48 49 48 52 54 +56 56 54 55 43 42 45 49 54 80 104 120 +136 146 144 140 132 130 124 128 141 148 152 160 +164 159 158 151 153 157 151 146 153 152 151 150 +153 148 147 150 154 152 151 155 151 155 156 156 +158 159 158 160 157 158 162 161 160 161 159 159 +163 161 162 160 161 163 161 159 163 162 162 160 +158 158 160 159 160 159 164 161 156 157 156 161 +158 156 155 157 155 157 156 155 159 153 156 152 +154 157 152 151 153 152 149 147 +99 99 101 109 +109 105 101 98 110 102 105 108 101 103 103 98 +101 97 98 98 100 93 97 91 93 96 100 109 +117 127 135 146 146 151 156 161 162 165 169 170 +169 175 173 173 173 172 172 174 174 177 174 173 +172 175 173 166 161 156 150 143 137 132 118 108 +101 88 85 72 70 74 77 78 76 83 84 86 +90 85 88 94 98 97 94 104 106 99 100 104 +102 101 107 107 101 105 107 100 99 100 105 96 +98 101 99 97 100 97 99 101 105 105 108 139 +184 153 113 110 108 114 118 114 118 110 114 114 +107 110 107 106 108 101 98 103 126 179 227 225 +221 212 166 116 117 113 106 116 116 126 119 115 +115 114 102 100 99 104 126 139 132 132 130 127 +130 134 123 94 75 91 90 80 80 60 71 91 +88 78 56 54 55 78 82 71 51 42 44 53 +102 108 74 52 44 41 41 44 46 54 69 69 +57 58 59 57 41 43 45 46 47 59 53 49 +52 67 62 65 57 54 52 68 90 96 99 58 +66 106 55 44 47 51 80 144 128 55 41 45 +42 37 36 32 35 31 33 35 51 106 154 160 +142 120 107 105 125 156 180 180 171 171 165 165 +166 165 167 163 148 132 141 167 175 172 162 158 +176 186 192 190 188 183 182 177 167 166 167 168 +170 171 171 169 170 172 173 171 167 155 146 149 +162 160 161 169 168 171 173 174 174 181 186 188 +187 183 195 195 192 195 195 200 198 196 200 203 +200 200 200 200 200 202 203 204 206 205 210 207 +205 206 210 212 208 207 211 212 205 201 195 191 +177 164 138 122 108 98 87 76 54 48 45 44 +42 39 42 41 55 69 82 63 65 137 151 154 +164 169 165 133 100 57 51 64 62 53 50 42 +51 59 53 48 47 59 54 54 56 57 56 54 +57 59 58 62 67 60 67 67 62 54 55 52 +46 42 43 42 48 52 49 55 53 62 54 47 +41 45 43 45 57 80 113 127 142 145 141 137 +133 131 131 134 143 153 158 160 163 158 156 156 +151 156 151 154 151 151 150 147 149 151 150 148 +148 150 151 149 152 149 151 153 152 154 151 158 +161 160 159 161 160 157 161 162 160 159 162 158 +159 161 157 160 159 160 162 163 163 159 159 157 +160 157 155 157 160 158 153 157 158 155 157 155 +155 155 158 157 157 153 153 155 157 155 154 153 +153 150 149 152 +103 103 106 102 101 103 100 103 +103 102 100 99 103 98 102 98 104 99 96 99 +94 94 94 91 88 96 104 104 117 127 135 138 +144 149 159 161 162 165 170 172 169 172 172 170 +175 170 173 178 176 173 173 173 172 173 170 168 +159 155 153 146 137 126 117 111 95 88 79 73 +71 81 71 77 79 84 79 88 93 90 92 92 +94 98 97 102 104 103 98 106 103 103 102 105 +98 106 108 99 103 98 97 100 103 97 99 99 +99 97 96 101 102 111 143 175 163 119 109 110 +114 109 119 116 116 112 112 115 112 115 110 111 +109 103 107 104 111 154 219 228 220 212 162 113 +108 117 112 113 118 119 119 125 115 108 98 96 +113 117 129 135 132 122 126 120 132 140 133 114 +105 122 107 103 96 73 70 81 83 67 47 45 +51 62 55 46 41 44 43 60 104 110 76 45 +49 44 42 42 47 61 70 63 49 51 58 52 +49 51 49 55 54 67 46 43 45 59 61 63 +57 50 49 54 79 99 110 102 92 122 63 54 +44 50 59 127 137 70 37 35 39 31 34 35 +39 35 41 43 98 145 165 148 129 116 113 123 +160 180 185 165 174 173 168 168 161 168 167 169 +149 134 141 169 182 176 168 166 175 184 188 192 +197 184 184 174 166 169 170 169 170 173 170 171 +173 169 175 160 150 146 148 155 163 165 164 169 +166 173 170 176 176 185 188 190 185 185 190 194 +193 193 196 198 196 197 197 201 199 201 202 201 +201 200 205 204 208 208 208 208 209 208 209 210 +208 212 214 212 208 203 195 193 181 163 147 126 +110 96 81 77 58 58 49 44 37 38 40 42 +47 54 75 70 44 118 151 151 160 174 169 134 +107 64 51 51 50 57 46 41 46 45 49 52 +51 51 55 59 57 59 60 57 58 68 57 60 +65 65 60 60 55 52 50 46 45 46 46 43 +50 46 48 56 51 51 54 49 41 42 44 46 +68 94 116 127 138 143 141 134 132 130 135 136 +147 156 163 161 162 157 156 155 155 148 149 153 +154 150 150 150 149 151 150 148 148 150 152 147 +147 145 149 148 149 154 151 150 154 153 155 157 +162 155 157 157 161 159 160 158 157 160 159 163 +161 159 160 161 161 161 160 158 160 158 156 159 +160 161 158 155 152 157 156 158 156 154 152 155 +159 152 153 158 153 157 152 157 153 153 152 148 +106 106 104 106 103 107 105 107 98 104 102 102 +104 99 102 99 99 98 100 95 95 96 92 90 +91 98 98 113 118 128 135 141 146 147 155 158 +161 164 168 171 172 173 172 172 174 176 174 174 +171 173 174 174 171 172 173 169 160 155 150 144 +138 131 118 109 102 90 82 70 76 78 69 81 +77 85 87 89 95 93 98 93 98 103 98 100 +102 100 103 105 105 103 107 105 102 104 105 98 +104 101 98 98 101 99 101 100 96 99 98 101 +107 130 166 141 120 112 113 110 120 120 114 111 +115 115 112 114 118 116 115 117 112 109 112 100 +112 131 188 227 222 213 170 119 109 117 113 114 +116 120 117 121 120 115 99 105 125 120 125 122 +131 128 124 125 132 142 138 130 122 115 111 111 +104 98 85 88 68 51 46 44 47 50 42 49 +37 46 53 55 105 109 66 39 41 41 46 45 +64 75 71 55 43 53 60 47 44 49 53 50 +65 53 54 41 45 54 65 59 55 55 52 49 +63 97 114 105 119 126 79 63 42 53 53 103 +136 88 40 32 36 31 34 34 29 36 53 92 +145 168 148 132 123 118 124 149 183 184 170 169 +182 178 173 169 165 162 176 163 147 138 142 169 +180 173 171 175 174 185 190 195 191 186 182 171 +166 171 171 167 171 173 168 168 171 164 160 148 +146 147 151 156 164 165 169 171 168 171 173 179 +182 184 190 190 190 190 186 195 195 196 199 202 +198 198 197 197 202 204 202 202 202 200 202 202 +208 208 207 209 211 209 210 210 211 212 214 210 +206 201 195 195 185 167 152 131 114 99 81 77 +60 52 48 40 34 34 39 41 50 53 75 82 +48 102 156 155 158 171 166 137 114 74 55 48 +49 56 60 46 47 50 54 52 53 52 54 56 +55 54 57 60 57 60 60 62 66 70 64 60 +53 54 50 50 45 42 41 48 50 45 55 54 +60 53 56 40 44 41 42 52 74 98 122 137 +139 143 139 137 130 130 139 143 154 155 162 166 +164 158 159 156 155 155 154 154 152 152 151 152 +151 151 154 148 152 152 150 146 147 150 151 153 +153 150 152 149 154 150 154 154 153 152 153 154 +158 157 156 158 157 159 160 160 162 160 158 162 +159 160 161 164 159 160 157 158 158 156 160 156 +154 156 156 155 157 156 154 154 154 152 158 151 +156 153 151 154 151 154 148 147 +102 102 108 113 +106 103 103 107 106 102 100 101 100 102 103 100 +99 98 103 100 97 93 91 91 89 94 102 113 +117 127 133 141 147 149 156 159 163 171 170 173 +169 172 172 172 171 175 174 171 173 174 173 171 +173 173 167 165 163 154 150 140 133 130 112 107 +99 89 83 73 68 70 82 84 83 85 85 93 +96 92 93 104 101 100 99 102 102 101 102 103 +105 107 106 107 100 105 103 104 99 102 98 100 +98 100 97 98 102 103 99 103 110 138 134 114 +113 111 113 117 112 114 113 114 113 117 116 115 +117 115 115 116 110 108 108 108 107 115 153 216 +225 220 188 126 110 113 116 117 110 113 111 114 +115 115 113 124 128 124 125 113 118 132 132 130 +134 135 133 130 118 105 103 106 106 96 89 83 +57 52 52 53 54 57 38 40 36 45 57 51 +90 105 64 38 39 38 46 48 71 81 62 48 +55 64 66 42 41 44 55 52 55 54 41 43 +45 57 71 58 45 57 56 51 71 72 102 107 +111 121 89 76 59 58 44 93 152 105 64 36 +30 27 31 29 37 45 89 131 160 150 132 123 +115 123 146 180 190 170 170 175 184 185 173 173 +169 168 171 173 153 137 144 166 167 166 166 181 +186 188 190 191 196 190 179 170 164 168 172 167 +167 169 166 162 165 152 145 149 155 156 156 159 +166 165 168 166 168 171 173 181 183 186 192 193 +189 191 192 193 197 195 196 202 199 200 201 195 +202 202 202 202 201 201 204 203 207 209 210 208 +209 209 209 209 213 211 211 209 207 206 201 200 +189 171 153 134 114 102 87 80 70 54 46 38 +33 31 34 41 45 48 74 88 59 76 157 165 +163 168 164 132 104 71 54 60 49 53 73 57 +45 50 56 51 50 54 58 53 59 57 61 61 +57 55 62 59 65 66 60 60 59 48 46 52 +44 42 47 44 48 48 52 50 54 53 52 40 +41 47 53 60 89 106 129 136 147 142 142 135 +128 127 144 147 157 160 166 165 162 158 159 158 +155 155 155 156 154 155 152 154 151 158 150 151 +153 150 148 150 148 152 149 144 151 159 149 149 +152 151 150 149 152 151 150 151 153 157 157 161 +159 157 160 160 159 161 159 159 161 158 162 158 +159 157 157 158 158 158 157 156 154 155 158 156 +153 157 155 154 153 154 156 151 152 152 151 147 +152 150 148 146 +106 106 103 107 106 106 103 99 +101 103 102 95 100 99 103 96 96 97 98 98 +97 91 92 90 88 97 106 110 118 127 134 141 +142 150 153 162 162 167 170 171 168 173 175 174 +175 175 169 175 172 173 178 171 176 174 168 165 +156 157 152 145 138 132 128 108 101 88 84 75 +71 76 83 82 85 86 86 91 91 93 99 95 +103 104 102 104 101 104 103 100 103 108 99 101 +101 101 100 97 102 99 98 98 98 96 99 102 +106 100 106 109 108 126 118 109 114 110 113 117 +113 117 120 118 117 117 115 117 112 113 117 116 +118 114 110 105 101 112 124 193 225 225 200 139 +113 118 117 113 113 109 102 109 113 119 125 130 +130 124 118 117 113 125 134 135 124 131 128 124 +105 103 103 99 83 61 62 55 53 56 53 51 +67 45 40 38 38 46 40 43 87 110 62 40 +43 46 41 56 64 62 46 52 55 67 51 43 +47 50 54 61 55 48 49 48 46 67 59 48 +45 48 60 75 86 73 89 91 69 103 101 94 +82 83 61 104 163 139 111 53 33 29 28 32 +40 81 133 151 155 128 120 113 122 142 175 192 +182 166 173 185 180 185 176 177 175 179 178 176 +161 140 143 164 166 165 168 176 182 192 198 197 +202 190 176 167 166 172 173 170 165 161 162 164 +157 148 145 154 155 160 159 161 165 170 170 171 +170 168 170 180 184 187 188 191 192 193 192 194 +193 195 197 196 200 200 203 196 201 203 204 204 +202 202 203 200 208 204 209 208 208 210 210 209 +209 211 211 208 209 207 202 197 189 175 158 140 +116 99 84 87 71 58 44 39 35 34 34 39 +38 49 65 89 69 63 146 169 161 163 171 129 +99 89 56 56 50 50 51 67 57 55 60 59 +49 52 55 56 60 57 57 62 61 61 66 62 +65 65 66 55 62 52 49 45 52 43 49 46 +47 51 51 54 53 47 47 43 45 51 56 80 +95 117 133 139 144 143 137 135 131 131 143 150 +156 164 168 167 167 165 157 163 156 156 154 154 +153 154 150 150 150 150 152 150 149 150 151 148 +145 149 144 147 150 148 149 149 147 150 150 149 +149 147 143 145 149 150 153 152 152 156 156 159 +157 160 160 161 160 161 158 158 159 157 156 155 +156 157 153 157 156 154 155 152 153 154 154 153 +156 154 153 153 149 150 148 149 151 149 147 148 +101 101 106 104 106 101 104 102 101 100 99 94 +100 100 99 99 100 99 98 94 90 89 90 91 +105 100 102 104 117 123 130 138 144 148 153 154 +163 166 168 171 168 170 173 174 173 176 174 176 +172 175 175 173 176 173 173 164 161 155 149 142 +141 129 111 114 96 90 81 77 79 82 86 85 +83 83 86 91 98 100 97 99 101 102 99 100 +98 99 103 100 100 101 99 101 102 102 104 99 +99 100 105 97 100 100 102 105 103 102 104 105 +108 115 118 113 116 113 113 117 114 115 117 119 +114 117 121 121 116 118 115 115 116 115 110 112 +105 106 115 164 217 226 205 151 117 122 118 116 +113 113 105 105 114 131 127 125 124 122 132 136 +121 120 135 135 131 125 116 107 101 98 99 94 +72 45 49 49 48 50 63 79 62 43 39 37 +44 40 40 48 78 111 74 44 51 54 56 62 +50 45 44 53 60 70 47 45 50 54 49 56 +66 49 48 54 58 72 60 53 37 36 45 71 +105 90 77 100 59 75 88 96 93 85 86 118 +166 137 93 38 29 30 32 42 69 118 153 154 +130 120 122 119 128 170 189 182 164 169 172 185 +179 184 186 182 180 171 181 179 152 145 146 152 +166 159 162 173 182 194 200 198 195 182 172 164 +167 168 168 163 159 161 165 148 146 151 154 156 +159 159 163 161 165 173 170 169 166 173 177 181 +179 185 187 188 191 194 193 196 193 194 196 193 +197 198 202 201 202 204 206 204 204 202 199 206 +206 206 208 209 207 210 210 210 211 212 213 212 +213 208 207 197 192 179 161 144 123 102 94 87 +77 61 51 43 37 34 40 41 40 49 59 83 +78 55 131 176 167 169 169 123 97 89 64 57 +53 58 42 42 45 53 56 60 49 59 52 53 +66 64 53 64 62 60 59 66 61 68 67 58 +56 48 45 42 45 48 50 45 47 50 49 53 +55 48 42 42 39 45 56 82 114 130 143 145 +143 142 136 131 129 138 144 151 157 165 162 163 +162 165 162 162 166 158 160 157 156 155 156 153 +148 152 151 149 150 150 151 148 146 145 148 147 +144 151 149 150 153 147 148 146 142 146 145 145 +150 147 150 145 150 148 155 156 160 155 159 159 +156 154 158 159 155 155 157 155 154 155 159 156 +155 153 155 156 155 154 150 153 155 154 155 151 +151 153 150 150 152 152 147 152 +107 107 105 107 +104 107 107 106 100 101 96 96 100 95 104 106 +93 97 101 89 95 94 94 92 95 96 100 108 +114 125 127 135 144 148 151 158 163 168 166 169 +170 174 174 175 174 174 175 174 175 172 175 174 +175 170 172 165 162 157 150 143 139 132 122 108 +97 88 85 78 82 79 83 91 89 88 90 92 +92 92 97 92 98 101 96 100 102 102 103 101 +105 96 101 99 101 103 105 97 103 100 106 100 +98 108 99 101 106 105 100 108 112 111 118 116 +114 116 114 108 112 117 118 120 117 119 119 116 +115 120 115 117 118 115 115 114 110 109 109 137 +197 226 208 157 126 118 119 115 110 116 109 106 +122 136 129 119 124 124 128 134 138 123 127 132 +129 119 103 96 94 102 97 76 56 59 58 47 +48 64 83 92 46 36 39 40 35 45 39 47 +69 105 88 52 70 74 78 53 42 44 46 57 +66 49 49 49 46 55 54 52 54 50 49 56 +72 75 57 56 37 38 44 55 107 92 59 102 +67 65 81 71 54 50 51 78 154 135 81 42 +29 32 32 65 120 138 169 133 120 111 118 128 +161 182 178 170 169 169 174 188 184 187 189 180 +180 172 182 178 147 153 142 148 166 159 163 177 +185 197 198 196 187 173 170 161 165 166 161 163 +165 167 151 148 154 154 158 154 164 161 168 164 +168 170 172 174 170 172 178 181 183 183 188 189 +194 194 195 198 196 195 199 195 198 200 200 200 +202 204 204 202 206 202 203 208 207 209 206 210 +209 209 212 211 213 211 213 212 214 209 207 201 +194 183 162 145 126 105 98 93 79 61 53 45 +39 34 38 40 41 39 50 71 95 53 100 173 +163 169 169 131 98 109 77 44 46 49 45 44 +51 51 57 63 54 59 51 58 57 61 60 61 +56 53 60 68 67 59 61 53 53 53 46 42 +45 51 53 51 48 55 55 55 60 55 45 41 +44 52 74 101 121 136 144 146 140 141 137 134 +133 138 147 153 164 163 164 165 161 165 162 165 +161 163 164 159 160 157 158 156 153 156 153 150 +152 149 151 153 152 149 148 153 149 150 150 148 +148 148 147 147 144 146 147 148 148 146 148 146 +146 143 148 151 154 154 156 153 157 152 154 156 +157 154 156 156 153 152 157 152 152 152 152 154 +155 152 153 154 152 152 155 155 148 153 153 152 +150 150 149 148 +103 103 103 107 103 104 104 101 +100 101 98 97 101 99 101 96 96 95 92 92 +92 91 94 86 88 92 102 108 115 126 128 139 +143 147 155 156 163 167 168 171 172 170 171 173 +176 176 175 176 175 173 173 169 174 173 168 170 +159 153 151 145 141 126 116 107 98 87 80 73 +78 77 80 82 87 95 96 92 95 99 94 90 +95 97 97 99 102 99 102 100 97 105 101 105 +101 104 106 97 102 98 104 100 104 100 102 104 +105 101 102 108 107 118 133 125 108 110 113 111 +110 120 123 123 116 120 121 118 120 118 118 120 +119 116 114 114 114 111 113 124 156 214 216 169 +128 118 126 120 113 110 99 117 130 135 134 120 +122 129 132 134 138 129 118 120 130 118 92 89 +93 85 64 46 53 47 50 56 82 92 92 76 +42 42 39 43 42 40 41 43 52 89 108 77 +63 62 60 51 46 62 65 72 74 48 47 42 +50 55 70 48 48 44 47 61 81 63 56 55 +47 39 44 55 104 96 45 74 81 75 72 47 +39 34 36 46 110 145 104 46 27 33 52 105 +138 162 138 119 121 113 122 150 186 170 166 165 +171 173 171 179 191 193 188 185 185 180 184 175 +137 152 134 138 169 164 171 180 187 197 200 192 +178 172 167 162 160 158 161 170 163 157 151 153 +155 161 160 155 163 165 168 170 171 173 170 173 +170 175 171 177 188 186 183 190 192 196 192 195 +192 198 199 194 200 199 198 200 204 202 203 201 +202 204 203 207 204 205 206 208 209 210 209 211 +211 211 212 211 213 211 209 203 195 187 170 152 +133 119 107 89 78 72 55 45 41 42 40 42 +46 46 42 58 86 58 80 163 169 168 170 141 +93 116 80 47 45 51 48 48 52 54 54 55 +55 60 55 54 58 53 57 62 59 56 60 58 +60 73 60 59 66 51 49 49 46 48 48 52 +53 55 56 54 48 48 45 46 51 51 82 109 +126 141 147 145 139 137 130 127 135 139 152 154 +163 167 165 165 165 159 163 163 163 163 162 162 +162 164 156 155 156 155 156 156 155 152 156 156 +151 154 151 153 155 152 154 149 153 146 143 149 +147 145 146 144 146 147 146 141 144 143 145 145 +150 146 147 150 151 151 153 154 158 155 158 157 +151 154 154 154 151 149 153 151 152 151 156 150 +154 154 154 158 156 153 154 152 152 156 148 151 +104 104 104 106 103 103 106 103 100 98 99 101 +102 94 100 96 94 94 94 96 93 93 93 90 +85 87 99 106 116 124 130 139 144 152 154 159 +166 169 174 171 174 176 173 170 176 172 175 178 +175 174 174 176 173 171 166 165 157 157 146 143 +139 130 119 109 100 88 80 74 78 80 74 83 +89 91 87 93 93 98 97 94 103 96 101 98 +100 99 99 98 102 103 100 101 102 108 106 106 +99 103 104 98 101 102 102 101 99 104 103 102 +106 112 132 134 116 115 117 115 113 115 121 118 +120 119 117 124 124 118 122 123 118 117 112 114 +118 117 118 118 133 188 210 170 126 123 123 113 +105 103 113 133 134 132 139 137 126 127 131 132 +132 141 130 122 126 111 105 81 69 46 44 48 +61 51 42 82 112 92 104 57 39 35 40 40 +46 41 42 42 52 72 107 95 59 49 43 47 +47 51 77 91 70 53 44 43 53 54 57 45 +44 46 50 74 84 47 51 59 40 46 45 51 +82 85 42 51 76 81 64 42 39 35 32 43 +69 147 123 74 31 44 101 135 160 143 121 118 +126 127 148 177 170 157 167 167 175 176 174 175 +188 194 187 183 186 185 185 171 139 154 124 136 +175 171 176 185 191 196 192 182 175 169 164 160 +156 155 169 161 147 157 158 159 157 169 157 160 +167 168 169 171 173 173 172 173 173 178 176 174 +184 183 184 186 194 195 190 192 190 197 198 198 +198 198 199 199 206 204 204 201 202 205 204 205 +207 207 208 207 209 209 207 209 213 214 214 214 +214 213 209 205 200 187 169 152 140 118 102 94 +89 77 61 48 47 47 40 40 41 42 50 56 +85 67 72 150 169 169 176 157 90 113 62 45 +39 49 52 55 53 55 59 54 52 57 58 63 +56 57 54 52 60 55 55 61 64 57 56 49 +49 56 50 47 43 46 44 49 58 56 54 53 +49 42 48 45 46 57 83 115 132 146 145 143 +141 137 133 132 139 146 156 158 164 166 169 166 +166 161 163 163 161 161 161 159 162 161 157 159 +156 158 155 159 159 155 158 153 153 153 153 155 +151 152 151 153 151 152 146 148 150 144 146 146 +146 145 143 143 146 143 145 149 146 145 145 144 +149 150 148 153 150 151 155 151 153 155 152 155 +151 153 152 150 153 152 150 153 153 155 154 154 +151 151 150 151 151 150 149 146 +99 99 108 102 +103 103 106 95 98 106 100 102 102 96 106 97 +94 96 92 92 88 94 87 88 87 90 96 110 +124 125 133 138 143 152 155 159 163 165 170 169 +170 173 172 175 172 175 172 176 175 174 173 173 +174 168 169 164 162 158 149 147 139 135 116 103 +95 88 75 74 75 77 78 81 87 95 89 92 +92 95 93 96 94 99 99 98 100 108 102 101 +101 103 100 104 102 104 105 100 106 104 108 100 +102 107 97 105 105 103 109 107 104 108 116 123 +110 110 117 123 116 117 122 119 122 117 119 121 +121 118 117 121 119 121 119 115 111 118 120 119 +125 156 183 150 119 126 121 114 105 111 130 138 +130 129 132 133 135 127 128 132 132 137 137 131 +109 94 92 66 50 45 49 65 56 39 38 66 +80 99 103 50 44 40 37 54 55 39 40 42 +43 52 73 103 75 53 36 49 46 62 86 77 +52 52 44 59 52 46 57 42 47 42 53 88 +75 50 61 78 46 48 55 48 45 66 45 52 +78 83 62 35 34 30 32 36 51 114 134 90 +48 84 129 158 147 124 111 118 121 143 182 168 +157 161 165 165 170 175 179 179 186 190 186 184 +187 187 186 174 146 153 118 128 172 171 183 192 +193 190 184 169 170 160 156 153 155 161 164 153 +153 155 153 160 160 160 163 161 168 169 173 173 +172 173 172 178 173 177 176 175 178 180 183 187 +188 194 194 195 193 194 195 197 198 203 197 195 +204 203 204 201 202 204 203 201 206 205 207 210 +209 211 208 208 214 212 213 213 213 214 210 208 +202 192 176 157 143 127 101 95 88 76 67 55 +44 45 47 39 41 36 45 49 84 91 60 125 +167 167 174 163 94 109 59 51 46 55 48 38 +48 54 56 54 60 53 64 61 66 65 57 59 +56 59 61 62 60 50 56 53 54 53 45 51 +49 46 45 52 52 52 50 50 46 39 43 41 +50 69 96 116 135 139 148 143 142 135 135 131 +142 148 157 163 166 166 163 164 161 160 164 161 +164 163 160 160 160 160 156 160 160 163 163 163 +160 157 156 154 155 155 156 152 154 154 157 153 +154 154 152 150 148 145 145 145 146 145 148 144 +151 146 145 148 148 144 141 149 148 145 146 147 +144 145 149 148 150 152 147 153 152 159 151 150 +155 149 149 150 155 152 152 153 151 154 155 150 +151 151 149 150 +102 102 101 102 104 103 98 102 +98 102 102 99 98 98 100 95 99 98 99 93 +89 94 93 85 88 91 105 109 120 127 135 138 +147 152 151 160 158 168 170 171 172 173 173 176 +175 175 172 176 176 172 173 172 173 168 169 164 +160 158 153 148 142 130 116 106 99 83 74 73 +75 75 75 88 87 92 92 88 97 98 97 91 +103 103 97 102 98 102 100 97 105 103 105 102 +105 108 105 99 101 101 104 103 101 105 103 102 +104 103 107 109 104 109 116 116 118 109 117 112 +113 118 116 122 122 122 117 121 118 121 121 120 +126 122 121 120 117 121 126 126 127 137 154 137 +112 115 122 118 109 123 134 133 138 137 129 134 +145 136 127 128 123 123 125 117 96 83 72 49 +45 54 74 67 50 38 38 43 63 109 70 50 +41 40 49 68 51 39 47 44 38 42 52 73 +96 58 45 41 59 84 87 73 57 45 42 46 +55 47 57 42 43 42 59 95 64 42 69 92 +50 45 54 38 43 47 62 53 79 100 62 35 +31 33 31 32 44 79 125 103 94 114 154 159 +135 115 111 121 132 171 175 162 163 161 157 166 +165 170 181 181 189 187 185 182 190 187 184 177 +159 152 115 124 167 174 186 194 191 182 174 166 +161 160 153 150 155 150 154 154 155 152 155 161 +164 161 162 164 169 170 173 169 169 171 174 176 +176 178 175 182 181 183 180 189 192 193 195 193 +196 195 195 199 198 203 195 198 199 199 201 202 +201 203 203 201 205 204 207 210 211 209 211 209 +213 213 212 212 212 214 210 210 204 195 178 163 +145 131 110 93 95 86 76 61 50 47 41 44 +42 38 39 48 70 97 65 104 161 169 173 163 +104 89 66 51 67 60 49 43 59 53 50 59 +57 56 57 57 64 59 65 60 58 60 60 61 +59 57 55 44 47 49 53 51 50 47 51 57 +55 54 50 44 42 40 46 52 68 91 115 124 +135 147 143 139 138 134 127 137 143 149 161 161 +161 168 164 160 163 163 161 162 164 163 164 163 +159 161 158 157 163 165 166 164 158 159 162 159 +161 159 159 155 156 157 155 151 153 156 152 156 +152 153 140 147 142 140 146 144 148 147 149 149 +147 142 141 147 142 140 142 146 148 143 140 143 +146 147 150 151 152 151 153 153 150 148 150 154 +153 154 155 158 153 153 152 154 150 151 149 150 +100 100 102 105 98 105 99 99 99 102 102 99 +97 101 99 91 97 101 93 99 95 93 90 89 +88 95 99 109 115 126 137 138 143 147 147 156 +168 164 168 172 171 170 171 175 173 173 174 174 +177 174 175 173 174 173 171 161 161 157 154 149 +141 128 117 105 92 84 84 81 75 75 79 82 +89 86 89 92 95 95 95 93 96 98 103 101 +100 103 103 100 105 100 101 101 105 103 109 100 +100 104 101 99 101 100 103 100 105 109 108 106 +108 112 112 114 116 119 115 112 112 112 112 114 +107 113 106 114 110 110 110 111 106 101 102 121 +124 133 139 131 112 109 128 139 112 109 116 111 +122 125 127 131 139 142 140 141 133 125 127 128 +122 124 108 95 88 78 56 47 46 69 88 56 +43 33 36 38 68 118 63 56 42 39 73 84 +50 49 59 41 37 38 40 51 82 72 62 56 +89 98 83 61 50 38 40 40 49 55 55 42 +40 41 63 101 58 38 58 90 48 52 49 36 +39 51 70 52 78 122 83 32 32 35 30 30 +31 49 97 102 141 142 160 135 124 106 115 135 +163 177 165 160 163 160 156 162 161 164 175 179 +192 187 185 184 187 183 186 185 174 163 138 131 +170 176 183 194 184 174 167 166 159 156 157 156 +154 152 157 159 159 159 158 163 160 161 165 164 +171 170 174 174 171 172 172 175 174 175 179 178 +179 182 181 187 189 190 193 194 196 196 197 197 +198 202 201 197 199 197 199 201 201 202 202 203 +204 206 204 206 209 208 207 208 210 211 210 213 +214 211 209 211 205 195 184 170 148 134 116 101 +98 88 80 60 49 43 44 40 39 40 40 48 +70 100 80 104 164 172 173 171 109 88 72 49 +67 56 44 41 46 56 61 64 57 57 60 63 +57 55 63 63 66 63 63 71 63 56 53 47 +50 52 47 48 56 56 50 54 55 58 54 44 +42 43 50 69 76 108 119 131 136 144 140 135 +137 134 136 142 143 152 160 165 164 164 163 161 +159 160 160 162 158 161 160 160 160 159 162 162 +166 163 162 165 162 161 161 160 164 160 163 159 +159 159 154 155 155 155 154 156 151 146 152 148 +147 147 141 143 142 144 152 147 144 143 147 147 +146 142 146 144 143 144 141 142 144 146 146 145 +146 144 151 154 151 148 150 154 153 154 153 155 +152 153 152 149 147 151 152 150 +100 100 104 106 +99 101 101 106 106 101 99 98 100 101 97 96 +99 101 104 96 98 92 89 88 91 96 98 108 +118 129 132 138 144 150 153 159 163 168 174 171 +174 173 172 175 174 175 172 176 175 179 179 175 +173 175 170 167 158 156 154 145 139 131 115 102 +95 85 80 75 81 78 81 83 82 82 88 94 +93 95 96 95 101 102 96 101 103 104 98 101 +106 102 105 101 105 110 105 104 106 106 102 99 +102 102 103 104 105 107 108 107 106 115 107 113 +117 118 120 115 113 110 108 113 108 111 108 108 +110 100 107 105 99 100 103 113 129 147 146 119 +86 91 85 124 121 103 105 115 134 130 127 126 +133 145 136 134 122 122 127 130 121 114 98 91 +78 70 47 41 44 85 90 46 39 34 38 36 +79 122 69 48 43 58 98 52 40 39 56 40 +38 37 38 45 54 61 77 99 105 97 63 53 +55 39 40 47 56 59 45 42 44 44 81 100 +44 37 45 74 59 62 56 40 49 51 46 45 +99 139 96 41 30 30 28 31 33 40 62 107 +142 150 132 122 112 110 134 166 188 173 156 157 +162 160 158 161 161 165 172 175 187 188 185 187 +187 186 187 186 178 173 144 142 171 180 187 182 +167 168 166 165 160 157 154 155 155 160 165 165 +162 158 157 163 161 165 161 168 168 175 171 175 +173 173 176 175 174 178 180 180 178 181 184 185 +189 188 191 193 196 195 197 199 195 199 195 196 +199 194 195 197 202 200 201 201 201 205 202 204 +207 206 207 209 209 209 210 213 214 210 208 206 +202 198 191 172 154 139 115 101 91 88 80 64 +51 42 36 37 41 41 43 49 55 92 73 87 +150 170 174 170 131 88 85 45 56 60 46 45 +43 48 56 57 51 52 60 56 55 59 68 62 +63 64 66 64 58 56 49 46 42 43 51 46 +49 51 56 49 56 49 50 44 41 44 50 58 +82 114 123 131 139 142 141 133 135 134 134 142 +148 153 159 163 162 167 165 163 160 160 161 160 +159 160 158 158 157 158 160 159 161 161 165 161 +163 163 160 163 166 162 164 163 158 158 157 154 +156 157 153 156 151 154 146 150 143 146 145 147 +147 146 148 148 148 143 143 144 143 141 142 143 +143 144 143 142 140 144 140 140 146 146 146 146 +148 148 154 151 155 154 148 152 151 149 151 150 +149 150 148 151 +102 102 101 106 102 98 106 105 +102 98 97 105 99 100 94 95 97 94 95 102 +94 93 90 90 85 95 100 105 121 121 131 140 +146 149 152 156 165 170 171 171 171 174 174 174 +173 175 175 176 177 175 176 174 174 171 170 164 +163 156 147 143 137 131 118 107 100 87 79 74 +76 71 78 83 85 83 83 84 94 94 95 97 +104 98 99 99 102 102 99 102 105 105 104 105 +103 101 103 107 104 100 100 102 98 103 107 103 +105 107 104 105 108 109 113 113 116 120 118 117 +122 119 118 117 115 116 115 118 113 112 113 110 +112 118 116 122 137 139 112 88 91 84 97 121 +122 119 95 112 134 131 122 127 130 130 127 129 +124 121 122 129 126 120 108 102 87 69 43 42 +61 98 89 44 39 38 33 36 79 124 82 64 +47 63 79 42 36 50 55 60 47 50 45 47 +54 66 107 104 100 71 53 59 41 37 33 42 +57 53 44 37 40 54 88 99 41 37 42 70 +81 87 56 64 68 47 39 61 120 112 65 48 +35 29 29 32 32 49 83 113 117 125 108 97 +106 130 158 179 173 161 157 160 160 160 158 160 +162 161 166 172 187 186 189 189 180 183 185 183 +180 172 156 161 180 184 180 172 163 166 166 163 +154 153 153 156 161 165 168 163 162 163 162 158 +164 168 166 166 168 172 176 172 174 172 174 175 +175 177 180 180 176 177 179 184 190 192 188 193 +194 197 198 196 194 196 193 197 194 197 195 200 +200 199 200 203 203 203 200 205 207 207 208 209 +210 210 211 212 212 211 207 204 202 202 198 179 +159 137 118 101 95 97 77 67 50 43 39 39 +42 40 40 46 53 92 71 86 143 170 175 170 +137 100 88 45 46 57 48 50 59 55 59 53 +57 56 51 58 61 58 61 66 70 64 60 59 +62 56 50 49 46 49 52 50 47 50 52 53 +51 57 46 43 41 51 48 67 88 118 130 135 +142 140 136 134 133 132 135 143 152 157 163 165 +161 162 165 162 161 161 159 160 162 160 160 162 +159 161 159 162 161 161 167 164 162 167 163 163 +166 162 165 165 161 158 158 156 153 154 156 157 +155 149 150 152 148 148 145 150 149 144 152 146 +147 143 144 145 148 142 147 143 142 140 143 139 +140 143 145 143 145 141 141 144 143 145 151 152 +154 152 149 149 148 151 151 152 151 151 150 152 +102 102 102 110 103 99 102 104 98 99 101 94 +102 101 94 97 98 95 96 104 101 94 86 91 +89 92 100 102 117 129 136 141 146 156 156 160 +165 167 171 170 168 171 173 175 175 175 173 175 +179 175 177 172 172 173 170 169 159 156 148 141 +137 126 114 103 96 87 84 79 71 75 80 82 +86 91 83 88 95 93 94 97 100 99 100 100 +102 103 100 96 100 107 98 105 105 103 102 102 +97 103 105 105 101 104 106 101 105 105 107 107 +110 108 109 112 114 119 119 118 121 118 120 120 +119 116 119 125 117 119 119 121 123 118 125 126 +146 120 75 76 97 114 140 145 137 141 102 113 +127 125 123 131 127 122 133 135 127 119 119 114 +127 122 111 104 85 59 47 50 93 110 76 38 +37 33 35 39 85 127 90 62 63 54 52 36 +39 61 44 57 62 59 60 50 70 108 112 66 +56 70 53 52 36 38 45 43 58 55 41 38 +39 54 106 76 38 42 43 62 92 92 58 58 +58 40 43 93 117 61 40 44 40 36 32 41 +43 72 120 134 117 100 91 101 120 153 186 175 +161 160 163 163 165 162 156 157 159 162 165 174 +187 190 193 187 183 180 188 183 184 178 170 174 +184 180 171 169 166 165 167 155 152 153 161 163 +168 162 163 165 165 163 161 165 162 168 167 167 +171 171 180 178 173 176 175 175 177 177 177 179 +174 174 176 181 187 188 191 190 193 195 195 199 +195 198 195 193 192 197 193 200 199 200 200 203 +201 200 204 204 203 207 208 210 207 209 212 212 +211 213 210 210 205 205 197 179 162 137 118 100 +96 90 85 64 51 43 38 41 42 41 39 45 +52 80 72 77 120 171 171 176 145 97 91 54 +53 65 50 56 58 62 72 59 60 62 62 59 +59 59 57 68 68 65 63 57 59 56 54 49 +46 47 55 50 46 46 53 55 53 46 50 43 +44 44 51 74 103 122 134 140 139 138 135 130 +129 130 137 147 152 160 162 162 161 164 163 162 +160 161 162 164 159 163 164 161 162 158 160 163 +159 161 163 164 164 166 165 166 167 162 166 167 +164 161 160 161 159 156 159 156 155 151 150 150 +149 148 147 148 149 148 148 149 145 142 142 143 +146 141 140 142 143 142 146 143 140 141 144 141 +140 141 142 141 144 145 149 147 150 149 152 151 +152 148 152 149 150 151 150 154 +100 100 102 102 +103 101 102 102 103 98 99 98 97 98 92 96 +96 97 97 95 97 90 90 86 89 93 100 104 +115 126 134 139 149 150 158 160 162 164 169 170 +172 169 172 174 177 173 175 175 177 173 175 175 +174 172 170 168 159 158 147 145 139 129 115 109 +100 87 79 73 72 75 79 76 82 85 88 90 +89 98 94 98 100 98 103 101 103 102 100 97 +102 102 101 100 101 104 105 105 105 102 104 104 +101 105 103 103 106 104 106 111 112 109 113 106 +113 117 113 115 117 121 122 120 122 117 122 121 +118 117 120 121 117 117 118 133 164 141 97 110 +118 134 154 166 185 182 125 110 121 115 125 132 +124 128 133 131 124 112 112 122 131 117 105 86 +56 47 51 66 89 121 75 42 36 32 37 44 +75 133 93 81 68 38 41 42 52 55 35 51 +72 76 68 79 104 119 86 73 78 72 53 49 +39 39 47 40 55 62 48 37 42 68 114 50 +42 39 42 63 93 113 61 53 42 44 65 124 +58 41 35 44 52 45 32 33 61 117 140 144 +105 86 89 112 143 184 184 159 160 166 167 164 +167 169 165 157 159 161 168 176 190 190 189 189 +186 181 192 185 183 173 174 178 182 175 173 178 +167 157 149 148 151 159 159 160 163 163 167 164 +164 166 164 166 169 167 169 170 171 174 175 179 +176 177 175 177 178 177 177 175 176 179 177 184 +184 186 183 190 192 190 196 197 197 198 194 195 +194 194 196 199 200 199 199 201 201 203 205 203 +203 208 207 205 210 211 212 210 212 207 209 209 +209 204 197 176 164 144 127 105 96 84 78 58 +49 38 38 39 39 46 43 52 55 83 79 71 +118 172 178 176 147 108 89 55 56 74 50 53 +58 64 74 60 53 58 67 63 59 56 67 60 +60 64 65 63 54 46 47 49 50 64 52 50 +53 50 52 55 51 44 51 42 42 55 65 83 +106 121 137 142 141 137 134 128 124 131 146 147 +153 162 162 160 157 163 166 162 159 168 161 162 +161 156 157 161 157 160 159 162 160 161 164 164 +168 162 165 167 165 162 165 166 166 163 161 155 +160 157 158 156 156 155 152 152 145 148 149 151 +147 144 145 149 144 148 145 142 145 143 143 142 +144 144 141 141 145 144 147 143 138 141 143 145 +141 141 142 145 146 142 147 146 149 146 148 148 +152 152 154 151 +99 99 101 109 98 96 99 94 +103 97 99 95 101 96 96 96 92 93 96 95 +93 95 92 88 89 92 101 105 119 126 135 145 +145 152 156 158 166 167 170 173 172 171 171 174 +173 176 174 173 177 174 176 176 179 173 173 163 +158 157 152 143 139 130 116 108 99 81 84 78 +71 77 79 78 82 86 87 93 95 94 94 97 +102 102 97 103 95 96 99 104 98 108 104 103 +106 103 99 100 100 102 103 104 102 104 101 102 +102 108 107 106 112 109 113 114 112 115 118 115 +113 120 118 114 119 119 120 121 120 119 121 114 +119 118 118 134 167 174 134 126 129 135 138 157 +188 193 149 117 116 116 119 119 127 132 133 126 +122 115 116 127 128 109 90 59 45 46 58 63 +90 119 63 34 37 32 36 44 77 135 95 100 +53 38 32 36 54 36 39 47 56 71 83 101 +110 86 79 85 67 62 49 43 43 45 45 48 +60 57 50 43 42 71 111 46 39 40 37 55 +99 116 60 41 38 44 92 103 41 43 47 56 +50 37 35 46 99 141 153 115 94 89 103 147 +179 185 172 160 168 166 175 171 173 169 165 159 +160 158 168 177 188 190 190 186 186 184 190 188 +182 177 182 178 175 179 171 161 139 124 133 139 +146 150 150 157 158 161 160 163 164 168 163 167 +174 168 167 174 175 174 177 176 178 176 179 181 +181 176 180 177 175 182 182 182 183 182 185 185 +190 189 195 194 194 196 194 193 196 196 192 199 +196 198 197 197 201 204 203 202 200 206 206 203 +209 208 211 212 211 207 206 206 204 203 197 181 +164 148 127 106 95 81 70 60 48 47 39 37 +38 43 45 40 52 67 68 57 120 165 177 179 +148 117 78 71 65 71 54 63 60 82 73 67 +65 47 50 58 58 65 63 59 67 63 61 58 +53 49 48 47 51 51 47 63 51 54 64 56 +56 48 45 42 53 59 74 95 115 126 136 139 +139 137 134 130 129 134 145 151 156 165 162 159 +164 166 161 162 163 162 162 159 163 164 158 158 +159 160 160 158 162 160 160 165 163 161 161 165 +169 167 167 164 163 163 164 163 160 158 156 155 +154 156 155 154 153 151 148 149 151 143 145 152 +149 141 147 145 144 145 142 143 144 144 145 140 +139 141 143 140 140 144 139 146 137 141 141 138 +142 147 143 144 143 145 150 149 151 148 149 150 +95 95 103 103 101 101 98 103 102 94 96 102 +104 98 99 100 98 97 103 96 95 91 93 88 +90 91 104 105 110 128 135 142 144 151 152 156 +163 165 165 168 171 171 172 173 175 173 176 176 +177 175 176 175 179 172 172 167 160 156 151 148 +139 132 118 107 95 85 83 74 71 76 78 79 +84 83 87 92 88 95 95 98 100 101 99 100 +102 104 101 102 104 109 102 100 103 99 102 99 +98 102 99 107 97 98 98 102 102 104 105 106 +112 114 115 113 113 113 115 118 112 113 119 125 +117 122 117 120 118 123 118 124 131 132 125 125 +158 173 128 89 109 117 119 137 153 161 142 126 +123 124 124 125 126 132 129 128 116 113 120 137 +128 101 64 45 45 55 83 73 105 112 44 32 +39 35 43 47 72 134 102 89 41 33 40 46 +51 40 41 49 63 90 96 94 80 66 70 58 +57 48 42 38 43 41 42 43 51 53 54 41 +49 90 88 45 34 38 38 59 105 98 61 37 +35 57 106 64 43 52 63 54 46 46 42 87 +130 166 137 96 91 98 134 180 194 175 162 165 +176 172 179 178 174 164 165 154 157 159 168 180 +183 190 189 189 185 191 189 185 180 185 179 181 +181 165 135 106 99 104 123 123 137 138 142 147 +148 153 160 162 164 165 164 167 168 165 173 177 +174 177 174 176 178 178 180 177 175 177 175 175 +174 179 182 180 183 183 185 190 193 191 194 197 +196 194 196 193 192 195 191 195 196 196 197 200 +198 202 203 202 202 206 205 203 208 208 212 211 +212 208 208 205 204 204 197 183 170 149 124 101 +84 62 58 55 43 42 39 40 40 38 42 41 +46 62 81 49 109 166 179 179 150 126 79 66 +76 72 54 49 63 62 64 59 57 55 62 58 +56 64 70 58 69 61 53 56 49 50 49 46 +51 59 46 47 55 50 56 53 47 43 41 45 +50 65 83 103 118 127 140 138 140 134 134 128 +131 138 149 151 157 160 160 163 156 164 162 160 +163 160 160 161 159 161 160 159 160 156 162 158 +162 158 159 165 165 163 164 162 166 165 165 164 +163 162 162 160 158 160 155 161 157 158 160 158 +154 155 155 150 150 151 148 150 150 143 144 145 +145 143 146 143 143 148 143 143 142 146 144 143 +146 144 141 140 136 140 143 144 142 142 141 140 +139 139 144 143 142 143 143 146 +104 104 104 101 +109 99 98 104 98 96 98 101 97 97 96 100 +100 93 96 94 93 92 93 95 86 95 101 104 +114 124 137 143 136 150 157 158 165 165 171 171 +171 172 172 173 175 173 173 176 173 177 174 173 +172 172 168 168 164 159 149 146 139 127 117 105 +93 86 82 74 70 82 82 82 86 87 82 87 +88 94 95 96 96 97 99 103 100 104 108 102 +102 104 100 104 101 104 103 101 100 100 103 101 +105 99 105 108 103 106 104 112 111 111 110 116 +110 117 119 121 115 117 121 119 117 119 117 120 +117 116 124 151 168 181 153 137 159 128 55 51 +61 67 67 78 89 98 117 127 134 124 125 130 +130 129 128 121 113 108 129 126 113 93 52 46 +50 77 94 70 119 87 34 35 41 37 46 58 +90 128 105 57 36 38 34 47 55 49 53 72 +77 70 63 59 50 61 66 45 40 43 39 37 +42 40 45 48 48 50 57 50 46 86 70 36 +36 37 44 83 100 108 59 35 36 74 109 64 +68 79 58 39 33 41 69 125 157 151 116 90 +99 123 169 197 185 164 168 167 170 178 178 183 +171 165 153 155 150 157 167 178 184 192 192 191 +190 197 190 190 191 187 181 183 163 109 76 72 +82 101 116 110 121 120 134 137 141 147 144 147 +153 151 158 164 170 170 173 174 169 177 179 176 +179 181 180 175 178 173 172 175 176 177 178 175 +180 183 181 184 189 189 196 196 198 198 194 196 +192 194 189 189 194 197 196 198 198 202 202 199 +200 201 203 204 208 207 208 210 209 207 204 205 +200 196 188 178 159 146 121 99 71 61 54 50 +48 49 42 39 42 40 45 37 44 71 89 44 +93 158 177 178 154 134 95 67 66 66 56 53 +63 65 59 67 74 64 61 64 61 69 66 78 +83 62 63 54 56 46 48 42 54 52 49 53 +51 56 62 56 47 43 48 49 51 69 86 114 +126 137 138 141 138 138 129 129 132 138 146 156 +160 162 163 161 158 161 157 158 160 162 161 162 +158 162 160 156 158 158 160 161 156 159 160 163 +162 163 164 163 162 162 165 164 163 162 164 159 +157 154 157 157 155 159 156 154 155 156 154 155 +152 147 151 150 153 149 146 150 147 144 146 148 +147 145 145 146 145 143 145 142 142 142 139 143 +140 138 141 142 143 140 141 141 142 140 138 142 +142 139 141 146 +103 103 100 97 102 99 101 101 +100 94 95 99 100 100 99 96 100 98 101 100 +100 92 96 88 89 90 95 106 114 126 130 139 +143 146 155 160 163 165 168 168 173 173 174 176 +177 175 177 176 176 176 176 176 173 171 167 166 +161 157 151 146 138 131 119 107 99 87 80 79 +68 74 82 80 87 86 90 95 97 89 96 95 +99 102 104 105 104 105 102 100 97 102 96 89 +103 100 99 100 103 99 94 100 98 102 103 104 +109 106 107 108 107 116 114 118 115 117 116 117 +119 120 116 117 121 121 119 119 117 121 150 205 +204 188 165 156 137 69 36 37 36 38 38 39 +42 61 109 130 135 136 129 124 128 131 121 109 +105 114 113 94 84 69 46 61 63 98 70 89 +108 63 37 34 36 42 52 78 116 129 114 42 +34 34 38 61 49 50 56 63 58 52 48 47 +47 51 63 50 40 49 41 42 43 52 44 45 +52 51 51 47 44 71 54 41 41 40 47 101 +84 108 56 41 50 91 91 54 50 46 40 29 +35 58 121 140 159 120 95 99 112 150 197 185 +169 171 165 167 176 184 185 183 171 163 153 154 +149 155 163 179 189 195 193 192 194 197 191 189 +187 185 175 137 79 68 71 83 89 93 100 106 +109 103 115 121 125 126 124 132 135 138 147 151 +157 166 165 172 176 174 180 179 179 182 180 180 +178 174 177 178 174 175 178 174 180 182 183 182 +189 186 195 193 194 194 193 194 190 192 190 195 +195 194 194 196 199 196 200 201 201 199 201 203 +207 205 204 208 208 204 204 199 193 185 173 164 +151 132 111 82 64 60 55 47 49 43 38 36 +38 34 37 43 46 63 95 45 80 159 185 181 +159 135 94 63 55 52 62 64 68 57 56 52 +56 60 61 58 59 72 73 70 69 72 61 53 +49 51 51 47 50 50 49 47 49 52 51 50 +49 46 50 42 50 72 93 115 130 137 139 137 +133 132 127 127 133 145 151 158 160 158 162 159 +159 160 157 159 158 159 158 159 154 157 157 164 +157 162 158 158 156 157 156 161 160 159 159 160 +161 164 157 162 167 161 160 163 160 158 154 156 +154 154 158 155 152 155 155 157 155 152 153 151 +149 152 148 147 145 150 149 145 149 150 149 150 +154 144 145 146 143 142 139 142 142 142 145 138 +145 144 139 139 139 143 138 138 137 139 137 138 +98 98 103 100 100 97 102 96 101 100 100 97 +98 99 102 101 101 99 97 95 96 91 95 90 +90 95 100 103 116 126 136 136 146 151 154 162 +163 167 166 169 174 173 176 176 176 174 175 175 +176 177 177 176 172 170 171 170 160 158 151 146 +138 128 121 106 97 88 88 72 73 81 78 85 +87 87 83 89 89 89 90 95 96 101 100 101 +105 103 103 105 105 103 108 101 102 100 102 106 +103 98 99 97 103 105 100 102 107 99 103 104 +108 115 110 114 111 120 121 113 118 117 119 118 +119 117 120 117 118 131 175 228 201 141 110 114 +86 55 37 32 32 37 36 41 36 72 140 137 +151 165 171 152 123 123 111 105 101 116 106 79 +57 48 53 64 88 101 64 106 94 40 34 40 +42 39 58 93 127 128 105 32 30 38 43 65 +43 44 46 55 51 50 57 42 51 52 58 48 +42 47 41 43 53 58 54 45 49 56 55 51 +46 73 69 47 42 43 56 95 72 107 62 47 +51 96 66 43 37 31 28 34 42 108 139 153 +130 98 92 108 142 180 193 170 165 172 173 178 +178 190 191 187 172 153 157 152 155 158 174 183 +189 192 194 195 197 196 192 191 190 169 120 85 +83 86 88 95 96 95 102 99 91 96 104 100 +99 85 101 109 115 122 125 135 143 156 163 165 +172 175 179 178 182 182 180 176 177 178 176 175 +175 181 172 170 175 180 184 181 185 187 193 193 +192 193 192 193 187 190 191 190 195 190 190 195 +193 196 199 201 200 202 200 204 206 207 205 205 +205 202 198 198 178 173 164 144 133 112 100 75 +63 58 54 45 43 38 39 40 39 39 42 42 +46 68 96 55 62 155 187 180 157 136 119 81 +50 52 51 59 70 76 67 48 52 66 56 57 +65 62 70 68 69 59 57 46 52 46 50 47 +48 48 50 55 52 54 56 53 47 42 48 51 +59 82 100 119 131 142 141 137 134 132 125 131 +140 144 151 160 162 162 160 161 158 158 159 160 +155 157 158 157 162 161 159 159 158 155 157 157 +155 157 154 157 158 157 158 160 163 159 161 162 +161 162 163 162 163 161 159 155 152 154 157 150 +157 156 153 155 159 153 155 152 152 152 152 151 +147 149 147 146 149 150 147 147 150 147 144 143 +138 142 143 143 137 144 139 144 140 140 140 142 +137 142 137 136 135 135 136 134 +99 99 103 99 +100 99 100 100 99 103 103 99 105 97 98 99 +104 101 100 96 98 93 92 91 94 91 99 102 +117 126 130 137 145 150 154 159 164 166 168 169 +174 174 174 179 174 179 178 176 174 176 177 174 +172 172 173 164 159 156 151 147 138 127 120 107 +94 86 80 74 76 73 77 88 82 87 82 87 +91 92 99 93 96 100 94 96 104 100 103 105 +101 102 104 104 102 103 96 102 104 99 105 100 +105 105 103 103 105 105 109 109 109 109 113 117 +118 120 120 117 116 118 122 121 120 122 120 121 +120 128 182 222 183 108 92 51 52 53 43 39 +39 45 39 41 55 97 143 152 173 212 214 188 +123 117 106 85 80 108 87 70 50 48 52 59 +92 69 88 131 73 41 39 48 41 44 70 96 +126 136 113 34 34 39 39 53 45 39 47 48 +47 56 54 56 52 62 73 56 51 41 47 46 +53 57 45 43 37 47 71 69 78 90 81 50 +60 60 52 86 50 104 78 38 47 92 53 30 +39 38 32 42 76 132 166 131 107 91 99 136 +176 189 172 167 169 171 174 180 183 189 194 187 +169 151 154 152 158 159 182 187 189 189 194 196 +194 192 193 192 158 117 101 103 108 117 120 119 +118 116 107 102 96 103 100 91 82 77 87 84 +93 102 107 114 124 133 145 151 158 166 173 176 +185 181 181 176 171 177 178 176 177 174 175 172 +169 178 180 183 184 189 191 193 193 194 191 194 +187 186 187 190 188 191 194 198 195 198 201 201 +199 202 201 204 206 205 204 203 201 192 183 180 +168 151 144 128 116 96 94 70 61 56 53 49 +52 42 39 37 39 39 39 38 49 65 91 55 +52 125 186 184 162 140 122 90 57 58 44 59 +60 73 67 61 58 61 57 56 63 63 75 61 +66 53 53 53 46 46 44 50 52 47 55 57 +48 55 51 52 48 43 43 50 65 85 105 122 +133 137 142 141 134 135 127 128 141 152 155 162 +162 162 161 159 161 159 159 159 155 160 158 156 +158 154 160 158 157 157 157 158 157 160 160 158 +155 155 159 160 162 162 162 159 157 159 162 161 +160 162 155 154 152 152 152 154 158 158 157 155 +154 154 154 154 156 154 153 154 152 152 154 152 +156 152 148 148 150 149 148 144 142 141 140 142 +143 141 142 140 138 141 137 140 141 138 143 139 +136 135 134 137 +99 99 101 97 101 101 100 99 +103 100 100 102 105 100 99 97 99 99 100 99 +94 93 95 90 88 90 97 102 114 125 130 141 +146 151 154 159 159 167 167 171 172 172 173 176 +175 179 174 177 174 178 178 176 177 175 170 168 +162 158 155 147 142 129 115 105 94 83 79 74 +77 79 80 79 87 87 85 87 97 101 96 93 +98 103 101 102 100 103 101 104 100 100 104 102 +103 109 107 105 102 102 101 103 104 103 101 95 +102 105 105 105 105 110 115 121 115 115 116 121 +117 121 122 122 121 124 120 121 125 134 177 209 +173 134 100 51 53 51 46 45 38 40 48 59 +84 122 139 149 185 202 192 186 126 110 89 73 +68 84 79 64 54 51 63 65 97 71 127 120 +43 39 44 39 41 61 88 100 120 150 113 38 +32 35 42 52 35 42 52 52 59 87 65 51 +59 51 70 70 56 47 42 43 58 54 46 50 +42 48 47 43 66 95 103 78 69 50 60 95 +45 90 83 36 44 84 48 32 38 36 35 62 +117 151 158 109 90 95 123 169 183 172 165 172 +172 180 177 183 191 193 195 180 164 154 156 152 +159 168 182 187 186 188 193 194 193 193 185 152 +120 118 121 129 137 144 138 141 140 136 126 120 +116 110 106 99 90 79 63 62 68 70 74 75 +88 105 111 122 141 157 164 167 176 178 176 175 +175 177 179 179 180 175 171 172 171 175 178 180 +186 186 192 196 194 193 193 191 188 184 188 187 +190 190 192 194 194 196 200 202 199 199 199 203 +204 204 198 195 188 174 165 155 138 128 121 110 +104 94 85 67 61 56 55 46 43 39 40 38 +40 42 41 44 48 60 79 54 50 124 174 187 +170 143 130 94 49 57 47 51 57 69 76 55 +57 67 64 57 61 63 61 59 56 50 55 58 +48 52 43 57 56 51 48 52 59 60 52 49 +49 43 49 46 69 96 107 127 136 140 137 136 +133 129 127 132 147 151 154 161 168 166 162 158 +158 157 159 161 159 156 156 157 156 156 158 157 +157 156 159 157 153 158 157 156 158 157 158 160 +159 157 159 159 160 159 162 160 161 158 156 155 +149 157 152 153 156 150 156 154 155 150 156 154 +152 155 154 154 150 154 154 153 150 150 149 152 +145 149 148 150 147 145 145 139 144 140 140 144 +139 143 138 139 140 137 135 133 131 132 132 132 +100 100 105 105 99 104 102 97 102 100 102 96 +104 100 97 101 99 99 96 101 96 94 94 91 +84 91 92 109 116 129 132 145 147 153 157 156 +162 168 167 172 175 172 174 176 179 175 173 178 +177 179 174 176 178 173 169 167 164 157 155 150 +140 132 118 107 94 83 82 75 71 73 79 84 +84 84 82 90 94 97 93 93 95 94 101 101 +111 101 98 103 98 99 98 100 103 104 101 103 +99 102 106 103 101 98 101 104 104 105 107 102 +111 110 115 117 114 114 111 118 118 117 114 126 +128 122 122 129 127 139 161 179 156 153 111 73 +72 58 61 44 38 39 41 47 85 125 139 171 +160 136 131 133 117 108 85 64 62 87 83 67 +61 61 53 86 92 90 130 71 42 39 46 36 +51 87 89 91 86 143 111 41 33 32 39 39 +37 41 59 75 65 79 76 59 52 41 59 79 +72 52 48 42 59 45 39 39 39 42 37 40 +46 73 108 95 50 40 78 99 40 74 91 43 +55 77 41 33 29 46 58 109 140 158 128 100 +97 120 155 191 176 160 170 175 176 183 185 185 +195 199 189 174 154 150 154 156 170 172 187 188 +186 197 195 194 191 184 145 122 125 131 136 143 +149 154 150 149 151 150 148 145 140 131 125 116 +104 92 75 67 58 69 61 61 68 76 87 93 +112 132 141 155 167 169 175 176 173 173 180 175 +174 172 174 173 177 175 174 177 189 189 186 191 +195 192 194 194 189 188 186 193 190 189 188 192 +191 192 196 200 199 197 195 194 194 189 185 174 +154 144 127 112 102 99 94 96 91 79 72 70 +62 61 67 56 51 40 39 44 40 42 42 47 +48 59 67 56 45 121 172 188 169 146 139 96 +53 59 45 56 54 57 72 62 71 66 59 59 +69 64 62 59 59 55 52 55 59 51 48 44 +45 49 48 57 61 53 54 52 53 49 45 54 +76 92 118 138 141 139 137 136 130 128 127 138 +146 156 162 162 163 161 165 160 155 158 158 158 +157 156 159 157 160 157 155 159 155 157 157 157 +153 155 155 156 156 153 158 153 157 154 158 155 +161 156 158 161 159 156 156 154 151 154 154 154 +157 151 154 156 155 155 154 150 151 151 155 156 +155 154 156 158 152 155 156 153 147 154 154 148 +142 141 144 143 141 144 140 144 145 143 138 139 +138 142 136 132 133 133 134 133 +106 106 100 108 +101 106 104 101 103 104 96 98 99 100 103 105 +101 100 102 91 98 92 94 93 86 95 96 104 +115 125 131 141 143 148 156 160 167 166 171 172 +173 173 170 173 175 178 173 174 178 176 175 176 +173 173 172 169 160 158 148 146 143 129 123 109 +98 86 76 73 75 75 84 80 87 92 87 90 +89 98 93 94 94 95 102 99 110 103 100 107 +101 103 98 98 100 97 95 101 101 103 101 98 +102 102 99 99 100 102 106 110 110 109 111 111 +114 116 110 117 118 117 122 118 123 124 127 139 +135 134 138 148 152 164 143 94 69 53 49 44 +35 39 44 48 80 122 136 157 146 109 91 95 +109 94 63 62 73 95 86 62 54 55 66 90 +79 108 84 46 47 46 53 45 69 97 93 85 +58 141 127 45 34 36 40 38 39 51 77 63 +66 57 44 62 82 41 51 74 83 52 40 53 +62 41 40 34 43 39 32 39 41 52 79 102 +89 60 104 97 36 51 93 57 46 63 35 40 +38 42 80 133 162 143 114 99 114 154 190 189 +166 158 169 174 178 184 187 193 198 196 178 165 +154 148 156 164 169 179 187 189 192 196 194 189 +176 136 117 120 131 138 145 145 152 152 153 151 +145 157 162 155 150 149 142 128 121 108 96 93 +82 69 76 66 65 63 57 69 79 88 102 128 +150 159 169 174 170 168 172 170 168 171 170 170 +175 175 174 182 185 188 186 190 192 192 191 192 +190 188 184 188 193 195 194 190 190 190 195 196 +189 188 187 177 171 154 144 126 113 106 88 79 +84 65 74 84 86 89 93 87 86 86 86 70 +54 47 45 48 44 44 43 48 46 55 64 59 +46 117 173 183 165 146 136 116 63 61 52 56 +53 58 78 61 66 80 68 65 66 71 65 60 +55 53 42 45 53 49 49 47 49 45 45 51 +56 58 56 49 49 53 48 58 79 107 129 139 +142 135 134 131 124 129 131 141 148 156 163 161 +159 161 163 160 159 160 160 159 157 154 157 156 +156 160 154 161 157 160 158 158 154 153 154 154 +153 155 156 154 157 156 160 157 157 160 160 158 +160 156 152 155 155 156 156 152 154 155 154 153 +155 154 153 151 158 153 153 155 156 153 153 158 +156 157 154 154 150 152 154 146 148 143 144 145 +142 141 144 143 144 142 137 136 143 134 130 134 +132 135 133 130 +104 104 102 104 102 100 101 99 +103 106 102 104 103 97 98 97 105 101 100 98 +96 95 94 93 90 91 95 102 110 123 131 137 +147 152 149 152 163 166 169 174 171 174 173 172 +176 174 174 177 176 176 178 179 175 175 168 168 +161 156 149 146 140 135 125 104 93 82 80 77 +84 84 81 82 82 87 86 93 85 92 98 98 +98 101 97 104 107 106 101 103 102 104 102 99 +96 99 97 101 93 101 102 99 108 100 99 102 +102 108 109 108 108 105 111 110 113 116 116 113 +120 115 118 116 127 136 145 142 142 137 135 135 +144 166 146 71 64 56 47 44 35 38 40 36 +81 127 128 128 134 104 89 87 92 97 73 61 +76 90 83 56 53 66 96 95 81 89 53 48 +41 41 38 68 95 93 102 64 48 126 132 63 +31 37 36 46 50 68 97 76 70 60 54 61 +98 69 62 91 91 66 38 52 59 40 40 39 +42 38 35 39 35 44 51 78 95 101 118 83 +37 45 91 88 47 42 32 29 35 57 116 154 +167 135 110 103 142 182 194 172 165 170 171 180 +179 190 194 198 198 191 171 162 150 150 161 168 +178 187 190 195 196 198 193 170 124 116 119 121 +133 137 142 151 151 153 149 140 123 150 157 159 +163 159 154 138 133 125 126 115 97 98 87 83 +71 72 68 62 62 65 78 91 120 136 149 161 +167 171 166 170 164 166 170 171 173 174 179 176 +185 183 187 196 189 191 187 193 186 185 188 192 +194 197 192 193 189 188 192 191 184 176 167 154 +136 110 97 87 87 86 77 88 79 85 83 108 +110 117 110 103 105 107 97 84 62 51 45 52 +42 43 38 38 43 49 70 64 46 120 180 181 +163 145 133 117 69 61 61 52 50 52 86 66 +62 67 65 60 68 67 60 61 53 51 48 43 +54 50 48 53 51 47 51 56 53 67 56 55 +54 47 55 59 86 109 127 136 145 137 133 127 +129 131 137 146 150 157 162 158 163 161 161 159 +160 157 158 158 162 155 158 155 157 158 157 156 +157 153 155 154 155 157 156 156 156 155 160 158 +157 157 158 157 161 153 159 156 158 158 156 154 +155 158 155 152 152 152 153 155 159 151 154 156 +156 155 155 154 154 155 158 154 157 156 158 153 +153 156 154 150 150 147 152 150 145 143 142 142 +145 138 142 140 138 136 137 134 136 135 133 128 +102 102 98 98 100 105 99 99 104 102 109 102 +102 99 98 101 102 96 99 99 98 98 91 90 +87 91 97 101 114 120 130 134 147 148 153 149 +160 168 170 174 174 177 170 173 177 176 174 171 +173 177 179 176 178 173 172 169 161 155 154 145 +140 133 123 103 93 83 77 76 79 86 83 80 +86 84 85 94 91 101 96 95 100 94 100 101 +103 107 105 99 102 103 99 101 102 101 97 101 +93 98 103 101 97 100 103 103 105 101 104 107 +107 112 106 108 104 111 112 113 118 113 122 132 +142 150 155 150 144 140 144 137 137 154 130 65 +48 49 61 59 62 42 34 42 81 131 128 123 +140 101 80 82 76 113 103 78 71 74 58 59 +63 70 102 93 94 59 49 44 49 49 52 92 +114 94 80 39 41 110 137 94 42 36 40 49 +37 51 70 58 63 56 46 41 44 50 56 91 +93 97 59 55 47 35 36 35 41 39 39 38 +41 47 48 88 83 95 132 81 36 43 73 91 +39 32 29 31 49 98 142 166 149 129 113 130 +167 194 183 160 166 171 175 179 183 187 198 197 +195 186 166 149 153 152 168 170 186 190 192 196 +198 192 157 111 110 122 130 129 130 132 136 145 +145 141 146 137 116 122 143 164 162 160 155 143 +126 129 137 125 91 105 90 94 85 83 78 75 +78 72 77 78 96 118 135 150 164 169 167 165 +168 166 170 170 173 171 175 172 181 180 184 192 +191 190 192 192 191 185 187 193 188 194 190 191 +185 183 187 180 167 152 138 117 97 84 87 82 +96 95 86 107 102 114 102 123 137 129 120 111 +112 100 94 85 60 57 54 53 41 42 38 39 +41 45 65 69 49 106 171 181 164 149 131 114 +86 58 55 50 57 54 70 82 57 60 61 60 +61 68 66 61 54 59 50 43 46 50 47 49 +53 47 58 56 56 55 56 57 56 49 53 64 +92 113 130 138 137 137 130 128 125 131 140 150 +153 162 160 162 165 163 158 161 158 156 161 158 +157 157 156 159 156 156 156 155 155 159 154 153 +155 156 155 155 153 158 153 154 154 157 156 155 +159 156 156 159 156 156 154 155 158 153 152 156 +157 150 152 153 153 155 153 153 155 156 156 155 +154 154 156 156 156 157 152 154 151 152 150 151 +154 149 149 148 145 146 142 145 143 142 141 141 +141 137 136 134 134 131 132 132 +99 99 102 99 +104 102 103 101 102 108 106 108 101 104 103 104 +102 99 95 98 101 93 83 85 89 88 95 105 +114 126 126 137 147 149 150 156 158 164 167 171 +176 174 171 171 174 174 176 175 177 177 175 177 +177 178 173 169 162 158 154 147 138 131 120 111 +102 88 77 78 77 80 83 84 87 90 90 93 +98 96 96 95 99 100 116 107 103 102 101 98 +103 101 101 102 100 102 100 97 89 94 99 97 +97 98 100 110 97 103 100 100 105 105 105 103 +108 112 113 113 112 113 134 144 153 157 159 155 +147 139 143 143 141 168 157 92 74 58 94 115 +113 66 42 37 71 131 134 126 152 117 95 79 +56 85 89 62 51 61 52 51 71 79 104 98 +105 59 51 54 51 54 78 121 107 82 48 35 +49 83 134 124 56 40 37 43 41 51 75 63 +55 42 40 39 48 39 55 87 101 101 76 53 +41 35 33 43 43 43 41 47 39 38 42 51 +52 66 108 109 65 42 49 47 33 30 32 33 +74 122 158 142 123 114 128 162 191 184 167 167 +169 171 178 182 188 193 198 197 191 180 168 154 +160 156 176 180 190 196 198 198 188 148 108 111 +113 119 126 125 122 123 138 135 133 131 137 129 +114 79 123 155 156 154 156 136 113 132 137 117 +92 109 100 106 99 93 86 93 90 81 89 91 +98 110 119 142 156 163 162 162 163 166 169 161 +165 168 174 175 185 185 184 188 192 193 192 192 +193 189 186 187 185 191 182 184 179 179 182 172 +150 127 109 91 85 89 95 103 116 107 104 113 +120 121 108 135 140 122 114 98 99 98 90 74 +64 54 58 55 42 41 41 48 40 51 67 65 +41 100 162 182 163 146 128 114 91 56 49 50 +47 54 64 75 49 57 65 60 62 73 63 69 +51 51 57 46 46 65 52 51 60 51 48 51 +52 60 52 53 55 61 60 73 104 120 134 143 +139 137 129 132 129 134 144 152 158 158 159 160 +160 160 160 157 159 161 162 157 161 154 154 155 +156 157 157 158 157 156 156 158 154 151 157 155 +153 153 152 155 155 160 157 157 156 160 158 159 +155 158 155 156 151 157 153 155 155 148 150 155 +155 156 151 156 156 156 158 154 151 156 153 154 +155 156 153 154 153 156 154 151 152 149 151 152 +149 151 147 148 144 143 136 139 138 132 132 133 +134 133 129 130 +98 98 104 99 100 103 101 104 +105 107 98 106 101 106 99 97 100 97 98 95 +96 87 90 87 82 85 94 106 113 124 127 142 +145 148 154 154 163 166 171 171 174 174 173 176 +171 174 176 173 176 175 178 179 181 180 173 169 +160 156 156 148 140 132 121 113 97 88 80 75 +71 71 84 82 87 88 90 89 102 93 94 98 +102 104 104 101 102 99 98 100 103 101 99 100 +100 102 99 103 98 99 102 103 97 103 98 99 +98 100 103 101 108 111 108 101 109 109 107 112 +111 122 144 150 154 156 154 152 149 148 146 144 +138 176 184 137 121 86 107 164 139 102 79 70 +103 131 124 124 147 140 118 87 59 88 81 55 +48 43 51 58 71 82 108 120 101 70 64 63 +67 74 89 122 99 54 34 35 38 63 112 127 +67 47 47 40 41 59 83 80 50 39 37 41 +41 48 48 84 101 104 90 45 38 40 39 36 +40 42 47 46 40 39 41 40 48 45 55 82 +97 61 40 33 37 32 32 54 122 150 152 113 +109 119 158 187 193 167 163 172 172 174 183 191 +192 194 199 196 187 171 162 161 161 165 182 186 +193 199 201 183 130 100 97 108 113 113 114 119 +117 118 125 120 115 123 127 109 87 51 89 128 +149 146 138 115 96 118 124 91 88 112 114 123 +112 104 100 109 99 92 99 96 103 108 121 133 +151 154 155 154 156 160 165 164 165 166 171 173 +184 186 184 188 192 193 193 194 194 192 190 191 +189 192 187 178 172 173 169 148 130 111 108 105 +101 107 112 119 124 121 98 101 110 101 115 116 +111 107 94 79 79 83 82 71 59 60 77 56 +45 54 47 43 40 49 69 74 42 92 155 183 +169 148 131 112 89 79 52 48 50 53 56 76 +52 57 66 59 63 70 64 58 50 49 56 47 +49 50 50 47 51 52 50 57 53 54 44 51 +55 61 68 82 112 124 134 137 139 133 131 126 +124 138 140 152 156 160 159 160 159 159 161 159 +158 156 156 155 158 156 156 156 153 159 155 157 +154 153 155 154 152 155 152 153 157 153 152 155 +156 156 156 157 156 161 158 155 158 157 157 153 +154 156 157 152 153 152 155 153 152 153 152 155 +153 151 153 154 156 156 156 157 157 158 155 157 +157 160 154 150 152 145 149 151 151 155 150 149 +147 141 143 136 139 136 136 136 135 133 132 130 +99 99 100 104 103 103 102 104 105 104 98 107 +102 103 100 100 101 102 97 92 93 90 84 91 +88 91 97 103 116 128 131 140 145 148 156 158 +158 165 174 172 175 175 174 175 175 176 173 176 +173 177 174 176 179 172 172 167 165 160 156 148 +145 136 120 112 94 91 79 74 76 76 77 84 +83 82 87 89 89 93 101 97 97 103 99 102 +105 99 98 103 103 103 102 97 104 104 99 100 +96 96 106 101 100 98 99 102 105 101 105 103 +110 105 105 109 109 107 107 115 114 128 148 150 +152 158 159 154 150 152 152 148 144 177 193 178 +172 138 139 171 159 135 119 119 131 122 104 117 +130 130 109 59 55 59 62 39 51 57 70 77 +81 90 122 112 61 70 66 76 71 79 100 114 +96 43 34 33 34 55 91 107 86 44 43 49 +42 48 90 87 53 46 42 36 35 35 47 76 +103 107 98 52 40 43 36 39 37 42 50 49 +45 45 38 44 42 37 39 44 59 85 38 28 +30 33 45 97 147 161 115 104 106 140 185 192 +176 164 171 167 176 185 187 193 195 202 200 194 +184 176 168 167 166 178 186 187 196 203 178 116 +85 100 95 104 108 107 101 93 94 98 102 101 +105 107 105 87 62 46 68 110 145 131 123 83 +67 100 111 72 104 110 123 125 106 94 117 116 +111 108 113 112 102 108 121 128 138 146 155 157 +153 157 162 162 161 163 167 171 177 184 191 195 +196 196 198 195 193 190 187 189 191 191 189 183 +172 163 153 138 124 122 122 129 121 111 109 117 +112 94 70 87 74 69 90 94 84 92 78 74 +77 81 73 66 62 65 77 57 41 40 38 45 +45 56 66 75 45 100 155 186 174 144 127 110 +99 94 45 45 46 50 55 94 59 62 68 62 +64 62 57 58 49 50 44 44 45 53 55 54 +55 53 55 55 52 48 46 49 53 60 72 93 +119 131 139 142 137 134 128 127 127 135 147 158 +159 159 162 159 156 159 158 156 154 157 157 154 +158 158 155 153 155 157 154 155 156 160 153 158 +155 155 156 158 153 156 154 161 153 154 157 157 +160 157 160 158 156 154 154 155 155 154 154 156 +153 152 154 150 154 152 151 154 148 149 153 155 +154 155 157 159 156 158 156 155 158 154 150 153 +149 148 149 151 149 152 153 150 150 145 145 145 +141 136 138 136 140 136 134 128 +95 95 100 97 +100 98 102 108 103 107 100 107 97 101 100 94 +100 97 97 94 93 90 84 86 81 89 95 102 +115 125 127 140 145 152 154 156 161 166 171 174 +175 176 176 175 173 174 175 175 177 176 173 175 +175 171 171 165 163 160 154 150 142 138 120 105 +99 84 79 79 73 76 77 91 84 84 84 87 +92 101 93 92 97 99 99 100 105 98 101 102 +100 99 99 95 97 104 96 98 97 103 105 99 +93 96 99 100 105 100 98 99 106 103 104 105 +112 112 120 133 134 136 142 146 149 158 157 156 +153 150 148 149 147 167 187 179 182 171 164 173 +167 154 141 133 102 86 82 84 91 71 58 44 +59 65 41 39 50 65 81 86 101 119 129 71 +42 74 86 81 85 61 99 119 96 36 32 34 +33 48 83 82 109 48 47 44 45 59 83 94 +48 47 45 38 36 41 51 61 94 95 107 87 +51 36 48 43 42 43 44 44 51 41 46 42 +42 41 45 38 39 68 62 30 29 34 62 130 +162 140 105 105 124 175 197 181 163 170 167 173 +175 186 191 196 200 200 202 192 181 178 168 173 +173 182 189 198 202 174 100 83 85 95 98 95 +100 103 100 96 74 74 72 66 80 72 79 58 +54 47 56 80 104 94 74 47 46 66 68 64 +85 112 122 127 86 100 127 118 122 117 115 116 +116 119 121 128 134 139 147 152 155 156 161 160 +156 158 166 174 175 187 189 195 193 195 197 198 +196 190 189 191 188 191 190 183 169 157 143 138 +135 129 126 135 119 89 80 87 72 55 53 54 +56 56 64 70 63 65 68 62 68 76 70 65 +68 73 64 46 46 42 37 38 46 54 71 76 +44 91 156 183 176 147 116 111 103 86 48 49 +47 55 58 83 59 60 67 65 66 59 55 52 +47 51 46 51 46 50 46 54 48 51 53 59 +54 48 42 42 51 62 87 107 124 137 137 140 +137 130 126 127 131 145 152 154 160 160 155 161 +156 159 158 159 158 157 152 156 154 158 156 154 +156 158 155 158 156 157 154 156 152 152 153 154 +156 152 155 155 156 158 156 156 157 154 157 154 +155 152 157 152 156 152 153 152 154 152 150 153 +154 152 152 158 155 153 154 155 156 154 152 154 +156 155 155 157 153 150 149 151 146 146 144 145 +150 148 147 148 146 142 146 142 147 143 138 137 +136 136 135 135 +104 104 106 101 105 100 97 109 +99 100 98 99 100 99 98 100 106 98 93 92 +93 92 84 87 81 88 94 100 116 127 129 139 +142 150 152 159 163 165 170 173 175 177 174 179 +176 174 178 176 176 176 179 175 177 174 168 166 +162 162 156 151 149 134 128 110 105 85 76 71 +73 73 76 77 82 85 88 85 92 95 95 103 +98 99 100 99 99 102 105 104 99 102 100 98 +99 99 102 100 100 97 97 93 94 94 99 95 +100 99 102 98 104 103 110 118 126 129 135 153 +148 143 143 148 149 156 154 155 156 159 155 153 +150 154 165 156 148 138 151 171 172 152 122 78 +51 66 55 48 46 43 45 47 59 86 92 56 +74 75 81 92 114 123 96 49 43 63 73 89 +86 74 104 115 78 40 33 32 34 53 93 63 +103 64 38 41 44 53 89 92 43 39 37 37 +35 41 46 48 66 91 117 95 57 42 40 43 +45 48 45 40 47 44 45 51 40 47 38 35 +34 39 60 33 33 40 111 143 158 119 100 110 +161 190 184 167 169 170 175 174 182 189 194 201 +203 202 199 188 185 181 171 177 182 191 197 204 +166 94 79 81 79 94 87 77 68 70 87 84 +64 63 66 61 55 58 55 52 49 43 50 52 +59 54 55 47 43 46 48 47 57 83 123 100 +96 120 135 128 124 120 122 123 124 119 121 131 +136 138 143 149 154 158 160 153 156 158 162 173 +175 184 192 194 191 190 195 194 195 194 193 192 +189 191 187 179 161 152 138 137 131 102 108 95 +71 58 57 55 51 49 51 48 51 52 56 56 +60 59 65 61 70 70 65 63 70 78 50 40 +42 47 40 35 43 45 72 82 43 86 153 181 +170 155 112 119 113 83 68 52 49 47 59 91 +65 56 60 68 59 56 55 51 52 48 48 49 +48 48 49 50 46 51 48 51 52 43 38 42 +52 58 82 111 133 142 149 137 136 137 131 125 +136 145 152 155 161 162 164 159 159 164 160 157 +157 156 156 152 156 153 153 155 158 157 156 158 +154 156 156 152 155 154 152 153 156 157 158 154 +154 154 156 155 156 156 157 156 156 159 152 155 +151 152 152 153 154 150 152 155 158 154 156 154 +150 151 153 156 154 153 155 154 157 156 154 152 +157 153 150 148 146 149 146 147 147 144 149 146 +146 143 143 143 139 142 142 136 140 140 135 130 +98 98 103 99 101 101 101 98 101 99 98 103 +97 97 97 102 102 99 96 94 96 85 88 84 +81 83 93 105 118 126 133 139 143 149 152 152 +160 170 166 170 173 173 175 178 173 178 180 177 +175 174 176 178 176 172 171 168 162 159 154 146 +139 131 124 112 101 84 80 80 83 72 74 76 +77 82 86 88 91 93 91 91 98 99 99 103 +99 100 104 105 101 103 102 99 99 101 96 96 +99 93 94 100 104 102 98 95 100 94 98 96 +100 113 136 142 142 149 158 154 141 144 142 150 +148 151 154 153 151 149 148 155 151 154 152 139 +122 105 122 146 155 137 121 76 43 49 43 39 +33 39 37 40 60 57 76 73 81 88 86 108 +136 118 72 50 59 66 81 107 80 76 106 115 +75 42 43 39 42 57 96 55 80 87 47 44 +41 46 93 100 46 40 38 35 34 37 48 47 +58 72 124 119 100 65 47 39 36 41 43 43 +56 47 47 48 40 37 35 35 38 31 36 34 +40 78 144 160 135 109 102 140 187 191 166 171 +170 173 175 179 186 193 198 202 198 201 194 187 +185 186 182 181 190 196 200 158 90 71 79 86 +76 79 72 71 59 52 59 64 55 54 56 53 +50 54 49 49 52 51 52 53 50 49 45 43 +44 43 40 39 43 54 69 76 105 137 140 135 +127 127 121 132 130 125 121 136 136 135 145 145 +150 154 158 155 158 161 169 172 178 185 191 196 +194 192 196 197 196 197 197 198 193 192 183 170 +151 138 114 99 96 67 69 55 49 49 54 53 +55 48 48 50 47 49 47 57 54 59 53 56 +62 63 72 65 71 58 46 45 48 41 36 37 +39 45 72 84 45 75 155 175 177 165 124 114 +110 83 80 68 48 49 57 83 68 61 64 64 +66 56 61 48 47 47 50 48 56 50 46 45 +48 45 55 57 52 47 40 38 45 58 94 117 +131 137 141 136 132 128 134 130 138 145 150 160 +158 157 159 157 157 157 158 160 155 157 156 156 +154 158 154 156 153 153 155 157 163 158 156 153 +153 154 155 155 155 157 152 155 156 157 155 158 +159 158 159 159 157 157 151 154 147 155 153 151 +153 154 149 154 156 151 155 153 150 152 149 152 +155 153 155 153 153 157 152 155 153 151 154 147 +143 146 148 146 146 145 145 143 144 142 142 145 +141 143 141 138 139 135 137 132 +98 98 105 103 +102 100 103 98 98 99 98 103 98 99 99 99 +90 92 100 97 91 85 92 89 80 85 86 103 +113 125 130 137 143 151 150 157 162 165 170 172 +173 174 177 177 173 178 176 178 180 177 176 175 +174 173 171 166 160 159 153 143 141 132 122 109 +96 88 90 75 72 74 74 82 84 87 86 82 +89 93 92 94 99 101 102 106 101 102 102 100 +98 100 100 98 100 102 98 97 99 97 101 96 +94 98 95 92 93 94 97 95 106 131 154 150 +161 185 187 134 135 144 147 148 149 151 156 153 +155 153 148 156 155 158 153 144 119 95 99 102 +120 129 93 68 43 41 44 32 33 31 42 66 +86 103 94 77 79 92 93 131 139 105 84 60 +61 68 94 105 70 85 115 120 81 41 39 37 +42 48 100 52 54 74 71 44 48 48 98 103 +46 43 39 44 36 39 37 39 43 48 91 122 +124 109 79 50 45 42 45 39 43 40 46 46 +43 36 36 43 50 29 30 30 57 121 161 153 +127 108 125 169 202 180 167 173 178 175 176 183 +187 195 198 203 197 194 190 184 182 185 179 187 +197 199 156 79 66 71 70 70 68 67 63 57 +52 50 53 52 50 51 52 49 50 46 49 47 +46 49 59 48 55 56 53 64 43 46 40 38 +45 42 42 56 94 130 138 141 130 130 126 131 +125 125 131 129 141 139 140 142 145 151 153 155 +157 159 162 169 180 182 186 193 196 195 198 200 +202 203 198 197 190 185 173 158 131 118 87 58 +60 51 49 53 50 50 51 51 51 49 48 47 +45 51 54 55 57 54 56 56 55 55 59 70 +70 52 42 40 50 40 40 38 37 45 75 79 +46 73 156 172 177 160 127 108 104 85 76 66 +53 45 55 77 71 58 59 57 69 54 60 45 +46 44 50 47 53 47 45 59 57 57 56 55 +51 45 37 37 46 62 99 121 141 144 138 138 +136 130 130 134 142 150 154 160 160 158 158 160 +158 158 154 159 158 155 157 152 155 155 155 151 +150 151 157 154 151 153 159 154 152 160 157 156 +152 155 156 156 157 155 154 154 154 156 153 156 +155 158 152 153 154 154 152 153 157 153 150 152 +153 154 151 151 149 154 154 154 152 152 152 153 +152 157 152 155 151 151 150 150 148 145 144 148 +140 142 144 145 145 144 142 143 140 138 136 136 +136 135 133 134 +99 99 105 103 100 97 94 98 +97 103 100 100 95 94 95 93 93 94 98 92 +92 88 86 81 82 83 81 97 110 122 131 135 +142 148 155 159 164 169 168 168 171 178 173 176 +178 176 176 178 178 178 176 174 173 177 169 163 +159 157 151 149 141 137 120 110 98 88 89 79 +74 71 74 85 83 83 84 89 88 94 86 86 +101 97 94 101 105 105 100 103 97 101 98 102 +99 95 98 101 96 96 100 99 92 94 91 92 +90 90 94 100 119 150 159 161 200 206 189 125 +134 141 146 147 150 145 150 152 152 155 152 154 +156 156 148 124 107 82 69 58 78 106 100 68 +40 38 36 29 35 41 63 101 116 104 91 78 +79 89 106 136 92 88 99 80 70 75 108 79 +72 97 123 124 84 37 37 45 39 48 95 61 +40 54 86 58 46 49 88 115 47 38 42 39 +35 38 36 37 32 47 53 112 120 113 113 96 +63 38 36 35 39 43 47 50 51 42 32 37 +42 26 31 38 90 145 172 118 103 122 153 193 +194 166 165 171 176 172 181 179 185 196 199 202 +195 192 194 185 187 190 184 194 197 162 87 69 +65 64 74 60 53 54 56 53 49 52 51 51 +57 50 46 50 51 45 46 45 46 43 51 54 +63 84 71 54 50 46 40 46 39 40 47 40 +54 87 110 130 136 136 129 127 131 122 126 130 +129 140 143 137 145 147 147 156 157 158 165 170 +180 186 190 193 198 203 199 202 202 203 202 193 +187 177 157 127 90 77 59 56 59 48 54 56 +55 49 56 62 57 49 48 47 51 50 50 55 +55 59 64 53 52 55 63 62 50 50 46 51 +48 44 45 36 43 47 70 68 47 69 148 166 +180 158 130 110 101 93 71 71 74 48 51 75 +62 63 60 64 65 52 51 47 44 48 47 49 +51 48 44 57 57 56 50 56 53 43 43 38 +44 73 103 130 143 146 139 136 132 135 135 142 +149 155 162 161 161 161 160 156 156 156 157 156 +159 157 152 152 158 153 154 154 153 150 151 153 +152 158 150 150 160 153 155 156 152 151 152 150 +155 153 151 155 155 152 155 154 154 155 154 156 +153 152 152 150 156 150 152 156 151 153 153 154 +153 151 155 150 151 155 153 152 152 155 149 152 +150 147 146 147 149 147 145 146 146 145 144 145 +143 146 143 142 141 139 143 137 138 139 136 132 +92 92 96 97 98 98 95 93 93 100 94 93 +96 94 92 95 92 93 90 91 82 80 81 78 +77 84 88 98 108 115 130 134 142 149 154 155 +164 162 171 169 173 174 177 174 176 179 177 176 +179 175 177 175 177 173 170 164 158 157 151 146 +145 138 122 110 99 83 77 70 68 70 79 73 +80 86 84 86 83 89 84 89 99 91 93 94 +104 102 99 103 97 101 95 97 99 93 95 100 +97 96 97 95 99 93 92 85 88 93 97 123 +160 177 165 197 212 203 164 120 136 141 144 150 +149 146 151 154 153 155 149 153 148 139 132 116 +104 78 50 48 74 82 73 52 39 36 35 33 +39 63 89 117 116 103 78 67 60 101 129 99 +51 65 102 84 77 78 101 69 79 109 144 116 +78 34 31 47 41 54 87 60 35 42 63 84 +61 45 94 129 57 44 44 42 40 38 35 36 +41 37 41 64 104 120 121 113 103 70 38 34 +41 37 39 45 47 36 41 38 34 32 35 68 +128 161 149 100 99 143 185 197 175 166 164 171 +177 175 183 184 192 195 204 200 195 193 191 188 +191 190 189 196 167 94 73 64 65 66 66 58 +53 50 46 48 52 52 50 53 55 51 53 45 +42 42 45 45 47 47 78 66 97 118 110 92 +70 57 46 41 38 47 41 39 46 60 85 115 +129 138 135 134 131 125 130 129 132 140 141 142 +151 147 148 152 157 160 167 169 179 186 189 197 +202 203 203 205 204 207 202 199 186 155 117 74 +61 55 52 59 51 50 50 60 51 52 71 85 +90 74 61 59 50 46 48 51 56 65 60 56 +59 56 58 53 53 48 45 44 46 42 36 43 +43 50 68 68 45 69 148 167 182 162 132 97 +98 94 73 64 62 63 55 83 70 59 58 61 +58 51 49 46 46 47 51 52 50 48 55 45 +49 49 62 53 49 46 41 42 52 82 109 130 +141 143 138 136 132 133 134 146 152 158 160 161 +156 160 158 159 156 155 156 154 153 151 151 152 +153 155 151 154 154 155 151 155 154 157 153 157 +151 157 161 153 153 154 157 153 156 153 154 158 +158 155 156 152 154 154 153 150 154 154 150 154 +153 154 156 154 150 151 150 152 152 148 150 148 +155 152 154 149 149 153 152 148 147 144 146 144 +143 145 142 140 145 139 138 141 138 140 137 138 +138 136 139 139 135 137 135 135 +92 92 91 92 +97 97 92 88 92 92 91 97 94 89 90 92 +94 90 95 84 88 83 80 75 77 77 83 93 +108 114 126 134 143 149 150 155 164 170 170 173 +173 176 175 174 172 174 176 175 174 176 175 174 +176 174 168 165 159 157 152 146 139 128 123 113 +97 84 77 69 75 71 75 77 83 83 86 89 +88 88 90 92 95 92 95 95 95 97 102 99 +97 93 93 96 97 96 94 96 100 96 95 94 +88 86 87 87 83 84 108 173 205 193 174 208 +209 197 135 121 139 141 142 143 144 149 149 155 +158 157 146 137 136 136 139 115 87 54 50 69 +77 58 46 39 33 34 33 38 52 119 129 108 +91 70 50 46 83 126 94 69 55 57 89 88 +78 93 89 68 80 132 146 112 75 41 35 37 +49 60 81 63 41 46 58 81 86 52 91 135 +71 37 45 52 49 44 37 43 40 42 42 48 +62 110 122 111 108 101 81 57 43 39 39 44 +41 34 33 37 33 32 50 106 146 167 113 96 +126 172 200 188 166 169 169 171 175 179 184 184 +194 201 203 200 193 196 189 190 195 193 197 165 +88 67 75 73 62 59 66 51 47 47 52 47 +47 48 47 55 46 51 48 45 43 45 47 43 +50 55 69 90 137 161 150 141 103 78 55 42 +40 41 43 38 41 45 67 99 116 131 136 131 +129 126 128 130 135 137 137 137 143 145 149 148 +152 159 162 171 181 187 189 197 203 206 206 203 +208 208 202 188 159 100 56 53 57 50 47 50 +54 53 50 57 62 50 85 126 124 105 91 67 +48 44 43 44 51 51 50 59 55 56 59 49 +46 46 53 51 51 43 39 43 46 51 76 74 +44 65 147 161 185 172 146 95 90 88 71 49 +64 52 61 77 74 62 60 58 57 52 48 44 +47 44 48 47 47 49 49 54 55 56 49 50 +53 47 46 51 64 94 121 135 145 140 138 143 +137 130 137 145 152 159 159 159 158 156 157 159 +156 158 154 154 158 152 153 152 151 152 153 152 +149 156 154 155 155 149 153 149 151 153 159 159 +157 152 151 153 153 155 157 159 156 154 155 154 +155 154 152 154 155 149 149 150 158 155 154 157 +153 152 156 147 152 150 149 147 152 149 150 150 +151 151 150 148 148 146 146 144 144 144 144 140 +143 140 140 136 139 135 137 140 139 139 135 138 +136 134 132 132 +98 98 100 92 94 99 95 96 +96 94 98 98 92 91 92 94 91 90 92 83 +90 82 80 77 75 77 80 97 104 123 126 136 +141 146 149 158 162 165 171 176 175 177 175 173 +174 175 177 179 177 178 178 175 177 173 170 165 +159 156 153 145 138 131 121 109 98 85 73 74 +74 66 73 78 83 85 87 89 88 99 94 91 +94 99 95 95 101 94 100 98 96 97 94 99 +103 94 93 93 99 91 90 89 97 88 86 82 +83 84 127 204 203 184 183 209 205 173 118 123 +136 143 141 148 147 150 155 156 157 146 124 104 +133 139 122 104 90 62 87 81 47 40 41 40 +42 35 33 50 98 144 124 95 52 45 41 67 +120 101 49 40 45 48 69 89 87 100 86 78 +96 142 141 97 48 39 35 34 47 48 73 69 +42 48 47 55 64 51 78 141 83 41 47 44 +43 47 42 39 41 39 37 42 52 72 102 95 +73 88 83 108 94 47 40 41 39 35 37 33 +31 37 82 139 159 133 102 102 145 194 198 170 +172 166 175 178 173 181 181 180 196 200 202 195 +198 196 192 189 191 200 173 97 68 72 80 74 +74 69 57 41 46 48 48 49 48 52 52 46 +42 53 49 49 40 46 47 74 62 68 94 127 +162 192 192 175 148 118 98 58 42 38 37 40 +42 44 50 80 110 129 134 128 126 124 127 126 +134 135 133 140 140 147 148 152 153 160 162 167 +175 184 191 203 203 209 211 208 210 206 196 167 +111 64 49 50 51 45 45 42 47 59 56 81 +113 92 75 156 150 136 115 94 64 45 38 41 +42 48 54 55 53 57 55 54 46 40 47 51 +50 46 42 35 45 46 78 64 45 66 146 160 +183 168 145 96 82 102 75 66 64 59 63 85 +80 60 61 59 58 50 48 49 44 47 50 49 +51 47 50 48 54 51 48 50 50 43 49 53 +75 106 125 139 148 144 142 138 136 135 149 152 +154 160 160 164 158 156 158 158 155 157 156 153 +157 154 155 153 154 153 152 150 152 151 153 155 +151 153 153 153 151 152 153 157 151 150 152 152 +156 156 155 156 152 154 151 150 153 152 154 153 +153 154 153 154 155 154 154 151 151 151 149 154 +155 149 151 146 147 151 150 151 151 151 147 144 +146 141 146 142 145 141 141 141 140 138 132 136 +137 135 138 139 137 139 135 131 140 134 131 135 +94 94 97 97 97 97 94 92 93 90 95 95 +90 90 90 89 90 92 88 85 79 85 89 74 +76 78 81 92 104 115 128 140 141 148 153 157 +162 170 171 175 175 175 175 178 174 176 178 176 +175 179 176 175 176 173 171 163 162 155 151 145 +141 131 123 112 100 87 81 72 73 76 75 80 +84 85 88 88 92 91 91 96 95 100 96 97 +98 97 101 98 98 95 99 102 97 92 99 99 +94 96 93 90 88 86 88 87 83 87 134 205 +198 178 188 205 181 139 121 127 137 141 145 148 +151 149 154 156 153 135 100 91 128 134 130 111 +79 77 85 54 44 35 34 48 46 43 42 88 +128 114 97 53 38 46 55 108 118 68 36 37 +31 41 63 85 105 113 99 92 99 125 121 73 +56 46 45 37 44 42 63 59 41 44 48 44 +46 48 70 128 102 42 48 46 48 48 46 42 +50 46 42 44 47 49 58 58 44 49 61 78 +89 85 49 42 39 34 32 31 33 49 113 152 +156 106 96 120 176 200 176 164 168 172 179 180 +174 181 183 182 202 204 200 198 193 197 197 197 +195 175 105 75 80 86 85 75 69 60 50 42 +41 41 50 52 61 76 66 42 46 61 59 45 +39 35 39 86 86 64 86 120 173 201 203 190 +176 163 154 97 70 43 44 58 75 74 63 78 +108 123 130 124 121 118 120 127 136 133 138 137 +145 144 144 147 153 157 164 166 170 186 194 201 +207 213 215 212 212 204 181 121 80 54 49 49 +43 43 49 44 44 54 54 91 147 128 69 161 +163 150 134 106 79 54 43 42 43 42 53 55 +54 56 58 53 46 51 47 46 49 45 36 38 +44 45 78 63 42 54 139 161 183 169 147 95 +88 99 88 68 64 63 62 88 66 60 60 68 +60 53 49 45 44 51 49 51 52 55 56 52 +48 47 46 45 43 42 48 63 92 112 129 143 +145 146 138 137 133 135 144 151 156 160 160 158 +159 155 159 156 156 156 155 153 158 152 153 151 +152 155 155 156 150 155 152 153 148 152 152 152 +153 151 153 153 151 154 153 153 157 152 148 152 +152 153 152 154 154 155 152 153 150 153 152 155 +150 155 155 154 156 152 151 152 151 149 148 148 +148 151 153 152 150 149 145 142 143 142 140 145 +139 141 140 138 137 137 139 135 132 132 132 137 +135 133 132 135 134 136 133 127 +96 96 100 105 +105 93 92 93 97 91 93 97 92 92 96 90 +91 87 89 82 80 79 80 76 72 74 82 93 +106 119 130 134 139 152 152 157 164 169 173 174 +173 179 173 173 176 180 177 177 175 177 180 180 +177 173 172 165 159 157 147 148 138 129 120 112 +97 83 72 73 77 72 78 82 88 88 89 90 +91 97 101 97 102 97 97 100 102 94 94 99 +94 101 103 97 95 99 100 99 92 92 92 91 +91 89 87 88 85 85 125 193 194 174 196 197 +156 137 126 132 136 141 145 146 152 150 152 154 +154 131 93 109 136 139 143 105 65 62 71 51 +35 37 42 56 50 50 80 117 99 77 61 37 +38 50 95 114 77 50 38 36 43 44 72 94 +123 120 99 93 89 117 112 55 46 42 41 39 +70 47 45 48 38 38 55 45 39 44 62 121 +124 62 44 53 43 43 40 42 43 41 51 47 +46 48 46 46 41 42 44 64 72 64 56 58 +36 38 39 33 36 81 140 160 126 96 108 156 +197 189 164 172 174 177 182 178 177 182 184 195 +206 202 200 198 192 199 197 203 183 107 80 81 +88 85 78 67 56 49 54 43 41 43 51 64 +81 89 80 50 60 79 78 48 37 35 38 54 +90 65 50 72 163 204 203 199 192 191 185 139 +106 72 59 61 103 107 83 74 99 122 124 120 +121 118 121 127 134 129 133 138 139 150 141 144 +154 159 163 169 178 187 199 207 210 215 214 214 +211 192 143 91 67 49 50 52 59 52 47 43 +43 60 57 75 143 137 75 150 175 159 146 122 +94 66 55 44 42 45 49 50 49 51 55 50 +48 45 49 49 46 45 38 39 52 62 80 71 +45 54 138 163 178 167 140 100 100 85 107 64 +63 73 58 94 65 60 63 59 55 54 44 45 +47 46 48 43 53 60 50 59 50 45 47 47 +47 49 57 74 96 119 136 144 144 144 139 140 +133 140 146 154 158 158 155 161 159 158 154 156 +156 159 155 157 156 157 149 150 156 156 153 154 +152 151 152 155 153 154 154 151 152 158 155 156 +152 152 151 154 154 152 151 154 152 152 154 154 +153 155 153 155 153 155 153 148 149 152 151 153 +151 151 151 149 146 148 145 152 149 148 149 152 +150 144 144 143 141 143 139 141 142 139 137 136 +136 132 136 137 134 133 135 137 131 136 128 132 +130 130 131 129 +97 97 98 98 94 101 92 96 +97 93 96 95 91 93 94 91 90 86 84 82 +81 83 80 74 71 75 81 94 111 120 133 135 +138 148 153 160 163 169 174 176 172 179 178 177 +175 174 175 178 176 180 174 180 178 180 177 170 +159 154 152 143 139 129 123 107 95 89 76 72 +75 78 80 86 86 83 94 96 96 96 98 92 +94 100 99 100 100 96 93 100 97 91 97 98 +101 97 102 96 97 93 93 90 92 90 86 87 +82 72 93 159 192 180 189 197 180 167 146 135 +137 146 147 151 149 147 149 150 150 129 103 129 +151 153 134 71 45 75 81 43 44 37 37 65 +72 84 108 91 61 45 48 37 55 77 101 71 +64 46 40 35 40 49 82 86 131 119 87 90 +82 129 113 52 52 53 46 42 46 44 44 36 +35 40 52 42 43 43 51 102 141 74 50 61 +53 40 39 41 40 46 46 47 44 57 50 50 +41 41 42 51 57 51 42 41 46 72 75 56 +59 115 151 142 102 93 141 194 201 180 164 175 +182 178 184 185 184 183 191 203 206 201 198 199 +201 195 200 189 122 80 91 93 86 80 68 55 +56 52 52 42 45 51 56 69 91 102 89 49 +57 93 92 76 46 39 41 67 112 77 55 66 +157 203 203 198 198 198 192 172 143 99 71 68 +93 130 109 83 91 115 122 116 116 112 115 135 +130 132 136 138 136 143 140 142 152 156 167 172 +181 191 198 210 218 218 217 214 203 157 110 85 +68 55 49 64 67 63 54 44 38 60 59 68 +98 105 69 142 179 167 160 133 96 75 60 52 +47 48 68 45 47 51 59 52 52 46 46 52 +45 49 38 39 41 53 94 62 43 51 135 167 +175 169 148 114 89 87 101 79 64 67 71 84 +63 63 58 57 53 50 49 44 46 56 61 49 +46 49 51 54 44 42 43 46 50 52 65 79 +109 123 140 141 142 137 141 134 137 139 152 155 +163 159 155 159 155 159 154 154 156 158 157 156 +154 151 152 150 151 152 153 152 152 151 152 156 +151 158 153 153 152 150 153 152 151 151 155 154 +151 151 149 152 153 152 152 154 147 150 157 151 +151 151 153 151 152 152 151 150 149 150 148 148 +144 145 145 147 150 148 147 146 148 144 143 146 +141 144 144 141 141 140 139 140 136 135 130 131 +133 134 134 130 131 132 130 127 126 129 130 130 +102 102 99 97 95 99 93 100 93 96 94 99 +92 99 92 92 92 85 84 87 82 83 78 74 +70 76 86 93 108 118 134 136 141 148 153 159 +163 168 173 176 178 178 175 175 172 176 179 177 +180 177 182 177 177 177 180 168 160 159 154 144 +139 128 123 112 98 84 78 70 73 74 79 84 +85 85 90 90 98 101 91 100 99 100 98 102 +101 101 99 97 98 99 100 99 108 101 101 99 +98 101 97 92 91 92 90 84 67 57 76 143 +184 156 148 173 186 193 176 163 150 150 147 141 +153 150 148 149 148 120 104 145 153 141 101 49 +40 43 41 36 37 40 45 74 111 105 93 68 +42 36 46 48 77 89 59 55 69 59 45 48 +42 59 71 87 136 95 65 96 90 134 114 65 +51 55 48 46 43 45 48 41 40 52 41 48 +37 39 45 81 136 84 54 68 47 47 35 35 +38 46 38 46 54 55 47 43 41 39 50 56 +49 42 36 40 45 53 71 73 97 137 157 116 +95 115 170 205 191 169 163 173 170 177 186 181 +188 188 200 200 202 198 197 203 201 200 194 140 +93 97 106 101 96 86 82 64 54 51 49 49 +45 46 66 71 95 114 106 70 52 92 98 89 +71 65 66 90 108 74 52 87 176 207 204 204 +206 203 200 191 171 128 88 70 88 123 120 93 +89 107 118 114 112 112 114 119 123 128 133 134 +135 139 141 144 153 156 165 176 182 192 198 208 +216 218 216 212 189 128 100 77 78 78 50 59 +84 79 63 42 45 70 83 70 82 75 68 149 +178 168 160 138 107 81 68 54 40 46 54 41 +42 47 45 47 51 42 46 41 50 74 63 43 +49 61 96 59 42 58 131 170 177 173 150 123 +71 84 104 87 70 68 87 86 54 58 66 53 +54 49 51 47 49 49 47 46 51 48 49 48 +49 42 46 47 55 56 65 87 114 127 144 143 +144 140 136 141 136 140 150 153 156 161 157 158 +156 158 157 157 155 159 156 160 160 152 154 153 +150 151 150 153 150 155 150 150 152 152 152 150 +150 151 150 152 154 152 153 150 153 150 151 150 +152 148 154 152 150 153 155 151 154 153 151 151 +153 150 149 155 146 148 149 148 147 149 143 147 +147 147 146 145 143 146 142 144 142 141 140 139 +138 140 136 135 133 133 130 134 134 130 130 130 +128 124 132 123 127 134 139 142 +98 98 99 97 +98 106 92 96 99 99 93 100 94 89 92 91 +90 86 86 88 85 84 78 78 72 73 82 94 +108 117 131 132 139 150 152 160 167 165 172 177 +175 173 175 176 176 174 179 178 181 182 177 182 +178 173 174 168 164 158 151 143 139 130 123 111 +103 92 80 72 71 74 78 85 87 82 95 97 +93 104 99 100 102 98 101 100 102 97 99 106 +104 101 101 102 107 97 97 98 102 101 93 95 +95 95 87 70 50 49 73 150 185 132 84 83 +107 161 189 195 181 169 150 151 148 151 152 149 +137 127 92 108 114 86 64 37 39 39 43 39 +33 47 56 117 120 91 76 55 41 39 56 78 +86 72 52 54 76 77 47 46 49 58 66 101 +127 98 77 81 100 148 112 57 47 46 47 44 +42 47 47 49 43 56 46 42 40 42 48 68 +122 120 69 63 44 41 42 44 42 45 44 42 +48 58 46 42 37 38 40 41 43 37 39 34 +36 37 45 74 105 132 113 85 107 147 189 191 +167 161 152 149 153 168 173 179 189 195 202 202 +202 196 192 198 199 198 147 105 98 102 115 110 +105 91 84 81 77 67 59 45 42 45 68 74 +92 116 121 98 67 57 83 97 84 84 91 83 +71 57 65 125 196 209 206 207 210 204 205 199 +183 149 109 76 70 107 126 106 91 95 111 111 +108 112 117 121 122 123 129 132 137 136 141 149 +155 160 165 177 184 193 200 212 216 214 211 202 +168 123 89 85 103 96 60 60 94 100 88 74 +67 87 104 85 74 58 86 162 176 165 157 140 +116 77 62 59 44 44 43 40 42 44 47 48 +46 49 41 44 49 42 39 42 44 60 97 58 +44 50 123 168 174 179 153 131 78 79 101 92 +77 65 89 86 51 58 68 61 47 43 44 47 +51 49 50 50 52 51 52 53 51 52 47 54 +51 55 71 98 115 133 140 144 141 140 136 135 +139 145 151 156 158 161 159 157 160 158 156 157 +155 157 158 157 156 151 153 155 154 148 149 152 +154 152 150 149 149 148 151 153 150 154 152 150 +154 153 155 153 151 151 150 151 155 153 154 151 +152 151 151 154 151 151 149 150 147 151 148 146 +148 153 149 154 146 147 145 144 145 147 147 143 +140 143 143 140 140 139 140 139 136 138 131 133 +131 127 130 130 126 128 130 129 130 128 135 137 +141 144 148 153 +100 100 97 98 103 100 95 95 +98 97 97 91 101 96 92 90 91 87 89 93 +81 79 78 76 68 73 79 92 104 118 129 131 +142 147 154 157 164 167 169 175 174 179 176 179 +178 182 180 177 182 181 180 179 180 175 170 169 +161 158 152 141 139 131 122 114 97 88 78 78 +81 79 80 88 81 89 90 98 99 99 94 99 +106 106 103 103 107 97 105 106 99 103 105 105 +102 102 101 99 101 107 103 99 98 88 75 59 +44 47 57 115 184 155 85 66 84 110 167 207 +209 193 178 169 159 161 156 138 103 80 46 53 +52 53 50 42 38 37 41 42 49 67 87 110 +98 75 46 49 44 46 75 85 57 66 53 58 +75 89 54 42 51 63 74 121 131 107 90 86 +123 157 113 58 46 42 42 45 54 49 47 43 +37 56 40 37 38 38 44 63 102 127 79 52 +45 49 41 53 42 41 48 44 49 61 44 39 +43 37 43 42 39 34 45 38 35 38 47 89 +119 114 81 92 124 151 177 157 147 150 146 152 +162 170 179 187 194 197 200 201 199 197 195 194 +194 151 103 108 100 115 119 122 116 110 100 96 +96 85 78 54 47 51 68 82 89 107 127 114 +87 58 60 79 85 89 79 75 54 65 113 173 +207 210 209 210 210 204 206 201 183 158 122 93 +83 98 126 117 101 97 106 110 111 117 113 118 +120 126 126 133 136 136 143 150 162 161 166 180 +182 197 206 215 218 214 212 198 153 110 92 105 +120 119 93 57 84 97 99 92 85 86 89 86 +69 64 122 173 172 167 155 143 112 86 69 63 +47 44 45 43 40 40 47 48 41 43 54 43 +42 46 42 44 49 69 102 51 45 49 114 174 +172 182 154 132 82 71 96 90 75 73 85 89 +58 58 52 62 51 51 47 44 50 51 52 54 +58 54 53 52 46 44 46 48 45 54 82 104 +126 139 144 139 140 137 134 130 138 149 151 153 +156 157 155 154 155 157 158 155 153 157 158 156 +150 151 152 151 156 149 156 152 149 153 153 149 +151 151 150 149 151 153 156 156 152 155 154 157 +153 152 151 153 157 156 154 152 155 149 151 149 +150 154 151 149 149 147 148 142 147 151 148 151 +141 147 146 148 145 144 144 145 140 143 144 144 +139 134 141 140 138 136 136 128 132 127 134 127 +126 127 126 127 129 138 138 145 146 155 163 159 +104 104 96 100 99 99 96 96 98 94 98 100 +104 95 92 91 92 92 87 85 81 79 77 74 +68 71 78 87 102 120 128 132 143 148 154 160 +162 166 169 174 178 175 175 177 174 177 179 181 +179 179 181 176 178 176 176 172 163 160 150 144 +135 134 123 113 99 91 85 78 73 83 83 86 +82 90 89 95 97 92 96 101 102 104 107 107 +100 96 101 107 106 108 92 103 107 104 108 105 +113 122 107 84 70 71 64 57 47 41 43 63 +153 172 113 109 136 150 173 193 212 205 210 197 +181 172 153 107 56 42 39 42 40 45 48 35 +36 38 47 47 61 92 96 82 68 55 55 51 +48 60 67 81 62 74 55 60 67 85 58 56 +61 71 85 131 136 117 97 86 126 153 117 63 +45 38 49 41 48 51 46 46 53 64 46 43 +39 44 40 58 83 117 77 43 44 52 48 52 +43 45 42 43 53 52 48 42 46 42 39 38 +42 39 45 40 37 44 63 124 138 102 80 101 +138 166 162 145 151 162 167 170 187 184 193 198 +196 199 198 196 195 193 198 195 152 108 99 112 +113 121 125 129 124 115 117 120 110 101 97 75 +49 43 51 67 92 105 114 125 112 88 61 57 +54 60 57 63 77 107 159 197 207 206 208 207 +209 202 199 192 175 158 131 115 96 101 124 125 +116 101 110 114 118 124 116 112 122 127 128 132 +136 138 142 147 154 161 169 177 188 203 213 214 +218 216 214 191 134 103 105 108 127 134 117 81 +64 85 102 100 95 98 81 68 71 111 160 178 +172 165 153 135 109 82 69 60 47 52 55 41 +45 43 46 45 40 46 46 39 44 39 39 44 +51 80 100 49 44 52 106 175 167 184 155 132 +86 63 90 87 76 73 86 79 55 54 53 54 +49 45 62 58 47 52 48 48 61 60 53 49 +44 49 45 46 48 53 88 107 129 143 146 141 +139 136 135 136 143 150 153 157 157 158 158 157 +157 154 157 154 157 152 154 155 150 152 152 151 +150 144 150 157 155 148 150 152 154 151 151 151 +150 153 154 152 147 150 156 154 152 151 149 151 +150 152 154 148 153 155 155 152 151 149 149 152 +149 147 144 146 141 152 147 147 143 147 150 148 +143 142 144 147 143 139 136 136 136 139 135 138 +135 133 133 127 131 129 129 124 128 131 131 134 +140 145 149 153 158 162 167 171 +100 100 99 99 +95 99 98 97 99 101 96 95 95 95 89 86 +90 93 86 91 82 76 77 73 68 74 85 90 +105 114 128 135 141 148 154 154 161 167 171 176 +176 180 177 179 176 177 181 182 181 183 178 181 +178 176 173 169 161 162 149 146 138 125 121 113 +103 94 86 80 80 76 82 84 89 91 91 97 +104 101 99 101 102 105 104 103 105 105 103 103 +102 109 101 99 102 107 102 116 129 106 78 56 +50 55 58 49 45 52 48 69 135 171 133 137 +178 194 189 185 203 223 238 225 210 187 120 63 +64 42 44 41 46 41 41 41 37 41 48 51 +83 96 91 63 56 56 69 67 60 55 59 85 +72 60 57 62 62 72 85 78 86 80 88 139 +117 104 88 80 116 144 124 72 52 36 39 44 +58 48 47 49 57 60 52 39 45 42 45 52 +69 79 60 42 40 48 58 49 44 43 39 44 +45 54 56 39 38 37 35 32 36 42 48 50 +52 62 109 148 123 83 85 126 176 184 158 153 +168 176 178 179 187 190 195 198 201 202 195 197 +195 197 194 159 108 103 113 117 118 117 127 130 +132 130 124 130 123 117 108 87 65 47 47 72 +99 113 111 116 120 113 95 81 63 64 75 88 +126 158 188 202 203 201 202 206 204 197 195 187 +162 148 138 131 119 105 115 126 122 111 112 115 +123 124 119 117 121 120 132 131 138 138 142 147 +154 164 171 175 192 206 214 219 220 215 207 181 +126 98 111 114 129 144 147 111 89 77 74 88 +88 85 75 76 114 157 180 182 177 166 154 129 +105 79 64 53 49 50 46 45 48 51 49 50 +40 46 45 43 43 42 42 44 50 80 95 58 +51 58 104 170 169 184 155 135 92 62 86 93 +88 81 92 80 58 58 55 56 54 46 47 46 +54 53 51 50 63 57 52 47 44 43 44 43 +48 59 96 115 130 143 146 138 140 143 138 142 +146 153 158 159 161 159 155 156 154 155 156 151 +154 154 156 155 151 149 154 153 152 150 154 151 +150 151 151 155 153 153 151 153 149 151 153 151 +150 152 150 152 154 156 151 151 152 152 152 151 +152 150 149 149 150 151 150 155 149 149 141 150 +147 149 148 145 146 145 146 146 143 142 145 144 +145 137 137 135 139 135 135 133 133 135 129 130 +131 131 127 133 134 139 142 144 153 155 156 163 +165 169 174 177 +99 99 105 103 97 93 98 100 +94 98 99 97 100 92 93 85 90 89 90 85 +82 79 77 74 69 68 83 92 106 118 124 135 +142 150 154 155 160 166 172 174 176 180 176 179 +180 177 178 179 178 181 179 179 178 176 174 173 +163 162 155 145 140 127 120 114 106 89 86 75 +79 83 79 86 89 90 95 97 102 105 99 103 +97 107 107 104 111 104 104 106 101 109 99 103 +106 107 100 107 108 59 55 51 62 55 48 54 +57 73 85 116 141 182 152 140 168 190 182 193 +222 244 241 230 207 146 56 58 75 47 36 39 +47 40 35 38 38 45 51 83 100 81 80 72 +83 83 88 71 51 49 64 86 85 70 69 83 +82 79 98 95 90 69 96 131 104 104 73 85 +109 144 133 78 54 40 41 54 52 44 45 41 +63 43 43 53 44 47 42 53 61 59 55 44 +39 55 63 48 39 38 40 44 47 48 52 38 +35 45 44 33 35 33 42 53 60 88 136 150 +98 87 101 163 195 172 149 155 172 180 177 180 +188 195 195 199 200 197 198 192 194 191 154 106 +106 114 118 122 114 117 125 123 131 139 131 143 +136 125 118 100 82 67 67 81 98 114 118 118 +124 131 120 108 100 101 116 136 163 186 196 198 +201 204 206 208 206 201 198 175 150 136 143 142 +147 112 110 121 132 126 116 113 121 115 123 123 +124 127 129 129 131 133 134 144 147 162 170 183 +199 207 218 220 221 213 206 173 125 100 97 106 +125 137 149 138 113 104 87 78 78 85 100 122 +156 182 181 177 172 166 152 123 104 81 68 58 +55 54 48 46 47 47 50 56 52 50 39 41 +52 52 44 47 52 83 87 49 50 53 90 155 +168 185 161 140 100 61 80 94 86 82 95 74 +70 51 52 46 51 51 51 55 49 48 42 46 +54 56 58 51 50 50 43 46 49 82 99 123 +136 139 140 139 137 141 134 139 147 157 162 159 +157 156 157 156 153 153 155 154 156 154 153 154 +154 154 152 151 151 151 153 153 152 151 149 155 +162 156 156 150 152 151 154 155 156 151 154 153 +154 154 157 155 152 153 154 150 155 156 152 150 +148 151 152 154 153 146 148 147 150 148 148 142 +145 144 142 140 141 142 139 139 140 138 140 136 +135 133 133 130 132 132 127 129 127 134 133 143 +143 150 150 156 161 162 164 172 170 174 181 181 +98 98 100 98 101 104 100 98 97 98 97 98 +96 95 96 86 93 92 90 87 82 82 77 74 +72 68 81 91 99 115 123 135 144 148 151 157 +163 168 171 173 175 176 179 178 179 180 178 178 +178 181 177 176 180 182 173 168 161 158 152 145 +141 126 121 113 101 96 86 81 87 81 89 91 +89 93 97 98 99 101 104 102 102 112 106 109 +105 107 110 109 108 107 104 105 99 79 67 60 +67 46 52 50 94 100 85 77 95 119 129 148 +166 183 175 149 153 173 185 228 245 241 226 192 +114 60 51 69 100 67 38 40 39 41 40 39 +42 49 73 102 110 108 98 88 72 69 50 50 +41 43 54 84 80 83 90 95 88 86 85 88 +71 64 101 134 104 116 56 82 112 155 131 90 +73 47 59 63 50 40 39 47 63 49 43 39 +39 35 40 47 58 57 49 45 54 66 62 45 +45 53 47 44 45 49 54 39 34 39 35 34 +33 32 56 42 77 132 155 123 99 101 135 194 +198 157 150 160 172 176 185 181 192 198 198 197 +199 196 193 193 187 145 101 104 113 127 123 122 +121 123 125 123 134 142 139 140 135 134 132 115 +105 95 90 93 94 94 109 119 130 139 140 131 +131 138 145 157 182 187 193 196 198 202 205 208 +205 198 181 157 143 138 145 153 138 115 112 124 +131 129 125 120 114 117 120 124 131 127 128 127 +132 132 141 141 152 163 169 182 200 208 220 223 +220 214 202 166 124 101 89 89 96 119 128 138 +135 128 121 112 116 136 142 158 178 186 180 173 +172 159 143 119 100 82 68 48 47 55 62 53 +50 47 53 53 51 52 47 46 52 55 51 51 +48 90 87 53 49 57 90 156 171 190 162 136 +102 69 74 99 77 96 83 77 72 56 49 44 +48 50 45 49 44 43 48 53 55 58 57 46 +44 50 47 43 51 77 102 127 139 142 135 137 +134 134 140 141 149 154 158 161 155 156 155 158 +158 156 156 153 155 152 151 154 152 151 155 150 +150 149 151 151 150 152 151 155 161 164 153 152 +148 149 152 153 150 149 154 151 156 154 151 153 +150 152 152 150 147 149 149 150 148 153 146 149 +148 148 149 144 146 148 148 141 144 143 143 138 +142 137 135 144 139 139 143 140 134 133 132 136 +130 130 129 129 135 141 146 152 154 159 162 166 +169 173 172 178 178 181 183 185 +99 99 95 100 +102 102 98 98 95 98 100 97 98 91 91 92 +91 86 89 91 86 78 73 73 75 73 83 88 +107 123 126 137 139 147 154 157 163 166 172 173 +173 176 176 178 180 178 179 182 181 180 179 177 +179 178 174 171 163 163 154 147 136 132 127 113 +102 93 85 81 84 85 81 88 91 91 88 98 +100 97 103 105 105 108 111 108 104 110 108 107 +108 113 124 106 64 55 47 41 42 43 53 56 +73 126 120 120 131 153 152 155 167 181 188 170 +157 180 216 235 217 189 130 83 61 44 50 58 +110 86 42 40 39 45 45 46 64 91 121 130 +128 114 106 85 47 43 47 38 35 39 66 99 +53 62 88 96 84 77 64 86 76 74 103 142 +118 120 49 78 116 164 130 104 90 70 74 49 +45 45 37 45 56 43 39 36 38 41 49 51 +45 48 44 48 60 64 57 54 45 43 47 50 +67 58 46 52 41 35 39 35 34 43 40 58 +110 145 146 95 96 123 171 205 190 157 164 166 +173 179 186 186 196 199 202 199 198 195 190 188 +143 95 97 117 121 122 123 126 128 128 128 125 +135 144 146 144 141 140 140 129 123 116 107 98 +104 83 74 112 124 134 137 146 149 155 155 158 +168 173 175 187 186 192 195 192 185 175 167 170 +155 147 142 134 124 116 118 130 127 133 126 125 +119 118 120 122 127 128 128 132 128 131 142 148 +153 166 173 186 194 207 220 223 223 213 202 165 +125 115 101 95 92 107 119 127 141 141 137 137 +141 150 159 167 174 180 174 163 157 141 123 101 +91 76 53 46 52 66 63 61 55 56 53 58 +56 48 48 50 54 49 50 50 54 91 85 55 +55 55 91 156 165 188 176 139 110 82 84 92 +83 101 70 62 62 50 52 44 45 40 46 43 +44 43 48 46 54 53 55 46 42 39 47 47 +66 89 116 132 138 139 137 137 134 129 140 146 +154 155 156 160 155 155 152 154 155 159 152 150 +152 149 152 154 152 149 153 153 147 148 152 155 +153 152 153 154 153 162 161 156 149 154 152 154 +150 152 152 154 154 151 154 153 152 152 150 151 +147 150 149 149 152 146 146 145 147 144 145 144 +143 146 148 143 145 142 141 136 138 137 134 141 +140 138 136 136 132 134 135 133 132 132 136 140 +151 155 158 161 162 164 172 175 175 176 178 182 +182 185 187 190 +103 103 102 103 102 102 99 95 +98 97 98 95 98 99 88 88 93 90 90 84 +92 79 75 75 73 64 81 89 104 119 130 133 +141 152 152 157 163 165 168 171 176 178 179 179 +179 181 177 180 182 182 181 180 179 182 175 169 +165 160 158 147 137 137 128 113 102 97 89 85 +83 88 85 88 90 91 95 100 104 98 101 109 +110 107 110 112 106 110 109 114 102 121 160 84 +46 49 44 42 46 49 58 70 97 135 143 143 +154 160 158 149 158 176 195 191 165 205 205 180 +147 82 55 50 45 47 46 51 83 99 63 45 +51 58 74 102 122 133 135 132 104 93 107 50 +36 32 42 32 35 48 76 109 39 55 89 90 +78 77 72 78 93 79 99 139 133 119 55 83 +127 166 116 115 111 73 65 49 70 82 36 50 +42 40 36 36 42 37 44 46 52 50 50 48 +49 56 49 46 57 48 48 46 41 56 46 38 +37 44 34 31 30 34 43 82 132 159 108 86 +107 155 194 203 175 163 166 173 182 184 188 190 +199 200 201 197 195 196 190 147 96 91 108 118 +123 123 122 129 134 126 129 125 132 147 147 144 +143 143 142 135 136 128 112 108 114 105 108 120 +113 110 115 132 133 141 151 153 150 157 168 167 +172 178 178 170 177 180 186 188 178 160 154 151 +148 135 136 137 132 130 126 121 118 120 114 120 +126 130 128 127 120 130 140 147 150 157 168 181 +193 206 219 223 222 214 201 169 154 146 127 123 +118 120 117 128 139 151 147 146 151 150 156 160 +157 157 151 138 133 128 112 93 76 56 44 47 +63 75 67 61 56 56 58 56 51 47 46 49 +74 54 50 55 57 91 84 47 48 52 88 154 +160 187 181 146 112 85 76 86 88 107 66 54 +67 64 70 47 45 42 46 57 45 43 49 51 +58 52 57 57 49 42 53 65 76 97 118 134 +141 144 138 139 135 134 145 145 150 160 159 160 +156 154 152 156 156 157 157 153 155 148 150 155 +150 153 150 150 150 142 151 148 150 151 153 156 +152 166 168 167 149 153 154 154 149 153 152 153 +157 155 155 151 151 147 152 151 149 149 149 150 +147 146 149 148 145 147 143 145 142 139 141 144 +140 140 146 139 136 136 139 138 139 142 134 132 +135 134 130 125 135 141 144 153 156 160 163 168 +170 173 179 180 181 183 182 184 184 188 188 191 +107 107 103 102 98 99 102 97 97 103 106 99 +96 92 90 91 90 87 84 82 84 79 77 73 +72 71 78 91 100 116 128 130 142 149 152 158 +165 168 170 173 178 175 177 178 179 179 183 180 +181 183 181 180 180 179 178 171 164 163 156 147 +140 136 123 111 104 93 85 81 79 80 86 92 +96 96 97 95 101 104 106 107 106 112 113 108 +110 112 111 106 108 140 169 61 37 45 35 41 +55 62 77 98 127 152 156 145 143 148 156 158 +153 157 163 158 153 196 179 136 76 46 51 46 +42 41 36 49 72 113 94 80 95 106 116 131 +133 107 83 73 70 93 85 42 36 38 36 40 +41 53 92 120 45 51 96 88 81 74 78 78 +78 92 93 126 149 122 82 100 129 168 111 111 +115 64 56 57 96 73 43 46 45 48 41 35 +41 42 46 43 55 45 47 46 47 48 43 42 +42 50 44 58 45 57 40 36 36 34 36 35 +34 34 57 119 156 134 95 97 129 182 202 184 +165 168 170 177 181 186 190 194 202 202 201 194 +193 191 137 94 95 104 116 119 128 130 124 129 +138 129 134 130 133 145 142 143 142 142 142 142 +141 133 120 117 125 126 126 125 107 109 106 123 +110 96 120 133 136 146 150 145 147 167 159 141 +159 162 164 175 173 171 170 174 173 159 148 139 +131 125 128 123 127 115 122 129 122 126 126 129 +130 133 140 145 149 157 171 182 191 208 219 223 +226 214 201 178 173 173 164 158 159 142 133 136 +144 150 142 133 128 141 153 155 156 157 135 129 +117 98 91 78 64 49 46 56 84 83 75 70 +59 54 53 61 56 51 41 48 72 54 53 52 +56 83 75 44 45 52 82 148 155 184 181 144 +126 90 76 77 88 101 73 55 68 65 50 44 +49 50 49 48 46 41 39 49 57 60 56 48 +46 54 57 122 87 108 120 135 144 138 133 135 +133 136 140 148 156 158 157 157 154 154 155 156 +154 157 153 156 152 147 152 153 153 148 150 147 +150 147 149 154 151 148 152 154 157 167 177 159 +150 152 150 152 147 155 156 153 156 150 153 152 +157 152 153 149 152 151 147 148 142 147 148 149 +148 143 142 138 138 140 146 141 142 139 136 137 +132 134 138 139 133 139 134 135 132 132 132 140 +142 151 160 159 165 171 172 176 177 179 181 182 +184 187 184 184 188 186 189 191 +103 103 104 105 +101 105 103 100 107 107 102 96 95 95 88 89 +91 88 86 80 79 79 82 81 68 73 75 90 +103 124 129 136 142 148 158 158 163 167 170 171 +169 176 178 179 176 180 180 180 178 181 184 180 +183 177 180 172 164 164 155 148 141 137 127 113 +101 93 86 82 86 84 89 90 90 96 99 98 +102 105 105 102 112 111 112 108 116 113 112 110 +107 142 155 64 42 42 39 49 75 98 110 125 +158 175 153 156 142 142 138 140 125 133 147 164 +186 187 115 66 50 50 60 58 55 44 46 55 +71 112 127 110 106 104 91 86 69 53 59 65 +99 104 51 40 34 37 37 41 50 60 96 121 +39 53 89 98 90 72 53 69 69 86 101 112 +147 122 103 101 128 161 109 77 110 68 69 107 +95 53 38 45 45 43 37 42 45 45 42 47 +46 43 44 47 49 47 47 47 51 49 57 51 +45 42 49 35 36 33 34 30 31 41 93 137 +156 110 88 102 156 192 193 161 163 168 175 175 +186 189 193 199 205 198 197 197 193 150 96 95 +105 109 116 119 126 132 130 133 139 131 135 136 +137 143 141 145 146 144 144 146 146 136 133 131 +136 137 131 122 109 103 119 124 99 88 116 128 +129 132 127 104 106 127 114 100 126 159 162 167 +167 179 175 176 168 157 143 135 124 118 125 120 +125 123 129 128 129 129 130 134 129 128 137 142 +149 156 166 180 187 206 218 224 227 217 205 180 +168 171 167 163 158 150 147 147 151 144 131 124 +121 113 128 116 112 125 88 62 66 62 60 63 +64 66 63 66 88 90 85 69 55 55 55 57 +52 47 45 47 55 52 53 53 66 82 80 51 +48 49 84 150 153 179 185 147 129 94 84 69 +84 98 83 64 56 59 44 46 49 46 54 48 +54 46 51 59 59 66 52 48 49 54 66 77 +92 115 127 135 137 138 133 130 134 137 141 152 +157 157 157 157 153 155 156 156 156 154 154 154 +150 153 150 152 154 150 150 146 147 146 149 152 +151 152 150 159 157 155 157 151 150 152 151 152 +153 151 150 151 153 152 156 154 155 152 151 150 +151 148 147 145 148 144 140 147 144 143 140 138 +136 139 141 139 142 140 134 139 135 136 133 133 +136 137 136 134 134 139 144 149 154 161 167 168 +171 177 179 182 185 183 184 185 186 187 188 185 +187 186 190 190 +103 103 102 103 103 110 105 101 +96 97 103 97 91 94 88 90 89 90 84 84 +79 81 81 74 69 72 74 89 100 115 125 139 +145 145 153 159 164 168 171 172 173 175 177 177 +177 180 182 184 183 185 180 184 182 183 176 173 +168 165 159 149 141 132 129 117 103 98 84 76 +80 82 82 92 93 93 99 101 102 105 103 105 +112 113 112 110 111 110 109 105 110 139 161 85 +41 46 52 69 105 129 135 148 163 180 156 139 +130 126 125 131 127 133 164 179 155 98 64 57 +63 74 69 63 50 56 48 56 56 76 117 135 +120 81 57 63 47 51 70 102 121 70 39 35 +36 42 42 48 56 54 91 121 55 56 79 106 +103 90 46 51 77 89 104 117 127 105 113 112 +133 146 99 74 92 93 127 129 75 41 35 39 +45 40 42 44 38 44 41 45 45 43 47 51 +52 42 41 46 56 56 46 47 43 34 38 38 +34 33 33 32 37 70 123 152 127 97 91 127 +178 194 173 159 170 170 179 180 184 193 194 200 +202 197 198 192 149 88 82 105 106 115 125 126 +131 136 133 137 140 141 137 142 141 143 142 142 +144 142 141 145 148 143 139 144 140 141 132 128 +108 119 127 121 108 90 127 127 137 134 138 113 +110 128 122 101 125 166 152 146 156 166 163 164 +152 150 138 130 125 121 119 122 124 129 131 131 +123 129 128 128 128 126 138 148 148 155 165 176 +183 204 217 223 227 219 206 182 169 163 160 151 +151 143 144 143 142 136 128 105 111 109 112 112 +96 116 92 67 59 76 59 67 84 86 82 79 +87 85 83 65 58 52 49 59 51 40 35 44 +50 46 57 57 74 87 81 48 51 58 76 149 +153 183 190 151 139 100 85 65 92 99 81 56 +53 54 46 47 46 48 50 49 46 40 52 56 +57 53 53 52 47 53 66 89 106 123 129 139 +138 136 134 131 136 143 144 157 163 161 162 158 +155 153 156 154 151 155 153 154 153 154 153 151 +154 153 151 150 150 151 146 147 148 150 149 151 +151 153 153 147 150 150 150 154 148 150 149 148 +149 152 155 154 154 152 151 151 149 146 148 148 +140 143 144 146 143 142 141 140 141 140 140 136 +136 136 135 139 138 131 133 136 135 131 136 135 +149 148 153 163 164 169 172 176 177 181 183 185 +187 188 187 188 188 188 189 185 187 189 187 188 +101 101 102 96 98 107 105 103 101 99 104 96 +90 95 93 88 84 84 85 84 77 79 70 69 +65 73 77 86 101 112 126 136 144 145 157 156 +161 166 171 175 174 179 177 179 181 181 181 182 +183 186 184 180 186 180 176 171 168 168 159 149 +139 134 125 116 103 97 87 77 80 87 86 90 +96 98 106 96 102 100 107 103 107 110 109 106 +110 110 109 106 108 122 155 101 57 65 73 92 +128 139 134 131 149 161 144 123 130 136 137 127 +116 122 126 112 93 82 69 64 72 70 57 43 +41 46 49 49 43 47 81 144 146 113 89 68 +54 74 107 142 120 62 53 46 47 43 45 50 +48 45 81 116 52 77 73 92 97 93 57 39 +50 83 102 111 120 103 112 116 112 132 99 99 +119 120 147 104 41 36 38 43 50 45 48 50 +67 41 40 42 48 47 46 46 45 41 44 44 +47 49 54 52 44 40 37 38 35 32 34 34 +49 106 141 148 109 98 104 144 187 182 161 161 +176 174 181 183 188 196 196 203 201 196 197 153 +89 81 95 102 108 118 124 129 129 136 133 139 +140 147 133 141 139 144 148 147 147 142 145 141 +145 144 144 149 149 148 141 130 119 128 129 123 +113 110 134 126 135 137 142 123 108 133 137 128 +134 166 146 145 152 152 152 152 145 142 142 132 +126 116 120 127 130 130 131 132 125 127 129 126 +126 130 136 138 145 154 165 170 185 203 216 223 +223 221 207 186 174 163 159 148 147 140 140 132 +135 133 127 110 120 114 119 117 113 120 107 85 +65 93 79 74 79 91 86 85 81 86 84 68 +54 53 55 57 51 45 39 50 61 51 49 58 +80 76 84 51 44 54 78 144 154 180 186 158 +143 111 89 57 90 99 78 61 50 59 52 50 +51 52 53 49 39 46 54 61 63 48 45 45 +54 52 68 101 111 128 140 142 138 133 135 131 +138 143 150 158 160 155 158 159 160 157 152 153 +155 153 154 154 150 151 154 153 150 153 154 151 +152 151 150 153 147 149 151 152 152 150 150 150 +152 150 153 153 146 150 148 152 150 151 151 151 +150 148 147 152 151 150 146 146 148 143 142 146 +145 142 140 141 141 138 136 133 134 133 131 135 +132 138 133 131 135 138 143 150 156 161 161 169 +173 176 178 183 184 185 184 184 191 189 188 190 +192 188 188 187 187 189 187 190 +103 103 104 105 +102 107 106 100 94 97 103 97 90 88 89 86 +83 85 87 85 82 81 75 73 70 72 71 85 +102 116 128 133 140 148 155 157 164 166 170 173 +174 178 180 179 176 180 181 181 182 180 180 187 +187 179 178 173 167 166 156 149 143 134 128 117 +106 101 87 75 79 87 84 84 90 90 95 99 +103 107 108 104 108 111 113 114 115 110 108 111 +110 111 141 131 97 111 116 119 138 137 128 114 +123 132 146 150 144 130 114 78 65 74 88 84 +80 90 88 73 57 55 48 39 41 44 48 46 +37 38 60 112 151 140 129 94 78 105 129 126 +106 78 78 82 72 44 54 59 40 40 78 113 +65 58 74 83 106 104 77 43 52 92 112 100 +97 113 120 135 117 121 115 119 135 144 110 49 +35 37 50 58 50 45 41 43 48 47 51 51 +42 45 50 48 45 46 44 46 52 53 50 54 +45 37 39 37 26 30 34 38 89 135 161 127 +98 102 114 167 184 162 162 167 178 173 177 182 +189 197 200 202 197 195 158 88 80 81 96 107 +108 122 128 125 131 133 134 141 146 149 140 141 +143 143 149 147 152 147 148 140 143 140 142 147 +149 151 143 132 131 140 137 129 123 125 132 126 +135 136 132 132 119 139 148 142 144 159 152 153 +151 149 150 146 144 150 148 143 130 119 121 128 +129 135 132 133 126 131 130 126 125 128 134 136 +145 160 162 169 191 202 215 221 227 219 210 191 +180 167 159 153 151 148 141 133 136 128 125 124 +130 128 124 125 127 126 118 107 81 106 94 75 +81 98 97 96 89 93 82 69 58 47 57 56 +46 38 36 51 52 43 49 56 78 71 81 50 +43 54 79 141 154 175 190 163 144 117 95 55 +81 103 65 56 45 54 56 44 44 51 47 41 +40 46 59 60 55 51 53 47 43 46 79 99 +122 135 138 137 133 132 128 128 138 146 158 154 +159 157 153 155 158 155 154 152 153 156 151 150 +154 153 151 147 153 152 151 150 154 148 149 154 +151 152 153 151 148 147 151 149 149 151 153 152 +151 149 150 150 151 151 148 152 151 149 148 150 +147 147 148 146 139 145 146 145 141 141 138 139 +139 138 139 138 131 135 135 138 136 133 132 134 +135 144 152 160 160 169 171 176 180 182 186 186 +185 190 190 188 190 189 191 189 190 191 190 190 +185 187 185 188 +102 102 105 99 99 101 98 95 +97 99 97 95 95 92 88 92 82 82 85 82 +81 75 77 72 69 67 72 82 104 112 124 135 +143 145 151 157 165 166 169 173 173 175 179 176 +179 178 182 183 183 183 183 180 185 180 175 177 +171 164 157 148 145 132 129 113 104 92 83 78 +75 81 83 86 88 92 95 99 95 101 100 103 +107 109 110 117 106 107 105 104 101 116 137 166 +137 136 148 151 153 142 139 142 146 158 168 152 +110 85 69 70 67 67 69 68 97 106 83 55 +49 47 40 41 44 42 52 39 40 53 54 67 +112 142 157 127 121 133 138 135 115 102 112 117 +79 42 53 57 35 40 58 103 68 67 69 66 +109 114 91 64 49 106 106 81 82 114 118 134 +130 147 133 133 141 121 52 39 40 43 45 53 +56 52 41 44 52 51 50 48 46 39 45 54 +50 51 46 52 54 51 43 47 48 38 30 33 +31 31 34 58 117 153 154 109 98 112 140 184 +169 158 166 175 179 179 177 188 193 202 200 203 +200 161 92 79 83 92 99 113 116 122 132 129 +134 135 138 140 143 147 146 150 153 146 149 146 +152 152 144 147 144 138 143 144 147 148 148 140 +138 148 143 141 136 136 137 139 141 141 147 144 +140 148 149 154 153 158 158 163 158 154 148 150 +152 155 156 140 130 121 122 129 132 134 137 134 +128 132 129 126 126 125 130 133 143 161 164 172 +186 197 210 221 227 221 210 194 181 174 169 160 +156 153 149 146 135 137 135 133 135 136 130 122 +125 132 125 108 86 102 103 77 93 104 95 98 +91 97 91 78 62 53 63 53 45 38 40 50 +50 46 50 58 60 75 79 50 43 54 78 145 +151 171 192 169 142 123 98 59 65 101 65 65 +53 41 56 48 41 48 38 45 42 51 68 72 +60 44 41 37 45 55 75 98 123 134 138 135 +135 131 128 130 140 149 156 160 164 156 161 157 +157 154 148 154 153 154 152 153 151 153 150 149 +152 148 149 149 153 153 150 150 153 152 147 156 +152 149 150 150 150 151 147 149 150 151 150 149 +147 151 147 151 150 151 147 147 148 147 146 147 +145 140 144 145 142 139 137 138 141 143 135 137 +135 138 132 138 133 132 129 138 144 155 156 166 +170 174 179 184 187 185 188 188 190 190 192 189 +192 192 186 189 190 189 188 189 188 188 188 191 +100 100 102 100 98 100 99 96 94 98 93 92 +93 85 89 86 84 82 84 88 80 77 72 69 +62 68 77 84 99 110 121 132 141 146 151 155 +166 171 172 173 175 179 174 178 178 181 183 182 +182 183 184 184 180 176 181 176 166 164 158 149 +143 135 129 118 105 97 82 78 72 81 80 87 +89 92 95 97 98 103 102 105 108 108 108 105 +105 108 106 107 100 109 120 153 160 134 141 154 +164 161 165 172 161 144 128 110 94 69 74 81 +75 56 63 84 100 85 80 52 44 46 48 37 +42 60 54 42 36 55 52 54 62 103 150 142 +139 144 129 128 126 121 122 113 70 52 53 49 +38 40 48 87 85 77 68 62 99 117 107 87 +69 106 86 78 71 93 115 117 114 122 135 138 +120 116 90 68 51 64 45 44 40 39 42 51 +45 44 43 45 48 47 46 45 53 44 46 46 +42 47 41 48 38 39 42 38 33 32 40 94 +132 160 130 106 102 126 168 191 168 160 170 178 +183 184 180 192 199 200 201 201 169 95 73 85 +93 99 109 116 116 125 127 131 138 135 140 146 +148 147 149 154 153 154 153 150 153 150 149 152 +153 148 147 146 143 148 143 138 148 146 142 143 +141 141 142 141 143 141 150 150 150 150 153 154 +157 161 162 164 164 155 158 161 162 160 151 139 +129 129 128 136 132 137 135 134 133 128 130 125 +129 126 129 130 139 153 164 174 190 200 209 218 +223 220 210 200 184 182 176 166 163 157 157 149 +146 139 140 134 135 136 134 124 125 130 124 114 +99 105 105 94 100 103 101 102 94 97 90 78 +60 54 63 57 44 39 38 52 52 53 49 56 +59 76 70 46 45 51 72 142 153 169 187 165 +141 132 97 62 60 92 74 53 60 43 55 48 +49 56 49 43 47 51 66 66 54 42 45 42 +47 50 80 114 130 139 137 135 134 130 129 130 +143 148 158 157 158 155 158 155 155 156 149 150 +155 158 153 152 155 148 148 150 149 152 149 152 +155 153 150 150 151 149 150 151 149 150 145 152 +150 149 146 147 150 148 154 149 150 150 149 153 +148 148 145 145 147 147 146 145 146 140 142 142 +142 140 142 142 138 139 135 138 139 132 130 136 +130 134 135 146 158 164 171 174 180 185 184 186 +191 190 191 192 192 190 193 190 188 188 188 189 +188 189 190 189 186 188 188 188 +99 99 103 100 +98 100 100 100 92 95 94 93 88 88 82 82 +85 81 82 80 77 76 70 70 60 60 74 84 +100 112 126 132 141 145 151 163 163 164 170 173 +178 176 178 175 180 179 181 178 183 183 182 182 +181 178 179 173 166 165 157 151 144 138 133 115 +103 97 85 76 79 81 84 93 97 93 93 97 +98 103 102 110 105 108 109 107 108 109 107 108 +105 107 110 133 166 147 140 157 170 169 165 155 +133 118 111 95 79 76 69 66 67 67 82 95 +86 80 64 58 44 36 36 39 50 81 49 47 +45 62 56 50 57 82 128 136 131 125 113 120 +116 118 94 76 63 48 56 46 40 42 51 79 +77 75 69 53 63 119 124 111 97 92 74 63 +74 64 97 109 95 98 141 136 85 84 94 93 +72 89 78 74 43 43 46 44 46 50 48 50 +45 40 46 49 55 54 51 47 47 44 44 43 +39 34 35 36 33 35 61 120 156 142 114 106 +111 150 192 178 171 166 170 176 182 187 192 201 +203 207 203 182 96 70 81 92 94 103 109 113 +121 121 123 129 139 135 143 146 148 152 154 153 +151 150 147 149 159 148 156 156 158 153 156 153 +148 151 145 142 145 144 146 143 142 143 147 144 +146 151 150 155 157 159 160 167 167 166 162 164 +163 157 162 162 167 160 146 134 131 133 132 131 +134 137 139 134 131 126 128 123 131 123 129 131 +142 159 165 169 187 200 207 213 222 221 213 200 +187 186 184 173 168 161 162 155 150 149 147 142 +143 136 132 128 125 124 123 119 115 110 115 108 +104 108 110 109 104 101 85 81 63 59 68 59 +46 40 42 56 53 44 61 60 61 70 83 50 +53 52 70 142 156 171 188 165 130 134 94 57 +58 93 65 54 57 43 56 58 46 55 50 45 +49 49 62 59 54 44 39 40 41 65 85 115 +130 138 138 136 130 135 130 137 146 152 156 156 +157 154 155 157 154 153 152 151 152 154 156 157 +149 153 150 149 149 147 154 149 153 151 149 152 +149 151 150 150 149 149 146 149 149 150 153 153 +149 149 149 151 153 149 152 151 148 144 143 145 +145 148 142 145 142 139 138 141 141 141 141 143 +138 136 135 133 133 133 130 125 132 149 153 161 +169 174 180 184 185 187 189 188 191 194 193 192 +191 191 192 191 191 189 189 190 189 190 189 188 +188 189 190 190 +104 104 98 98 99 97 92 96 +93 92 89 92 88 90 86 83 81 83 84 74 +77 69 64 60 55 54 63 77 92 112 130 131 +137 146 149 162 160 165 170 170 172 174 176 184 +181 179 182 179 180 183 183 184 184 184 176 174 +167 162 159 153 142 138 129 120 104 92 80 82 +84 78 82 92 91 93 91 95 98 101 106 103 +109 108 111 108 110 103 108 106 111 109 108 120 +144 156 158 174 167 149 140 118 115 118 111 96 +71 63 61 58 66 77 106 99 89 77 54 49 +40 39 38 57 60 91 60 49 59 70 66 54 +79 96 98 105 106 114 105 107 95 100 70 58 +51 39 42 44 35 40 60 61 75 72 70 53 +54 78 117 129 118 100 75 87 97 96 103 96 +87 87 142 105 58 62 89 94 60 75 51 53 +48 47 45 41 43 45 46 45 43 44 47 41 +51 52 47 46 50 41 47 49 40 37 32 36 +35 47 100 141 159 124 100 104 122 164 186 171 +181 176 179 182 186 191 197 202 203 206 187 111 +60 78 84 94 100 109 111 118 120 119 128 133 +135 134 141 141 151 149 152 151 153 151 150 154 +154 159 163 159 163 158 160 155 154 154 151 147 +149 150 152 154 148 153 157 153 156 156 164 160 +161 163 165 167 170 164 167 164 163 159 165 162 +167 155 142 138 129 127 132 134 138 139 135 137 +126 125 128 130 129 129 131 134 140 155 161 170 +182 194 206 217 221 222 215 198 189 186 186 177 +171 158 163 163 153 152 151 147 145 139 131 130 +129 125 126 126 122 117 109 119 112 118 113 109 +106 97 97 82 61 58 64 52 53 37 44 54 +52 48 58 63 56 74 81 49 48 52 70 139 +161 165 188 174 135 136 100 63 65 95 77 46 +57 42 46 57 49 48 41 44 49 53 57 55 +48 43 40 51 43 67 100 118 131 143 138 137 +134 137 125 139 142 152 156 158 158 158 154 153 +153 153 154 156 150 149 155 149 148 151 154 149 +150 149 151 151 150 151 148 152 151 152 152 155 +151 153 150 151 149 150 152 150 150 149 149 149 +149 147 151 148 147 145 144 142 143 144 146 145 +140 143 143 142 139 138 141 137 133 132 134 129 +127 131 126 131 142 153 163 167 177 184 188 191 +190 191 192 193 194 193 193 194 193 190 192 190 +190 189 188 189 189 190 190 188 189 188 188 189 +100 100 97 101 96 88 94 91 93 89 87 83 +80 84 80 82 83 83 82 76 77 68 67 60 +57 55 67 77 95 111 123 133 140 150 148 156 +159 167 167 169 173 176 176 178 182 178 179 184 +184 182 181 181 184 180 182 173 165 163 153 150 +144 138 127 116 102 91 86 76 80 80 90 88 +87 89 94 96 100 103 105 98 107 106 110 109 +108 109 109 108 108 108 111 114 114 137 153 158 +145 128 112 109 111 119 106 84 61 59 57 62 +83 106 102 84 57 60 62 55 41 37 46 47 +78 88 58 55 65 87 92 87 109 101 117 76 +66 74 70 65 101 104 81 72 46 44 43 35 +34 52 55 53 62 85 82 52 48 49 78 114 +130 126 119 125 120 118 112 74 73 107 109 64 +63 94 135 70 38 43 48 48 44 44 44 44 +47 45 39 43 50 39 43 42 47 53 55 45 +51 49 48 47 48 38 38 39 43 69 129 157 +131 105 101 106 134 180 172 177 179 181 187 186 +195 195 203 206 204 193 129 63 69 84 96 102 +112 111 111 114 120 125 134 134 135 130 141 140 +149 148 150 155 155 155 155 159 164 162 162 162 +164 157 166 161 161 162 158 153 159 155 161 161 +156 156 158 165 164 170 170 163 166 176 172 173 +164 161 171 172 161 163 170 164 163 149 140 140 +132 133 135 137 143 142 136 136 129 129 126 130 +127 126 128 125 140 152 160 168 180 191 208 216 +224 223 214 199 191 186 186 180 175 160 157 153 +158 156 151 150 151 143 136 129 135 129 132 130 +127 121 115 119 112 118 117 114 114 107 95 85 +73 62 72 57 52 36 44 53 54 48 64 59 +62 84 75 51 43 51 62 136 159 163 185 175 +140 140 106 60 66 86 92 46 47 56 49 59 +45 42 37 40 49 49 58 43 45 44 40 47 +47 76 102 123 134 140 137 134 132 131 137 140 +148 153 155 157 156 158 156 153 157 157 155 159 +153 150 150 152 151 152 152 149 150 150 151 153 +153 150 152 152 152 147 149 147 150 154 149 149 +148 148 149 148 146 153 148 147 151 145 149 146 +147 148 149 146 144 146 143 143 141 140 143 141 +140 143 142 138 137 135 128 133 129 133 130 146 +155 164 172 177 182 188 192 192 193 195 196 194 +194 192 193 193 191 192 191 191 190 191 190 188 +187 189 187 189 191 191 189 190 +101 101 94 95 +92 91 89 92 92 94 84 88 85 84 80 77 +79 82 83 80 72 69 69 63 62 63 65 74 +87 106 123 133 138 149 152 156 163 165 168 175 +177 174 177 180 179 182 178 183 180 183 180 182 +182 183 177 171 166 167 156 148 145 131 127 115 +102 90 90 80 74 78 81 92 93 93 95 99 +98 102 110 105 111 111 109 107 108 105 113 106 +108 109 110 116 117 131 132 132 112 107 103 113 +111 107 76 62 59 74 71 79 92 110 95 65 +47 47 60 50 43 42 49 61 85 83 70 60 +78 103 107 116 108 124 110 70 60 49 51 80 +108 97 83 51 37 38 41 38 50 64 45 57 +61 95 90 69 54 48 53 71 134 143 147 144 +131 122 96 60 60 114 75 73 114 152 131 42 +41 40 43 49 45 50 42 47 49 47 44 47 +47 39 47 45 49 50 62 47 47 48 48 50 +43 41 42 44 54 106 144 148 110 97 100 117 +161 180 170 178 181 186 189 188 197 202 208 206 +198 137 64 63 76 89 96 106 112 113 116 117 +119 125 131 133 136 132 137 140 150 147 151 150 +156 160 151 160 163 164 167 165 165 159 163 166 +170 172 171 166 165 160 164 166 163 166 163 165 +169 170 173 168 168 176 173 168 164 166 171 176 +164 165 173 165 158 147 140 142 135 135 143 143 +142 139 133 137 132 127 128 129 129 129 128 127 +139 153 167 177 179 192 207 216 220 222 215 205 +193 187 182 183 175 166 162 156 156 156 154 156 +151 147 139 135 132 134 131 126 129 121 118 113 +114 115 111 109 111 99 96 85 61 62 63 56 +55 41 51 55 50 58 63 59 60 72 64 50 +41 55 63 129 160 163 187 176 150 141 98 57 +61 83 84 44 46 53 49 57 50 46 39 44 +49 52 54 51 41 43 42 41 54 79 106 124 +135 133 135 132 135 131 134 146 150 159 157 155 +153 157 153 156 157 156 151 152 152 152 152 154 +153 151 153 151 151 146 152 151 149 147 152 154 +150 150 149 152 153 150 149 146 149 150 151 149 +148 146 145 146 145 144 148 146 145 144 149 147 +146 149 142 139 144 142 142 141 140 140 136 136 +132 132 131 132 131 130 141 159 165 171 177 182 +188 192 194 196 194 196 195 196 194 194 192 190 +193 188 192 191 191 191 188 187 189 188 189 187 +189 187 190 192 +99 99 92 96 93 88 90 88 +87 90 89 83 79 81 80 80 82 82 77 75 +69 69 61 62 61 59 65 77 91 107 125 132 +139 147 150 152 163 166 168 171 173 178 176 179 +181 183 178 185 183 184 181 184 182 180 181 173 +167 164 155 151 145 137 129 118 103 96 92 79 +77 84 85 85 90 89 93 100 94 103 102 106 +105 114 110 112 112 111 113 108 108 114 132 116 +121 129 120 111 109 108 116 114 103 79 67 88 +98 118 123 121 119 92 76 56 51 56 51 51 +42 52 46 60 94 91 81 70 94 119 118 109 +102 128 100 72 52 53 69 105 117 90 69 38 +36 35 38 47 52 44 51 77 83 104 112 81 +66 55 42 51 102 140 147 143 123 82 66 58 +66 102 82 121 165 161 89 43 47 41 45 46 +51 51 47 47 51 52 49 38 42 44 45 41 +44 49 53 48 54 53 50 51 52 41 45 44 +79 128 162 125 102 100 109 141 185 163 177 181 +187 187 189 192 195 199 205 204 164 63 62 71 +80 91 94 107 112 116 119 123 124 129 124 133 +141 136 140 142 149 149 151 152 151 156 159 160 +159 167 169 168 162 164 161 170 171 172 177 170 +169 167 163 165 169 163 165 167 174 176 176 174 +172 165 169 165 165 165 167 166 166 162 167 156 +158 148 140 135 137 139 142 146 144 138 134 134 +131 130 132 126 129 128 129 132 136 151 158 167 +184 194 204 214 218 222 217 207 194 189 181 181 +177 172 168 163 158 153 152 149 151 146 141 139 +137 134 131 131 128 123 122 123 119 121 114 111 +106 104 102 89 66 61 58 56 54 43 52 47 +50 57 66 60 59 71 65 50 34 45 59 132 +159 169 181 177 164 145 107 54 59 81 72 42 +38 48 51 67 42 41 39 44 53 54 53 47 +43 42 42 46 62 88 117 130 137 135 133 131 +134 131 137 149 154 157 158 159 155 153 159 154 +159 153 154 155 153 151 149 150 150 150 150 148 +150 148 149 151 143 152 154 153 151 154 150 153 +147 149 145 145 146 149 148 154 148 150 146 150 +145 146 145 149 144 147 147 142 142 139 139 144 +146 139 141 142 140 136 134 133 134 131 130 131 +131 143 154 168 174 181 185 187 191 193 196 197 +196 195 195 194 196 191 192 191 189 191 190 189 +187 188 188 188 190 192 189 190 187 189 189 191 +96 96 93 94 93 92 87 90 92 87 84 85 +86 83 78 83 84 79 80 80 68 65 67 60 +62 61 72 86 90 103 120 134 137 146 154 154 +159 168 166 169 173 175 178 178 177 180 181 180 +184 183 178 182 183 181 175 172 167 161 161 150 +143 137 128 117 105 96 87 79 77 81 83 87 +91 98 96 100 96 102 103 102 105 109 110 105 +108 110 111 114 110 112 116 122 121 110 96 110 +114 129 143 120 111 101 112 132 147 143 144 131 +119 92 62 55 55 56 49 48 48 46 55 78 +108 97 77 79 104 130 115 94 116 105 94 62 +65 71 108 128 108 80 46 37 36 38 38 47 +49 46 56 79 98 113 129 105 86 80 60 60 +71 76 79 109 129 108 83 60 92 104 115 166 +170 113 58 49 51 53 51 52 49 49 51 49 +50 55 54 45 42 47 44 41 46 49 46 52 +50 44 45 48 48 38 38 58 110 149 154 114 +108 104 129 172 190 159 178 183 190 191 190 195 +196 199 203 177 76 56 67 74 87 94 100 111 +112 118 124 122 121 127 126 125 139 139 138 137 +147 146 149 151 150 157 157 159 159 167 171 169 +161 163 162 170 171 174 179 171 170 169 162 166 +163 167 164 168 171 173 174 172 171 167 168 170 +166 167 172 168 171 162 162 161 152 148 141 138 +135 141 140 140 138 133 131 135 129 127 130 132 +126 132 127 126 136 142 151 165 181 196 201 210 +220 222 217 208 197 184 180 179 180 176 170 160 +164 153 152 149 150 146 141 142 136 135 138 130 +126 127 124 125 121 121 124 113 112 107 99 83 +69 65 58 59 52 40 46 49 51 60 58 54 +59 80 73 44 34 42 58 118 157 166 181 180 +165 147 110 63 57 69 78 40 35 50 54 51 +43 53 45 48 54 54 53 49 42 42 45 51 +68 101 114 132 139 139 134 135 132 134 140 149 +157 159 161 156 162 154 156 154 155 154 155 154 +153 152 148 147 150 148 152 147 152 152 151 149 +148 152 150 150 150 152 149 153 147 150 145 149 +147 155 149 149 152 149 148 144 146 145 146 141 +140 145 140 142 143 139 139 142 136 139 140 136 +138 135 134 136 134 131 129 136 142 157 165 174 +180 184 189 191 194 196 197 196 199 197 196 194 +194 192 190 190 192 191 192 188 188 186 186 188 +187 189 188 189 189 192 191 189 +91 91 89 92 +86 93 87 90 83 82 84 86 80 85 79 76 +80 72 77 75 70 67 65 59 59 58 69 74 +87 109 122 134 136 141 152 150 161 165 169 171 +172 178 175 182 177 179 177 178 181 183 181 182 +179 180 174 175 167 163 157 148 145 136 129 118 +107 93 86 78 78 78 80 85 89 86 89 95 +97 102 99 106 105 108 112 109 108 110 111 111 +117 114 117 125 114 102 107 118 139 167 170 145 +143 144 145 158 161 151 145 120 94 79 67 56 +61 58 57 65 64 60 57 81 117 100 78 71 +114 127 104 122 112 90 88 83 76 103 133 117 +93 65 35 34 36 39 43 41 50 43 56 60 +80 98 123 126 99 84 87 86 80 69 68 99 +116 123 123 118 131 145 157 159 126 59 64 70 +73 68 64 66 61 47 43 45 45 53 51 45 +47 44 44 41 48 49 44 51 48 55 44 43 +49 43 40 81 138 164 124 103 102 112 140 191 +178 171 180 187 189 189 193 198 201 200 186 90 +53 54 68 80 82 97 106 111 113 111 120 126 +120 130 128 129 137 139 139 140 140 146 150 156 +153 160 155 158 158 161 170 169 164 165 165 170 +173 168 176 172 172 171 171 173 169 171 171 170 +169 172 173 168 168 167 169 168 176 175 173 168 +173 160 155 153 153 148 147 140 135 142 142 149 +137 138 137 128 129 128 127 127 121 133 122 125 +135 142 151 165 174 195 202 208 218 224 220 209 +198 187 184 180 177 174 168 167 159 154 154 151 +149 144 141 136 132 136 134 131 129 132 126 123 +122 122 122 113 112 110 100 93 74 64 47 56 +51 40 45 56 63 64 48 62 62 82 66 49 +44 42 58 124 159 167 175 183 164 142 117 56 +55 75 73 41 37 49 65 56 49 47 41 43 +51 50 49 46 46 47 45 60 84 108 122 138 +139 137 135 131 131 133 143 151 153 162 158 156 +158 153 157 149 155 154 149 152 151 153 149 152 +151 149 154 151 151 151 149 152 150 149 151 152 +150 150 146 151 149 151 145 150 147 149 148 144 +146 146 145 146 150 144 144 147 140 144 139 146 +145 141 143 141 135 139 139 135 135 132 135 133 +132 131 130 145 155 165 170 179 186 189 192 193 +196 196 196 199 196 198 197 196 193 192 192 191 +191 192 191 187 188 189 187 186 188 190 192 189 +189 190 192 193 +87 87 92 92 91 90 86 90 +84 83 85 86 85 81 83 77 83 72 77 71 +65 62 58 58 59 61 67 80 88 105 117 126 +134 144 152 157 163 164 173 172 174 177 175 180 +177 179 177 181 180 182 178 179 182 178 176 173 +168 163 156 152 140 136 127 110 100 92 89 81 +79 78 80 85 91 92 94 95 97 100 97 101 +106 102 106 109 108 110 114 113 118 127 135 135 +129 132 141 148 155 164 173 165 164 157 149 138 +140 118 98 75 73 70 61 63 61 67 70 70 +66 56 63 95 121 87 70 81 109 120 116 122 +88 92 112 94 103 121 114 92 74 42 39 36 +40 40 36 41 49 45 48 51 57 67 91 109 +116 84 97 109 108 98 88 90 77 91 149 156 +159 159 152 118 68 67 105 97 95 81 81 85 +76 66 38 36 40 52 51 52 41 39 47 44 +42 41 47 45 45 45 43 41 40 44 66 119 +155 150 108 95 105 118 164 190 166 177 188 191 +187 189 198 203 205 192 122 54 52 61 70 75 +85 102 108 113 112 116 120 123 122 131 128 127 +132 135 140 143 143 147 152 155 150 155 156 159 +161 164 165 168 168 172 167 172 173 172 176 173 +173 172 176 178 176 172 173 171 169 171 172 167 +164 172 176 176 178 174 177 172 167 162 156 155 +152 149 146 143 138 141 140 147 143 138 135 131 +133 127 129 133 123 128 122 126 131 138 156 163 +176 190 200 210 220 224 223 210 202 190 182 176 +175 172 173 170 163 154 148 147 144 140 143 139 +135 135 139 135 132 131 126 124 127 121 123 118 +115 109 107 92 77 71 55 59 53 51 49 53 +58 55 49 70 56 89 62 40 35 38 53 121 +159 161 172 178 165 148 119 69 51 70 60 41 +37 42 65 51 42 41 43 50 55 57 48 43 +44 45 43 59 90 112 129 140 139 136 134 133 +133 134 146 157 157 160 156 156 158 157 154 154 +157 153 152 153 155 154 155 152 151 154 156 154 +154 149 148 152 154 155 151 149 151 152 152 153 +152 151 148 151 143 145 146 147 148 146 144 146 +147 146 147 145 142 144 141 143 145 141 139 143 +138 138 137 134 137 135 133 130 128 138 141 152 +161 172 183 183 190 191 194 199 199 198 196 198 +197 195 195 195 194 193 190 193 190 190 191 188 +190 188 188 188 191 194 190 191 189 191 192 191 +94 94 93 92 107 99 93 88 86 91 85 85 +86 84 86 78 76 76 78 75 75 65 66 61 +60 59 66 78 90 103 119 132 138 146 152 159 +163 165 171 171 173 177 176 176 179 178 179 181 +180 184 181 180 182 180 176 173 168 161 159 153 +144 137 126 111 103 94 80 80 78 78 87 90 +90 92 88 97 96 97 93 100 99 108 110 111 +116 130 136 142 147 160 160 152 162 161 168 171 +157 156 165 141 121 99 82 74 76 76 86 81 +65 54 54 55 57 61 67 70 61 50 72 101 +105 83 72 91 105 120 112 83 83 97 121 113 +127 118 98 68 41 39 36 41 42 39 33 43 +55 49 50 45 43 53 75 83 106 102 112 117 +122 124 112 106 95 85 104 137 143 134 104 63 +49 95 125 128 117 102 83 86 88 83 47 38 +45 50 54 45 44 49 48 44 47 53 48 43 +42 43 40 38 39 44 83 146 162 123 102 101 +111 135 186 179 173 184 188 194 190 194 203 205 +201 145 51 49 51 62 75 83 95 95 110 113 +116 121 119 122 122 130 127 130 131 136 138 138 +144 145 151 153 148 153 156 159 160 161 166 169 +168 173 166 166 176 172 180 176 173 168 176 181 +180 175 175 174 175 172 170 165 169 173 177 173 +178 171 173 170 168 163 161 155 151 150 149 144 +142 141 144 145 143 140 139 134 128 125 135 135 +123 126 127 128 132 141 149 155 172 189 197 214 +215 224 221 210 204 192 183 172 173 173 171 173 +168 157 153 149 149 145 139 137 135 139 133 134 +133 132 125 130 126 122 124 117 120 113 106 91 +70 56 56 59 47 43 49 55 65 55 52 73 +59 83 55 47 43 39 46 116 160 158 177 173 +158 156 121 73 50 65 53 33 33 40 67 60 +44 35 47 57 53 55 53 46 46 47 40 68 +100 118 132 141 139 136 132 131 133 137 153 157 +159 159 159 158 154 153 154 154 155 154 148 153 +153 152 149 151 155 152 151 152 150 149 149 149 +151 154 151 153 150 150 151 153 149 147 149 147 +148 154 150 145 147 147 143 146 144 148 148 142 +145 143 141 141 139 138 135 136 139 142 135 133 +134 134 134 135 134 136 156 163 169 177 184 189 +191 193 198 197 200 197 196 197 199 198 196 192 +192 193 192 194 190 190 190 189 189 188 189 190 +191 191 192 189 192 194 193 194 +89 89 91 93 +103 99 86 87 83 81 84 79 83 82 82 75 +74 74 72 68 70 65 62 59 57 57 67 77 +97 108 122 132 138 146 151 158 160 166 168 173 +174 174 177 177 179 178 178 178 182 181 183 182 +178 183 177 173 164 160 156 152 139 137 131 116 +106 93 83 79 78 79 85 89 91 90 90 94 +98 97 101 103 102 107 115 132 148 160 162 157 +156 160 152 147 150 141 152 161 144 157 133 76 +60 68 52 57 72 95 85 60 56 57 60 62 +62 62 65 69 69 57 81 108 102 86 76 85 +119 113 78 80 98 116 127 127 120 98 86 62 +46 43 41 50 41 43 38 41 40 46 41 41 +47 48 62 83 79 66 71 110 117 124 127 126 +123 118 106 76 58 53 48 45 49 95 134 134 +129 113 98 96 95 73 47 44 51 52 51 46 +57 44 46 43 48 47 45 43 48 40 40 41 +37 48 111 158 146 110 102 110 117 166 191 171 +180 188 188 195 194 201 208 204 168 61 43 41 +53 64 75 84 89 101 112 116 116 116 121 124 +125 126 125 129 134 138 140 140 145 144 147 151 +151 148 158 158 163 159 165 168 174 171 172 169 +173 175 181 181 173 168 169 170 177 178 177 175 +182 178 176 176 175 173 174 175 177 176 176 169 +170 164 162 159 154 146 145 148 148 148 144 146 +143 139 140 132 132 131 132 133 125 129 130 129 +133 138 146 157 167 187 200 214 218 224 220 211 +204 194 184 173 173 168 167 164 166 162 159 158 +150 147 141 137 136 132 130 133 129 129 125 130 +128 129 122 117 117 110 104 88 70 57 56 60 +51 44 51 63 73 53 57 68 60 85 57 43 +50 43 44 103 156 164 179 170 157 163 140 81 +46 68 64 46 45 41 59 57 43 40 44 51 +56 51 42 46 46 45 51 81 104 121 138 141 +135 134 139 130 133 146 154 153 157 160 158 154 +156 154 155 155 150 150 153 153 157 153 150 148 +152 153 148 150 149 149 150 150 148 150 149 148 +154 156 151 151 150 150 143 145 144 150 142 149 +142 146 145 144 150 150 143 145 142 144 143 141 +135 138 137 136 139 136 137 131 142 130 131 133 +137 151 163 170 178 184 188 190 192 194 197 197 +197 196 195 195 194 194 193 195 193 194 191 192 +191 192 190 191 191 189 190 189 190 193 190 193 +192 193 193 195 +86 86 86 87 89 88 87 84 +86 82 79 84 75 77 82 78 76 78 75 72 +73 63 62 59 53 55 65 76 97 115 122 126 +136 145 146 156 163 161 171 171 173 176 177 175 +178 180 181 179 181 181 179 182 180 179 178 173 +165 161 158 148 141 136 127 116 104 91 80 74 +77 79 78 82 82 88 89 90 96 103 107 103 +116 130 141 150 158 153 137 135 145 141 127 123 +129 137 127 129 125 112 66 47 52 46 60 80 +82 84 62 53 53 59 63 66 63 68 55 57 +65 68 81 103 95 81 78 92 129 90 81 108 +142 126 130 127 91 70 60 51 51 51 55 52 +46 44 40 43 40 45 42 47 46 49 54 59 +79 79 63 74 106 116 114 137 143 110 76 39 +35 34 39 40 55 99 133 146 140 124 116 106 +86 62 52 46 45 46 46 45 47 44 47 49 +45 44 46 46 49 48 43 44 54 82 137 169 +127 115 112 116 125 181 180 179 187 191 194 195 +198 207 207 189 87 40 37 47 52 68 76 87 +94 104 110 118 117 118 121 123 125 125 132 129 +130 140 136 140 148 146 150 152 150 152 154 157 +162 162 164 167 168 171 174 173 170 174 178 178 +179 175 172 169 179 178 176 177 177 177 176 176 +173 174 177 175 177 174 173 169 168 168 165 154 +156 148 147 147 148 151 148 142 146 137 140 133 +130 135 133 131 127 132 131 129 133 137 145 157 +167 186 202 211 215 223 218 211 206 195 184 174 +167 165 164 162 161 160 158 153 150 146 144 137 +135 134 134 133 128 129 132 130 128 126 124 118 +126 112 103 94 74 56 62 59 47 43 59 58 +65 61 52 67 67 85 55 43 43 40 47 95 +148 167 180 167 150 165 142 98 57 67 54 40 +41 42 52 50 43 50 53 56 57 43 47 41 +42 45 52 86 110 128 142 135 142 135 135 128 +134 150 152 159 158 162 160 157 159 154 157 152 +151 156 153 153 154 154 151 149 147 149 147 153 +150 153 149 155 148 146 148 148 155 152 148 149 +148 148 146 145 145 145 145 148 143 146 144 145 +145 143 145 140 145 141 144 140 139 140 138 135 +134 135 132 132 130 131 132 135 143 161 165 175 +183 185 192 192 194 196 196 196 196 195 196 197 +196 197 194 194 194 194 192 194 190 191 192 190 +186 190 190 192 194 195 194 195 194 197 197 196 +88 88 83 83 88 95 88 84 81 79 74 77 +81 94 76 76 76 79 71 70 73 67 62 57 +59 59 67 80 92 107 120 130 142 147 150 156 +163 167 171 172 174 176 172 178 175 181 176 178 +179 177 182 183 184 179 180 172 167 163 159 153 +147 139 127 114 101 89 85 75 79 74 83 80 +84 88 90 92 102 102 117 129 137 140 135 132 +127 121 117 123 126 131 129 123 126 128 116 96 +83 70 56 53 50 66 91 90 77 75 62 64 +63 64 61 56 73 61 52 62 72 86 99 88 +69 83 93 118 119 98 111 140 134 125 143 116 +57 52 53 48 52 53 52 47 42 47 49 50 +45 52 44 40 48 45 49 52 71 94 88 64 +53 63 63 83 106 77 47 35 36 40 48 49 +68 96 127 143 139 126 116 103 69 55 56 40 +45 46 49 46 46 44 45 45 46 41 46 50 +41 40 41 47 58 107 147 151 113 115 118 115 +143 187 168 182 192 192 194 194 205 209 201 123 +44 33 39 46 56 71 84 96 97 108 111 118 +123 122 121 125 128 126 126 134 128 138 135 141 +147 147 145 147 150 150 157 157 158 164 166 166 +167 169 173 173 171 175 176 178 175 180 175 175 +179 176 181 179 174 174 174 179 178 176 178 178 +177 172 169 167 165 162 161 153 157 153 154 143 +146 145 148 143 147 138 140 137 128 133 133 132 +130 129 130 123 127 136 144 159 166 187 203 209 +215 220 218 214 207 199 183 176 170 167 163 164 +162 162 162 150 152 147 144 135 138 134 134 134 +132 126 131 129 126 127 120 122 121 116 105 90 +69 57 63 64 48 45 47 66 60 53 52 78 +64 87 57 51 43 42 48 92 149 161 172 164 +147 165 154 107 50 57 50 44 42 45 44 54 +41 40 49 51 47 51 41 41 43 43 66 89 +117 130 135 139 139 139 135 131 139 148 152 158 +161 160 157 157 157 154 157 156 156 153 155 151 +155 158 153 151 151 149 155 151 151 152 151 149 +153 150 150 154 148 149 148 148 146 150 154 149 +144 146 145 144 144 143 148 148 142 141 144 142 +146 145 145 142 138 139 138 133 134 139 131 130 +130 131 135 139 156 168 177 183 186 188 193 192 +194 194 196 195 196 195 194 196 195 198 194 193 +194 196 192 193 193 191 191 191 191 190 193 191 +193 196 195 199 196 202 201 200 +83 83 85 88 +82 89 86 81 79 79 81 78 79 85 79 76 +74 70 70 68 66 72 62 59 55 56 63 77 +93 107 122 129 140 147 151 155 162 165 169 172 +172 177 179 175 176 181 179 174 179 181 184 184 +180 179 172 168 167 161 155 154 144 133 126 116 +100 89 87 78 81 80 81 86 90 91 94 96 +104 107 120 131 131 120 115 116 112 105 118 126 +127 128 123 118 129 127 115 91 94 86 75 69 +75 79 73 78 88 75 58 58 61 64 56 54 +62 57 72 81 83 109 85 59 70 96 104 130 +104 120 144 136 118 122 114 104 63 51 45 44 +55 50 45 44 48 48 49 42 45 47 45 49 +46 49 54 48 55 58 95 98 58 44 43 72 +92 79 49 40 30 30 37 52 85 97 118 142 +140 123 111 90 70 80 57 46 45 37 50 41 +47 50 43 45 46 46 41 39 37 40 41 50 +92 135 155 127 104 121 119 130 178 184 171 186 +188 192 190 200 209 204 152 53 37 39 47 49 +58 64 84 96 101 110 114 121 118 122 123 124 +127 123 124 134 129 134 137 138 142 147 142 148 +150 155 155 155 155 165 165 167 167 172 170 171 +172 176 179 179 179 179 178 175 172 174 174 174 +173 178 175 172 173 178 179 176 171 169 168 164 +163 160 157 155 155 155 153 144 145 145 143 142 +145 139 138 136 131 130 127 128 132 126 127 128 +129 140 146 158 165 184 196 209 218 221 221 219 +208 199 184 177 169 165 162 166 159 159 162 156 +152 149 142 142 140 135 132 134 128 129 128 126 +126 128 125 123 121 107 107 87 60 52 54 55 +48 46 52 66 62 53 52 81 76 83 51 43 +40 40 43 92 148 165 172 159 141 160 161 120 +60 47 49 39 38 36 40 46 50 41 47 57 +55 47 41 41 41 45 66 98 115 137 139 140 +135 138 134 137 141 150 158 159 159 161 157 155 +159 155 157 152 153 155 160 151 156 153 151 151 +151 151 153 150 150 159 149 148 148 148 148 149 +153 148 151 147 151 148 145 144 146 149 147 142 +144 148 147 144 145 147 140 143 143 143 143 141 +142 141 139 134 134 134 127 130 134 134 137 150 +161 171 180 186 189 193 193 194 194 194 196 192 +193 194 193 196 198 194 193 193 194 196 193 193 +191 192 190 189 192 191 192 193 196 197 197 198 +198 200 201 200 +80 80 85 80 78 83 83 81 +75 79 73 75 78 80 81 80 75 72 72 66 +70 63 59 57 62 57 61 74 89 107 121 129 +139 146 148 156 164 168 170 175 176 178 175 175 +178 178 178 179 182 187 181 176 183 175 176 176 +166 163 156 149 144 134 126 115 107 94 89 78 +73 78 83 87 86 86 95 96 99 108 106 118 +109 109 111 112 114 113 117 128 130 132 120 104 +105 101 106 92 105 96 95 85 85 84 90 90 +92 62 58 66 67 52 47 58 61 66 76 98 +110 112 61 54 75 81 115 125 124 145 141 118 +78 72 60 87 87 47 48 51 61 50 47 43 +48 47 47 43 46 45 45 51 47 53 56 41 +43 46 64 89 95 61 42 64 94 63 44 37 +38 33 35 47 93 98 107 140 140 125 107 90 +101 94 55 48 42 35 41 42 47 43 38 39 +49 51 47 37 33 42 43 59 120 150 147 117 +108 124 116 163 204 178 182 191 187 188 189 202 +209 174 66 41 40 46 57 54 54 70 87 96 +104 109 116 119 122 119 123 121 122 121 122 130 +130 133 137 143 144 142 145 151 152 153 151 156 +157 158 161 166 168 174 174 173 173 176 176 180 +178 179 179 178 179 176 176 174 171 181 173 174 +176 178 173 176 170 172 174 167 166 163 160 156 +154 151 146 152 153 146 145 148 147 142 139 140 +137 131 135 131 128 123 128 131 129 138 147 155 +163 178 196 210 222 223 225 218 210 200 182 175 +168 166 161 162 161 161 155 158 155 146 145 141 +141 140 135 134 135 131 131 124 131 126 126 127 +118 112 98 84 60 51 56 57 45 47 57 59 +54 49 55 72 84 80 53 50 42 41 44 81 +142 166 173 164 129 146 160 125 67 43 55 35 +33 42 42 47 61 50 47 51 51 46 40 50 +43 46 78 104 122 141 143 141 137 147 131 138 +144 153 161 159 161 159 156 155 156 153 153 151 +155 154 155 155 155 152 149 155 147 149 152 150 +153 150 148 148 148 152 144 149 153 150 147 150 +149 150 147 145 146 149 147 144 143 147 142 145 +145 145 139 144 142 139 144 138 140 140 133 135 +134 129 133 128 129 135 145 163 172 176 185 189 +192 192 195 196 194 192 194 193 193 194 193 195 +196 195 192 193 193 191 193 192 192 195 192 194 +192 194 193 195 196 198 199 199 199 203 202 201 +87 87 85 79 83 74 79 75 78 82 73 74 +76 80 79 75 74 75 74 71 65 63 59 58 +59 54 62 68 88 107 122 131 137 144 154 157 +161 165 169 172 174 176 175 178 177 179 177 180 +180 181 179 178 179 177 176 171 167 162 151 148 +146 137 124 111 102 96 88 73 74 80 81 90 +90 90 93 96 105 104 110 101 100 107 109 110 +111 112 111 124 129 131 121 92 89 92 78 71 +90 98 89 85 88 103 94 74 79 59 70 79 +54 52 55 66 73 84 96 112 115 88 54 60 +71 85 132 134 133 130 109 98 56 57 56 77 +104 54 48 54 51 46 46 46 43 48 47 48 +45 45 41 44 56 54 52 43 52 46 73 54 +81 87 58 56 89 73 53 42 35 31 39 44 +89 100 108 147 143 135 105 122 120 83 47 46 +55 50 52 36 43 44 41 40 49 42 38 39 +34 36 50 95 144 163 130 115 118 113 132 190 +204 176 189 192 190 186 193 208 192 98 39 39 +41 44 48 53 67 71 85 94 103 115 116 120 +121 120 123 128 127 125 120 126 131 133 138 139 +141 141 145 152 152 151 150 154 153 156 159 162 +166 172 173 175 174 173 178 181 178 174 181 179 +184 186 180 179 172 178 171 171 171 176 172 172 +168 175 166 163 165 156 159 158 151 149 147 147 +148 144 148 148 148 140 141 140 136 132 134 128 +125 128 131 132 130 137 150 151 160 175 198 207 +219 223 223 220 211 200 184 173 170 165 161 162 +162 158 159 161 151 149 149 146 143 138 133 135 +133 131 132 126 129 127 120 125 112 111 98 82 +63 59 62 58 40 48 61 52 51 53 57 70 +93 75 53 44 42 39 45 76 134 161 172 165 +124 146 168 146 84 39 47 34 38 44 41 47 +74 53 53 54 48 46 49 45 42 56 86 110 +130 137 147 141 139 134 135 140 151 161 160 160 +162 162 160 153 154 155 152 151 153 153 156 154 +155 155 150 151 151 147 151 149 146 152 146 151 +145 149 149 149 145 146 145 144 145 148 147 149 +147 149 147 144 142 147 143 149 153 146 145 144 +143 142 142 140 135 135 132 134 137 128 128 131 +130 145 157 166 178 180 186 190 193 196 192 193 +192 192 193 193 194 193 193 193 192 194 195 194 +193 192 194 196 193 192 191 190 195 197 198 196 +200 202 200 201 201 203 203 202 +83 83 80 77 +80 82 81 77 78 75 77 70 75 77 80 72 +71 77 74 68 67 66 75 55 56 63 68 72 +89 106 121 126 135 144 151 155 160 166 169 168 +173 178 177 174 177 180 178 183 181 179 180 181 +180 175 175 171 167 161 152 146 145 136 134 118 +103 94 86 77 79 77 90 89 90 94 92 98 +98 97 110 104 102 110 109 108 110 118 115 124 +131 124 109 78 93 90 71 71 81 85 75 93 +101 99 76 64 89 93 78 75 51 50 60 69 +85 95 112 118 88 60 48 60 67 106 141 144 +109 93 97 104 65 68 62 71 107 50 57 55 +47 44 40 44 41 46 58 53 50 49 49 49 +49 49 56 45 44 53 65 48 49 57 57 48 +83 82 54 41 34 32 30 40 85 108 105 141 +134 131 126 150 130 67 49 51 43 40 39 40 +42 40 36 39 48 36 42 32 29 34 58 118 +147 146 112 115 120 117 158 204 190 184 193 192 +187 186 202 202 143 52 34 37 43 42 47 55 +68 76 88 97 103 116 114 120 116 123 124 126 +130 128 120 131 129 133 132 132 136 135 145 150 +149 149 146 150 153 159 159 166 166 168 169 172 +171 178 173 176 176 176 180 180 183 189 183 179 +174 173 173 168 171 171 168 170 168 174 167 160 +160 161 154 156 156 152 146 147 150 143 149 145 +140 141 139 137 132 133 132 122 128 128 133 132 +136 134 143 148 164 177 193 204 217 220 222 220 +215 202 180 177 167 164 163 164 164 162 158 154 +151 150 149 145 140 141 136 133 136 132 127 128 +129 129 127 124 117 103 95 75 58 57 59 55 +43 51 64 52 51 50 57 70 92 72 50 38 +38 35 46 73 133 160 174 162 126 141 163 151 +87 40 48 41 43 42 39 51 76 58 51 53 +53 50 43 46 42 65 90 114 131 134 140 138 +139 133 139 144 150 161 161 162 160 160 157 153 +154 152 151 150 150 155 151 154 151 152 152 153 +152 148 148 147 145 151 151 153 149 148 152 146 +148 145 146 149 147 150 147 145 149 149 147 143 +145 148 142 142 146 145 143 143 142 142 144 140 +137 139 136 135 128 128 123 131 133 151 163 170 +182 186 189 192 196 196 194 196 194 192 193 193 +193 191 192 194 193 194 194 195 193 194 196 196 +196 194 192 194 198 198 197 199 204 204 202 202 +203 201 204 203 +80 80 81 76 78 78 76 79 +76 77 77 79 72 73 70 70 73 73 73 70 +66 61 57 59 60 55 62 71 92 105 120 131 +136 146 149 152 163 165 168 169 171 175 173 179 +179 178 178 177 180 175 175 179 180 178 176 174 +164 159 153 150 149 132 127 111 104 91 87 77 +75 84 78 86 84 89 98 98 97 96 105 106 +110 110 107 113 110 113 116 116 124 126 106 81 +80 87 83 89 79 74 102 119 113 91 65 94 +126 100 88 66 60 59 71 87 108 117 121 92 +60 49 56 59 80 108 128 147 115 91 101 115 +77 52 64 108 74 59 58 38 40 44 41 53 +47 54 55 50 53 52 46 47 53 54 46 48 +44 51 71 54 51 52 50 49 75 87 57 39 +32 28 43 56 78 101 111 133 131 112 142 154 +136 89 62 38 37 35 38 44 39 35 34 37 +50 37 33 34 31 40 90 136 147 117 111 110 +114 132 190 199 187 189 197 189 189 195 205 171 +57 46 42 45 54 45 50 54 63 78 89 100 +108 114 113 116 117 123 122 130 130 126 128 136 +132 135 133 131 138 143 144 143 146 143 144 149 +151 153 158 161 166 168 164 167 171 171 176 177 +179 182 179 175 173 178 182 179 172 174 173 169 +174 176 175 171 172 169 162 162 159 156 155 152 +149 145 143 147 144 140 146 148 140 144 135 136 +132 133 125 125 124 130 132 132 132 136 143 151 +166 173 186 209 214 218 221 219 216 204 183 176 +169 165 164 166 160 162 155 153 151 149 145 142 +143 141 137 132 133 137 128 130 128 129 125 122 +114 104 97 69 61 58 55 49 39 49 57 55 +51 53 58 72 95 74 49 41 40 39 43 71 +139 165 170 163 132 152 164 151 96 43 45 36 +42 58 40 51 60 61 50 50 46 44 44 41 +46 73 96 121 131 139 139 138 140 134 138 150 +152 160 161 161 160 156 154 156 158 151 155 148 +157 155 152 154 154 153 151 156 151 153 150 149 +146 148 149 146 150 149 145 151 147 146 145 148 +148 149 143 142 145 149 149 144 146 141 143 144 +145 146 144 140 139 139 137 137 138 136 132 131 +133 128 122 130 146 159 167 178 187 187 193 197 +197 197 197 196 193 193 193 191 194 192 193 194 +195 195 194 193 194 194 193 194 195 194 197 199 +201 198 200 202 203 205 203 204 205 205 202 203 +83 83 84 82 75 75 71 83 71 73 73 72 +74 72 71 70 73 63 65 70 63 63 60 56 +55 52 67 75 87 103 125 131 138 146 149 158 +161 161 170 173 170 174 177 175 174 181 176 174 +180 174 176 176 176 175 173 171 164 165 158 152 +144 137 131 117 104 93 81 75 73 77 81 86 +87 88 89 94 106 106 103 101 105 109 109 108 +113 114 115 113 117 115 101 64 63 89 118 102 +104 123 129 123 94 72 70 94 127 105 94 73 +70 73 92 108 118 106 78 59 46 43 52 58 +86 81 102 154 130 92 89 109 107 65 62 77 +58 66 58 42 41 42 43 52 61 51 50 54 +51 54 48 45 51 49 50 51 45 45 73 42 +45 44 38 48 64 91 59 39 33 34 48 74 +88 101 111 131 108 108 149 165 147 118 88 45 +36 34 31 34 35 36 35 36 33 33 31 32 +36 57 113 154 138 115 114 111 114 154 197 185 +186 190 196 195 197 203 193 105 49 48 41 44 +57 46 55 52 60 77 89 100 108 112 116 122 +119 118 119 125 130 132 130 133 130 132 132 134 +140 143 147 145 142 146 145 147 149 156 158 156 +161 162 161 168 166 172 175 175 176 175 183 173 +177 178 179 183 175 174 174 174 170 177 173 168 +168 166 167 161 163 160 155 150 149 139 142 144 +140 140 147 146 141 138 139 133 132 129 125 125 +125 130 127 134 130 140 146 152 160 170 180 203 +215 219 219 221 215 204 191 173 168 167 168 167 +161 160 162 156 153 153 144 147 143 141 137 132 +131 131 126 127 124 124 125 121 117 107 86 66 +56 69 55 46 44 52 54 48 51 49 58 77 +92 73 50 40 40 38 41 58 138 169 172 168 +140 147 160 157 111 56 44 37 40 41 38 51 +64 68 54 58 51 47 44 47 50 84 106 130 +136 139 138 138 140 133 145 154 153 162 166 164 +160 158 158 154 156 154 154 152 155 154 153 155 +151 150 151 150 150 152 152 153 149 150 148 148 +144 148 152 146 148 146 146 150 149 151 148 146 +145 146 146 149 143 142 141 142 143 141 142 142 +141 137 138 136 131 132 134 131 130 129 124 141 +152 163 176 183 188 191 192 196 195 196 194 193 +193 193 194 194 191 195 194 195 195 193 195 195 +193 193 194 196 195 198 200 199 202 202 201 202 +203 206 205 203 205 203 204 202 +80 80 74 80 +72 78 70 72 72 72 79 71 66 72 74 66 +68 75 67 67 60 63 64 56 52 59 65 72 +84 102 116 130 140 144 147 156 156 167 167 172 +168 173 173 176 175 177 175 173 175 176 176 177 +174 174 174 171 164 159 155 151 146 132 128 121 +104 95 82 79 78 85 82 84 86 93 92 88 +95 97 104 105 103 105 105 105 113 111 112 114 +115 110 86 58 80 122 133 132 142 143 121 90 +62 67 93 98 111 96 85 69 73 99 114 127 +107 69 53 54 51 57 55 57 59 53 88 138 +141 108 92 94 112 59 50 56 64 61 52 49 +42 53 46 51 62 47 51 51 44 62 51 44 +52 50 49 49 61 56 53 44 58 64 46 48 +48 74 67 40 36 33 58 65 96 101 113 122 +103 90 127 176 153 144 121 68 41 34 43 47 +41 35 32 33 40 38 33 36 41 82 132 158 +119 114 115 118 122 182 196 183 189 196 196 201 +208 203 150 50 41 41 40 52 67 44 49 59 +60 75 85 95 100 109 116 126 121 118 119 120 +125 129 129 138 132 131 132 136 136 142 142 145 +142 149 150 151 152 155 147 154 154 154 162 166 +162 166 169 169 177 174 178 175 175 175 176 183 +177 173 173 169 171 175 173 165 165 164 164 158 +158 156 159 147 145 139 141 142 137 139 139 145 +138 137 136 137 130 129 122 116 131 126 128 131 +135 140 144 150 159 167 186 195 208 219 223 222 +216 211 187 169 167 162 170 163 156 156 158 153 +151 150 143 147 142 141 137 137 135 129 132 130 +130 129 118 122 114 101 84 68 62 57 51 41 +38 60 49 49 46 47 51 69 92 73 45 44 +40 37 42 64 120 173 179 174 145 135 157 158 +125 60 42 40 34 35 35 49 66 67 63 44 +49 56 51 52 60 88 116 132 142 137 142 139 +134 138 144 175 163 197 164 160 160 156 154 156 +157 153 154 158 154 155 154 157 153 151 154 153 +148 148 148 149 148 148 149 146 144 148 148 143 +143 145 147 143 144 146 141 140 144 144 141 143 +141 137 145 146 137 145 141 139 140 142 140 134 +130 133 129 131 127 128 136 147 159 174 179 191 +188 192 195 195 195 194 194 195 193 194 193 192 +192 193 193 193 192 194 195 193 195 195 196 199 +200 201 199 201 203 204 206 205 204 205 205 202 +203 205 204 204 +73 73 77 74 76 77 71 75 +73 74 76 79 75 75 71 70 68 67 69 69 +66 61 58 55 55 61 67 69 84 103 118 129 +142 146 147 155 156 164 167 168 172 171 175 175 +175 176 172 173 175 175 179 175 175 177 174 169 +171 161 158 150 144 136 132 117 102 91 79 73 +76 89 82 89 95 89 97 96 93 98 100 103 +102 106 107 108 110 114 114 114 113 104 82 85 +126 151 148 146 153 117 89 70 66 84 109 106 +112 97 63 69 92 114 132 108 75 57 56 56 +63 55 67 50 56 51 71 114 143 123 93 81 +122 75 50 59 59 65 57 57 49 50 50 49 +65 56 45 43 43 52 50 47 43 45 47 37 +47 47 42 65 87 105 50 41 36 54 67 46 +41 40 42 42 80 108 113 110 96 77 89 152 +164 171 150 108 67 44 39 42 38 34 38 34 +34 32 40 40 50 113 142 142 104 112 115 119 +142 197 186 187 195 198 202 207 209 178 68 41 +35 36 40 46 61 48 51 60 66 78 80 99 +103 107 112 121 122 123 123 122 125 128 131 135 +130 130 134 140 138 141 143 143 145 152 148 154 +152 156 150 153 156 157 159 164 165 165 173 167 +173 176 176 172 175 179 177 176 175 172 170 169 +170 169 172 170 166 166 164 161 160 157 155 146 +147 146 142 139 136 137 137 143 136 143 135 132 +130 128 129 121 125 121 130 130 130 137 144 154 +157 166 176 185 207 215 223 223 218 211 191 171 +165 165 163 161 158 155 155 150 151 147 148 152 +142 140 137 136 133 129 134 128 124 126 121 121 +109 98 78 61 63 49 43 40 47 55 46 51 +48 52 56 74 94 75 48 37 37 40 35 53 +118 167 175 172 147 136 152 155 142 71 39 49 +40 41 35 44 65 61 58 54 47 52 45 50 +70 96 120 135 141 136 139 136 133 133 141 164 +172 178 178 158 155 155 156 157 157 152 151 158 +157 153 152 152 154 150 151 153 152 153 149 147 +148 147 148 150 146 149 148 150 146 148 148 148 +146 147 143 146 142 143 139 143 142 147 145 145 +145 141 142 144 142 140 138 134 134 134 128 135 +130 131 143 154 168 177 183 190 191 194 195 196 +196 192 193 194 194 192 192 191 193 193 191 197 +193 193 194 195 195 195 199 198 201 202 202 206 +205 204 205 203 204 205 204 205 205 204 202 202 +78 78 75 75 73 77 77 71 80 75 73 74 +75 75 74 68 68 63 66 68 61 56 53 53 +49 52 62 72 84 105 120 132 142 146 148 157 +159 161 165 172 168 172 175 174 174 172 171 173 +174 178 177 173 176 174 174 168 168 158 153 151 +141 138 129 116 101 92 81 75 72 72 78 89 +88 103 113 110 98 95 100 99 102 106 105 110 +106 110 111 110 112 118 117 129 162 155 135 114 +95 65 75 69 79 112 124 104 106 70 59 93 +127 123 93 59 58 54 57 72 78 55 82 52 +50 51 64 93 137 125 107 77 128 98 55 49 +56 69 59 57 52 55 54 48 68 53 51 47 +44 47 49 45 41 47 49 46 41 43 45 71 +106 95 48 36 36 46 68 53 42 45 40 50 +77 111 110 123 114 86 74 116 172 164 153 147 +112 72 44 37 32 33 37 40 35 42 43 42 +76 127 150 120 99 112 122 125 172 202 187 194 +200 203 208 213 200 116 52 41 34 37 39 63 +68 49 48 54 60 70 81 99 104 107 112 118 +121 120 128 128 127 126 129 127 132 136 139 140 +139 140 146 145 144 152 144 153 152 152 152 155 +157 159 162 166 169 164 173 168 170 178 174 174 +172 176 175 176 175 177 170 167 171 173 168 167 +168 164 162 158 157 155 151 151 148 146 143 138 +139 139 137 137 139 139 134 131 125 127 124 125 +128 124 130 129 131 136 144 147 154 160 170 183 +206 215 221 223 215 210 195 170 160 164 160 160 +164 160 149 152 147 148 150 157 143 142 136 139 +137 130 129 130 128 126 120 118 110 96 81 62 +62 42 40 47 51 58 46 53 56 61 61 76 +87 69 48 38 38 39 36 56 115 162 175 166 +151 140 154 150 141 86 56 61 35 33 38 51 +55 63 57 47 54 50 48 52 74 101 125 137 +137 135 138 134 131 142 148 157 163 161 165 160 +156 157 157 154 155 154 151 156 151 154 151 153 +152 154 149 152 152 155 150 147 149 147 150 148 +145 145 143 144 146 148 147 145 146 143 143 146 +142 143 142 143 144 144 145 142 145 143 142 140 +138 138 135 132 134 129 128 128 128 136 152 164 +176 181 188 191 193 195 195 197 196 195 192 191 +193 193 192 189 190 191 191 194 193 194 195 195 +195 200 200 201 201 204 205 204 205 206 205 203 +206 204 204 203 201 202 202 202 +74 74 76 79 +82 77 76 75 75 74 78 76 77 82 72 69 +74 70 73 67 59 63 59 54 54 50 57 70 +88 103 118 128 140 145 155 157 158 162 171 172 +173 177 175 171 175 169 170 173 174 173 173 176 +179 176 169 165 165 157 149 150 144 137 131 116 +107 88 79 80 68 78 83 79 90 114 132 130 +100 95 99 98 105 107 103 106 103 110 121 131 +136 149 153 149 139 116 84 71 46 63 73 87 +112 134 127 106 80 64 86 131 135 88 60 51 +53 55 60 101 73 62 85 72 62 54 76 113 +140 129 115 88 132 127 68 39 51 64 57 65 +58 64 53 51 72 56 51 44 49 55 43 44 +41 43 42 51 39 39 47 75 72 84 49 40 +45 51 61 56 44 44 45 61 95 109 118 134 +130 104 79 78 136 121 146 177 151 110 49 32 +46 33 38 43 43 40 39 47 95 143 148 108 +100 112 120 133 194 201 197 199 202 205 209 211 +166 46 33 37 36 39 47 57 71 55 55 61 +71 80 83 93 100 109 109 119 115 122 127 125 +129 129 126 131 130 133 135 138 140 141 140 143 +151 148 152 149 152 152 155 156 155 156 156 164 +169 166 173 171 171 179 175 173 174 176 173 177 +175 172 167 167 171 171 167 168 166 163 160 162 +158 155 153 148 144 137 137 132 135 134 132 134 +135 144 134 130 125 127 128 122 124 123 123 132 +137 136 141 144 150 162 170 187 202 216 219 223 +218 213 200 169 160 161 161 157 158 156 154 154 +148 146 149 144 136 142 138 136 134 132 133 128 +128 126 118 118 106 91 70 60 53 47 48 47 +55 52 51 61 56 57 65 79 92 71 42 32 +36 34 36 48 108 157 168 167 155 132 151 147 +140 101 52 68 35 48 40 45 59 52 59 43 +44 39 41 59 90 118 128 138 142 139 137 136 +134 143 157 162 158 161 164 160 157 157 157 155 +157 154 154 152 150 151 152 152 151 153 153 149 +148 151 148 148 149 150 148 150 149 146 143 143 +147 142 145 146 146 144 144 144 141 148 149 143 +145 139 141 143 142 141 140 140 140 134 137 135 +132 133 129 133 133 145 153 169 176 186 189 193 +193 196 194 193 195 192 190 192 192 194 189 192 +192 194 194 194 193 196 197 196 199 200 201 202 +203 205 209 208 208 206 207 204 206 204 202 202 +203 203 200 204 +79 79 75 75 70 71 74 71 +69 73 74 74 79 72 68 70 66 66 67 65 +62 61 53 50 55 53 60 71 87 106 119 126 +141 145 147 155 156 162 165 168 171 175 176 174 +174 173 170 173 175 178 176 177 177 176 169 167 +162 158 154 148 145 137 128 117 105 85 84 69 +71 74 76 79 92 121 136 126 103 94 96 95 +104 104 102 114 123 137 154 160 164 157 143 97 +68 58 59 53 48 70 82 109 142 148 122 86 +63 92 124 140 96 56 46 44 46 52 96 117 +72 71 86 54 56 58 114 128 137 142 127 82 +108 145 88 60 55 54 56 55 51 59 56 48 +64 67 49 41 41 46 38 40 50 42 42 57 +41 39 38 62 70 68 65 71 69 62 57 49 +41 53 60 81 96 101 134 146 142 114 84 56 +85 95 128 181 173 137 80 40 35 36 40 36 +32 40 35 58 121 153 130 109 111 110 129 160 +207 198 199 203 204 205 208 192 92 38 32 38 +34 36 37 63 78 57 49 56 63 78 83 90 +97 101 108 112 111 120 124 125 124 131 126 133 +132 134 132 132 140 142 138 139 143 146 151 155 +153 153 157 157 154 157 155 163 161 166 162 170 +172 177 172 172 171 173 172 170 171 174 173 167 +168 171 166 167 167 160 162 159 153 149 152 150 +145 138 136 133 136 132 132 135 134 134 138 125 +122 127 125 126 120 123 124 129 132 137 136 144 +152 166 174 184 199 214 219 221 221 215 203 173 +156 161 164 157 161 156 156 153 148 144 147 148 +140 140 138 137 136 126 132 127 126 129 119 120 +107 87 68 61 51 50 42 48 53 58 49 62 +57 54 57 75 95 79 47 39 36 37 37 50 +102 152 164 165 153 126 149 138 129 103 60 56 +32 35 45 56 63 52 56 54 48 44 43 60 +93 121 131 141 139 136 140 135 137 152 155 162 +159 159 161 160 157 155 154 157 158 154 153 155 +156 153 154 157 154 147 154 146 150 149 148 150 +146 148 147 146 148 145 146 146 146 147 142 143 +147 147 142 144 139 143 146 144 144 141 143 136 +144 145 137 138 139 134 138 135 130 128 130 127 +139 154 163 173 183 188 191 195 197 194 194 194 +194 194 193 192 192 195 193 193 193 192 193 193 +196 194 199 197 201 200 203 205 204 208 208 210 +209 207 208 204 205 204 202 202 202 201 201 203 +83 83 78 80 72 78 75 75 75 74 80 72 +72 74 74 76 69 64 64 65 59 57 49 51 +49 47 65 74 92 107 119 129 140 142 147 156 +157 164 166 166 170 174 171 170 172 171 169 170 +174 177 179 176 180 177 176 163 163 160 153 150 +142 141 126 117 109 94 79 74 77 76 75 75 +95 123 135 116 92 89 94 93 105 105 118 141 +164 169 169 152 145 137 111 69 42 45 55 58 +53 81 107 128 155 155 118 72 81 122 122 91 +49 55 51 47 43 59 116 109 72 77 86 54 +54 86 150 136 130 140 133 92 90 146 111 49 +52 51 53 57 55 82 62 55 66 54 43 42 +36 46 37 39 41 36 41 48 39 42 43 64 +82 77 76 67 70 77 57 45 56 71 77 91 +92 120 155 160 152 137 96 60 52 82 115 155 +173 152 104 37 30 33 36 35 31 31 37 90 +139 148 124 109 106 115 144 181 205 198 203 206 +205 205 201 139 48 34 38 38 36 42 38 67 +85 56 48 54 57 76 86 90 101 101 111 112 +114 117 125 120 129 132 126 130 133 132 132 133 +134 139 139 144 147 143 149 151 152 153 152 160 +157 159 163 156 156 160 163 168 163 173 177 169 +169 166 172 168 173 176 170 169 171 171 164 166 +160 164 165 158 158 153 153 148 145 137 133 134 +134 134 131 136 134 130 133 128 127 127 121 121 +120 122 124 130 130 130 131 140 155 166 173 185 +202 215 221 222 221 219 207 180 162 163 164 160 +157 155 157 150 147 146 147 142 138 140 131 133 +134 131 128 130 126 126 121 118 99 80 67 55 +48 40 40 44 55 55 54 68 56 53 62 74 +87 86 48 35 37 35 44 44 97 145 161 166 +154 124 150 147 138 111 75 54 40 35 46 56 +55 57 52 48 46 38 47 77 102 122 134 138 +138 137 139 136 139 150 156 163 163 157 162 160 +161 160 156 152 158 157 154 158 156 152 151 154 +152 153 154 153 155 153 151 147 149 149 147 150 +147 144 144 150 145 144 146 145 144 144 144 144 +143 143 143 145 144 140 143 138 140 141 136 140 +142 135 132 131 131 129 131 132 143 161 171 181 +188 192 193 194 199 194 195 195 194 194 191 191 +191 193 193 194 191 193 192 195 195 198 199 200 +202 205 203 205 207 209 209 208 209 207 207 207 +205 202 200 200 199 198 199 202 +79 79 73 70 +75 77 71 82 79 80 77 73 73 70 70 66 +69 68 63 70 65 57 54 48 49 51 65 74 +95 105 119 128 136 143 149 153 160 162 163 169 +174 171 178 172 170 173 174 171 175 183 177 177 +177 175 168 167 163 161 152 147 142 134 128 114 +101 89 74 73 70 78 69 80 90 126 142 122 +95 97 93 100 116 134 154 163 161 148 133 119 +129 120 100 64 38 44 56 49 63 110 123 138 +153 132 98 96 120 120 72 61 49 59 60 45 +51 81 123 100 67 105 91 50 57 97 152 140 +117 126 136 96 67 123 133 75 51 50 60 53 +59 71 61 49 58 61 46 44 37 37 41 39 +39 37 41 48 44 49 62 82 90 91 80 76 +84 79 49 44 71 97 87 79 99 137 164 166 +168 159 117 72 51 67 97 125 147 127 95 38 +30 31 36 29 29 35 59 129 155 126 117 109 +112 125 159 198 199 202 203 204 205 204 164 62 +38 34 34 35 33 32 42 64 86 59 55 52 +59 69 80 90 100 101 108 111 115 118 123 120 +128 127 126 130 133 133 134 130 134 137 145 142 +145 142 146 147 152 150 154 156 158 154 159 163 +161 159 163 159 164 170 172 172 166 163 169 171 +172 167 167 171 170 168 170 166 164 165 166 158 +156 156 152 148 136 135 132 132 133 133 134 133 +136 130 129 131 130 128 123 117 119 124 123 125 +130 131 136 137 152 161 172 187 200 207 215 219 +223 220 213 187 161 163 170 163 155 157 152 154 +147 147 148 143 138 142 134 137 133 129 133 133 +126 120 118 111 95 77 67 54 41 39 42 48 +56 49 62 70 57 60 64 76 86 87 45 37 +41 39 46 50 93 138 162 172 155 122 158 153 +140 117 80 46 30 32 43 57 54 51 49 43 +44 39 63 86 108 126 138 146 140 139 137 133 +140 152 157 163 161 157 159 160 162 159 159 154 +156 157 152 156 155 153 152 156 156 151 153 151 +151 148 148 151 147 149 148 152 147 147 149 144 +146 149 143 146 145 147 142 143 141 141 145 145 +139 139 139 137 141 145 138 137 136 140 138 135 +128 129 130 142 155 165 176 185 188 192 192 196 +195 195 195 193 193 191 192 192 192 193 190 192 +191 191 194 197 200 200 201 203 203 206 206 207 +208 210 208 209 210 207 205 206 203 203 201 201 +203 202 201 203 +82 82 76 79 76 78 78 75 +78 78 78 74 77 80 76 68 64 62 68 61 +57 56 51 47 49 44 58 77 86 101 120 129 +137 140 146 154 157 164 167 170 171 172 173 171 +172 172 172 171 172 175 175 177 173 176 172 167 +165 158 156 147 141 139 128 119 98 87 78 74 +72 72 72 77 85 114 147 142 110 91 100 119 +144 163 164 151 128 111 112 124 136 128 87 49 +42 55 54 61 95 125 128 139 131 83 82 122 +120 71 58 62 56 62 57 49 55 98 112 92 +78 145 106 65 76 121 144 121 99 114 141 113 +65 109 151 97 56 59 66 62 59 74 53 50 +58 60 44 39 37 38 38 32 32 33 31 44 +53 67 74 97 108 101 86 84 76 72 47 45 +83 94 74 99 128 144 170 180 180 174 135 79 +40 51 81 101 135 118 88 36 29 29 26 26 +29 38 88 146 157 112 110 110 113 133 167 197 +200 203 203 203 206 180 70 39 33 32 34 42 +37 34 41 70 87 63 59 56 60 68 85 85 +105 102 107 112 117 118 124 124 131 129 129 131 +128 130 130 131 135 136 140 138 143 143 147 149 +156 152 156 158 152 159 157 161 163 162 160 162 +160 169 166 169 164 163 169 170 167 169 170 168 +166 168 165 164 161 164 161 153 154 152 150 147 +141 137 134 136 132 131 130 131 134 130 129 128 +124 129 124 123 119 122 125 122 125 129 138 145 +152 162 171 183 193 204 211 221 226 221 215 195 +156 154 160 160 155 154 152 148 148 148 144 143 +139 146 136 131 130 128 134 128 128 125 117 103 +94 73 72 51 41 53 44 51 52 51 55 75 +64 67 79 71 86 94 44 38 40 39 39 52 +84 135 160 169 161 127 146 159 135 132 83 40 +28 34 39 57 56 49 50 45 38 37 59 92 +113 131 142 144 135 142 139 135 144 156 156 163 +159 156 160 158 155 154 156 156 154 155 153 150 +152 155 152 156 153 151 150 149 150 153 155 151 +149 149 151 151 146 146 149 147 150 149 147 147 +146 146 142 144 141 142 140 142 137 141 139 138 +137 132 137 137 137 133 127 132 128 132 135 148 +160 170 181 187 189 194 195 194 197 194 194 193 +192 191 191 191 194 191 192 195 194 193 198 199 +201 201 203 206 205 206 208 208 208 208 208 208 +208 209 206 204 206 204 201 201 201 202 201 203 +74 74 82 78 75 77 73 79 78 85 70 80 +78 73 71 66 67 62 67 62 65 59 53 55 +53 50 61 69 82 101 120 125 137 149 148 152 +160 162 166 172 169 175 174 172 173 169 172 170 +173 175 175 177 177 176 170 166 162 160 151 150 +143 138 128 114 100 86 80 69 75 79 73 75 +85 100 127 155 138 110 107 136 161 156 133 118 +105 111 130 138 132 113 84 54 51 63 71 108 +140 123 125 125 92 60 98 119 81 65 59 62 +66 52 53 65 90 104 98 71 101 142 84 59 +77 136 131 118 101 117 143 119 70 89 154 120 +61 59 61 50 57 60 55 49 59 54 48 40 +34 38 42 37 37 36 41 54 45 59 67 110 +129 122 102 85 66 58 50 48 77 86 102 123 +131 140 187 183 183 181 148 93 41 51 61 92 +133 117 70 36 31 28 27 28 35 54 111 159 +139 109 125 118 117 145 190 195 201 202 203 207 +194 99 40 33 34 37 37 32 31 38 46 74 +85 67 52 59 67 74 81 86 103 105 106 112 +110 122 125 125 123 128 130 127 132 129 126 136 +138 139 135 136 140 145 151 145 150 150 153 155 +149 155 160 157 162 162 153 157 158 162 164 170 +170 169 168 167 167 169 168 169 166 167 165 159 +159 164 161 158 156 149 153 145 139 139 138 133 +132 128 130 134 134 132 130 124 124 126 124 119 +121 123 123 122 125 127 136 141 150 159 167 178 +191 198 211 225 226 225 216 201 158 151 156 158 +154 154 151 152 147 147 144 145 142 140 138 132 +133 131 130 129 126 121 111 101 89 71 58 45 +40 42 45 48 48 45 54 66 62 68 77 66 +77 88 45 40 32 31 33 50 73 129 156 165 +165 144 139 166 137 127 83 42 31 29 42 56 +48 40 43 43 44 50 72 100 118 141 139 139 +136 139 135 136 152 157 158 159 157 160 159 160 +157 156 155 152 152 152 152 153 153 152 156 153 +153 156 149 153 151 149 150 146 152 147 149 146 +148 148 146 145 146 143 149 147 147 145 145 145 +143 147 145 146 145 140 137 139 139 142 140 139 +133 134 134 130 126 132 142 156 167 177 187 190 +193 194 196 197 195 193 193 192 191 191 193 193 +193 192 193 192 195 195 198 200 202 204 204 205 +205 206 208 208 209 208 209 208 209 209 205 205 +205 203 202 203 202 202 203 205 +79 79 79 76 +75 79 75 72 73 80 72 71 74 73 71 69 +70 65 61 62 58 58 56 49 45 47 54 65 +84 103 124 128 137 146 151 157 160 161 168 169 +167 170 176 171 172 173 171 172 168 176 175 175 +178 173 171 171 163 160 159 148 140 136 126 116 +97 88 81 70 69 70 73 76 76 92 108 145 +156 144 133 133 138 118 109 114 109 123 132 126 +122 116 88 59 58 70 79 122 149 119 113 104 +66 78 106 90 80 102 99 122 65 50 53 84 +106 92 74 76 120 129 75 57 87 135 118 118 +98 118 150 134 88 91 138 143 74 56 56 41 +45 57 55 51 54 56 47 40 36 35 41 40 +36 40 61 72 51 57 62 93 113 128 110 79 +62 56 57 64 69 101 117 122 120 117 180 187 +184 181 153 103 44 37 50 75 115 76 38 31 +32 30 29 29 36 79 131 148 120 111 120 118 +119 164 199 199 206 206 205 204 136 48 37 37 +36 38 32 35 40 38 40 73 92 71 53 60 +69 73 76 89 98 101 107 114 115 116 129 130 +124 122 126 130 133 126 132 134 137 138 137 133 +137 143 153 145 145 150 151 154 152 151 161 161 +160 163 159 157 158 160 161 162 161 163 168 163 +163 168 168 168 164 165 168 161 166 165 159 160 +154 150 145 144 137 138 136 131 131 130 129 132 +132 129 129 123 122 125 119 118 120 122 123 124 +124 129 136 140 148 158 162 173 185 194 212 224 +229 226 220 206 168 153 161 159 152 155 149 154 +148 144 145 145 139 139 140 136 130 131 128 130 +124 118 107 102 87 69 49 39 39 42 44 56 +47 44 58 67 67 65 77 72 68 88 50 36 +36 33 35 53 72 122 154 163 166 150 132 167 +138 135 88 44 29 37 44 58 43 40 45 47 +42 47 80 100 126 141 142 138 139 137 136 141 +153 154 160 159 157 158 156 159 158 159 156 151 +146 146 152 154 155 156 155 152 154 154 153 156 +151 150 154 152 151 151 147 147 147 144 147 145 +148 148 148 146 145 146 147 145 143 146 138 142 +140 140 136 138 141 141 141 138 132 132 132 129 +131 134 147 159 174 183 186 193 194 196 196 194 +195 192 193 191 192 193 193 194 193 193 193 194 +194 197 200 203 205 206 206 206 206 207 207 208 +207 208 208 208 208 207 208 203 206 204 204 205 +203 202 204 207 +79 79 81 77 78 81 74 73 +74 74 74 72 69 71 70 66 68 63 64 61 +53 54 54 49 43 40 52 65 89 101 121 129 +131 140 148 155 161 164 168 174 171 173 171 173 +175 173 171 173 173 174 176 177 179 173 173 169 +166 162 152 150 143 140 128 113 102 89 79 72 +74 81 73 73 79 86 93 110 133 144 138 131 +116 109 100 104 107 107 113 123 117 118 99 72 +55 67 60 109 132 107 113 80 65 105 97 89 +72 74 95 86 53 63 72 95 97 91 80 113 +126 104 75 58 98 133 111 103 107 120 160 148 +91 67 92 136 72 37 44 40 40 55 57 63 +54 59 46 44 37 41 44 41 37 39 48 55 +47 68 60 63 83 106 106 79 56 59 77 113 +100 109 116 121 102 77 138 187 188 184 158 121 +59 35 45 60 78 53 34 31 26 30 28 31 +47 107 143 133 114 111 115 118 143 191 204 203 +204 204 205 162 56 36 35 38 41 37 37 39 +34 36 36 76 102 78 59 66 70 68 75 87 +96 103 108 113 112 120 126 128 121 125 126 128 +130 129 134 136 137 137 138 141 141 143 147 147 +143 145 151 154 150 149 153 154 157 162 157 157 +155 159 159 158 159 162 164 168 161 165 163 165 +161 160 163 165 161 165 159 157 153 148 147 141 +142 132 132 131 132 127 128 129 131 125 131 129 +122 127 122 121 120 122 121 123 124 130 133 139 +145 157 159 170 181 196 212 225 228 225 218 209 +174 147 160 160 150 153 152 151 147 146 149 143 +141 137 135 132 136 130 129 126 121 116 107 98 +84 67 46 44 42 47 54 52 50 46 62 65 +63 60 77 67 80 84 45 37 34 30 37 51 +75 113 153 166 166 154 128 165 147 129 95 44 +34 35 55 54 43 40 51 45 53 57 88 113 +128 138 139 139 138 133 139 140 151 154 163 161 +160 158 158 160 155 158 155 152 147 147 155 150 +153 153 151 154 151 148 153 148 150 148 149 151 +154 150 152 150 146 145 147 149 149 150 141 146 +144 146 147 144 138 148 143 144 138 138 138 138 +143 140 136 134 137 136 129 132 133 141 154 167 +177 183 186 194 195 198 195 194 195 194 193 194 +192 194 193 195 192 192 195 194 195 198 201 203 +206 208 207 208 206 207 206 207 208 209 206 207 +209 208 207 206 205 208 206 204 204 204 205 207 +81 81 85 79 86 78 75 70 77 74 69 69 +74 71 76 73 67 66 66 52 55 49 49 46 +48 48 49 61 83 103 119 124 134 145 150 155 +158 165 166 171 170 171 174 174 170 177 177 175 +176 173 177 174 178 176 174 168 164 159 157 151 +143 137 125 113 104 87 80 74 74 69 70 78 +76 90 91 104 111 113 119 126 118 118 122 116 +111 113 125 131 129 125 102 73 51 53 52 98 +117 109 104 78 76 98 84 86 82 94 73 50 +56 86 89 89 87 76 92 133 119 100 84 61 +91 122 98 89 112 123 157 153 95 57 67 122 +82 33 42 39 41 45 38 49 47 56 46 43 +45 39 43 35 34 40 53 46 53 90 72 71 +79 87 94 82 59 74 105 157 126 112 110 113 +85 64 81 128 162 160 145 108 52 34 36 49 +55 46 43 30 32 33 30 34 68 130 154 123 +113 118 115 126 168 208 206 207 203 207 184 73 +38 35 41 38 40 43 35 35 36 33 39 82 +97 83 60 66 73 75 84 93 97 102 106 113 +116 118 121 119 125 127 128 132 129 129 134 131 +133 134 139 140 151 137 145 144 143 149 151 147 +152 152 152 152 154 154 158 155 155 158 154 157 +158 157 162 166 166 164 162 160 157 159 160 163 +159 157 157 153 149 145 145 137 136 134 129 125 +128 127 125 123 131 130 134 131 125 122 122 125 +127 120 116 118 129 128 137 137 149 157 162 172 +177 194 211 222 230 227 220 209 186 146 155 158 +154 152 151 153 149 150 154 138 138 136 141 130 +134 128 130 127 121 117 100 93 75 58 44 41 +42 44 43 52 52 52 61 72 63 61 74 72 +76 80 51 38 34 33 33 49 75 109 150 166 +169 151 128 164 143 136 109 44 38 35 46 48 +39 42 40 46 58 60 94 113 139 139 137 142 +140 137 137 146 157 157 160 157 158 155 157 158 +156 154 155 153 148 152 155 152 147 152 153 153 +152 152 152 152 154 149 150 149 149 149 150 148 +150 148 149 149 151 150 146 144 145 144 142 143 +140 146 144 147 143 143 137 137 142 140 134 137 +131 131 132 129 139 147 165 175 182 186 190 194 +197 196 194 195 192 195 193 192 190 194 194 193 +192 193 196 198 197 202 202 204 208 209 208 208 +208 206 206 207 207 207 204 206 207 206 207 206 +206 206 207 206 205 208 205 206 +79 79 80 78 +84 77 77 76 74 78 70 72 74 71 75 67 +67 68 64 55 51 51 51 50 42 43 47 68 +80 103 118 127 131 145 151 155 160 162 163 170 +167 171 176 175 175 175 176 177 175 177 177 178 +175 173 175 169 164 162 157 150 148 134 126 113 +100 85 81 72 74 79 77 80 78 83 90 90 +93 94 100 106 118 124 122 134 137 137 136 131 +135 122 87 71 51 56 72 109 103 102 92 73 +97 104 94 87 105 93 56 55 78 107 98 82 +73 69 117 140 84 93 94 68 94 123 92 79 +112 129 150 153 106 58 53 117 110 37 36 37 +42 46 45 45 47 58 50 49 42 48 46 44 +42 56 50 49 50 102 94 104 76 75 91 74 +70 91 122 163 138 112 116 109 88 65 59 60 +89 79 65 68 46 42 36 41 57 49 32 35 +48 34 44 39 91 137 137 116 119 120 121 146 +190 203 205 202 190 197 126 47 33 33 38 42 +40 33 39 38 38 40 48 85 100 89 64 56 +72 68 82 86 92 96 102 112 117 119 119 124 +127 127 126 133 131 132 132 133 133 138 134 139 +143 134 144 143 145 150 152 146 151 149 151 148 +150 153 157 155 155 155 152 157 161 161 159 165 +164 164 159 163 164 162 164 161 158 154 157 148 +148 145 143 142 136 132 125 124 122 123 124 123 +129 131 140 133 123 127 123 123 125 120 116 122 +125 131 132 134 146 152 159 167 176 184 209 224 +230 228 221 210 187 149 155 156 155 154 151 148 +150 150 147 141 138 138 137 136 131 127 128 129 +124 109 99 85 69 47 40 43 41 47 44 53 +49 66 68 65 72 68 70 71 69 73 53 53 +34 32 31 49 70 92 140 163 165 154 131 159 +145 136 114 54 55 44 45 46 39 37 45 43 +75 67 99 123 135 142 141 139 136 137 136 147 +158 159 161 158 160 152 157 156 157 153 156 152 +149 154 152 150 152 151 152 152 147 151 155 156 +158 149 163 149 150 146 148 145 148 148 146 146 +148 147 148 150 147 145 149 146 146 141 142 144 +142 141 137 137 138 140 137 135 134 129 128 133 +141 157 170 179 186 193 194 198 197 196 195 195 +194 193 194 191 191 194 194 192 193 196 195 201 +202 204 205 208 206 208 209 208 208 207 204 205 +206 207 204 207 205 206 206 206 208 208 207 208 +204 205 206 204 +84 84 81 81 80 73 73 76 +75 74 76 72 78 72 77 67 66 62 62 59 +56 52 48 51 47 36 50 70 86 101 114 125 +134 142 149 154 160 164 168 168 174 168 173 175 +177 176 174 174 172 174 177 177 181 175 173 169 +164 161 158 152 146 139 126 117 101 94 85 77 +74 73 74 83 82 85 90 91 93 103 107 123 +130 106 107 117 133 132 140 127 123 116 87 64 +58 61 72 94 85 83 77 87 100 107 96 94 +101 65 56 87 96 98 85 73 63 75 121 133 +70 70 77 62 92 113 84 70 104 135 147 162 +108 63 49 97 129 53 35 38 45 47 45 51 +42 42 43 52 48 47 57 50 48 47 46 41 +48 82 102 73 62 68 78 71 81 99 132 128 +118 96 99 89 67 49 67 87 94 71 59 49 +41 36 48 44 55 46 30 27 34 45 79 74 +108 135 117 113 127 122 125 157 200 201 202 170 +158 161 59 38 33 30 37 39 43 38 38 43 +36 37 43 88 107 93 60 66 70 77 82 88 +88 101 106 108 117 115 117 123 125 124 127 127 +128 132 132 132 140 134 129 133 137 136 140 147 +145 152 149 148 153 149 151 151 152 150 148 155 +153 157 158 161 158 160 159 160 165 165 158 163 +164 161 157 158 157 155 152 146 148 142 143 143 +138 130 124 118 114 120 125 129 133 134 138 135 +130 127 126 122 123 122 123 122 126 131 135 134 +146 152 161 169 176 180 205 223 229 229 223 211 +193 144 152 151 152 151 152 150 152 153 145 139 +136 135 134 131 128 128 126 125 126 110 103 80 +54 41 40 41 43 46 44 50 44 45 58 66 +64 67 82 65 65 68 68 45 39 34 34 47 +68 88 134 157 163 156 135 155 150 143 129 67 +43 40 47 42 38 35 36 46 68 78 104 128 +140 142 144 143 138 135 139 151 155 162 158 160 +155 157 156 155 154 151 151 156 154 151 152 148 +151 152 149 152 147 149 153 151 154 150 151 151 +149 147 150 145 147 147 145 148 149 147 144 149 +147 144 145 144 145 143 142 145 144 140 141 140 +136 133 129 135 131 131 126 138 151 161 172 180 +190 193 197 197 196 196 195 194 195 194 192 192 +195 194 193 194 195 199 200 202 203 205 208 208 +209 208 209 208 207 207 205 204 206 204 205 205 +206 207 206 206 206 207 208 208 206 207 207 205 +80 80 79 78 80 77 78 83 80 75 79 78 +82 73 73 77 64 62 63 56 55 50 46 53 +42 39 47 61 78 96 119 126 132 141 146 156 +159 164 168 169 171 174 175 172 174 175 174 176 +179 176 178 181 178 180 176 171 171 164 155 147 +143 138 125 118 109 89 78 72 69 73 74 76 +81 87 95 95 104 117 127 132 120 106 103 109 +114 121 123 124 118 104 57 58 75 85 98 91 +89 60 68 100 115 114 100 92 63 59 81 103 +93 76 66 66 59 99 146 110 58 47 49 65 +103 117 88 62 101 136 146 162 113 70 53 70 +138 82 39 39 36 47 64 45 38 46 41 73 +61 59 48 43 36 39 35 41 44 57 97 52 +45 82 78 78 95 120 168 140 119 98 80 72 +64 70 109 134 114 79 58 46 39 34 35 48 +47 43 29 34 40 80 101 104 125 133 106 109 +113 113 143 184 201 195 165 130 150 123 51 35 +35 30 30 34 40 36 34 42 37 40 42 91 +107 91 64 57 70 72 79 85 93 102 103 107 +115 116 116 121 124 126 126 130 129 131 130 134 +133 136 134 135 139 139 141 144 146 146 147 148 +154 154 152 151 152 150 152 154 149 154 156 158 +156 161 161 159 162 166 158 162 163 163 163 161 +156 156 152 151 151 145 145 142 132 124 121 117 +114 118 123 131 132 131 135 133 131 130 130 127 +131 120 123 122 128 133 134 140 141 149 164 171 +178 184 203 222 230 230 224 211 198 150 146 142 +144 145 151 149 150 149 145 141 142 136 133 132 +127 126 125 121 112 114 100 74 48 45 44 40 +45 45 52 54 45 48 58 67 67 78 82 65 +73 65 55 45 33 33 35 50 59 83 132 158 +169 155 142 152 161 141 127 94 55 52 41 39 +35 40 34 44 74 89 116 133 147 141 141 142 +141 140 142 150 164 163 160 159 157 158 155 155 +155 153 154 153 156 153 150 150 152 151 151 150 +147 147 144 147 148 149 150 149 149 152 153 148 +151 149 146 147 148 148 146 149 145 150 147 146 +150 139 143 141 141 141 139 136 141 141 136 132 +133 131 131 146 154 167 181 191 191 195 197 197 +197 194 193 193 195 195 193 195 193 192 193 192 +197 198 202 203 204 207 209 210 207 206 207 206 +206 207 205 203 202 203 205 206 207 205 206 207 +207 207 205 205 207 207 207 207 +82 82 77 76 +77 78 78 78 79 76 80 73 75 78 68 72 +65 58 58 53 54 52 47 43 42 36 49 60 +84 96 117 122 130 142 150 153 159 165 167 170 +174 171 173 176 171 175 174 174 175 175 176 179 +180 179 175 172 166 164 157 152 144 133 125 117 +105 92 77 72 68 65 73 82 85 89 102 124 +124 127 126 121 108 106 109 107 110 115 115 114 +109 84 53 66 70 84 85 88 86 50 70 107 +126 120 98 76 63 86 91 78 70 68 63 62 +71 125 144 88 51 50 61 77 114 126 86 60 +98 133 138 159 133 77 56 59 132 108 43 36 +38 42 48 44 42 55 75 76 63 41 39 36 +30 35 37 54 57 54 86 57 54 113 113 66 +79 132 169 162 157 131 113 103 96 101 108 102 +91 67 49 36 35 35 36 50 37 34 30 34 +76 121 131 119 121 122 103 101 107 108 144 181 +173 163 141 144 153 133 89 67 45 35 34 42 +37 42 39 39 34 34 45 89 110 90 68 65 +74 78 80 82 94 95 105 116 113 118 117 125 +125 124 123 128 125 128 130 133 132 134 138 141 +138 139 142 148 147 148 143 147 154 151 151 153 +151 150 154 153 149 153 156 154 157 153 162 159 +156 161 159 161 163 162 161 161 154 152 152 152 +146 140 139 142 127 118 114 110 115 123 128 135 +134 139 135 137 136 137 141 132 131 128 124 124 +127 131 134 140 139 145 159 171 177 186 205 221 +229 231 223 211 195 145 146 145 145 147 149 150 +150 148 143 139 136 131 134 128 133 124 126 118 +114 107 93 61 49 45 45 38 42 50 56 48 +43 46 67 62 69 72 75 69 71 69 48 52 +34 35 35 47 48 71 127 152 171 153 156 149 +159 146 134 94 40 60 41 33 33 45 43 42 +80 104 118 135 145 148 147 145 141 143 141 155 +156 160 158 155 156 157 154 152 154 154 152 150 +149 153 148 151 151 148 154 149 148 147 147 151 +152 148 147 148 150 151 151 155 150 149 149 148 +150 148 146 152 144 145 143 144 149 142 142 141 +141 138 137 138 140 135 131 128 134 130 133 149 +157 171 185 193 193 197 199 198 197 195 194 194 +194 194 195 193 194 196 196 196 198 200 202 203 +205 207 206 208 208 208 206 207 205 206 204 202 +204 205 207 206 204 208 205 205 207 211 206 206 +206 206 207 207 +84 84 86 81 84 81 77 79 +80 73 80 74 71 70 67 67 64 58 63 58 +59 56 46 47 44 38 47 61 78 97 118 125 +134 139 150 157 163 164 166 169 171 170 176 175 +173 175 176 175 175 175 176 180 180 178 172 172 +172 160 156 151 146 137 125 122 107 90 80 70 +70 69 75 86 95 118 124 138 142 130 111 104 +103 106 108 108 120 116 117 113 102 73 69 78 +76 73 91 98 91 61 92 114 122 120 78 69 +75 90 80 64 77 72 59 57 100 144 121 75 +47 39 54 88 118 138 96 59 83 134 134 154 +138 84 49 56 102 130 62 43 45 42 48 52 +59 74 68 59 53 43 42 46 33 33 36 71 +79 62 89 91 107 133 159 88 69 84 93 108 +149 162 148 128 95 74 59 69 51 46 40 38 +34 36 47 44 32 34 37 71 140 152 154 150 +136 128 118 107 109 100 118 130 134 145 162 173 +154 110 53 40 37 38 34 34 39 46 36 47 +69 36 46 86 113 92 78 70 67 67 77 89 +87 99 106 117 113 119 121 122 128 124 124 129 +126 128 129 133 134 133 140 136 142 142 144 144 +140 142 143 146 155 147 152 149 149 149 150 154 +157 155 158 155 158 156 156 157 158 159 162 158 +159 157 159 159 156 153 146 146 142 140 142 138 +124 115 106 108 116 124 131 134 137 140 139 136 +137 144 140 141 135 133 128 127 125 125 130 131 +138 148 158 173 182 187 202 216 228 231 225 210 +194 145 142 147 149 146 148 147 147 145 140 139 +137 135 130 128 131 124 124 117 114 103 75 48 +46 42 42 47 48 44 54 51 47 56 67 66 +71 77 75 64 76 66 51 54 36 35 32 48 +46 62 131 146 173 159 158 150 156 148 139 95 +50 59 54 37 34 33 39 46 88 112 126 140 +143 150 139 147 140 137 147 155 160 159 154 158 +153 154 154 152 154 151 154 152 151 148 145 152 +149 147 152 154 149 148 149 148 152 153 153 151 +148 149 152 152 148 147 153 145 144 148 146 149 +147 149 144 148 162 144 148 145 143 137 137 141 +132 134 129 127 131 130 137 155 165 175 184 193 +193 196 199 196 196 194 193 193 191 194 194 194 +192 192 195 198 200 203 203 204 206 208 208 207 +208 207 205 205 206 204 203 203 203 203 203 203 +205 206 206 207 208 209 208 207 205 205 206 207 +86 86 84 84 80 83 80 80 79 79 79 75 +74 73 71 64 65 63 63 56 54 53 46 45 +43 40 45 65 79 102 120 126 134 142 150 154 +160 164 166 171 171 170 172 174 175 175 175 175 +175 178 179 177 178 177 177 172 169 163 156 154 +147 138 125 121 101 87 78 75 66 73 83 95 +112 133 138 137 130 104 105 98 106 110 107 106 +113 117 119 109 104 78 68 74 60 63 92 93 +71 82 119 115 129 110 65 80 92 93 72 65 +81 72 46 55 119 140 93 77 49 37 54 83 +110 140 99 62 73 127 148 154 142 85 50 48 +80 135 70 42 48 47 57 71 76 53 51 46 +42 38 55 57 35 32 35 53 57 65 80 104 +161 146 158 105 63 53 64 79 89 102 113 101 +63 49 42 45 40 39 33 39 35 37 48 38 +32 32 41 119 170 161 165 164 153 149 146 129 +128 117 119 130 161 170 189 176 143 100 48 36 +35 36 39 37 50 38 35 39 39 36 43 93 +113 98 90 68 69 74 75 91 90 105 109 110 +116 120 123 128 119 124 127 130 128 129 133 129 +130 136 135 136 139 138 145 142 144 145 144 144 +147 149 151 150 150 152 148 152 160 155 157 158 +156 157 157 158 159 159 161 159 157 159 157 160 +157 153 149 146 145 144 140 139 125 119 103 111 +117 125 134 133 141 140 141 137 140 140 140 142 +142 137 130 123 120 124 126 129 138 146 156 171 +180 188 199 212 222 225 220 211 190 145 141 146 +150 148 145 146 144 142 136 138 135 134 129 128 +129 121 123 121 114 90 62 46 37 41 40 39 +37 48 45 51 48 56 63 60 64 74 72 73 +75 59 46 55 41 33 34 51 40 54 117 147 +172 162 159 150 145 146 136 108 64 50 50 35 +33 38 36 46 91 117 126 141 144 147 145 144 +140 137 146 161 160 156 160 155 156 156 157 154 +157 163 153 152 151 148 152 150 153 149 146 152 +149 148 148 149 149 149 150 146 147 148 147 148 +147 152 147 145 144 148 148 148 145 146 145 144 +144 144 144 142 141 143 135 137 134 135 129 129 +132 132 144 160 166 179 188 193 194 195 197 197 +196 196 194 193 195 195 195 194 191 195 195 197 +200 203 206 206 207 208 207 206 209 206 204 206 +204 204 205 203 206 206 204 205 208 207 207 207 +208 206 208 208 207 206 205 205 +83 83 87 86 +84 78 79 79 80 73 74 75 74 73 71 75 +72 71 62 64 60 59 43 49 41 40 51 69 +84 105 118 126 133 145 146 153 164 166 167 175 +175 173 174 174 175 174 176 174 177 179 176 179 +178 178 173 168 168 160 156 150 143 135 126 115 +107 89 83 76 85 96 109 127 138 143 131 115 +101 96 104 104 107 104 114 117 119 117 114 113 +93 69 78 70 71 59 91 89 84 110 120 117 +118 84 75 90 78 67 61 70 66 81 47 70 +129 131 80 75 45 44 50 76 115 140 99 72 +63 101 144 153 148 96 50 52 59 141 102 45 +50 61 72 70 67 48 46 39 45 58 73 61 +34 37 41 41 48 59 71 65 106 82 79 59 +43 40 52 59 75 94 115 109 80 49 44 36 +31 33 32 30 37 39 37 29 28 27 58 160 +163 163 166 160 158 166 171 160 158 155 158 169 +189 185 169 143 93 64 37 32 32 30 38 53 +40 46 39 41 41 40 51 91 105 102 89 71 +67 60 82 88 94 105 112 113 115 118 118 131 +121 126 132 129 127 127 131 130 134 133 134 135 +141 141 141 143 141 146 140 146 144 145 147 155 +151 149 152 155 156 155 151 156 156 157 155 157 +157 157 165 158 158 159 156 161 156 153 150 147 +152 143 146 144 130 116 107 114 119 124 133 142 +140 139 136 135 138 144 140 141 144 140 130 125 +120 119 122 126 137 147 154 167 180 188 199 206 +212 218 217 207 183 140 142 153 150 145 149 149 +147 139 140 138 139 131 130 127 125 125 125 112 +103 78 58 44 39 42 46 44 39 53 49 50 +45 55 64 65 68 69 63 73 75 61 46 52 +45 37 41 55 48 51 114 145 166 164 159 151 +146 150 126 110 80 50 42 35 30 34 37 51 +84 130 136 146 144 145 147 141 140 140 153 160 +160 158 155 159 154 154 157 151 149 153 155 154 +150 149 149 149 147 149 149 150 152 148 152 150 +147 150 148 149 144 146 146 146 154 147 147 146 +148 151 148 150 144 146 145 141 145 142 143 145 +141 144 134 135 138 136 131 126 134 139 151 164 +172 184 191 193 197 197 196 193 196 195 196 192 +196 191 193 194 194 198 198 200 201 204 206 205 +207 207 205 205 206 205 206 206 205 204 203 204 +202 203 203 207 207 207 207 208 207 208 207 209 +207 207 205 206 +88 88 86 83 83 77 76 86 +79 73 74 80 75 72 71 64 68 66 66 64 +62 62 45 43 43 42 57 78 88 105 117 128 +131 143 149 153 160 167 167 171 171 173 170 172 +174 173 171 174 177 175 177 179 180 181 174 174 +176 163 155 157 143 134 126 118 112 98 90 88 +108 127 127 121 126 109 102 93 94 98 99 100 +103 107 112 116 119 122 118 105 88 70 77 62 +60 65 91 95 95 110 102 120 108 86 87 78 +71 67 54 47 57 76 63 100 143 105 77 63 +50 45 47 57 107 130 102 75 65 81 128 158 +161 105 56 46 62 139 140 66 47 43 56 61 +55 42 47 42 49 58 79 67 41 32 33 39 +42 55 74 56 55 47 47 43 40 39 41 49 +63 105 129 114 112 69 44 37 35 36 39 34 +46 42 31 27 27 29 97 168 158 169 169 167 +174 169 172 166 177 180 181 184 189 172 139 118 +77 53 40 35 37 37 38 44 41 49 48 47 +38 38 50 88 104 91 86 63 58 71 84 89 +95 100 110 115 115 117 124 124 125 129 124 132 +128 126 130 128 132 134 130 138 144 141 137 140 +141 150 142 142 152 143 150 152 147 150 148 150 +150 147 154 155 154 158 154 151 156 161 159 158 +158 158 155 155 154 154 150 145 147 145 139 148 +128 115 107 116 123 124 134 137 135 134 135 134 +130 133 141 135 132 138 132 126 119 119 117 122 +132 144 148 159 173 185 196 202 205 211 209 203 +166 143 146 147 145 148 144 144 143 144 144 139 +136 138 128 128 126 125 119 111 89 67 48 41 +41 43 43 41 41 53 57 50 50 53 63 60 +72 82 60 69 78 59 43 48 47 40 37 52 +39 42 103 143 165 164 167 159 142 148 121 113 +80 50 46 42 36 37 37 61 92 126 142 144 +145 147 145 140 142 147 158 161 157 159 156 157 +155 154 154 154 152 154 152 152 154 153 150 147 +152 151 151 151 150 149 147 149 152 150 148 147 +150 151 148 148 145 148 150 152 147 147 150 146 +146 142 148 144 142 146 140 138 138 138 138 133 +138 132 128 131 130 143 160 169 176 186 192 194 +198 195 194 196 193 194 195 191 193 193 192 195 +195 200 200 202 204 201 205 206 206 205 206 207 +208 204 206 204 206 205 207 205 205 204 204 206 +207 207 209 209 208 208 209 208 207 207 208 205 +90 90 81 78 82 76 79 91 81 75 81 81 +71 72 76 72 65 68 64 59 61 62 58 49 +44 43 58 74 87 101 122 127 133 141 148 151 +158 163 169 167 173 172 173 170 174 173 170 172 +174 173 179 175 177 177 176 171 168 163 152 155 +141 135 127 124 109 97 100 104 95 103 100 92 +92 89 92 94 94 97 100 99 100 106 111 120 +125 117 122 100 88 84 75 50 53 74 93 98 +104 97 103 122 107 105 87 75 65 75 46 35 +50 80 108 143 132 90 83 61 65 45 42 54 +96 127 110 83 72 84 118 158 172 132 66 54 +52 126 165 95 47 40 44 50 43 46 48 45 +50 58 94 71 36 31 38 42 42 57 75 66 +62 57 43 40 36 42 51 66 75 113 98 79 +69 50 39 39 39 39 37 37 43 40 31 33 +29 36 140 173 164 168 168 179 179 169 176 175 +179 184 179 182 180 152 122 76 45 40 37 31 +33 34 33 48 44 43 38 40 41 36 51 96 +111 99 92 71 77 76 84 92 93 101 109 115 +111 121 121 124 126 124 124 131 127 125 131 131 +130 136 134 139 138 145 141 141 143 143 142 145 +149 148 150 151 149 153 152 149 150 148 151 152 +155 154 159 152 157 158 157 158 159 158 159 157 +155 157 150 149 143 147 137 138 132 113 107 112 +128 127 136 134 132 133 130 119 110 115 126 126 +128 130 132 126 121 122 121 121 129 132 143 149 +166 178 193 200 204 204 204 185 153 146 151 143 +145 150 151 145 144 146 144 137 137 138 132 129 +124 120 118 104 72 48 44 41 41 45 44 46 +44 48 53 49 50 53 58 57 72 71 58 60 +74 60 40 46 53 41 35 48 41 43 86 137 +162 169 168 161 140 140 133 117 85 40 35 46 +34 33 41 66 100 129 148 144 150 143 143 140 +140 149 156 159 159 160 157 157 156 155 152 150 +151 152 154 152 150 147 148 149 154 149 150 154 +151 150 148 153 152 151 150 153 148 150 150 145 +145 144 148 150 148 146 147 148 150 144 147 142 +145 142 142 139 140 139 142 137 132 132 132 130 +131 146 161 172 180 187 189 194 197 198 196 195 +193 193 192 194 192 195 195 197 197 200 200 204 +203 203 204 206 205 204 205 206 206 205 205 205 +207 208 206 207 205 206 208 208 205 207 208 210 +209 208 207 206 207 206 206 205 +86 86 90 80 +80 78 84 75 81 79 77 73 77 80 78 69 +67 63 65 65 59 57 55 53 50 49 60 79 +92 106 118 131 142 141 150 153 160 167 167 167 +168 171 172 169 170 173 172 176 176 175 179 179 +180 177 176 169 167 162 154 150 140 143 129 121 +109 105 104 90 83 75 78 79 87 81 90 89 +95 95 101 98 100 104 109 117 117 125 140 91 +93 80 73 67 62 76 87 101 94 95 110 128 +118 101 81 76 67 62 34 34 56 88 146 152 +110 96 80 60 82 52 45 50 87 130 109 93 +86 85 115 160 181 154 91 63 54 109 162 114 +56 42 49 48 44 50 76 59 57 51 92 76 +38 32 36 39 50 45 56 62 74 60 51 42 +46 51 84 129 137 115 67 39 37 36 37 42 +36 42 43 42 37 31 28 29 30 55 161 179 +173 175 174 191 179 178 183 189 184 178 175 166 +160 91 60 53 38 35 31 32 33 38 41 44 +47 47 37 38 40 37 46 93 111 88 92 72 +80 76 86 93 97 100 106 119 115 120 119 124 +123 121 124 128 127 127 125 129 131 134 138 141 +139 139 138 143 143 144 143 144 149 154 148 145 +153 147 151 153 156 149 152 153 155 152 157 155 +158 156 158 155 158 157 157 153 158 156 156 149 +145 147 139 139 134 127 116 119 135 132 133 132 +138 119 86 58 54 56 71 87 102 114 115 118 +125 120 122 121 125 130 131 141 160 176 188 195 +200 203 190 165 153 147 149 146 144 147 145 147 +141 144 136 139 132 127 127 125 126 123 113 93 +58 50 39 43 37 47 48 46 45 54 59 55 +50 61 66 64 77 75 54 63 78 58 48 47 +52 47 36 42 40 38 87 143 154 170 166 160 +139 140 141 123 95 49 39 50 40 44 47 85 +109 138 144 144 147 146 142 144 143 150 156 158 +160 160 157 155 154 151 154 155 155 152 156 151 +147 147 146 147 151 151 150 149 150 150 149 151 +152 148 149 147 149 141 141 147 147 143 147 154 +145 147 143 145 144 143 144 140 145 143 143 137 +138 141 137 137 134 131 128 125 135 152 165 173 +182 189 193 195 198 196 196 195 196 192 195 197 +194 195 196 198 200 200 205 205 205 205 205 206 +205 202 206 204 205 205 206 205 206 208 207 206 +206 206 208 209 209 208 208 207 209 208 207 209 +206 207 207 205 +76 76 83 79 80 77 78 82 +81 72 80 72 72 76 74 69 67 66 66 58 +67 65 56 57 47 53 65 83 98 111 125 131 +139 146 149 151 158 164 166 169 169 169 172 176 +175 174 176 172 176 176 176 180 179 177 176 176 +171 165 156 151 140 143 130 125 113 105 96 81 +68 79 75 78 83 85 93 90 95 98 105 104 +103 106 107 110 116 113 105 92 78 79 84 75 +64 85 101 88 80 102 122 145 124 98 86 80 +77 53 37 36 53 103 165 134 92 88 59 64 +93 62 42 57 81 121 109 94 98 88 107 148 +171 168 106 52 46 81 157 126 59 40 45 48 +48 54 71 76 65 60 79 61 36 34 35 40 +33 32 32 41 47 58 78 66 47 52 103 176 +169 125 51 34 36 33 37 42 41 45 43 44 +38 36 33 31 33 87 172 176 172 180 185 195 +179 183 189 188 189 183 174 162 115 47 40 41 +34 33 37 36 37 36 37 43 56 45 42 45 +43 43 44 87 105 98 95 75 73 81 95 94 +96 97 106 112 112 117 120 119 120 120 121 127 +129 129 127 129 130 134 137 136 135 135 138 138 +144 143 142 142 153 149 149 147 152 152 149 154 +156 151 149 153 155 153 152 156 156 159 159 157 +159 158 157 160 159 160 151 147 149 146 141 143 +138 129 118 120 128 132 133 136 130 100 65 49 +47 49 63 75 88 95 89 99 113 117 121 126 +120 122 126 141 158 169 185 191 200 198 172 158 +157 149 149 149 147 152 148 146 144 142 139 139 +133 129 128 128 123 118 105 75 48 42 40 46 +50 45 45 41 47 57 54 53 51 59 66 69 +80 70 54 66 79 61 46 48 51 49 44 43 +37 40 73 136 147 171 169 161 131 130 144 120 +95 54 37 46 55 38 58 96 122 130 150 151 +149 148 147 140 143 155 161 161 157 154 156 152 +156 156 155 152 153 157 150 150 147 152 156 149 +149 149 148 149 149 147 149 148 143 149 151 150 +148 144 142 148 146 147 148 143 143 149 147 139 +135 147 144 145 146 142 140 142 147 137 136 131 +134 133 128 132 142 153 164 176 187 188 189 197 +195 197 197 195 195 194 196 193 194 196 197 199 +201 204 204 203 206 205 205 205 204 204 203 204 +205 205 207 207 208 208 209 207 207 209 207 208 +209 209 209 206 210 210 209 207 207 207 207 206 +82 82 81 79 85 78 82 71 74 80 78 82 +79 83 73 70 69 64 67 63 67 62 57 55 +56 61 68 86 102 117 127 133 142 149 152 153 +159 163 165 168 170 173 170 173 172 172 175 175 +174 176 178 177 182 178 172 168 168 166 159 150 +145 138 129 126 113 100 89 73 75 73 77 78 +86 92 92 91 92 97 102 103 106 102 112 110 +112 110 107 79 60 83 91 83 57 92 94 85 +83 109 139 146 118 92 77 76 60 38 31 47 +58 125 157 112 81 63 50 76 110 66 45 73 +72 119 110 92 99 89 114 134 159 175 123 65 +52 73 147 132 60 35 42 54 39 58 67 100 +89 51 70 60 45 36 34 34 37 33 35 38 +44 47 71 94 77 66 98 176 164 118 61 41 +44 41 42 44 43 48 49 43 33 32 27 33 +47 128 163 166 170 177 181 196 182 189 191 193 +190 188 173 101 52 34 33 39 39 40 37 36 +37 42 41 51 49 52 46 43 39 39 46 90 +110 113 104 71 78 84 92 98 100 101 105 109 +115 115 121 123 120 126 125 125 126 131 129 129 +128 132 134 135 135 139 140 139 146 147 148 141 +148 146 152 151 149 150 149 152 151 148 147 151 +155 154 157 159 157 159 155 157 155 158 157 156 +158 161 149 149 151 148 147 144 138 132 122 116 +121 131 131 131 129 105 87 69 59 69 81 97 +93 91 87 84 89 92 113 118 117 123 125 137 +149 162 179 188 197 189 170 160 165 160 148 143 +149 145 147 143 136 140 139 139 134 134 129 128 +124 118 96 56 45 48 46 48 44 46 44 45 +45 56 51 47 51 58 67 70 75 63 64 73 +80 55 50 48 48 52 52 42 38 36 62 122 +147 172 172 157 125 126 152 126 96 54 35 40 +63 48 65 99 122 141 147 148 147 146 140 140 +148 155 158 156 156 156 157 155 152 152 153 149 +155 149 151 150 147 152 151 149 149 149 146 151 +150 145 151 150 148 150 150 150 147 149 146 150 +146 147 143 145 146 145 141 146 144 146 145 145 +146 140 142 142 138 137 138 132 132 133 134 135 +146 156 167 182 187 190 193 198 198 196 197 195 +197 196 195 196 198 197 197 200 201 204 205 204 +206 204 206 207 205 204 206 205 206 207 207 206 +206 209 210 208 209 207 209 208 209 209 210 209 +210 211 209 206 207 205 205 205 +77 77 85 74 +79 72 79 76 75 81 73 78 81 78 72 73 +70 64 67 62 63 71 69 60 61 63 77 89 +103 119 125 139 145 149 153 157 157 166 168 168 +172 171 175 174 175 173 174 177 171 176 175 178 +178 175 176 172 171 166 159 151 145 139 131 124 +111 96 84 75 72 67 77 82 81 82 89 91 +97 95 99 98 103 104 111 108 110 111 106 84 +73 99 97 79 61 93 94 93 84 109 125 123 +102 89 77 71 42 33 38 47 102 147 128 104 +65 52 60 103 111 69 45 78 66 109 117 94 +84 90 122 125 141 171 143 83 48 65 148 146 +78 35 35 48 36 43 67 69 63 50 70 63 +70 60 37 33 35 36 36 37 35 41 43 69 +85 78 116 156 123 86 54 43 45 49 50 51 +55 52 39 37 31 33 31 34 81 146 151 158 +162 162 175 194 184 189 192 199 197 188 161 60 +35 36 34 38 38 40 39 38 39 42 42 47 +45 46 47 46 41 36 41 95 107 112 102 77 +78 83 95 101 99 106 108 112 111 119 116 119 +120 120 124 125 126 131 130 130 131 130 137 136 +137 135 144 143 143 146 144 147 145 145 151 149 +152 149 150 147 148 152 151 154 159 155 153 158 +157 158 156 157 159 156 158 158 157 155 155 149 +149 148 148 146 139 139 123 119 121 125 128 130 +120 114 108 101 95 101 107 118 116 110 105 96 +99 86 96 112 119 120 122 132 135 153 169 189 +190 176 171 166 161 159 154 145 144 147 144 140 +142 140 136 137 132 130 131 131 126 108 84 47 +48 51 42 44 48 48 43 45 44 59 50 48 +54 61 70 70 83 57 53 69 82 61 47 45 +45 55 59 36 36 33 58 117 150 169 171 159 +131 124 154 133 94 60 41 38 54 71 74 111 +129 144 148 149 145 146 143 142 145 154 161 155 +158 155 155 155 153 150 153 148 153 150 147 151 +151 151 149 149 148 146 150 148 147 151 154 151 +150 149 149 146 145 149 146 149 144 144 145 145 +143 142 142 144 149 143 145 147 141 142 139 140 +145 139 138 133 135 134 132 133 147 162 171 184 +189 193 196 195 195 197 195 195 194 197 194 196 +196 198 199 202 204 205 207 206 206 206 205 208 +204 207 205 207 207 207 209 207 207 209 211 211 +210 209 209 209 210 208 208 210 209 210 208 208 +204 207 205 212 +79 79 84 81 81 78 77 78 +77 77 79 78 77 77 73 71 65 69 75 71 +69 68 63 66 65 70 82 91 108 121 129 139 +146 151 155 155 165 163 169 167 167 174 173 173 +169 172 173 172 174 179 176 180 177 177 176 175 +171 165 162 153 141 140 131 123 108 89 86 77 +75 77 82 84 82 94 92 90 96 101 102 102 +110 107 110 110 115 116 108 77 74 102 100 74 +64 95 92 84 81 78 78 109 90 72 80 71 +37 35 55 87 140 137 113 109 65 52 71 106 +110 82 50 48 75 117 120 101 99 87 120 121 +118 165 154 102 60 68 138 159 93 31 30 43 +35 34 44 49 48 55 87 100 118 94 48 48 +40 43 40 34 32 34 39 49 89 102 129 126 +83 53 43 41 50 62 61 55 51 45 35 44 +45 43 58 69 105 141 137 147 154 162 173 174 +176 182 190 191 185 174 128 40 36 38 39 36 +42 46 41 43 52 45 44 45 46 50 40 48 +43 49 48 95 111 110 101 76 77 79 98 101 +102 107 116 118 113 116 117 125 123 120 125 127 +128 131 129 131 132 132 137 136 133 137 142 145 +143 148 141 144 142 143 148 151 149 150 149 150 +157 151 153 155 156 151 154 154 153 155 158 157 +160 157 157 155 157 162 154 151 152 146 149 147 +144 144 129 122 116 119 124 126 126 130 127 127 +123 125 129 126 128 125 118 110 109 103 97 109 +121 120 122 126 133 154 177 188 180 176 171 165 +162 156 152 148 148 143 140 141 141 142 144 132 +128 130 132 128 115 97 64 48 47 49 48 54 +55 43 41 45 41 66 49 50 59 56 69 72 +85 59 57 66 75 69 46 45 45 54 64 40 +40 34 50 100 147 164 170 158 143 126 153 139 +106 72 48 33 41 78 87 116 134 147 147 146 +148 150 146 147 146 156 158 158 157 157 155 160 +154 152 154 153 153 151 150 147 150 148 151 148 +151 148 147 150 149 150 149 152 148 147 146 145 +146 146 148 147 147 145 144 145 146 145 141 141 +141 147 139 138 138 143 141 144 141 137 133 133 +131 129 131 140 153 162 174 182 191 194 195 198 +195 195 196 196 196 197 192 197 198 199 199 204 +207 206 207 207 206 207 206 206 208 207 207 206 +205 208 206 205 209 209 210 213 210 210 209 209 +212 209 208 209 209 208 207 207 205 206 206 207 +78 78 87 79 78 76 77 79 77 75 77 78 +75 70 70 73 73 69 67 69 71 67 67 71 +67 69 82 96 110 125 131 139 148 151 156 156 +160 166 167 168 172 172 171 174 171 170 177 177 +177 176 180 176 178 181 176 172 168 163 157 155 +145 134 129 120 107 93 85 74 71 70 79 83 +87 91 95 96 102 97 101 104 106 110 110 119 +120 120 112 82 88 95 85 67 61 98 89 82 +78 65 80 98 80 58 60 49 43 38 68 130 +139 117 98 85 77 58 85 96 99 79 60 49 +62 119 129 111 98 81 112 117 114 155 168 120 +69 79 111 164 107 34 28 27 32 39 41 50 +41 46 108 146 153 122 66 48 44 40 36 34 +35 32 34 43 87 137 121 85 50 41 38 31 +48 65 50 47 77 61 59 84 82 76 93 99 +111 112 122 139 148 150 148 152 159 168 164 173 +157 94 55 38 37 32 35 39 46 56 58 44 +48 46 42 41 42 48 38 46 47 42 48 99 +116 115 105 81 73 80 94 102 108 104 116 110 +113 116 119 128 125 128 122 122 124 128 127 130 +130 129 135 135 138 137 138 139 143 142 149 148 +146 147 147 148 149 147 145 135 149 149 147 149 +153 151 149 155 152 154 157 155 160 158 158 153 +160 158 153 155 150 148 148 149 145 144 137 130 +125 123 122 125 123 127 129 132 135 132 133 134 +132 131 125 119 118 117 116 111 119 118 126 136 +154 173 191 187 179 174 167 164 159 153 155 151 +152 145 144 140 135 137 134 132 132 128 134 117 +109 90 51 48 50 44 47 56 51 48 43 42 +48 64 55 53 64 57 73 77 84 66 63 73 +76 67 48 43 43 55 56 42 36 34 45 93 +144 165 174 159 145 122 146 142 91 82 42 37 +45 78 99 123 141 146 144 149 146 142 142 146 +151 157 159 159 157 157 155 155 154 154 152 155 +150 147 152 152 151 153 152 148 150 150 152 148 +156 148 153 150 147 147 153 147 145 150 151 146 +149 145 147 144 150 143 144 147 145 148 143 144 +144 141 144 136 142 134 134 142 136 128 133 144 +159 168 177 183 192 193 196 195 197 195 197 196 +194 196 194 199 200 200 201 205 207 208 207 205 +205 208 208 207 207 207 206 208 206 207 206 208 +210 209 210 211 209 209 209 209 209 209 208 208 +209 207 206 206 206 205 208 208 +77 77 80 79 +74 72 81 79 78 72 74 67 73 71 76 71 +68 65 65 65 66 73 66 76 75 76 85 102 +112 124 132 142 144 152 153 159 162 165 166 167 +170 170 167 171 172 173 172 172 173 173 176 178 +181 181 179 173 169 164 158 150 144 143 132 122 +111 100 86 78 72 75 79 79 84 92 86 92 +97 99 99 103 101 109 121 125 113 113 100 88 +98 84 57 56 61 85 93 87 85 61 77 86 +69 51 42 34 42 74 113 135 116 105 77 68 +93 71 88 86 82 74 67 52 69 117 131 105 +74 69 101 122 112 128 169 142 88 88 122 149 +126 49 32 29 38 43 55 53 38 47 111 153 +167 140 76 79 54 29 29 37 38 34 35 50 +111 123 108 77 43 46 35 34 73 90 68 75 +101 104 94 100 109 95 110 125 109 108 122 126 +132 132 123 135 155 180 180 182 98 48 38 34 +35 36 38 42 59 81 73 74 69 69 44 43 +44 45 38 50 59 51 43 87 113 121 105 92 +83 81 91 96 105 106 111 118 117 116 117 125 +126 125 126 121 125 126 135 129 133 127 133 134 +134 134 139 135 140 147 145 144 144 145 152 145 +147 144 147 144 149 148 146 151 155 154 145 150 +151 157 156 157 157 159 163 152 155 158 157 154 +151 147 150 153 146 146 141 134 134 133 129 124 +122 122 127 130 128 134 132 134 133 130 124 116 +119 118 121 127 136 144 157 168 179 187 191 186 +180 172 168 161 159 155 156 148 147 150 141 140 +137 136 134 130 134 134 126 119 104 63 47 44 +46 51 45 56 52 45 47 51 45 61 50 59 +57 56 77 93 77 64 56 79 81 68 50 44 +44 58 49 39 39 35 43 79 142 165 175 158 +142 124 145 147 100 89 59 39 39 79 111 128 +142 147 148 149 147 145 141 148 154 160 157 157 +157 157 155 151 153 154 155 156 153 150 149 147 +150 149 151 149 148 149 147 147 150 148 150 148 +149 152 153 150 151 147 144 147 145 142 143 146 +146 147 141 145 141 142 143 143 139 147 144 143 +139 137 135 133 130 132 137 147 158 170 182 187 +191 194 196 194 195 195 194 197 195 197 196 198 +202 201 203 205 208 208 210 207 206 208 206 206 +208 206 206 207 205 206 208 208 209 211 212 211 +209 209 209 207 210 211 207 212 208 206 207 206 +206 208 208 209 +78 78 84 82 83 75 81 77 +79 72 74 78 79 78 76 71 65 64 63 70 +71 75 71 73 79 82 89 101 116 126 140 140 +146 152 155 159 163 163 164 168 166 170 170 169 +166 170 171 171 175 175 175 182 181 181 180 174 +171 165 159 150 145 143 132 122 108 94 84 75 +71 71 81 83 85 91 92 94 99 92 99 100 +106 118 122 121 117 119 102 90 81 45 52 54 +61 85 96 87 86 65 75 69 66 49 37 36 +53 102 134 121 104 71 62 62 91 85 85 68 +78 70 87 60 63 107 125 96 88 84 98 131 +113 99 161 157 110 99 126 133 134 78 35 30 +31 42 60 53 41 47 113 141 180 154 119 113 +48 29 28 27 27 31 38 86 120 94 70 93 +78 39 34 39 73 96 96 99 104 116 111 114 +118 134 151 147 96 106 115 106 108 112 115 132 +187 206 207 157 44 41 36 43 35 40 41 49 +57 65 77 90 51 52 49 42 38 48 34 42 +42 46 52 98 126 116 100 99 79 82 89 104 +111 112 111 112 117 119 120 122 123 121 126 127 +129 126 129 131 127 130 134 133 135 139 139 134 +140 146 145 142 144 141 148 146 147 144 148 146 +149 153 148 149 158 156 151 152 151 156 160 156 +156 158 157 159 158 157 158 155 156 151 152 146 +148 147 148 142 140 137 141 135 127 124 127 127 +126 128 127 132 135 135 129 117 121 127 142 155 +172 181 190 191 192 190 188 184 178 168 166 161 +154 153 155 150 145 146 145 140 138 136 132 133 +127 131 119 117 85 54 44 46 45 42 49 48 +42 49 45 47 49 59 51 55 60 60 73 91 +96 72 61 74 69 62 54 44 45 60 45 42 +45 34 44 72 134 163 176 161 139 123 141 139 +97 98 55 43 40 82 121 129 143 147 148 144 +143 142 143 149 156 160 159 158 154 158 156 153 +156 152 150 154 153 150 154 151 150 153 149 149 +147 148 149 151 148 150 147 150 149 146 145 148 +148 147 151 143 142 146 147 145 148 144 145 140 +143 139 140 142 140 143 141 142 137 133 132 131 +131 136 132 152 162 173 182 190 193 196 195 197 +194 195 194 196 196 195 196 202 202 205 204 204 +207 208 208 207 206 206 206 208 207 207 206 206 +206 206 207 207 208 211 209 210 211 210 209 209 +209 208 206 207 207 205 207 206 203 207 209 210 +73 73 79 78 82 78 82 74 73 71 82 78 +83 75 73 76 68 67 63 68 72 76 76 74 +84 82 89 105 122 124 138 141 148 154 154 165 +162 162 168 169 167 168 171 168 169 170 170 172 +176 176 176 177 179 179 176 174 170 165 157 151 +143 141 132 119 112 95 82 79 75 73 77 83 +84 88 92 89 97 96 96 101 104 116 119 112 +115 118 108 97 67 43 42 39 50 78 96 87 +89 71 76 59 60 47 36 52 90 126 120 94 +72 50 48 63 71 99 92 66 70 80 105 67 +72 109 112 97 85 85 118 132 106 84 132 167 +121 97 133 131 139 97 48 35 35 44 61 46 +41 47 104 145 164 169 159 124 54 30 28 29 +31 31 57 120 97 52 53 84 70 47 51 69 +89 93 107 109 104 118 125 144 156 172 172 113 +100 117 102 99 108 114 131 162 210 215 191 81 +37 38 42 39 35 38 40 45 49 55 60 63 +52 47 49 47 46 48 38 37 41 38 45 103 +119 121 93 99 75 84 90 102 106 114 116 114 +116 117 115 122 121 124 125 125 128 129 130 124 +126 130 133 136 133 136 136 135 138 141 141 146 +142 143 145 141 144 146 147 148 150 151 146 147 +155 151 152 154 154 157 154 149 153 157 158 158 +161 156 152 155 153 157 155 151 156 148 145 148 +143 147 140 140 133 130 139 129 129 132 134 140 +143 149 143 132 133 145 159 170 187 197 198 194 +193 195 189 185 173 170 164 163 157 148 150 150 +147 146 144 142 139 133 135 132 129 126 120 108 +62 52 47 48 46 46 52 49 43 46 43 50 +51 62 54 58 63 58 82 88 76 79 75 83 +66 69 58 52 49 66 41 49 43 33 36 63 +133 157 171 166 141 119 142 132 85 98 60 47 +48 87 125 138 142 146 145 147 146 145 145 152 +157 160 157 157 153 156 158 154 157 153 152 153 +147 152 152 151 152 154 154 148 148 147 148 150 +145 147 146 149 145 148 149 155 147 144 147 147 +147 146 148 142 145 142 147 145 144 145 141 146 +140 141 137 140 135 136 133 136 130 125 137 151 +162 174 186 190 194 197 196 194 196 198 195 197 +197 197 199 201 203 204 204 207 208 208 209 205 +206 206 206 207 208 205 204 207 207 208 208 206 +210 209 208 208 209 210 209 209 216 207 207 208 +208 206 207 208 207 208 210 211 +80 80 80 81 +77 72 71 77 73 69 76 81 79 76 75 74 +67 71 69 73 67 71 71 76 84 85 94 108 +120 128 139 145 149 154 154 159 165 161 168 168 +164 169 169 168 168 168 172 173 174 177 175 176 +177 180 177 177 172 164 158 153 148 138 132 120 +108 93 85 82 75 71 81 82 86 86 90 91 +99 94 95 100 106 111 115 114 113 122 129 116 +72 42 45 37 43 79 86 80 77 69 68 61 +57 45 46 88 131 129 97 63 56 47 49 62 +70 83 86 61 60 92 120 79 92 126 114 101 +92 98 122 121 102 73 103 156 137 101 133 142 +135 119 52 39 36 38 49 56 43 47 86 128 +155 147 157 131 56 40 34 32 34 40 88 98 +54 39 58 59 73 82 83 100 98 96 102 109 +115 129 155 165 182 179 137 95 100 106 94 101 +117 126 142 192 211 203 119 47 40 42 41 45 +43 46 42 49 50 49 44 69 65 52 52 54 +49 51 49 40 41 45 48 100 119 122 87 101 +78 86 91 95 109 108 114 114 122 120 121 126 +123 124 122 124 122 129 128 132 125 124 131 129 +128 137 136 133 136 144 138 144 149 144 144 143 +146 144 144 148 147 147 148 149 157 153 153 154 +155 152 155 154 157 160 158 155 157 160 155 158 +154 157 157 155 151 149 146 150 143 142 145 142 +137 133 134 133 136 139 141 149 151 166 163 149 +147 148 156 172 193 198 199 195 194 194 192 181 +179 171 168 161 152 150 150 149 149 142 142 144 +138 134 133 130 129 127 118 86 49 49 49 48 +46 41 47 52 48 50 43 49 50 59 59 61 +59 68 94 92 69 65 69 82 66 65 56 51 +60 77 44 45 48 40 41 63 119 149 169 170 +146 116 146 131 86 100 69 45 60 99 129 142 +144 152 144 143 152 149 144 152 156 159 156 155 +152 154 153 153 154 156 152 151 151 150 152 150 +149 152 149 148 149 151 148 150 150 147 149 145 +151 151 145 149 148 148 149 143 145 147 151 144 +146 142 144 145 146 146 140 141 139 139 140 138 +134 133 137 129 132 139 140 153 169 179 188 191 +193 198 194 192 192 197 195 196 197 199 201 202 +205 204 207 206 208 208 206 206 206 204 208 207 +205 206 205 204 207 206 209 208 211 207 210 209 +209 208 206 210 210 209 208 208 207 209 208 208 +207 210 208 212 +75 75 76 80 75 74 73 68 +83 81 79 79 80 79 76 73 69 75 71 68 +67 70 74 80 85 93 98 109 122 129 135 149 +154 152 155 158 162 166 165 168 167 167 171 173 +168 175 173 171 172 174 176 177 178 178 175 175 +168 166 160 153 148 138 134 120 111 93 90 74 +75 80 75 87 86 90 97 86 95 93 100 100 +101 102 105 112 120 144 143 129 89 43 39 39 +50 76 90 86 63 66 70 64 63 43 78 130 +140 109 78 50 44 43 49 61 80 76 84 63 +62 80 117 86 112 126 103 104 107 111 121 104 +83 72 84 156 146 112 129 152 136 133 88 50 +46 40 51 63 46 54 79 113 138 123 114 103 +71 56 36 41 46 67 86 61 47 53 76 74 +97 107 100 111 112 107 110 119 139 153 176 177 +185 158 90 98 112 95 106 119 123 137 172 206 +211 160 57 49 46 44 51 56 53 52 49 57 +56 60 62 62 57 56 50 56 51 52 48 46 +49 48 55 96 119 128 95 104 80 83 92 100 +109 108 114 117 120 120 120 120 123 123 124 125 +122 120 125 130 134 129 129 133 132 134 141 138 +139 137 140 146 142 144 142 143 142 144 143 145 +148 142 147 151 152 154 153 153 155 153 158 158 +157 157 161 155 156 157 157 158 155 154 155 160 +150 149 152 149 150 149 144 148 143 138 140 138 +138 140 144 155 164 178 182 164 153 149 162 175 +189 199 197 194 194 194 192 184 179 172 164 157 +155 152 149 149 143 142 139 138 133 132 131 133 +128 128 116 72 53 50 53 48 50 41 46 46 +42 50 49 53 43 55 64 63 56 65 93 98 +67 62 80 91 76 58 55 46 61 76 41 46 +46 38 33 53 112 145 165 171 149 110 142 135 +84 96 74 58 74 100 130 147 146 144 143 146 +145 141 145 155 159 157 154 154 151 154 150 152 +155 154 153 151 149 154 151 152 154 151 148 147 +149 150 150 149 149 142 147 144 146 147 152 149 +146 147 144 146 144 145 146 145 147 148 144 142 +144 148 143 145 144 140 142 138 133 132 136 130 +132 135 143 155 170 180 185 190 194 195 195 197 +194 194 194 195 195 197 201 202 203 205 206 208 +209 207 207 206 207 207 206 205 206 204 205 209 +207 208 208 209 208 209 210 210 209 209 208 210 +209 209 207 207 209 210 209 210 210 210 209 212 +82 82 82 86 80 80 79 83 82 79 80 83 +80 77 76 73 71 70 72 66 64 64 70 76 +83 93 99 107 123 127 139 150 151 157 158 160 +163 163 170 168 164 167 166 169 173 172 172 177 +175 175 177 178 177 179 180 175 172 165 159 155 +151 138 136 127 112 97 85 78 74 78 79 82 +84 86 90 89 92 94 98 101 104 103 112 120 +133 149 154 134 79 56 43 44 48 72 86 83 +70 62 78 71 73 70 120 147 111 86 67 56 +52 44 46 62 70 76 76 76 62 82 90 92 +105 113 98 104 114 108 125 109 87 66 79 150 +154 106 111 147 141 131 111 70 45 41 47 64 +52 53 75 105 135 123 99 72 45 59 38 48 +67 71 52 34 32 42 53 86 123 125 117 112 +120 128 133 141 159 159 174 189 177 101 88 111 +105 98 116 134 137 164 194 209 185 75 47 45 +47 47 48 52 51 48 48 45 51 51 49 64 +54 55 54 54 49 49 46 44 43 48 52 92 +115 116 95 105 85 84 99 97 104 112 111 117 +119 122 124 126 127 121 126 128 126 124 128 126 +131 130 132 138 139 137 138 136 140 144 141 144 +143 142 145 142 147 147 140 143 145 147 151 153 +154 149 156 153 156 157 157 157 161 163 158 157 +157 157 156 158 154 155 152 155 152 153 149 146 +145 150 144 144 143 142 140 140 147 148 153 164 +178 186 190 176 161 152 163 176 187 200 200 192 +193 190 194 183 177 171 162 158 156 149 146 146 +143 144 142 136 131 132 128 130 125 119 96 59 +49 51 51 52 48 47 49 45 42 43 46 50 +52 66 72 58 55 62 99 93 74 58 70 89 +68 56 64 52 64 66 45 53 40 40 33 49 +104 144 160 179 151 110 139 134 80 93 83 62 +91 107 130 142 146 147 144 144 147 144 148 157 +160 156 155 157 158 152 157 154 153 154 156 156 +147 150 151 154 150 153 157 147 145 148 144 149 +148 151 148 148 146 153 150 142 145 149 146 143 +147 149 147 144 146 147 146 140 141 139 142 140 +141 142 140 139 132 131 134 129 134 132 151 163 +168 177 187 191 195 196 194 195 193 195 196 197 +199 198 200 204 206 205 208 208 209 206 208 209 +208 207 205 204 204 206 205 207 206 210 209 207 +206 209 211 209 208 209 210 211 209 209 210 210 +207 210 210 209 210 213 212 212 +81 81 77 76 +75 71 70 75 79 81 82 74 78 67 72 74 +69 71 65 58 62 64 69 77 86 97 99 110 +122 128 137 148 146 156 155 159 161 162 166 166 +168 168 169 168 169 172 173 176 175 180 177 180 +180 181 175 174 172 167 160 153 148 138 136 125 +108 98 84 79 73 78 76 84 85 92 96 96 +98 96 96 107 104 110 118 134 143 158 147 114 +86 64 50 54 58 75 99 91 77 69 82 79 +96 109 147 126 90 61 59 51 49 53 52 65 +74 74 85 77 68 69 76 92 103 112 104 90 +114 110 125 118 105 73 74 140 160 107 93 129 +148 126 127 88 74 62 63 63 77 75 70 107 +105 111 112 67 54 67 61 74 78 58 42 42 +39 48 55 83 128 139 133 125 132 148 157 169 +171 177 182 189 143 81 96 99 89 97 118 147 +156 194 203 194 115 56 53 54 53 53 64 63 +62 55 54 51 56 57 51 60 63 56 54 52 +44 45 50 39 44 44 49 89 111 112 92 110 +85 86 96 100 106 111 115 118 119 122 120 124 +129 121 126 126 126 127 129 127 131 130 132 136 +140 138 137 140 141 139 142 140 138 139 142 146 +143 145 144 146 150 150 154 151 155 150 152 152 +152 154 153 155 155 159 156 160 156 157 155 157 +153 150 147 155 152 152 150 150 148 149 151 146 +145 145 145 142 147 157 160 170 185 194 197 186 +168 161 166 180 187 202 199 193 194 192 193 184 +177 167 162 158 152 146 144 147 143 146 143 136 +134 134 136 129 129 117 66 49 50 48 52 52 +50 46 54 48 53 48 50 53 51 68 72 60 +53 69 94 93 73 65 70 88 67 62 62 55 +70 63 53 60 44 40 35 47 88 140 159 179 +152 124 143 138 81 89 91 67 102 116 138 146 +147 146 144 144 146 144 145 155 156 158 156 154 +158 154 154 155 153 149 153 148 150 149 147 152 +151 150 153 149 148 146 148 149 148 149 149 147 +149 151 144 142 146 146 150 145 147 147 145 149 +148 147 145 142 144 142 141 139 142 138 141 139 +133 132 132 132 129 136 153 161 172 180 190 194 +195 198 195 195 194 196 196 196 199 201 204 202 +207 210 208 208 209 207 207 206 204 207 204 206 +205 206 207 206 206 207 207 207 207 209 208 209 +209 209 211 210 210 208 209 211 208 209 211 212 +210 208 209 211 +77 77 81 77 67 70 72 79 +77 72 76 80 74 74 73 73 70 68 66 56 +59 59 68 74 86 98 102 113 124 134 136 146 +149 155 158 159 165 163 166 163 166 168 171 171 +171 169 173 174 174 177 177 182 180 181 177 175 +169 163 158 156 148 144 130 124 106 103 81 77 +75 71 72 82 89 83 88 95 95 97 98 102 +103 115 134 145 152 144 112 97 85 57 45 59 +57 67 93 75 58 70 90 112 117 127 128 96 +66 59 64 46 45 49 48 50 64 64 67 72 +63 68 66 82 95 94 81 69 101 112 109 118 +114 76 70 115 156 120 85 124 149 124 124 102 +80 63 71 76 92 79 70 86 91 83 102 73 +73 66 57 65 70 43 34 32 45 51 73 119 +145 135 138 140 150 154 165 170 168 183 181 171 +91 78 104 85 81 89 104 148 177 200 197 125 +57 39 37 43 42 41 48 49 55 55 59 57 +63 60 65 66 75 64 65 65 60 57 57 47 +56 57 58 91 113 116 102 112 97 92 99 106 +107 111 114 120 122 127 127 126 125 125 129 132 +132 131 130 134 128 133 135 136 137 142 137 143 +144 139 139 138 140 140 138 141 140 140 144 144 +149 144 153 152 152 154 152 154 153 153 154 152 +152 155 159 157 156 158 157 154 153 151 151 150 +153 152 148 150 148 146 148 146 144 142 142 149 +150 158 162 176 190 201 199 192 176 164 172 178 +189 199 198 196 192 197 197 193 176 168 160 157 +153 144 143 146 145 148 142 135 136 138 137 130 +122 91 54 46 47 49 48 49 47 49 50 47 +46 48 45 52 56 82 71 58 53 81 95 86 +64 59 70 75 70 56 57 60 64 54 50 58 +43 46 46 47 78 133 159 174 154 131 140 144 +88 91 100 76 111 122 138 144 153 144 140 140 +148 146 149 156 158 162 154 152 153 158 154 152 +154 157 152 148 149 152 152 147 149 152 151 150 +148 147 149 151 150 147 149 152 144 149 146 143 +145 146 148 144 145 151 144 147 146 145 147 145 +144 145 139 138 138 139 141 139 139 132 129 129 +134 139 151 162 175 183 190 193 195 195 194 193 +194 196 198 199 201 202 204 205 206 210 209 208 +208 208 206 205 205 206 204 204 205 205 205 206 +206 209 209 209 208 208 208 208 208 209 211 210 +210 209 210 213 210 209 210 214 210 211 210 211 +75 75 75 73 68 70 71 74 74 75 70 73 +78 74 74 73 69 65 63 59 61 61 65 72 +84 86 100 115 128 135 138 149 151 155 159 161 +162 162 168 167 167 168 170 174 172 171 171 171 +175 177 178 178 179 180 176 174 168 168 159 156 +146 141 129 124 108 97 88 77 78 77 75 81 +86 86 88 91 93 97 95 97 105 129 145 155 +142 113 107 101 86 65 49 58 60 76 87 63 +65 97 116 131 126 114 97 52 54 57 44 45 +48 46 47 55 74 70 65 74 76 70 60 81 +94 82 72 67 86 118 91 110 115 85 80 76 +132 128 90 110 152 132 120 116 84 67 66 86 +95 93 87 95 98 93 93 77 61 49 47 62 +65 42 37 36 51 73 123 165 171 137 140 159 +164 159 171 167 175 188 175 135 83 91 106 88 +89 98 101 138 195 199 145 55 43 49 38 43 +49 39 51 49 46 49 50 45 45 47 54 49 +65 61 59 59 45 50 46 43 42 39 38 74 +111 112 110 102 101 83 96 107 108 113 113 111 +117 126 122 120 130 121 124 125 125 126 121 125 +130 131 132 129 132 140 137 136 145 138 142 142 +143 139 136 137 140 141 140 143 144 142 147 150 +149 151 151 151 151 154 153 149 148 152 157 153 +155 155 156 155 152 152 148 146 153 151 149 146 +145 147 147 148 145 143 148 150 149 155 167 180 +197 204 202 193 183 169 168 179 192 201 199 197 +195 198 198 192 173 166 163 154 151 148 144 144 +150 146 141 136 135 138 135 125 117 65 54 45 +53 49 49 50 44 43 47 42 44 48 46 49 +55 75 68 58 56 81 90 83 71 60 73 79 +66 62 55 63 67 52 47 50 38 39 34 48 +66 118 151 175 163 137 137 143 86 86 111 86 +106 124 139 147 148 145 141 140 149 146 151 160 +157 155 154 155 152 153 153 151 150 155 150 149 +148 150 154 146 145 150 149 147 145 149 146 147 +147 148 144 143 142 145 142 148 143 142 148 145 +147 143 142 144 145 145 148 148 141 145 140 141 +141 142 139 142 138 131 129 132 134 140 155 165 +174 183 191 194 193 196 194 195 195 195 198 200 +202 202 205 207 206 208 209 209 207 207 206 207 +206 207 205 205 204 206 206 207 208 210 209 208 +206 208 208 209 209 208 210 210 209 210 214 210 +208 211 212 213 210 211 211 209 +70 70 76 74 +73 69 72 76 73 69 69 77 76 70 73 75 +63 65 62 58 60 66 71 78 82 92 103 117 +127 132 140 145 150 154 156 162 165 162 169 170 +171 170 168 166 172 168 171 174 176 177 179 182 +178 175 174 173 169 167 159 154 146 140 130 120 +113 95 86 80 73 72 83 79 76 83 84 91 +95 96 92 103 114 142 151 140 117 112 124 102 +80 68 80 66 56 79 82 72 96 124 136 131 +88 70 62 51 67 69 48 47 63 50 48 49 +73 74 57 88 75 65 64 75 82 71 81 66 +95 124 101 103 91 86 86 70 101 137 110 94 +149 150 121 119 96 62 62 86 104 111 96 85 +78 74 82 73 43 37 37 54 70 51 39 47 +63 83 148 181 169 145 144 165 166 173 180 180 +191 187 171 94 88 98 90 88 94 96 117 160 +201 169 63 41 35 36 41 51 49 45 43 44 +49 52 51 47 49 56 58 59 75 64 60 67 +57 50 49 44 48 47 44 74 120 106 110 98 +105 81 94 96 104 114 113 115 116 124 121 123 +128 124 127 127 130 126 128 129 132 129 135 132 +138 136 141 136 142 141 143 142 141 137 139 139 +138 140 138 139 145 139 146 148 150 152 149 150 +152 150 150 153 148 150 155 150 150 150 156 152 +153 153 147 148 148 147 149 152 148 146 148 146 +151 151 152 153 157 163 169 184 202 206 204 198 +187 177 171 176 195 204 202 200 198 198 195 185 +170 168 160 153 151 146 144 138 148 139 136 136 +133 133 134 119 103 52 46 41 49 48 52 50 +45 49 49 47 43 47 46 49 62 69 66 54 +57 87 89 84 69 59 73 79 75 54 63 65 +66 51 45 43 40 36 31 43 61 119 151 169 +166 128 137 137 89 80 114 103 116 130 143 146 +148 147 142 137 148 147 153 160 157 156 154 153 +153 154 153 154 152 152 154 151 147 155 149 149 +153 149 151 147 150 151 148 148 145 147 145 151 +146 141 140 147 143 147 144 146 145 146 145 147 +146 141 147 143 137 146 141 139 140 143 143 137 +136 134 131 134 132 144 155 170 179 185 193 194 +194 197 196 197 196 197 201 199 205 203 205 209 +208 209 210 209 208 207 207 206 205 206 206 206 +207 205 206 206 207 209 208 206 206 206 209 209 +210 209 212 213 212 209 208 208 210 212 210 211 +211 210 212 212 +77 77 78 67 70 71 76 71 +69 71 71 75 77 74 72 70 67 67 61 60 +56 63 68 75 89 95 103 112 128 131 136 148 +150 151 158 160 160 167 167 166 170 167 170 168 +167 170 171 173 172 178 177 184 182 180 177 173 +172 165 159 157 149 140 135 121 108 102 89 74 +69 70 73 74 81 92 86 94 93 100 102 115 +137 152 140 115 105 118 121 104 79 50 57 64 +63 82 74 87 118 136 136 103 47 45 50 54 +69 68 48 51 59 50 53 54 79 69 55 75 +82 62 60 73 90 77 70 75 91 96 119 108 +77 68 81 80 89 132 129 104 136 158 119 128 +103 58 53 73 115 125 108 78 71 57 63 68 +38 31 27 38 60 55 67 75 87 112 149 156 +154 149 145 160 168 179 182 197 190 187 133 84 +107 94 90 90 89 111 141 190 179 92 44 39 +35 42 44 50 51 46 47 40 44 50 51 42 +44 47 51 48 75 66 57 53 48 48 52 50 +39 39 47 76 116 97 106 104 111 86 93 98 +105 110 111 114 120 122 119 118 127 125 126 126 +133 130 129 130 124 126 133 136 139 135 135 135 +141 139 137 136 144 139 138 145 139 142 139 142 +142 141 143 142 149 146 149 148 147 148 152 150 +150 148 152 152 152 152 159 155 151 148 147 147 +143 148 150 154 154 151 143 151 150 150 156 150 +161 163 170 190 205 208 205 199 187 178 172 178 +197 205 205 200 198 192 194 184 177 165 161 156 +148 142 143 143 145 141 138 136 135 135 129 117 +70 45 48 49 49 46 55 48 50 48 53 49 +46 47 53 57 64 67 70 59 61 85 79 87 +71 60 64 88 71 52 69 67 59 46 51 46 +34 39 34 43 59 114 145 167 163 125 130 140 +98 74 106 110 116 131 144 142 147 148 145 143 +147 147 152 159 157 155 154 153 154 155 154 151 +153 153 150 146 151 147 150 149 148 146 147 147 +142 146 152 144 150 148 149 146 146 147 140 144 +143 147 142 146 146 140 145 148 145 148 143 145 +142 144 140 142 142 139 140 138 134 135 131 132 +129 144 159 167 179 188 192 193 195 195 196 195 +196 199 200 204 204 208 209 207 208 208 208 209 +208 205 206 205 206 207 207 206 208 208 206 205 +208 209 207 205 206 208 208 210 210 211 211 210 +211 206 210 210 211 210 210 211 210 209 212 212 +71 71 76 74 70 72 73 75 73 70 66 73 +73 74 67 63 61 64 68 61 66 64 68 75 +84 91 100 115 125 133 140 142 154 154 156 161 +166 163 166 165 171 171 167 168 168 170 172 177 +175 174 179 180 179 179 181 174 172 167 161 155 +147 138 137 121 110 98 91 72 66 77 74 76 +81 85 80 91 89 95 105 131 151 150 114 106 +112 123 119 96 63 54 67 66 56 81 84 102 +120 134 124 76 36 42 42 44 90 100 51 58 +69 56 47 56 73 69 52 70 95 65 61 66 +78 84 66 77 87 77 124 111 54 63 74 94 +102 134 140 114 119 153 119 125 126 72 50 74 +137 144 98 66 59 44 46 49 60 45 40 39 +54 70 90 89 102 120 126 137 143 150 151 166 +173 176 193 194 190 159 91 93 108 96 88 93 +102 124 171 192 111 47 41 36 40 42 41 43 +60 64 48 50 48 49 48 41 46 52 62 47 +77 68 61 60 49 44 54 47 38 37 42 69 +108 102 105 91 118 88 90 99 101 111 112 113 +114 117 120 125 123 124 128 126 129 132 127 130 +129 127 135 134 138 135 137 137 143 140 137 142 +142 139 135 140 144 146 141 140 143 141 146 140 +146 144 148 146 148 153 150 149 147 147 152 151 +152 152 152 160 154 152 146 146 145 150 143 150 +151 148 149 153 149 153 152 156 164 164 176 193 +209 206 205 203 193 180 171 176 190 204 204 202 +197 194 190 185 173 169 160 153 143 143 145 148 +143 141 137 138 140 133 124 104 55 45 45 45 +46 45 45 48 50 46 52 45 45 42 49 54 +64 71 66 57 74 80 89 81 72 65 64 80 +66 56 66 67 57 53 49 49 42 43 35 47 +62 112 140 161 163 125 119 139 102 77 110 122 +119 133 143 145 145 147 143 143 146 151 154 158 +154 152 152 151 151 158 154 154 150 150 150 153 +149 150 145 149 149 149 149 146 147 150 147 148 +149 149 147 150 146 146 144 140 142 144 151 144 +141 139 143 143 142 142 145 143 150 141 144 138 +139 141 140 136 134 135 125 132 131 144 158 169 +182 188 193 196 194 197 195 195 195 200 201 202 +207 207 208 211 210 207 207 208 208 209 205 205 +207 208 208 207 207 208 207 207 208 209 205 207 +206 210 207 209 209 212 211 211 211 210 210 208 +209 212 209 209 211 211 211 212 +73 73 70 72 +72 72 70 66 69 70 65 63 67 68 68 66 +66 61 70 61 66 66 70 78 79 89 98 113 +124 131 139 144 149 152 155 158 163 162 164 168 +169 169 170 170 173 171 174 173 172 174 177 179 +178 179 177 175 170 164 161 154 149 137 131 120 +112 94 83 79 70 72 78 76 85 94 84 86 +86 101 120 143 146 115 111 102 119 131 117 100 +60 67 66 60 68 93 110 106 123 129 112 60 +39 47 50 52 58 93 59 81 69 60 57 62 +72 66 58 54 92 83 65 62 68 77 70 71 +65 82 121 112 58 49 76 87 116 126 133 127 +110 129 123 123 136 101 54 105 157 153 83 47 +55 44 39 43 62 75 50 53 67 87 102 109 +100 106 115 125 143 150 162 165 174 184 194 191 +177 101 92 90 86 88 89 94 114 153 193 148 +57 42 38 43 45 56 52 47 54 68 56 49 +46 50 53 50 43 50 61 55 74 64 61 66 +44 46 52 47 43 41 41 64 99 99 103 96 +122 89 81 93 105 118 109 109 119 119 119 124 +125 127 128 129 129 128 135 130 127 130 132 131 +138 135 134 136 138 142 140 144 140 138 136 136 +139 146 137 137 142 143 140 139 142 141 148 146 +146 149 148 147 148 148 151 146 146 150 155 156 +146 147 152 150 144 147 145 150 148 148 154 154 +153 155 154 157 162 169 175 196 211 210 206 205 +197 176 166 173 182 198 203 204 196 193 191 187 +175 165 156 148 142 143 145 146 139 138 134 140 +135 131 124 77 47 46 55 44 49 45 43 55 +47 45 55 49 46 44 50 60 69 66 55 55 +82 82 90 74 71 67 69 79 61 52 70 67 +49 64 48 52 39 43 39 38 69 110 136 160 +171 132 113 140 101 79 118 131 128 135 143 141 +142 145 145 145 146 155 157 155 152 150 154 155 +150 156 154 149 155 154 151 150 150 153 147 147 +146 149 151 151 149 142 148 150 150 146 149 146 +146 144 146 144 144 146 144 148 146 146 141 149 +149 145 143 145 137 144 142 141 135 138 132 132 +130 132 133 128 129 149 163 171 181 189 196 195 +197 196 194 196 198 200 203 204 204 204 209 209 +209 209 206 206 208 206 206 207 207 207 209 208 +209 206 206 206 208 207 205 206 206 207 208 210 +210 213 213 212 212 211 211 209 209 211 211 209 +208 211 212 212 +73 73 69 74 71 70 71 75 +63 73 66 69 71 71 73 68 72 65 65 62 +61 72 77 79 76 85 95 112 119 123 136 141 +148 154 154 158 162 164 166 167 168 169 171 171 +170 172 175 175 175 174 172 178 178 177 181 176 +172 167 163 157 151 147 130 122 111 96 85 74 +72 68 80 79 80 80 81 92 93 119 138 147 +112 111 108 106 123 134 118 95 52 62 65 63 +87 111 108 112 123 126 103 53 40 47 57 59 +52 58 83 82 72 67 68 63 80 64 53 48 +84 95 75 73 57 72 79 68 63 79 102 116 +83 52 72 66 80 122 127 122 121 105 116 108 +130 121 84 131 167 145 58 35 49 59 39 33 +42 66 88 92 98 100 95 107 96 103 119 134 +149 158 154 167 181 191 196 185 118 86 101 98 +91 89 89 112 147 193 156 62 41 44 41 37 +41 55 53 48 51 55 54 55 43 50 58 48 +48 45 64 52 68 75 76 66 53 55 47 46 +47 42 39 65 105 98 101 95 122 100 73 92 +97 104 108 117 116 116 124 123 126 122 129 130 +127 126 126 127 127 132 133 134 138 138 135 136 +138 138 145 145 135 139 138 142 139 143 135 136 +138 140 139 142 141 139 143 144 146 149 149 145 +143 144 145 145 143 149 151 152 144 148 147 147 +146 146 146 151 150 152 149 154 154 154 159 160 +165 168 173 195 206 209 205 204 192 172 169 177 +186 200 206 203 204 196 187 189 177 164 156 143 +140 141 140 144 142 138 137 142 130 129 111 60 +51 44 45 43 49 46 48 49 48 47 46 42 +52 55 53 52 61 64 61 70 74 79 80 81 +76 68 74 73 55 47 68 56 54 62 50 51 +42 43 39 41 62 111 138 156 173 140 116 145 +103 73 115 132 131 137 144 142 141 146 149 144 +146 154 155 154 152 154 159 157 154 154 152 148 +153 152 155 151 157 150 149 148 148 150 156 147 +148 146 147 147 148 148 148 147 145 145 145 148 +146 145 144 144 144 142 145 147 141 146 145 146 +142 139 143 141 138 134 135 130 130 126 128 131 +134 149 161 173 181 190 192 196 194 196 197 198 +199 201 205 204 210 206 208 209 209 205 210 208 +206 207 206 208 207 208 208 208 209 207 207 206 +209 206 207 208 206 209 210 209 212 212 211 210 +211 211 210 208 210 212 212 213 211 211 211 212 +77 77 73 67 69 74 64 72 68 67 70 68 +68 66 67 68 64 59 62 61 65 66 78 78 +82 84 94 111 118 125 132 140 149 151 157 158 +163 164 166 168 170 168 166 170 172 170 173 173 +178 175 175 177 181 178 179 180 172 166 160 157 +147 146 132 123 114 97 83 72 68 69 77 83 +85 85 88 93 110 135 154 128 101 102 101 109 +134 128 119 87 53 60 69 83 100 103 94 108 +121 120 87 57 43 54 59 52 50 62 87 78 +61 68 75 70 70 69 60 60 65 96 76 77 +69 64 75 68 65 71 94 104 100 66 56 50 +53 79 115 134 137 116 107 110 121 136 125 146 +157 125 46 33 43 63 42 32 39 82 115 114 +107 105 94 95 94 110 130 138 147 160 155 174 +189 196 190 143 82 98 95 87 86 92 101 133 +187 181 64 40 42 37 40 38 44 65 81 56 +51 57 49 56 47 47 56 53 55 47 56 54 +67 74 80 62 58 55 46 44 37 43 40 62 +106 103 101 91 112 100 83 91 98 102 105 114 +111 117 129 124 122 129 129 123 130 124 128 129 +126 131 132 136 137 136 136 135 136 141 143 147 +139 142 139 144 140 136 137 138 139 141 138 138 +140 140 138 146 142 142 146 146 146 145 146 143 +141 144 148 147 143 143 147 145 149 144 143 152 +148 147 150 154 150 154 154 157 158 170 175 195 +206 203 208 206 190 177 176 184 201 211 210 208 +204 202 192 191 179 163 153 141 137 144 142 138 +140 138 138 140 128 127 77 52 41 44 45 46 +46 43 58 56 51 49 49 44 44 49 66 55 +62 60 58 67 72 80 76 77 70 66 72 68 +55 56 66 57 59 57 43 48 42 38 39 38 +54 110 127 156 174 140 113 146 116 68 113 132 +129 140 138 141 140 143 147 146 155 154 155 160 +153 155 156 152 159 150 155 158 149 149 153 154 +152 148 149 148 147 149 150 146 149 146 148 149 +149 147 151 144 146 144 145 147 145 144 142 146 +144 148 145 141 143 145 145 141 146 144 139 142 +136 138 134 130 131 131 131 129 132 152 163 174 +184 189 195 197 196 196 196 199 202 204 204 206 +209 208 209 208 209 207 206 207 208 207 206 206 +209 208 210 208 207 208 205 206 206 207 206 206 +208 212 210 210 212 213 211 210 213 211 212 210 +210 211 210 210 212 211 211 211 +67 67 70 64 +68 65 63 74 66 70 69 68 67 71 69 65 +60 63 65 60 71 71 68 74 77 92 94 105 +123 127 136 145 148 155 156 157 162 165 167 167 +169 170 171 172 175 172 174 176 175 176 177 184 +181 178 178 176 174 167 165 155 149 142 131 125 +109 98 83 69 68 71 76 74 81 81 87 106 +128 150 136 108 107 103 102 111 129 123 116 85 +53 75 85 91 74 70 79 119 104 97 68 44 +55 54 59 48 55 68 69 62 59 69 79 69 +60 67 78 77 69 84 88 76 67 58 62 69 +70 69 84 94 93 98 58 45 48 62 82 116 +146 148 118 113 124 147 144 143 128 59 30 26 +29 38 40 49 72 105 125 133 139 126 112 109 +104 115 130 138 166 166 168 183 195 192 167 86 +89 113 85 87 98 102 117 166 190 114 41 38 +40 35 37 40 55 77 80 65 51 49 48 46 +40 43 55 48 54 49 52 56 70 72 71 71 +65 48 46 49 38 43 40 52 100 103 95 92 +110 95 76 80 91 96 103 119 112 116 121 121 +120 123 131 123 126 129 129 129 129 137 130 135 +133 140 137 141 144 139 140 143 136 140 139 143 +138 137 135 135 136 139 140 140 143 141 141 138 +141 140 144 143 144 145 144 147 145 139 146 148 +143 143 140 145 146 142 141 145 144 147 149 154 +153 154 158 163 163 177 181 190 201 205 212 209 +203 195 193 197 205 212 202 193 192 192 190 191 +181 168 148 141 137 137 138 139 137 138 138 136 +129 121 59 42 41 46 43 45 51 45 56 68 +52 49 51 43 46 48 55 52 61 63 69 76 +73 81 75 86 67 64 76 75 63 66 64 61 +71 57 47 47 43 37 38 37 46 106 123 155 +172 143 116 143 125 75 115 129 136 135 141 141 +147 143 150 145 147 155 154 155 155 150 153 152 +156 153 156 150 151 151 150 154 147 147 146 144 +146 144 147 147 147 146 148 144 149 150 144 146 +147 147 147 153 146 147 146 145 145 144 147 143 +143 144 146 144 143 140 139 141 136 136 139 136 +131 131 129 125 139 151 163 174 183 189 195 196 +196 197 199 202 202 207 206 209 209 209 209 208 +209 209 207 208 206 208 207 209 208 209 209 207 +209 207 206 206 205 206 206 207 209 212 212 211 +212 211 211 211 213 212 212 210 211 213 211 212 +213 212 211 212 +73 73 64 59 58 62 62 69 +63 67 63 70 68 72 74 65 67 66 64 63 +68 69 66 71 78 85 93 105 122 130 135 140 +149 156 155 157 163 167 167 167 166 172 169 173 +173 173 172 178 176 177 178 182 182 179 179 174 +174 169 164 153 148 144 132 125 115 104 80 74 +70 71 74 79 82 83 94 126 146 138 108 96 +99 102 101 112 131 118 106 83 59 74 88 68 +51 57 83 124 103 85 68 42 55 60 52 51 +72 81 65 57 62 61 82 68 59 64 80 96 +78 73 92 75 78 65 59 71 72 77 83 81 +84 113 93 62 45 50 59 88 128 154 132 110 +122 142 155 134 91 38 30 30 37 35 50 85 +108 129 135 146 163 162 148 139 135 125 137 164 +183 183 182 194 195 178 103 88 108 102 89 98 +106 119 141 189 154 56 39 48 43 44 37 42 +63 85 98 70 54 58 50 51 43 44 62 46 +49 43 51 52 65 65 82 80 71 49 50 40 +43 41 40 56 96 91 97 94 110 99 91 89 +90 100 102 118 111 113 119 120 127 123 129 125 +128 127 133 130 128 129 133 132 135 137 137 139 +136 138 135 141 139 138 139 138 136 137 136 134 +139 137 141 142 143 143 140 141 140 140 143 141 +141 146 138 140 138 136 140 146 145 143 145 142 +142 140 141 144 147 149 154 153 159 160 161 161 +164 167 167 172 178 185 188 188 201 211 207 202 +190 185 175 175 173 174 185 181 181 166 140 136 +133 131 135 136 136 142 141 135 122 88 60 45 +42 47 40 44 45 53 53 75 51 48 47 46 +51 57 55 50 61 69 69 71 75 83 79 82 +69 64 73 76 67 75 69 58 70 62 47 45 +36 36 39 38 42 93 123 154 173 155 119 133 +125 77 125 131 140 134 143 140 141 145 146 139 +150 155 156 155 156 152 154 156 154 154 151 150 +152 148 153 148 151 151 152 147 145 147 148 144 +148 150 153 146 150 148 145 147 146 145 147 147 +140 143 147 147 143 143 143 148 144 144 145 139 +144 143 141 140 137 137 136 134 130 132 125 127 +134 150 167 177 184 188 193 198 196 200 202 202 +203 204 208 207 208 214 211 206 209 209 208 206 +206 207 207 209 208 210 209 210 207 208 207 208 +206 208 207 210 209 210 210 211 215 211 213 212 +211 212 211 210 212 208 211 213 210 211 210 213 +70 70 66 59 62 65 60 63 65 69 75 73 +73 65 65 64 61 66 62 64 63 67 73 70 +82 85 94 104 117 129 136 146 152 155 155 160 +160 168 168 170 172 170 173 173 170 174 177 175 +173 182 180 177 180 180 178 175 174 169 160 153 +149 138 130 123 110 101 83 69 70 73 70 75 +76 86 115 143 151 110 94 95 100 100 105 112 +123 118 106 74 58 71 68 54 38 52 107 119 +103 88 58 49 55 66 50 63 76 70 65 60 +57 60 92 74 63 84 81 106 102 74 93 92 +84 82 71 74 75 81 77 71 75 91 113 83 +56 56 50 75 94 118 119 113 119 134 148 139 +107 51 41 42 42 39 67 97 119 136 134 154 +162 182 188 179 173 150 170 191 199 190 194 196 +181 119 79 93 113 87 92 108 116 137 181 180 +69 44 47 46 40 37 41 41 65 95 106 75 +50 47 50 48 38 42 57 52 54 53 52 63 +68 67 85 78 77 47 42 43 46 41 42 58 +91 106 86 87 102 103 83 78 92 94 96 111 +113 115 120 117 123 124 124 130 130 128 126 130 +130 129 131 129 136 145 134 134 139 138 138 141 +142 141 140 139 142 135 134 137 134 137 141 137 +138 144 143 138 136 131 136 140 138 145 139 139 +138 139 142 144 147 142 143 144 141 142 144 145 +153 153 156 156 158 157 153 156 153 150 148 148 +160 160 158 163 173 185 192 179 169 164 160 156 +153 158 164 170 171 156 139 124 125 128 132 133 +142 138 137 132 121 61 48 46 42 47 46 42 +50 53 54 57 47 46 48 48 47 56 51 54 +69 69 62 71 73 84 79 90 71 65 70 87 +80 67 65 59 73 69 47 46 36 39 38 37 +40 84 127 154 167 162 117 125 132 92 124 135 +141 139 144 141 146 143 147 142 151 151 153 159 +155 156 153 154 153 154 154 154 149 149 154 152 +151 155 148 146 148 144 147 149 148 152 152 153 +147 147 147 147 150 148 147 146 139 144 145 144 +147 145 147 144 142 145 144 143 140 139 140 138 +138 141 136 138 128 129 131 131 139 153 166 175 +183 187 193 196 198 199 202 202 204 204 209 209 +210 210 210 207 210 209 208 207 208 208 210 209 +208 208 208 210 209 209 207 206 208 209 210 208 +209 210 209 212 216 213 213 212 214 211 210 212 +210 213 212 212 212 210 209 212 +69 69 60 59 +59 63 61 59 66 68 63 68 67 74 67 67 +67 66 64 65 64 69 67 77 83 86 95 106 +125 128 137 142 149 155 158 163 162 163 170 168 +171 169 170 172 165 175 174 172 177 177 180 181 +180 177 179 177 175 168 162 158 151 146 132 122 +108 99 81 75 74 74 74 79 84 102 131 150 +117 97 94 94 93 101 100 113 130 131 104 80 +66 61 58 41 39 59 113 118 125 109 69 58 +57 68 51 60 62 69 65 59 55 55 77 69 +63 62 65 97 118 85 82 96 96 86 87 76 +80 79 79 69 64 71 109 116 82 65 59 58 +65 84 88 87 109 131 128 139 130 94 43 30 +31 38 82 115 99 100 108 132 164 175 197 202 +196 188 190 206 202 191 197 178 126 87 94 108 +91 81 92 114 127 169 197 117 41 40 40 45 +37 39 41 41 63 95 113 82 52 43 44 51 +41 41 59 52 52 55 53 61 61 70 71 71 +67 51 45 52 44 39 42 57 85 102 80 89 +105 97 90 71 85 94 100 107 112 115 121 126 +125 124 123 131 129 130 132 129 126 127 133 132 +131 132 135 132 137 134 137 140 143 142 138 142 +140 134 137 136 135 139 142 138 137 134 133 134 +135 130 129 130 133 134 136 140 137 141 140 145 +141 140 143 145 145 141 147 149 146 147 142 147 +144 141 137 135 140 133 136 135 142 148 145 146 +151 158 161 156 153 152 146 145 144 150 153 153 +157 144 125 116 123 126 134 141 140 142 138 130 +88 47 47 50 42 51 48 47 52 58 50 53 +49 49 51 51 53 57 51 63 64 73 69 58 +62 84 75 89 72 68 69 81 79 66 65 58 +70 71 54 45 38 37 36 36 45 65 125 155 +164 159 115 118 133 99 125 136 140 141 149 145 +144 142 147 144 149 158 156 156 154 152 157 152 +152 152 151 154 150 149 154 146 151 149 149 143 +147 148 145 145 147 147 151 153 146 144 147 145 +148 151 149 149 144 144 145 147 148 144 143 146 +145 142 141 143 140 139 140 137 138 135 135 136 +132 127 124 128 139 156 163 173 188 191 192 197 +198 202 203 204 205 207 209 211 210 209 208 207 +209 208 207 206 207 209 208 209 210 209 210 210 +208 209 207 207 209 210 209 209 212 209 211 212 +212 210 212 214 214 211 212 212 209 212 212 211 +212 211 211 212 +69 69 60 61 59 58 56 66 +64 61 68 64 63 70 66 68 69 66 58 56 +63 64 76 78 74 82 89 110 125 128 138 145 +151 155 157 164 163 164 168 169 172 172 173 172 +172 175 171 175 173 177 179 183 182 181 178 177 +172 170 160 157 149 140 125 121 110 95 78 79 +69 69 72 79 89 116 146 134 107 95 90 91 +97 99 105 115 142 135 109 69 54 47 42 40 +47 87 107 93 128 106 59 48 48 65 55 58 +62 67 67 54 57 50 54 64 70 67 63 95 +127 95 82 97 105 102 95 86 85 88 74 79 +67 65 91 119 108 74 51 50 57 74 95 90 +101 131 130 125 135 126 84 51 42 58 112 134 +104 94 110 133 162 177 196 201 207 205 204 209 +200 195 186 140 83 91 105 102 89 91 99 123 +152 198 144 46 31 37 37 39 39 42 44 40 +55 75 98 73 44 42 44 52 43 39 52 56 +53 54 53 66 73 81 69 72 76 54 47 46 +45 42 44 60 96 111 78 87 100 93 84 72 +83 88 94 106 112 112 115 122 123 124 126 130 +130 131 131 128 127 128 131 130 132 135 132 134 +134 137 138 135 141 140 144 142 139 137 140 138 +136 138 143 142 138 131 132 126 126 126 125 129 +130 126 131 132 131 137 141 142 136 135 140 141 +137 136 139 137 134 130 134 135 135 127 134 126 +128 126 122 127 139 140 138 137 143 150 154 146 +142 138 134 135 136 136 142 140 130 113 102 103 +117 130 136 143 142 138 136 119 57 46 45 50 +41 45 49 43 48 50 48 47 55 47 52 53 +48 57 47 57 70 74 67 62 70 85 70 87 +76 72 80 89 65 64 61 55 59 71 50 45 +36 38 44 44 48 63 122 152 162 159 114 110 +131 102 128 141 144 144 147 147 145 144 146 144 +153 158 157 155 154 155 157 156 154 155 146 152 +148 150 151 145 146 150 143 145 148 147 147 142 +145 148 149 149 147 146 147 147 147 148 147 141 +146 144 144 143 144 144 141 146 143 139 144 144 +143 139 141 140 140 135 134 133 128 130 126 126 +138 154 168 179 184 191 194 197 199 204 204 205 +206 209 209 211 211 210 210 209 209 207 206 208 +208 207 211 208 206 208 209 209 210 209 208 209 +210 212 211 209 212 211 210 213 212 213 212 212 +213 212 211 212 212 213 213 213 210 212 212 213 +62 62 64 60 59 54 58 63 61 58 61 60 +68 71 65 71 64 64 57 59 59 66 72 75 +78 85 92 105 121 132 141 144 153 155 161 166 +164 166 170 168 170 173 173 169 176 177 175 175 +177 180 181 183 181 175 179 177 169 169 160 154 +150 142 132 122 110 94 84 73 71 65 79 82 +108 142 140 109 91 89 88 93 103 106 114 130 +145 135 101 67 52 53 46 41 49 94 83 50 +106 106 76 52 53 71 61 64 64 66 66 49 +59 58 52 56 57 59 64 98 126 117 84 91 +109 99 100 98 85 79 71 73 69 65 67 86 +121 108 80 63 58 76 108 94 100 114 129 115 +96 124 124 104 89 97 144 155 133 118 116 129 +155 190 188 200 211 206 202 209 200 189 160 88 +93 105 109 89 89 99 118 143 188 181 65 40 +34 38 32 42 45 41 44 41 47 66 84 73 +46 48 43 46 47 39 52 52 47 59 59 68 +59 77 60 71 78 59 41 40 43 46 45 47 +95 118 78 90 93 98 82 70 82 92 98 101 +111 108 114 115 120 128 127 129 128 129 127 124 +126 127 126 130 133 128 132 136 133 131 132 137 +138 142 144 142 144 137 140 143 138 145 149 140 +138 122 115 104 104 108 118 120 125 126 130 130 +132 133 136 135 132 131 133 132 131 127 128 124 +124 121 121 126 130 123 127 119 118 122 117 113 +120 132 135 126 144 135 143 137 127 113 101 108 +114 122 121 115 98 92 97 103 118 135 139 145 +145 137 130 90 51 53 47 47 43 47 45 47 +57 54 47 48 45 53 47 44 56 54 49 53 +81 80 57 56 65 88 65 85 66 78 81 89 +60 66 51 51 68 69 67 45 39 34 43 40 +43 62 111 148 161 159 120 106 137 112 130 145 +148 145 144 146 148 143 139 140 155 154 157 151 +154 156 154 156 151 150 148 151 154 151 146 147 +150 151 150 148 146 147 148 144 145 150 147 147 +145 152 146 148 148 149 147 140 144 147 146 144 +146 143 142 144 144 141 143 146 145 143 142 139 +139 136 136 131 129 127 122 125 144 158 169 176 +185 192 196 199 203 205 207 206 207 211 211 212 +208 209 209 209 210 210 209 210 209 207 207 208 +206 207 209 209 208 206 208 208 209 210 210 211 +212 213 212 213 213 211 212 215 213 212 212 212 +212 210 213 212 212 213 214 212 +53 53 53 55 +60 58 55 58 59 54 60 63 66 66 67 65 +61 62 63 62 63 69 72 74 78 85 90 103 +117 130 136 147 151 155 159 161 165 168 173 172 +174 173 172 175 175 176 175 178 178 178 179 178 +179 179 177 180 172 165 164 153 150 138 128 121 +109 97 78 64 67 68 85 104 136 141 118 101 +86 87 94 93 100 114 130 142 154 129 95 66 +54 43 44 51 71 92 53 41 67 87 73 64 +60 61 57 59 65 79 78 66 56 53 50 49 +55 62 72 105 132 125 101 97 101 105 99 106 +99 79 80 80 72 64 62 71 93 122 110 86 +70 96 111 87 81 92 119 120 96 85 87 115 +136 148 174 171 156 118 118 138 166 189 188 197 +213 205 207 202 193 168 101 85 105 116 102 88 +96 107 131 176 198 124 45 41 46 47 43 44 +52 48 44 39 36 61 80 78 48 37 42 48 +49 46 46 49 49 59 61 68 52 71 66 74 +82 69 43 43 44 41 47 49 86 122 70 82 +86 106 78 76 74 89 96 99 107 111 119 116 +119 121 129 133 130 137 132 123 124 130 123 131 +129 126 131 133 133 133 135 138 138 142 139 147 +144 143 140 142 139 145 147 143 133 115 93 70 +71 78 89 101 108 110 113 121 120 127 124 125 +128 119 121 119 116 122 117 111 115 109 113 113 +110 107 106 106 111 110 110 111 115 126 123 124 +137 131 137 113 87 76 67 87 95 98 105 109 +104 99 108 115 127 136 146 147 142 137 124 68 +44 46 47 44 43 47 45 53 55 54 44 49 +46 49 45 50 58 50 56 63 73 73 51 61 +71 84 60 79 63 72 82 82 64 70 50 50 +57 68 67 50 45 33 38 39 40 54 101 146 +160 159 127 108 148 123 130 142 149 142 145 145 +152 148 144 145 152 154 154 156 154 156 154 155 +148 150 155 151 152 152 149 154 151 145 149 151 +147 151 148 143 147 154 146 147 149 148 146 145 +150 147 148 149 147 147 142 141 146 145 144 144 +142 145 146 139 144 146 145 140 141 136 135 132 +127 127 127 132 144 157 170 180 188 190 198 200 +203 206 205 209 209 212 211 210 210 210 211 209 +209 209 208 211 209 209 208 207 206 206 207 211 +206 210 209 209 211 210 210 211 211 212 211 212 +212 211 213 212 214 212 212 211 214 212 212 212 +212 213 217 213 +57 57 56 54 58 64 60 62 +61 57 63 64 73 64 64 64 59 60 59 58 +68 70 76 75 82 89 97 108 125 131 141 149 +152 153 156 161 162 168 172 176 174 174 169 177 +174 175 178 179 178 177 179 180 176 178 180 174 +173 168 161 158 148 138 129 122 109 96 82 72 +69 72 108 143 152 128 105 91 85 86 87 94 +112 138 144 147 160 123 94 68 61 47 56 60 +97 85 54 40 53 68 67 60 58 63 66 55 +71 76 80 63 61 61 48 50 60 53 77 110 +142 129 123 103 110 108 93 102 105 102 90 76 +76 78 63 62 76 88 122 119 97 121 121 78 +58 70 97 114 96 73 58 94 136 152 153 144 +124 115 137 171 182 192 185 197 207 208 208 191 +180 121 76 95 110 106 97 91 100 129 165 201 +174 60 36 38 47 49 50 50 58 50 38 36 +44 53 73 78 60 47 40 43 52 43 41 49 +46 56 55 64 49 67 66 76 79 75 44 42 +39 39 44 54 85 112 62 75 87 108 86 77 +68 82 89 102 107 111 118 117 119 119 128 129 +133 133 130 126 125 129 125 130 129 129 128 136 +138 136 139 138 138 139 140 141 141 144 142 146 +142 144 144 144 128 113 91 85 83 86 76 73 +72 77 84 92 96 104 104 106 106 107 105 112 +110 115 103 97 95 93 95 90 91 83 81 87 +89 90 98 102 111 118 117 120 125 122 115 99 +92 89 84 90 99 100 111 116 112 112 114 125 +139 138 144 146 138 137 96 52 40 53 47 45 +37 48 46 52 61 51 46 53 50 49 45 54 +59 54 58 69 75 78 54 72 78 83 61 76 +68 80 84 82 70 63 44 46 63 85 70 60 +49 35 41 44 43 54 97 137 155 156 130 118 +145 133 130 145 146 144 142 146 148 149 148 146 +155 155 152 152 163 161 153 150 152 151 150 153 +153 153 151 150 150 146 151 151 147 146 149 145 +145 147 147 150 148 144 144 145 145 144 146 149 +149 147 145 146 143 144 140 142 144 146 143 146 +146 145 139 140 134 136 132 129 127 124 127 133 +146 163 173 182 188 193 197 200 205 204 208 209 +209 211 211 211 211 211 210 209 209 209 208 208 +208 207 207 207 207 207 209 208 209 208 209 210 +210 211 210 210 212 210 210 210 210 212 215 214 +213 213 212 211 213 213 214 214 212 215 211 213 +59 59 54 60 53 55 53 64 62 66 64 68 +66 67 62 62 63 64 64 63 61 74 78 79 +80 97 99 113 123 131 142 148 152 155 156 162 +163 168 171 173 174 175 177 178 180 177 178 179 +181 177 179 178 180 179 177 173 172 166 160 154 +146 136 129 116 109 92 86 75 67 89 130 158 +136 107 91 79 86 84 92 102 125 151 147 158 +138 119 90 59 54 52 65 88 86 67 45 35 +40 48 46 53 63 78 76 51 65 75 84 49 +54 72 55 58 57 53 71 116 145 127 134 108 +106 101 89 102 111 114 101 86 94 85 67 58 +64 77 92 122 130 133 124 72 70 61 92 76 +65 64 63 82 111 123 121 119 118 123 145 173 +191 199 199 208 212 212 205 192 163 86 86 104 +112 88 97 99 117 148 196 187 95 38 37 39 +47 44 47 49 50 46 44 41 46 51 61 73 +70 48 38 41 43 48 43 53 53 55 56 62 +55 65 63 75 82 77 47 37 37 41 40 49 +82 108 63 82 81 99 87 74 72 81 93 102 +107 104 118 119 119 121 125 129 129 126 129 123 +126 132 122 125 131 129 132 131 136 135 140 137 +138 142 138 144 140 147 147 143 143 146 142 141 +128 115 106 100 109 100 97 88 90 83 82 87 +84 81 85 93 90 93 101 97 108 111 105 103 +102 102 96 99 96 87 89 89 97 93 101 110 +112 114 118 116 116 122 115 107 111 110 103 99 +107 116 131 129 125 119 124 138 138 143 146 145 +139 118 63 44 41 44 48 43 48 46 49 52 +54 50 43 41 41 46 52 58 51 49 64 75 +65 60 49 59 82 87 64 79 71 79 80 78 +61 58 42 42 57 87 77 64 49 38 46 48 +43 52 89 131 160 163 137 126 145 144 131 145 +152 149 146 149 148 147 149 145 160 157 154 155 +164 156 154 152 155 148 154 151 153 150 152 151 +152 152 150 148 150 147 147 147 143 152 149 146 +148 145 143 144 144 151 149 145 146 141 141 144 +139 142 147 145 144 144 143 142 140 143 140 139 +140 133 131 131 128 126 121 135 145 157 176 182 +186 194 198 201 205 207 210 210 214 210 210 210 +211 209 209 209 211 210 209 209 208 209 209 205 +207 209 208 209 211 209 209 208 209 210 211 210 +211 212 211 212 212 213 213 214 215 217 214 212 +212 213 215 211 212 213 212 212 +57 57 55 53 +52 57 52 59 59 56 62 62 68 62 64 64 +63 60 62 64 61 70 81 80 84 91 101 112 +123 129 141 146 151 156 159 162 164 169 173 176 +174 172 177 176 181 177 177 176 177 176 179 181 +181 179 179 175 172 165 159 154 147 136 130 119 +112 94 81 75 84 124 157 139 116 92 86 79 +83 90 89 115 139 150 157 137 132 116 87 64 +47 56 81 78 60 64 47 48 39 43 57 61 +75 77 89 54 67 77 72 53 52 88 62 60 +56 54 67 117 142 114 137 110 96 100 90 93 +104 99 102 111 105 97 87 76 81 77 88 103 +142 151 120 63 54 54 78 69 45 56 68 90 +117 128 131 130 132 133 139 144 190 211 217 217 +211 210 200 184 131 77 92 104 86 86 95 117 +147 182 197 132 50 45 48 43 43 55 51 46 +49 44 41 42 43 48 56 72 67 52 44 54 +55 44 47 53 52 54 57 64 53 53 61 73 +80 82 57 42 43 46 39 51 85 103 67 81 +82 97 89 82 76 82 92 89 101 105 114 122 +120 124 124 123 126 130 127 126 125 123 125 124 +130 128 132 132 137 134 138 135 136 136 141 139 +142 150 146 145 147 144 144 140 131 119 122 120 +124 124 116 110 106 98 94 95 94 97 96 106 +108 105 112 114 114 115 110 112 112 109 108 111 +105 107 107 107 110 108 107 111 115 122 125 127 +131 127 130 131 130 127 125 119 120 131 133 142 +131 128 131 143 146 145 145 138 134 84 51 42 +44 49 42 42 45 48 49 50 58 45 42 45 +42 43 46 55 49 52 70 73 65 56 53 60 +87 76 72 80 62 73 82 81 68 57 43 49 +54 79 79 62 49 36 37 48 42 49 81 123 +153 160 141 124 140 152 138 144 153 147 144 147 +150 148 147 145 157 156 156 156 157 156 153 154 +151 152 152 152 154 149 151 153 150 151 147 150 +152 148 149 144 144 151 149 150 149 145 147 148 +149 148 147 148 147 147 144 144 142 142 148 142 +145 144 144 144 144 144 138 138 136 136 133 130 +128 128 126 134 149 163 172 184 192 197 200 203 +207 208 211 210 213 212 212 210 210 210 209 210 +210 210 208 208 209 208 208 206 209 209 211 212 +212 210 209 208 212 210 209 210 210 212 212 212 +212 213 214 212 215 215 212 212 213 212 212 214 +212 213 211 212 +50 50 58 57 54 62 58 59 +63 60 60 64 69 71 65 62 64 62 63 67 +65 73 89 88 86 90 102 112 122 133 142 149 +149 153 158 165 165 169 171 173 174 175 172 178 +175 175 176 175 178 181 182 179 183 181 180 170 +168 162 160 154 144 140 133 119 112 89 84 89 +117 159 151 112 96 84 78 83 82 91 101 131 +140 146 137 122 127 111 83 60 48 62 84 58 +56 62 55 49 38 42 67 60 59 56 57 58 +69 86 70 50 55 89 84 62 60 60 61 124 +152 127 144 110 99 99 99 99 99 93 88 104 +118 109 106 99 91 85 94 108 124 134 117 85 +73 70 66 81 55 73 83 111 129 142 145 144 +135 134 132 124 175 217 224 224 212 205 188 154 +107 92 106 95 83 98 116 148 185 199 159 60 +44 40 47 42 50 48 45 51 49 44 51 40 +41 49 53 66 62 59 44 42 47 42 51 61 +54 57 54 59 62 56 62 66 71 79 61 42 +42 50 46 50 83 111 56 82 86 85 86 72 +76 78 91 95 100 101 112 112 117 119 119 123 +120 132 121 121 121 125 128 125 127 131 131 129 +131 140 135 134 134 134 133 138 146 150 144 148 +148 144 146 142 136 129 129 127 129 125 128 126 +123 115 115 110 107 110 110 114 116 115 118 123 +126 124 124 129 126 127 129 130 125 125 122 128 +127 127 125 129 135 138 144 148 146 149 155 157 +155 135 133 130 130 136 138 139 137 141 138 142 +144 146 140 137 117 56 48 44 46 46 51 45 +49 48 55 58 52 46 46 46 48 50 50 59 +59 56 70 72 56 55 55 68 90 72 76 73 +75 74 82 84 71 56 48 54 61 92 97 62 +46 42 43 46 43 52 80 121 151 163 143 120 +140 162 135 143 152 149 142 150 146 150 150 146 +155 156 156 154 153 155 152 157 151 149 151 153 +151 152 148 154 150 152 151 150 154 156 148 147 +147 144 147 147 143 145 145 147 150 148 149 149 +144 144 145 147 145 143 146 144 144 145 146 143 +139 146 140 136 134 139 132 130 130 123 131 136 +152 165 177 189 191 198 204 205 207 210 211 211 +210 210 210 210 208 209 209 212 210 209 208 210 +211 210 209 208 209 210 210 210 211 209 210 209 +210 211 209 211 212 212 212 213 212 213 213 214 +214 213 212 213 212 212 213 213 210 214 212 212 +54 54 53 57 55 55 59 59 58 64 58 58 +66 61 66 61 60 60 56 66 67 73 91 91 +94 86 106 118 123 133 141 146 152 154 160 161 +166 169 170 175 177 173 175 178 174 176 177 178 +175 181 182 182 176 181 178 174 168 162 157 155 +147 137 129 116 105 92 100 125 155 155 122 91 +80 75 77 86 90 94 113 134 148 143 122 122 +123 102 92 69 55 72 71 59 65 68 55 42 +44 58 56 46 55 59 46 52 62 86 68 54 +58 74 102 57 56 50 58 131 164 146 140 107 +75 79 98 96 99 93 96 87 100 97 107 111 +104 97 94 100 83 90 82 107 101 60 61 98 +72 102 103 128 149 152 145 140 130 133 127 124 +145 208 227 222 212 192 165 123 88 105 110 90 +94 114 143 159 198 183 85 39 41 46 49 58 +51 52 54 49 48 45 44 37 42 58 56 65 +58 61 45 41 47 48 50 60 56 63 55 63 +64 50 58 69 74 80 65 43 44 39 44 51 +78 104 67 74 80 88 85 75 78 80 86 97 +98 101 112 115 117 120 120 125 123 128 121 121 +122 124 126 126 127 126 127 126 134 135 133 135 +138 136 136 138 145 144 148 146 147 146 146 139 +142 139 136 133 127 128 128 124 127 126 123 128 +123 120 119 123 120 122 126 127 135 131 137 132 +130 132 140 148 145 142 141 144 151 152 153 152 +158 169 168 180 175 178 181 172 162 145 137 133 +130 136 142 143 147 145 143 142 147 142 139 124 +76 49 43 41 46 49 45 46 48 44 56 59 +45 45 48 46 50 47 50 59 61 61 79 64 +51 58 57 70 96 73 68 74 81 73 83 84 +77 69 46 49 59 77 96 61 50 48 50 46 +41 47 76 106 149 163 153 123 135 162 141 143 +154 151 144 148 147 150 150 149 157 156 154 153 +156 153 153 150 148 152 156 150 155 153 150 145 +152 152 149 152 152 152 148 145 148 146 147 145 +145 142 143 143 144 148 146 145 148 147 146 144 +146 142 146 147 145 142 142 144 150 143 140 138 +141 136 132 131 127 122 124 139 153 164 177 186 +195 199 203 204 209 212 210 213 211 211 213 210 +212 209 208 211 208 210 209 211 209 210 208 208 +208 213 210 205 212 211 211 208 210 212 212 211 +211 213 213 213 213 213 213 212 211 213 211 212 +212 211 211 212 211 212 211 210 +56 56 53 60 +63 58 60 51 61 56 61 61 64 61 62 59 +60 59 59 73 73 79 87 82 95 95 102 114 +126 135 139 145 150 154 156 166 164 166 170 176 +174 175 174 175 179 176 176 178 182 185 181 182 +183 181 176 172 170 165 156 156 149 141 128 117 +110 107 130 164 155 128 100 80 75 78 79 83 +87 109 127 140 152 122 118 117 117 99 93 74 +62 68 67 54 75 80 60 45 55 57 44 34 +51 46 45 48 63 96 75 53 51 69 98 66 +55 48 63 137 175 149 134 111 79 58 85 85 +96 102 105 101 108 98 98 95 85 88 97 86 +62 57 63 103 120 84 58 100 93 121 122 132 +155 155 149 137 133 136 128 117 123 178 220 218 +204 172 144 95 93 109 101 101 111 142 174 180 +189 125 56 48 44 50 48 55 57 53 53 53 +52 45 49 38 39 51 65 55 60 56 49 43 +45 48 50 60 64 60 63 56 65 53 57 59 +69 78 68 47 50 49 49 54 86 95 64 67 +74 83 83 80 80 83 79 98 99 102 112 115 +113 117 114 119 124 126 122 122 122 123 126 122 +127 126 129 126 127 134 130 136 138 136 140 139 +145 144 148 145 145 143 147 145 148 145 141 138 +128 133 126 124 123 125 125 129 130 126 124 123 +119 122 122 131 134 131 139 135 135 138 146 158 +164 168 169 177 172 178 183 171 177 198 193 199 +199 194 197 180 165 146 140 133 136 141 142 141 +145 149 142 142 144 135 132 100 59 44 46 43 +48 46 50 43 54 51 48 49 53 47 47 46 +43 45 50 60 50 56 66 52 56 55 59 75 +91 74 67 79 70 74 87 76 63 66 59 53 +56 81 95 69 52 36 39 47 45 50 82 105 +152 167 158 129 138 160 140 142 152 153 143 147 +148 153 148 147 158 156 154 155 155 152 152 150 +152 150 149 157 156 149 151 155 153 152 149 151 +154 150 151 147 147 145 150 147 147 145 144 148 +144 147 147 146 145 144 142 142 147 148 147 144 +142 142 149 145 141 137 139 137 138 134 129 131 +124 125 124 137 150 168 179 191 196 201 203 207 +215 210 209 212 212 214 211 211 210 210 209 210 +212 211 210 211 211 210 210 209 209 211 210 212 +211 212 214 212 213 212 212 215 212 213 213 214 +214 214 211 213 211 212 210 210 210 211 211 212 +211 211 210 211 +56 56 58 55 62 56 57 59 +59 61 61 60 66 71 63 70 60 57 56 68 +67 77 84 81 95 94 100 109 120 132 139 146 +152 155 156 160 163 165 170 173 172 175 174 176 +176 177 178 180 179 180 181 183 182 179 179 174 +172 165 159 159 151 137 126 121 120 132 148 161 +129 94 77 75 74 82 80 85 92 111 132 151 +140 112 112 117 113 98 99 83 69 70 62 62 +83 99 75 59 66 50 42 39 51 43 41 47 +69 98 74 59 60 58 96 92 47 53 61 135 +180 150 132 103 74 58 59 75 95 109 109 105 +108 106 91 81 77 84 100 86 58 58 59 81 +115 114 83 115 111 120 129 122 146 157 151 138 +133 134 122 114 121 165 216 210 185 148 107 93 +106 103 109 121 130 186 186 189 158 65 52 43 +54 50 44 52 55 51 55 48 46 44 39 41 +38 46 49 58 53 55 56 42 42 44 50 49 +63 62 48 52 65 60 55 59 66 73 61 48 +41 45 50 58 77 93 74 63 85 84 77 82 +75 72 76 88 96 96 107 115 113 118 116 113 +117 127 118 118 121 119 129 122 128 123 123 131 +128 126 131 130 134 134 138 138 145 144 149 146 +145 144 144 143 151 147 142 138 132 131 132 127 +124 126 128 126 125 130 125 124 120 119 121 127 +126 127 137 135 136 149 153 158 170 181 184 188 +175 190 192 179 185 202 198 196 203 201 196 178 +163 141 135 135 135 135 142 148 143 151 141 139 +135 130 120 67 45 43 43 40 42 46 48 51 +50 51 53 53 43 41 41 42 40 54 50 57 +50 53 53 45 50 55 64 74 101 74 67 74 +77 76 83 75 56 53 47 55 69 71 90 75 +52 37 40 49 43 49 79 99 156 166 160 132 +139 159 146 142 151 151 144 149 150 150 149 151 +153 155 155 154 158 155 155 154 148 149 154 152 +154 152 149 153 150 155 152 154 150 151 150 148 +148 148 154 147 149 149 146 147 152 148 147 142 +147 145 147 143 146 149 148 147 144 145 147 144 +143 142 142 135 132 131 133 133 129 123 129 139 +152 165 181 189 198 203 207 211 212 210 213 214 +209 212 210 210 210 211 209 209 210 210 209 209 +210 210 210 208 210 210 212 211 211 210 211 212 +211 213 212 211 212 214 212 215 213 212 211 213 +212 211 210 213 210 211 211 210 209 212 208 207 +52 52 56 54 58 54 55 65 57 61 64 66 +67 58 65 63 64 52 58 62 73 76 83 84 +92 91 98 113 121 132 138 146 149 154 157 161 +160 164 173 175 174 175 176 178 179 175 175 182 +176 180 180 182 179 178 179 173 166 167 161 155 +152 136 125 123 137 146 150 132 99 74 72 71 +76 81 81 84 99 128 141 154 117 102 103 116 +106 102 99 63 64 65 49 64 111 125 65 61 +59 46 38 38 50 41 39 50 79 102 80 61 +55 58 93 104 52 44 69 143 182 147 133 108 +71 60 51 73 80 91 108 108 119 117 107 91 +84 91 94 75 59 62 55 76 94 112 99 108 +130 124 131 126 142 154 147 141 136 129 115 119 +129 171 208 201 152 109 91 106 113 105 140 148 +174 188 188 168 86 46 45 55 57 53 58 54 +53 50 53 50 53 40 44 49 45 47 45 53 +61 47 60 53 42 43 46 49 54 57 53 60 +66 53 63 66 68 78 72 58 46 46 48 56 +71 86 68 56 85 79 82 79 66 66 71 83 +86 95 103 109 111 111 116 111 115 124 117 119 +124 121 123 120 126 122 125 129 128 128 131 128 +128 133 139 137 137 147 143 142 144 144 146 145 +148 147 143 137 137 132 130 130 123 125 127 126 +118 128 130 130 125 118 120 122 125 125 132 129 +133 146 157 156 159 159 166 178 173 180 177 163 +165 175 185 177 186 187 181 174 149 136 130 141 +139 142 144 151 153 150 140 139 136 133 91 52 +44 47 47 46 41 45 46 47 54 49 52 54 +47 42 41 41 43 55 53 60 56 61 47 53 +50 54 68 77 107 76 61 77 77 79 81 74 +62 55 51 66 75 60 89 85 55 44 42 45 +45 47 78 103 158 163 159 143 136 158 146 144 +154 153 143 146 150 150 151 151 156 158 156 156 +155 152 155 157 154 150 155 155 150 149 150 153 +150 154 156 149 147 155 150 151 150 151 149 145 +146 150 150 141 147 146 147 147 146 146 142 142 +143 150 148 141 143 140 143 145 139 143 143 143 +133 135 130 126 123 122 123 143 156 170 181 191 +200 204 209 211 213 213 213 213 208 211 211 210 +211 212 207 210 211 212 213 210 210 211 212 211 +210 211 212 212 211 212 213 213 213 213 213 214 +212 214 212 213 213 212 212 211 212 211 208 209 +210 209 210 210 209 210 209 207 +53 53 56 58 +55 53 59 61 57 61 55 64 57 59 62 63 +64 55 53 60 69 83 86 90 91 98 99 110 +119 126 138 146 155 153 156 159 162 168 167 169 +173 174 176 174 179 178 171 177 180 182 177 183 +179 177 174 174 170 167 162 165 155 129 129 134 +144 144 124 91 75 70 70 73 76 77 83 90 +108 130 150 143 107 103 104 107 98 103 85 65 +74 74 55 78 140 131 69 66 45 39 38 45 +51 37 41 66 100 98 68 70 58 57 81 107 +62 45 66 150 176 154 129 109 78 49 44 66 +81 87 89 89 108 121 120 107 93 92 98 71 +58 82 58 67 89 95 96 105 140 128 132 129 +146 155 148 136 134 119 115 141 156 192 208 184 +104 85 107 114 113 130 161 165 179 171 162 110 +50 46 51 50 43 49 52 53 48 51 52 53 +49 47 45 48 40 47 43 51 60 54 53 57 +48 43 43 47 54 59 56 57 66 62 62 62 +70 75 67 62 44 41 42 56 65 81 71 52 +90 80 86 81 58 69 77 86 90 101 105 106 +110 113 116 113 119 120 117 119 118 117 121 125 +118 122 120 127 124 128 135 126 128 131 136 132 +135 143 136 145 144 143 146 150 148 145 147 142 +138 139 138 134 125 123 123 122 119 124 127 131 +129 127 133 125 125 127 127 125 130 144 148 151 +149 152 157 158 161 167 161 152 156 151 159 157 +167 164 162 160 145 132 137 145 143 142 151 149 +150 145 143 138 138 117 59 41 42 47 39 46 +42 45 43 46 67 49 46 52 43 43 43 41 +40 49 45 58 72 60 44 44 42 53 57 81 +111 76 66 85 81 87 85 72 72 62 55 67 +60 73 87 88 55 46 48 44 44 50 79 95 +149 167 155 147 140 152 151 147 158 153 144 150 +153 149 148 151 155 158 159 155 154 159 154 153 +153 154 156 152 156 150 153 154 149 155 151 150 +153 151 151 156 148 148 152 149 147 148 151 150 +146 149 143 145 145 141 143 146 145 148 143 145 +140 143 143 148 141 140 142 137 138 133 129 128 +131 120 123 141 157 171 183 195 201 206 209 211 +214 215 213 212 212 212 210 210 212 213 208 209 +210 212 210 211 209 211 211 213 211 212 211 211 +211 213 212 212 214 214 212 213 213 213 213 213 +212 212 209 208 208 209 209 211 208 208 209 206 +206 207 206 208 +58 58 55 54 51 52 53 53 +58 59 57 64 62 64 65 58 58 51 59 61 +68 84 83 87 91 92 96 108 123 129 138 145 +149 153 158 163 159 166 168 174 176 172 176 179 +180 177 177 181 178 179 179 181 181 177 175 174 +169 167 171 176 166 158 148 136 145 125 99 72 +68 65 66 71 76 79 83 105 129 136 158 128 +108 104 109 106 97 88 68 65 76 87 63 101 +152 118 79 56 38 41 37 45 43 40 49 82 +102 98 55 79 70 53 64 109 79 60 87 156 +169 150 122 125 101 67 57 59 89 80 81 74 +68 88 127 127 117 105 90 87 81 83 76 71 +80 89 82 102 141 137 140 133 138 161 149 133 +127 114 118 161 191 205 206 136 77 99 116 119 +138 150 171 186 156 156 111 59 43 46 51 55 +49 43 47 53 55 59 58 53 51 50 42 44 +40 46 40 47 55 48 55 53 49 51 48 45 +47 57 66 56 55 57 61 63 68 69 69 67 +56 44 47 54 60 70 75 54 84 79 78 77 +57 74 80 81 91 98 95 105 109 104 114 112 +119 115 115 117 117 118 124 119 122 122 120 124 +125 127 131 125 124 127 133 131 138 144 138 144 +143 143 148 149 145 145 142 141 137 141 135 133 +129 129 133 124 122 124 123 122 122 129 130 132 +129 127 125 128 128 141 143 142 143 148 152 149 +152 155 156 152 148 143 145 141 152 151 154 142 +134 129 140 142 145 144 149 148 150 142 141 136 +128 84 46 49 42 40 40 48 41 46 46 48 +57 46 46 49 42 48 46 38 46 52 44 55 +75 57 49 46 42 58 64 81 108 77 62 81 +76 93 94 70 64 59 62 72 58 65 91 84 +49 49 52 46 53 49 82 94 145 167 159 150 +144 151 158 144 159 153 147 146 149 150 146 152 +154 155 155 153 156 156 156 158 156 155 160 157 +155 151 152 150 152 151 152 150 151 152 151 153 +150 147 149 149 150 151 155 147 147 146 141 145 +146 142 148 142 148 147 142 145 144 144 144 146 +141 142 137 135 131 135 130 125 126 120 126 139 +157 171 184 196 203 207 211 210 215 215 213 213 +214 213 211 210 211 209 210 210 209 213 213 212 +213 210 212 213 213 213 213 212 212 212 211 213 +214 215 213 213 212 213 210 212 211 209 209 207 +209 206 208 210 207 204 206 205 206 205 206 205 +58 58 55 50 51 58 51 59 57 55 51 61 +59 54 62 58 54 53 54 61 70 80 80 88 +95 94 96 106 120 129 138 145 151 154 156 159 +159 168 168 172 171 175 176 180 176 178 179 182 +179 182 179 181 183 184 178 175 173 167 167 172 +180 180 154 139 120 104 82 64 62 64 69 69 +79 79 89 115 141 162 135 111 105 101 106 109 +109 79 55 60 63 83 69 123 149 97 71 60 +50 51 52 47 47 41 45 82 105 94 58 69 +98 74 51 104 96 63 98 167 169 136 112 122 +132 88 52 55 74 84 89 87 64 63 86 124 +130 113 89 106 115 82 94 76 103 99 98 106 +139 154 151 147 132 153 157 137 120 110 124 176 +214 212 189 91 94 117 125 137 172 148 202 187 +150 121 52 51 45 52 48 46 46 44 48 52 +53 56 54 59 56 50 47 45 44 49 50 52 +57 53 61 53 54 52 48 48 50 58 72 67 +58 56 59 62 68 63 72 59 48 47 45 54 +74 84 88 59 78 85 83 72 57 67 72 77 +90 93 98 103 108 106 111 110 118 113 114 113 +117 112 120 120 119 123 127 125 127 125 131 132 +130 126 131 134 130 137 140 141 141 138 144 146 +147 145 144 140 139 140 136 133 133 132 134 126 +125 122 123 121 122 126 126 131 130 131 128 125 +125 129 140 139 140 145 142 141 149 150 150 147 +146 140 144 142 143 144 147 136 135 136 141 141 +148 148 152 152 144 137 137 130 104 61 46 41 +48 49 47 48 45 45 44 50 60 47 47 51 +48 51 46 47 52 54 43 55 69 52 47 46 +46 57 66 80 108 69 61 71 70 96 84 71 +66 63 67 72 61 56 84 94 58 44 49 44 +53 50 75 96 146 165 158 154 150 152 157 143 +159 154 146 150 151 147 150 154 153 157 154 154 +155 156 154 153 154 150 153 150 155 152 153 154 +151 155 152 151 153 151 149 150 152 149 148 148 +150 146 152 148 149 147 147 145 145 144 149 146 +144 146 143 144 143 144 146 143 145 147 139 137 +135 136 131 129 125 122 126 138 157 169 187 200 +206 210 212 213 215 215 215 214 212 213 213 211 +212 211 211 210 209 211 211 213 214 212 213 214 +213 213 212 213 213 213 214 215 214 215 214 214 +211 211 209 208 209 208 208 209 206 205 205 206 +207 205 205 205 204 204 204 205 +59 59 54 49 +56 54 56 58 58 57 51 57 60 59 54 55 +57 53 55 64 67 77 85 88 88 90 90 104 +114 128 137 143 150 154 161 161 164 166 169 171 +174 174 178 179 177 179 177 177 180 179 181 178 +181 181 178 173 173 166 164 161 163 157 138 128 +112 95 79 66 65 67 71 76 79 87 109 136 +159 148 107 101 98 102 112 115 98 69 50 55 +57 54 79 141 145 88 54 44 43 48 54 43 +48 42 56 88 110 81 48 65 105 88 57 96 +92 66 124 179 157 116 110 105 139 114 63 58 +79 80 92 100 65 50 74 96 129 128 105 120 +147 78 114 106 125 116 110 95 127 163 159 159 +144 144 157 137 115 109 133 178 205 203 159 93 +109 125 133 173 168 175 213 177 147 80 51 56 +53 58 58 56 58 53 59 56 55 64 56 57 +54 56 47 49 45 49 56 54 52 50 50 45 +54 55 51 51 51 49 57 66 55 56 54 66 +71 71 76 59 50 45 52 57 74 82 86 65 +85 86 79 66 58 68 69 71 78 90 96 105 +109 105 110 111 109 111 113 114 114 114 118 117 +119 120 127 122 122 126 129 129 127 129 129 131 +141 138 135 140 137 143 139 143 146 145 147 142 +141 138 138 132 134 133 134 128 128 125 126 121 +126 121 124 126 130 126 131 125 133 124 132 137 +138 139 142 136 145 145 146 139 142 142 141 136 +139 136 133 130 137 144 149 150 147 146 151 148 +138 134 134 122 98 61 42 50 46 47 48 48 +43 45 45 56 63 46 48 46 50 51 45 45 +62 50 45 57 68 54 49 54 44 57 69 85 +102 66 61 74 68 97 82 73 79 68 68 64 +59 56 94 94 50 45 56 45 46 47 70 107 +146 165 157 159 146 154 161 142 158 155 147 148 +154 148 154 154 154 156 158 154 156 153 155 151 +148 152 154 149 155 154 150 152 155 150 155 149 +155 151 154 148 147 154 149 145 149 147 151 152 +148 147 145 146 146 142 146 148 144 145 143 146 +147 145 144 140 145 140 140 135 131 130 132 126 +122 120 123 142 160 171 190 201 206 211 214 214 +216 215 214 213 212 212 212 210 212 211 209 211 +212 211 214 214 214 216 214 214 214 214 213 214 +214 213 213 216 215 215 213 213 211 209 208 209 +210 208 206 206 205 204 204 205 205 202 203 204 +205 203 205 204 +52 52 46 49 50 57 55 54 +53 54 58 56 59 56 56 54 55 56 55 65 +74 83 81 88 95 107 91 100 114 129 135 142 +147 154 156 159 160 164 167 168 175 177 178 177 +179 177 179 178 182 180 179 182 184 180 181 173 +168 170 157 154 154 139 131 121 103 92 74 69 +73 68 75 76 79 98 133 152 158 127 103 97 +100 108 115 115 102 74 55 65 51 49 99 150 +139 92 50 39 36 46 53 49 42 57 67 102 +109 72 46 55 88 90 74 86 92 71 139 178 +143 109 107 85 135 144 89 74 78 95 108 115 +77 61 58 83 84 125 129 117 118 83 132 131 +135 124 122 80 109 153 158 171 164 136 150 133 +113 108 127 176 189 196 141 101 127 135 160 171 +171 204 186 144 101 52 46 48 57 54 45 52 +52 51 48 52 60 53 53 54 63 52 58 46 +51 53 57 53 51 52 47 48 51 55 51 53 +55 53 51 63 67 61 56 70 70 64 70 59 +53 52 45 52 65 81 85 63 67 85 67 75 +61 62 64 76 79 81 92 100 102 105 103 109 +107 107 110 115 114 118 116 123 119 120 127 123 +124 123 131 131 134 134 133 137 134 137 135 136 +132 138 138 139 141 141 144 140 142 143 135 133 +138 132 133 132 131 131 127 122 129 124 126 124 +121 121 125 126 126 124 129 135 135 132 134 136 +143 142 144 137 141 139 136 131 130 127 128 134 +137 146 150 148 145 146 145 147 138 134 125 98 +78 49 39 43 46 48 44 53 49 48 50 60 +57 50 53 53 62 52 47 52 58 51 48 56 +65 56 54 47 46 58 69 86 100 68 58 77 +72 97 87 68 78 67 68 60 58 59 90 97 +56 43 55 56 53 50 65 113 142 166 158 162 +147 150 160 142 156 154 149 149 154 148 159 152 +152 153 158 154 152 154 155 158 151 152 152 153 +155 153 153 154 154 154 154 148 154 149 153 146 +152 146 148 150 151 148 146 150 150 145 146 144 +147 144 144 142 144 145 143 140 140 142 137 141 +144 140 140 136 132 133 132 125 121 124 124 139 +156 174 191 199 205 209 213 216 215 215 216 213 +212 214 212 211 214 212 211 210 213 213 213 211 +215 214 215 215 215 214 213 215 216 213 213 215 +214 213 212 211 208 207 206 206 206 205 204 204 +205 203 203 204 205 204 204 205 203 204 203 205 +48 48 51 47 50 50 54 50 53 52 55 52 +58 54 56 53 54 52 54 58 68 82 88 90 +91 90 89 103 112 128 136 142 147 149 153 159 +159 162 168 172 175 179 176 180 179 178 180 179 +180 178 177 178 182 180 177 174 172 166 162 157 +151 138 126 115 106 88 76 75 65 67 72 75 +79 110 140 158 131 111 97 102 101 113 124 112 +88 71 47 53 49 62 111 158 138 80 44 43 +52 51 54 46 43 47 82 110 105 69 44 54 +58 90 79 87 86 82 155 179 127 113 103 67 +112 148 120 91 89 102 120 122 93 69 63 62 +57 87 132 135 109 96 138 131 129 125 129 101 +97 122 152 178 172 125 142 141 117 113 129 169 +196 199 143 134 149 167 176 154 208 198 144 88 +60 55 53 55 56 56 54 54 53 49 55 59 +62 61 54 54 75 58 54 51 52 54 57 53 +58 56 50 47 60 61 62 60 59 61 53 63 +65 64 54 63 69 74 74 74 62 60 51 48 +64 68 87 65 63 89 78 80 69 60 69 81 +78 78 87 96 99 102 100 102 103 104 110 115 +110 119 111 122 122 117 123 120 126 124 132 133 +130 130 131 132 136 134 138 139 138 139 141 139 +136 143 141 142 141 144 137 135 133 134 131 131 +134 130 128 129 130 127 123 125 122 122 119 118 +119 123 124 127 131 126 129 134 137 139 129 126 +128 125 125 126 122 129 134 148 153 150 150 147 +141 149 145 140 135 131 92 74 77 51 38 38 +50 45 44 42 47 47 43 57 49 39 45 55 +63 48 46 58 54 49 54 63 58 60 51 48 +43 59 74 85 92 71 64 78 70 93 86 60 +77 79 60 58 56 62 85 105 63 46 52 43 +51 43 57 101 136 166 163 159 144 150 163 143 +160 153 149 151 154 149 155 151 158 155 153 153 +156 153 153 153 155 153 151 152 157 154 159 156 +151 155 152 151 149 150 150 152 149 151 151 151 +149 146 147 149 147 150 148 143 145 142 147 144 +143 141 141 144 137 142 137 137 141 137 135 129 +131 130 134 123 121 115 123 139 161 177 194 199 +206 213 215 214 217 217 216 215 213 213 211 211 +213 212 213 212 212 214 212 212 214 216 215 217 +215 216 216 214 214 214 212 212 211 211 208 211 +207 207 205 205 204 205 204 205 203 205 202 203 +205 205 207 203 205 204 205 205 +64 64 51 50 +44 47 51 48 53 54 62 63 56 57 59 51 +52 55 52 63 72 81 95 94 87 83 85 104 +113 124 131 143 145 150 154 157 160 162 167 170 +176 177 179 180 178 176 176 180 179 178 181 179 +182 180 179 177 172 169 159 151 148 142 128 120 +106 90 81 70 68 67 65 71 89 128 154 150 +109 100 98 99 102 115 121 101 73 59 53 59 +55 75 120 160 139 75 37 37 48 50 46 34 +34 56 94 110 93 67 54 52 48 83 83 87 +84 84 168 182 133 128 98 56 88 128 139 109 +108 112 123 119 100 69 74 65 65 55 98 129 +133 131 138 117 107 112 133 128 101 75 134 160 +146 110 143 148 118 118 140 174 204 201 150 157 +160 193 145 199 215 175 101 62 57 53 51 54 +56 54 58 51 53 56 59 55 60 60 66 59 +63 54 50 44 54 59 62 55 55 51 53 46 +52 61 60 61 68 54 54 61 71 67 58 55 +61 70 66 66 57 58 49 52 60 67 79 70 +58 88 84 82 67 54 70 72 74 72 83 86 +96 100 107 107 104 105 103 107 111 115 111 119 +117 117 116 118 121 123 126 131 131 126 128 130 +135 136 132 135 133 138 142 134 140 144 142 142 +139 138 139 138 132 135 133 132 129 135 130 129 +134 133 127 126 130 121 116 117 118 114 116 119 +120 118 119 124 123 127 120 117 117 123 113 121 +128 134 151 156 149 154 147 144 143 142 141 140 +129 111 57 84 65 53 44 40 44 45 43 38 +38 42 48 51 46 42 48 57 56 55 59 58 +50 50 52 55 58 57 50 46 48 62 81 95 +88 69 73 85 64 91 84 63 80 69 62 53 +56 69 79 94 61 48 48 46 47 52 61 104 +136 159 166 156 139 153 157 145 155 154 148 149 +151 150 157 151 154 155 152 150 154 151 156 151 +151 152 152 154 153 155 150 156 155 155 154 151 +149 153 155 155 151 153 150 149 150 148 151 148 +147 148 148 151 144 145 145 147 143 141 143 142 +140 142 140 138 137 139 134 136 131 126 130 120 +118 116 125 142 155 177 195 202 208 214 216 217 +216 218 216 214 213 213 213 211 213 211 212 212 +213 213 213 215 215 217 216 217 216 215 217 215 +214 211 211 211 210 208 208 206 205 206 205 206 +204 204 204 205 205 204 204 204 206 206 207 207 +207 208 207 208 +57 57 51 51 51 52 53 50 +48 49 58 52 56 53 57 49 59 54 54 62 +78 88 93 93 88 86 85 98 113 124 131 138 +146 145 152 156 159 159 170 173 174 176 179 180 +177 179 179 178 177 176 181 180 181 178 179 173 +169 166 157 153 148 136 129 118 108 86 82 66 +65 64 69 74 95 135 166 130 104 94 96 105 +104 111 110 87 63 48 49 60 57 75 113 158 +134 70 43 37 49 51 51 42 36 60 103 91 +67 56 49 43 40 53 79 94 87 115 182 183 +138 137 86 55 75 108 145 126 98 110 123 133 +102 66 62 68 74 50 67 96 142 152 136 124 +94 88 120 142 114 52 120 144 131 104 141 146 +121 123 146 183 209 192 167 143 179 158 169 220 +193 118 57 52 48 52 54 45 47 50 52 57 +59 55 54 52 49 55 52 55 48 44 45 46 +39 51 53 58 48 48 52 47 44 55 61 59 +59 66 57 54 56 66 66 58 67 62 63 68 +54 52 47 53 57 63 81 78 57 76 82 74 +61 57 64 64 71 71 84 83 88 99 100 107 +107 103 101 101 110 108 110 111 119 116 118 122 +118 122 123 129 128 127 130 129 134 133 131 134 +140 137 135 139 138 141 143 139 138 138 142 140 +138 136 133 134 131 133 130 129 129 130 126 127 +125 125 126 125 126 117 116 116 116 114 118 118 +111 116 114 114 119 119 123 133 138 148 160 150 +150 148 143 141 144 148 143 137 123 69 54 88 +60 40 43 48 44 39 37 42 45 47 47 48 +44 48 54 60 53 57 68 55 45 53 55 48 +50 53 57 47 43 60 87 108 91 68 69 82 +69 99 93 70 79 68 62 63 67 61 84 88 +63 48 54 52 52 52 59 101 140 159 171 159 +145 150 161 148 156 151 147 148 145 155 155 152 +155 155 153 153 153 153 156 155 152 153 152 157 +156 149 151 152 152 156 150 156 153 153 157 154 +155 154 152 149 148 148 148 148 147 149 152 142 +149 144 143 146 140 147 141 145 142 142 143 144 +140 139 138 135 132 132 125 122 121 116 119 133 +156 176 194 200 208 215 218 217 218 216 216 214 +214 212 213 213 211 213 213 210 213 214 214 215 +216 217 216 217 217 216 217 213 215 212 210 209 +210 208 206 204 205 204 205 205 206 205 204 207 +205 208 208 208 207 207 208 207 210 209 207 210 +49 49 48 48 50 55 53 56 48 53 54 45 +51 50 47 46 50 52 55 68 81 90 96 93 +91 86 88 97 111 124 129 139 149 144 149 155 +157 160 169 170 174 177 176 179 177 176 178 177 +179 183 183 180 183 184 177 175 172 160 161 155 +148 139 130 118 109 89 79 66 63 62 68 75 +99 134 162 125 100 90 100 109 110 106 101 69 +49 42 52 61 60 88 114 149 116 65 46 46 +46 52 46 46 39 71 99 94 64 59 54 49 +40 44 62 79 97 134 186 173 136 148 103 66 +60 91 144 142 115 115 119 128 110 71 76 75 +84 56 75 120 138 131 142 132 121 107 96 117 +102 58 110 137 122 86 122 141 117 122 163 195 +206 174 134 153 179 156 202 199 140 60 47 46 +45 47 47 48 43 47 52 47 47 52 51 54 +58 60 54 65 57 56 44 42 40 50 56 55 +50 54 55 51 70 53 57 55 57 67 72 54 +50 67 59 59 61 56 64 63 56 51 52 51 +53 62 75 74 60 73 88 81 63 56 59 71 +75 77 79 81 84 92 97 105 104 104 104 105 +110 105 105 106 115 118 118 117 117 126 124 126 +128 132 130 128 131 131 134 132 141 137 137 141 +138 145 141 143 141 140 136 136 132 134 135 135 +133 128 128 132 133 129 128 130 133 132 129 132 +128 126 121 120 117 118 122 116 124 124 125 124 +126 135 143 148 152 155 154 155 151 143 139 136 +140 140 137 136 97 49 56 85 59 43 43 45 +45 50 39 46 44 44 45 53 48 51 55 51 +51 75 67 55 52 63 54 50 56 53 65 40 +45 58 74 115 91 61 71 76 67 93 102 75 +71 69 64 60 63 62 78 90 66 46 61 72 +55 55 60 100 135 165 176 162 148 148 163 151 +154 150 150 145 148 159 156 149 154 157 156 154 +151 155 160 157 155 149 154 153 154 153 154 156 +154 155 151 154 155 158 155 157 157 155 153 154 +148 150 151 150 150 148 148 145 148 142 145 142 +146 142 144 143 143 141 138 142 142 139 137 130 +132 127 125 123 118 111 117 132 156 175 197 202 +210 215 218 218 218 217 216 214 213 213 213 217 +214 214 212 214 213 213 215 215 216 215 217 217 +217 215 214 213 212 210 208 209 209 208 206 204 +205 205 206 206 207 206 208 208 208 207 209 207 +208 208 210 210 208 210 209 210 +53 53 51 50 +48 53 55 58 52 45 50 51 51 48 47 47 +48 52 54 75 87 95 95 97 93 93 93 100 +113 124 130 138 140 144 146 154 154 159 166 172 +175 178 174 177 180 179 177 181 178 180 177 185 +181 179 177 173 172 163 160 158 149 142 130 120 +110 89 83 69 63 64 74 77 95 137 161 115 +97 94 98 104 114 104 86 61 55 52 51 56 +66 91 125 139 90 68 46 43 47 40 43 38 +51 78 98 88 63 66 62 51 51 42 47 61 +99 152 186 149 125 155 122 92 58 87 131 153 +124 114 127 128 112 85 90 88 93 84 106 129 +110 118 128 136 127 125 101 98 88 78 108 133 +123 82 102 136 109 116 166 203 209 156 130 181 +155 206 199 137 66 51 44 51 53 49 55 60 +58 56 51 52 47 54 55 57 55 56 53 61 +57 49 44 51 44 53 55 55 46 41 50 48 +54 48 49 55 56 54 58 53 52 57 53 59 +60 54 57 63 61 54 57 47 53 54 69 67 +55 67 79 84 65 65 51 72 68 78 82 78 +84 91 89 90 95 101 98 102 110 102 107 105 +113 114 114 116 122 121 125 126 128 126 128 130 +134 129 132 134 138 136 138 135 136 138 140 140 +134 139 142 137 135 134 140 132 135 134 132 132 +137 130 128 132 133 133 135 140 131 136 135 129 +128 128 133 132 131 138 139 139 148 145 152 148 +153 148 149 153 147 135 139 139 145 141 136 126 +64 46 59 87 53 48 46 42 47 42 44 47 +42 48 50 62 56 58 56 49 56 78 65 57 +50 57 52 55 52 57 64 42 48 56 78 116 +94 73 78 79 70 99 92 75 64 74 55 59 +72 64 77 98 70 53 63 47 51 52 50 96 +133 169 170 163 149 149 163 150 155 145 147 142 +151 155 155 152 155 155 159 155 150 154 155 155 +154 153 157 156 156 152 149 156 156 153 155 156 +157 152 155 157 153 155 151 151 154 150 150 150 +149 146 151 145 145 144 147 146 143 142 142 144 +138 143 145 138 144 138 134 131 125 135 126 122 +117 117 121 134 154 177 194 204 211 214 217 218 +216 216 216 215 212 213 212 215 213 213 213 213 +214 215 215 215 214 216 215 215 214 215 214 211 +213 208 208 208 208 206 205 207 207 206 208 207 +209 209 208 208 211 210 209 208 210 209 210 210 +212 212 209 212 +45 45 46 48 50 53 53 51 +51 51 52 52 51 48 49 49 45 48 60 84 +110 98 98 101 97 96 101 109 114 121 128 135 +137 146 148 152 155 160 169 169 175 173 174 177 +177 176 176 178 177 180 181 178 180 181 176 173 +170 168 159 155 150 144 133 124 109 96 73 67 +63 64 68 79 96 139 161 116 95 94 96 105 +94 78 74 65 73 54 52 51 70 88 121 125 +65 55 51 52 49 43 35 38 47 78 88 77 +55 53 65 60 57 43 37 52 108 162 188 137 +123 152 132 124 83 61 101 152 138 124 138 120 +117 96 96 104 113 122 116 101 84 98 118 124 +119 132 106 84 74 84 119 139 134 107 102 128 +107 111 151 201 206 165 167 182 186 216 161 81 +53 54 50 55 50 53 53 52 52 49 53 52 +50 53 58 61 57 57 59 65 60 54 53 50 +53 53 56 60 55 51 56 60 52 55 50 55 +59 63 61 60 59 57 62 63 66 58 62 66 +69 65 59 48 54 54 67 66 54 65 79 83 +71 61 55 61 70 84 85 78 87 90 93 87 +99 100 104 103 107 110 107 110 112 114 121 119 +123 123 126 129 128 124 128 131 133 136 135 133 +136 135 139 141 135 139 139 133 140 139 138 134 +133 141 133 133 139 135 135 138 136 131 133 134 +136 140 141 142 139 145 143 143 144 145 151 142 +147 145 148 149 149 154 154 153 149 157 156 149 +138 138 140 144 139 141 135 94 45 46 62 80 +53 44 48 44 42 43 43 51 46 44 45 60 +55 48 57 52 53 64 69 53 52 52 48 49 +44 49 60 40 45 53 73 112 91 68 77 75 +69 93 95 74 65 72 60 61 62 57 77 95 +81 47 49 47 53 49 48 92 135 168 167 164 +154 146 164 155 153 147 147 145 154 154 150 151 +155 156 156 152 153 154 156 152 151 152 151 152 +155 153 156 152 153 156 151 151 155 156 155 154 +154 153 149 152 152 148 149 151 145 149 146 148 +143 146 145 143 143 139 142 143 142 140 141 141 +143 136 139 132 127 126 124 124 123 117 119 133 +156 175 193 205 211 216 218 217 219 217 218 218 +215 213 214 215 215 213 215 215 217 215 215 214 +215 216 217 214 213 214 212 213 210 211 208 207 +209 206 208 210 207 209 209 208 208 207 208 209 +208 211 209 211 210 211 211 211 210 211 211 211 +61 61 50 46 53 52 49 53 48 52 49 47 +52 51 47 50 45 52 63 84 101 98 105 97 +106 94 102 108 118 124 131 134 141 142 147 150 +156 162 163 170 173 176 177 174 179 177 178 177 +176 177 178 180 183 180 178 176 172 167 165 154 +147 143 130 125 110 90 86 71 61 67 63 73 +97 134 150 121 101 86 97 98 87 87 84 77 +72 58 58 67 69 74 114 102 54 58 49 53 +50 42 35 41 55 81 96 83 54 52 65 69 +53 46 48 65 125 162 184 133 128 139 118 144 +114 76 72 137 155 135 133 122 106 104 96 117 +134 127 91 80 82 81 128 125 116 137 113 71 +55 59 111 137 133 112 105 139 121 121 150 200 +215 194 195 186 213 186 123 55 49 50 46 51 +46 47 52 43 46 50 45 49 46 47 55 58 +55 52 49 58 58 53 48 43 47 48 59 59 +52 51 50 53 49 51 56 49 52 58 56 53 +56 56 56 50 57 58 57 63 60 63 61 43 +46 50 60 65 60 56 76 68 71 56 55 55 +60 72 73 69 82 83 88 85 90 89 102 100 +101 101 105 110 112 110 115 119 119 123 126 131 +128 124 127 130 134 130 129 130 136 134 139 137 +135 138 140 138 139 136 136 136 137 137 138 135 +135 135 136 139 133 136 135 139 147 145 149 147 +149 147 150 155 152 159 155 155 153 155 158 150 +153 156 158 151 152 155 148 148 142 137 143 147 +142 136 123 63 40 45 76 68 47 62 48 41 +42 43 39 48 49 44 50 58 52 50 60 54 +55 55 60 55 49 52 55 56 47 51 56 43 +43 58 78 115 94 70 83 80 73 93 88 72 +71 72 65 66 66 68 78 86 79 51 49 50 +56 54 46 88 134 163 170 159 155 145 162 156 +150 144 144 146 159 155 152 152 156 154 158 155 +155 155 154 153 151 154 152 153 155 154 153 151 +156 153 149 155 157 149 153 151 152 149 151 151 +150 144 148 148 150 147 146 149 146 147 144 144 +149 144 139 141 143 143 139 139 138 136 132 132 +127 126 123 119 121 114 117 130 157 180 198 205 +216 216 218 217 219 217 218 217 217 213 213 214 +214 212 216 216 217 216 215 215 215 216 217 213 +210 212 211 209 209 208 209 210 208 207 208 210 +211 210 212 210 209 208 210 212 208 209 210 211 +209 210 211 210 211 208 210 208 +53 53 52 50 +47 49 54 48 46 49 50 47 48 48 48 48 +42 51 71 87 99 104 108 103 100 98 104 111 +114 129 133 135 136 146 143 150 154 160 162 171 +173 173 174 177 178 174 179 174 177 176 178 182 +177 180 180 171 170 165 163 161 150 144 134 121 +109 94 79 70 64 73 68 74 89 121 140 129 +109 92 99 96 88 96 89 74 65 59 71 79 +73 77 101 86 45 54 55 44 45 46 39 41 +52 86 97 74 51 56 63 71 52 56 66 65 +105 157 188 134 129 136 94 117 139 117 82 107 +161 154 132 126 103 108 101 126 130 108 66 71 +86 86 124 131 116 147 122 64 54 55 93 133 +124 102 114 139 124 131 172 213 219 205 181 213 +193 126 80 55 44 40 41 45 45 52 57 53 +48 49 53 48 44 46 47 62 56 53 47 58 +58 50 49 38 50 51 65 51 46 46 51 50 +54 49 48 49 47 53 55 57 60 61 57 59 +54 60 59 65 58 62 55 47 43 53 54 63 +63 56 67 65 75 61 57 52 59 67 73 70 +69 79 84 89 92 88 97 105 102 102 108 109 +112 110 115 114 119 126 123 129 128 121 130 131 +137 135 134 131 139 142 135 135 134 134 138 137 +139 140 137 137 143 141 139 137 138 135 140 142 +142 141 141 142 147 152 152 150 152 154 161 159 +161 166 160 162 158 156 157 155 157 156 157 158 +155 152 149 146 143 144 144 142 141 136 89 50 +44 51 84 68 52 49 34 39 43 42 47 51 +45 48 50 53 54 48 67 56 54 56 61 63 +50 49 52 54 43 53 62 43 48 59 81 116 +96 69 75 67 65 95 88 83 76 77 65 69 +70 66 79 85 77 57 51 48 59 56 39 81 +138 164 172 167 162 150 161 161 150 140 141 152 +156 156 153 154 158 155 155 156 156 157 156 156 +153 154 149 150 155 153 152 153 153 155 153 149 +153 148 153 150 152 153 151 153 147 147 151 149 +150 145 146 150 148 146 143 148 144 144 143 139 +142 143 145 136 141 132 131 132 127 123 126 124 +115 117 117 127 158 183 196 206 210 216 217 219 +218 218 217 217 215 215 215 215 216 213 214 216 +214 215 213 213 213 214 218 212 212 211 211 211 +208 209 209 209 208 211 211 212 212 211 212 211 +211 210 209 210 210 209 209 210 210 210 209 209 +210 208 208 209 +51 51 47 54 50 55 48 50 +47 50 47 47 46 41 44 46 50 54 77 89 +101 105 103 104 102 101 104 106 123 124 131 137 +139 144 143 151 152 161 165 171 174 172 175 177 +176 176 176 177 178 177 177 178 183 179 178 173 +170 164 159 157 149 139 132 125 112 95 84 73 +61 65 71 70 85 112 129 125 113 104 112 98 +90 94 85 71 64 67 87 90 79 69 99 68 +52 63 57 45 46 41 41 41 61 90 89 76 +45 50 60 68 60 55 43 51 78 147 178 130 +121 127 92 97 119 135 107 90 145 162 135 123 +108 110 116 114 112 90 71 76 98 91 91 112 +118 144 130 86 79 72 105 131 112 73 117 130 +118 139 195 217 223 199 203 207 154 73 56 53 +50 45 49 46 51 52 51 54 45 50 48 47 +50 54 53 54 61 57 57 63 57 57 44 39 +45 48 56 57 50 47 54 55 58 50 45 48 +53 51 51 60 62 58 59 54 59 62 57 67 +62 63 58 43 46 50 55 61 62 54 60 60 +77 61 57 52 57 70 69 68 59 76 83 89 +87 88 94 100 104 104 103 105 109 109 110 111 +116 123 125 128 126 123 124 131 130 131 136 133 +137 135 137 134 139 138 138 137 135 143 141 141 +137 138 141 145 142 142 144 149 145 142 148 145 +148 150 153 157 159 163 165 164 169 169 167 164 +159 157 159 156 154 156 159 154 154 151 151 146 +146 146 148 144 138 128 59 45 43 50 77 67 +46 45 45 43 49 43 46 50 48 49 52 49 +49 54 75 53 56 58 63 65 48 49 63 55 +42 50 55 42 49 58 87 118 96 67 76 80 +71 98 81 77 73 79 71 69 74 84 82 78 +70 65 47 49 63 60 45 80 137 161 172 169 +162 149 164 162 149 136 143 152 153 154 152 159 +156 155 156 157 158 156 157 152 155 149 149 157 +154 154 149 153 149 152 151 148 147 151 153 153 +146 157 153 152 152 147 149 150 147 147 148 153 +143 143 146 144 140 146 143 143 141 139 132 140 +136 137 135 128 125 123 121 121 116 118 116 128 +162 183 200 208 213 216 218 219 218 218 221 217 +216 215 216 213 214 215 216 215 213 214 213 213 +211 211 211 213 217 211 211 210 211 212 209 212 +211 212 210 214 212 212 212 211 209 210 209 213 +210 209 209 208 209 208 208 209 206 207 208 207 +48 48 49 46 44 52 51 55 52 47 49 48 +47 47 50 50 52 64 79 94 101 101 101 99 +103 99 105 108 121 130 126 134 139 145 141 148 +155 162 166 172 173 172 173 176 177 177 176 173 +176 178 179 177 180 178 174 172 166 166 162 151 +151 143 130 121 110 100 88 78 71 69 67 76 +83 100 118 126 121 108 105 110 90 77 77 69 +65 73 93 105 88 79 93 63 53 54 51 42 +40 38 40 42 63 88 92 70 41 44 48 68 +61 56 50 51 70 138 165 108 109 116 99 116 +101 120 121 92 117 154 145 130 106 111 120 104 +101 95 77 78 88 84 86 97 132 122 130 96 +98 99 115 133 104 50 103 131 98 118 164 207 +218 206 208 160 82 52 48 51 45 49 50 52 +53 53 59 59 60 50 54 48 44 52 51 57 +58 59 56 61 54 49 46 42 48 50 62 56 +49 52 53 54 61 51 48 51 47 44 43 49 +58 59 56 54 52 63 57 62 72 57 53 52 +47 49 51 60 63 61 59 58 73 71 56 51 +50 67 67 71 59 66 67 80 85 82 93 99 +97 98 105 104 108 107 113 110 112 119 124 127 +125 128 126 132 129 134 137 131 136 136 135 138 +139 137 138 137 140 142 142 141 138 143 139 145 +145 146 150 154 149 150 144 152 146 153 153 158 +161 173 165 165 167 171 169 170 160 161 161 159 +154 153 158 154 153 154 152 146 145 146 149 144 +140 102 43 40 39 50 71 55 51 44 44 45 +44 45 48 47 45 44 49 59 54 60 66 51 +64 72 58 56 48 50 56 49 47 47 53 46 +47 63 96 121 97 70 73 79 72 101 76 73 +75 74 67 66 77 68 86 86 65 70 56 51 +58 62 50 74 132 161 177 164 165 150 165 162 +149 134 147 153 157 153 159 156 157 156 155 156 +156 156 157 154 154 152 153 156 156 153 152 149 +150 150 154 151 147 153 152 153 154 155 152 155 +149 150 147 152 151 147 147 145 143 142 144 144 +140 139 142 141 140 141 137 140 138 134 133 130 +128 124 120 117 120 117 114 135 163 183 199 206 +214 218 220 219 219 218 218 217 217 213 214 213 +213 214 213 214 213 214 211 212 210 211 212 211 +211 210 212 210 215 210 211 211 211 212 213 212 +213 212 211 210 208 209 210 206 209 208 208 207 +209 207 207 207 205 204 208 208 +48 48 47 51 +43 47 45 48 51 48 51 51 52 53 50 49 +52 67 82 97 100 101 104 102 104 98 102 110 +121 129 130 138 139 143 148 150 155 159 168 169 +172 175 176 177 179 176 175 175 173 177 177 181 +178 179 175 173 168 164 160 152 148 138 136 121 +107 96 88 75 68 64 66 74 79 91 110 118 +114 103 103 105 85 70 65 78 68 78 99 97 +89 87 98 62 59 51 45 45 42 39 44 44 +69 98 96 70 49 40 47 59 63 62 55 54 +65 137 166 103 100 103 85 114 119 114 113 96 +104 133 152 131 117 112 121 108 99 100 90 86 +78 71 76 85 139 125 128 115 111 127 129 132 +103 60 85 125 100 100 124 166 196 206 159 71 +54 51 56 50 52 45 50 51 51 54 53 54 +58 49 53 53 51 58 48 55 62 53 55 64 +57 51 53 41 47 54 54 62 46 53 48 53 +56 55 46 43 45 46 44 48 55 60 57 56 +52 56 55 68 66 59 54 48 49 47 55 57 +66 66 59 59 65 70 54 49 50 61 72 77 +67 59 58 64 74 80 87 89 90 94 98 101 +106 105 106 113 113 118 123 123 126 133 127 132 +129 131 134 132 137 137 139 135 138 136 137 139 +137 142 142 141 143 144 145 148 148 152 156 156 +155 155 150 150 151 151 158 169 164 165 165 170 +172 172 173 170 172 162 158 160 157 156 161 154 +154 152 149 147 145 150 148 144 132 67 38 39 +45 55 73 53 45 42 49 42 46 51 49 48 +46 52 54 57 58 70 60 59 64 74 51 49 +52 50 63 48 54 48 55 53 49 62 96 115 +97 72 79 79 76 105 77 84 76 70 68 68 +79 76 88 76 62 74 57 59 58 54 44 72 +139 169 174 163 159 150 165 161 145 137 154 155 +150 150 160 158 160 153 156 155 153 154 156 157 +154 153 149 155 155 154 150 150 151 152 154 149 +150 149 150 149 152 153 152 153 147 145 148 147 +150 151 148 147 143 144 148 143 143 143 143 135 +141 142 138 140 138 138 137 128 129 125 123 120 +117 112 117 136 167 189 199 209 215 217 219 217 +215 216 218 219 215 215 214 212 211 213 212 212 +213 212 212 210 211 212 211 212 213 212 211 212 +211 211 214 211 211 212 211 211 213 211 210 210 +209 206 207 207 207 208 205 206 207 206 208 207 +207 203 205 204 +44 44 49 49 50 46 45 52 +57 49 54 46 48 50 51 48 54 59 78 89 +101 99 103 101 99 93 102 113 122 129 131 132 +139 140 151 154 156 159 165 171 173 177 173 172 +177 174 174 178 177 177 177 178 178 181 180 173 +167 167 165 154 149 141 131 120 112 93 85 75 +66 62 70 76 82 93 103 109 108 101 98 108 +100 72 73 78 68 88 92 95 96 96 86 59 +53 61 52 45 41 38 40 47 72 100 91 65 +42 42 45 51 60 65 64 61 64 128 169 96 +95 100 83 102 111 121 120 112 106 111 143 139 +125 109 120 125 109 106 108 93 77 73 76 81 +136 143 125 112 103 135 125 137 102 53 80 126 +104 109 122 143 186 198 121 52 52 50 61 52 +48 51 51 52 57 51 49 45 49 50 46 54 +44 42 55 60 65 55 52 66 55 49 46 41 +49 55 60 63 46 48 51 48 56 62 47 44 +44 48 48 48 48 56 55 57 55 54 57 57 +68 60 55 51 48 49 48 57 60 63 54 65 +56 69 54 49 48 57 70 79 69 56 49 53 +65 69 79 88 88 92 94 97 100 103 105 108 +109 116 116 127 124 129 130 134 130 128 129 133 +133 135 137 136 139 136 139 141 140 145 142 139 +139 145 148 146 147 153 155 156 158 157 155 158 +155 158 159 165 167 166 170 168 169 172 167 171 +168 165 158 162 164 167 162 159 158 151 150 151 +150 152 146 140 114 47 39 41 40 62 76 51 +44 41 48 40 44 52 43 47 48 58 54 59 +63 58 59 62 60 59 49 48 58 65 71 61 +47 45 51 52 47 69 91 112 101 68 80 81 +77 104 83 89 76 63 68 68 75 75 91 76 +50 76 65 63 54 60 46 81 137 167 173 161 +162 151 164 163 142 141 147 153 152 152 162 158 +158 157 157 156 150 155 156 156 153 153 157 155 +156 152 152 153 153 152 154 153 153 150 151 155 +152 148 150 151 146 149 151 152 145 153 148 148 +145 144 142 141 141 145 140 139 138 142 141 138 +133 138 138 131 126 125 120 121 118 113 121 138 +170 192 205 210 216 218 219 219 217 220 218 218 +216 213 215 213 216 210 212 211 212 212 211 210 +211 212 213 212 213 215 212 213 213 213 213 212 +211 211 212 210 210 209 210 209 207 209 209 206 +208 207 205 207 207 206 205 207 209 203 203 203 +44 44 45 49 45 49 47 51 51 47 48 47 +47 49 57 52 53 65 79 91 102 109 107 105 +106 96 103 112 119 132 131 132 139 141 150 152 +156 161 162 168 173 176 174 174 173 173 176 176 +176 176 177 174 179 177 178 173 168 163 162 154 +149 138 130 118 106 97 85 75 65 66 75 78 +85 89 96 109 107 90 99 107 94 73 69 71 +74 77 71 75 91 96 86 64 51 64 57 48 +49 39 34 45 66 100 91 69 48 48 52 51 +54 62 71 74 78 119 160 91 102 110 90 75 +92 105 114 128 124 110 120 121 137 119 125 130 +127 118 111 107 92 75 72 75 117 151 125 97 +100 135 132 148 108 45 68 110 95 115 132 155 +187 194 91 46 46 63 66 49 46 43 43 46 +49 46 47 52 52 47 53 46 49 47 53 72 +71 63 52 55 53 45 44 44 46 54 57 59 +51 44 49 52 48 59 50 50 44 50 49 49 +51 49 58 56 55 50 57 51 53 59 64 55 +52 56 50 53 62 61 56 59 59 60 58 54 +53 65 70 78 74 57 50 51 56 62 70 85 +74 82 85 96 98 98 93 103 109 110 113 117 +117 123 130 134 133 134 130 136 129 133 133 140 +137 136 137 139 142 146 144 143 139 146 149 148 +147 157 157 159 165 163 162 155 155 159 159 160 +166 169 173 176 170 167 161 168 169 174 164 165 +164 162 162 161 156 149 148 146 154 151 146 138 +96 51 48 44 45 76 79 48 49 40 48 46 +45 48 51 43 50 61 51 60 68 56 49 52 +65 65 46 46 56 70 67 39 50 44 48 57 +56 74 94 119 105 69 77 79 74 107 81 87 +72 63 71 66 75 76 82 68 48 80 78 62 +51 52 50 76 140 161 171 161 161 151 165 160 +134 143 145 149 150 153 159 160 153 156 157 155 +153 151 156 158 149 152 152 153 149 149 150 148 +149 149 149 149 146 150 153 154 152 151 152 154 +150 155 153 148 149 148 145 147 143 147 142 141 +138 141 139 142 139 140 133 137 137 134 134 129 +128 125 129 119 114 115 121 145 177 195 207 214 +218 220 220 219 218 219 219 216 215 213 214 212 +212 211 211 210 212 212 211 210 211 213 212 215 +214 215 214 215 213 213 213 210 210 211 210 210 +207 207 208 207 209 209 207 207 206 206 207 207 +207 206 207 207 207 204 205 203 +47 47 46 47 +43 45 44 48 47 50 44 46 52 46 49 45 +50 64 86 90 100 113 107 105 104 102 97 107 +116 127 135 132 138 141 148 152 156 166 164 169 +176 174 173 177 174 173 177 176 173 182 174 179 +179 180 178 171 170 167 160 157 150 139 129 120 +109 93 79 72 66 63 69 83 83 88 102 115 +105 94 105 110 85 54 55 68 82 62 54 73 +97 114 93 55 46 64 55 52 52 37 38 46 +64 100 84 63 43 38 46 57 55 62 75 79 +79 109 155 86 108 110 71 53 66 68 69 94 +122 132 123 109 133 134 126 123 120 128 119 116 +105 85 70 80 116 162 137 98 96 127 140 161 +108 45 58 96 90 125 123 133 195 189 84 50 +53 90 65 48 44 50 52 51 54 51 53 57 +49 45 55 56 48 54 55 96 64 62 59 59 +54 46 39 38 48 54 56 61 50 50 46 48 +50 62 53 50 47 45 48 52 50 48 50 58 +52 58 62 55 59 58 64 50 51 60 53 51 +66 61 58 54 67 65 63 55 46 54 70 78 +76 62 52 44 52 55 58 67 69 76 85 90 +96 93 95 99 102 108 111 115 117 125 125 128 +123 132 127 133 130 134 132 138 139 137 142 138 +145 148 144 146 142 144 151 150 150 157 161 163 +167 166 168 163 162 164 162 161 165 165 168 166 +163 165 161 161 169 168 164 166 166 163 166 157 +157 144 144 150 154 149 144 132 65 40 44 44 +49 82 67 45 48 46 48 57 53 52 48 44 +53 56 50 59 70 57 57 58 65 55 42 48 +53 86 61 43 52 47 53 59 54 75 93 120 +106 70 90 76 75 110 78 84 72 66 76 71 +69 74 79 65 52 77 88 60 46 48 49 69 +142 166 176 163 159 155 160 160 139 145 154 150 +149 154 157 159 156 154 158 156 156 156 155 149 +147 146 151 151 150 151 151 151 150 153 147 150 +148 148 150 153 150 147 150 150 151 150 152 148 +147 150 146 148 143 143 141 140 140 138 139 136 +141 137 134 135 130 135 135 130 127 129 123 120 +114 115 125 146 181 197 205 211 217 219 222 220 +216 219 218 215 213 211 211 210 211 210 212 210 +213 211 212 210 213 214 213 216 213 213 215 213 +214 212 211 210 209 210 207 208 210 206 207 207 +207 207 205 206 206 207 206 206 206 205 208 206 +205 204 204 201 +46 46 50 50 46 53 55 46 +49 46 45 50 49 48 48 47 52 74 88 88 +92 100 103 101 100 97 101 108 122 128 133 137 +140 140 147 151 155 163 166 171 175 177 178 175 +176 178 175 177 177 177 176 175 175 177 179 171 +168 164 163 159 146 141 128 123 112 91 83 74 +63 63 73 79 78 88 100 105 101 91 91 104 +73 56 56 81 73 57 48 67 109 126 81 51 +47 55 58 60 59 44 49 40 61 99 87 67 +48 42 58 65 52 51 67 83 86 121 146 83 +105 102 65 47 57 59 61 66 84 119 133 126 +133 148 148 133 113 128 124 121 116 102 91 78 +105 165 146 109 104 118 149 158 126 83 68 76 +80 134 107 81 165 167 67 56 80 92 55 51 +47 54 47 54 55 52 52 53 52 50 49 52 +46 45 59 63 64 58 57 57 56 51 47 44 +51 56 57 65 48 45 40 46 50 56 61 53 +44 46 46 45 51 48 47 48 52 56 56 60 +49 54 58 55 52 57 55 56 58 56 56 58 +59 63 64 64 48 57 68 71 78 71 57 49 +45 48 51 58 68 72 75 79 88 92 90 99 +95 107 110 117 118 124 124 127 125 125 125 132 +134 132 136 134 132 133 144 139 147 146 147 148 +146 148 154 153 154 157 157 161 169 167 169 169 +167 165 163 162 166 168 169 169 167 164 165 165 +171 171 167 171 172 170 164 156 156 142 147 151 +152 148 138 107 56 38 39 46 51 78 62 45 +44 43 51 48 51 52 47 48 50 55 52 55 +63 64 62 61 63 51 44 48 52 74 55 46 +58 47 47 55 54 76 97 124 107 78 78 75 +73 113 73 86 78 63 79 77 78 76 82 65 +51 73 89 61 49 55 43 62 137 170 174 167 +158 154 157 161 144 143 149 151 152 156 162 153 +161 155 155 152 153 153 154 145 150 155 150 153 +151 151 149 147 150 147 147 151 149 148 147 150 +150 153 152 153 147 144 149 145 147 145 148 147 +142 139 142 145 144 138 141 140 140 139 134 138 +140 131 133 126 128 125 123 116 115 116 127 153 +183 202 207 215 217 220 220 219 218 220 216 216 +213 210 212 210 211 211 210 211 212 213 213 212 +214 214 213 214 213 214 213 215 213 211 212 210 +210 206 208 205 206 204 205 205 205 205 205 204 +206 205 204 207 208 204 205 204 205 201 198 199 +46 46 45 44 49 56 49 50 45 44 43 45 +44 50 52 44 53 68 84 85 86 92 95 94 +96 95 102 110 122 125 131 135 136 140 149 155 +154 162 169 169 173 177 176 175 175 176 174 172 +176 176 176 178 181 179 176 177 171 167 163 156 +147 141 132 129 111 95 84 73 71 68 71 80 +83 90 96 99 96 100 86 74 73 59 60 70 +69 52 46 71 120 128 82 47 51 62 61 62 +52 45 47 50 63 90 85 68 43 50 53 61 +55 45 59 80 91 127 152 86 98 100 69 56 +50 56 55 52 74 85 108 132 138 137 140 135 +106 112 128 129 130 119 104 100 99 154 147 125 +118 124 144 152 130 110 93 76 72 120 92 65 +86 80 58 64 107 70 49 51 51 56 53 51 +64 57 51 50 47 49 55 53 54 47 56 64 +60 59 60 57 60 43 47 44 48 56 62 58 +47 51 56 52 45 50 62 54 50 45 49 46 +53 49 51 53 59 57 52 66 59 54 55 56 +55 57 58 55 58 59 59 54 58 66 63 65 +54 52 59 77 72 75 64 48 52 45 45 46 +50 55 65 72 80 87 86 88 92 92 105 112 +117 117 118 122 126 132 129 131 132 134 134 134 +137 138 136 140 144 144 143 144 144 149 146 152 +155 152 156 160 168 171 175 166 166 171 166 166 +167 170 166 167 166 165 164 164 168 173 172 178 +175 169 163 158 156 142 146 149 152 146 132 89 +52 40 45 44 55 74 54 50 51 49 57 52 +53 51 49 48 53 62 51 55 63 62 72 56 +51 49 42 48 52 62 55 42 47 49 52 55 +54 68 90 121 104 81 79 82 77 114 76 76 +76 63 80 87 73 82 85 70 46 74 87 60 +56 64 42 64 132 171 177 171 161 154 163 163 +142 141 148 145 155 157 159 154 158 156 158 156 +157 154 154 149 152 150 148 149 151 151 151 151 +154 149 154 150 152 150 149 149 148 151 152 148 +152 146 149 152 147 147 148 145 143 143 141 140 +140 139 138 137 140 139 138 138 131 137 131 124 +133 126 123 117 117 114 127 156 186 200 209 216 +219 221 221 220 219 218 215 216 211 211 212 209 +210 210 210 210 211 212 212 213 213 214 214 214 +214 214 214 215 212 211 210 209 208 208 207 204 +202 205 209 206 204 205 203 203 203 205 203 203 +203 202 202 200 199 195 193 190 +47 47 46 49 +52 54 57 53 47 40 43 45 49 56 48 55 +64 64 81 80 88 92 96 95 96 99 100 110 +121 128 136 134 136 144 147 153 154 164 168 170 +171 176 173 173 175 173 174 176 180 176 175 178 +179 179 178 171 169 162 162 160 149 141 131 119 +112 92 79 68 64 64 72 77 79 88 105 98 +116 118 88 54 55 55 54 58 56 56 49 77 +130 115 87 49 46 59 48 62 56 48 49 48 +59 77 78 67 46 43 47 63 51 43 60 78 +95 139 154 100 111 120 80 47 48 66 64 55 +64 81 84 108 116 138 132 117 111 108 127 137 +140 131 116 110 107 128 140 119 135 149 144 140 +90 89 113 101 75 105 115 76 54 56 58 75 +72 60 51 53 50 48 53 53 65 59 51 47 +45 54 49 53 52 51 58 66 64 64 65 62 +53 46 48 47 52 54 73 61 45 50 49 52 +55 49 57 59 50 42 45 45 47 47 45 50 +58 57 54 58 59 51 48 56 57 53 57 54 +57 71 59 50 54 67 64 67 57 50 59 74 +66 75 60 51 46 44 47 44 48 56 63 65 +74 74 83 82 90 97 101 107 116 114 120 123 +120 125 126 129 128 131 137 133 134 139 137 143 +141 141 148 144 144 143 147 151 146 154 153 154 +159 172 169 167 165 165 167 166 166 173 166 163 +168 166 164 169 167 175 167 178 172 168 160 156 +149 143 150 154 146 144 120 83 48 45 42 53 +64 65 53 51 56 53 57 56 54 50 57 52 +52 52 52 55 65 54 79 53 52 50 47 48 +58 57 59 43 48 52 45 59 57 75 102 116 +104 67 82 84 79 110 73 83 80 68 82 81 +75 73 78 68 51 86 88 69 58 68 44 71 +130 174 178 166 157 158 156 168 148 139 147 149 +151 152 156 152 154 157 155 155 157 149 154 152 +145 145 145 150 152 149 152 150 151 146 150 149 +149 147 147 146 147 151 148 146 152 147 149 149 +151 146 144 144 142 141 143 142 142 140 137 142 +137 136 140 137 134 136 134 130 124 122 120 113 +116 123 134 163 186 203 211 216 221 220 223 222 +217 217 215 213 211 208 211 207 211 212 210 211 +213 214 212 213 213 214 215 215 213 213 213 213 +212 210 208 207 209 207 205 204 204 206 205 205 +203 203 202 203 203 202 203 202 203 198 199 192 +189 188 181 172 +48 48 44 44 46 55 52 50 +48 50 46 46 46 45 44 49 62 58 73 77 +82 95 92 96 100 100 101 114 122 132 134 139 +141 142 146 155 158 161 168 170 171 173 178 173 +176 176 176 177 177 176 177 177 178 181 178 174 +170 167 162 160 151 139 131 122 107 92 79 75 +67 67 70 76 80 88 94 100 121 106 57 53 +53 52 57 59 53 43 51 77 128 109 99 65 +41 52 57 64 67 57 48 45 57 85 70 65 +51 41 47 62 45 45 41 59 101 130 151 116 +122 133 87 54 50 57 70 62 63 90 93 91 +106 107 127 125 120 126 128 139 134 130 112 107 +112 113 128 117 138 149 142 145 105 76 110 107 +88 115 122 82 54 54 67 71 55 53 51 56 +46 44 54 55 56 56 57 53 50 47 51 48 +47 51 53 64 59 59 63 63 48 48 43 45 +58 55 72 60 52 50 50 52 52 48 66 66 +54 55 47 43 49 49 45 47 51 47 57 59 +61 59 48 58 66 53 50 51 58 62 58 56 +53 63 70 59 56 48 52 74 66 72 68 65 +46 49 49 44 43 53 53 61 62 69 81 82 +86 87 93 108 109 113 119 122 122 122 123 126 +130 127 133 134 134 138 136 136 138 143 149 145 +140 146 144 150 149 151 149 150 155 167 165 163 +160 164 168 166 167 171 171 169 169 164 165 168 +169 167 169 168 169 164 155 157 145 145 146 150 +138 132 111 81 43 37 42 49 68 64 48 53 +53 50 56 59 58 54 52 51 52 55 57 58 +59 65 76 55 51 49 49 55 56 48 55 50 +51 56 46 59 63 77 104 116 103 71 74 79 +76 111 68 76 69 65 79 87 79 70 77 74 +55 70 87 71 51 59 43 68 136 173 174 163 +161 155 158 167 145 141 145 150 151 152 153 149 +154 158 155 152 155 152 150 150 146 148 149 150 +153 151 150 151 152 150 153 148 149 146 146 151 +153 147 146 149 149 151 146 149 143 142 141 141 +141 137 141 140 136 135 136 135 139 136 135 135 +133 132 126 128 123 123 119 115 117 120 135 165 +191 205 210 217 224 222 221 222 218 216 215 213 +211 210 210 209 213 210 211 211 213 214 215 214 +215 215 215 216 213 212 212 212 212 208 208 206 +206 205 203 206 205 207 207 202 203 202 201 199 +199 197 197 195 192 188 186 180 178 167 159 142 +50 50 44 47 53 51 53 52 49 47 49 46 +49 48 45 44 50 53 67 76 84 89 97 96 +100 105 114 119 128 131 134 135 136 145 150 156 +158 162 166 169 173 173 174 175 173 173 175 176 +177 178 177 177 178 178 173 178 172 167 160 159 +149 140 133 122 109 90 78 71 60 64 66 76 +78 86 92 113 119 79 58 50 49 52 56 51 +60 44 49 89 125 94 101 72 47 51 57 59 +71 65 48 48 68 82 64 69 48 37 47 53 +46 43 33 59 92 128 144 122 126 132 106 56 +50 54 71 72 64 94 107 87 111 109 105 112 +120 130 135 142 136 138 114 104 113 121 115 125 +134 138 138 153 134 92 83 87 76 96 107 90 +65 60 69 60 52 63 56 52 50 50 48 47 +50 51 48 49 48 44 47 47 45 56 59 64 +57 63 66 60 53 47 45 45 52 51 70 64 +47 45 50 50 54 45 50 59 55 45 44 48 +49 55 45 46 51 49 54 62 61 56 50 55 +58 57 50 51 47 55 60 68 59 59 69 61 +57 51 55 64 76 67 78 75 59 51 48 45 +42 40 41 47 55 63 63 69 81 80 92 98 +106 111 116 112 116 117 116 117 124 126 125 133 +130 131 129 137 137 143 142 147 146 147 146 150 +146 151 147 153 155 158 159 164 164 168 165 169 +172 172 176 168 170 167 165 165 167 166 166 165 +160 163 154 156 146 144 146 150 140 130 109 81 +45 40 43 47 63 56 51 50 56 59 61 54 +57 55 57 54 51 58 54 55 60 63 81 65 +49 46 55 55 52 48 55 56 48 52 48 61 +71 79 104 115 100 79 77 80 78 106 72 79 +72 73 75 88 78 78 88 72 51 74 89 68 +52 54 44 66 132 171 172 159 157 155 162 164 +147 146 149 147 146 147 149 150 151 153 152 148 +151 151 153 148 149 147 151 154 147 150 153 149 +153 148 151 150 150 147 148 148 151 152 152 151 +147 145 149 143 143 143 143 147 145 140 141 139 +140 138 140 135 139 137 137 137 132 130 129 125 +124 124 118 117 117 123 144 174 193 204 213 215 +220 221 221 220 218 216 214 212 211 209 209 210 +213 211 211 213 212 214 215 213 214 215 216 214 +212 213 211 212 209 208 209 208 204 206 205 206 +206 207 201 204 202 202 199 196 193 191 189 184 +181 173 168 158 145 129 113 97 +52 52 51 49 +46 49 48 46 44 43 43 43 45 54 55 47 +51 50 59 75 81 86 92 100 100 101 110 121 +128 134 129 134 139 145 151 154 158 164 169 170 +171 174 173 173 172 172 172 178 175 174 176 181 +178 179 178 178 175 167 163 157 150 141 136 120 +107 89 80 64 58 60 68 67 66 85 103 124 +96 68 60 51 47 44 49 49 66 56 55 102 +104 83 95 67 47 49 62 60 68 72 57 48 +74 71 65 67 49 45 46 56 51 46 41 40 +74 136 151 132 120 138 115 77 57 46 78 82 +74 81 102 92 96 122 89 98 124 119 123 138 +147 151 134 132 143 137 111 113 133 142 139 153 +164 130 81 66 72 86 93 85 92 79 62 52 +54 51 59 51 53 47 54 55 58 54 55 54 +54 49 49 50 59 55 62 67 66 70 76 64 +49 51 44 42 44 54 69 61 46 46 50 52 +58 53 52 50 56 51 46 46 46 54 51 50 +47 46 50 55 60 58 53 56 60 61 67 57 +52 56 60 61 60 59 68 57 55 50 60 73 +80 69 74 75 62 61 55 52 52 52 45 47 +51 61 55 62 79 79 86 89 97 99 102 99 +107 111 114 120 123 126 123 128 131 130 128 134 +138 137 137 142 141 145 147 146 146 145 152 150 +155 156 156 155 164 167 166 168 164 168 171 173 +164 161 164 162 164 165 165 158 159 156 152 154 +146 146 145 143 138 124 109 87 46 43 49 52 +65 57 52 51 56 59 59 54 57 57 60 55 +55 55 58 49 54 69 77 60 55 52 57 64 +48 46 50 57 57 56 55 54 68 85 100 112 +103 80 87 86 75 102 73 82 75 77 79 90 +81 84 87 78 62 79 95 72 59 55 46 69 +132 175 171 159 157 153 160 156 142 141 144 139 +139 140 144 146 146 146 147 146 147 148 146 150 +151 148 150 152 146 144 148 150 150 147 150 151 +149 146 147 148 145 145 149 150 147 148 147 143 +147 147 141 138 144 142 139 138 137 140 140 139 +136 136 136 136 136 132 128 129 124 121 120 117 +117 123 146 178 197 207 212 218 220 220 221 220 +217 216 214 213 209 210 210 210 213 212 213 212 +212 212 214 212 213 214 214 214 211 213 212 210 +210 208 208 206 203 206 206 205 205 204 204 203 +202 198 195 190 181 179 175 166 153 142 131 115 +98 81 61 59 +48 48 46 44 43 45 45 46 +46 46 43 38 43 43 47 53 52 55 56 66 +74 88 95 96 103 103 110 117 129 129 126 138 +140 147 150 152 158 162 167 167 174 173 172 171 +169 175 175 176 175 178 180 178 178 175 178 172 +172 165 166 156 150 144 131 122 108 88 78 67 +63 67 63 68 75 97 123 112 82 64 56 56 +56 43 44 52 66 73 72 104 82 65 88 69 +53 48 56 65 58 63 67 64 70 66 69 66 +50 40 40 55 52 50 39 44 63 130 162 134 +119 137 125 91 62 56 69 92 78 74 81 86 +91 119 109 93 127 109 92 108 132 153 149 154 +152 122 120 113 120 139 149 158 181 161 93 70 +78 108 111 107 120 89 56 50 50 48 54 48 +49 50 50 54 48 49 52 49 56 54 51 56 +55 57 61 65 67 71 81 64 55 55 48 48 +56 58 72 62 55 46 51 52 61 51 58 56 +59 58 50 51 53 49 55 55 54 53 50 53 +58 59 58 62 61 65 64 56 56 52 55 57 +60 57 63 57 57 55 51 59 74 70 70 70 +74 54 50 50 46 46 51 46 44 51 54 61 +63 78 72 74 75 92 86 93 88 90 95 106 +111 117 111 115 121 117 113 128 126 127 131 133 +133 139 145 139 145 148 147 149 157 151 151 153 +156 167 164 167 166 166 170 168 163 160 158 158 +157 158 163 153 158 160 151 146 143 142 141 140 +137 123 105 84 48 44 42 53 64 58 61 64 +57 54 59 61 52 56 60 52 55 62 59 54 +63 84 72 57 57 51 59 72 51 54 60 51 +52 46 50 60 61 84 97 110 103 74 88 84 +81 98 77 90 75 74 79 96 81 85 84 74 +62 82 92 71 62 58 49 80 136 172 171 157 +155 152 158 154 145 137 135 131 129 137 136 139 +144 140 145 145 143 144 142 146 144 147 155 147 +150 146 151 151 149 150 150 147 152 147 148 148 +150 147 149 148 152 144 148 145 145 141 142 143 +140 141 139 138 136 136 137 140 135 132 138 134 +135 134 127 125 124 121 119 114 115 128 157 183 +197 206 214 217 220 221 219 217 217 216 216 213 +211 211 210 212 212 212 212 210 211 212 215 212 +213 214 213 213 211 211 211 210 208 205 207 205 +206 205 205 205 202 202 199 197 195 191 185 180 +167 160 147 129 116 97 77 65 56 50 49 48 +44 44 43 54 47 46 48 50 52 49 47 44 +41 42 51 54 48 48 56 61 75 84 94 97 +100 105 107 113 122 129 127 139 139 150 154 156 +159 164 165 170 170 173 173 173 174 173 170 175 +177 175 175 177 176 178 175 172 172 167 166 155 +146 143 129 120 104 89 80 67 53 54 64 72 +100 118 129 97 86 70 87 100 50 44 42 43 +67 79 95 107 76 62 76 77 62 50 57 64 +70 59 61 65 84 61 56 69 50 41 42 55 +53 58 36 33 48 121 164 136 119 137 130 87 +65 56 64 80 77 71 69 65 86 107 120 104 +126 112 90 92 101 133 152 133 113 111 123 127 +122 139 150 154 163 164 117 115 122 135 119 113 +128 110 65 49 49 48 45 47 50 53 60 52 +50 51 50 50 55 48 49 53 55 55 56 69 +66 78 78 56 46 49 49 46 51 62 75 61 +52 56 49 54 51 48 57 51 55 56 52 48 +51 50 55 46 42 47 49 44 56 51 53 56 +62 59 60 55 53 54 60 63 65 57 67 62 +57 51 56 57 64 81 73 71 73 69 60 61 +53 60 44 52 43 52 56 58 62 58 66 70 +70 71 69 68 64 69 76 84 90 94 93 102 +110 113 119 113 121 122 121 131 133 131 134 140 +140 144 147 151 151 152 151 145 155 159 162 165 +166 164 164 166 162 158 150 154 153 153 154 153 +157 150 146 144 139 140 136 136 134 118 97 65 +42 44 46 46 57 57 50 54 56 56 54 51 +54 50 59 55 55 55 48 56 53 74 63 52 +50 52 55 57 51 54 47 50 55 54 63 62 +63 84 96 113 102 78 86 85 76 97 77 90 +72 77 84 96 82 92 89 73 55 76 91 71 +59 60 45 86 143 176 172 154 153 158 156 154 +141 133 134 128 128 130 131 134 138 138 139 145 +140 138 142 145 142 147 145 141 147 143 151 151 +148 148 151 148 155 153 145 151 151 151 148 149 +147 145 148 147 147 145 145 145 142 142 142 139 +138 140 138 136 139 135 133 139 136 132 126 128 +122 116 118 117 119 134 164 186 201 208 214 217 +220 220 220 216 215 216 213 212 209 211 212 211 +212 211 212 213 214 212 213 213 213 212 212 210 +210 212 207 208 208 207 205 206 204 204 201 199 +196 194 192 188 184 178 168 163 144 127 106 85 +65 52 51 50 48 46 43 43 +40 40 44 41 +47 51 46 49 44 45 43 42 43 39 42 50 +43 50 52 60 69 86 95 98 96 98 94 106 +115 128 129 138 142 150 154 158 162 163 166 168 +172 175 170 170 171 172 172 178 178 177 178 178 +176 179 177 171 167 165 163 153 146 138 127 120 +106 93 72 56 54 53 70 96 130 156 157 95 +94 88 130 115 48 49 41 47 56 75 94 94 +74 61 65 71 65 59 61 64 62 55 57 74 +65 59 56 56 50 39 43 53 45 55 44 46 +45 125 165 142 130 146 140 95 72 63 64 89 +87 77 68 64 79 92 121 114 119 124 100 84 +90 119 146 118 83 109 122 135 133 138 159 159 +145 147 133 133 142 153 141 129 140 139 100 62 +45 40 43 40 42 44 46 47 49 52 50 56 +56 51 50 51 53 65 68 73 70 78 81 50 +42 39 41 41 52 63 83 59 50 46 46 47 +47 48 53 57 59 55 48 45 45 45 53 48 +43 42 48 52 53 54 51 55 57 62 61 58 +61 56 63 72 68 64 65 65 65 51 59 62 +62 76 71 71 78 76 71 61 60 57 62 67 +60 56 64 64 60 56 67 58 58 62 60 66 +74 74 81 79 91 89 96 94 97 102 106 120 +122 118 121 128 130 136 138 138 141 139 143 154 +153 145 148 147 149 156 159 162 162 163 162 164 +160 155 152 152 147 151 150 152 152 148 142 138 +141 140 129 137 134 111 89 71 51 51 45 55 +48 45 52 54 59 52 51 55 59 59 59 57 +59 58 52 57 58 80 67 53 55 56 56 56 +51 57 53 44 51 60 58 65 67 84 96 114 +110 82 93 93 78 96 80 83 68 80 78 89 +78 92 95 74 66 74 86 77 62 60 49 89 +143 176 175 150 154 164 148 145 135 128 125 119 +118 119 125 130 131 133 131 136 135 137 140 141 +142 147 145 142 143 149 145 148 150 148 147 151 +148 151 147 153 148 148 147 148 147 147 143 144 +145 144 141 143 142 142 139 146 144 142 137 138 +134 131 131 137 135 126 129 124 119 119 113 117 +123 143 175 192 202 210 215 219 219 219 218 216 +216 214 213 213 208 210 212 212 213 209 211 210 +211 211 212 211 211 211 207 210 208 209 207 206 +209 206 206 204 202 200 195 193 189 187 180 177 +166 154 135 127 102 74 58 52 45 42 43 42 +45 45 43 43 +47 47 47 43 44 44 48 47 +42 47 41 44 46 41 53 41 41 49 63 64 +66 84 94 94 94 93 90 99 115 121 131 136 +138 148 150 159 159 159 164 172 172 170 173 170 +173 172 171 174 173 175 175 177 181 179 177 174 +167 162 160 155 146 138 126 111 100 88 66 56 +65 73 108 145 174 200 140 94 100 115 159 118 +47 45 42 41 48 70 81 85 71 61 58 59 +65 57 60 57 50 56 69 73 59 44 46 63 +54 43 45 49 46 51 41 35 41 98 159 146 +138 147 152 124 90 78 82 99 96 80 65 56 +65 92 116 134 112 138 107 80 76 100 130 110 +90 108 127 133 141 140 164 153 143 139 140 132 +152 170 171 155 152 154 134 75 53 54 46 47 +45 47 49 53 55 47 52 56 57 49 54 52 +50 65 73 74 69 80 77 56 50 41 41 43 +45 63 87 59 48 51 48 60 50 48 47 54 +57 56 53 45 50 52 52 52 46 52 51 47 +53 51 48 54 57 59 62 66 65 57 65 70 +60 70 63 68 63 57 52 59 53 72 72 67 +81 88 74 65 70 57 60 59 56 61 62 65 +59 65 65 69 68 72 77 82 94 91 89 96 +96 98 102 93 102 108 114 119 120 115 119 126 +127 130 129 133 133 134 137 146 148 143 147 149 +149 148 156 158 161 166 161 161 160 151 149 149 +144 152 152 145 145 139 134 128 134 129 129 138 +127 105 91 63 57 51 52 55 53 52 53 58 +55 55 55 53 57 49 62 55 53 56 57 53 +56 76 62 51 54 57 54 46 44 52 51 46 +46 56 65 63 62 83 92 113 108 80 83 87 +84 98 82 88 75 86 73 88 79 88 94 71 +65 68 74 81 67 77 52 84 141 179 177 147 +155 163 148 146 135 124 126 113 112 118 119 121 +122 130 134 125 131 135 132 134 137 135 136 141 +142 137 141 140 147 148 146 145 143 146 146 149 +146 151 150 147 145 146 148 145 145 148 145 144 +143 139 138 141 141 136 133 133 133 129 132 136 +129 122 123 122 119 117 115 117 121 148 179 194 +204 209 213 220 219 219 216 214 213 213 210 211 +211 210 212 212 212 209 211 210 211 211 212 211 +209 210 210 210 209 209 206 208 206 203 200 201 +197 196 190 183 177 168 160 152 134 115 94 75 +59 52 42 41 36 40 41 41 42 41 42 45 +47 47 44 44 46 61 51 47 46 40 43 44 +48 40 41 39 41 45 49 63 69 75 87 98 +97 89 92 100 108 122 128 134 137 146 152 157 +156 163 165 172 171 174 174 174 173 170 172 174 +174 175 172 178 178 181 177 173 170 161 159 154 +142 135 122 113 97 83 69 60 75 118 155 186 +211 161 90 102 90 137 166 101 50 39 42 45 +46 62 82 77 90 64 51 53 60 72 62 62 +57 63 70 71 48 51 49 53 51 42 47 51 +42 51 42 45 52 92 155 143 131 141 152 141 +123 100 98 110 94 76 66 56 58 95 104 135 +131 145 114 81 61 85 106 112 104 108 112 131 +147 149 162 154 138 130 138 120 123 151 174 160 +155 165 157 112 70 60 53 55 51 54 50 52 +50 51 50 50 51 49 49 53 53 66 81 84 +68 83 81 54 48 52 45 46 45 62 76 60 +49 48 45 54 51 45 45 51 57 55 53 43 +48 47 49 55 52 42 46 52 51 56 49 58 +59 62 60 62 62 57 55 56 62 59 59 64 +65 53 46 54 54 60 69 66 78 87 88 74 +65 63 65 61 69 73 87 94 96 92 96 101 +99 97 107 108 109 114 115 121 117 120 120 117 +118 119 121 121 131 133 130 122 125 138 140 139 +138 137 153 155 152 150 160 158 157 158 161 158 +164 168 167 165 163 161 162 163 160 166 162 155 +150 140 139 132 136 133 136 136 125 107 96 65 +50 48 47 55 50 56 59 56 66 56 62 67 +50 57 55 64 58 56 45 55 59 79 73 57 +57 57 59 47 51 61 55 50 46 55 67 55 +65 78 94 114 103 76 86 93 90 95 86 84 +70 82 77 80 81 89 86 75 59 75 73 83 +60 71 53 88 140 180 177 146 159 158 147 134 +122 113 126 113 110 114 111 112 115 123 128 127 +126 128 130 130 133 139 133 133 135 130 134 137 +136 141 142 146 142 140 146 141 145 146 151 149 +151 143 143 140 144 142 145 143 140 141 139 139 +137 136 134 137 135 135 132 131 128 127 126 123 +118 114 116 116 127 159 181 198 206 211 216 220 +218 216 216 214 212 212 211 209 210 210 212 209 +212 209 210 211 210 210 209 210 207 209 207 209 +207 209 204 206 204 200 195 193 193 187 182 172 +160 152 135 116 94 72 64 54 44 45 52 47 +36 40 38 46 46 48 47 50 +47 47 45 46 +49 48 43 47 40 39 41 39 44 41 42 37 +39 46 50 64 72 75 86 93 93 88 94 94 +104 116 125 133 142 142 150 154 161 163 166 168 +172 171 174 176 170 168 171 177 173 174 175 178 +175 173 171 174 168 158 160 154 144 134 120 109 +92 83 73 85 121 163 201 212 159 82 76 75 +70 130 152 98 53 44 39 38 38 58 75 94 +89 67 50 49 54 70 67 56 55 59 73 64 +59 41 51 54 46 42 45 47 43 47 40 37 +44 88 149 131 133 125 148 155 138 112 81 87 +84 78 69 54 54 67 89 116 139 147 121 67 +64 84 103 128 128 102 78 96 140 157 147 158 +145 125 119 81 70 98 112 134 148 173 161 139 +112 83 60 52 47 42 40 44 45 44 51 50 +49 50 48 53 50 65 81 76 70 87 76 56 +48 39 41 39 48 69 73 54 54 50 51 49 +52 47 45 51 55 57 58 52 43 53 51 54 +54 46 42 52 52 51 49 54 55 59 58 65 +59 65 61 57 64 62 56 60 59 59 57 53 +53 63 69 74 81 83 81 71 67 75 74 81 +85 92 109 108 108 107 110 108 116 121 129 125 +125 135 134 133 133 145 140 136 133 135 132 136 +133 134 140 134 133 146 147 148 143 149 164 163 +155 157 163 162 158 160 162 157 163 165 168 168 +168 169 168 176 171 174 171 169 170 161 157 162 +160 164 164 160 148 130 112 73 65 62 59 54 +53 54 54 60 65 58 59 59 56 54 53 58 +57 55 52 56 57 65 63 52 55 63 52 45 +44 57 46 53 45 53 71 52 59 77 92 112 +113 85 82 92 87 98 80 88 78 82 77 87 +84 83 87 65 64 77 73 74 64 76 59 96 +149 184 174 142 158 156 139 133 119 110 126 114 +111 108 110 112 115 116 122 125 124 123 122 123 +123 127 138 130 128 126 130 132 138 137 136 144 +138 138 139 142 142 148 147 149 150 146 147 148 +144 141 144 142 144 143 139 138 142 134 134 134 +131 131 131 129 128 125 123 120 114 114 115 113 +133 165 187 201 208 214 217 218 219 216 214 212 +209 209 210 211 211 208 210 207 210 210 208 207 +208 210 209 207 208 209 206 208 209 206 204 202 +200 195 190 187 182 174 167 158 138 119 98 78 +61 50 52 45 43 39 38 36 39 36 41 51 +49 53 54 52 +46 46 53 48 52 52 51 50 +51 47 41 43 41 44 42 42 41 45 52 60 +70 77 89 86 89 85 80 87 98 113 124 132 +142 143 150 156 158 162 166 166 173 169 172 174 +174 170 170 176 175 172 171 174 176 172 174 174 +166 165 157 152 146 131 120 109 97 87 94 128 +172 212 220 153 81 70 60 60 78 146 158 69 +49 42 43 37 42 51 75 96 81 67 63 57 +59 64 69 64 56 68 73 56 51 50 56 56 +51 42 42 46 41 50 43 41 45 93 146 122 +134 116 130 160 143 105 74 71 83 79 74 59 +55 57 72 94 120 122 103 67 67 93 115 154 +150 130 89 72 102 144 145 159 155 134 125 95 +54 69 78 84 109 154 168 162 141 130 99 64 +40 39 42 36 43 46 39 46 53 53 43 46 +49 59 80 70 68 86 78 54 44 36 41 42 +51 60 68 58 46 47 45 54 47 49 50 50 +50 52 48 45 40 50 48 54 50 47 45 51 +55 53 46 47 51 56 61 60 61 53 53 51 +58 54 57 60 60 57 53 46 48 48 59 67 +64 67 78 78 84 88 80 92 100 100 109 108 +114 114 122 120 129 131 133 131 131 137 134 134 +139 146 144 144 137 140 137 134 138 138 146 144 +138 142 144 147 143 152 155 154 159 156 160 159 +154 158 158 156 157 161 159 165 161 163 165 164 +166 171 170 164 167 173 176 179 182 182 187 185 +182 175 157 133 115 99 81 69 59 51 57 62 +62 52 49 56 58 54 53 53 57 56 53 55 +58 61 65 53 55 53 52 48 49 56 55 52 +47 56 74 58 58 82 91 107 108 81 82 79 +87 105 85 84 75 73 76 89 86 91 90 71 +61 70 73 70 75 70 58 100 153 180 169 140 +160 157 133 127 114 102 122 117 107 104 109 113 +114 113 115 118 117 123 122 117 124 120 129 128 +122 125 129 130 134 130 130 132 137 135 134 135 +138 148 145 149 146 145 142 148 143 144 142 142 +141 140 138 138 137 135 135 137 134 133 129 128 +126 128 122 121 118 113 116 117 142 174 194 203 +212 215 215 217 216 215 211 211 208 209 210 208 +210 208 207 208 212 208 209 208 209 207 209 209 +206 205 206 206 207 204 201 199 194 188 184 177 +176 162 152 135 111 94 72 57 47 44 35 41 +41 43 42 41 40 48 50 49 59 58 60 61 +50 50 58 61 54 51 51 56 47 44 40 38 +43 37 40 44 44 40 51 63 67 72 77 85 +80 75 77 86 104 120 127 134 138 143 153 153 +158 161 165 172 169 175 172 174 173 173 172 174 +170 171 172 173 174 176 176 175 166 163 155 148 +141 130 117 109 99 108 135 173 209 219 156 73 +88 87 66 63 92 178 138 74 63 55 64 49 +38 48 70 93 91 76 69 64 66 65 67 57 +67 78 54 50 52 58 63 68 50 42 47 53 +45 51 51 40 57 103 145 122 119 120 111 143 +152 122 96 75 76 88 78 60 56 50 61 71 +85 101 90 74 81 110 136 164 153 128 96 74 +84 124 151 156 164 144 137 118 70 63 62 54 +63 116 163 180 160 164 147 114 67 43 39 40 +42 47 43 47 45 49 51 49 55 61 74 72 +79 86 70 48 45 37 39 46 51 74 79 50 +49 50 44 48 46 44 47 54 50 55 53 55 +44 48 49 48 48 49 45 43 49 52 51 50 +51 56 56 57 60 57 54 52 63 65 56 56 +52 50 49 48 48 49 52 73 68 71 82 89 +87 81 88 101 106 106 109 111 119 117 121 125 +130 127 130 130 129 133 134 133 144 141 139 138 +138 135 138 138 135 138 141 141 138 138 141 139 +140 151 150 152 153 155 158 153 154 149 153 149 +150 156 156 156 156 161 157 156 161 164 158 163 +168 172 173 182 181 187 189 193 196 197 193 182 +174 157 140 114 90 68 64 55 57 51 55 54 +49 54 61 55 51 53 51 50 60 54 61 61 +50 52 52 42 39 50 56 51 48 52 73 61 +59 77 88 112 109 82 82 79 87 98 80 89 +76 81 82 85 81 94 98 76 73 73 80 71 +71 61 67 100 157 177 155 143 163 153 128 126 +114 101 121 117 114 105 104 109 111 107 108 112 +113 121 120 115 120 119 121 121 113 119 122 123 +121 125 127 124 130 129 131 135 132 139 137 136 +141 143 140 146 140 141 139 142 140 141 143 138 +135 140 136 142 134 132 127 126 127 122 122 119 +119 110 113 122 147 179 193 203 211 215 217 217 +217 215 209 209 207 208 209 211 209 208 207 209 +213 209 208 206 207 207 207 207 206 207 206 204 +205 202 199 195 191 187 176 172 167 154 138 117 +97 80 57 47 44 42 49 45 44 40 57 36 +43 44 50 62 69 68 65 69 +56 56 52 54 +55 58 58 53 46 45 48 40 42 43 39 41 +42 40 51 61 67 70 74 81 78 76 74 82 +98 117 126 135 137 144 148 153 157 161 167 171 +169 174 173 174 173 174 174 173 173 170 173 170 +173 175 174 172 168 163 156 145 137 133 118 115 +112 145 177 216 212 151 77 68 117 102 73 59 +75 133 102 74 53 43 54 40 43 38 66 103 +86 68 74 62 58 63 58 74 82 71 56 49 +52 51 82 77 50 46 41 49 49 47 47 46 +66 112 140 127 119 126 104 125 151 144 125 103 +74 79 81 60 47 46 55 57 68 104 102 85 +105 139 145 158 130 98 86 88 77 118 130 151 +168 152 143 138 118 96 72 44 46 83 122 173 +181 188 175 146 109 61 43 39 42 46 47 47 +48 48 55 50 53 57 74 72 75 87 70 51 +48 40 41 37 56 83 84 53 45 47 50 49 +50 52 44 47 52 59 53 53 47 48 53 51 +49 55 43 50 50 54 48 49 59 57 59 54 +57 67 58 50 55 71 59 53 54 52 51 47 +48 47 51 73 72 81 76 78 79 86 93 103 +106 113 112 117 127 127 126 129 131 131 127 128 +128 129 131 132 135 133 135 134 135 133 133 135 +132 139 139 143 139 137 141 142 144 154 152 148 +151 153 156 152 154 153 152 150 155 156 153 151 +155 151 155 155 154 153 155 165 167 167 170 176 +180 187 188 195 196 194 198 200 201 195 187 175 +149 127 106 76 55 48 60 52 51 52 55 53 +53 48 50 50 47 56 52 52 46 57 48 41 +52 52 70 57 48 49 56 71 62 74 88 106 +109 84 82 83 95 97 81 91 78 75 81 76 +76 92 94 71 69 81 80 63 74 60 62 107 +154 177 153 150 158 150 122 127 109 105 115 118 +124 112 101 114 109 109 108 113 114 113 112 114 +116 117 117 114 112 117 117 118 116 117 118 125 +122 126 122 123 129 127 134 132 137 138 137 139 +135 138 136 140 136 138 138 136 135 137 138 135 +134 129 133 126 124 122 121 121 121 111 118 124 +158 181 197 208 213 216 216 218 214 212 208 207 +205 209 208 209 209 207 210 208 213 209 208 209 +207 210 206 206 208 205 205 205 203 199 196 197 +187 181 173 164 157 147 128 110 85 65 52 45 +46 38 38 39 38 41 49 49 50 53 64 71 +77 80 74 73 +55 55 53 55 54 63 68 50 +59 49 51 42 45 37 43 37 41 40 55 59 +61 65 71 76 73 78 72 81 97 115 127 134 +136 142 149 155 156 165 167 168 170 171 172 171 +174 169 172 174 171 171 177 173 177 173 174 169 +167 161 154 145 138 137 129 124 154 187 218 207 +153 77 63 84 80 69 66 56 81 116 86 50 +39 41 44 34 40 47 59 99 96 86 73 61 +57 56 63 77 83 61 54 56 59 50 89 85 +58 49 46 52 47 54 52 46 61 107 129 136 +121 129 113 97 136 147 142 130 91 72 69 62 +42 41 43 59 80 118 126 101 109 145 154 151 +112 107 85 81 95 112 126 127 151 152 120 105 +132 130 93 74 58 64 86 169 171 179 174 158 +150 116 62 43 48 47 49 45 51 45 54 52 +58 67 68 79 86 82 63 55 53 42 50 42 +59 85 94 50 46 47 49 52 53 50 54 48 +50 57 57 56 50 46 45 47 45 50 48 50 +54 47 51 49 52 56 57 57 57 61 52 50 +50 57 69 59 52 57 45 47 53 45 45 63 +69 74 82 80 84 95 102 106 111 114 119 125 +130 131 129 127 129 133 122 121 128 128 130 131 +132 130 134 134 134 132 136 131 135 135 136 142 +141 141 141 147 148 148 151 147 150 153 155 151 +154 149 148 152 149 146 149 146 148 147 150 151 +151 157 158 160 167 170 174 180 178 185 193 193 +193 196 198 198 200 198 199 200 196 182 161 136 +105 75 61 58 51 57 53 57 51 52 45 54 +51 57 54 52 45 51 46 40 42 46 48 43 +53 47 53 83 63 78 88 105 114 81 76 83 +85 87 77 100 71 82 77 70 78 90 93 73 +74 77 79 64 72 72 63 110 162 178 152 154 +160 145 126 122 114 105 121 109 122 120 111 102 +111 109 112 115 110 108 117 113 110 113 113 114 +115 114 117 120 111 116 118 116 115 115 118 123 +122 123 130 126 129 126 131 131 132 135 135 134 +136 134 136 138 133 133 139 134 131 131 125 128 +127 125 122 117 116 112 115 125 155 180 199 207 +211 213 215 216 213 211 207 205 207 208 207 207 +207 208 210 210 208 208 208 208 208 207 207 207 +203 204 204 202 199 201 192 192 185 178 171 162 +147 134 113 92 68 54 48 48 38 36 37 40 +40 46 50 58 60 69 71 76 79 74 80 72 +56 56 62 64 60 65 53 55 52 49 45 48 +51 50 46 38 39 37 46 56 56 67 72 80 +79 70 73 83 95 113 126 132 137 140 145 150 +157 162 164 166 172 171 174 170 171 172 170 174 +174 172 174 176 177 179 174 175 167 157 155 150 +146 132 137 155 189 211 190 124 73 58 70 82 +63 52 48 55 110 132 73 50 40 42 45 38 +46 40 63 95 91 85 70 71 61 52 58 63 +71 50 56 57 57 56 75 109 77 48 55 67 +53 55 46 49 54 78 101 128 130 126 129 106 +111 140 144 141 116 85 57 52 42 44 56 75 +96 129 137 118 126 152 158 138 86 92 105 87 +83 111 107 110 125 133 112 93 94 129 119 90 +56 53 73 127 138 161 151 161 165 145 107 59 +44 48 51 51 51 47 54 60 61 65 69 78 +90 82 62 50 47 45 51 45 64 70 81 55 +52 51 45 49 52 58 44 48 48 48 52 54 +54 45 47 47 52 50 49 43 47 50 52 52 +55 52 55 59 62 64 64 57 59 59 64 56 +49 56 52 54 57 51 54 60 74 80 84 81 +87 92 96 113 116 117 119 121 129 129 130 130 +124 129 126 124 125 128 126 128 127 132 132 134 +133 132 132 135 137 133 134 138 139 142 141 144 +144 148 147 145 149 146 148 151 143 146 149 146 +144 146 145 145 145 149 149 149 150 162 160 160 +169 169 174 178 181 187 192 195 194 198 195 199 +200 202 201 202 204 205 197 190 166 140 117 86 +73 62 63 58 52 54 59 52 54 53 60 57 +53 46 49 44 51 48 60 52 59 54 61 85 +79 83 89 102 114 86 71 80 80 88 85 98 +77 84 81 75 81 94 92 74 79 81 83 71 +76 62 69 110 170 172 146 153 152 144 126 121 +121 116 127 116 122 129 127 121 114 113 114 112 +110 110 119 117 113 114 111 112 116 112 110 113 +111 109 112 113 115 115 115 117 117 120 126 120 +123 127 127 125 128 129 125 132 136 129 134 132 +130 133 133 132 131 132 132 127 124 124 120 120 +115 118 115 128 162 187 201 208 211 214 214 213 +212 209 205 204 207 205 206 207 205 204 209 209 +208 209 208 209 208 209 209 205 201 204 201 196 +195 195 191 190 183 177 168 158 141 120 95 74 +63 49 44 45 42 42 47 45 51 52 61 61 +68 78 84 81 84 81 78 72 +64 64 63 69 +72 65 65 57 57 51 51 52 50 50 45 37 +41 39 45 55 59 64 74 74 69 66 74 76 +88 106 117 123 131 139 141 149 154 160 162 167 +169 169 172 174 173 170 169 171 169 174 169 175 +173 173 169 169 165 160 159 150 144 146 159 187 +204 173 107 70 54 63 80 86 74 50 48 86 +154 118 53 39 37 38 40 36 32 38 57 84 +93 89 74 69 68 55 60 63 68 61 47 56 +55 58 66 117 91 62 59 59 44 58 52 48 +60 68 85 102 130 126 130 128 101 107 134 140 +134 119 76 40 44 50 59 91 87 109 127 129 +144 159 159 111 65 78 96 102 85 87 99 98 +117 129 131 113 80 99 109 94 77 53 74 105 +134 158 133 131 159 163 153 103 49 42 43 42 +43 46 54 56 74 65 69 76 96 80 59 53 +48 42 44 52 55 63 84 54 56 54 47 60 +55 53 53 47 46 47 52 48 57 57 56 52 +48 48 55 50 54 58 61 55 56 47 51 58 +62 61 65 68 56 56 55 55 50 53 61 54 +48 50 52 59 76 83 85 83 85 95 103 110 +118 121 121 130 131 123 130 128 128 120 122 127 +126 123 130 128 135 134 131 131 134 129 134 133 +138 134 136 138 135 141 141 143 143 143 147 148 +151 146 147 146 144 145 144 141 145 146 143 148 +142 144 144 146 151 159 160 165 172 173 172 179 +184 185 192 194 196 198 197 197 197 199 197 201 +204 203 206 207 203 188 172 145 114 87 68 61 +58 57 53 53 54 56 56 54 58 56 50 50 +52 52 59 49 53 57 61 70 89 88 90 111 +115 95 75 84 79 91 83 93 68 81 82 76 +78 95 91 76 74 78 80 78 82 65 73 116 +177 169 148 154 149 137 128 120 126 116 133 126 +125 128 129 123 117 115 121 119 113 114 114 114 +114 108 112 111 112 110 113 109 111 105 110 108 +109 105 110 108 109 117 111 113 119 122 120 120 +121 118 124 121 120 121 125 129 129 128 131 130 +127 128 126 124 122 124 122 119 114 117 114 127 +162 185 198 205 209 215 214 213 211 207 205 204 +204 204 205 207 206 209 210 211 207 207 206 209 +208 209 209 208 202 200 197 194 190 189 187 183 +176 173 157 147 118 103 74 57 45 44 38 47 +46 45 49 54 57 59 61 65 74 78 85 75 +83 77 74 73 +75 75 67 72 61 62 66 60 +59 55 57 51 53 54 53 45 50 46 48 55 +66 68 67 65 67 65 68 75 92 100 111 126 +129 136 142 149 155 162 165 167 169 172 170 168 +170 171 172 164 170 171 175 169 173 175 171 168 +163 161 159 151 156 172 202 201 163 105 77 66 +60 82 93 74 61 53 66 132 169 111 50 41 +46 45 45 40 40 43 52 75 101 88 78 57 +50 49 54 72 73 50 56 56 56 58 64 109 +106 77 61 58 52 57 54 48 54 73 68 74 +105 128 129 137 116 88 96 127 141 142 116 84 +83 83 86 85 96 112 133 145 158 156 131 85 +76 67 71 104 109 86 82 91 100 123 136 137 +109 71 74 70 98 96 81 115 152 153 118 118 +121 157 177 142 79 45 43 47 54 49 53 62 +62 67 66 75 88 77 59 57 52 42 45 46 +56 69 87 64 63 51 46 55 60 54 48 45 +49 43 54 54 57 63 50 49 46 49 56 51 +52 52 55 51 50 48 49 56 56 63 59 57 +54 56 60 62 57 54 54 58 52 47 56 60 +73 80 84 89 87 95 104 115 114 117 123 121 +128 128 125 128 129 123 124 128 127 127 129 128 +130 133 130 130 137 131 137 135 138 141 138 138 +134 135 139 144 143 148 147 147 148 147 144 142 +142 147 140 143 142 144 140 142 143 147 147 148 +153 154 160 168 172 173 176 178 185 184 189 192 +195 197 196 197 198 199 201 200 202 201 200 204 +204 200 202 194 174 148 119 95 69 60 53 51 +51 50 49 52 59 49 42 48 50 37 48 44 +49 60 61 66 90 86 87 100 112 89 73 88 +79 93 79 85 70 76 78 73 84 95 83 76 +68 68 84 84 78 59 72 126 182 166 146 152 +148 135 127 114 124 122 138 129 128 131 133 129 +118 119 125 119 122 115 115 115 114 111 108 113 +112 105 109 107 105 105 108 106 107 105 107 110 +103 108 104 105 109 113 111 114 113 114 116 112 +121 116 121 122 125 116 120 124 123 122 120 123 +118 117 120 115 114 110 115 128 162 185 199 205 +209 212 212 210 208 205 205 205 202 204 205 208 +207 208 206 211 209 207 209 209 208 209 209 206 +203 197 196 190 188 183 178 175 165 157 141 128 +101 83 55 46 41 41 38 47 44 53 60 59 +58 65 76 79 79 84 88 89 90 77 82 84 +95 95 82 80 70 69 75 65 59 60 50 54 +52 55 53 47 49 47 51 66 68 60 72 62 +57 63 58 71 81 92 107 118 125 132 142 148 +155 159 164 167 173 170 170 171 169 166 168 171 +171 172 171 171 174 175 172 168 168 164 160 155 +181 207 203 160 118 84 69 63 56 77 71 72 +55 64 101 166 164 85 50 39 36 41 40 36 +34 35 52 71 90 88 79 61 43 42 52 69 +60 46 53 52 57 53 67 120 106 84 71 65 +61 76 64 56 55 61 53 57 70 112 132 133 +125 100 81 91 131 142 132 120 123 119 121 125 +120 129 154 156 166 144 92 72 82 78 79 85 +119 111 88 96 90 106 127 145 127 86 67 61 +94 144 117 117 160 143 119 118 86 88 166 171 +129 72 58 42 43 50 54 53 59 57 64 74 +82 68 50 43 39 42 42 43 57 75 92 61 +52 46 46 51 57 52 49 50 50 50 44 50 +57 60 51 50 47 52 55 53 53 50 45 52 +57 51 50 54 59 60 58 57 57 58 57 59 +59 53 51 56 57 47 51 52 68 71 82 88 +92 100 105 116 110 118 123 124 125 123 125 126 +123 125 127 121 122 123 125 126 126 130 132 132 +132 134 134 136 135 140 139 137 138 138 140 141 +142 146 148 145 143 147 138 139 144 143 140 140 +142 144 144 143 142 145 150 152 151 158 165 171 +171 171 177 176 185 186 190 194 193 197 197 199 +200 198 198 202 200 200 204 201 203 202 202 204 +202 194 178 156 121 92 62 52 49 49 42 47 +53 42 38 41 49 41 41 39 49 51 55 63 +81 88 75 94 118 90 70 76 76 88 79 83 +73 73 80 67 81 94 83 80 70 65 78 89 +74 55 74 134 181 163 149 151 146 132 126 122 +129 127 138 132 131 130 133 138 132 127 127 122 +127 126 122 120 123 115 112 114 114 102 104 109 +107 102 104 108 108 100 106 106 103 105 105 101 +108 107 113 113 110 119 117 115 114 111 115 109 +116 114 115 119 117 115 115 120 120 112 111 109 +108 112 114 122 164 187 199 204 207 213 210 209 +206 203 204 203 205 203 206 207 207 209 209 209 +210 207 207 208 209 210 208 206 205 196 195 189 +185 180 174 165 149 133 112 96 72 52 37 42 +38 43 45 48 54 62 61 63 64 71 72 77 +81 86 86 79 87 79 90 91 +111 111 99 103 +88 86 74 66 69 66 61 53 53 52 49 45 +49 52 51 66 68 63 66 58 52 57 61 66 +74 86 104 115 125 130 142 147 153 162 164 167 +171 171 169 168 173 170 169 172 171 169 169 168 +176 175 173 170 168 169 172 177 194 190 153 123 +102 87 69 62 64 64 75 87 63 96 139 166 +128 54 39 33 38 35 41 44 38 34 43 49 +70 86 78 73 47 42 57 62 58 45 48 52 +47 56 72 107 113 104 81 57 59 68 66 60 +62 62 40 42 47 77 135 140 130 115 91 90 +106 115 111 117 136 136 144 141 141 149 157 156 +157 107 63 66 83 99 93 75 90 115 107 96 +96 99 115 123 120 99 80 76 99 147 152 147 +182 159 133 125 83 53 121 182 169 112 61 41 +42 41 48 57 54 52 64 72 87 72 59 45 +49 44 50 45 54 84 84 61 53 49 46 58 +55 48 44 49 42 47 44 53 58 54 55 52 +52 44 48 51 46 51 47 54 50 48 42 48 +54 62 62 62 57 59 56 63 60 54 51 60 +56 44 53 55 69 74 85 85 92 94 104 118 +117 113 122 121 122 119 124 128 127 127 126 122 +124 125 123 125 125 132 132 131 138 131 138 138 +138 135 137 137 141 138 137 142 141 144 144 141 +142 143 137 140 143 142 137 138 140 142 144 144 +143 144 151 151 152 160 163 172 170 171 179 180 +183 186 191 193 197 196 196 197 200 201 198 202 +201 199 200 202 202 199 204 203 203 204 206 202 +182 154 119 96 64 48 45 48 50 45 41 37 +36 38 39 36 41 52 58 66 84 91 73 87 +116 89 71 81 77 93 76 87 73 77 84 66 +85 92 80 81 67 66 69 69 68 53 77 137 +180 160 149 149 150 130 126 128 126 133 143 131 +129 132 133 139 137 134 129 124 125 125 128 119 +119 118 120 121 116 114 116 113 106 105 105 105 +107 105 102 102 97 97 103 94 102 105 106 105 +105 109 115 104 107 104 105 105 109 109 111 107 +111 111 105 108 111 110 108 103 102 103 106 129 +163 185 195 206 206 212 209 210 206 204 200 205 +203 204 208 208 207 207 209 208 209 209 207 207 +209 207 208 207 204 199 193 186 182 176 171 148 +123 99 80 64 51 54 46 41 42 43 49 57 +57 56 59 63 69 75 80 83 85 88 87 84 +81 82 89 88 +121 121 116 112 99 99 92 82 +80 74 73 62 64 56 55 51 51 56 55 63 +60 52 56 59 53 48 49 58 64 74 92 109 +117 127 136 144 152 157 163 168 167 171 167 168 +171 173 167 169 172 169 172 170 169 176 178 177 +182 190 186 177 171 152 129 114 103 86 78 66 +70 66 95 97 84 135 151 130 86 48 43 36 +47 45 49 39 39 39 45 44 57 77 85 85 +64 48 71 84 43 37 44 45 53 45 59 89 +107 102 84 61 73 73 62 56 77 81 44 34 +36 59 109 151 135 120 116 92 86 60 60 78 +90 105 121 113 123 143 157 160 128 84 62 70 +79 101 105 93 75 86 113 118 109 100 105 110 +117 98 99 98 116 126 146 179 197 154 122 126 +95 58 63 139 176 157 86 49 41 48 46 57 +50 53 65 74 87 76 54 45 44 40 49 52 +55 85 91 57 46 47 46 55 53 49 45 49 +51 46 41 48 50 54 53 52 51 49 44 51 +51 52 48 47 51 52 51 56 60 66 62 70 +56 58 58 64 52 52 54 57 58 49 49 52 +61 79 72 89 86 98 109 118 121 122 121 122 +112 122 125 128 125 125 126 123 125 125 125 123 +126 123 128 132 140 138 138 131 135 132 135 141 +138 134 139 140 140 141 142 142 139 135 141 140 +140 141 138 146 140 143 142 142 143 144 148 153 +153 161 165 168 171 172 181 184 185 188 189 191 +196 197 195 199 199 198 198 199 200 199 202 204 +202 202 201 200 204 204 207 209 206 199 178 150 +120 86 56 50 46 41 38 35 40 37 36 36 +41 53 50 65 80 77 74 81 115 96 67 73 +79 89 77 86 71 80 79 64 80 91 76 72 +64 73 75 64 72 53 82 137 179 148 152 149 +147 131 124 133 130 136 139 135 132 132 133 140 +144 134 129 127 129 130 127 125 125 118 117 125 +115 115 110 113 109 107 105 107 104 104 98 101 +98 101 102 103 97 100 89 97 98 108 101 108 +101 99 100 101 101 105 105 100 104 108 107 112 +104 100 97 97 101 95 96 129 159 180 191 200 +205 208 208 209 205 205 203 200 202 206 207 207 +207 205 208 208 206 209 207 209 208 210 209 207 +204 195 192 182 177 167 152 120 97 70 50 46 +45 42 46 48 50 55 61 67 60 63 65 69 +67 73 84 81 81 82 80 82 84 86 85 91 +129 129 126 121 114 111 103 88 85 78 78 76 +73 63 59 56 52 60 70 65 63 56 55 61 +53 49 55 57 68 78 91 103 115 126 137 148 +155 160 164 167 168 170 171 170 173 172 170 170 +170 170 173 172 171 177 184 188 201 193 179 158 +152 141 129 117 104 91 74 68 71 84 122 93 +141 168 142 94 62 46 41 39 42 35 40 38 +41 42 46 45 51 60 72 93 80 73 89 83 +35 31 38 43 52 48 59 83 113 102 96 80 +75 75 70 60 89 83 40 33 30 50 70 126 +145 123 132 120 97 72 51 60 66 76 87 71 +85 140 146 139 72 71 93 88 90 95 108 98 +89 95 97 132 130 111 113 104 119 109 103 108 +120 124 111 176 184 123 93 81 93 76 65 69 +124 166 124 50 43 45 49 59 62 60 68 70 +88 70 48 47 49 44 41 46 56 83 92 62 +47 48 44 53 54 46 46 42 52 50 44 47 +61 61 54 53 49 50 47 54 49 47 44 49 +44 51 55 58 57 63 60 60 53 61 59 61 +61 64 57 57 56 46 45 48 56 78 80 83 +90 94 105 111 117 125 121 115 122 123 121 126 +123 125 128 124 127 125 128 127 121 132 129 130 +138 135 138 133 136 136 134 134 138 138 142 139 +139 145 140 138 138 143 139 140 139 138 141 138 +144 142 142 143 148 147 152 153 157 161 168 170 +172 173 179 184 189 190 190 193 193 195 193 197 +199 197 198 200 202 200 201 200 204 202 201 201 +202 204 205 204 208 209 207 200 180 147 106 72 +50 41 37 38 41 36 34 35 39 49 49 67 +78 72 93 85 108 94 64 70 78 88 79 88 +78 76 78 67 79 84 70 73 64 78 67 57 +80 48 91 138 179 153 153 139 147 136 125 141 +136 139 139 136 134 139 136 138 144 139 133 130 +133 129 126 131 126 127 129 126 122 120 116 116 +121 114 113 109 107 97 104 105 102 100 98 99 +100 103 96 96 95 97 101 98 97 95 101 92 +98 99 96 100 110 109 108 110 109 99 92 90 +88 84 88 118 151 172 191 201 207 208 208 206 +203 205 203 203 205 206 207 208 207 207 204 210 +208 207 206 209 206 205 204 203 201 196 186 177 +169 152 131 96 69 51 45 44 51 49 50 53 +61 59 69 65 70 66 67 73 76 73 85 87 +84 81 82 84 86 86 88 89 +127 127 127 130 +127 121 112 105 94 89 84 84 81 65 68 58 +60 63 71 68 63 58 53 56 52 47 50 59 +65 76 85 105 111 124 135 143 151 156 160 170 +170 169 169 170 173 171 173 171 174 170 170 173 +173 181 188 194 189 170 163 159 154 138 129 119 +109 90 79 65 78 110 116 114 182 171 96 62 +45 41 36 37 39 40 40 38 38 38 45 46 +43 46 64 87 98 96 112 77 32 31 35 48 +49 57 56 76 116 108 97 85 77 75 66 81 +107 66 36 37 32 40 56 76 131 133 132 124 +119 104 85 74 75 84 97 75 80 124 139 119 +55 64 101 111 96 95 98 90 98 102 101 98 +123 127 111 117 111 115 111 107 111 115 95 149 +171 136 81 65 86 73 80 78 74 105 149 100 +51 46 51 58 52 48 62 76 90 64 53 46 +46 38 37 43 57 80 95 58 48 45 45 56 +49 49 44 45 53 48 46 47 54 60 54 56 +55 58 50 51 48 48 45 44 49 59 55 57 +53 54 61 60 54 58 68 73 64 55 52 59 +55 49 46 50 52 70 76 81 91 91 106 107 +111 115 116 117 122 126 126 121 120 125 124 120 +123 126 127 123 129 130 128 131 134 136 133 137 +132 137 134 133 137 136 141 137 141 139 136 141 +147 145 141 137 139 139 139 140 145 140 142 147 +148 145 154 157 158 162 169 174 175 181 184 187 +186 190 191 189 193 193 194 195 196 195 196 201 +201 202 200 200 202 202 204 200 201 201 205 203 +204 208 208 210 208 195 168 136 93 54 49 43 +36 36 38 38 37 48 52 72 74 74 91 81 +108 102 66 79 74 89 74 84 73 75 75 65 +82 84 72 73 68 71 74 64 80 49 93 144 +176 150 149 149 146 137 130 145 142 140 140 137 +137 136 139 141 137 143 136 131 136 136 132 132 +132 128 125 126 131 121 125 120 119 123 110 110 +113 107 104 111 106 105 98 100 98 96 98 96 +97 93 99 96 93 98 88 92 95 100 93 104 +110 107 113 110 102 100 92 86 78 77 88 107 +143 172 192 201 206 209 208 205 206 204 203 203 +205 207 208 209 209 209 207 206 208 208 205 206 +206 203 201 200 195 192 182 167 156 137 105 75 +45 39 45 43 45 53 65 61 65 65 71 68 +67 71 74 77 80 78 85 83 82 82 81 88 +84 82 82 84 +132 132 132 131 130 126 125 120 +107 96 92 85 86 79 70 65 66 63 77 75 +59 62 56 56 49 54 46 55 65 70 85 102 +114 125 136 146 151 157 161 167 167 170 171 167 +169 172 175 171 170 172 168 172 181 180 179 180 +176 164 162 160 150 138 132 121 105 91 80 80 +96 136 103 143 204 162 58 49 46 36 39 46 +38 40 40 40 37 41 48 40 42 41 51 77 +95 119 118 71 30 29 33 37 41 49 57 67 +118 119 105 83 73 79 75 97 114 64 37 34 +35 36 41 56 81 116 147 140 132 133 119 100 +89 107 92 63 89 124 142 105 62 51 84 119 +126 103 102 100 104 115 107 84 89 134 129 124 +110 114 109 111 118 129 106 133 164 161 126 89 +104 68 52 82 94 80 146 156 86 51 55 53 +52 55 67 69 82 65 51 48 48 44 38 43 +55 81 79 53 52 45 43 52 51 46 47 45 +47 45 39 43 52 55 54 61 54 50 51 52 +51 45 45 50 48 53 57 59 57 53 61 60 +61 63 75 74 64 56 54 55 54 50 48 49 +54 61 70 81 95 98 103 103 115 115 113 119 +121 119 123 124 122 122 121 120 126 128 125 128 +130 127 125 127 134 136 131 135 133 139 136 134 +139 136 138 142 139 143 137 138 142 137 140 137 +138 140 142 144 143 144 147 149 150 151 153 160 +161 162 167 167 172 178 185 183 185 190 190 189 +191 190 193 194 192 192 194 196 198 197 199 201 +199 203 204 205 203 202 204 208 203 208 206 210 +211 211 207 190 153 110 74 44 42 40 32 36 +37 56 52 77 71 72 86 81 104 95 70 72 +74 86 71 79 69 71 73 59 82 78 69 75 +71 79 76 59 75 51 95 142 171 153 146 144 +144 137 134 151 144 143 142 139 139 140 141 131 +141 148 139 134 135 134 132 132 131 134 132 129 +128 127 126 129 125 122 117 117 113 115 112 114 +109 103 103 107 100 98 99 95 97 91 97 97 +96 89 89 90 97 89 96 104 111 116 112 110 +110 105 94 80 76 72 79 104 139 172 191 200 +206 207 207 205 203 204 203 205 205 208 211 210 +210 207 205 208 206 205 204 205 202 200 194 195 +188 182 169 157 141 115 83 56 46 40 47 50 +62 72 79 74 77 74 74 75 72 75 72 79 +84 81 88 81 80 89 83 91 92 86 86 85 +138 138 133 135 130 131 134 127 115 109 107 98 +91 89 82 78 71 70 77 81 71 64 57 57 +53 50 47 49 64 76 90 96 112 127 137 145 +153 159 161 165 165 169 167 170 167 171 171 171 +170 169 167 170 175 175 177 171 172 166 162 159 +148 144 128 114 104 91 84 100 129 129 90 180 +210 126 53 45 46 44 43 42 40 42 47 39 +42 50 43 41 39 43 53 69 80 128 126 69 +33 31 36 38 37 46 52 64 120 129 111 79 +74 77 78 117 120 67 49 44 46 35 39 53 +60 85 125 142 132 144 140 124 104 100 91 89 +116 138 145 71 67 69 56 88 121 128 109 99 +103 113 123 93 71 110 150 142 117 111 122 117 +130 138 126 128 138 143 165 123 78 52 45 63 +103 99 97 178 129 57 53 53 51 54 64 73 +79 58 55 47 41 37 37 41 59 86 76 55 +53 50 50 56 59 50 45 44 53 51 43 44 +54 62 56 59 56 57 57 48 58 52 49 50 +53 52 54 57 55 51 55 61 68 67 72 76 +66 60 53 63 59 49 50 52 58 65 74 84 +101 102 104 106 110 115 110 110 117 114 121 124 +120 125 126 127 129 129 128 133 134 125 132 127 +128 134 137 134 133 137 139 140 136 138 143 141 +140 139 137 142 140 144 140 135 138 139 142 143 +141 149 148 147 150 156 160 155 161 168 167 172 +173 177 182 182 186 190 189 188 192 189 188 189 +190 190 192 196 199 194 197 198 200 199 201 202 +203 201 201 204 204 205 206 208 210 212 210 208 +198 171 135 83 50 43 38 35 37 53 56 75 +70 55 87 87 101 102 68 64 73 80 70 82 +72 67 73 64 73 82 65 71 75 81 68 56 +71 54 101 150 165 160 147 143 137 135 135 153 +143 144 146 143 138 139 143 141 142 144 143 135 +136 134 134 135 131 135 133 133 131 129 131 127 +124 125 122 125 123 119 114 113 112 112 109 109 +101 103 98 98 100 90 93 95 96 89 89 90 +90 95 99 111 118 123 115 120 113 105 95 83 +76 71 81 99 142 173 194 202 206 208 206 206 +205 204 201 205 207 209 210 211 210 207 207 206 +207 207 205 205 202 193 190 183 177 170 154 132 +113 83 65 50 45 45 55 64 67 75 79 77 +79 79 73 70 77 77 72 82 83 84 89 85 +83 93 82 89 89 91 89 87 +137 137 133 132 +139 133 132 130 124 121 117 106 94 92 85 80 +80 82 83 76 73 67 60 59 46 54 51 53 +63 75 88 102 110 124 134 146 153 160 162 166 +167 169 169 167 169 169 168 174 173 171 169 169 +172 175 172 167 170 167 163 155 147 142 134 121 +109 93 94 108 159 100 97 192 192 92 39 42 +50 40 39 39 46 41 45 42 43 43 39 39 +54 63 61 72 70 125 115 66 37 31 36 35 +35 50 57 75 129 138 115 71 72 77 96 118 +98 54 45 54 42 39 40 51 72 81 87 86 +77 107 141 134 121 98 99 128 148 142 127 69 +66 79 64 61 82 125 127 107 112 110 120 108 +75 82 135 158 144 121 117 131 134 136 119 107 +105 107 153 154 103 52 47 47 89 131 99 154 +160 87 51 46 55 58 70 71 77 52 51 43 +46 39 36 41 61 98 86 63 56 51 45 54 +59 59 50 48 52 44 44 43 52 62 55 51 +57 79 70 50 51 50 50 48 53 51 53 48 +58 53 57 57 60 58 64 70 76 67 56 64 +56 56 52 47 56 62 78 80 89 95 99 109 +110 109 112 117 117 117 123 122 120 127 124 125 +124 126 132 129 128 126 120 127 127 130 135 137 +132 142 140 139 139 141 144 141 139 139 140 139 +140 140 139 136 140 145 146 147 138 145 146 149 +149 155 155 158 161 165 173 173 174 177 181 182 +185 186 188 188 190 189 189 188 189 193 192 195 +193 195 195 193 201 199 202 200 203 202 205 202 +202 204 207 209 210 209 209 212 211 203 186 144 +99 57 46 33 37 43 45 61 60 48 65 91 +101 98 64 62 73 75 75 80 64 73 76 67 +76 83 74 70 69 74 61 58 66 58 114 160 +164 154 150 142 136 130 136 149 146 146 148 144 +144 141 143 141 143 140 144 136 138 134 137 135 +135 136 137 135 133 133 133 136 135 128 122 127 +123 119 125 121 114 116 113 116 109 106 109 104 +103 92 102 98 92 85 89 85 96 95 105 117 +121 128 121 118 117 112 101 89 79 76 76 98 +143 175 192 204 206 209 208 206 206 206 205 208 +209 212 212 211 208 208 208 206 207 207 206 202 +197 187 176 171 162 144 130 95 79 58 46 44 +50 49 63 69 71 75 77 86 79 73 80 77 +81 82 82 84 84 88 88 90 92 89 81 82 +88 87 83 85 +139 139 136 137 139 135 135 133 +132 129 121 118 110 103 96 90 85 81 84 83 +78 69 70 55 50 46 42 47 64 72 84 104 +111 124 135 145 153 163 163 167 166 167 170 167 +172 166 171 170 169 169 172 171 174 170 174 171 +169 165 163 157 150 141 129 115 111 121 112 143 +160 85 108 191 156 59 45 44 39 37 43 43 +40 46 43 39 42 42 44 37 65 105 99 93 +88 118 104 64 38 29 32 30 34 42 64 113 +136 139 99 66 72 85 110 100 68 45 49 57 +46 34 43 68 100 89 93 66 56 69 86 117 +108 106 121 153 131 96 77 66 64 83 84 69 +62 93 130 122 113 118 112 117 98 86 109 146 +163 135 116 127 131 135 123 94 100 112 125 160 +150 97 51 41 50 78 100 108 162 133 66 49 +56 56 68 75 62 50 55 44 45 39 45 47 +56 94 73 67 49 48 51 56 55 53 54 50 +58 47 49 45 48 52 57 53 58 70 68 51 +51 54 50 52 44 49 54 52 54 49 54 62 +62 59 69 75 83 76 57 55 55 57 50 49 +55 67 83 80 87 98 100 105 119 118 118 113 +115 115 116 122 119 124 122 128 124 127 131 127 +123 122 123 131 135 133 135 140 137 143 141 144 +139 142 143 137 144 133 139 134 139 141 134 136 +139 139 143 146 143 145 147 151 154 154 156 159 +165 174 172 173 176 181 181 183 185 187 190 190 +189 191 189 187 188 193 193 196 195 193 194 193 +198 198 200 200 201 201 204 203 204 207 206 206 +208 209 208 210 213 211 208 194 159 115 66 48 +45 49 45 59 58 52 57 93 98 95 70 64 +76 77 78 80 72 67 80 73 90 83 74 64 +72 76 62 51 70 60 116 168 159 156 148 139 +135 131 140 151 145 146 144 141 146 147 145 142 +140 143 142 138 133 140 141 136 134 137 134 136 +133 139 134 137 130 133 128 127 128 120 122 120 +122 125 116 112 111 114 104 104 101 108 108 101 +93 90 85 88 103 105 104 114 129 131 126 124 +114 107 105 85 73 69 80 104 151 177 195 201 +208 209 208 209 205 207 204 209 210 214 213 212 +210 209 209 207 207 205 204 201 194 176 168 155 +137 120 89 64 47 46 41 49 53 61 68 75 +79 80 80 74 79 79 83 77 82 81 85 86 +89 95 87 97 94 88 85 83 83 86 80 85 +134 134 130 134 139 143 140 135 133 131 131 123 +118 110 115 98 97 93 95 90 82 79 69 62 +48 44 42 50 63 74 85 100 113 121 136 142 +152 157 162 164 168 168 166 170 170 168 168 169 +172 172 173 171 171 171 174 173 168 163 160 156 +149 138 125 120 134 146 126 179 142 96 116 155 +116 46 46 44 42 41 47 41 40 38 36 38 +40 33 35 43 54 107 125 123 116 123 108 88 +67 45 44 42 51 75 112 135 143 116 71 59 +72 90 89 74 60 64 53 45 44 41 59 101 +113 96 77 65 54 58 68 102 107 132 134 126 +86 63 56 57 71 73 80 80 63 68 95 130 +123 123 118 112 106 102 117 135 160 150 127 121 +127 133 135 100 77 109 99 113 162 142 74 37 +45 49 77 112 125 169 100 55 52 52 63 60 +62 53 51 44 45 45 43 47 61 90 79 71 +58 50 51 59 51 50 56 49 54 48 50 48 +53 48 60 54 55 63 74 68 52 51 54 52 +58 51 51 58 62 60 52 65 65 56 62 76 +80 80 68 59 57 50 55 51 55 57 80 79 +96 90 102 105 109 115 116 115 120 118 118 121 +123 127 127 129 126 126 129 126 121 121 130 132 +134 135 138 139 141 137 141 142 140 140 147 139 +142 139 140 134 139 138 135 134 139 146 146 145 +147 146 148 151 154 158 159 164 163 168 171 177 +175 177 180 184 182 187 190 191 188 188 190 187 +191 190 192 196 194 195 194 192 200 197 201 201 +199 204 205 203 204 206 203 208 207 208 210 209 +210 211 214 211 200 171 121 72 46 45 54 56 +48 48 57 86 101 97 71 62 77 71 71 79 +65 64 81 69 80 83 67 68 69 70 52 53 +69 59 122 169 152 156 149 137 138 141 146 154 +143 155 148 145 143 145 146 145 141 144 139 142 +139 139 141 135 140 136 140 139 137 135 139 133 +135 133 132 123 130 123 123 120 123 120 120 123 +114 117 110 110 110 110 113 102 99 102 90 98 +98 107 116 119 127 134 130 125 114 110 97 83 +78 69 86 116 155 183 196 201 209 208 209 209 +210 206 208 209 210 213 214 211 211 210 210 209 +207 206 205 201 190 172 155 135 107 86 60 48 +39 43 41 51 61 76 80 80 85 86 83 74 +78 74 78 79 88 88 88 91 91 94 91 93 +93 92 82 85 77 82 87 91 +135 135 129 139 +139 139 140 138 142 141 134 133 124 115 113 106 +96 95 98 88 83 79 75 60 48 43 42 50 +57 68 84 100 115 122 135 146 149 159 162 166 +167 168 171 170 169 172 168 170 171 172 171 176 +176 174 171 172 169 164 158 153 145 138 128 119 +147 149 151 197 108 95 124 122 89 51 39 45 +45 46 43 44 44 38 38 39 35 32 36 36 +42 59 100 129 136 131 127 122 112 104 93 91 +104 126 134 132 108 74 61 70 66 80 68 69 +80 89 48 39 45 58 94 119 117 78 59 59 +59 67 80 119 130 130 109 77 80 76 58 59 +79 80 77 87 83 69 77 104 116 117 123 122 +114 125 133 155 137 152 138 134 124 134 144 117 +58 66 63 60 118 152 126 57 44 50 52 105 +102 170 147 65 51 54 64 63 66 61 55 53 +52 48 43 51 66 91 75 71 58 54 56 63 +60 52 55 49 52 47 45 50 58 55 58 55 +56 63 63 61 56 55 54 55 52 49 50 53 +62 64 61 61 68 57 54 73 79 79 71 54 +51 54 60 56 50 60 87 81 91 98 100 113 +113 116 115 115 119 119 116 116 119 128 130 126 +126 123 123 125 121 132 130 134 133 134 139 139 +140 141 143 143 144 140 144 142 138 143 133 134 +135 139 138 134 140 143 144 145 145 145 151 154 +157 156 161 161 164 166 167 169 172 173 178 181 +182 187 189 186 186 186 188 187 189 190 189 191 +191 193 194 193 195 198 198 200 204 202 202 203 +203 204 206 207 207 208 205 209 209 211 213 212 +211 202 177 127 76 47 46 54 47 43 45 77 +92 87 64 60 70 67 69 69 60 63 68 63 +78 81 72 68 68 72 49 52 72 59 131 174 +149 154 144 140 138 135 150 159 145 150 148 142 +149 141 145 145 146 140 139 145 138 138 143 137 +141 139 137 140 139 135 136 131 135 136 133 129 +133 130 128 126 127 121 118 122 118 117 118 116 +114 108 106 107 103 103 96 91 94 114 109 126 +126 133 136 127 117 110 96 88 80 78 96 133 +159 188 199 204 207 212 210 210 209 210 212 210 +211 211 213 212 212 208 209 209 207 205 205 198 +184 163 141 111 83 59 64 38 37 40 51 59 +76 89 83 84 87 83 79 75 77 77 76 78 +82 89 89 91 90 94 99 93 86 85 85 85 +78 80 83 86 +133 133 128 132 140 138 150 146 +151 145 143 138 134 131 121 115 101 106 102 90 +88 75 68 64 54 46 43 53 54 65 87 101 +115 128 140 147 150 162 165 168 166 170 170 171 +170 172 168 172 174 171 174 171 174 175 175 170 +166 165 160 151 144 137 130 129 166 171 189 185 +84 95 110 116 89 56 44 42 43 41 43 47 +49 44 34 39 40 39 31 32 40 46 63 90 +106 111 132 142 140 131 128 130 135 145 130 100 +68 70 76 81 62 68 66 72 87 67 41 44 +60 102 124 126 93 63 56 59 62 73 101 141 +121 98 71 59 78 69 60 59 58 69 88 86 +92 81 70 84 113 117 121 129 122 124 141 158 +131 141 142 145 132 127 136 138 86 47 47 45 +60 128 162 106 51 37 45 80 102 129 177 109 +49 49 63 62 56 54 51 50 44 46 48 50 +61 96 79 62 57 53 48 59 53 53 58 46 +52 49 47 46 55 49 56 56 57 65 57 56 +61 55 52 51 51 50 46 50 60 67 54 67 +70 67 55 72 85 79 81 53 54 55 55 55 +48 66 86 78 87 93 102 108 113 118 118 117 +118 120 122 122 126 130 123 129 126 126 120 120 +128 130 131 131 137 134 137 140 142 147 143 142 +142 139 138 137 141 141 136 135 133 137 135 136 +142 144 142 146 147 149 156 154 159 155 163 160 +162 164 169 168 167 175 180 181 181 183 186 186 +184 186 185 187 190 192 191 190 191 188 190 190 +192 196 197 198 200 200 204 203 203 204 203 206 +207 208 206 211 208 210 211 212 213 214 205 183 +130 77 51 48 42 41 49 71 92 85 64 55 +61 65 73 69 64 59 73 68 85 76 63 75 +71 70 49 49 56 62 132 171 147 153 147 134 +139 141 150 152 147 152 145 147 148 143 145 148 +148 145 144 145 142 144 142 142 137 139 139 140 +140 136 134 137 138 136 137 132 133 128 130 129 +130 129 124 119 119 118 117 120 115 112 115 113 +109 106 100 101 100 109 118 120 130 134 138 125 +120 111 104 88 83 84 105 142 169 190 202 207 +208 209 209 211 209 212 210 208 211 212 212 212 +208 209 207 206 205 206 201 193 179 152 127 90 +67 48 42 53 45 49 60 74 84 93 90 87 +85 77 78 77 83 75 79 83 89 92 96 92 +99 102 96 95 95 95 84 83 82 83 87 91 +129 129 127 137 139 142 144 149 152 147 146 144 +139 133 127 124 114 111 106 96 90 82 74 67 +54 49 42 45 54 69 85 99 117 125 139 144 +151 162 163 171 167 173 172 174 172 173 170 171 +171 171 173 171 173 176 174 172 168 163 160 150 +144 138 132 150 194 199 203 158 69 116 95 111 +85 68 56 56 49 38 39 40 41 42 39 40 +47 44 37 42 38 49 60 66 67 59 69 84 +95 107 119 129 126 116 97 72 74 81 83 90 +61 58 59 63 68 53 59 73 102 129 131 104 +62 44 46 49 63 73 122 145 86 76 58 56 +68 68 54 59 57 61 78 102 98 95 76 76 +96 121 115 125 127 126 134 146 134 135 130 149 +140 130 141 151 109 51 41 38 55 139 175 156 +97 45 43 65 92 94 175 149 66 47 62 59 +56 48 46 40 48 42 48 47 52 94 75 67 +66 49 47 64 53 52 53 54 53 49 42 45 +48 45 51 64 61 64 59 61 57 57 56 52 +50 50 50 47 60 67 57 65 75 63 60 77 +86 86 94 65 56 57 47 55 49 63 86 80 +81 89 108 108 114 115 115 118 119 122 124 124 +122 128 128 128 126 116 123 124 134 137 136 137 +134 135 135 137 140 140 140 143 140 140 140 140 +145 141 139 137 141 138 140 139 140 143 143 147 +147 152 155 155 159 157 163 162 163 165 168 166 +169 170 175 182 180 178 183 188 183 181 185 185 +190 192 190 188 190 189 190 192 192 196 196 198 +198 197 202 204 201 204 203 206 207 208 209 211 +210 210 212 213 213 211 212 207 185 134 80 54 +47 40 47 66 86 84 59 50 58 61 71 62 +59 57 73 73 84 73 63 80 63 68 43 47 +54 70 136 168 149 156 148 135 132 140 149 149 +145 148 149 146 146 145 144 149 144 142 138 143 +145 140 145 144 145 137 143 143 137 136 138 138 +138 132 132 139 135 132 127 129 130 125 127 122 +124 122 121 120 116 118 120 110 125 107 103 105 +110 114 116 127 131 135 137 127 119 108 100 89 +85 93 121 152 177 196 204 207 212 212 210 210 +211 210 211 212 211 210 213 212 210 207 207 203 +203 201 198 185 164 144 120 84 57 43 41 42 +58 58 78 89 91 90 93 89 90 86 85 81 +82 78 81 91 97 95 99 95 101 99 98 96 +94 91 84 78 83 80 91 93 +125 125 129 140 +139 140 146 149 152 149 148 143 142 142 132 128 +122 117 111 100 90 81 70 67 60 47 40 39 +50 71 85 103 119 125 134 145 152 160 167 171 +175 173 175 174 172 170 169 177 171 169 173 172 +177 179 175 173 169 163 163 150 140 137 140 181 +213 219 192 109 68 102 68 88 78 75 64 59 +48 44 45 37 46 41 37 39 42 40 39 47 +45 51 63 72 59 39 40 45 54 72 85 89 +76 77 63 61 57 66 69 75 59 56 61 67 +78 86 105 111 121 127 107 76 46 44 38 42 +59 99 139 127 58 55 57 58 58 76 69 56 +57 57 64 89 101 103 88 86 91 96 108 114 +124 133 130 132 138 133 124 140 155 141 147 162 +134 74 35 32 37 106 167 178 152 77 42 52 +85 79 152 181 92 54 50 53 55 55 46 44 +46 40 42 41 54 88 79 63 57 50 51 54 +51 50 57 61 54 55 49 53 61 53 50 61 +63 69 61 65 50 46 49 57 53 54 52 54 +56 77 52 63 66 62 63 85 85 94 99 73 +60 49 48 47 41 55 87 82 87 90 111 115 +113 114 113 117 120 127 132 127 126 124 126 114 +110 117 123 125 135 136 139 138 137 138 134 135 +137 137 141 142 142 137 140 143 140 137 134 134 +135 136 137 139 135 142 144 148 150 156 156 156 +160 159 162 161 164 166 167 167 169 173 173 179 +178 178 181 183 183 185 186 184 187 188 187 183 +192 189 190 194 196 197 197 199 195 195 201 201 +201 204 205 207 208 205 207 210 210 212 210 212 +214 212 215 215 210 186 137 85 48 40 54 65 +80 83 65 50 61 57 66 55 55 64 74 70 +80 67 62 75 58 67 40 46 53 75 142 167 +148 156 148 133 132 142 154 149 148 145 151 147 +145 143 145 143 145 146 142 143 143 141 142 142 +140 143 141 144 139 139 134 133 136 134 133 135 +134 134 133 128 131 123 124 126 126 128 120 118 +125 119 121 119 117 115 110 107 109 112 121 126 +128 132 132 129 118 111 106 96 90 98 136 163 +185 198 203 208 212 210 212 214 213 212 212 211 +211 212 214 213 209 209 202 202 201 199 191 177 +160 130 102 70 48 36 43 48 55 70 80 91 +91 93 89 86 83 86 88 86 81 80 82 92 +96 97 102 99 110 100 95 92 92 89 92 90 +82 86 92 96 +124 124 133 133 138 144 144 147 +151 153 150 147 148 147 140 134 130 121 116 106 +98 86 71 66 58 55 42 39 54 72 85 102 +111 123 134 146 157 161 164 168 173 175 171 174 +174 174 170 173 173 171 172 172 175 177 174 169 +165 166 159 152 141 140 141 196 214 221 172 99 +89 100 71 89 57 57 62 63 56 49 46 44 +44 49 41 47 40 38 42 48 51 66 81 82 +56 32 37 36 51 69 78 66 62 65 64 67 +57 59 50 56 60 72 84 93 104 107 113 107 +108 92 71 56 45 32 38 46 84 128 154 117 +54 43 53 63 61 64 85 61 65 61 62 76 +101 105 103 83 86 93 87 100 113 115 133 131 +131 139 130 131 163 150 132 164 159 103 48 35 +37 60 138 176 187 132 57 51 96 86 98 183 +127 54 56 54 47 48 45 38 50 43 46 45 +56 85 80 58 57 52 53 60 53 49 54 48 +57 50 54 51 51 51 45 60 56 67 63 65 +54 43 49 53 50 57 49 54 58 81 64 75 +58 64 70 82 89 93 96 88 65 57 44 48 +49 48 77 85 73 95 111 114 116 114 114 117 +121 121 131 131 128 115 112 112 116 120 131 132 +137 137 137 140 135 139 136 132 134 139 137 139 +135 137 141 141 140 134 137 137 138 141 138 142 +140 147 146 149 153 153 153 157 159 156 163 158 +160 164 165 167 169 171 173 177 175 179 181 180 +179 181 185 184 185 189 186 187 189 189 188 191 +192 194 195 195 196 196 198 203 200 202 204 206 +207 205 204 209 209 208 209 212 214 212 215 216 +215 209 185 134 77 52 52 69 77 88 66 65 +69 63 67 63 62 74 78 79 85 73 75 74 +63 73 46 54 58 85 148 173 145 154 152 134 +136 144 150 146 152 147 150 148 144 147 145 150 +144 145 142 142 150 143 144 140 146 145 143 141 +140 138 141 138 135 137 134 138 141 139 137 133 +129 126 128 129 131 131 127 121 121 122 120 120 +121 114 112 112 116 116 123 130 131 130 133 127 +117 113 109 101 97 109 140 170 189 200 203 210 +211 212 212 210 210 213 211 211 213 212 212 213 +210 206 203 200 195 191 184 172 148 124 87 59 +43 37 44 53 70 78 85 90 94 87 89 89 +85 84 82 88 82 85 92 97 104 101 104 101 +101 105 96 92 90 89 93 83 86 94 101 102 +126 126 131 129 133 143 144 145 150 153 151 149 +151 148 145 136 128 132 123 118 104 94 85 72 +63 55 45 43 55 74 84 97 109 124 134 147 +153 159 163 166 172 173 173 174 174 175 172 174 +173 174 174 176 177 177 176 173 167 164 156 151 +149 142 151 198 214 216 150 113 120 127 105 86 +45 48 43 54 54 50 49 51 53 63 53 51 +55 57 46 58 63 65 73 78 55 44 44 44 +56 75 89 75 70 66 66 58 59 53 52 48 +48 61 63 65 70 72 66 64 58 63 57 52 +36 36 37 61 98 136 158 115 64 46 48 69 +63 64 88 72 69 67 60 64 76 103 114 104 +86 88 82 91 103 112 132 142 137 131 122 136 +156 157 128 140 164 125 73 40 40 43 93 165 +191 179 98 62 112 85 76 164 158 70 46 50 +46 41 41 42 48 45 41 49 53 85 72 67 +51 52 51 57 53 47 55 52 55 54 52 45 +51 55 55 59 61 69 65 68 51 54 51 49 +52 55 53 56 58 83 58 68 66 57 78 79 +94 99 103 101 75 53 49 44 45 42 66 75 +77 83 111 118 113 119 115 119 118 126 126 127 +122 113 112 113 120 127 134 131 136 136 138 146 +138 137 135 135 138 137 138 142 142 136 140 143 +142 138 143 141 139 140 144 146 145 147 148 151 +149 155 154 160 160 159 164 162 165 165 168 165 +171 169 174 177 177 175 180 178 177 184 180 182 +182 186 185 189 189 189 192 190 194 193 193 193 +194 197 198 201 202 201 201 204 205 205 208 210 +209 209 212 212 211 212 214 215 213 216 208 181 +118 67 45 57 64 79 63 47 58 52 59 53 +54 71 79 82 82 68 74 67 68 70 39 50 +56 93 158 169 147 148 147 132 136 141 149 147 +147 149 154 148 143 142 142 142 144 145 145 141 +148 146 140 141 142 142 141 139 140 138 143 139 +139 142 138 136 134 141 136 136 133 130 129 129 +130 129 131 125 124 132 135 119 119 116 118 113 +115 119 124 125 125 127 131 129 122 116 112 101 +104 122 152 177 193 202 207 209 212 211 211 210 +210 212 212 213 212 211 212 211 208 204 202 198 +194 186 179 163 145 111 81 58 46 44 50 63 +75 84 90 92 85 93 97 89 92 88 89 81 +87 85 95 96 96 107 108 105 105 98 94 94 +89 88 93 88 83 93 100 94 +129 129 121 124 +128 135 142 147 151 152 152 151 151 149 147 136 +132 133 133 125 112 98 86 77 65 55 41 43 +56 65 83 97 113 129 134 143 153 160 163 167 +171 174 176 178 176 172 172 175 171 173 176 172 +179 174 171 173 165 159 161 150 149 142 157 206 +219 209 135 121 144 139 161 94 36 35 40 54 +38 43 48 51 58 60 58 59 53 53 53 68 +61 66 76 71 62 52 44 42 57 88 95 81 +66 61 55 56 63 56 62 63 65 51 53 56 +59 48 51 43 46 62 49 49 46 41 44 57 +86 136 142 113 79 51 40 55 57 67 82 80 +76 71 72 64 67 84 110 108 89 91 79 84 +91 105 126 140 146 136 129 128 139 153 138 92 +147 134 115 70 53 56 72 155 161 200 151 87 +121 85 62 130 184 106 55 57 52 56 47 49 +52 53 50 56 59 88 72 66 55 61 54 59 +54 58 59 60 59 56 52 57 58 59 60 63 +63 69 67 73 56 53 54 51 55 52 57 58 +64 91 72 71 63 56 74 85 98 104 105 101 +89 62 54 48 46 45 63 83 77 91 113 121 +115 121 119 118 117 126 122 122 115 102 110 120 +133 137 131 131 134 132 138 136 138 136 138 136 +136 137 138 143 140 141 141 137 138 137 140 137 +138 141 145 144 146 147 147 149 153 153 156 161 +162 164 161 158 163 168 169 165 167 171 167 171 +175 174 176 178 179 183 176 178 181 183 186 192 +187 188 188 189 191 192 193 193 195 194 200 198 +203 200 201 204 206 206 209 207 209 209 212 212 +211 210 212 215 216 218 217 207 179 111 59 56 +55 71 65 47 48 52 61 54 51 63 67 79 +70 58 76 73 78 71 41 47 56 96 163 166 +142 144 149 135 136 146 149 146 146 147 147 152 +147 146 147 144 145 139 141 135 144 146 141 144 +141 141 142 139 139 142 138 139 138 138 139 138 +139 136 135 138 131 131 132 127 131 128 128 128 +126 126 127 123 120 120 122 116 119 119 124 123 +128 132 133 130 128 125 112 110 110 133 159 182 +196 203 208 212 211 211 213 212 211 211 212 213 +210 214 214 212 208 205 201 195 189 179 167 153 +132 103 72 52 52 47 57 70 85 90 89 90 +87 92 92 94 96 91 89 87 85 88 99 105 +105 117 110 105 104 103 94 95 92 87 85 82 +87 95 96 94 +121 121 117 126 126 131 140 145 +147 149 151 151 153 150 149 142 136 141 135 134 +121 109 90 88 69 50 44 45 62 72 80 93 +109 125 137 150 155 160 166 167 173 176 177 174 +172 173 172 174 173 171 173 176 176 177 170 169 +165 165 159 150 148 141 148 198 219 199 117 91 +115 142 197 105 36 36 32 39 35 36 47 49 +55 55 59 60 60 58 57 65 72 62 80 76 +71 54 47 38 58 81 71 64 59 55 50 50 +58 65 65 64 67 64 53 61 44 42 43 47 +49 47 61 66 56 47 47 57 78 112 106 112 +103 60 41 44 55 71 81 74 75 82 71 79 +75 77 96 121 102 100 100 83 85 103 118 132 +147 140 133 138 124 138 136 95 116 134 133 109 +92 83 68 137 135 177 173 115 95 65 57 91 +183 140 63 50 46 43 44 44 49 54 52 51 +61 97 75 69 58 61 57 70 53 61 54 60 +58 56 51 57 51 54 56 59 60 64 68 73 +57 58 65 60 63 64 54 59 65 94 73 73 +67 64 78 89 99 104 104 103 92 63 56 54 +53 44 62 81 79 95 118 123 117 130 122 118 +114 118 122 115 108 116 120 128 135 137 136 133 +136 133 141 144 136 135 135 138 141 142 141 142 +144 143 138 136 135 140 141 136 142 138 143 145 +147 152 148 151 153 155 155 159 160 160 158 161 +165 166 169 164 168 169 162 169 176 171 173 176 +177 181 177 178 177 180 184 187 187 187 187 185 +191 193 191 192 195 194 198 200 197 201 204 202 +206 206 205 208 207 208 210 210 212 211 214 218 +215 217 216 215 206 175 102 57 43 63 67 45 +50 46 59 45 53 70 70 72 63 61 72 78 +78 60 40 49 58 105 170 162 144 140 145 135 +138 140 146 144 148 154 149 145 147 145 145 148 +146 144 141 139 144 144 140 145 143 141 143 146 +142 141 138 141 143 137 137 135 136 136 138 133 +138 134 130 130 130 127 130 127 127 122 127 125 +121 117 120 119 116 117 122 122 130 129 133 126 +130 122 117 111 112 137 167 187 201 206 210 211 +211 212 213 211 213 212 211 213 214 212 212 212 +208 204 197 191 186 174 159 141 124 94 66 51 +49 55 68 78 92 97 94 91 91 90 95 95 +94 90 90 89 90 101 106 111 107 115 128 109 +105 101 96 98 93 85 81 84 93 95 96 96 +102 102 106 111 123 130 136 139 141 144 146 154 +152 156 152 147 144 149 146 136 127 112 101 80 +66 51 42 47 54 71 88 100 111 125 133 146 +151 157 164 171 176 175 174 176 177 173 177 173 +175 174 173 174 180 176 174 171 168 163 161 155 +148 140 141 174 208 190 103 78 76 141 196 78 +35 40 36 45 41 46 45 43 51 51 54 48 +43 51 49 64 77 70 70 65 66 65 51 49 +53 53 55 59 51 44 49 52 70 84 91 73 +70 65 57 54 49 35 42 43 42 44 62 76 +54 45 44 51 51 71 81 102 116 91 52 46 +51 58 70 67 62 71 69 84 72 73 75 110 +117 101 96 85 78 92 118 136 142 142 132 138 +133 127 125 100 105 141 130 138 116 109 98 120 +121 122 151 138 91 47 50 63 168 174 87 46 +48 50 49 48 46 51 43 49 57 94 71 63 +65 60 56 70 51 54 55 48 52 50 44 45 +47 51 52 60 59 64 72 64 49 56 58 56 +51 54 52 50 55 72 69 69 67 61 75 95 +103 106 110 103 93 74 59 47 42 44 61 76 +71 99 116 120 118 127 120 117 117 112 113 111 +123 127 130 130 133 132 131 135 135 134 138 139 +137 138 138 140 140 141 140 142 146 142 135 141 +141 140 143 139 141 141 143 147 151 147 149 152 +151 155 160 157 162 164 159 162 162 163 164 162 +167 168 169 175 176 173 170 172 174 177 176 174 +179 182 178 181 184 182 182 184 188 191 191 195 +191 196 197 199 201 200 204 200 204 208 204 208 +206 209 210 213 213 211 213 216 215 215 218 217 +217 206 163 91 47 48 59 38 42 45 49 45 +54 65 77 73 60 65 70 69 74 54 45 50 +67 108 171 159 143 140 138 136 141 144 151 146 +148 148 150 146 149 149 148 143 145 144 142 139 +142 144 141 142 145 140 142 144 139 140 142 139 +139 140 139 138 138 135 134 132 132 136 133 133 +126 129 131 131 122 123 126 125 122 123 124 121 +120 123 125 129 134 134 133 132 125 122 116 117 +125 151 175 192 201 206 212 213 212 211 212 211 +211 213 214 213 213 213 213 209 207 204 197 189 +179 168 149 131 114 86 69 54 60 72 79 86 +96 96 96 88 86 86 92 91 92 92 89 91 +94 103 109 117 116 114 111 107 104 98 96 93 +91 85 89 92 98 98 102 101 +88 88 94 102 +121 127 131 136 145 145 147 154 156 159 154 153 +155 159 152 141 129 117 100 79 66 53 45 43 +49 75 85 100 115 129 135 147 152 160 165 169 +170 177 175 178 176 177 176 176 177 177 174 178 +177 180 176 177 170 166 162 155 150 138 140 164 +187 183 108 91 67 103 149 58 38 37 38 37 +42 50 42 44 48 46 54 47 40 45 47 47 +68 72 55 57 68 72 59 50 46 44 54 51 +44 42 40 55 70 100 98 81 62 54 54 54 +49 38 41 41 42 43 64 98 79 47 36 38 +39 57 68 92 114 103 91 55 47 47 66 62 +60 64 71 85 76 65 68 91 122 113 103 91 +85 83 119 135 142 140 131 129 135 128 126 111 +103 141 138 139 96 78 106 125 94 79 120 170 +128 49 45 53 140 197 117 53 46 42 45 40 +44 41 40 45 62 97 68 62 56 63 59 62 +47 51 45 47 55 50 47 41 49 58 54 61 +57 59 83 61 55 55 56 47 48 49 45 51 +56 65 69 66 67 62 75 92 104 118 118 103 +99 79 53 41 48 43 54 80 75 87 111 122 +117 126 115 114 112 108 109 124 127 131 128 131 +128 136 134 135 139 142 140 137 138 136 136 145 +137 138 138 136 146 136 135 142 146 139 137 143 +143 139 143 142 149 146 148 151 155 151 155 158 +161 161 159 158 161 163 165 161 167 166 167 172 +176 174 175 174 174 176 177 175 184 180 179 182 +186 181 182 183 187 188 193 194 198 195 195 198 +200 200 202 200 205 205 204 207 210 207 208 212 +211 210 214 214 216 216 216 217 219 216 200 144 +70 48 57 47 41 39 44 50 49 63 75 66 +59 59 66 57 69 48 38 47 64 123 173 157 +139 139 142 137 143 149 150 148 152 152 147 147 +144 140 144 140 145 142 144 138 143 142 137 143 +140 141 141 144 139 141 140 143 138 140 137 140 +138 137 135 131 133 133 133 136 132 132 134 127 +126 128 129 128 120 123 126 122 125 124 126 132 +135 138 132 131 128 128 123 122 130 161 183 197 +202 208 211 215 212 211 212 214 214 212 213 214 +213 214 213 209 204 200 193 184 174 163 143 123 +101 82 65 61 62 76 81 95 95 96 91 93 +87 89 91 93 90 92 91 97 100 109 106 112 +111 111 108 103 102 95 92 99 91 92 96 93 +100 105 103 102 +71 71 78 94 109 120 125 131 +136 144 150 150 159 161 159 160 160 162 156 140 +135 123 109 87 72 50 41 44 54 68 86 96 +111 122 136 151 156 161 164 170 175 176 175 175 +177 175 175 176 172 174 178 179 182 178 173 170 +170 168 160 154 147 143 140 172 166 143 113 100 +64 76 88 40 37 37 37 48 47 47 45 39 +42 45 50 50 46 45 45 55 70 67 52 51 +56 64 63 47 42 42 50 43 44 36 45 51 +79 103 102 94 64 54 64 60 56 38 37 41 +45 44 57 109 92 60 44 38 39 45 60 81 +110 108 102 85 47 42 57 64 74 76 74 78 +71 61 72 76 98 117 115 101 86 80 114 139 +151 139 127 127 132 129 139 136 114 137 144 142 +108 58 105 124 79 56 100 194 176 85 46 52 +112 210 161 54 36 39 38 36 44 39 38 45 +60 96 72 58 59 53 54 68 51 49 46 51 +57 41 45 44 49 50 49 53 64 68 72 67 +55 53 51 45 47 50 43 47 55 67 74 66 +74 57 78 92 104 117 122 106 106 92 65 42 +50 42 48 78 85 91 108 122 111 127 113 105 +109 107 120 133 134 137 130 128 126 132 137 137 +136 140 140 137 141 140 137 137 142 137 139 135 +136 140 138 140 135 135 139 144 145 144 142 142 +145 148 150 151 150 150 151 155 161 163 158 161 +159 160 162 161 164 169 168 169 173 176 176 172 +171 175 176 176 179 176 180 182 183 182 184 181 +186 189 191 194 195 195 197 197 201 201 201 200 +203 204 206 208 208 206 211 211 210 210 214 217 +217 218 217 218 217 220 216 193 126 60 57 48 +45 40 42 50 50 60 68 65 52 56 60 62 +60 45 38 47 64 130 174 159 140 141 142 138 +145 144 148 149 148 149 148 144 147 145 147 143 +148 145 143 141 145 146 141 140 138 141 145 141 +143 137 139 143 138 138 140 139 140 136 137 131 +132 135 138 130 132 134 132 127 125 128 125 121 +125 126 127 124 123 128 130 134 137 137 135 135 +128 129 122 125 133 168 189 199 205 210 213 213 +214 210 212 212 213 213 212 211 212 211 211 209 +205 201 190 182 160 150 130 110 89 73 66 65 +75 77 85 96 98 95 89 88 88 91 91 91 +91 93 97 100 106 111 109 105 110 109 110 105 +99 95 93 94 90 84 89 96 98 102 103 104 +59 59 69 86 105 114 126 129 136 139 147 152 +163 165 161 162 164 158 150 142 131 129 116 96 +72 51 46 44 52 64 83 97 116 128 139 151 +157 159 164 169 174 177 181 175 177 176 176 172 +175 177 176 179 179 181 177 175 167 164 159 155 +149 143 140 183 171 116 121 119 67 85 54 41 +42 39 40 37 40 53 38 38 38 42 54 46 +46 39 45 69 94 65 48 46 55 59 56 56 +51 46 46 43 43 41 42 63 96 109 99 99 +58 55 74 72 65 43 40 48 41 41 54 98 +100 65 38 38 43 45 59 79 99 100 86 97 +72 46 46 66 65 78 70 75 71 70 74 84 +70 111 120 100 89 88 117 129 147 134 125 129 +122 131 148 135 119 139 154 149 123 86 130 121 +78 45 60 171 197 133 56 51 100 218 186 77 +41 35 38 42 49 37 36 43 55 92 64 58 +60 52 56 63 51 51 48 50 53 45 42 47 +53 51 50 53 58 64 77 63 47 47 48 51 +43 45 39 44 51 73 73 61 64 66 92 101 +115 118 125 110 105 93 65 45 48 41 47 72 +81 87 93 120 114 124 101 101 119 117 129 139 +135 135 133 126 126 129 135 135 138 133 138 136 +137 137 134 139 142 140 138 138 137 136 139 139 +136 143 141 143 144 145 143 141 147 149 148 149 +148 153 154 155 159 157 158 164 158 161 161 163 +165 164 167 164 170 173 177 174 172 174 173 173 +175 178 182 185 181 182 186 180 182 188 194 193 +192 194 194 195 197 196 198 203 205 205 203 205 +206 209 208 210 209 210 211 214 214 216 216 217 +217 220 219 210 176 107 64 53 45 42 40 51 +44 58 65 67 50 54 63 68 61 37 37 48 +73 139 174 155 136 136 140 135 150 148 143 148 +142 146 143 148 147 140 147 145 144 143 144 141 +146 144 143 142 140 143 144 143 140 141 143 145 +140 139 142 142 139 138 137 138 133 133 135 130 +134 137 127 129 126 130 128 131 124 125 125 126 +124 128 132 132 136 141 141 135 136 126 124 124 +139 175 190 200 203 212 215 216 214 211 212 213 +213 211 213 211 213 210 210 207 203 201 191 178 +155 140 123 98 83 70 71 69 76 91 94 98 +99 93 83 90 93 95 97 94 96 99 99 99 +106 108 116 112 110 108 106 99 101 98 91 95 +88 95 96 98 98 102 102 103 +50 50 56 78 +96 104 118 123 133 135 146 155 163 166 163 165 +164 161 152 146 136 131 119 103 84 54 42 38 +52 65 83 93 109 129 139 147 157 158 166 169 +177 177 178 177 175 178 175 175 176 176 177 178 +179 178 174 175 171 163 156 153 160 144 141 191 +197 122 125 129 77 83 62 44 40 41 39 41 +40 50 42 42 42 42 54 44 45 46 58 95 +79 52 46 48 58 60 53 56 53 48 43 44 +47 41 47 74 94 110 106 89 51 43 79 82 +70 46 39 40 42 38 51 82 118 84 50 40 +48 41 49 82 93 76 84 89 101 67 48 56 +65 79 77 75 74 72 70 84 67 91 115 104 +93 88 121 118 122 115 118 111 119 116 148 142 +125 141 164 167 144 123 139 106 62 43 57 100 +193 174 89 59 84 207 205 101 44 40 37 37 +42 37 43 46 55 89 66 61 64 54 58 68 +54 55 55 54 56 50 43 49 53 52 57 52 +61 64 67 59 53 59 60 53 52 47 42 47 +55 73 72 61 63 69 83 104 110 121 119 115 +104 95 72 50 46 42 49 79 84 85 97 115 +104 115 103 117 128 127 132 140 138 133 131 125 +129 132 134 136 137 135 136 138 141 137 133 141 +140 140 137 137 140 139 137 138 138 139 142 143 +141 142 144 146 144 144 148 150 152 152 152 152 +156 155 160 165 158 161 159 162 162 164 165 164 +166 170 173 174 169 173 175 177 181 182 179 175 +181 184 189 184 185 187 191 190 189 193 195 196 +196 193 197 200 203 204 203 204 206 207 209 210 +208 211 212 214 213 214 215 217 219 221 221 218 +207 154 84 53 48 44 44 48 49 60 67 58 +48 51 55 68 65 44 41 53 81 145 169 150 +138 134 138 139 141 143 147 148 145 149 147 149 +149 148 146 147 145 144 142 138 144 149 148 143 +144 141 140 145 145 142 139 142 142 140 145 136 +140 139 137 138 129 136 135 139 133 129 128 130 +129 126 127 127 129 132 126 126 124 129 134 140 +140 136 140 138 137 127 131 129 150 177 192 202 +209 214 216 219 213 213 211 212 212 212 212 211 +212 214 208 206 203 197 188 168 149 133 106 86 +72 68 70 73 82 94 97 93 93 89 88 92 +100 94 94 92 99 99 105 106 111 113 115 116 +114 104 99 94 95 93 94 91 92 99 102 104 +101 100 102 100 +40 40 51 71 84 100 116 122 +129 139 148 158 165 162 162 165 167 163 157 151 +141 133 120 106 88 59 43 42 51 64 84 96 +116 129 137 149 153 161 166 167 174 180 177 176 +176 174 175 177 177 177 179 182 177 176 179 172 +173 164 159 153 147 146 137 189 218 143 108 114 +71 77 81 54 45 40 42 42 39 44 44 38 +37 41 58 44 49 42 68 103 66 48 43 52 +59 46 45 51 58 48 44 43 44 38 45 79 +99 116 106 73 43 40 78 90 75 55 39 43 +39 35 41 76 118 101 67 51 38 40 42 75 +98 77 73 76 92 100 72 57 60 69 91 86 +94 73 63 75 62 67 109 105 95 90 125 124 +104 98 112 106 108 124 144 139 120 159 169 175 +154 139 129 94 46 36 40 53 143 189 127 65 +80 198 209 113 38 32 35 36 40 36 37 38 +48 88 59 59 65 49 63 64 48 49 52 52 +51 44 52 41 49 53 45 56 57 62 67 54 +54 61 55 52 51 50 40 45 50 66 73 58 +52 76 87 111 116 124 117 112 106 98 75 52 +45 40 45 74 77 86 99 107 96 117 109 121 +124 128 129 135 134 130 132 129 129 130 133 135 +134 134 137 139 141 141 142 141 140 140 137 135 +140 140 138 139 139 141 141 145 140 143 143 148 +143 144 149 151 149 149 149 151 152 155 158 159 +156 161 160 163 161 165 166 166 167 170 173 172 +173 177 171 178 177 180 178 177 181 182 188 185 +186 186 190 190 187 193 194 194 196 196 196 200 +201 203 204 202 203 206 206 209 210 208 210 214 +213 215 219 217 217 220 221 220 215 193 128 73 +43 39 42 47 50 48 60 52 47 45 53 64 +63 36 41 52 96 154 163 146 136 130 137 142 +145 138 148 147 143 144 144 147 144 151 143 140 +143 145 145 142 145 147 143 145 139 145 142 142 +140 142 145 142 141 138 140 138 137 139 140 138 +135 134 138 138 134 133 132 128 132 123 123 125 +128 131 122 124 127 130 133 135 132 136 135 135 +136 138 129 135 156 179 193 205 210 215 217 217 +215 214 213 213 215 214 211 210 212 212 209 205 +200 193 185 163 140 116 96 79 78 77 83 79 +85 90 100 96 95 87 92 98 97 100 97 99 +99 104 108 112 116 117 118 109 105 98 92 88 +92 93 94 91 97 96 104 106 105 104 104 103 +37 37 46 56 78 93 109 114 127 139 151 161 +163 162 164 167 169 164 158 148 144 132 125 111 +86 59 42 35 47 64 82 92 112 129 141 151 +158 159 165 172 171 174 177 179 182 178 177 178 +178 175 179 178 179 174 172 174 168 163 163 156 +149 144 141 167 214 158 111 99 70 90 98 47 +36 44 36 40 46 45 41 42 42 49 55 46 +45 48 84 102 54 48 49 52 45 46 68 61 +50 54 50 46 41 41 50 81 104 125 108 74 +49 42 60 88 63 58 42 36 41 36 39 61 +96 110 84 59 44 39 42 59 105 78 64 57 +81 109 97 69 49 66 94 100 95 82 82 71 +64 59 88 91 98 94 117 127 92 82 106 118 +113 129 134 119 121 162 167 175 159 147 117 81 +43 37 37 40 80 160 145 78 79 183 211 138 +40 36 33 31 35 31 36 35 54 80 59 74 +68 51 64 71 51 48 51 56 50 41 43 41 +44 43 48 54 70 76 67 57 55 55 55 45 +61 62 45 47 45 65 59 54 54 78 95 104 +117 120 125 113 112 106 80 50 38 41 40 78 +73 82 101 99 106 123 117 125 123 126 131 135 +136 132 133 133 137 132 133 129 137 136 136 137 +135 139 137 142 140 142 142 140 142 143 141 142 +142 137 139 139 138 143 143 141 144 153 148 149 +152 152 153 152 156 154 157 159 158 160 162 162 +160 163 164 166 168 171 167 167 175 172 174 172 +177 178 176 180 182 182 182 186 187 188 191 191 +189 193 196 196 197 199 199 199 200 204 203 203 +204 206 208 207 207 208 210 214 214 216 215 217 +217 220 222 220 220 211 179 102 49 37 38 47 +45 49 60 59 45 45 50 70 53 36 38 56 +97 158 161 142 140 130 139 143 144 140 149 146 +150 146 141 148 148 143 145 142 144 140 144 142 +143 147 140 142 141 139 145 146 140 140 139 140 +144 138 139 137 139 140 136 136 134 136 143 133 +134 133 135 130 126 126 133 129 127 137 124 127 +124 128 132 136 134 136 136 138 138 137 134 139 +167 183 198 203 211 214 216 215 213 210 211 213 +214 214 211 211 210 209 208 206 200 190 179 158 +132 105 86 72 72 79 80 83 84 90 96 94 +87 87 93 99 99 96 95 99 101 105 111 113 +113 115 110 107 96 93 90 86 96 90 95 92 +98 100 100 104 103 107 100 102 +38 38 42 52 +66 82 98 110 118 133 152 163 164 159 166 171 +167 167 159 153 143 133 129 114 93 62 45 39 +47 57 74 96 114 130 142 150 156 160 167 172 +176 176 176 177 174 179 177 179 177 174 175 177 +180 180 178 173 168 167 158 155 148 144 137 141 +186 142 131 114 72 123 126 40 30 37 32 42 +42 49 38 39 39 54 47 37 44 69 101 82 +51 42 41 51 49 42 49 63 47 57 49 49 +50 47 47 84 115 125 112 81 44 42 58 78 +61 58 38 36 40 34 33 44 73 97 97 67 +51 37 46 60 106 87 69 59 60 88 98 97 +75 57 77 112 98 95 88 80 67 62 69 74 +94 92 111 127 93 82 108 130 132 127 113 107 +117 152 151 174 165 149 123 80 44 36 35 36 +50 98 136 104 78 184 217 158 48 36 37 37 +36 36 39 43 51 79 59 57 56 47 68 67 +49 51 45 52 54 46 43 45 53 49 51 58 +68 81 82 64 47 51 58 55 63 60 43 43 +55 61 58 60 57 82 96 111 115 117 120 117 +108 96 83 56 46 39 39 59 74 80 102 103 +116 125 118 120 126 129 130 135 137 133 130 130 +132 132 128 130 132 134 137 135 135 138 139 144 +140 138 140 144 139 139 141 142 140 139 140 142 +140 144 143 140 148 150 153 149 153 151 154 154 +156 158 159 159 161 161 161 161 160 162 164 167 +167 171 172 169 169 171 172 174 177 176 178 181 +181 185 183 183 183 186 190 189 190 191 192 193 +196 196 197 202 201 202 201 203 204 204 208 208 +208 205 209 212 213 214 214 217 219 223 225 221 +220 219 203 149 61 36 37 40 45 56 108 57 +40 45 54 65 50 35 37 54 107 162 155 142 +135 131 142 136 145 150 148 151 144 147 145 145 +144 145 146 146 146 142 146 145 149 145 142 145 +142 136 140 141 140 136 136 143 139 140 142 134 +139 137 139 137 136 139 136 134 131 132 133 128 +133 127 125 130 123 126 120 125 120 128 131 129 +134 139 142 145 145 146 143 152 172 186 198 205 +211 215 216 216 212 212 214 214 214 213 210 210 +208 208 208 205 200 188 173 151 116 93 76 74 +75 78 87 86 93 96 94 89 85 87 96 102 +100 99 97 101 102 108 113 116 109 111 104 95 +97 91 88 93 89 93 94 100 103 104 104 105 +107 104 105 100 +35 35 39 43 52 66 79 101 +114 136 149 160 169 165 168 171 169 171 162 156 +146 140 130 124 94 67 40 39 45 50 77 97 +113 126 141 152 156 160 166 171 175 177 177 174 +177 175 174 177 177 181 180 178 178 175 178 172 +169 163 164 157 148 143 135 127 134 113 157 141 +75 146 120 50 33 36 34 46 52 42 47 40 +42 51 49 44 51 91 81 66 53 43 42 42 +50 53 50 53 48 49 46 52 45 47 51 75 +109 131 114 76 40 37 51 75 59 72 45 38 +43 35 34 42 56 70 96 98 74 49 37 46 +96 85 68 57 56 75 99 104 89 79 75 101 +101 101 101 100 91 76 64 67 82 96 116 120 +92 81 112 140 133 129 106 104 130 141 145 181 +166 144 120 100 56 39 31 30 43 71 136 124 +78 185 219 178 52 33 50 36 40 36 40 37 +58 79 68 61 60 52 70 68 50 44 49 52 +46 43 44 41 51 51 51 54 55 74 89 58 +45 59 55 56 49 59 45 45 54 63 57 59 +70 87 101 116 118 118 120 119 105 99 81 54 +43 42 39 62 67 96 105 103 116 121 114 123 +128 129 132 136 135 131 129 133 135 132 134 136 +131 138 136 137 139 136 142 139 140 139 136 140 +140 140 141 139 141 142 147 137 142 145 145 144 +145 148 151 149 146 150 149 155 152 157 155 158 +161 159 160 157 165 166 166 165 163 165 169 167 +172 172 173 176 178 179 175 177 183 184 182 178 +185 188 191 196 192 192 193 193 196 197 196 202 +202 203 204 203 203 206 208 207 208 207 210 213 +209 213 213 216 219 219 223 222 221 220 213 186 +105 39 43 39 41 47 49 54 40 44 55 60 +42 38 38 56 108 158 150 148 135 127 139 141 +149 149 152 147 144 145 146 148 143 145 144 144 +144 142 141 140 144 149 139 140 137 141 139 140 +139 140 137 139 141 139 138 135 141 136 138 133 +137 136 139 136 136 130 132 128 130 129 125 128 +130 121 123 123 118 120 130 127 140 148 149 155 +160 159 161 169 182 189 198 206 212 215 215 214 +213 212 215 214 213 214 209 209 207 209 207 205 +197 187 162 141 109 88 76 75 80 83 85 87 +92 98 86 86 92 91 94 104 104 99 107 107 +106 109 114 111 104 101 100 92 86 89 87 93 +92 93 100 104 100 104 104 103 105 101 106 101 +34 34 42 43 50 54 72 100 110 132 147 156 +165 167 171 170 171 172 161 157 153 148 133 119 +94 60 44 41 41 51 65 83 112 126 141 148 +155 158 166 170 175 174 173 175 175 174 175 175 +181 174 177 178 177 178 176 171 170 168 160 157 +153 149 140 127 101 120 193 159 76 89 74 44 +36 34 43 48 53 44 44 41 43 44 52 52 +67 82 60 52 48 42 44 46 45 50 60 48 +40 49 44 52 48 48 50 88 111 132 114 86 +55 44 54 83 68 69 59 36 43 38 34 39 +45 48 65 99 96 70 54 43 82 91 66 54 +55 72 91 103 95 84 76 89 105 103 111 112 +120 104 90 69 63 89 106 104 88 80 114 146 +138 129 104 120 148 133 153 179 157 124 93 100 +84 52 38 35 55 75 140 159 96 186 219 186 +70 36 42 42 40 33 38 39 53 80 73 57 +60 61 77 78 50 54 52 46 52 44 46 51 +53 52 45 49 56 74 84 57 50 47 56 54 +56 47 41 48 54 58 55 58 78 92 103 115 +113 110 113 116 108 93 78 45 39 38 37 66 +74 89 103 106 117 112 113 128 128 129 132 132 +124 128 130 136 133 133 134 136 132 131 128 138 +137 136 138 135 143 142 137 139 138 142 143 140 +139 145 142 138 144 146 146 145 142 148 146 147 +147 151 150 149 149 154 156 154 161 159 159 158 +165 163 166 162 165 164 168 167 170 171 170 174 +175 176 178 180 184 182 180 180 182 187 188 189 +190 188 193 195 196 193 196 201 200 201 206 207 +207 207 209 206 208 207 211 212 212 216 213 215 +219 218 220 221 219 220 219 208 154 68 57 36 +44 43 51 49 46 42 51 48 39 33 40 60 +126 160 151 152 135 129 139 141 151 152 145 149 +146 148 148 147 145 144 145 145 140 141 142 140 +146 144 139 142 137 141 137 141 140 141 138 139 +139 137 132 140 138 138 139 142 135 132 136 131 +136 135 133 127 132 130 128 124 124 124 124 122 +124 120 127 135 145 155 156 164 169 176 180 184 +193 196 201 207 210 215 213 215 214 214 216 213 +212 214 212 210 210 208 205 202 194 175 154 126 +106 88 77 79 85 87 90 95 92 89 86 90 +91 96 99 103 107 105 107 110 113 113 112 109 +105 96 94 96 88 87 82 87 89 94 101 102 +104 103 102 105 95 98 103 99 +31 31 30 37 +47 51 60 89 104 129 145 154 167 167 168 169 +170 168 162 160 153 142 127 123 97 57 39 33 +38 43 66 83 115 129 139 146 155 158 164 168 +173 173 178 176 176 178 174 171 173 173 176 175 +178 180 181 176 171 168 165 156 152 146 138 127 +106 125 203 148 70 68 61 44 39 38 42 49 +45 43 39 45 47 63 51 56 75 63 52 47 +44 44 45 47 51 50 47 51 44 42 48 41 +48 48 48 81 115 135 114 67 43 45 47 72 +83 75 63 39 39 40 34 38 47 35 45 73 +98 99 89 61 62 102 75 55 45 59 78 76 +91 91 87 76 94 115 115 113 117 109 109 76 +63 82 91 94 87 80 103 142 147 127 121 147 +148 121 150 165 141 92 61 60 77 61 34 38 +56 78 134 184 128 180 217 188 76 40 32 39 +39 35 38 37 59 83 73 51 59 60 76 72 +54 51 45 53 52 48 43 48 52 47 50 57 +60 75 70 53 51 49 55 46 51 47 44 45 +51 55 51 61 84 95 93 107 105 106 116 122 +107 98 91 52 51 40 41 58 75 96 99 107 +119 113 121 126 127 130 128 136 129 126 128 133 +134 138 136 137 129 133 128 137 138 138 136 136 +146 142 139 137 145 140 140 144 143 139 139 140 +150 148 149 145 150 158 150 149 146 150 152 152 +154 156 154 155 158 157 164 158 164 163 160 161 +167 164 171 170 173 173 173 174 174 179 178 179 +183 179 180 181 185 183 189 189 190 189 193 194 +198 199 196 198 201 201 202 204 205 208 207 207 +211 209 207 212 212 214 214 216 218 217 217 221 +219 220 221 216 188 102 42 41 40 45 48 47 +40 43 47 43 35 31 43 68 137 154 152 157 +128 135 142 139 149 149 149 148 143 147 144 146 +143 148 145 145 144 140 143 141 147 146 145 142 +140 141 143 140 140 143 138 140 137 136 133 136 +139 134 139 143 136 136 133 137 134 133 131 127 +125 122 129 126 121 126 124 119 127 123 133 143 +152 158 164 175 178 182 186 191 198 202 206 209 +212 214 213 214 214 214 213 213 212 212 212 210 +207 203 204 197 185 168 145 119 97 83 80 83 +89 91 95 97 92 91 88 90 92 102 103 101 +104 107 109 111 113 114 114 109 104 96 93 88 +88 86 91 88 88 96 101 103 102 106 105 100 +100 105 98 103 +33 33 32 34 41 51 61 98 +115 148 148 157 166 167 169 166 168 169 163 161 +156 147 135 123 98 66 39 35 35 41 63 91 +110 131 140 144 153 161 166 170 171 177 178 178 +178 176 173 175 173 176 181 179 179 179 176 177 +172 168 165 158 152 149 139 123 109 107 166 129 +76 84 58 40 39 47 48 47 42 45 39 40 +58 52 51 64 65 49 58 47 43 44 51 40 +49 56 45 46 42 39 44 40 47 46 57 88 +120 136 118 57 38 38 58 72 90 72 55 41 +33 37 35 42 48 35 35 58 72 99 105 83 +70 101 87 67 44 52 77 63 76 93 97 76 +75 124 108 107 108 115 110 86 63 76 86 91 +87 74 97 133 143 136 148 161 142 119 155 149 +129 106 51 40 53 68 51 43 62 69 115 194 +155 177 214 182 62 43 43 42 41 31 38 40 +67 85 67 52 58 68 79 78 50 48 52 53 +52 43 46 51 48 56 51 59 56 71 65 55 +42 49 46 46 50 52 50 45 54 52 54 59 +78 94 96 109 105 116 112 110 93 100 90 57 +49 42 44 63 79 100 98 102 122 121 113 119 +129 125 128 133 124 120 128 131 134 137 135 129 +130 132 132 133 140 136 134 136 136 138 144 140 +140 141 139 140 137 141 144 141 147 145 145 151 +149 146 145 152 145 148 151 150 153 154 154 151 +158 158 156 157 157 162 162 167 168 167 167 171 +168 171 172 172 174 171 177 181 180 179 178 180 +184 184 186 187 189 186 189 191 197 195 196 198 +203 199 202 204 204 205 208 211 209 208 209 212 +212 213 214 216 218 219 220 218 220 220 223 220 +207 153 58 35 44 38 47 49 39 38 44 42 +43 39 43 73 142 149 154 165 132 136 139 143 +152 150 150 148 143 148 144 145 142 143 148 146 +143 144 141 142 145 142 143 140 139 142 137 143 +138 140 143 138 138 138 137 134 135 132 137 135 +138 128 132 132 133 133 129 124 128 127 122 118 +130 121 121 115 123 135 144 153 159 167 172 183 +185 188 190 193 202 203 207 210 213 215 217 215 +214 214 214 213 212 211 211 209 206 203 199 196 +177 157 138 109 90 82 88 88 86 90 95 96 +99 92 86 90 97 99 102 102 101 109 111 110 +114 111 109 103 100 93 94 91 83 83 88 89 +95 95 103 103 104 102 107 102 97 99 105 101 +37 37 39 36 46 53 56 81 109 125 148 156 +165 171 172 169 173 171 170 162 157 147 137 119 +87 51 33 41 40 45 62 89 112 129 143 146 +153 163 164 164 177 177 176 179 178 178 179 174 +175 175 178 179 180 175 179 175 174 169 164 161 +155 151 136 123 105 102 123 101 114 116 46 38 +39 40 47 51 49 42 42 42 50 48 57 69 +58 54 57 48 47 43 51 51 50 44 52 42 +41 46 46 45 44 44 58 95 131 144 115 46 +42 46 46 60 94 77 53 45 36 34 41 42 +70 37 43 54 61 76 91 104 96 104 95 68 +44 49 77 64 58 85 104 86 73 113 114 108 +110 101 106 97 77 82 81 90 82 73 89 117 +147 149 160 151 143 134 154 153 147 127 59 34 +39 58 84 73 52 58 107 194 171 182 211 173 +56 28 34 32 31 31 34 40 70 78 61 47 +53 76 88 79 48 50 49 45 53 48 40 50 +45 60 55 54 53 67 66 53 50 44 48 51 +58 70 63 53 56 56 55 74 88 96 107 109 +113 105 103 101 99 98 91 63 54 38 56 60 +81 98 96 111 122 120 122 126 131 127 127 132 +127 123 124 129 134 136 131 136 135 134 136 136 +141 136 138 138 141 141 137 140 139 139 141 139 +138 142 143 143 143 149 149 153 144 145 143 144 +150 147 150 152 151 150 155 155 152 159 156 159 +157 163 160 163 163 164 166 171 172 172 171 174 +174 175 180 175 177 177 183 182 186 184 186 190 +189 187 189 190 197 196 196 198 201 202 204 205 +203 206 210 209 209 208 213 213 211 213 212 215 +214 217 220 221 220 221 221 221 216 187 98 42 +39 41 45 50 38 39 41 46 31 30 42 77 +152 145 150 161 133 129 140 148 151 147 148 150 +144 150 144 145 149 143 148 143 145 143 146 145 +148 145 139 144 141 137 142 142 144 138 141 140 +135 135 139 133 134 135 139 135 135 134 130 133 +131 135 130 128 126 120 122 121 121 121 122 124 +129 144 154 164 171 176 183 189 190 195 198 198 +203 204 209 210 214 216 217 215 216 213 214 214 +215 211 209 205 209 205 196 188 172 150 126 100 +89 89 92 86 91 98 99 95 91 90 88 94 +102 102 99 103 106 107 112 110 112 109 109 102 +100 93 90 90 88 92 97 89 96 102 108 99 +104 101 100 102 93 102 105 105 +33 33 36 40 +39 55 57 83 103 122 146 151 163 172 170 174 +172 169 170 166 158 155 137 122 80 43 31 39 +36 51 71 87 108 130 143 147 151 162 159 172 +175 178 178 183 178 176 177 175 178 174 178 178 +181 180 180 173 171 170 164 159 152 149 139 130 +109 107 104 109 163 137 51 40 43 42 50 51 +45 46 41 41 47 47 60 61 48 54 51 45 +52 45 46 43 45 50 57 44 57 48 46 42 +43 51 77 107 143 142 112 53 35 38 42 57 +83 78 50 49 40 39 41 49 53 50 40 56 +55 53 64 79 84 85 90 73 57 50 89 78 +53 71 91 99 86 95 114 106 105 91 93 83 +79 81 90 93 79 79 91 118 146 151 150 151 +139 150 155 143 160 145 82 38 35 45 91 78 +49 49 105 188 180 182 207 160 46 35 40 36 +38 33 36 40 74 70 74 49 51 79 103 88 +49 43 48 55 46 41 41 52 50 45 42 54 +55 77 61 51 52 45 46 48 57 47 50 52 +59 55 61 84 94 106 114 114 110 105 97 94 +100 109 100 67 56 39 44 56 82 94 87 116 +119 118 118 125 130 131 132 131 125 128 127 132 +131 134 134 140 137 135 139 138 137 138 135 135 +136 141 140 135 138 137 138 143 140 141 140 143 +147 146 140 150 147 150 141 146 148 153 145 149 +150 152 156 158 156 155 155 157 160 161 158 162 +164 163 167 167 177 169 170 174 173 178 177 176 +175 178 182 189 184 182 190 188 186 189 189 194 +197 196 199 200 198 202 204 205 205 209 208 207 +209 209 213 213 211 213 211 214 217 218 218 219 +221 220 221 223 219 207 140 56 40 40 43 39 +37 36 39 42 30 31 42 90 157 147 153 156 +137 129 144 147 150 152 153 145 146 151 152 152 +143 144 144 149 140 143 144 146 144 140 144 145 +142 142 138 141 135 135 134 137 134 134 134 133 +134 135 134 132 135 134 132 133 132 131 126 126 +121 123 128 127 121 121 120 127 137 152 161 170 +178 188 195 195 196 197 198 199 203 208 210 213 +214 216 216 214 215 214 214 213 213 210 207 208 +205 200 193 180 163 137 110 93 87 89 93 91 +91 93 101 95 91 94 95 101 106 100 102 107 +107 109 112 115 111 106 103 97 97 90 88 87 +92 89 88 97 96 100 107 101 103 100 100 93 +102 105 101 102 +31 31 39 39 43 50 53 80 +95 121 143 152 161 169 173 170 173 173 172 164 +159 156 133 109 79 46 39 36 38 47 71 90 +111 132 142 148 154 162 163 170 174 178 182 180 +179 177 180 179 178 179 177 179 181 177 175 174 +173 171 164 164 156 150 145 131 115 120 103 122 +177 105 46 53 48 50 50 47 47 45 45 50 +58 62 63 57 45 51 54 49 47 51 46 50 +52 44 47 49 47 45 50 50 39 53 79 124 +150 137 108 53 37 37 39 45 74 88 66 53 +35 36 39 63 60 47 35 48 57 57 55 52 +54 61 72 59 45 45 78 93 62 58 87 105 +89 86 101 112 101 81 98 84 70 81 93 89 +75 85 97 118 145 140 148 148 148 149 121 161 +166 144 106 39 32 48 67 53 44 49 102 186 +186 182 196 143 46 31 34 41 40 41 36 40 +76 80 77 46 56 72 103 92 51 47 55 55 +52 46 49 59 43 47 46 58 59 79 59 53 +45 41 40 50 55 45 46 58 61 52 67 87 +98 107 114 107 99 96 99 102 109 111 99 66 +50 43 50 63 84 91 88 106 115 118 124 132 +137 131 133 130 131 131 127 132 132 135 136 140 +137 137 140 139 137 141 137 135 138 141 135 137 +141 138 139 138 142 143 139 145 143 143 141 146 +147 146 146 144 148 148 152 151 153 154 156 156 +154 158 155 161 160 159 161 159 162 168 162 166 +174 173 170 171 177 175 174 171 176 183 186 187 +183 186 186 185 188 186 189 191 193 195 197 200 +202 204 203 206 203 208 209 211 207 208 210 215 +212 212 212 214 215 217 218 218 221 221 221 223 +219 214 178 83 38 36 39 41 33 34 42 37 +31 32 46 97 149 146 154 155 145 128 145 148 +149 152 151 147 149 148 154 146 141 146 148 143 +147 147 145 142 145 142 143 144 143 145 143 143 +139 139 137 143 139 139 135 138 137 138 135 137 +133 134 131 129 129 133 129 124 123 128 124 123 +122 123 126 141 150 163 174 178 189 193 197 199 +195 200 202 204 207 208 212 215 215 217 214 215 +215 215 212 216 213 210 207 204 202 196 187 173 +150 121 101 90 93 85 94 92 90 97 95 87 +91 95 99 97 105 102 105 106 110 112 114 116 +112 105 101 95 90 88 86 87 88 94 94 99 +98 103 108 102 105 97 94 98 103 100 98 110 +35 35 41 48 43 48 51 73 95 118 138 153 +159 169 171 174 173 172 164 161 156 145 131 113 +85 54 38 35 39 44 70 90 107 126 139 147 +153 156 167 172 176 177 178 182 180 176 177 174 +178 179 177 181 180 181 181 180 174 169 166 159 +155 150 139 129 134 145 126 126 145 69 41 43 +50 58 56 41 42 43 45 47 57 61 58 48 +48 51 59 51 49 43 46 48 48 52 55 53 +57 48 45 45 45 57 90 138 151 127 98 59 +42 36 34 43 71 89 74 62 36 39 47 71 +63 48 37 52 61 68 55 40 35 51 61 49 +46 47 56 100 79 53 77 101 102 96 86 108 +106 91 88 91 75 75 89 81 81 82 97 113 +142 131 151 154 133 108 115 175 165 130 118 77 +41 44 46 44 47 56 90 183 189 184 184 114 +42 40 34 40 44 43 46 56 87 83 85 51 +54 70 95 78 58 55 52 58 53 53 53 55 +53 52 49 61 58 66 59 54 45 43 42 44 +48 48 45 56 58 55 76 87 96 106 106 97 +96 95 109 114 115 116 94 66 46 49 42 62 +96 92 98 101 113 120 124 128 131 130 130 126 +130 126 127 129 133 137 135 138 137 136 136 138 +139 137 139 134 133 134 138 140 138 138 141 141 +140 139 144 143 134 142 146 143 147 147 143 141 +143 145 148 150 153 156 156 157 154 155 152 159 +158 156 157 159 166 168 167 168 166 168 169 169 +173 175 175 176 178 177 182 185 184 186 182 183 +186 188 188 190 193 195 194 199 198 201 204 205 +205 207 208 208 207 207 211 212 211 211 210 214 +214 215 219 220 220 219 220 222 224 218 203 135 +48 30 35 39 32 36 36 40 32 35 51 107 +145 145 158 149 142 131 142 146 147 147 148 149 +151 150 151 147 146 143 145 144 150 146 142 150 +143 142 147 139 141 143 141 141 138 134 139 138 +129 137 132 135 133 133 131 138 133 135 130 128 +130 126 125 127 122 123 122 125 120 126 130 145 +161 173 184 191 195 197 200 198 200 201 203 204 +206 210 215 214 217 216 216 217 214 214 214 214 +211 212 210 204 201 190 179 162 139 114 99 90 +91 86 96 90 91 94 93 90 92 99 98 106 +106 107 107 109 112 112 116 113 108 104 100 94 +91 94 90 91 94 93 93 104 98 105 111 99 +103 95 95 93 106 101 107 104 +32 32 33 37 +45 54 63 72 95 117 139 151 156 163 171 171 +174 172 168 164 152 146 129 114 80 52 34 30 +32 44 64 90 109 129 142 145 153 162 168 171 +175 179 177 177 176 176 175 176 179 172 181 181 +183 182 181 178 174 173 165 159 156 147 141 128 +148 178 126 122 112 54 49 43 52 58 46 37 +39 45 48 57 64 60 48 48 46 46 53 42 +43 43 37 45 44 51 52 49 48 45 49 43 +51 64 107 146 146 124 99 55 35 36 36 39 +63 87 77 57 43 39 50 74 64 58 48 54 +60 66 56 42 36 42 49 54 62 54 51 89 +88 61 65 100 107 101 89 114 118 99 87 99 +91 67 81 72 61 85 100 110 139 135 144 138 +107 112 133 168 159 107 114 110 49 37 46 34 +43 49 84 183 186 186 153 85 42 38 33 28 +35 37 41 56 87 84 86 41 59 73 84 77 +47 47 56 59 51 55 55 47 50 49 49 55 +64 71 60 63 51 45 43 47 44 49 59 59 +53 60 82 91 92 98 92 100 99 102 118 126 +122 115 99 71 54 46 50 59 100 93 95 108 +114 126 129 127 131 130 128 129 127 129 129 131 +136 137 136 136 134 137 139 141 137 140 140 132 +131 133 136 135 135 139 140 138 135 139 137 142 +145 139 150 144 148 144 147 139 146 148 149 149 +150 152 154 152 152 155 153 159 158 154 161 167 +164 166 167 163 169 170 171 170 169 172 175 175 +180 179 180 178 182 187 186 185 189 186 190 191 +193 194 195 199 198 202 201 204 204 206 207 208 +206 206 210 210 213 211 212 213 213 214 216 218 +219 219 221 221 222 219 212 172 69 31 37 38 +36 32 35 39 31 35 51 118 145 143 152 147 +142 141 140 152 148 144 143 149 147 146 153 153 +146 147 148 147 143 143 145 144 141 140 142 141 +140 140 143 137 140 140 139 135 133 132 134 129 +134 132 134 136 130 134 132 127 127 126 125 123 +120 125 126 123 121 126 137 153 175 186 195 199 +202 204 203 201 202 200 205 204 206 208 213 216 +218 215 216 214 216 215 215 214 213 210 206 205 +196 186 168 155 133 106 94 89 92 93 92 93 +91 91 96 87 93 102 103 103 104 107 109 112 +112 115 117 113 109 99 93 94 92 92 91 89 +93 95 97 106 98 104 107 96 100 100 97 99 +114 103 110 101 +31 31 31 36 36 46 68 66 +91 118 138 147 155 160 167 171 174 170 168 160 +153 142 130 118 88 55 35 32 36 42 60 89 +110 127 135 144 156 162 168 170 176 177 176 177 +179 174 175 180 178 177 175 177 181 179 181 180 +173 169 162 161 155 144 142 133 158 186 121 127 +113 55 47 42 52 59 41 39 41 46 54 72 +66 52 52 47 42 43 61 48 42 39 35 46 +50 56 57 42 42 44 45 38 51 76 124 149 +141 117 89 54 36 45 40 42 50 64 67 57 +42 32 56 76 64 51 43 42 62 74 61 43 +39 39 50 58 48 48 54 78 95 61 57 82 +102 88 95 105 120 114 97 98 92 87 79 71 +56 87 105 123 143 145 141 126 106 131 158 160 +157 107 103 127 76 45 48 43 42 49 83 182 +182 173 110 61 51 58 40 34 34 38 42 51 +86 81 70 43 57 77 80 74 48 47 57 59 +47 48 43 44 50 50 46 55 63 65 60 65 +59 44 46 44 47 49 57 57 53 60 87 86 +91 102 99 104 110 114 124 121 118 113 100 75 +51 40 48 62 91 89 98 111 113 119 129 132 +136 129 128 128 129 133 134 135 142 136 139 134 +133 137 139 135 136 139 141 137 133 136 139 134 +136 139 139 135 136 142 139 139 140 141 144 147 +143 144 145 148 143 148 148 150 151 152 153 153 +156 153 157 158 155 158 160 163 167 163 163 168 +166 168 168 171 172 172 173 176 176 179 180 179 +179 185 185 193 186 187 189 193 194 193 195 197 +200 201 201 202 205 204 205 209 206 209 211 211 +212 213 211 213 213 214 214 216 216 219 220 222 +223 220 216 197 106 38 46 49 34 34 37 38 +32 32 57 133 146 144 148 141 136 150 142 151 +150 151 150 146 144 145 148 144 143 145 145 145 +149 144 144 146 137 145 142 139 146 138 138 139 +137 140 132 135 128 128 131 136 136 132 134 128 +132 131 131 128 129 130 123 122 124 118 121 119 +120 127 145 168 185 195 202 203 207 208 207 205 +201 200 202 202 205 209 214 217 218 217 215 215 +214 215 214 215 214 208 206 200 191 176 161 145 +121 100 96 88 90 92 93 91 91 92 88 88 +97 102 106 107 104 114 113 112 115 118 116 112 +109 91 95 87 91 92 89 87 88 98 100 104 +103 102 106 101 100 97 103 99 104 107 105 103 +32 32 31 35 30 40 45 69 90 114 137 148 +153 159 164 169 169 170 170 165 156 143 132 117 +91 57 37 32 36 47 63 85 109 124 134 149 +154 163 167 169 176 178 178 179 177 177 179 176 +178 175 178 179 180 181 181 178 179 169 169 160 +154 146 141 129 158 174 115 116 112 51 40 43 +58 52 47 43 41 53 65 63 52 54 47 42 +45 49 54 43 50 51 40 43 57 51 40 38 +38 38 40 41 56 101 126 137 138 110 86 52 +37 40 48 43 41 56 66 54 44 36 59 85 +60 53 53 46 53 52 56 60 44 43 47 52 +48 50 46 59 79 72 52 84 104 70 95 109 +115 113 100 90 78 82 86 75 51 75 97 119 +153 153 130 114 107 121 153 160 157 130 127 149 +121 67 52 46 46 54 103 187 172 155 84 65 +106 105 41 33 41 33 37 63 83 79 77 51 +65 74 75 74 52 49 54 56 43 50 49 50 +51 45 46 60 57 50 52 65 55 54 51 47 +49 54 60 59 55 69 79 81 97 107 108 113 +119 120 122 120 120 113 101 75 47 42 46 75 +94 89 106 110 113 119 131 129 133 131 132 132 +131 134 136 131 137 134 135 134 135 135 139 135 +136 135 138 137 140 132 134 135 135 135 135 140 +132 137 140 144 143 143 143 147 143 143 146 148 +142 145 146 151 149 154 151 153 154 152 153 158 +158 158 160 159 161 167 165 170 163 167 167 170 +172 172 173 174 175 178 176 179 181 181 188 188 +186 188 186 192 192 195 196 196 198 201 202 203 +205 208 207 208 206 211 210 210 211 210 211 212 +212 214 214 215 215 218 220 221 221 221 219 208 +156 60 43 42 36 33 34 36 31 33 61 142 +147 143 141 145 138 155 147 145 150 147 150 148 +148 148 149 146 147 146 146 148 148 146 148 142 +142 145 142 141 138 138 140 140 141 139 135 135 +135 132 133 135 135 133 135 134 125 128 128 129 +129 128 128 126 129 125 119 119 123 134 158 179 +193 201 207 210 212 213 210 208 204 205 203 201 +207 208 212 216 217 215 215 215 216 215 214 213 +212 208 203 196 186 169 152 135 110 96 93 86 +92 93 94 92 90 90 88 96 100 100 101 101 +107 112 114 112 112 115 114 113 102 101 95 88 +89 90 92 95 97 97 104 106 102 106 105 103 +100 97 94 101 104 105 102 97 +30 30 32 31 +32 37 44 61 87 116 135 151 152 158 167 168 +174 171 170 166 157 148 134 112 83 55 32 34 +36 47 63 82 105 125 137 151 153 161 166 169 +172 174 181 177 179 177 177 179 177 174 180 177 +182 180 181 175 174 168 166 159 153 150 140 133 +149 171 129 103 72 70 43 46 57 47 37 47 +48 61 67 58 49 51 54 42 39 50 42 44 +44 41 40 44 56 53 37 31 35 36 45 44 +85 136 128 128 141 109 89 61 47 49 45 48 +50 52 65 49 44 41 69 85 55 54 52 53 +51 49 49 63 51 39 52 56 44 46 43 56 +79 75 61 85 97 67 89 113 123 118 107 77 +68 75 69 69 57 62 81 116 164 151 128 134 +127 140 150 152 121 89 114 164 157 119 92 80 +61 71 138 181 155 130 60 112 162 143 47 28 +37 29 37 74 87 79 76 50 69 75 65 63 +50 51 57 53 49 61 59 47 44 50 52 55 +55 52 53 48 53 67 53 51 50 56 65 61 +60 73 83 94 106 116 112 119 117 128 125 119 +121 114 100 78 44 42 48 80 90 99 104 107 +110 121 126 131 134 131 130 133 134 131 133 127 +134 142 136 137 136 132 138 140 139 135 133 138 +136 134 138 136 134 138 138 135 137 138 139 140 +144 152 144 142 145 148 145 144 145 147 147 147 +149 152 148 156 152 152 157 157 158 154 161 161 +159 162 164 168 163 165 166 170 170 173 173 177 +176 178 177 180 179 180 184 188 186 187 190 190 +194 198 193 198 199 201 204 202 204 206 207 208 +209 212 209 209 209 209 213 214 215 213 221 216 +214 217 219 221 220 222 222 216 182 87 31 30 +28 32 35 34 30 37 72 140 143 141 142 144 +135 150 148 143 148 148 147 144 144 148 144 147 +144 146 139 143 143 144 145 139 140 144 143 142 +133 136 140 142 140 135 136 134 138 133 137 129 +131 134 128 125 129 126 124 127 131 125 121 132 +133 123 122 119 127 140 169 189 200 204 211 214 +215 214 213 210 206 205 205 205 204 211 213 214 +216 216 217 216 216 212 212 210 209 204 199 192 +183 158 143 126 109 96 93 92 90 96 92 91 +95 95 95 95 100 101 102 108 117 117 115 116 +118 115 117 111 96 96 90 88 84 88 90 90 +95 99 107 104 104 105 100 101 104 99 96 102 +101 97 95 94 +31 31 33 35 34 36 44 58 +87 105 131 148 152 158 164 172 174 171 172 168 +160 155 138 116 86 55 33 34 39 47 55 86 +107 126 134 150 157 161 167 174 175 178 177 181 +180 176 179 177 178 177 180 180 184 181 177 176 +171 167 166 159 154 146 139 137 142 158 131 72 +45 41 38 43 56 53 41 52 52 59 58 53 +45 45 40 43 41 44 46 45 40 41 36 56 +48 46 38 35 40 34 39 62 114 150 132 122 +136 108 98 60 36 42 36 38 39 47 53 52 +55 42 68 75 53 51 59 55 39 45 49 54 +45 44 53 63 45 43 48 49 71 70 55 71 +96 65 75 109 136 120 116 92 57 53 56 60 +54 61 75 129 160 140 138 136 136 153 153 152 +103 51 66 139 153 138 112 119 110 120 168 173 +150 113 86 153 194 168 68 37 37 44 42 64 +80 73 70 47 63 70 59 61 56 52 59 50 +49 65 62 44 50 53 48 49 55 54 51 51 +51 59 58 50 59 54 57 60 74 80 92 105 +114 117 117 120 121 127 132 120 117 118 101 78 +48 45 52 89 86 91 104 111 116 123 129 132 +130 132 133 132 137 137 137 128 135 138 136 137 +140 137 136 137 135 134 137 131 136 140 138 139 +138 136 133 138 135 137 140 144 142 143 144 144 +145 144 144 144 146 145 146 144 150 149 151 150 +153 153 153 156 157 157 162 164 161 160 164 162 +163 165 162 167 171 175 173 176 176 175 180 180 +179 181 186 187 187 186 187 192 192 197 195 194 +198 200 202 205 203 207 206 208 210 212 211 209 +208 211 214 214 212 216 215 214 215 215 218 219 +223 223 221 217 199 117 37 30 26 28 32 30 +29 40 84 139 142 138 142 145 133 147 158 148 +150 150 149 145 145 147 145 143 147 141 141 139 +149 144 144 147 143 140 143 141 137 137 138 142 +138 135 140 136 136 133 134 127 133 135 132 130 +126 126 127 125 130 131 120 126 125 119 120 124 +127 142 175 195 204 209 214 216 217 216 216 213 +209 207 207 207 207 212 215 216 218 217 216 218 +217 216 214 212 209 203 195 184 175 151 135 114 +103 94 95 96 93 92 91 91 89 89 95 94 +97 103 106 108 110 114 111 113 115 114 113 104 +97 95 90 91 87 86 89 98 98 102 103 102 +109 108 106 103 102 103 101 103 99 104 98 86 +29 29 29 31 28 34 41 57 76 111 128 142 +153 161 166 171 174 172 170 166 155 151 142 120 +93 56 35 33 35 41 51 83 106 128 140 146 +159 161 170 170 175 180 177 181 177 175 176 179 +175 179 181 179 181 182 176 175 170 168 167 157 +156 146 139 132 136 155 119 66 42 37 44 48 +55 57 55 56 64 56 51 44 46 49 44 39 +38 49 47 36 47 47 48 49 46 42 32 37 +32 37 55 99 139 144 106 124 133 100 81 49 +40 40 42 44 41 43 53 62 47 49 69 64 +47 52 56 50 36 41 45 48 43 48 57 58 +51 51 47 40 64 66 65 61 70 64 56 99 +125 134 127 99 60 52 57 57 64 71 86 137 +154 139 139 138 142 152 152 159 124 81 53 121 +140 130 61 86 122 155 178 170 156 130 139 178 +200 168 69 35 35 36 39 70 76 61 63 48 +61 70 56 67 65 57 57 49 56 65 67 52 +46 47 53 50 58 49 48 51 48 53 62 54 +48 57 56 59 78 85 105 112 121 117 124 127 +123 123 124 120 118 118 99 82 45 43 59 83 +85 98 101 111 117 121 128 133 129 135 134 128 +137 138 136 135 134 142 133 138 136 134 137 136 +135 138 137 133 134 141 135 139 131 138 132 138 +137 139 141 140 144 142 140 145 143 143 143 142 +147 147 146 146 152 148 152 152 154 153 150 157 +156 158 162 162 159 161 165 158 166 166 164 164 +171 173 179 175 170 175 177 177 180 183 185 187 +184 188 187 189 192 192 196 193 198 201 203 205 +204 205 206 208 208 210 207 210 209 215 211 214 +212 215 213 215 214 214 218 221 220 222 222 220 +210 151 52 26 27 27 32 30 28 45 97 144 +138 140 142 153 139 149 159 150 147 146 151 149 +147 142 144 148 143 147 142 147 145 148 141 142 +141 141 136 143 138 140 138 136 137 143 138 139 +135 136 136 134 134 134 137 131 127 131 130 124 +127 127 127 125 124 120 120 123 126 151 183 200 +207 211 216 218 219 217 215 213 208 206 208 207 +210 212 214 218 218 218 216 216 216 215 213 212 +208 199 191 180 163 144 126 108 97 96 97 100 +91 92 88 89 87 87 90 91 94 107 104 108 +110 108 114 113 111 112 104 98 94 97 93 87 +89 88 94 98 101 108 105 101 106 104 95 99 +107 95 96 107 105 104 95 91 +31 31 34 32 +32 34 41 53 74 101 123 141 152 164 166 173 +174 173 169 165 158 152 138 123 95 62 37 30 +35 42 55 79 108 131 136 145 157 162 165 175 +178 183 179 180 179 178 180 178 178 181 179 180 +182 180 181 175 174 171 165 160 156 147 141 134 +127 153 125 59 48 39 46 49 51 55 56 68 +63 55 40 41 42 56 37 43 41 50 43 44 +46 41 50 44 46 34 39 37 43 55 82 125 +143 116 77 115 118 82 62 52 36 44 40 38 +43 40 47 53 57 69 76 61 38 43 57 50 +33 38 38 40 47 41 55 70 54 56 42 37 +62 74 62 66 52 49 52 70 108 134 134 109 +69 46 65 70 84 78 94 135 139 140 141 139 +146 150 156 160 149 119 73 84 141 129 67 58 +112 156 167 158 155 138 148 173 172 123 47 38 +45 40 46 70 76 62 53 47 58 60 50 60 +67 61 60 51 53 65 69 55 49 48 53 55 +51 51 45 51 54 50 62 47 66 62 59 75 +83 94 110 120 123 115 125 124 124 128 120 121 +121 115 92 69 50 47 74 88 94 94 108 112 +119 122 124 129 132 128 129 130 137 137 139 139 +140 135 133 139 138 138 138 135 137 135 135 135 +136 133 138 136 137 138 135 137 137 138 137 140 +140 140 141 142 143 142 143 146 146 146 146 148 +149 145 149 150 156 154 158 157 158 160 160 156 +162 163 166 160 160 165 164 167 173 172 175 175 +170 172 180 178 181 182 184 184 187 189 187 187 +190 192 192 193 195 196 200 204 203 203 209 208 +207 206 210 208 209 209 212 213 211 214 215 214 +214 216 217 218 220 220 223 221 216 182 78 33 +33 30 30 29 32 45 98 143 136 139 141 146 +139 145 159 149 144 141 151 149 144 146 145 145 +138 143 142 146 144 144 144 145 142 139 145 141 +138 144 138 141 140 134 138 142 133 131 129 133 +139 133 130 132 130 126 127 123 123 126 123 122 +119 116 118 121 130 160 185 202 210 214 217 219 +218 216 216 212 210 210 210 211 212 213 216 216 +217 216 216 217 216 214 212 209 205 197 187 171 +155 134 121 101 100 95 97 98 93 90 92 87 +82 90 100 100 93 102 108 109 112 116 116 115 +111 103 101 94 98 93 92 89 89 94 97 98 +106 106 104 104 103 103 103 101 105 111 97 107 +106 100 86 79 +33 33 31 32 31 38 37 53 +73 102 122 140 153 163 167 171 173 173 173 166 +159 149 138 124 98 67 41 36 39 40 56 83 +108 122 135 147 157 161 167 169 177 178 178 180 +177 175 176 172 181 182 177 181 180 181 181 177 +174 172 165 161 155 150 137 133 128 147 127 67 +49 50 46 59 66 60 62 53 56 42 36 37 +43 45 42 43 44 47 44 44 49 47 52 41 +39 36 45 41 61 88 121 127 112 73 62 109 +112 66 55 50 41 46 39 42 46 46 42 56 +59 72 74 63 40 46 60 55 35 39 37 39 +45 54 61 72 59 60 41 34 60 84 63 56 +71 68 52 65 102 121 127 113 86 60 63 77 +102 97 97 139 137 136 134 139 150 155 161 152 +145 137 120 95 123 139 91 98 160 169 155 156 +116 77 80 93 77 58 40 44 47 41 52 71 +74 59 53 46 63 60 48 78 67 63 50 50 +49 62 59 52 57 53 63 62 50 44 48 52 +45 49 45 52 72 65 61 80 82 100 113 122 +120 118 127 123 125 121 123 123 123 111 90 69 +50 43 67 89 89 96 105 109 123 119 122 123 +126 129 131 131 134 131 136 134 135 137 136 138 +139 138 137 138 139 137 137 132 134 136 135 134 +133 140 139 141 138 139 133 142 141 143 140 140 +145 141 144 144 148 142 157 147 151 146 150 154 +156 155 156 157 158 160 157 156 160 163 160 157 +166 167 167 166 170 173 175 175 170 174 179 176 +182 181 184 183 184 187 189 190 192 193 195 195 +197 199 201 200 199 201 207 208 207 204 207 209 +209 210 211 212 211 213 214 213 215 216 217 217 +219 221 222 220 218 196 115 34 30 31 28 33 +31 51 107 141 134 139 139 146 138 144 159 156 +149 142 148 146 145 145 144 147 144 144 143 141 +146 139 142 144 138 138 141 140 135 139 141 142 +138 138 136 137 133 133 130 129 132 132 132 133 +129 126 128 127 123 123 122 118 125 123 119 124 +134 165 190 203 208 212 217 219 218 217 212 211 +209 208 208 211 212 212 214 215 217 215 216 216 +213 213 210 208 201 195 180 162 150 132 117 102 +103 101 95 98 95 92 88 94 87 92 95 91 +97 107 108 111 110 114 111 114 109 107 99 95 +92 95 94 89 94 93 96 100 104 105 103 105 +102 102 107 97 99 100 97 98 94 88 86 83 +29 29 31 35 30 44 42 60 74 101 122 143 +152 164 169 174 177 176 174 168 157 151 141 120 +102 73 42 31 37 40 55 79 102 124 138 147 +150 156 170 171 177 174 175 180 177 179 174 179 +178 179 178 180 177 178 181 180 173 170 168 160 +154 151 141 130 125 135 115 70 54 49 53 66 +70 60 52 46 50 44 42 42 47 44 61 46 +41 48 43 42 47 47 43 40 37 37 44 52 +96 128 121 92 65 56 62 123 109 75 62 50 +49 46 43 41 40 50 50 54 70 80 70 55 +38 40 50 58 41 38 46 40 48 46 55 69 +57 53 39 32 45 83 72 53 51 59 60 100 +124 111 116 110 108 96 82 84 106 90 96 137 +137 140 135 139 149 143 129 122 142 142 139 133 +134 140 127 158 188 172 165 131 63 45 37 45 +39 41 36 58 77 47 57 79 76 54 47 50 +61 66 55 62 56 68 49 46 50 63 57 53 +48 54 63 57 50 49 52 49 49 56 51 59 +76 64 74 80 87 110 121 123 122 124 127 126 +124 121 118 118 116 111 92 55 48 45 80 90 +92 96 104 113 122 125 124 124 129 128 132 132 +134 135 136 137 136 136 137 139 137 134 137 137 +139 137 139 136 137 136 137 138 140 137 143 139 +140 136 136 140 142 141 142 145 145 142 145 146 +146 142 145 150 148 148 148 150 156 152 152 158 +156 155 158 157 159 159 160 162 161 166 163 165 +166 168 173 175 172 178 178 180 182 181 182 183 +185 187 189 190 194 192 196 196 197 198 201 199 +203 201 206 208 207 207 207 207 207 210 208 212 +210 212 211 214 215 216 214 216 218 219 220 219 +217 207 153 45 27 29 31 29 35 53 119 142 +133 138 139 149 143 142 157 156 146 142 143 144 +147 142 142 146 144 144 142 145 144 141 143 143 +134 139 139 139 138 142 140 140 142 140 136 138 +137 137 136 128 131 131 131 132 130 122 131 125 +123 119 123 122 119 122 121 127 140 172 193 204 +211 214 216 219 216 215 214 210 207 207 207 209 +214 213 216 216 216 217 214 212 212 211 208 205 +197 187 175 153 142 123 112 107 105 103 103 103 +100 94 94 98 92 97 97 97 103 104 107 115 +116 118 113 104 105 102 96 96 90 92 91 92 +94 99 103 104 105 106 107 103 105 103 104 94 +93 97 100 95 86 81 90 92 +29 29 32 31 +32 33 42 51 73 105 118 140 152 159 166 175 +174 176 171 166 162 150 143 127 106 71 40 36 +37 41 54 79 102 124 135 148 155 162 169 171 +174 177 178 176 178 178 175 177 178 177 179 182 +179 181 181 175 176 168 164 159 155 153 145 135 +124 123 115 67 59 57 60 68 69 52 49 49 +49 42 43 43 49 44 41 43 42 52 47 45 +39 49 52 47 52 46 49 68 124 121 86 62 +46 45 77 133 96 71 84 73 47 44 41 46 +47 50 55 60 75 80 72 54 46 38 55 55 +43 37 36 35 43 49 57 68 70 53 40 27 +41 79 94 58 64 56 62 92 120 109 105 111 +118 122 117 105 112 103 114 133 137 134 136 145 +144 116 67 63 114 139 137 147 155 154 159 183 +190 177 159 94 57 40 35 36 31 34 52 96 +67 43 55 77 61 49 47 55 61 62 47 59 +56 63 56 43 55 58 58 48 49 46 62 58 +54 57 50 48 53 53 56 67 70 65 75 77 +89 112 119 122 127 126 124 127 122 123 120 122 +114 101 80 59 48 43 79 92 91 92 102 112 +124 125 127 127 131 127 133 130 131 131 133 135 +137 138 138 141 138 138 142 137 137 138 138 134 +137 134 139 135 142 137 136 137 141 141 136 139 +143 144 141 144 145 143 141 147 144 142 144 149 +145 151 146 146 154 153 154 153 156 154 160 160 +158 157 163 162 162 165 163 165 164 171 173 175 +173 179 175 179 179 178 180 181 187 188 190 192 +191 191 195 195 197 199 199 201 202 204 209 205 +206 206 208 209 209 210 211 213 209 212 212 212 +214 213 215 217 217 219 220 220 218 211 173 68 +26 28 30 31 39 61 127 140 131 140 140 146 +142 142 151 154 149 145 147 141 145 146 146 145 +146 143 144 147 146 141 142 140 137 144 136 141 +136 138 138 141 138 140 139 134 138 136 138 130 +136 130 131 134 132 127 122 125 125 122 122 124 +120 120 122 126 147 176 195 205 210 213 217 217 +216 213 210 207 207 208 206 209 212 214 216 217 +216 216 216 215 214 210 207 203 194 180 166 149 +138 124 113 108 104 106 107 102 101 100 94 93 +97 95 94 98 96 109 113 119 118 117 110 104 +106 102 102 92 95 88 90 91 94 97 101 106 +107 107 108 102 103 97 99 94 94 93 93 92 +89 82 82 80 +30 30 33 32 27 34 39 54 +78 93 125 142 150 158 164 171 176 173 170 167 +159 149 142 126 110 70 44 37 35 40 50 79 +99 121 138 150 159 160 168 170 177 177 176 178 +177 176 177 177 175 181 178 177 178 177 179 176 +172 170 162 161 156 152 146 135 121 117 107 83 +67 58 59 68 70 55 44 43 43 43 42 42 +46 48 46 43 43 46 45 54 46 39 44 42 +55 58 58 73 88 76 47 39 42 52 94 141 +85 80 83 60 52 48 47 43 49 46 47 62 +83 80 67 55 46 39 42 54 47 47 43 39 +43 51 53 66 75 60 38 34 42 83 96 72 +48 57 51 55 74 88 80 92 113 120 129 122 +129 122 113 132 133 128 142 152 143 111 80 62 +81 128 132 124 132 150 158 174 184 170 138 120 +87 63 40 36 39 51 90 85 50 40 66 71 +62 51 50 61 78 61 43 60 58 64 63 48 +56 63 58 49 44 53 61 59 49 47 50 51 +49 49 53 67 70 69 80 86 99 110 120 123 +123 128 121 125 123 124 125 122 117 109 76 58 +47 46 83 92 87 96 106 109 121 130 129 131 +129 131 133 137 129 131 132 136 140 141 139 136 +139 140 144 139 136 136 134 135 141 134 137 137 +139 134 135 138 137 137 137 142 135 139 138 142 +143 138 137 143 142 144 145 149 142 145 145 148 +150 155 151 153 158 156 157 154 158 161 161 161 +161 166 165 168 169 170 171 173 174 176 175 177 +177 179 179 183 187 186 190 189 191 192 194 192 +195 198 197 196 201 204 207 206 208 203 207 208 +207 209 210 212 211 215 211 212 213 213 214 216 +217 217 218 219 220 216 195 106 27 28 30 30 +31 61 125 134 131 144 134 147 147 145 145 152 +152 144 144 142 147 143 148 143 143 141 144 141 +141 140 136 141 144 139 140 139 136 138 139 141 +141 140 139 138 138 133 136 133 131 131 131 132 +131 128 125 125 128 127 122 125 122 120 128 128 +147 175 195 204 210 215 215 215 214 210 207 206 +204 205 208 210 214 213 218 218 216 216 217 216 +213 210 204 198 188 175 155 142 134 120 112 110 +106 105 105 99 106 101 98 97 101 97 98 96 +98 108 116 112 116 116 113 110 105 106 104 96 +95 92 91 94 94 96 97 104 103 107 100 106 +104 104 97 105 90 96 94 86 86 81 83 79 +29 29 33 31 29 37 40 49 73 109 124 138 +150 156 164 170 174 170 170 166 161 150 143 125 +108 87 52 38 39 43 62 78 98 125 136 147 +152 163 167 173 176 178 174 174 174 176 177 173 +173 173 173 171 171 176 177 172 166 163 159 157 +151 155 145 139 127 116 115 101 74 60 63 54 +58 53 45 39 46 44 45 47 50 50 44 42 +45 49 41 41 60 44 44 66 73 76 82 74 +59 47 49 40 48 58 111 122 80 89 83 62 +47 47 47 44 43 35 46 70 88 60 58 59 +48 38 40 47 42 43 42 40 41 52 57 71 +65 54 39 34 42 77 99 86 57 53 45 41 +51 61 61 65 102 109 122 126 137 136 125 126 +136 129 142 155 127 111 95 89 77 96 125 129 +120 135 148 154 149 146 151 164 151 128 91 72 +59 89 115 55 39 50 65 74 55 50 47 60 +71 55 49 64 61 63 67 58 54 66 52 57 +48 58 61 61 49 47 49 49 53 48 60 74 +70 75 77 88 102 110 120 124 125 127 124 127 +122 122 122 128 123 106 71 56 47 47 81 89 +93 103 105 114 124 126 136 128 133 132 132 132 +129 134 133 139 135 134 136 138 142 143 140 140 +138 136 143 129 137 136 136 136 134 133 137 136 +139 136 137 139 140 141 139 138 136 138 143 140 +143 143 147 147 147 151 144 146 152 152 158 150 +155 158 154 157 158 160 160 162 161 166 166 171 +167 168 168 171 173 174 176 176 175 179 180 186 +186 187 191 193 191 189 192 194 197 198 197 202 +200 204 205 206 204 205 206 206 207 209 209 211 +211 211 212 212 213 217 215 215 217 219 219 218 +222 219 205 133 34 29 29 28 32 70 130 135 +137 138 138 148 144 142 149 155 159 143 143 140 +146 139 145 142 147 142 142 138 145 136 140 139 +141 137 138 142 138 138 141 141 135 136 137 135 +133 135 133 133 134 136 132 130 128 131 125 125 +129 126 121 123 122 125 134 130 153 182 197 207 +212 213 216 212 211 208 205 204 204 206 210 210 +214 215 218 219 216 217 215 214 210 210 204 194 +182 163 152 134 126 119 116 115 107 109 103 102 +101 100 96 97 98 97 98 101 101 106 106 112 +112 111 110 110 105 100 95 92 90 90 93 93 +91 100 104 103 104 101 102 105 103 92 93 97 +96 90 88 92 84 81 81 75 +33 33 33 29 +35 34 40 46 64 103 127 135 150 156 167 169 +172 173 171 166 160 155 144 124 117 91 55 41 +36 46 61 78 99 121 133 149 153 162 170 169 +174 176 174 174 170 172 170 172 171 171 167 169 +169 168 171 170 170 162 160 154 151 152 139 140 +130 121 127 119 70 58 44 46 57 48 44 44 +49 43 48 48 42 44 42 46 52 53 52 48 +46 45 56 83 94 94 61 53 50 46 40 44 +58 57 100 90 77 90 91 83 56 43 55 43 +37 40 51 76 82 49 63 67 53 39 41 52 +47 42 36 46 47 51 62 73 49 44 51 38 +46 79 93 88 64 53 47 46 46 56 54 54 +66 97 119 123 140 143 128 128 128 114 133 149 +125 122 107 109 86 82 101 102 110 141 153 142 +121 145 169 176 181 165 141 121 113 135 114 63 +53 61 81 79 56 50 48 52 65 47 51 64 +59 73 83 77 53 60 55 50 48 68 59 56 +51 46 50 41 48 50 66 74 68 77 81 89 +102 113 119 123 127 128 119 133 124 121 125 123 +124 110 63 56 46 55 83 92 98 108 109 121 +124 124 127 131 133 134 131 134 131 131 132 140 +137 143 138 140 145 144 144 137 141 134 134 135 +138 140 133 133 129 136 134 133 136 134 137 137 +139 138 140 140 140 141 144 140 141 142 143 147 +144 148 147 147 146 151 153 151 151 159 157 159 +161 159 157 158 159 158 162 161 164 166 169 169 +170 172 169 171 174 180 182 184 187 186 190 192 +190 192 193 190 197 198 199 201 201 202 205 205 +203 206 207 208 209 209 209 210 210 212 212 212 +214 217 216 213 215 217 217 220 220 219 209 164 +63 26 27 31 33 78 130 135 143 141 138 148 +143 146 150 153 156 145 144 140 139 141 145 140 +142 143 140 143 142 143 136 140 146 135 141 134 +139 139 140 138 139 137 139 140 137 134 131 133 +136 133 128 124 128 131 130 125 121 124 123 123 +121 122 131 135 154 180 200 206 212 214 214 216 +210 207 205 203 202 206 207 211 213 216 218 218 +216 215 213 214 209 205 200 190 172 155 141 127 +120 120 117 120 114 105 105 102 98 90 97 99 +94 98 102 97 98 100 110 113 113 110 111 113 +102 96 92 91 88 89 92 94 98 103 105 103 +101 103 106 107 96 92 93 95 99 89 89 91 +85 85 80 81 +31 31 29 28 29 33 38 45 +70 98 115 146 148 155 162 168 173 172 171 168 +162 154 142 130 120 88 51 44 38 44 54 67 +99 117 134 148 153 159 166 172 174 178 179 178 +173 173 172 172 173 170 168 166 171 173 176 173 +171 168 162 156 153 151 139 130 134 127 147 122 +66 62 58 46 53 51 40 47 44 49 44 47 +42 44 45 48 50 62 49 46 47 50 64 86 +105 73 44 41 43 49 47 51 47 61 93 75 +77 91 89 75 46 38 55 48 51 44 59 64 +52 47 52 69 55 44 45 39 49 50 43 50 +51 50 64 82 55 36 53 61 58 82 91 82 +61 66 48 42 43 39 52 59 65 89 119 127 +142 142 141 121 124 111 136 141 120 134 98 109 +103 69 62 49 54 79 103 114 88 106 128 143 +162 151 137 148 146 159 136 113 108 118 117 103 +82 64 57 69 71 46 54 65 72 91 91 73 +56 58 51 50 52 56 55 55 46 48 50 46 +46 54 71 72 73 73 81 92 104 114 125 127 +122 122 119 126 125 124 128 120 119 95 70 55 +42 59 83 95 98 101 108 122 123 124 124 125 +130 133 132 133 131 132 132 137 136 140 137 143 +142 142 143 138 140 137 140 135 137 143 134 131 +129 135 133 133 135 140 136 137 137 140 141 138 +144 143 143 144 139 141 142 146 147 148 150 150 +148 153 155 151 156 157 157 155 160 160 157 163 +160 159 163 164 163 165 169 170 166 166 170 175 +180 178 183 185 183 183 190 190 188 191 193 192 +196 199 201 199 201 203 206 203 205 205 206 207 +206 208 210 210 216 211 212 212 214 215 214 215 +215 216 217 219 219 218 213 182 86 27 27 31 +35 92 127 131 136 138 140 148 139 146 150 146 +157 153 145 142 142 142 144 140 142 144 134 141 +140 137 143 139 139 138 135 136 140 140 139 136 +136 137 140 138 137 135 136 138 134 136 131 130 +127 128 126 125 126 124 124 124 125 127 130 139 +157 182 200 206 212 214 216 214 210 208 206 202 +203 205 209 210 212 216 217 217 220 213 214 212 +205 201 195 180 166 147 136 126 121 118 117 122 +113 104 103 103 95 94 95 99 100 99 105 107 +105 102 109 110 114 107 110 101 97 98 92 94 +90 91 91 90 93 103 107 104 102 97 105 107 +99 97 98 104 97 83 81 84 91 87 80 80 +29 29 28 31 36 33 35 52 63 91 109 136 +148 159 168 167 172 172 170 166 163 154 145 132 +117 92 52 36 34 44 55 75 96 114 132 146 +155 161 167 172 174 176 178 180 173 173 172 174 +171 172 170 171 175 177 175 174 168 167 162 158 +153 148 138 134 139 136 146 113 59 71 77 44 +46 45 42 43 45 50 42 41 43 46 42 43 +45 54 50 56 43 45 54 77 71 52 42 45 +47 48 50 50 50 58 96 85 88 88 86 78 +58 40 51 45 48 54 60 51 42 46 51 59 +58 40 52 52 46 47 47 47 53 46 45 81 +74 39 53 59 68 92 101 70 47 64 54 33 +34 38 41 51 64 74 116 129 143 151 137 112 +131 118 142 134 121 128 97 90 115 70 36 33 +38 38 50 95 88 50 58 62 82 72 70 122 +140 111 136 133 138 142 132 126 115 103 106 116 +103 76 91 105 100 95 59 61 59 57 45 42 +46 52 57 53 49 46 48 49 47 61 71 74 +78 84 87 101 110 117 122 127 121 124 123 129 +127 128 123 122 120 93 75 62 49 70 85 99 +108 103 114 122 122 128 125 128 134 133 133 135 +134 132 128 139 134 140 140 144 143 140 139 143 +135 138 141 137 138 136 136 132 130 135 132 133 +133 137 136 139 140 137 142 134 143 144 141 141 +141 142 141 145 147 151 152 152 148 152 153 155 +155 157 156 150 156 158 161 162 159 161 162 165 +165 169 169 168 168 165 170 175 180 177 184 183 +182 185 189 188 189 190 193 191 195 195 198 199 +199 201 203 202 206 206 205 206 205 207 209 208 +212 211 212 211 212 217 213 215 216 216 218 217 +216 219 214 198 121 33 31 29 36 95 130 129 +142 136 139 150 141 144 149 147 151 158 145 146 +143 141 141 143 140 142 141 144 143 145 138 142 +137 139 140 136 140 141 138 143 142 139 137 144 +143 139 137 134 138 132 128 129 123 128 119 125 +124 123 128 127 127 134 128 144 162 187 202 207 +211 213 214 213 209 205 205 203 202 205 206 209 +213 215 218 215 218 214 213 212 208 201 188 171 +155 140 129 122 119 113 119 120 114 105 106 107 +102 96 102 98 98 92 98 100 103 107 111 108 +109 109 108 97 90 92 88 91 90 88 94 98 +93 109 108 104 103 104 99 102 98 94 93 100 +94 83 84 86 93 89 90 88 +30 30 29 28 +29 35 37 46 74 88 112 131 152 158 167 168 +173 174 173 168 163 156 146 135 117 85 47 36 +37 41 59 74 98 119 131 147 154 160 169 170 +176 177 177 177 175 180 174 175 178 174 175 173 +179 178 176 176 169 168 159 159 151 147 140 144 +154 134 129 106 54 69 78 44 42 40 41 49 +44 40 56 45 44 46 42 43 53 57 55 45 +44 48 49 72 47 58 47 48 53 58 52 53 +43 52 92 86 85 78 70 63 55 53 44 46 +62 65 75 55 50 48 54 67 61 42 45 55 +60 43 56 50 45 44 49 77 66 37 45 55 +87 104 113 65 36 60 62 37 33 34 42 47 +68 92 107 124 141 148 128 104 136 140 132 106 +123 141 110 76 106 93 40 31 35 34 43 83 +105 44 39 39 41 40 51 100 71 51 59 72 +114 124 128 131 123 125 150 162 154 132 129 116 +82 65 46 60 70 49 56 55 50 49 60 54 +46 48 54 49 53 64 69 69 82 93 91 107 +112 119 127 127 124 122 123 129 125 132 127 122 +116 91 79 53 46 73 90 95 98 100 112 125 +127 131 131 132 133 135 134 134 136 129 131 135 +135 138 135 137 140 142 140 138 138 139 138 139 +138 139 139 133 132 139 133 135 131 133 137 136 +141 138 135 138 141 143 144 142 139 141 139 143 +147 151 149 150 149 151 153 153 152 152 155 154 +159 156 158 157 156 160 161 168 168 167 169 170 +169 169 172 167 178 174 180 182 186 183 185 185 +189 190 189 194 197 198 197 198 199 198 202 204 +205 204 203 206 207 208 209 207 210 211 211 213 +213 215 213 214 213 215 216 218 218 217 215 207 +148 39 29 32 39 109 129 135 142 141 138 148 +140 144 147 142 144 159 145 144 150 143 142 144 +143 140 143 144 143 141 136 137 143 138 138 135 +138 139 140 136 139 137 140 139 137 133 130 133 +135 136 131 125 129 123 126 122 124 122 125 124 +123 125 127 143 166 190 202 207 211 214 216 215 +209 205 203 202 202 207 208 210 214 217 220 217 +215 216 212 209 204 197 185 168 149 138 125 117 +118 115 122 116 109 103 105 103 99 100 96 101 +93 97 103 103 104 106 111 110 109 106 95 97 +98 93 91 88 87 87 92 94 100 106 105 104 +104 100 92 96 96 92 99 92 86 86 87 91 +92 94 94 83 +31 31 30 29 29 36 39 47 +67 82 108 130 150 161 160 168 175 174 176 166 +167 161 151 136 118 86 56 39 42 46 59 75 +99 121 133 144 156 163 165 173 172 178 174 175 +180 175 176 177 178 178 178 176 179 179 176 176 +176 165 166 158 154 143 139 154 153 125 106 98 +59 62 69 44 43 55 52 44 40 45 59 44 +45 44 51 45 52 51 49 43 44 42 48 48 +50 52 50 53 61 53 54 45 49 52 77 88 +83 78 71 64 53 63 55 40 65 64 51 51 +38 47 46 68 62 46 55 55 49 44 43 35 +37 39 55 65 58 48 40 56 84 110 105 56 +37 52 72 54 31 38 56 52 64 82 97 124 +137 116 85 113 139 145 109 91 107 145 136 99 +97 116 79 41 33 35 42 69 123 49 35 45 +45 41 76 79 40 32 33 44 75 73 89 72 +67 72 120 168 166 125 109 109 103 69 59 68 +68 53 54 48 63 55 54 52 42 54 54 53 +59 72 72 76 85 88 94 106 115 125 125 123 +122 128 129 130 126 130 128 127 117 82 70 52 +57 82 86 103 105 103 116 129 133 130 126 131 +132 133 137 134 134 130 134 137 140 137 137 138 +141 139 139 138 139 137 135 133 137 142 137 138 +134 133 134 134 134 132 136 135 137 134 132 138 +142 140 143 143 144 143 142 144 147 148 144 150 +147 152 153 148 153 150 153 158 157 157 156 155 +158 158 161 161 164 167 169 171 168 166 170 172 +179 177 181 177 181 182 185 185 188 193 190 193 +194 195 197 197 197 201 201 203 204 204 205 205 +206 209 210 207 209 211 210 211 211 213 213 214 +214 214 216 215 217 218 217 211 178 71 28 33 +47 121 132 131 142 142 140 152 139 145 145 146 +146 154 153 141 145 142 143 140 142 143 140 145 +142 139 135 139 139 138 137 141 135 142 141 138 +142 137 138 139 136 135 138 134 134 140 127 132 +124 128 128 129 132 124 130 127 125 128 130 143 +170 189 200 207 210 213 217 213 209 204 205 201 +204 205 207 210 215 222 219 217 217 213 210 205 +199 193 180 159 142 132 120 115 113 112 116 116 +113 104 103 105 103 107 91 95 94 101 105 107 +107 105 112 103 105 101 99 94 91 87 87 85 +83 89 96 100 102 105 106 107 103 103 90 86 +92 98 95 95 85 87 86 96 93 91 90 93 +35 35 30 34 28 34 34 43 57 78 105 124 +144 157 160 166 173 172 170 174 173 163 152 137 +112 88 59 37 41 42 56 72 99 121 132 144 +156 160 167 171 173 175 174 179 176 176 178 178 +178 177 175 178 180 177 177 175 173 169 171 160 +156 152 143 149 150 120 99 90 57 55 63 43 +47 55 49 50 51 42 56 57 45 48 46 47 +50 52 45 41 43 54 48 46 42 45 55 60 +66 52 48 46 39 56 74 73 71 70 62 61 +46 51 49 53 62 67 52 49 46 44 49 67 +69 53 42 42 40 47 42 46 35 54 56 69 +59 55 46 49 88 113 102 51 32 35 61 82 +45 43 53 64 68 91 94 115 134 114 76 101 +140 142 113 92 87 120 146 130 93 126 117 56 +36 42 45 58 123 65 35 45 42 50 87 46 +33 31 37 47 68 66 66 53 53 57 79 100 +88 61 72 101 130 105 85 78 60 51 50 52 +56 56 61 50 41 52 52 50 70 68 74 84 +86 86 100 106 117 123 124 122 128 124 127 130 +129 127 126 126 99 78 70 43 59 76 83 102 +93 107 119 130 132 132 129 131 133 133 132 135 +136 136 137 140 140 140 142 139 139 142 139 138 +137 137 137 137 138 141 136 136 130 132 132 135 +133 135 136 136 139 135 138 141 139 139 143 140 +142 144 141 144 146 144 144 150 152 149 153 148 +149 152 155 158 159 156 157 156 156 156 159 162 +168 162 164 166 169 167 173 173 176 174 176 178 +180 178 184 186 189 194 191 195 192 195 197 196 +197 199 203 201 204 206 206 207 206 205 207 209 +209 210 211 211 212 213 214 213 214 214 216 215 +215 216 216 213 190 94 27 30 53 117 131 132 +141 140 137 145 139 146 151 148 147 148 159 142 +143 142 147 145 143 144 143 142 139 140 143 136 +137 137 141 140 137 137 136 138 143 137 140 137 +142 136 139 133 133 134 137 135 127 127 124 128 +124 130 128 125 127 133 129 142 166 190 197 202 +208 213 216 214 208 206 202 199 201 205 208 211 +216 218 220 218 214 212 209 205 199 187 173 154 +141 127 119 118 117 112 119 119 106 107 103 101 +102 99 91 91 96 103 97 102 105 101 110 102 +100 100 98 92 90 85 84 85 86 94 101 99 +104 104 103 104 104 106 94 91 91 92 98 92 +88 91 86 94 92 86 95 91 +31 31 32 32 +36 31 35 48 45 77 99 125 143 153 159 165 +174 172 173 172 170 161 153 137 113 87 67 39 +39 42 71 71 95 117 136 144 152 158 165 173 +171 172 179 176 175 178 179 176 179 176 178 180 +179 180 178 177 175 168 166 163 157 146 139 143 +154 122 107 85 52 53 46 40 44 50 52 56 +51 43 44 45 46 45 45 44 50 45 46 51 +44 45 56 49 48 56 64 61 53 48 49 42 +57 65 71 75 71 65 56 58 52 44 53 54 +60 48 48 43 48 59 55 68 70 55 43 47 +39 45 39 34 35 48 60 62 39 43 45 54 +90 114 99 66 36 35 42 86 85 61 65 73 +82 91 96 97 121 123 97 103 129 128 131 120 +100 89 123 141 126 119 138 90 41 38 43 52 +120 80 37 40 37 73 70 38 32 30 36 61 +64 70 59 52 54 51 71 67 75 50 60 73 +103 113 125 95 67 59 55 57 53 48 57 44 +44 46 44 63 74 67 76 88 86 98 102 109 +119 123 119 122 128 125 126 130 129 129 131 126 +103 82 62 49 75 83 97 101 100 114 126 131 +133 133 131 132 135 134 129 136 138 136 138 142 +137 140 138 136 135 140 139 137 143 136 141 139 +143 136 137 136 132 138 132 137 134 136 136 134 +140 137 137 138 139 141 138 140 140 141 139 146 +147 146 144 148 147 145 150 149 148 157 158 158 +158 158 157 157 157 159 163 160 162 167 167 166 +170 169 173 171 173 174 175 176 181 182 184 187 +190 192 191 191 191 193 196 195 197 197 201 202 +205 205 209 205 208 206 207 210 209 210 209 210 +212 213 213 212 213 214 214 213 215 215 216 215 +203 130 33 32 51 124 129 126 144 141 137 150 +139 151 148 147 147 145 156 146 142 141 142 143 +141 149 144 146 140 139 141 138 136 141 137 140 +136 136 138 139 141 135 140 136 136 138 136 138 +133 131 128 130 131 128 124 125 127 126 129 126 +127 126 131 138 165 179 192 203 208 211 214 210 +207 205 201 199 201 205 210 211 216 218 219 216 +213 213 207 202 195 186 168 151 131 122 120 118 +119 115 115 115 114 109 106 105 105 96 96 93 +87 95 101 102 103 99 106 104 98 95 87 85 +89 83 84 89 93 96 100 102 107 109 105 104 +99 102 97 90 100 97 94 97 90 89 86 90 +96 97 94 98 +33 33 31 29 33 33 40 44 +50 69 101 126 142 150 161 169 169 174 175 169 +164 159 152 133 122 93 69 37 38 51 59 70 +104 119 130 143 151 157 167 172 174 176 176 178 +176 179 176 175 180 179 177 178 179 181 177 178 +174 166 164 159 156 142 133 148 157 124 109 88 +54 54 56 45 43 51 60 64 44 40 48 40 +41 39 46 41 55 54 50 46 49 48 45 51 +57 62 61 63 53 48 45 49 48 56 66 79 +65 70 56 58 50 50 60 60 51 44 47 55 +45 48 66 69 74 67 44 49 42 36 40 39 +38 54 72 52 42 38 44 62 87 105 70 82 +57 35 33 62 107 93 64 74 80 91 96 102 +121 119 122 120 115 96 118 129 117 105 113 131 +142 141 133 122 67 40 47 60 112 96 38 41 +40 70 54 36 45 41 45 65 72 73 64 48 +43 48 76 67 50 52 63 59 61 70 125 104 +65 63 55 45 47 45 50 44 48 50 57 66 +70 75 83 87 91 92 107 112 121 123 122 128 +128 125 127 129 127 129 127 120 97 82 52 47 +80 86 101 101 101 118 129 133 131 132 131 131 +131 135 132 140 137 138 132 138 138 146 141 138 +135 140 138 138 143 142 142 137 138 137 133 132 +132 137 132 137 136 133 140 138 137 144 139 138 +140 139 136 140 141 141 142 141 145 141 146 149 +147 147 149 148 149 154 157 156 153 159 155 158 +158 161 163 161 163 167 169 166 163 169 175 172 +171 169 173 177 182 182 184 187 186 193 190 190 +191 199 197 197 198 199 200 199 202 203 208 209 +207 208 207 207 208 209 210 212 214 210 213 212 +214 213 214 211 215 219 217 214 206 155 41 32 +59 129 120 131 145 143 139 150 142 150 149 147 +150 146 147 142 142 138 147 142 141 137 143 145 +146 141 138 136 139 139 141 140 141 137 137 142 +141 137 143 137 136 142 137 133 134 132 133 128 +130 124 129 128 132 129 133 129 124 130 137 140 +158 173 189 199 204 206 210 209 207 204 202 199 +200 207 208 212 216 219 217 217 212 213 206 198 +193 181 160 143 127 120 121 117 114 114 111 112 +111 108 106 104 102 97 91 90 90 94 98 101 +102 99 103 103 96 86 85 84 91 87 90 92 +99 98 105 99 106 102 103 103 99 100 95 90 +96 101 90 92 95 89 91 96 91 93 97 98 +38 38 33 36 39 40 42 44 46 76 104 119 +137 150 154 162 169 172 171 169 165 159 152 137 +119 96 52 41 45 49 69 69 98 119 132 143 +152 157 166 170 173 176 177 175 179 180 178 178 +178 177 177 178 180 174 176 181 176 170 166 161 +154 148 137 152 164 119 108 95 51 57 54 42 +50 49 53 68 42 40 48 46 43 43 45 40 +56 47 41 43 48 45 51 60 73 74 67 61 +48 41 52 50 49 49 64 66 62 65 59 73 +55 62 65 48 42 42 44 44 43 42 55 57 +73 85 43 39 40 39 46 45 40 58 75 45 +40 38 56 81 93 76 62 92 93 52 37 44 +85 108 86 71 77 96 114 97 107 117 116 121 +123 99 106 105 95 113 116 117 121 146 143 140 +107 48 43 48 105 118 41 42 48 57 40 38 +38 46 58 68 61 60 63 59 46 51 76 60 +45 59 62 60 59 49 77 84 69 66 53 44 +49 47 42 41 43 44 57 67 72 80 85 88 +95 100 106 116 119 123 127 126 124 125 132 128 +131 129 127 116 86 76 54 51 81 86 104 102 +103 120 128 128 132 131 132 130 134 141 137 141 +137 146 137 138 136 137 139 140 141 140 142 137 +145 144 141 140 136 136 131 143 133 135 135 138 +132 135 140 135 136 139 138 139 138 138 139 140 +141 142 140 147 146 141 145 144 143 152 152 145 +152 154 150 155 157 154 156 156 157 158 161 163 +163 165 168 165 166 166 168 170 173 172 175 175 +178 181 184 182 184 188 191 192 190 195 194 196 +199 199 198 200 200 200 205 208 207 206 207 207 +208 208 210 211 209 212 213 215 213 213 212 212 +214 218 215 216 211 178 68 32 62 126 122 135 +147 143 144 151 144 150 154 147 149 144 143 143 +146 140 142 145 141 146 139 147 149 145 139 138 +144 140 141 142 140 138 137 144 141 140 137 137 +134 133 136 132 135 130 131 127 123 127 130 132 +134 135 129 127 131 129 129 138 150 169 181 190 +201 203 205 202 204 202 201 198 200 206 209 214 +218 220 218 214 212 211 204 197 190 176 161 140 +121 117 118 117 120 112 112 109 108 104 111 103 +103 96 89 98 95 94 99 97 104 106 94 90 +92 83 75 81 88 86 101 99 100 105 104 104 +99 99 98 105 95 93 93 96 101 95 93 95 +90 90 92 88 92 93 95 95 +38 38 36 41 +33 32 37 39 49 67 96 117 136 155 153 158 +169 170 170 168 165 158 154 136 121 93 67 46 +45 52 65 77 96 118 130 145 150 156 167 170 +172 172 175 177 175 177 175 178 177 177 176 178 +180 177 182 175 177 170 169 162 153 138 145 160 +162 126 113 105 54 59 55 59 51 39 51 51 +42 43 43 46 41 40 40 51 56 50 45 42 +51 46 58 68 68 67 61 66 48 40 48 53 +47 51 63 71 60 60 55 62 62 66 64 45 +43 40 49 53 48 48 51 50 75 90 54 41 +39 41 42 44 50 62 65 45 34 41 62 93 +90 62 54 84 108 84 59 60 61 84 103 101 +83 78 100 77 64 86 101 138 131 103 109 105 +92 74 90 114 125 136 149 139 139 86 45 53 +87 114 43 44 54 47 41 38 47 45 60 67 +60 50 54 63 40 51 68 61 58 63 53 55 +43 47 58 61 54 66 53 52 50 40 44 44 +45 50 57 77 79 83 85 85 99 104 106 113 +119 123 126 122 125 131 127 133 127 124 119 108 +82 71 52 55 86 90 103 109 108 124 132 132 +129 134 129 133 136 138 140 133 133 139 137 138 +138 138 142 142 143 142 146 142 144 139 141 144 +143 139 134 136 133 135 137 136 133 134 137 135 +140 136 141 138 138 137 142 140 141 141 143 144 +142 147 143 150 149 148 149 150 153 154 154 155 +155 153 155 160 162 162 163 162 163 166 166 163 +170 168 167 165 170 171 177 177 182 183 183 184 +184 187 192 194 193 194 193 198 199 197 201 201 +201 201 203 205 204 205 205 208 208 208 210 208 +209 215 212 214 215 214 212 215 214 215 214 214 +213 191 103 35 68 122 124 137 142 141 145 148 +134 155 147 151 148 146 146 149 146 140 143 141 +143 143 142 141 142 145 139 142 140 142 139 143 +136 142 139 142 141 143 138 138 141 138 137 131 +135 134 128 129 126 131 135 127 131 135 133 131 +138 131 135 135 141 157 172 185 192 198 199 197 +199 196 200 198 201 207 210 215 218 219 218 216 +212 209 204 200 186 172 153 136 125 118 114 116 +113 112 111 114 112 101 108 107 98 96 96 92 +88 99 100 100 105 101 92 86 77 73 75 77 +85 93 99 103 104 106 104 107 101 98 100 99 +93 89 85 98 99 90 94 97 94 100 93 88 +93 100 98 98 +32 32 35 36 33 30 34 44 +49 64 93 114 136 149 152 162 167 170 170 169 +161 161 152 138 122 97 73 54 47 51 59 74 +90 116 129 145 150 155 165 170 169 173 177 177 +177 177 177 178 176 175 177 174 179 177 180 173 +177 171 166 159 152 138 150 164 159 135 122 116 +58 55 55 60 42 46 56 49 48 38 44 39 +38 38 44 51 60 46 40 44 59 71 82 84 +72 65 58 48 47 44 52 40 45 49 68 63 +58 54 53 63 65 63 54 55 49 54 51 51 +49 54 47 57 59 74 55 37 40 43 44 39 +43 63 69 51 43 47 79 110 86 50 59 60 +97 108 80 52 49 49 93 125 106 66 70 86 +89 65 93 148 141 125 114 104 97 65 60 64 +99 113 129 134 147 130 80 52 88 107 53 58 +51 39 33 38 39 67 68 54 66 49 45 42 +36 59 72 57 68 60 51 55 52 51 52 58 +54 68 52 49 46 53 42 52 48 51 56 69 +78 79 86 94 105 109 103 113 118 124 116 123 +128 128 127 127 125 126 124 103 80 59 47 61 +80 93 100 100 112 121 130 131 132 131 130 133 +137 138 139 139 138 141 139 139 139 138 137 139 +141 139 142 140 142 141 138 138 138 140 138 133 +136 137 138 135 131 135 135 136 143 140 138 136 +136 137 141 134 140 139 139 141 148 150 145 145 +149 148 144 148 149 149 154 156 155 156 157 157 +157 157 161 166 160 165 167 165 167 169 167 165 +168 171 172 178 182 182 180 185 184 188 190 192 +194 194 192 195 199 196 201 199 200 200 202 204 +204 205 205 207 205 207 213 208 210 211 213 213 +213 211 213 213 214 214 214 214 213 205 146 48 +78 121 121 141 145 139 141 148 140 147 149 147 +149 144 142 144 142 139 142 144 141 143 142 140 +138 144 141 144 144 144 144 140 141 143 142 142 +139 138 139 140 139 143 138 136 138 135 131 131 +129 128 130 131 133 128 133 135 133 134 134 134 +137 146 156 168 185 189 189 188 191 192 191 195 +201 205 211 214 218 218 216 214 210 206 205 198 +189 167 151 133 125 116 115 113 111 111 113 108 +107 101 104 99 92 96 94 89 90 96 101 103 +101 96 89 79 70 65 75 80 92 99 103 104 +104 104 102 99 102 96 101 92 91 87 91 92 +93 94 88 93 96 92 100 92 94 100 95 90 +36 36 33 31 38 37 34 37 51 60 89 116 +131 150 152 165 170 174 169 167 163 158 153 139 +124 107 71 47 46 59 62 73 93 120 131 144 +151 157 160 168 173 176 177 177 175 176 173 174 +177 179 179 175 176 177 180 170 172 168 161 157 +153 141 146 159 157 143 135 120 54 49 71 70 +47 39 61 51 41 42 46 36 37 39 41 57 +53 50 52 55 84 99 101 85 59 56 53 46 +44 45 45 43 51 61 67 59 59 61 57 63 +54 49 48 49 63 47 47 60 51 53 40 50 +48 68 87 41 34 44 45 44 51 61 61 52 +37 44 85 98 70 64 54 68 76 102 98 65 +38 36 59 124 126 104 102 127 129 92 115 134 +125 135 132 109 87 80 69 54 64 84 114 118 +135 148 109 81 89 95 45 57 71 60 35 38 +36 51 66 60 59 55 54 46 41 58 62 53 +73 58 52 53 48 51 49 48 49 64 50 47 +39 53 43 47 52 59 63 74 80 87 88 91 +108 104 108 114 116 127 120 126 125 126 129 127 +127 127 118 94 73 53 51 71 83 97 102 108 +114 125 132 128 133 136 134 135 143 141 143 139 +136 141 141 139 140 136 143 142 137 141 142 139 +140 139 139 137 140 139 137 132 137 135 144 133 +135 139 135 138 139 137 136 136 137 138 141 138 +139 143 143 141 147 141 147 149 149 144 146 147 +148 152 150 158 153 152 154 155 154 160 159 160 +161 169 166 165 164 164 162 168 170 170 172 172 +176 181 179 184 185 186 186 187 193 194 193 192 +199 199 201 199 198 202 203 205 205 207 208 209 +206 209 209 208 209 211 212 212 211 211 211 214 +212 212 215 216 212 208 173 72 82 122 130 142 +143 144 143 139 130 141 149 146 145 146 145 138 +145 145 145 144 144 148 144 144 139 144 148 149 +145 142 143 140 144 139 139 142 140 143 141 137 +137 136 133 135 138 131 134 135 129 128 132 136 +134 130 133 135 138 137 136 136 137 140 143 154 +164 173 179 180 181 178 187 193 200 207 213 216 +220 218 215 213 209 205 202 196 184 161 147 131 +121 110 114 108 106 112 111 105 105 101 99 97 +86 97 92 91 96 101 102 103 97 93 90 83 +78 70 78 83 90 98 101 109 110 103 100 97 +103 102 94 88 90 87 91 93 91 94 90 99 +99 91 97 95 97 97 96 84 +42 42 39 37 +39 34 36 35 46 56 84 108 130 144 153 163 +169 171 168 173 168 161 151 135 124 102 84 53 +51 53 66 77 91 114 134 139 150 158 166 168 +173 175 177 179 175 176 178 179 173 176 177 177 +177 181 182 170 170 168 164 160 157 140 139 156 +162 152 132 104 56 51 86 79 54 49 59 40 +41 38 45 38 43 44 46 48 50 57 72 81 +98 90 72 57 50 48 50 44 41 44 42 53 +56 66 68 62 61 75 58 47 53 47 45 49 +60 61 53 57 55 54 46 45 56 67 103 52 +42 42 49 55 53 47 58 65 53 57 88 72 +61 67 57 69 74 104 113 77 39 38 36 71 +133 146 147 156 127 108 142 119 89 137 126 115 +107 98 89 59 66 65 114 126 106 141 134 96 +108 114 58 93 129 118 42 33 42 59 60 64 +55 53 59 47 46 67 60 61 69 56 54 46 +47 52 53 48 53 56 52 45 36 46 45 48 +56 64 72 78 84 81 89 95 110 108 109 117 +118 122 123 123 125 125 123 126 123 119 117 89 +68 53 61 77 89 96 99 111 120 128 129 127 +132 136 132 138 139 140 141 137 143 142 139 142 +139 146 142 144 139 140 137 138 137 137 139 137 +136 139 138 137 137 138 135 133 137 138 140 131 +132 136 138 135 139 138 139 140 142 141 143 143 +146 144 146 147 148 150 153 149 152 154 151 156 +154 153 156 157 155 157 159 158 159 165 161 163 +164 161 167 169 172 169 171 170 174 179 176 184 +185 187 184 186 192 193 191 192 194 200 198 200 +197 201 203 203 204 208 208 205 205 206 211 210 +210 211 212 213 212 212 212 213 213 213 213 214 +213 211 194 106 92 120 131 141 144 139 142 133 +123 132 137 138 142 144 144 142 140 145 144 142 +143 144 149 142 146 149 144 146 145 143 141 141 +144 140 139 144 142 140 142 141 141 136 137 136 +134 135 131 126 133 130 134 133 134 133 135 137 +138 142 137 137 140 142 137 143 151 159 164 168 +171 168 177 192 200 209 213 213 223 215 216 212 +211 206 198 192 179 161 140 128 121 111 110 105 +108 106 104 104 108 96 98 96 87 91 93 95 +100 104 97 98 95 92 89 80 77 70 81 88 +97 101 109 111 106 102 97 100 101 99 89 89 +85 88 96 89 93 95 93 101 89 92 96 100 +102 95 88 84 +43 43 44 46 39 36 34 39 +43 54 81 103 133 143 155 160 166 171 170 169 +163 163 151 141 132 108 88 65 53 52 66 78 +93 117 131 141 145 156 168 169 173 176 174 176 +173 178 177 174 177 176 175 178 178 178 180 178 +171 170 166 158 157 141 141 153 165 158 133 94 +64 57 100 84 52 43 54 35 37 37 40 44 +35 39 58 54 64 85 93 92 78 56 46 50 +39 41 45 42 46 39 43 53 61 65 65 61 +59 60 50 49 45 56 48 52 58 68 61 58 +60 55 43 50 45 56 93 67 38 52 58 60 +52 42 51 77 76 82 73 53 56 57 59 58 +58 79 110 104 56 37 28 36 77 139 166 160 +117 108 160 130 105 130 114 90 100 85 71 59 +66 68 105 129 112 119 156 122 119 128 76 134 +163 138 38 34 44 46 53 59 58 53 49 47 +53 63 49 61 62 54 51 46 56 52 47 48 +50 51 54 43 46 43 45 50 51 64 75 85 +85 84 86 100 109 114 117 115 120 122 127 125 +125 127 122 126 123 117 109 87 58 48 64 82 +97 97 102 108 122 131 133 130 139 136 136 140 +138 139 142 142 138 137 135 139 139 141 146 148 +143 136 140 138 139 138 132 137 140 135 136 136 +138 138 134 135 137 140 136 137 136 134 134 136 +134 135 139 140 141 139 140 144 143 141 145 151 +146 146 154 149 149 148 150 152 153 147 158 156 +158 158 159 156 160 158 162 164 165 165 169 166 +170 173 171 173 173 176 175 181 185 186 184 188 +190 194 191 192 196 195 196 199 200 198 201 205 +206 206 208 206 208 209 212 210 210 212 211 212 +213 212 211 213 214 214 213 214 214 210 201 136 +101 120 135 145 144 140 137 127 115 122 131 131 +134 133 134 134 135 144 142 140 142 146 145 146 +147 147 145 143 143 147 142 143 142 143 143 144 +140 142 141 142 140 134 135 137 135 137 132 130 +135 133 132 140 140 138 141 139 140 135 138 139 +140 138 137 142 138 145 153 156 157 161 177 195 +204 208 213 215 221 217 213 212 208 205 201 194 +175 158 140 127 118 112 113 113 111 107 102 100 +102 94 93 89 84 94 95 97 103 99 95 94 +94 85 76 75 74 84 82 93 98 102 111 109 +105 104 103 96 96 98 89 92 88 85 90 87 +91 100 92 99 96 95 93 96 95 90 80 74 +42 42 37 32 36 30 30 35 38 48 78 104 +124 142 154 157 164 168 170 172 166 164 153 141 +134 115 93 66 58 58 67 72 91 112 134 140 +150 157 165 168 171 174 175 178 175 176 175 174 +176 177 172 177 178 175 179 176 170 168 162 158 +152 142 143 149 162 164 134 97 63 60 96 86 +55 52 49 37 40 38 42 41 43 62 77 78 +90 92 78 62 64 49 47 45 48 42 43 40 +40 42 43 49 65 73 53 56 72 59 49 49 +46 54 54 59 69 64 67 69 72 59 50 41 +43 43 70 64 49 54 61 49 46 40 45 83 +96 97 60 48 47 52 53 53 56 68 101 123 +89 53 34 37 43 72 99 111 84 111 135 116 +110 124 131 86 83 74 59 49 62 50 93 121 +128 114 155 159 124 123 115 168 169 88 37 36 +53 45 48 58 50 42 47 39 49 60 55 50 +47 48 48 48 51 54 46 50 43 40 49 51 +48 39 46 49 58 62 74 79 88 93 97 104 +109 117 117 122 121 121 125 126 123 124 123 125 +122 114 98 79 54 43 66 84 94 99 113 118 +123 129 134 133 135 137 136 135 138 140 142 146 +141 140 135 142 142 143 144 147 145 139 140 140 +139 135 139 139 138 137 138 137 137 137 132 136 +138 133 134 130 134 137 136 134 131 134 138 141 +144 139 139 142 142 146 148 144 144 144 152 144 +146 151 152 151 154 150 155 151 154 157 160 156 +158 161 163 164 162 163 164 168 167 173 171 173 +175 174 180 184 183 183 185 189 189 192 191 193 +194 196 197 201 200 200 200 202 204 205 207 207 +207 208 209 211 212 213 212 214 211 211 210 212 +212 213 214 215 214 214 204 171 108 119 136 145 +142 141 136 119 112 117 119 125 129 128 129 129 +132 139 133 137 139 140 141 143 147 143 147 142 +146 148 142 148 142 140 146 145 143 147 144 141 +144 137 140 140 134 141 136 132 141 137 135 137 +139 139 139 141 146 141 139 141 138 141 139 134 +130 134 141 143 147 157 175 193 204 211 216 218 +220 218 215 214 209 204 197 184 170 154 135 124 +116 110 109 108 107 110 100 96 94 97 88 90 +90 99 92 99 96 98 99 90 86 82 78 72 +79 82 85 97 102 107 107 110 106 101 97 92 +94 89 88 90 88 88 90 92 94 98 98 96 +95 90 97 103 90 85 80 71 +38 38 40 38 +39 40 31 39 49 52 72 100 116 140 153 154 +165 169 172 165 162 163 154 142 131 120 93 71 +57 58 63 74 93 112 129 140 154 154 169 167 +170 174 178 177 177 172 175 174 176 175 175 180 +177 179 176 177 173 168 164 160 154 145 135 144 +159 171 139 103 64 72 92 91 46 59 50 49 +42 41 49 41 47 68 80 80 78 68 54 47 +51 49 47 49 47 50 51 47 48 44 49 57 +68 66 55 67 78 65 57 54 50 59 62 58 +68 61 67 68 61 58 58 48 45 48 63 73 +58 72 57 39 41 42 51 76 109 104 56 41 +42 44 50 55 48 67 93 104 94 61 67 41 +41 49 63 58 56 81 96 108 115 125 145 105 +82 68 60 43 56 51 73 86 114 130 125 172 +155 146 151 175 148 57 36 44 49 49 58 57 +49 45 41 44 58 62 54 48 52 51 45 51 +49 46 57 43 47 46 49 46 46 48 46 55 +60 67 71 80 93 96 106 108 113 116 118 119 +120 123 130 126 123 124 121 123 123 111 85 67 +52 54 77 95 95 98 113 122 127 132 130 134 +132 135 137 138 136 137 139 142 141 145 143 142 +139 142 143 145 146 141 143 140 138 138 140 139 +138 142 139 138 137 137 133 135 136 135 138 134 +134 138 139 135 135 137 143 142 147 142 142 143 +144 142 145 146 146 146 149 145 147 150 151 151 +152 155 155 151 154 154 155 157 155 154 160 161 +157 161 163 167 164 172 176 175 175 175 181 181 +182 184 181 187 190 191 193 194 194 197 199 196 +197 201 201 201 203 206 208 208 209 209 211 210 +212 213 211 210 211 216 213 210 211 214 213 211 +214 215 212 190 126 122 144 146 145 131 129 105 +106 108 114 121 113 119 119 123 124 126 130 131 +126 134 136 142 142 144 143 145 145 146 148 144 +142 144 146 142 138 142 145 142 142 141 138 139 +141 142 140 131 138 139 136 139 144 145 142 149 +145 145 147 143 143 137 136 137 131 129 131 140 +146 163 179 197 206 210 219 221 219 218 216 213 +208 202 192 182 164 145 133 117 115 113 114 110 +107 102 94 97 101 97 92 89 87 89 96 101 +96 96 95 86 79 83 75 73 81 87 87 102 +104 102 102 107 101 99 95 95 94 90 88 86 +84 93 86 93 92 96 94 94 92 96 99 102 +89 84 75 69 +39 39 36 34 32 32 44 41 +41 51 70 90 114 143 152 156 162 166 162 162 +165 158 153 143 129 112 99 68 50 58 62 78 +88 112 129 141 147 156 162 166 172 173 176 175 +174 174 173 175 175 177 175 180 176 177 179 175 +170 172 164 162 154 146 134 139 149 173 144 106 +58 78 93 96 50 55 54 41 42 48 43 48 +49 56 60 55 59 52 51 51 57 51 45 50 +44 48 52 47 43 49 49 58 67 55 55 79 +71 67 54 52 49 47 60 66 65 55 55 63 +55 68 62 60 50 57 67 71 64 52 47 39 +36 48 61 84 111 87 53 43 42 39 43 55 +51 71 106 107 97 64 67 79 42 33 48 46 +45 54 56 68 98 126 149 131 109 81 57 43 +48 49 63 69 71 131 123 156 179 171 180 162 +105 41 44 51 50 52 58 61 46 49 43 52 +63 53 56 64 51 52 47 50 55 47 45 46 +43 52 44 47 41 49 44 56 64 75 79 79 +84 100 111 109 110 112 117 115 122 121 126 123 +122 122 123 123 120 104 82 55 46 67 84 97 +88 106 116 125 129 130 136 137 132 137 134 142 +140 136 139 139 140 139 141 141 139 139 142 149 +150 145 145 141 136 140 136 137 140 141 139 139 +143 138 136 138 135 135 133 138 136 139 140 140 +137 135 138 141 142 141 140 144 142 144 147 146 +147 150 149 150 147 149 150 151 153 152 154 153 +157 156 157 153 158 158 158 161 159 160 163 166 +163 172 172 174 173 174 178 177 182 180 185 180 +187 188 192 193 191 196 195 195 199 200 200 201 +203 203 206 208 210 210 210 208 209 211 211 211 +212 213 213 212 213 214 214 212 214 216 215 201 +151 122 142 149 138 123 117 97 97 103 108 113 +104 110 111 116 115 118 126 129 125 130 133 133 +137 139 141 143 143 143 145 142 145 148 144 143 +143 146 140 144 144 137 140 138 135 141 142 133 +135 141 143 147 145 149 143 151 144 146 145 144 +142 139 140 137 132 133 132 144 144 161 183 198 +207 214 219 220 220 217 214 211 208 201 190 176 +162 142 129 120 113 108 111 108 108 105 106 100 +92 96 82 93 91 92 101 100 102 95 87 84 +87 80 75 79 83 90 92 99 103 105 105 98 +101 95 95 92 95 87 81 87 92 86 87 92 +95 96 95 92 89 95 99 91 91 83 71 63 +36 36 40 35 38 34 38 43 35 44 78 101 +126 145 151 157 159 169 161 164 162 160 151 140 +134 118 91 69 58 58 61 77 93 112 127 137 +146 154 161 165 167 174 173 174 175 175 177 174 +174 176 175 176 177 179 177 175 176 167 170 164 +158 148 134 129 139 167 146 97 56 71 96 68 +59 58 48 41 41 49 42 50 42 56 50 50 +51 45 47 52 47 48 47 49 41 43 60 45 +41 45 52 58 61 49 60 73 60 65 55 59 +50 65 61 78 58 61 46 55 59 49 51 56 +55 63 58 62 45 38 43 35 35 41 59 91 +102 64 54 46 40 41 45 53 76 87 116 121 +110 90 52 81 77 37 46 64 51 49 41 41 +54 80 115 152 143 90 59 44 54 59 83 78 +52 89 111 118 170 169 168 121 52 33 39 45 +47 48 58 46 44 40 38 49 69 54 52 54 +49 43 49 49 49 47 42 40 40 42 47 53 +46 52 51 58 64 77 73 78 90 103 110 112 +116 117 116 117 122 126 131 129 124 123 122 121 +110 92 65 49 49 67 85 95 95 109 124 129 +129 130 136 133 132 134 135 139 141 138 137 135 +138 141 140 140 138 141 144 143 146 145 142 141 +142 139 140 141 139 143 143 143 142 139 140 137 +140 135 132 136 133 142 139 142 135 140 141 141 +140 139 138 143 139 145 144 144 147 150 148 146 +149 151 150 148 150 148 150 151 154 153 156 156 +157 158 160 159 163 164 166 167 167 168 173 171 +175 177 178 180 180 181 185 181 188 190 192 192 +192 199 197 196 197 201 201 202 204 205 204 208 +210 209 210 209 210 211 212 208 211 215 214 213 +214 212 213 211 213 216 216 209 172 126 137 143 +134 117 110 91 86 88 94 111 93 103 105 109 +106 113 116 118 116 123 127 129 131 126 133 139 +136 142 138 141 144 148 145 148 144 144 142 139 +144 142 144 139 137 139 138 134 133 143 143 145 +146 146 148 154 148 149 142 144 143 140 143 136 +129 133 139 152 149 163 187 202 207 214 222 219 +221 215 213 211 205 197 184 167 153 136 123 116 +116 111 112 106 104 98 101 94 91 90 83 93 +94 102 105 98 96 89 80 73 76 73 79 83 +91 93 96 97 104 107 102 100 105 100 102 95 +95 90 87 95 94 90 98 97 100 97 94 92 +92 94 87 88 80 72 68 58 +39 39 37 42 +39 32 33 39 36 48 76 104 128 143 151 155 +161 163 164 161 158 161 150 141 133 118 96 73 +65 60 61 75 86 110 124 139 146 152 159 163 +167 173 174 176 173 176 177 175 175 176 175 174 +177 177 177 173 174 168 164 164 155 146 138 124 +136 157 145 92 59 74 92 63 50 63 52 45 +41 41 40 40 45 45 46 49 44 49 50 55 +48 45 43 45 44 54 62 52 43 49 61 74 +52 56 66 64 57 55 53 51 55 63 76 79 +67 56 45 45 52 56 48 53 64 69 55 45 +43 40 39 38 40 43 70 103 79 49 51 53 +49 42 43 53 71 107 123 119 118 111 67 54 +94 61 42 61 59 50 41 40 35 62 92 154 +150 94 50 47 52 66 86 89 68 92 64 87 +127 158 127 91 37 33 49 51 48 57 53 46 +39 37 41 56 63 55 50 51 51 42 42 54 +46 43 44 37 45 40 47 58 46 43 49 59 +70 73 81 84 98 106 109 111 111 118 117 119 +119 118 129 122 121 126 126 121 108 79 65 52 +51 75 91 90 105 116 124 131 130 131 139 136 +137 133 134 145 138 136 136 139 137 141 138 136 +141 141 143 142 140 143 145 147 141 142 143 140 +141 141 140 144 140 139 139 139 136 135 136 137 +135 141 138 136 139 144 139 138 142 141 146 143 +141 145 142 146 147 149 146 147 144 151 149 148 +150 152 150 154 150 153 155 157 156 159 161 158 +162 164 163 167 168 167 171 172 170 174 181 175 +177 181 183 184 188 188 189 191 193 196 196 196 +199 200 202 203 203 205 203 207 207 207 209 210 +211 210 213 210 212 211 215 213 213 212 213 212 +214 216 216 212 189 140 137 135 114 105 105 85 +77 82 96 103 90 91 92 99 100 106 103 110 +108 118 119 123 124 127 128 129 130 133 139 141 +136 139 139 148 140 140 140 137 139 136 142 142 +140 139 140 139 137 138 139 147 149 151 145 153 +149 142 147 144 143 139 139 140 136 133 137 145 +146 170 192 203 208 217 219 221 220 214 214 209 +203 193 180 165 148 130 117 113 112 109 108 102 +98 96 95 91 87 93 90 92 96 98 99 97 +98 81 77 77 81 76 83 88 88 100 102 102 +104 100 101 96 98 93 97 90 88 84 85 95 +90 95 97 98 101 98 94 90 96 99 91 79 +76 69 53 60 +38 38 38 33 29 31 35 41 +40 51 77 105 124 138 147 151 157 163 167 167 +168 164 154 142 132 112 89 71 59 63 65 76 +93 110 127 138 144 159 161 170 172 170 174 176 +176 176 175 175 176 177 177 177 180 177 178 176 +171 168 166 160 155 152 141 128 132 148 146 100 +66 81 95 64 64 73 50 52 43 49 40 47 +45 46 48 52 49 59 50 46 49 45 43 45 +42 46 54 46 42 59 74 61 44 64 71 60 +52 51 60 58 56 67 95 85 74 58 51 41 +39 49 43 47 48 50 47 48 50 46 42 37 +39 43 81 89 54 43 54 53 52 47 46 53 +69 99 123 120 116 133 104 56 67 85 60 47 +53 47 35 47 46 54 68 119 144 116 59 50 +47 61 102 107 110 102 73 75 85 154 123 75 +41 39 49 48 52 67 59 47 38 41 39 50 +53 47 48 50 46 43 39 47 44 40 44 42 +44 43 48 53 57 58 55 68 70 75 83 89 +98 105 110 113 115 116 118 116 122 121 124 126 +122 121 120 118 104 70 55 51 55 80 87 93 +104 125 129 132 133 132 135 136 138 132 135 139 +138 137 144 137 135 142 138 142 144 141 141 145 +142 144 144 140 140 140 140 138 141 142 141 142 +140 142 143 139 134 136 137 136 134 139 137 136 +136 142 138 136 139 145 141 142 144 143 143 147 +149 150 149 149 144 150 149 154 154 149 156 155 +152 150 154 158 159 163 161 163 164 162 169 164 +165 170 171 168 169 173 174 171 179 184 184 186 +189 186 189 194 192 192 192 198 196 199 201 203 +203 203 201 208 206 209 212 211 210 208 212 212 +211 211 213 212 213 213 211 214 215 216 217 215 +200 154 133 127 102 89 91 77 74 79 85 103 +82 80 87 93 94 94 99 99 109 110 112 117 +115 120 119 125 126 126 134 134 129 133 136 136 +136 137 134 141 141 142 142 140 142 143 139 140 +140 141 141 147 151 156 155 154 151 149 145 137 +143 139 135 133 134 138 136 146 155 178 195 205 +211 215 218 220 220 215 213 206 199 191 174 154 +142 128 120 113 111 104 102 99 95 87 83 88 +78 84 85 94 96 100 102 91 86 79 77 67 +70 73 84 90 98 107 108 104 101 101 96 92 +95 95 98 89 83 87 89 95 94 101 107 104 +103 94 94 90 90 89 86 75 70 66 62 52 +36 36 38 32 34 33 35 35 42 51 68 101 +114 133 145 154 162 170 174 175 170 168 161 150 +136 112 91 68 60 60 64 80 92 107 129 135 +146 154 162 162 175 173 171 171 176 176 175 177 +174 177 177 177 176 181 179 177 176 170 162 164 +157 148 139 128 124 134 135 96 71 77 96 73 +60 68 43 38 39 45 46 44 51 50 51 52 +52 44 56 47 47 48 43 49 43 48 47 51 +50 61 71 56 49 68 73 61 52 48 45 53 +57 70 79 81 72 58 46 43 42 49 41 40 +46 55 55 49 44 43 40 43 38 51 80 88 +47 38 49 64 65 54 47 54 60 78 121 125 +122 125 138 72 49 69 76 64 43 39 32 40 +47 55 60 72 91 97 71 48 41 61 91 119 +126 120 91 89 82 135 126 57 35 40 51 51 +59 59 52 37 53 42 50 51 45 48 51 46 +49 46 45 45 41 36 39 38 40 43 50 55 +62 61 67 70 69 79 85 95 105 111 111 115 +118 115 115 117 120 129 126 126 123 123 121 112 +86 67 53 50 61 80 90 97 110 132 137 134 +132 132 135 133 134 133 131 137 139 135 141 140 +139 137 143 143 144 140 143 144 144 138 148 140 +145 142 140 138 140 139 141 143 136 139 137 142 +139 133 141 137 140 134 136 134 138 136 134 138 +138 138 140 140 148 143 145 144 149 144 148 156 +147 148 151 154 155 153 155 152 154 151 153 156 +159 162 163 160 159 163 162 164 165 166 168 170 +171 168 172 170 179 181 182 181 187 188 187 190 +190 190 195 195 196 195 199 202 201 204 205 207 +208 209 211 209 209 211 214 215 213 212 217 212 +213 216 214 214 213 216 219 217 210 173 127 117 +87 82 79 78 70 79 77 97 75 76 81 86 +85 85 96 95 97 98 102 102 105 109 111 111 +114 123 119 121 121 124 126 133 132 131 132 137 +134 135 138 135 139 139 143 144 146 150 145 147 +155 152 154 154 144 145 138 138 136 131 134 132 +134 139 140 150 164 184 198 207 212 217 219 220 +218 213 208 203 197 187 172 151 137 126 116 111 +107 102 101 91 86 77 79 77 78 85 89 95 +101 100 97 89 83 77 71 68 74 82 78 90 +96 109 101 101 97 99 94 91 98 98 93 91 +92 89 94 90 97 103 102 104 99 90 93 93 +85 86 81 75 63 61 64 53 +35 35 36 30 +33 39 41 35 40 46 69 91 110 131 147 156 +166 174 174 174 175 168 162 157 138 120 97 67 +62 65 66 73 86 108 126 138 147 153 160 165 +170 171 173 170 173 175 173 175 176 177 176 178 +179 178 179 179 169 170 165 162 160 151 142 128 +124 130 118 97 83 78 94 81 73 62 43 36 +39 42 41 47 51 58 59 65 53 46 49 53 +48 57 43 45 47 43 58 54 59 69 65 50 +55 68 63 58 50 52 52 56 57 76 65 73 +77 57 54 49 38 47 39 41 56 54 48 48 +44 39 41 38 40 58 76 68 41 43 47 61 +73 78 61 53 60 72 99 123 128 106 158 115 +52 53 57 62 70 59 40 41 45 56 64 77 +68 56 65 49 41 63 86 125 108 91 98 103 +94 127 116 46 38 41 51 48 52 55 49 41 +47 41 47 51 43 43 46 53 50 56 41 41 +34 38 37 42 51 43 52 57 67 68 67 70 +77 79 92 103 110 114 111 115 116 119 116 123 +122 121 124 125 125 123 117 97 76 48 46 52 +77 86 94 98 118 134 134 135 137 136 132 132 +135 134 136 141 139 139 140 140 142 143 142 142 +139 144 144 145 143 142 142 145 139 141 142 142 +141 141 142 142 138 140 137 137 135 134 138 136 +139 138 133 135 137 135 138 141 139 138 139 143 +144 143 146 145 148 143 144 148 148 147 149 150 +148 153 155 151 152 151 154 154 158 159 159 158 +161 161 164 164 166 167 170 169 169 168 171 171 +174 175 180 182 186 189 189 188 191 193 193 192 +194 196 198 203 206 205 205 208 208 208 209 208 +211 211 213 212 212 211 216 213 214 215 215 215 +215 218 217 218 216 185 125 99 81 82 80 75 +60 62 73 77 68 67 80 80 79 81 89 88 +92 88 85 95 97 100 98 104 109 111 115 117 +116 112 116 129 126 127 123 129 130 126 132 135 +136 140 137 147 144 150 154 155 156 154 159 152 +145 142 141 132 128 124 128 128 131 136 146 155 +174 192 203 210 213 219 222 220 217 211 207 200 +191 178 166 142 130 121 117 109 100 100 89 89 +86 76 75 87 80 92 93 95 98 95 93 86 +74 72 71 73 77 85 82 99 106 106 104 100 +93 95 94 100 98 93 92 95 91 86 91 94 +103 106 104 105 96 94 93 92 82 92 79 77 +68 60 54 59 +35 35 37 37 34 34 34 37 +41 46 60 85 104 125 151 171 174 173 175 174 +172 171 166 151 143 129 106 75 63 59 57 67 +83 108 123 136 141 151 158 162 167 171 169 169 +175 172 174 171 176 176 177 179 177 180 183 178 +175 170 170 162 159 152 145 131 126 128 110 109 +81 68 82 82 83 57 43 37 37 40 50 52 +58 66 50 52 45 44 43 46 45 46 47 44 +46 52 61 63 68 68 52 50 57 67 65 63 +47 49 50 49 56 65 57 65 86 59 53 50 +47 48 45 46 41 46 39 45 55 44 41 40 +40 57 57 50 56 39 58 56 65 104 97 95 +94 92 86 120 133 115 144 143 83 52 48 46 +64 89 73 40 40 56 65 50 58 51 48 44 +55 56 82 132 81 67 88 109 101 124 82 40 +37 47 46 50 50 52 44 34 39 47 52 52 +50 42 48 51 43 41 40 46 46 36 37 44 +49 50 48 58 74 66 72 72 79 83 91 106 +111 116 114 113 119 116 115 114 117 126 124 120 +121 121 109 84 49 40 49 71 81 89 91 109 +127 129 130 133 131 134 132 134 134 138 133 137 +139 137 140 143 141 143 142 144 145 143 145 148 +139 141 139 139 138 142 141 141 145 141 139 146 +142 142 142 138 135 131 133 133 139 137 134 135 +135 136 137 136 140 142 136 140 140 146 146 143 +144 143 144 144 151 149 150 146 152 150 148 152 +152 157 154 155 157 157 159 159 158 160 165 166 +165 167 169 167 168 171 174 170 173 174 181 181 +187 189 187 189 192 190 191 193 193 197 200 202 +204 203 205 207 209 207 209 207 210 213 212 213 +211 211 214 212 212 215 216 216 216 217 219 218 +216 196 131 89 73 73 77 79 73 74 85 76 +66 66 70 74 76 74 78 80 90 78 85 88 +88 100 94 94 96 97 107 106 104 101 110 109 +116 117 116 119 128 118 124 127 134 136 133 137 +143 146 152 158 161 160 156 154 150 145 144 132 +125 120 125 127 131 134 146 161 181 199 205 211 +216 220 219 219 215 210 206 199 185 171 154 139 +128 120 110 103 96 91 87 81 81 71 80 79 +81 91 101 97 101 93 89 86 73 65 71 76 +83 92 95 102 104 102 97 93 95 95 98 93 +91 92 90 93 90 93 92 93 100 110 106 102 +97 93 93 86 91 78 76 70 58 56 57 57 +34 34 40 33 30 31 35 33 44 49 49 76 +107 137 155 169 170 173 177 172 175 171 166 157 +138 130 111 81 57 57 60 68 81 111 125 132 +144 152 157 162 167 170 173 173 175 178 174 176 +176 178 175 176 175 180 179 177 177 171 166 166 +153 153 144 135 127 125 107 102 87 78 82 92 +99 67 41 38 45 42 43 47 65 58 45 43 +44 39 43 49 46 43 47 46 51 52 63 71 +72 53 47 45 63 70 63 51 53 54 54 53 +66 63 56 67 80 58 54 53 53 46 44 44 +41 44 36 39 54 49 40 42 39 61 46 45 +51 51 82 70 41 71 117 122 111 106 92 100 +135 132 136 156 117 67 58 49 54 73 98 76 +43 48 70 52 55 62 59 44 60 72 106 140 +77 59 88 104 114 134 62 38 45 41 49 56 +50 49 38 38 43 54 54 46 42 50 49 39 +39 49 41 42 40 37 40 44 46 46 50 61 +71 73 75 78 85 91 101 117 115 117 120 119 +113 117 115 117 115 124 118 116 121 113 92 73 +48 43 57 74 85 91 101 114 129 131 127 134 +130 134 136 137 134 135 134 139 136 141 144 145 +142 144 144 142 141 143 146 148 144 137 138 138 +141 141 144 144 143 140 139 141 139 142 140 137 +138 140 136 135 139 133 133 135 139 135 136 138 +138 139 140 137 139 147 138 144 143 148 147 143 +145 147 154 149 146 150 154 152 150 161 154 158 +157 155 158 160 160 161 162 162 167 167 169 168 +168 168 171 172 176 175 177 179 185 190 187 183 +188 190 192 192 195 195 198 202 202 205 207 204 +208 207 208 206 210 210 211 215 211 212 211 214 +211 214 216 216 217 217 219 218 218 206 143 86 +68 77 83 82 68 89 97 77 70 74 70 69 +68 68 71 75 82 78 81 79 84 88 93 85 +89 92 93 94 96 95 99 99 104 107 110 109 +110 111 115 123 131 126 135 137 144 144 150 156 +157 164 162 157 154 146 146 129 127 128 134 132 +133 132 152 162 188 202 209 213 217 221 221 219 +215 208 201 189 176 159 144 136 123 113 106 94 +86 90 83 82 80 69 77 80 85 87 90 96 +94 93 83 80 69 68 77 85 87 100 97 105 +114 102 96 94 93 90 95 92 93 96 95 87 +90 96 96 97 100 104 106 99 96 97 97 94 +79 74 74 60 54 56 53 57 +34 34 30 32 +29 33 35 37 49 41 53 67 99 140 155 163 +166 172 177 175 176 173 168 158 144 134 118 93 +58 53 58 72 84 107 124 133 142 155 156 163 +169 170 172 171 175 171 175 177 178 177 177 173 +177 178 179 174 175 173 167 164 159 150 145 139 +125 123 115 104 93 74 76 92 94 68 37 39 +41 39 44 61 66 51 49 50 47 45 46 47 +44 56 47 46 44 52 64 76 55 55 50 45 +66 69 62 51 43 49 54 60 60 70 63 66 +72 60 59 49 50 50 45 44 47 41 47 48 +53 50 51 52 49 49 44 45 45 73 117 65 +31 46 72 121 117 112 96 96 122 130 103 152 +158 122 85 59 49 58 72 85 72 51 66 73 +69 73 75 55 66 105 150 152 62 44 60 69 +85 92 50 49 43 40 51 49 50 41 36 37 +48 57 47 47 42 45 43 49 47 49 40 43 +38 40 40 41 56 56 52 52 70 77 77 81 +84 93 106 109 113 118 120 121 118 116 119 115 +119 117 120 122 124 101 74 54 38 42 62 87 +86 95 109 120 127 134 132 134 128 131 138 138 +131 133 130 134 137 136 146 136 141 139 142 143 +141 142 143 146 141 142 138 139 143 138 145 143 +141 140 136 135 137 140 137 135 134 140 136 138 +140 135 138 132 137 132 135 137 140 135 140 138 +140 142 140 142 139 147 144 146 143 146 147 151 +145 149 150 151 154 152 155 155 156 157 157 158 +158 160 162 164 164 169 172 168 168 174 171 174 +173 173 176 181 187 187 187 185 189 191 191 193 +195 197 199 199 202 202 204 205 207 208 206 208 +208 211 210 212 211 212 213 213 213 214 214 216 +216 217 219 218 218 213 165 94 73 80 83 87 +71 88 95 83 73 81 79 81 77 76 79 72 +80 73 72 76 81 80 85 83 83 82 81 78 +88 84 88 92 91 98 95 101 99 99 101 110 +109 122 122 133 136 139 145 148 157 158 159 156 +151 145 142 144 145 149 149 143 139 143 148 165 +188 201 210 217 218 219 220 215 211 205 195 185 +166 153 138 129 119 106 94 92 85 84 81 73 +74 70 76 82 89 98 98 95 94 90 83 71 +72 68 80 89 96 102 98 104 108 101 92 93 +94 92 97 94 93 91 91 85 94 95 101 98 +105 101 100 95 91 100 93 87 74 74 70 58 +55 49 53 60 +32 32 30 35 35 36 38 34 +37 37 53 68 109 136 155 160 166 172 176 178 +174 174 169 158 145 131 119 96 60 52 60 77 +84 105 124 132 143 149 155 164 168 169 171 176 +172 171 177 176 176 176 174 174 179 178 178 178 +175 170 165 164 153 153 145 141 124 108 107 122 +91 67 82 89 95 57 39 44 42 43 48 62 +59 39 41 41 44 44 42 47 43 43 45 47 +51 57 72 71 52 44 49 47 67 68 57 48 +54 49 47 51 65 74 61 64 71 54 54 57 +56 52 54 45 46 46 43 48 42 55 56 57 +49 48 37 49 48 70 116 46 33 36 48 95 +116 91 79 93 106 131 111 118 172 157 112 85 +79 56 48 47 65 76 67 90 86 95 91 81 +93 97 151 117 44 41 52 51 58 55 55 54 +52 55 51 45 42 41 37 40 48 64 47 40 +40 43 46 45 45 43 45 43 45 42 49 40 +58 58 57 62 71 83 79 82 91 100 114 112 +119 114 120 123 123 114 118 117 120 117 120 116 +114 92 57 44 44 47 68 88 99 101 116 125 +129 133 135 136 131 132 137 137 135 132 133 138 +136 135 136 138 142 138 138 141 143 139 143 144 +143 139 137 141 137 138 141 145 142 135 139 138 +137 146 143 137 135 134 138 139 139 133 134 134 +137 135 135 136 135 133 139 143 145 141 141 142 +141 145 144 145 146 147 145 149 147 146 152 149 +153 149 155 152 154 158 162 156 159 160 160 165 +165 167 168 167 170 170 169 171 170 172 178 182 +183 185 182 189 189 190 188 197 196 197 200 202 +200 200 203 204 206 206 207 209 209 209 210 211 +211 212 214 213 213 214 215 216 216 218 216 217 +219 215 183 97 70 81 83 90 83 88 95 82 +82 80 83 81 78 81 82 74 82 83 76 74 +73 74 69 76 72 72 78 75 77 80 81 81 +83 86 77 94 94 90 96 99 108 108 112 124 +128 134 141 148 152 154 155 153 143 142 149 162 +159 155 153 148 149 146 154 173 191 202 211 216 +221 221 219 214 210 202 190 178 155 143 130 120 +106 97 95 84 79 75 72 68 74 80 83 85 +94 96 89 87 86 80 78 75 74 80 84 93 +99 104 106 102 99 99 96 94 89 95 96 93 +88 91 90 91 103 91 102 105 110 105 94 102 +98 97 90 86 78 68 74 65 58 44 52 52 +39 39 37 37 33 30 27 30 33 39 46 69 +111 138 150 159 169 171 175 175 176 174 169 159 +146 138 125 108 67 59 64 70 87 103 120 133 +144 148 157 162 166 169 171 173 173 172 177 171 +174 180 172 176 179 181 179 180 175 173 166 161 +160 154 144 135 113 95 112 129 96 68 91 90 +96 56 38 35 35 43 51 54 46 39 38 47 +45 43 39 45 44 45 46 45 64 68 71 64 +51 43 46 46 61 70 65 47 48 49 50 52 +63 67 64 67 71 63 54 61 54 65 59 42 +42 40 38 46 46 49 49 53 52 51 47 57 +49 66 85 37 31 34 38 67 101 97 73 83 +99 127 128 99 142 171 152 106 112 87 43 49 +55 87 103 89 109 130 115 97 63 60 90 61 +45 46 47 44 47 48 54 54 48 61 49 50 +44 41 37 47 48 52 48 41 45 42 43 53 +43 46 40 43 52 41 43 45 47 58 57 62 +74 78 77 87 94 106 113 118 121 120 120 123 +117 116 115 122 118 119 117 113 99 66 46 41 +37 49 68 94 105 106 119 127 130 132 133 135 +133 134 134 134 132 134 139 136 132 139 137 139 +146 137 138 139 141 138 144 147 140 137 136 139 +138 140 142 141 141 143 142 137 137 145 141 139 +137 137 138 134 141 134 135 133 130 132 137 135 +132 136 138 140 141 140 136 139 145 146 137 140 +145 145 146 145 148 149 145 153 151 151 151 150 +152 158 158 162 158 160 162 164 164 165 170 169 +168 170 167 171 168 173 176 180 180 185 181 186 +187 190 189 193 194 197 198 202 202 202 201 204 +206 207 207 207 208 210 211 213 211 211 211 213 +214 213 214 215 216 219 216 218 218 216 197 121 +77 74 84 86 80 96 95 86 89 94 88 83 +86 81 83 77 87 75 78 67 72 64 74 71 +74 65 63 68 70 74 71 76 70 75 71 80 +79 74 73 82 87 97 101 116 119 125 136 139 +140 143 144 150 147 154 160 169 164 161 154 151 +149 154 163 182 198 206 212 219 221 220 218 212 +207 197 185 166 153 140 125 111 97 89 80 75 +70 58 62 61 70 73 79 84 88 92 89 83 +86 78 73 76 75 81 92 97 99 108 109 93 +85 93 91 93 96 93 94 100 93 86 90 88 +91 97 101 103 104 100 87 94 98 93 92 80 +80 79 63 54 58 50 51 52 +39 39 38 34 +33 33 29 33 32 40 52 71 103 141 149 159 +167 171 175 175 178 174 168 162 154 142 123 107 +68 52 61 74 82 106 117 134 143 150 157 164 +164 170 172 171 172 176 177 175 178 177 174 176 +178 179 180 180 174 176 168 163 156 154 147 126 +94 81 112 130 100 82 89 92 94 57 37 36 +41 49 59 52 41 45 49 47 45 46 40 44 +42 45 47 72 72 72 62 54 48 47 52 52 +76 74 57 46 46 50 51 50 56 69 64 59 +70 66 58 55 69 66 60 52 41 41 37 53 +51 52 50 51 57 55 52 53 48 44 50 37 +37 37 39 45 78 86 93 79 95 116 130 113 +95 143 165 140 135 120 67 63 75 85 103 98 +91 127 132 105 64 54 52 39 38 55 47 42 +43 46 52 55 54 71 65 51 45 42 42 51 +56 45 47 41 43 41 38 41 38 37 40 44 +42 44 43 52 53 60 58 67 85 85 80 92 +101 105 112 118 118 116 119 118 117 118 127 121 +120 117 119 105 78 54 36 39 45 68 82 105 +106 113 126 131 133 136 136 134 135 134 134 132 +135 137 135 138 138 137 142 141 139 139 140 142 +141 140 143 142 140 144 141 140 141 140 145 142 +145 142 140 140 137 138 136 140 138 137 140 134 +139 135 134 133 132 133 138 135 134 134 144 137 +140 141 142 140 144 144 144 143 142 145 147 152 +147 148 151 151 150 149 153 151 154 156 154 158 +160 154 161 159 163 163 164 166 165 169 167 169 +169 174 174 178 178 185 184 185 186 191 191 192 +194 198 196 198 200 200 203 204 206 207 205 207 +208 209 208 210 211 210 212 211 212 212 212 214 +216 219 215 217 218 217 205 142 74 70 77 89 +82 99 92 94 95 98 93 91 84 81 88 80 +94 80 80 77 77 71 74 66 59 62 66 68 +63 68 61 63 63 67 63 65 66 62 65 65 +82 86 88 92 106 118 121 123 127 135 140 146 +157 170 174 175 169 166 154 148 146 159 171 187 +200 209 213 218 217 217 217 211 202 192 176 157 +146 132 114 105 93 83 78 74 64 58 61 60 +69 75 78 84 85 82 77 77 80 78 75 84 +81 87 97 103 105 109 109 94 86 88 85 92 +89 93 91 94 92 87 90 89 95 98 102 104 +102 103 96 95 92 94 87 87 75 67 59 58 +58 55 55 60 +41 41 34 40 32 31 32 34 +33 40 48 68 102 141 153 159 169 165 176 177 +182 175 169 162 156 144 124 120 70 55 58 70 +82 100 118 134 139 154 159 162 167 169 171 172 +173 174 176 173 177 178 176 178 180 179 182 182 +174 172 169 166 160 156 141 112 75 81 121 125 +99 81 81 89 91 51 38 34 48 58 58 47 +42 48 44 51 42 40 38 42 46 50 61 88 +63 60 58 53 42 41 45 45 80 77 55 54 +49 47 43 55 65 67 59 60 70 62 65 69 +66 61 50 57 51 40 41 47 54 60 42 56 +52 55 53 50 47 36 35 42 34 44 51 45 +41 59 97 102 90 102 122 126 113 124 129 143 +144 145 104 75 113 128 87 105 86 102 125 115 +92 72 48 38 35 47 42 44 46 48 54 51 +59 51 43 46 40 45 45 49 48 41 41 40 +38 37 45 41 43 39 41 44 41 40 46 51 +54 59 58 70 87 88 86 96 103 112 116 118 +113 114 116 120 117 118 118 121 119 117 108 79 +53 39 36 46 51 77 86 102 109 120 130 130 +135 128 136 137 137 136 134 138 133 135 136 138 +138 140 137 141 138 139 141 141 140 140 140 141 +137 143 142 142 146 144 143 140 146 137 136 140 +139 139 139 138 139 139 142 136 138 135 135 137 +137 134 137 137 133 141 140 138 142 139 138 138 +143 146 146 143 144 145 143 146 146 149 146 150 +150 146 151 151 152 155 153 155 161 154 159 162 +162 162 164 165 167 168 165 170 169 177 175 177 +179 183 183 189 186 187 187 191 193 193 199 200 +199 196 200 202 209 207 207 205 208 209 208 208 +212 210 212 213 212 213 213 213 215 217 217 215 +218 218 211 171 87 69 78 89 89 100 92 96 +97 94 96 87 92 93 96 86 86 82 87 75 +85 76 77 68 75 68 63 66 63 58 61 51 +58 56 54 50 51 47 53 51 59 65 74 79 +90 101 104 111 116 119 136 154 173 184 186 185 +181 174 160 146 151 163 177 191 201 210 211 216 +217 217 212 207 201 189 174 157 139 123 106 94 +83 79 70 63 61 56 58 64 87 80 80 89 +88 75 73 69 73 81 76 84 92 87 108 108 +111 104 101 96 91 93 94 89 91 87 91 96 +87 90 91 88 93 100 102 101 106 101 97 98 +92 90 88 79 68 63 63 57 56 54 52 53 +42 42 41 40 41 37 43 44 41 39 48 71 +100 134 150 162 168 172 178 180 181 174 170 163 +158 145 132 110 71 60 56 74 91 98 122 132 +143 154 160 163 165 169 168 175 177 177 175 174 +176 174 172 175 179 179 178 180 179 175 172 166 +159 156 142 100 65 95 117 117 93 82 83 81 +85 55 39 44 46 55 55 40 39 37 39 45 +43 37 42 43 48 58 77 83 52 49 59 54 +47 42 47 48 72 69 53 49 41 48 53 60 +70 67 59 55 75 65 54 61 58 62 57 54 +59 53 41 41 50 62 43 44 57 61 61 57 +57 43 40 46 53 59 56 44 35 43 71 108 +106 94 110 127 136 140 122 114 134 148 139 105 +115 138 95 101 94 79 77 99 112 93 73 46 +40 46 39 43 46 47 51 53 60 50 44 45 +44 41 43 53 48 45 41 38 38 41 39 41 +39 38 40 42 39 44 43 50 60 68 69 75 +88 88 91 102 101 107 117 110 115 115 116 120 +113 120 115 119 119 115 94 67 43 36 38 47 +70 88 95 104 114 131 131 134 137 132 135 136 +138 135 132 133 135 139 139 137 139 139 139 140 +141 140 137 139 139 139 138 144 142 140 146 138 +142 142 143 144 147 138 141 140 144 139 137 136 +141 140 141 137 141 135 136 136 135 134 138 138 +139 136 138 140 136 138 137 135 142 145 144 144 +142 144 146 145 147 153 147 149 151 149 150 153 +152 155 158 155 158 155 156 156 161 163 162 165 +168 168 167 168 171 178 177 177 177 180 183 187 +187 188 187 189 192 196 199 199 201 202 199 203 +203 206 204 204 208 208 208 210 209 210 212 213 +212 212 214 214 216 217 217 217 218 218 215 186 +106 75 83 88 88 96 92 106 99 98 98 96 +93 96 94 95 91 90 88 83 87 87 78 73 +73 72 64 64 62 52 56 53 49 55 53 41 +43 51 50 50 49 55 56 64 76 81 98 98 +102 117 145 173 188 189 193 192 186 175 166 150 +158 165 178 194 204 210 213 218 217 216 212 205 +194 182 167 147 132 111 93 89 78 75 64 60 +55 52 56 69 80 77 80 85 82 78 77 79 +77 84 92 94 97 104 106 108 105 106 98 92 +90 91 87 85 90 85 85 88 91 94 93 90 +98 101 102 102 102 99 97 97 92 92 80 75 +60 57 60 55 52 53 52 51 +49 49 47 46 +45 44 53 50 54 54 51 78 104 134 153 159 +166 171 177 181 179 175 173 167 162 153 140 108 +75 62 59 78 88 102 124 136 143 150 159 159 +167 169 171 172 175 175 173 174 174 173 174 176 +180 180 180 180 176 176 172 166 161 152 140 101 +77 90 120 126 91 70 66 70 69 48 40 41 +52 61 49 41 39 38 43 47 44 38 43 46 +56 74 70 62 56 46 52 61 53 47 46 47 +64 64 53 45 43 43 47 67 79 69 63 50 +58 62 54 57 56 63 55 51 61 57 52 49 +50 51 45 39 40 46 55 62 61 52 42 44 +49 56 46 46 36 40 43 76 99 109 108 112 +134 153 146 119 100 117 145 136 106 110 113 80 +88 95 57 66 110 112 86 67 41 39 40 39 +48 47 54 58 49 46 42 55 47 44 50 45 +45 40 42 42 45 46 42 40 34 40 42 44 +42 41 43 50 56 65 68 80 85 90 94 105 +107 112 113 113 118 110 118 118 115 119 120 114 +112 104 71 50 43 36 43 54 78 91 101 114 +123 131 132 130 131 134 135 135 144 132 135 135 +137 135 138 139 139 137 138 142 139 140 139 137 +136 139 141 144 142 137 144 143 141 139 144 145 +142 138 142 142 140 141 141 136 141 139 142 134 +139 140 137 135 137 135 135 132 135 139 138 137 +139 137 135 139 139 140 144 140 143 144 147 145 +147 153 152 150 153 152 153 153 155 153 154 155 +158 157 161 156 162 159 164 163 161 163 168 171 +171 173 177 176 174 179 183 182 185 185 188 187 +188 195 195 198 196 199 198 203 202 204 204 205 +206 208 208 208 210 209 211 211 213 211 212 213 +215 216 215 217 216 216 215 203 136 77 80 84 +93 96 95 100 102 100 101 102 105 95 89 98 +91 90 90 88 89 83 80 78 76 70 67 63 +63 60 59 57 51 56 46 45 46 46 48 44 +44 44 49 53 58 65 91 87 111 135 165 182 +194 195 193 192 188 179 167 159 160 166 184 195 +205 210 213 215 216 213 211 203 192 176 160 139 +121 106 87 77 75 68 58 57 57 62 61 72 +79 76 83 81 76 79 74 72 77 90 95 98 +104 100 112 107 112 104 101 94 91 91 88 85 +89 85 83 89 91 93 90 97 100 98 105 105 +98 99 98 96 88 84 76 73 59 58 60 56 +50 50 48 50 +48 48 47 48 56 54 60 59 +54 57 55 75 108 128 147 162 169 173 179 180 +181 180 175 171 167 158 136 108 78 61 60 71 +90 100 118 133 141 153 159 163 165 170 173 174 +176 174 176 176 176 174 175 177 179 185 182 180 +176 174 172 167 164 153 137 96 89 91 123 133 +95 68 61 60 58 49 38 38 52 52 41 46 +44 46 46 56 43 43 50 64 53 56 52 59 +46 46 56 66 58 43 50 52 60 65 59 48 +45 45 52 65 69 66 61 55 60 61 61 61 +59 55 48 41 59 59 66 62 49 48 44 40 +45 38 50 61 61 56 60 46 49 55 49 43 +40 38 44 44 66 91 106 103 110 152 166 146 +121 101 114 137 132 100 89 96 76 97 89 74 +99 93 77 75 44 40 38 41 44 53 55 49 +42 40 43 44 47 51 61 58 58 58 43 45 +43 49 39 37 35 42 41 41 39 39 46 59 +67 74 70 83 89 97 104 104 113 110 120 114 +115 117 118 120 120 118 123 117 107 77 54 43 +39 40 51 66 83 99 109 125 126 132 130 128 +132 139 139 135 135 134 133 138 137 137 136 139 +144 135 140 139 137 137 139 138 137 137 137 142 +141 138 142 145 144 140 144 147 140 139 144 145 +144 144 142 139 138 141 139 138 133 138 133 142 +142 134 133 136 135 137 138 140 136 134 133 138 +140 140 141 141 139 143 145 147 147 152 149 147 +148 151 153 156 155 156 153 155 156 155 159 160 +160 158 162 164 167 164 166 168 169 176 180 175 +174 179 179 179 182 182 184 187 191 193 196 196 +195 199 199 204 204 204 203 207 205 206 207 208 +207 210 212 213 211 212 212 214 215 217 217 216 +216 216 216 210 165 89 78 86 91 96 96 100 +109 105 104 101 102 100 102 101 97 92 94 88 +92 87 81 79 76 72 72 73 73 63 59 58 +52 47 51 48 38 39 43 42 35 38 43 53 +52 54 66 95 122 152 175 192 198 200 197 194 +186 180 169 161 160 168 188 199 208 210 211 217 +212 212 207 198 186 171 149 133 105 89 81 70 +73 65 57 57 59 73 74 73 78 81 87 79 +79 77 73 68 75 87 89 90 94 100 108 108 +102 101 93 95 88 85 91 93 81 82 92 84 +85 88 89 96 101 99 108 101 104 99 93 94 +84 83 74 71 57 62 61 55 52 51 50 53 +46 46 57 70 67 70 68 66 65 65 68 83 +103 121 143 161 167 175 178 181 182 182 178 176 +172 154 131 104 84 61 64 74 90 104 119 133 +145 150 157 158 165 171 170 173 177 174 177 172 +174 169 176 179 177 182 184 178 179 176 171 166 +163 153 128 92 94 87 127 145 104 70 64 60 +49 61 41 44 50 55 37 44 40 43 39 51 +49 57 62 55 46 43 49 51 49 47 55 62 +45 40 43 44 48 55 61 55 43 41 54 70 +67 71 56 62 62 56 58 56 55 60 63 55 +49 55 65 53 47 38 40 44 35 35 38 47 +65 72 57 39 41 54 57 51 46 46 46 43 +37 59 92 102 103 131 157 165 144 128 113 132 +140 117 73 88 97 94 121 116 123 111 84 63 +40 37 38 53 51 54 55 47 41 38 36 48 +40 42 42 44 43 41 39 35 37 46 39 36 +38 40 39 46 49 48 57 70 75 69 76 86 +90 98 106 108 112 116 114 115 118 117 117 116 +129 120 121 107 86 55 43 41 43 47 61 76 +93 107 115 130 129 127 130 130 134 136 139 135 +137 141 135 135 136 137 135 133 136 136 136 137 +137 138 138 138 134 139 141 141 142 140 143 148 +141 141 143 146 145 140 143 141 140 141 141 138 +138 139 140 139 136 136 134 135 137 137 134 133 +136 139 138 141 138 132 138 138 137 139 143 142 +142 141 144 143 148 146 148 144 147 152 155 153 +150 154 154 157 155 153 157 154 158 160 162 164 +164 163 168 165 171 176 178 173 176 178 182 182 +183 183 187 188 192 192 194 196 194 197 198 200 +203 202 205 205 207 208 209 208 206 210 210 212 +214 213 213 214 215 215 216 215 217 215 215 212 +183 102 81 85 92 94 99 99 106 106 101 103 +99 102 104 102 102 102 94 95 91 88 87 84 +81 81 81 71 75 68 60 60 55 50 53 50 +45 46 37 39 33 34 36 38 46 53 64 100 +138 168 190 196 202 202 201 194 189 171 159 151 +157 175 193 203 209 214 214 216 214 210 204 192 +183 162 142 120 96 78 69 62 58 56 62 56 +66 69 76 76 83 83 83 81 70 64 67 73 +82 89 90 102 100 112 107 107 102 97 92 88 +86 86 82 83 80 90 78 80 95 89 96 97 +106 108 103 102 102 100 92 92 87 81 69 58 +58 65 54 53 57 51 51 56 +58 58 77 80 +77 76 75 73 68 71 70 85 102 122 142 154 +171 177 177 182 183 183 180 178 171 154 134 115 +89 68 60 78 90 106 118 128 141 148 156 160 +166 170 171 176 176 177 177 175 174 172 173 175 +176 183 183 177 178 173 167 164 162 149 121 96 +103 86 134 142 107 72 66 52 52 56 38 38 +50 65 44 43 52 49 51 57 68 66 53 50 +50 42 43 50 48 53 59 59 44 44 49 47 +45 55 69 64 50 47 58 71 62 62 53 68 +62 52 52 59 56 60 64 49 52 51 47 43 +41 39 40 51 43 37 40 45 59 73 57 48 +38 54 79 57 47 46 47 48 49 38 48 82 +100 128 139 147 146 143 132 132 129 113 80 80 +100 114 123 108 138 140 104 80 45 40 33 38 +49 55 54 42 36 40 45 43 45 42 34 40 +41 45 42 45 40 36 39 43 38 48 41 44 +47 51 59 74 74 70 80 86 96 100 105 108 +115 115 115 112 119 118 118 114 118 119 111 97 +62 47 42 41 42 53 76 95 99 119 127 130 +133 127 128 133 135 139 135 135 132 137 137 137 +138 139 138 136 136 135 138 141 140 141 140 137 +139 138 145 138 136 144 142 149 141 143 144 145 +147 139 139 143 140 137 142 139 140 140 142 138 +136 140 136 135 138 139 136 134 136 140 147 140 +135 139 139 141 139 139 142 138 136 139 142 143 +144 145 146 145 146 147 149 149 154 152 152 157 +158 159 154 156 158 157 157 162 163 167 169 168 +172 176 179 176 173 176 180 184 185 187 188 190 +192 192 195 197 198 198 196 200 201 205 204 204 +208 207 209 209 207 209 211 210 212 210 213 211 +213 214 216 214 217 215 216 214 201 129 83 85 +89 93 96 101 105 106 103 108 112 103 102 103 +102 95 99 98 89 96 93 88 88 84 83 74 +82 72 64 57 61 57 46 49 48 42 51 36 +36 37 48 38 35 42 67 115 148 180 195 201 +204 205 210 198 184 161 152 148 162 182 197 204 +210 213 215 215 211 208 199 190 170 148 122 92 +86 75 72 53 59 59 67 58 72 69 76 79 +82 78 79 74 72 66 69 74 86 92 96 110 +112 110 105 98 94 90 88 84 79 85 83 86 +84 88 80 82 87 91 99 101 106 111 109 114 +103 99 95 91 85 73 69 66 62 72 58 53 +52 52 53 61 +73 73 83 86 80 84 79 84 +78 77 82 88 101 119 136 152 167 172 178 183 +184 187 181 176 171 154 136 121 98 73 67 82 +84 104 117 129 141 147 160 159 164 171 173 177 +175 177 177 175 174 172 175 177 178 185 182 183 +176 173 171 166 157 145 107 110 98 94 133 139 +114 72 68 50 56 46 37 52 52 54 44 45 +54 45 71 78 72 62 47 41 41 46 42 46 +45 51 63 60 54 46 46 54 52 51 62 62 +52 55 62 68 59 54 53 64 74 56 54 77 +55 67 62 49 49 49 46 47 41 47 41 52 +50 43 39 37 43 51 59 56 45 54 91 69 +52 59 51 48 48 36 35 51 77 104 131 129 +118 145 141 130 134 119 103 91 95 121 101 62 +92 129 119 108 43 41 43 43 51 56 44 46 +51 41 49 41 46 40 44 40 42 41 47 37 +37 36 42 42 49 40 40 44 45 59 74 80 +77 75 89 88 101 104 113 117 113 118 117 112 +116 124 118 121 116 116 99 74 52 43 44 40 +44 64 83 98 112 121 129 131 130 126 133 136 +134 136 136 131 133 133 137 137 139 142 138 137 +138 140 141 138 139 143 138 138 140 139 142 141 +141 139 141 147 139 144 143 143 143 143 142 148 +140 143 145 141 141 141 137 141 138 138 138 135 +137 141 134 138 136 135 139 142 136 140 136 144 +136 138 139 138 140 140 140 146 147 144 146 145 +145 145 148 150 155 156 156 155 157 157 154 156 +157 155 158 163 162 166 164 166 168 175 172 173 +172 177 180 182 178 184 183 187 190 194 194 196 +195 196 196 201 200 203 201 206 206 206 207 208 +210 211 208 208 212 211 212 213 214 215 214 213 +216 217 219 215 204 150 87 85 87 90 95 100 +98 103 108 104 104 107 109 104 110 100 100 101 +96 99 98 90 85 86 86 79 79 79 70 73 +62 55 54 48 41 45 47 44 44 37 34 32 +35 44 69 115 153 186 197 204 205 206 206 197 +179 154 151 155 173 189 199 207 209 212 214 211 +209 204 193 181 156 134 97 74 74 65 63 53 +50 62 60 63 71 71 79 76 77 80 80 70 +68 76 76 83 89 94 103 110 113 111 113 90 +90 81 89 81 84 81 86 79 83 85 82 86 +88 93 101 102 107 111 113 106 100 96 85 88 +85 73 73 70 69 64 64 60 52 52 60 62 +89 89 92 88 87 88 80 82 87 86 92 96 +112 121 136 153 166 170 179 184 183 185 183 173 +169 153 139 119 99 74 66 73 90 104 115 135 +139 151 159 162 168 170 174 179 173 174 176 177 +177 175 178 173 183 180 188 180 174 172 174 167 +159 140 110 113 92 108 135 132 106 93 75 48 +45 44 37 50 50 50 48 54 54 59 65 79 +54 55 48 50 49 52 40 44 47 54 50 51 +59 52 55 45 45 51 60 53 47 59 69 70 +58 48 58 67 71 55 55 54 60 67 66 50 +45 47 47 47 47 46 38 46 50 42 43 45 +39 39 53 69 55 52 76 75 61 52 41 47 +40 43 40 41 60 72 107 137 119 130 147 150 +155 142 115 105 112 104 99 92 87 110 125 117 +51 42 48 49 52 53 49 38 45 41 43 41 +45 37 38 35 43 42 37 38 36 48 48 47 +42 45 42 45 52 69 79 77 77 78 89 96 +101 109 114 116 117 122 116 116 116 124 119 115 +120 95 67 47 47 39 39 43 56 75 88 110 +121 125 127 133 129 124 132 135 135 135 133 132 +133 136 138 135 141 142 139 135 139 140 134 139 +139 139 138 141 139 140 141 138 139 140 143 147 +143 142 146 144 143 142 139 146 140 142 144 146 +140 143 137 137 136 136 141 138 139 137 141 136 +138 138 136 137 136 139 138 139 142 137 138 137 +139 137 141 144 142 144 146 148 144 144 148 148 +152 153 152 155 158 155 154 153 156 157 159 161 +164 160 164 169 170 169 169 172 170 175 179 181 +177 180 185 187 190 192 191 195 197 199 197 198 +198 201 201 204 203 204 205 207 209 209 210 207 +208 210 211 212 213 215 213 215 214 216 217 217 +211 175 101 81 82 95 94 102 97 101 107 105 +107 105 111 104 110 100 102 99 97 94 95 96 +90 90 93 88 86 76 71 73 64 61 69 58 +47 43 47 44 42 40 39 38 35 41 68 107 +156 184 198 204 205 206 205 192 172 155 152 161 +176 192 199 204 208 211 211 209 205 194 181 167 +141 112 80 61 61 55 53 60 55 54 64 68 +72 71 76 77 77 73 72 69 72 74 81 91 +94 102 105 106 116 103 99 92 86 83 80 74 +82 84 84 81 82 82 84 78 84 94 102 106 +108 116 116 102 102 96 89 90 85 79 73 79 +77 69 64 61 61 56 54 60 +94 94 92 93 +88 84 83 89 91 85 89 103 114 121 135 153 +164 169 178 181 182 183 179 179 165 159 142 128 +106 78 67 82 86 104 117 134 140 150 157 164 +167 170 170 176 175 176 176 175 176 175 175 177 +180 186 186 183 176 174 172 168 162 138 112 124 +95 109 129 122 94 83 85 46 37 38 41 50 +50 39 58 66 62 56 60 57 47 55 44 44 +51 45 45 44 53 47 50 45 52 42 52 46 +56 43 54 56 52 66 70 65 49 52 61 67 +77 56 58 67 58 64 60 47 46 43 49 47 +46 49 41 44 52 54 54 44 36 34 54 76 +71 51 59 78 58 52 50 49 42 49 49 42 +67 67 67 112 129 124 131 162 170 161 132 114 +90 101 84 100 115 121 141 116 53 46 46 52 +45 45 41 47 43 42 42 43 46 47 42 40 +45 43 40 36 31 39 38 39 41 43 42 49 +61 73 79 71 75 79 84 96 104 114 114 118 +112 119 115 118 117 122 121 113 103 63 45 41 +40 63 46 57 80 86 100 117 121 130 129 130 +132 128 134 141 133 136 134 133 134 132 138 135 +142 140 141 141 134 143 135 138 137 139 142 140 +138 140 139 138 133 140 146 145 139 142 143 140 +142 140 143 142 140 141 143 145 138 139 137 136 +141 137 143 142 137 138 139 136 134 139 137 141 +139 137 139 141 143 136 133 137 138 139 143 146 +146 143 148 147 144 145 145 151 152 154 154 153 +156 154 157 154 153 158 161 161 158 161 166 171 +171 169 168 170 173 174 176 181 180 184 187 190 +189 191 192 193 194 198 197 199 198 201 203 205 +205 205 208 206 207 208 209 207 208 210 212 211 +212 214 215 212 216 216 217 217 215 195 117 79 +83 85 87 97 103 105 109 108 101 106 106 108 +107 100 103 103 101 94 97 93 84 89 92 86 +84 77 73 80 73 67 61 59 59 52 46 48 +39 44 37 40 44 43 67 107 153 178 195 199 +204 204 202 191 172 157 158 170 181 191 198 206 +207 207 208 201 197 188 165 141 116 88 66 53 +63 54 53 58 65 62 73 68 74 74 76 66 +67 68 70 66 75 83 88 99 101 106 107 109 +102 97 92 92 85 85 82 82 75 77 81 83 +77 86 87 88 91 98 105 116 112 114 110 104 +102 98 95 88 81 76 72 79 71 68 61 61 +57 56 58 66 +88 88 89 95 92 91 89 91 +100 97 91 104 119 122 136 153 165 170 178 180 +183 183 179 174 171 164 148 129 112 84 75 87 +97 101 114 131 142 150 156 159 165 167 172 176 +176 179 178 176 176 173 177 175 180 184 185 183 +179 174 169 166 160 135 113 112 97 112 124 124 +98 92 91 57 44 43 39 38 53 43 49 61 +49 46 51 52 48 44 44 51 51 47 48 49 +48 48 44 50 51 48 51 48 49 51 48 50 +49 68 64 56 42 46 61 73 80 59 63 72 +60 61 64 66 42 43 46 47 41 42 43 40 +49 56 57 54 44 39 39 58 78 68 52 70 +61 55 59 52 47 44 53 53 67 64 67 69 +92 116 127 140 151 157 146 134 100 71 88 103 +127 127 119 74 49 44 51 54 44 49 37 47 +42 41 44 42 42 43 41 46 40 35 38 39 +34 35 40 48 46 47 48 54 62 76 76 77 +74 81 92 103 103 117 114 115 111 126 117 117 +118 121 118 98 74 42 39 35 41 44 77 78 +89 98 116 121 128 126 126 128 132 127 134 132 +135 131 137 134 136 137 137 140 138 138 142 139 +138 140 135 138 136 139 139 141 135 141 141 140 +141 139 145 142 144 142 140 142 144 142 143 143 +145 142 143 140 138 141 141 139 144 136 144 139 +138 138 136 134 136 133 137 137 137 136 140 142 +140 136 138 135 143 139 142 142 139 144 149 143 +146 144 149 150 150 150 151 150 156 155 154 152 +156 160 159 159 161 164 166 168 167 169 167 167 +168 173 174 174 177 182 186 187 189 189 194 192 +196 200 198 196 200 203 203 204 204 208 208 206 +205 206 210 208 212 210 212 212 213 212 212 214 +215 215 216 215 213 199 139 77 80 84 89 98 +96 104 107 108 105 108 109 107 108 105 104 98 +98 94 105 93 86 89 92 90 85 87 80 73 +82 74 66 65 63 58 47 46 40 45 42 41 +43 45 73 112 149 174 190 196 200 204 200 192 +179 171 173 173 186 195 199 201 203 204 202 191 +183 172 149 117 84 70 57 53 53 53 52 58 +61 66 63 68 79 83 67 64 69 66 69 76 +79 83 97 97 103 109 109 110 106 97 88 80 +80 83 77 79 75 79 78 78 79 88 88 95 +97 103 105 112 116 117 100 97 94 95 89 84 +80 83 79 84 68 66 62 56 59 59 68 67 +84 84 88 89 90 85 90 91 99 96 100 107 +122 131 141 156 165 170 176 182 182 183 181 180 +174 165 149 131 115 89 69 81 98 101 113 127 +140 150 154 163 168 171 174 177 178 177 177 179 +178 176 175 177 181 183 185 182 179 174 170 167 +159 133 102 109 97 113 123 117 91 86 82 61 +45 43 42 50 52 50 46 43 42 45 48 49 +53 54 44 45 46 48 43 42 55 54 51 66 +63 48 52 49 51 42 44 41 45 58 49 49 +46 56 62 66 77 59 51 65 55 49 60 60 +59 57 43 43 47 45 49 42 44 53 65 63 +55 49 35 47 60 73 58 72 64 60 59 53 +57 65 64 64 56 61 71 78 62 69 73 100 +127 117 142 151 128 93 98 118 87 75 65 50 +47 50 52 47 43 43 41 43 39 45 44 40 +44 48 49 40 35 35 35 34 36 42 44 53 +45 46 51 58 68 73 76 80 81 82 106 105 +106 116 121 125 114 117 113 120 116 116 101 62 +43 37 36 34 44 61 75 86 101 111 123 127 +125 125 128 130 132 132 131 133 136 134 134 137 +134 132 139 139 138 138 141 139 136 140 137 138 +136 142 140 143 137 146 135 143 141 140 144 142 +141 142 143 142 144 143 140 143 147 142 145 144 +138 138 143 141 142 141 139 137 138 138 136 136 +136 133 139 139 138 137 139 142 139 140 135 140 +138 138 141 141 144 146 143 147 145 145 149 151 +154 150 152 153 150 152 156 156 158 158 161 162 +161 159 164 163 164 163 167 166 169 171 175 175 +179 184 182 182 188 187 191 193 194 193 196 197 +199 202 200 202 202 206 207 206 209 206 207 209 +209 212 212 213 215 212 212 210 213 215 214 216 +215 207 162 97 74 80 89 94 95 102 106 102 +109 106 106 108 108 112 106 107 104 98 98 89 +100 90 95 89 85 78 80 82 80 73 71 62 +69 60 53 52 45 44 53 49 56 56 70 107 +143 166 184 194 199 201 201 196 187 187 184 185 +186 196 203 199 199 197 195 181 164 150 119 89 +65 59 55 55 52 48 54 55 59 68 69 71 +78 78 69 65 64 70 77 73 83 88 96 106 +105 107 105 98 93 88 82 77 71 76 73 73 +78 74 74 78 83 86 93 98 98 100 106 114 +112 115 105 98 95 93 84 83 83 86 86 81 +76 62 61 59 56 59 68 65 +85 85 91 93 +91 89 90 98 97 102 108 113 123 131 141 156 +164 172 173 178 182 183 183 179 174 164 148 136 +119 93 70 81 96 103 115 128 139 150 156 163 +166 170 172 177 176 175 177 181 174 178 176 178 +179 185 184 182 178 177 173 170 161 135 99 109 +101 116 123 117 90 88 81 52 55 44 49 55 +44 41 44 49 46 45 51 48 47 44 45 48 +40 50 43 45 52 52 53 64 60 52 49 48 +50 47 48 47 42 47 42 46 50 58 71 69 +82 58 48 58 55 50 61 65 71 65 45 41 +47 48 48 36 38 53 57 63 70 58 36 45 +48 57 63 73 74 44 54 49 48 63 67 86 +57 59 64 73 84 59 58 72 114 76 104 134 +139 122 119 122 62 51 47 42 48 48 49 46 +50 51 41 46 54 53 41 42 38 50 41 39 +39 35 33 38 39 48 49 53 45 54 60 72 +73 75 83 89 86 91 103 105 112 113 124 121 +118 120 115 117 110 91 62 46 34 35 33 43 +52 79 87 101 107 116 126 127 129 128 126 130 +130 128 131 132 136 134 134 140 134 135 137 138 +139 139 134 141 141 137 142 139 140 137 139 140 +138 139 139 138 136 136 140 144 139 148 143 140 +139 137 139 141 143 140 146 143 139 136 138 140 +142 142 138 140 137 134 139 135 136 133 138 141 +140 137 143 139 141 145 140 140 139 138 137 142 +142 145 143 145 142 146 149 152 151 148 147 150 +152 152 156 154 158 159 159 161 159 165 163 166 +159 162 167 166 173 175 177 173 179 186 182 184 +184 185 189 193 192 191 195 197 199 202 200 204 +203 206 205 207 209 206 209 209 208 208 212 212 +212 213 209 207 210 213 217 218 215 211 181 106 +77 82 87 95 95 104 106 109 105 110 109 107 +107 104 100 103 97 105 97 94 99 94 92 94 +87 82 84 87 85 77 70 71 66 62 58 55 +51 51 44 47 55 56 73 99 133 160 180 196 +200 203 200 198 197 194 191 190 190 193 198 191 +193 187 174 164 143 122 89 69 61 54 51 50 +52 51 53 54 65 70 76 66 75 64 63 67 +68 77 78 83 90 92 98 106 106 108 94 99 +102 83 82 75 74 75 79 81 81 76 76 81 +80 85 89 98 106 107 113 114 115 103 102 104 +101 91 85 83 80 82 83 72 70 58 58 62 +63 62 66 63 +86 86 93 89 86 98 98 98 +100 108 109 117 130 137 139 159 166 170 175 179 +180 183 182 179 175 169 152 137 119 94 71 89 +92 102 116 130 138 147 154 166 169 168 172 176 +175 175 177 179 178 176 181 177 183 183 184 180 +178 177 172 167 165 138 91 89 111 123 119 112 +91 88 73 44 44 44 44 56 47 44 42 47 +46 48 43 50 57 47 45 49 45 48 44 49 +53 49 55 64 58 46 43 57 50 55 54 48 +46 42 43 41 49 59 59 62 67 57 53 57 +47 45 69 71 81 83 53 48 50 54 48 43 +36 46 66 59 84 74 55 41 45 45 55 71 +87 51 51 59 47 53 70 103 91 55 47 69 +84 89 70 76 119 70 72 100 119 137 142 130 +107 51 42 43 46 48 52 45 43 40 48 42 +47 54 43 41 42 47 43 44 40 36 34 34 +40 43 44 50 52 54 66 79 75 71 69 85 +94 99 104 103 110 118 121 118 115 116 117 113 +88 58 43 33 36 43 49 61 76 91 98 103 +115 120 124 125 123 131 127 132 133 131 127 131 +136 136 135 139 136 136 143 139 134 140 139 143 +141 136 137 139 139 131 139 143 138 137 138 138 +139 137 140 143 142 147 145 144 143 140 138 143 +146 143 149 141 138 142 141 140 142 141 140 142 +138 138 137 138 132 138 138 142 136 139 141 141 +139 140 141 143 139 139 138 141 146 144 141 144 +144 145 144 146 150 146 148 152 150 152 156 155 +155 154 160 163 160 166 166 166 162 162 164 167 +169 175 180 174 176 179 179 182 182 184 191 190 +190 195 193 195 198 199 201 202 203 206 207 206 +206 206 209 211 210 211 213 211 210 213 211 208 +213 214 215 216 217 211 199 137 78 80 85 89 +88 92 100 102 106 110 112 113 108 108 104 104 +102 101 97 96 97 95 91 95 87 85 86 87 +80 77 76 75 75 67 66 66 62 52 58 54 +57 62 72 90 128 159 183 194 199 202 201 200 +201 199 192 194 189 187 190 180 176 169 160 142 +118 105 79 68 63 50 51 54 57 52 57 63 +69 68 75 69 63 65 65 71 70 86 84 98 +95 97 102 103 102 101 97 93 94 86 83 75 +69 79 74 74 78 82 84 81 84 89 95 104 +103 107 113 116 108 104 96 94 91 95 85 82 +81 76 79 68 68 61 59 60 71 72 70 70 +82 82 87 89 95 95 96 105 105 108 115 119 +133 133 142 156 168 173 177 179 182 181 179 178 +172 167 152 135 121 101 74 76 96 101 115 126 +138 147 157 167 166 168 169 177 176 177 175 176 +176 177 179 179 180 184 183 179 178 175 173 171 +160 144 86 78 113 127 118 109 89 83 63 44 +38 44 63 47 42 45 51 57 47 48 44 51 +45 45 46 49 55 48 44 42 49 45 52 64 +60 57 48 50 44 53 48 47 49 50 51 45 +54 78 58 60 69 55 48 43 51 52 74 80 +90 86 46 40 52 55 54 40 33 41 59 63 +88 97 71 46 43 46 53 62 93 76 44 58 +47 46 63 92 109 75 48 56 65 104 93 103 +126 80 66 85 101 120 149 154 115 63 49 51 +50 47 46 45 45 50 47 47 50 49 46 41 +39 43 43 41 38 42 42 42 49 44 44 47 +56 58 72 74 69 77 81 93 102 100 100 110 +113 121 121 119 111 113 102 78 42 41 33 38 +44 49 65 75 81 100 101 113 120 125 125 122 +124 126 125 129 132 130 127 130 136 132 135 132 +130 136 142 137 138 138 140 140 138 136 137 138 +140 133 138 143 139 138 138 140 137 139 138 145 +145 144 146 140 143 138 140 140 142 142 143 144 +142 146 140 142 140 143 144 143 143 137 138 138 +139 136 138 143 138 138 143 143 137 139 143 141 +140 138 138 143 143 144 147 147 145 144 146 143 +146 147 148 149 151 152 151 152 157 156 158 160 +163 159 164 167 158 161 164 165 169 172 175 173 +174 176 177 179 182 185 187 190 191 192 192 194 +196 197 200 200 202 203 205 205 206 207 209 208 +211 212 210 209 214 213 212 209 211 216 214 215 +215 215 205 158 96 80 84 84 90 97 93 102 +101 104 109 107 111 104 103 105 102 106 93 93 +97 100 93 97 94 89 96 84 83 81 75 71 +84 73 72 70 66 65 67 75 73 75 79 95 +127 158 181 195 201 206 205 205 207 201 198 195 +183 181 175 167 161 152 138 116 96 85 75 59 +54 49 52 52 57 54 64 63 66 74 75 61 +65 65 65 65 76 83 87 94 97 109 105 104 +105 102 91 88 90 78 80 78 74 82 75 76 +75 81 78 81 88 101 97 108 112 114 115 111 +103 101 96 93 93 98 86 89 81 73 67 68 +63 52 63 61 67 73 70 68 +73 73 86 92 +98 98 107 107 108 115 120 122 132 134 141 154 +168 175 174 178 181 179 176 171 172 162 153 137 +123 101 74 82 95 103 115 129 138 146 155 159 +166 164 173 174 174 176 174 178 178 178 182 182 +182 185 184 179 179 176 173 167 160 148 90 76 +122 125 119 103 92 76 51 40 40 39 55 49 +49 48 52 46 44 45 48 51 39 51 45 59 +58 52 42 43 56 47 53 64 55 48 45 45 +52 52 45 41 46 47 50 60 66 80 63 68 +83 63 42 50 52 55 80 90 86 87 49 44 +46 47 49 45 38 35 52 72 87 111 88 67 +51 47 50 51 81 98 44 47 59 55 57 87 +108 95 53 57 68 100 118 127 139 94 55 68 +83 82 92 108 103 79 59 43 46 53 44 43 +47 41 47 43 42 45 49 41 41 42 38 40 +36 37 48 38 47 65 48 50 61 74 77 80 +79 79 96 99 101 103 97 107 109 118 116 113 +101 87 56 39 34 39 32 38 52 72 87 91 +101 104 107 114 122 125 122 123 131 128 123 130 +129 132 129 132 135 136 134 135 134 135 144 140 +137 139 139 139 143 136 138 137 140 138 136 139 +139 139 140 138 138 140 141 141 145 148 144 142 +145 139 144 137 142 143 145 145 143 144 142 138 +141 139 140 142 146 139 142 135 136 140 140 142 +138 137 145 139 140 137 137 137 136 132 136 143 +144 144 145 142 143 145 147 144 148 147 146 148 +151 153 152 153 155 152 157 161 161 162 162 163 +162 167 168 166 172 168 168 167 172 174 173 176 +184 184 184 189 190 191 192 193 195 196 199 200 +199 203 203 205 206 207 210 207 209 209 212 209 +214 212 211 210 211 214 213 218 216 216 211 177 +106 75 84 86 92 91 95 103 98 103 106 106 +107 103 105 110 102 101 96 97 91 102 99 98 +91 91 92 90 83 79 80 78 82 79 73 77 +75 70 77 75 74 79 87 106 130 161 182 198 +203 208 209 209 211 205 200 190 185 175 159 148 +146 131 114 90 75 72 69 59 54 53 54 53 +68 63 69 69 72 72 73 66 65 59 71 76 +81 82 88 98 106 108 110 101 101 100 96 84 +86 77 84 75 72 75 75 76 76 79 80 90 +98 110 104 111 115 111 111 106 102 101 93 90 +93 93 89 82 78 75 75 67 65 61 65 66 +72 65 60 58 +68 68 81 86 98 103 113 112 +114 114 114 121 129 132 138 153 165 172 173 176 +177 176 175 175 172 162 150 135 120 98 80 82 +90 105 113 132 143 148 155 165 164 168 177 171 +175 176 172 178 174 177 180 181 184 182 184 183 +177 171 173 166 161 147 99 78 119 128 114 107 +92 80 51 41 52 40 57 52 41 47 51 52 +52 45 49 56 42 48 54 64 55 53 44 52 +48 53 56 66 55 48 42 44 47 44 52 46 +46 53 70 62 81 80 66 78 75 60 44 44 +56 61 75 86 87 85 61 41 40 43 54 54 +43 36 47 83 71 88 103 80 61 55 57 57 +60 109 67 42 55 74 58 66 87 86 79 66 +79 86 120 138 149 118 64 57 78 47 52 69 +98 99 63 42 49 46 43 44 47 41 41 48 +48 51 45 43 42 36 41 34 35 36 37 43 +50 47 49 58 69 70 77 75 81 88 104 98 +102 109 105 106 107 114 101 79 53 38 33 45 +35 43 45 59 79 94 98 101 105 111 116 117 +119 123 120 132 126 127 132 131 134 129 132 134 +133 137 137 139 135 135 136 140 135 143 141 136 +135 135 139 140 141 138 138 139 138 140 140 140 +142 141 141 141 143 139 138 139 140 137 144 140 +142 141 142 143 143 142 145 140 140 145 140 141 +139 141 139 135 138 144 139 137 135 142 143 141 +135 136 137 138 136 136 139 139 142 142 144 142 +142 146 144 149 150 147 146 146 149 157 153 155 +153 151 159 160 162 160 164 160 164 167 165 170 +169 165 166 170 171 175 175 179 178 182 183 190 +188 191 189 190 196 199 197 197 202 201 205 206 +207 209 206 208 209 208 210 210 212 213 211 210 +210 215 216 215 215 216 212 194 123 77 77 86 +89 96 102 95 98 100 104 104 107 102 101 101 +108 100 103 94 92 92 98 104 95 95 98 98 +95 82 84 81 83 77 78 75 84 78 86 80 +79 87 92 114 135 158 180 196 205 210 213 210 +211 204 197 187 171 164 146 133 124 98 93 84 +76 61 64 55 53 51 53 65 63 67 76 80 +74 71 69 68 65 68 73 81 85 90 97 102 +105 106 108 101 104 96 90 83 74 73 75 71 +73 73 78 81 76 85 91 90 98 104 107 110 +117 113 109 100 103 98 94 88 98 90 88 80 +79 73 68 59 61 67 71 69 66 61 54 60 +62 62 80 95 92 102 113 114 116 112 116 115 +127 127 139 152 166 170 171 179 176 176 175 175 +171 162 150 138 117 108 80 81 95 104 114 128 +138 146 157 163 165 174 176 173 174 173 175 176 +176 178 179 178 182 182 183 182 176 176 170 165 +159 149 107 75 105 126 118 117 103 81 43 43 +44 45 52 49 42 47 61 58 47 44 63 53 +44 45 57 64 54 49 41 53 50 48 53 56 +60 54 49 49 47 38 44 45 48 42 54 68 +90 83 60 95 94 60 50 47 63 58 69 82 +85 92 83 58 42 45 42 45 46 43 42 67 +91 78 71 83 71 63 58 70 50 92 97 49 +46 68 69 57 51 81 79 76 69 81 92 132 +155 140 107 76 88 58 36 50 76 105 70 43 +52 47 40 52 46 42 44 53 52 45 40 41 +39 37 42 38 34 36 35 42 39 42 47 55 +69 74 76 80 85 91 100 100 110 101 100 103 +84 78 57 43 35 32 30 39 43 58 73 84 +94 101 101 106 111 114 117 117 122 126 122 127 +130 129 132 131 132 130 131 133 132 138 135 138 +133 139 137 140 137 137 138 135 140 137 140 143 +146 139 138 139 138 139 141 140 141 143 140 142 +141 141 141 147 143 143 147 147 140 144 144 147 +144 144 141 142 141 141 143 144 141 139 144 137 +135 144 142 139 137 139 142 141 138 140 135 139 +137 135 138 140 140 141 143 140 143 146 147 153 +146 145 147 149 149 153 151 156 153 153 161 163 +158 159 162 160 160 166 166 171 170 165 168 166 +170 175 175 179 178 180 185 185 187 189 190 192 +195 197 196 198 201 201 201 205 204 203 204 209 +210 210 210 211 212 212 212 212 212 214 217 215 +214 215 213 201 142 81 84 79 90 90 95 95 +102 103 98 108 106 101 101 102 106 104 99 97 +100 98 100 101 93 99 96 97 88 87 82 87 +85 80 86 84 90 88 90 85 82 82 93 117 +141 161 181 195 206 211 213 210 209 201 192 175 +160 143 130 112 92 84 76 73 67 62 59 55 +59 58 54 73 69 67 74 76 75 59 68 66 +68 76 86 86 87 101 99 111 105 104 103 100 +93 91 83 79 74 71 71 65 74 76 79 76 +78 87 93 93 94 108 111 115 115 113 107 101 +103 104 93 86 92 96 87 74 83 71 57 58 +64 61 71 77 76 69 64 56 +55 55 80 88 +93 101 112 109 114 113 115 111 117 119 139 146 +161 167 168 172 177 176 173 174 168 163 151 132 +118 105 90 91 93 105 109 129 138 147 152 158 +169 169 173 172 172 175 176 177 175 180 176 180 +182 182 185 179 178 175 173 168 160 152 109 70 +97 120 107 107 103 75 44 39 37 43 49 38 +42 45 51 58 49 56 62 63 42 40 57 66 +57 57 46 49 48 56 69 57 71 63 53 43 +38 39 44 43 52 41 50 69 82 68 64 121 +84 59 51 44 64 62 89 98 92 89 85 73 +45 39 47 40 48 43 44 65 97 88 64 48 +65 68 51 52 44 69 118 81 43 58 65 77 +49 47 91 82 73 65 88 106 149 147 132 72 +92 72 37 53 71 88 91 51 39 40 35 37 +38 44 44 49 51 46 38 39 38 36 47 39 +36 37 37 40 41 44 57 63 80 81 84 82 +94 97 100 95 94 90 76 60 44 47 45 37 +45 47 45 63 72 84 97 101 106 104 109 115 +117 119 118 120 125 127 123 124 122 129 126 135 +129 134 137 132 132 135 130 138 133 134 136 134 +136 141 134 136 140 135 145 139 141 143 144 141 +139 140 139 137 138 140 143 143 143 144 140 142 +143 142 148 143 143 143 148 144 144 144 141 146 +147 141 140 145 149 144 146 140 143 141 143 141 +138 140 141 141 135 142 139 138 140 145 136 136 +141 142 141 142 141 143 145 146 147 146 147 146 +144 149 149 154 154 152 155 158 159 160 160 162 +161 164 167 167 165 166 169 169 171 177 175 172 +179 181 183 185 186 190 190 187 193 192 196 197 +198 202 200 206 204 205 205 208 209 209 210 211 +211 212 211 211 213 212 217 213 215 216 212 206 +160 89 77 82 85 97 95 98 100 100 101 100 +103 98 103 104 109 110 97 103 95 95 95 98 +92 98 98 97 90 89 88 85 84 88 92 93 +86 94 92 88 91 88 90 119 140 160 179 196 +205 210 210 208 202 194 181 164 142 125 105 85 +80 68 64 63 60 65 59 53 57 63 62 73 +63 78 70 73 70 66 64 76 70 80 90 92 +100 104 104 108 104 101 96 96 89 98 83 73 +71 69 71 68 68 67 82 80 84 91 92 92 +104 109 112 113 114 109 106 100 104 102 103 94 +92 93 80 72 72 65 53 64 67 63 69 72 +69 75 63 57 +54 54 76 84 93 104 111 111 +113 114 107 105 110 119 132 138 159 164 172 174 +174 177 174 174 170 163 147 134 118 99 84 88 +96 103 109 127 142 147 156 161 166 169 173 172 +178 176 177 176 178 177 179 179 182 182 182 179 +179 176 173 168 165 154 111 67 86 117 108 106 +96 62 44 38 37 41 48 41 46 44 48 61 +46 45 63 58 47 50 58 67 57 46 43 51 +46 48 42 69 76 71 67 51 48 40 45 51 +47 45 53 79 81 66 60 127 97 63 48 44 +55 60 77 85 100 85 84 90 62 39 42 51 +46 54 45 47 92 94 71 42 44 56 49 46 +47 75 122 119 62 49 62 67 66 56 89 78 +85 67 71 96 139 150 130 71 78 71 40 57 +73 66 83 57 39 41 38 33 40 45 48 48 +45 40 37 43 36 36 45 47 38 44 40 42 +44 54 70 72 79 80 87 82 92 89 81 67 +58 56 73 42 38 45 39 35 49 59 67 84 +93 95 100 99 105 108 112 118 118 119 118 120 +125 124 124 126 122 132 131 129 131 130 131 129 +135 136 136 134 135 137 134 135 133 138 132 133 +135 136 145 138 139 141 142 136 139 142 137 141 +145 143 142 141 141 144 143 143 143 148 146 141 +149 144 146 147 150 144 145 144 146 146 142 144 +142 146 141 142 142 135 139 138 139 138 141 140 +135 140 139 138 140 141 138 135 139 137 143 146 +144 143 145 149 148 149 145 150 149 149 152 151 +153 156 154 157 156 158 159 159 159 162 166 169 +170 167 173 173 169 176 175 173 178 181 185 180 +186 186 188 191 195 193 195 197 199 200 199 200 +206 205 206 207 211 208 211 213 213 214 213 211 +211 214 216 214 214 215 213 209 179 103 73 78 +83 88 96 96 93 97 103 98 100 101 98 103 +100 103 103 101 98 94 105 99 96 99 102 100 +100 85 87 87 87 91 87 98 91 93 96 94 +91 87 90 113 136 157 177 194 200 205 204 200 +193 185 169 151 122 97 90 78 77 74 76 63 +65 68 58 59 65 73 73 76 83 77 73 78 +74 69 73 69 88 84 97 103 107 107 109 112 +104 104 101 91 88 88 73 74 71 63 66 73 +62 68 76 83 86 92 93 95 107 113 113 112 +106 112 109 102 101 98 96 92 92 82 75 72 +63 55 57 62 74 69 69 70 71 68 58 53 +47 47 66 82 85 93 102 104 100 102 102 100 +102 117 126 141 152 161 165 173 176 179 179 178 +172 165 152 135 120 102 89 87 97 106 113 125 +137 142 153 158 163 170 173 175 176 177 178 178 +179 180 180 180 181 183 183 178 175 175 170 164 +163 154 117 79 84 110 103 108 90 51 43 42 +40 43 46 56 48 49 61 52 49 50 54 53 +39 51 59 70 54 57 43 42 48 47 51 51 +76 71 70 53 46 44 47 50 50 42 59 84 +85 64 62 126 95 58 48 46 57 65 86 88 +105 95 80 95 76 44 40 45 55 51 44 41 +70 109 86 60 33 35 42 54 53 57 96 143 +91 40 52 66 54 42 73 76 82 91 79 108 +121 157 150 109 87 68 54 62 81 51 69 65 +48 44 42 37 48 54 47 49 41 36 41 43 +45 40 47 51 50 43 42 49 52 57 66 67 +72 80 81 69 58 55 50 48 44 50 38 37 +44 45 54 58 73 83 84 91 98 102 98 104 +109 113 117 122 122 125 119 123 124 124 126 130 +143 132 131 132 127 131 128 136 136 137 134 134 +131 133 140 137 140 136 133 137 138 139 145 138 +140 140 142 134 135 138 138 137 145 143 143 142 +141 142 142 143 142 143 144 145 147 147 145 147 +144 144 147 144 145 144 146 144 142 140 141 140 +144 144 140 144 139 138 138 139 138 140 141 135 +140 140 139 139 140 137 139 146 144 139 140 150 +144 145 147 149 147 150 152 155 155 152 153 156 +157 159 160 161 159 164 165 167 168 171 169 172 +174 173 174 174 177 180 181 183 184 186 190 192 +191 193 195 198 199 199 199 204 207 204 207 206 +207 208 209 211 211 211 210 209 210 212 214 215 +215 214 213 213 192 134 82 78 81 83 90 99 +96 101 101 100 101 97 108 102 103 105 103 99 +99 99 103 102 98 102 100 96 98 92 94 97 +95 98 97 98 103 100 92 93 90 93 98 110 +130 153 170 185 196 198 197 194 184 169 150 129 +97 87 82 71 80 85 76 72 70 69 62 70 +76 73 69 75 76 75 71 74 66 75 76 80 +86 92 98 108 114 109 111 115 103 95 95 81 +78 75 78 76 70 63 62 64 60 72 76 81 +92 97 95 101 108 112 111 112 110 108 105 104 +102 98 97 95 88 78 68 66 56 64 62 73 +68 67 67 75 70 64 62 57 +42 42 60 71 +79 88 94 88 99 93 97 98 104 114 127 140 +153 161 168 174 179 180 179 178 175 168 153 138 +131 105 88 85 93 98 113 126 135 146 149 159 +165 168 173 176 176 177 178 179 177 181 180 178 +182 182 186 179 176 174 170 170 163 155 122 93 +84 98 94 95 90 51 40 43 45 39 40 43 +53 47 51 57 47 57 58 44 41 45 73 68 +61 52 47 45 53 48 48 47 77 81 54 41 +45 48 48 53 45 45 51 74 85 59 59 129 +97 63 41 39 56 68 86 79 108 105 79 106 +93 63 47 40 46 48 43 43 52 93 102 83 +38 37 43 60 65 49 68 146 137 66 46 75 +44 53 56 79 71 107 102 109 115 140 164 149 +123 86 41 49 67 39 52 83 46 37 35 34 +44 41 45 43 40 40 45 63 40 39 44 44 +42 44 48 49 52 55 56 51 53 54 52 48 +43 38 41 40 38 39 41 44 50 69 79 78 +87 93 94 96 101 107 107 109 113 116 117 120 +129 123 123 123 122 122 123 127 130 129 128 131 +131 132 127 130 132 137 136 135 136 140 137 140 +139 135 145 137 135 138 138 138 139 139 139 132 +137 141 139 139 146 142 143 141 142 140 143 140 +144 143 146 142 147 148 143 145 144 145 151 143 +145 144 142 144 143 141 141 143 143 145 144 143 +138 140 136 139 141 142 142 145 141 141 139 144 +140 140 141 144 149 138 143 144 145 150 148 150 +149 151 151 149 150 151 155 154 159 153 162 162 +159 160 165 167 168 171 167 174 175 173 175 173 +178 178 178 182 185 187 188 189 190 193 193 196 +200 199 199 202 202 204 205 207 207 210 208 207 +211 212 211 210 211 214 215 213 214 210 212 213 +204 158 86 77 84 89 90 89 91 96 98 99 +100 102 100 107 107 107 107 103 100 101 106 101 +106 105 99 102 98 95 92 101 102 100 103 103 +110 104 101 102 98 94 92 107 124 143 160 174 +178 183 181 177 167 148 125 95 85 84 83 92 +84 93 79 79 67 70 75 77 79 76 78 77 +75 77 74 72 70 77 74 91 94 93 103 105 +116 111 105 107 96 90 90 76 80 79 82 80 +72 70 64 66 60 74 78 87 97 100 104 105 +110 121 112 111 111 110 105 103 103 98 98 95 +87 80 65 66 60 61 67 77 74 66 63 65 +64 60 59 55 +45 45 55 67 73 80 85 94 +88 89 96 95 108 118 122 136 148 161 170 174 +177 178 178 174 170 164 154 142 128 109 89 86 +94 104 112 126 132 148 152 160 166 168 171 177 +177 177 178 178 178 184 179 182 181 185 184 181 +179 176 169 168 168 157 129 96 78 75 88 93 +75 43 41 48 51 47 43 51 49 45 55 55 +50 58 58 50 38 47 63 65 63 59 48 44 +51 52 50 45 79 89 54 37 44 53 50 47 +49 49 65 71 71 50 66 115 82 53 44 32 +49 73 83 81 106 122 101 103 106 89 68 54 +45 51 47 46 43 76 111 89 43 40 41 52 +64 67 49 88 149 110 48 66 68 54 54 66 +72 99 114 111 113 110 158 169 146 104 66 46 +56 48 48 73 46 34 43 39 40 47 63 45 +43 52 45 48 45 45 40 51 48 47 48 48 +48 49 48 47 39 46 45 52 38 37 41 44 +56 62 68 80 81 89 98 104 104 108 109 110 +107 111 114 118 121 125 121 122 127 126 121 124 +124 124 123 125 128 124 126 132 130 129 128 131 +133 134 137 137 132 135 135 138 134 133 138 136 +139 136 139 141 138 142 135 138 135 133 138 145 +141 139 141 141 139 142 143 143 144 142 142 144 +147 146 145 145 147 147 148 144 146 152 140 144 +140 142 145 138 144 141 142 141 136 139 138 135 +139 139 144 142 143 141 140 144 139 140 142 143 +142 141 143 145 143 144 150 146 148 148 153 149 +154 158 155 156 156 158 157 158 161 159 163 161 +166 169 167 171 177 176 177 175 177 180 179 179 +186 186 188 185 191 194 191 192 197 198 199 203 +201 203 202 208 207 211 205 206 212 212 211 211 +212 211 213 216 212 214 214 210 209 172 96 77 +81 84 88 90 90 96 95 98 94 100 96 106 +102 108 104 105 99 103 103 105 100 101 98 100 +94 94 98 97 103 100 108 106 105 107 108 105 +100 105 100 106 115 130 152 163 163 164 160 155 +140 112 94 89 79 83 71 82 77 76 68 79 +72 77 75 76 75 72 81 81 78 73 72 69 +73 82 84 89 98 103 104 112 114 114 98 98 +90 87 84 81 71 73 77 70 63 64 64 67 +70 79 83 94 101 107 105 108 118 118 113 115 +118 112 104 101 103 101 91 86 80 69 65 64 +64 67 59 68 69 61 66 68 61 49 56 46 +44 44 54 66 63 73 78 85 93 86 100 90 +105 111 124 130 148 160 171 172 176 175 177 175 +171 166 158 144 126 116 97 89 94 102 110 129 +133 146 151 155 163 167 171 175 177 176 176 180 +181 180 180 180 181 183 184 185 180 176 175 169 +166 159 136 101 68 72 87 76 55 42 49 51 +51 40 38 43 46 46 46 51 49 45 52 58 +56 55 69 63 72 51 47 51 49 49 54 47 +79 100 53 41 38 51 51 53 44 57 55 68 +68 52 73 108 76 61 40 37 50 78 100 84 +105 127 119 101 116 95 73 55 59 66 54 48 +46 55 105 103 65 38 69 33 44 65 57 53 +117 138 77 50 87 53 50 60 83 95 120 111 +112 106 132 160 148 125 101 62 58 35 44 68 +53 34 33 44 46 45 43 37 38 51 52 48 +51 45 43 49 44 44 44 43 36 43 43 41 +40 40 41 39 53 57 58 65 68 76 85 76 +85 93 95 89 97 110 111 114 118 121 123 126 +128 131 126 129 130 125 126 129 130 132 127 127 +129 128 128 124 130 130 133 132 135 134 136 132 +131 133 142 135 133 137 133 134 141 138 142 136 +140 137 140 138 135 142 137 140 138 138 140 140 +137 136 141 141 146 142 147 140 142 143 146 144 +144 145 146 144 144 146 142 143 148 137 140 143 +141 143 142 140 144 140 135 138 138 140 139 138 +145 140 142 141 139 140 142 139 142 142 146 142 +144 148 144 150 148 149 150 148 155 153 157 157 +157 160 158 159 159 162 164 164 164 167 168 171 +175 176 177 176 177 178 182 181 183 185 185 185 +191 191 191 194 196 198 199 202 199 204 204 203 +206 208 209 211 211 212 211 212 210 214 212 215 +214 215 213 212 209 186 112 72 79 83 88 84 +89 91 91 99 96 97 96 99 102 109 106 110 +102 106 107 107 106 105 101 101 101 104 98 106 +104 104 107 108 112 110 110 108 101 106 104 101 +111 127 137 153 148 143 142 133 119 103 89 84 +84 79 71 74 74 75 79 75 77 80 84 81 +85 79 75 77 74 71 71 78 80 78 82 96 +94 101 107 105 111 111 100 91 90 87 70 75 +69 69 68 69 65 60 64 65 72 78 95 102 +103 114 107 112 114 116 120 118 112 114 103 100 +98 104 91 83 72 72 68 65 66 62 59 63 +64 66 64 67 56 57 49 47 +44 44 50 53 +60 67 87 80 92 89 93 92 96 110 122 131 +149 157 168 168 175 175 175 175 169 167 153 142 +130 120 105 90 95 106 112 122 135 146 154 158 +162 166 172 174 174 176 178 180 181 182 180 181 +185 187 183 184 181 175 170 171 163 158 141 105 +61 63 78 76 52 41 40 49 44 48 43 43 +47 39 49 47 55 46 57 47 47 55 63 59 +60 47 54 57 52 57 54 50 81 104 50 43 +45 53 52 45 49 52 47 62 61 54 90 111 +74 54 47 40 53 55 93 97 106 115 118 99 +108 102 75 52 44 47 42 52 67 45 97 111 +96 47 35 45 34 40 77 52 64 132 121 64 +76 76 58 61 73 85 128 109 121 122 98 124 +144 136 111 97 76 53 50 74 39 41 42 40 +42 40 45 40 41 43 49 45 51 58 41 40 +43 50 40 37 36 38 39 42 56 52 55 63 +75 76 77 82 85 85 89 93 92 100 101 99 +105 111 113 117 118 120 118 121 124 124 121 123 +124 127 128 130 128 128 126 129 127 128 123 130 +128 132 130 129 132 132 134 131 126 134 138 136 +132 142 136 139 138 140 136 139 134 134 133 137 +140 141 139 139 142 137 138 142 142 141 140 142 +149 146 140 142 141 147 146 144 145 146 149 145 +148 147 143 145 144 142 142 142 143 144 140 142 +143 141 140 138 137 142 137 141 145 142 141 142 +140 143 145 141 144 139 142 144 147 144 145 147 +154 149 153 153 151 153 158 159 158 160 158 161 +158 161 163 164 169 167 168 168 173 176 177 177 +177 179 185 182 186 185 186 187 190 189 191 194 +194 198 197 197 200 203 203 205 207 207 208 213 +210 211 213 210 210 213 214 214 213 215 216 216 +214 196 134 75 76 81 82 83 85 89 98 96 +98 102 100 100 100 106 103 105 105 109 113 108 +104 101 99 97 102 101 102 108 110 107 116 116 +111 114 108 110 105 106 110 107 111 115 123 125 +128 126 120 111 101 87 85 85 80 78 80 82 +79 77 85 84 83 86 90 89 79 83 80 81 +77 65 70 73 83 88 97 100 110 102 103 106 +103 101 94 90 80 79 74 66 67 65 73 57 +60 59 66 69 81 83 99 104 101 109 112 113 +119 114 114 114 113 109 99 101 102 96 90 83 +73 73 71 58 67 65 61 55 58 60 62 55 +54 56 48 44 +50 50 50 58 62 57 67 83 +89 82 88 89 89 105 115 124 144 155 164 167 +173 174 174 172 171 164 157 143 129 121 116 92 +98 108 114 119 134 141 153 157 164 173 175 172 +175 178 181 178 181 177 179 180 183 182 186 186 +182 173 166 165 164 161 149 110 62 63 77 76 +45 35 45 55 41 46 37 43 50 45 51 51 +44 47 49 45 57 56 60 62 61 52 64 46 +47 67 54 50 82 106 62 39 44 56 55 46 +51 52 67 69 73 59 96 107 66 52 37 43 +47 51 93 94 105 110 117 108 100 106 76 54 +44 39 33 49 91 65 83 111 125 74 32 35 +30 44 61 79 52 75 114 102 56 65 78 52 +52 79 128 118 106 130 100 73 101 125 110 108 +102 57 40 58 41 42 45 50 46 48 42 42 +44 44 41 42 35 38 43 37 41 37 38 46 +46 50 48 59 62 61 62 71 81 82 84 91 +92 87 87 94 99 104 108 108 119 114 117 119 +123 123 119 123 121 122 121 122 124 127 126 126 +128 123 127 129 127 127 128 130 131 130 126 125 +133 132 132 132 127 134 135 133 133 136 136 138 +139 136 136 136 135 135 139 135 136 139 139 143 +140 142 145 142 144 138 139 144 146 144 144 142 +146 147 147 148 145 145 149 148 146 141 144 144 +142 148 141 143 147 144 139 142 145 145 143 142 +137 140 140 145 139 144 144 144 141 139 141 143 +144 139 141 141 143 147 148 150 149 151 151 148 +152 150 153 156 158 158 159 159 156 160 164 169 +164 164 165 165 171 172 175 177 176 182 184 181 +185 186 190 186 190 188 192 192 196 194 197 198 +200 201 201 204 205 203 206 207 209 212 212 212 +211 210 212 212 212 214 213 215 213 205 158 89 +70 86 81 86 85 94 92 89 98 98 97 102 +100 104 106 109 103 109 107 110 112 105 105 104 +105 101 99 113 111 113 116 120 112 112 112 110 +108 113 114 110 109 112 111 113 118 113 109 104 +99 93 90 83 84 88 84 81 85 83 85 94 +91 86 85 80 85 85 79 77 66 74 70 78 +84 87 93 100 98 104 107 113 91 101 82 80 +73 77 71 70 66 70 61 66 61 64 64 76 +81 92 105 106 105 110 109 111 113 118 122 116 +118 113 106 108 105 92 88 78 72 68 69 66 +62 62 63 57 61 65 60 51 53 52 50 47 +47 47 56 53 53 58 66 72 79 80 87 84 +88 99 116 125 141 155 161 164 173 174 175 172 +169 164 153 140 129 119 109 97 96 105 117 123 +133 139 148 159 166 169 170 175 177 175 178 180 +177 181 180 179 180 180 183 182 179 173 167 169 +161 161 148 109 61 57 70 81 46 43 47 52 +42 51 45 55 74 70 48 43 44 41 56 50 +54 63 69 68 58 56 61 55 56 64 62 50 +74 119 79 44 38 47 50 42 50 48 60 60 +70 73 91 93 57 52 38 42 43 54 73 89 +102 98 107 125 110 121 99 51 39 46 36 45 +78 96 72 105 129 109 48 36 29 38 48 81 +84 63 90 125 92 47 79 78 49 72 122 121 +95 122 119 63 54 96 118 106 113 75 51 57 +46 45 44 53 56 58 61 65 57 57 47 39 +41 40 40 37 43 39 41 50 58 60 64 74 +68 75 83 78 88 84 86 89 99 95 94 102 +110 115 113 113 117 120 125 123 121 120 120 120 +122 125 121 126 124 128 127 129 125 129 132 125 +124 129 127 128 128 127 126 128 128 136 136 137 +129 132 134 133 137 137 137 139 138 130 136 136 +134 139 135 138 144 146 138 142 142 142 139 137 +143 139 143 141 141 138 140 150 144 146 149 143 +148 147 145 147 143 142 138 144 146 149 142 143 +145 145 143 144 146 143 140 136 141 142 145 142 +143 139 139 142 142 139 141 141 146 144 142 142 +145 144 147 150 151 151 149 146 149 154 154 153 +156 156 155 154 155 159 167 164 160 165 168 164 +170 172 173 177 176 180 182 180 184 185 187 186 +189 188 187 193 191 194 196 197 201 202 199 201 +203 207 205 205 210 214 212 211 211 211 211 211 +215 212 216 213 213 208 174 102 71 82 78 79 +82 92 89 91 99 95 95 96 101 100 109 109 +105 113 111 109 112 107 100 105 107 107 110 106 +120 112 115 116 115 119 111 120 112 111 114 110 +109 105 112 112 110 111 104 101 96 89 86 87 +89 90 94 90 87 91 99 97 94 85 92 90 +87 79 70 74 70 78 77 79 87 93 95 104 +109 107 97 96 91 87 97 83 79 71 78 73 +76 69 59 66 65 59 73 79 91 100 108 103 +114 111 106 114 117 121 115 111 109 104 109 101 +96 91 84 78 75 74 64 63 60 60 58 60 +59 61 64 54 53 51 63 55 +49 49 57 56 +53 46 64 66 76 83 86 87 83 99 116 120 +134 153 164 168 173 176 178 177 174 167 158 145 +132 129 121 99 99 107 114 121 132 141 149 156 +162 167 172 174 173 181 179 179 181 181 180 181 +178 183 184 182 178 175 170 166 163 158 146 105 +63 62 79 70 50 50 57 48 45 42 45 57 +56 53 52 54 41 43 46 49 56 64 67 72 +74 56 64 52 56 64 60 43 62 108 92 54 +37 56 45 40 48 47 57 62 84 92 94 83 +55 46 44 43 39 53 73 93 112 90 74 124 +124 119 104 50 36 46 36 31 50 88 91 95 +117 127 77 41 31 39 59 57 88 74 57 119 +121 58 49 85 77 58 101 120 98 122 125 98 +56 63 111 112 97 86 53 54 45 44 43 44 +45 49 41 41 40 37 32 41 37 35 44 43 +53 57 57 65 69 72 75 77 84 87 88 87 +94 96 101 100 98 105 108 110 115 115 119 116 +117 119 117 119 122 120 123 122 125 124 126 126 +125 125 128 127 131 133 131 128 124 127 130 128 +126 124 127 130 125 132 137 135 134 134 137 134 +133 135 134 137 134 133 133 133 136 137 143 143 +141 143 136 142 138 139 140 144 142 144 142 138 +140 139 142 140 140 147 146 145 143 147 143 145 +144 141 137 145 148 147 141 144 143 144 140 146 +150 146 142 140 139 143 140 142 138 141 142 140 +139 141 143 147 140 144 141 143 143 147 149 145 +144 149 150 145 146 153 153 155 155 157 155 152 +158 159 160 161 164 166 168 171 167 169 176 175 +174 176 177 182 179 184 187 188 189 189 188 190 +190 195 195 198 200 197 199 203 204 204 205 207 +209 212 210 211 210 210 212 211 215 213 215 212 +211 212 188 124 78 78 75 83 86 81 84 92 +92 97 98 98 100 102 108 106 109 104 114 109 +110 111 106 104 110 108 115 114 117 115 116 115 +113 116 111 114 115 115 119 112 108 104 109 102 +102 103 102 98 95 96 91 90 91 89 97 96 +97 95 102 97 96 91 86 85 88 78 78 77 +81 80 80 86 89 94 102 102 102 102 98 102 +84 79 91 78 78 85 75 74 73 64 66 65 +62 61 79 84 92 102 104 108 109 117 118 119 +121 124 113 112 106 104 103 100 98 83 82 69 +74 70 65 59 56 56 61 62 65 60 58 55 +56 55 58 47 +58 58 58 55 58 57 60 63 +73 78 80 81 81 86 109 117 140 154 165 171 +177 181 180 179 175 170 162 148 134 123 114 102 +99 109 110 123 131 142 153 157 164 167 173 175 +173 179 179 179 178 182 180 183 182 185 183 180 +179 173 171 166 165 156 133 94 67 59 73 72 +55 53 49 56 47 58 38 47 51 46 48 58 +35 39 47 51 49 58 68 56 53 59 75 49 +49 60 53 54 57 80 99 61 44 51 46 43 +52 48 50 57 74 96 107 66 42 49 46 39 +40 46 62 100 113 90 61 107 126 123 118 78 +43 38 40 31 35 69 109 105 109 138 101 57 +30 34 29 38 60 77 73 84 116 96 46 53 +69 67 71 113 103 111 121 130 102 75 82 104 +80 92 67 50 37 38 36 42 40 78 55 35 +38 36 38 44 45 42 44 51 53 55 57 53 +66 70 78 84 85 91 88 87 101 102 108 109 +106 107 110 117 113 116 118 121 123 120 123 124 +124 122 122 124 123 126 124 123 122 131 127 128 +130 131 129 130 126 126 127 129 126 124 130 129 +133 131 130 133 133 134 136 139 134 137 136 136 +134 134 136 133 134 140 136 146 139 146 140 140 +140 139 142 141 143 142 139 137 142 142 141 141 +148 142 144 146 140 146 144 143 148 147 141 145 +145 145 145 145 143 144 143 144 148 147 143 144 +143 144 143 142 136 145 143 139 140 140 146 147 +145 140 144 145 146 147 146 147 147 147 149 146 +148 152 155 153 155 156 155 152 160 159 161 161 +164 167 165 163 168 168 174 170 172 172 176 180 +178 181 182 182 188 186 189 189 188 192 195 195 +194 196 200 202 204 203 205 206 208 212 211 211 +210 212 213 211 210 212 214 213 214 213 198 140 +82 73 72 77 90 88 93 91 94 100 98 94 +100 103 102 108 111 109 114 111 107 109 108 111 +111 111 116 113 121 116 118 118 113 115 110 114 +114 108 112 116 112 109 107 103 104 103 101 94 +92 93 93 90 92 98 101 104 103 101 100 104 +95 87 86 92 84 79 74 84 83 80 83 86 +94 98 108 106 98 95 93 88 81 84 75 76 +78 73 82 75 77 62 74 71 67 68 82 92 +98 102 122 116 111 117 123 119 127 117 110 107 +106 104 100 96 93 84 69 71 66 62 61 62 +60 59 54 62 59 54 56 50 51 57 51 51 +50 50 66 58 63 63 63 61 67 76 77 79 +76 90 109 118 140 156 166 174 179 186 190 187 +186 179 169 159 138 134 122 109 96 107 110 126 +132 143 151 160 165 171 174 176 180 178 177 180 +179 179 177 184 185 187 185 180 180 177 171 166 +161 155 116 89 70 59 69 71 59 74 68 48 +47 42 39 50 54 41 45 54 47 44 54 57 +52 57 67 62 56 52 58 58 61 61 61 50 +51 64 100 80 49 49 45 40 45 41 46 61 +68 101 97 55 47 40 46 42 38 49 67 100 +111 106 61 74 118 129 123 104 53 33 39 39 +36 50 100 109 100 145 109 68 45 35 30 32 +41 61 98 85 116 118 71 34 48 66 72 102 +113 106 118 121 115 104 84 76 67 72 70 41 +39 36 37 43 37 54 46 41 40 39 46 49 +59 44 46 46 53 56 57 58 67 77 79 86 +85 91 98 97 107 113 112 112 110 111 111 111 +111 112 118 117 120 123 123 123 127 124 130 127 +124 127 129 129 125 126 130 130 124 129 128 125 +129 129 125 129 128 127 128 130 137 135 133 133 +135 135 139 146 135 136 140 136 138 136 134 138 +137 136 138 142 140 141 140 140 141 139 139 144 +139 143 141 141 143 142 145 140 140 145 149 144 +144 143 146 146 144 150 144 147 146 147 148 145 +145 142 143 149 145 153 146 141 140 144 140 144 +145 144 147 141 139 142 146 144 145 142 146 149 +143 145 147 147 147 147 152 149 148 150 152 153 +154 155 157 154 158 157 159 163 163 166 162 166 +169 165 169 169 173 172 177 178 176 177 177 182 +185 186 188 187 188 191 194 196 196 194 197 199 +201 203 201 207 207 211 210 209 209 209 209 208 +211 214 212 213 215 212 204 156 86 69 73 81 +82 89 91 92 92 98 99 100 102 104 104 112 +110 111 107 106 109 115 111 117 113 115 115 117 +117 121 121 123 120 116 113 115 116 113 113 117 +109 106 106 100 107 103 101 103 100 98 97 96 +94 103 106 108 106 106 103 99 97 94 87 86 +82 77 81 83 84 86 85 94 97 99 100 97 +85 79 86 79 82 75 68 68 75 75 77 68 +81 74 72 76 66 78 84 89 98 105 113 115 +113 118 122 121 121 117 107 106 111 109 96 93 +83 77 69 72 59 58 57 60 54 64 56 54 +50 52 49 56 51 53 45 45 +53 53 57 58 +67 64 59 59 64 62 67 71 74 83 102 115 +140 157 170 183 188 194 195 192 193 188 182 171 +150 135 117 104 97 106 117 124 134 144 153 157 +163 169 172 176 178 179 178 179 186 180 180 184 +185 182 184 186 179 180 175 165 150 116 77 70 +57 45 64 73 63 61 52 54 42 49 48 53 +52 44 51 48 46 43 59 56 48 59 66 55 +56 53 53 54 52 64 69 59 48 53 90 96 +55 47 43 46 47 37 40 65 73 110 100 51 +47 36 37 41 41 41 61 96 112 113 64 55 +105 136 130 122 79 48 42 41 46 48 68 104 +100 134 118 80 71 41 28 29 31 59 87 89 +96 129 102 50 36 43 62 74 101 105 114 112 +107 84 79 68 64 53 73 45 41 45 48 36 +45 47 46 42 45 50 48 43 47 53 53 47 +51 54 64 68 75 82 89 92 93 100 95 107 +111 113 112 117 116 114 114 120 115 117 120 119 +121 122 124 123 124 123 128 126 127 123 127 128 +128 132 127 126 128 129 127 129 126 130 131 129 +125 128 130 129 142 132 131 133 129 139 137 133 +134 138 136 130 131 135 139 134 137 136 134 144 +139 136 140 133 137 136 140 140 142 145 140 139 +141 142 140 139 140 143 142 146 143 146 148 147 +141 143 143 143 145 147 146 145 147 143 140 148 +148 150 150 141 142 147 143 144 139 148 147 143 +142 143 143 143 145 149 147 146 147 154 149 147 +146 149 152 153 152 149 152 153 156 153 156 157 +157 159 161 163 162 163 166 164 166 169 173 169 +169 176 179 178 180 180 179 180 183 187 185 186 +187 191 194 197 195 195 198 199 203 203 203 206 +207 210 211 210 209 209 206 208 211 212 212 211 +212 210 206 174 96 68 67 73 81 82 88 88 +94 99 98 100 104 104 105 107 107 112 112 112 +113 110 110 118 116 122 119 119 114 114 123 120 +115 117 111 114 113 119 108 111 111 108 102 106 +104 104 98 104 100 97 96 101 98 106 104 111 +113 108 107 107 96 97 91 86 83 75 75 80 +81 86 93 94 93 99 101 93 83 78 75 79 +71 70 73 69 75 71 74 73 73 72 65 74 +78 81 89 97 102 110 119 115 115 123 115 119 +119 112 106 103 103 99 93 89 83 74 64 68 +56 60 54 60 59 54 57 53 49 52 54 47 +43 48 47 54 +51 51 56 58 58 57 52 61 +65 58 58 69 67 71 102 117 140 162 177 193 +195 200 200 200 197 196 194 184 163 143 125 105 +103 111 117 127 135 145 154 159 164 168 176 175 +177 178 180 176 182 180 180 187 182 185 188 185 +181 178 171 158 126 90 67 62 49 53 58 61 +55 45 59 59 48 44 55 62 58 44 45 47 +44 47 57 51 53 64 67 52 54 56 57 52 +55 61 67 61 50 48 77 101 84 49 40 44 +48 53 40 61 86 125 110 59 67 38 52 49 +45 41 57 103 106 119 66 48 83 138 130 130 +101 58 55 50 40 39 81 114 99 119 119 70 +76 60 33 37 34 47 67 83 74 126 134 87 +43 36 41 53 86 82 94 107 120 106 65 49 +45 38 61 52 39 44 51 40 40 50 38 53 +51 42 45 47 49 51 49 46 57 60 77 81 +83 90 93 100 99 101 109 108 108 112 115 114 +118 115 113 113 116 118 117 119 122 124 125 125 +124 124 125 124 122 130 125 128 128 133 128 123 +131 134 127 128 129 127 130 130 126 128 129 129 +136 136 129 133 135 138 138 132 134 136 137 131 +136 141 138 136 137 136 137 140 138 141 137 138 +133 136 143 143 139 141 141 144 144 144 141 142 +142 148 145 144 141 146 142 146 145 143 141 147 +147 148 146 144 143 146 143 145 147 147 146 144 +145 145 146 143 143 142 144 144 143 142 145 151 +144 145 145 146 146 148 146 148 148 151 149 148 +151 150 149 148 154 153 158 158 156 160 163 162 +163 164 167 166 166 167 170 168 175 176 177 182 +179 181 182 180 186 187 185 188 184 189 193 194 +199 198 199 199 201 201 200 205 206 206 209 208 +209 209 208 210 208 210 213 213 212 212 209 189 +119 70 66 76 85 80 85 97 93 93 102 104 +106 105 106 104 110 111 109 110 109 114 114 125 +117 122 120 118 116 121 121 116 111 117 117 116 +112 118 113 112 112 111 107 111 106 103 103 100 +98 98 98 100 108 112 112 112 113 105 106 100 +93 92 91 89 83 85 80 92 91 90 98 102 +97 98 93 91 86 85 75 76 68 65 63 73 +71 75 69 66 80 66 71 78 77 87 100 106 +112 113 119 114 117 164 115 118 117 113 105 98 +97 85 91 86 83 70 69 62 63 60 54 58 +58 57 65 56 53 56 56 56 50 55 53 51 +49 49 52 56 53 52 49 55 68 61 64 65 +63 72 95 120 140 170 186 197 200 206 203 201 +201 198 198 188 176 155 129 104 99 122 113 122 +133 144 154 159 165 168 176 176 177 178 178 179 +183 177 180 182 186 184 184 184 181 176 165 152 +119 103 81 74 57 54 63 63 55 49 51 49 +47 39 42 58 53 45 40 55 45 44 52 50 +55 68 65 58 50 50 56 61 61 59 63 61 +47 43 64 86 105 56 42 41 43 41 44 61 +107 137 110 67 49 35 47 47 48 51 70 117 +109 120 68 51 64 118 140 133 125 84 62 54 +41 44 71 85 100 100 130 78 72 79 48 32 +32 35 60 85 65 81 146 122 76 50 34 45 +61 73 81 93 115 125 104 63 44 41 55 68 +46 41 37 39 46 55 47 56 56 47 48 51 +50 54 49 50 61 75 76 84 91 93 103 98 +104 105 115 111 115 113 116 116 121 114 113 114 +116 115 118 118 118 124 124 124 125 123 125 127 +126 129 131 129 129 127 124 123 128 129 127 128 +128 129 131 133 130 134 129 129 134 132 132 129 +133 134 132 132 136 134 134 134 135 137 135 136 +136 139 141 134 137 137 136 138 138 141 142 139 +139 139 138 140 138 140 140 142 145 146 141 147 +143 146 139 146 149 147 146 147 149 146 147 141 +147 146 146 144 148 146 145 145 148 146 146 144 +143 142 146 145 142 143 148 148 146 140 146 144 +149 147 150 149 149 147 149 146 151 150 151 152 +155 151 156 156 158 158 162 162 163 164 168 166 +171 167 173 169 173 175 177 175 181 178 179 181 +182 183 186 187 186 190 192 193 195 198 200 200 +201 202 202 202 206 207 206 207 208 209 207 208 +207 205 205 215 215 212 210 196 136 74 64 81 +84 81 89 83 81 97 104 103 101 108 106 105 +113 103 106 108 112 114 112 115 121 117 119 122 +122 124 115 114 116 114 114 112 114 115 116 116 +110 111 112 113 107 103 105 107 102 99 103 105 +110 113 120 116 119 110 105 101 96 98 88 85 +85 83 91 98 98 97 95 101 97 98 86 89 +79 80 67 64 71 69 73 71 70 73 70 68 +97 68 74 86 82 96 103 109 115 118 121 122 +122 123 118 114 111 109 109 99 97 91 87 81 +74 65 66 61 60 54 56 57 51 58 62 49 +52 55 51 55 50 56 65 64 +48 48 56 62 +61 51 49 55 60 63 60 61 73 74 104 123 +142 173 191 201 200 203 203 202 199 200 199 192 +183 171 140 111 102 111 115 128 133 143 153 158 +164 165 172 177 179 179 179 177 183 178 179 183 +183 184 183 185 180 175 169 159 136 114 103 92 +63 59 56 55 54 44 51 58 62 49 43 52 +49 46 46 43 47 45 54 47 54 60 60 52 +59 56 52 56 57 72 65 62 50 52 57 70 +104 76 37 37 42 45 48 70 115 143 99 66 +49 41 49 51 53 41 62 116 103 125 74 62 +64 101 142 138 133 108 61 49 42 36 37 56 +81 103 116 89 44 77 65 36 33 36 48 85 +80 65 108 133 101 56 36 41 58 86 67 78 +104 123 110 96 77 42 53 83 49 37 44 31 +43 40 36 41 48 48 50 55 48 54 56 61 +74 78 88 87 95 93 102 103 102 107 111 114 +113 116 117 115 119 116 117 115 115 115 117 121 +120 124 125 120 125 128 125 125 125 121 129 125 +127 129 123 124 129 125 130 124 130 127 130 135 +134 129 130 128 131 130 131 130 130 133 133 137 +133 132 135 141 138 137 139 138 134 137 136 135 +135 139 138 135 141 141 136 140 136 140 136 143 +137 141 139 139 142 145 147 145 138 143 146 146 +150 145 149 146 147 150 147 143 145 143 147 147 +152 147 145 145 149 147 147 146 143 147 150 147 +147 146 142 149 146 144 144 147 151 150 147 145 +148 149 148 152 151 150 149 150 153 152 155 163 +155 159 158 162 164 163 163 165 167 174 169 168 +171 175 178 178 181 181 178 178 182 184 188 185 +185 186 190 195 197 200 199 197 199 204 200 204 +204 205 206 206 206 209 209 209 207 211 208 214 +213 213 210 202 161 84 76 76 80 80 85 87 +85 91 90 85 85 90 101 110 109 106 102 108 +105 115 119 120 122 123 118 123 122 118 116 116 +119 116 118 111 115 114 115 114 116 107 115 107 +106 107 105 107 103 109 110 113 117 114 117 116 +113 111 105 105 99 93 93 87 86 87 93 97 +95 96 99 101 100 101 86 85 82 78 68 67 +73 67 67 79 65 65 71 74 70 71 80 95 +89 102 105 109 117 122 123 122 122 118 119 110 +107 108 104 94 91 90 78 79 70 73 57 64 +52 58 56 63 58 57 55 51 54 60 56 57 +55 58 70 81 +49 49 54 55 56 48 47 52 +54 58 59 62 61 71 105 124 145 183 195 197 +200 203 204 203 201 200 199 196 183 171 152 115 +104 115 112 123 132 139 151 159 163 167 173 175 +177 174 175 175 182 179 179 180 178 183 180 180 +175 178 175 167 149 128 116 109 77 68 61 52 +49 39 49 61 78 56 41 58 48 51 40 48 +52 42 64 66 54 52 54 59 52 62 62 64 +66 58 65 77 57 40 50 52 90 95 37 38 +47 44 46 81 130 138 86 69 48 42 49 51 +46 40 71 115 106 130 64 66 73 82 132 144 +136 117 77 44 42 39 39 44 62 96 108 102 +45 60 76 57 38 39 42 77 79 68 71 107 +127 87 43 42 59 88 58 86 98 114 82 82 +95 92 73 87 48 43 48 32 35 38 37 41 +39 47 52 49 57 61 69 70 78 87 86 91 +90 101 102 108 108 108 108 109 113 112 114 116 +119 118 122 117 119 119 113 118 124 121 126 123 +127 125 125 123 123 122 130 128 124 123 124 125 +128 133 131 130 129 132 130 138 132 128 126 132 +128 131 132 132 129 134 134 135 131 132 136 138 +137 138 138 136 136 137 132 137 133 142 138 135 +140 139 139 140 141 142 138 144 142 139 139 138 +141 145 143 143 145 139 143 145 147 141 146 147 +146 148 150 146 147 142 145 147 150 148 143 146 +148 149 149 142 140 149 149 151 145 152 149 149 +149 144 147 146 148 151 150 149 151 150 153 153 +153 155 152 151 149 154 155 156 158 159 163 162 +165 163 169 168 169 171 165 169 172 172 178 175 +175 183 177 177 183 186 184 188 189 186 190 194 +197 198 196 196 202 201 201 204 206 205 205 204 +207 209 208 209 210 211 212 213 213 212 212 210 +175 102 63 73 78 83 81 89 99 96 94 100 +99 100 104 105 101 107 105 110 112 114 121 118 +119 118 124 118 118 122 119 118 121 118 121 113 +114 116 115 113 116 109 115 105 106 109 108 110 +111 111 119 119 121 121 120 116 113 112 107 104 +97 97 96 96 92 96 95 96 99 98 100 90 +95 96 90 79 78 78 79 73 71 74 75 75 +75 87 76 70 76 80 82 88 102 114 113 115 +121 124 122 124 123 118 116 108 106 110 100 89 +91 85 72 77 59 62 58 56 57 48 51 61 +66 62 53 53 49 45 49 62 59 67 75 92 +48 48 52 49 53 56 51 53 58 65 55 58 +58 73 104 129 154 192 194 197 199 202 203 202 +204 200 199 194 186 178 165 123 101 114 115 127 +130 144 150 156 162 167 172 177 175 175 179 176 +182 178 178 178 183 181 182 179 177 180 170 168 +147 123 132 118 86 71 57 55 46 47 45 57 +65 48 48 55 63 49 46 46 63 49 82 65 +58 60 54 56 55 54 53 65 62 60 63 63 +66 40 47 49 84 112 60 40 50 39 41 83 +139 129 80 62 51 43 47 42 49 44 84 117 +112 126 56 64 86 74 104 134 146 132 83 46 +41 38 41 42 49 82 100 117 75 43 59 76 +61 40 39 58 80 86 66 71 109 111 58 35 +50 95 72 70 87 121 105 62 95 115 111 99 +42 35 37 30 30 35 36 41 42 44 50 52 +60 68 71 79 79 86 86 95 101 106 110 104 +108 111 111 113 109 108 113 117 118 119 122 116 +118 119 114 121 121 121 126 125 129 130 127 123 +125 125 127 125 124 124 126 126 126 128 127 132 +131 128 128 138 132 132 131 131 127 132 134 128 +131 132 134 135 133 132 130 137 138 136 137 140 +134 135 135 138 135 146 140 141 138 142 137 138 +142 139 140 136 141 141 137 143 145 144 141 144 +142 142 145 149 142 143 142 146 152 147 145 146 +145 147 146 148 142 147 148 148 148 146 145 146 +141 152 148 148 144 146 145 145 145 146 150 144 +145 151 148 149 149 152 153 154 154 150 148 152 +150 152 157 157 157 161 162 164 166 165 163 170 +168 165 165 168 173 174 177 176 175 178 178 179 +182 183 186 187 190 187 188 193 192 196 195 196 +206 200 204 203 204 204 205 205 206 209 209 210 +210 211 211 209 213 212 214 211 190 126 66 71 +74 80 80 89 91 108 106 103 101 97 107 103 +95 99 110 113 106 117 121 113 119 121 121 120 +118 120 120 118 122 118 116 115 114 115 113 116 +109 113 110 107 111 112 112 113 113 117 116 122 +123 123 122 119 115 109 105 101 94 93 90 96 +96 96 104 103 99 97 96 83 90 91 83 78 +82 83 84 75 74 78 80 92 73 72 70 82 +85 83 89 100 107 110 120 122 124 124 125 129 +124 118 116 102 106 108 94 93 84 81 74 70 +58 62 51 55 51 49 52 55 57 57 58 75 +56 51 60 71 70 71 77 86 +47 47 54 52 +49 54 52 50 55 60 54 54 59 71 106 127 +158 194 195 197 199 201 203 205 200 202 194 193 +186 181 169 126 103 110 118 125 134 145 150 158 +160 166 173 178 177 175 177 172 177 180 176 178 +180 179 184 181 180 175 164 168 144 131 133 113 +93 63 59 52 53 43 43 55 60 40 38 49 +55 52 44 44 68 47 49 63 66 62 53 61 +55 66 57 63 77 66 70 71 80 50 46 43 +66 106 71 55 52 45 46 97 145 103 77 75 +59 42 50 47 56 56 90 117 115 124 47 58 +87 74 79 93 149 139 112 63 44 43 51 39 +45 85 101 121 103 46 45 63 79 56 42 50 +77 90 70 70 79 97 87 44 45 72 78 59 +87 118 124 85 100 110 127 120 81 49 37 35 +35 34 37 40 44 45 51 61 63 72 78 81 +91 92 87 98 98 105 105 102 101 107 107 119 +111 109 114 120 118 117 120 114 120 124 116 118 +121 122 122 123 128 130 128 125 127 127 124 128 +125 126 123 126 127 129 131 135 129 133 128 127 +132 133 130 133 127 131 130 128 132 129 134 136 +133 132 136 137 134 137 134 133 131 133 133 139 +141 142 140 138 137 138 137 141 142 139 136 137 +141 141 144 142 140 148 144 145 143 145 145 148 +144 143 147 144 146 146 143 146 149 149 146 145 +146 145 146 151 149 151 149 143 149 149 150 151 +144 148 147 149 148 144 143 145 144 151 151 150 +147 153 154 155 154 153 154 153 148 153 157 159 +161 161 159 164 166 165 165 167 165 165 166 166 +172 170 177 176 174 173 178 179 183 184 187 186 +185 186 190 191 192 195 197 198 200 196 201 199 +205 207 206 206 207 209 208 209 208 209 210 210 +212 210 212 210 197 139 76 78 81 69 85 85 +88 85 89 107 99 102 102 96 100 105 103 104 +112 118 115 119 120 120 116 117 116 121 126 117 +122 119 126 119 114 119 117 115 115 108 113 113 +117 114 111 116 120 121 125 126 127 130 119 118 +112 107 105 97 93 94 96 93 94 98 103 103 +98 90 91 85 83 88 83 89 86 87 77 88 +85 73 78 78 69 76 77 78 80 88 98 104 +112 118 122 125 128 126 121 124 117 117 104 107 +104 99 87 87 81 81 63 60 56 52 49 47 +44 46 50 50 52 56 51 69 58 60 71 77 +81 81 90 93 +48 48 56 52 54 53 50 56 +62 51 54 58 63 70 104 128 159 195 195 197 +199 197 200 204 202 198 197 193 189 183 170 130 +104 108 117 125 132 144 149 161 162 168 174 175 +178 177 177 176 178 179 177 181 179 183 179 183 +178 172 173 164 130 121 125 101 93 51 52 50 +49 49 43 47 56 43 41 53 59 52 41 74 +54 50 51 60 59 45 58 65 54 65 59 75 +87 69 84 66 81 65 58 56 57 65 75 71 +55 41 51 102 137 89 74 75 54 46 48 51 +57 63 80 106 105 121 37 50 94 77 82 68 +133 153 127 94 49 43 37 47 56 86 122 99 +127 79 51 46 72 70 55 55 58 92 91 61 +64 63 88 52 39 53 76 78 81 111 124 71 +83 95 118 136 118 80 47 33 39 36 37 43 +42 48 55 58 62 72 77 80 88 86 91 95 +97 101 101 106 107 105 112 117 115 115 116 114 +120 125 118 119 120 120 117 120 120 118 123 121 +128 129 127 128 125 125 123 127 127 124 128 126 +126 133 131 131 130 130 131 131 134 133 129 133 +128 128 124 131 141 136 133 135 137 138 134 140 +134 135 135 137 133 134 135 138 141 140 141 138 +137 137 139 143 138 141 139 139 140 141 144 142 +142 146 144 144 145 144 149 147 147 143 148 146 +139 140 142 150 147 147 143 146 143 145 143 147 +149 153 149 147 149 153 148 145 153 146 149 149 +143 144 147 146 147 149 151 148 149 155 154 154 +155 153 155 157 153 154 154 158 161 161 160 164 +163 165 162 163 159 162 167 167 168 171 177 177 +172 174 179 177 184 185 186 185 183 189 188 191 +193 193 196 194 199 200 201 200 201 205 205 205 +205 210 208 208 211 210 210 211 211 211 212 211 +204 160 93 68 79 77 80 81 85 83 86 89 +94 98 104 98 99 105 103 106 113 115 112 115 +118 122 117 121 118 123 123 124 129 123 116 121 +115 116 117 114 112 116 118 119 119 120 115 117 +122 127 126 128 125 131 121 117 113 106 103 93 +93 91 92 88 95 95 99 93 86 89 86 87 +77 79 86 79 83 91 85 78 87 80 75 82 +73 75 78 88 90 94 104 116 116 122 129 132 +125 130 127 123 116 111 109 105 96 94 88 79 +73 69 64 59 65 54 44 43 46 58 54 55 +55 57 66 65 58 66 74 77 96 90 88 94 +53 53 47 47 53 53 49 54 56 60 50 53 +56 63 96 120 159 192 194 194 194 201 199 200 +199 198 194 194 188 180 174 132 104 114 116 120 +136 145 150 159 161 168 173 178 176 175 176 178 +181 182 177 179 181 180 183 186 177 170 175 152 +118 105 103 86 86 52 51 56 55 48 41 52 +43 45 43 50 55 59 47 42 55 57 60 57 +66 53 57 71 58 63 61 77 83 72 88 72 +78 70 48 48 54 61 65 80 60 48 59 133 +140 77 60 69 61 46 51 52 62 62 76 110 +113 121 41 42 85 93 73 71 112 141 140 115 +66 44 34 48 58 80 132 100 125 100 52 50 +51 50 68 70 56 77 94 90 64 65 60 62 +40 51 53 77 75 81 104 80 62 80 93 131 +132 124 95 47 35 41 42 39 46 60 63 69 +74 74 77 77 89 90 93 93 104 111 101 104 +107 110 118 114 112 117 110 122 118 119 121 122 +120 120 126 122 125 128 122 123 127 128 126 125 +124 123 126 126 127 131 135 128 129 130 131 131 +126 128 133 129 132 131 135 129 128 131 133 132 +136 133 134 136 142 140 133 139 134 138 132 133 +131 131 135 138 141 138 140 140 140 135 143 144 +141 141 139 135 139 139 144 141 141 144 144 144 +145 148 147 146 145 146 148 143 142 142 143 144 +149 142 145 146 146 144 146 148 152 152 151 149 +148 146 147 146 148 146 146 147 146 146 147 146 +147 152 150 148 149 151 154 152 154 150 155 151 +152 155 158 160 157 156 161 165 161 164 162 161 +163 161 166 169 173 169 174 174 170 175 177 183 +180 186 189 185 186 189 189 192 194 195 194 197 +197 200 201 201 202 204 205 204 203 207 207 208 +211 209 206 213 211 211 211 212 210 178 105 72 +72 77 85 85 86 92 91 92 88 98 99 95 +96 102 103 106 106 112 113 117 115 115 111 117 +119 121 127 126 126 124 122 125 113 118 117 115 +111 118 120 120 117 124 123 125 128 133 127 129 +124 125 118 115 111 102 102 100 91 94 101 89 +94 94 99 90 87 81 85 77 83 75 75 84 +84 86 86 82 83 81 83 77 75 82 90 87 +97 110 110 117 118 126 129 129 131 124 126 123 +118 109 109 103 94 84 81 81 65 57 55 48 +53 56 46 52 53 49 52 53 58 51 55 63 +67 77 83 89 90 93 94 89 +46 46 49 49 +52 49 50 51 57 54 56 52 55 68 86 119 +157 192 196 195 197 197 199 199 200 196 194 191 +185 179 172 134 100 109 111 125 135 143 153 159 +161 170 170 178 175 175 177 177 177 180 179 178 +180 182 182 182 180 174 171 152 115 99 96 86 +78 51 55 59 66 45 38 44 37 39 44 57 +63 57 47 43 58 72 59 50 77 60 56 67 +53 68 62 76 78 64 92 70 75 78 51 45 +54 53 62 84 68 52 77 152 137 64 49 69 +61 47 49 68 62 56 81 118 117 118 42 41 +75 93 74 74 76 103 122 133 101 61 41 43 +57 77 131 119 123 105 56 48 38 35 39 57 +60 77 89 86 74 60 53 69 44 41 41 55 +55 61 95 92 74 77 87 102 130 135 127 92 +49 50 54 48 54 71 72 78 79 94 82 82 +89 92 91 97 105 108 109 109 112 113 116 120 +117 119 114 118 120 120 124 118 121 124 122 120 +127 125 122 123 128 124 125 125 127 127 125 127 +131 126 125 129 127 131 130 132 127 129 127 128 +133 127 129 129 128 134 133 129 135 136 134 132 +133 139 134 139 137 136 139 134 133 130 133 136 +136 134 137 135 142 138 138 141 138 139 142 138 +140 144 141 145 146 143 142 146 144 146 142 145 +144 147 148 147 142 141 149 141 146 143 149 147 +148 147 144 148 149 149 149 148 148 144 146 145 +152 146 149 150 153 147 143 147 146 147 153 146 +149 148 148 152 153 157 155 151 156 154 157 154 +158 158 160 161 167 164 162 163 166 165 165 168 +168 167 170 175 173 173 177 177 180 182 184 185 +185 192 189 190 194 192 193 198 197 196 201 204 +200 204 204 203 204 207 206 210 208 208 204 211 +211 211 215 214 213 192 123 85 75 80 83 86 +90 92 92 96 90 86 95 85 92 100 107 110 +104 117 115 115 114 107 117 120 126 126 130 134 +125 120 125 121 123 120 119 121 119 121 121 118 +127 127 130 132 135 135 131 129 125 123 117 116 +112 103 94 91 98 92 94 90 85 92 87 81 +80 74 82 80 75 78 89 86 88 85 86 88 +86 81 83 82 77 76 86 102 94 105 110 118 +126 127 131 129 128 127 125 125 121 110 101 95 +86 80 77 71 59 56 55 48 54 44 52 48 +52 48 52 53 56 60 62 70 74 81 88 93 +100 102 97 96 +42 42 49 46 54 46 49 48 +60 52 44 53 55 63 82 111 150 191 193 196 +196 200 199 198 198 197 193 189 184 179 166 127 +104 109 119 131 137 143 154 160 161 169 170 178 +176 180 178 181 179 179 181 180 182 180 183 181 +179 175 174 162 120 73 87 90 63 47 56 70 +61 48 37 46 41 42 46 62 65 60 40 40 +53 77 49 52 64 56 68 70 55 64 63 77 +71 60 76 70 74 85 56 54 54 53 60 85 +86 69 105 164 118 60 46 59 72 56 38 71 +62 52 72 119 115 114 43 34 61 90 74 83 +70 79 93 136 119 90 58 55 45 71 124 137 +100 98 50 38 46 42 39 50 61 61 91 67 +82 74 63 67 65 45 40 52 43 56 83 110 +69 57 75 79 107 108 99 114 89 55 56 51 +61 79 81 81 78 84 88 82 88 90 100 98 +106 104 105 110 112 112 116 114 116 119 117 114 +119 122 125 121 122 125 124 124 126 123 129 126 +122 123 126 124 123 131 128 126 126 128 129 125 +126 129 130 124 128 128 129 129 131 133 129 134 +130 128 130 127 130 131 131 133 132 135 134 137 +141 140 142 132 132 131 133 138 133 134 136 134 +138 139 137 136 138 139 140 144 137 141 142 142 +144 146 145 147 145 143 144 145 148 142 145 142 +138 141 144 150 151 146 145 147 146 143 144 148 +149 149 146 154 148 150 147 149 146 147 151 150 +152 147 146 148 151 149 150 152 151 146 150 149 +155 155 159 154 154 156 157 156 158 162 160 162 +162 166 167 168 165 163 163 168 167 169 169 172 +173 172 173 174 180 180 183 182 186 190 189 192 +191 193 194 194 195 194 200 198 199 203 201 203 +203 204 206 210 211 211 208 209 212 211 212 213 +212 196 138 101 91 95 93 82 88 89 93 94 +91 85 87 91 100 97 101 111 107 103 110 109 +118 112 117 123 126 133 132 130 132 126 124 119 +124 121 121 122 121 120 120 126 131 130 136 134 +142 134 136 128 124 124 114 113 105 99 95 91 +90 98 89 87 81 87 81 76 79 72 74 75 +79 87 92 94 95 85 89 89 83 85 81 85 +78 84 91 94 101 105 115 117 124 127 130 132 +127 124 127 119 117 104 95 88 78 78 70 63 +57 53 49 52 45 45 48 45 47 52 45 52 +53 58 70 69 79 80 92 97 99 104 99 98 +43 43 54 51 54 46 49 51 58 51 45 50 +52 53 78 108 145 184 194 195 196 200 197 197 +198 194 193 191 182 177 159 119 104 110 119 130 +135 142 154 159 163 162 167 176 173 181 180 178 +180 181 178 182 180 182 181 182 176 178 174 163 +126 77 94 94 68 56 52 71 48 43 38 43 +38 39 54 61 70 59 33 38 54 72 42 46 +74 70 62 85 56 65 63 73 70 56 69 72 +69 84 65 57 53 57 73 103 97 70 134 160 +91 57 52 53 76 67 37 50 58 57 72 113 +113 113 49 39 47 81 77 75 67 72 63 118 +138 118 92 58 49 62 125 147 93 85 45 36 +49 52 49 39 48 49 69 65 79 82 67 65 +70 47 39 54 52 51 73 116 96 45 41 62 +94 101 73 81 121 90 57 57 74 83 80 81 +81 83 94 89 90 90 94 101 100 107 106 108 +110 109 112 112 112 121 117 121 118 124 120 120 +119 125 122 125 122 123 125 124 130 129 130 129 +125 124 127 125 126 128 129 124 126 129 127 126 +130 131 133 131 131 133 132 135 129 132 131 129 +130 131 131 135 135 137 137 141 138 134 134 137 +133 132 132 137 134 136 134 135 138 137 139 140 +139 138 142 142 140 141 138 138 142 145 143 143 +146 147 143 141 142 144 144 142 142 142 142 149 +145 147 143 146 145 146 144 146 147 149 147 151 +149 152 149 148 147 148 147 151 148 151 148 151 +152 147 150 151 149 153 149 154 158 156 163 151 +156 157 154 156 158 157 163 159 162 165 167 165 +162 165 163 168 169 169 168 171 172 173 175 173 +179 183 184 184 184 186 192 191 191 191 194 193 +194 193 196 198 199 202 201 202 203 205 207 207 +208 209 207 208 212 211 210 212 211 204 156 117 +109 111 101 94 94 88 93 91 91 89 92 97 +94 97 97 107 103 106 105 101 120 124 126 127 +129 134 135 132 131 129 126 127 121 126 125 125 +125 120 124 128 132 138 137 138 140 135 134 129 +123 118 118 107 100 94 85 92 90 89 84 82 +78 71 77 73 71 77 69 80 86 89 90 90 +92 89 91 90 83 86 82 80 83 89 96 93 +102 112 118 125 128 122 130 128 128 123 123 119 +113 101 95 84 74 62 59 58 58 57 50 50 +43 41 41 49 45 51 53 58 67 72 75 82 +94 91 97 105 100 103 105 107 +43 43 54 51 +54 46 49 51 58 51 45 50 52 53 78 108 +145 184 194 195 196 200 197 197 198 194 193 191 +182 177 159 119 104 110 119 130 135 142 154 159 +163 162 167 176 173 181 180 178 180 181 178 182 +180 182 181 182 176 178 174 163 126 77 94 94 +68 56 52 71 48 43 38 43 38 39 54 61 +70 59 33 38 54 72 42 46 74 70 62 85 +56 65 63 73 70 56 69 72 69 84 65 57 +53 57 73 103 97 70 134 160 91 57 52 53 +76 67 37 50 58 57 72 113 113 113 49 39 +47 81 77 75 67 72 63 118 138 118 92 58 +49 62 125 147 93 85 45 36 49 52 49 39 +48 49 69 65 79 82 67 65 70 47 39 54 +52 51 73 116 96 45 41 62 94 101 73 81 +121 90 57 57 74 83 80 81 81 83 94 89 +90 90 94 101 100 107 106 108 110 109 112 112 +112 121 117 121 118 124 120 120 119 125 122 125 +122 123 125 124 130 129 130 129 125 124 127 125 +126 128 129 124 126 129 127 126 130 131 133 131 +131 133 132 135 129 132 131 129 130 131 131 135 +135 137 137 141 138 134 134 137 133 132 132 137 +134 136 134 135 138 137 139 140 139 138 142 142 +140 141 138 138 142 145 143 143 146 147 143 141 +142 144 144 142 142 142 142 149 145 147 143 146 +145 146 144 146 147 149 147 151 149 152 149 148 +147 148 147 151 148 151 148 151 152 147 150 151 +149 153 149 154 158 156 163 151 156 157 154 156 +158 157 163 159 162 165 167 165 162 165 163 168 +169 169 168 171 172 173 175 173 179 183 184 184 +184 186 192 191 191 191 194 193 194 193 196 198 +199 202 201 202 203 205 207 207 208 209 207 208 +212 211 210 212 211 204 156 117 109 111 101 94 +94 88 93 91 91 89 92 97 94 97 97 107 +103 106 105 101 120 124 126 127 129 134 135 132 +131 129 126 127 121 126 125 125 125 120 124 128 +132 138 137 138 140 135 134 129 123 118 118 107 +100 94 85 92 90 89 84 82 78 71 77 73 +71 77 69 80 86 89 90 90 92 89 91 90 +83 86 82 80 83 89 96 93 102 112 118 125 +128 122 130 128 128 123 123 119 113 101 95 84 +74 62 59 58 58 57 50 50 43 41 41 49 +45 51 53 58 67 72 75 82 94 91 97 105 +100 103 105 107 diff --git a/intro/08-arrays/index.html b/intro/08-arrays/index.html new file mode 100644 index 00000000..73a36dcb --- /dev/null +++ b/intro/08-arrays/index.html @@ -0,0 +1,62 @@ + Arrays - Awesome GameDev Resources

Arrays

Estimated time to read: 23 minutes

An array is a collection of similar data items, stored in contiguous memory locations. The items in an array can be of any built-in data type such as int, float, char, etc. An array is defined using a syntax similar to declaring a variable, but with square brackets indicating the size of the array.

Here's an example of declaring an array of integers with a size of 5:

int arr[5]; // declare an array of size 5 at the stack
+

The above declaration creates an array named arr of size 5, which means it can store 5 integers. The array elements are stored in contiguous memory locations, which means the next element is stored at the immediate next memory location. The first element of the array is stored at the 0th index, the second element at the 1st index, and so on up to 4. Between 0 an 4 all inclusive we have 5 elements.

This creates an array called "myArray" that can hold 5 integers. The first element of the array is accessed using the index 0, and the last element is accessed using the index 4. You can initialize the array elements during declaration by providing a comma-separated list of values enclosed in braces:

int myArr[5] = {10, 20, 30, 40, 50}; // initialize the array with 5 elements
+

In this case, the first element of the array will be 10, the second element will be 20, and so on.

You can also use loops to iterate over the elements of an array and perform operations on them. For example:

for (int i = 0; i < 5; i++) { 
+  myArray[i] *= 2;
+}
+

This loop multiplies each element of the "myArray" by 2.

Arrays are a useful data structure in C++ because they allow you to store and manipulate collections of data in a structured way. However, they have some limitations, such as a fixed size that cannot be changed at runtime, and the potential for buffer overflow if you try to access elements beyond the end of the array.

Buffer overflow

A buffer overflow occurs when a program attempts to write more data to a fixed-size buffer than it can hold. This can happen when a program attempts to write more data to a buffer than the buffer can hold, or when a program attempts to read more data from a buffer than the buffer contains. This can happen when a program attempts to write more data to a buffer than the buffer can hold, or when a program attempts to read more data from a buffer than the buffer contains.

A buffer overflow can be caused by a number of different factors, including:

  • A program that attempts to write more data to a buffer than the buffer can hold
  • A program that attempts to read more data from a buffer than the buffer contains

Buffer overflow vulnerabilities are a common type of security vulnerability, as they can be exploited by malicious attackers to execute arbitrary code or gain unauthorized access to a system. To prevent buffer overflow vulnerabilities, it's important to carefully manage memory allocation and use bounds checking functions or techniques such as using safe C++ library functions like std::vector or std::array, and ensuring that input data is properly validated and sanitized.

Multi-dimensional arrays

A multi-dimensional array is an array of arrays. For example, a 2-dimensional array is an array of arrays, where each element of the array is itself an array. A 3-dimensional array is an array of 2-dimensional arrays, where each element of the array is itself a 2-dimensional array. And so on.

For example, to declare a two-dimensional array with 3 rows and 4 columns of integers, you would use the following code:

int arr[3][4]; // Declare a 2-dimensional array with 3 rows and 4 columns at the stack
+

You can access elements in a multidimensional array using multiple sets of square brackets. For example, to access the element at row 2 and column 3 of myArray, you would use the following code:

int element = myArray[1][2]; // Access the element at row 2 and column 3
+

In C++, you can have arrays with any number of dimensions, but keep in mind that as the number of dimensions increases, it becomes more difficult to manage and visualize the data.

Array dynamic allocation

In some cases, you dont know the size of the array at compile time. In this case, you can use dynamic memory allocation to allocate the array at runtime. This is done using the new operator, which allocates a block of memory on the heap and returns a pointer to the beginning of the block. For example, to allocate an array of 5 integers on the heap, you would use the following code:

int *arr = new int[5]; // Allocate a block of memory on the heap
+

The above code allocates a block of memory on the heap that is large enough to hold 5 integers. The new operator returns a pointer to the beginning of the block, which is assigned to the pointer variable arr. You can then use the pointer to access the elements of the array. You can access individual elements of the array using the array subscript notation:

arr[0] = 10;
+arr[1] = 20;
+arr[2] = 30;
+arr[3] = 40;
+arr[4] = 50;
+

When you are done using the array, you should free the memory using the delete operator. For example, to free the memory allocated to the array in the previous example, you would use the following code:

delete[] arr; // Free the memory by telling the operation system you are done with it
+arr = nullptr; // Reset the pointer to null to avoid dangling pointers and other bugs
+

The delete operator takes a pointer to the beginning of the block of memory to free. The [] operator is used to indicate that the block of memory contains an array, and that the delete operator should free the entire array.

Dynamic allocation of multi-dimensional arrays

In the case of dynamically allocate memory for a multidimensional array, first you have to understand that in the same way you can have an array of arrays, you can have a pointer to a pointer. This is called a double pointer. So, if you want to allocate a 2-dimensional array dynamically, you can do it like this:

int lines, columns;
+cin >> lines >> columns;
+int **arr = new int*[lines]; // Allocate an array of pointers to pointers
+for (int i = 0; i < lines; i++) {
+  arr[i] = new int[columns]; // Allocate an array of integers for each pointer
+}
+// do stuff with the array
+for (int i = 0; i < lines; i++) {
+  delete[] arr[i]; // Free the memory for each array of integers
+}
+delete[] arr; // Free the memory for the array of pointers
+

Smart pointers to rescue

You probably noticed the number of bugs and vulnerabilities that can be caused by improper memory management. To help address that, C++ introduced smart pointers. The general purpose smart contract you will be mostly using is shared_ptr that in the end of the scope and when all references to it become 0 will automatically free the memory. The other smart pointers are unique_ptr and weak_ptr that are used in more advanced scenarios. But for now, we will focus on shared_ptr.

In C++11, smart pointers were introduced to help manage memory allocation and deallocation. Smart pointers are classes that wrap a pointer to a dynamically allocated object and provide additional features such as automatic memory management. The most commonly used smart pointers are std::unique_ptr and std::shared_ptr. The std::unique_ptr class is a smart pointer that owns and manages another object through a pointer and disposes of that object when the std::unique_ptr goes out of scope. The std::shared_ptr class is a smart pointer that retains shared ownership of an object through a pointer. Several std::shared_ptr objects may own the same object. The object is destroyed and its memory deallocated when either of the following happens:

  • the last remaining std::shared_ptr owning the object is:
    • destroyed
    • is assigned another pointer via operator= or reset()
    • is reset or released
    • moved from
    • is swapped with another std::shared_ptr using swap()
    • the function std::shared_ptr::swap() is called with the last remaining std::shared_ptr owning the object as an argument
  • the object is no longer reachable from the program (for example, when the program terminates)
  • the program:
    • throws an exception that is not caught within the same thread
    • calls terminating calls such as std::terminate(), std::abort(), std::exit(), or std::quick_exit()

To create a dynamic array of int using shared pointers, you can use the std::shared_ptr class template. Here's an example:

#include <memory> // for std::shared_ptr
+std::shared_ptr<int[]> arr(new int[5]);
+

This creates a shared pointer to an array of 5 integers. The new int[5] expression dynamically allocates memory for the array on the heap, and the shared pointer takes ownership of the memory. When the shared pointer goes out of scope, the memory is automatically freed.

You can access individual elements of the array using the array subscript notation, just like with a regular C-style array:

arr[0] = 10;
+arr[1] = 20;
+arr[2] = 30;
+arr[3] = 40;
+arr[4] = 50;
+

To deallocate the memory, you don't need to call delete[] explicitly, because the shared pointer takes care of it automatically. When the last shared pointer that points to the array goes out of scope or is explicitly reset, the memory is deallocated automatically:

arr.reset(); // deallocates the memory and reset the shared pointer to null to avoid dangling pointers and other bugs
+

Shared pointers provide a convenient and safe way to manage dynamic memory in C++, because they automatically handle memory allocation and deallocation, and help prevent memory leaks and dangling pointers.

Smart pointers are no silver bullet. They are not a replacement for proper memory management, but they can help you avoid common memory management bugs and vulnerabilities. For example, smart pointers can help you avoid memory leaks, dangling pointers, and double frees. They can also help you avoid buffer overflow vulnerabilities by providing bounds checking functions.

Passing arrays to functions

You can pass arrays to functions in C++ in the same way that you pass any other variable to a function. For example, to pass an array to a function, you would use the following code:

void printArray(int arr[], int size) // Pass the array by reference to avoid copying the entire array
+{
+    for (int i = 0; i < size; ++i)
+        std::cout << arr[i] << ' ';
+    std::cout << '\n';
+}
+

Alternativelly you can pass the array as a pointer:

void printArray(int *arr, int size)
+{
+    for (int i = 0; i < size; ++i)
+        std::cout << arr[i] << ' ';
+    std::cout << '\n';
+}
+

If you want to pass a two dimension array, you can do it in multiple ways:

void printArray(int rows, int columns, int **arr); // Pass the array as a pointer of pointers
+

This approach is problematic as you can see it in depth here. It does not check for types and it is not safe. You can also pass the array as a pointer to an array:

void printArray(int rows, int arr[][10]); // if you know the number of columns and it is fixed, in this case 10 
+
void printArray(int rows, int (*arr)[10]); // if you know the number of columns and it is fixed, in this case 10 
+
void printArray(int arr[10][10]); // if you know the number of rows and columns and they are fixed, in this case both 10
+

There is others ways to pass arrays to functions, such as templates but they are more advanced and we will not cover them now.

EXTRA: Standard Template Library (STL)

Those are the most common data structures that you will be using in C++. But it is outside the scope of this course to cover them in depth. So we will only give entry-points for you to learn more about them.

Arrays

If you are using fixed sized arrays, and want to be safe to avoid problems related to out of bounds, you should use the STL arrays. It is a template class that encapsulates fixed size arrays and adds protections for it. It is a safer alternative to C-style arrays. Read more about it here.

Vectors

Vectors are the safest way to deal with dynamic arrays in C++, the cpp core guideline even states that you should use it whenever you can. Vector is implemented in the standard template library and provide a lot of useful functions. Read more about them here.

Extra curiosities

Context on common bugs and vulnerabilities:

\ No newline at end of file diff --git a/intro/09-recursion/index.html b/intro/09-recursion/index.html new file mode 100644 index 00000000..0f845e4c --- /dev/null +++ b/intro/09-recursion/index.html @@ -0,0 +1,45 @@ + Recursion - Awesome GameDev Resources

Recursion

Estimated time to read: 7 minutes

Recursion is a method of solving problems where the solution depends on solutions to smaller instances of the same problem. It is a common technique used in computer science, and is one of the central ideas of functional programming. Let's explore recursion by looking at some examples.

You have to be aware that recursion isn't always the best solution for a problem. Sometimes it can be more efficient to use a loop and a producer-consumer strategy instead of recursion. But, in some cases, recursion is the more elegant solution.

When you call functions inside functions, the compiler will store the return point, value and variables on the stack, and it has limited size. Each time you call a function, it is added to the top of the stack. When the function returns, it is removed from the top of the stack. The last function to be called is the first to be returned. This is called the call stack. A common source of problems in programming is when the call stack gets too big. This is called a stack overflow. This is why you should be careful when using recursion.

Fibonacci numbers

The Fibonacci numbers are a sequence of numbers where each number is the sum of the two numbers before it. The constraints are: the first number is 0, the second number is 1, it only run on integers and it is not negative. The sequence looks like this:

int fibonacci(int n) {
+    // base case
+    if (n == 0 || n == 1)
+        return n;
+    else // recursive case
+        return fibonacci(n - 1) + fibonacci(n - 2);
+}
+

Factorial numbers

The factorial of a number is the product of all the numbers from 1 to that number. It only works for positive numbers greater than 1.

int factorial(int n) {
+    // base case
+    if (n <= 1)
+        return 1;
+    else // recursive case
+        return n * factorial(n - 1);
+}
+

Divide and Conquer

Divide and conquer is a method of solving problems by breaking them down into smaller subproblems. It is extensively used to reduce the complexity of some algorithms and increase readability.

Imagine that you already have a sorted array of numbers and you want to find the location of a specific number in that array. You can use a binary search to find it. The binary search works by dividing the array in half and checking if the number you are looking for is in the first half or the second half. If it is in the first half, you repeat the process with the first half of the array. If it is in the second half, you repeat the process with the second half of the array. You keep doing this until you find the number or you know that it is not in the array.

// recursive binary search on a sorted array to return the position of a number
+int binarySearch(int arr[], int start, int end, int number) {
+    // base case
+    if (start > end)
+        return -1; // number not found
+    else {
+        // recursive case
+        int mid = (start + end) / 2;
+        // return the middle if wi find the number
+        if (arr[mid] == number)
+            return mid;
+        // if the number is smaller than the middle, search in left side
+        else if (arr[mid] > number)
+            return binarySearch(arr, start, mid - 1, number);
+        // if the number is bigger than the middle, search in right side
+        else
+            return binarySearch(arr, mid + 1, end, number);
+    }
+}
+

Binary search plays a fundamental role in Newton's method, which is a method to find and approximate the result of complex mathematical functions such as the square root of a number. Binary-sort is extensively used in sorting algorithms such as quick sort and merge sort.

Merge sort

Please refer to the Merge sort section in the sorting chapter.

\ No newline at end of file diff --git a/intro/10-sorting/index.html b/intro/10-sorting/index.html new file mode 100644 index 00000000..4f184203 --- /dev/null +++ b/intro/10-sorting/index.html @@ -0,0 +1,270 @@ + Sorting - Awesome GameDev Resources

Sorting algorithms

Estimated time to read: 23 minutes

TODO: Note for my furune self: add complete example of how to use those algorithms

Sorting are algorithms that put elements of a list in a certain order. It is cruxial to understand the basics of sorting in order to start understanding more complex algorithms and why you have to pay attention to efficiency.

Before going deep, please watch this video:

SEIZURE WARNING!! Sorting Algorithms

and this one:

Sorting Algorithms

Explore the concepts interactively at visualgo.net.

Try to answer the following questions, before continuing:

  • What are the slowest sorting algorithms?
  • What are the fastest sorting algorithms?
  • Con you infer the difference between a stable and unstable sorting algorithm?
  • What is the difference between a comparison and a non-comparison sorting algorithm?
  • What would be an in-place and a non-in-place sorting algorithm?
  • What is the difference between a recursive and a non-recursive sorting algorithm?

The basics

Many of the algorithms will have to swap elements from the array, vector or list. In order to do that, we will need to create a function that swaps two elements. Here is the function:

// A function to swap two elements
+void swap(int *xp, int *yp) {  
+    int temp = *xp;  
+    *xp = *yp;  
+    *yp = temp;  
+}  
+

The * operator used in the function signature means that the function will receive a pointer to an integer. So it will efectivelly change the content in another scope. The * operator is used to dereference a pointer, which means that it will return the value stored in the memory address pointed by the pointer. Given the declaration is int *xp, the *xp will return the value stored in the memory address pointed by xp.

Alternatively you could use the & operator to pass the reference to that variable in the similar fashion, but the usage wont be requiring the * before the variable name as follows:

// A function to swap two elements
+void swap(int &xp, int &yp) {  
+    int temp = xp;  
+    xp = yp;  
+    yp = temp;  
+}  
+

The result is the same, but the usage is different. The first one is more common in C++, while the second one is more common in C.

Bubble sort

Bubble sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in wrong order.

// A function to implement bubble sort
+void bubbleSort(int arr[], int n) {  
+    // if the array has only one element, it is already sorted
+    if(n<=1)
+        return;
+
+    int i, j;  
+    for (i = 0; i < n-1; i++)
+        // Last i elements are already in place  
+        for (j = 0; j < n-i-1; j++)  
+            if (arr[j] > arr[j+1])  
+                swap(&arr[j], &arr[j+1]);  
+}  
+

As you can see, the algorithm is very simple, but it is not very efficient. It has a time complexity of O(n^2) and a space complexity of O(1).

One of the drawbacks of this algorithm is the sheer amount of swaps. In the worst scenario, it does n^2 swaps, which is a lot. If your machine have slow writes, it will be very slow.

Insertion sort

Insertion sort is a simple sorting algorithm that works the way we sort playing cards in our hands. You pick one card and insert it in the correct position in the sorted part of the list. You repeat this process until you have sorted the whole list. Here is the code:

// A function to implement insertion sort
+void insertionSort(int arr[], int n) {  
+    // if the array has only one element, it is already sorted
+    if(n<=1)
+        return;
+
+    int i, key, j;  
+    for (i = 1; i < n; i++) {  
+        key = arr[i];  
+        j = i - 1;  
+
+        /* Move elements of arr[0..i-1], that are  
+        greater than key, to one position ahead  
+        of their current position */
+        while (j >= 0 && arr[j] > key) {  
+            arr[j + 1] = arr[j];  
+            j = j - 1;  
+        }  
+        arr[j + 1] = key;  
+    }  
+}  
+

It falls in the same category of algorithms that are very simple, but not very efficient. It has a time complexity of O(n^2) and a space complexity of O(1).

Although it have the same complexity as bubble sort, it is a little bit more efficient. It does less swaps than bubble sort, but it is still not very efficient. It will swap all numbers to the left of the current number, which is a lot of swaps.

Selection sort

Selection sort is a simple sorting algorithm. This sorting algorithm is an in-place comparison-based algorithm in which the list is divided into two parts, the sorted part at the left end and the unsorted part at the right end. Initially, the sorted part is empty and the unsorted part is the entire list. The smallest element is selected from the unsorted array and swapped with the leftmost element, and that element becomes a part of the sorted array. This process continues moving unsorted array boundary by one element to the right. Here is the code:

// A function to implement selection sort
+void selectionSort(int arr[], int n) {
+    // if the array has only one element, it is already sorted
+    if(n<=1)
+        return;
+
+    int i, j, min_idx;  
+
+    // One by one move boundary of unsorted subarray  
+    for (i = 0; i < n-1; i++) {  
+        // Find the minimum element in unsorted array  
+        min_idx = i;  
+        for (j = i+1; j < n; j++)  
+        if (arr[j] < arr[min_idx])  
+            min_idx = j;  
+
+        // Swap the found minimum element with the first element  
+        swap(&arr[min_idx], &arr[i]);  
+    }  
+}  
+

It is also a simple algorithm, but it is a little bit more efficient than the previous two. It has a time complexity of O(n^2) and a space complexity of O(1).

It does less swaps than the previous two algorithms, potentially n swaps, but it is still not very efficient. It selects for the current position, the smallest number to the right of it and swaps it with the current number. It does this for every number in the list, which fatally a lot of swaps.

Merge sort

Merge sort is a divide and conquer algorithm. It divides input array in two halves, calls itself for the two halves and then merges the two sorted halves. Here is the code:

// recursive merge sort
+void mergeSort(int arr[], int l, int r) {  
+    if (l < r) {  
+        // Same as (l+r)/2, but avoids overflow for  
+        // large l and h  
+        int m = l+(r-l)/2;  
+
+        // Sort first and second halves  
+        mergeSort(arr, l, m);  
+        mergeSort(arr, m+1, r);  
+
+        merge(arr, l, m, r);  
+    }  
+}  
+
+// merge function
+void merge(int arr[], int l, int m, int r) {  
+    int i, j, k;  
+    int n1 = m - l + 1;  
+    int n2 =  r - m;  
+
+    // allocate memory for the sub arrays
+    int *L = new int[n1];
+    int *R = new int[n2];
+
+    /* Copy data to temp arrays L[] and R[] */
+    for (i = 0; i < n1; i++)  
+        L[i] = arr[l + i];  
+    for (j = 0; j < n2; j++)  
+        R[j] = arr[m + 1+ j];  
+
+    /* Merge the temp arrays back into arr[l..r]*/
+    i = 0; // Initial index of first subarray  
+    j = 0; // Initial index of second subarray  
+    k = l; // Initial index of merged subarray  
+    while (i < n1 && j < n2) {  
+        if (L[i] <= R[j]) {  
+            arr[k] = L[i];  
+            i++;  
+        }  
+        else {  
+            arr[k] = R[j];  
+            j++;  
+        }  
+        k++;  
+    }  
+
+    /* Copy the remaining elements of L[], if there are any */
+    while (i < n1) {  
+        arr[k] = L[i];  
+        i++;  
+        k++;  
+    }  
+
+    /* Copy the remaining elements of R[], if there  
+    are any */
+    while (j < n2) {  
+        arr[k] = R[j];  
+        j++;  
+        k++;  
+    }
+
+    // deallocate memory
+    delete[] L;
+    delete[] R;
+}  
+

It is a very efficient algorithm that needs extra memory to work. It has a time complexity of O(n*log(n)) and a space complexity of O(n). It is a very efficient algorithm, but it is not very simple. It is quite more complex than the previous algorithms. It is a divide and conquer algorithm, which means that it divides the problem in smaller problems and solves them. It divides the list in two halves, sorts them and then merges them. It does this recursively until it has a list of size 1, which is sorted. Then it merges the lists and returns the sorted list.

Quick sort

Quick sort is a divide and conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot. Here is the code:

// recursive quick sort
+void quickSort(int arr[], int low, int high) {  
+    if (low < high) {  
+        /* pi is partitioning index, arr[p] is now  
+        at right place */
+        int pi = partition(arr, low, high);  
+
+        // Separately sort elements before  
+        // partition and after partition  
+        quickSort(arr, low, pi - 1);  
+        quickSort(arr, pi + 1, high);  
+    }  
+}
+
+// partition function
+int partition (int arr[], int low, int high) {  
+    int pivot = arr[high]; // pivot  
+    int i = (low - 1); // Index of smaller element  
+
+    for (int j = low; j <= high- 1; j++) {  
+        // If current element is smaller than or  
+        // equal to pivot  
+        if (arr[j] <= pivot) {  
+            i++; // increment index of smaller element  
+            swap(&arr[i], &arr[j]);  
+        }  
+    }  
+    swap(&arr[i + 1], &arr[high]);  
+    return (i + 1);  
+}  
+

It is a very efficient algorithm that don't needs extra memory, which means it is in-place. In average, it can be as fast as mergesort with time complexity of O(n*log(n)), but in the worst case it can be as slow as O(n^2). But it is a better choice if you are not allowed to use extra memory. It is a divide and conquer algorithm, which means that it divides the problem in smaller problems and solves them. It selects a pivot and partitions the list around the pivot. It does this recursively until it has a list of size 1, which is sorted. Then it merges the lists and returns the sorted list.

Counting sort

Counting sort is a specialized algorithm for sorting numbers. It only works well if you have a small range of numbers. It counts the number of occurrences of each number and then uses the count to place the numbers in the right position. Here is the code:

// counting sort
+void countingSort(int arr[], int n) {  
+    // if the array has only one element, it is already sorted
+    if(n<=1)
+        return;
+
+    int max=arr[0];
+    int min[0];
+
+    // find the max and min number
+    for(int i=0; i<n; i++) {
+        if(arr[i]>max) {
+            max=arr[i];
+        }
+        if(arr[i]<min) {
+            min=arr[i];
+        }
+    }
+
+    // allocate memory for the count array
+    int *count = new int[max-min+1];
+
+    // initialize the count array
+    for(int i=0; i<max-min+1; i++) {
+        count[i]=0;
+    }
+
+    // count the number of occurrences of each number
+    for(int i=0; i<n; i++) {
+        count[arr[i]-min]++;
+    }
+
+    // place the numbers in the right position
+    int j=0;
+    for(int i=0; i<max-min+1; i++) {
+        while(count[i]>0) {
+            arr[j]=i+min;
+            j++;
+            count[i]--;
+        }
+    }
+
+    // deallocate memory
+    delete[] count;
+}
+

Counting sort is a very efficient sorting algorithm which do not rely on comparisons. It has a time complexity of O(n+k) where k is the range of numbers. Space complexity is O(k) which means it is not an in-place sorting algorithm. It is a very efficient algorithm, but it is not very simple. It counts the number of occurrences of each number and then uses the count to place the numbers in the right position.

Radix sort

Radix sort is a specialized algorithm for sorting numbers. It only works well if you have a small range of numbers. It sorts the numbers by their digits. Here is the code:

// Radix sort
+void radixSort(int arr[], int n) {
+    // if the array has only one element, return
+    if(n<=1)
+        return;
+
+    // initialize the max number as the first number. 
+    int max=arr[0];
+
+    // find the max number
+    for(int i=0; i<n; i++) {
+        if(arr[i]>max) {
+            max=arr[i];
+        }
+    }
+
+    // allocate memory for the count array
+    int *count = new int[10]; // 10 digits
+
+    // allocate memory for the output array
+    int *output = new int[n];
+
+    // do counting sort for every digit
+    for(int exp=1; max/exp>0; exp*=10) {
+        // initialize the count array
+        for(int i=0; i<10; i++) {
+            count[i]=0;
+        }
+
+        // count the number of occurrences of each number
+        for(int i=0; i<n; i++) {
+            count[(arr[i]/exp)%10]++;
+        }
+
+        // change count[i] so that count[i] now contains actual position of this digit in output[]
+        for(int i=1; i<10; i++) {
+            count[i]+=count[i-1];
+        }
+
+        // build the output array
+        for(int i=n-1; i>=0; i--) {
+            output[count[(arr[i]/exp)%10]-1]=arr[i];
+            count[(arr[i]/exp)%10]--;
+        }
+
+        // copy the output array to the input array
+        for(int i=0; i<n; i++) {
+            arr[i]=output[i];
+        }
+    }
+}
+

Radix sort is just a counting sort that is applied to every digit. It has a time complexity of O(n*k) where k is the number of digits.

Conclusion

This is the first time we will talk about efficiency, and for now on, you will start evaluating and taking care about your algorithms' efficiency. You will learn more about efficiency in the next semester and course when we cover data structures.

\ No newline at end of file diff --git a/intro/11-structs/index.html b/intro/11-structs/index.html new file mode 100644 index 00000000..b11fb00f --- /dev/null +++ b/intro/11-structs/index.html @@ -0,0 +1,12 @@ + Structs - Awesome GameDev Resources

Structs

Estimated time to read: 1 minute

wip

\ No newline at end of file diff --git a/intro/CMakeLists.txt b/intro/CMakeLists.txt new file mode 100644 index 00000000..520d80de --- /dev/null +++ b/intro/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(02-tooling) +add_subdirectory(03-datatypes) +add_subdirectory(04-conditionals) \ No newline at end of file diff --git a/intro/index.html b/intro/index.html new file mode 100644 index 00000000..a0f4f061 --- /dev/null +++ b/intro/index.html @@ -0,0 +1,12 @@ + Intro to Programming - Awesome GameDev Resources

Intro to Programming

Estimated time to read: 7 minutes

Learning Objectives

  • Understand the fundamental concepts of programming and computer science;
  • Practice how to solve problems programatically using C++;
  • Use tools to write and compile C++ programs;
  • Code, document, test, and implement a well-structured, robust computer program using the C++ programming language.
  • Write reusable modules (collections of functions).
  • Use version control to manage your code;
  • Use the debugger to find and fix bugs in your code;
  • Understand the basics of file input/output;
  • Work in groups to solve problems;

Learning Outcomes

  • Be able to understand computer science concepts and terminology;
  • To describe the basic components of a computer system and their functions;
  • Differentiate between the various types of programming languages;
  • To describe and use software tools in the programming process;
  • Use modern concepts and principles of C++ programming language;
  • To design, code, test, and debug a computer program using the C++ programming language;
  • To demonstrate an understanding of primitive data types, values, operators and expressions in C/C++;
  • Manage and manipulate files in C++;
  • Deliver a full working project collaboratively;

Schedule

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

Relevant dates for the Fall 2023 semester:

  • 09-13 Oct 2023 - Midterms Week
  • 20-24 Nov 2023 - Thanksgiving Break
  • 11-15 Dec 2023 - Finals Week
Week Date Topic
1 2023/08/28 1. Introduction, 2. Tools for first Program
2 2023/09/04 Data Types, Arithmetic Operations, Type conversion
3 2023/09/11 Conditionals, Boolean and Bitwise Operations
4 2023/09/18 Loops, for, while, goto and debugging
5 2023/09/25 Functions, Base Conversion, Pointers, Reference
6 2023/10/02 Streams, File IO
7 2023/10/09 Midterm
8 2023/10/16 Arrays, Vectors, String
9 2023/10/23 Recursion
10 2023/10/30 Sorting
11 2023/11/06 Structs, Unions, Enumerations
12 2023/11/13 Work sessions
13 2023/11/20 Thanks giving week
14 2023/11/27 Work sessions / Review
15 2023/12/04 Review / Presentations
16 2023/12/11 Finals

References

10th edition Gaddis, T. (2020) Starting out with C++. Early objects / Tony Gaddis, Judy Walters, Godfrey Muganda. Pearson Education, Inc. Available at: https://research-ebsco-com.cobalt.champlain.edu/linkprocessor/plink?id=047f7203-3c9c-399b-834f-42cdaac4c1da

9th edition Gaddis, T. (2017) Starting out with C++. Early objects / Tony Gaddis, Judy Walters, Godfrey Muganda. Pearson. Available at: https://discovery-ebsco-com.cobalt.champlain.edu/linkprocessor/plink?id=502e29d6-3b46-38ff-9dc2-65e79c81c29b

\ No newline at end of file diff --git a/introgameprog/02-GameDevTools/index.html b/introgameprog/02-GameDevTools/index.html new file mode 100644 index 00000000..78063d4c --- /dev/null +++ b/introgameprog/02-GameDevTools/index.html @@ -0,0 +1,12 @@ + Game Dev Tools - Awesome GameDev Resources

Game development tools

Estimated time to read: 7 minutes

There are plenty of tools available for game development. I dont want to cover all of them this is just a brief overview of the most common ones.

The most types of tools for developers are:

  • Game Engines
  • Game Development Frameworks / Libraries
  • Programming editors and IDEs

But there are other types of tools that are also important for game development:

  • 3D Modeling Tools
  • 2D Art and texture Tools
  • Sound and Music Tools
  • Planning and Management Tools
  • Marketing and Monetization Tools
  • Testing Tools
  • Publishing and Distribution Tools and platforms
  • Analytics, metrics, remote config and A/B Tools

Game Engines

The powerhouses of game development, game engines are the software that packs lots of tools and features needed to create a game. They are the most important tool in a game developer's arsenal. Ex.: Unity3D, Unreal Engine, and Godot.

You might understand a game engine as the "orchestrator of the game".

Note

Not all game engines provides embedded visual editors (ex.: Ogre3D), some of them are just a bunch of libraries and tools nicely integrated that you can use to create your game.

Instead of listing all the game engines, I suggest you to search for the most popular ones and try them out. I suggest going to search engines and type some of these queries:

  • "Game engine landscape"
  • "Top game engines"
  • "Game engine market infographic"
  • "Game engine popularity"
  • "Game engine comparison"

If you are a open-source enthusiast, try to explore game engines on github. A nice search query involves the word "game engine" and the word "awesome", but here goes some links to help you:

Game Frameworks / Libraries

Sometimes you don't need a full game engine, or you need to create something that no other one provides. In this case, you can use a game development framework or library. Ex.: SDL3, LibGDX, Phaser, and others.

If you follow this path, you will have more control over your game, but you will need to code more things that are already done in game engines.

I am afraid there are so many frameworks and libraries that I can't list them all here. But you can search for them using the same queries I suggested for game engines, but replacing the word "engine" with "framework" or "library", you will get amazed by the amount of tools available. Try it!

Assignment

  1. Create an account on GitHub. If you don't want to expose yourself publicly, create a new account with a nickname unrelated to your real name. You can use any AI tool to help brainstorm a nickname for you. Extra: apply to GitHub Student Pack.
  2. Create a Repository on GitHub. The name of the repo should have "Awesome" somewhere in the name, and it should be related to game development tools. Ex.: "Awesome-GameDev-Tools". This will optmize SEO and make your repository more visible to others.
  3. Probably the repo will already have a README.md file, if not, create a README.md file on the root of your repo. Write a brief introduction to the repository and list some of the tools you are planning to cover.
  4. You should research and list at least 10 tools that you think are important for game development. Please explore others tools than the main-stream. Describe briefly each tool and provide a link to the tool's website or repository.
  5. You will present some of them in class, so be creative and avoid listing tools that everyone knows.
\ No newline at end of file diff --git a/introgameprog/index.html b/introgameprog/index.html new file mode 100644 index 00000000..991c034e --- /dev/null +++ b/introgameprog/index.html @@ -0,0 +1,12 @@ + Introduction to Game Programming - Syllabus - Awesome GameDev Resources

Introduction to Game Programming - Syllabus

Estimated time to read: 13 minutes

Students will be introduced to and familiarized with their roles as Game Programmers. The course explores the various disciplines and vocations within game programming, provides an overview of the skills that make a game programmer successful, and presents both industry and academic contexts for their duties. Through hands-on projects using modern game technology, students will gain practical experience in their craft. source

Requirements

No requirements

Textbook

  • No text books

Student-centered Learning Outcomes

Bloom's Taxonomy

Bloom's Taxonomy on Learning Outcomes

Upon completion of the Intro to game programming, students should be able to:

Objective Outcomes

  • Understanding Game Development Roles: Students will be able to identify and describe the various disciplines and vocations within game programming, including different positions and fields within the industry.
  • Exploration of Game Development Tools: Students will gain familiarity with modern game development tools, including hands-on experience with game engines like Unity.
  • Historical and Industry Contexts: Students will understand the history of game development and current industry trends, challenges, and issues, enabling them to contextualize their work within the broader landscape of the game development industry.
  • Practical Application through Projects: Students will develop practical skills by working on game development projects, including prototyping, brainstorming, quality assurance (QA), and testing.
  • Effective Communication and Presentation: Students will practice and demonstrate their ability to effectively communicate and present their ideas and projects, both in written and oral formats.
  • Insight into Game Development Success Factors: Students will learn about the key skills and attributes that contribute to success in game development, including collaboration, creativity, and technical proficiency.
  • Interaction with Industry Professionals: Through interviews and discussions with game developers, students will gain insights into the day-to-day responsibilities and career paths of professionals in the game development industry.
  • Introduction to Game Production: Students will be introduced to the basics of game production, learning how to manage and contribute to game development projects from concept to completion.

Late policy

Every day an assignment is late your maximum grade will be reduced by 1% up to 25 days, after that you will receive a flat 25% penalty.

My goal is to grade the assignments no later than 1 week after submission, but in exceptional cases where I am struggling with lots of submissions, it could take 2 weeks maximum (in my career this has happened twice). Late submissions will be graded only once I finish grading all the others.

If you have any accommodations and want to use your rights, or if you are facing any personal issues (no need to state what it is), I will grant extra time or grade fairly only if you send a comment on Canvas in the assignment before the deadline. Feel free to book meetings with me if you need to talk about it.

DEI & Teaching Statement

  • I am a autistic L1 person and I am doing my best to be a good teacher for you;
  • I am from Brazil and we are pretty diverse people, I will treat everyone with respect and I expect the same from you;
  • I can clearly understand many of your struggles, because I face lots of learning issues too, but sometimes my empathy might run out, and you will have to help me understand your issues so I can effectively help you;
  • Please be patient with me, and I will be patient with you in return. I am always open to listen to you and help you succeed;
  • I am very good at 1-1 support, so you are welcome to book weekly meetings with me to help you;
  • I am a very open person, so you can ask me anything. I will not answer everything, but I will try to help you to find the answers;
  • If you feel that you are failing, please reach out to me, remember: I want you to succeed. Allow me to create contingency plans for you.

Schedule for Fall 2024

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Event Date
Classes Begin Aug. 26
Add/Drop Aug. 26 - 30
No Classes - College remains open Sept. 20
Indigenous Peoples Day Holiday Observance Oct. 14
Registration for Spring Classes Oct. 28 - Nov. 8
Last Day to Withdraw Nov. 8
Thanksgiving Break Nov. 25 - Nov. 29
Last Day of Classes Dec. 6
Finals Dec. 9 - Dec. 13
Winter Break Dec. 16 - Jan. 10

Note

This schedule is based on other's works, specially Eric Winebredder, Scott Barret and Dean Lawson. I am very grateful for their work and I am trying to adapt it to my own style. Please add them to your linkedin network, follow their work and say thanks to them for me!

  • 🔰 Week 1


    • Week 1. 2024/08/26
    • Topics:
      • Syllabus, Icebreakers.
      • Success in Game Development
    • Assignment:
    • Interview a game programmer
  • Week 2


    • Week 2. 2024/09/02
    • Topics:
      • Game Dev History
    • Assignment: Game Tools Exploration
  • 🚆 Week 3


    • Week 3. 2024/09/09
    • Topic: Game Development Fields
    • Assignment: Job Hunt
  • Week 4


    • Week 4. 2024/09/16
    • Topic: Game Industry Issues
    • Assignment: Research on Game Industry Issues
  • Week 5


    • Week 5. 2024/09/23
    • Topic: Game Issues Work
    • Assignment: Game Issues Research
  • Week 6


    • Week 6. 2024/09/30
    • Topic: Game Issues Presentations
    • Assignment: Game Issues Presentation
  • Week 7


    • Week 7. 2024/10/07
    • Topic: Unity + Git
    • Assignment:
      • Repo setup
      • Git merge check
  • Week 8


    • Week 8. 2024/10/14
    • Topic: Unity + Git
    • Assignment: Simple Unity Project
  • 🧠 Week 9


    • Week 9. 2024/10/21
    • Topic:
      • Intro to Game Production Pipeline
      • Tools for Brainstorming and Planning
    • Assignment:
      • Idea Prototyping
      • Game Idea Presentation
  • 💡 Week 10


    • Week 10. 2024/10/28
    • Topic: Ideation Presentations
    • Assignment: Game Prototype
  • Week 11


    • Week 11. 2024/11/04
    • Topic: Work sessions
    • Assignment: Game Prototype Checkpoint
  • Week 12


    • Week 12. 2024/11/11
    • Topic: QA Testing
    • Assignment: Final Project Work
  • 🧪 Week 13


    • Week 13. 2024/11/18
    • Topic: QA Testing
    • Assignment: Final Project
  • 🚫 Week 14


    • Week 14. 2024/11/25
    • Topic: BREAK
  • Week 15


    • Week 15. 2024/12/02
    • Topic: QA, Work sessions, How to publish
    • Assignment: Final Project Presentations
  • Finals


    • Week 16. 2024/12/09
    • Topic: Presentations
\ No newline at end of file diff --git a/javascripts/mathjax.js b/javascripts/mathjax.js new file mode 100644 index 00000000..a80ddbff --- /dev/null +++ b/javascripts/mathjax.js @@ -0,0 +1,16 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } +}; + +document$.subscribe(() => { + MathJax.typesetPromise() +}) \ No newline at end of file diff --git a/js/mkdocs-charts-plugin.js b/js/mkdocs-charts-plugin.js new file mode 100644 index 00000000..40177004 --- /dev/null +++ b/js/mkdocs-charts-plugin.js @@ -0,0 +1,257 @@ +// Adapted from https://github.com/koaning/justcharts/blob/main/justcharts.js +async function fetchSchema(url){ + var resp = await fetch(url); + var schema = await resp.json(); + return schema +} + +function checkNested(obj /*, level1, level2, ... levelN*/) { + var args = Array.prototype.slice.call(arguments, 1); + + for (var i = 0; i < args.length; i++) { + if (!obj || !obj.hasOwnProperty(args[i])) { + return false; + } + obj = obj[args[i]]; + } + return true; + } + + +function classnameInParents(el, classname) { + // check if class name in any parents + while (el.parentNode) { + el = el.parentNode; + if (el.classList === undefined) { + continue; + } + if (el.classList.contains(classname) ){ + return true; + } + } + return false; +} + +function findElementInParents(el, classname) { + while (el.parentNode) { + el = el.parentNode; + if (el.classList === undefined) { + continue; + } + if (el.classList.contains(classname) ){ + return el; + } + } + return null; +} + +function findProperChartWidth(el) { + + // mkdocs-material theme uses 'md-content' + var parent = findElementInParents(el, "md-content") + + // mkdocs theme uses 'col-md-9' + if (parent === undefined || parent == null) { + var parent = findElementInParents(el, "col-md-9") + } + if (parent === undefined || parent == null) { + // we can't find a suitable content parent + // 800 width is a good default + return '800' + } else { + // Use full width of parent + // Should bparent.offsetWidth - parseFloat(computedStyle.paddingLeft) - parseFloat(computedStyle.paddingRight) e equilavent to width: 100% + computedStyle = getComputedStyle(parent) + return parent.offsetWidth - parseFloat(computedStyle.paddingLeft) - parseFloat(computedStyle.paddingRight) + } +} + +function updateURL(url) { + + // Strip anchor from URL if present + let anchorIndex = url.indexOf('#'); + if (anchorIndex !== -1) { + url = url.substring(0, anchorIndex); + } + + // detect if absolute URL: + // credits https://stackoverflow.com/a/19709846 + var r = new RegExp('^(?:[a-z]+:)?//', 'i'); + if (r.test(url)) { + return url; + } + + // If 'use_data_path' is set to true + // schema and data urls are relative to + // 'data_path', not the to current page + // We need to update the specified URL + // to point to the actual location relative to current page + // Example: + // Actual location data file: docs/assets/data.csv + // Page: docs/folder/page.md + // data url in page's schema: assets/data.csv + // data_path in plugin settings: "" + // use_data_path in plugin settings: True + // path_to_homepage: ".." (this was detected in plugin on_post_page() event) + // output url: "../assets/data.csv" + if (mkdocs_chart_plugin['use_data_path'] == "True") { + let new_url = window.location.href + + // Strip anchor from URL if present + let anchorIndex = new_url.indexOf('#'); + if (anchorIndex !== -1) { + new_url = new_url.substring(0, anchorIndex); + } + + new_url = new_url.endsWith('/') ? new_url.slice(0, -1) : new_url; + + if (mkdocs_chart_plugin['path_to_homepage'] != "") { + new_url += "/" + mkdocs_chart_plugin['path_to_homepage'] + } + + new_url = new_url.endsWith('/') ? new_url.slice(0, -1) : new_url; + new_url += "/" + url + new_url = new_url.endsWith('/') ? new_url.slice(0, -1) : new_url; + + if (mkdocs_chart_plugin['data_path'] != "") { + new_url += "/" + mkdocs_chart_plugin['data_path'] + } + + return new_url + } + return url; +} + +var vegalite_charts = []; + +function embedChart(block, schema) { + + // Make sure the schema is specified + let baseSchema = { + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + } + schema = Object.assign({}, baseSchema, schema); + + // If width is not set at all, + // default is set to 'container' + // Note we inserted .. + // So 'container' will use 100% width + if (!('width' in schema)) { + schema.width = mkdocs_chart_plugin['vega_width'] + } + + // Set default height if not specified + // if (!('height' in schema)) { + // schema.height = mkdocs_chart_plugin['default_height'] + // } + + // charts widths are screwed in content tabs (thinks its zero width) + // https://squidfunk.github.io/mkdocs-material/reference/content-tabs/?h= + // we need to set an explicit, absolute width in those cases + // detect if chart is in tabbed-content: + if (classnameInParents(block, "tabbed-content")) { + var chart_width = schema.width || 'notset'; + if (isNaN(chart_width)) { + schema.width = findProperChartWidth(block); + } + } + + // Update URL if 'use_data_path' is configured + if (schema?.data?.url !== undefined) { + schema.data.url = updateURL(schema.data.url) + } + if (schema?.spec?.data?.url !== undefined) { + schema.spec.data.url = updateURL(schema.spec.data.url) + } + // see docs/assets/data/geo_choropleth.json for example + if (schema.transform) { + for (const t of schema.transform) { + if (t?.from?.data?.url !== undefined) { + t.from.data.url = updateURL(t.from.data.url) + } + } + } + + + // Save the block and schema + // This way we can re-render the block + // in a different theme + vegalite_charts.push({'block' : block, 'schema': schema}); + + // mkdocs-material has a dark mode + // detect which one is being used + var theme = (document.querySelector('body').getAttribute('data-md-color-scheme') == 'slate') ? mkdocs_chart_plugin['vega_theme_dark'] : mkdocs_chart_plugin['vega_theme']; + + // Render the chart + vegaEmbed(block, schema, { + actions: false, + "theme": theme, + "renderer": mkdocs_chart_plugin['vega_renderer'] + }); +} + +// Adapted from +// https://facelessuser.github.io/pymdown-extensions/extensions/superfences/#uml-diagram-example +// https://github.com/koaning/justcharts/blob/main/justcharts.js +const chartplugin = className => { + + // Find all of our vegalite sources and render them. + const blocks = document.querySelectorAll('vegachart'); + + for (let i = 0; i < blocks.length; i++) { + + const block = blocks[i] + const block_json = JSON.parse(block.textContent); + + // get the vegalite JSON + if ('schema-url' in block_json) { + + var url = updateURL(block_json['schema-url']) + fetchSchema(url).then( + schema => embedChart(block, schema) + ); + } else { + embedChart(block, block_json); + } + + } + } + + +// mkdocs-material has a dark mode including a toggle +// We should watch when dark mode changes and update charts accordingly + +var bodyelement = document.querySelector('body'); +var observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + if (mutation.type === "attributes") { + + if (mutation.attributeName == "data-md-color-scheme") { + + var theme = (bodyelement.getAttribute('data-md-color-scheme') == 'slate') ? mkdocs_chart_plugin['vega_theme_dark'] : mkdocs_chart_plugin['vega_theme']; + for (let i = 0; i < vegalite_charts.length; i++) { + vegaEmbed(vegalite_charts[i].block, vegalite_charts[i].schema, { + actions: false, + "theme": theme, + "renderer": mkdocs_chart_plugin['vega_renderer'] + }); + } + } + + } + }); + }); +observer.observe(bodyelement, { +attributes: true //configure it to listen to attribute changes +}); + + +// Load when DOM ready +if (typeof document$ !== "undefined") { + // compatibility with mkdocs-material's instant loading feature + document$.subscribe(function() { + chartplugin("vegalite") + }) +} else { + document.addEventListener("DOMContentLoaded", () => {chartplugin("vegalite")}) +} diff --git a/portfolio/01-introduction/index.html b/portfolio/01-introduction/index.html new file mode 100644 index 00000000..dba66104 --- /dev/null +++ b/portfolio/01-introduction/index.html @@ -0,0 +1,12 @@ + Introduction - Awesome GameDev Resources

Introduction

Estimated time to read: 14 minutes

A game developer portfolio is a collection of materials that showcase a game developer's skills, experience, and accomplishments. It is typically used by game developers to demonstrate their abilities to potential employers, clients, or partners, and may include a variety of materials such as:

  • A resume or CV: This should highlight your education, work experience, and skills relevant to game development.
  • Examples of your work: This can include demos, prototypes, or completed games that you have developed or contributed to. It's a good idea to include links to any online versions of your work, as well as screenshots or video trailers.
  • A portfolio website: Many game developers choose to create a website specifically for their portfolio, which can include additional information about their skills and experience, as well as links to their work.
  • Blogs, articles, or other writing: If you have written about game development or related topics, you may want to include these in your portfolio to show your knowledge and expertise.
  • Testimonials or references: Including positive feedback from clients or colleagues can help to demonstrate the quality of your work.

Overall, a game developer portfolio should be designed to demonstrate your abilities and accomplishments in a clear and concise way, and should be tailored to the specific needs and goals of the person or organization you are presenting it to.

Building a portfolio is not only about you, it is about making the life easier of the ones interested on you by giving insights if they should hire you, follow you or anything else. In order to make people understand you, you have to know yourself better.

solo_gamedev_be_like.png

Who are you, what you excel and what do you enjoy doing?

In your portfolio, you will have to express yourself in a way that others can understand who you are, and it can be challenging for some. In order do help you discover who you are, what you excel, and what do you really enjoy doing. I will be briefly vague here to point some emotional support and reasoning to help you answer the question. If you are clear about that, please skip this entire section. Here goes a small amount of advices I wish I have heard when I was young.

Ikigai
Note

The above image links to a very good reference to understand the drives that you should be aware while taking decisions on your future career. Visit it.

You are a complex being and hard to define. I know. It is hard to put yourself in a frame or box, but this process is relevant to make the life of the others to evaluate if they want more you or not. If for some reason a person is reading your portfolio, it means that you are ahead of the others, so you must respect their time and goals while they are reading your content.

What you do, do not define what you are, you can even work with something you dont love as long it is part of a bigger plan. Given that, you have to know how to differentiate yourself from your work while respecting your feelings. The sweet spot is when you mix who you are with what you do, and you have nice feelings about it. But this can be hard to achieve and require maturity to mix things. If you dont have a clear understand of those aspects of yourself, you will be subjected to be exploited by bad companies and managers.

It is totally fine try to excel some job you are not passionate. You just have to find means to make your time doing it as enjoyable as possible. In the end of the journey it will slowly become something you can be proud of, and you will become a different person than the one you are now. Understanding this kind of mentality will help you endure more and be more resilient to problems.

Keep track of your progress towards your goal. First of all, have a clear goal, so you can build a path to it. Otherwise, any path would sound just like any other apathetic path. Having a clear goal will make your path shine and easy to choose. It will help you in difficult moments where you feel uncomfortable by being just a small piece of a machinery. You will be able to act as part of machine while you need to achieve your goal as a necessary step.

Focus on always keep track on your evolution on your journey to excellence. Don't compare too much yourself to the others, everyone is facing a different journey and everyone took different paths in their career that probably you didn't have the option to chose in the past. But you cannot be uncritical either, you have to analyse your progress and check if your current path is making you life good, you have to take a decision to change the plan or even the goal with the new information you learned through the current path you are pursuing.

In other point of view, you wont start your career as senior developer, so you have to build your own path. Making mistakes is part of the process, and that is the reason you will be gradually exposed to big things. You should accept yourself, don't push too hard, and do some basic stuff. Just accept the challenges of doing something not fancy, but relevant to build your career.

Define and state your mission and goal

  • Are you a generalist or a specialist type?
  • What position you are looking for?
  • What kind of person you want to become?

Gather information

In order to build a good portfolio, you will need to gather information about yourself and your work. In the process you will discover yourself. It will feels like looking to a mirror for the first time.

If you didnt published yot your projects on itchio, github, or any other platform, now it is a good moment for doing it. Pay attention that if you are going to share your code publicly, you have to avoid sharing content that do not belong to you. In other words, avoid copyright infringements.

Proof of your accomplishments

It is a good practice to always take screenshots, use web archive or any means to prove what you are stating. Some games got lost in time, they die or become unavailable in the long term.

Personal advice

In my case, we developed a very successful game in the past, and because of some problems with investors and judicial dispute, we had to shut down the game. But it was one of the most successful games in that year, it was nominated to Unity Awards and it was the most downloaded racing game. The only things that I can showcase now are print-screens, recorded videos and web-archive pages. So it is something that can make you survive the questions.

Videos, photos, or lightweight web builds

A good way to express your work is to show it in a form of videos, or photos. If your game is small enough to be embedded, or you can strip the most relevant part of it and built for web(webgl, wasm etc), try to publish the relevant part of it online, but do not over-do it, because it will take too much time to craft a good interaction.

Homework

  1. Define your domain name;
    • I usually search domains here and buy on wherever is cheaper, usually here
  2. Find a good portfolio to follow;
  3. Design the scaffold / wireframe of what you want to show;
  4. Gather the data you want to show;
  5. Think on catchphrases and call to actions.
\ No newline at end of file diff --git a/portfolio/01-introduction/solo_gamedev_be_like.png b/portfolio/01-introduction/solo_gamedev_be_like.png new file mode 100644 index 00000000..5893ab36 Binary files /dev/null and b/portfolio/01-introduction/solo_gamedev_be_like.png differ diff --git a/portfolio/02-cases/example.com/index.html b/portfolio/02-cases/example.com/index.html new file mode 100644 index 00000000..cd1bb843 --- /dev/null +++ b/portfolio/02-cases/example.com/index.html @@ -0,0 +1,12 @@ + Case Study Example - Awesome GameDev Resources

Index

Estimated time to read: 2 minutes

Assessment 1

Summary

  • The date the evaluation happened
  • The portfolio evaluated
  • Briefing

Strength

What things you judge as good and you are aiming to follow and target. Add images as reference using print-screens uploaded to image hosting services such as imgur or others;

Improvements

  • What things you judge that needs attention or should be improved?
  • What questions you would ask this person?

Best fit

  • Why you would hire the owner of the portfolio?
  • For what kind of task?
  • What position?
  • How do you see this person interacting with others?

General considerations

  • Just add some final consideration for the portfolio owner;
  • If possible, send a message to one of its communication channels informing your assessment;

Assessment 2

The other student willing to do multiple assessment for the same portfolio, just create an entry in the index following the same structure and same the assessment differently in this case, we put number 2. And use the same structure on the 1.

\ No newline at end of file diff --git a/portfolio/02-cases/index.html b/portfolio/02-cases/index.html new file mode 100644 index 00000000..8ed7541b --- /dev/null +++ b/portfolio/02-cases/index.html @@ -0,0 +1,12 @@ + Case Study - Awesome GameDev Resources

Case Study

Estimated time to read: 9 minutes

Index

This class will be focused in planning, portfolio evaluation, github processes, ci/cd and in-class activities.

Activity 1

Start setting up your Github pages. We are going to use github pages mostly for two intentions: Webpage hosting for your portfolio and Demo project hosting.

Webpage

For your webpage, you can develop something from ground up using your preferred web framework and we are going to show you how to do it, but the fastest way is to just follow any template. Here goes a bunch of open sourced developer portfolios you can fork and modify for your intent. https://github.com/topics/developer-portfolio?l=html . Try to take a look on them and check if you want to fork any of them. So in this activity you will have to fork and try to run a clone of a portfolio you like just to got into some action and discover how things work.

  1. Find a developer portfolio on github
  2. Fork it
  3. Clone in your machine
  4. Make some changes
  5. Build it
  6. Deploy it to gh-pages either via automated ci/cd or via publishing a build from a empty branch or the main one

Demo reels

For project demo, game, or whatever interaction you want to allow the user to do, I built some boilerplates for you. Later on, you will be able to embed those webgl/html5 builds into your portfolio, so it is a good moment for you to start doing it now. As extras, optionally you can add badges for your repo from here: https://shields.io/

SDL2

In order to showcase your ability to build something from ground up, this repo holds a boilerplate with C++, SDL2, IMGUI, SDL2IMAGE, SDL2TTF, SDL2MIXER, CI/CD automation for automatic deployment: https://github.com/InfiniBrains/SDL2-CPM-CMake-Example

  1. fork it
  2. go to the repo settings, actions, general, in the bottom, enable workflow permission, read and write, save
  3. run github action at least once
  4. enable actions and automatic page deployment from a branch gh-pages

AI + SDL2

If you enjoy AI programming and want to test yourself, you can try forking this repo and implement what is inside the examples folder https://github.com/InfiniBrains/mobagen

  1. fork it
  2. run github action at least once
  3. enable actions and automatic page deployment from a branch gh-pages

Unity

If you want to showcase your ability with Untiy, you can follow this boilerplate to have an automatic build set up. https://github.com/InfiniBrains/UnityBoilerplate

  1. Fork it
  2. run github action for getting an unit licence at least once
  3. grab the generated file, and upload it to https://license.unity3d.com/manual
  4. get the signed licence and copy the text content to your clipboard
  5. go to your repo settings, security, secrets and variables, actions and setup a new repository secret with the name 'UNITY_LICENSE' and the content from your clipboard
  6. go to the repo settings, actions, general, in the bottom, enable workflow permission, read and write, save
  7. run the main action
  8. enable actions and automatic page deployment from a branch gh-pages
  9. edit webgl template with your logo or image

Activity 2

This class is totally up to you. Here goes what you should do in class and finish at home. The idea is for you to feel a whole process on how to create merge and pull requests to a public repo.

  1. Search a good portfolio published online
  2. use Twitter, LinkedIn, Google to search for good game developer portfolios;
  3. another good query on google would be "awesome developer portfolio", or "curated list of developer portfolios" try it!. Example: https://github.com/emmabostian/developer-portfolios
  4. You can use this time to search a good and open sourced portfolio to fork and start your own based on other. https://github.com/topics/developer-portfolio
  5. Fork this repo
  6. Create a markdown file in this folder with a meaningful name about the benchmarked repository.
  7. Follow this example
  8. The file name should be the website domain name followed by .md
  9. If another student is aiming to evaluate the same portfolio, just edit the file adding your evaluation to the text.
  10. Your file should contain:
  11. A summary
  12. The portfolio evaluated
  13. The date the evaluation happened
  14. Print-screens uploaded to image hosting services such as imgur or others
  15. What things you judge as good and you are aiming to follow and target
  16. What things you judge that needs attention and should be improved
  17. Why you would hire the owner of the portfolio
  18. General considerations
  19. Edit this file on github to link your work here if you want to showcase it here.
  20. Be Kind and constructive
  21. Send a push request

Considerations

  • The portfolios evaluated here are just opinions

Evaluated Portfolios

\ No newline at end of file diff --git a/portfolio/03-structure/index.html b/portfolio/03-structure/index.html new file mode 100644 index 00000000..24462fb8 --- /dev/null +++ b/portfolio/03-structure/index.html @@ -0,0 +1,12 @@ + Portfolio Structure - Awesome GameDev Resources

Game Developer Portfolio Structure

Estimated time to read: 10 minutes

Create a single page app containing most of these features listed here.

Head / Summary

Chose carefully what to you use as a head of your page. It is the first thing a person reads. It can be an impactful message, a headline, personal statement, background video or very limited interactive section.

Note

Avoid bravado. You can be bold without being naive. Let the bravado statements for when you become a senior. If you write bravados right in the begining of your portifolio and you are still a junior, you are just communicating that you will be hard to work with. A senior developer reading your portfolio is more interested in developers eager to learn, humble, and looking for guidance so they will have a easier life hiring you.

About

This is a summary obout yourself, be brief and achievement oriented. What and who you are. Contact info via social medias. State your working status and target. If you are a narrative centred person, you can create something fancy here, but dont over-do, less is more!

Showcase

  • Projects
  • Ability and versatility
  • Community Contributions

You can showcase your personal work, a job you make for a client(if authorized).

Projects

It is a good practice to showcase only the best works you made. You might find interesting to add more than 5, but there are chances of your reader clicking exactly on the worst one and have a bad first impression of you. In your showcase section, avoid showcasing bad work. Invite some of your friends to help you select the best ones to showcase.

Ability

Avoid using percentage graphs to showcase your proficiency on specific tech stack or tool. The main reason is: how do you grade of your ability as 80%, 100% or 30%? Worse than that, how can the reader be sure of that? If you want to do that, it is better to apply for certificates, there are plenty on linkedin or specialized sites.

Achievements

  • List key achievements and skills. Dont use any kind of grading
  • Education
  • Testimonials or anything to prove your skills and capacity

Project Details

  • You should create a way to explain more about what is showcased. Ex.: redirect the user to the project description page, or open a modal

Blog

  • Featured posts/content and call to action to read your ongoing content production
  • Explain your process in designing a game or piece of software
  • Explain some interesting details you learn or describe your knowledge explorations.

Contact

Explicitly state what people should expect if they contact you and what they can expect from your return. Ex.: If you aim to be a freelance, state your offer and ask for them to briefly state the job activity, time frame and the rate they are willing to pay. If you are looking for a full-time position, the most common way is to just share your email, so they can contact you.

Another option is to list all of your social medias, but dont overuse this. Nowadays we have a bunch of them, so if you list all of them, there is chances, you are not active there and the link will guide the reader to a empty and haunted house and they will not engage.

General tips

  • Keep the Target Audience in Mind
    • Take Advantage of Your Homepage
    • Make Your Portfolio Scannable
    • Minimize Clicks
  • Remember UX and UI
    • Go Mobile or Go Home
    • Optimize Website Performance
    • Remember Accessibility
  • Showcase Your Best Work and Skills
    • Share Your Code and Live Projects
    • OR Provide Code Samples and GIFs
    • Boast Freelance and Personal Projects
    • BUT Be Selective
    • Prove that You Are on The Same Page
  • Show Your Personality
    • Use Custom Domain
    • Make Use of Introductory Statement
    • Use Your Tone of Voice
    • Share Your Motivation (Optional)
  • Maintain Personal Brand
    • Keep Portfolio Up-to-Date
    • Include Testimonials
  • Encourage Communication
    • Call-to-action button or link to contact

reference

Homework

\ No newline at end of file diff --git a/portfolio/04-communication/img.png b/portfolio/04-communication/img.png new file mode 100644 index 00000000..7c75d0e2 Binary files /dev/null and b/portfolio/04-communication/img.png differ diff --git a/portfolio/04-communication/index.html b/portfolio/04-communication/index.html new file mode 100644 index 00000000..fb2ebb41 --- /dev/null +++ b/portfolio/04-communication/index.html @@ -0,0 +1,12 @@ + Communication - Awesome GameDev Resources

Communication

Estimated time to read: 12 minutes

Having a well-written and organized portfolio is important for any game developer, as it can help them stand out from the competition and demonstrate their skills and experience to potential employers. A good portfolio should clearly communicate the developer's strengths and accomplishments, and should be tailored to the specific needs and expectations of the audience.

Effective communication is crucial in building a strong game developer portfolio, as it allows the developer to clearly convey their skills and experiences to potential employers. A portfolio that is well-written and easy to understand will be more effective at convincing an employer to hire the developer, while a poorly written or poorly organized portfolio may have the opposite effect.

Audience

In general your portfolio will be read by:

img.png

Human Resources

If you are applying for a big tech company, chances are your submission won't be read by a tech person the first human triage. So in order to pass this first filter, you have to be generic and precise. They are often very busy evaluating multiple applications, and probably they will spend 30-60 seconds before making the decision about moving forward in the process or not. Your portfolio will need to catch their attention and communicate clearly your fit, passion and ability in a short time frame.

Software Developer Managers

In contrast with HR, developer managers probably will not be shocked with any fancy stuff(such as full page pre-loaders) you add to your portfolio, so be concise and straight to the point, because most of them already know all the contents. From all of your portfolio readers, they are one of the most critique of your job.

In another hand, usually developers do not look for programming language fit, frameworks or tools you use. They are more interested if you will be able to learn and execute the job in a meaningful time. So try to express yourself in a way that showcase your ability to solve problems, no matter what problem is, they are mostly curious on how to solve complex problem by framing the problem in another way or how to be innovative.

What they look for

The following metrics can be evaluated by reading your portfolio, interviews or tests. The most common evaluation metrics they made are:

  • Position Fit
    • They are going to search if your portfolio showcase experience in the same area of what they are looking for the specific position they received. Usually they will look for specific keywords for the requirements list;
  • Company fit
  • Passion
    • Passionate developers tend to express projects they are proud of. The description of the projects are mostly achievement-based. Ex.: more than X million downloads. This example showcases that you were part of something huge, and it is easily understandable.
    • There is a high correlation on high performant people that they usually shine in side-projects or even hobbies. So they look for it. Ex.: Google encourages employees to devote 20% of their time to hobbies or skill-building.
  • Competence
    • They need to evaluate if you are really able to solve the problem properly, in a meaningful time, and in a team. You have to describe which tools, tech stack and how you glue everything in order to solve the problem. Be assured you are correctly expressing yourself here, because it is one of the central part that is not taken superficially.
  • Innovation and Curiosity
    • Innovative developers solve problems out of the box. It doesn't matter how complex the problem is, but if you solve in a innovative way, reframe it or do any magic to solve it, chances are to have good points here;
    • Good companies incentives research and test new stuff. So they usually like to see your deliverables with new bleeding-edge technology tools.
  • Proactiveness
    • Usually the more proactive developers tend to have more leadership positions. So if you want to give the readers a glimpse of your ability in this area, a good place to showcase that is in project description section. Express problems that arise and how do you manage that before it become a real problem.
  • Learner
    • It is good to be always tuned with the current evolution of the technology, so try to keep the education section always updated with some courses or publish blog posts about some new tech.
  • Thinking big / Thoughtfulness / Risk management
    • They are going to look for your ability to think big, and how you manage risks. So if you have a project that you had to manage risks, or think big, it is a good place to showcase that.
    • Expose cases where you had to manage risks, or think big, and how you manage that. What you learned in the process trying to achieve bigger goals.

In class activities

1. Self-Reflection on the audience

Try to look at your portfolio from the perspective of the audience. What are the strengths and weaknesses of your portfolio? What are the areas that you need to improve in order to better communicate your skills and experiences to potential employers?

2. Mock interviews

Pair up with a colleague and find some common questions that company usually asks. You can find some of them here. Then, take turns interviewing each other and providing feedback on how well you communicated your skills and experiences.

Homework

\ No newline at end of file diff --git a/portfolio/05-strategy/index.html b/portfolio/05-strategy/index.html new file mode 100644 index 00000000..9fdc04ac --- /dev/null +++ b/portfolio/05-strategy/index.html @@ -0,0 +1,14 @@ + Strategy - Awesome GameDev Resources

Strategies to get hired

Estimated time to read: 13 minutes

Strategies for your portfolio

Ask some questions for ChatGPT. Here goes a sample extracted from this prompt:

Create a strategy to get hired on a AAA game studio like COMPANY_NAME as a POSITION_NAME
+
  • Develop the right skills: The first step to getting hired in a AAA game studio is to develop the right skills for the job. Start by researching the job positions in the studio and look for the required skills, experience, and qualifications. Then, focus on building those skills through relevant education, training, and projects. You can also take courses, attend workshops or conferences, and create a portfolio of your work to showcase your abilities.
  • Network with industry professionals: Networking with industry professionals can help you gain exposure and insights into the game development industry. Attend industry events, join online forums, participate in game development communities, and reach out to professionals in the field to build relationships. You can also consider working on collaborative projects with other game developers to expand your network.
  • Stay up-to-date with industry trends: Keeping up with the latest trends and news in the gaming industry can help you stay ahead of the game and impress your potential employers. Read industry blogs, participate in online discussions, follow industry influencers on social media, and stay up-to-date with the latest game releases to show that you are knowledgeable and passionate about the industry.
  • Research the game studio: Before applying for a job, research the game studio to learn about their culture, values, and work environment. Look for information about their current projects, the team structure, and the company's mission statement. This will help you tailor your resume and cover letter to match the company's requirements and demonstrate that you are a good fit for the team.
  • Apply for internships: Consider applying for internships in a AAA game studio. This is an excellent opportunity to gain industry experience and build your skills. Even if the internship is unpaid, the experience and contacts you gain could be invaluable for your future career.
  • Prepare for the interview: Once you get an interview, make sure to prepare thoroughly. Research common interview questions and practice your responses. Be ready to talk about your experience, skills, and passion for game development. Also, prepare questions to ask the interviewer about the company and the job position to show your interest and enthusiasm.
Write a strategy to get hired as a Game Programmer in a Indie Game Studio
+
  • Develop a strong portfolio: Your portfolio is your calling card, so it needs to showcase your programming skills, creativity, and technical abilities. Create a portfolio that showcases your best work, including your personal game development projects, demos, and samples of your code. Highlight your experience with programming languages, software, tools, and engines that are commonly used in the indie game development industry.
  • Research indie game studios: Do your research on the indie game studios that interest you. Find out what kind of games they make, the size of the studio, the company culture, and their current job openings. Look for studios that align with your interests, values, and career goals.
  • Build a network: Building a network of like-minded professionals in the game development industry can be invaluable. Attend industry events, join online forums and communities, and engage with indie game developers on social media. This will help you stay up-to-date on the latest trends, technologies, and job openings.
  • Gain experience: Gain experience by creating your own games, participating in game jams, contributing to open-source projects, or volunteering for a non-profit game development organization. This will help you gain valuable experience and demonstrate your passion and commitment to game development.
  • Apply for internships: Many indie game studios offer internships or junior positions for game programmers. This is an excellent opportunity to gain hands-on experience, build your skills, and make contacts in the industry. Even if the internship is unpaid, the experience and contacts you gain could be invaluable for your future career.
  • Tailor your resume and cover letter: Tailor your resume and cover letter to showcase your programming skills, experience, and passion for game development. Highlight your technical skills, programming languages, software, and engines that you are proficient in. Be sure to mention any experience you have working in a team and collaborating with other game developers.
  • Prepare for the interview: Once you get an interview, make sure to prepare thoroughly. Research the indie game studio, their current projects, and their company culture. Be ready to talk about your experience, skills, and passion for game development. Also, prepare questions to ask the interviewer about the company and the job position to show your interest and enthusiasm.

Analytics

Generate traffic

For more details see promoting section;

Strategies for interviews

Train yourself in coding interviews with some materials: - Crack the Coding Interview - Interviews on AWS - Interview on Google - Course on get ready for an AWS interview

Coding resources

Curated videos on most common programming interview questions

Strategies for Social Networks

All social networks uses some type of relevance algorithm to promote your content or profile. So you have to find means to increase your relevance. Most of the algorithms measure your relevance by number of reactions(likes, follows, comments, replies...), so every time you post something, you should try to incentive the content consumers to do that.

Google

If your aim is to be relevant on Google, try to check the trending words people are searching now via Google trends.

If you follow this path, the main strategy is the common SEO optimization techniques. Here goes some guides to help you nail that.

If you are a prolific writer and really into it. You can try to make wikipedia refer you and raise your rate on google algorithm. You can query google site:wikipedia.org [your niche keyword] + "dead link" and check the pages that are missing references to your content, then edit the wikipedia page to refer your website or blog post to give sources for something missing.

Linkedin

  • Consistency is the key. You have to post frequently. Period.
  • Follow other professionals in your field and check what they are posting to try replicate their behavior.
  • Follow companies you want to work
  • Connect with the hiring personal from the companies you want to work for, so when they search for people, you will be on the top suggestions.

Activity

WiP

\ No newline at end of file diff --git a/portfolio/06-reels/index.html b/portfolio/06-reels/index.html new file mode 100644 index 00000000..0f2e335f --- /dev/null +++ b/portfolio/06-reels/index.html @@ -0,0 +1,12 @@ + Reels - Awesome GameDev Resources

Portfolio Reels

Estimated time to read: 34 minutes

Sample Portfolio Reels

Demo Reels Structure

Game demo reels should showcase the best features and gameplay of a game to potential players and investors. Here are some important elements that a game demo reel should include:

  • Captivating Intro: The game demo reel should start with a captivating intro that hooks the audience and captures their attention.
  • Gameplay Footage: The demo reel should showcase the actual gameplay footage of the game. This should include a variety of gameplay scenarios, showcasing the game mechanics and the different features of the game.
  • Visuals: The game demo reel should showcase the visual quality of the game. This should include graphics, animations, lighting, and special effects.
  • Audio: The game demo reel should include the game's audio elements, such as sound effects, music, and voice acting.
  • User Interface: The demo reel should showcase the user interface of the game, including the menus, HUD, and other interactive elements.
  • Story and Characters: If the game has a story or characters, the demo reel should include footage that showcases these elements.
  • Game Modes: If the game has different game modes, the demo reel should showcase the different modes and gameplay styles.
  • Multiplayer: If the game has a multiplayer mode, the demo reel should showcase the multiplayer gameplay and the features that make it unique.
  • Call-to-Action: The demo reel should end with a clear call-to-action, such as a link to the game's website or social media page, or instructions on how to download the demo.

Overall, the game demo reel should be well-paced, engaging, and give a good sense of what the game is all about.

Captivating Intro

A captivating intro is an essential part of a game demo reel, as it sets the tone and captures the viewer's attention from the start. There are several ways to create a captivating intro, depending on the type of game and the intended audience. Here are a few ideas:

  • Show a brief teaser: Start the demo reel with a brief teaser that highlights the game's most exciting features, such as a stunning visual effect or a heart-pumping action sequence.
  • Use a dramatic voiceover: Use a dramatic voiceover to introduce the game and create a sense of anticipation. The voiceover can provide a brief overview of the game's story or setting, or simply hype up the viewer with promises of intense gameplay and unforgettable experiences.
  • Introduce the developer: If the game is developed by a well-known studio or an indie developer with a strong following, introduce them in the intro. Share their mission and goals for creating the game and convey their passion and expertise in the field.
  • Set the mood with music: Use music to set the mood for the demo reel. Choose a track that complements the game's theme or genre and builds up the excitement for the upcoming gameplay footage.
  • Use a creative animation: Use a creative animation that visually represents the game's core concept or theme. This can help to grab the viewer's attention and give them a taste of what the game is all about.

Whatever approach is taken, the intro should be brief and impactful, providing a sense of the game's style and tone while leaving the viewer eager to see more.

Gameplay Footage

Gameplay footage is the heart of any game demo reel, as it showcases the actual gameplay experience that the game offers. This section of the demo reel should be carefully crafted to highlight the most exciting and impressive features of the game. Here are some tips for creating engaging gameplay footage:

  • Variety of gameplay scenarios: The gameplay footage should showcase a variety of gameplay scenarios to give viewers a well-rounded idea of what the game is all about. This can include different levels or environments, various weapons or abilities, and different characters or modes.
  • Highlight unique features: Highlight the game's unique features and mechanics, such as special abilities, game modes, or multiplayer options. This can help to differentiate the game from other titles in the same genre.
  • Showcase player choices: If the game allows players to make choices that affect the story or gameplay, showcase these choices in the demo reel. This can help to create a sense of player agency and show how the game responds to different playstyles.
  • Show off impressive visuals: The gameplay footage should also showcase the game's impressive visuals, such as high-quality textures, realistic lighting and shadow effects, or dynamic particle effects. These elements can help to create a more immersive and engaging gameplay experience.
  • Keep it concise: The gameplay footage should be concise and to the point, showcasing the most exciting and impressive elements of the game without becoming overly long or repetitive.
  • Use high-quality footage: The footage should be high-quality and well-shot, with clear visuals and smooth frame rates. This can help to create a professional and polished demo reel that shows off the game in the best possible light.

Overall, the gameplay footage should provide a clear and exciting look at what the game has to offer, highlighting its unique features and impressive visuals while keeping the viewer engaged and interested.

Visuals

Visuals are a critical component of any game demo reel, as they are often the first thing that potential players and investors will notice. The visuals of a game should be showcased prominently in the demo reel, demonstrating the game's graphical capabilities and the level of detail and polish that has gone into its development. Here are some key elements of visuals to consider when creating a game demo reel:

  • Graphics quality: The graphics quality of the game should be highlighted in the demo reel. This can include high-quality textures, realistic lighting and shadows, dynamic particle effects, and other visual elements that make the game stand out.
  • Art style: The art style of the game is also an important visual element to showcase. Whether the game has a realistic or stylized art style, it should be highlighted in the demo reel to give viewers a sense of the game's aesthetic.
  • Animations: The animations of the game are an important part of the overall visual experience. The demo reel should showcase the game's character animations, object interactions, and any other animations that add to the game's visual appeal.
  • Camera work: The camera work used in the demo reel can also be used to highlight the game's visual elements. Different camera angles, zooms, and cuts can be used to showcase the game's graphics and make them stand out.
  • User interface: The user interface (UI) of the game is also an important visual element that should be showcased in the demo reel. The demo reel should highlight the UI design and any interactive elements, such as buttons or menus.
  • Environment design: The game's environment design is another important visual element to showcase in the demo reel. Whether the game takes place in a realistic or fantastical setting, the environment design should be highlighted to give viewers a sense of the game's atmosphere.

Overall, visuals play a crucial role in creating an immersive and engaging gameplay experience, and they should be showcased prominently in a game demo reel. By highlighting the game's graphics quality, art style, animations, camera work, user interface, and environment design, the demo reel can give viewers a clear and exciting look at what the game has to offer.

Audio

Audio is an often overlooked but crucial component of any game demo reel. It can enhance the overall gameplay experience, create an immersive atmosphere, and contribute to the game's overall appeal. Here are some key elements of audio to consider when creating a game demo reel:

  • Sound effects: Sound effects are an important component of any game's audio design. The demo reel should showcase the game's sound effects, such as weapon sounds, environmental effects, and character vocalizations.
  • Music: The music used in the game can also be an important part of the overall audio experience. The demo reel should highlight the game's soundtrack, showcasing any memorable themes or musical cues that contribute to the game's atmosphere.
  • Voice acting: If the game features voice acting, it should be highlighted in the demo reel. The demo reel should showcase any memorable voice performances and give viewers a sense of the quality of the voice acting.
  • Sound design: The overall sound design of the game is another important element of the game's audio. The demo reel should showcase how the game's audio elements work together to create an immersive atmosphere, such as the use of ambient sounds or dynamic music that changes based on the player's actions.
  • Audio quality: The quality of the game's audio should also be highlighted in the demo reel. The sound effects, music, and voice acting should be clear and well-produced, with high-quality mixing and mastering that enhances the overall experience.

Overall, audio is a critical component of any game demo reel. By showcasing the game's sound effects, music, voice acting, sound design, and audio quality, the demo reel can give viewers a clear and engaging look at the game's overall audio experience.

User Interface

The user interface (UI) is a critical component of any game, and it should be showcased prominently in a game demo reel. The UI is the primary way that players interact with the game, and it can greatly impact the overall gameplay experience. Here are some key elements of UI to consider when creating a game demo reel:

  • Design: The design of the UI is an important aspect to showcase in the demo reel. The UI design should be visually appealing, easy to navigate, and intuitive for players to use. The demo reel should showcase any unique design elements, such as custom icons or animations, that contribute to the overall look and feel of the game.
  • Functionality: The functionality of the UI is also an important element to showcase in the demo reel. The UI should be designed to help players easily access important information, such as health, inventory, or map data. The demo reel should showcase how the UI functions during gameplay and how it supports the overall game mechanics.
  • Customizability: Some games offer customizable UI options, such as changing the size or placement of UI elements. If the game has this feature, it should be highlighted in the demo reel to showcase the flexibility of the UI design.
  • Responsiveness: The responsiveness of the UI is another important aspect to showcase in the demo reel. The UI should respond quickly and smoothly to player input, and any interactive elements should have clear feedback to help players understand their actions.
  • Accessibility: Finally, the accessibility of the UI is an important consideration. The demo reel should showcase how the UI supports players with different needs, such as colorblind options or font size adjustments.

Overall, the UI is a critical component of any game, and it should be showcased prominently in a demo reel. By highlighting the design, functionality, customizability, responsiveness, and accessibility of the UI, the demo reel can give viewers a clear and engaging look at how players interact with the game and how the UI supports the overall gameplay experience.

Story and Characters

The story and characters are important elements of many games, and they can greatly impact the overall experience. When creating a game demo reel, it is important to showcase the game's story and characters in a way that is engaging and gives viewers a clear sense of what to expect from the game. Here are some key elements of story and characters to consider when creating a game demo reel:

  • Story: The demo reel should give viewers a sense of the game's story, including the setting, premise, and major plot points. The story should be presented in a way that is engaging and makes viewers want to learn more about the game's world and characters.
  • Characters: The demo reel should also showcase the game's characters, including their personalities, motivations, and relationships with each other. Characters should be presented in a way that is relatable and makes viewers care about their journeys throughout the game.
  • Dialogue: If the game features dialogue, it should be highlighted in the demo reel. The dialogue should showcase the quality of the writing and voice acting, and give viewers a sense of the characters' personalities and relationships.
  • Cutscenes: Cutscenes are a great way to showcase the game's story and characters in a visually compelling way. The demo reel should include any memorable or important cutscenes that help to advance the story or develop the characters.
  • Worldbuilding: Finally, the demo reel should showcase the game's worldbuilding, including any lore or backstory that helps to flesh out the game's world and characters. This can include things like environmental storytelling, item descriptions, or other worldbuilding details.

Overall, the story and characters are important elements of many games, and they should be showcased prominently in a game demo reel. By highlighting the story, characters, dialogue, cutscenes, and worldbuilding, the demo reel can give viewers a clear and engaging look at what to expect from the game's narrative and characters.

Game Modes

Game modes are an important aspect of many games, particularly in multiplayer titles, and they can greatly impact the overall experience. When creating a game demo reel, it is important to showcase the different game modes in a way that is engaging and gives viewers a clear sense of what to expect from each mode. Here are some key elements of game modes to consider when creating a game demo reel:

  • Variety: The demo reel should showcase a variety of different game modes, particularly if the game has several unique modes to choose from. This will give viewers a sense of the game's overall variety and replayability, and help them understand how each mode contributes to the overall experience.
  • Objectives: Each game mode should have clear objectives that are highlighted in the demo reel. This can include things like capturing objectives, defeating enemies, or completing tasks within a certain timeframe. The objectives should be presented in a way that is clear and easy to understand for viewers.
  • Mechanics: The demo reel should showcase the different mechanics and gameplay elements that are unique to each game mode. This can include things like different weapons or abilities, unique maps or terrain, or different objectives and win conditions. By highlighting these unique mechanics, viewers can get a sense of how each mode feels and plays.
  • Multiplayer: If the game has multiplayer modes, it is important to showcase how players can interact with each other within each mode. This can include things like team play, player versus player combat, or cooperative objectives.
  • Replayability: Finally, the demo reel should showcase how each game mode contributes to the game's overall replayability. This can include things like unlockable rewards, leaderboards, or other features that encourage players to come back and play the game multiple times.

Overall, game modes are an important aspect of many games, particularly in multiplayer titles, and they should be showcased prominently in a game demo reel. By highlighting the variety, objectives, mechanics, multiplayer elements, and replayability of each mode, the demo reel can give viewers a clear and engaging look at what to expect from each game mode and how it contributes to the overall experience.

Multiplayer

Multiplayer is an important aspect of many games, particularly in online multiplayer games, and it can greatly impact the overall experience. When creating a game demo reel, it is important to showcase the multiplayer aspects in a way that is engaging and gives viewers a clear sense of what to expect from the multiplayer modes. Here are some key elements of multiplayer to consider when creating a game demo reel:

  • Modes: The demo reel should showcase the different multiplayer modes that are available in the game. This can include things like team-based modes, objective-based modes, and free-for-all modes. The demo reel should highlight how each mode plays and what the objectives are.
  • Player Count: The demo reel should also showcase the player count for each mode. This can include things like 1v1, 2v2, 4v4, or larger player counts for massive multiplayer games. The player count is an important factor in determining the pacing and flow of the game, and should be highlighted in the demo reel.
  • Matchmaking: If the game features matchmaking, it is important to showcase how the matchmaking system works and how players are paired with opponents of similar skill levels. This can include things like player ranking systems or other matchmaking algorithms that help to ensure fair matches.
  • Progression: The demo reel should also highlight any progression systems that are available in the multiplayer modes. This can include things like unlocking new weapons or abilities as players progress through the game, or other rewards for completing objectives or winning matches.
  • Social Features: Finally, the demo reel should showcase any social features that are available in the multiplayer modes. This can include things like chat systems, friend lists, or the ability to form clans or teams with other players.

Overall, multiplayer is an important aspect of many games, particularly in online multiplayer games, and it should be showcased prominently in a game demo reel. By highlighting the different modes, player count, matchmaking, progression, and social features of the game's multiplayer modes, the demo reel can give viewers a clear and engaging look at what to expect from the multiplayer experience.

Call to Action

The Call-to-Action (CTA) is an important element of any game demo reel because it prompts viewers to take action after watching the video. The CTA can be in the form of a request or suggestion that encourages viewers to do something related to the game, such as signing up for a mailing list, pre-ordering the game, or visiting the game's website. Here are some key elements to consider when including a Call-to-Action in a game demo reel:

  • Clarity: The CTA should be clear and specific, so that viewers know exactly what action they are being asked to take. This can include things like "pre-order now" or "sign up for updates", and should be prominently displayed at the end of the video.
  • Relevance: The CTA should be relevant to the content of the video, and should relate directly to the game being showcased. For example, if the demo reel is showcasing a new game trailer, the CTA could be to pre-order the game.
  • Timing: The CTA should be timed appropriately within the video, so that it appears at the end and is not too distracting during the main content of the video.
  • Design: The design of the CTA should be visually appealing and eye-catching, using bold fonts and contrasting colors to draw attention to it.
  • Placement: The CTA should be placed in a prominent location within the video, such as at the end or in a lower third graphic.

Overall, the Call-to-Action is an important element of any game demo reel because it prompts viewers to take action after watching the video. By including a clear, relevant, and well-designed CTA at the end of the video, game developers can encourage viewers to take action and engage with the game in meaningful ways.

Specifications

Specifications for the Demo Reels:

Video Specifications:

  • Size: 1920x1080 (16:9)
  • Format: saved as .mp4
  • Length:
  • Game Art = 90 seconds.
  • Game Design, Game Production Management, Game Programming, Game Sound Design = 60 seconds.
  • No audio with lyrics
  • No X-rated content
  • Use audio that won't get removed from Vimeo (where we store the files) because of copyright infringement.

Homework

Watch some videos from Sample Portfolio Reels and create a script detailing what you are going to present yourself. Start creating the timeline of feelings and you are going to present at each time.

Tell a story where you are (or your work is) the protagonist.

\ No newline at end of file diff --git a/portfolio/07-hosting/img.png b/portfolio/07-hosting/img.png new file mode 100644 index 00000000..82d68289 Binary files /dev/null and b/portfolio/07-hosting/img.png differ diff --git a/portfolio/07-hosting/index.html b/portfolio/07-hosting/index.html new file mode 100644 index 00000000..ebf5d7b7 --- /dev/null +++ b/portfolio/07-hosting/index.html @@ -0,0 +1,12 @@ + Hosting - Awesome GameDev Resources

Hosting

Estimated time to read: 9 minutes

There are many hosting options and solutions to match each need. Lets cover some options here.

img.png

Options low code

  • Google sites - My preference

Other notable options: - Godaddy - Wordpress - Wix - Squarespace

The problem with those are they require payments to be fully functional, so if you want to go deep and have mor freedom, we are going to cover other options.

Static HTML with Static Data

If what you want to serve is static hosting, your content is only frontend and do not require backend, you can use github pages, google firebase, S3 bucket hosting or many others. This is the easiest approach. - In this scenario you will be able to store only pre-generated html and static files; - This is useful even if you use blogs that changes rarely, you would have to redeploy your page for every change.

Static HTML with Dynamic Data

If your html is static and need backend services that are rarely called, you can go with cloud functions, my suggestions here are google cloud run and aws amplify or even firebase functions. If you use nextjs website, check vercel or netlify hosting services. - The deploys are easy; - It can be very expensive if you hit high traffic, but it will remain free if you dont hit the free tiers; - You will have to pay attention to your database management;

Dynamic HTML with Dynamic Data

If your website generate content dynamically such as Wordpress blogs or any custom made combination with next or anything. - There is many "cheap hosting" solutions that are mostly bad performant(it can reach more than 10s to answer a request). You have to avoid them to make your user enjoy the visit; - Management can go as hard as possible, but the results can be awesome; - It can be really expensive;

CDN and DNS Management

I highly recommend you to use Cloudflare as you DNS nameserver, so you can cache your website results for faster loading. But you can use your own nameserver provider by your domain name registrar.

DNS stands for Domain Name System, which is a system that translates domain names into IP addresses. When you type a domain name into your web browser, such as "www.example.com," your computer sends a request to a DNS server to resolve the domain name into an IP address, such as "192.0.2.1." The IP address is then used to establish a connection with the web server that hosts the website you are trying to access.

DNS plays a crucial role in hosting because it enables users to access websites using domain names instead of IP addresses. This makes it easier for users to remember and find websites. DNS also allows websites to change servers or IP addresses without affecting the user experience, as long as the DNS records are updated properly.

In hosting, DNS is important because it determines which server is responsible for hosting a particular website. DNS records can be configured to point to different servers depending on factors such as geographic location, server load, and failover. Hosting providers typically offer DNS management tools to help users configure and manage their DNS records.

Homework

The goal is to have as website up and running for your portfolio.

Here goes my preferable way for hosting anything. With that you can host microservices, game services, serve API, static and dynamic websites and much more. It can be tricky but lets setup it now.

Talk with me if you dont have a domain and want to use my infrastructure temporarily.

I am assuming you wont have a huge traffic, but you have a complex combination of services. In the complex cases and if you want to make your life easier and cheaper,my suggestion for hosting would be oracle cloud with arm cpu. They offer for free a virtual machine with 200gb storage, 4vcpus, 24gb ram for free at this date of 2022/12 tutorial. In this scenario, I recommend using https://coolify.io/ as your deployment management system, just pay attention that this machine is running in an arm cpu. With this combination, you can manage everything easily in one place for free. This is not ideal, because you wont have backups, but it is good enough for most scenarios.

If you have plenty of money or your website have high traffic, I recommend you to use Kubernetes to orchestrate every microservice.

\ No newline at end of file diff --git a/portfolio/08-cms/index.html b/portfolio/08-cms/index.html new file mode 100644 index 00000000..f0e51791 --- /dev/null +++ b/portfolio/08-cms/index.html @@ -0,0 +1,17 @@ + Content Management System - Awesome GameDev Resources

Content Management System

Estimated time to read: 2 minutes

Play with chatgpt

In order to train yourself for a game position try some prompts similar to this one.

Act as technical recruiter for a AAA game studio. You are going to interview me by asking me questions relevant for an entry level position as "unreal gameplay developer". Skills required are: Unreal Egine, Data structures, Algorithms, VR and Rendering pipelines. 
+You are going to ask me a question when I prompt "ask".
+My answer to your question will start with "response".
+On each response I give to your question, you will provide me 5 bullets: SCORE: from 0 to 100 points to evaluate if I answered it well or not; EXPLANATION: why you gave me that score; RATIONALE: explain what a typical recruiter is measuring with the question previously asked; ADVISE: to improve for answer to score 100 answer; NEXT: question. 
+Do you understand? Dont ask anything now.
+

\ No newline at end of file diff --git a/portfolio/09-get-ready/common-intenterview-questions/index.html b/portfolio/09-get-ready/common-intenterview-questions/index.html new file mode 100644 index 00000000..5046384e --- /dev/null +++ b/portfolio/09-get-ready/common-intenterview-questions/index.html @@ -0,0 +1,12 @@ + Common interview questions - Awesome GameDev Resources
\ No newline at end of file diff --git a/portfolio/09-get-ready/index.html b/portfolio/09-get-ready/index.html new file mode 100644 index 00000000..dd46dc3b --- /dev/null +++ b/portfolio/09-get-ready/index.html @@ -0,0 +1,12 @@ + Getting Ready - Awesome GameDev Resources

Final project

Estimated time to read: 4 minutes

Your portfolio should be a hosted webpage and a open repository on github.

You should follow a portfolio structure, to build a website and host it publicly. It should have a nice style, a good communication is the key to execute and analyse your strategy in order to capture insights. You can optionally increment your portfolio via dynamic content such as blogs or whatever you find relevant. Another extra step would be to create a generic cover letter to express your intentions and goals more personally. Note that some game companies still require CVs To boost your visualization, you can promote.

Minimum steps: 1. Have a domain or at least a meaningful github username/organization; 2. Create a github repository; 3. Push your frontend to the repo; 4. Enable github pages; 5. Create a CI/CD to build and deploy to gh pages; 6. Point your domain to gh-pages if you have one;

It is expected to have something to showcase, so it is expected to have at least 3 projects to showcase. It is preferable to showcase something that could be testable(webgl builds) or watchable in a lightweight manner.

If you are willing to showcase your ability in Unity, I recommend you to try GameCI and github pages. If you want to showcase your game engine abilities with C++, I recommend you using CMake, SDL2 and emscripten to build and deploy for github pages.

If you want to start something from scratch you can use this repo to start have a SDL2 project with all libraries already set. It builds and publish a Github page via Github actions automatically, you can check it running here. It features CMake tooling, IMGUI for debug interfaces, SDL2, SDL2_ttf, SDL_image, SDL_mixer,

2023

Here goes a list of portfolios

\ No newline at end of file diff --git a/portfolio/10-frontend/index.html b/portfolio/10-frontend/index.html new file mode 100644 index 00000000..45a96519 --- /dev/null +++ b/portfolio/10-frontend/index.html @@ -0,0 +1,12 @@ + Frontend - Awesome GameDev Resources

Frontend for your portfolio

Estimated time to read: 3 minutes

Here goes a curated templates for a quick start: - https://github.com/techfolios/template - the easiest one - https://github.com/rammcodes/Dopefolio - straight to the point developer portfolio - https://github.com/ashutosh1919/masterPortfolio - animated with a strong opening - https://smaranjitghose.github.io/awesome-portfolio-websites a good compilation on how to build and deploy your portfolio with a good pre-made template

But for this class, we are going to follow this template, sofork this boilerplate if you want a more robust webapp experience.

Frontend frameworks

There are many frontend frameworks floating around, but in order to speed up your learning curve on how to deploy a fully customized webpage, I am going to use this combination of technologies:

Some examples with this stack:

Watch this video to get a fast entry to this stack Here goes an introductory video about this combination.

\ No newline at end of file diff --git a/portfolio/11-dynamic/index.html b/portfolio/11-dynamic/index.html new file mode 100644 index 00000000..f5c622c0 --- /dev/null +++ b/portfolio/11-dynamic/index.html @@ -0,0 +1,12 @@ + Dynamic Content - Awesome GameDev Resources
\ No newline at end of file diff --git a/portfolio/12-promoting/index.html b/portfolio/12-promoting/index.html new file mode 100644 index 00000000..43da4527 --- /dev/null +++ b/portfolio/12-promoting/index.html @@ -0,0 +1,12 @@ + Promoting - Awesome GameDev Resources

How to promote yourself and your work

Estimated time to read: 13 minutes

For most of us, game developers, the most important thing is to make games. But, in order to make games, we need to promote ourselves and our work. In this section, we will learn how to do that.

Defining the target to be promoted

Before we start promoting, we need to define what we want to promote. The main difference between promoting ourselves or our work is the tone, the message and the medium being promoted. So we can build a successful strategy.

In ether path you chose, consider the following questions:

  • What is the target audience?
  • What is the target platform?
  • What is the target medium?
  • What is the target message and content?
  • What is the target call to action?
  • What is the target result?
  • How to measure the success?
  • How to improve the promotion?

Defining the Audience

Before creating and running a promotion campaigns, we need to define the audience. The audience is the group of people we want to reach with our promotion and it can defined by the following:

  • Recruiters, HR, and hiring managers;
  • Other game developers, especially those who are in the same field as you;
  • Game players;
  • Journalists, writers and critics;
  • Investors;
  • Communities;

About Platforms

To reach specific audiences, we need to be in the same platform they are. For example: - Game players: Steam, Twitch, YouTube, itchio, GameJolt, Discord; - Journalists: Twitter, LinkedIn; - Investors: AngelList, Ycombinator, LinkedIn, Crunchbase; - Communities: Reddit, Discord, Facebook, Twitter; - Recruiters: mostly Linkedin.

Social media is a great way to promote yourself as a game developer. You can use it to share your work, your thoughts, your ideas, and your opinions. You can also use it to connect with other developers and learn from them.

Here goes my opinion about the most important platforms:

  • Twitter: it is the best and easy way to communicate with anyone in the world. The distance between to reach anyone is zero. And it has an awesome tagging structure. It is a great way to share your thoughts and ideas and ask for feedbacks. It is a great way to connect with other developers and learn from them. You can also use it to share your work and promote your games.
  • LinkedIn: It is a great way to connect with recruiters and hiring managers. Usually you will see other developers publishing their thoughts and ideas, so try to post relevant comments on their publications to get noticed and improve your visibility.
  • Facebook: It is mostly a general purpose social media. You can use it to connect with your friends and family, and collect feedbacks for your content. It is a great way to promote your finished games.
  • Instagram and Tiktok: Are more focused in fast, small and visual content. You can use it to promote your games and your work, but it is not the best way to share your thoughts and ideas.
  • Reddit: This one is the best for collecting feedbacks from other developers about your content, but the reach is limited.
  • Discord: The best tool be in touch with communities, you can build your own community for your game and be in direct contact with yours consumers. Another good use is to be in direct contact with other developers and learn from them.
  • YouTube and Twitch: The best way to share your work and promote your games.
  • Medium and Blogs in general: The best way to share your thoughts and ideas and ask for feedbacks. You can use it in conjunction with other platforms to catch the general attention and bring them to your content.

Mediums

The mediums are: Social media posts, Blog posts, Email, Podcasts, Videos, Events, Conferences, Meetups, Workshops, Webinars, Webcasts, and more.

For each type of medium, we need to plan the content, the frequency, and the duration. We have very nice tools to help us with that, like Buffer, Hootsuite and many others.

Message and tone

The message is the main idea we want to communicate. The tone is the way we want to communicate it. You have to match the tone with the message in the given platform to reach the right audience. So plan ahead how you want to communicate your message and what tone you want to use.

When planning the message, it is good to plan the emotions we want to trigger in the audience. For example, if we want to promote our game, we can use the following emotions: Excitement, Joy, Curiosity, and Fun. If we want to promote yourself by doing something interesting, you can use the following emotions: Curiosity, Fun, Surprise and Pride.

Call to action

The call to action is the action we want your audience to take. It can be: Download the game, Read my Resume, be part of by community, Take a look on my Repository, Buy the game, Play the game, Follow me, Subscribe, Share, Like, Comment, and more.

Results

Whatever is your goal, you need to define the results you want to achieve so you should track and measure your progress. You can use tools like Google Analytics mostly for web content, Google Firebase for apps and games and many other.

Here some ideas of results you can track: Number of downloads, page views, number of people reaching you, number of followers, number of subscribers, number of likes, number of comments, number of shares, number of retweets, number of reposts and more.

Improving the promotion

If you really want to go deep in this rabbit hole, I highly recommend you to create performance measurements such as KPI dashboard to track your progress and improve your promotion. You can use tools like Google Data Studio or Tableau. With the KPI dashboard, you can track your progress and improve your promotion. You can also use it to track your competitors and learn from them.

Another good strategy is to A/B test your promotion. You can use tools like Google Optimize to create different versions of your promotion and test which one is the best. You can also use it to test different messages, tones, and call to actions. I cannot stress enough how important it is to test your promotion, the most successful companies in the world do it. Zynga even quoted once "We are not in the business of making games, we are in the business of testing games" and "We are a data warehouse maskerated as a game company". So being data-driven and customer-centric is the key to success.

Homework

  • Create a promotion strategy for yourself and your work.
  • What would be your first content and medium to promote?
  • What is the message and the tone?
  • Define your call to action.
  • How do you measure your results?
  • How would you plan to improve your promotion?

Conclusion

I hope you enjoyed this content. If you have any questions, please create an issue in this repository. If you want to contribute, please create a pull request. If you want to support me, please share this content with your friends and colleagues. If you want to support me financially, please consider buying me a coffee or a very fancy wine.

\ No newline at end of file diff --git a/portfolio/13-cover-letter/index.html b/portfolio/13-cover-letter/index.html new file mode 100644 index 00000000..7e498ed7 --- /dev/null +++ b/portfolio/13-cover-letter/index.html @@ -0,0 +1,12 @@ + Cover Letter - Awesome GameDev Resources

How to write an Awesome Cover Letter

Estimated time to read: 13 minutes

What is a cover letter?

A cover letter is a document that is sent together with your resume. It is a way to introduce yourself to the company, explain why you're applying for the job, and why you're a good fit for the position. You should also explain why you're interested in the company, and why you want to work for them.

Nowadays writing a Cover Letter seems to be a lost art. Most of the time, people just send their resume and that's it. But, if you want to stand out from the crowd, you should write a cover letter.

In a cover letter you can be more personal to sell yourself more effectively. The core of it is to link your skills and history to what they do and need. Now lets see how to write a cover letter.

Strategies to write a cover letter

There are many strategies to write a cover letter. But the main idea is to be personal and try to sell yourself more effectively. Here are some strategies to write a cover letter:

  • Be clear, concise and specific. You should try to be clear and try to sell yourself more effectively. Don't waste their time with long and boring paragraphs. You can do that by linking your skills and history to what they do and need. You can also try to show your personality and your passion for the job;
  • Be personal, enthusiastic and professional: You should try to be personal setting the best tone that matches your style and the company, just don't exaggerate. You can also try to show your personality and your passion for the job. But, you should also be professional and try to be polite and respectful. If you're unsure about the company culture, you can do that by using a formal language and a professional tone;

Knowing your audience

Usually, game companies are interested in people who are passionate about games. But there are some core differences between what profiles AAA game studios and Indie Studios seek for. AAA usually follow the path of the specialist, while Indie Studios usually, the generalist. So try to match this style of writing in your cover letter.

Another relevant aspect is the company culture. You should try to match the tone of your cover letter to the company culture. If you're unsure about the company culture, you can do that by using a formal language and a professional tone. Or try to connect with some employees of the company and ask them about the company culture.

Research about the company. Try to find out what they do, what they are looking for, and what they are interested in. You can do that by reading their website, their blog, and their social media. They tend to prefer people that have culture, passion and goals aligned with theirs. So try to show that you are passionate about their products and their goals.

Play their games, and use their products. An awesome icebreaker can be yourself telling about some funny bug or how you enjoyed the game connecting it to your life. It would be awesome if you can show that you are a fan of their products to the point to even create mods or fan art.

Write interesting content

You should try to write memorable sentences to maintain your reader engaged. One strategy is to start the paragraphs with a short and powerful sentence that summarizes the the topic you are about to write. Arguably, you can also try to use a powerful quote to start your cover letter.

Your first sentence plays a huge role in your cover letter, it should be meaningful to you and to the reader. Chances are, they wont be reading the whole cover letter, so you should try to make the first sentence as interesting as possible. Try to be catchy and try to make them want to read more, but take care not to exaggerate.

Sometimes your content is really relevant to you but it might not be that relevant to the company or the job. Sometimes we get too excited and we want to tell everything about ourselves and how passionate we are, by try telling all the things you ever did. But you should try to be clear and concise. Just add some breadcrumbs for the reader ask you in the interview about the things you didn't mention in the cover letter.

Strengths

You should try to highlight your strengths. You can do that by using a list of your skills and achievements. They will try to extrapolate the value you brought to the previous companies you worked for to themselves. So try show that you are a good fit for the job by giving success stories about your acchievents. Some examples:

  • AAA centred: I published a game on Steam with 100k downloads while a student. I acted as the main developer and tech lead, responsible for creating tools for level designers and AI system for the game. Besides that, I played a fundamental role to cut the scope of the game to make it possible to be released on time and consequently the sanity of the team;
  • Indie: I am fearless. I am not afraid to fail or take risks. This behavior pressures me to have a good plan and to be prepared for the worst. Once we tried a very ambitious feature that we thought would be awesome, we tracked the adoption of it, just to discover that nobody used it. We learned from it and we tried again with a smaller scope and it worked. We released the game on time and we were happy with the result;

Pay attention that some companies might not like to see that you are a risk taker. So try to be careful with that, and ask some employees of the company and ask them about the company culture.

Closure

You should try to close your cover letter with summary, thank them for their consideration and time, and add a call to action. You can also try to add a call to action to connect with you on social media or to visit your website, or just say that you are in hopes to talk with them in person soon.

Create a Template

You should try to create a template for your cover letter. A way of doing it is to add replaceable tags for the company name, the job title, and the date. Try to mark those tags in some colorful way, so you can easily find them and replace them. You can also try to add some comments to help you remember what to write in each tag.

Another strategy to templating your cover letter is to create one template for every type of company. For example, you can create a template for AAA game studios, another for Indie game studios, and another for game companies. You can also create a template for each type of job. For example, you can create a template for a game designer, another for a gameplay developer, and another for a UI/frontend developer.

But if you pursue this path, you have to pay attention to the examples and products/games that you use in your cover letter. You will have to change them to match the company you are applying for.

Homework

Write a Cover Letter for a game company.

\ No newline at end of file diff --git a/portfolio/14-cv/index.html b/portfolio/14-cv/index.html new file mode 100644 index 00000000..7b069ae4 --- /dev/null +++ b/portfolio/14-cv/index.html @@ -0,0 +1,12 @@ + CV - Awesome GameDev Resources
\ No newline at end of file diff --git a/portfolio/index.html b/portfolio/index.html new file mode 100644 index 00000000..80e93666 --- /dev/null +++ b/portfolio/index.html @@ -0,0 +1,12 @@ + Game Developer's Portfolio - Awesome GameDev Resources

Game Developer's Portfolio

Estimated time to read: 9 minutes

Creating and maintaining a portfolio is a crucial part in any game developer's job search and career.? Portfolios are especially challenging for programmers, since the work presented is not inherently visual, yet it must still effectively demonstrate the individual's prowess and skills in their discipline.? This course provides Game Programmers a formal opportunity to sum up their experience in the major and produce a portfolio worthy of presentation at the Senior Show.? In this course, students discuss and implement pertinent portfolio materials for programmers, such as websites, repositories and demo reels.? Students will have an opportunity to spearhead an entirely solo project to add as a centerpiece to their materials. Source

Requirements

  • 90 Credits

Student-centered Learning Outcomes

Bloom's Taxonomy

Bloom's Taxonomy on Learning Outcomes

Upon completion of the Game Developer's Portfolio course, students should be able to:

Objective Outcomes

  • Demonstrate Proficiency in Programming Languages:
    • Showcase competence in relevant programming languages commonly used in game development.
    • Implement and explain code snippets that highlight problem-solving skills and efficiency.
  • Develop an Individual Project:
    • Spearhead a solo game development project to showcase the ability to conceive, plan, and execute a complete game;
    • Demonstrate a deep understanding of programming concepts through the development of a unique and challenging project.
  • Create a Professional Portfolio Website:
    • Design and develop a visually appealing and user-friendly portfolio website to showcase programming projects.
    • Utilize web development tools and frameworks to enhance the presentation of coding projects.
  • Build a Source Code Repository:
    • Establish and maintain a version-controlled repository (e.g., GitHub) containing well-documented code samples.
    • Demonstrate proficiency in using version control tools and collaborative development practices.
  • Develop a Demo Reel:
    • Create a compelling demo reel that effectively communicates programming skills and contributions to game projects.
    • Edit and present code snippets in a clear and concise manner within the demo reel.
  • Articulate Programming Contributions:
    • Clearly communicate the role and impact of programming contributions in game development projects.
    • Develop the ability to discuss technical aspects of projects in a non-technical manner for diverse audiences.
  • Understand Industry Standards and Best Practices:
    • Adhere to industry standards and best practices in game programming.
    • Apply knowledge of optimization, performance, and coding conventions commonly used in the game development industry.
  • Prepare for the Job Search and Senior Show:
    • Develop skills in resume writing, cover letter creation, and interview preparation specific to game programming roles.
    • Prepare and present the portfolio effectively at the Senior Show or similar events to potential employers and industry professionals.
  • Receive and Provide Constructive Feedback:
    • Participate in peer reviews and constructive critiques to enhance the quality of portfolio materials.
    • Provide thoughtful feedback to peers on both the technical and presentation aspects of their portfolios.
  • Reflect on Learning and Career Goals:
    • Reflect on personal learning experiences and identify areas for continuous improvement in game programming skills.
    • Develop a clear understanding of career goals and create a plan for ongoing professional development in the game development industry.

Schedule for Spring 2024

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Date Event
Jan 16 Classes Begin
Jan 16 - 22 Add/Drop
Feb 26 - March 1 Midterms
March 11 - March 15 Spring Break
March 25 - April 5 Registration for Fall Classes
April 5 Last Day to Withdraw
April 8 - 19 Idea Evaluation
April 12 No Classes - College remains open
April 26 Last Day of Classes
April 29 - May 3 Finals
May 11 Commencement
Week Date Topic
1 2024/01/15 Introduction
2 2024/01/22 Case Studies
3 2024/01/29 Game Developer Portfolio Structure
4 2024/02/05 Communication & Audience
5 2024/02/12 Strategy & Analytics
6 2024/02/19 Demo Reels
7 2024/02/26 Frontend
8 2024/03/04 Content Management System
9 2024/03/11 BREAK
10 2024/03/18 Final Project & Coding Interviews
11 2024/03/25 Hosting and Domain
12 2023/04/01 Dynamic Content & Blogs
13 2023/04/08 Promoting
14 2023/04/15 Cover Letters
15 2023/04/22 Traditional CVs
16 2023/04/26 FINALS
\ No newline at end of file diff --git a/robots.txt b/robots.txt new file mode 100644 index 00000000..3b6691bd --- /dev/null +++ b/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Disallow: + +sitemap: https://courses.tolstenko.net/sitemap.xml diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 00000000..07f2d73f --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-,:!=\\[\\]()\"`/]+|\\.(?!\\d)|&[lg]t;|(?!\\b)(?=[A-Z][a-z])","pipeline":["stopWordFilter"],"fields":{"title":{"boost":1000.0},"text":{"boost":1.0},"tags":{"boost":1000000.0}}},"docs":[{"location":"","title":"Awesome GameDev Resources","text":"

Join is on Discord!

How to use this repo: Read the topics, and if you're unsure if you understand the topics covered here it is a good time for you to revisit them.

Ways of reading:

  • Website: read through your browser the interactive examples and animations will work better in this version;
  • Github: You read through the github repo;
  • PDF: download the latest
  • Amazon Kindle: You can buy the book in Amazon and read it in your kindle device;
  • Contribute!: If you want to go deep and propose changes to repo, use the github repo.
"},{"location":"#badges","title":"Badges","text":"

CI:

Join us: .

Metrics:

Code of conduct:

"},{"location":"#topics","title":"Topics","text":"
  1. Intro to Programming
  2. Advanced Programming
  3. Artificial Intelligence
  4. Developer Portfolio
"},{"location":"#philosophy","title":"Philosophy","text":"

This repository aims to be practical, and it will be updated as we test the methodology. Frame it as a guidebook, not a manual. Most of the time, we are constrained by the time, so in order to move fast, we won't cover deeply some topics, but the basics that allows you to explore by yourself or point the directions for you to study in other places acting as a self-taught student, so you really should look for more information elsewhere if you feels so. I use lots of references and highly incentive you to look for other too and propose changes in this repo. Sometimes, it will mostly presented in a chaotic way, which implies that you will need to explore the concepts by yourself or read the manual/books. Every student should follow your own path to learning, it is impossible to cover every learning style, so it is up to you to build your own path and discover the best way to learn. What worked for me or what works for a given student probably won't work for you, so dont compare yourself to others too much, but be assured that we're here to help you to succeed. If you need help, just send private messages, or use public forums such as github issues and discussions.

"},{"location":"#reflections-on-teaching-and-learning-processes","title":"Reflections on teaching and learning processes","text":""},{"location":"#philosophies","title":"Philosophies","text":"

I would like to categorize the classes into philosophies. so I can address them properly: - Advanced classes: are more focused on work and deliveries than theory, they are tailored toward the student goals more than the closed boxes and fixed expected results. It comprehends AI and Adv. AI; - Introduction classes: are focused on theory and practice. In those classes, they have more focus on structural knowledge and basic content. It comprehends classes such as Introduction to Programming. - Guidance: are more focused on how can we bring the student to the highest standard and get ready to be hired. It comprehends classes such as Capstone, Portfolio classes, and Mentoring activities.

"},{"location":"#learning-styles","title":"Learning Styles","text":"
  • Visual: You prefer using pictures, images, and spatial understanding;
  • For this style I recently acquired a pen-tablet monitor, so I will be adding this type of content more often.
  • I also use lots of diagrams via code2flow, sequence diagram and others
  • I assume my handwriting is not the best, but I compensate it with lots of diagrams and pictures, and always project what I write in the computer.
  • Aural: You prefer using sound and music;
    • I always link to youtube videos and podcasts, so they can follow up with extra content and material;
  • Verbal: You prefer using words, both in speech and writing;
    • I setup my machine to record specific topics that might be hard to undestand in just one go, and I did some experimental recordings, but I am still struggling with video editing. I will be adding more videos in the future.
    • My main issue here is that I am not a native english speaker, so I am still struggling with the language, but I am trying to improve it.
    • Other issue that I can name is eye-to-eye contact. It feels overburned to me to keep eye-to-eye contact, that I usually look away.
  • Physical: You prefer using your body, hands and sense of touch;
    • Given my cultural origin, I am usually over expressive in this field, and I need more fine tuning my proxemic. Brazilians commonly talk and walk closer to each other than americans.
    • While lecture I really enjoy to use my hands to express myself, and I am trying to use more body language to express myself.
  • Logical: You prefer using logic, reasoning and systems;
    • I always craft and test teaching experiences to push them to think and reason about the topics.
    • I always use tools such as beecrowd to let them code and test their ability to solve problems.
  • Social: You prefer to learn in groups or with other people;
    • I incentive them to do in-class assignments in pairs, and do group assignments. But I recognize this might be a problem for some students, so I am trying to find a way to make it more inclusive.
    • Strangelly for me, some students prefer to socialize with me by booking office hours more than working together. Probably next semester I will reserve a time to do a type of co-working time when I can be available to help them in their assignments.
  • Solitary: You prefer to work alone and use self-study.
    • Sometimes and some topics you really need to study by yourself, and it can be the best way for some. But I warn them about the effects of loneliness and impostor syndrome.
    • This is usually the most common way to learn, and I always keep an eye on the ones that are struggling to keep up with the class. I always try to reach them and help them to keep up with the class.
    • To compensate this solitude I incentive them to present their work to the class no they can experience having attention even when the lack social skills.
"},{"location":"#teaching-styles","title":"Teaching Styles","text":"

For every type of style, I try to give a bit of insights:

  • Authoritative: control the classroom and maintain discipline;
    • I create a set of rules that should be followed in order to guarantee the student's success;
  • Delegator: give students control of their learning;
    • For the intro classes I follow more this strategy;
  • Facilitator: guide students and help them learn by themselves;
    • I usually follow this strategy on advanced classes;
  • Demonstrator: explain and show things to students;
    • I usully provide a stream of references or even create my own content to show them how to do things;
"},{"location":"#credits","title":"Credits","text":"

Give us stars! Click ->

"},{"location":"advanced/","title":"Advanced Programming","text":"

This course builds on the content from Introduction to Programming. Students study the Object Oriented Programming (OOP) Paradigm with topics such as objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism. Students examine and use structures such as arrays, structs, classes, and linked lists to model complex information. Pointers and dynamic memory allocation are covered, as well as principles such as overloading and overriding. Students work to solve problems by selecting implementation options from competing alternatives.

"},{"location":"advanced/#requirements","title":"Requirements","text":"
  • Introduction to Programming
  • Advanced Programming
"},{"location":"advanced/#textbook","title":"Textbook","text":"
  • C++ Early Objects, 10th Edition, Gaddis, Walters, Muganda, Pearson, 2019. ISBN 978-0135235003
"},{"location":"advanced/#student-centered-learning-outcomes","title":"Student-centered Learning Outcomes","text":"Bloom's Taxonomy on Learning Outcomes

Upon completion of the Advanced Programming course in C++, students should be able to:

  • Articulate key concepts of Object-Oriented Programming (OOP), including objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism.
  • Exhibit a comprehensive understanding of the OOP paradigm and its fundamental principles.
  • Differentiate between various structures (arrays, structs, classes, and linked lists) and proficiently apply them in modeling complex information.
  • Apply OOP principles effectively to design and implement solutions for real-world problems.
  • Utilize Pointers and Dynamic Memory Allocation.
  • Effectively employ pointers and dynamic memory allocation in C++ programming.
  • Analyze and evaluate competing alternatives for implementation options when solving programming problems. Break down complex problems into manageable components using OOP concepts.
  • Evaluate the effectiveness of different implementation strategies in addressing programming challenges.
  • Critically assess the advantages and disadvantages of using structures like arrays, structs, classes, and linked lists in specific scenarios.
  • Develop solutions for programming challenges by integrating and synthesizing various OOP principles.
  • Implement advanced programming concepts, such as overloading and overriding, to enhance code functionality.
"},{"location":"advanced/#schedule","title":"Schedule","text":"

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Date Event Jan 16 Classes Begin Jan 16 - 22 Add/Drop Feb 26 - March 1 Midterms March 11 - March 15 Spring Break March 25 - April 5 Registration for Fall Classes April 5 Last Day to Withdraw April 8 - 19 Idea Evaluation April 12 No Classes - College remains open April 26 Last Day of Classes April 29 - May 3 Finals May 11 Commencement"},{"location":"advanced/#review","title":"Review","text":"
  • Week 1. 2024/01/15
  • Topic:
    • Review: variables, decision making, iteration, functions, strings, and arrays. Structs and 2D arrays
    • Setup: Github, CLion, Github Actions
"},{"location":"advanced/#introduction-to-oop","title":"Introduction to OOP","text":"
  • Week 2. 2024/01/22
  • Topic: Introduction to OOP Objects, classes, member functions, constructors, destructors
"},{"location":"advanced/#more-about-oop","title":"More about OOP","text":"
  • Week 3. 2024/01/29
  • Topic: Private member functions, object passing, object composition, structs and unions
"},{"location":"advanced/#pointers","title":"Pointers","text":"
  • Week 4. 2024/02/05
  • Topic: Address operator, pointer variables, arrays and pointers, pointer math, pointers as function parameters and return types, dynamic memory allocation
"},{"location":"advanced/#pointers-continued","title":"Pointers continued","text":"
  • Week 5. 2024/02/12
  • Topic: this pointer, constant member functions, static members, friends, member-wise assignment, copy constructors
"},{"location":"advanced/#operators-and-more","title":"Operators and more","text":"
  • Week 6. 2024/02/19
  • Topic: Operator overloading, type conversion operators, convert constructors, aggregation and composition, namespaces
"},{"location":"advanced/#midterms","title":"Midterms","text":"
  • Week 7. 2024/02/26
  • Topic: Midterms
"},{"location":"advanced/#vectors-arrays-linked-lists_","title":"Vectors, Arrays & Linked Lists_","text":"
  • Week 8. 2024/03/04
  • Topic: Vectors and arrays of objects: Linked lists, linked list operations
"},{"location":"advanced/#break","title":"Break","text":"
  • Week 09. 2024/03/11
  • Topic: Spring BREAK. No classes this week.
"},{"location":"advanced/#inheritance","title":"Inheritance","text":"
  • Week 10. 2024/03/18
  • Topic: inheritance, protected members, constructors/destructors
"},{"location":"advanced/#override","title":"Override","text":"
  • Week 11. 2024/03/25
  • Topic: inheritance, overriding base class functions
"},{"location":"advanced/#polymorphism","title":"Polymorphism","text":"
  • Week 12. 2024/04/01
  • Topic: inheritance hierarchies, polymorphism and virtual member functions, abstract base classes and pure virtual functions
"},{"location":"advanced/#exceptions-templates-and-stl","title":"Exceptions, Templates and STL","text":"
  • Week 13. 2024/04/08
  • Topic: Exceptions, function and class templates, STL and STL containers, iterators
"},{"location":"advanced/#stack-and-queue","title":"Stack and queue","text":"
  • Week 14. 2024/04/15
  • Topic: Stack and queue
"},{"location":"advanced/#project-presentation","title":"Project Presentation","text":"
  • Week 15. 2024/04/22
  • Topic: Work sessions for final project
"},{"location":"advanced/#finals","title":"Finals","text":"
  • Week 16. 2024/04/29
  • Topic: Finals Week
"},{"location":"advanced/01-introduction/","title":"Advanced Programming with C++","text":""},{"location":"advanced/01-introduction/#recapitulation","title":"Recapitulation","text":"

Before we start, let's recapitulate what we have learned in the previous course. Use the links below to refresh your memory. Or go straigth to the Introduction to Programming Course.

  • Variables
  • Decision-making
  • Loops;
  • Functions;
  • Strings;
  • Arrays;
  • Multidimensional arrays;
"},{"location":"advanced/01-introduction/#structs","title":"Structs","text":"

Structs in C++ are a way to represent a collection of data packed sequentially into a single data structure.

struct Enemy\n{\n    double health; \n    float x, y, z;\n    int score;\n};\n

The code above defines a type named as Enemy. This type has members(fields) named health, score with different types, and x, y and z with the same type.

struct Enemy\n{\n    double health; // 8 bytes\n    float x, y, z; // 4 bytes each. 12 bytes total\n    int score; // 4 bytes\n};\n

The memory usage of a struct is defined roughly by the sum of the memory usage of its members. Assuming the default sizing of common data types in C++, in the example above, the struct will use 8 bytes for the double, 3 times 4 bytes for the floats and 4 bytes for the int. The total memory usage for the struct will be 20 bytes.

"},{"location":"advanced/01-introduction/#data-alignment","title":"Data Alignment","text":"

The memory usage of a struct is not always exactly the sum of the memory usage of its members. The compiler may add padding bytes between the members of a struct to align the data in memory. This is done to improve the performance of the program. If you are programming in a multi-platform, cross-platform or even using different compilers, the size of the struct may vary even if it is the same.

struct InneficientMemoryLayoutExample\n{\n    char a;\n    int b;\n    char c;\n    char d;\n    char e;\n};\n

The struct above stores a total of 8 bytes of data, but the compiler allocates more. It will add 3 padding bytes between the int and the last char to align the data with biggest field in the struct. In this case, the total memory usage of the struct will be 12 bytes instead of the expected 8.

struct InneficientMemoryLayoutExample\n{\n    char a; // 1 byte\n    // compiler will add 3 padding bytes here\n    int b; // 4 bytes\n    char c; // 1 byte\n    char d; // 1 bytes\n    char e; // 1 byte\n    // compiler will add 1 padding byte here\n}; // total of 12 bytes allocated for this layout\n

You might think C++ compilers are smart and reorder the fields for us, but in order to maintain compatibility to C, the standard forbids it. So if you want to pack more data you will have to reorder the layout manually to something like this:

struct EfficientMemoryLayoutExample\n{\n    int b; // 4 bytes\n    char a; // 1 byte\n    char c; // 1 byte\n    char d; // 1 bytes\n    char e; // 1 byte\n}; // total of 8 bytes allocated for this layout\n

Alternatively you can use the #pragma pack directive to tell the compiler to pack the data in memory without padding bytes. But be aware that it will force the compiler to do more memory operations to get the data, thus it will slow your software. Besides that, pragma pack may not work in all compilers.

#pragma pack(push, 1) // push current alignment to stack and set alignment to 1 byte boundary\nstruct EfficientMemoryLayoutExample\n{\n    char a; // 1 byte\n    int b; // 4 bytes\n    char c; // 1 byte\n    char d; // 1 bytes\n    char e; // 1 byte\n};\n#pragma pack(pop)\n
"},{"location":"advanced/01-introduction/#bitfields","title":"Bitfields","text":"

If you really want to specify the layout location for each field and want to be sure that in will work on every compiler/platform, you will have to specify the number of bits each field will be able to use. This is called bitfields. But if you follow this path, you will have to be aware of the endianness of the platform you are working on.

struct BitfieldExample\n{\n    char a : 8; // 8 bits = 1 byte\n    int b : 32; // 32 bits = 4 bytes\n    char c : 8; // 8 bits = 1 byte\n    char d : 8; // 8 bits = 1 byte\n    char e : 8; // 8 bits = 1 byte\n}; // total of 8 bytes allocated for this layout\n

Another nice application of bitfields is when you do not want to use the full range of a data type. For example, if you want to store a number between 0 and 7, as in a chess game or other board games, you can use a char and waste 5 bits or you can use a bitfield and use only 3 bits.

struct BitfieldExample\n{\n    char row : 3; // 3 bits\n    char column : 3; // 3 bits\n    unsigned int state : 2; // 2 bit. will store 0, 1, 2 or 3\n}; // total of 1 byte allocated for this layout\n
"},{"location":"advanced/01-introduction/setup/","title":"Advanced Programming","text":""},{"location":"advanced/01-introduction/setup/#table-of-contents","title":"Table of Contents","text":"
  • Syllabus
  • Safe and welcoming space
  • Privacy and FERPA Compliance
  • Activities
    • Setup Github repository
    • Setup your IDE
    • Setup your Assignments project
    • Check Github Actions
  • Homework
"},{"location":"advanced/01-introduction/setup/#safe-and-welcoming-space","title":"Safe and welcoming space","text":"

TLDR: Be nice to each other, and don't copy code from the internet.

  • Code of Conduct
  • Notes on Submissions and Plagiarism

Some assignments can be hard, and you may feel tempted to copy code from the internet. Don't do it. You will only hurt yourself. You will learn nothing, and you will be caught. Once you get caught, you will be reported to the Dean of Students for academic dishonesty.

If you are struggling with an assignment, please contact me in my office-hours, or via discord. I am really slow at answering emails, so do it so only if something needs to be official. Quick questions are better asked in discord by me or your peers.

"},{"location":"advanced/01-introduction/setup/#privacy-and-ferpa-compliance","title":"Privacy and FERPA Compliance","text":"

FERPA WAIVER

If you are willing to share your final project publicly, you MUST SIGN this FERPA waiver.

via GIPHY

This class will use github extensively, in order to keep you safe, we will use private repositories. This means that only you and me will be able to see your code. In your final project, you must share it with your pair partner, and with me.

"},{"location":"advanced/01-introduction/setup/#activities","title":"Activities","text":"

TLDR: there is no TLDR, read the whole thing.

via GIPHY

"},{"location":"advanced/01-introduction/setup/#setup-github-repository","title":"Setup Github repository","text":"

Gitkraken

Optionally you might want to use GitKraken as your git user interface. Once you open it for the first time, signup using your github account with student pack associated. Install Gitkraken

  1. Signup on github and apply for Github Student Pack. Apply for Student Pack
  2. Send me your github username in class, so I will share the assignment repository with you;
  3. Create a private repository by clicking \"use as template\" the repository InfiniBrains/csi240 or Create CSI240 repository
  4. Share your repository with me. Click on settings, then collaborators, and add me as a collaborator. My username: @tolstenko
  5. Clone your repository to your computer. You can use the command line, or any Git GUI tool. I recommend GitKraken
"},{"location":"advanced/01-introduction/setup/#setup-your-ide","title":"Setup your IDE","text":"

Other IDEs

Optionally you might want to use any other IDE, such as Visual Studio, VSCode, XCode, NeoVim or any other, but I will not be able to help you with that.

I will use CLion in class, and I recommend you to use it as well so you can follow the same steps as me. It is free for students. And it works on Windows, Mac and Linux.

  1. Apply for student license for JetBrains or Apply Form
  2. You can install CLion only or install CLion via their Install Toolbox
  3. Open CLion for the first time, and login with your JetBrains account you created earlier;
"},{"location":"advanced/01-introduction/setup/#setup-your-assignments-project","title":"Setup your Assignments project","text":"

Common problems

Your machine might not have git on your path. If so, install it from git-scm.com and make sure you tick the option to add git to your PATH.

  1. Open your IDE, and click on \"Open Project\";
  2. Select the folder where you cloned your repository;
  3. Click on \"Open as Project\" or \"Open as CMake Project\";
  4. Wait for CMake to finish generating the project;
  5. On the top right corner, select the target you want to run/debug;
"},{"location":"advanced/01-introduction/setup/#check-github-actions","title":"Check Github Actions","text":"

Github Actions

Github Actions is a CI/CD tool that will run your tests automatically when you push your code to github. It will also run your tests when you create a pull request. It is a great tool to make sure your code is always working.

You might want to explore the folder .github/workflows to see how it works, but you don't need to change anything there.

Every commit you push to your repository will be automatically tested through Github Actions. You can see the results of the tests by clicking on the \"Actions\" tab on your repository.

  1. Go to your repository on github;
  2. Click on the \"Actions\" tab;
  3. Click on the \"Build and Test\" action;
  4. Click on the latest commit;
  5. On the jobs panel, Click on the assignment you want to see the results;
  6. Read the logs to see if your tests passed or failed;
  7. It is your job to read the README.md from every assignment and fulfill the requirements;
  8. You can run/debug the tests locally by targeting the assignmentXX_tests;
"},{"location":"advanced/01-introduction/setup/#homework","title":"Homework","text":"

via GIPHY

  1. Read the Syllabus fully. Pay attention to the schedule, outcomes and grading;
  2. Do all assignments on Canvas, specially the git training;
"},{"location":"advanced/02-oop/","title":"Introduction to Object-Oriented Programming","text":"

C++ in a language that keeps evolving and adding new features. The language is now a multi-paradigm language, which means that it supports different programming styles, and we are going to cover the Object-Oriented Programming (OOP) paradigm in this course.

"},{"location":"advanced/02-oop/#what-is-oop","title":"What is OOP?","text":"

Object-Oriented Programming is a paradigm that encapsulate data and their interactions into a single entity called object. The object is an instance of a class, which is a blueprint for the object. The class defines the data and the operations that can be performed on the data.

"},{"location":"advanced/02-oop/#class-declaration","title":"Class declaration","text":"

Here goes a simple declaration of a class Greeter:

Greeter.h
#include <string>\nclass Greeter {\n    std::string name; // this is a private attribute\npublic:\n    Greeter(std::string username) {\n        name = username;\n    }\n    void Greet(){\n        std::cout << \"Hello, \" << name << \"!\" << std::endl;\n    }\n};\n
main.cpp
#include \"Greeter.h\"\nint main() {\n    Greeter greeter(\"Stranger\");\n    greeter.Greet();\n}\n

If you run this code, the output will be:

Hello, Stranger!\n

Here goes a rework of the previous example using more robust concepts and multiple files:

Greeter.h
#include <string>\nclass Greeter {\n    // class members are private by default\n    std::string name;\npublic:\n    // public constructor\n    // explicit to avoid implicit conversions\n    // const to avoid modification\n    // ref to avoid copying\n    explicit Greeter(const std::string& name);\n    ~Greeter(); // public destructor\n    void Greet(); // public method\n};\n
Greeter.cpp
#include \"Greeter.h\"\n#include <iostream>\n// :: is the scope resolution operator\nGreeter::Greeter(const std::string& name): name(name) {\n    std::cout << \"I exist and I received \" << name << std::endl;\n}\nGreeter::~Greeter() {\n    std::cout << \"Goodbye, \" << name << \"!\" << std::endl;\n}\nvoid Greeter::Greet() {\n    std::cout << \"Hello, \" << name << \"!\" << std::endl;\n}\n
main.cpp
#include \"Greeter.h\"\nint main() {\n    Greeter greeter(\"Stranger\");\n    greeter.Greet();\n    // cannot use greeter.name because it is private\n}\n
"},{"location":"advanced/02-oop/#advantages-of-oop","title":"Advantages of OOP","text":""},{"location":"advanced/02-oop/#modularity","title":"Modularity","text":"

Classes can be used it in different parts of your code. You can even create libraries and share it with other people.

"},{"location":"advanced/02-oop/#encapsulation","title":"Encapsulation","text":"

Classes can hide their implementation details from the developer. The developer only needs the header file to use the class which acts as an interface.

"},{"location":"advanced/02-oop/#inheritance","title":"Inheritance","text":"

Classes can inherit from other classes. This allows you to reuse code and extend the functionality of existing classes expanding the original behavior.

We will cover details about inheritance in another moment.

"},{"location":"advanced/02-oop/#polymorphism","title":"Polymorphism","text":"

By its roots, the word polymorphism means \"many forms\". It can be applied to classes in many different aspects:

  • Function overload: Class can have multiple definitions of the same member function, and the compiler will choose the correct one based on the type of the object.
  • Casting: Classes can be casted to other classes. This allows you to treat an object of a derived class as an object of its base class, or more complex behaviors;

We will cover details about polymorphism in another moment.

"},{"location":"advanced/02-oop/#class-internals","title":"Class internals","text":""},{"location":"advanced/02-oop/#constructors","title":"Constructors","text":"

Constructors are special methods, they are called when an object is created, and don't return anything. They are used to initialize the object. If you don't define a constructor, the compiler will generate a default constructor for you.

class Greeter {\n    std::string name;\npublic:\n    Greeter(const std::string& name) {\n        this->name = name;\n    }\n};\n
"},{"location":"advanced/02-oop/#default-constructor","title":"Default constructor","text":"

A default constructor should be one of the following: - A constructor that can be called with no arguments; - A constructor that can be called with default arguments;

class Greeter {\n    std::string name;\npublic:\n    // Default constructor\n    Greeter() {\n        this->name = \"Stranger\";\n    }\n};\n

or

class Greeter {\n    std::string name;\npublic:\n    Greeter(const std::string& name = \"Stranger\") {\n        this->name = name;\n    }\n};\n

If no constructor is defined, the compiler will generate a default constructor for you.

"},{"location":"advanced/02-oop/#copy-constructor","title":"Copy constructor","text":"

A copy constructor is a constructor that takes a reference to an object of the same type as the class. It is used to initialize an object with another object of the same type.

class Greeter {\n    std::string name;\npublic:\n    Greeter(const Greeter& other) {\n        this->name = other.name;\n    }\n};\n
"},{"location":"advanced/02-oop/#move-constructor","title":"Move constructor","text":"

A move constructor is a constructor that takes a reference to an object of the same type as the class. It is used to initialize an object with another object of the same type. The difference between a copy constructor and a move constructor is that the move constructor takes ownership of the data from the other object, while the copy constructor copies the data from the other object.

class Greeter {\n    std::string name;\npublic:\n    Greeter(Greeter&& other) {\n        this->name = std::move(other.name);\n    }\n};\n
"},{"location":"advanced/02-oop/#explicit-constructor","title":"Explicit constructor","text":"

A constructor that can be called with only one argument is called an explicit constructor. This means that the compiler will not allow implicit conversions to happen.

Explicit constructors are useful to avoid unexpected behavior when calling the constructor.

class Greeter {\n    std::string name;\npublic:\n    explicit Greeter(const std::string& name) {\n        this->name = name;\n    }\n};\n
"},{"location":"advanced/02-oop/#destructors","title":"Destructors","text":"

Destructors are special methods, they are called when an object is destroyed.

Following the single responsibility principle, the destructor should be responsible for cleaning up the dynamically allocated data the object is holding.

If no destructor is defined, the compiler will generate a default destructor for you that might not be enough to clean up the data.

class IntContainer {\n    int* data;\n    // other members / methods\npublic:\n    // other members / methods\n    ~IntContainer() {\n        // deallocate data\n        delete[] data;\n    }\n};\n
"},{"location":"advanced/02-oop/#private-and-public","title":"Private and Public","text":"

By default, all members of a class are private. This means that they can only be accessed by the class itself. If you want to expose a member to the outside world, you have to declare it as public.

class Greeter {\n    std::string name; // private by default\npublic:\n    Greeter(const std::string& name) {\n        this->name = name;\n    }\n};\n
"},{"location":"advanced/02-oop/#dealing-with-private-members","title":"Dealing with private members","text":"

If your data is private, but you need to provide access or modify it, you can create public methods to do that.

  • Accessors: are the type of public methods that provides readability of the specific content;
  • Mutators: are the type of public methods that provides writability of the specific content;
class User {\n    std::string name; // private by default\npublic:\n    explicit User(const std::string& name) {\n        this->name = name;\n    }\n    // Accessor that returns a copy\n    // const at the end means that this function does not modify the object\n    std::string GetName() const {\n        return name;\n    }\n\n    // Accessor that returns a const reference\n    // returning ref does not use extra memory\n    // returning const the caller cannot modify the object\n    const std::string& GetNameRef() const {\n        return name;\n    }\n\n    // Mutator\n    void SetName(const std::string& name) {\n        this->name = name;\n    }\n};\n
"},{"location":"advanced/02-oop/#operator-and-","title":"Operator \".\" and \"->\"","text":"

When you have an object, you can access its members using the dot operator .. If you have a pointer to an object, you can access its members using the arrow operator ->.

int main(){\n    Greeter greeter(\"Stranger\");\n    greeter.Greet(); // dot operator\n    Greeter* greeterPtr = &greeter;\n    greeterPtr->Greet(); // arrow operator\n}\n
"},{"location":"advanced/02-oop/#scope-resolution-operator","title":"Scope resolution operator \"::\"","text":"

It can be used to access members of a class that are not part of an object. It can also be used to access members of a namespace.

namespace MyNamespace {\n    int myInt = 0;\n    class MyClass {\n    public:\n        // static vars are allocated in the data segment instead of the stack\n        static inline const int myInt = 1;\n        int myOtherInt = 2;\n    };\n    void MyFunction() {\n        int myInt = 3;\n        std::cout << myInt << std::endl; // 3\n        std::cout << MyNamespace::myInt << std::endl; // 0\n        std::cout << MyNamespace::MyClass::myInt << std::endl; // 1\n        std::cout << MyClass::myInt << std::endl; // 1\n        std::cout << MyNamespace::MyClass().myOtherInt << std::endl; // 2\n    }\n}\n
"},{"location":"advanced/02-oop/#differences-between-class-and-struct","title":"Differences between class and struct","text":"

In C++, the only difference between a class and a struct is the default access level. In a class, the default access level is private, while in a struct, the default access level is public.

class MyClass {\n    int myInt; // private by default\npublic:\n    MyClass(int myInt) {\n        this->myInt = myInt;\n    }\n    int GetMyInt() const {\n        return myInt;\n    }\n};\n\nstruct MyStruct {\n    // to achieve the same behavior as the class above\nprivate:\n    int myInt; \npublic:\n    MyStruct(int myInt) {\n        this->myInt = myInt;\n    }\n    int GetMyInt() const {\n        return myInt;\n    }\n};\n
"},{"location":"advanced/03-pointers/","title":"Pointers","text":""},{"location":"advanced/03-pointers/#pointer-arithmetic","title":"Pointer arithmetic","text":"

Pointer arithmetic is the arithmetic of pointers. You can call operators +, -, ++, --, +=, and -= on pointers passing an integer as the right operand.

#include <iostream>\n\nint main() {\n  int arr[] = {1, 2, 3, 4, 5};\n  int* ptr = arr; // ptr points to the first element of the array\n  std::cout << *ptr << std::endl; // prints 1\n  ptr++; // ptr points to the second element of the array\n  std::cout << *ptr << std::endl; // prints 2\n  ptr += 2; // ptr points to the fourth element of the array\n  std::cout << *ptr << std::endl; // prints 4\n  ptr--; // ptr points to the third element of the array\n  std::cout << *ptr << std::endl; // prints 3\n  std::cout << *(ptr + 1) << std::endl; // prints 4\n  std::cout << *(arr + 1) << std::endl; // prints 2\n  return 0;\n}\n
"},{"location":"advanced/03-pointers/#dynamic-arrays","title":"Dynamic arrays","text":"

Dynamic arrays are arrays that can be allocated and deallocated at runtime. They are useful when the size of the array is not known at compile time.

#include <iostream>\n\nint main() {\n  int n;\n  std::cin >> n; // read the size of the array\n  int* arr = new int[n]; // dynamic arry allocation\n  for (int i = 0; i < n; i++) {\n    arr[i] = i; // fill the array with values\n  }\n  for (int i = 0; i < n; i++) {\n    std::cout << arr[i] << \" \";\n  }\n  std::cout << std::endl;\n  delete[] arr; // return the memory to the system\n  return 0;\n}\n

In the example above, we read the size of the array from the standard input, allocate the array, fill it with values, print the values, and then deallocate the array.

"},{"location":"advanced/03-pointers/#array-decay","title":"Array decay","text":"

When an array is passed to a function, it decays into a pointer to its first element. This means that the size of the array is lost, and the function cannot know the size of the array.

#include <iostream>\n\n// another possible declaration: void print_array(int* arr, int n) {\nvoid print_array(int arr[], int n) {\n  for (int i = 0; i < n; i++) {\n    std::cout << arr[i] << \" \";\n  }\n  std::cout << std::endl;\n}\n\nint main() {\n  int arr[] = {1, 2, 3, 4, 5};\n  print_array(arr, 5);\n  return 0;\n}\n

So every time you pass an array to a function, you should also pass the size of the array.

"},{"location":"advanced/03-pointers/#matrix","title":"Matrix","text":"

A matrix is a two-dimensional array. It can be represented as an array of arrays;

#include <iostream>\n\nint main() {\n  int n, m;\n  std::cin >> n >> m; // read the size of the matrix\n  int** matrix = new int*[n]; // allocate the rows\n  // allocate the columns\n  for (int i = 0; i < n; i++) {\n    matrix[i] = new int[m]; \n  }\n  // fill the matrix with values\n  for (int i = 0; i < n; i++) {\n    for (int j = 0; j < m; j++) {\n      matrix[i][j] = i * m + j; \n    }\n  }\n  // print the matrix\n  for (int i = 0; i < n; i++) { \n    for (int j = 0; j < m; j++) {\n      std::cout << matrix[i][j] << \" \";\n    }\n    std::cout << std::endl;\n  }\n  for (int i = 0; i < n; i++) {\n    delete[] matrix[i]; // deallocate the columns\n  }\n  delete[] matrix; // deallocate the rows\n  return 0;\n}\n

In the example above, we read the size of the matrix from the standard input, allocate the rows, allocate the columns, fill the matrix with values, print the matrix, and then deallocate the matrix.

You can extend the concept of a matrix to a three-dimensional array, and so on.

"},{"location":"advanced/03-pointers/#matrix-linearization","title":"Matrix linearization","text":"

A matrix can be linearized into a one-dimensional array. This is useful when you want to be cache friendly.

#include <iostream>\n\nint main() {\n  int n, m;\n  std::cin >> n >> m; // read the size of the matrix\n  int* matrix = new int[n * m]; // allocate the matrix\n  // fill the matrix with values\n  for (int i = 0; i < n; i++) {\n    for (int j = 0; j < m; j++) {\n      matrix[i * m + j] = i * m + j; \n    }\n  }\n  // print the matrix\n  for (int i = 0; i < n; i++) {\n    for (int j = 0; j < m; j++) {\n      std::cout << matrix[i * m + j] << \" \";\n    }\n    std::cout << std::endl;\n  }\n  delete[] matrix; // deallocate the matrix\n  return 0;\n}\n
"},{"location":"advanced/03-pointers/#passing-parameters","title":"Passing parameters","text":"

The common way of passing parameter is a copy of the value. This is not efficient for large objects ex.: the contents of a huge text file.

#include <iostream>\n\nvoid printAndIncrease(int x) { // x is a copy of the value\n  std::cout << x << std::endl; \n  x++; // the copy is increased but the outer variable is not\n}\n\nint main() {\n  int x = 42;\n  printAndIncrease(x); // prints 42\n  printAndIncrease(x); // prints 42\n  return 0;\n}\n

You can pass a reference to the variable, so the function can modify the outer variable.

#include <iostream>\n\nvoid swap(int& a, int& b) { // a and b are references to the variables\n  int temp = a;\n  a = b;\n  b = temp;\n}\n\nint main() {\n  int x = 42, y = 24;\n  swap(x, y);\n  std::cout << x << \" \" << y << std::endl; // prints 24 42\n  return 0;\n}\n

You can also pass a pointer to the variable, so the function can modify the outer variable.

#include <iostream>\n\nvoid swap(int* a, int* b) { // a and b are pointers to the variables\n  int temp = *a;\n  *a = *b;\n  *b = temp;\n}\n\nint main() {\n  int x = 42, y = 24;\n  swap(&x, &y);\n  std::cout << x << \" \" << y << std::endl; // prints 24 42\n  return 0;\n}\n

As you can see passing as reference is more readable and less error-prone than passing as pointer. But both are valid, and you should be aware of both.

"},{"location":"advanced/03-pointers/#smart-pointers","title":"Smart pointers","text":"

Smart pointers are wrappers to raw pointers that manage the memory automatically. They are useful to avoid memory leaks and dangling pointers.

You can implement a naive smart pointer using a struct that will deallocate when it goes out of scope.

#include <iostream>\n\ntemplate <typename T>\nstruct SmartPointer {\n  T* ptr;\n  SmartPointer(T* ptr) : ptr(ptr) {}\n  ~SmartPointer() {\n    delete ptr;\n  }\n};\n\nint main() {\n  SmartPointer<int> sp(new int(42));\n  std::cout << *sp.ptr << std::endl; // prints 42\n  return 0;\n} // when sp goes out of scope, the destructor is called and the memory is deallocated\n

Note

The Standard Library implements 3 types of smart pointers: std::unique_ptr, std::shared_ptr, and std::weak_ptr.

"},{"location":"advanced/03-pointers/#stdunique_ptr","title":"std::unique_ptr","text":"

The std::unique_ptr is a smart pointer that owns the object exclusively. It is useful when you want to transfer the ownership of the object to another smart pointer.

#include <iostream>\n#include <memory>\n\nint main() {\n  // make_unique is a C++14 feature\n  std::unique_ptr<int> up = std::make_unique<int>(42);\n  // or you can just use:\n  // std::unique_ptr<int> up(new int(42));\n  std::cout << *up << std::endl; // prints 42\n  return 0;\n} // when up goes out of scope, the destructor is called and the memory is deallocated\n
"},{"location":"advanced/03-pointers/#stdshared_ptr","title":"std::shared_ptr","text":"

The std::shared_ptr is a smart pointer that owns the object with shared ownership. It is useful when you want to share the ownership of the object with another smart pointer. It is deallocated when the last std::shared_ptr goes out of scope.

#include <iostream>\n#include <memory>\n\nint main() {\n  std::shared_ptr<int> sp1 = std::make_shared<int>(42);\n  std::shared_ptr<int> sp2 = sp1;\n  std::cout << *sp1 << \" \" << *sp2 << std::endl; // prints 42 42\n  return 0;\n} // when sp1 and sp2 goes out of scope, the destructor is called and the memory is deallocated\n
"},{"location":"advanced/03-pointers/#stdweak_ptr","title":"std::weak_ptr","text":"

The std::weak_ptr is a smart pointer that owns the object with weak ownership. It is useful when you want to observe the object without owning it. It is deallocated when the last std::shared_ptr goes out of scope.

Note

std::weak_ptr will help solve the circular reference problem.

#include <iostream>\n#include <memory>\n\nint main() {\n  std::shared_ptr<int> sp1 = std::make_shared<int>(42);\n  std::weak_ptr<int> wp = sp1;\n  // in order to use a weak pointer, you have to lock it to tell others that you are using it\n  std::cout << *sp1 << \" \" << *wp.lock() << std::endl; // prints 42 42\n  return 0;\n} // when sp1 goes out of scope, the destructor is called and the memory is deallocated\n

Exaple of a circular reference:

#include <iostream>\n#include <memory>\n\nstruct A;\nstruct B;\n\nstruct A {\n  std::shared_ptr<B> b;\n  ~A() {\n    std::cout << \"A destructor\" << std::endl;\n  }\n};\n\nstruct B {\n  std::shared_ptr<A> a;\n  ~B() {\n    std::cout << \"B destructor\" << std::endl;\n  }\n};\n\nint main() {\n  std::shared_ptr<A> a = std::make_shared<A>();\n  std::shared_ptr<B> b = std::make_shared<B>();\n  a->b = b;\n  b->a = a;\n  return 0;\n} // memory is leaked: the destructors are not called, and the memory is not deallocated\n

You can solve the circular reference problem using std::weak_ptr.

#include <iostream>\n#include <memory>\n\nstruct A;\nstruct B;\n\nstruct A {\n  std::shared_ptr<B> b;\n  ~A() {\n    std::cout << \"A destructor\" << std::endl;\n  }\n};\n\nstruct B {\n  std::weak_ptr<A> a;\n  ~B() {\n    std::cout << \"B destructor\" << std::endl;\n  }\n};\n\nint main() {\n  std::shared_ptr<A> a = std::make_shared<A>();\n  std::shared_ptr<B> b = std::make_shared<B>();\n  a->b = b;\n  b->a = a;\n  return 0;\n} // when a and b goes out of scope, the destructors are called and the memory is deallocated\n
"},{"location":"advanced/04-operators/","title":"C++ custom Operators","text":"

In C++ you can define custom operators for your class using operator overloading. This allows you to define the behavior of operators when applied to objects of your class.

You might want to implement some of the following operators for your class:

  • arithmetic operators: +, -, *, /, %
  • comparison operators: ==, !=, <, >, <=, >=
  • spaceship operator: <=> (C++20)
  • unary operators: +, -, *, &, !, ~, ++, --
  • compound assignment operators: +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=
  • prefix increment and decrement operators: ++, --
  • postfix increment and decrement operators: ++, --
  • subscript operator: []
  • stream insertion and extraction operators: <<, >>
#include <iostream>\n\nstruct Vector2i {\n  int x, y;\n  Vector2i() : x(0), y(0) {}\n  Vector2i(int x, int y) : x(x), y(y) {}\n  // arithmetic operators\n  Vector2i operator+(const Vector2i& other) const {\n    return {x + other.x, y + other.y};\n  }\n  Vector2i operator-(const Vector2i& other) const {\n    return {x - other.x, y - other.y};\n  }\n  Vector2i operator*(int scalar) const {\n    return {x * scalar, y * scalar};\n  }\n  Vector2i operator/(int scalar) const {\n    return {x / scalar, y / scalar};\n  }\n  Vector2i operator*(const Vector2i& other) const {\n    return {x * other.x, y * other.y};\n  }\n  Vector2i operator/(const Vector2i& other) const {\n    return {x / other.x, y / other.y};\n  }\n  // comparison operators\n  bool operator==(const Vector2i& other) const {\n    return x == other.x && y == other.y;\n  }\n  bool operator!=(const Vector2i& other) const {\n    return !(*this == other);\n  }\n  // spaceship operator C++20\n  // useful when you want to compare two objects or\n  //   use it in std::map or std::set\n  auto operator<=>(const Vector2i& other) const {\n    if (x < other.x && y < other.y) return -1;\n    if (x == other.x && y == other.y) return 0;\n    return 1;\n  }\n\n  // unary operators\n  Vector2i operator-() const {\n    return Vector2i(-x, -y);\n  }\n  // compound assignment operators\n  Vector2i& operator+=(const Vector2i& other) {\n    x += other.x;\n    y += other.y;\n    return *this;\n  }\n  Vector2i& operator-=(const Vector2i& other) {\n    x -= other.x;\n    y -= other.y;\n    return *this;\n  }\n  Vector2i& operator*=(int scalar) {\n    x *= scalar;\n    y *= scalar;\n    return *this;\n  }\n  Vector2i& operator/=(int scalar) {\n    x /= scalar;\n    y /= scalar;\n    return *this;\n  }\n  // prefix increment and decrement operators\n  Vector2i& operator++() {\n    x++;\n    y++;\n    return *this;\n  }\n  Vector2i& operator--() {\n    x--;\n    y--;\n    return *this;\n  }\n  // postfix increment and decrement operators\n  Vector2i operator++(int) {\n    Vector2i temp = *this;\n    ++*this;\n    return temp;\n  }\n  Vector2i operator--(int) {\n    Vector2i temp = *this;\n    --*this;\n    return temp;\n  }\n  // subscript operator\n  int& operator[](int index) {\n    return index == 0 ? x : y;\n  }\n  // stream insertion operator\n  friend std::ostream& operator<<(std::ostream& stream, const Vector2i& vector) {\n    return stream << vector.x << \", \" << vector.y;\n  }\n  // stream extraction operator\n  friend std::istream& operator>>(std::istream& stream, Vector2i& vector) {\n    return stream >> vector.x >> vector.y;\n  }\n};\n

"},{"location":"advanced/04-operators/#special-operators","title":"Special operators","text":"

You can create special operators for your class such as:

  • () operator: function call operator
  • -> operator: member access operator
  • 'new' and 'delete' operators: memory allocation and deallocation operators

A nice usecase for function call operator is to create a functor, a class that acts like a function.

#include <iostream>\n\nstruct Adder {\n  int operator()(int a, int b) const {\n    return a + b;\n  }\n};\n\nint main() {\n  Adder adder;\n  std::cout << adder(1, 2) << std::endl; // 3\n  return 0;\n}\n

The -> operator is used to overload the member access operator. It is used to define the behavior of the arrow operator -> when applied to objects of your class.

#include <iostream>\n\nstruct Pointer {\n  int value;\n  int* operator->() {\n    return &value;\n  }\n};\n\nint main() {\n  Pointer pointer;\n  pointer.value = 42;\n  std::cout << *pointer << std::endl; // 42\n  return 0;\n}\n

You might want to overload the new and delete operators to define the behavior of memory allocation and deallocation for your class. Specially to track memory usage or to implement a custom memory pool. Or even overload it globally to track memory usage for the whole program.

#include <iostream>\n#include <cstdlib>\n\n// declare the alloc counter\nint alloc_counter = 0;\n\nvoid* operator new(std::size_t size) {\n  alloc_counter ++;\n  return std::malloc(size);\n}\n\nvoid operator delete(void* ptr) noexcept {\n  std::free(ptr);\n  alloc_counter--;\n}\n\nint main() {\n  int* ptr = new int;\n  std::cout << \"alloc_counter: \" << alloc_counter << std::endl; // 1\n  delete ptr;\n  std::cout << \"alloc_counter: \" << alloc_counter << std::endl; // 0\n  return 0;\n}\n
"},{"location":"algorithms/","title":"Data Structures and Algorithms","text":"

Students compare and contrast a variety of data structures. Students compare algorithms for tasks such as searching and sorting, while articulating efficiency in terms of time complexity. Students implement data structures and algorithms to support solution designs. Course Catalog

"},{"location":"algorithms/#requirements","title":"Requirements","text":"
  • Introduction to Programming
  • Advanced Programming
"},{"location":"algorithms/#textbook","title":"Textbook","text":"
  • Grokking Algorithms, Aditya Bhargava, Manning Publications, 2016. ISBN 978-1617292231
    • Champ link
    • Amazon
"},{"location":"algorithms/#student-centered-learning-outcomes","title":"Student-centered Learning Outcomes","text":"Bloom's Taxonomy on Learning Outcomes

Upon completion of the Data Structures and Algorithms course in C++, students should be able to:

"},{"location":"algorithms/#objective-outcomes","title":"Objective Outcomes","text":"
  • Analyze and contrast diverse data structures
  • Evaluate algorithmic efficiency using time complexity analysis
  • Implement, create and apply data structures and algorithms
  • Critically assess sorting algorithms
  • Analyze and contrast search algorithms
"},{"location":"algorithms/#assessment-outcomes","title":"Assessment Outcomes","text":"
  • Demonstrate the ability to evaluate and differentiate between various data structures, including arrays, linked lists, stacks, queues, trees, and graphs, based on their characteristics and use cases.
  • Evaluate algorithms by analyzing their time complexity, enabling the comparison of different algorithms and making informed decisions about their suitability for specific problem-solving scenarios.
  • Develop and implement solutions using appropriate data structures and algorithms to address real-world problems, demonstrating proficiency in translating solution designs into C++ code.
  • Investigate and compare the merits and drawbacks of brute-force and divide-and-conquer sorting algorithms, including quicksort, mergesort, and insertion sort, in order to make informed choices when selecting sorting techniques for specific scenarios.
  • Examine and compare the characteristics, advantages, and limitations of sequential, binary, depth-first, and breadth-first search algorithms, demonstrating the ability to choose the most suitable search strategy based on problem requirements.
"},{"location":"algorithms/#schedule-for-fall-2024","title":"Schedule for Fall 2024","text":"

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Event Date Classes Begin Aug. 26 Add/Drop Aug. 26 - 30 No Classes - College remains open Sept. 20 Indigenous Peoples Day Holiday Observance Oct. 14 Registration for Spring Classes Oct. 28 - Nov. 8 Last Day to Withdraw Nov. 8 Thanksgiving Break Nov. 25 - Nov. 29 Last Day of Classes Dec. 6 Finals Dec. 9 - Dec. 13 Winter Break Dec. 16 - Jan. 10"},{"location":"algorithms/#introduction","title":"Introduction","text":"
  • Week 1. 2024/08/26
  • Topic: Introduction to Data Structures and Algorithms
  • Activities:
    • Introduction
    • Read all materials shared on Canvas;
    • Do all assignments on Canvas;
"},{"location":"algorithms/#algorithm-analysis","title":"Algorithm Analysis","text":"
  • Week 2. 2024/00/02
  • Topic: Algorithm Analysis
"},{"location":"algorithms/#dynamic-data","title":"Dynamic Data","text":"
  • Week 3. 2024/09/09
  • Topic: Array, Linked Lists, Dynamic Arrays
"},{"location":"algorithms/#sorting","title":"Sorting","text":"
  • Week 4. Date: 2024/09/16
  • Topic: Bubble Sort, Selection Sort and Insertion Sort
"},{"location":"algorithms/#divide-conquer","title":"Divide & Conquer","text":"
  • Week 5. 2024/09/23
  • Topic: Merge Sort and Quick Sort
"},{"location":"algorithms/#hashtables","title":"Hashtables","text":"
  • Week 6. 2024/09/30
  • Topic: Hashtables
"},{"location":"algorithms/#midterms","title":"Midterms","text":"
  • Week 7. 2024/10/07
  • Topic: Midterms
"},{"location":"algorithms/#stacks-queues","title":"Stacks & Queues","text":"
  • Week 8. 2024/10/14
  • Topic: Stacks and Queues
"},{"location":"algorithms/#graphs","title":"Graphs","text":"
  • Week 9. 2024/10/21
  • Topic: Graphs
"},{"location":"algorithms/#dijkstra","title":"Dijkstra","text":"
  • Week 10. 2024/10/28
  • Topic: Dijkstra
"},{"location":"algorithms/#prim-jarnik","title":"Prim & Jarnik","text":"
  • Week 11. 2024/11/04
  • Topic: Prim's and Jarnik's Algorithm
"},{"location":"algorithms/#bst","title":"BST","text":"
  • Week 12. 2024/11/11
  • Topic: Binary Search Trees
"},{"location":"algorithms/#heap-and-priority-queue","title":"Heap and Priority queue","text":"
  • Week 13. 2024/11/18
  • Topic: Heap and Priority Queues
"},{"location":"algorithms/#break","title":"Break","text":"
  • Week 14. 2024/11/25
  • Topic: BREAK. No classes this week.
"},{"location":"algorithms/#project-presentation","title":"Project Presentation","text":"
  • Week 15. 2024/12/02
  • Topic: Work sessions for final project and presentations
"},{"location":"algorithms/#finals","title":"Finals","text":"
  • Week 16. 2024/12/09
  • Topic: Finals Week
"},{"location":"algorithms/#schedule-for-spring-2024","title":"Schedule for Spring 2024","text":"

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the materials and Canvas for the assignment deadlines.

College dates for the Spring 2024 semester:

Date Event Jan 16 Classes Begin Jan 16 - 22 Add/Drop Feb 26 - March 1 Midterms March 11 - March 15 Spring Break March 25 - April 5 Registration for Fall Classes April 5 Last Day to Withdraw April 8 - 19 Idea Evaluation April 12 No Classes - College remains open April 26 Last Day of Classes April 29 - May 3 Finals May 11 Commencement"},{"location":"algorithms/#introduction_1","title":"Introduction","text":"
  • Week 1. 2024/01/15
  • Topic: Introduction to Data Structures and Algorithms
  • Activities:
    • Introduction
    • Read all materials shared on Canvas;
    • Do all assignments on Canvas;
"},{"location":"algorithms/#algorithm-analysis_1","title":"Algorithm Analysis","text":"
  • Week 2. 2024/01/22
  • Topic: Algorithm Analysis
"},{"location":"algorithms/#dynamic-data_1","title":"Dynamic Data","text":"
  • Week 3. 2024/01/29
  • Topic: Array, Linked Lists, Dynamic Arrays
"},{"location":"algorithms/#sorting_1","title":"Sorting","text":"
  • Week 4. Date: 2024/02/05
  • Topic: Bubble Sort, Selection Sort and Insertion Sort
"},{"location":"algorithms/#divide-conquer_1","title":"Divide & Conquer","text":"
  • Week 5. 2024/02/12
  • Topic: Merge Sort and Quick Sort
"},{"location":"algorithms/#hashtables_1","title":"Hashtables","text":"
  • Week 6. 2024/02/19
  • Topic: Hashtables
"},{"location":"algorithms/#midterms_1","title":"Midterms","text":"
  • Week 7. Date: 2024/02/26
  • Topic: Midterms
"},{"location":"algorithms/#stacks-queues_1","title":"Stacks & Queues","text":"
  • Week 8. 2024/03/04
  • Topic: Stacks and Queues
"},{"location":"algorithms/#break_1","title":"Break","text":"
  • Week 09. 2024/03/11
  • Topic: Spring BREAK. No classes this week.
"},{"location":"algorithms/#graphs_1","title":"Graphs","text":"
  • Week 10. 2024/03/18
  • Topic: Graphs
"},{"location":"algorithms/#dijkstra_1","title":"Dijkstra","text":"
  • Week 11. 2024/03/25
  • Topic: Dijkstra
"},{"location":"algorithms/#prim-jarnik_1","title":"Prim & Jarnik","text":"
  • Week 12. 2024/04/01
  • Topic: Prim's and Jarnik's Algorithm
"},{"location":"algorithms/#bst_1","title":"BST","text":"
  • Week 13. 2024/04/01
  • Topic: Binary Search Trees
"},{"location":"algorithms/#heap-and-priority-queue_1","title":"Heap and Priority queue","text":"
  • Week 14. 2024/04/08
  • Topic: Heap and Priority Queues
"},{"location":"algorithms/#project-presentation_1","title":"Project Presentation","text":"
  • Week 15. 2024/04/15
  • Topic: Work sessions for final project
"},{"location":"algorithms/#finals_1","title":"Finals","text":"
  • Week 16. 2024/04/22
  • Topic: Finals Week
"},{"location":"algorithms/01-introduction/","title":"Data-Structures & Algorithms","text":""},{"location":"algorithms/01-introduction/#table-of-contents","title":"Table of Contents","text":"
  • Syllabus
  • Safe and welcoming space
  • Privacy and FERPA Compliance
  • Activities
    • Setup Github repository
    • Setup your IDE
    • Setup your Assignments project
    • Check Github Actions
  • Homework
"},{"location":"algorithms/01-introduction/#safe-and-welcoming-space","title":"Safe and welcoming space","text":"

TLDR: Be nice to each other, and don't copy code from the internet.

  • Code of Conduct
  • Notes on Submissions and Plagiarism

Some assignments can be hard, and you may feel tempted to copy code from the internet. Don't do it. You will only hurt yourself. You will learn nothing, and you will be caught. Once you get caught, you will be reported to the Dean of Students for academic dishonesty.

If you are struggling with an assignment, please contact me in my office-hours, or via discord. I am really slow at answering emails, so do it so only if something needs to be official. Quick questions are better asked in discord by me or your peers.

"},{"location":"algorithms/01-introduction/#privacy-and-ferpa-compliance","title":"Privacy and FERPA Compliance","text":"

FERPA WAIVER

If you are willing to share your final project publicly, you MUST SIGN this FERPA waiver.

via GIPHY

This class will use github extensively, in order to keep you safe, we will use private repositories. This means that only you and me will be able to see your code. In your final project, you must share it with your pair partner, and with me.

"},{"location":"algorithms/01-introduction/#activities","title":"Activities","text":"

TLDR: there is no TLDR, read the whole thing.

via GIPHY

"},{"location":"algorithms/01-introduction/#setup-github-repository","title":"Setup Github repository","text":"

Gitkraken

Optionally you might want to use GitKraken as your git user interface. Once you open it for the first time, signup using your github account with student pack associated. Install Gitkraken

  1. Signup on github and apply for Github Student Pack. Apply for Student Pack
  2. Send me your github username in class, so I will share the assignment repository with you;
  3. Create a private repository by clicking \"use as template\" the repository InfiniBrains/csi281 or Create CSI281 repository
  4. Share your repository with me. Click on settings, then collaborators, and add me as a collaborator. My username: @tolstenko
  5. Clone your repository to your computer. You can use the command line, or any Git GUI tool. I recommend GitKraken
"},{"location":"algorithms/01-introduction/#setup-your-ide","title":"Setup your IDE","text":"

Other IDEs

Optionally you might want to use any other IDE, such as Visual Studio, VSCode, XCode, NeoVim or any other, but I will not be able to help you with that.

I will use CLion in class, and I recommend you to use it as well so you can follow the same steps as me. It is free for students. And it works on Windows, Mac and Linux.

  1. Apply for student license for JetBrains or Apply Form
  2. You can install CLion only or install CLion via their Install Toolbox
  3. Open CLion for the first time, and login with your JetBrains account you created earlier;
"},{"location":"algorithms/01-introduction/#setup-your-assignments-project","title":"Setup your Assignments project","text":"

Common problems

Your machine might not have git on your path. If so, install it from git-scm.com and make sure you tick the option to add git to your PATH.

  1. Open your IDE, and click on \"Open Project\";
  2. Select the folder where you cloned your repository;
  3. Click on \"Open as Project\" or \"Open as CMake Project\";
  4. Wait for CMake to finish generating the project;
  5. On the top right corner, select the target you want to run/debug;
"},{"location":"algorithms/01-introduction/#check-github-actions","title":"Check Github Actions","text":"

Github Actions

Github Actions is a CI/CD tool that will run your tests automatically when you push your code to github. It will also run your tests when you create a pull request. It is a great tool to make sure your code is always working.

You might want to explore the folder .github/workflows to see how it works, but you don't need to change anything there.

Every commit you push to your repository will be automatically tested through Github Actions. You can see the results of the tests by clicking on the \"Actions\" tab on your repository.

  1. Go to your repository on github;
  2. Click on the \"Actions\" tab;
  3. Click on the \"Build and Test\" action;
  4. Click on the latest commit;
  5. On the jobs panel, Click on the assignment you want to see the results;
  6. Read the logs to see if your tests passed or failed;
  7. It is your job to read the README.md from every assignment and fulfill the requirements;
  8. You can run/debug the tests locally by targeting the assignmentXX_tests;
"},{"location":"algorithms/01-introduction/#homework","title":"Homework","text":"

via GIPHY

  1. Read the Syllabus fully. Pay attention to the schedule, outcomes and grading;
  2. Do all assignments on Canvas, specially the git training;
"},{"location":"algorithms/02-analysis/","title":"Algorthm Analysis","text":"

Before starting, lets thin about 3 problems:

For an array of size \\(N\\), dont overthink. Just answer:

  1. How many iterations a loop run to find a specific number inside an array? (naively)
  2. How many comparisons should I make to find two numbers in an array that sum a specific target? (naively)
  3. List all different shuffled arrays we can make? (naively) ex for n==3 123, 132, 213, 231, 312, 321
"},{"location":"algorithms/02-analysis/#how-to-measure-an-algorithm-mathematically","title":"How to measure an algorithm mathematically?","text":"find a number in a vector
int find(vector<int> v, int target) {\n    // how many iterations?\n    for (int i = 0; i < v.size(); i++) {\n        // how many comparisons?\n        if (v[i] == target) { \n        return i;\n        }\n    }\n    return -1;\n}\n
find two numbers sum in an array

vector<int> findsum2(vector<int> v, int target) {\n    // how many outer loop iterations?\n    for (int i = 0; i < v.size(); i++) {\n        // how many inner loop iterations?\n        for (int j = i+1; j < v.size(); j++) {\n            // how many comparisons?\n            if (v[i] + v[j] == target) {\n                return {i, j};\n            }\n        }\n    }\n    return {-1, -1};\n}\n
Check it out on leetcode. Can you solve it better?

Print all pormutations of an array
void generatePermutations(std::vector<int>& vec, int index) {\n    if (index == vec.size() - 1) {\n        // Print the current permutation\n        for (int num : vec) {\n            std::cout << num << \" \";\n        }\n        std::cout << std::endl;\n        return;\n    }\n\n    // how many swaps for every recursive call?\n    for (int i = index; i < vec.size(); ++i) { \n        // Swap the elements at indices index and i\n        std::swap(vec[index], vec[i]);\n\n        // Recursively generate permutations for the rest of the vector\n        // How deep this can go?\n        generatePermutations(vec, index + 1);\n\n        // Backtrack: undo the swap to explore other possibilities\n        std::swap(vec[index], vec[i]);\n    }\n}\n

Trying to be mathematicaly correct, the number of instructions the first one should be a function similar to this:

  1. \\(f(n) = a*n + b\\) : Where \\(b\\) is the cost of what runs before and after the main loop and \\(a\\) is the cost of the loop.
  2. \\(f(n) = a*n^2 + b*n + c\\) : Where \\(c\\) is the cost of what runs before and after the oter loop; \\(b\\) is the cost of the outer loop; and \\(a\\) is the cost of the inner loop;
  3. \\(f(n) = a*n!\\) : Where \\(a\\) is the cost of what runs before and after the outer loop;

To simplify, we remove the constants and the lower order terms:

  1. \\(f(n) = n\\)
  2. \\(f(n) = n^2\\)
  3. \\(f(n) = n!\\)
"},{"location":"algorithms/02-analysis/#difference-between-big-o-vs-big-theta-vs-big-omega-notations","title":"Difference between Big O vs Big Theta \u0398 vs Big Omega \u03a9 Notations","text":"Source: bigocheatsheet.com"},{"location":"algorithms/02-analysis/#big-o","title":"Big O","text":"
  • Most used notation;
  • Upper bound;
  • \"never worse than\";
  • A real case cannot be faster than it;
  • \\(0 <= func <= O\\)
"},{"location":"algorithms/02-analysis/#big-theta","title":"Big Theta \u0398","text":"
  • Wrongly stated as average;
  • Theta is two-sided;
  • Tight bound between 2 constants of the same function
  • \\(k1*\u0398 <= func <= k2*\u0398\\)
  • When \\(N\\) goes to infinite, it cannot be faster or slower than it;
"},{"location":"algorithms/02-analysis/#honorable-mentions","title":"Honorable mentions","text":"
  • Big Omega \u03a9: roughly the oposite of Big O;
  • Little o and Little Omega (\u03c9). The same concept from the big, but exclude the exact bound;
Source: freecodecamp.com"},{"location":"algorithms/02-analysis/#common-big-os","title":"Common Big Os","text":"

Logarithm

In computer science, when we say log, assume base 2, unless expressely stated;

Big O Name Example O(1) Constant sum two numbers O(lg(n)) Logarithmic binary search O(n) Linear search in an array O(n*lg(n)) Linearithmic Merge Sort O(n^c) Polinomial match 2 sum O(c^n) Exponential brute force password of size n O(n!) factorial list all combinations"},{"location":"algorithms/02-analysis/#what-is-logarithm","title":"What is logarithm?","text":"

Log is the inverse of exponentiation. It is the number of times you have to multiply a number by itself to get another number.

\\[ log_b(b^x) = x \\]"},{"location":"algorithms/02-analysis/#what-is-binary-search","title":"What is binary search?","text":"

In a binary search, we commonly divide the array in half (base 2), and check if the target is in the left or right half. Then we repeat the process until we find the target or we run out of elements.

Source: mathwarehouse.com"},{"location":"algorithms/02-analysis/#common-data-structures-and-algorithms","title":"Common data structures and algorithms","text":"Source: bigocheatsheet.com Source: bigocheatsheet.com"},{"location":"algorithms/02-analysis/#common-issues-and-misconceptions","title":"Common Issues and misconceptions","text":"
  • Big O and Theta are commonly mixed;
  • Hashtables: it is commonly assumed that queries on <map> or <set> being O(1); std:: <map> and <set> are not the ideal implementation! Watch this CppCon video for some deep level insights;
"},{"location":"algorithms/03-dynamic-data/","title":"Dynamic data","text":"

In C++'s Standard Library, we have a bunch of data structures already implemented for us. But you need to understand what is inside it in order do ponder the best tool for your job. In this week we are going to cover Dynamic Arrays (equivalent of std::vector) and Linked Lists(equivalent of std::list) .

"},{"location":"algorithms/03-dynamic-data/#dynamic-arrays","title":"Dynamic Arrays","text":"

A dynamic array is a random access, variable-size list data structure that allows elements to be added or removed. It is supplied with standard libraries in many modern mainstream programming languages. Let's try to implement one here for the sake of teaching purposes;

template<typename T>\nstruct Vector {\nprivate:\n  size_t _size;\n  size_t _capacity;\n  T* _data;\npublic:\n  // constructors\n  Vector() : _size(0), _capacity(1), _data(new T[1]) {}\n  explicit Vector(size_t size) : _size(size), _capacity(size), _data(new T[size]) {}\n\n  // destructor\n  ~Vector() { delete[] _data;}\n\n  // accessors\n  size_t size() const { return _size; }\n  size_t capacity() const { return _capacity;}\n\n  // push_back takes care of resizing the array if necessary\n  // this insertion will amortize the cost of resizing\n  void push_back(const T& value) {\n    if (_size == _capacity) {\n      // growth factor of 2\n      _capacity = _capacity == 0 ? 1 : _capacity * 2;\n      // allocate new memory\n      T* new_data = new T[_capacity];\n      // copy the old data into the new memory\n      for (size_t i = 0; i < _size; ++i)\n          new_data[i] = _data[i];\n      // release the old memory\n      delete[] _data;\n      // update the data pointer\n      _data = new_data;\n    }\n    _data[_size++] = value;\n  }\n\n  // operator[] for read-write access\n  T& operator[](size_t index) { return _data[index]; }\n\n  // other functions\n  // ...\n};\n

With this boilerplate you should be able to implement the rest of the functions for the Vector class.

"},{"location":"algorithms/03-dynamic-data/#linked-lists","title":"Linked Lists","text":"

A linked list is a linear access, variable-size list data structure that allows elements to be added or removed without the need of resizing. It is supplied with standard libraries in many modern mainstream programming languages. Let's try to build one here for the sake of teaching purposes;

// linkedlist\ntemplate <typename T>\nstruct LinkedList {\nprivate:\n    // linkedlist node\n    struct LinkedListNode {\n        T data;\n        LinkedListNode *next;\n        LinkedListNode(T data) : data(data), next(nullptr) {}\n    };\n\n    LinkedListNode *_head;\n    size_t _size;\npublic:\n    LinkedList() : _head(nullptr), _size(0) {}\n\n    // delete all nodes in the linkedlist\n    ~LinkedList() {\n        while (_head) {\n            LinkedListNode *temp = _head;\n            _head = _head->next;\n            delete temp;\n        }\n    }\n\n    // _size\n    size_t size() const { return _size; }\n\n    // is it possible to make it O(1) instead of O(n)?\n    void push_back(T data) {\n        if (!_head) {\n            _head = new LinkedListNode(data);\n            _size++;\n            return;\n        }\n        auto* temp = _head;\n        while (temp->next)\n            temp = temp->next;\n        temp->next = new LinkedListNode(data);\n        _size++;\n    }\n\n    // operator[] for read-write access\n    T &operator[](size_t index) {\n        auto* temp = _head;\n        for (size_t i = 0; i < index; i++)\n            temp = temp->next;\n        return temp->data;\n    };\n\n    // other functions\n};\n
"},{"location":"algorithms/03-dynamic-data/#homework","title":"Homework","text":"

For both, implement the following functions:

  • T* find(const T& value): returns a pointer to the first occurrence of the value in the collection, or nullptr if the value is not found.
  • bool contains(const T& value): returns true if the value is found in the collection, false otherwise.
  • T& at(size_t index): returns a reference to the element at the specified index. If the index is out of bounds, throw an std::out_of_range exception.
  • void push_front(const T& value): adds a new element to the beginning of the collection.
  • improve push_back of the linkedlist to be O(1) instead of O(n);
  • void insert_at(size_t index, const T& value): inserts a new element at the specified index. If the index is out of bounds, throw an std::out_of_range exception.
  • void pop_front(): removes the first element of the collection.
  • void pop_back(): removes the last element of the collection. Is it possible to make it O(1) instead of O(n)?
  • void remove_all(const T& value): removes all occurrences of the value from the collection.
  • void remove_at(size_t index): removes the element at the specified index. If the index is out of bounds, throw an std::out_of_range exception.

Now compare the complexity of linked list and dynamic array for each of the functions you implemented and create a table. What is the best data structure for each use case? Why?

"},{"location":"algorithms/04-sorting/","title":"Sorting algorithms","text":""},{"location":"algorithms/04-sorting/#swap-function","title":"Swap function","text":"
void swap(int &a, int &b) {\n  int temp = a;\n  a = b;\n  b = temp;\n}\n
"},{"location":"algorithms/04-sorting/#bubble-sort","title":"Bubble sort","text":"
void bubble_sort(int arr[], int n) {\n  for (int i = 0; i < n; i++) { // n passes\n    for (int j = 0; j < n - 1; j++) { // linear pass\n      if (arr[j] > arr[j + 1]) { // swap if the element is greater than the next\n        swap(arr[j], arr[j + 1]);\n      }\n    }\n  }\n}\n

Is it possible to optimize the bubble sort algorithm? - The example above always pass from the beginning to the end of the array, but it is possible to stop the inner loop earlier if the right side of the array is already sorted. - You can count how many swaps you did in the inner loop, and if you did 0 swaps, you can stop the outer loop.

"},{"location":"algorithms/04-sorting/#questions","title":"Questions:","text":"
  • What is the best case scenario for the bubble sort?
  • What is the worst case scenario for the bubble sort?
  • How many writes does the bubble sort do?
  • How many reads does the bubble sort do?
  • What is the time complexity of the bubble sort?
  • What is the space complexity of the bubble sort?
"},{"location":"algorithms/04-sorting/#selection-sort","title":"Selection sort","text":"
void selection_sort(int arr[], int n) {\n  for (int i = 0; i < n - 1; i++) { // n - 1 passes\n    int min_index = i; // the minimum element in the unsorted part of the array\n    for (int j = i + 1; j < n; j++) { // linear search\n      if (arr[j] < arr[min_index]) { // find the minimum element\n        min_index = j;\n      }\n    }\n    swap(arr[i], arr[min_index]); // swap the minimum element with the first element of the unsorted part\n  }\n}\n
"},{"location":"algorithms/04-sorting/#questions_1","title":"Questions:","text":"
  • What is the best case scenario for the selection sort?
  • What is the worst case scenario for the selection sort?
  • How many writes does the selection sort do?
  • How many reads does the selection sort do?
  • What is the time complexity of the selection sort?
  • What is the space complexity of the selection sort?
  • What is the difference between the bubble sort and the selection sort?
"},{"location":"algorithms/04-sorting/#insertion-sort","title":"Insertion sort","text":"
void insertion_sort(int arr[], int n) {\n  for (int i = 1; i < n; i++) { // n - 1 passes\n    int key = arr[i]; // the key element to be inserted in the sorted part of the array\n    int j = i - 1; // the last element of the sorted part of the array\n    while (j >= 0 && arr[j] > key) { // shift the elements to the right to make space for the key\n      arr[j + 1] = arr[j];\n      j--;\n    }\n    arr[j + 1] = key; // insert the key in the right position\n  }\n}\n
"},{"location":"algorithms/04-sorting/#questions_2","title":"Questions:","text":"
  • What is the best case scenario for the insertion sort?
  • What is the worst case scenario for the insertion sort?
  • How many writes does the insertion sort do?
  • How many reads does the insertion sort do?
  • What is the time complexity of the insertion sort?
  • What is the space complexity of the insertion sort?
  • What is the difference between the bubble sort, the selection sort, and the insertion sort?
"},{"location":"algorithms/04-sorting/#discussion","title":"Discussion","text":"
  • Why is sorting typically taught towards the beginning of an algorithms course?
  • Why do we study algorithms like bubble sort that are almost never used in practice?
  • Can you describe a non-comparative sorting algorithm?
  • Which of these sorting algorithms is the best: bubble sort, selection sort, or insertion sort?

Table of differences between the sorting algorithms:

Algorithm Best case Worst case Time complexity Space complexity Swaps Bubble O(n) O(n^2) O(N^2) O(1) O(n^2) Selection O(n^2) O(n^2) O(N^2) O(1) O(n) Insertion O(n) O(n^2) O(N^2) O(1) O(n^2)"},{"location":"algorithms/05-divide-and-conquer/","title":"Mergesort and QuickSort","text":"

Both algorithms are based on recursion and divide-and-conquer strategy. Both are efficient for large datasets, but they have different performance characteristics.

"},{"location":"algorithms/05-divide-and-conquer/#recursion","title":"Recursion","text":"

Recursion is a programming technique where a function calls itself. It is a powerful tool to solve problems that can be divided into smaller problems of the same type.

The recursion has two main parts:

  • Base case: the condition that stops the recursion;
  • Recursive case: the condition that calls the function again.

Let's see an example of a recursive function to calculate the factorial of a number:

#include <iostream>\n\nint factorial(int n) {\n  if (n == 0) {\n    return 1;\n  }\n  return n * factorial(n - 1);\n}\n
"},{"location":"algorithms/05-divide-and-conquer/#mergesort","title":"Mergesort","text":"

Mergesort divides the input array into two halves, calls itself for the two halves, and then merges the two sorted halves.

You can split the algorithm into two main parts:

  • Mergesort: the function that calls itself for the two halves;
  • Merge: the function that merges the two sorted halves.

image source

The algorthims will keep dividing the array (in red) until it reaches the base case, where the array has only one element(in gray). Then it will merge the two sorted subarrays (in green).

image source

"},{"location":"algorithms/05-divide-and-conquer/#mergesort-time-complexity","title":"Mergesort time complexity","text":"
  • Mergesort is time O(n*lg(n)) in the worst case scenario. It is the best time complexity for a comparison-based sorting algorithm.
  • The algorithm is stable. It maintain the relative order of elements with the same keys during the sorting process.
"},{"location":"algorithms/05-divide-and-conquer/#mergesort-implementation","title":"Mergesort implementation","text":"
#include <iostream>\n#include <vector>\n#include <queue>\n\n// inplace merge without extra space\ntemplate <typename T>\nrequires std::is_arithmetic<T>::value // C++20\nvoid mergeInplace(std::vector<T>& arr, const size_t start, size_t mid,  const size_t end) {\n  size_t left = start;\n  size_t right = mid + 1;\n\n  while (left <= mid && right <= end) {\n    if (arr[left] <= arr[right]) {\n      left++;\n    } else {\n      T temp = arr[right];\n      for (size_t i = right; i > left; i--) {\n        arr[i] = arr[i - 1];\n      }\n      arr[left] = temp;\n      left++;\n      mid++;\n      right++;\n    }\n  }\n}\n\n// Merge two sorted halves\ntemplate <typename T>\nrequires std::is_arithmetic<T>::value // C++20\nvoid merge(std::vector<T>& arr, const size_t start, const size_t mid,  const size_t end) {\n  // create a temporary array to store the merged array\n  std::vector<T> temp(end - start + 1);\n\n  // indexes for the subarrays:\n  const size_t leftStart = start;\n  const size_t leftEnd = mid;\n  const size_t rightStart = mid + 1;\n  const size_t rightEnd = end;\n\n  // indexes for\n  size_t tempIdx = 0;\n  size_t leftIdx = leftStart;\n  size_t rightIdx = rightStart;\n\n  // merge the subarrays\n  while (leftIdx <= leftEnd && rightIdx <= rightEnd) {\n    if (arr[leftIdx] < arr[rightIdx])\n      temp[tempIdx++] = arr[leftIdx++];\n    else\n      temp[tempIdx++] = arr[rightIdx++];\n  }\n\n  // copy the remaining elements of the left subarray\n  while (leftIdx <= leftEnd)\n    temp[tempIdx++] = arr[leftIdx++];\n\n  // copy the remaining elements of the right subarray\n  while (rightIdx <= rightEnd)\n    temp[tempIdx++] = arr[rightIdx++];\n\n  // copy the merged array back to the original array\n  std::copy(temp.begin(), temp.end(), arr.begin() + start);\n}\n\n// recursive mergesort\ntemplate <typename T>\nrequires std::is_arithmetic<T>::value // C++20\nvoid mergesortRecursive(std::vector<T>& arr,\n                        size_t left,\n                        size_t right) {\n  if (right - left > 0) {\n    size_t mid = (left + right) / 2;\n    mergesortRecursive(arr, left, mid);\n    mergesortRecursive(arr, mid+1, right);\n    merge(arr, left, mid, right);\n    // if the memory is limited, use the inplace merge at the cost of performance\n    // mergeInplace(arr, left, mid - 1, right - 1);\n  }\n}\n\n// interactive mergesort\ntemplate <typename T>\nrequires std::is_arithmetic<T>::value // C++20\nvoid mergesortInteractive(std::vector<T>& arr) {\n  for(size_t width = 1; width < arr.size(); width *= 2) {\n    for(size_t left = 0; left < arr.size(); left += 2 * width) {\n      size_t mid = std::min(left + width, arr.size());\n      size_t right = std::min(left + 2 * width, arr.size());\n      merge(arr, left, mid - 1, right - 1);\n      // if the memory is limited, use the inplace merge at the cost of performance\n      // mergeInplace(arr, left, mid - 1, right - 1);\n    }\n  }\n}\n\n\nint main() {\n  std::vector<int> arr1;\n  for(int i = 1000; i > 0; i--)\n    arr1.push_back(rand()%1000);\n  std::vector<int> arr2 = arr1;\n\n  for(auto i: arr1) std::cout << i << \" \";\n  std::cout << std::endl;\n\n  mergesortRecursive(arr1, 0, arr1.size() - 1);\n  for(auto i: arr1) std::cout << i << \" \";\n  std::cout << std::endl;\n\n  mergesortInteractive(arr2);\n  for(auto i: arr2) std::cout << i << \" \";\n  std::cout << std::endl;\n\n  return 0;\n}\n
"},{"location":"algorithms/05-divide-and-conquer/#mergesort-space-complexity","title":"Mergesort space complexity","text":"

You can implement Mergesort in two ways:

  • Recursive: the function calls itself for the two halves;
  • Iterative: the function uses a loop to merge the two sorted halves.

The interactive version is more efficient than the recursive version, but it is more complex to understand. But both uses the same core algorithm to merge the two sorted halves.

The main issue with Mergesort is that it requires extra space O(n) to merge the subarrays, which can be problem for large datasets.

  • The recursive version will increase the call stack by O(lg(n) and can potentially cause a stack overflow;
  • The iterative version does not add pressure to the stack;
"},{"location":"algorithms/05-divide-and-conquer/#quicksort","title":"QuickSort","text":"

Quicksort is prtetty similar to mergesort, but it solves the extra memory allocation at expense of stability. So quicksort is an in-place and unstable sorting algorithm.

One of the core strategy of quicksort is pivoting. It will be selected and the array will be partitioned in two subarrays: one with elements smaller than the pivot (left) and the other with elements greater than the pivot (right).

The partitioning process consists of the following steps:

  • Select a pivotIndex (left, right, random or median);
  • Swap the pivot with the leftmost element (this can be delayed to the end of the step);
  • Set the pivot to the leftmost element (assuming you swapped);
  • Set the left and right indexes;
  • While the left index is less than or equal to the right index:
    • If the left element is less than or equal to the pivot, increment the left index;
    • If the right element is greater than the pivot, decrement the right index;
    • If the left element is greater than the pivot and the right element is less than or equal to the pivot, swap the left and right elements;

source

"},{"location":"algorithms/05-divide-and-conquer/#quicksort-time-complexity","title":"Quicksort time complexity","text":"

The main issue with quicksort is that it can degrade to O(n^2) in an already sorted array. To solve this issue, we can select a random pivot, or the median of the first, middle and last element of the array. This can increase the stability of the algorithm at the expense of performance. The best case scenario is O(n*lg(n)) and the average case is O(n*lg(n)).

"},{"location":"algorithms/05-divide-and-conquer/#quicksort-implementation","title":"QuickSort implementation","text":"
#include <iostream>\n#include <vector>\n#include <utility>\n#include <stack>\n#include <random>\n\nusing std::stack;\nusing std::swap;\nusing std::pair;\nusing std::vector;\nusing std::cout;\n\n// Function to generate a random pivot index within the range [left, right]\ntemplate<typename T>\nrequires std::integral<T> // c++20\nT randomRange(T left, T right) {\n    static std::random_device rd;\n    static std::mt19937 gen(rd());\n    std::uniform_int_distribution<T> dist(left, right);\n    return dist(gen);\n}\n\n// partition\ntemplate<typename T>\nrequires std::is_arithmetic_v<T>\nsize_t partition(std::vector<T>& arr, size_t left, size_t right) {\n    // random pivot to increase stability at the cost of performance by random call\n    size_t pivotIndex = randomRange(left, right);\n    swap(arr[left], arr[pivotIndex]);\n\n    size_t pivot = left;\n    size_t l = left + 1;\n    size_t r = right;\n\n    while (l <= r) {\n        if (arr[l] <= arr[pivot]) l++;\n        else if (arr[r] > arr[pivot]) r--;\n        else swap(arr[l], arr[r]);\n    }\n    swap(arr[pivot], arr[r]);\n    return r;\n}\n\n// quicksort recursive\ntemplate<typename T>\nrequires std::is_arithmetic_v<T>\nvoid quicksortRecursive(std::vector<T>& arr, size_t left, size_t right) {\n    if (left < right) {\n        // partition the array\n        size_t pivot = partition(arr, left, right);\n        // recursive call to left and right subarray\n        quicksortRecursive(arr, left, pivot - 1);\n        quicksortRecursive(arr, pivot + 1, right);\n    }\n}\n\n// quicksort interactive\ntemplate<typename T>\nrequires std::is_arithmetic_v<T>\nvoid quicksortInteractive(std::vector<T>& arr, size_t left, size_t right) {\n    // simulate recursive call and avoid potential stack overflow\n    // std::stack allocate memory to hold data content on heap.\n    stack<pair<size_t, size_t>> stack;\n    // produce the initial state\n    stack.emplace(left, right);\n    // iterate\n    while (!stack.empty()) {\n        // consume\n        auto [left, right] = stack.top(); // C++17\n        stack.pop();\n        if (left < right) {\n            auto pivot = partition(arr, left, right);\n            // produce\n            stack.emplace(left, pivot - 1);\n            stack.emplace(pivot + 1, right);\n        }\n    }\n}\n\nint main() {\n    std::vector<int> arr1;\n    for (int i = 0; i < 100; i++) arr1.push_back(rand() % 100);\n    vector<int> arr2 = arr1;\n\n    for (auto& i : arr1) cout << i << \" \";\n    cout << std::endl;\n\n    quicksortRecursive(arr1, 0, arr1.size() - 1);\n    for (auto& i : arr1) cout << i << \" \";\n    cout << std::endl;\n\n    quicksortInteractive(arr2, 0, arr2.size() - 1);\n    for (auto& i : arr2) cout << i << \" \";\n    cout << std::endl;\n\n    return 0;\n}\n
"},{"location":"algorithms/05-divide-and-conquer/#quicksort-space-consumption","title":"Quicksort space consumption","text":"
  • The recursive version of quicksort can increase the function call stack by O(lg(n)) on average, but it can degrade to O(n) in the worst case scenario. Potentially causing a stack overflow;
  • The interactive version of quicksort avoids the function call stack issue, avoiding stack overflow. But the memory required for the replacement is still O(lg(n)) on average and O(n) for the indexes in the worst case scenario.
"},{"location":"algorithms/06-hashtables/","title":"Hastables","text":"

Hashtables ane associative datastructures that stores key-value pairs. It uses a hash function to compute an index into an array of buckets or slots, from which the desired value can be found.

The core of the generic associative container is to implement ways to get and set values by keys such as:

  • void insert(K key, V value): Add a new key-value pair to the hashtable. If the key already exists, update the value.
  • V at(K key): Get the value of a given key. If the key does not exist, return a default value.
  • void remove(K key): Remove a key-value pair from the hashtable.
  • bool contains(K key): Check if a key exists in the hashtable.
  • int size(): Get the number of key-value pairs in the hashtable.
  • bool isEmpty(): Check if the hashtable is empty.
  • void clear(): Remove all key-value pairs from the hashtable.
  • V& operator[](K key): Get the value of a given key. If the key does not exist, insert a new key-value pair with a default value.
"},{"location":"algorithms/06-hashtables/#key-value-pairs","title":"Key-value pairs","text":"

In C++ you could use std::pair from the utility library to store key-value pairs.

#include <utility>\n#include <iostream>\n\nint main() {\n  std::pair<int, int> pair = std::make_pair(1, 2);\n  std::cout << pair.first << \" \" << pair.second << std::endl;\n  // prints 1 2\n  return 0;\n}\n

Or you could create your own key-value pair class.

#include <iostream>\n\ntemplate <typename K, typename V>\nstruct KeyValuePair {\n  K key;\n  V value;\n  KeyValuePair(K key, V value) : key(key), value(value) {}\n};\n\nint main() {\n  KeyValuePair<int, int> pair(1, 2);\n  std::cout << pair.key << \" \" << pair.value << std::endl;\n  // prints 1 2\n  return 0;\n}\n
"},{"location":"algorithms/06-hashtables/#hash-function","title":"Hash function","text":"

The hash function will process the key data and return an index. Usually in C++, the index is of type size_t which is biggest unsigned integer the platform can handle.

The hash function should be fast and should distribute the keys uniformly across the array of buckets. The hash function should be deterministic, meaning that the same key should always produce the same hash.

If the size of your key is less than the size_t you could just use the key casted to size_t as the hash function. If it is not, you will have to implement your own hash function. You probably should use bitwise operations to do so.

struct MyCustomDataWith128Bits {\n  uint32_t a;\n  uint32_t b;\n  uint32_t c;\n  uint32_t d;\n  size_t hash() const {\n    return (a << 32) ^ (b << 24) ^ (c << 16) ^ d;\n  }\n};\n

Think a bit and try to come up with a nice answer: what is the ideal hash function for a given type? What are the requirements for a good hash function?

"},{"location":"algorithms/06-hashtables/#special-case-string-or-arrays","title":"Special case: String or arrays","text":"

In order to use strings as keys, you will have to create a way to convert the string's underlying data structure into a size_t. You could use the std::hash function from the functional library. Or create your own hash function.

#include <iostream>\n#include <functional>\n\nsize_t hash(const std::string& key) {\n  size_t hash=0; // accumulator pattern\n  // the cost of this operation is O(n)\n  for (char c : key)\n    hash = (hash << 5) ^ c;\n  return hash;\n}\n\nint main() {\n  std::hash<std::string> hash;\n  std::string key = \"hello\";\n  std::cout << hash(key) << std::endl;\n  // prints number\n  return 0;\n}\n

You can hide and amortize the cost of the hash function by cashing it. There are plenty of ideas for that. Try to come up with your own.

"},{"location":"algorithms/06-hashtables/#hash-tables","title":"Hash tables","text":"

Now that you have the hash function for you type and the key-value data structure, you can implement the hash table.

There are plenty of algorithms to do so, and even the std::unordered_map is not the best, please watch those videos to understand the trade-offs and the best way to implement a hash table.

  • CppCon 2017: Matt Kulukundis \u201cDesigning a Fast, Efficient, Cache-friendly Hash Table, Step by Step\u201d

For the sake of simplicity I will use the operator modulo to convert the hash into an index array. This is not the best way to do so, but it is the easiest way to implement a hash table.

"},{"location":"algorithms/06-hashtables/#collision-resolution","title":"Collision resolution","text":""},{"location":"algorithms/06-hashtables/#linked-lists","title":"Linked lists","text":"

Assuming that your hash function is not perfect, you will have to deal with collisions. Two or more different keys could produce the same hash. There are plenty of ways to deal with that, but the easiest way is to use a linked list to store the key-value pairs that have the same hash.

Try to come up with your own strategy to deal with collisions.

source

"},{"location":"algorithms/06-hashtables/#key-restrictions","title":"Key restrictions","text":"

In order for the hash table to work, the key should be:

  • not modifiable
  • implement a hash function
  • implement the == operator

In C++20 you can use the concept feature to enforce those restrictions.

// concept for a hash table\ntemplate <typename T>\nconcept HasHashFunction =\nrequires(T t, T u) {\n  { t.hash() } -> std::convertible_to<std::size_t>;\n  { t == u } -> std::convertible_to<bool>;\n  std::is_const_v<T>;\n} || requires(T t, T u) {\n  { std::hash<T>{}(t) } -> std::convertible_to<std::size_t>;\n  { t == u } -> std::convertible_to<bool>;\n};\n\n\nint main() {\n  struct MyHashableType {\n    int value;\n    size_t hash() const {\n      return value;\n    }\n    bool operator==(const MyHashableType& other) const {\n      return value == other.value;\n    }\n  };\n  static_assert(HasHashFunction<const MyHashableType>);\n  static_assert(HasHashFunction<int>);\n  return 0;\n}\n

But you can require more from the key if you are going to implement a more complex collision resolution strategy.

"},{"location":"algorithms/06-hashtables/#hash-table-implementation-with-linked-lists-chaining","title":"Hash table implementation with linked lists (chaining)","text":"

This implementation is naive and not efficient. It is just to give you an idea of how to implement a hash table.

#include <iostream>\n\n// key should not be modifiable\n// implements hash function and implements == operator\ntemplate <typename T>\nconcept HasHashFunction =\nrequires(T t, T u) {\n  { t.hash() } -> std::convertible_to<std::size_t>;\n  { t == u } -> std::convertible_to<bool>;\n  std::is_const_v<T>;\n} || requires(T t, T u) {\n  { std::hash<T>{}(t) } -> std::convertible_to<std::size_t>;\n  { t == u } -> std::convertible_to<bool>;\n};\n\n// hash table\ntemplate <HasHashFunction K, typename V>\nstruct Hashtable {\nprivate:\n    // key pair\n    struct KeyValuePair {\n        K key;\n        V value;\n        KeyValuePair(K key, V value) : key(key), value(value) {}\n    };\n\n    // node of the linked list\n    struct HashtableNode {\n        KeyValuePair data;\n        HashtableNode* next;\n        HashtableNode(K key, V value) : data(key, value), next(nullptr) {}\n    };\n\n    // array of linked lists\n    HashtableNode** table;\n    int size;\npublic:\n    // the hashtable will start with a constant size. You can resize it if you want or use any other strategy\n    // a good size is something similar to the number of elements you are going to store\n    explicit Hashtable(size_t size) {\n        // you colud make it automatically resize and increase the complexity of the implementation \n        // for the sake of simplicity I will not do that\n        this->size = size;\n        table = new HashtableNode*[size];\n        for (size_t i = 0; i < size; i++) {\n            table[i] = nullptr;\n        }\n    }\nprivate:\n    inline size_t convertKeyToIndex(K t) {\n            return t.hash() % size;\n    }\npublic:\n    // inserts a new key value pair\n    void insert(K key, V value) {\n        // you can optionally resize the table and rearrange the elements if the table is too full\n        size_t index = convertKeyToIndex(key);\n        auto* node = new HashtableNode(key, value);\n        if (table[index] == nullptr) {\n            table[index] = node;\n        } else {\n            HashtableNode* current = table[index];\n            while (current->next != nullptr)\n                current = current->next;\n            current->next = node;\n        }\n    }\n\n    // contains the key\n    bool contains(K key) {\n        size_t index = convertKeyToIndex(key);\n        HashtableNode* current = table[index];\n        while (current != nullptr) {\n            if (current->data.key == key) {\n                return true;\n            }\n            current = current->next;\n        }\n        return false;\n    }\n\n    // subscript operator\n    // creates a new element if the key does not exist\n    // fails if the key is not found\n    V& operator[](K key) {\n        size_t index = convertKeyToIndex(key);\n        HashtableNode* current = table[index];\n        while (current != nullptr) {\n            if (current->data.key == key) {\n                return current->data.value;\n            }\n            current = current->next;\n        }\n        throw std::out_of_range(\"Key not found\");\n    }\n\n    // deletes the key\n    // fails if the key is not found\n    void remove(K key) {\n        size_t index = convertKeyToIndex(key);\n        HashtableNode* current = table[index];\n        HashtableNode* previous = nullptr;\n        while (current != nullptr) {\n            if (current->data.key == key) {\n                if (previous == nullptr) {\n                    table[index] = current->next;\n                } else {\n                    previous->next = current->next;\n                }\n                delete current;\n                return;\n            }\n            previous = current;\n            current = current->next;\n        }\n        throw std::out_of_range(\"Key not found\");\n    }\n\n    ~Hashtable() {\n        for (size_t i = 0; i < size; i++) {\n            HashtableNode* current = table[i];\n            while (current != nullptr) {\n                HashtableNode* next = current->next;\n                delete current;\n                current = next;\n            }\n        }\n    }\n};\n\nstruct MyHashableType {\n    int value;\n    size_t hash() const {\n        return value;\n    }\n    bool operator==(const MyHashableType& other) const {\n        return value == other.value;\n    }\n};\n\nint main() {\n    // keys shouldn't be modifiable, implement hash function and == operator\n    Hashtable<const MyHashableType, int> hashtable(5);\n    hashtable.insert(MyHashableType{1}, 1);\n    hashtable.insert(MyHashableType{2}, 2);\n    hashtable.insert(MyHashableType{3}, 3);\n    hashtable.insert(MyHashableType{6}, 6); // should add to the same index as 1\n\n    std::cout << hashtable[MyHashableType{1}] << std::endl;\n    std::cout << hashtable[MyHashableType{2}] << std::endl;\n    std::cout << hashtable[MyHashableType{3}] << std::endl;\n    std::cout << hashtable[MyHashableType{6}] << std::endl;\n    return 0;\n}\n
"},{"location":"algorithms/06-hashtables/#open-addressing-with-linear-probing","title":"Open addressing with linear probing","text":"

Open addressing is a method of collision resolution in hash tables. In this approach, each cell is not a pointer to the linked list of contents of that bucket, but instead contains a single key-value pair. In linear probing, when a collision occurs, the next cell is checked. If it is occupied, the next cell is checked, and so on, until an empty cell is found.

source

The main advantage of open addressing is cache-friendliness. The main disadvantage is that it is more complex to implement, and it is not as efficient as linked lists when the table is too full. That's why we have to resize the table earlier, usually at 50% full, but at least 70% full.

source

In this implementation below, I have implemented a strategy to resize the table when it is half full. This is a common strategy to mitigate the O(n) search time when we have a lot of collisions. But on each resize, we have to rehash all elements: O(n) when it grows. This growth will occur rarely so this O(n) is amortized.

"},{"location":"algorithms/06-hashtables/#implementation-with-open-addressing-and-linear-probing","title":"Implementation with open addressing and linear probing","text":"
#include <iostream>\n\n// key should not be modifiable\n// implements hash function and implements == operator\ntemplate <typename T>\nconcept HasHashFunction =\nrequires(T t, T u) {\n  { t.hash() } -> std::convertible_to<std::size_t>;\n  { t == u } -> std::convertible_to<bool>;\n  std::is_const_v<T>;\n} || requires(T t, T u) {\n  { std::hash<T>{}(t) } -> std::convertible_to<std::size_t>;\n  { t == u } -> std::convertible_to<bool>;\n};\n\n// hash table\ntemplate <HasHashFunction K, typename V>\nstruct Hashtable {\nprivate:\n  // key pair\n  struct KeyValuePair {\n    K key;\n    V value;\n    KeyValuePair(K key, V value) : key(key), value(value) {}\n  };\n\n  // array of linked lists\n  KeyValuePair** table;\n  int size;\n  int capacity;\npublic:\n  // a good size is something 2x bigger than the number of elements you are going to store\n  explicit Hashtable(size_t capacity=1) {\n    if(capacity == 0)\n      throw std::invalid_argument(\"Capacity must be greater than 0\");\n    // you could make it automatically resize and increase the complexity of the implementation\n    // for the sake of simplicity I will not do that\n    this->size = 0;\n    this->capacity = capacity;\n    table = new KeyValuePair*[capacity];\n    for (size_t i = 0; i < capacity; i++)\n      table[i] = nullptr;\n  }\nprivate:\n  inline size_t convertKeyToIndex(K t) {\n    return t.hash() % capacity;\n  }\npublic:\n  // inserts a new key value pair\n  // this implementation uses open addressing and resize the table when it is half full\n  void insert(K key, V value) {\n    size_t index = convertKeyToIndex(key);\n    // resize if necessary\n    // in open addressing, it is common to resize when the table is half full\n    // this help mitigate O(n) search time when we have a lot of collisions\n    // but on each resize, we have to rehash all elements: O(n)\n    if (size >= capacity/2) {\n      auto oldTable = table;\n      table = new KeyValuePair*[capacity*2];\n      capacity *= 2;\n      for (size_t i = 0; i < capacity; i++)\n        table[i] = nullptr;\n      size_t oldSize = size;\n      size = 0;\n      // insert all elements again\n      for (size_t i = 0; i < oldSize; i++) {\n        if (oldTable[i] != nullptr) {\n          insert(oldTable[i]->key, oldTable[i]->value);\n          delete oldTable[i];\n        }\n      }\n      delete[] oldTable;\n    }\n    // insert the new element\n    KeyValuePair* newElement = new KeyValuePair(key, value);\n    while (table[index] != nullptr) // find the next open index\n      index = (index + 1) % capacity;\n    table[index] = newElement;\n    size++;\n  }\n\n  // contains the key\n  bool contains(K key) {\n    size_t index = convertKeyToIndex(key);\n    KeyValuePair* current = table[index];\n    while (current != nullptr) {\n      if (current->key == key) {\n        return true;\n      }\n      index = (index + 1) % capacity;\n      current = table[index];\n    }\n\n    return false;\n  }\n\n  // subscript operator\n  // fails if the key is not found\n  V& operator[](K key) {\n    size_t index = convertKeyToIndex(key);\n    KeyValuePair* current = table[index];\n    while (current != nullptr) {\n      if (current->key == key) {\n        return current->value;\n      }\n      index = (index + 1) % capacity;\n      current = table[index];\n    }\n    throw std::out_of_range(\"Key not found\");\n  }\n\n  // deletes the key\n  // fails if the key is not found\n  void remove(K key) {\n    // ideal index\n    const size_t idealIndex = convertKeyToIndex(key);\n    size_t currentIndex = idealIndex;\n    // store the last index with the same hash so we move it to the position of the removed element\n    size_t lastIndexWithSameIdealIndex = idealIndex;\n    size_t indexOfTheRemovedElement = idealIndex;\n    // iterate until we find the element, or we find an empty slot\n    while (table[currentIndex] != nullptr) {\n      if (table[currentIndex]->key == key)\n        indexOfTheRemovedElement = currentIndex;\n      if (convertKeyToIndex(table[currentIndex]->key) == idealIndex)\n        lastIndexWithSameIdealIndex = currentIndex;\n      currentIndex = (currentIndex + 1) % capacity;\n    }\n    if(table[indexOfTheRemovedElement] == nullptr || table[indexOfTheRemovedElement]->key != key)\n      throw std::out_of_range(\"Key not found\");\n    // mave the last element with the same key to the position of the removed element\n    delete table[indexOfTheRemovedElement];\n    table[indexOfTheRemovedElement] = table[lastIndexWithSameIdealIndex];\n    table[lastIndexWithSameIdealIndex] = nullptr;\n\n    // todo: shrink the table if it is too empty\n  }\n\n  ~Hashtable() {\n    for (size_t i = 0; i < capacity; i++) {\n      if (table[i] != nullptr)\n        delete table[i];\n    }\n    delete[] table;\n  }\n};\n\nstruct MyHashableType {\n  int value;\n  size_t hash() const {\n    return value;\n  }\n  bool operator==(const MyHashableType& other) const {\n    return value == other.value;\n  }\n};\n\nint main() {\n  // keys shouldn't be modifiable, implement hash function and == operator\n  Hashtable<const MyHashableType, int> hashtable(5);\n  hashtable.insert(MyHashableType{0}, 0);\n  hashtable.insert(MyHashableType{1}, 1);\n  hashtable.insert(MyHashableType{2}, 2); // triggers resize\n  hashtable.insert(MyHashableType{10}, 10); // should be inserted in the same index as 1\n\n  std::cout << hashtable[MyHashableType{0}] << std::endl;\n  std::cout << hashtable[MyHashableType{1}] << std::endl;\n  std::cout << hashtable[MyHashableType{2}] << std::endl;\n  std::cout << hashtable[MyHashableType{10}] << std::endl; // should trigger linear search\n\n  hashtable.remove(MyHashableType{0}); // should trigger swap\n\n  std::cout << hashtable[MyHashableType{10}] << std::endl; // shauld not trigger linear search\n  return 0;\n}\n
"},{"location":"algorithms/08-stack-and-queue/","title":"Stack and queue","text":"

Warning

This section is a continuation of the Dynamic Data section. Please make sure to read it before continuing.

"},{"location":"algorithms/08-stack-and-queue/#stack","title":"Stack","text":"

source

Stacks are a type of dynamic data where the last element added is the first one to be removed. This is known as LIFO (Last In First Out) or FILO (First In Last Out). Stacks are used in many algorithms and data structures, such as the depth-first search algorithm, back-track and the call stack.

"},{"location":"algorithms/08-stack-and-queue/#stack-basic-operations","title":"Stack Basic Operations","text":"
  • push - Add an element to the top of the stack.
  • pop - Remove the top element from the stack.
  • top - Return the top element of the stack.

source

"},{"location":"algorithms/08-stack-and-queue/#stack-implementation","title":"Stack Implementation","text":"

You can either implement it using a dynamic array or a linked list. But the dynamic array implementation is more efficient in terms of memory and speed. So let's use it.

#include <iostream>\n\n// stack\ntemplate <typename T>\nclass Stack {\n  T* data; // dynamic array\n  size_t size; // number of elements in the stack\n  size_t capacity; // capacity of the stack\npublic:\n  Stack() : data(nullptr), size(0), capacity(0) {}\n  ~Stack() {\n    delete[] data;\n  }\n  void push(const T& value) {\n    // if it needs to be resized\n    // amortized cost of push is O(1)\n    if (size == capacity) {\n      capacity = capacity == 0 ? 1 : capacity * 2;\n      T* new_data = new T[capacity];\n      std::copy(data, data + size, new_data);\n      delete[] data;\n      data = new_data;\n    }\n    // stores the value and then increments the size\n    data[size++] = value; \n  }\n  T pop() {\n    if (size == 0)\n      throw std::out_of_range(\"Stack is empty\");\n\n    // shrink the array if necessary\n    // ammortized cost of pop is O(1)\n    if (size <= capacity / 4) {\n      capacity /= 2;\n      T* new_data = new T[capacity];\n      std::copy(data, data + size, new_data);\n      delete[] data;\n      data = new_data;\n    }\n    return data[--size];\n  }\n  T& top() const {\n    if (size == 0)\n      throw std::out_of_range(\"Stack is empty\");\n    // cost of top is O(1)\n    return data[size - 1];\n  }\n  size_t get_size() const {\n    return size;\n  }\n  bool is_empty() const {\n    return size == 0;\n  }\n};\n
"},{"location":"algorithms/08-stack-and-queue/#queue","title":"Queue","text":"

source

A queue is a type of dynamic data where the first element added is the first one to be removed. This is known as FIFO (First In First Out). Queues are used in many algorithms and data structures, such as the breadth-first search algorithm. Usually it is implemented as a linked list, in order to provide O(1) time complexity for the enqueue and dequeue operations. But it can be implemented using a dynamic array as well and amortize the cost for resizing. The dynamic array implementation is more efficient in terms of memory and speed(if not resized frequently).

"},{"location":"algorithms/08-stack-and-queue/#queue-basic-operations","title":"Queue Basic Operations","text":"
  • enqueue - Add an element to the end of the queue.
  • dequeue - Remove the first element from the queue.
  • front - Return the first element of the queue.

source

"},{"location":"algorithms/08-stack-and-queue/#queue-implementation","title":"Queue Implementation","text":"
// queue\ntemplate <typename T>\nclass Queue {\n  // dynamic array approach instead of linked list\n  T* data;\n  size_t front; // index of the first valid element\n  size_t back; // index of the next free slot\n  size_t capacity; // current capacity of the array\n  size_t size; // number of elements in the queue\n\n  explicit Queue() : data(nullptr), front(0), back(0), capacity(capacity), size(0) {};\n\n  void enqueue(T value) {\n    // resize if necessary\n    // amortized O(1) time complexity\n    if (size == capacity) {\n      auto old_capacity = capacity;\n      capacity = capacity ? capacity * 2 : 1;\n      T* new_data = new T[capacity];\n      for (size_t i = 0; i < size; i++)\n        new_data[i] = data[(front + i) % old_capacity];\n      delete[] data;\n      data = new_data;\n      front = 0;\n      back = size;\n    }\n    data[back] = value;\n    back = (back + 1) % capacity;\n    size++;\n  }\n\n  void dequeue() {\n    if (size) {\n      front = (front + 1) % capacity;\n      size--;\n    }\n    // shrink if necessary\n    if(size <= capacity / 4) {\n      auto old_capacity = capacity;\n      capacity /= 2;\n      T* new_data = new T[capacity];\n      for (size_t i = 0; i < size; i++)\n        new_data[i] = data[(front + i) % old_capacity];\n      delete[] data;\n      data = new_data;\n      front = 0;\n      back = size;\n    }\n  }\n\n  T& head() {\n    return data[front];\n  }\n};\n
"},{"location":"algorithms/10-graphs/","title":"Graph","text":"

Graphs are a type of data structures that interconnects nodes (or vertices) with edges. They are used to model relationships between objects. This is the basics for most AI algorithms, such as pathfinding, decision making, neuron networks, and others.

"},{"location":"algorithms/10-graphs/#basic-definitions","title":"Basic Definitions","text":"
  • Nodes or vertices are the basic entities in a graph and hold the data.
  • Edges are the connections and relation between the nodes. The relationship can be enriched in multiple ways such as direction, weight, and others.
  • Neighbours are the nodes that are connected to a specific node.
  • Path is the sequence of edges and nodes that allows you to go from one node to another.
  • Degree of a node is the number of edges connected to it.
"},{"location":"algorithms/10-graphs/#representation","title":"Representation","text":"

A graph is composed by a set of vertices(nodes) and edges. There are multiple ways to represent a graph, and every style has its own advantages and disadvantages.

"},{"location":"algorithms/10-graphs/#adjacency-matrix","title":"Adjacency matrix","text":"

Assuming every node is labeled with a number from 0 to n-1, an adjacency matrix is a 2D array of size n x n. The entry a[i][j] is 1 if there is an edge from node i to node j, and 0 otherwise. The adjacency matrix for a graph is always a square matrix.

// adjacency matrix\n// NUMBER_OF_NODES is the number of nodes\n// bool marks if there is an edge between the nodes.\n// switch bool to float if you want to store the weight of the edge.\n// switch bool to a data structure if you want to store more information about the edge.\nbool adj_matrix[NUMBER_OF_NODES][NUMBER_OF_NODES];\nvector<Node> nodes;\n
  • Pros: it is simple and easy to implement and blazing fast for checking if there is an edge between two nodes.
  • Cons: it consumes a lot of space, especially for sparse graphs.
"},{"location":"algorithms/10-graphs/#adjacency-list","title":"Adjacency list","text":"

It can be implemented in multiple ways, but a common one is to use an array of lists(or vectors). The index(key) of the array is the node id, and the value is a list of nodes that are connected to the key node.

// adjacency list\n// NUMBER_OF_NODES is the number of nodes\n// vector for storing the connected nodes ids as integers\n// switch vector<int> to map<int, float> if you want to store the weight of the edge.\n// switch map<int, float> to map<int, data_structure> if you want to store more information about the edge.\nvector<int> adj_list[NUMBER_OF_NODES];\nvector<Node> nodes;\n
  • Pros: it is more memory efficient for sparse graphs.
  • Cons: it can be slower to check if there is an edge between two nodes.
"},{"location":"algorithms/10-graphs/#edge-list","title":"Edge list","text":"

It is a collection of edges, where each egge can be represented as a pair of nodes, a pair of node ids, or a pair of references to nodes.

// edge list\nvector<pair<int, int>> edges;\nvector<Node> nodes;\n
  • Pros: it is the most memory efficient representation for sparse graphs.
  • Cons: it can be slower to check if there is an edge between two nodes.
"},{"location":"algorithms/10-graphs/#graph-types","title":"Graph Types","text":"
  • Null graph: A graph with no edges.
  • Trivial graph: A graph with only one vertex.
  • Directed graph: A graph where the edges have direction.
  • Weighted graph: A graph where the edges have a weight.
  • Undirected graph: A graph where the edges have no direction or are bidirectional. If weighted, the weights are the same in both directions.
  • Connected graph: A graph where all nodes can be reached from any other node.
  • Disconnected graph: A graph where some nodes cannot be reached from other nodes.
  • Cyclic graph: A graph that has at least one cycle, a path that starts and ends at the same node.
  • Acyclic graph: A graph that has no cycles.
  • Complete graph: A graph where every pair of nodes is connected by a unique edge.
  • Regular graph: A graph where every node has the same degree.
"},{"location":"algorithms/10-graphs/#graph-algorithms","title":"Graph Algorithms","text":""},{"location":"algorithms/10-graphs/#depth-first-search-dfs","title":"Depth-First Search (DFS)","text":"

DFS is a graph traversal algorithm based on a stack data structure. Basically, the algorithm starts at a node and explores as far as possible along each branch before backtracking. It is used to find connected components, determine the connectivity of the graph, and solve many other problems.

DFS visualization

#include <iostream>\n#include <vector>\n#include <unordered_set>\n#include <unordered_map>\n#include <string>\n\n// graph is represented as an adjacency list\nstd::unordered_map<std::string, std::unordered_set<std::string>> graph;\nstd::unordered_set<std::string> visited;\n\n// dfs recursive version\n// it exploits the call stack to store the nodes to visit\n// you might want to use the iterative version if you have a large graph\n// for that, use std::stack data structure and producer-consumer pattern\nvoid dfs(const std::string& node) {\n  std::cout << node << std::endl;\n  visited.insert(node);\n  for (const auto& neighbor : graph[node])\n    if (!visited.contains(neighbor))\n      dfs(neighbor);\n}\n\nvoid dfs_interactive(const std::string& node) {\n  std::stack<std::string> stack;\n  // produce the first node\n  stack.push(node);\n  while (!stack.empty()) {\n    // consume the node\n    std::string current = stack.top();\n    stack.pop();\n    // avoid visiting the same node twice\n    if (visited.contains(current))\n      continue;\n    // mark as visited\n    visited.insert(current);\n\n    // visit the node\n    std::cout << current << std::endl;\n\n    // produce the next node to visit\n    for (const auto& neighbor : graph[current]) {\n      if (!visited.contains(neighbor)) {\n        stack.push(neighbor);\n        break; // is this break necessary?\n      }\n    }\n  }\n}\n\nint main() {\n  std::cout << \"Write one node string per line. When you are done, add an empty line.\" << std::endl;\n  std::string node;\n  while (std::getline(std::cin, node) && !node.empty())\n    graph[node] = {};\n  std::cout << \"Write the edges as 'node1;node2'. When you are done, add an empty line.\" << std::endl;\n  std::string edge;\n  while (std::getline(std::cin, edge) && !edge.empty()) {\n    auto pos = edge.find(';');\n    // Bidirectional\n    std::string source = edge.substr(0, pos);\n    std::string destination = edge.substr(pos + 1);\n    graph[source].insert(destination);\n    graph[destination].insert(source);\n  }\n  std::cout << \"Write the starting node.\" << std::endl;\n  std::string start;\n  std::cin >> start;\n  dfs(start);\n  return 0;\n}\n
"},{"location":"algorithms/10-graphs/#breadth-first-search-bfs","title":"Breadth-First Search (BFS)","text":"

BFS is a graph traversal algorithm based on a queue data structure. It starts at a node and explores all of its neighbours before moving on to the next level of neighbours by enqueing them. It is used to find the shortest path, determine the connectivity of the graph, and others.

BFS visualization

#include <iostream>\n#include <vector>\n#include <unordered_set>\n#include <unordered_map>\n#include <string>\n#include <queue>\n\n// graph is represented as an adjacency list\nstd::unordered_map<std::string, std::unordered_set<std::string>> graph;\nstd::unordered_set<std::string> visited;\n\n// bfs\nvoid bfs(const std::string& node) {\n  std::queue<std::string> queue;\n  // produce the first node\n  queue.push(node);\n  while (!queue.empty()) {\n    // consume the node\n    std::string current = queue.front();\n    queue.pop();\n    // avoid visiting the same node twice\n    if (visited.contains(current))\n      continue;\n    // mark as visited\n    visited.insert(current);\n\n    // visit the node\n    std::cout << current << std::endl;\n\n    // produce the next node to visit\n    for (const auto& neighbor : graph[current]) {\n      if (!visited.contains(neighbor))\n        queue.push(neighbor);\n    }\n  }\n}\n\nvoid dfs_interactive(const std::string& node) {\n  std::stack<std::string> stack;\n  // produce the first node\n  stack.push(node);\n  while (!stack.empty()) {\n    // consume the node\n    std::string current = stack.top();\n    stack.pop();\n    // avoid visiting the same node twice\n    if (visited.contains(current))\n      continue;\n    // mark as visited\n    visited.insert(current);\n\n    // visit the node\n    std::cout << current << std::endl;\n\n    // produce the next node to visit\n    for (const auto& neighbor : graph[current]) {\n      if (!visited.contains(neighbor)) {\n        stack.push(neighbor);\n        break; // is this break necessary?\n      }\n    }\n  }\n}\n\nint main() {\n  std::cout << \"Write one node string per line. When you are done, add an empty line.\" << std::endl;\n  std::string node;\n  while (std::getline(std::cin, node) && !node.empty())\n    graph[node] = {};\n  std::cout << \"Write the edges as 'node1;node2'. When you are done, add an empty line.\" << std::endl;\n  std::string edge;\n  while (std::getline(std::cin, edge) && !edge.empty()) {\n    auto pos = edge.find(';');\n    // Bidirectional\n    std::string source = edge.substr(0, pos);\n    std::string destination = edge.substr(pos + 1);\n    graph[source].insert(destination);\n    graph[destination].insert(source);\n  }\n  std::cout << \"Write the starting node.\" << std::endl;\n  std::string start;\n  std::cin >> start;\n  // dfs(start);\n  dfs_interactive(start);\n  return 0;\n}\n

source

https://www.redblobgames.com/pathfinding/grids/graphs.html

https://www.redblobgames.com/pathfinding/a-star/introduction.html

https://qiao.github.io/PathFinding.js/visual/

"},{"location":"algorithms/11-dijkstra/","title":"Djikstra's algorithm","text":"

source

Dijkstra's algorithm is a graph traversal algorithm similar to BFS, but it takes into account the weight of the edges. It uses a priority list to visit the nodes with the smallest cost first and a set to keep track of the visited nodes. A came_from map can be used to store the parent node of each node to create a pathfinding algorithm.

It uses the producer-consumer pattern, where the producer is the algorithm that adds the nodes to the priority queue and the consumer is the algorithm that removes the nodes from the priority queue and do the work.

The algorithm is greedy and works well with positive weights. It is not optimal for negative weights, for that you should use the Bellman-Ford algorithm.

"},{"location":"algorithms/11-dijkstra/#data-structure","title":"Data Structure","text":"

For the graph, we will use an adjacency list:

// node registry\n// K is the key type for indexing the nodes, usually it can be a string or an integer\n// Node is the Node type to store node related data \nunordered_map<K, N> nodes;\n\n// K is the key type of the index\n// W is the weight type of the edge, usually it can be an integer or a float\n// W can be more robust and become a struct, for example, to store the weight and the edge name\n// if W is a struct, remember no implement the < operator for the priority queue work\n// unordered_map is used to exploit the O(1) access time and be tolerant to sparse keys\nunordered_map<K, unordered_map<K, W>> edges;\n\n// usage\n// the cost from node A to node B is 5\nedges[\"A\"][\"B\"] = 5;\n// if you want to make it bidirectional set the opposite edge too\n// edges[\"B\"][\"A\"] = 5;\n

For the algoritm to work we will need a priority queue to store the nodes to be visited:

// priority queue to store the nodes to be visited\n// C is the W type and stores the accumulated cost to reach the node\n// K is the key type of the index of the node\npriority_queue<pair<C, K>> frontier;\n

For the visited nodes we will use a set:

// set to store the visited nodes\n// K is the key type of the index of the node\nunordered_set<K> visited;\n
"},{"location":"algorithms/11-dijkstra/#algorithm","title":"Algorithm","text":"

List of visualizations:

  • https://www.cs.usfca.edu/~galles/visualization/Dijkstra.html
  • https://visualgo.net/en/sssp
  • https://qiao.github.io/PathFinding.js/visual/

Example of Dijkstra's algorithm in C++ to build a path from the start node to the end node:

#include <iostream>\n#include <unordered_map>\n#include <unordered_set>\n#include <string>\n#include <queue>\nusing namespace std;\n\n// Dijikstra\nstruct Node {\n  // add your custom data here\n  string name;\n};\n\n// nodes indexed by id\nunordered_map<uint64_t, Node> nodes;\n// edges indexed by source id and destination id, the value is the\nunordered_map<uint64_t, unordered_map<uint64_t, double>> edges;\n// priority queue for the frontier\n// this could be declared inside the Dijkstra function\npriority_queue<pair<double, uint64_t>> frontier;\n\n// optionally, in order to create a pathfinding, use came_from map to store the parent node\nunordered_map<uint64_t, uint64_t> came_from;\n// cost to reach the node so far\nunordered_map<uint64_t, double> cost_so_far;\n\nvoid Visit(Node* node){\n  // add your custom code here\n  cout << node->name << endl;\n}\n\nvoid Dijkstra(uint64_t start_id) {\n  cout << \"Visiting nodes:\" << endl;\n  // clear the costs so far\n  cost_so_far.clear();\n  // boostrap the frontier\n  // 0 means the cost to reach the start node is 0\n  frontier.emplace(0, start_id);\n  cost_so_far[start_id] = 0;\n  // while there are nodes to visit\n  while (!frontier.empty()) {\n    // get the node with the lowest cost\n    auto [cost, current_id] = frontier.top();\n    frontier.pop();\n    // get the node\n    Node* current = &nodes[current_id];\n    // visit the node\n    Visit(current);\n    // for each neighbor\n    for (const auto& [neighbor_id, edge_cost] : edges[current_id]) {\n      // calculate the new cost to reach the neighbor\n      double new_cost = cost_so_far[current_id] + edge_cost;\n      // if the neighbor is not visited yet or the new cost is less than the previous cost\n      if (!cost_so_far.contains(neighbor_id) || new_cost < cost_so_far[neighbor_id]) {\n        // update the cost\n        cost_so_far[neighbor_id] = new_cost;\n        // add the neighbor to the frontier\n        frontier.emplace(new_cost, neighbor_id);\n        // update the parent node\n        came_from[neighbor_id] = current_id;\n      }\n    }\n  }\n}\n\nint main() {\n  // build the graph\n  nodes[0] = {\"A\"}; // this will be our start\n  nodes[1] = {\"B\"};\n  nodes[2] = {\"C\"};\n  nodes[3] = {\"D\"}; // this will be our end\n  // store the edges costs\n  edges[0][1] = 1;\n  edges[0][2] = 2;\n  edges[0][3] = 100; // this is a very expensive edge\n  edges[1][3] = 3;\n  edges[2][3] = 1;\n  // the path from 0 to 3 is A -> C -> D even though the edge A -> D have less steps\n  Dijkstra(0);\n  // print the path from the end to the start\n  cout << \"Path:\" << endl;\n  uint64_t index = 3;\n  // prevents infinite loop if the end is unreachable\n  if(!came_from.contains(index)) {\n    cout << \"No path found\" << endl;\n    return 0;\n  }\n  while (index != 0) {\n    cout << nodes[index].name << endl;\n    index = came_from[index];\n  }\n  cout << nodes[0].name << endl;\n  return 0;\n}\n
"},{"location":"algorithms/12-mst/","title":"Minimum Spanning Tree","text":"

Jarnik's(and Prim's) developed the Minimum Spanning Tree, it is an algorithm to find a tree in a graph that connects all the vertices with the minimum possible accumulated weight.

The output of the algorithm is a set of edges that the sum of the weighs is the minimum possible and connects all reachable vertices.

"},{"location":"algorithms/12-mst/#minimum-spanning-tree-algorithm","title":"Minimum Spanning Tree Algorithm","text":"
  • Add a vertex to the minimum spanning tree;
  • While all nodes are not in the minimum spanning tree:
    • Find the edge with the minimum weight that connects a vertex in the MST to a vertex not in the MST;
    • Add the vertex from that edge to the MST;

By Shiyu Ji - Own work, CC BY-SA 4.0, Link

"},{"location":"algorithms/12-mst/#example","title":"Example","text":"

Let's consider the following graph:

graph LR\nv0((0))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7((7))\nv8((8))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-. 4 .-> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-. 8 .-> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-. 6 .-> v8\nv7 <-. 11 .-> v6\nv1 <-. 2 .-> v7\nv0 <-. 4 .-> v7\nv0 <-. 8 .-> v1

In order to bootstrap the algorithm we need to:

  • Select a random vertex;
    • let's choose the vertex 0;
  • Add the vertex 0 to minimum spanning tree;
    • Add all edges that connect the vertex 0 to the priority queue, we add 1 with the weight of 8 and 7 with the weight of 4;

Current state of data:

  • Minimum Spanning Tree: {0}
graph LR\nv0(((0)))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7((7))\nv8((8))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-. 4 .-> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-. 8 .-> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-. 6 .-> v8\nv7 <-. 11 .-> v6\nv1 <-. 2 .-> v7\nv0 <-. 4 .-> v7\nv0 <-. 8 .-> v1

After the initial setup, we will start running the producer-consumer loop:

  1. List all edges from all vertices in the minimum spanning tree where the other vertex is not in the minimum spanning tree;
    • The edges are:
      • {0, 1} with the weight of 8;
      • {0, 7} with the weight of 4;
graph LR\nv0(((0)))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7((7))\nv8((8))\nv3 ~~~ v4\nv5 ~~~ v4\nv3 ~~~ v5\nv2 ~~~ v3\nv2 ~~~ v5\nv6 ~~~ v5\nv2 ~~~ v8\nv8 ~~~ v6\nv1 ~~~ v2\nv7 ~~~ v8\nv7 ~~~ v6\nv1 ~~~ v7\nv0 <-. 4 .-> v7\nv0 <-. 8 .-> v1
  1. Select the edge with the minimum weight;
    • The edge {0, 7} with the weight of 4;
graph LR\nv0(((0)))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7((7))\nv8((8))\nv3 ~~~ v4\nv5 ~~~ v4\nv3 ~~~ v5\nv2 ~~~ v3\nv2 ~~~ v5\nv6 ~~~ v5\nv2 ~~~ v8\nv8 ~~~ v6\nv1 ~~~ v2\nv7 ~~~ v8\nv7 ~~~ v6\nv1 ~~~ v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1
  1. From the selected edge, add the other vertex to the minimum spanning tree
    • Add the vertex 7 to the minimum spanning tree;

The current state of the minimum spanning three is [{0, 7}].;

graph LR\nv0(((0)))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8((8))\nv3 ~~~ v4\nv5 ~~~ v4\nv3 ~~~ v5\nv2 ~~~ v3\nv2 ~~~ v5\nv6 ~~~ v5\nv2 ~~~ v8\nv8 ~~~ v6\nv1 ~~~ v2\nv7 ~~~ v8\nv7 ~~~ v6\nv1 ~~~ v7\nv0 <-- 4 --> v7\nv0 ~~~ v1

Let's repeat the process once more to illustrate the algorithm:

graph LR\nv0(((0)))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8((8))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-. 4 .-> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-. 8 .-> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-. 6 .-> v8\nv7 <-. 11 .-> v6\nv1 <-. 2 .-> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1
  1. List all edges from all vertices in the minimum spanning tree where the other vertex is not in the minimum spanning tree;
    • The edges are:
      • {0, 1} with the weight of 8;
      • {7, 1} with the weight of 2;
      • {7, 8} with the weight of 6;
      • {7, 6} with the weight of 11;
graph LR\nv0(((0)))\nv1((1))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8((8))\nv3 ~~~ v4\nv5 ~~~ v4\nv3 ~~~ v5\nv2 ~~~ v3\nv2 ~~~ v5\nv6 ~~~ v5\nv2 ~~~ v8\nv8 ~~~ v6\nv1 ~~~ v2\nv7 <-. 6 .-> v8\nv7 <-. 11 .-> v6\nv1 <-. 2 .-> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1
  1. Select the edge with the minimum weight;
    • The edge {7, 1} with the weight of 2;
  2. From the selected edge, add the other vertex to the minimum spanning tree
    • Add the vertex 1 to the minimum spanning tree;

The current state of the minimum spanning three is [{0, 7}, {1, 7}].

graph LR\nv0(((0)))\nv1(((1)))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8((8))\nv3 ~~~ v4\nv5 ~~~ v4\nv3 ~~~ v5\nv2 ~~~ v3\nv2 ~~~ v5\nv6 ~~~ v5\nv2 ~~~ v8\nv8 ~~~ v6\nv1 ~~~ v2\nv7 ~~~ v8\nv7 ~~~ v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 ~~~ v1

Now the current exploration state is:

graph LR\nv0(((0)))\nv1(((1)))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8((8))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-. 4 .-> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-. 8 .-> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-. 6 .-> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

The edges candidates are:

  • {0, 1}: 12;
  • {7, 8}: 6;
  • {7, 6}: 11;

The edge with the minimum weight is {7, 8}: 6. So we will add 8 to the minimum spanning tree.

The current state of the minimum spanning three is [{0, 7}, {1, 7}, {8, 7}].

graph LR\nv0(((0)))\nv1(((1)))\nv2((2))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8(((8)))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-. 4 .-> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-. 8 .-> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-- 6 --> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

The edges candidates are:

  • {1, 2}: 12;
  • {8, 2}: 8;
  • {8, 6}: 10;
  • {7, 6}: 11;

The edge with the minimum weight is {8, 2}: 8. So we will add 2 to the minimum spanning tree.

The current state of the minimum spanning three is [{0, 7}, {1, 7}, {8, 7}, {2, 8}].

graph LR\nv0(((0)))\nv1(((1)))\nv2(((2)))\nv3((3))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8(((8)))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-. 4 .-> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-- 8 --> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-- 6 --> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

The edges candidates are:

  • {2, 3}: 4;
  • {2, 5}: 6;
  • {8, 6}: 10;
  • {7, 6}: 11;

We will add the edge {2, 3}: 4 to the minimum spanning tree.

The minimum spanning three is [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}].

graph LR\nv0(((0)))\nv1(((1)))\nv2(((2)))\nv3(((3)))\nv4((4))\nv5((5))\nv6((6))\nv7(((7)))\nv8(((8)))\nv3 <-. 3 .-> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-- 4 --> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-- 8 --> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-- 6 --> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

Candidates:

  • {3, 4}: 3;
  • {3, 5}: 12;
  • {2, 5}: 6;
  • {8, 6}: 10;
  • {7, 6}: 11;

The edge with the minimum weight is {3, 4}: 3. So we will add 4 to the minimum spanning tree.

The minimum spanning three is now [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}].

graph LR\nv0(((0)))\nv1(((1)))\nv2(((2)))\nv3(((3)))\nv4(((4)))\nv5((5))\nv6((6))\nv7(((7)))\nv8(((8)))\nv3 <-- 3 --> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-- 4 --> v3\nv2 <-. 6 .-> v5\nv6 <-. 1 .-> v5\nv2 <-- 8 --> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-- 6 --> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

The egdes candidates are:

  • {3, 5}: 12;
  • {2, 5}: 6;
  • {4, 5}: 15;
  • {8, 6}: 10;
  • {7, 6}: 11;

Select {2, 5}: 6; Add 5 to MST. [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}].

graph LR\nv0(((0)))\nv1(((1)))\nv2(((2)))\nv3(((3)))\nv4(((4)))\nv5(((5)))\nv6((6))\nv7(((7)))\nv8(((8)))\nv3 <-- 3 --> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-- 4 --> v3\nv2 <-- 6 --> v5\nv6 <-. 1 .-> v5\nv2 <-- 8 --> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-- 6 --> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

Candidates are:

  • {5, 6}: 1;
  • {8, 6}: 10;
  • {7, 6}: 11;

Select {5, 6}: 1; Add 6 to MST. [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}, {6, 5}].

graph LR\nv0(((0)))\nv1(((1)))\nv2(((2)))\nv3(((3)))\nv4(((4)))\nv5(((5)))\nv6(((6)))\nv7(((7)))\nv8(((8)))\nv3 <-- 3 --> v4\nv5 <-. 15 .-> v4\nv3 <-. 12 .-> v5\nv2 <-- 4 --> v3\nv2 <-- 6 --> v5\nv6 <-- 1 --> v5\nv2 <-- 8 --> v8\nv8 <-. 10 .-> v6\nv1 <-. 12 .-> v2\nv7 <-- 6 --> v8\nv7 <-. 11 .-> v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 <-. 8 .-> v1

Now, our current MST does not any candidates to explore, so the algorithm is finished. The minimum spanning tree is [{0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}, {6, 5}].

graph LR\nv0(((0)))\nv1(((1)))\nv2(((2)))\nv3(((3)))\nv4(((4)))\nv5(((5)))\nv6(((6)))\nv7(((7)))\nv8(((8)))\nv3 <-- 3 --> v4\nv5 ~~~ v4\nv3 ~~~ v5\nv2 <-- 4 --> v3\nv2 <-- 6 --> v5\nv6 <-- 1 --> v5\nv2 <-- 8 --> v8\nv8 ~~~ v6\nv1 ~~~ v2\nv7 <-- 6 --> v8\nv7 ~~~ v6\nv1 <-- 2 --> v7\nv0 <-- 4 --> v7\nv0 ~~~ v1

The total weight of the minimum spanning tree from {0, 7}, {1, 7}, {8, 7}, {2, 8}, {3, 2}, {4, 3}, {5, 2}, {6, 5} is 4 + 2 + 6 + 8 + 4 + 3 + 6 + 1 = 34.

"},{"location":"algorithms/12-mst/#implementation","title":"Implementation","text":"

There are many implementations for the Minimum Spanning Tree algorithm, here goes one possible implementation int as key, int as value and int as weight:

#include <iostream>\n#include <unordered_set>\n#include <unordered_map>\n#include <optional>\n#include <tuple>\n#include <vector>\n#include <utility>\nusing namespace std;\n\n// rename optional<tuple<int, int, int>> to edge\ntypedef optional<tuple<int, int, int>> Edge;\n\n// rename unordered_map<int, unordered_map<int, int>> to Graph\ntypedef unordered_map<int, unordered_map<int, int>> Graph;\n\n// source, destination, weight\nEdge findMinEdge(const Graph& graph, const Graph& mst){\n  if(graph.empty())\n    return nullopt;\n  if(mst.empty()){\n    // select a random node to start, we will get the first vertex\n    int source = graph.begin()->first;\n    // candidates to be destination\n    auto candidates = graph.at(source);\n    // iterator\n    auto it = candidates.begin();\n    // best destination and weight\n    int bestDestination = it->first;\n    int bestWeight = it->second;\n    // iterate over the candidates\n    for(; it != candidates.end(); it++){\n      if(it->second < bestWeight){\n        bestDestination = it->first;\n        bestWeight = it->second;\n      }\n    }\n    return make_tuple(source, bestDestination, bestWeight);\n  }\n  // list all vertices from the minimum spanning tree\n  std::unordered_set<int> mstVertices;\n  for(auto& [source, destinations] : mst){\n    mstVertices.insert(source);\n    for(auto& [destination, weight] : destinations){\n      mstVertices.insert(destination);\n    }\n  }\n  // iterate over the vertices from the minimum spanning tree to find the minimum edge\n  int bestWeight = INT_MAX;\n  int bestSource = -1;\n  int bestDestination = -1;\n  for(auto& source : mstVertices){\n    for(auto& [destination, weight] : graph.at(source)){\n      if(!mstVertices.contains(destination) && weight < bestWeight){\n        bestSource = source;\n        bestDestination = destination;\n        bestWeight = weight;\n      }\n    }\n  }\n  if(bestSource == -1)\n    return nullopt;\n  return make_tuple(bestSource, bestDestination, bestWeight);\n}\n\n// returns the accumulated weight of the minimum spanning tree\n// the graph is represented as [source, destination] -> weight\nint MSP(const Graph& graph){\n  Graph mst;\n  int accumulatedWeight = 0;\n  while(true){\n    auto edge = findMinEdge(graph, mst);\n    if(!edge.has_value())\n      break;\n    auto [source, destination, weight] = edge.value();\n    mst[source][destination] = weight;\n    mst[destination][source] = weight;\n    accumulatedWeight += weight;\n  }\n  return accumulatedWeight;\n}\n\n// minimum spanning tree\nint main() {\n  return 0;\n}\n
"},{"location":"algorithms/13-bst/","title":"Trees","text":"
  • It is a connected graph what have no cycles;
  • Has a single path between any two vertices;
  • A tree with N vertices has N-1 edges;
"},{"location":"algorithms/13-bst/#traversing-a-binary-tree","title":"Traversing a Binary Tree","text":"

There are mostly three ways to explore a binary search tree, they generate different outputs:

  • In-order: Left, Root, Right;
  • Pre-order: Root, Left, Right;
  • Post-order: Left, Right, Root;
"},{"location":"algorithms/13-bst/#binary-search-trees","title":"Binary Search Trees","text":"

A binary search tree is a binary tree:

  • Each node has at most two children;
  • The left child is less than the parent;
  • The right child is greater than the parent;
  • The left and right subtrees are also binary search trees;

In a binary search tree, the search complexity is O(log(n)) in a balanced tree. But it can be O(n) if not balanced.

Check the animations on https://visualgo.net/en/bst.

"},{"location":"algorithms/13-bst/#avl-trees","title":"AVL Trees","text":"

WiP.

"},{"location":"algorithms/14-heap/","title":"Heap","text":"

Heap is a data structure and algorithm that always keep the highest or lowest element at the top. You can implement it in many ways, such as a tree or a priority queue.

"},{"location":"algorithms/14-heap/#heap-in-a-tree","title":"Heap in a tree","text":"

In a tree implementation, the most common is a binary tree. In this the max heap scenario, the parent is always greater than the both children. The binary tree should be complete, which means all levels are filled except possibly for the last one, which is filled from left to right.

The complexity of a heap is O(log(n)) for insert and remove operations, for peeking or popping the top element is O(1).

"},{"location":"algorithms/14-heap/#heap-in-an-array","title":"Heap in an array","text":"

The most common implementation of a heap is in an array(vector). Assuming the current element is at index i, the parent is at (i-1)/2, the left child is at 2*i+1 and the right child is at 2*i+2. This approach is called tree linearization. It is more memory efficient and cache friendly.

The complexity of a heap in a priority queue in array is the same as in a tree, but with lower overhead.

"},{"location":"algorithms/14-heap/#heapfy","title":"Heapfy","text":"

Heapfy is an operation that for a given array, it will transform it into a heap. The complexity is O(n) if done bottom-up. That's one of the reasons heaps are so efficient. After that, all calls to get the top element will be O(1).

If the heapfy is done top-down, the complexity is O(n log(n)).

The algorithm is simple,

  • For each element in the array, it will compare with the parent and swap if necessary;
  • If the swap causes imbalance on the children, it will repeat the process until the element is in the right place.

See animation here https://www.cs.usfca.edu/~galles/JavascriptVisual/Heap.html

"},{"location":"algorithms/14-heap/#insert","title":"Insert","text":"

In the insertion operation, the element is added to the end of the array, and then it is compared with the parent and swapped if necessary. The parent comparison goes up to the top of the heap. The complexity is O(log(n)).

"},{"location":"algorithms/14-heap/#operation-peek-and-pop","title":"Operation Peek and Pop","text":"

Peek will return the top element of the heap, but not remove it. Pop is similar to peek, but it will remove the top.

When you remove the top element, you will need to reorganize it. The steps are:

  1. Get the top element and store to return later;
  2. Swap the top element with the last element;
  3. Remove the last element;
  4. Put the last element in the top;
  5. Compare the top element with the children and swap if necessary;
  6. Repeat until the element is in the right place.

The complexity of the pop operation is O(log(n)).

"},{"location":"artificialintelligence/","title":"Artificial Intelligence","text":"

Students with a firm foundation in the basic techniques of artificial intelligence for games will apply their skills to program advanced pathfinding algorithms, artificial opponents, scripting tools and other real-time drivers for non-playable agents. The goal of the course is to provide finely-tuned artificial competition for players using all the rules followed by a human.

"},{"location":"artificialintelligence/#requirements","title":"Requirements","text":"
  • Artificial Intelligence for Games
"},{"location":"artificialintelligence/#textbook","title":"Textbook","text":"
  • AI for Games, Third Edition: 9781138483972: Millington, Ian
"},{"location":"artificialintelligence/#student-centered-learning-outcomes","title":"Student-centered Learning Outcomes","text":"Bloom's Taxonomy on Learning Outcomes

Upon completion of the Advanced AI for Games, students should be able to:

"},{"location":"artificialintelligence/#objective-outcomes","title":"Objective Outcomes","text":"
  • Recall fundamental AI techniques for games;
  • Identify key components of advanced AI, including pathfinding algorithms and scripting tools
  • Demonstrate a deep understanding of advanced AI principles in gaming;
  • Apply knowledge to program advanced AI components for finely-tuned competition;
  • Evaluate the effectiveness and ethical considerations of advanced AI in game design;
  • Design and implement innovative AI-driven features for enhanced gameplay;
  • Integrate advanced AI seamlessly into game systems for cohesive environments;
  • Consider societal impact and consequences of AI applications in gaming;

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

"},{"location":"artificialintelligence/#schedule-for-fall-2024","title":"Schedule for Fall 2024","text":"

College dates for the Fall 2024 semester:

Event Date Classes Begin Aug. 26 Add/Drop Aug. 26 - 30 No Classes - College remains open Sept. 20 Indigenous Peoples Day Holiday Observance Oct. 14 Registration for Spring Classes Oct. 28 - Nov. 8 Last Day to Withdraw Nov. 8 Thanksgiving Break Nov. 25 - Nov. 29 Last Day of Classes Dec. 6 Finals Dec. 9 - Dec. 13 Winter Break Dec. 16 - Jan. 10

Old schedules for reference

"},{"location":"artificialintelligence/#introduction","title":"Introduction","text":"
  • Week 1. 2024/08/26
  • Topic: AI for games, review of basic AI techniques
  • Assignments:
    1. Read the Syllabus;
    2. Read Notes on plagiarism;
    3. Sign FERPA Form;
    4. Read Text Chapters 1 & 2 from AI for Games book;
    5. Take the quiz on Canvas;
    6. Setup your machine and repository;
    7. Start the Flocking Simulation;
"},{"location":"artificialintelligence/#behavioral-agents","title":"Behavioral Agents","text":"
  • Week 2. 2024/09/02
  • Topic: Flocking
  • Formal Assignment
  • Interactive Assignment
"},{"location":"artificialintelligence/#finite-automata","title":"Finite Automata","text":"
  • Week 3. 2024/09/09
  • Topic: Automata Finite and 2D Grids
  • Formal Assignment
  • Interactive Assignment
"},{"location":"artificialintelligence/#random-numbers","title":"Random Numbers","text":"
  • Week 4. Date: 2024/09/16
  • Topic: Pseudo Random Number Generation
  • Formal Assignment: Formal
"},{"location":"artificialintelligence/#dfs","title":"DFS","text":"
  • Week 5. 2024/09/23
  • Topic: Depth First Search, Random walk, Maze Generation
  • Formal Assignment
  • Interactive Assignment
"},{"location":"artificialintelligence/#path-finding","title":"Path finding","text":"
  • Week 6. 2024/09/30
  • Topic: Breadth First Search and Path Finding A*
  • Interactive Assignment: Catch the Cat
"},{"location":"artificialintelligence/#midterms","title":"Midterms","text":"
  • Week 7. Date: 2024/10/07
  • Topic: Catch the Cat Challenge and Competition
  • Catch the Cat
"},{"location":"artificialintelligence/#spatial-quantization","title":"Spatial Quantization","text":"
  • Week 8. 2024/10/14
  • Topic: Spatial Quantization and Partitioning
  • Readings: Spatial Quantization
  • Formal Assignment: Hide and Seek
"},{"location":"artificialintelligence/#spatial-quantization_1","title":"Spatial Quantization","text":"
  • Week 9. 2024/10/21
  • Topic: Spatial Quantization and Partitioning
  • Readings: Spatial Quantization
  • Formal Assignment: Hide and Seek
"},{"location":"artificialintelligence/#noise-functions","title":"Noise Functions","text":"
  • Week 10. 2024/10/28
  • Topic: Noise functions
  • Formal Assignment:
  • Interactive Assignment: Scenario Generation
"},{"location":"artificialintelligence/#procedural-generation","title":"Procedural Generation","text":"
  • Week 11. 2024/11/04
  • Topic: Procedural Content Generation - Scenario
  • Formal Assignment:
  • Interactive Assignment: Scenario Generation
"},{"location":"artificialintelligence/#procedural-generation_1","title":"Procedural Generation","text":"
  • Week 12. 2024/11/11
  • Topic: Procedural Content Generation - Scenario
  • Formal Assignment:
  • Interactive Assignment: Scenario Generation
"},{"location":"artificialintelligence/#break","title":"Break","text":"
  • Week 13. 2023/11/18
  • Topic: Work sessions for final project
"},{"location":"artificialintelligence/#work-sessions","title":"Work sessions","text":"
  • Week 14. 2024/11/25
  • Topic: BREAK. No classes
"},{"location":"artificialintelligence/#work-sessions_1","title":"Work sessions","text":"
  • Week 15. 2024/12/02
  • Topic: Work sessions for final project
"},{"location":"artificialintelligence/#finals","title":"Finals","text":"
  • Week 16. 2024/12/09
  • Topic: Final Presentations
"},{"location":"artificialintelligence/#schedule-for-spring-2024","title":"Schedule for Spring 2024","text":"

College dates for the Spring 2024 semester:

Date Event Jan 16 Classes Begin Jan 16 - 22 Add/Drop Feb 26 - March 1 Midterms March 11 - March 15 Spring Break March 25 - April 5 Registration for Fall Classes April 5 Last Day to Withdraw April 8 - 19 Idea Evaluation April 12 No Classes - College remains open April 26 Last Day of Classes April 29 - May 3 Finals May 11 Commencement"},{"location":"artificialintelligence/#introduction_1","title":"Introduction","text":"
  • Week 1. 2024/01/15
  • Topic: AI for games, review of basic AI techniques
  • Activities:
    • Read all materials shared on Canvas;
    • Do all assignments on Canvas;
"},{"location":"artificialintelligence/#wave-function-collapse","title":"Wave Function Collapse","text":"
  • Week 2. 2024/01/22
  • Topic: Wave Function Collapse
"},{"location":"artificialintelligence/#applying-a-into-continuous-space","title":"Applying A* into continuous space","text":"
  • Week 3. 2024/01/29
  • Topic: Applying A* into continuous spaces
"},{"location":"artificialintelligence/#applying-a-into-continuous-spaces","title":"Applying A* into continuous spaces","text":"
  • Week 4. Date: 2024/02/05
  • Topic: Applying A* into continuous spaces
"},{"location":"artificialintelligence/#testing-your-ai-agent-and-rules","title":"Testing your AI Agent and rules","text":"
  • Week 5. 2024/02/12
  • Topic: Testing your AI Agent, building meaningful tests, metrics, evaluation and machinations
"},{"location":"artificialintelligence/#testing-your-ai-agent","title":"Testing your AI Agent","text":"
  • Week 6. 2024/02/19
  • Topic: Testing your AI Agent, building meaningful tests, metrics, evaluation and machinations
"},{"location":"artificialintelligence/#midterms_1","title":"Midterms","text":"
  • Week 7. Date: 2024/02/26
  • Topic: Work sessions
"},{"location":"artificialintelligence/#min-max","title":"Min max","text":"
  • Week 8. 2024/03/04
  • Topic: Min Max
"},{"location":"artificialintelligence/#break_1","title":"Break","text":"
  • Week 09. 2024/03/11
  • Topic: Spring BREAK. No classes this week.
"},{"location":"artificialintelligence/#monte-carlo-tree-search","title":"Monte Carlo Tree Search","text":"
  • Week 10. 2024/03/18
  • Topic: Monte Carlo Tree Search
"},{"location":"artificialintelligence/#chess","title":"Chess","text":"
  • Week 11. 2024/03/25
  • Topic: Chess
"},{"location":"artificialintelligence/#chess_1","title":"Chess","text":"
  • Week 12. 2024/04/01
  • Topic: Chess
"},{"location":"artificialintelligence/#chess_2","title":"Chess","text":"
  • Week 13. 2024/04/08
  • Topic: Chess
"},{"location":"artificialintelligence/#chess_3","title":"Chess","text":"
  • Week 14. 2024/04/15
  • Topic: Chess
"},{"location":"artificialintelligence/#chess_4","title":"Chess","text":"
  • Week 15. 2024/04/22
  • Topic: Work sessions for chess
"},{"location":"artificialintelligence/#finals_1","title":"Finals","text":"
  • Week 16. 2024/04/26
  • Topic: Finals Week / competition
"},{"location":"artificialintelligence/#schedule-for-fall-2023","title":"Schedule for Fall 2023","text":"

Relevant dates for the Fall 2023 semester:

  • 09-10 Oct 2023 - Midterms Week
  • 20-24 Nov 2023 - Thanksgiving Break
  • 11-15 Dec 2023 - Finals Week
"},{"location":"artificialintelligence/#introduction_2","title":"Introduction","text":"
  • Week 1. 2023/08/28
  • Topic: Introduction
  • Formal Assignment: Flocking Formal
  • Interactive Assignment: Flocking at MoBaGEn
"},{"location":"artificialintelligence/#behavioral-agents_1","title":"Behavioral Agents","text":"
  • Week 2. 2023/09/04
  • Topic: Flocking
  • Formal Assignment: Flocking at Beecrowd
  • Interactive Assignment: Flocking at MoBaGEn
"},{"location":"artificialintelligence/#finite-automata_1","title":"Finite Automata","text":"
  • Week 3. 2023/09/11
  • Topic: Automata Finite and 2D Grids
  • Formal Assignment: Game of Life at Beecrowd
  • Interactive Assignment: Game of Life at MoBaGEn
"},{"location":"artificialintelligence/#random-numbers_1","title":"Random Numbers","text":"
  • Week 4. Date: 2023/09/18
  • Topic: Pseudo Random Number Generation
  • Formal Assignment: PRNG at Beecrowd
"},{"location":"artificialintelligence/#dfs_1","title":"DFS","text":"
  • Week 5. 2023/09/25
  • Topic: Depth First Search, Random walk, Maze Generation
  • Formal Assignment: Maze at Beecrowd
  • Interactive Assignment: Maze at Mobagen
"},{"location":"artificialintelligence/#path-finding_1","title":"Path finding","text":"
  • Week 6. 2023/10/02
  • Topic: Breadth First Search and Path Finding A*
  • Interactive Assignment: Catch the Cat
"},{"location":"artificialintelligence/#midterms_2","title":"Midterms","text":"
  • Week 7. Date: 2023/10/09
  • Topic: Catch the Cat Challenge and Competition
  • Catch the Cat
"},{"location":"artificialintelligence/#spatial-quantization_2","title":"Spatial Quantization","text":"
  • Week 8. 2023/10/16
  • Topic: Spatial Quantization and Partitioning
  • Readings: Spatial Quantization
  • Formal Assignment: Hide and Seek
"},{"location":"artificialintelligence/#spatial-quantization_3","title":"Spatial Quantization","text":"
  • Week 9. 2023/10/23
  • Topic: Spatial Quantization and Partitioning
  • Readings: Spatial Quantization
  • Formal Assignment: Hide and Seek
"},{"location":"artificialintelligence/#noise-functions_1","title":"Noise Functions","text":"
  • Week 10. 2023/10/30
  • Topic: Noise functions
  • Formal Assignment:
  • Interactive Assignment: Scenario Generation
"},{"location":"artificialintelligence/#procedural-generation_2","title":"Procedural Generation","text":"
  • Week 11. 2023/11/06
  • Topic: Procedural Content Generation - Scenario
  • Formal Assignment:
  • Interactive Assignment: Scenario Generation
"},{"location":"artificialintelligence/#procedural-generation_3","title":"Procedural Generation","text":"
  • Week 12. 2023/11/13
  • Topic: Procedural Content Generation - Scenario
  • Formal Assignment:
  • Interactive Assignment: Scenario Generation
"},{"location":"artificialintelligence/#break_2","title":"Break","text":"
  • Week 13. 2023/11/20
  • Topic: BREAK. No classes
"},{"location":"artificialintelligence/#work-sessions_2","title":"Work sessions","text":"
  • Week 14. 2023/11/27
  • Topic: Work sessions for final project
"},{"location":"artificialintelligence/#work-sessions_3","title":"Work sessions","text":"
  • Week 15. 2023/12/04
  • Topic: Work sessions for final project
"},{"location":"artificialintelligence/#finals_2","title":"Finals","text":"
  • Week 16. 2023/12/11
  • Topic: Final Presentations
"},{"location":"artificialintelligence/00-introduction/","title":"Introduction to AI","text":"

Note

Please refer to this repository in order follow the previous assignments for the first course of AI. https://github.com/InfiniBrains/mobagen

Topics suggested in the survey, and some of my considerations.

  • Procedural Content Generation. Advanced terrain generation - It was previously covered in the last class, I am going to focus other topics
  • AI applied to improve 3D Animation Movement. Follow this https://github.com/sebastianstarke/AI4Animation
  • Topics relating to an AI Fighting game - Mostly Agents, State Machines and latency simulation (reflex)
  • Tactical AI - Linear programming, Restriction and Satisfiability problem
  • Neuron networks / Machine learning - This can be real hard to cover all topics in this class
  • Genetic algorithms and Reinforced learning - Find the best parameters for agent behaviors
  • Chess AI - In a broader sense it is a table game, and it is mostly heuristics and state exploration, chess is awesome to learn optimization techniques to reduce memory usage, space exploration, branch and cut, minmax, planning and satisfaction
  • Prediction algorithms for multiplayer - We can cover some techniques to extrapolate data to compensate lag instead of just mathematically extrapolate position, this is mostly an application of agent theory.
  • Stable diffusion/chatbot - This is a hot topic, I didn't went too deep on that, but I can help you at least surf this wave to create fun stuff for games, such as dialog creation.
  • Procedural audio generation - Most of them use convolutional networks mixed with recurrent neuron network. It can be real hard, so if we cover that, we are just goint to understand the overall idea, and learn how to use pre-determined models available for free.
  • Behavior trees - I have to be honest this is a topic that I don't like, but it is a good tool to have in your toolbox, so I can cover it.
  • ChatGPT and its siblings to generate text - I can cover at least how to modify small scoped model and use for your own intent.
  • Stable Diffusion and its siblings to generate images - I can cover at least how to modify small scoped model and use for your own intent.
  • AI subsystems and how to debug it.
  • Spatial quantization optimized for AI queries - I really enjoy this, but it can be hard to understand, because it uses lots of data structures

Note for myself: game worldbox

"},{"location":"artificialintelligence/01-pcg/","title":"Procedural Content Generation","text":"

PCG is a technique to algorithmically generate game content and assets, such as levels, textures, sound, enemies, quests, and more. The goal of PCG is to create unique and varied content without the need for manual labor. This can save time and money during development, and also allow for a more dynamic and replayable experience for the player. There are many different algorithms and techniques used in PCG, such as random generation, evolutionary algorithms, and rule-based systems.

PCG can also be used in other areas of game development such as textures, terrain, narrative, quests, and sound effects. With PCG, the possibilities are endless. It's important to note that PCG is not a replacement for human creativity, but rather a tool that can help create new and unique content. It is often used in conjunction with manual design and artistic direction.

"},{"location":"artificialintelligence/01-pcg/#procedural-scenario-generation","title":"Procedural Scenario Generation","text":"

Procedural scenario generation is a specific application of procedural content generation that is used to create unique and varied scenarios or missions in a game. These scenarios can include objectives, enemies, and environmental elements such as terrain and buildings.

Two common techniques are rule and noise based algorithms, and you can combine both. But first let's cover Pseudo Random Number Generation.

"},{"location":"artificialintelligence/01-pcg/#random-number-generation","title":"Random Number Generation","text":"

There are a plethora of algorithms to generate random numbers. The expected interface for a random number function is to just call it, (i.e. random()) and receive, ideally, a high quality and non-deterministic random number.

In the best scenario, some systems possess a random device (i.e. an antenna capturing electrical noise from the environment), and the random function will be a system call to it. Natural noise are stateless and subject only to the environmental influence that are (arguably) impossible to tamper. It is an awesome source of noise, but the problem is that device call is slow and not portable. So we need to use pseudo random number generators.

"},{"location":"artificialintelligence/01-pcg/#pseudo-random-number-generation","title":"Pseudo Random Number Generation","text":"

In this field, the main challenge is to create a function capable to generate a sequence of numbers that are statistically random or, at least, can pass some tests of randomness at some degree of quality. The function must be fast, portable and deterministic, so it can be reproduced in different machines and platforms The function must be able to generate the same sequence of numbers given the same seed.

A common PRNG is XORShift. It is fast, portable and deterministic, but do not deliver a high quality of randomness. It is a good choice for games, but not for cryptography.

uint32_t xorshift32()\n{\n    // seed and state 'x' must be non-zero\n    // you should implement the state initialization differently\n    static uint32_t x = 123456789;\n    // XOR the state with itself shifted by 13, 17 and 5.\n    // you can use other shifts, but these are the most common\n    x ^= x << 13;\n    x ^= x >> 17;\n    x ^= x << 5;\n    return x;\n}\n

As you might notice, the function is not stateless, so you have to initialize the state with a seed. It uses the previous state to generate the next one. A common practice is to use the system time as seed, or a random device call, but you can use any number you want. The seed is the only way to reproduce the sequence of numbers.

Another one is the Mersenne Twister. It is a high quality PRNG, but it is a bit slower.

"},{"location":"artificialintelligence/01-pcg/#noise-generation","title":"Noise Generation","text":""},{"location":"artificialintelligence/01-pcg/#noise-based-procedural-terrain-generation","title":"Noise based Procedural Terrain Generation","text":""},{"location":"artificialintelligence/01-pcg/#wave-function-collapse","title":"Wave function collapse","text":""},{"location":"artificialintelligence/01-pcg/#homework","title":"Homework","text":"

You can either use your favorite game engine or use this repository as an entry point. 1. Use a noise function to generate a heightmap. Optional: Use octaves and fractals to make it feels nicer; 2. Implement islands reference or any other meaningful way to make hydraulically erosion apparent; 3. Implement Hydraulic Erosion to make the scenario feels more realistic. See the section 'HYDRAULIC EROSION' from book AI for Games Third ed. IanMillington; 4. Render the heightmap with biomes colors to make more understandable(ocean, sand, forest, mountains, snow...). Optionally use gradient / ramp functions instead of conditionals.

"},{"location":"artificialintelligence/01-pcg/#references","title":"References","text":"

Procedural content generation is a broad topic, and we need to narrow down some applications and algorithms to cover. I carefully covered Maze generation and Scenario Generation here https://github.com/InfiniBrains/mobagen and I invite you to check the examples named maze and scenario. Besides that, Amit Patel have a really nice website focused in many game algorithms, check it out and support his work https://www.redblobgames.com/

Please refer to the book below. We are going to follow the contents mostly from it.

Book: https://amzn.to/3kvtNDS

"},{"location":"artificialintelligence/02-sm/","title":"State machines","text":"

Some raw thoughts: - Probably a game of life is a good game to implement to showcase automata, state machines and decision making

"},{"location":"artificialintelligence/03-boardgames/","title":"Board Games","text":"

Here we are going to cover - Space exploration; - Memory optimization; - MinMax; - Branch and cut; - Rule and goal based decision-making

The game we are going to cover here can be chess, rubbik cube or any card game.

"},{"location":"artificialintelligence/04-spatialhashing/","title":"Spatial Hashing","text":"

A Spatial Hashing is a common technique to speed up queries in a multidimensional space. It is a data structure that allows you to quickly find all objects within a certain area of space. It is commonly used in games and simulations to speed up, artificial intelligence world queries, collision detection, visibility testing and other spatial queries.

Advantages of the spatial hashing:

  • simple to implement;
  • very fast: as fast as your key hashing function;
  • easy to parallelize;
  • a good choice for big worlds;

Problem with spatial hashing:

  • it is not precise;
  • it is not good for small worlds;
  • needs fine tune to find the right cell size;
  • have to update the bucket when the object moves;
  • find the nearest objects is not trivial, you will have to query the adjacent cells;
"},{"location":"artificialintelligence/04-spatialhashing/#buckets","title":"Buckets","text":"

The core of the spatial hashing is the bucket. It is a container that holds all the objects that are within a certain area of space contained in the cell area or volume. The terms cell and bucket can be interchangeable in this context.

In order to find buckets, you will have to create ways to quantize the world space into a grid of cells. It is hard to define the best cell size, but it is a good practice to make it be a couple of times bigger than the biggest object you have in the world. The cell size will define the precision of the spatial hashing, and the bigger it is, the less precise it will be.

"},{"location":"artificialintelligence/04-spatialhashing/#spatial-quantization","title":"Spatial quantization","text":"

The spatial quantization is the process of converting a continuous space into a discrete space. This is the core process of finding the right bucket for an object. Let's assume that we have a 2D space, and we want to find the bucket for a given object.

// assuming Vector2f is a 2D vector with float components;\n// and Vector2i is a 2D vector with integer components;\n// the quantizations function will be:\nVector2<int32_t> quantized(float_t cellSize=1.0f) const {\n  return Vector2<int32_t>{\n    static_cast<int32_t>(std::floor(x + cellSize/2) / cellSize),\n    static_cast<int32_t>(std::floor(y + cellSize/2) / cellSize)\n  };\n}\n
"},{"location":"artificialintelligence/04-spatialhashing/#data-structures","title":"Data structures","text":""},{"location":"artificialintelligence/04-spatialhashing/#data-structure-for-the-bucket","title":"Data structure for the bucket","text":"

First, we have to decide the data structure your bucket will use to store the objects. The common choices are:

  • vector<GameObject*> - a vector of pointers to game objects;
  • set<GameObject*> - a set of pointers to game objects;
  • unordered_set<GameObject*> - an unordered_set of pointers to game objects;

  • The problem of using a vector is that it is not efficient to remove, and find an object in it: O(n); but it is efficient to add (amortized O(1)) and iterate over it (random access is O(1)).

  • The underlying data structure of a set and map is a binary search tree, so it is efficient to find, add and remove objects: O(lg(n)), but it is not efficient to iterate over it.
  • Now, the unordered_set and unordered_map is a hash table, so it is efficient to find, add and remove objects: O(1), and it is efficient to iterate over it. The overhead of using a hash table is the memory usage and the hashing function. It will be as fast as your hashing function.

In our use case, we will frequently list all elements in a bucket, we will add and remove elements from it, while they move in the world. So, the best choice is to use an unordered_set of pointers to game objects.

So lets define the bucket:

using std::unordered_set<GameObject*> = bucket_t;\n
"},{"location":"artificialintelligence/04-spatialhashing/#data-structure-for-indexing-buckets","title":"Data structure for indexing buckets","text":"

Ideally, we are looking for a data structure that will give us a bucket for a given position. We have some candidates for this job:

  • bucket_t[width][height] - a 2D array of buckets;
  • vector<vector<bucket_t>> - a 2D vector of buckets;
  • map<Vector2i, bucket_t> - a map of buckets;
  • unordered_map<Vector2i, bucket_t> - a map of buckets;

  • arrays and vectors are the fastest data structures to use, but they are not good choices if you have a sparse world;

  • map is a binary search tree;
  • unordered_map is a hash table.

The unordered_map is the best choice for this use case.

// quantized world\nunordered_map<Vector2i, go_bucket_t> world;\n
"},{"location":"artificialintelligence/04-spatialhashing/#iterating-over-the-whole-world-at-once","title":"Iterating over the whole world at once","text":"

Sometimes we just want to iterate over all objects in the world, add and remove elements. In this case, we can use a unordered_set to store all game objects.

// all game objects for faster global world iteration and cleanup\ngo_bucket_t worldObjects;\n
"},{"location":"artificialintelligence/04-spatialhashing/#neighbor-cells","title":"Neighbor cells","text":"

When you need to query the neighbors of an object, most of the time you will need to check the current cell and the adjacent cells. You can create a function for that or include the content of it in your logic.

// neighbor buckets. not memory intensive\n// returns the reference to the 9 buckets surrounding the given bucket, including itself\n// but on the usage, you will have to check \nvector<go_bucket_t*> neighborBuckets(const Vector2i& bucket) {\n    vector<go_bucket_t*> neighbors;\n    neighbors.reserve(9); // to avoid reallocations\n    for (int i = -1; i <= 1; i++)\n        for (int j = -1; j <= 1; j++){\n            neighbors.push_back(&world()[Vector2i{bucket.x + i, bucket.y + j}]);\n        }\n    return neighbors;\n}\n\n// neighbors objects inside the 9 buckets surroundings the given bucket\n// memory intensive.\ngo_bucket_t neighborObjects(const Vector2i& bucket) {\n    go_bucket_t neighbors;\n    for (auto& b: neighborBuckets(bucket))\n        neighbors.insert(b->begin(), b->end());\n    return neighbors;\n}\n
"},{"location":"artificialintelligence/04-spatialhashing/#implementation","title":"Implementation","text":"

This sample bellow a bit complex, but I added a bunch of support code to make it more complete, feel free to simplify it to your needs and split into multiple files.

#include <iostream> // for cout\n#include <unordered_map> // for unordered_map\n#include <unordered_set> // for unordered_set\n#include <random> // for random_device and default_random_engine\n#include <cmath> // for floor\n#include <cstdint> // for int32_t\n#include <vector> // for vector\n\n// to allow derivated structs to be used as keys in sorted containers and binary search algorithms\ntemplate<typename T>\nstruct IComparable { virtual bool operator<(const T& other) const = 0; };\n// to allow derivated structs to be used as keys in hash based containers and linear search algorithms\ntemplate<typename T>\nstruct IEquatable { virtual bool operator==(const T& other) const = 0; };\n\n// generic Vector2\n// requires that T is a int32_t or float_t\ntemplate<typename T>\n#ifdef __cpp_concepts\nrequires std::is_same_v<T, int32_t> || std::is_same_v<T, float_t>\n#endif\nstruct Vector2:\n        public IComparable<Vector2<T>>,\n        public IEquatable<Vector2<T>> {\n    T x, y;\n    Vector2(): x(0), y(0) {}\n    Vector2(T x, T y): x(x), y(y) {}\n    // operator equals\n    bool operator==(const Vector2& other) const override {\n        return this == &other || (x == other.x && y == other.y);\n    }\n    // operator < for being able to use it as a key in a map or set\n    bool operator<(const Vector2& other) const override {\n        return x < other.x || (x == other.x && y < other.y);\n    }\n\n    // quantize the vector to a 2d index\n    // to nearest integer\n    Vector2<int32_t> quantized(float_t cellSize=1.0f) const {\n        return Vector2<int32_t>{\n                static_cast<int32_t>(std::floor(x + cellSize/2) / cellSize),\n                static_cast<int32_t>(std::floor(y + cellSize/2) / cellSize)\n        };\n    }\n};\n\n// specialized Vector2 for int and float\nusing Vector2i = Vector2<int32_t>;\n// float32_t is only available in c++23, so we use float_t instead\nusing Vector2f = Vector2<float_t>;\n\n// helper struct to generate unique id for game objects\n// mostly debug purposes\nstruct uid_type {\nprivate:\n    static inline size_t nextId = 0; // to be used as a counter\n    size_t uid; // to be used as a unique identifier\npublic:\n    // not thread safe, but it is not a problem for this example\n    uid_type(): uid(nextId++) {}\n    inline size_t getUid() const { return uid; }\n};\n\n// generic game object implementation\n// replace this with your own data that you want to store in the world\nclass GameObject: public uid_type {\n    Vector2f position;\npublic:\n    GameObject();\n    GameObject(const GameObject& other);\n    // todo: add your other custom data here\n    // when the it moves, it should check if it needs to update its bucket in the world\n    void setPosition(const Vector2f& newPosition);\n    Vector2f getPosition() const { return position; }\n};\n\n// hashing\nnamespace std {\n    // Hash specialization for Vector2i\n    template<>\n    struct hash<Vector2i> {\n        size_t operator()(const Vector2i& v) const {\n            // shift and xor operator the other to get a unique hash\n            // the problem of this approach is that it will generate neighboring cells with similar hashes\n            // to fix that, you might want to use a more complex hashing function from std::hash<T>\n            // copy to avoid const cast\n            auto x = v.x, y = v.y;\n            return (*reinterpret_cast<size_t*>(&x) << 32) ^ (*reinterpret_cast<size_t*>(&y));\n        }\n    };\n}\n\n// game object pointer\nusing GameObjectPtr = GameObject*;\n// alias for the game object bucket\nusing go_bucket_t = std::unordered_set<GameObjectPtr>;\n// alias for the world type\nusing world_t = std::unordered_map<Vector2i, go_bucket_t>;\n\n// singletons here are being used to avoid global variables and to allow the world to be used in a visible scope\n// you should use a better wrappers and abstractions in a real project\n// singleton world\nworld_t& world() {\n    static world_t world;\n    return world;\n}\n// singleton world objects\ngo_bucket_t& worldObjects(){\n    static go_bucket_t worldObjects;\n    return worldObjects;\n}\n\n// Constructor\nGameObject::GameObject(): uid_type(), position({0,0}) {\n    // insert in the world\n    worldObjects().insert(this);\n    world()[position.quantized()].insert(this);\n}\n\n// Copy constructor\nGameObject::GameObject(const GameObject& other): uid_type(other), position(other.position) {\n    // insert in the world\n    worldObjects().insert(this);\n    world()[position.quantized()].insert(this);\n}\n\n// this function requires the world to be in a visible scope like this or change it to access through a singleton\n// if in the movement, it changes its quantized position, we should remove it from the old bucket and insert it in the new one\nvoid GameObject::setPosition(const Vector2f& newPosition) {\n    world_t& w = world();\n    // bucket ids\n    auto oldId = position.quantized();\n    auto newId = newPosition.quantized();\n    // update position\n    position = newPosition;\n    // check if it needs to update its bucket in the world\n    if (newId == oldId)\n        return;\n    // remove from the old bucket\n    w[oldId].erase(this);\n    if(w[oldId].empty()) [[unlikely]] // c++20\n        w.erase(oldId);\n    // insert in the new bucket\n    w[newId].insert(this);\n}\n\n// random vector2f\nVector2f randomVector2f(float_t min, float_t max) {\n    static std::random_device rd;\n    static std::default_random_engine re(rd());\n    static std::uniform_real_distribution<float_t> dist(min, max);\n    return Vector2f{dist(re), dist(re)};\n}\n\n// neighbor buckets. not memory intensive\n// returns potentially all 9 buckets surroundings the given bucket, including itself\nstd::vector<go_bucket_t*> neighborBuckets(const Vector2i& bucket) {\n    std::vector<go_bucket_t*> neighbors;\n    for (int i = -1; i <= 1; i++){\n        for (int j = -1; j <= 1; j++){\n            auto id = Vector2i{bucket.x + i, bucket.y + j};\n            if(world().contains(id) && !world()[id].empty()) // contains is c++20\n                neighbors.push_back(&world()[id]);\n        }\n    }\n    return neighbors;\n}\n\n// neighbors objects inside the 9 buckets surroundings the given bucket\n// memory intensive. use with caution\ngo_bucket_t neighborObjects(const Vector2i& bucket) {\n    go_bucket_t neighbors;\n    for (auto& b: neighborBuckets(bucket))\n        neighbors.insert(b->begin(), b->end());\n    return neighbors;\n}\n\n// dump world\nvoid dumpWorld() {\n    for (auto& bucket: world()) {\n        std::cout << \"bucket: [\" << bucket.first.x << \",\" << bucket.first.y << \"]:\" << std::endl;\n        for (auto& obj: bucket.second)\n             std::cout <<\" - \"<< obj->getUid() << \": at (\" << obj->getPosition().x << \", \" << obj->getPosition().y << \")\" << std::endl;\n    }\n    std::cout << std::endl;\n}\n\nint main() {\n    // fill the world with some game objects\n    for (int i = 0; i < 121; i++) {\n        // the constructor will insert it in the world\n        auto obj = new GameObject();\n        // randomly move the game objects\n        // this will update their position and their bucket in the world\n        obj -> setPosition(randomVector2f(-5, 5));\n    }\n\n    // dump the world\n    dumpWorld();\n\n    // remove all game objects\n    for (auto& obj: worldObjects())\n        delete obj;\n\n    // clear refs\n    worldObjects().clear();\n    world().clear();\n\n    return 0;\n}\n
"},{"location":"artificialintelligence/04-spatialhashing/#homework","title":"Homework","text":"
  1. Implement a spatial hashing for a 3D world;
  2. Implement another space partition technique, such as a quadtree/octree/kdtree and compare:
    1. the performance of both in scenarios of moving objects, searching for objects and adding / removing objects;
    2. memory consumption;
    3. which one will be slow down faster the bigger the world becomes;
"},{"location":"artificialintelligence/05-kdtree/","title":"KD-Trees","text":"

KD-Trees are a special type of binary trees that are used to partition a k-dimensional space. They are used to solve the problem of finding the nearest neighbor of a point in a k-dimensional space. The name KD-Tree comes from the method of partitioning the space, the K stands for the number of dimensions in the space.

KD-tree are costly to mantain and balance. So use it only if you have a lot of queries to do, and the space is not changing. If you have a lot of queries, but the space is changing a lot, you should use a different data structure, such as a quadtree or a hash table.

"},{"location":"artificialintelligence/05-kdtree/#methodology","title":"Methodology","text":"
  • On the binary tree KD-Tree, each node represents a k-dimensional point;
  • The tree is constructed by recursively partitioning the space into two half-spaces.
  • The partitioning is done by selecting a dimension and a value, and then splitting the space into two half-spaces.
  • The dimension and value are selected in such a way that the space is divided into two equal parts.
  • The left child of a node contains all the points for that dimension that are less than the value, and the right child contains all the points that are greater than or equal to the value.
"},{"location":"artificialintelligence/05-kdtree/#example","title":"Example","text":"

Let's consider the following 2D points:

(3, 1), (7, 15), (2, 14), (16, 2), (19, 13), (12, 17), (1, 9)\n

{ \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\", \"description\": \"A scatter plot of the points\", \"data\": { \"values\": [ {\"x\": 3, \"y\": 1}, {\"x\": 7, \"y\": 15}, {\"x\": 2, \"y\": 14}, {\"x\": 16, \"y\": 2}, {\"x\": 19, \"y\": 13}, {\"x\": 12, \"y\": 17}, {\"x\": 1, \"y\": 9} ] }, \"mark\": \"point\", \"encoding\": { \"x\": {\"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"y\", \"type\": \"quantitative\"} } }

The first step is to define the root. For that we need do define two things: the dimension and the value:

  • For the dimension we need to select the one that has the largest range.
  • For the value we need to select the median of that dimension.

So if we sort the points by the axis, we will have:

SortedByX = (1, 9), (3, 1), (2, 14), (7, 15), (12, 17), (16, 2), (19, 13)\nSortedByY = (3, 1), (16, 2), (1, 9), (19, 13), (7, 15), (3, 15), (12, 17)\n

The largest range is on the X axis, so we will select the median of the X axis as the root. The median of the X axis is (7, 15), and the starting dimension will be X.

For the next level, the left side candidates will be the ones with X less than (7, 15), and the right side, the ones that are greater or equal to (7, 15). But now this level will be governed sorted by Y:

LeftSortedByY  = (3, 1), (1, 9), (2, 14)\nRightSortedByY = (16, 2), (19, 13), (12, 17)\n

Graph showing the first split on X at (7, 15):

The median for the left side is (1, 9), and for the right side is (19, 13).

The current state of the tree is:

{ \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\", \"description\": \"A scatter plot of the points\", \"encoding\": { \"x\": {\"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"y\", \"type\": \"quantitative\"} }, \"layer\": [ { \"data\": { \"values\": [ {\"x\": 3, \"y\": 1}, {\"x\": 7, \"y\": 15}, {\"x\": 2, \"y\": 14}, {\"x\": 16, \"y\": 2}, {\"x\": 19, \"y\": 13}, {\"x\": 12, \"y\": 17}, {\"x\": 1, \"y\": 9} ] }, \"mark\": \"point\" }, { \"data\": { \"values\": [ {\"x\": 7, \"y\": 0}, {\"x\": 7, \"y\": 20} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#DB745B\" } } } ] }

Now we apply the same rules for the children of the left and right nodes.

graph TD\n    Root(07,15)\n    Left(01,09)\n    Right(19,13)\n    LeftLeft(03,01)\n    LeftRight(02,14)\n    RightLeft(16,02)\n    RightRight(12,17)\n    Root --> |x<7| Left\n    Root --> |x>7| Right\n    Left --> |y<9| LeftLeft\n    Left --> |y>9| LeftRight\n    Right --> |y<13| RightLeft\n    Right --> |y>13| RightRight

The tree will be:

{ \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\", \"description\": \"A scatter plot of the points\", \"encoding\": { \"x\": {\"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"y\", \"type\": \"quantitative\"} }, \"layer\": [ { \"data\": { \"values\": [ {\"x\": 3, \"y\": 1}, {\"x\": 7, \"y\": 15}, {\"x\": 2, \"y\": 14}, {\"x\": 16, \"y\": 2}, {\"x\": 19, \"y\": 13}, {\"x\": 12, \"y\": 17}, {\"x\": 1, \"y\": 9} ] }, \"mark\": \"point\" }, { \"data\": { \"values\": [ {\"x\": 7, \"y\": 0}, {\"x\": 7, \"y\": 20} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#DB745B\" } } }, { \"data\": { \"values\": [ {\"x\": 0, \"y\": 9}, {\"x\": 7, \"y\": 9} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#4F72DB\" } } }, { \"data\": { \"values\": [ {\"x\": 7, \"y\": 13}, {\"x\": 20, \"y\": 13} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#4F72DB\" } } } ] }

And lastly, we will have:

{ \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.json\", \"description\": \"A scatter plot of the points\", \"encoding\": { \"x\": {\"field\": \"x\", \"type\": \"quantitative\"}, \"y\": {\"field\": \"y\", \"type\": \"quantitative\"} }, \"layer\": [ { \"data\": { \"values\": [ {\"x\": 3, \"y\": 1}, {\"x\": 7, \"y\": 15}, {\"x\": 2, \"y\": 14}, {\"x\": 16, \"y\": 2}, {\"x\": 19, \"y\": 13}, {\"x\": 12, \"y\": 17}, {\"x\": 1, \"y\": 9} ] }, \"mark\": \"point\" }, { \"data\": { \"values\": [ {\"x\": 7, \"y\": 0}, {\"x\": 7, \"y\": 20} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#DB745B\" } } }, { \"data\": { \"values\": [ {\"x\": 0, \"y\": 9}, {\"x\": 7, \"y\": 9} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#4F72DB\" } } }, { \"data\": { \"values\": [ {\"x\": 7, \"y\": 13}, {\"x\": 20, \"y\": 13} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#4F72DB\" } } }, { \"data\": { \"values\": [ {\"x\": 3, \"y\": 0}, {\"x\": 3, \"y\": 9} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#93DB35\" } } }, { \"data\": { \"values\": [ {\"x\": 2, \"y\": 9}, {\"x\": 2, \"y\": 20} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#93DB35\" } } }, { \"data\": { \"values\": [ {\"x\": 12, \"y\": 13}, {\"x\": 12, \"y\": 20} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#93DB35\" } } }, { \"data\": { \"values\": [ {\"x\": 16, \"y\": 13}, {\"x\": 16, \"y\": 0} ] }, \"mark\": \"line\", \"encoding\": { \"color\": { \"value\": \"#93DB35\" } } } ] }

"},{"location":"artificialintelligence/05-kdtree/#implementation","title":"Implementation","text":"
#include <iostream>\n#include <vector>\n#include <algorithm>\n\n// vector\nstruct Vector2f {\n    float x, y;\n    Vector2f(float x, float y) : x(x), y(y) {}\n    // subscript operator to be used in the KDTree\n    float& operator[](size_t index) {\n        return index%2 == 0 ? x : y;\n    }\n    // distanceSqrd between two vectors\n    float distanceSqrd(const Vector2f& other) const {\n        return (x - other.x)*(x - other.x) + (y - other.y)*(y - other.y);\n    }\n};\n\n// your object data structure\nclass GameObject {\n    // your other data\npublic:\n    Vector2f position;\n    explicit GameObject(Vector2f position={0,0}) : position(position) {}\n};\n\n// KDNode\nstruct KDNode {\n    GameObject* object;\n    KDNode* left;\n    KDNode* right;\n    KDNode(GameObject* object, KDNode* left = nullptr, KDNode* right= nullptr) :\n        object(object),\n        left(left),\n        right(right)\n      {}\n};\n\n// KDTree manager\nclass KDTree {\npublic:\n    KDNode* root;\n    KDTree() : root(nullptr) {}\n\n    ~KDTree() {\n        // interactively delete the nodes\n        std::vector<KDNode*> nodes;\n        nodes.push_back(root);\n        while (!nodes.empty()) {\n            KDNode* current = nodes.back();\n            nodes.pop_back();\n            if (current->left != nullptr) nodes.push_back(current->left);\n            if (current->right != nullptr) nodes.push_back(current->right);\n            delete current;\n        }\n    }\n\n    void insert(GameObject* object) {\n        if (root == nullptr) {\n            root = new KDNode(object);\n        } else {\n            KDNode* current = root;\n            size_t dimensionId = 0;\n            while (true) {\n                if (object->position[dimensionId] < current->object->position[dimensionId]) {\n                    if (current->left == nullptr) {\n                        current->left = new KDNode(object);\n                        break;\n                    } else {\n                        current = current->left;\n                    }\n                } else {\n                    if (current->right == nullptr) {\n                        current->right = new KDNode(object);\n                        break;\n                    } else {\n                        current = current->right;\n                    }\n                }\n                dimensionId++;\n            }\n        }\n    }\n\n    void insert(std::vector<GameObject*> objects, int dimensionId=0 ) {\n        if(objects.empty()) return;\n        if(objects.size() == 1) {\n            insert(objects[0]);\n            return;\n        }\n        // find the median for the current dimension\n        std::sort(objects.begin(), objects.end(), [dimensionId](GameObject* a, GameObject* b) {\n            return a->position[dimensionId] < b->position[dimensionId];\n        });\n        // insert the median\n        auto medianIndex = objects.size() / 2;\n        insert(objects[medianIndex]);\n\n        // insert the left and right exluding the median\n        insert(std::vector<GameObject*>(objects.begin(), objects.begin() + medianIndex), (dimensionId + 1) % 2);\n        insert(std::vector<GameObject*>(objects.begin() + medianIndex + 1, objects.end()), (dimensionId + 1) % 2);\n    }\n\n    // get the nearest neighbor\n    GameObject* nearestNeighbor(Vector2f position) {\n        return NearestNeighbor(root, position, root->object, root->object->position.distanceSqrd(position), 0);\n    }\n\n    GameObject* NearestNeighbor(KDNode* node, Vector2f position, GameObject* best, float bestDistance, int dimensionId) {\n        // create your own Nearest Neighbor algorithm. That's not hard, just follow the rules\n        // 1. If the current node is null, return the best\n        // 2. If the current node is closer to the position, update the best\n        // 3. If the current node is closer to the position than the best, search the children\n        // 4. If the current node is not closer to the position than the best, search the children\n        // 5. Return the best\n    }\n\n    // draw the tree\n    void draw() {\n        std::vector<KDNode*> nodes;\n        // uses space to shaw the level of the node\n        std::vector<std::string> spaces;\n        nodes.push_back(root);\n        spaces.push_back(\"\");\n        while (!nodes.empty()) {\n            KDNode* current = nodes.back();\n            std::string space = spaces.back();\n            nodes.pop_back();\n            spaces.pop_back();\n            if (current->right != nullptr) {\n                nodes.push_back(current->right);\n                spaces.push_back(space + \"  \");\n            }\n            std::cout << space << \":> \" << current->object->position.x << \", \" << current->object->position.y << std::endl;\n            if (current->left != nullptr) {\n                nodes.push_back(current->left);\n                spaces.push_back(space + \"  \");\n            }\n        }\n    }\n};\n\nint main(){\n    // nodes: (3, 1), (7, 15), (2, 14), (16, 2), (19, 13), (12, 17), (1, 9)\n    KDTree tree;\n    std::vector<GameObject*> objects = {\n        new GameObject(Vector2f(3, 1)),\n        new GameObject(Vector2f(7, 15)),\n        new GameObject(Vector2f(2, 14)),\n        new GameObject(Vector2f(16, 2)),\n        new GameObject(Vector2f(19, 13)),\n        new GameObject(Vector2f(12, 17)),\n        new GameObject(Vector2f(1, 9))\n    };\n    // insert the objects\n    tree.insert(objects);\n    // draw the tree\n    tree.draw();\n    // get the nearest neighbor to (10, 10)\n    GameObject* nearest = tree.nearestNeighbor(Vector2f(3, 15));\n    std::cout << \"Nearest neighbor to (3, 15): \" << nearest->position.x << \", \" << nearest->position.y << std::endl;\n    // will print 2, 14\n    return 0;\n}\n
"},{"location":"artificialintelligence/05-kdtree/#homework","title":"Homework","text":"
  1. Implement the KDTree in your favorite language;
  2. Improve the KDTree to support 3D;
  3. Implement more methods to make it dynamic: insert, remove, update;
  4. Modify the KDTree to be balanced on insertion;
"},{"location":"artificialintelligence/06-pathfinding/","title":"Pathfinding on a 2D grid","text":""},{"location":"artificialintelligence/06-pathfinding/#data-structures","title":"Data structures","text":"

In order to build an A-star pathfinding algorithm, we need to define some data structures. We need:

  • Index for the quantized map;
  • Position for the game objects;
  • Bucket to query in O(1) if the elements are there;
  • Map from Index to Buckets;
  • Priority Queue to store the frontier of visitable buckets;
  • Vector of Indexes to store the path;
"},{"location":"artificialintelligence/06-pathfinding/#index-and-position","title":"Index and Position","text":"

In order to A-star to work in a continuous space, we should quantize the space position into indexes.

// generic vector2 struct to work with floats and ints\ntemplate <typename T>\n// requires T to be int32_t or float_t\nrequires std::is_same<T, int32_t>::value || std::is_same<T, float_t>::value // C++20\nstruct Vector2 {\n    // data\n    T x, y;\n    // constructors\n    Vector2() : x(0), y(0) {}\n    Vector2(T x, T y) : x(x), y(y) {}\n    // copy constructor\n    Vector2(const Vector2& v) : x(v.x), y(v.y) {}\n    // assignment operator\n    Vector2& operator=(const Vector2& v) {\n        x = v.x;\n        y = v.y;\n        return *this;\n    }\n    // operators\n    Vector2 operator+(const Vector2& v) const {\n        return Vector2(x + v.x, y + v.y);\n    }\n    Vector2 operator-(const Vector2& v) const {\n        return Vector2(x - v.x, y - v.y);\n    }\n    // distance\n    float distance(const Vector2& v) const {\n        return sqrt((x - v.x) * (x - v.x) + (y - v.y) * (y - v.y));\n    }\n    // distance squared\n    float distanceSquared(const Vector2& v) const {\n        return (x - v.x) * (x - v.x) + (y - v.y) * (y - v.y);\n    }\n    // quantize to index2\n    Vector2<int32_t> quantized(float scale=1) const {\n        return {(int32_t)std::round(x / scale), (int32_t)std::round(y / scale)};\n    }\n    // operator < for std::map\n    bool operator<(const Vector2& v) const {\n        return x < v.x || (x == v.x && y < v.y);\n    }\n    // operator == for std::map\n    bool operator==(const Vector2& v) const {\n        return x == v.x && y == v.y;\n    }\n};\n
  • The operators < and == are required to use the Vector2 as a key in a std::map.
  • The quantized method is used to convert a position into an index.
  • The distance and distanceSquared methods are used to calculate the distance between two positions. Is used on A-star to calculate the cost to reach a neighbor or the distance to the goal.
using Index2 = Vector2<int32_t>;\nusing Position2 = Vector2<float_t>;\n

I am going to use Index2 to store the quantized index in the grid and Position2 to store the continuous position.

// hash function for std::unordered_map\ntemplate <>\nstruct std::hash<Index2> {\n    size_t operator()(const Index2 &v) const {\n        return (((size_t)v.x) << 32) ^ (size_t)v.y;\n    }\n};\n

This hash function is for the std::unordered_map and std::unordered_set to work with Index2.

"},{"location":"artificialintelligence/06-pathfinding/#bucket","title":"Bucket","text":"

In order to have an easy way to query if a game object is in a bucket, we need to use an std::unordered_set of pointers to the game objects. In order to index them, we will use an std::unordered_map from Index2 to std::unordered_set.

std::unordered_map<Index2, std::unordered_set<GameObject*>> quantizedMap;\n
"},{"location":"artificialintelligence/06-pathfinding/#costs","title":"Costs","text":"

Your scenario might have different costs to reach a bucket. You can use an std::unordered_map to store the cost of each bucket.

std::unordered_map<Index2, float> costMap;\n
"},{"location":"artificialintelligence/06-pathfinding/#walls","title":"Walls","text":"

You might want to avoid some buckets. You can use an std::unordered_map to store the walls.

std::unordered_map<Index2, bool> isWall;\n
"},{"location":"artificialintelligence/06-pathfinding/#priority-queue","title":"Priority Queue","text":"

In order to store the frontier of visitable buckets, we need to use a std::priority_queue of pairs of float and Index2.

std::priority_queue<std::pair<float, Index2>> frontier;\n
"},{"location":"artificialintelligence/06-pathfinding/#implementation","title":"Implementation","text":"
/**\nIn order to build an A-star pathfinding algorithm, we need to define some data structures. We need:\n- Index for the quantized map;\n- Position2 for the game objects;\n- Bucket to query in O(1) if the elements are there;\n- Map from Index to Buckets;\n- Priority Queue to store the frontier of visitable buckets;\n- Vector of Indexes to store the path;\n*/\n\n#include <iostream>\n#include <unordered_map>\n#include <unordered_set>\n#include <cmath>\n#include <vector>\n#include <queue>\n\nusing std::pair;\n\ntemplate<typename K, typename V>\nusing umap = std::unordered_map<K, V>;\n\ntemplate<typename T>\nusing uset = std::unordered_set<T>;\n\ntemplate<typename T>\nusing pqueue = std::priority_queue<T>;\n\n// generic vector2 struct to work with floats and ints\ntemplate <typename T>\n// requires T to be int32_t or float_t\nrequires std::is_same<T, int32_t>::value || std::is_same<T, float_t>::value // C++20\nstruct Vector2 {\n    // data\n    T x, y;\n    // constructors\n    Vector2() : x(0), y(0) {}\n    Vector2(T x, T y) : x(x), y(y) {}\n    // copy constructor\n    Vector2(const Vector2& v) : x(v.x), y(v.y) {}\n    // assignment operator\n    Vector2& operator=(const Vector2& v) {\n        x = v.x;\n        y = v.y;\n        return *this;\n    }\n    // operators\n    Vector2 operator+(const Vector2& v) const {\n        return Vector2(x + v.x, y + v.y);\n    }\n    Vector2 operator-(const Vector2& v) const {\n        return Vector2(x - v.x, y - v.y);\n    }\n    // distance\n    float distance(const Vector2& v) const {\n        return sqrt((x - v.x) * (x - v.x) + (y - v.y) * (y - v.y));\n    }\n    // distance squared\n    float distanceSquared(const Vector2& v) const {\n        return (float)(x - v.x) * (x - v.x) + (float)(y - v.y) * (y - v.y);\n    }\n    // quantize to index2\n    Vector2<int32_t> quantized(float scale=1) const {\n        return {(int32_t)std::round(x / scale), (int32_t)std::round(y / scale)};\n    }\n    // operator < for std::map\n    bool operator<(const Vector2& v) const {\n        return x < v.x || (x == v.x && y < v.y);\n    }\n    // operator == for std::map\n    bool operator==(const Vector2& v) const {\n        return x == v.x && y == v.y;\n    }\n};\n\nusing Index2 = Vector2<int32_t>;\nusing Position2 = Vector2<float_t>;\n\n// implement this struct to store game objects by yourself\nstruct GameObject {\n    Position2 position;\n    // add here your other data\n\n    GameObject(const Position2& position) : position(position) {}\n    GameObject() : position(Position2()) {}\n};\n\n// hash function for std::unordered_map\ntemplate <>\nstruct std::hash<Index2> {\n    size_t operator()(const Index2 &v) const {\n        return (((size_t)v.x) << 32) | (size_t)v.y;\n    }\n};\n\n// The game objects organized into buckets\numap<Index2, uset<GameObject*>> quantizedMap;\n// all game objects\nuset<GameObject*> gameObjects;\n// The cost of each bucket\numap<Index2, float> costMap;\n// The walls\numap<Index2, bool> isWall;\n\n// Pathfinding algorithm from position A to position B\nstd::vector<Index2> findPath(const Position2& startPos, const Position2& endPos) {\n    // quantize\n    Index2 start = startPos.quantized();\n    Index2 end = endPos.quantized();\n\n    // datastructures\n    pqueue<pair<float, Index2>> frontier; // to store the frontier of visitable buckets\n    umap<Index2, float> accumulatedCosts; // to store the cost to reach a bucket\n\n    // initialize\n    accumulatedCosts[start] = 0;\n    frontier.emplace(0, start);\n\n    // main loop\n    while (!frontier.empty()) {\n        // consume first element from the frontier\n        auto current = frontier.top().second;\n        frontier.pop();\n\n        // quit early\n        if (current == end)\n            break;\n\n        // iterate over neighbors\n        auto candidates = {\n                current + Index2(1, 0),\n                current + Index2(-1, 0),\n                current + Index2(0, 1),\n                current + Index2(0, -1)\n        };\n        for (const auto& next : candidates) {\n            // skip walls\n            if(isWall.contains(current))\n                continue;\n            // if the neighbor has not been visited and is not on frontier\n            // calculate the cost to reach the neighbor\n            float newCost =\n                    accumulatedCosts[current] + // cost so far\n                    current.distance(next) + // cost to reach the neighbor\n                    (costMap.contains(next) ? costMap[next] : 0); // cost of the neighbor\n            // if the cost is lower than the previous cost\n            if (!accumulatedCosts.contains(next) || newCost < accumulatedCosts[next]) {\n                // update the cost\n                accumulatedCosts[next] = newCost;\n                // calculate the priority\n                float priority = newCost + next.distance(end);\n                // push the neighbor to the frontier\n                frontier.emplace(-priority, next);\n            }\n        }\n    }\n\n    // reconstruct path\n    std::vector<Index2> path;\n    Index2 current = end;\n    while (current != start) {\n        path.push_back(current);\n        auto candidates = {\n                current + Index2(1, 0),\n                current + Index2(-1, 0),\n                current + Index2(0, 1),\n                current + Index2(0, -1)\n        };\n        for (const auto& next : candidates) {\n            if (accumulatedCosts.contains(next) && accumulatedCosts[next] < accumulatedCosts[current]) {\n                current = next;\n                break;\n            }\n        }\n    }\n    path.push_back(start);\n    std::reverse(path.begin(), path.end());\n    return path;\n}\n\nint main() {\n/*\nmap. numbers are bucket cost, letters are objects, x is wall\nA 0 5 0 0 0\n0 X X 0 0 0\n5 X 0 0 5 0\n0 0 0 5 B 5\n0 0 0 0 5 0\n */\n\n    // Create 2 Game Objects\n    GameObject a(Position2(0.1, 0.1));\n    GameObject b(Position2(3.9, 4.1));\n\n    // place walls\n    isWall[Index2(1, 1)] = true;\n    isWall[Index2(1, 2)] = true;\n    isWall[Index2(2, 1)] = true;\n\n    // add cost to some buckets\n    // should avoid these:\n    costMap[Index2(2, 0)] = 5;\n    costMap[Index2(0, 2)] = 5;\n    // should pass-through these:\n    costMap[Index2(5, 4)] = 5;\n    costMap[Index2(3, 4)] = 5;\n    costMap[Index2(4, 3)] = 5;\n    costMap[Index2(4, 5)] = 5;\n\n    // add game objects to the set\n    gameObjects.insert(&a);\n    gameObjects.insert(&b);\n\n    // add game objects to the quantized map\n    for (auto& g : gameObjects)\n        quantizedMap[g->position.quantized()].insert(g);\n\n    // find path\n    auto path = findPath(a.position, b.position);\n\n    // todo: smooth the path between the points\n\n    // print path\n    for (auto& p : path)\n        std::cout << \"(\" << p.x << \", \" << p.y << \") \";\n    std::cout << std::endl;\n    // will print (0, 0) (1, 0) (1, -1) (2, -1) (3, -1) (3, 0) (3, 1) (3, 2) (3, 3) (4, 3) (4, 4)\n\n    return 0;\n}\n
"},{"location":"artificialintelligence/07-automatedtesting/","title":"AI as a testing tool","text":"

There are several ways to use AI as a testing tool.

  • Analytics
  • Predicting behavior;
  • A/B Testing;
  • Game Environment Automated Testing via AI agents;
  • Test Case Generation;
  • Anti-cheat systems;
"},{"location":"artificialintelligence/07-automatedtesting/#analytics","title":"Analytics","text":"

Analytics is the most common way to use AI as a testing tool. You can use AI to track the user behavior and use the data to improve the game. But with that you can only analyze the past.

You might want to track all user interactions, and use AI to analyze the data and give you insights on how to improve the game. This will be the core of many other AI testing tools.

The common ways to track the user interactions are:

  • Send events to a server;
  • Use a third-party service to track the user interactions;
  • Progression funnels;
  • Heatmaps;
  • User paths;
  • Map all deaths / kills / wins / losses;
  • Store the replay of the user interactions;
"},{"location":"artificialintelligence/07-automatedtesting/#predicting-behavior","title":"Predicting behavior","text":"

You can train an AI model to predict the behavior of the user to abandon the game, and intervene before it happens.

In order to achieve this, you can track the user interactions and the consequences of those interactions. You can use a supervised learning algorithm to predict the behavior of the user. Once you discover the pattern, you can intervene and try to change the user behavior.

Example: If the player is loosing too much, you can give him a boost to keep him playing. Or automatically change the difficulty of the game. Another good example is when you predict the user is going to abandon the game, you can give him a reward to keep him playing, or allow him to ask for more lives on social media friends.

"},{"location":"artificialintelligence/07-automatedtesting/#forcing-the-user-to-take-a-break","title":"Forcing the user to take a break","text":"

Sometimes you want to avoid the user to get burned out and force him to take a break. This is a common practice in mobile games.

If your game gives rewards for plaing every day, or every session. You can use AI to predict when the user is going to play again and send him a notification to play again.

This can be a bit shady, but, another use case is to force the game to get harder if the user is playing too much. And when it loses, add a timer to unlock the game again. You can even use this moment to show ads, or ask for money to unlock the game again. Can you think in a game like this?

"},{"location":"artificialintelligence/07-automatedtesting/#ab-testing","title":"A/B Testing","text":"

A/B testing is a way to compare two versions of a configuration setting or a feature to determine which one is better. It relies on remote configuration and the statistical analysis to determine which one is better.

The process is simple:

  • A developer create 2 scenarios to test. Ex.: the color of a button to buy a product (Red or Blue);
  • The system will randomly select one of the scenarios to show to the user;
  • The system will collect data from the user interaction;
  • The system will compare the data from the two scenarios and determine which one is better;
  • The system will select the best scenario to be the default one;
"},{"location":"artificialintelligence/07-automatedtesting/#game-environment-automated-testing-via-ai-agents","title":"Game Environment Automated Testing via AI agents","text":"

This can be really hard to implement, but in summary is to create AIs that can play as humans and test the game. This can be used to test the game balance, the game difficulty, the game mechanics and the game performance.

If you are just trying to test game rules, or economy, you might wanna try to use a genetic algorithm to evolve the best strategy for a given game.

If you are looking for creating a bot to find hardlocks where the player might fall and not recover, or detect bugs, you might try to use a reinforcement learning algorithm.

This field is so vast that is hard to cover in a single section. I will use this in class just to see how it works.

"},{"location":"artificialintelligence/07-automatedtesting/#test-case-generation","title":"Test Case Generation","text":"

You can use AI to generate test cases for your game. There are plenty of LLMs online that can can read your code and generate test cases for you.

"},{"location":"artificialintelligence/07-automatedtesting/#anti-cheat-systems","title":"Anti-cheat systems","text":"

You can detect cheaters using AI. But you will have to be careful to not ban innocent players. You can use AI to detect patterns of cheating and intervene before it happens.

Possible patterns to detect: Speed hacks; Aim bots; Wall hacks, ESP hacks, Macros; Auto-clickers; Memory hacks. and much more.

"},{"location":"artificialintelligence/07-automatedtesting/#shadow-banning","title":"Shadow banning","text":"

It is a common technique to ban cheaters. You can shadow-ban a cheater by making him play with other cheaters only. This way, the cheater will not know he is banned, but he will only play with other cheaters. This can be done using AI to detect the cheaters and put them in the same match.

"},{"location":"artificialintelligence/07-automatedtesting/#serious-sam-3-bfe-serious-digital-edition","title":"Serious Sam 3: BFE (Serious Digital Edition):","text":"

The protagonist encounters an invincible, extremely fast and screaming scorpion-like enemy, making the game nearly impossible to progress.

"},{"location":"artificialintelligence/07-automatedtesting/#game-dev-tycoon","title":"Game Dev Tycoon:","text":"

In the pirated versions, players find themselves struggling to make a profit as their virtual game studio is plagued by piracy.

"},{"location":"artificialintelligence/07-automatedtesting/#batman-arkham-asylum","title":"Batman: Arkham Asylum:","text":"

Batman's cape doesn't work properly, leading to a rather comical and dysfunctional experience.

"},{"location":"artificialintelligence/07-automatedtesting/#mirrors-edge","title":"Mirror's Edge:","text":"

Faith is unable to progress past a certain point due to an inability to grab a ledge, hindering the player's ability to complete the level.

"},{"location":"artificialintelligence/07-automatedtesting/#earthbound-mother-2","title":"Earthbound (Mother 2):","text":"

In pirated copies, the game triggers a constant stream of inescapable enemy encounters.

Can you think in other examples?

"},{"location":"artificialintelligence/09-minmax/","title":"Min-Max Algorithm","text":"

Commonly while you build a tree of options, (say path, decisions, states or anything else), you will have to make a decision at each node of the tree to deepen the search. The min-max algorithm is a nice and easy approach to solve this problem. It might be used in games, decision making, and other fields.

"},{"location":"artificialintelligence/09-minmax/#use-cases","title":"Use cases","text":"

Min-Max algorithms shines in places where you will have to maximize the gain and minimize the loss.

"},{"location":"artificialintelligence/09-minmax/#algorithm","title":"Algorithm","text":""},{"location":"artificialintelligence/09-minmax/#alpha-beta-prunning","title":"Alpha beta prunning","text":""},{"location":"artificialintelligence/09-minmax/#alpha","title":"Alpha","text":"
  • Alpha is the best value that the maximizer currently can guarantee at that level or above.
  • It is the lower bound that a MAX node can be assigned.
  • MAX node will only update the value of alpha if it finds a value greater than alpha.
  • Starts at -\u221e.
"},{"location":"artificialintelligence/09-minmax/#beta","title":"Beta","text":"
  • Beta is the best value that the minimizer currently can guarantee at that level or above.
  • It is the upper bound that a MIN node can be assigned.
  • MIN node will only update the value of beta if it finds a value less than beta.
  • Starts at +\u221e.
"},{"location":"artificialintelligence/animation/","title":"Deep learning","text":"

https://cascadeur.com/

https://www.youtube.com/watch?v=14tNq-fqTmQ

https://www.youtube.com/watch?v=wAbLsRymXe4

https://github.com/sebastianstarke/AI4Animation

"},{"location":"artificialintelligence/assignments/","title":"Setup the repos","text":"
  1. Read about Privacy and FERPA compliance here
  2. This one, for in class coding assignments. https://github.com/InfiniBrains/Awesome-GameDev-Resources
  3. MoBaGEn, for interactive assignments. https://github.com/InfiniBrains/mobagen
  4. Install CLion (has CMake embedded) or see #development-tools
  5. Install git and add the binaries to your PATH;
  6. Those repositories are updated constantly. Pay attention to syncing your repo frequently.
"},{"location":"artificialintelligence/assignments/#types-of-coding-assignments","title":"Types of coding assignments","text":"

There are two types of coding assignments:

  1. Formal: Automatic grading system with automated tests. Some tests might not be fully working for you, talk with me if it doesnt work for you. Or just submit the code on canvas and I will grade it manually. Those should solved using C++ ; It is done following this repo;
  2. Interactive: For the interactive assignments you can choose whatever Game Engine you like, but I recommend you to use the framework I created for you: MoBaGEn. If you use a Game Engine or custom solution for that, you will have to create all debug interfaces to showcase and debug AI which includes, but it is not limited to:

    • Draw vectors to show forces applied by the AI;
    • Menus to change AI parameters;

Danger

Under no circunstaces, you should make your algorithm solutions public. Be aware that I spend so much time creating them and it is hard to me to always create new assignments.

"},{"location":"artificialintelligence/assignments/#code-assignments","title":"Code assignments","text":"

Warning

If you are a enrolled in a class that uses this material, you SHOULD use the institutional and internal git server to be FERPA compliant. If you want to use part of this assignments to build your portfolio I recommend you to use github and make only the webgl build public. If you are just worried about privacy concerns, you can use a private repo on github.

  1. Create an account on github.com or any git hosting on your preference;
  2. Fork repos or duplicate the target repo on your account;

    1. If you want to make it count as part of your portfolio, fork the repo follow this;
    2. If you want to keep it private or be FERPA compliant, duplicate the repo following this.
  3. Add my user to your repo to it with read role. My userid is tolstenko(or your professor) on github, for other options, talk with me in class. Follow this;

  4. Send me a message on canvas with the link to your repo;

Private repo

GitHub doesnt allow private fork of a public repo. If you want to receive my updates into your private repo you can do in 2 different ways:

  1. Create an empty repo. Clone it to your machine. In your GitKraken or any other git tool, add my repo as another origin. Merge from from mine to yours with flag --allow-unrelated-histories (search it)
  2. Create an empty repo and clone it to your machine. From time to time, download the files from my repo and replace the ones I might have updated/fixed.
"},{"location":"artificialintelligence/assignments/#recordings","title":"Recordings","text":"

In all interactive assignments, you will have to record a 5 minute video explaining your code. Use OBS or any software you prefer to record your screen while you explain your code. But for this one, just send me the video showing the repo and the repo invites sent to me.

"},{"location":"artificialintelligence/assignments/#development-tools","title":"Development tools","text":"

I will be using CMake for the classes, but you can use whatever you want. Please read this to understand the C++ toolset.

In this class, I am going to use CLion as the IDE, because it has nice support for CMake and automated tests.

  • Download it here.
  • If you are a student, you can get a free license here.

If you want to use Visual Studio :simple-visualstudio:, be assured that you have the C++ Desktop Development workload installed, more info this. And then go to Individual Components and install CMake Tools for Windows .

Note

If you use Visual Studio :simple-visualstudio:, you won't be able to use the automated testing system that comes with the assignments.

[OPINION]: If you want to use a lightweight environment, don't use VS Code for C++ development. Period. It is not a good IDE for that. It is preferred to code via sublime, notepad, vim, or any other text editor and then compile your code via terminal, and debug via gdb, than using VS Code for C++ development.

"},{"location":"artificialintelligence/assignments/#opening-the-repos","title":"Opening the Repos","text":"
  1. Fork and clone the repos. Make it private if you can;
  2. Open CLion or yor preferred IDE with CMake support;
  3. Open the CMakeLists.txt as project from the root of the repo;
  4. Wait for the setup to finish (it will download the dependencies automatically, such as SDL);

For the interactive assignments, use this repo and the assignments are located in the examples folder.

For the algorithmic assignments, use this repo and the assignments are located in the docs/artificialintelligence/assignments folder. I created some automated tests to help you debug your code and ensure 100% of correctness. To run them, follow the steps (only available though CLion or terminal, not Visual Studio :simple-visualstudio:):

  1. Go to the executable drop down selection (top right, near the green run or debug button) and select the assignment you want to run. It will be something like ai-XXX where XXX is the name of the assignment;
  2. If you want to test your assignment against the automated inputs/outputs, select the ai-XXX-test build target. Here you should use the build button, not the run or debug button. It will run the tests and show the results in the Console tab;
"},{"location":"artificialintelligence/assignments/flocking/","title":"Flocking agents behavior formal assignment","text":"

You are in charge of implementing some functions to make some AI agents flock together in a game. After finishing it, you will be one step further to render it in a game engine, and start making reactive NPCs and enemies. You will learn all the basic concepts needed to code and customize your own AI behaviors.

You can code this assignment in any language and/or game engine you want. But I already crafted some boilerplates to maximize your efficiency.

  • (Preferred) Formal and automatically tested: This current repo
  • (Funnier) Interactive with SDL2: MoBaGEn
  • (Hard-core) C++ with CMake: SDL2-CPM-CMake-Example or create your own project from scratch by yourself or follow my Naked SDL + CPM project.
  • I don't recommend using Game Engines for this specific assignment. Historically, students fail on the implementation of the double buffering and the math operations. But if you are confident, go ahead.

Notes on imprecision

The automated tests of the formal assignment may differ somehow because of floating point imprecison, so don't worry much. If you cannot make it pass 100% of the tests, explain how you tried to solve it and what you think is wrong. I will evaluate your code based on your explanation. If you find an issue on my formal description or on the tests, send a PR and I will give you extra points.

"},{"location":"artificialintelligence/assignments/flocking/#what-is-flocking","title":"What is flocking?","text":"

Flocking is a behavior that is observed in birds, fish and other animals that move in groups. It is a very simple behavior that can be implemented with a few lines of code. The idea is that each agent will try to move towards the center of mass of the group (cohesion), and will try to align its velocity with the average velocity of the group (AKA alignment). In addition, each agent will try to avoid collisions with other agents (AKA avoidance).

Formal Notation Review

  • \\( \\vec{F} \\) means a vector \\( F \\) that has components. In a 2 dimensional vector it will hold \\( F_x \\) and \\( F_y \\). For example, if \\( F_x = 1 \\) and \\( F_y = 3 \\), then \\( \\vec{F} = (1,3) \\)
  • Simple math operations between vectors are done component-wise. For example, if \\( \\vec{F} = (1,1) \\) and \\( \\vec{G} = (2,2) \\), then \\( \\vec{F} + \\vec{G} = (3,3) \\)
  • The notation \\( \\overrightarrow{P_{1}P_{2}} \\) means the vector that goes from \\( P_1 \\) to \\( P_2 \\). It is the same as \\( P_2-P_1 \\)
  • The modulus notation means the length (magnitude) of the vector. \\( |\\vec{F}| = \\sqrt{F_x^2+F_y^2} \\) For example, if \\( \\vec{F} = (1,1) \\), then \\( |\\vec{F}| = \\sqrt{2} \\)
  • The hat ^ notation means the normalized vector(magnitude is 1) of the vector. \\( \\hat{F} = \\frac{\\vec{F}}{|\\vec{F}|} \\) For example, if \\( \\vec{F} = (1,1) \\), then \\( \\hat{F} = (\\frac{1}{\\sqrt{2}},\\frac{1}{\\sqrt{2}}) \\)
  • The hat notation over 2 points means the normalized vector that goes from the first point to the second point. \\( \\widehat{P_1P_2} = \\frac{\\overrightarrow{P_1P_2}}{|\\overrightarrow{P_1P_2}|} \\) For example, if \\( P_1 = (0,0) \\) and \\( P_2 = (1,1) \\), then \\( \\widehat{P_1P_2} = (\\frac{1}{\\sqrt{2}},\\frac{1}{\\sqrt{2}}) \\)
  • The sum \\( \\sum \\) notation means the sum of all elements in the list going from 0 to n-1. Ex. \\( \\sum_{i=0}^{n-1} \\vec{V_i} = \\vec{V_0} + \\vec{V_1} + \\vec{V_2} + ... + \\vec{V_{n-1}} \\)

It is your job to implement those 3 behaviors following the ruleset below:

"},{"location":"artificialintelligence/assignments/flocking/#cohesion","title":"Cohesion","text":"

Apply a force towards the center of mass of the group.

  1. The \\( n \\) neighbors of an agent are all the other agents that are within a certain radius \\( r_c \\)( < operation ) of the agent. It doesn't include the agent itself;
  2. Compute the location of the center of mass of the group (\\( P_{CM} \\));
  3. Compute the force that will move the agent towards the center of mass(\\( \\overrightarrow{F_c} \\)); The farther the agent is from the center of mass, the force increases linearly up to the limit of the cohesion radius \\( r_c \\).

\\[ P_{CM} = \\frac{\\sum_{i=0}^{n-1} P_i}{n} \\] \\[ \\overrightarrow{F_{c}} = \\begin{cases} \\frac{ \\overrightarrow{P_{agent}P_{CM}} }{r_c} & \\text{if } |\\overrightarrow{P_{agent}P_{CM}}| \\leq r_c \\\\ 0 & \\text{if } |\\overrightarrow{P_{agent}P_{CM}}| > r_c \\end{cases} \\]

Tip

Note that the maximum magnitude of \\( \\overrightarrow{F_c} \\) is 1. Inclusive. This value can be multiplied by a constant \\( K_c \\) to increase or decrease the cohesion force to looks more appealing.

Cohesion Example

"},{"location":"artificialintelligence/assignments/flocking/#separation","title":"Separation","text":"

It will move the agent away from other agents when they get too close.

  1. The \\( n \\) neighbors of an agent are all the other agents that are within the separation radius \\( r_s \\) of the agent;
  2. If the distance to a neighbor is less than the separation radius, then the agent will move away from it inversely proportionally to the distance between them.
  3. Accumulate the forces that will move the agent away from each neighbor (\\( \\overrightarrow{F_{s}} \\)). And then, clamp the force to a maximum value of \\( F_{Smax} \\).

\\[ \\overrightarrow{F_s} = \\sum_{i=0}^{n-1} \\begin{cases} \\frac{\\widehat{P_aP_i}}{|\\overrightarrow{P_aP_i}|} & \\text{if } 0 < |\\overrightarrow{P_aP_i}| \\leq r_s \\\\ 0 & \\text{if } |\\overrightarrow{P_aP_i}| = 0 \\lor |\\overrightarrow{P_aP_i}| > r_s \\end{cases} \\]

Tip

Here you can see that if we have more than one neighbor and one of them is way too close, the force will be very high and make the influence of the other neighbors irrelevant. This is the expected behavior.

The force will go near infinite when the distance between the agent and the \\( n \\) neighbor is 0. To avoid this, after accumulating all the influences from every neighbor, the force will be clamped to a maximum magnitude of \\( F_{Smax} \\).

\\[ \\overrightarrow{F_{s}} = \\begin{cases} \\overrightarrow{F_s} & \\text{if } |\\overrightarrow{F_s}| \\leq F_{Smax} \\\\ \\widehat{F_s} \\cdot F_{Smax} & \\text{if } |\\overrightarrow{F_s}| > F_{Smax} \\end{cases} \\]

Tip

  • You can implement those two math together, but it is better to isolate in two steps to make it easier to understand and debug.
  • This is not an averaged force like the cohesion force, it is a sum of forces. So, the maximum magnitude of the force can be higher than 1.
Separation Example

"},{"location":"artificialintelligence/assignments/flocking/#alignment","title":"Alignment","text":"

It is the force that will align the velocity of the agent with the average velocity of the group.

  1. The \\( n \\) neighbors of an agent are all the agents that are within the alignment radius \\( r_a \\) of the agent, including itself;
  2. Compute the average velocity of the group (\\( \\overrightarrow{V_{avg}} \\));
  3. Compute the force that will move the agent towards the average velocity (\\( \\overrightarrow{F_{a}} \\));

\\[ \\overrightarrow{V_{avg}} = \\frac{\\sum_{i=0}^{n-1} \\vec{V_i}}{n} \\] Alignment Example

"},{"location":"artificialintelligence/assignments/flocking/#behavior-composition","title":"Behavior composition","text":"

The force composition is made by a weighted sum of the influences of those 3 behaviors. This is the way we are going to work, this is not the only way to do it, nor the more correct. It is just a way to do it.

  • \\( \\vec{F} = K_c \\cdot \\overrightarrow{F_c} + K_s \\cdot \\overrightarrow{F_s} + K_a \\cdot \\overrightarrow{F_a} \\) This is a weighted sum!
  • \\( \\overrightarrow{V_{new}} = \\overrightarrow{V_{cur}} + \\vec{F} \\cdot \\Delta t \\) This is a simplification!
  • \\( P_{new} = P_{cur}+\\overrightarrow{V_{new}} \\cdot \\Delta t \\) This is an approximation!

Warning

A more precise way for representing the new position would be to use full equations of motion. But given timestep is usually very small and it even squared, it is acceptable to ignore it. But here they are anyway, just dont use them in this assignment:

  • \\( \\overrightarrow{V_{new}} = \\overrightarrow{V_{cur}}+\\frac{\\overrightarrow{F}}{m} \\cdot \\Delta t \\)
  • \\( P_{new} = P_{cur}+\\overrightarrow{V_{cur}} \\cdot \\Delta t + \\frac{\\vec{F}}{m} \\cdot \\frac{\\Delta t^2}{2} \\)

Where:

  • \\( \\overrightarrow{F} \\) is the force applied to the agent;
  • \\( \\overrightarrow{V} \\) is the velocity of the agent;
  • \\( P \\) is the position of the agent;
  • \\( m \\) is the mass of the agent, here it is always 1;
  • \\( \\Delta t \\) is the time frame (1/FPS);
  • \\( cur \\) is the current value of the variable;
  • \\( new \\) is the new value of the variable to be used in the next frame.

The \\( \\overrightarrow{V_{new}} \\) and \\( P_{new} \\) are the ones that will be used in the next frame and you will have to print to the console at the end of every single frame.

Note

  • For simplicity, we are going to assume that the mass of all agents is 1.
  • In a real game simulation, it would be nice to apply some friction to the velocity of the agent to make it stop eventually or just clamp it to prevent the velocity get too high. But, for simplicity, we are going to ignore it.
Combined behavior examples

Alignment + Cohesion:

Separation + Cohesion:

Separation + Alignment:

All 3:

"},{"location":"artificialintelligence/assignments/flocking/#input","title":"Input","text":"

The input consists in a list of parameters followed by a list of agents. The parameters are:

  • \\( r_c \\) - Cohesion radius
  • \\( r_s \\) - Separation radius
  • \\( F_{Smax} \\) - Maximum separation force
  • \\( r_a \\) - Alignment radius
  • \\( K_c \\) - Cohesion constant
  • \\( K_s \\) - Separation constant
  • \\( K_a \\) - Alignment constant
  • \\( N \\) - Number of agents

Every agent is represented by 4 values in the same line, separated by a space:

  • \\( x \\) - X coordinate
  • \\( y \\) - Y coordinate
  • \\( vx \\) - X velocity
  • \\( vy \\) - Y velocity

After reading the agent's data, the program should read the time frame (\\( \\Delta t \\)), simulate the agents and then output the new position of the agents in the same sequence and format it was read. The program should keep reading the time frame and simulating the agents until the end of the input.

Data Types

All values are double precision floating point numbers to improve consistency between different languages.

"},{"location":"artificialintelligence/assignments/flocking/#input-example","title":"Input Example","text":"

In this example we are going to test only the cohesion behavior. The input is composed by the parameters and 2 agents.

1.000 0.000 0.000 0.000 1.000 0.000 0.000 2\n0.000 0.500 0.000 0.000\n0.000 -0.500 0.000 0.000\n0.125\n
"},{"location":"artificialintelligence/assignments/flocking/#output","title":"Output","text":"

The expected output is the position and velocity for each agent after the simulation step using the time frame. After printing each simulation step, the program should wait for the next time frame and then simulate the next step. All values should have exactly 3 decimal places and should be rounded to the nearest.

0.000 0.484 0.000 -0.125\n0.000 -0.484 0.000 0.125\n
"},{"location":"artificialintelligence/assignments/flocking/#grading","title":"Grading","text":"

10 points total:

  • 3 Points \u2013 by following standards;
  • 2 Points \u2013 properly submitted in Canvas;
  • 5 Points \u2013 passed on test cases;
"},{"location":"artificialintelligence/assignments/genai/","title":"Stable Diffusion","text":""},{"location":"artificialintelligence/assignments/genai/#introduction","title":"Introduction","text":"

The steps to understand GenAI are as follows:

  1. Artificial Neurons, types of neurons, and activation functions
  2. Networks of Neurons, topology, and training
  3. Stable Diffusion
"},{"location":"artificialintelligence/assignments/genai/#tldr","title":"TLDR;","text":"
  1. Install the latest Python. Add it to the environment PATH. [Windows:] Install directly to C drive and select the 3.10.6 version of python, install for all users;
  2. Download latest release from Automatic1111 or clone the repository. Clone/Download it to a subfolder on C drive. Dont use your personal folder.;
  3. Unzip the release. Run the webui bash file [Windows:] webui.bat;
  4. Select a bunch of the images that you are willing to train the network with;
  5. Go to train tab and create a tag for your embeddings;
  6. Use your tag to generate a new image;

Extras:

  1. Go to Hugging face and download 2 Stable Diffusion models. They should be compatible (ex. both should be v2.1 or 1.5).;
  2. Go to checkpoin merger, and merge two or more models.
"},{"location":"artificialintelligence/assignments/genai/#artificial-neurons","title":"Artificial Neurons","text":"
graph LR\n    I1[Input1] --> |Weight1| N[Neuron]\n    I2[Input2] --> |Weight2| N[Neuron]\n    N --> |Activation| O[Output]

Artificial neurons are the basic building blocks of neural networks and all the other Generative AI algorithms. Neuron networks are composed by:

  • Inputs: The inputs are the data that the network will process. They are the data that the network will use to make decisions. In the case of the neural networks, the inputs are the data that will be processed by the neurons.
  • Weights: The weights are the parameters that the network will learn. They are the parameters that the network will use to make decisions. In the case of the neural networks, the weights are the parameters that will be learned by the neurons.
  • Functions: summing, activation and bias.
    • Summing: The summing function is the function that will sum the inputs and the weights.
    • Activation: The activation function is the function that will decide if the neuron will fire or not or how it will fire or propagate.
    • Bias: The bias is a weight that will be added to the summing function.
  • Output: The output is the result of the neuron. It can be used to feed another neuron or to be the final result of the network.

Depending on how the neuron activates, which math operator it uses to sum the inputs and the weights, and how it propagates the output, the neuron can be classified as: Linear, Binary, Sigmoid, Tanh, and many others that follow math functions to combine data and propagate the output.

"},{"location":"artificialintelligence/assignments/genai/#topologies","title":"Topologies","text":"

Material

"},{"location":"artificialintelligence/assignments/genai/#generative-ai","title":"Generative AI","text":"

Generative AI is the new trend in AI. It is the field of AI that is focused on creating new data from existing data using neural networks and other algorithms. Here we will focus on the Stable Diffusion ones.

Stable diffusion pipeline:

graph TD\n  Start --> GausiannNoise\n  Start --> prompt\n  subgraph CLIP\n    direction LR\n    tokenizer --> TokenToEmbedding[Token to Embeddings]\n  end\n  prompt[Prompt] --> CLIP\n  CLIP --> embeddings[Text Embeddings]\n  embeddings --> unet[Text Conditioned 'U-Net']\n  Latents --> |Loop N times| unet\n  unet --> CoditionedLatents[Conditioned Latents]\n  CoditionedLatents --> Scheduler[Scheduler 'Reconstruct'\\nto add noise]\n  Scheduler --> Latents\n  GausiannNoise[Gaussian Noise] --> Latents\n  CoditionedLatents --> VAE[Variational\\nAutoencoder\\nDecoder]\n  VAE --> |Image|Output
"},{"location":"artificialintelligence/assignments/life/","title":"Game of Life","text":"

You are applying for an internship position at Valvule Corp, and they want to test your abilities to manage states. You were tasked to code the Conway's Game of Life.

The game consists in a C x L matrix of cells (Columns and Lines), where each cell can be either alive or dead. The game is played in turns, where each turn the state of the cells are updated according to the following rules:

  1. Any live cell with fewer than two live neighbours dies, as if by underpopulation.
  2. Any live cell with two or three live neighbours lives on to the next generation.
  3. Any live cell with more than three live neighbours dies, as if by overpopulation.
  4. Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.

The map is continuous on every direction, so the cells on the edges have the cells on the opposite edge as neighbors. It is effectively a toroidal surface.

"},{"location":"artificialintelligence/assignments/life/#input","title":"Input","text":"

The first line of the input are three numbers, C, L and T, the number of columns, lines and turns, respectively. The next L lines are the initial state of the cells, where each line has C characters, either . for dead cells or # for alive cells.

5 5 4\n.#...\n..#..\n###..\n.....\n.....\n
"},{"location":"artificialintelligence/assignments/life/#output","title":"Output","text":"

The output should be the state of the cells after T turns, in the same format as the input.

.....\n..#..\n...#.\n.###.\n.....\n
"},{"location":"artificialintelligence/assignments/life/#references","title":"References","text":"
  • Animated Example
  • Conway's Game of Life Wiki
  • Wikipedia
"},{"location":"artificialintelligence/assignments/maze/","title":"Maze generation via Depth First Search","text":"

You are in charge of implementing a new maze generator for a procedurally generated game. The game is a 2D top-down game, where every level is composed by squared rooms blocked by walls. The rooms are generated by a maze generator, and the walls can be removed to create paths.

There are many ways to implement a maze generation and one of the most common is the Depth First Search algorithm combined with a Random Walk. The algorithm is simple and can be implemented in a recursive or interactive way. The suggested algorithm is as follows:

  1. All walls are up;
  2. Add the top left cell to the stack;
  3. While the stack is not empty:
    1. If the stack top cell has visitable neighbor(s):
      1. Mark the top cell as visited;
      2. List visitable neighbors;
      3. Choose a neighbor (see below);
      4. Remove the wall between the cell and the neighbor;
      5. Add the neighbor to the stack;
    2. Else:
      1. Remove the top cell from the stack, backtracking;
Simulation

If you simulate the algorithm visually, the result would be something similar to the following

"},{"location":"artificialintelligence/assignments/maze/#random-number-generation","title":"Random Number Generation","text":"

In order to be consistent with all languages and random functions the pseudo random number generation should follow the following sequence of 100 numbers:

[72, 99, 56, 34, 43, 62, 31, 4, 70, 22, 6, 65, 96, 71, 29, 9, 98, 41, 90, 7, 30, 3, 97, 49, 63, 88, 47, 82, 91, 54, 74, 2, 86, 14, 58, 35, 89, 11, 10, 60, 28, 21, 52, 50, 55, 69, 76, 94, 23, 66, 15, 57, 44, 18, 67, 5, 24, 33, 77, 53, 51, 59, 20, 42, 80, 61, 1, 0, 38, 64, 45, 92, 46, 79, 93, 95, 37, 40, 83, 13, 12, 78, 75, 73, 84, 81, 8, 32, 27, 19, 87, 85, 16, 25, 17, 68, 26, 39, 48, 36];\n

Every call to the random function should return the current number the index is pointing to, and then increment the index. If the index is greater than 99, it should be reset to 0.

"},{"location":"artificialintelligence/assignments/maze/#direction-decision-making","title":"Direction decision making","text":"

In order to give consistency on how to decide the direction of the next cell, the following procedure should be followed:

  1. List all visitable neighbors of the current cell;
  2. Sort the list of visitable neighbors by clockwise order, starting from the top neighbor: UP, RIGHT, DOWN, LEFT;
  3. If there is one visitable, do not call random, just return the first neighbor found;
  4. If there are two or more visitable neighbors, call random and return the neighbor at the index of the random number modulo the number of visitable neighbors. vec[i]%visitableCount
"},{"location":"artificialintelligence/assignments/maze/#input","title":"Input","text":"

The input is a single line with three 32 bits unsigned integer numbers, C, L and I, where C and L are the number of columns and lines of the maze, respectively, and I is the index of the first random number to be used> I can varies from 0 to 99.

2 2 0\n

In this case, our map will have 2 columns, 2 lines and the first random number to be used is the first one, 72 because it is pointed by the index 0.

"},{"location":"artificialintelligence/assignments/maze/#output","title":"Output","text":"

Every line is a combination of underscore _, pipe | and empty characters. The _ character represents a horizontal wall and the | character represents a vertical wall.

The initial state of the 2 x 2 map is:

 _ _  \n|_|_| \n|_|_| \n

In order to interactively solve this, we will add (0,0) to the queue.

The neighbors of the current top (0,0) are RIGHT and DOWN, (0,1) and (1,0) respectively.

Following the clockwise order, the sorted neighbor list will be [(0,1), (1,0)].

We have more than one neighbor, so we call random. The current random index is 0, so the random number is 72 and we increment the index.

The random number is 72 and the number of neighbors is 2, so the index of the neighbor to be chosen is 72 % 2 = 0, so we choose the neighbor (0,1), the RIGHT one.

The wall between (0,0) and (0,1) is removed, and (0,1) is added to the queue. Now it holds [(0,0), (0,1)]. The map is now:

 _ _  \n|_ _| \n|_|_| \n

Now the only neighbor of (0,1) is DOWN, (1,1). So no need to call random, we just choose the only neighbor.

The wall between (0,1) and (1,1) is removed, and (1,1) is added to the queue. Now it holds [(0,0), (0,1), (1,1)]. The map is now:

 _ _  \n|_  | \n|_|_| \n

Now the only neighbor of (1,1) is LEFT, (1,0). So no need to call random, we just choose the only neighbor.

The wall between (1,1) and (1,0) is removed, and (1,0) is added to the queue. Now it holds [(0,0), (0,1), (1,1), (1,0)]. The map is now:

 _ _  \n|_  | \n|_ _| \n

Now, the current top of the queue is (1,0) and there isn't any neighbor to be visited, so we remove the current top (1,0) from the queue and backtrack. The queue is now [(0,0), (0,1), (1,1)].

The current top is (1,1) and there isn't any neighbor to be visited, so we remove (1,1) from the queue and backtrack. The queue is now [(0,0), (0,1)].

The current top is (0,1) and there isn't any neighbor to be visited, so we remove (0,1) from the queue and backtrack. The queue is now [(0,0)].

The current top is (0,0) and there isn't any neighbor to be visited, so we remove (0,0) from the queue and backtrack. The queue is now empty and we finish priting the map state. The final map is:

 _ _  \n|_  | \n|_ _| \n

And this the only one that should be printed. No intermediary maps should be printed.

"},{"location":"artificialintelligence/assignments/maze/#example-1","title":"Example 1","text":""},{"location":"artificialintelligence/assignments/maze/#input-1","title":"Input 1","text":"
3 3 0\n
"},{"location":"artificialintelligence/assignments/maze/#output-1","title":"Output 1","text":"
 _ _ _  \n|_  | | \n|  _| | \n|_ _ _| \n
"},{"location":"artificialintelligence/assignments/maze/#example-2","title":"Example 2","text":""},{"location":"artificialintelligence/assignments/maze/#input-2","title":"Input 2","text":"
3 3 1\n
"},{"location":"artificialintelligence/assignments/maze/#output2","title":"Output2","text":"
 _ _ _  \n| |_  | \n|_ _  | \n|_ _ _| \n
"},{"location":"artificialintelligence/assignments/rng/","title":"Pseudo Random Number Generation","text":"

You are a game developer in charge to create a fast an reliable random number generator for a procedural content generation system. The requirements are:

  • Do not rely on external libraries;
  • Dont need to be cryptographically secure;
  • Be blazing fast;
  • Fully reproducible via automated tests if used the same seed;
  • Use exactly 32 bits as seed;
  • Be able to generate a number between a given range, both inclusive.

So you remembered a strange professor talking about the xorshift algorithm and decided it is good enough for your use case. And with some small research, you found the Marsaglia \"Xorshift RNGs\". You decided to implement it and test it.

"},{"location":"artificialintelligence/assignments/rng/#xorshift","title":"XorShift","text":"

The xorshift is a family of pseudo random number generators created by George Marsaglia. The xorshift is a very simple algorithm that is very fast and have a good statistical quality. It is a very good choice for games and simulations.

xorshift is the process of shifting the binary value of a number and then xor'ing that binary to the original value to create a new value.

value = value xor (value shift by number)

The shift operators can be to the left << or to the right >>. When shifted to the left, it is the same thing as multiplying by 2 at the power of the number. When shifted to the right, it is the same thing as dividing.

Note

The value of a << b is the unique value congruent to \\(a * 2^{b}\\) modulo \\( 2^{N} \\) where \\( N \\) is the number of bits in the return type (that is, bitwise left shift is performed and the bits that get shifted out of the destination type are discarded).

The value of \\( a >> b \\) is \\( a/2^{b} \\) rounded down (in other words, right shift on signed a is arithmetic right shift).

The xorshift algorithm from Marsaglia is a combination of 3 xorshifts, the first one is the seed (or the last random number generated), and the next ones are the result of the previous xorshift. The steps are:

  1. xorshift the value by 13 bits to the left;
  2. xorshift the value by 17 bits to the right;
  3. xorshift the value by 5 bits to the left;

At the end of this 3 xorshifts, the current state of the value is your current random number.

In order to clamp a random number the value between two numbers (max and min), you should follow this idea:

value = min + (random % (max - min + 1))

"},{"location":"artificialintelligence/assignments/rng/#input","title":"Input","text":"

Receives the seed S, the number N of random numbers to be generated and the range R1 and R2 of the numbers should be in, there is no guarantee the range numbers are in order. The range numbers are both inclusive. S and N are both 32 bits unsigned integers and R1 and R2 are both 32 bits signed integers.

1 1 0 99\n
"},{"location":"artificialintelligence/assignments/rng/#output","title":"Output","text":"

The list of numbers to be generated, one per line. In this case, it would be only one and the random number should be clamped to be between 0 and 99.

seed in decimal:       1\nseed in binary:        0b00000000000000000000000000000001 \n\nseed:                  0b00000000000000000000000000000001\nseed << 13:            0b00000000000000000010000000000000\nseed xor (seed << 13): 0b00000000000000000010000000000001\n\nseed:                  0b00000000000000000010000000000001\nseed >> 17:            0b00000000000000000000000000000000\nseed xor (seed >> 17): 0b00000000000000000010000000000001\n\nseed:                  0b00000000000000000010000000000001\nseed << 5:             0b00000000000001000000000000100000\nseed xor (seed << 5):  0b00000000000001000010000000100001\n\nThe final result is 0b00000000000001000010000000100001 which is 270369 in decimal.\n

Now in order to clamp it to be between 0 and 99, we do:

value = min + (random % (max - min + 1))\nvalue = 0 + (270369 % (99 - 0 + 1))\nvalue = 0 + (270369 % 100)\nvalue = 0 + 69\nvalue = 69\n

So this output would be:

69\n
"},{"location":"artificialintelligence/readings/spatial-quantization/","title":"Space quantization","text":"

Space quantization is a way to sample continuous space, and it can to be used in in many fields, such as Artificial Intelligence, Physics, Rendering, and more. Here we are going to focus primarily Spatial Quantization for AI, because it is the base for pathfinding, line of sight, field of view, and many other techniques.

Some of the most common techniques for space quantization are: grids, voxels, graphs, quadtrees, octrees, KD-trees, BSP, Spatial Hashing and more. Another notable techniques are line of sight(or field of view), map flooding, caching, and movement zones.

"},{"location":"artificialintelligence/readings/spatial-quantization/#grids","title":"Grids","text":"

Grids are the most common technique for space quantization. It is a very simple technique, but it is very powerful. It consists in dividing the space in a grid of cells, and then we can use the cell coordinates to represent the space. The most common grid is the square grid, but we can use hexagonal and triangular grids, you might find some irregular shapes useful to exploit the space conformation better.

"},{"location":"artificialintelligence/readings/spatial-quantization/#square-grid","title":"Square Grid","text":"

The square grid is a regular grid, where the cells are squares. It is very simple to implement and understand.

There are some ways to store data for squared grids. Arguably you could 2D arrays, arrays of arrays or vector of vectors, but depending on the way you implement it, it can hurt the performance. Example: if you use an array of arrays or vector of vectors, where every entry from de outer array is a pointer to the inner array, you will have a lot of cache misses, because the inner arrays are not contiguous in memory.

"},{"location":"artificialintelligence/readings/spatial-quantization/#notes-on-cache-locality","title":"Notes on cache locality","text":"

So in order do increase data locality for squared grids, you can use a single array, and then use the following formula to calculate the index of the cell. We call this strategy matrix flattening.

int arrray[width * height]; // 1D array with the total size of the grid\nint index = x + y * width; // index of the cell at x,y\n

There is a catch here, given we usually represent points as X and Y coordinates, we need to be careful with the order of the coordinates. While you are iterating over all the matrix, you need to iterate over the Y coordinate first, and then the X coordinate. This is because the Y coordinate is the one that changes the most, so it is better to have it in the inner loop. By doing that, you will have better cache locality and effectively the index will be sequential.

vector<YourStructure> data; // data is filled with some data elsewhere\nfor(int y = 0; y < height; y++) {\n    for(int x = 0; x < width; x++) {\n        // do something with the cell at index x,y\n        data[y * width + x] = yourstrucure;\n        // it is the same as: data[y][x] = yourstructure;\n    }\n}\n
"},{"location":"artificialintelligence/readings/spatial-quantization/#quantization-and-dequantization-of-square-grids","title":"Quantization and dequantization of square grids","text":"

If your world is based on floats, you can use the square by using the floor function or just cast to integer type, because the default behavior of casting from float to integer is to floor it. Example: In the case of a quantization resolution of size of 1.0f, everything between 0 and 1 will be in the cell (0,0), everything between 1 and 2 will be in the cell (1,0), and so on.

Vector2int quantize(Vector2f position, float resolution) {\n    return Vector2int((int)floor(position.x/resolution), (int)floor(position.y/resolution));\n}\n

If you need to get the center of the cell in the world coordinates following the quantization resolution, you can use the following code.

Vector2f dequantize(Vector2int index, float resolution) {\n    return Vector2f((float)index.x * resolution + resolution/2.0f, (float)index.y * resolution + resolution/2.0f);\n}\n

If you need to get the corners of the cell following the quantization resolution, you can use the following code.

Rectangle2f cell_bounds(Vector2int index, float resolution) {\n    return {index.x * resolution, index.y * resolution, (index.x+1) * resolution, (index.y+1) * resolution};\n}\n

If you need to get the neighbors of a cell, you can use the following code.

std::vector<Vector2int> get_neighbors(Vector2int index) {\n    return {{index.x-1, index.y}, {index.x, index.y-1},\n            {index.x+1, index.y}, {index.x, index.y+1}};\n}\n

We already understood the idea of matrix flattening to improve efficiency, we can use it to represent a maze. But in a maze, we have walls to

Imagine that you are willing to be as memory efficient and more cache friendly as possible. You can use a single array to store the maze, and you can use the following formula to convert from matrix indexes to the index of the cell in the array.

## Hexagonal Grid\n\nHexagonal grid is an extension of a square grid, but the cells are hexagons. It feels nicer to human eyes because we have more equally distant neighbors. If used as subtract for pathfinding, it can be more efficient because the path can be more straight.\n\nIt can be implemented as single dimension array, but you need to be careful with shift that happens in different odd or even indexes. You can use the following formula to calculate the index of the cell. In this world quantization can be in 4 conformations, depending on the rotation of the hexagon and the alignment of the first cell.\n\n1. Point pointy top hexagon with first line aligned to the left:\n``` text\n  / \\ / \\ / \\ \n | A | B | C |\n  \\ / \\ / \\ / \\\n   | D | E | F |\n  / \\ / \\ / \\ /\n | G | H | I |\n  \\ / \\ / \\ / \n
  1. Point pointy top hexagon with first line aligned to the right
        / \\ / \\ / \\\n   | A | B | C |\n  / \\ / \\ / \\ / \n | D | E | F |\n  \\ / \\ / \\ / \\\n   | G | H | I |\n    \\ / \\ / \\ /\n
  2. Flat top hexagon with first column aligned to the top:
     __    __\n/A \\__/C \\\n\\__/B \\__/\n/D \\__/F \\\n\\__/E \\__/\n/G \\__/I \\\n\\__/H \\__/\n   \\__/\n
  3. Flat top hexagon with first column aligned to the bottom:
         __\n  __/B \\__ \n /A \\__/C \\\n \\__/E \\__/\n /D \\__/F \\\n \\__/H \\__/\n /G \\__/I \\\n \\__/  \\__/\n
"},{"location":"artificialintelligence/readings/spatial-quantization/#quantization-and-dequantization-of-hexagonal-grids","title":"Quantization and dequantization of hexagonal grids","text":"

For simplicity, we are going to use the first conformation, where the first line is aligned to the left, and the hexagons are pointy top. The quantization is done by using the following formula.

// I am assuming that the hexagon is pointy top, and the first line is aligned to the left\n// I am also assuming that the hexagon is centered in the cell, and the top left corner is at (0,0), \n// y axis is pointing down and x axis is pointing right\n// this dont work for all the cases, but it is a good approximation for locations near the center of the hexagon\n/*\n  / \\ / \\ / \\ \n | A | B | C |\n  \\ / \\ / \\ / \\\n   | D | E | F |\n  / \\ / \\ / \\ /\n | G | H | I |\n  \\ / \\ / \\ /\n */\nVector2int quantize(Vector2f position, float hexagonSide) {\n    int y = (position.y - hexagonSide)/(hexagonSide * 2);\n    int x = y%2==0 ?\n      (position.x - hexagonSide * sqrt3over2) / (hexagonSide * sqrt3over2 * 2) : // even lines\n      (position.x - hexagonSide * sqrt3over2 * 2)/(hexagonSide * sqrt3over2 * 2) // odd lines\n    return Vector2int(x, y);\n}\nVector2f dequantize(Vector2int index, float hexagonSide) {\n    return Vector2f(index.y%2==0 ? \n      hexagonSide * sqrt3over2 + index.x * hexagonSide * sqrt3over2 * 2 : // even lines\n      hexagonSide * sqrt3over2 * 2 + index.x * hexagonSide * sqrt3over2 * 2, // odd lines\n      hexagonSide + index.y * hexagonSide * 2);\n}\n

You will have to figure out the formula for the other conformations. Or send a merge request to this repository adding more information.

"},{"location":"artificialintelligence/readings/spatial-quantization/#voxels-and-grid-3d","title":"Voxels and Grid 3D","text":"

Grids in 3D works the same way as in 2D, but you need to use 3D vectors/arrays or voxel volumes. Most concepts applies here. If you want to expand this section, send a merge request.

"},{"location":"artificialintelligence/readings/spatial-quantization/#quadtree","title":"Quadtree","text":"

Quadtree is a tree data structure where each node has 4 children. It is used to partition a space in 2D. It is used to optimize collision detection, pathfinding, and other algorithms that need to iterate over a space. It is also used to optimize rendering, because you can render only the visible part of the space.

"},{"location":"artificialintelligence/readings/spatial-quantization/#quadtree-implementation","title":"Quadtree implementation","text":"

Quadtree is a recursive data structure, so you can implement it using a recursive data structure. The following code is a simple implementation of a quadtree.

// this code is not tested, but it should work. It is just an example and send a merge request if you find any errors.\n// node\ntemplate<class T>\nstruct DataAtPosition {\n    Vector2f center;\n    T data;\n};\n\ntemplate<class T>\nstruct QuadtreeNode {\n    Rectangle2f bounds;\n    std::vector<DataAtPosition<T>> data;\n    std::vector<QuadtreeNode<T>> children;\n};\n\n// insert\ntemplate<class T>\nvoid insert(QuadtreeNode<T>& root, DataAtPosition<T> data) {\n    if (root.children.empty()) {\n        root.data.push_back(data);\n        if (root.data.size() > 4) {\n            root.children.resize(4);\n            for (int i = 0; i < 4; ++i) {\n                root.children[i].bounds = root.bounds;\n            }\n            root.children[0].bounds.max.x = root.bounds.center().x; // top left\n            root.children[0].bounds.max.y = root.bounds.center().y; // top left\n            root.children[1].bounds.min.x = root.bounds.center().x; // top right\n            root.children[1].bounds.max.y = root.bounds.center().y; // top right\n            root.children[2].bounds.min.x = root.bounds.center().x; // bottom right\n            root.children[2].bounds.min.y = root.bounds.center().y; // bottom right\n            root.children[3].bounds.max.x = root.bounds.center().x; // bottom left\n            root.children[3].bounds.min.y = root.bounds.center().y; // bottom left\n            for (auto& data : root.data) {\n                insert(root, data);\n            }\n            root.data.clear();\n        }\n    } else {\n        for (auto& child : root.children) {\n            if (child.bounds.contains(data.center)) {\n                insert(child, data);\n                break;\n            }\n        }\n    }\n}\n\n// query\ntemplate<class T>\nvoid query(QuadtreeNode<T>& root, Rectangle2f bounds, std::vector<DataAtPosition<T>>& result) {\n    if (root.bounds.intersects(bounds)) {\n        for (auto& data : root.data) {\n            if (bounds.contains(data.center)) {\n                result.push_back(data);\n            }\n        }\n        for (auto& child : root.children) {\n            query(child, bounds, result);\n        }\n    }\n}\n
"},{"location":"artificialintelligence/readings/spatial-quantization/#quadtree-optimization","title":"Quadtree optimization","text":"

The quadtree is a recursive data structure, so it is not cache friendly. You can optimize it by using a flat array instead of a recursive data structure.

"},{"location":"artificialintelligence/readings/spatial-quantization/#octree","title":"Octree","text":"

Section WiP. Send a merge request if you want to contribute.

"},{"location":"artificialintelligence/readings/spatial-quantization/#kd-tree","title":"KD-Tree","text":"

KD-Trees are a tree data structure that are used to partition a spaces in any dimension (2D, 3D, 4D, etc). They are used to optimize collision detection(Physics), pathfinding(AI), and other algorithms that need to iterate over a space. Also they are also used to optimize rendering, because you can render only the visible part of the space. Pay attention that KD-Trees are not the same as Quadtree and Octrees, even if they are similar.

In KD-trees, every node defines an orthogonal partition plan that alternate every deepening level of the tree. The partition plan is defined by a dimension, a value. The dimension is the axis that is used to partition the space, and the value is the position of the partition plan. The partition plan is orthogonal to the axis, so it is a line in 2D, a plane in 3D, and a hyperplane in 4D.

"},{"location":"artificialintelligence/readings/spatial-quantization/#bsp-tree","title":"BSP Tree","text":"

BSP inherits almost all characteristics of KD-Trees, but it is not a tree data structure, it is a graph data structure. The main difference is to instead of being orthogonal you define the plane of the section. The plane is defined by a point and a normal. The normal is the direction of the plane, and the point is a point in the plane.

"},{"location":"artificialintelligence/readings/spatial-quantization/#spatial-hashing","title":"Spatial Hashing","text":"

Spatial hashing is a data structure that is used to partition a space. It consists in a hash table where the keys are the positions of the elements, and the values are the elements in buckets. It is very fast to insert and query elements. But it is not good for iteration, because it is not cache friendly.

Usually when you want to use a spatial hashing, you create hash functions for the bucket keys, there is no limit on how you do that, but you have to keep in mind that the hash functions have to be fast and have to be good for the distribution of the elements. Here is a good example of a hashing function for 2D vectors.

namespace std {\n    template<>\n    struct hash<Vector2f> {\n        // I am assuming size_t is 64 bits and the float is 32 bits\n        size_t operator()(const Vector2f& v) const {\n            // get the bits of the float in a integer\n            uint64_t x = *(uint64_t*)&v.x;\n            uint64_t y = *(uint64_t*)&v.y;\n            // mix the bits of the floats\n            uint64_t hash = x | (y << 32);\n            return hash;\n        }\n    };\n}\n

Pay attention that the hashing function above generates collisions, so you have to use a data structure that can handle collisions. You will use datastructures like unordered_map<Vector2D, unordered_set<DATATYPE>> or unordered_map<Vector2D, vector<DATATYPE>>. The first one is better for insertion and query, but it is not cache friendly.

To avoid having one bucket per every possible position, you have to setup properly the dimension of the bucket, a good sugestion is to alwoys floor the position and have buckets dimension of 1.0f. That would be good enough for most cases.

"},{"location":"blog/","title":"Blog","text":""},{"location":"blog/2023/07/28/the-problem-with-ai-trolley-dilemma/","title":"The problem with AI Trolley dilemma","text":"

The premise about the AI trolley dilemma is invalid. So the whole discussion about who should the car kill in a fatal situation. Let me explain why.

Yesterday I attended a conference about Ethics and AI, and the speaker mentioned the trolley dilemma. The question asked was \"What should the self-driving car do?\" and kind of forced us to take sides on the matter.

  • Kill the passengers;
  • Kill the pedestrians;

This is the same as the trolley problem but one difference. AI don't have morals, it will follow what is programmed without any hesitation. So the question is not what the AI should do, but what the programmer codes it to do.

Well, the whole premise on asking what should do \"kill this, or that\" is totally wrong. As a programmer myself, and knowing the limits of the system, I would never code a system to make such a decision. If the car is in a situation that it cannot break in time with the current limited vision, it should go slower. So no decision ever has to be made.

Let's do some math for you to see how this could be easily solved.

"},{"location":"blog/2023/07/28/the-problem-with-ai-trolley-dilemma/#the-math","title":"The math","text":"

Let's use the standard formula for the distance needed to stop a car.

\\[S = v*t + \\frac{v^2}{2*u*g}\\]

Where:

  • \\(S\\) is the distance needed to stop;
  • \\(v\\) is the speed of the car;
  • \\(t\\) is the reaction time;
  • \\(v*t\\) is the distance traveled during the reaction time;
  • \\(u\\) is the tire friction factor;
  • \\(g\\) is the gravity acceleration;
  • \\(\\frac{v^2}{2*u*g}\\) is the distance traveled during the breaking time;

If the car is going at \\(100 km/h\\) (\\(27.7 m/s\\), \\(62.14 mi/h\\)) and the reaction time of the AI is relatively fast, let's say \\(0.2 s\\), so the distance traveled to a complete sage stop would be:

\\[S = 27.7 * 0.2 + \\frac{27.7^2}{2*0.2*9.8} = 5.54 + 38.5 = 44.04 m\\]

Which means that the car would need \\(44.04 m\\) to stop. So if the car cannot clearly see a distance greater than that, it should slow down. And this is the reason the self-driving AIs are said to be slow drivers.

"},{"location":"blog/2023/09/09/setup-sdl-with-cmake-and-cpm/","title":"Setup SDL with CMake and CPM","text":"

In my opinion, the minimum toolset needed to give you the ability to start creating games cross-platform from scratch is the combination of the following tools:

  1. CLion - Cross-platform C++ IDE with embedded CMake support

    • Apply for a student license;
    • Download and install it;
    • For Macs, you will need extra tools: XCode and the command line tools. You can install them by running xcode-select --install on the terminal;
  2. (Required for Windows and if you don't use CLion) Git - Version control system

    • Download only if you are on Windows and don't forget to tick the option to add it to your environment path (CMake will be calling it). On Mac and Linux, you can install via your package manager (ex. brew on Mac e apt on Ubuntu).

After installing the tool(s) above, you can follow the steps below to create a new project:

"},{"location":"blog/2023/09/09/setup-sdl-with-cmake-and-cpm/#clion-project","title":"CLion project","text":"
  1. Open CLion and select New Project:
  1. Create a new project and select C++ Executable and C++XX as the language standard, where XX is the latest one available for you. Use the default compiler and toolchain:
  1. Start coding:

You might note the existence of a CMakeLists.txt file on the left side of the IDE on the Project tab. This file is used by CMake to generate the build files for your project. Now, we are going to set up everything you need to use SDL3. If you open the CMakeLists.txt file, you will see something similar to the following:

# cmake_minimum_required(VERSION <specify CMake version here>)\ncmake_minimum_required(VERSION 3.26)\n# project(<name> [<language-name>...])\nproject(MyGame)\n# set(CMAKE_CXX_STANDARD <specify C++ standard here>)\nset(CMAKE_CXX_STANDARD 17)\n# add_executable(<name> file.cpp file2.cpp ...)\nadd_executable(MyGame main.cpp)\n
"},{"location":"blog/2023/09/09/setup-sdl-with-cmake-and-cpm/#cpm-c-package-manager","title":"CPM - C++ Package Manager","text":"

CPM is a setup-free C++ package manager. It is a single CMake script that you can add to your project and use to download and install packages from GitHub. It is a great tool to manage dependencies and many C++ projects use it.

You can make this as simple as adding the following lines to your CMakeLists.txt file (after the project command):

set(CPM_DOWNLOAD_VERSION 0.38.2)\n\nif(CPM_SOURCE_CACHE)\n  set(CPM_DOWNLOAD_LOCATION \"${CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake\")\nelseif(DEFINED ENV{CPM_SOURCE_CACHE})\n  set(CPM_DOWNLOAD_LOCATION \"$ENV{CPM_SOURCE_CACHE}/cpm/CPM_${CPM_DOWNLOAD_VERSION}.cmake\")\nelse()\n  set(CPM_DOWNLOAD_LOCATION \"${CMAKE_BINARY_DIR}/cmake/CPM_${CPM_DOWNLOAD_VERSION}.cmake\")\nendif()\n\n# Expand relative path. This is important if the provided path contains a tilde (~)\nget_filename_component(CPM_DOWNLOAD_LOCATION ${CPM_DOWNLOAD_LOCATION} ABSOLUTE)\n\nfunction(download_cpm)\n  message(STATUS \"Downloading CPM.cmake to ${CPM_DOWNLOAD_LOCATION}\")\n  file(DOWNLOAD\n       https://github.com/cpm-cmake/CPM.cmake/releases/download/v${CPM_DOWNLOAD_VERSION}/CPM.cmake\n       ${CPM_DOWNLOAD_LOCATION}\n  )\nendfunction()\n\nif(NOT (EXISTS ${CPM_DOWNLOAD_LOCATION}))\n  download_cpm()\nelse()\n  # resume download if it previously failed\n  file(READ ${CPM_DOWNLOAD_LOCATION} check)\n  if(\"${check}\" STREQUAL \"\")\n    download_cpm()\n  endif()\n  unset(check)\nendif()\n\ninclude(${CPM_DOWNLOAD_LOCATION})\n

This will download the CPM.cmake file to your project, and you can use it to download and install packages from GitHub.

To check if CPM is being automatically downloaded, you can go to CLion and click on CMake icon on the left side of the Project. It is the first one on the bottom. And then click the Reload CMake Project button:

Now that you have CPM, you can start adding packages to your project. Here are some ways of doing that:

# A git package from a given uri with a version\nCPMAddPackage(\"uri@version\")\n# A git package from a given uri with a git tag or commit hash\nCPMAddPackage(\"uri#tag\")\n# A git package with both version and tag provided\nCPMAddPackage(\"uri@version#tag\")\n# examples:\n# CPMAddPackage(\"gh:fmtlib/fmt#7.1.3\")\n# CPMAddPackage(\"gh:nlohmann/json@3.10.5\")\n# CPMAddPackage(\"gh:catchorg/Catch2@3.2.1\")\n# An archive package from a given url. The version is inferred\n# CPMAddPackage(\"https://example.com/my-package-1.2.3.zip\")\n# An archive package from a given url with an MD5 hash provided\n# CPMAddPackage(\"https://example.com/my-package-1.2.3.zip#MD5=68e20f674a48be38d60e129f600faf7d\")\n# An archive package from a given url. The version is explicitly given\n# CPMAddPackage(\"https://example.com/my-package.zip@1.2.3\")\n\n# A complex package with options:\nCPMAddPackage(\n        NAME          # The unique name of the dependency (should be the exported target's name)\n        VERSION       # The minimum version of the dependency (optional, defaults to 0)\n        OPTIONS       # Configuration options passed to the dependency (optional)\n        DOWNLOAD_ONLY # If set, the project is downloaded, but not configured (optional)\n        GITHUB_REPOSITORY # The GitHub repository (owner/repo) to download from (optional)\n        GIT_TAG       # The git tag or commit hash to download (optional)\n        [...]         # Origin parameters forwarded to FetchContent_Declare\n)\n
"},{"location":"blog/2023/09/09/setup-sdl-with-cmake-and-cpm/#sdl","title":"SDL","text":"

In order to generate SDL libraries and link them corretly in our executable, we have to state the lib should be in the same folder as the executable, so you have to add this to your CMakeLists.txt file:

# Set all outputs to be at the same location\nset(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})\nset(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})\nset(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})\nlink_directories(${CMAKE_BINARY_DIR})\n

Now that we have CPM set up, we can use it to download and install SDL. If you want to try the stable version v2, add the following lines to your CMakeLists.txt file and refresh CMake:

CPMAddPackage(\n  NAME SDL2\n  GITHUB_REPOSITORY libsdl-org/SDL\n  GIT_TAG release-2.28.3 \n  VERSION 2.28.3\n)\n

If you don't have git installed on your machine, you might want to use the ZIP version(it is even faster to download but slower to switch versions). In this case, you can use the following lines and refresh CMake:

CPMAddPackage(\n  NAME SDL2\n  URL \"https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.28.3.zip\"\n  VERSION 2.28.3\n)\n

If you want to try the bleeding edge version v3, add the following lines to your CMakeLists.txt file at your own risk:

CPMAddPackage(\n  NAME SDL3\n  GITHUB_REPOSITORY libsdl-org/SDL\n  GIT_TAG main\n)\n

Now that we have SDL set up, we should link it to our project. In order to do that, we can add the following lines after the line add_executable to our CMakeLists.txt file and refresh CMake:

target_link_libraries(MyGame SDL2::SDL2)\n# change SDL2 to SDL3 if you are using the bleeding edge version\n#target_link_libraries(MyGame SDL2::SDL2)\n

And this will make SDL available to our project. Now we can start coding. Let's create a simple window:

#define SDL_MAIN_HANDLED true\n#include <SDL.h>\n\nint main(int argc, char** argv) {\n    SDL_Init(SDL_INIT_VIDEO);\n\n    SDL_Window* window = SDL_CreateWindow(\n            \"SDL2Test\",\n            SDL_WINDOWPOS_UNDEFINED,\n            SDL_WINDOWPOS_UNDEFINED,\n            640,\n            480,\n            0\n    );\n\n    SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);\n\n    SDL_Event e;\n    bool quit = false;\n    while (!quit){\n        while (SDL_PollEvent(&e)){\n            if (e.type == SDL_QUIT){\n                quit = true;\n            }\n        }\n\n        SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);\n        SDL_RenderClear(renderer);\n        SDL_RenderPresent(renderer);\n        SDL_Delay(0);\n    }\n\n    SDL_DestroyWindow(window);\n    SDL_Quit();\n\n    return 0;\n}\n

If you feel that you want to test the bleeding-edge version, you can use this code instead:

#define SDL_MAIN_HANDLED true\n#include <SDL.h>\n\nint main(int argc, char* argv[]) {\n    SDL_Init(SDL_INIT_VIDEO);\n\n    SDL_Window *window = SDL_CreateWindow(\n            \"MyGame\",\n            640,\n            480,\n            0\n    );\n\n    SDL_Renderer* renderer = SDL_CreateRenderer(window, nullptr, SDL_RENDERER_ACCELERATED);\n    SDL_Event e;\n    bool quit = false;\n\n    while (!quit) {\n        while (SDL_PollEvent(&e)) {\n            if (e.type == SDL_EVENT_QUIT) {\n                quit = true;\n            }\n        }\n        SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);\n        SDL_RenderClear(renderer);\n        SDL_RenderPresent(renderer);\n        SDL_Delay(0);\n    }\n\n    SDL_DestroyWindow(window);\n    SDL_Quit();\n\n    return 0;\n}\n

Now you have a way to code games with SDL in a way that is cross-platform, and easy to setup.

If you hit Run or Debug on CLion, you will see a window like this:

and then:

I hope it works for you. If you have any problems, please let me know on Discord or via GitHub issues.

"},{"location":"blog/2023/08/30/ferpa-consent/","title":"FERPA Consent","text":"

FERPA (The Family Educational Rights and Privacy Act) is a federal law protecting the confidentiality of student records. It restricts others from accessing or discussing your educational records without your consent. Here we are going to discuss how it applies to the courses I teach and what are the benefits on sharing your work publicly if you want.

FERPA consent form

Read more about the reasoning and rationale below.

Note

This a modified version from this original.

In a typical class, your homework (and other information delineating your academic performance) would not be visible to the public. Indeed, the FERPA law requires that you have the right to privacy in this regard. This is one of the main reasons for the existence of so many \"walled gardens\" for courseware, such as Autolab, Blackboard, CanvasLMS and Piazza, which keep all student work hidden behind passwords.

An essential component of the educational experience in new media arts, however, is learning how to participate in the \"Grand Conversation\" all around us, by becoming more effective culture operators. We cannot do this in the safe space of a Canvas module. Our work is strengthened and sharpened in the forge of public scrutiny: in this case, the agora of the Internet.

Sometimes students are afraid to publish something because it is of poor quality. They think that they will receive embarrassing, negative critiques. In fact, negative critique is quite rare. The most common thing that happens when one creates an artwork of poor quality, is that it is simply ignored. Being ignored - this, not being shunned or derided - this is the fate of mediocre work.

On the other hand, if something is truly great is published - and great projects can happen, and have happened, even in an introductory class like this one - there is the chance that it may be circulated widely on the Internet. Every year that I have taught, a handful of the students' projects get blogged and receive as many as 50000 views in a week. It cannot be emphasized that this can be an absolutely transformative experience for students, that cannot be obtained without taking the risk to work publicly. Students get jobs and build careers on the basis of such success.

That said, there are also plenty of reasons why you may wish to work anonymously, when you work online. Perhaps you are concerned about stalkers or harassment. Perhaps you wish to address themes in your work which might not meet with the approval of your parents or future employers. These are valid considerations, in which case, we advise using an anonymous identity on Github. On our course repository, your work will be indexed by a public-facing name, generally your first name. If you would prefer something else, please inform the professor.

"},{"location":"blog/2023/08/30/ferpa-consent/#ferpa-consent-form","title":"Ferpa Consent Form","text":"

Fill this form if you want to share your work publicly. If you don't fill this form, your work should be private:

FERPA consent form

"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/","title":"Differences between map vs unordered_map","text":"

Both std::map and std::unordered_map are associative containers that store key-value pairs, let's have a deep dive into the differences between them.

"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#underlying-data-structure","title":"Underlying Data Structure:","text":"
  • std::map: Implements a balanced binary search tree:
    • Usually a red-black tree, but it is defined by the STL implementation provided by your compiler;
    • Ensures that elements are always sorted, which allows for efficient range queries and ordered traversal;
  • std::unordered_map: Implements a hash table.

    • The elements are not sorted and are stored in buckets based on the hash value of the keys.
  • On a map, if the tree become too deep, it can have performance issues, because it is O(lg(N)) for almost all functions. The jumps between nodes pointers might not be cache friendly.

  • On an unordered_map, the keys are stored as hashes and might have collisions, if it does collide to be stored on the same bucket, the search inside it is linear. Given the size of the bucket is usually small, this search is usually fast.
"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#complexity","title":"Complexity:","text":"

On a map, when you query, you will pay the price for navigating a tree until you find the element you are searching for. While on a unordered_map you pay the price for the hashing function you use and when it have colision, and pay the price to find an element in a vector that is the bucket.

  • map: query(key) -> navigate tree(might be not cache friendly) -> your value;
  • unordered_map: query(key) -> hash the key(can be costly) -> find the bucket -> linear search in all elements inside the bucket(cache friendly)
"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#algorithm-analysis","title":"Algorithm analysis:","text":"

Evaluate the cost of:

  • map:
    1. How many node hops;
    2. How many key comparisons;
    3. Tree indexing can fit in the cache the whole time;
  • unordered_map:
    1. How many CPU cycles the hashing function uses;
    2. How frequent collisions happens;
    3. How many elements you will have in the bucket on average?

Example:

Assume you have \\(1024\\) elements, a balanced tree can potentially reach 10 levels deep. \\(\\log_{2}(1024) = 10\\) .

In a tree search we will fetch content of pointers 10 times and make 10 key comparisons until we reach the leaves;

If the key is just a pair of int32_t, you can easily implement a hash function that concatenates the bits of one into the another and have a uint64_t value as the key. This shift operation followed by xor is really cheap, but still have a constant cost. If your key is anything more complex, you might face a performance penalty. In this case, the cost here will be 2 basic CPU operations;

After paying the cost of hashing your key, you will have to fetch the content of pointer 1 time to receive the address of an array of elements which is the bucket. Hopefully you just have one element inside it, if not, you will have to iterate inside the bucket array.

In a hashing-bucket approach you pay the cost of hashing funtion, 1 fetch content, and then the linear search inside the bucket array.

So what is better?

a. Jump between memory locations in tree nodes; b. pay the price for a hashing function and then potentially a search inside an array?

"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#insertion-query-and-deletion-complexity","title":"Insertion, Query, and Deletion Complexity:","text":"
  • std::map:
    • Insertion/Deletion: O(log n)
    • Query: O(log n)
  • std::unordered_map:
    • Average-case complexity (amortized):
      • Insertion/Deletion: O(1)
      • Query: O(1)
    • Worst-case complexity (when dealing with hash collisions):
      • Insertion/Deletion: O(n) in the worst case
      • Query: O(n) in the worst case
"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#ordered-vs-unordered","title":"Ordered vs. Unordered:","text":"
  • std::map maintains order based on the keys, allowing for efficient range queries and ordered traversal of elements.
  • std::unordered_map does not guarantee any specific order of elements.
"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#memory-overhead","title":"Memory Overhead:","text":"

std::map typically has a higher memory overhead due to the additional structure needed for the balanced binary search tree.

std::unordered_map may have a lower memory overhead, but it can be affected by the load factor and hash collisions.

"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#use-cases","title":"Use Cases:","text":"

Use std::map when you need ordered traversal or range queries and can tolerate slightly slower insertion and deletion. Use std::unordered_map when you need fast average-case constant-time complexity for insertion, deletion, and queries, and the order of elements is not important.

"},{"location":"blog/2024/01/29/differences-between-map-vs-unordered_map/#closing","title":"Closing","text":"

In summary, the choice between std::map and std::unordered_map depends on the specific requirements of your application. If you need ordered elements and can tolerate slightly slower operations, std::map might be a better choice. If you prioritize fast average-case constant-time operations and the order of elements is not important, std::unordered_map may be more suitable.

I challenge you to implement your own associative container following what you learned here. It is a great exercise to learn how to implement a hash table and a binary search tree. Talk with me via discord if you want to discuss your implementation.

"},{"location":"blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/","title":"Memory-efficient Data Structure for Procedural Maze Generation","text":"

In this post, you will learn how to create a memory-efficient data structure for maze generation. We will jump from a 320 bits data structure to just 2! It is achieved by taking a bunch of clever decisions, changing the referential and doing some math. Be warned, this not for the fainted hearts. Are you brave enough?

Problem statement: You need to generate mazes dynamicly, and you need to break or add walls between rooms. Ex.: How can we store data for a simple 3x3 maze like this:

 _ _ _ \n| |   |\n| | | |\n|_ _|_|\n

The naive approach is to create a data structure like this:

class Node {\n    Node* top, right, bottom, left;\n    bool top_wall, right_wall, bottom_wall, left_wall;\n};\n

This one above will work, but it is:

  • Cache unfriendly;
  • Random access to any element will be slow;
  • Memory inefficient;
  • Huge memory consumption;
  • Redundant data usage;

Cache Unfriendly: The cache locality is hurt by extensive usage of dynamic allocation (4 pointer per node), and not reserving contigous memory for every new object created.

Random Access: To access the room {x,y} will have to iterate over node by node from the origin. The access of a room will have the algorithmic complexity of O(rows+columns) or simply O(n). For small mazes it is not a problem, but for big mazes it will be.

Memory inefficiency: The memory allocation for each room is 4 pointers and 4 booleans. If the size of the pointer is 8 bytes and each boolean is 1 byte, we might think it will have 36 bytes per room, right? Wrong! The compiler will add padding to the struct, so it will have 40 bytes per room. If we have a 1000x1000 maze, we will have 40MB of memory allocated for the maze. It is a lot of memory for a simple maze.

Data redundancy: The wall data is stored in two neighbors. If we break a wall, we have to break the wall in two places. It is not a big deal, but it is a waste of memory.

"},{"location":"blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/#optimization","title":"Optimization","text":"

Well, let's try to optimize it. The first step is to use a single array of data. And then we need to reduce the duplicity of data.

By removing all the pointers, and store the wall data in a single array following matrix linearization, we will drop the memory consumption to 4 bytes per room (10x improvement). It is a huge improvement, but we can do better. Now we can create an array of WallData as follows:

struct WallData {\n    bool top, right, bottom, left;\n};\nvector<WallData> data;\nWallData get_wall(int x, int y) {\n    return data[y * width + x];\n}\n

The size of the WallData is 4 bytes. But we can reduce it if we use data layout optimization:

struct WallData {\n    bool top:1, right:1, bottom:1, left:1;\n};\n

In this version, WallData will use 1 byte per room(40x improvement). But we will be using only 4 bits of the byte. Another way of optmizing it is to use vector of bools for every type of wall. Let's group them into vectors.

vector<bool> topWalls, rightWals, bottomWalls, leftWalls;\n

For vector, depending on the implementation, it needs to store the size of it, the capacity, and the pointer to the data, which will use 24 bytes per vector. If can reach 32 if it stores the reference count to it as a smart pointer.

So what we are going to do next? Reduce the number of vectors used to reduce overhead. If you want to go deeper, you can use only one vector where every bit is a wall. So we will have only 4 bits per room and do some math to get the right bit(80x improvement).

vector<bool> walls;\n

Can we do it better? Yes! As you might have noticed, every wall data is being stored in two nodes redundantly. So we will jump from 40 bytes(320 bits) to 2 bits per room (approximately 160x improvement). But in order to achieve that, you have to follow a strict set of rules andodifications.

  1. Every even bit is a top wall, and every odd bit is a right wall relative to an intersection;
  2. Every dimension of the maze will be increased by one unity in order to properly address the borders.
  3. We need to create accessors via matrix index and flaten with linearization technique.
 _ _ _\n|_|_|_|\n|_|_|_|\n

This 3x2 maze will be represented by a 4x3 linearized matrix. It is easier to understand if you look at the walls as edges and the wall intersections as nodes. So for a 3x2 maze, we need 4 vertical walls and 3 horizontal walls. So in this specific case, if we follow the pattern of 1 if the wall is present and 0 if it is not there, and do this only for top and right walls of a node(intersection), we will have:

This fully blocked 3x2 maze\n _ _ _\n|_|_|_|\n|_|_|_|\n\nWill give us 4x3 pairs of bits:\n01 01 01 00\n11 11 11 10\n11 11 11 10\n\nLinearized as:\n010101001111111011111110\n

Just to recaptulate: we went from 40 Bytes (320 bits) per room to approximately 2 bits per room. A maze map with 128x128 would go from 128*128*320/8 = 640KB to 129*129*2/8 = 4161 bytes. It is 157.5 times densely packed. It is a huge improvement.

"},{"location":"blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/#notes-about-vectors","title":"Notes about vectors:","text":"
  1. vector of bools is a bitfield, so it will pack 8 bools per byte, it will do the shift and masking for us.
  2. vector of bools is arguably an antipattern because it doesn't behave like a commom vector by not following the rule of zero cost abstraction from C++. It adds a cost for the densely packed bitfield.
  3. For our intent, this is exactly what we want, so we can use it, just check if your compiler implements it as a bitfield.

Here goes a simple implementation of a data structure to hold the maze data:

struct Maze {\nprivate:\n  vector<bool> walls;\n  vector<bool> visited;\n  int width, height;\npublic:\n  Maze(int width, int height): width(width), height(height) {\n    walls.resize((width+1)*(height+1)*2, true);\n    for(int i = 0; i <= width; i++) // clear verticals on the top\n      SetNorthWall(i, 0, false);\n    for(int i = 0; i <= height; i++) // clear horizontals on the right\n      SetEastWall(width, i, false);\n    visited.resize(width*height, false); // no room is visited yet\n  }\n\n  bool GetVisited(int x, int y) const { return visited[y*width + x]; }\n  void SetVisited(int x, int y, bool val) { visited[y*width + x] = val; }\n\n  bool GetNorthWall(int x, int y) const { return walls[(y*(width+1) + x)*2 + 1]; }\n  bool GetSouthWall(int x, int y) const { return walls[((y+1)*(width+1) + x)*2 + 1];}\n  bool GetEastWall(int x, int y) const { return walls[((y+1)*(width+1) + x+1)*2];}\n  bool GetWestWall(int x, int y) const { return walls[((y+1)*(width+1) + x)*2];}\n\n  void SetNorthWall(int x, int y, bool val) { walls[(y*(width+1) + x)*2 + 1] = val; }\n  void SetSouthWall(int x, int y, bool val) { walls[((y+1)*(width+1) + x)*2 + 1] = val;}\n  void SetEastWall(int x, int y, bool val) { walls[((y+1)*(width+1) + x+1)*2] = val;}\n  void SetWestWall(int x, int y, bool val) { walls[((y+1)*(width+1) + x)*2] = val;}\n}\n
"},{"location":"blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/#further-ideas","title":"Further ideas","text":"
  1. Is it possible to explore even more the structure?
  2. Is it possible to do the same for hexagonal grids? Every node will have 3 walls instead of 4 in the squared grid.
"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/","title":"Let's talk about Virtual Reality","text":"

The goal of this article is not be a comprehensive guide about Virtual Reality, but to give you a general sense of what it is and how it works. I will also give you some examples of how it is being used today and what we can expect for the future.

"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#history","title":"History","text":"
graph TB\n  Start[Start] \n  -- 1838 --> Stereoscope[Stereoscope] \n  -- 1935 --> multisensory[Multi Sensory Machines]\n  -- 1960 --> hmd[Head Mounted Devices\\nVR Goggles]\n  -- 1965 --> military[Military Research\\nTraining\\nHelmets]\n  -- 1970 --> artificialreality[Artificial Reality\\nComputer Simulations]\n  -- 1980 --> gloves[Stereo Vision Glasses\\nGloves for VR]\n  -- 1989 --> nasa[NASA Training\\nComputer Simulated Teleoperation]\n  -- 1990 --> game[VR Gaming\\nVR Arcades]\n  -- 1997 --> serious[PTSD Treatment]\n  -- 2007 --> datavis[Google Street View\\nStereoscopic 3D]\n  -- 2010 -->oculus[Oculus VR\\nOculus Kickstarter\\nFacebook acquisition]\n  -- 2015 -->general[General Audience\\nMultiple VR products]\n  -- 2016 -->ar[AR\\nPokemon Go\\nHololens] \n  -- 2017 -->ARKIT[AR\\nApple ARKit] \n  -- 2018 -->oculusquest[Oculus Quest\\nStandalone VR]\n  -- 2021 -->metaverse[Metaverse\\nFacebook rebrands to Meta]\n  -- 2023 -->apple[Apple Vision]

As you can see the history of VR is quite long and full of interesting surprising developments, but it is only in the last 10 years that it has become a reality for the general audience.

"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#terms-disambiguation","title":"Terms Disambiguation","text":"

Before we go any further, let's disambiguate some terms that are often used interchangeably. Nowadays we have a spectrum of immersive technologies that goes from the real world to the virtual world.

graph LR\n    real[Real World]-->mixed\n\n    subgraph mixed[Mixed Reality]\n        augmentedreality[Augmented Reality]\n        augmentedvirtuality[Augmented Virtuality]\n    end\n\n    mixed --> virtual[Virtual Reality]
"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#virtual-reality","title":"Virtual Reality","text":"

Virtual Reality (VR) is the most pervasive and ambiguous term. It is sometimes used as an umbrella for all immersive technologies, but it is more commonly used to refer to the process of simulating a virtual world that is completely isolated the user from the real world. This is usually done by using a Head Mounted Display (HMD) that blocks the user's view of the real world and replaces it with a simulation in front of the user's eyes; and headphones to replace the real sounds with virtual. The user can also use controllers to interact in it.

This term gained lots of attention with the modern VR boom that started in 2010 with the Oculus Kickstarter campaign followed by its acquisition by Facebook in 2014. After that, many other companies started to develop their own VR products, such as the HTC Vive, the Playstation VR, and the Samsung Gear VR.

"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#augmented-reality","title":"Augmented Reality","text":"

Augmented Reality is another ambiguous term, but its meaning is more settled. It refers to the process of adding computer generated elements to the real world. It can be done by using a Head Mounted Display (HMD) that allows the user to see the real world and the virtual elements at the same time such as Google Glass or the Microsoft Hololens. It can also be done by using a smartphone or tablet that uses the camera to capture the real world and then adds virtual elements to it. This is the case of the Snapchat filters and the popular game Pokemon Go launched in 2016.

"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#augmented-virtuality","title":"Augmented Virtuality","text":"

This term usually is not misused and more specifically refers to the process of adding real world elements to a virtual world. It can appears in many forms, for example, the use of a treadmill to simulate walking in the virtual world or the use of a camera to capture the user's face and add it to the virtual world. Stereocameras or depth sensors are also used to capture the user's hands and add them to the virtual world as well.

Most of the time Augmented Virtuality (AV) is seen as an enhancement to the already existing immersive experience. It can be used to add another level of realism to the virtual world, to make the user feel more immersed in it, reduce nausea, or discomfort by adding real world anchors to the virtual world.

"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#challenges","title":"Challenges","text":"

In order to make immersive gadgets a reality, we need to overcome some challenges. The most important ones are:

  • Motion Sickness: the feeling of nausea and discomfort caused by the mismatch between the user's movements and the virtual world. It is mostly caused by:
    • Latency: the time it takes for the system to react to the user's actions. The system needs to process the inputs, accelerometers, gyroscopes, and other sensors, and then render the new image to the user. This process takes time and if it is too long the user will feel unresponsiveness and will get sick;
    • Field of View: the area that the user can see at any given time doesnt match the area that the user can see in the real world;
    • Resolution: the number of pixels that the user can see at any given time. Ex. The Oculus Rift DK1 had a resolution of 640x800 per eye that was zoomed to cover the user's entire field of view, and on top of that, the spacing between pixels makes the image looks like a grid of squared dots; you can see why it received so many complaints;
    • Tracking: the ability of the system to track the user's movements properly. The sensors usually do not refresh at the same rate as the display, so the system needs to interpolate the user's movements between the sensor readings. This can cause the user to feel like the virtual world is lagging behind the real world and be out of sync with the user's movements;
  • Comfort: the feeling of comfort that the user has while using the system. If the device needs to be worn for a long period of time, right weight distribution, padding, and ventilation are important to make the user feel comfortable;
  • Cost: the cost of the system. The machinery and technology used to create the system can be very expensive to be accessible to the general audience;
  • Portability: the ability of the system to be used in different places. If the system is too heavy or too big it will be hard to carry;
  • Social Acceptance: the acceptance of the system by the society. If the system is too intrusive or too weird it will be hard to use in public places. It could be seen as a threat to privacy or as a threat to the user's safety;
  • Battery Life: the amount of time that the system can be used without being plugged in. If the system needs to be plugged in all the time it will be hard to use in public places;
  • Software Development Kits: the tools that developers use to create applications for the system. If the SDK is too hard to use or too limited it will be hard to create applications for the system;

I will add to this list a personal experience that I don't see many people talking about: bad smell, oily foams, and connectors corrosion. The root of those problems is the proximity with the user's face. The user's face is a very oily place and the foam that is used to make the device comfortable is an exceptional place for bacteria to grow. The connectors are also exposed to the user's sweat and can corrode over time and brick your device.

"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#applications","title":"Applications","text":"

There are virtually infinite applications for immersive technologies, but I will focus on the ones that I think are the most important ones in my opinion:

  • Entertainment: Games in general, but also movies, etc.;
  • Data Visualization: the ability to visualize data in a 3D space can be very useful to understand complex data;
  • Education: Training, virtual classrooms, virtual museums, virtual tours, etc.;
  • Social: Virtual meetings, parties, dating, etc.;
  • Psychological Treatment: Virtual exposure therapy(Ex.: PTSD, phobias), virtual reality therapy, etc.;
  • Medical: Surgery planning, surgery simulation, etc.;
  • Design: Architecture, interior design, etc.;
"},{"location":"blog/2023/08/09/lets-talk-about-virtual-reality/#future","title":"Future","text":"

In my past, I have created a startup to help surgeons plan their surgeries and ported it to VR - DocDo. I created some small scoped projects to psychological treatment via progressive exposition, some for data visualization and others for education. I am not in position to have a strong opinion about the future of VR, but I can share my thoughts about it.

At the beginning of the metaverse boom, I was very skeptical about it, and I am still. I felt it was a just a new interpretation of a product previously tested on Second Life and proved to be a niche product, focused in being fun, but forcing the use of device with many issues. Another problem was the lack of a real application besides the fun factor.

As a developer, I am in love with Apple's new Vision OS emulator and SDK. It is surprisingly easy to use, filled with useful functions, although it is buggy and crashes randomly in beta channel that I am using now. I think it is an exceptional example of how to create a nice SDK for a new platform. I am not sure if it will be a success, but I am sure that it will empower many developers to create new or port existing applications to their platform. They have created a simply way to bring a desktop experience to a VR gadget that just work. You can \"easily\" port your app to it and it will work. It is portable, easy to code, powerful hardware, nice battery life, and a nice SDK. I think it is a nice recipe for success. My only concern is related to the cost and social acceptance.

"},{"location":"blog/2024/08/19/neurodivergence-in-the-game-development/","title":"Neurodivergence in the Game Development","text":"

Most of us game devs hold some degree of divergence. If you fall into the typical box, don't worry: you are not alone. The game industry is filled with neurodivergent people, and it is a place where you can be yourself, be accepted, and thrive. But if you are a typical person, you should be at least aware of the differences and how to deal with them.

IGDA (International Game Developers Association) ran a research in 2023 about disability and they found a shocking number of 44% of game professionals holds some degree of neurodivergence. Check it out here the full report.

The person who is writing this article (AKA myself, yay!) is an autistic person, with triple exptionalities (giftedness, ADHD, and autism). I am also a teacher for more than 10 years and I have been trying to understand how to deal with neurodivergent students in the classroom for a while. Please, allow me to share some of my insights and experiences with you.

"},{"location":"blog/2024/08/19/neurodivergence-in-the-game-development/#depression-and-anxiety-as-hints-for-deeper-issues","title":"Depression and Anxiety as hints for deeper issues","text":"

Well, if I could say something to my younger self is to understand more about depression and anxiety, it could be symptoms for deeper issues. Those are the first things people note on you, and you can feel them more clearly than the other characteristics. It is pretty common for an atypical person to force itself into a typical box, and it is a recipe for disaster. If you feel that, seek for help! It is not a shame to be different!

"},{"location":"blog/2024/08/19/neurodivergence-in-the-game-development/#chronic-depression-and-anxiety","title":"Chronic Depression and Anxiety","text":"

As a professor, I think that most of my struggling students face some of the following characteristics somehow, and I remember what happened to me too. I was wrongly diagnosed as Depressed and Anxious, but in my case, it was a consequence of my brain trying to force myself into others expectations and failing. So I will list some common symptoms of those chronic issues and how read them.

  • Tiredness: trying to fit can be really draining, and it can lead to tiredness or even exhaustion.
  • Lack of motivation and interest: You feel so tired that just focus on something can become a herculean task. You might feel like you are not interested in anything, but it might be just your brain trying to protect you from the exhaustion.
  • Low self-esteem: As you fail to do what others do, you constantly feel like you are not enough. Thus, you feel hopelessness, worthlessness, pessimist and empty. Have you thought that you might be judging yourself by others standards, and being blind to your own abilities?
  • Sleep problems: it can be the two extremes, sleeping too much or too little. My case: When I didn't understand that on me, I couldn't sleep well, I faint out of exhaustion or even delirious while awake. It was pretty common for me to have headaches for the lack of sleep.
  • Appetite or weight changes: This can be related to Anxiety too. Sometimes you feel so frustrated that you seek for dopamine in food, or you feel so anxious trying to do something that your brain can't focus on eating.
  • Concentration problems: You feel hard do pay attention to things that are not interesting to you or don't connect with you well. For me, this is a consequence of being tired. You can create coping mechanisms to keep at least partially focused such as drawing in class, but it is not sustainable. I have another article about learning techniques. Check it out later.
  • Emotional problems and mood: Sometimes you might feel emotionally unstable. Feeling sad frequently or even not feeling what you know you should feel. You might feel hard to feel empathy and understand others feelings. Or you disconnect from your own feelings. You can be easily irritable just because you are exhausted. Or worse, you feel like you are a robot, and you don't have feelings at all, because you create so many protections around yourself that it is easier to dissociate from your feelings than to deal with them.
  • Pain: You might experience pain differently. In my case, I have a high pain tolerance and don't perceive pain the way most people do. For example, I thought I had merely bumped a toe against the bed while walking at night and went back to sleep. It wasn\u2019t until later when I woke up trembling cold and noticed my foot was purple, so I went to the hospital. The doctors informed me that my foot was fractured in three places and did a surgery. The very next day I was teaching already.
  • Other Physical Symptoms: most common are: constant headaches, digestive problems, or sexual problems (ex.: porn addiction or not interested at all). But it is pretty common to have heart palpitations, sweating, lightheadedness, trouble breathing, nausea, stomach upset, diarrhea, frequent urination, dizziness, and shakiness.

I am no doctor, and I am here just to raise awareness as a person with issues by showing empathy to others and trying to prove that I can understand most of your issues. If you are facing any of those, and you are one of my students, you can count on me to give you extra attempts on assignments or extending due dates. No questions asked. But you have to ask. Deal?

"},{"location":"blog/2024/08/19/neurodivergence-in-the-game-development/#brain-model","title":"Brain model","text":"

source

I am no psychologist nor neuroscientist, but I have been studying the brain for a while to understand myself and how to be more effective teacher by helping people like me. But in order to explain my point, I will use a simplified model of the brain. I will use the Freud model.

As far as I could understand about my issues and some o my students, I came to the conclusion that we have a different way to process, store and retrieve information, how we learn, and we have an atypical way to interact with the world.

So, the core issue I could feel is a sheer pressure coming from the rational core towards the other layers, but we forget that conscious is just the emergence of what is happening in the other layers. So, we have to learn to respect and listen to our unconscious and preconscious mind.

It is just like having two people living inside yourself, and they are constantly fighting for control. The rational core is the one that is always trying to fit in, to be like others, to be accepted, to be loved. But the unconscious and preconscious mind are the ones that are trying to protect you, to make you feel safe, to make you feel happy. And if they are in disagreement, you might feel the symptoms I listed above. Does it make sense to you?

Sometimes this fight between these poles can be so intense that you might feel exhausted, and it can lead to depression and anxiety. But I will phrase Jim Carrey:

\"Depression is your body saying: 'I don't want to be this character anymore. I don't want to hold up this avatar that you've created in the world. It's too much for me.'\";

\"I believe depression is legitimate. But I also believe that if you don\u2019t exercise, eat nutritious food, get sunlight, get enough sleep, consume positive material, surround yourself with support, then you aren\u2019t giving yourself a fighting chance.\"

"},{"location":"blog/2024/08/19/neurodivergence-in-the-game-development/#protecting-your-subconscious","title":"Protecting your subconscious","text":"

Well, what you could do to help yourself? I will list some of the things that helped me and some of my students thrive.

The obvious and direct actions are:

  • Sleep well and track your sleep quality with any mobile app you like, I use Sleep as Android, my kid uses the Pokemon Sleep, it connects to Pokemon GO!.
  • Take sunbathes, at least 15 minutes a day. If you cant, take vitamin D supplements. I go to work by bike, so I take my sunbathes while I am going to work. On days that I can't, I take buses and walk. If you see me around, don't be shy, say hi! I would love it!
  • Eat well, track your food intake with any mobile app you like. Learn to eat healthy even if you distaste it, first you will learn how to tolerate and then you will enjoy it. Avoid sugary food and highly processed food.
  • Drink enough water to help your body clean unwanted substances. I use a 1.5L bottle with time markings to help me to drink enough water throughout the day.
  • Create a support network. It can be through games, sports or anything that might make you be in touch with others. I am currently building an open source system, and I am always in touch with the community.
  • Do outside activities and get some fresh air:

  • Is it raining? Go for it! You can take a shower after that.

  • Is it snowing? Feel the snowflakes in your skin and the urge to maintain your body temperature.
  • Is it sunny? Go to the lake and feel the water in your feet and the sun in your skin.

Those are the building blocks to allow your subconscious to feed your conscious mind. These apparently simple steps help you close the distance between your two selfs. If you feel that something works for you and I didn't list it, please share with me. I would love to learn more about it.

Again. I am just a neurodivergent guy trying to help others like me. Seek professional help if you think you identify with the symptoms I listed above.

"},{"location":"blog/2024/08/19/neurodivergence-in-the-game-development/#my-personal-take-on-conceding-exceptions-to-students","title":"My personal take on conceding exceptions to students","text":"

As a teacher, I have to follow some rules. While the learning and supporting systems are not ready for people like me, I am do my best to be flexible enough to deal with the differences fairly. The only requirement I ask is: if you are my student and are struggling, please reach me out or just add comments into the assignment online stating that you would request extra time or whatever your case would be. I want you to succeed. The reason is: these tools does not offer a nice way to me to track your particularities or allow me to attach notes to students.

"},{"location":"blog/2023/08/24/notes-on-submissions/","title":"Notes on Submissions","text":"Source: ideogram

Here are my personal opinions, rules and processes that I follow about submissions. I will cover gradings, deadlines, tolerances, and AI-assistant tools usage.

"},{"location":"blog/2023/08/24/notes-on-submissions/#policy-on-limited-use-of-ai-assisted-tools","title":"Policy on Limited use of AI-assisted tools","text":"

Note

\"During our classes, we may use AI writing tools such as ChatGPT in certain specific cases. You will be informed as to when, where, and how these tools are permitted to be used, along with guidance for attribution. Any use outside of these specific cases constitutes a violation of Academic Honesty Policy.\" Source.

The learner has to produce original content. You can use tools like ChatGPT to help you learn by prompting your own questions, but not to solve the problems, assignments, or quizzes.

The rationale is that the student has to learn the concepts and ideas rather than just copying and pasting the answers.

"},{"location":"blog/2023/08/24/notes-on-submissions/#what-is-acceptable","title":"What is acceptable:","text":"
  • On writing, coding assignments, or interactive assignments, you can ask AI questions about concepts, ideas, syntaxes, etc;
  • You can ask AI assistants what is wrong with your code, but you cannot use the answer 1 to 1 copy to your final submission. You have to modify it;
  • If your submission contains part of an AI-assisted tool, you have to cite it. Ex.: \"I prompted ____ in ChatGPT, and the answer was ____.\" and as a professor, I will deduct points from your submission with fairness instead of giving you zero points;
"},{"location":"blog/2023/08/24/notes-on-submissions/#what-is-not-acceptable","title":"What is not acceptable","text":"
  • You cannot copy the question and prompt AI to answer it and then use the answer as your own;
  • You cannot ask AI to code a solution for you;
  • You cannot use any AI while coding(e.g. GitHub Copilot), but I do recommend you to use any IDE instead;
  • You cannot use AI assistance to solve quizzes or exams in any circumstances.
  • Even in accepted cases, using AI assistance and not citing it will be considered plagiarism and will be reported to higher instances and zero-ed;
"},{"location":"blog/2023/08/24/notes-on-submissions/#how-do-i-detect-plagiarism-and-ai-assisted-tools-abuse","title":"How do I detect Plagiarism and AI-assisted tools abuse","text":"
  • I use some automated tools such as Turnitin(canvas), moss(Beecrowd), and others;
  • I use my own experience to detect plagiarism;
  • If two students use the same AI assistant, chances are high that they will produce the same answer, and I will detect it;
"},{"location":"blog/2023/08/24/notes-on-submissions/#grading-timings","title":"Grading Timings","text":"

I usually take up to 1 week to grade assignments, but I will grade them as soon as possible. The worst-case scenario is two weeks.

"},{"location":"blog/2023/08/24/notes-on-submissions/#late-submissions-policy","title":"Late Submissions Policy","text":"

If you submit an assignment late, you will receive a flat 20% deduction on your grade.

If you have accommodations, message me, and I will try accommodating you. But always send a message on every submission stating that. Canvas is a nice tool, but it needs to cover accommodations better.

If you fall under special conditions, such as sickness, death of a relative, or any other condition that you cannot submit the assignment on time, please send me a message through Canvas, and I will try to accommodate you.

"},{"location":"blog/2023/08/24/notes-on-submissions/#plagiarism","title":"Plagiarism","text":"

Plagiarism is a serious offense and will be reported to the higher instances. I will not tolerate any plagiarism as I define:

  • Searching for answers on the internet and copy and paste it as your own;
  • Copying answers from other students;
  • Using AI-assisted tools to produce full answers;
  • Using AI-assisted tools to produce partial answers without citing it;
"},{"location":"blog/2023/08/24/notes-on-submissions/#welcoming-environment","title":"Welcoming environment","text":"

I am here to teach you the best I can and guide you through your learning process. You can count on me as a friend and a teacher, and I will help you as much as possible. I am willing to make exceptions for the ones that need it.

"},{"location":"dojo/","title":"Coding Dojo Definition","text":"

A coding dojo is a programming practice that involves a group of developers coming together to collaborate on solving coding challenges. It is a learning and collaborative environment where developers can improve their coding skills and work on real-world coding problems.

The term \"dojo\" comes from the Japanese term for place of the way, which is a traditional place of training for martial arts. In a coding dojo, participants practice the skills they have learned, exchange knowledge and experience, and work together to solve programming challenges.

During a coding dojo session, participants work in pairs or small groups to solve programming challenges, using techniques such as pair programming and test-driven development. They work through the problem step by step, discussing and sharing their ideas and approaches along the way. The goal of a coding dojo is to improve individual and team coding skills, and to learn from each other's experiences.

"},{"location":"dojo/#timeline-structure","title":"Timeline Structure","text":"
  • Introduction (5 minutes): The facilitator introduces the coding dojo and the coding challenge for the session.
  • Warm-up exercise (10 minutes): A brief exercise is conducted to get participants warmed up and ready for the coding challenge.
  • Coding challenge (60 minutes): Participants work in pairs or small groups to solve the coding challenge using techniques such as pair programming and test-driven development.
  • Review and discussion (15 minutes): Participants share their solutions and discuss the various approaches taken to solve the challenge.
  • Retrospective (10 minutes): Participants reflect on the session and provide feedback on what went well and what could be improved for future sessions.
  • Closing (5 minutes): The facilitator concludes the session and thanks the participants for their contributions.
"},{"location":"dojo/Full-Cycle-SDL-Development/","title":"Full Cycle Cross-platform Game Development with SDL, CMAKE and GitHub","text":"

This Dojo is focused in training professionals on setting up a full cycle project using SDL, CMAKE and GitHub actions.

"},{"location":"dojo/Full-Cycle-SDL-Development/#agenda","title":"Agenda:","text":"
  • Introduction (5 minutes): The facilitator introduces the coding dojo and the goal of the session, which is to create a CMake build system for an SDL project using GitHub Actions.
  • Warm-up exercise (10 minutes): A brief exercise is conducted to get participants warmed up and familiar with SDL and CMake.
  • Setting up the project (30 minutes): Participants work in pairs or small groups to clone the SDL project from GitHub and create a CMake build system for it.
  • Adding GitHub Actions (30 minutes): Participants continue to work on their CMake build systems and add GitHub Actions to automate the build and test process.
  • Review and discussion (10 minutes): Participants share their solutions and discuss the various approaches taken to create the CMake build system and implement GitHub Actions.
  • Retrospective (5 minutes): Participants reflect on the session and provide feedback on what went well and what could be improved for future sessions.
  • Closing (5 minutes): The facilitator concludes the session and thanks the participants for their contributions.
"},{"location":"dojo/Full-Cycle-SDL-Development/#introduction","title":"Introduction","text":""},{"location":"dojo/Full-Cycle-SDL-Development/#warm-up","title":"Warm-up","text":"
  • Write down what do you expect from this Dojo here;
"},{"location":"dojo/Full-Cycle-SDL-Development/#setup","title":"Setup","text":"

You can either fork Modern CPP Starter Repo (and star it) or create your own from scratch.

Ensure that you have the following software installed in your machine:

  • C++ Compiler. Ex.: GCC(build-essential, and cmake) on Linux, MS Visual Studio on Windows(select C++ and in additional tools, select cmake), Command Line Tools for OSX.
  • Git. Ex.: Gitkraken(free for students);
  • IDE. Ex.: Clion(free for students);
  • CMake. Ex.: cmake-gui, but clion already bundle it for you.
"},{"location":"dojo/Full-Cycle-SDL-Development/#action","title":"Action","text":""},{"location":"dojo/Full-Cycle-SDL-Development/#1-clone","title":"1. Clone.","text":"

Clone your repository you created or forked in the last step (Modern CPP Starter Repo);

"},{"location":"dojo/Full-Cycle-SDL-Development/#2-cmake-glob","title":"2. CMake Glob","text":"

Edit your CMakeLists.txt to glob your files (naive and powerful approach). Example:

Minimum CMake:

cmake_minimum_required(VERSION 3.25)\nproject(MY_PROJECT)\nset(CMAKE_CXX_STANDARD 17)\nadd_executable(mygamename main.cpp)\n
Add a GLOB to search for four files.
file(GLOB MY_INCLUDES # Rename this variable\n        CONFIGURE_DEPENDS\n        ${CMAKE_CURRENT_SOURCE_DIR}/*.h\n        ${CMAKE_CURRENT_SOURCE_DIR}/*.hpp\n        )\n\nfile(GLOB MY_SOURCE # Rename this variable\n        CONFIGURE_DEPENDS\n        ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp\n        ${CMAKE_CURRENT_SOURCE_DIR}/*.c\n        )\n
Then edit your last line to use the result of it as the sources for your executable.
add_executable(mygamename ${MY_SOURCE} ${MY_INCLUDE})\n

"},{"location":"dojo/Full-Cycle-SDL-Development/#3-cpm","title":"3. CPM","text":"

Add code for the package manager CPM.

Read their example and how do you download it. Optionally, you can download it dynamically, this is the way I prefer.;

"},{"location":"dojo/Full-Cycle-SDL-Development/#4-sdl-dependency","title":"4. SDL dependency","text":"

Use CPM to download your dependencies. Please refer to this issue comment for an example. If you want to see something already done, check this one;

"},{"location":"dojo/Full-Cycle-SDL-Development/#5-linking","title":"5. Linking","text":"

Link your executable to SDL;

target_link_libraries(mygamename PUBLIC SDL2)\n
You can see it in action here. In this example, we include the external cmake file manage that. It is a good practice to do that.

"},{"location":"dojo/Full-Cycle-SDL-Development/#6-optional-imgui","title":"6. Optional: ImGUI","text":"

ImGui for debugging interface purposes;

Use CPM to download ImGUI and link it to your library. Example - You can optionally remove the static link if you want. https://github.com/InfiniBrains/SDL2-CPM-CMake-Example/blob/main/main.cpp

Link your executable to IMGUI

target_link_libraries(mygamename PUBLIC SDL2 IMGUI)\n

"},{"location":"dojo/Full-Cycle-SDL-Development/#7-it-is-game-time","title":"7. It is GAME time!","text":"

Copy this example here to your main.cpp if you are going do use ImGUI or just use something like this:

#include <stdio.h>\n\n#include \"SDL.h\"\n\nint main()\n{\n    if(SDL_Init(SDL_INIT_VIDEO) != 0) {\n        fprintf(stderr, \"Could not init SDL: %s\\n\", SDL_GetError());\n        return 1;\n    }\n    SDL_Window *screen = SDL_CreateWindow(\"My application\",\n            SDL_WINDOWPOS_UNDEFINED,\n            SDL_WINDOWPOS_UNDEFINED,\n            640, 480,\n            0);\n    if(!screen) {\n        fprintf(stderr, \"Could not create window\\n\");\n        return 1;\n    }\n    SDL_Renderer *renderer = SDL_CreateRenderer(screen, -1, SDL_RENDERER_SOFTWARE);\n    if(!renderer) {\n        fprintf(stderr, \"Could not create renderer\\n\");\n        return 1;\n    }\n\n    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);\n    SDL_RenderClear(renderer);\n    SDL_RenderPresent(renderer);\n    SDL_Delay(3000);\n\n    SDL_DestroyWindow(screen);\n    SDL_Quit();\n    return 0;\n}\n
"},{"location":"dojo/Full-Cycle-SDL-Development/#8-github-actions","title":"8. Github Actions.","text":"

Create folder .github and inside it another one workflows. Inside it create a .yml file.

Here you will code declaratively how your build should proceed. The basic steps are usually: Clone, Cache, Install dependencies, Configure, Build, Test and Release conditionally to branch.

Check and try to reproduce the same thing you see here.

If you are following the Modern CPP Starter Repo, you can explore automated tests. Be my guest and try it.

"},{"location":"dojo/Full-Cycle-SDL-Development/#review","title":"Review","text":"

How far you went? Share your repos here.

"},{"location":"dojo/Full-Cycle-SDL-Development/#retrospective","title":"Retrospective","text":"

Please give me feedbacks in what we did today. If you like or have something to improve, say something in here. Ah! you can always fork this repo, improve it and send a pull request back to this repo.

"},{"location":"dojo/Full-Cycle-SDL-Development/#closing","title":"Closing","text":"

Give stars to all repos you saw here as a way to contribute to the continuity of the project.

Propose a new Dojo and be in touch.

"},{"location":"dojo/The-most-asked-interview-question/","title":"The most asked interview question","text":"

Arguably, the most asked question in coding interviews is the Two Number Sum. It is used by many Bigtechs and AAA Game Studios. You can see this question in many youtube videos, coding websites such as hackerank, leetcode, algoexpert ...

"},{"location":"dojo/The-most-asked-interview-question/#agenda-two-number-sum-coding-dojo","title":"Agenda: Two Number Sum Coding Dojo","text":""},{"location":"dojo/The-most-asked-interview-question/#introduction-5-minutes","title":"Introduction (5 minutes)","text":"
  1. Welcome participants to the dojo
  2. Introduce the Two Number Sum question as a common coding interview question
  3. Discuss the importance of problem-solving skills in coding interviews
  4. Briefly explain the rules and structure of the dojo
  5. Problem Explanation (10 minutes)
"},{"location":"dojo/The-most-asked-interview-question/#provide-a-brief-overview-of-the-two-number-sum-question","title":"Provide a brief overview of the Two Number Sum question","text":"
  1. Define the problem and its requirements
  2. Discuss potential edge cases and constraints
  3. Review sample inputs and expected outputs
  4. Coding Session (50 minutes)
"},{"location":"dojo/The-most-asked-interview-question/#problem-restrictions-and-characterization","title":"Problem restrictions and characterization","text":"

Write a function that will receive an array/vector/list of integers and a target number. Find two numbers inside the array that summed will match the target. You have to return both in a array/vector/list ordered.

Implement the solution in 3 different ways. Open the details only after you try. First approach:

1. Naive solution. O(N^2) time and O(1) space; - required to know this;

Can you make it faster?

2. Fastest solution. O(N) time and O(N) space; - this will make you

Can you make it not use much memory, but still be fast?

3. Fastest without mem allocation. O(N*log(N)) time and O(1) space;"},{"location":"dojo/The-most-asked-interview-question/#participants-work-on-solving-the-two-number-sum-problem-in-pairs-or-small-groups","title":"Participants work on solving the Two Number Sum problem in pairs or small groups","text":"
  1. Emphasize the importance of communication and collaboration during the coding session
  2. Encourage participants to use a whiteboard or paper to sketch out their solutions
  3. Provide guidance and support as needed
  4. Code Review (20 minutes)
"},{"location":"dojo/The-most-asked-interview-question/#participants-share-their-solutions-with-the-group","title":"Participants share their solutions with the group","text":"
  1. Facilitate a discussion about each solution, highlighting strengths and areas for improvement
  2. Encourage participants to ask questions and provide feedback to their peers
  3. Discuss potential optimizations and alternative approaches to the problem
  4. Wrap-Up (5 minutes)
"},{"location":"dojo/The-most-asked-interview-question/#recap-the-main-takeaways-from-the-dojo","title":"Recap the main takeaways from the dojo","text":"
  1. Encourage participants to continue practicing problem-solving skills on their own
  2. Thank participants for attending the dojo and provide any additional resources or support as needed.
  3. Note: The time allocation can be adjusted based on the group's needs and pace.
"},{"location":"intro/","title":"Intro to Programming","text":""},{"location":"intro/#learning-objectives","title":"Learning Objectives","text":"
  • Understand the fundamental concepts of programming and computer science;
  • Practice how to solve problems programatically using C++;
  • Use tools to write and compile C++ programs;
  • Code, document, test, and implement a well-structured, robust computer program using the C++ programming language.
  • Write reusable modules (collections of functions).
  • Use version control to manage your code;
  • Use the debugger to find and fix bugs in your code;
  • Understand the basics of file input/output;
  • Work in groups to solve problems;
"},{"location":"intro/#learning-outcomes","title":"Learning Outcomes","text":"
  • Be able to understand computer science concepts and terminology;
  • To describe the basic components of a computer system and their functions;
  • Differentiate between the various types of programming languages;
  • To describe and use software tools in the programming process;
  • Use modern concepts and principles of C++ programming language;
  • To design, code, test, and debug a computer program using the C++ programming language;
  • To demonstrate an understanding of primitive data types, values, operators and expressions in C/C++;
  • Manage and manipulate files in C++;
  • Deliver a full working project collaboratively;
"},{"location":"intro/#schedule","title":"Schedule","text":"

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

Relevant dates for the Fall 2023 semester:

  • 09-13 Oct 2023 - Midterms Week
  • 20-24 Nov 2023 - Thanksgiving Break
  • 11-15 Dec 2023 - Finals Week
Week Date Topic 1 2023/08/28 1. Introduction, 2. Tools for first Program 2 2023/09/04 Data Types, Arithmetic Operations, Type conversion 3 2023/09/11 Conditionals, Boolean and Bitwise Operations 4 2023/09/18 Loops, for, while, goto and debugging 5 2023/09/25 Functions, Base Conversion, Pointers, Reference 6 2023/10/02 Streams, File IO 7 2023/10/09 Midterm 8 2023/10/16 Arrays, Vectors, String 9 2023/10/23 Recursion 10 2023/10/30 Sorting 11 2023/11/06 Structs, Unions, Enumerations 12 2023/11/13 Work sessions 13 2023/11/20 Thanks giving week 14 2023/11/27 Work sessions / Review 15 2023/12/04 Review / Presentations 16 2023/12/11 Finals"},{"location":"intro/#references","title":"References","text":"

10th edition Gaddis, T. (2020) Starting out with C++. Early objects / Tony Gaddis, Judy Walters, Godfrey Muganda. Pearson Education, Inc. Available at: https://research-ebsco-com.cobalt.champlain.edu/linkprocessor/plink?id=047f7203-3c9c-399b-834f-42cdaac4c1da

9th edition Gaddis, T. (2017) Starting out with C++. Early objects / Tony Gaddis, Judy Walters, Godfrey Muganda. Pearson. Available at: https://discovery-ebsco-com.cobalt.champlain.edu/linkprocessor/plink?id=502e29d6-3b46-38ff-9dc2-65e79c81c29b

  • C++ early objects. Amazon (Champlain: 9th 10th)
  • Modern C++ Programming
  • learncpp
  • cpluslus
  • cprogramming
  • programming-books
  • google style guide
  • riptutorial
  • cpp manual
  • cpp core guidelines
  • rooksguide
  • cpp best practices
"},{"location":"intro/01-introduction/","title":"Reasons why you should learn how to program with C++","text":"

Before we start, this repository aims to be practical, and I highly incentive you to look for other references. I want to add this another awesome repository it holds an awesome compilation of modern C++ concepts.

Another relevant reference for what we are going to cover is the updated core guidelines that explain why some syntax or style is bad and what you should be doing instead.

"},{"location":"intro/01-introduction/#why","title":"Why?","text":"

The first thing when you think of becoming a programmer is HOW DO I START? Well, C++ is one of the best programming languages to give you insights into how a computer works. Through the process of learning how to code C++, you will learn not only how to use this language as a tool to solve your problems, but the farther you go, the more you will start uncovering and exploring exciting computer concepts.

C++ gives you the simplicity of C and adds a lot of steroids. It delivers lots of quality-of-life stuff, increasing the developer experience. Let\u2019s compare C with C++, shall we?

  1. The iconic book \"The C Programming Language\" by Brian W. Kernighan and Dennis M. Ritchie has only 263 pages. Pretty simple, huh?
  2. The book \"C++ How to Program\" by Harvey and Paul Deitel It holds around 1000 pages, and the pages are way bigger than the other one.

So, don\u2019t worry, you just need to learn the basics first, and all the rest are somehow advanced concepts. I will do my best to keep you focused on what is relevant to each moment of your learning journey.

Without further ado. Get in the car!

"},{"location":"intro/01-introduction/#speed-matters","title":"Speed Matters","text":"

A LOT. Period. C++ is one of the closest intelligible programming languages before reaching the level of machine code, as known as Assembly Language. If you code in machine code, you obviously will code precisely what you want the machine to do, but this task is too painful to be the de-facto standard of coding. So we need something more straightforward and more human-readable. So C++ lies in this exact area of being close to assembly language and still able to be \"easily\" understandable. Note the quotes, they are there because it might not be that easy when you compare its syntax to other languages, C++ has to obey some constraints to keep the generated binary fast as a mad horse while trying to be easier than assembly. Remember, it can always get worse.

The main philosophy that guides C++ is the \"Zero-cost abstractions\", and it is the main reason why C++ is so fast. It means that the language does not add any overhead to assembly. So, if someone proposes a new core feature as a Technical specification, it should pass through this filter. And it is a very high bar to pass. I am looking at you, ts reflection, everyone I know that want to make games, ask for this feature, but it is not there yet.

"},{"location":"intro/01-introduction/#why-does-speed-matter","title":"Why does speed matter?","text":"

Mainly because we don\u2019t want to waste time. Right? But it has more impactful consequences. Let\u2019s think a bit more, you probably have a smartphone, and it lives only while it has enough energy on its battery. So, if you are a lazy mobile developer and do not want to learn how to do code efficiently, you will make your app drain more energy from the battery just by making the user wait for the task to be finished or by doing lots of unnecessary calculations! You will be the reason the user has not enough power to use their phones up to the end of the day. In fact, you will be punishing your user by using your app. You don\u2019t want that, right? So let\u2019s learn how to code appropriately. For the sake of the argument, worse than that, a lazy blockchain smart contract developer will make their users pay more for extra gas fee usage for the extra inefficient CPU cycles.

"},{"location":"intro/01-introduction/#language-benchmarks","title":"Language benchmarks","text":"

I don\u2019t want to point fingers at languages, but, hey, excuse me, python, are you listening to me, python? Python? Please answer! reference cpp vs python. Nevermind. It is still trying to figure things out. Ah! Hey ruby, don\u2019t be shy, I know you look gorgeous, and I admire you a lot, but can you dress up faster and be ready to run anytime soon?

You don\u2019t need makeup to run fast. That\u2019s the idea. If the language does lots of fancy stuff, it won\u2019t be extracting the juicy power of the CPU.

So let\u2019s first clarify some concepts for a fair comparison. Some languages do not generate binaries that run in your CPU. Some of them run on top of a virtual machine. The Virtual Machine(VM) is a piece of software that, in runtime, translates the bytecode or even compiles source code to something the CPU can understand. It\u2019s like an old car; some of them will make you wait for the ignition or even get warm enough to run fast. I am looking at you Java and JavaScript. It is a funny concept, I admit, but you can see here that the ones that run on top of a translation device would never run as fast as a compiled binary ready to run on the CPU.

So let\u2019s bring some ideas from my own experience, and I invite you to test by yourself. Just search for \"programming languages benchmark\" on your preferred search engine or go here.

I don\u2019t want to start a flame-war. Those numbers might be wrong, but the overall idea is correct. Assuming C++ does not add much overhead to your native binary, let\u2019s set the speed to run as 1x. Java would be around 1.4x slower, and JavaScript is 1.6x, python 40x, and ruby 100x. The only good competitor in the house is Rust because its compiled code runs straight on the CPU efficiently with lots of quality-of-life additions. Rust gives almost similar results if you do not play around with memory-intensive problems. Another honorable mention is WASM - Web Assembly, although it is a bytecode for a virtual machine, many programming languages are able to target it(compile for it), it is becoming blazing fast and it is getting traction nowadays, keep tuned.

"},{"location":"intro/01-introduction/#who-should-learn-c","title":"Who should learn C++","text":"

YOU! Yes, seriously, I don\u2019t know you, but I am pretty sure you should know how to code in any language. C++ can be challenging, it is a fact, but if you dare to challenge yourself to learn it, your life will be somewhat better.

Let\u2019s cut to the bullets:

  1. The ones who seek to build efficient modules for mobile apps, such as the video/image processing unit;
  2. Game developers. Even the gameplay developers that usually only script things should know how to ride a horse(CPU) fast;
  3. Researchers looking to not waste time by coding inefficient code and wait hours, even days, to see the result of their calculations. They should reduce the costs of renting CPU clusters;
  4. Computer scientists are those who should know how a computer works. After all, C++ is one of the preferred programming languages that unlocks all the power of the CPU;
  5. Engineers, in general, should know how to simulate things efficiently;
"},{"location":"intro/01-introduction/#how-do-machines-run-code","title":"How do machines run code?","text":"

The first thing is: the CPU does not understand any programming language, only binary instructions. So you have to convert your code into something the machine can understand. This is the job of the compiler. A compiler is a piece of software that reads a text file written following the rules of a programming language and essentially converts it into binary instructions that the CPU can execute. There are many strategies and many ways of doing it. So, given its nature of being near assembly, with C++, you will control precisely what instructions the CPU will run.

But, there is a catch here: for each CPU, you will need a compiler for that instruction set. Ex.: the compiler GCC can generate an executable program for ARM processors, and the generated program won\u2019t work on x86 processors; In the same way, an x64 executable won\u2019t work on an x86; you need to match the binary instructions generated by the compiler with the same instruction set available on the target CPU you want to run it. Some compilers can cross-compile: the compiler runs in your machine on your CPU with its instruction set, but the binary generated only runs on a target machine with its own instruction set.

graph TD\n    START((Start))-->\n    |Source Code|PreProcessor-->\n    |Pre-processed Code|Compiler-->\n    |Target Assembly Code|Assembler-->\n    |Relacable Machine Code|Linker-->\n    |Executable Machine Code|Loader-->\n    |Operation System|Memory-->\n    |CPU|RUN((Run))
"},{"location":"intro/01-introduction/#program-life-cycle","title":"Program Life Cycle","text":"

Software development is complex and there is lots of styles, philosophies and standard, but the overall structure looks like this:

  1. Analysis, Specification, Problem definition
  2. Design of the Software (pseudocode/algorithm, flowchart), Problem analysis
  3. Implementation / Coding
  4. Testing and Debugging - In TDD(Test Driven Development) we write the tests first.
  5. Maintenance - Analytics and Improvements
  6. End of Life
"},{"location":"intro/01-introduction/#pseudocode","title":"Pseudocode","text":"

Pseudocode is a way of expressing algorithms using a combination of natural language and programming constructs. It is not a programming language and cannot be compiled or executed, but it provides a clear and concise way to describe the steps of an algorithm. Here is an example of pseudocode that describes the process of finding the maximum value in a list of numbers:

set maxValue to 0\nfor each number in the list of numbers\n  if number is greater than maxValue\n    set maxValue to number\noutput maxValue\n

Pseudocode is often used as a planning tool for programmers and can help to clarify the logic of a program before it is written in a specific programming language. It can also be used to communicate algorithms to people who are not familiar with a particular programming language. Reference

"},{"location":"intro/01-introduction/#flowcharts","title":"Flowcharts","text":"

A flowchart is a graphical representation of a process or system that shows the steps or events in a sequential order. It is a useful tool for demonstrating how a process works, identifying potential bottlenecks or inefficiencies in a process, and for communicating the steps involved in a process to others.

Flowcharts are typically composed of a series of boxes or shapes, connected by arrows, that represent the steps in a process. Each box or shape usually contains a brief description of the step or event it represents. The arrows show the flow or movement from one step to the next.

Flowcharts can be used in a variety of settings, including business, engineering, and software development. They are particularly useful for demonstrating how a process works, identifying potential issues or bottlenecks in the process, and for communicating the steps involved in a process to others.

There are many symbols and notations that can be used to create flowcharts, and different organizations and industries may have their own standards or conventions for using these symbols. Some common symbols and notations used in flowcharts include:

  1. Start and end symbols: These are used to indicate the beginning and end of a process.
  2. Process symbols: These are used to represent the various steps or events in a process.
  3. Decision symbols: These are used to represent a decision point in a process, where the flow of the process depends on the outcome of a decision.
  4. Connector symbols: These are used to connect the various symbols in a flowchart, showing the flow or movement from one step to the next.
  5. Annotation symbols: These are used to add additional information or notes to a flowchart.

By using a combination of these symbols and notations, you can create a clear and concise flowchart that effectively communicates the steps involved in a process or system. Reference

I suggest using the tool Code2Flow to write pseudocode and see the flowchart drawn in real time. But you can draw them on Diagrams. If you are into sequence diagrams, I suggest using sequencediagram.org.

"},{"location":"intro/01-introduction/#practice","title":"Practice","text":"

Try to think ahead the problem definition by questioning yourself before expressing the algorithm as pseudocode or flowchart: - What are the inputs? - What is a valid input? - How to compute the math? - What is the output? - How many decimals is needed to express the result?

Use diagrams to draw a flowchart or use Code2Flow to write a working pseudocode to: 1. Compute the weighted average of two numbers. The first number has weight of 1 and the second has weight of 3; 2. Area of a circle; 3. Compute GPA; 4. Factorial number;

"},{"location":"intro/01-introduction/#glossary","title":"Glossary","text":"

It is expected for you to know superficially these terms and concepts. Research about them. It is not strictly required, because we are going to cover them in class.

  • CPU
  • GPU
  • ALU
  • Main Memory
  • Secondary Memory
  • Programming Language
  • Compiler
  • Linker
  • Assembler
  • Pseudocode
  • Algorithms
  • Flowchart
"},{"location":"intro/01-introduction/#activities","title":"Activities","text":"
  1. Sign up on beecrowd. If you are a enrolled student, look for the key in canvas to be assigned to the coding assignments.
  2. https://blockly.games/maze - test your ability to solve small problems via block programming
  3. https://codecombat.com/ - very interesting game
  4. https://scratch.mit.edu/ - start a project and make it say hello when you click on it
"},{"location":"intro/01-introduction/#troubleshooting","title":"Troubleshooting","text":"

If you have problems here, start a discussion this is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me.

"},{"location":"intro/02-tooling/","title":"Tools for C++ development","text":"

Opinion

This list is a mix of standard tools and personal choice. It is a good starting point, but in the future you will be impacted by other options, just keep your mind open to new choices.

  • Version Control
    • GIT
    • Github
    • GitKraken
  • Compiler
  • CMake

Every programing language use different set of tools in order to effectively code. In C++ you will need to learn how to use a bunch of them to solve problems and develop software.

"},{"location":"intro/02-tooling/#version-control","title":"Version Control","text":"

Version control are tools that help you to keep track of your code changes. It is a must have tool for any developer. You can keep track the state of your code, and if you mess up something, you can go back to a previous state. It is also a great tool to collaborate with other developers. You can work on the same codebase without messing up each other work.

"},{"location":"intro/02-tooling/#git","title":"GIT","text":"

Optional

Install Git

Git is a version control system that is used to track changes to files, including source code, documents, and other types of files. It allows multiple people to work on the same files concurrently, and it keeps track of all changes made to the files, making it easy to go back to previous versions or merge changes made by different people. Git is widely used by developers for managing source code, but it can be used to track changes to any type of file. It is particularly useful for coordinating work on projects that involve multiple people, as it allows everyone to see and track changes made by others.

"},{"location":"intro/02-tooling/#github","title":"Github","text":"

Action

Github Student Pack

Github is a web-based platform for version control and collaboration on software projects. It is a popular platform for developers to share and collaborate on code, as well as to track and manage software development projects. GitHub provides version control using Git, a version control system that allows developers to track changes to their codebase and collaborate with other developers on the same codebase. It also includes a range of features such as bug tracking, project management, and team communication tools. In addition to being a platform for software development, GitHub is also a community of developers and a marketplace for buying and selling software development services.

In this course we are going to extensively use GITHUB functionalities. So create an account now with your personal account. Use a meaningful username. Avoid names that hard to associate with you. If you have a educational email or student id, apply for the Github Student Pack, so you will have access to lots of free tools.

It is nice to have git in your machine, but it is not required, because we are going to use gui via gui tools. See GitKraken below.

"},{"location":"intro/02-tooling/#gitkraken","title":"GitKraken","text":"

Action

Install Gitkraken

GitKraken is a Git client for Windows, Mac, and Linux that provides a graphical interface for working with Git repositories. It allows users to manage Git repositories, create and review changes to code, and collaborate with other developers. Some features of GitKraken include a visual representation of the repository's commit history, the ability to stage and discard changes, and support for popular version control systems like GitHub and GitLab. GitKraken is designed to be user-friendly and to make it easier for developers to work with Git, particularly for those who may be new to version control systems.

Gitkraken is a paid software, and it is free for public repositories, but you can have all enterprise and premium functionalities enabled for free with the student pack and described before.

Install Gitkraken. If you login into gitkraken using GitHub with student pack it will unlock all pro features.

"},{"location":"intro/02-tooling/#compiler","title":"Compiler","text":"

A compiler is a type of computer program that translates source code into machine instructions that can be run or the CPU or interpreted in a Virtual Machine.

graph TD\n  SRC[Source Code] --> |Assembly| OBJ[Machine Code];\n  OBJ --> EXE[Executable];\n  OBJ --> LIB[Library];
  • Source Code in C++, is associated to two different type of textual file extensions: .cpp for sources and .h for header files. It is what the developer writes.
  • Assembly is a human readable representation of the Machine Code. It is not the Machine Code itself, but it is a representation of it. It is a way to make the Machine Code human readable.
  • Machine Code is what the CPU can run and understand. It is a sequence of 0 and 1 that the CPU can understand and execute. It is not human readable.
  • Executable is the result of the compilation process. It is a file that can be executed by the Operating System.
  • Library is a collection of Machine Code that can be used by other programs.
  • Executable and Library Are binary file that contains the Machine Code instructions that the CPU can execute.

Note

In compiled languages, the end user only receives the executables and libraries. The source code is not distributed.

Here you can see briefly a small function to square a number in C++ compiled via GCC into a x86-64 assembly. The left side is the Source Code and the right side is the code compiled into a human-readble Assembly. This code still needs links to the Operation System in order to be executed.

"},{"location":"intro/02-tooling/#notes-on-virtual-machines-vm","title":"Notes on Virtual Machines (VM)","text":"

Tip

The knowledge of this section is not required for this course, but it is good to know.

Some languages such as Java, C# and others, compile the Source Code into bytecode that runs on top of an abstraction layer called Virtual Machine (VM). The VM is a software that runs on top of the Operating System and it is responsible to translate the bytecode into Machine Code that the CPU can understand. This is a way to make the Source Code portable across different Operating Systems and CPU architectures - cross-platform. But this abstraction layer has it cost and it is not as efficient as the Machine Code itself.

To speed up the execution, some VM can Just In Time (JIT) compile the bytecode into Machine Code at runtime when the VM detects parts of Source Code is running a lot(Hotspots), to speed up the execution. When this optmization step is happening, the machine is warming up.

graph TD\n  SRC[Source Code] --> |Compiles| BYT[Bytecode];\n  BYT --> |JIT Compiler| CPU[Machine Code];

Note

In languages that uses VMs, the end user receives the bytecode. The source code is not distributed.

"},{"location":"intro/02-tooling/#notes-on-interpreters","title":"Notes on Interpreters","text":"

Tip

The knowledge of this section is not required for this course, but it is good to know.

Some languages such as Python, Javascript and others, do not compile the Source Code, instead, they run on top a program called Interpreter that reads the Source Code and executes it line by line.

graph TD\n  SRC[Source Code] --> |read line| INT[Interpreter];\n  INT --> |translates| CPU[Machine Code];

Some Interpreters are Ahead Of Time (AOT) and they compile the Source Code into Machine Code before the Source Code is executed.

graph TD\n  SRC[Source Code] --> |AoT compile| INT[Bytecode / Machine Code];\n  INT --> CPU;

Note

In intrepreted languages, the end user receives the source code. Sometimes the source code is obfuscated, but it is still readable.

"},{"location":"intro/02-tooling/#platform-specific","title":"Platform specific","text":"

This where things get tricky, C++ compiles the code into a binary that runs directly on the processor and interacts with the operating system. So we can have multiple combinations here. Most compilers are cross-platform, but there is exceptions. And to worsen it, some Compilers are tightly coupled with some IDEs(see below, next item).

I personally prefer to use CLang to be my target because it is the one that is most reliable cross-platform compiler. Which means the code will work as expected in most of the scenarios, the feature support table is the same across all platforms. But GCC is the more bleeding edge, which means usually it is the first to support all new fancy features C++ introduces.

No need to download anything here. We are going to use the CLion IDE. See below topics.

"},{"location":"intro/02-tooling/#cmake","title":"CMake","text":"

CMake CMake is a cross-platform free and open-source software tool for managing the build process of software using a compiler-independent method. It is designed to support directory hierarchies and applications that depend on multiple libraries. It is used to control the software compilation process using simple platform and compiler independent configuration files, and generate native makefiles and workspaces that can be used in the compiler environment of your choice.

Note

If you use a good IDE(see next topic), you won't need to download anything here.

CMake is typically used in conjunction with native build environments such as Make, Ninja, or Visual Studio. It can also generate project files for IDEs such as Xcode and Visual Studio. You can see a full list of supported generators here.

Here is a simple example of a CMakeLists.txt file that can be used to build a program called \"myproject\" that consists of a single source file called \"main.cpp\":

# Set minimum version of CMake that can be used\ncmake_minimum_required(VERSION 3.10)\n# Set the project name\nproject(myproject)\n# Add executable named \"myproject\" to be built from the source \"main.cpp\"\nadd_executable(myproject main.cpp)\n

Warning

Every executable can only cave one main function. Each file with a main function describes a new executable program. If you want to have multiple executables in the same project, in other words, you want to manage multiple executables in the same place, you can change the cmake descriptor to match that as follows, and use your IDE to switch between them:

cmake_minimum_required(VERSION 3.10)\nproject(myproject)\nadd_executable(myexecutable1 main1.cpp)\nadd_executable(myexecutable2 main2.cpp)\n

Tip

If you are using a nice IDE, you won't need to run this on the command line. So go to next topic.

If you want to build via command line this project, you would first generate a build directory, and then run CMake to build the files using the detected compiler or IDE:

cmake -S. -Bbuild\ncmake --build build -j20\n

This will create a Makefile or a Visual Studio solution file in the build directory, depending on your platform and compiler. You can then use the native build tools to build the project by running \"make\" or opening the solution file in Visual Studio.

CMake provides many options and variables that can be used to customize the build process, such as setting compiler flags, specifying dependencies, and configuring installation targets. You can learn more about CMake by reading the documentation at https://cmake.org/.

"},{"location":"intro/02-tooling/#ide","title":"IDE","text":"

An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE typically integrates a source code editor, build automation tools, and a debugger. Some IDEs also include additional tools, such as a version control system, a class browser, and a support for literate programming. IDEs are designed to maximize programmer productivity by providing tight-knit components with similar user interfaces. This can be achieved through features such as auto-complete, syntax highlighting, and code refactoring. Many IDEs also provide a code debugger, which allows the programmer to step through code execution and find and fix errors. Some examples of popular IDEs include Eclipse, NetBeans, Visual Studio, and Xcode. Each of these IDEs has its own set of features and capabilities, and developers may choose one based on their specific needs and preferences.

In this course, it is strongly suggested to use an IDE in order to achieve higher quality of deliveries, a good IDE effectively flatten the C++ learning curve. You can opt out and use everything by hand, of course, and it will deepen your knowledge on how things work but be assured it can slow down your learning process. Given this course is result oriented, it is not recommended to not use an IDE here. So use one.

OPINION: The most pervasive C++ IDE is CLion and this the one I am going to use. If you use it too, it would be easier to follow my recorded videos. It works on all platforms Windows, Linux and Mac. I recommend downloading it via Jetbrains Toolbox. If you are a student, apply for student pack for free here. On Windows, CLion embeds a GCC compiler or optionally can use visual studio, while on Macs it requires the xcode command line tools, and on Linux, uses GCC from the system installation.

The other options I suggest are:

"},{"location":"intro/02-tooling/#on-all-platforms","title":"On all platforms","text":"

REPLIT - an online and real-time multiplayer IDE. It is slow and lack many functionalities, but can be used for small scoped activities or work with a friend.

VSCode - a small and highly modularized code editor, it have lots of extensions, but it can be complex to set up everything needed: git, cmake, compiler and other stuff.

"},{"location":"intro/02-tooling/#on-windows","title":"On Windows:","text":"

Visual Studio - mostly for Windows. When installing, mark C++ development AND search and install additional tools \"CMake\". Otherwise, this repo won't work smoothly for you.

DevC++ - an outdated and small IDE. Lacks lots of functionalities, but if you don't have HD space or use an old machine, this can be your option. In long term, this choice would be bad for you for the lack of functionalities. It is better to use REPLIT than this tool, in my opinion.

"},{"location":"intro/02-tooling/#on-osx","title":"On OSX","text":"

XCode - for OSX and Apple devices. It is required at least to have the Command Line Tools. CLion on Macs depends on that.

Xcode Command Line Tools is a small suite of software development tools that are installed on your Mac along with Xcode. These tools include the GCC compiler, which is used to compile C and C++ programs, as well as other tools such as Make and GDB, which are used for debugging and development. The Xcode Command Line Tools are necessary for working with projects from the command line, as well as for using certain software development tools such as Homebrew.

To install the Xcode Command Line Tools, you need to have Xcode installed on your Mac. To check if Xcode is already installed, open a Terminal window and type:

xcode-select -p

If Xcode is already installed, this command will print the path to the Xcode developer directory. If Xcode is not installed, you will see a message saying \"xcode-select: error: command line tools are not installed, use xcode-select --install to install.\"

To install the Xcode Command Line Tools, open a Terminal window and type:

xcode-select --install

This will open a window that prompts you to install the Xcode Command Line Tools. Follow the prompts to complete the installation.

Once the Xcode Command Line Tools are installed, you can use them from the command line by typing commands such as gcc, make, and gdb. You can also use them to install and manage software packages with tools like Homebrew.

"},{"location":"intro/02-tooling/#on-linux","title":"On Linux","text":"

If you are using Linux, you know the drill. No need for further explanations here, you are ahead of the others.

If you are using an Ubuntu distro, you can try this to install most of the tools you will need here:

  sudo apt-get update && sudo apt-get install -y build-essential git cmake lcov xcb libx11-dev libx11-xcb-dev libxcb-randr0-dev\n

In order to compile:

g++ inputFile.cpp -o executableName\n

Where g++ is the compiler frontend program to compile your C++ source code; inputFile.cpp is the filename you want to compile, you can pass multiple files here separated by spaces ex.: inputFile1.cpp inputFile2.cpp; -o means the next text will be the output program name where the executable will be built, (for windows, the name should end with .exe ex.: program.exe).

You will have a plethora of editors and IDEs. The one I can suggest is the VSCode, Code::Blocks or KDevelop. But I really prefer CLion.

"},{"location":"intro/02-tooling/#clion-project-workflow-with-cmake","title":"CLion project workflow with CMake","text":"

When you create a new project, select New C++ Executable, set the C++ Standard to the newest one, C++20 is enough, and place in a folder location where you prefer.

CLion automatically generate 2 files for you. - CMakeLists.txt is the CMake multiplatform project descriptor, with that, you can share your project with colleagues that are using different platforms than you. - main.cpp is the entry point for your code.

It is not the moment to talk about multiple file projects, but if you want to get ready for it, you will have to edit the CMakeLists.txt file and add them in the add_executable function.

"},{"location":"intro/02-tooling/#hello-world","title":"Hello World","text":"

Hello World

// this a single line comment and it is not compiled. comments are used to explain the code.\n// you can do single line comment by adding // in front of the line or\n// you can do multi line comments by wrapping your comment in /* and */ such as: /* insert comment here */\n/* this is\n * a multi line\n * comment\n */\n#include <iostream> // this includes an external library used to deal with console input and output\n\nusing namespace std; // we declare that we are going to use the namespace std of the library we just included \n\n// \"int\" means it should return an integer number in the end of its execution to communicate if it finished properly\n// \"main()\" function where the operating system will look for starting the code.\n// \"()\" empty parameters. this main function here needs no parameter to execute\n// anynthing between { and } is considered a scope. \n// everything stack allocated in this scope will be deallocated in the end of the scope. ex.: local variables. \nint main() {\n    /* \"cout\" means console output. Print to the console the content of what is passed after the \n     * \"<<\" stream operator. Streams what in the wright side of it to the cout object\n     * \"endl\" means end line. Append a new line to the stream, in the case, console output.\n     */\n    cout << \"Hello World\" << endl;\n\n    /* tells the operating system the program finished without errors. Any number different from that is considered \n     * a error code or error number.\n     */\n    return 0; \n}\n

"},{"location":"intro/02-tooling/#hello-username","title":"Hello Username","text":"
#include <iostream>\n#include <string> // structure to deal with a char sequence, it is called string\nusing namespace std;\nint main(){\n    // invites the user to write something\n    cout << \"Type your name: \" << endl;\n\n    /* * string means the type of the variable, this definition came from the string include\n     * username means the name of the variable, the container to hold and store the data\n     */\n    string username;\n    /*\n     * cin mean console input. It captures data from the console.\n     * note the opposite direction of the stream operator. it streams what come from the cin object to the variable.\n     */\n    cin >> username;\n    // example of how to stream and concatenate texts to the console output;\n    cout << \"Hello \" << username << endl;\n}\n
"},{"location":"intro/02-tooling/#common-bugs","title":"Common Bugs","text":"First documented bug found in 1945"},{"location":"intro/02-tooling/#1-syntax-error","title":"1. Syntax error","text":"

Syntax errors in C++ are usually caused by mistakes in the source code that prevent the compiler from being able to understand it. Some common causes of syntax errors include: 1. Omitting a required component of a statement, such as a semicolon at the end of a line or a closing curly brace. 2. Using incorrect capitalization or spelling in a keyword or identifier. 3. Using the wrong punctuation, such as using a comma instead of a semicolon. 4. Mixing up the order of operations, such as using an operator that expects two operands before the operands have been provided.

To fix a syntax error, you will need to locate the source of the error and correct it in the code. This can often be a challenging task, as syntax errors can be caused by a variety of factors, and it is not always immediately clear what the problem is. However, there are a few tools that can help you locate and fix syntax errors in your C++ code: 1. A compiler error message: When you try to compile your code, the compiler will often provide an error message that can help you locate the source of the syntax error. These error messages can be somewhat cryptic, but they usually include the line number and a brief description of the problem. 2. A text editor with syntax highlighting: Many text editors, such as Visual Studio or Eclipse, include syntax highlighting, which can help you identify syntax errors by coloring different parts of the code differently. For example, keywords may be highlighted in blue, while variables may be highlighted in green. 3. A debugger: A debugger is a tool that allows you to step through your code line by line, examining the values of variables and the state of the program at each step. This can be a very useful tool for tracking down syntax errors, as it allows you to see exactly where the error occurs and what caused it.

Reference

"},{"location":"intro/02-tooling/#2-logic-error","title":"2. Logic Error","text":"

A logic error in C++ is an error that occurs when the code produces unintended results or behaves in unexpected ways due to a mistake in the logic of the program. This type of error is usually caused by a coding mistake, such as using the wrong operator, omitting a necessary statement, or using the wrong variable. Here are some common causes of logic errors in C++:

  • Incorrect use of conditional statements (e.g., using the wrong comparison operator or forgetting to include a necessary else clause)
  • Mistakenly using the assignment operator (=) instead of the equality operator (==) in a conditional statement
  • Omitting a necessary loop iteration or failing to terminate a loop at the appropriate time
  • Using the wrong variable or array index
  • Incorrectly calling a function or passing the wrong arguments to a function

To fix a logic error in C++, you will need to carefully examine your code and identify the mistake. It may be helpful to use a debugger to step through your code and see how it is executing, or to add print statements to help you understand what is happening at each step.

Reference

"},{"location":"intro/02-tooling/#3-run-time-error","title":"3. Run-time error","text":"

A runtime error in C++ means that there is an error in your program that is causing it to behave unexpectedly or crash during runtime, i.e., after you have compiled and run the program. There are many possible causes of runtime errors in C++, including:

  • Dereferencing a null pointer
  • Accessing an array out of bounds
  • Using an uninitialized variable
  • Trying to divide by zero
  • Attempting to use an object that has been deleted or has gone out of scope

To troubleshoot a runtime error, you'll need to identify the source of the error by examining the error message and the code that is causing the error. Some common tools and techniques you can use to troubleshoot runtime errors include:

  • Using a debugger to step through your code line by line
  • Printing out the values of variables to see where the error might be occurring
  • Adding additional debug statements or logging to your code to help identify the source of the error

It's also a good idea to ensure that you have compiled your code with debugging symbols enabled, as this will allow you to use the debugger to get a better understanding of what is happening in your code. will cause the program to crash during run-time

Reference

"},{"location":"intro/02-tooling/#exercises","title":"Exercises:","text":"
  • Research and read about other notable errors: segmentation fault, stack overflow, buffer overflow.
  • Hello World - just print hello world.
"},{"location":"intro/02-tooling/#homework","title":"Homework","text":"
  1. Setup your environment for your needs following the choices given above. If you are unsure, use CLion and you will be mostly safe.
  2. Fork this repo privately. You will have to do your assignments there. Go to the home repo and hit fork.
  3. Clone this repo to your machine. gitkraken + github gitkraken clone gitkraken big tutorial
  4. Make sure the CMake option \"ENABLE_INTRO\" is set as ON in CMakeLists.txt file in the root directory in order to see and enable all activities.
  5. (enrolled students) If you are enrolled in a class with me, share your repo with me, so I can track your evolution. And do the activities described there.
  6. (optional) star this repo :-)
"},{"location":"intro/02-tooling/#troubleshooting","title":"Troubleshooting","text":"

If you have problems here, start a discussion this is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me.

"},{"location":"intro/03-datatypes/","title":"Variables, Data Types, Expressions, Assignment, Formatting","text":""},{"location":"intro/03-datatypes/#variables","title":"Variables","text":"

Variables are containers to store information and facilitates data manipulation. They are named and typed. Detailed Reference

Container sizes are measured in Bytes. Bytes are the smallest addressable unit in a computer. Each byte is composed by 8 bits. Each bit can be 1 or 0 (true or false). If one byte have 8 bits and each bit one can hold 2 different values, the combination of all possible cases that a byte can be is 2^8 which is 256, so one byte can hold up to 256 different states or possibilities.

"},{"location":"intro/03-datatypes/#data-types","title":"Data Types","text":"

There are several types of variables in C++, including:

  • Primitive data types: These are the most basic data types in C++ and include integer, floating-point, character, and boolean types.
  • Derived data types: These data types are derived from the primitive data types and include arrays, pointers, and references.
  • User-defined data types: These data types are defined by the programmer and include structures, classes, and enumerations.

Detailed Reference

"},{"location":"intro/03-datatypes/#numeric-types","title":"Numeric types","text":"

There are some basic integer container types with different sizes. It can have some type modifiers to change the default behavior or the type.

The common size of the integer containers are 1(char), 2(short int), 4(int) or 8(long long) bytes. For a more detailed coverage read this.

Note

But the only guarantee the C++ imposes is: 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long) and it can result in compiler defined behaviours where a char can have 8 bytes and a long long can be 1 byte.

Note

If you care about being cross-platform conformant, you have to always specify the sign modifier or use a more descriptive type such as listed here.

For floating pointing numbers, the container size can be 4(float), 8(double), 10(deprecated) or 16(long double) bytes.

The sign modifiers can be signed and unsigned and are applicable only for integer types.

The default behavior of the types in a x86 cpu are as signed numbers and the first bit of the container is the signal. If the first bit is 0, it means it is positive. If the first bit is 1, it means it is negative. More details.

Which means that if the container follow two complement and is the size of 1 byte(8 bits), it have 1 bit for the signal and 7 bit for the content. So this number goes from -128 up to 127, this container is typically a signed char. The positive size has 1 less quantity in absolute than the negative because 0 is represented in positive side. There are 256 numbers between -128 and 127 inclusive.

"},{"location":"intro/03-datatypes/#char","title":"Char","text":"

A standard char type uses 1 byte to store data and follows complement of 1. Going -127 to 127, so tipically represents 255 numbers.

A signed char follows complement of 2 and it can represent 2^8 or 256 different numbers. By default, in x86 machine char is signed and the represented numbers can go from -2^7 or -128 up to 2^7 - 1 or 127.

An unsigned char

Chars can be used to represent letters following the ascii table where each value means a specific letter, digit or symbol.

Note

A char can have different sizes to represent different character coding for different languages. If you are using hebrew, chinese, or others, you probably will need more than 1 byte to represent the chars. Use char8_t (UTF8), char16_t(UTF16) or char36_t(UTF32), to cover your character encoding for the language you are using.

"},{"location":"intro/03-datatypes/#ascii-table","title":"ASCII table","text":"

ASCII - American Standard Code for Information Interchange - maps a number to a character. It is used to represent letters, digits and symbols. It is a standard that is used by most of the computers in the world.

It is a 7 bit table, so it can represent 2^7 or 128 different characters. The first 32 characters are control characters and the rest are printable characters. Reference. There are other tables that extend the ASCII table to 8 bits, or even 16 bits.

The printable chacacters starts at number 32 and goes up to 126. The first 32 characters are control characters and the rest are printable.

ASCII Table

As you can imagine, this table is not enough to represent all the characters in the world(latin, chinese, japanese, etc). So there are other tables that extend the ASCII table to 8 bits, or even 16 bits.

"},{"location":"intro/03-datatypes/#integer","title":"Integer","text":"

Note

Most of the information that I am covering here might be not precise, but the overall idea is correct. If you want a deep dive, read this.

A standard int type uses 4 bytes to store data. It is signed by default.

It can represent 2^32 or 4294967296 different numbers. As a signed type, it can represent numbers from -2^31 or -2147483648 up to 2^31 - 1 or 2147483647.

The type int can accept sign modifiers as signed or unsigned to change the behavior of the first bit to act as a sign or not.

The type int can accept size modifiers as short (2 bytes) or long long (8 bytes) to change the size and representation capacity of the container. Type declaration short and short int result in the same container size of 2 bytes. In the same way a long long or long long int reserves the same size of 8 bytes for the container.

The type long or long int usually gives the same size of int as 4 bytes. Historical fact or myth: This abnormality, comes from the evolution of the definition of int: in the past, 2 bytes were enough for the majority of the scenarios in the 16 bits processors, but it frequently reached the limits of the container and it overflowed. So they changed the standard definition of a integer from being 2 bytes to 4 bytes, and created the short modifier. In this scenario the long int lost the reason to exist.

Here goes a list of valid integer types and its probable size(it depends on the implementation, cpu architecture and operation system): - Size of 2 bytes: short int, short, signed short int, signed short, unsigned short int, unsigned short, - Size of 4 bytes: signed, unsigned, int, signed int, unsigned int, long int, long, signed long int, signed long, unsigned long int, unsigned long, - Size of 8 bytes: long long int, long long, signed long long int, signed long long, unsigned long long int, unsigned long long.

OPINION: I highly recommend the usage of these types instead, to ensure determinism and consistency between compilers, operating systems and cpu architectures.

"},{"location":"intro/03-datatypes/#float-pointing","title":"Float pointing","text":"

There are 3 basic types of floating point containers: float(4 bytes) and double(8 bytes) and long double(16 bytes) to represent fractional numeric types.

The standard IEEE754 specifies how a floating point number is stored in the form of bits inside the container. The container holds 3 basic information to simulate the behavior of a fractional type inside a binary type: signal, exponent and fraction.

Note

This standard was very open to implementation definition in the past, and this is one of the root causes of non-determinism physics simulation. This is the main problem you cannot guarantee the same operation with the same pair of numbers will consistently give the same result across different types of processors and compilers, thus making the physics of a multiplayer game consistency hardly achievable. Many deterministic physics engines tend to not use this standard at all, and implement those behaviors via software on top of integers instead. There are 2 approaches to solve the floating-point determinism: softfloat that implement all the IEEE754 specifications via software, or implement some kind of fixed-point arithmetic on top of integers.

"},{"location":"intro/03-datatypes/#booleans","title":"Booleans","text":"

bool is a special type that has the container size of 1 byte but the compiler can optimize and pack up to 8 bools in one byte if they are declared in sequence.

"},{"location":"intro/03-datatypes/#enums","title":"Enums","text":"

An enumeration is a type that consists of a set of named integral constants. It can be defined using the enum keyword:

enum Color {\n  Red,\n  Green,\n  Blue\n};\n

This defines a new type called Color, which has three possible values: Red, Green, and Blue. By default, the values of these constants are 0, 1, and 2, respectively. However, you can specify your own values:

enum Color {\n  Red = 5,\n  Green,  // 6\n  Blue    // 7\n};\n

You can then use the enumeration type just like any other type:

Color favoriteColor = Red;\n

Enumerations can also have their underlying type explicitly specified:

enum class Color : char {\n  Red, \n  Green,\n  Blue\n};\n

Here, the underlying type of the enumeration is char, so the constants Red, Green, and Blue will be stored as characters(1 byte size). The enum class syntax is known as a \"scoped\" enumeration, and it is recommended over the traditional enum syntax because it helps prevent naming conflicts. See the CppCoreGuidelines to understand better why you should prefer using this.

// You can make the value of the constants\n// explicit to make your debugging easier:\nenum class Color : char {\n  Red = 'r',\n  Green = 'g',\n  Blue = 'b'\n};\n
"},{"location":"intro/03-datatypes/#special-derived-type-string","title":"Special derived type: string","text":"

string is a derived type and in order to use it, string should be included in the beginning of the file or in the header. char are the basic unit of a string and is used to store words as a sequence of chars.

In C++, a string is a sequence of characters that is stored in an object of the std::string class. The std::string class is part of the C++ Standard Library and provides a variety of functions and operators for manipulating strings.

"},{"location":"intro/03-datatypes/#void-type","title":"void type","text":"

When void type specifier is used in functions, it indicates that a function does not return a value.

It can also be used as a placeholder for a pointer to a memory location to indicate that the pointer is \"universal\" and can point to data of any type, but this can be arguably a bad pattern, and should be used exceptionally when interchanging types with c-style API.

We are going to cover this again when covering pointers and functions.

"},{"location":"intro/03-datatypes/#variable-naming","title":"Variable Naming","text":"

Variable names are called identifiers. In C++, you can use any combination of letters, digits, and underscores to name a variable, it should follow some rules:

  • Variables can have numbers, en any position, except the first character, so the name does not begin with a digit. Ex. point2 and vector2d are allowed, but 9life isn't;
  • Variable names are case-sensitive, so \"myVar\" and \"myvar\" are considered to be different variables;
  • Can have _ in any position of the identifier. Ex. _myname and user_name are allowed;
  • It is not a reserved keyword;

Keep in mind that it is a good practice to choose descriptive and meaningful names for your variables, as this can make your code easier to read and understand. Avoid using abbreviations or acronyms that may not be familiar to others who may read your code.

It is also important to note that C++ has some naming conventions that are commonly followed by programmers. For example, it is common to use camelCase or snake_case to separate words in a variable name, and to use all lowercase letters for variables that are local to a function and all uppercase letters for constants.

"},{"location":"intro/03-datatypes/#variable-declaration","title":"Variable declaration","text":"

Variable declaration in C++ follows this pattern.

TYPENAME VARIABLENAME;\n
TYPENAME can be the name of any predefined type. See Variable Types for the types. VARIABLENAME can be anything as long it follow the naming rules. See Variable Naming for the naming rules.

Note

A given variable name can only be declared once in the same context / scope. If you try to redeclare the same variable, the compiler will accuse an error.

Note

You can redeclare the same variable name in different scopes. If one scope is parent of the other, the current will be used and will shadow the content of the one from outer scope. We are going to cover this more when we are covering multi-file projects and functions.

Examples:

int a;       // integer variable\nfloat pi;    // floating-point variable\nchar c;      // character variable\nbool d;      // boolean variable\nstring name; // string variable \n

Note

We are going to cover later in this course other complex types in other modules such as arrays, pointers and references.

"},{"location":"intro/03-datatypes/#variable-assignment","title":"Variable assignment","text":"

= operator means that whatever the container have will be overwritten by the result of the right side statement. You should read it not as equal but as receives to avoid misunderstanding. Reference

int a = 10;         // integer variable\nfloat pi = 3.14;    // floating-point variable\nchar c = 'A';       // character variable\nbool d = true;      // boolean variable\nstring name = \"John Doe\"; // string variable \n

Every variable, by default, is not initialized. It means that you have to set the content of it after declaring. If the variable is read before the assignment, its content is garbage, it will read whatever is set in the memory stack for the given container location. So the best approach is to always set a value when a variable is declared or be assured that every variable is never read before an assigment.

A char variable can be assigned by integer numbers or any characters between single quotes.

char c;\nc = 'A'; // the content is 65 and the representation is A. see ascii table.\nc = 98; // the content is 98 and the representation is b. see ascii table.\n

A bool is by default either true or false, but it can be assigned by numeric value following this rule: - if the value is 0, then the value stored by the variable is false (0); - if the value is anything different than 0, the value stored is true (1);

To convert a string to a int, you have to use a function stoi(for int), stol(for long) or stoll(for long long) because both types are not compatibles.

To convert a string to a float, you have to use a function stof(for float), stod(for double), or stold(for long double) because both types are not compatibles.

"},{"location":"intro/03-datatypes/#literals","title":"Literals","text":"

Literals are values that are expressed freely in the code. Every numeric type can be appended with suffixes to specify explicitly the type to avoid undefined behaviors or compiler defined behaviors such as implicit cast or container size.

"},{"location":"intro/03-datatypes/#integer-literals","title":"Integer literals","text":"

There are 4 types of integer literals. - decimal-literal: never starts with digit 0 and followed by any decimal digit; - octal-literal: starts with 0 digit and followed by any octal digit; - hex-literal: starts with 0x or 0X and followed by any hexadecimal digit; - binary-literal: starts with 0b or 0B and followed by any binary digit;

// all of these variables holds the same value, 42, but using different bases.\n// the right side of the = are literals\nint deci = 42; \nint octa = 052; \nint hexa = 0x2a; \nint bina = 0b101010;\n

Suffixes:

  • no suffix provided: it will use the first smallest signed integer container that can hold the data starting from int;
  • u or U: it will use the first smallest unsigned integer container that can hold the data starting from unsigned int;
  • l or L: it will use the first smallest signed integer container that can hold the data starting from long;
  • lu or LU: it will use the first smallest unsigned integer container that can hold the data starting from unsigned long;
  • ll or LL: it will use the long long signed integer container long long;
  • llu or LLU: it will use the long long unsigned integer container unsigned long long;
unsigned long long l1 = 15731685574866854135ull;\n

Reference

"},{"location":"intro/03-datatypes/#float-point-literals","title":"Float point literals","text":"

There are 3 suffixes in floating point decimals.

  • no suffix means the container is a double;
  • f suffix means it is a float container;
  • l suffix means it is a long double container;

A floating point literal can be defined by 3 ways:

  • digit-sequence decimal-exponent suffix(optional).
    • 1e2 means its a double with the value of 1*10^2 or 100;
    • 1e-2f means its a float with the value of 1*10^-2 or 0.01;
  • digit-sequence . decimal-exponent(optional) suffix(optional).
    • 2. means it is a double with value of 2;
    • 2.f means it is a float with value of 2;
    • 2.1l means it is a long double with value of 2.1;
  • digit-sequence(optional) . digit-sequence decimal-exponent(optional) suffix(optional)
    • 3.1415f means it is a float with value of 3.1415;
    • .1 means it is a double with value of 0.1;
    • 0.1e1L means it is a long double with value of 1;

Reference

"},{"location":"intro/03-datatypes/#arithmetic-operations","title":"Arithmetic Operations","text":"

In C++, you can perform common arithmetic operations is statements using the following operators Reference:

  • Addition: +
  • Subtraction: -
  • Multiplication: *
  • Division: /
  • Modulus (remainder): %

There are two special cases called unary increment / decrement operators that may occur in before(prefixed) or after(postfixed) the variable name reference. If prefixed it is executed first and then return the result, if postfixed, it returns the current value and then execute the operation:

  • Increment: ++;
  • Decrement: --;

There are shorthand assignment operators reference that reassign the value of the variable after executing the arithmetic operation with the right side of the operator with the old value of the variable:

  • Addition: +=
  • Subtraction: -=
  • Multiplication: *=
  • Division: /=
  • Modulus (remainder): %=

Here is an example of how to use these operators in a C++ program:

#include <iostream>\n\nint main() {\n  int a = 5;\n  int b = 2;\n\n  std::cout << a + b << std::endl; // Outputs 7\n  std::cout << a - b << std::endl; // Outputs 3\n  std::cout << a * b << std::endl; // Outputs 10\n  std::cout << a / b << std::endl; // Outputs 2\n  std::cout << a % b << std::endl; // Outputs 1\n  a++;\n  std::cout << a << std::endl; // Outputs 6\n  a--;\n  std::cout << a << std::endl; // Outputs 5\n\n  std::cout << a++ << std::endl; // Outputs 5 because it first returns the current value and then increments.\n  std::cout << a << std::endl; // Outputs 6\n\n  std::cout << --a << std::endl; // Outputs 5 because it first decrements the value and then return it already changed;\n  std::cout << a << std::endl; // Outputs 5\n\n  b *= 2; // it is a short version of b = b * 2; \n  std::cout << b << std::endl; // Outputs 4\n\n  b /= 2; // it is a short version of b = b / 2; \n  std::cout << b << std::endl; // Outputs 2\n\n  return 0;\n}\n

Note that the division operator (/) performs integer division if both operands are integers. If either operand is a floating-point type, the division will be performed as floating-point division. So 5/2 is 2 because both are integers, se we use integer division, but 5/2. is 2.5 because the second one is a double literal.

Also, the modulus operator (%) returns the remainder of an integer division. For example, 7 % 3 is equal to 1, because 3 goes into 7 two times with a remainder of 1.

"},{"location":"intro/03-datatypes/#implicit-cast","title":"Implicit cast","text":"

Implicit casting, also known as type coercion, is the process of converting a value of one data type to another data type without the need for an explicit cast operator. In C++, this can occur when an expression involves operands of different data types and the compiler automatically converts one of the operands to the data type of the other in order to perform the operation.

For example:

int a = 1;\ndouble b = 1.5;\n\nint c = a + b; // c is automatically converted to a double before the addition\n
In this example, the value of b is a double, while the value of a is an int. When the addition operator is used, the compiler will automatically convert a to a double before performing the addition. The result of the expression is a double, so c is also automatically converted to a double before being assigned the result of the expression.

Implicit casting can also occur when assigning a value to a variable of a different data type. For example:

int a = 2;\ndouble b = a; // a is automatically converted to a double before the assignment\n

In this case, the value of a is an int, but it is being assigned to a double variable. The compiler will automatically convert the value of a to a double before making the assignment.

It's important to be aware of implicit casting, because it can sometimes lead to unexpected results or loss of precision if not handled properly. In some cases, it may be necessary to use an explicit cast operator to explicitly convert a value to a specific data type.

"},{"location":"intro/03-datatypes/#explicit-cast","title":"Explicit cast","text":"

In C++, you can use an explicit cast operator to explicitly convert a value of one data type to another. The general syntax for an explicit cast are:

// ref: https://en.wikibooks.org/wiki/C%2B%2B_Programming/Programming_Languages/C%2B%2B/Code/Statements/Variables/Type_Casting\n(TYPENAME) value; // regular c-style. do not use this extensively\nstatic_cast<TYPENAME>(value); // c++ style conversion, arguably it is the preferred style. use this if you know what you are doing.\nTYPENAME(value); // functional initialization, slower but safer. might not work for every case. Use this if you are unsure or want to be safe.\nTYPENAME{value}; // initialization style, faster, convenient, concise and arguably safer because it triggers warnings. use this for the general case. \n

For example:

int a = 7;\ndouble b = (double) a; // a is explicitly converted to a double\n

In this example, the value of a is an int, but it is being explicitly converted to a double using the explicit cast operator. The result of the cast is then assigned to the double variable b.

Explicit casts can be useful in situations where you want to ensure that a value is converted to a specific data type, regardless of the data types of the operands in an expression. However, it's important to be aware that explicit casts can also lead to unexpected results or loss of precision if not used carefully. This behaviour is called narrowing.

C-style:

int a = 20001;\nchar b = (char) a; // b is assigned the ASCII value for the character '!'\n

In this case, the value of a is an int, but it is being explicitly converted to a char using the explicit cast operator. However, the range of values that can be represented by a char is much smaller than the range of values that can be represented by an int, so the value of a is outside the range that can be represented by a char. As a result, b is assigned the ASCII value for the character 1, which is not the same as the original value of a. The value ! is 33 in ASCII table, and 33 is the result of the 20001 % 256 where 256 is the number of elements the char can represent. In this case, what happened was a bug that is hard to track called int overflow.

"},{"location":"intro/03-datatypes/#auto-keyword","title":"auto keyword","text":"

auto keyword is mostly a syntax sugar to automatically infer the data type. It is used to avoid writing the full declaration of complex types when it is easily inferred. auto is not a dynamic type, once it is inferred, it cannot be changed later like in other dynamic typed languages such as javascript.

auto i = 0; // automatically inferred as an integer type;\nauto f = 0.0f; // automatically inferred as a float type;\n\ni = \"word\"; // this won't work, because it was already inferred as an integer and integer container cannot hold string\n
"},{"location":"intro/03-datatypes/#formatting","title":"Formatting","text":"

There are many functions to help you format the output in the way it is expected, here goes a selection of the most useful ones I can think. Yon can find more functions and manipulators here and here.

To set a fixed precision for floating point numbers in C++, you can use the std::setprecision manipulator from the iomanip header, along with the std::fixed manipulator.

Here's an example of how to use these manipulators to output a floating point number with a fixed precision of 3 decimal places:

#include <iostream>\n#include <iomanip>\n\nint main() {\n  double num = 3.14159265;\n\n  std::cout << std::fixed << std::setprecision(3) << num << std::endl;\n  // Output: 3.142\n  return 0;\n}\n

You can also use the std::setw manipulator to set the minimum field width for the output, which can be useful for aligning the decimal points in a table of numbers.

For example:

#include <iostream>\n#include <iomanip>\n\nint main() {\n  double num1 = 3.14159265;\n  double num2 = 123.456789;\n\n  std::cout << std::fixed << std::setprecision(3) << std::setw(8) << num1 << std::endl;\n  std::cout << std::fixed << std::setprecision(3) << std::setw(8) << num2 << std::endl;\n  // Output:\n  //   3.142\n  // 123.457\n  return 0;\n}\n

Note that these manipulators only affect the output stream, and do not modify the values of the floating point variables themselves. If you want to store the numbers with a fixed precision, you will need to use a different method such as rounding or truncating the numbers.

To align text to the right or left in C++, you can use the setw manipulator in the iomanip header and the right or left flag. More details here

Here is an example:

#include <iostream>\n#include <iomanip>\n\nint main() {\n  std::cout << std::right << std::setw(10) << \"Apple\" << std::endl;\n  std::cout << std::left << std::setw(10) << \"Banana\" << std::endl;\n  return 0;\n}\n

Both will print inside a virtual column with the size of 10 chars. This will output the following:

    Apple\nBanana   \n

"},{"location":"intro/03-datatypes/#optional-exercises","title":"Optional Exercises","text":"

Do all exercises up to this topic here.

In order to get into coding, the easiest way to learn is by solving coding challenges. It is like learning any new language, you have to be exposed and involved. Do not do only the homeworks, otherwise you are going to fail. Another metaphor is: the homework is the like a competition that you have to run to prove that you are trained, but in order to train, you have to do small runs and do small steps first, so you have to train yourself ot least 2x per week.

The best way to train yourself in coding and solving problems in my opinion is this:

  1. Sort Beecrowd questions from the most solved to the least solved questions here is the link of the list already filtered.
  2. Start solving the questions from the top to the bottom. Chose one from de the beginning, it would be one of the easiest;
  3. If you are feeling comfortable and being able to solve more than 3 per hour, you are allowed to skip some of the questions. It is just like in a gym, when you get used with the load, you increase it. Otherwise continue training slowly.
"},{"location":"intro/03-datatypes/#homework","title":"Homework","text":"

banknotes and coins - Here you will use formatting, modulus, casting, arithmetic operations, compound assignment. You don't need to use if-else.

Hint. Follow this only if dont find your way of solving it. You can read the number as a double, multiply by 100 and then do a sequence of modulus and division operations.

double input; // declare the container to store the input\ncin >> input; // read the input\n\nlong long cents = static_cast<long long>(input * 100); // number of cents. Note: if you just use float, you will face issues. \n\nlong long notes100 = cents/10000; // get the number of notes of 100 dollar (100 units of 100 cents) \ncents %= 10000; // remove the amount of 100 dollars\n

Another good way of solving it avoiding casting is reading the number as string and removing the point. Never use float for money

string input; // declare the container to store the input\ncin >> input; // read the input\n\n// given every input will have the dot, we should remove it. remove the dot `.`\ninput = input.erase(str.find('.'), 1);\n\n// not it is safe to use int, because no bit is lost in floating casting and nobody have more than MAX_INT cents.  \nint cents = stoll(input); // number of cents. \n\nlong long notes100 = cents/10000; // get the number of notes of 100 dollar (100 units of 100 cents) \ncents %= 10000; // update the remaining cents by removing the amount of 100 dollars in cents units\n
"},{"location":"intro/03-datatypes/#troubleshooting","title":"Troubleshooting","text":"

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

"},{"location":"intro/04-conditionals/","title":"Conditionals, Switch, Boolean Operations","text":"
  • Boolean Operations
  • Bitwise Operations
  • Conditionals
  • Switch
"},{"location":"intro/04-conditionals/#boolean-operations","title":"Boolean Operations","text":"

In C++, the boolean operators are used to perform logical operations on boolean values (values that can only be true or false).

"},{"location":"intro/04-conditionals/#and","title":"AND","text":"

And operators can be represented by &&(most common syntax) or and(C++20 and up - alternative operator representation). This operator represents the logical AND operation. It returns true if both operands are true, and false otherwise. - It needs only if one false element to make the result be false; - It needs all elements to be true in order the result be true;

p q p and q true true true true false false false true false false folse false

For example:

bool x = true;\nbool y = false;\nbool z = x && y; // z is assigned the value false\n
"},{"location":"intro/04-conditionals/#or","title":"OR","text":"

Or operators can be represented by ||(most common syntax) or or(C++20 and up - - alternative operator representation). This operator represents the logical OR operation. It returns true if one operands are true, and false if all are false. - It needs only if one true element to make the result be true; - It needs all elements to be false in order the result be false;

p q p or q true true true true false true false true true false folse false

For example:

bool x = true;\nbool y = false;\nbool z = x || y; // z is assigned the value true\n
"},{"location":"intro/04-conditionals/#not","title":"NOT","text":"

Not operator can be represented by !(most common syntax) or not(C++20 and up - alternative operator representation). This operator represents the logical NOT operation. It returns true if operand after it is false, and true otherwise._

p not p true false false true

For example:

bool x = true;\nbool y = !x; // y is assigned the value false\n
"},{"location":"intro/04-conditionals/#bitwise-operations","title":"Bitwise operations","text":"

In C++, the bitwise operators are used to perform operations on the individual bits of an integer value.

"},{"location":"intro/04-conditionals/#and_1","title":"AND","text":"

Bitwise and can be represented by & or bitand(C++20 and up - alternative operator representation: This operator performs the bitwise AND operation. It compares each bit of the first operand to the corresponding bit of the second operand, and if both bits are 1, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0. For example:

int x = 5; // binary representation is 0101\nint y = 3; // binary representation is 0011\nint z = x & y; // z is assigned the value 1, which is binary 0001\n
"},{"location":"intro/04-conditionals/#or_1","title":"OR","text":"

Bitwise or can be represented by | or bitor(C++20 and up - alternative operator representation: This operator performs the bitwise OR operation. It compares each bit of the first operand to the corresponding bit of the second operand, and if either bit is 1, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0. For example:

int x = 5; // binary representation is 0101\nint y = 3; // binary representation is 0011\nint z = x | y; // z is assigned the value 7, which is binary 0111\n
"},{"location":"intro/04-conditionals/#xor","title":"XOR","text":"

Bitwise xor can be represented by ^ or bitxor(C++20 and up - alternative operator representation: This operator performs the bitwise XOR (exclusive OR) operation. It compares each bit of the first operand to the corresponding bit of the second operand, and if the bits are different, the corresponding result bit is set to 1. Otherwise, the corresponding result bit is set to 0.

int x = 5; // binary representation is 0101\nint y = 3; // binary representation is 0011\nint z = x ^ y; // z is assigned the value 6, which is binary 0110\n

Bitwise xor is a type of binary sum without carry bit.

"},{"location":"intro/04-conditionals/#not_1","title":"NOT","text":"

Bitwise not can be represented by ~ or bitnot(C++20 and up - alternative operator representation: This operator performs the bitwise NOT (negation) operation. It inverts each bit of the operand (changes 1 to 0 and 0 to 1). For example:

int x = 5; // binary representation is 0101\nint y = ~x; // y is assigned the value -6, which is binary 11111010. See complement of two for more details.\n
"},{"location":"intro/04-conditionals/#shift","title":"SHIFT","text":"

In C++, the shift operators are used to shift the bits of a binary number to the left or right. Pay attention to not mix with the same ones used to strings, in that case they are called stream operators. There are two shift operators:

  1. <<: This operator shifts the bits of the left operand to the left by the number of positions specified by the right operand. For example:
int x = 2; // binary representation is 10\nx = x << 1; // shifts the bits of x one position to the left and assigns the result to x\n// x now contains 4, which is binary 100\n
  1. >>: This operator shifts the bits of the left operand to the right by the number of positions specified by the right operand. For example:
int x = 4; // binary representation is 100\nx = x >> 1; // shifts the bits of x one position to the right and assigns the result to x\n// x now contains 2, which is binary 10\n

The shift operators are often used to perform operations more efficiently than can be done with other operators. They can also be used to extract or insert specific bits from or into a value.

"},{"location":"intro/04-conditionals/#conditionals","title":"Conditionals","text":"

Conditionals are used to branch and execute different blocks of code based on whether a certain condition is true or false. There are several types of conditionals, including:

"},{"location":"intro/04-conditionals/#if-clause","title":"if clause","text":"

if statements: These execute a block of code if a certain condition is true. If statements usually uses comparison operators or any result that can be transformed as boolean - any number different than 0 is considered true, only 0 is considered false.

Comparison operator is used to compare the value of two operands. The operands can be variables, expressions, or constants. The comparison operator returns a Boolean value of true or false, depending on the result of the comparison. There are several comparison operators available:

  • ==: returns true if the operands are equal;
  • !=: returns true if the operands are not equal;
  • >: returns true if the left operand is greater than the right operand;
  • <: returns true if the left operand is less than the right operand;
  • >=: returns true if the left operand is greater than or equal to the right operand;
  • <=: returns true if the left operand is less than or equal to the right operand;

For example:

if (x > y) {\n  // code to execute if x is greater than y\n}\n

If it appears without scope {}, the condition will applied only to the next statement. For example

if (x > y) \n  doSomething(); // only happens if x > y is evaluated as true\notherThing(); // this will always occur.  \n
Inline conditional:
if (x > y) doSomething(); // only happens if x > y is evaluated as true\n
if (x > y) {doSomething();} // only happens if x > y is evaluated as true\n

A common source of error is adding a ; after the condition. In this case, the compiler will understand that it is an empty statement and always execute the next statement.

if (x > y); // note the inline empty statement here finished with a `;`\n  doSomething(); // this will always happen\n

Note

It is preferred to always create scopes with {}, but there is no need to have them if you have only one statement that will happen for that condition.

"},{"location":"intro/04-conditionals/#if-else-clause","title":"if-else clause","text":"

All the explanations from if applies here but now we have a fallback case.

if-else statements: These execute a block of code if a certain condition is true, and a different block of code if the condition is false. For example:

if (x > y) {\n  // code to execute if x is greater than y\n} else {\n  // code to execute if x is not greater than y\n}\n

All the explanations about scope on the if clause described before, can be applied to the else.

"},{"location":"intro/04-conditionals/#ternary-operator","title":"Ternary Operator","text":"

The ternary operator is also known as the conditional operator. It is used to evaluate a condition and return one value if the condition is true and another value if the condition is false. The syntax for the ternary operator is:

condition ? value_if_true : value_if_false\n

For example:

int a = 5;\nint b = 10;\nint min = (a < b) ? a : b;  // min will be assigned the value of a, since a is less than b\n

Here, the condition a < b is evaluated to be true, so the value of a is returned. If the condition had been false, the value of b would have been returned instead.

The ternary operator can be used as a shorthand for an if-else statement. For example, the code above could be written as:

int a = 5;\nint b = 10;\nint min;\nif (a < b) {\n  min = a;\n} else {\n  min = b;\n}\n

"},{"location":"intro/04-conditionals/#switch","title":"Switch","text":"

switch statement allows you to execute a block of code based on the value of a variable or expression. The switch statement is often used as an alternative to a series of if statements, as it can make the code more concise and easier to read. Here is the basic syntax for a switch statement in C++:

switch (expression) {\n  case value1:\n    // code to be executed if expression == value1\n    break;\n  case value2:\n    // code to be executed if expression == value2\n    break;\n  // ...\n  default:\n    // code to be executed if expression is not equal to any of the values\n}\n

The expression is evaluated once, and the value is compared to the values in each case statement. If a match is found, the code associated with that case is executed. The break statement is used to exit the switch statement and prevent the code in subsequent cases from being executed. The default case is optional, and is executed if none of the other cases match the value of the expression.

Here is an example of a switch statement that checks the value of a variable x and executes different code depending on the value of x:

int x = 2;\n\nswitch (x) {\n  case 1:\n    cout << \"x is 1\" << endl;\n    break;\n  case 2:\n    cout << \"x is 2\" << endl;\n    break;\n  case 3:\n    cout << \"x is 3\" << endl;\n    break;\n  default:\n    cout << \"x is not 1, 2, or 3\" << endl;\n}\n

In this example, the output would be \"x is 2\", as the value of x is 2.

Note

It's important to note that C++ uses strict type checking, so you need to be careful about the types of variables you use in your conditionals. For example, you can't compare a string to an integer using the == operator.

"},{"location":"intro/04-conditionals/#switch-fallthrough","title":"Switch fallthrough","text":"

In C++, the break statement is used to exit a switch statement and prevent the code in subsequent cases from being executed. However, sometimes you may want to allow the code in multiple cases to be executed if certain conditions are met. This is known as a \"fallthrough\" in C++.

To allow a switch statement to fall through to the next case, you can omit the break statement at the end of the case's code block. The code in the next case will then be executed, and the switch statement will continue to execute until a break statement is encountered or the end of the switch is reached.

Here is an example of a switch statement with a fallthrough:

int x = 2;\n\nswitch (x) {\n  case 1:\n    cout << \"x is 1\" << endl;\n  case 2:\n    cout << \"x is 2\" << endl;\n  case 3:\n    cout << \"x is 3\" << endl;\n  default:\n    cout << \"x is not 1, 2, or 3\" << endl;\n}\n

In this example, the output would be \"x is 2\", \"x is 3\" and \"x is not 1, 2, or 3\", as the break statement is omitted in the case 2 block and the code in the case 3 block is executed as a result.

It is generally considered good practice to include a break statement at the end of each case in a switch statement to avoid unintended fallthrough. However, there may be cases where a fallthrough is desired behavior. In such cases, it is important to document the intended fallthrough in the code to make it clear to other programmers.

"},{"location":"intro/04-conditionals/#issues-with-switch-and-enums","title":"Issues with switch and enums","text":"

A nice usecase for switches is to be used to select between possible choices and enums are one of the best ways of expressing choices. So it seems natural to combine both, right? Well, not so fast. There are some issues with this combination that you might be aware of.

The main issue with this approach relies on the switch's default behavior. If you use deafult on swiches in conjunction with stringly typed enums (enum class or enum struct), the compiler won't be able to warn you about missing cases. This is because the default case will be triggered for any value that is not explicitly handled by the switch. This is a problem because it is very easy to forget to add a new case when a new value is added to the enum and the compiler won't warn you about it. Example:

ColorEnum.h
enum class Color { Red, Green };\n
UseCaseX.cpp
// this code goes inside some function that uses Color c\nswitch(c){\n  case Color::Red:\n    // do something\n    break;\n  default: // covers Color::Green and any other value\n    // do something else\n    break;\n}\n

But you just remembered that now you should cover the Blue state. So you add it to the enum:

ColorEnum.h
enum class Color { Red, Green, Blue };\n

But you might forget to add the coverage for the new case to the switch, it will fall into the default case without warnings.

So the best combination is to use switches with enum classes and do not use default cases. This way, the compiler will warn you about missing cases. So if you add a new enum value had this code instead, you will be warned about missing cases.

UseCaseX.cpp
// this code goes inside some function that uses Color c\nswitch(c){\n  case Color::Red:\n    // do something\n    break;\n  case Color::Green:\n    // do something else\n    break;\n}\n// this code will throw a warning if you forget to add a case for the new enum value\n
"},{"location":"intro/04-conditionals/#homework","title":"Homework","text":"
  • Do all exercises up to this topic here.

  • Coordinates of a Point. In this activity, you will have to code a way to find the quadrant of a given coordinate.

"},{"location":"intro/04-conditionals/#outcomes","title":"Outcomes","text":"

It is expected for you to be able to solve all questions before this one 1041 on beecrowd. Sort Beecrowd questions from the most solved to the least solved questions here in the link. If you don't, see Troubleshooting. Don`t let your study pile up, this homework is just a small test, it is expected from you to do other questions on Beecrowd or any other tool such as leetcode.

"},{"location":"intro/04-conditionals/#troubleshooting","title":"Troubleshooting","text":"

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

"},{"location":"intro/05-loops/","title":"Loops, for, while and goto","text":"

A loop is a control flow statement that allows you to repeat a block of code.

"},{"location":"intro/05-loops/#while-loop","title":"while loop","text":"

This loop is used when you want to execute a block of code an unknown number of times, as long as a certain condition is true. It has the following syntax:

Syntax:

while (condition) {\n    // code block to be executed\n}\n
Example:
int nums = 10;\nwhile (nums>=0) {\n    cout << nums << endl;\n    nums--;\n}\n

If the block is only one statement, it can be expressed without {}s.

Syntax:

while (condition) \n    // statement goes here\n
Example:
int nums = 10;\nwhile (nums>=0) \n    cout << nums-- << endl;\n

"},{"location":"intro/05-loops/#do-while-loop","title":"do-while loop","text":"

This is similar to the while loop, but it is guaranteed to execute at least once.

Syntax:

do {\n    // code block to be executed\n} while (condition);\n

Example:

int x = 0;\ndo{\n    cout << x << endl;\n    x++;\n} while(x<10);\n

If the block is only one statement, it can be expressed without {}s.

Syntax:

do\n    // single statement goes here\nwhile (condition);    \n
Example:
int x = 0;\ndo \n    cout << x++ << endl;\nwhile (x<=10);\n

"},{"location":"intro/05-loops/#for-loop","title":"for loop","text":"

This loop is used when you know in advance how many times you want to execute a block of code.

  • The initialization part is executed only once, at the beginning of the loop. It is used to initialize any loop variables.
  • The condition is evaluated at the beginning of each iteration of the loop. If the condition is true, the code block inside the loop is executed. If the condition is false, the loop is terminated.
  • The increment part is executed at the end of each iteration of the loop. It is used to update the loop variables.

Syntax:

for (initialization; condition; step_iteration) {\n    // code block to be executed\n}\n

Example:

for(int i=10; i<=0; i--){\n    cout << i << endl; \n}\n

If the block is only one statement, it can be expressed without {}s.

Syntax:

for (initialization; condition; step_iteration)\n    // single statement goes here\n
Example:
for(int i=10; i<=0; i--)\n    cout << i << endl;\n

"},{"location":"intro/05-loops/#range-based-loops","title":"range based loops","text":"

A range-based loop is a loop that iterates over a range of elements. The declaration type should follow the same type of the elements in the range.

Syntax:

for (declaration : range) {\n    // code block to be executed\n}\n
or
for (declaration : range)\n    // single statement\n

To avoid explaining arrays and vectors now, assume v as an iterable container that can hold multiple elements. I am going to use auto here to avoid explaining this topic any further.

auto v = {1, 2, 3, 4, 5}; // an automatically inferred iterable container with multiple elements\nfor (int x : v) {\n    cout << x << \" \";\n}\n

It is possible to automatically generate ranges

#include <ranges>\n#include <iostream>\nusing namespace std;\nint main() {  \n    // goes from 0 to 9. in iota, the first element is inclusive and the last one is exclusive.\n    for (int i : views::iota(0, 10))  \n        cout << i << ' ';\n}\n

"},{"location":"intro/05-loops/#loop-control-statements","title":"Loop Control Statements","text":""},{"location":"intro/05-loops/#break","title":"break","text":"

break keyword defines a way to break the current loop and end it immediately.

// check if it is prime\nint num; \ncin >> num; // read the number to be checked if is prime or not\nbool isPrime = true;\nfor(int i=2; i<num; i++){\n    if(num%i==0){ // check if i divides num\n        isPrime = false;\n        break; // this will break the loop and prevent further precessing\n    }\n}\n
"},{"location":"intro/05-loops/#continue","title":"continue","text":"

continue keyword is used to skip the following statements of the loop and move to the next iteration.

// print all even numbers\nfor (int i = 1; i <= 10; i++) {\n    if (i % 2 == 1)\n        continue;\n    cout << i << \" \"; // this statement is skipped if odd numbers\n}\n
"},{"location":"intro/05-loops/#goto","title":"goto","text":"

You should avoid goto keyword. PERIOD. The only acceptable usage is to break multiple nested loops at the same time. But even in this case, is better to use return statement and functions that you're going to see later in this course.

The goto keyword allows you to transfer control to a labeled statement elsewhere in your code.

Example on how to create a loop using labels and goto. You can create a loop just using labels(anchors) and goto keywords. But this syntax is hard to debug and read. Avoid it at all costs:

#include <iostream>\nusing namespace std;\nint main() {\n    int i=0;\n    start: // this a label named as start.\n    cout << i << endl;\n    i++;\n    if(i<10)\n        goto start; // jump back to start\n    else\n        goto finish; // jump to finish\n    finish: // this a label named as finish.\n    return 0;\n}\n

Example on how to jump over and skip statements:

#include <iostream>\n\nint main() {\n    int x = 10;\n\n    goto jump_over_this;  // control jumps to the label below\n\n    x = 20;  // this line of code is skipped\n\n    jump_over_this:  // label for goto statement\n    std::cout << x << std::endl;  // outputs 10\n\n    return 0;\n}\n

Example of an arguably acceptable use of goto. Here you can see the usage of a way to break both loops at the same time. If you use break, you will only break the inner loop. In this situation it is better to break your code into functions to reduce complexity and nesting.

for (int i = 0; i < imax; ++i)\n    for (int j = 0; j < jmax; ++j) {\n        if (i + j > elem_max) goto finished;\n        // ...\n    }\nfinished:\n// ...\n

"},{"location":"intro/05-loops/#loop-nesting","title":"Loop nesting","text":"

You can nest loops by placing one loop inside another. The inner loop will be executed completely for each iteration of the outer loop. Here is an example of nesting a for loop inside another for loop:

for (int i = 0; i < 10; i++) {\n  for (int j = 0; j < 5; j++) {\n    cout << \"i: \" << i << \" j: \" << j << endl;\n  }\n}\n
"},{"location":"intro/05-loops/#infinite-loops","title":"Infinite loops","text":"

A infinite loop is when the code loops indefinitely without having a way out. Here goes some examples:

while(true)\n    cout << \"Hello World!\" << endl; \n
for(;;)\n    cout << \"Hello World!\" << endl; \n
int i = 0;\nwhile(i<10); // note the ';' here, it will run indefinitely an empty statement because it won't reach the scope.\n{\n    cout << i << endl;\n    i++;\n}\n
"},{"location":"intro/05-loops/#accumulator-pattern","title":"Accumulator Pattern","text":"

The accumulator pattern is a way to accumulate values in a loop. Here is an example of how to use it:

int fact = 1; // accumulator variable\nfor(int i=2; i<5; i++){\n    fact *= i; // multiply the accumulator by the current value of i\n}\n// fact = 1*1*2*3*4 = 24\ncout << fact << endl;\n
"},{"location":"intro/05-loops/#search-pattern","title":"Search pattern","text":"

The search pattern is a way to search for a value in a loop, the most common implementation is a boolean flag. Here is an example of how to use it:

int num;\ncin >> num; // read the number to be checked if is prime or not\nbool isPrime = true; // flag to indicate if the number is prime or not\nfor(int i=2; i<num; i++){\n    if(num%i==0){ // check if i divides num\n        isPrime = false;\n        break; // this will break the loop and prevent further precessing\n    }\n}\ncout << num << \" is \" << (isPrime ? \"\" : \"not \") << \"prime\" << endl;\n// (isPrime ? \"\" : \"not \") is the ternary operator, it is a shorthand for if-else\n
"},{"location":"intro/05-loops/#debugging","title":"Debugging","text":"

Debugging is the act of instrumentalize your code in order to track problems and fix them.

The most naive way of doing it is by printing variables random texts to find the problem. Don't do it. Use debugger tools instead. Each IDE has his its ows set of tools, if you are using CLion, use this tutorial.

"},{"location":"intro/05-loops/#automated-tests","title":"Automated tests","text":"

There are lots of methodologies to guarantee your code is correct and solve the problem it is supposed to solve. The one that stand out is Automated tests.

When you are using beecrowd, leetcode, hackerrank or any other tool to solve problems to learn how to code, a problem is posted to be solved and they test your code solution against a set of expected outputs. This is automated testing. You can generate custom automated tests for your code and cover all cases that you can imagine before you start coding the solution. This is a good practice and is documented in the industry as Test Driven Development.

"},{"location":"intro/05-loops/#homework","title":"Homework","text":"

Do all exercises up to this topic here.

In this activity, you will have to solve Fibonacci sequence. You should implement using loops, and variables. Do not use arrays nor closed-form formulas.

  • Easy Fibonacci

Optional Readings on Fibonacci Sequence;

Hint: Create two variables, one to store the current value and the previous value. For each iteration step, calculate the sum of both and store and put into a temp variable. Copy the current into the previous and set the current with the temporary you calculated before.

"},{"location":"intro/05-loops/#outcomes","title":"Outcomes","text":"

It is expected for you to be able to solve all questions before this one 1151 on beecrowd. Sort Beecrowd questions from the most solved to the least solved questions here in the link. If you don't, see Troubleshooting. Don`t let your study pile up, this homework is just a small test, it is expected from you to do other questions on Beecrowd or any other tool such as leetcode.

"},{"location":"intro/05-loops/#troubleshooting","title":"Troubleshooting","text":"

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

"},{"location":"intro/06-functions/","title":"Base Conversion, Functions, Pointers, Parameter Passing","text":""},{"location":"intro/06-functions/#base-conversion","title":"Base conversion","text":"

Data containers use binary coding to store data where every digit can be 0 or 1, this is called base 2, but there are different types of binary encodings and representation, the most common integer representation is Complement of two for representing positive and negative numbers and for floats is IEEE754. Given that, it is relevant to learn how to convert the most used common bases in computer science in order to code more efficiently.

Most common bases are: - Base 2 - Binary. Digits can go from 0 to 1. {0, 1}; - Base 8 - Octal. Digits can go from 0 to 7. {0, 1, 2, 3, 4, 5, 6, 7}; - Base 10 - Decimal. Digits can go from 0 to 9. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - Base 16 - Hexadecimal. Digits can go from 0 to 9 and then from A to F. {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F};

"},{"location":"intro/06-functions/#converting-from-decimal-to-any-base","title":"Converting from Decimal to any base","text":"

There are several methods for performing base conversion, but one common method is to use the repeated division and remainder method. To convert a number from base 10 to another base b, you can divide the number by b and record the remainder. Repeat this process with the quotient obtained from the previous division until the quotient becomes zero. The remainders obtained during the process will be the digits of the result in the new base, with the last remainder being the least significant digit.

For example, to convert the decimal number 75 to base 2 (binary), we can follow these steps:

75 \u00f7 2 = 37 remainder 1\n37 \u00f7 2 = 18 remainder 1\n18 \u00f7 2 = 9 remainder 0\n9 \u00f7 2 = 4 remainder 1\n4 \u00f7 2 = 2 remainder 0\n2 \u00f7 2 = 1 remainder 0\n1 \u00f7 2 = 0 remainder 1\n

The remainders obtained during the process (1, 1, 0, 1, 0, 0, 1) are the digits of the result in base 2, with the last remainder (1) being the least significant digit. Therefore, the number 75 in base 10 is equal to 1001011 in base 2.

"},{"location":"intro/06-functions/#converting-from-any-base-to-decimal","title":"Converting from any base to decimal","text":"

The most common way to convert from any base to decimal is to follow the formula:

dn-1*bn-1 + dn-2*bn-2 + ... + d1*b1 + d0*b0

Where dx represents the digit at the corresponding position x in the number, n is the number of digits in the number, and b is the base of the number.

For example, to convert the number 1001011 (base 2) to base 10, we can use the following formula:

(1 * 2^6) + (0 * 2^5) + (0 * 2^4) + (1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = 75

Therefore, the number 1001011 in base 2 is equal to 75 in base 10.

"},{"location":"intro/06-functions/#functions","title":"Functions","text":"

A function is a block of code that performs a specific task. It is mostly used to isolate specific reusable functionality from the rest of the code. It has a name, a return type, and a list of parameters. Functions can be called from other parts of the program to execute the task. Here is an example of a simple C++ function that takes two integers as input and returns their sum.

int add(int x, int y) {\n  int sum = x + y;\n  return sum;\n}\n

To call the function, you would use its name followed by the arguments in parentheses:

int a = 2, b = 3;\nint c = add(a, b); // c will be equal to 5\n

Functions can also be declared before they are defined, in which case they are called \"prototypes.\" This allows you to use the function before it is defined, which can be useful if you want to define the function after it is used. For example:

int add(int x, int y);\n\nint main() {\n  int a = 2, b = 3;\n  int c = add(a, b);\n  return 0;\n}\n\nint add(int x, int y) {\n  int sum = x + y;\n  return sum;\n}\n
"},{"location":"intro/06-functions/#reference-declaration","title":"Reference Declaration","text":"Note

This content only covers an introduction to the topic.

The & is used to refer memory address of the variable. When used in the declaration, it is the Lvalue reference declarator. It is an alias to an already-existing, variable, object or function. Read more here.

When used as an prefix operator before the name of a variable, it will return the memory address where the variable is allocated.

Example:

string s;\n\n// the variable r has the same memory address of s\n// the declaration requires initialization\nstring& r = s; \n\ns = \"Hello\";\n\ncout << &s << endl; // prints the variable memory address location. in my machine: \"0x7ffc53631cd0\"\ncout << &r << endl; // prints the same variable memory address location. in my machine: \"0x7ffc53631cd0\"\n\ncout << s << endl; // prints \"Hello\"\ncout << r << endl; // prints \"Hello\"\n\n// update the content\nr += \" world!\";\n\ncout << s << endl; // prints \"Hello world!\"\ncout << r << endl; // prints \"Hello world!\"\n

"},{"location":"intro/06-functions/#pointer-declaration","title":"Pointer Declaration","text":"Note

This content only covers an introduction to the topic.

The * is used to declare a variable that holds the address of a memory position. A pointer is an integer number that points to a memory location of a container of a given type. Read more here.

string* r = nullptr; // it is not required do initialize, but it is a good practice to always initialize a pointer pointing to null address (0). \nstring s = \"Hello\";\nr = &s; // the variable r stores the memory address of s\n\ncout << s << endl; // prints the content of the variable s. \"Hello\"\ncout << &s << endl; // prints the address of the variable s. in my machine \"0x7fffdda021b0\"\n\ncout << r << endl;  // prints the numeric value of the address the pointer points, in this case it is \"0x7fffdda021b0\".\ncout << &r << endl; // prints the address of the variable r. it is a different address than s, in my machine \"0x7fffdda021d0\".\ncout << *r << endl; // prints the content of the container that is pointing, it prints \"Hello\".\n\nstring other = \"world\";\nr = &s; // r now points to another variable\n\ncout << *r << endl; // prints the content of the container that is pointing, it prints \"world\"\n
"},{"location":"intro/06-functions/#void-type","title":"void type","text":"

We covered briefly the void type when we covered data types. There are 2 main usages of void

void is used to specify that some function dont return anything to the caller.

voidFunction.cpp
// this function does not need to return anything\n// optionally you can use an empty `return` keyword without variable to break the flow early\nvoid doSomething() {\n    // function body goes here\n    return; // this line is optional, it can be used inside conditional do break early the function flow\n}\n

void* is used as a placeholder to store a pointer to anything in memory. Use this with extreme caution, because you can easily mess with it and lose track of the type or the conversion. The most common use are: - Access the raw content of a variable in memory; - Low-level raw memory allocation; - Placeholder to act as a pointer to anything;

rawpointer.cpp
#include <iostream>\n#include <iomanip>\n#include <bitset>\nusing namespace std;\nint main()\n{\n    // declare our data\n    float f = 2.0f;\n    // point without type that points to the memory location of `f`\n    void* p = &f; \n    // (int*) casts the void* to int*, so it can be understandable\n    // * in front means that we want to fetch the content of what is pointing\n    int i = *(int*)(p); \n    cout << hex << i << endl; // prints 40000000\n    std::bitset<32> bits(i);\n    cout << bits << endl; // prints 01000000000000000000000000000000\n    return 0;\n}\n
"},{"location":"intro/06-functions/#passing-parameter-to-a-function-by-value","title":"Passing parameter to a function by value","text":"

Pass-by-value is when the parameter declaration follows the traditional variable declaration without &. A copy of the value is made and passed to the function. Any changes made to the parameter inside the function have don't change on the original value outside the function.

pass-by-value.cpp
#include <iostream>\nusing namespace std;\nvoid times2(int x) {\n    x = x * 2;\n    // the value x here is doubled. but it dont change the value outside the scope\n}\n\nint main()\n{\n    int y = 2;\n    times2(y); // this dont change the value, it passes a copy to the function\n    cout << y << endl;  // output: 2\n    return 0;\n}\n
"},{"location":"intro/06-functions/#passing-parameter-to-a-function-by-reference","title":"Passing parameter to a function by reference","text":"

Pass-by-reference occurs when the function parameter uses the & in the parameter declaration. It will allow the function to modify the value of the parameter directly in the other scope, rather than making a copy of the value as it does with pass-by-value. The mechanism behind the variable passed is that it is an alias to the outer variable because it uses the same memory position.

pass-by-reference.cpp
#include <iostream>\nusing namespace std;\nvoid times2(int &x) { // by using &, x has the same address the variable passed where the function is called \n  x*=2; // it will change the variable in caller scope\n}\n\nint main() {\n  int y = 2;\n  times2(y);\n  cout << y << endl;  // Outputs 4\n  return 0;\n}\n
"},{"location":"intro/06-functions/#passing-parameter-to-a-function-by-pointer","title":"Passing parameter to a function by pointer","text":"

Pass-by-pointer occurs when the function parameter uses the * in the parameter declaration. It will allow the function to modify the value of the parameter in the other scope via memory pointer, rather than making a copy of the value as it does with pass-by-value. The mechanism behind it is to pass the memory location of the outer variable as a parameter to the function.

pass-by-pointer.cpp
#include <iostream>\nusing namespace std;\nvoid times2(int *x) { // by using *, x has the same address the variable passed where the function is called\n    // x holds the address of the outer variable\n    // *x is the content of what x points.\n  *x *= 2; // it will change the variable in caller scope\n}\n\nint main() {\n  int y = 2;\n  times2(&y); // the function expects a pointer, given pointer is an address, we pass the address of the variable here\n  cout << y << endl;  // Outputs 4\n  return 0;\n}\n
"},{"location":"intro/06-functions/#function-overload","title":"Function overload","text":"

A function with a specific name can be overload with different not implicitly convertible parameters.

#include <iostream>\nusing namespace std;\n\nfloat average(float a, float b){\n    return (a + b)/2;\n}\n\nfloat average(float a, float b, float c){\n    return (a + b + c)/3;\n}\n\nint main(){\n    cout << average(1, 2) << endl; // print 1.5\n    cout << average(1, 2, 3) << endl; // print 2\n    return 0;\n}\n
"},{"location":"intro/06-functions/#default-parameter","title":"Default parameter","text":"

Functions can have default parameters that should be used if the parameter is not provided, making it optional.

defaultparam.cpp
#include <iostream>\nusing namespace std;\n\nvoid greet(string username = \"user\") {\n    cout << \"Hello \" << mes << endl;\n}\n\nint main() {\n  // Prints \"Hello user\"\n  greet(); // the default parameter user is used here\n\n  // Prints \"Hello John\"\n  greet(\"John\");\n\n  return 0;\n}\n
"},{"location":"intro/06-functions/#scopes","title":"Scopes","text":"

Scope is a region of the code where a identifier is accessible. A scope usually is specified by what is inside { and }. The global scope is the one that do not is inside any {}.

scope.cpp
#include <iostream>\n#include <string>\nusing namespace std;\nstring h = \"Hello\"; // this variable is in the global scope\nint main() {\n  string w = \" world\"; // this variable belongs to the scope of the main function\n  cout << h << w << endl; // both variables are visible and accessible\n  return 0;\n}\n

Multiple identifiers with same name can not be created in the same scope. But in a nested scope it is possible to shadow the outer one when declared in the inner scope.

variableShadowing.cpp
#include <iostream>\n#include <string>\nusing namespace std;\nstring h = \"Hello\"; // this variable is in the global scope\nint main() {\n  cout << h; // will print \"Hello\"\n  string h = \" world\"; // this will shadow the global variable with the same name h\n  cout << h; // will print \" world\"\n  return 0;\n}\n
"},{"location":"intro/06-functions/#lambda-functions","title":"Lambda functions","text":"

In C++, an anonymous function is a function without a name. Anonymous functions are often referred to as lambda functions or just lambdas. They are useful for situations where you only need to use a function in one place, or when you don't want to give a name to a function for some other reason.

auto lambda = [](int x, int y) { return x + y; };\n// auto lambda = [] (int x, int y) -> int { return x + y; }; // or you can specify the return type\nint z = lambda(1, 2);  // z is now 3\n

In this case the only variables accessible by the lambda function scope are the ones passed as parameter x and y, and works just like a normal function, but it can be declared inside at any scope.

If you want to make a variable available to the lambda, you can pass it via captures, and it can be by-value or by-reference. To capture a variable by value, just pass the variable name inside the []. To capture a variable by reference, you use the & operator followed by the variable name inside the []. Here is an example of capturing a variable by value:

int x = 1;\nauto lambda = [x] { return x + 1; };\n

The value of x is copied into the lambda function, and any changes to x inside the lambda function have no effect on the original variable.

Here is an example of capturing a variable by reference:

int x = 1;\nauto lambda = [&x] { return x + 1; };\n

The lambda function has direct access to the original variable, and any changes to x inside the lambda function are reflected in the original variable.

You can also capture multiple variables by separating them with a comma. For example:

int x = 1, y = 2;\nauto lambda = [x, &y] { x += 1; y += 1; return x + y; };\n

This defines a lambda function that captures x by-value and y by-reference. The lambda function can modify y but not x.

Lambda captures are a useful feature of C++ that allow you to write more concise and expressive code. They can be especially useful when working with algorithms from the Standard Template Library (STL), where you often need to pass a function as an argument.

In order to capture everything automatically you can either capture by copy [=] or by reference [&].

// capture everything via copy\nint x = 1, y = 2;\nauto lambda = [=] { \n    // x += 1; // cannot be changed because it is read-only \n    // y += 1; // cannot be changed because it is read-only\n    return x + y; \n};\nint c = lambda(); // c will be 5, but x and y wont change their values\n
// capture everything via reference\nint x = 1, y = 2;\nauto lambda = [&] { x += 1; y += 1; return x + y; };\nint c = lambda(); // c will be 5, x will be 2, and y will be 3.\n

For a more in depth understanding, go to Manual Reference or check this tutorial.

"},{"location":"intro/06-functions/#multiple-files","title":"Multiple files","text":"

In bigger projects, it is useful to split your code in multiple files isolating intention and organizing your code. To do so, you can create a header file with the extension .h and a source file with the extension .cpp. The header file will contain the declarations of the functions and the source file will contain the definitions of the functions. The header file will be included in the source file and the source file will be compiled together with the main file.

main.cpp
#include <iostream>\n#include \"functions.h\"\nusing namespace std;\n\nint main() {\n  cout << sum(1, 2) << endl;\n  return 0;\n}\n
functions.h
// Preprocessor directive (macro) to ensure that this header file is only included once\n#ifndef FUNCTIONS_H\n#define FUNCTIONS_H\n\n// Function declaration without body\nint sum(int a, int b);\n\n#endif\n

Alternatively, you can use #pragma once instead of #ifndef, #define end #endif to ensure that the header file is only included once. This is a non-standard preprocessor directive, but it is supported by most compilers. Ex.:

functions.h
// Preprocessor directive (macro) to ensure that this header file is only included once\n#pragma once\n\n// Function declaration without body\nint sum(int a, int b);\n
functions.cpp
// include the header file that contains the function declaration\n#include \"functions.h\"\n\n// function definition with body \nint sum(int a, int b) {\n  return a + b;\n}\n
"},{"location":"intro/06-functions/#preprocessor-directives-and-macros","title":"Preprocessor directives and macros","text":"

In C++, the preprocessor is a text substitution tool. It runs before compiling the code. It scans a program for special commands called preprocessor directives, which begin with a # symbol. When it finds a preprocessor directive, it performs the specified text substitutions before the program is compiled.

The most common preprocessor directive is #include, which tells the preprocessor to include the contents of another file in the current file. The included file is called a header file, and commonly has a .h extension. For example:

#include <iostream>\n

Another extensively used macro is #define, which defines a macro. A macro is a symbolic name for a constant value or a small piece of code. For example:

#define PI 3.14159\n

It will replace all occurrences of PI with 3.14159 before compiling the code. But pay attention that is not recommended to use macros for constants, because they are not type safe and can cause unexpected behavior. It is recommended to declare const variable instead.

See more about some cases against macros here:

  • https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#enum1-prefer-enumerations-over-macros
  • https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es30-dont-use-macros-for-program-text-manipulation
  • https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#es31-dont-use-macros-for-constants-or-functions

Nowadays the best use case for macros are for conditional compilation or platform specification. For example:

#define DEBUG 1\n\nint main() {\n  #if DEBUG\n    std::cout << \"Debug mode\" << std::endl;\n  #else\n    std::cout << \"Release mode\" << std::endl;\n  #endif\n}\n

Another example is to define the operating system:

#ifdef _WIN32\n  #define OS \"Windows\"\n#elif __APPLE__\n  #define OS \"MacOS\"\n#elif __linux__\n  #define OS \"Linux\"\n#else\n  #define OS \"Unknown\"\n#endif\n\nint main() {\n  std::cout << \"OS: \" << OS << std::endl;\n}\n
"},{"location":"intro/06-functions/#homework","title":"Homework","text":"
  • Do all exercises up to this topic here.
  • Hexadecimal converter. In this activity, you will have to code a way to find the convert to hexadecimal without using any std library to do it for you. DON'T USE std::hex.
"},{"location":"intro/06-functions/#outcomes","title":"Outcomes","text":"

It is expected for you to be able to solve all questions before this one 1957 on beecrowd. Sort Beecrowd questions from the most solved to the least solved questions here in the link. If you don't, see Troubleshooting. Don`t let your study pile up, this homework is just a small test, it is expected from you to do other questions on Beecrowd or any other tool such as leetcode.

"},{"location":"intro/06-functions/#troubleshooting","title":"Troubleshooting","text":"

If you have problems here, start a discussion. Nhis is publicly visible and not FERPA compliant. Use discussions in Canvas if you are enrolled in a class with me. Or visit the tutoring service.

"},{"location":"intro/07-streams/","title":"Streams and File IO","text":"

At this point, you already are familiar with the iostream header. But we never discussed what it is properly. It is a basic stream and it has two static variable we already use: cin for reading variables from the console input and cout to output things to console, see details here. It is possible to interact with all streams via the >> and << operators.

But C++ have 2 other relevant streams that we need to cover: fstream and sstream.

"},{"location":"intro/07-streams/#file-streams","title":"File streams","text":"

File streams are streams that target files instead of the terminal console. The fstream header describes the file streams and the ways you can interact with it.

The main differences between console and file streams are: - You have to target the filesystem path for files because we can manage different files at the same, but for console, you only have one, so you dont need to target which console we are streaming. In order to not mess each target, you have to declare a different variable to store the target and state. - Files are persistent, so if you write something to them, and try to read from it again, the that will be there saved.

Files are a kind of resource managed by the operation system. So every time you request something to be read or write, behind the scenes you are requesting something to the operating system, and it can be slow or subject by lock control. When you open a file to be read or write, the OS locks it to avoid problems. You can open a file to be read multiple times simultaneously, but you cannot write more than once. So to avoid problems, after reading or writing the file, you should close the file.

#include <fstream>\n#include <iostream>\n#include <string>\n\nusing namespace std;\n\nint main() {\n  // Open the file\n  // this file path is relative to the executable, so be assured it exists in the same folder the executable is placed\n  // fin is the variablename and it is function initialized via a file path to target, but it can be any valid identifier\n  // I am using fin as variable to follow the same metaphor `fin` as `file input` as we have with console input `cin`, \n  ifstream fin(\"file.txt\"); \n\n  // Check if the file is open\n  // it is a good practice to check if the file is really there before doing anything\n  if (!fin.is_open()) {\n    cerr << \"Error opening file\" << endl;\n    return 1; // quits the program with an error code\n  }\n\n  // Read the contents of the file line by line\n  string line;\n  // getline can target streams in general, so you can pass the file stream as a target\n  while (getline(fin, line)) { // while the file have lines, read and store the content inside the line variable\n    cout << line << endl; // output each string into the console\n  }\n\n  // Close the file\n  fin.close();\n\n  return 0;\n}\n
"},{"location":"intro/07-streams/#string-stream","title":"String Stream","text":"

The sstream header describes string stream, which is a type of memory stream and is very useful to do string manipulation. For our intent, we aro going to focus 3 types of memory streams.

  • ostringstream: works just like cout but the content will printed to a memory region.
  • it is more efficient to build a complex string in this way than couting multiple times;
  • istringstream: works just like cin but it will read from a memory area.
  • it is safer to read from a closed memory area than, and you ran reset the reading pointer to re-read previous elements easier than with cin.
#include <iostream>\n#include <sstream>\nusing namespace std;\nint main() {\n    ostringstream oss; // declare the output stream\n    // print numbers from 0 to 100\n    for(int i=0; i<=100; i++)\n        oss << i << ' '; // store the data into memory\n    cout << oss.str(); // convert the stream into a string to be printed all at once\n}\n
#include <iostream>\n#include <sstream>\nusing namespace std;\nint main() {\n    // read input\n    string input;\n    getline(cin, input);\n\n    // initialize string stream with the content from a console line\n    istringstream ss(input); // declare the stream to read from\n\n    // extract input\n    string name;\n    string course;\n    string grade;\n\n    iss >> name >> course >> grade;\n}\n

You can combine string stream and file stream to read a whole file and store into a single string.

#include <fstream>\n#include <iostream>\n#include <sstream>\n#include <string>\n\nusing namespace std;\n\nint main() {\n  // Open the file\n  ifstream file(\"file.txt\");\n\n  // Check if the file is open\n  if (!file.is_open()) {\n    cerr << \"Error opening file\" << endl;\n    return 1;\n  }\n\n  // Read the contents of the file into a stringstream\n  stringstream ss;\n  ss << file.rdbuf(); // read the whole file buffer and stores it into a string stream\n\n  // Close the file\n  file.close();\n\n  // Convert the stringstream into a string\n  string contents = ss.str();\n\n  cout << contents << endl; // prints the whole file at once\n\n  return 0;\n}\n
"},{"location":"intro/07-streams/#homework","title":"Homework","text":"

You have the job of creating a small program to read a file image in the format PGMA and inverse the colors as a negative image.

You can test your code with different images if you want. You can download more images here. But here goes 2 examples:

  • Sample input easy: baboon.ascii.pgm - max intensity is not 255 and don't have comments.
  • Sample input harder: lena.ascii.pgm - have comments, and the max intensity is different than 255.

You can test if your output file is correct using this tool. You can open this file via any text reader, use the online viewer, or use any app that reads pnm images.

"},{"location":"intro/07-streams/#attention","title":"Attention:","text":"
  • To create the inverse image, you should read the file header and search for the maximum intensity. You should use this number as a base to inverse. In the Lena case, it is 245.
  • You should pay attention that every line shouldn't be bigger than 70 chars;
  • Pay attention that the line 2 might exists or not. And any comment found in the file should be skipped.

The user should input the filename to be read. So you should store it into a string variable. The output filename should be the same as the input but with '.inverse' concatenated in the end. Ex.: lena.pgm becomes lena.inverse.pgm; If you find this too complicated, just concatenate with .inverse.pgm would be acceptable. ex.: lena.pgm becomes lena.pgm.inverse.pgm

In order for your program to find the file to be read, you should provide the fullpath to the file or simply put the file in the same folder your executable is.

HINT: In order to find comments and ignore them do something like that:

string widthstr;\nint width;\nfin >> widthstr;\nif(widthstr.at(0)=='#')\n    getline(fin, widthstr); // ignore line\nelse\n    width = stoi(widthstr); // covert string to integer\n

"},{"location":"intro/08-arrays/","title":"Arrays","text":"

An array is a collection of similar data items, stored in contiguous memory locations. The items in an array can be of any built-in data type such as int, float, char, etc. An array is defined using a syntax similar to declaring a variable, but with square brackets indicating the size of the array.

Here's an example of declaring an array of integers with a size of 5:

int arr[5]; // declare an array of size 5 at the stack\n

The above declaration creates an array named arr of size 5, which means it can store 5 integers. The array elements are stored in contiguous memory locations, which means the next element is stored at the immediate next memory location. The first element of the array is stored at the 0th index, the second element at the 1st index, and so on up to 4. Between 0 an 4 all inclusive we have 5 elements.

This creates an array called \"myArray\" that can hold 5 integers. The first element of the array is accessed using the index 0, and the last element is accessed using the index 4. You can initialize the array elements during declaration by providing a comma-separated list of values enclosed in braces:

int myArr[5] = {10, 20, 30, 40, 50}; // initialize the array with 5 elements\n

In this case, the first element of the array will be 10, the second element will be 20, and so on.

You can also use loops to iterate over the elements of an array and perform operations on them. For example:

for (int i = 0; i < 5; i++) { \n  myArray[i] *= 2;\n}\n

This loop multiplies each element of the \"myArray\" by 2.

Arrays are a useful data structure in C++ because they allow you to store and manipulate collections of data in a structured way. However, they have some limitations, such as a fixed size that cannot be changed at runtime, and the potential for buffer overflow if you try to access elements beyond the end of the array.

"},{"location":"intro/08-arrays/#buffer-overflow","title":"Buffer overflow","text":"

A buffer overflow occurs when a program attempts to write more data to a fixed-size buffer than it can hold. This can happen when a program attempts to write more data to a buffer than the buffer can hold, or when a program attempts to read more data from a buffer than the buffer contains. This can happen when a program attempts to write more data to a buffer than the buffer can hold, or when a program attempts to read more data from a buffer than the buffer contains.

A buffer overflow can be caused by a number of different factors, including:

  • A program that attempts to write more data to a buffer than the buffer can hold
  • A program that attempts to read more data from a buffer than the buffer contains

Buffer overflow vulnerabilities are a common type of security vulnerability, as they can be exploited by malicious attackers to execute arbitrary code or gain unauthorized access to a system. To prevent buffer overflow vulnerabilities, it's important to carefully manage memory allocation and use bounds checking functions or techniques such as using safe C++ library functions like std::vector or std::array, and ensuring that input data is properly validated and sanitized.

"},{"location":"intro/08-arrays/#multi-dimensional-arrays","title":"Multi-dimensional arrays","text":"

A multi-dimensional array is an array of arrays. For example, a 2-dimensional array is an array of arrays, where each element of the array is itself an array. A 3-dimensional array is an array of 2-dimensional arrays, where each element of the array is itself a 2-dimensional array. And so on.

For example, to declare a two-dimensional array with 3 rows and 4 columns of integers, you would use the following code:

int arr[3][4]; // Declare a 2-dimensional array with 3 rows and 4 columns at the stack\n

You can access elements in a multidimensional array using multiple sets of square brackets. For example, to access the element at row 2 and column 3 of myArray, you would use the following code:

int element = myArray[1][2]; // Access the element at row 2 and column 3\n

In C++, you can have arrays with any number of dimensions, but keep in mind that as the number of dimensions increases, it becomes more difficult to manage and visualize the data.

"},{"location":"intro/08-arrays/#array-dynamic-allocation","title":"Array dynamic allocation","text":"

In some cases, you dont know the size of the array at compile time. In this case, you can use dynamic memory allocation to allocate the array at runtime. This is done using the new operator, which allocates a block of memory on the heap and returns a pointer to the beginning of the block. For example, to allocate an array of 5 integers on the heap, you would use the following code:

int *arr = new int[5]; // Allocate a block of memory on the heap\n

The above code allocates a block of memory on the heap that is large enough to hold 5 integers. The new operator returns a pointer to the beginning of the block, which is assigned to the pointer variable arr. You can then use the pointer to access the elements of the array. You can access individual elements of the array using the array subscript notation:

arr[0] = 10;\narr[1] = 20;\narr[2] = 30;\narr[3] = 40;\narr[4] = 50;\n

When you are done using the array, you should free the memory using the delete operator. For example, to free the memory allocated to the array in the previous example, you would use the following code:

delete[] arr; // Free the memory by telling the operation system you are done with it\narr = nullptr; // Reset the pointer to null to avoid dangling pointers and other bugs\n

The delete operator takes a pointer to the beginning of the block of memory to free. The [] operator is used to indicate that the block of memory contains an array, and that the delete operator should free the entire array.

"},{"location":"intro/08-arrays/#dynamic-allocation-of-multi-dimensional-arrays","title":"Dynamic allocation of multi-dimensional arrays","text":"

In the case of dynamically allocate memory for a multidimensional array, first you have to understand that in the same way you can have an array of arrays, you can have a pointer to a pointer. This is called a double pointer. So, if you want to allocate a 2-dimensional array dynamically, you can do it like this:

int lines, columns;\ncin >> lines >> columns;\nint **arr = new int*[lines]; // Allocate an array of pointers to pointers\nfor (int i = 0; i < lines; i++) {\n  arr[i] = new int[columns]; // Allocate an array of integers for each pointer\n}\n// do stuff with the array\nfor (int i = 0; i < lines; i++) {\n  delete[] arr[i]; // Free the memory for each array of integers\n}\ndelete[] arr; // Free the memory for the array of pointers\n
"},{"location":"intro/08-arrays/#smart-pointers-to-rescue","title":"Smart pointers to rescue","text":"

You probably noticed the number of bugs and vulnerabilities that can be caused by improper memory management. To help address that, C++ introduced smart pointers. The general purpose smart contract you will be mostly using is shared_ptr that in the end of the scope and when all references to it become 0 will automatically free the memory. The other smart pointers are unique_ptr and weak_ptr that are used in more advanced scenarios. But for now, we will focus on shared_ptr.

In C++11, smart pointers were introduced to help manage memory allocation and deallocation. Smart pointers are classes that wrap a pointer to a dynamically allocated object and provide additional features such as automatic memory management. The most commonly used smart pointers are std::unique_ptr and std::shared_ptr. The std::unique_ptr class is a smart pointer that owns and manages another object through a pointer and disposes of that object when the std::unique_ptr goes out of scope. The std::shared_ptr class is a smart pointer that retains shared ownership of an object through a pointer. Several std::shared_ptr objects may own the same object. The object is destroyed and its memory deallocated when either of the following happens:

  • the last remaining std::shared_ptr owning the object is:
    • destroyed
    • is assigned another pointer via operator= or reset()
    • is reset or released
    • moved from
    • is swapped with another std::shared_ptr using swap()
    • the function std::shared_ptr::swap() is called with the last remaining std::shared_ptr owning the object as an argument
  • the object is no longer reachable from the program (for example, when the program terminates)
  • the program:
    • throws an exception that is not caught within the same thread
    • calls terminating calls such as std::terminate(), std::abort(), std::exit(), or std::quick_exit()

To create a dynamic array of int using shared pointers, you can use the std::shared_ptr class template. Here's an example:

#include <memory> // for std::shared_ptr\nstd::shared_ptr<int[]> arr(new int[5]);\n

This creates a shared pointer to an array of 5 integers. The new int[5] expression dynamically allocates memory for the array on the heap, and the shared pointer takes ownership of the memory. When the shared pointer goes out of scope, the memory is automatically freed.

You can access individual elements of the array using the array subscript notation, just like with a regular C-style array:

arr[0] = 10;\narr[1] = 20;\narr[2] = 30;\narr[3] = 40;\narr[4] = 50;\n

To deallocate the memory, you don't need to call delete[] explicitly, because the shared pointer takes care of it automatically. When the last shared pointer that points to the array goes out of scope or is explicitly reset, the memory is deallocated automatically:

arr.reset(); // deallocates the memory and reset the shared pointer to null to avoid dangling pointers and other bugs\n

Shared pointers provide a convenient and safe way to manage dynamic memory in C++, because they automatically handle memory allocation and deallocation, and help prevent memory leaks and dangling pointers.

Smart pointers are no silver bullet. They are not a replacement for proper memory management, but they can help you avoid common memory management bugs and vulnerabilities. For example, smart pointers can help you avoid memory leaks, dangling pointers, and double frees. They can also help you avoid buffer overflow vulnerabilities by providing bounds checking functions.

"},{"location":"intro/08-arrays/#passing-arrays-to-functions","title":"Passing arrays to functions","text":"

You can pass arrays to functions in C++ in the same way that you pass any other variable to a function. For example, to pass an array to a function, you would use the following code:

void printArray(int arr[], int size) // Pass the array by reference to avoid copying the entire array\n{\n    for (int i = 0; i < size; ++i)\n        std::cout << arr[i] << ' ';\n    std::cout << '\\n';\n}\n

Alternativelly you can pass the array as a pointer:

void printArray(int *arr, int size)\n{\n    for (int i = 0; i < size; ++i)\n        std::cout << arr[i] << ' ';\n    std::cout << '\\n';\n}\n

If you want to pass a two dimension array, you can do it in multiple ways:

void printArray(int rows, int columns, int **arr); // Pass the array as a pointer of pointers\n

This approach is problematic as you can see it in depth here. It does not check for types and it is not safe. You can also pass the array as a pointer to an array:

void printArray(int rows, int arr[][10]); // if you know the number of columns and it is fixed, in this case 10 \n
void printArray(int rows, int (*arr)[10]); // if you know the number of columns and it is fixed, in this case 10 \n
void printArray(int arr[10][10]); // if you know the number of rows and columns and they are fixed, in this case both 10\n

There is others ways to pass arrays to functions, such as templates but they are more advanced and we will not cover them now.

"},{"location":"intro/08-arrays/#extra-standard-template-library-stl","title":"EXTRA: Standard Template Library (STL)","text":"

Those are the most common data structures that you will be using in C++. But it is outside the scope of this course to cover them in depth. So we will only give entry-points for you to learn more about them.

"},{"location":"intro/08-arrays/#arrays_1","title":"Arrays","text":"

If you are using fixed sized arrays, and want to be safe to avoid problems related to out of bounds, you should use the STL arrays. It is a template class that encapsulates fixed size arrays and adds protections for it. It is a safer alternative to C-style arrays. Read more about it here.

"},{"location":"intro/08-arrays/#vectors","title":"Vectors","text":"

Vectors are the safest way to deal with dynamic arrays in C++, the cpp core guideline even states that you should use it whenever you can. Vector is implemented in the standard template library and provide a lot of useful functions. Read more about them here.

"},{"location":"intro/08-arrays/#extra-curiosities","title":"Extra curiosities","text":"

Context on common bugs and vulnerabilities:

  • Weaknesses in the 2022 CWE Top 25 Most Dangerous Software Weaknesses
  • US Government enforces cyber security requirements
  • https://en.cppreference.com/w/cpp/language/array
"},{"location":"intro/09-recursion/","title":"Recursion","text":"

Recursion is a method of solving problems where the solution depends on solutions to smaller instances of the same problem. It is a common technique used in computer science, and is one of the central ideas of functional programming. Let's explore recursion by looking at some examples.

You have to be aware that recursion isn't always the best solution for a problem. Sometimes it can be more efficient to use a loop and a producer-consumer strategy instead of recursion. But, in some cases, recursion is the more elegant solution.

When you call functions inside functions, the compiler will store the return point, value and variables on the stack, and it has limited size. Each time you call a function, it is added to the top of the stack. When the function returns, it is removed from the top of the stack. The last function to be called is the first to be returned. This is called the call stack. A common source of problems in programming is when the call stack gets too big. This is called a stack overflow. This is why you should be careful when using recursion.

"},{"location":"intro/09-recursion/#fibonacci-numbers","title":"Fibonacci numbers","text":"

The Fibonacci numbers are a sequence of numbers where each number is the sum of the two numbers before it. The constraints are: the first number is 0, the second number is 1, it only run on integers and it is not negative. The sequence looks like this:

int fibonacci(int n) {\n    // base case\n    if (n == 0 || n == 1)\n        return n;\n    else // recursive case\n        return fibonacci(n - 1) + fibonacci(n - 2);\n}\n
"},{"location":"intro/09-recursion/#factorial-numbers","title":"Factorial numbers","text":"

The factorial of a number is the product of all the numbers from 1 to that number. It only works for positive numbers greater than 1.

int factorial(int n) {\n    // base case\n    if (n <= 1)\n        return 1;\n    else // recursive case\n        return n * factorial(n - 1);\n}\n
"},{"location":"intro/09-recursion/#divide-and-conquer","title":"Divide and Conquer","text":"

Divide and conquer is a method of solving problems by breaking them down into smaller subproblems. It is extensively used to reduce the complexity of some algorithms and increase readability.

"},{"location":"intro/09-recursion/#binary-search","title":"Binary search","text":"

Imagine that you already have a sorted array of numbers and you want to find the location of a specific number in that array. You can use a binary search to find it. The binary search works by dividing the array in half and checking if the number you are looking for is in the first half or the second half. If it is in the first half, you repeat the process with the first half of the array. If it is in the second half, you repeat the process with the second half of the array. You keep doing this until you find the number or you know that it is not in the array.

// recursive binary search on a sorted array to return the position of a number\nint binarySearch(int arr[], int start, int end, int number) {\n    // base case\n    if (start > end)\n        return -1; // number not found\n    else {\n        // recursive case\n        int mid = (start + end) / 2;\n        // return the middle if wi find the number\n        if (arr[mid] == number)\n            return mid;\n        // if the number is smaller than the middle, search in left side\n        else if (arr[mid] > number)\n            return binarySearch(arr, start, mid - 1, number);\n        // if the number is bigger than the middle, search in right side\n        else\n            return binarySearch(arr, mid + 1, end, number);\n    }\n}\n

Binary search plays a fundamental role in Newton's method, which is a method to find and approximate the result of complex mathematical functions such as the square root of a number. Binary-sort is extensively used in sorting algorithms such as quick sort and merge sort.

"},{"location":"intro/09-recursion/#merge-sort","title":"Merge sort","text":"

Please refer to the Merge sort section in the sorting chapter.

"},{"location":"intro/10-sorting/","title":"Sorting algorithms","text":"

TODO: Note for my furune self: add complete example of how to use those algorithms

Sorting are algorithms that put elements of a list in a certain order. It is cruxial to understand the basics of sorting in order to start understanding more complex algorithms and why you have to pay attention to efficiency.

Before going deep, please watch this video:

SEIZURE WARNING!!

and this one:

Explore the concepts interactively at visualgo.net.

Try to answer the following questions, before continuing:

  • What are the slowest sorting algorithms?
  • What are the fastest sorting algorithms?
  • Con you infer the difference between a stable and unstable sorting algorithm?
  • What is the difference between a comparison and a non-comparison sorting algorithm?
  • What would be an in-place and a non-in-place sorting algorithm?
  • What is the difference between a recursive and a non-recursive sorting algorithm?
"},{"location":"intro/10-sorting/#the-basics","title":"The basics","text":"

Many of the algorithms will have to swap elements from the array, vector or list. In order to do that, we will need to create a function that swaps two elements. Here is the function:

// A function to swap two elements\nvoid swap(int *xp, int *yp) {  \n    int temp = *xp;  \n    *xp = *yp;  \n    *yp = temp;  \n}  \n

The * operator used in the function signature means that the function will receive a pointer to an integer. So it will efectivelly change the content in another scope. The * operator is used to dereference a pointer, which means that it will return the value stored in the memory address pointed by the pointer. Given the declaration is int *xp, the *xp will return the value stored in the memory address pointed by xp.

Alternatively you could use the & operator to pass the reference to that variable in the similar fashion, but the usage wont be requiring the * before the variable name as follows:

// A function to swap two elements\nvoid swap(int &xp, int &yp) {  \n    int temp = xp;  \n    xp = yp;  \n    yp = temp;  \n}  \n

The result is the same, but the usage is different. The first one is more common in C++, while the second one is more common in C.

"},{"location":"intro/10-sorting/#bubble-sort","title":"Bubble sort","text":"

Bubble sort is the simplest sorting algorithm that works by repeatedly swapping the adjacent elements if they are in wrong order.

// A function to implement bubble sort\nvoid bubbleSort(int arr[], int n) {  \n    // if the array has only one element, it is already sorted\n    if(n<=1)\n        return;\n\n    int i, j;  \n    for (i = 0; i < n-1; i++)\n        // Last i elements are already in place  \n        for (j = 0; j < n-i-1; j++)  \n            if (arr[j] > arr[j+1])  \n                swap(&arr[j], &arr[j+1]);  \n}  \n

As you can see, the algorithm is very simple, but it is not very efficient. It has a time complexity of O(n^2) and a space complexity of O(1).

One of the drawbacks of this algorithm is the sheer amount of swaps. In the worst scenario, it does n^2 swaps, which is a lot. If your machine have slow writes, it will be very slow.

"},{"location":"intro/10-sorting/#insertion-sort","title":"Insertion sort","text":"

Insertion sort is a simple sorting algorithm that works the way we sort playing cards in our hands. You pick one card and insert it in the correct position in the sorted part of the list. You repeat this process until you have sorted the whole list. Here is the code:

// A function to implement insertion sort\nvoid insertionSort(int arr[], int n) {  \n    // if the array has only one element, it is already sorted\n    if(n<=1)\n        return;\n\n    int i, key, j;  \n    for (i = 1; i < n; i++) {  \n        key = arr[i];  \n        j = i - 1;  \n\n        /* Move elements of arr[0..i-1], that are  \n        greater than key, to one position ahead  \n        of their current position */\n        while (j >= 0 && arr[j] > key) {  \n            arr[j + 1] = arr[j];  \n            j = j - 1;  \n        }  \n        arr[j + 1] = key;  \n    }  \n}  \n

It falls in the same category of algorithms that are very simple, but not very efficient. It has a time complexity of O(n^2) and a space complexity of O(1).

Although it have the same complexity as bubble sort, it is a little bit more efficient. It does less swaps than bubble sort, but it is still not very efficient. It will swap all numbers to the left of the current number, which is a lot of swaps.

"},{"location":"intro/10-sorting/#selection-sort","title":"Selection sort","text":"

Selection sort is a simple sorting algorithm. This sorting algorithm is an in-place comparison-based algorithm in which the list is divided into two parts, the sorted part at the left end and the unsorted part at the right end. Initially, the sorted part is empty and the unsorted part is the entire list. The smallest element is selected from the unsorted array and swapped with the leftmost element, and that element becomes a part of the sorted array. This process continues moving unsorted array boundary by one element to the right. Here is the code:

// A function to implement selection sort\nvoid selectionSort(int arr[], int n) {\n    // if the array has only one element, it is already sorted\n    if(n<=1)\n        return;\n\n    int i, j, min_idx;  \n\n    // One by one move boundary of unsorted subarray  \n    for (i = 0; i < n-1; i++) {  \n        // Find the minimum element in unsorted array  \n        min_idx = i;  \n        for (j = i+1; j < n; j++)  \n        if (arr[j] < arr[min_idx])  \n            min_idx = j;  \n\n        // Swap the found minimum element with the first element  \n        swap(&arr[min_idx], &arr[i]);  \n    }  \n}  \n

It is also a simple algorithm, but it is a little bit more efficient than the previous two. It has a time complexity of O(n^2) and a space complexity of O(1).

It does less swaps than the previous two algorithms, potentially n swaps, but it is still not very efficient. It selects for the current position, the smallest number to the right of it and swaps it with the current number. It does this for every number in the list, which fatally a lot of swaps.

"},{"location":"intro/10-sorting/#merge-sort","title":"Merge sort","text":"

Merge sort is a divide and conquer algorithm. It divides input array in two halves, calls itself for the two halves and then merges the two sorted halves. Here is the code:

// recursive merge sort\nvoid mergeSort(int arr[], int l, int r) {  \n    if (l < r) {  \n        // Same as (l+r)/2, but avoids overflow for  \n        // large l and h  \n        int m = l+(r-l)/2;  \n\n        // Sort first and second halves  \n        mergeSort(arr, l, m);  \n        mergeSort(arr, m+1, r);  \n\n        merge(arr, l, m, r);  \n    }  \n}  \n\n// merge function\nvoid merge(int arr[], int l, int m, int r) {  \n    int i, j, k;  \n    int n1 = m - l + 1;  \n    int n2 =  r - m;  \n\n    // allocate memory for the sub arrays\n    int *L = new int[n1];\n    int *R = new int[n2];\n\n    /* Copy data to temp arrays L[] and R[] */\n    for (i = 0; i < n1; i++)  \n        L[i] = arr[l + i];  \n    for (j = 0; j < n2; j++)  \n        R[j] = arr[m + 1+ j];  \n\n    /* Merge the temp arrays back into arr[l..r]*/\n    i = 0; // Initial index of first subarray  \n    j = 0; // Initial index of second subarray  \n    k = l; // Initial index of merged subarray  \n    while (i < n1 && j < n2) {  \n        if (L[i] <= R[j]) {  \n            arr[k] = L[i];  \n            i++;  \n        }  \n        else {  \n            arr[k] = R[j];  \n            j++;  \n        }  \n        k++;  \n    }  \n\n    /* Copy the remaining elements of L[], if there are any */\n    while (i < n1) {  \n        arr[k] = L[i];  \n        i++;  \n        k++;  \n    }  \n\n    /* Copy the remaining elements of R[], if there  \n    are any */\n    while (j < n2) {  \n        arr[k] = R[j];  \n        j++;  \n        k++;  \n    }\n\n    // deallocate memory\n    delete[] L;\n    delete[] R;\n}  \n

It is a very efficient algorithm that needs extra memory to work. It has a time complexity of O(n*log(n)) and a space complexity of O(n). It is a very efficient algorithm, but it is not very simple. It is quite more complex than the previous algorithms. It is a divide and conquer algorithm, which means that it divides the problem in smaller problems and solves them. It divides the list in two halves, sorts them and then merges them. It does this recursively until it has a list of size 1, which is sorted. Then it merges the lists and returns the sorted list.

"},{"location":"intro/10-sorting/#quick-sort","title":"Quick sort","text":"

Quick sort is a divide and conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot. Here is the code:

// recursive quick sort\nvoid quickSort(int arr[], int low, int high) {  \n    if (low < high) {  \n        /* pi is partitioning index, arr[p] is now  \n        at right place */\n        int pi = partition(arr, low, high);  \n\n        // Separately sort elements before  \n        // partition and after partition  \n        quickSort(arr, low, pi - 1);  \n        quickSort(arr, pi + 1, high);  \n    }  \n}\n\n// partition function\nint partition (int arr[], int low, int high) {  \n    int pivot = arr[high]; // pivot  \n    int i = (low - 1); // Index of smaller element  \n\n    for (int j = low; j <= high- 1; j++) {  \n        // If current element is smaller than or  \n        // equal to pivot  \n        if (arr[j] <= pivot) {  \n            i++; // increment index of smaller element  \n            swap(&arr[i], &arr[j]);  \n        }  \n    }  \n    swap(&arr[i + 1], &arr[high]);  \n    return (i + 1);  \n}  \n

It is a very efficient algorithm that don't needs extra memory, which means it is in-place. In average, it can be as fast as mergesort with time complexity of O(n*log(n)), but in the worst case it can be as slow as O(n^2). But it is a better choice if you are not allowed to use extra memory. It is a divide and conquer algorithm, which means that it divides the problem in smaller problems and solves them. It selects a pivot and partitions the list around the pivot. It does this recursively until it has a list of size 1, which is sorted. Then it merges the lists and returns the sorted list.

"},{"location":"intro/10-sorting/#counting-sort","title":"Counting sort","text":"

Counting sort is a specialized algorithm for sorting numbers. It only works well if you have a small range of numbers. It counts the number of occurrences of each number and then uses the count to place the numbers in the right position. Here is the code:

// counting sort\nvoid countingSort(int arr[], int n) {  \n    // if the array has only one element, it is already sorted\n    if(n<=1)\n        return;\n\n    int max=arr[0];\n    int min[0];\n\n    // find the max and min number\n    for(int i=0; i<n; i++) {\n        if(arr[i]>max) {\n            max=arr[i];\n        }\n        if(arr[i]<min) {\n            min=arr[i];\n        }\n    }\n\n    // allocate memory for the count array\n    int *count = new int[max-min+1];\n\n    // initialize the count array\n    for(int i=0; i<max-min+1; i++) {\n        count[i]=0;\n    }\n\n    // count the number of occurrences of each number\n    for(int i=0; i<n; i++) {\n        count[arr[i]-min]++;\n    }\n\n    // place the numbers in the right position\n    int j=0;\n    for(int i=0; i<max-min+1; i++) {\n        while(count[i]>0) {\n            arr[j]=i+min;\n            j++;\n            count[i]--;\n        }\n    }\n\n    // deallocate memory\n    delete[] count;\n}\n

Counting sort is a very efficient sorting algorithm which do not rely on comparisons. It has a time complexity of O(n+k) where k is the range of numbers. Space complexity is O(k) which means it is not an in-place sorting algorithm. It is a very efficient algorithm, but it is not very simple. It counts the number of occurrences of each number and then uses the count to place the numbers in the right position.

"},{"location":"intro/10-sorting/#radix-sort","title":"Radix sort","text":"

Radix sort is a specialized algorithm for sorting numbers. It only works well if you have a small range of numbers. It sorts the numbers by their digits. Here is the code:

// Radix sort\nvoid radixSort(int arr[], int n) {\n    // if the array has only one element, return\n    if(n<=1)\n        return;\n\n    // initialize the max number as the first number. \n    int max=arr[0];\n\n    // find the max number\n    for(int i=0; i<n; i++) {\n        if(arr[i]>max) {\n            max=arr[i];\n        }\n    }\n\n    // allocate memory for the count array\n    int *count = new int[10]; // 10 digits\n\n    // allocate memory for the output array\n    int *output = new int[n];\n\n    // do counting sort for every digit\n    for(int exp=1; max/exp>0; exp*=10) {\n        // initialize the count array\n        for(int i=0; i<10; i++) {\n            count[i]=0;\n        }\n\n        // count the number of occurrences of each number\n        for(int i=0; i<n; i++) {\n            count[(arr[i]/exp)%10]++;\n        }\n\n        // change count[i] so that count[i] now contains actual position of this digit in output[]\n        for(int i=1; i<10; i++) {\n            count[i]+=count[i-1];\n        }\n\n        // build the output array\n        for(int i=n-1; i>=0; i--) {\n            output[count[(arr[i]/exp)%10]-1]=arr[i];\n            count[(arr[i]/exp)%10]--;\n        }\n\n        // copy the output array to the input array\n        for(int i=0; i<n; i++) {\n            arr[i]=output[i];\n        }\n    }\n}\n

Radix sort is just a counting sort that is applied to every digit. It has a time complexity of O(n*k) where k is the number of digits.

"},{"location":"intro/10-sorting/#conclusion","title":"Conclusion","text":"

This is the first time we will talk about efficiency, and for now on, you will start evaluating and taking care about your algorithms' efficiency. You will learn more about efficiency in the next semester and course when we cover data structures.

"},{"location":"intro/11-structs/","title":"Structs","text":"

wip

"},{"location":"introgameprog/","title":"Introduction to Game Programming - Syllabus","text":"

Students will be introduced to and familiarized with their roles as Game Programmers. The course explores the various disciplines and vocations within game programming, provides an overview of the skills that make a game programmer successful, and presents both industry and academic contexts for their duties. Through hands-on projects using modern game technology, students will gain practical experience in their craft. source

"},{"location":"introgameprog/#requirements","title":"Requirements","text":"

No requirements

"},{"location":"introgameprog/#textbook","title":"Textbook","text":"
  • No text books
"},{"location":"introgameprog/#student-centered-learning-outcomes","title":"Student-centered Learning Outcomes","text":"Bloom's Taxonomy on Learning Outcomes

Upon completion of the Intro to game programming, students should be able to:

"},{"location":"introgameprog/#objective-outcomes","title":"Objective Outcomes","text":"
  • Understanding Game Development Roles: Students will be able to identify and describe the various disciplines and vocations within game programming, including different positions and fields within the industry.
  • Exploration of Game Development Tools: Students will gain familiarity with modern game development tools, including hands-on experience with game engines like Unity.
  • Historical and Industry Contexts: Students will understand the history of game development and current industry trends, challenges, and issues, enabling them to contextualize their work within the broader landscape of the game development industry.
  • Practical Application through Projects: Students will develop practical skills by working on game development projects, including prototyping, brainstorming, quality assurance (QA), and testing.
  • Effective Communication and Presentation: Students will practice and demonstrate their ability to effectively communicate and present their ideas and projects, both in written and oral formats.
  • Insight into Game Development Success Factors: Students will learn about the key skills and attributes that contribute to success in game development, including collaboration, creativity, and technical proficiency.
  • Interaction with Industry Professionals: Through interviews and discussions with game developers, students will gain insights into the day-to-day responsibilities and career paths of professionals in the game development industry.
  • Introduction to Game Production: Students will be introduced to the basics of game production, learning how to manage and contribute to game development projects from concept to completion.
"},{"location":"introgameprog/#late-policy","title":"Late policy","text":"

Every day an assignment is late your maximum grade will be reduced by 1% up to 25 days, after that you will receive a flat 25% penalty.

My goal is to grade the assignments no later than 1 week after submission, but in exceptional cases where I am struggling with lots of submissions, it could take 2 weeks maximum (in my career this has happened twice). Late submissions will be graded only once I finish grading all the others.

If you have any accommodations and want to use your rights, or if you are facing any personal issues (no need to state what it is), I will grant extra time or grade fairly only if you send a comment on Canvas in the assignment before the deadline. Feel free to book meetings with me if you need to talk about it.

"},{"location":"introgameprog/#dei-teaching-statement","title":"DEI & Teaching Statement","text":"
  • I am a autistic L1 person and I am doing my best to be a good teacher for you;
  • I am from Brazil and we are pretty diverse people, I will treat everyone with respect and I expect the same from you;
  • I can clearly understand many of your struggles, because I face lots of learning issues too, but sometimes my empathy might run out, and you will have to help me understand your issues so I can effectively help you;
  • Please be patient with me, and I will be patient with you in return. I am always open to listen to you and help you succeed;
  • I am very good at 1-1 support, so you are welcome to book weekly meetings with me to help you;
  • I am a very open person, so you can ask me anything. I will not answer everything, but I will try to help you to find the answers;
  • If you feel that you are failing, please reach out to me, remember: I want you to succeed. Allow me to create contingency plans for you.
"},{"location":"introgameprog/#schedule-for-fall-2024","title":"Schedule for Fall 2024","text":"

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use this github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Event Date Classes Begin Aug. 26 Add/Drop Aug. 26 - 30 No Classes - College remains open Sept. 20 Indigenous Peoples Day Holiday Observance Oct. 14 Registration for Spring Classes Oct. 28 - Nov. 8 Last Day to Withdraw Nov. 8 Thanksgiving Break Nov. 25 - Nov. 29 Last Day of Classes Dec. 6 Finals Dec. 9 - Dec. 13 Winter Break Dec. 16 - Jan. 10

Note

This schedule is based on other's works, specially Eric Winebredder, Scott Barret and Dean Lawson. I am very grateful for their work and I am trying to adapt it to my own style. Please add them to your linkedin network, follow their work and say thanks to them for me!

"},{"location":"introgameprog/#week-1","title":"Week 1","text":"
  • Week 1. 2024/08/26
  • Topics:
    • Syllabus, Icebreakers.
    • Success in Game Development
  • Assignment:
  • Interview a game programmer
"},{"location":"introgameprog/#week-2","title":"Week 2","text":"
  • Week 2. 2024/09/02
  • Topics:
    • Game Dev History
  • Assignment: Game Tools Exploration
"},{"location":"introgameprog/#week-3","title":"Week 3","text":"
  • Week 3. 2024/09/09
  • Topic: Game Development Fields
  • Assignment: Job Hunt
"},{"location":"introgameprog/#week-4","title":"Week 4","text":"
  • Week 4. 2024/09/16
  • Topic: Game Industry Issues
  • Assignment: Research on Game Industry Issues
"},{"location":"introgameprog/#week-5","title":"Week 5","text":"
  • Week 5. 2024/09/23
  • Topic: Game Issues Work
  • Assignment: Game Issues Research
"},{"location":"introgameprog/#week-6","title":"Week 6","text":"
  • Week 6. 2024/09/30
  • Topic: Game Issues Presentations
  • Assignment: Game Issues Presentation
"},{"location":"introgameprog/#week-7","title":"Week 7","text":"
  • Week 7. 2024/10/07
  • Topic: Unity + Git
  • Assignment:
    • Repo setup
    • Git merge check
"},{"location":"introgameprog/#week-8","title":"Week 8","text":"
  • Week 8. 2024/10/14
  • Topic: Unity + Git
  • Assignment: Simple Unity Project
"},{"location":"introgameprog/#week-9","title":"Week 9","text":"
  • Week 9. 2024/10/21
  • Topic:
    • Intro to Game Production Pipeline
    • Tools for Brainstorming and Planning
  • Assignment:
    • Idea Prototyping
    • Game Idea Presentation
"},{"location":"introgameprog/#week-10","title":"Week 10","text":"
  • Week 10. 2024/10/28
  • Topic: Ideation Presentations
  • Assignment: Game Prototype
"},{"location":"introgameprog/#week-11","title":"Week 11","text":"
  • Week 11. 2024/11/04
  • Topic: Work sessions
  • Assignment: Game Prototype Checkpoint
"},{"location":"introgameprog/#week-12","title":"Week 12","text":"
  • Week 12. 2024/11/11
  • Topic: QA Testing
  • Assignment: Final Project Work
"},{"location":"introgameprog/#week-13","title":"Week 13","text":"
  • Week 13. 2024/11/18
  • Topic: QA Testing
  • Assignment: Final Project
"},{"location":"introgameprog/#week-14","title":"Week 14","text":"
  • Week 14. 2024/11/25
  • Topic: BREAK
"},{"location":"introgameprog/#week-15","title":"Week 15","text":"
  • Week 15. 2024/12/02
  • Topic: QA, Work sessions, How to publish
  • Assignment: Final Project Presentations
"},{"location":"introgameprog/#finals","title":"Finals","text":"
  • Week 16. 2024/12/09
  • Topic: Presentations
"},{"location":"introgameprog/02-GameDevTools/","title":"Game development tools","text":"

There are plenty of tools available for game development. I dont want to cover all of them this is just a brief overview of the most common ones.

The most types of tools for developers are:

  • Game Engines
  • Game Development Frameworks / Libraries
  • Programming editors and IDEs

But there are other types of tools that are also important for game development:

  • 3D Modeling Tools
  • 2D Art and texture Tools
  • Sound and Music Tools
  • Planning and Management Tools
  • Marketing and Monetization Tools
  • Testing Tools
  • Publishing and Distribution Tools and platforms
  • Analytics, metrics, remote config and A/B Tools
"},{"location":"introgameprog/02-GameDevTools/#game-engines","title":"Game Engines","text":"

The powerhouses of game development, game engines are the software that packs lots of tools and features needed to create a game. They are the most important tool in a game developer's arsenal. Ex.: Unity3D, Unreal Engine, and Godot.

You might understand a game engine as the \"orchestrator of the game\".

Note

Not all game engines provides embedded visual editors (ex.: Ogre3D), some of them are just a bunch of libraries and tools nicely integrated that you can use to create your game.

Instead of listing all the game engines, I suggest you to search for the most popular ones and try them out. I suggest going to search engines and type some of these queries:

  • \"Game engine landscape\"
  • \"Top game engines\"
  • \"Game engine market infographic\"
  • \"Game engine popularity\"
  • \"Game engine comparison\"

If you are a open-source enthusiast, try to explore game engines on github. A nice search query involves the word \"game engine\" and the word \"awesome\", but here goes some links to help you:

  • GitHub Collection of Game Engines
  • Awesome GameEngines
"},{"location":"introgameprog/02-GameDevTools/#game-frameworks-libraries","title":"Game Frameworks / Libraries","text":"

Sometimes you don't need a full game engine, or you need to create something that no other one provides. In this case, you can use a game development framework or library. Ex.: SDL3, LibGDX, Phaser, and others.

If you follow this path, you will have more control over your game, but you will need to code more things that are already done in game engines.

I am afraid there are so many frameworks and libraries that I can't list them all here. But you can search for them using the same queries I suggested for game engines, but replacing the word \"engine\" with \"framework\" or \"library\", you will get amazed by the amount of tools available. Try it!

"},{"location":"introgameprog/02-GameDevTools/#assignment","title":"Assignment","text":"
  1. Create an account on GitHub. If you don't want to expose yourself publicly, create a new account with a nickname unrelated to your real name. You can use any AI tool to help brainstorm a nickname for you. Extra: apply to GitHub Student Pack.
  2. Create a Repository on GitHub. The name of the repo should have \"Awesome\" somewhere in the name, and it should be related to game development tools. Ex.: \"Awesome-GameDev-Tools\". This will optmize SEO and make your repository more visible to others.
  3. Probably the repo will already have a README.md file, if not, create a README.md file on the root of your repo. Write a brief introduction to the repository and list some of the tools you are planning to cover.
  4. You should research and list at least 10 tools that you think are important for game development. Please explore others tools than the main-stream. Describe briefly each tool and provide a link to the tool's website or repository.
  5. You will present some of them in class, so be creative and avoid listing tools that everyone knows.
"},{"location":"portfolio/","title":"Game Developer's Portfolio","text":"

Creating and maintaining a portfolio is a crucial part in any game developer's job search and career.? Portfolios are especially challenging for programmers, since the work presented is not inherently visual, yet it must still effectively demonstrate the individual's prowess and skills in their discipline.? This course provides Game Programmers a formal opportunity to sum up their experience in the major and produce a portfolio worthy of presentation at the Senior Show.? In this course, students discuss and implement pertinent portfolio materials for programmers, such as websites, repositories and demo reels.? Students will have an opportunity to spearhead an entirely solo project to add as a centerpiece to their materials. Source

"},{"location":"portfolio/#requirements","title":"Requirements","text":"
  • 90 Credits
"},{"location":"portfolio/#student-centered-learning-outcomes","title":"Student-centered Learning Outcomes","text":"Bloom's Taxonomy on Learning Outcomes

Upon completion of the Game Developer's Portfolio course, students should be able to:

"},{"location":"portfolio/#objective-outcomes","title":"Objective Outcomes","text":"
  • Demonstrate Proficiency in Programming Languages:
    • Showcase competence in relevant programming languages commonly used in game development.
    • Implement and explain code snippets that highlight problem-solving skills and efficiency.
  • Develop an Individual Project:
    • Spearhead a solo game development project to showcase the ability to conceive, plan, and execute a complete game;
    • Demonstrate a deep understanding of programming concepts through the development of a unique and challenging project.
  • Create a Professional Portfolio Website:
    • Design and develop a visually appealing and user-friendly portfolio website to showcase programming projects.
    • Utilize web development tools and frameworks to enhance the presentation of coding projects.
  • Build a Source Code Repository:
    • Establish and maintain a version-controlled repository (e.g., GitHub) containing well-documented code samples.
    • Demonstrate proficiency in using version control tools and collaborative development practices.
  • Develop a Demo Reel:
    • Create a compelling demo reel that effectively communicates programming skills and contributions to game projects.
    • Edit and present code snippets in a clear and concise manner within the demo reel.
  • Articulate Programming Contributions:
    • Clearly communicate the role and impact of programming contributions in game development projects.
    • Develop the ability to discuss technical aspects of projects in a non-technical manner for diverse audiences.
  • Understand Industry Standards and Best Practices:
    • Adhere to industry standards and best practices in game programming.
    • Apply knowledge of optimization, performance, and coding conventions commonly used in the game development industry.
  • Prepare for the Job Search and Senior Show:
    • Develop skills in resume writing, cover letter creation, and interview preparation specific to game programming roles.
    • Prepare and present the portfolio effectively at the Senior Show or similar events to potential employers and industry professionals.
  • Receive and Provide Constructive Feedback:
    • Participate in peer reviews and constructive critiques to enhance the quality of portfolio materials.
    • Provide thoughtful feedback to peers on both the technical and presentation aspects of their portfolios.
  • Reflect on Learning and Career Goals:
    • Reflect on personal learning experiences and identify areas for continuous improvement in game programming skills.
    • Develop a clear understanding of career goals and create a plan for ongoing professional development in the game development industry.
"},{"location":"portfolio/#schedule-for-spring-2024","title":"Schedule for Spring 2024","text":"

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Date Event Jan 16 Classes Begin Jan 16 - 22 Add/Drop Feb 26 - March 1 Midterms March 11 - March 15 Spring Break March 25 - April 5 Registration for Fall Classes April 5 Last Day to Withdraw April 8 - 19 Idea Evaluation April 12 No Classes - College remains open April 26 Last Day of Classes April 29 - May 3 Finals May 11 Commencement Week Date Topic 1 2024/01/15 Introduction 2 2024/01/22 Case Studies 3 2024/01/29 Game Developer Portfolio Structure 4 2024/02/05 Communication & Audience 5 2024/02/12 Strategy & Analytics 6 2024/02/19 Demo Reels 7 2024/02/26 Frontend 8 2024/03/04 Content Management System 9 2024/03/11 BREAK 10 2024/03/18 Final Project & Coding Interviews 11 2024/03/25 Hosting and Domain 12 2023/04/01 Dynamic Content & Blogs 13 2023/04/08 Promoting 14 2023/04/15 Cover Letters 15 2023/04/22 Traditional CVs 16 2023/04/26 FINALS"},{"location":"portfolio/01-introduction/","title":"Introduction","text":"

A game developer portfolio is a collection of materials that showcase a game developer's skills, experience, and accomplishments. It is typically used by game developers to demonstrate their abilities to potential employers, clients, or partners, and may include a variety of materials such as:

  • A resume or CV: This should highlight your education, work experience, and skills relevant to game development.
  • Examples of your work: This can include demos, prototypes, or completed games that you have developed or contributed to. It's a good idea to include links to any online versions of your work, as well as screenshots or video trailers.
  • A portfolio website: Many game developers choose to create a website specifically for their portfolio, which can include additional information about their skills and experience, as well as links to their work.
  • Blogs, articles, or other writing: If you have written about game development or related topics, you may want to include these in your portfolio to show your knowledge and expertise.
  • Testimonials or references: Including positive feedback from clients or colleagues can help to demonstrate the quality of your work.

Overall, a game developer portfolio should be designed to demonstrate your abilities and accomplishments in a clear and concise way, and should be tailored to the specific needs and goals of the person or organization you are presenting it to.

Building a portfolio is not only about you, it is about making the life easier of the ones interested on you by giving insights if they should hire you, follow you or anything else. In order to make people understand you, you have to know yourself better.

"},{"location":"portfolio/01-introduction/#who-are-you-what-you-excel-and-what-do-you-enjoy-doing","title":"Who are you, what you excel and what do you enjoy doing?","text":"

In your portfolio, you will have to express yourself in a way that others can understand who you are, and it can be challenging for some. In order do help you discover who you are, what you excel, and what do you really enjoy doing. I will be briefly vague here to point some emotional support and reasoning to help you answer the question. If you are clear about that, please skip this entire section. Here goes a small amount of advices I wish I have heard when I was young.

Ikigai Note

The above image links to a very good reference to understand the drives that you should be aware while taking decisions on your future career. Visit it.

You are a complex being and hard to define. I know. It is hard to put yourself in a frame or box, but this process is relevant to make the life of the others to evaluate if they want more you or not. If for some reason a person is reading your portfolio, it means that you are ahead of the others, so you must respect their time and goals while they are reading your content.

What you do, do not define what you are, you can even work with something you dont love as long it is part of a bigger plan. Given that, you have to know how to differentiate yourself from your work while respecting your feelings. The sweet spot is when you mix who you are with what you do, and you have nice feelings about it. But this can be hard to achieve and require maturity to mix things. If you dont have a clear understand of those aspects of yourself, you will be subjected to be exploited by bad companies and managers.

It is totally fine try to excel some job you are not passionate. You just have to find means to make your time doing it as enjoyable as possible. In the end of the journey it will slowly become something you can be proud of, and you will become a different person than the one you are now. Understanding this kind of mentality will help you endure more and be more resilient to problems.

Keep track of your progress towards your goal. First of all, have a clear goal, so you can build a path to it. Otherwise, any path would sound just like any other apathetic path. Having a clear goal will make your path shine and easy to choose. It will help you in difficult moments where you feel uncomfortable by being just a small piece of a machinery. You will be able to act as part of machine while you need to achieve your goal as a necessary step.

Focus on always keep track on your evolution on your journey to excellence. Don't compare too much yourself to the others, everyone is facing a different journey and everyone took different paths in their career that probably you didn't have the option to chose in the past. But you cannot be uncritical either, you have to analyse your progress and check if your current path is making you life good, you have to take a decision to change the plan or even the goal with the new information you learned through the current path you are pursuing.

In other point of view, you wont start your career as senior developer, so you have to build your own path. Making mistakes is part of the process, and that is the reason you will be gradually exposed to big things. You should accept yourself, don't push too hard, and do some basic stuff. Just accept the challenges of doing something not fancy, but relevant to build your career.

"},{"location":"portfolio/01-introduction/#define-and-state-your-mission-and-goal","title":"Define and state your mission and goal","text":"
  • Are you a generalist or a specialist type?
  • What position you are looking for?
  • What kind of person you want to become?
"},{"location":"portfolio/01-introduction/#gather-information","title":"Gather information","text":"

In order to build a good portfolio, you will need to gather information about yourself and your work. In the process you will discover yourself. It will feels like looking to a mirror for the first time.

If you didnt published yot your projects on itchio, github, or any other platform, now it is a good moment for doing it. Pay attention that if you are going to share your code publicly, you have to avoid sharing content that do not belong to you. In other words, avoid copyright infringements.

"},{"location":"portfolio/01-introduction/#proof-of-your-accomplishments","title":"Proof of your accomplishments","text":"

It is a good practice to always take screenshots, use web archive or any means to prove what you are stating. Some games got lost in time, they die or become unavailable in the long term.

Personal advice

In my case, we developed a very successful game in the past, and because of some problems with investors and judicial dispute, we had to shut down the game. But it was one of the most successful games in that year, it was nominated to Unity Awards and it was the most downloaded racing game. The only things that I can showcase now are print-screens, recorded videos and web-archive pages. So it is something that can make you survive the questions.

"},{"location":"portfolio/01-introduction/#videos-photos-or-lightweight-web-builds","title":"Videos, photos, or lightweight web builds","text":"

A good way to express your work is to show it in a form of videos, or photos. If your game is small enough to be embedded, or you can strip the most relevant part of it and built for web(webgl, wasm etc), try to publish the relevant part of it online, but do not over-do it, because it will take too much time to craft a good interaction.

"},{"location":"portfolio/01-introduction/#homework","title":"Homework","text":"
  1. Define your domain name;
    • I usually search domains here and buy on wherever is cheaper, usually here
  2. Find a good portfolio to follow;
  3. Design the scaffold / wireframe of what you want to show;
  4. Gather the data you want to show;
  5. Think on catchphrases and call to actions.
"},{"location":"portfolio/02-cases/","title":"Case Study","text":""},{"location":"portfolio/02-cases/#index","title":"Index","text":"
  • Activity 1
  • Activity 2
  • Considerations
  • Evaluated Portfolios

This class will be focused in planning, portfolio evaluation, github processes, ci/cd and in-class activities.

"},{"location":"portfolio/02-cases/#activity-1","title":"Activity 1","text":"

Start setting up your Github pages. We are going to use github pages mostly for two intentions: Webpage hosting for your portfolio and Demo project hosting.

"},{"location":"portfolio/02-cases/#webpage","title":"Webpage","text":"

For your webpage, you can develop something from ground up using your preferred web framework and we are going to show you how to do it, but the fastest way is to just follow any template. Here goes a bunch of open sourced developer portfolios you can fork and modify for your intent. https://github.com/topics/developer-portfolio?l=html . Try to take a look on them and check if you want to fork any of them. So in this activity you will have to fork and try to run a clone of a portfolio you like just to got into some action and discover how things work.

  1. Find a developer portfolio on github
  2. Fork it
  3. Clone in your machine
  4. Make some changes
  5. Build it
  6. Deploy it to gh-pages either via automated ci/cd or via publishing a build from a empty branch or the main one
"},{"location":"portfolio/02-cases/#demo-reels","title":"Demo reels","text":"

For project demo, game, or whatever interaction you want to allow the user to do, I built some boilerplates for you. Later on, you will be able to embed those webgl/html5 builds into your portfolio, so it is a good moment for you to start doing it now. As extras, optionally you can add badges for your repo from here: https://shields.io/

"},{"location":"portfolio/02-cases/#sdl2","title":"SDL2","text":"

In order to showcase your ability to build something from ground up, this repo holds a boilerplate with C++, SDL2, IMGUI, SDL2IMAGE, SDL2TTF, SDL2MIXER, CI/CD automation for automatic deployment: https://github.com/InfiniBrains/SDL2-CPM-CMake-Example

  1. fork it
  2. go to the repo settings, actions, general, in the bottom, enable workflow permission, read and write, save
  3. run github action at least once
  4. enable actions and automatic page deployment from a branch gh-pages
"},{"location":"portfolio/02-cases/#ai-sdl2","title":"AI + SDL2","text":"

If you enjoy AI programming and want to test yourself, you can try forking this repo and implement what is inside the examples folder https://github.com/InfiniBrains/mobagen

  1. fork it
  2. run github action at least once
  3. enable actions and automatic page deployment from a branch gh-pages
"},{"location":"portfolio/02-cases/#unity","title":"Unity","text":"

If you want to showcase your ability with Untiy, you can follow this boilerplate to have an automatic build set up. https://github.com/InfiniBrains/UnityBoilerplate

  1. Fork it
  2. run github action for getting an unit licence at least once
  3. grab the generated file, and upload it to https://license.unity3d.com/manual
  4. get the signed licence and copy the text content to your clipboard
  5. go to your repo settings, security, secrets and variables, actions and setup a new repository secret with the name 'UNITY_LICENSE' and the content from your clipboard
  6. go to the repo settings, actions, general, in the bottom, enable workflow permission, read and write, save
  7. run the main action
  8. enable actions and automatic page deployment from a branch gh-pages
  9. edit webgl template with your logo or image
"},{"location":"portfolio/02-cases/#activity-2","title":"Activity 2","text":"

This class is totally up to you. Here goes what you should do in class and finish at home. The idea is for you to feel a whole process on how to create merge and pull requests to a public repo.

  1. Search a good portfolio published online
  2. use Twitter, LinkedIn, Google to search for good game developer portfolios;
  3. another good query on google would be \"awesome developer portfolio\", or \"curated list of developer portfolios\" try it!. Example: https://github.com/emmabostian/developer-portfolios
  4. You can use this time to search a good and open sourced portfolio to fork and start your own based on other. https://github.com/topics/developer-portfolio
  5. Fork this repo
  6. Create a markdown file in this folder with a meaningful name about the benchmarked repository.
  7. Follow this example
  8. The file name should be the website domain name followed by .md
  9. If another student is aiming to evaluate the same portfolio, just edit the file adding your evaluation to the text.
  10. Your file should contain:
  11. A summary
  12. The portfolio evaluated
  13. The date the evaluation happened
  14. Print-screens uploaded to image hosting services such as imgur or others
  15. What things you judge as good and you are aiming to follow and target
  16. What things you judge that needs attention and should be improved
  17. Why you would hire the owner of the portfolio
  18. General considerations
  19. Edit this file on github to link your work here if you want to showcase it here.
  20. Be Kind and constructive
  21. Send a push request
"},{"location":"portfolio/02-cases/#considerations","title":"Considerations","text":"
  • The portfolios evaluated here are just opinions
"},{"location":"portfolio/02-cases/#evaluated-portfolios","title":"Evaluated Portfolios","text":"
  • Example
"},{"location":"portfolio/02-cases/example.com/","title":"Index","text":"
  • Assessment 1
  • Assessment 2
"},{"location":"portfolio/02-cases/example.com/#assessment-1","title":"Assessment 1","text":""},{"location":"portfolio/02-cases/example.com/#summary","title":"Summary","text":"
  • The date the evaluation happened
  • The portfolio evaluated
  • Briefing
"},{"location":"portfolio/02-cases/example.com/#strength","title":"Strength","text":"

What things you judge as good and you are aiming to follow and target. Add images as reference using print-screens uploaded to image hosting services such as imgur or others;

"},{"location":"portfolio/02-cases/example.com/#improvements","title":"Improvements","text":"
  • What things you judge that needs attention or should be improved?
  • What questions you would ask this person?
"},{"location":"portfolio/02-cases/example.com/#best-fit","title":"Best fit","text":"
  • Why you would hire the owner of the portfolio?
  • For what kind of task?
  • What position?
  • How do you see this person interacting with others?
"},{"location":"portfolio/02-cases/example.com/#general-considerations","title":"General considerations","text":"
  • Just add some final consideration for the portfolio owner;
  • If possible, send a message to one of its communication channels informing your assessment;
"},{"location":"portfolio/02-cases/example.com/#assessment-2","title":"Assessment 2","text":"

The other student willing to do multiple assessment for the same portfolio, just create an entry in the index following the same structure and same the assessment differently in this case, we put number 2. And use the same structure on the 1.

"},{"location":"portfolio/03-structure/","title":"Game Developer Portfolio Structure","text":"

Create a single page app containing most of these features listed here.

"},{"location":"portfolio/03-structure/#head-summary","title":"Head / Summary","text":"

Chose carefully what to you use as a head of your page. It is the first thing a person reads. It can be an impactful message, a headline, personal statement, background video or very limited interactive section.

Note

Avoid bravado. You can be bold without being naive. Let the bravado statements for when you become a senior. If you write bravados right in the begining of your portifolio and you are still a junior, you are just communicating that you will be hard to work with. A senior developer reading your portfolio is more interested in developers eager to learn, humble, and looking for guidance so they will have a easier life hiring you.

"},{"location":"portfolio/03-structure/#about","title":"About","text":"

This is a summary obout yourself, be brief and achievement oriented. What and who you are. Contact info via social medias. State your working status and target. If you are a narrative centred person, you can create something fancy here, but dont over-do, less is more!

"},{"location":"portfolio/03-structure/#showcase","title":"Showcase","text":"
  • Projects
  • Ability and versatility
  • Community Contributions

You can showcase your personal work, a job you make for a client(if authorized).

Projects

It is a good practice to showcase only the best works you made. You might find interesting to add more than 5, but there are chances of your reader clicking exactly on the worst one and have a bad first impression of you. In your showcase section, avoid showcasing bad work. Invite some of your friends to help you select the best ones to showcase.

Ability

Avoid using percentage graphs to showcase your proficiency on specific tech stack or tool. The main reason is: how do you grade of your ability as 80%, 100% or 30%? Worse than that, how can the reader be sure of that? If you want to do that, it is better to apply for certificates, there are plenty on linkedin or specialized sites.

"},{"location":"portfolio/03-structure/#achievements","title":"Achievements","text":"
  • List key achievements and skills. Dont use any kind of grading
  • Education
  • Testimonials or anything to prove your skills and capacity
"},{"location":"portfolio/03-structure/#project-details","title":"Project Details","text":"
  • You should create a way to explain more about what is showcased. Ex.: redirect the user to the project description page, or open a modal
"},{"location":"portfolio/03-structure/#blog","title":"Blog","text":"
  • Featured posts/content and call to action to read your ongoing content production
  • Explain your process in designing a game or piece of software
  • Explain some interesting details you learn or describe your knowledge explorations.
"},{"location":"portfolio/03-structure/#contact","title":"Contact","text":"

Explicitly state what people should expect if they contact you and what they can expect from your return. Ex.: If you aim to be a freelance, state your offer and ask for them to briefly state the job activity, time frame and the rate they are willing to pay. If you are looking for a full-time position, the most common way is to just share your email, so they can contact you.

Another option is to list all of your social medias, but dont overuse this. Nowadays we have a bunch of them, so if you list all of them, there is chances, you are not active there and the link will guide the reader to a empty and haunted house and they will not engage.

"},{"location":"portfolio/03-structure/#general-tips","title":"General tips","text":"
  • Keep the Target Audience in Mind
    • Take Advantage of Your Homepage
    • Make Your Portfolio Scannable
    • Minimize Clicks
  • Remember UX and UI
    • Go Mobile or Go Home
    • Optimize Website Performance
    • Remember Accessibility
  • Showcase Your Best Work and Skills
    • Share Your Code and Live Projects
    • OR Provide Code Samples and GIFs
    • Boast Freelance and Personal Projects
    • BUT Be Selective
    • Prove that You Are on The Same Page
  • Show Your Personality
    • Use Custom Domain
    • Make Use of Introductory Statement
    • Use Your Tone of Voice
    • Share Your Motivation (Optional)
  • Maintain Personal Brand
    • Keep Portfolio Up-to-Date
    • Include Testimonials
  • Encourage Communication
    • Call-to-action button or link to contact

reference

"},{"location":"portfolio/03-structure/#homework","title":"Homework","text":"
  • [Optional]Create a wireframe draft of what you are going to do on figma, miro or any other tool you find relevant. If you already have a Portfolio page already set, try to think on how do you make it be responsive on mobile devices.
  • Scaffold your project in github. Describe in the README.md what you are going to do in your demo. You might try to convince a colleague to work with you. You can do more than one demo if you want. Some examples:
    • Raytrace demo for cloud and Human body. ref https://www.youtube.com/watch?v=Qj_tK_mdRcA
    • Networking game using the phone as a controller and your portfolio demo as the viewer. https://blockrage.pgs-soft.com/
    • Catch the cat demo for AI. https://llerrah.com/cattrap.htm
    • Create unity editor plugin to dynamically generate meshes via splines based on sample locations. https://www.youtube.com/watch?v=f5Q7Z2KxILE is a game with 50million downloads that used this technique to generate scenarios. Here you can watch a better explanation. https://www.youtube.com/watch?v=saAQNRSYU9k
    • Embed a shader toy behind your portfolio page. https://shadertoyunofficial.wordpress.com/2018/02/17/embedding-shadertoys-in-website/
    • A nice collection of fun ideas to code for your portfolio https://mrdoob.com/
    • Board game simulation. Ex: chess https://www.chessprogramming.org/ or https://github.com/JuUnland/Chess/ or this https://www.youtube.com/watch?v=WKs685H6uOQ
  • [Optional] Simulate a real test by creating a console based space invader in 48h.
    • Efficiently draw (print on console)
    • Efficient collision check
"},{"location":"portfolio/04-communication/","title":"Communication","text":"

Having a well-written and organized portfolio is important for any game developer, as it can help them stand out from the competition and demonstrate their skills and experience to potential employers. A good portfolio should clearly communicate the developer's strengths and accomplishments, and should be tailored to the specific needs and expectations of the audience.

Effective communication is crucial in building a strong game developer portfolio, as it allows the developer to clearly convey their skills and experiences to potential employers. A portfolio that is well-written and easy to understand will be more effective at convincing an employer to hire the developer, while a poorly written or poorly organized portfolio may have the opposite effect.

"},{"location":"portfolio/04-communication/#audience","title":"Audience","text":"

In general your portfolio will be read by:

  • Human Resources
  • Software Developers

"},{"location":"portfolio/04-communication/#human-resources","title":"Human Resources","text":"

If you are applying for a big tech company, chances are your submission won't be read by a tech person the first human triage. So in order to pass this first filter, you have to be generic and precise. They are often very busy evaluating multiple applications, and probably they will spend 30-60 seconds before making the decision about moving forward in the process or not. Your portfolio will need to catch their attention and communicate clearly your fit, passion and ability in a short time frame.

"},{"location":"portfolio/04-communication/#software-developer-managers","title":"Software Developer Managers","text":"

In contrast with HR, developer managers probably will not be shocked with any fancy stuff(such as full page pre-loaders) you add to your portfolio, so be concise and straight to the point, because most of them already know all the contents. From all of your portfolio readers, they are one of the most critique of your job.

In another hand, usually developers do not look for programming language fit, frameworks or tools you use. They are more interested if you will be able to learn and execute the job in a meaningful time. So try to express yourself in a way that showcase your ability to solve problems, no matter what problem is, they are mostly curious on how to solve complex problem by framing the problem in another way or how to be innovative.

"},{"location":"portfolio/04-communication/#what-they-look-for","title":"What they look for","text":"

The following metrics can be evaluated by reading your portfolio, interviews or tests. The most common evaluation metrics they made are:

  • Position Fit
    • They are going to search if your portfolio showcase experience in the same area of what they are looking for the specific position they received. Usually they will look for specific keywords for the requirements list;
  • Company fit
    • They take count on your expressed ideas, stated goals, tone, alignment and supporting projects to evaluate your future evolution inside the company; ex. https://wa.aws.amazon.com/wat.pillars.wa-pillars.en.html
  • Passion
    • Passionate developers tend to express projects they are proud of. The description of the projects are mostly achievement-based. Ex.: more than X million downloads. This example showcases that you were part of something huge, and it is easily understandable.
    • There is a high correlation on high performant people that they usually shine in side-projects or even hobbies. So they look for it. Ex.: Google encourages employees to devote 20% of their time to hobbies or skill-building.
  • Competence
    • They need to evaluate if you are really able to solve the problem properly, in a meaningful time, and in a team. You have to describe which tools, tech stack and how you glue everything in order to solve the problem. Be assured you are correctly expressing yourself here, because it is one of the central part that is not taken superficially.
  • Innovation and Curiosity
    • Innovative developers solve problems out of the box. It doesn't matter how complex the problem is, but if you solve in a innovative way, reframe it or do any magic to solve it, chances are to have good points here;
    • Good companies incentives research and test new stuff. So they usually like to see your deliverables with new bleeding-edge technology tools.
  • Proactiveness
    • Usually the more proactive developers tend to have more leadership positions. So if you want to give the readers a glimpse of your ability in this area, a good place to showcase that is in project description section. Express problems that arise and how do you manage that before it become a real problem.
  • Learner
    • It is good to be always tuned with the current evolution of the technology, so try to keep the education section always updated with some courses or publish blog posts about some new tech.
  • Thinking big / Thoughtfulness / Risk management
    • They are going to look for your ability to think big, and how you manage risks. So if you have a project that you had to manage risks, or think big, it is a good place to showcase that.
    • Expose cases where you had to manage risks, or think big, and how you manage that. What you learned in the process trying to achieve bigger goals.
"},{"location":"portfolio/04-communication/#in-class-activities","title":"In class activities","text":""},{"location":"portfolio/04-communication/#1-self-reflection-on-the-audience","title":"1. Self-Reflection on the audience","text":"

Try to look at your portfolio from the perspective of the audience. What are the strengths and weaknesses of your portfolio? What are the areas that you need to improve in order to better communicate your skills and experiences to potential employers?

"},{"location":"portfolio/04-communication/#2-mock-interviews","title":"2. Mock interviews","text":"

Pair up with a colleague and find some common questions that company usually asks. You can find some of them here. Then, take turns interviewing each other and providing feedback on how well you communicated your skills and experiences.

"},{"location":"portfolio/04-communication/#homework","title":"Homework","text":"
  • Write the content for each one of your projects and all other sections of your portfolio.
  • 1st round of Portfolio Feedbacks.
  • Research in a game company you like the resources on their hiring process. Take notes on how they hire and which positions you want to apply. Here goes some examples on how to get ready for interviews:
    • Epic: https://www.epicgames.com/site/en-US/earlycareers/career-paths
    • AWS: https://aws.amazon.com/careers/how-we-hire/
    • General interview questions https://www.mockquestions.com/
  • Top interview questions https://leetcode.com/problem-list/top-interview-questions/. Some examples:
    • https://leetcode.com/problems/two-sum/ - the most asked question
    • https://leetcode.com/problems/kth-largest-element-in-an-array/ - heap
    • https://leetcode.com/problems/median-of-two-sorted-arrays/
    • https://leetcode.com/problems/minimum-space-wasted-from-packaging/ - bin packing, try to solve for 2d image pack for textures
  • Watch this video https://www.youtube.com/watch?v=Kte-t1pQQ3I and start contributing into an open source project or community
"},{"location":"portfolio/05-strategy/","title":"Strategies to get hired","text":"
  • Portfolio
  • Interviews
  • Social Network
"},{"location":"portfolio/05-strategy/#strategies-for-your-portfolio","title":"Strategies for your portfolio","text":"

Ask some questions for ChatGPT. Here goes a sample extracted from this prompt:

Create a strategy to get hired on a AAA game studio like COMPANY_NAME as a POSITION_NAME\n
  • Develop the right skills: The first step to getting hired in a AAA game studio is to develop the right skills for the job. Start by researching the job positions in the studio and look for the required skills, experience, and qualifications. Then, focus on building those skills through relevant education, training, and projects. You can also take courses, attend workshops or conferences, and create a portfolio of your work to showcase your abilities.
  • Network with industry professionals: Networking with industry professionals can help you gain exposure and insights into the game development industry. Attend industry events, join online forums, participate in game development communities, and reach out to professionals in the field to build relationships. You can also consider working on collaborative projects with other game developers to expand your network.
  • Stay up-to-date with industry trends: Keeping up with the latest trends and news in the gaming industry can help you stay ahead of the game and impress your potential employers. Read industry blogs, participate in online discussions, follow industry influencers on social media, and stay up-to-date with the latest game releases to show that you are knowledgeable and passionate about the industry.
  • Research the game studio: Before applying for a job, research the game studio to learn about their culture, values, and work environment. Look for information about their current projects, the team structure, and the company's mission statement. This will help you tailor your resume and cover letter to match the company's requirements and demonstrate that you are a good fit for the team.
  • Apply for internships: Consider applying for internships in a AAA game studio. This is an excellent opportunity to gain industry experience and build your skills. Even if the internship is unpaid, the experience and contacts you gain could be invaluable for your future career.
  • Prepare for the interview: Once you get an interview, make sure to prepare thoroughly. Research common interview questions and practice your responses. Be ready to talk about your experience, skills, and passion for game development. Also, prepare questions to ask the interviewer about the company and the job position to show your interest and enthusiasm.
Write a strategy to get hired as a Game Programmer in a Indie Game Studio\n
  • Develop a strong portfolio: Your portfolio is your calling card, so it needs to showcase your programming skills, creativity, and technical abilities. Create a portfolio that showcases your best work, including your personal game development projects, demos, and samples of your code. Highlight your experience with programming languages, software, tools, and engines that are commonly used in the indie game development industry.
  • Research indie game studios: Do your research on the indie game studios that interest you. Find out what kind of games they make, the size of the studio, the company culture, and their current job openings. Look for studios that align with your interests, values, and career goals.
  • Build a network: Building a network of like-minded professionals in the game development industry can be invaluable. Attend industry events, join online forums and communities, and engage with indie game developers on social media. This will help you stay up-to-date on the latest trends, technologies, and job openings.
  • Gain experience: Gain experience by creating your own games, participating in game jams, contributing to open-source projects, or volunteering for a non-profit game development organization. This will help you gain valuable experience and demonstrate your passion and commitment to game development.
  • Apply for internships: Many indie game studios offer internships or junior positions for game programmers. This is an excellent opportunity to gain hands-on experience, build your skills, and make contacts in the industry. Even if the internship is unpaid, the experience and contacts you gain could be invaluable for your future career.
  • Tailor your resume and cover letter: Tailor your resume and cover letter to showcase your programming skills, experience, and passion for game development. Highlight your technical skills, programming languages, software, and engines that you are proficient in. Be sure to mention any experience you have working in a team and collaborating with other game developers.
  • Prepare for the interview: Once you get an interview, make sure to prepare thoroughly. Research the indie game studio, their current projects, and their company culture. Be ready to talk about your experience, skills, and passion for game development. Also, prepare questions to ask the interviewer about the company and the job position to show your interest and enthusiasm.
"},{"location":"portfolio/05-strategy/#analytics","title":"Analytics","text":"
  • Analytics. Recommendation: Google Analytics or Firebase Analytics;
  • Heatmaps. Recommendation: smartlook;
"},{"location":"portfolio/05-strategy/#generate-traffic","title":"Generate traffic","text":"

For more details see promoting section;

"},{"location":"portfolio/05-strategy/#strategies-for-interviews","title":"Strategies for interviews","text":"

Train yourself in coding interviews with some materials: - Crack the Coding Interview - Interviews on AWS - Interview on Google - Course on get ready for an AWS interview

"},{"location":"portfolio/05-strategy/#coding-resources","title":"Coding resources","text":"
  • Leetcode
  • Hackerrank
  • Geeksforgeeks
  • Interview Questions
  • Review on algorithms
  • Practice code interviews
"},{"location":"portfolio/05-strategy/#curated-videos-on-most-common-programming-interview-questions","title":"Curated videos on most common programming interview questions","text":"
  • AlgoExpert
"},{"location":"portfolio/05-strategy/#strategies-for-social-networks","title":"Strategies for Social Networks","text":"

All social networks uses some type of relevance algorithm to promote your content or profile. So you have to find means to increase your relevance. Most of the algorithms measure your relevance by number of reactions(likes, follows, comments, replies...), so every time you post something, you should try to incentive the content consumers to do that.

"},{"location":"portfolio/05-strategy/#google","title":"Google","text":"

If your aim is to be relevant on Google, try to check the trending words people are searching now via Google trends.

If you follow this path, the main strategy is the common SEO optimization techniques. Here goes some guides to help you nail that.

  • https://searchengineland.com/guide/what-is-seo
  • https://www.wordstream.com/seo
  • https://searchengineland.com/yandex-leak-learnings-392393

If you are a prolific writer and really into it. You can try to make wikipedia refer you and raise your rate on google algorithm. You can query google site:wikipedia.org [your niche keyword] + \"dead link\" and check the pages that are missing references to your content, then edit the wikipedia page to refer your website or blog post to give sources for something missing.

"},{"location":"portfolio/05-strategy/#linkedin","title":"Linkedin","text":"
  • Consistency is the key. You have to post frequently. Period.
  • Follow other professionals in your field and check what they are posting to try replicate their behavior.
  • Follow companies you want to work
  • Connect with the hiring personal from the companies you want to work for, so when they search for people, you will be on the top suggestions.
"},{"location":"portfolio/05-strategy/#activity","title":"Activity","text":"

WiP

"},{"location":"portfolio/06-reels/","title":"Portfolio Reels","text":"

Sample Portfolio Reels

"},{"location":"portfolio/06-reels/#demo-reels-structure","title":"Demo Reels Structure","text":"

Game demo reels should showcase the best features and gameplay of a game to potential players and investors. Here are some important elements that a game demo reel should include:

  • Captivating Intro: The game demo reel should start with a captivating intro that hooks the audience and captures their attention.
  • Gameplay Footage: The demo reel should showcase the actual gameplay footage of the game. This should include a variety of gameplay scenarios, showcasing the game mechanics and the different features of the game.
  • Visuals: The game demo reel should showcase the visual quality of the game. This should include graphics, animations, lighting, and special effects.
  • Audio: The game demo reel should include the game's audio elements, such as sound effects, music, and voice acting.
  • User Interface: The demo reel should showcase the user interface of the game, including the menus, HUD, and other interactive elements.
  • Story and Characters: If the game has a story or characters, the demo reel should include footage that showcases these elements.
  • Game Modes: If the game has different game modes, the demo reel should showcase the different modes and gameplay styles.
  • Multiplayer: If the game has a multiplayer mode, the demo reel should showcase the multiplayer gameplay and the features that make it unique.
  • Call-to-Action: The demo reel should end with a clear call-to-action, such as a link to the game's website or social media page, or instructions on how to download the demo.

Overall, the game demo reel should be well-paced, engaging, and give a good sense of what the game is all about.

"},{"location":"portfolio/06-reels/#captivating-intro","title":"Captivating Intro","text":"

A captivating intro is an essential part of a game demo reel, as it sets the tone and captures the viewer's attention from the start. There are several ways to create a captivating intro, depending on the type of game and the intended audience. Here are a few ideas:

  • Show a brief teaser: Start the demo reel with a brief teaser that highlights the game's most exciting features, such as a stunning visual effect or a heart-pumping action sequence.
  • Use a dramatic voiceover: Use a dramatic voiceover to introduce the game and create a sense of anticipation. The voiceover can provide a brief overview of the game's story or setting, or simply hype up the viewer with promises of intense gameplay and unforgettable experiences.
  • Introduce the developer: If the game is developed by a well-known studio or an indie developer with a strong following, introduce them in the intro. Share their mission and goals for creating the game and convey their passion and expertise in the field.
  • Set the mood with music: Use music to set the mood for the demo reel. Choose a track that complements the game's theme or genre and builds up the excitement for the upcoming gameplay footage.
  • Use a creative animation: Use a creative animation that visually represents the game's core concept or theme. This can help to grab the viewer's attention and give them a taste of what the game is all about.

Whatever approach is taken, the intro should be brief and impactful, providing a sense of the game's style and tone while leaving the viewer eager to see more.

"},{"location":"portfolio/06-reels/#gameplay-footage","title":"Gameplay Footage","text":"

Gameplay footage is the heart of any game demo reel, as it showcases the actual gameplay experience that the game offers. This section of the demo reel should be carefully crafted to highlight the most exciting and impressive features of the game. Here are some tips for creating engaging gameplay footage:

  • Variety of gameplay scenarios: The gameplay footage should showcase a variety of gameplay scenarios to give viewers a well-rounded idea of what the game is all about. This can include different levels or environments, various weapons or abilities, and different characters or modes.
  • Highlight unique features: Highlight the game's unique features and mechanics, such as special abilities, game modes, or multiplayer options. This can help to differentiate the game from other titles in the same genre.
  • Showcase player choices: If the game allows players to make choices that affect the story or gameplay, showcase these choices in the demo reel. This can help to create a sense of player agency and show how the game responds to different playstyles.
  • Show off impressive visuals: The gameplay footage should also showcase the game's impressive visuals, such as high-quality textures, realistic lighting and shadow effects, or dynamic particle effects. These elements can help to create a more immersive and engaging gameplay experience.
  • Keep it concise: The gameplay footage should be concise and to the point, showcasing the most exciting and impressive elements of the game without becoming overly long or repetitive.
  • Use high-quality footage: The footage should be high-quality and well-shot, with clear visuals and smooth frame rates. This can help to create a professional and polished demo reel that shows off the game in the best possible light.

Overall, the gameplay footage should provide a clear and exciting look at what the game has to offer, highlighting its unique features and impressive visuals while keeping the viewer engaged and interested.

"},{"location":"portfolio/06-reels/#visuals","title":"Visuals","text":"

Visuals are a critical component of any game demo reel, as they are often the first thing that potential players and investors will notice. The visuals of a game should be showcased prominently in the demo reel, demonstrating the game's graphical capabilities and the level of detail and polish that has gone into its development. Here are some key elements of visuals to consider when creating a game demo reel:

  • Graphics quality: The graphics quality of the game should be highlighted in the demo reel. This can include high-quality textures, realistic lighting and shadows, dynamic particle effects, and other visual elements that make the game stand out.
  • Art style: The art style of the game is also an important visual element to showcase. Whether the game has a realistic or stylized art style, it should be highlighted in the demo reel to give viewers a sense of the game's aesthetic.
  • Animations: The animations of the game are an important part of the overall visual experience. The demo reel should showcase the game's character animations, object interactions, and any other animations that add to the game's visual appeal.
  • Camera work: The camera work used in the demo reel can also be used to highlight the game's visual elements. Different camera angles, zooms, and cuts can be used to showcase the game's graphics and make them stand out.
  • User interface: The user interface (UI) of the game is also an important visual element that should be showcased in the demo reel. The demo reel should highlight the UI design and any interactive elements, such as buttons or menus.
  • Environment design: The game's environment design is another important visual element to showcase in the demo reel. Whether the game takes place in a realistic or fantastical setting, the environment design should be highlighted to give viewers a sense of the game's atmosphere.

Overall, visuals play a crucial role in creating an immersive and engaging gameplay experience, and they should be showcased prominently in a game demo reel. By highlighting the game's graphics quality, art style, animations, camera work, user interface, and environment design, the demo reel can give viewers a clear and exciting look at what the game has to offer.

"},{"location":"portfolio/06-reels/#audio","title":"Audio","text":"

Audio is an often overlooked but crucial component of any game demo reel. It can enhance the overall gameplay experience, create an immersive atmosphere, and contribute to the game's overall appeal. Here are some key elements of audio to consider when creating a game demo reel:

  • Sound effects: Sound effects are an important component of any game's audio design. The demo reel should showcase the game's sound effects, such as weapon sounds, environmental effects, and character vocalizations.
  • Music: The music used in the game can also be an important part of the overall audio experience. The demo reel should highlight the game's soundtrack, showcasing any memorable themes or musical cues that contribute to the game's atmosphere.
  • Voice acting: If the game features voice acting, it should be highlighted in the demo reel. The demo reel should showcase any memorable voice performances and give viewers a sense of the quality of the voice acting.
  • Sound design: The overall sound design of the game is another important element of the game's audio. The demo reel should showcase how the game's audio elements work together to create an immersive atmosphere, such as the use of ambient sounds or dynamic music that changes based on the player's actions.
  • Audio quality: The quality of the game's audio should also be highlighted in the demo reel. The sound effects, music, and voice acting should be clear and well-produced, with high-quality mixing and mastering that enhances the overall experience.

Overall, audio is a critical component of any game demo reel. By showcasing the game's sound effects, music, voice acting, sound design, and audio quality, the demo reel can give viewers a clear and engaging look at the game's overall audio experience.

"},{"location":"portfolio/06-reels/#user-interface","title":"User Interface","text":"

The user interface (UI) is a critical component of any game, and it should be showcased prominently in a game demo reel. The UI is the primary way that players interact with the game, and it can greatly impact the overall gameplay experience. Here are some key elements of UI to consider when creating a game demo reel:

  • Design: The design of the UI is an important aspect to showcase in the demo reel. The UI design should be visually appealing, easy to navigate, and intuitive for players to use. The demo reel should showcase any unique design elements, such as custom icons or animations, that contribute to the overall look and feel of the game.
  • Functionality: The functionality of the UI is also an important element to showcase in the demo reel. The UI should be designed to help players easily access important information, such as health, inventory, or map data. The demo reel should showcase how the UI functions during gameplay and how it supports the overall game mechanics.
  • Customizability: Some games offer customizable UI options, such as changing the size or placement of UI elements. If the game has this feature, it should be highlighted in the demo reel to showcase the flexibility of the UI design.
  • Responsiveness: The responsiveness of the UI is another important aspect to showcase in the demo reel. The UI should respond quickly and smoothly to player input, and any interactive elements should have clear feedback to help players understand their actions.
  • Accessibility: Finally, the accessibility of the UI is an important consideration. The demo reel should showcase how the UI supports players with different needs, such as colorblind options or font size adjustments.

Overall, the UI is a critical component of any game, and it should be showcased prominently in a demo reel. By highlighting the design, functionality, customizability, responsiveness, and accessibility of the UI, the demo reel can give viewers a clear and engaging look at how players interact with the game and how the UI supports the overall gameplay experience.

"},{"location":"portfolio/06-reels/#story-and-characters","title":"Story and Characters","text":"

The story and characters are important elements of many games, and they can greatly impact the overall experience. When creating a game demo reel, it is important to showcase the game's story and characters in a way that is engaging and gives viewers a clear sense of what to expect from the game. Here are some key elements of story and characters to consider when creating a game demo reel:

  • Story: The demo reel should give viewers a sense of the game's story, including the setting, premise, and major plot points. The story should be presented in a way that is engaging and makes viewers want to learn more about the game's world and characters.
  • Characters: The demo reel should also showcase the game's characters, including their personalities, motivations, and relationships with each other. Characters should be presented in a way that is relatable and makes viewers care about their journeys throughout the game.
  • Dialogue: If the game features dialogue, it should be highlighted in the demo reel. The dialogue should showcase the quality of the writing and voice acting, and give viewers a sense of the characters' personalities and relationships.
  • Cutscenes: Cutscenes are a great way to showcase the game's story and characters in a visually compelling way. The demo reel should include any memorable or important cutscenes that help to advance the story or develop the characters.
  • Worldbuilding: Finally, the demo reel should showcase the game's worldbuilding, including any lore or backstory that helps to flesh out the game's world and characters. This can include things like environmental storytelling, item descriptions, or other worldbuilding details.

Overall, the story and characters are important elements of many games, and they should be showcased prominently in a game demo reel. By highlighting the story, characters, dialogue, cutscenes, and worldbuilding, the demo reel can give viewers a clear and engaging look at what to expect from the game's narrative and characters.

"},{"location":"portfolio/06-reels/#game-modes","title":"Game Modes","text":"

Game modes are an important aspect of many games, particularly in multiplayer titles, and they can greatly impact the overall experience. When creating a game demo reel, it is important to showcase the different game modes in a way that is engaging and gives viewers a clear sense of what to expect from each mode. Here are some key elements of game modes to consider when creating a game demo reel:

  • Variety: The demo reel should showcase a variety of different game modes, particularly if the game has several unique modes to choose from. This will give viewers a sense of the game's overall variety and replayability, and help them understand how each mode contributes to the overall experience.
  • Objectives: Each game mode should have clear objectives that are highlighted in the demo reel. This can include things like capturing objectives, defeating enemies, or completing tasks within a certain timeframe. The objectives should be presented in a way that is clear and easy to understand for viewers.
  • Mechanics: The demo reel should showcase the different mechanics and gameplay elements that are unique to each game mode. This can include things like different weapons or abilities, unique maps or terrain, or different objectives and win conditions. By highlighting these unique mechanics, viewers can get a sense of how each mode feels and plays.
  • Multiplayer: If the game has multiplayer modes, it is important to showcase how players can interact with each other within each mode. This can include things like team play, player versus player combat, or cooperative objectives.
  • Replayability: Finally, the demo reel should showcase how each game mode contributes to the game's overall replayability. This can include things like unlockable rewards, leaderboards, or other features that encourage players to come back and play the game multiple times.

Overall, game modes are an important aspect of many games, particularly in multiplayer titles, and they should be showcased prominently in a game demo reel. By highlighting the variety, objectives, mechanics, multiplayer elements, and replayability of each mode, the demo reel can give viewers a clear and engaging look at what to expect from each game mode and how it contributes to the overall experience.

"},{"location":"portfolio/06-reels/#multiplayer","title":"Multiplayer","text":"

Multiplayer is an important aspect of many games, particularly in online multiplayer games, and it can greatly impact the overall experience. When creating a game demo reel, it is important to showcase the multiplayer aspects in a way that is engaging and gives viewers a clear sense of what to expect from the multiplayer modes. Here are some key elements of multiplayer to consider when creating a game demo reel:

  • Modes: The demo reel should showcase the different multiplayer modes that are available in the game. This can include things like team-based modes, objective-based modes, and free-for-all modes. The demo reel should highlight how each mode plays and what the objectives are.
  • Player Count: The demo reel should also showcase the player count for each mode. This can include things like 1v1, 2v2, 4v4, or larger player counts for massive multiplayer games. The player count is an important factor in determining the pacing and flow of the game, and should be highlighted in the demo reel.
  • Matchmaking: If the game features matchmaking, it is important to showcase how the matchmaking system works and how players are paired with opponents of similar skill levels. This can include things like player ranking systems or other matchmaking algorithms that help to ensure fair matches.
  • Progression: The demo reel should also highlight any progression systems that are available in the multiplayer modes. This can include things like unlocking new weapons or abilities as players progress through the game, or other rewards for completing objectives or winning matches.
  • Social Features: Finally, the demo reel should showcase any social features that are available in the multiplayer modes. This can include things like chat systems, friend lists, or the ability to form clans or teams with other players.

Overall, multiplayer is an important aspect of many games, particularly in online multiplayer games, and it should be showcased prominently in a game demo reel. By highlighting the different modes, player count, matchmaking, progression, and social features of the game's multiplayer modes, the demo reel can give viewers a clear and engaging look at what to expect from the multiplayer experience.

"},{"location":"portfolio/06-reels/#call-to-action","title":"Call to Action","text":"

The Call-to-Action (CTA) is an important element of any game demo reel because it prompts viewers to take action after watching the video. The CTA can be in the form of a request or suggestion that encourages viewers to do something related to the game, such as signing up for a mailing list, pre-ordering the game, or visiting the game's website. Here are some key elements to consider when including a Call-to-Action in a game demo reel:

  • Clarity: The CTA should be clear and specific, so that viewers know exactly what action they are being asked to take. This can include things like \"pre-order now\" or \"sign up for updates\", and should be prominently displayed at the end of the video.
  • Relevance: The CTA should be relevant to the content of the video, and should relate directly to the game being showcased. For example, if the demo reel is showcasing a new game trailer, the CTA could be to pre-order the game.
  • Timing: The CTA should be timed appropriately within the video, so that it appears at the end and is not too distracting during the main content of the video.
  • Design: The design of the CTA should be visually appealing and eye-catching, using bold fonts and contrasting colors to draw attention to it.
  • Placement: The CTA should be placed in a prominent location within the video, such as at the end or in a lower third graphic.

Overall, the Call-to-Action is an important element of any game demo reel because it prompts viewers to take action after watching the video. By including a clear, relevant, and well-designed CTA at the end of the video, game developers can encourage viewers to take action and engage with the game in meaningful ways.

"},{"location":"portfolio/06-reels/#specifications","title":"Specifications","text":"

Specifications for the Demo Reels:

Video Specifications:

  • Size: 1920x1080 (16:9)
  • Format: saved as .mp4
  • Length:
  • Game Art = 90 seconds.
  • Game Design, Game Production Management, Game Programming, Game Sound Design = 60 seconds.
  • No audio with lyrics
  • No X-rated content
  • Use audio that won't get removed from Vimeo (where we store the files) because of copyright infringement.
"},{"location":"portfolio/06-reels/#homework","title":"Homework","text":"

Watch some videos from Sample Portfolio Reels and create a script detailing what you are going to present yourself. Start creating the timeline of feelings and you are going to present at each time.

Tell a story where you are (or your work is) the protagonist.

"},{"location":"portfolio/07-hosting/","title":"Hosting","text":"

There are many hosting options and solutions to match each need. Lets cover some options here.

"},{"location":"portfolio/07-hosting/#options-low-code","title":"Options low code","text":"
  • Google sites - My preference

Other notable options: - Godaddy - Wordpress - Wix - Squarespace

The problem with those are they require payments to be fully functional, so if you want to go deep and have mor freedom, we are going to cover other options.

"},{"location":"portfolio/07-hosting/#static-html-with-static-data","title":"Static HTML with Static Data","text":"

If what you want to serve is static hosting, your content is only frontend and do not require backend, you can use github pages, google firebase, S3 bucket hosting or many others. This is the easiest approach. - In this scenario you will be able to store only pre-generated html and static files; - This is useful even if you use blogs that changes rarely, you would have to redeploy your page for every change.

"},{"location":"portfolio/07-hosting/#static-html-with-dynamic-data","title":"Static HTML with Dynamic Data","text":"

If your html is static and need backend services that are rarely called, you can go with cloud functions, my suggestions here are google cloud run and aws amplify or even firebase functions. If you use nextjs website, check vercel or netlify hosting services. - The deploys are easy; - It can be very expensive if you hit high traffic, but it will remain free if you dont hit the free tiers; - You will have to pay attention to your database management;

"},{"location":"portfolio/07-hosting/#dynamic-html-with-dynamic-data","title":"Dynamic HTML with Dynamic Data","text":"

If your website generate content dynamically such as Wordpress blogs or any custom made combination with next or anything. - There is many \"cheap hosting\" solutions that are mostly bad performant(it can reach more than 10s to answer a request). You have to avoid them to make your user enjoy the visit; - Management can go as hard as possible, but the results can be awesome; - It can be really expensive;

"},{"location":"portfolio/07-hosting/#cdn-and-dns-management","title":"CDN and DNS Management","text":"

I highly recommend you to use Cloudflare as you DNS nameserver, so you can cache your website results for faster loading. But you can use your own nameserver provider by your domain name registrar.

DNS stands for Domain Name System, which is a system that translates domain names into IP addresses. When you type a domain name into your web browser, such as \"www.example.com,\" your computer sends a request to a DNS server to resolve the domain name into an IP address, such as \"192.0.2.1.\" The IP address is then used to establish a connection with the web server that hosts the website you are trying to access.

DNS plays a crucial role in hosting because it enables users to access websites using domain names instead of IP addresses. This makes it easier for users to remember and find websites. DNS also allows websites to change servers or IP addresses without affecting the user experience, as long as the DNS records are updated properly.

In hosting, DNS is important because it determines which server is responsible for hosting a particular website. DNS records can be configured to point to different servers depending on factors such as geographic location, server load, and failover. Hosting providers typically offer DNS management tools to help users configure and manage their DNS records.

"},{"location":"portfolio/07-hosting/#homework","title":"Homework","text":"

The goal is to have as website up and running for your portfolio.

Here goes my preferable way for hosting anything. With that you can host microservices, game services, serve API, static and dynamic websites and much more. It can be tricky but lets setup it now.

  • Oracle cloud - Free forever - Virtual Machine with 4vCPU, 24GB ram, 200GB storage. https://www.youtube.com/watch?v=NKc3k7xceT8 watch up to 5:38 time
  • Coolify - Your private Software as a Service (SAAS) manager - https://youtu.be/Jg6SWqyvYys?t=125 starts from minute 2:00
  • CI/CD - to your remote machine https://www.youtube.com/watch?v=Uj7F3hdgmEo
  • Cloudflare DNS - set your domain to point to your DNS - https://www.youtube.com/watch?v=XQKkb84EjNQ
  • Install Wordpress via coolify interface(new resource, new service) and use your own DNS. Or host your page statically https://www.youtube.com/watch?v=CfdPyASUSkI&

Talk with me if you dont have a domain and want to use my infrastructure temporarily.

I am assuming you wont have a huge traffic, but you have a complex combination of services. In the complex cases and if you want to make your life easier and cheaper,my suggestion for hosting would be oracle cloud with arm cpu. They offer for free a virtual machine with 200gb storage, 4vcpus, 24gb ram for free at this date of 2022/12 tutorial. In this scenario, I recommend using https://coolify.io/ as your deployment management system, just pay attention that this machine is running in an arm cpu. With this combination, you can manage everything easily in one place for free. This is not ideal, because you wont have backups, but it is good enough for most scenarios.

If you have plenty of money or your website have high traffic, I recommend you to use Kubernetes to orchestrate every microservice.

"},{"location":"portfolio/08-cms/","title":"Content Management System","text":""},{"location":"portfolio/08-cms/#play-with-chatgpt","title":"Play with chatgpt","text":"

In order to train yourself for a game position try some prompts similar to this one.

Act as technical recruiter for a AAA game studio. You are going to interview me by asking me questions relevant for an entry level position as \"unreal gameplay developer\". Skills required are: Unreal Egine, Data structures, Algorithms, VR and Rendering pipelines. \nYou are going to ask me a question when I prompt \"ask\".\nMy answer to your question will start with \"response\".\nOn each response I give to your question, you will provide me 5 bullets: SCORE: from 0 to 100 points to evaluate if I answered it well or not; EXPLANATION: why you gave me that score; RATIONALE: explain what a typical recruiter is measuring with the question previously asked; ADVISE: to improve for answer to score 100 answer; NEXT: question. \nDo you understand? Dont ask anything now.\n

"},{"location":"portfolio/09-get-ready/","title":"Final project","text":"

Your portfolio should be a hosted webpage and a open repository on github.

You should follow a portfolio structure, to build a website and host it publicly. It should have a nice style, a good communication is the key to execute and analyse your strategy in order to capture insights. You can optionally increment your portfolio via dynamic content such as blogs or whatever you find relevant. Another extra step would be to create a generic cover letter to express your intentions and goals more personally. Note that some game companies still require CVs To boost your visualization, you can promote.

Minimum steps: 1. Have a domain or at least a meaningful github username/organization; 2. Create a github repository; 3. Push your frontend to the repo; 4. Enable github pages; 5. Create a CI/CD to build and deploy to gh pages; 6. Point your domain to gh-pages if you have one;

It is expected to have something to showcase, so it is expected to have at least 3 projects to showcase. It is preferable to showcase something that could be testable(webgl builds) or watchable in a lightweight manner.

If you are willing to showcase your ability in Unity, I recommend you to try GameCI and github pages. If you want to showcase your game engine abilities with C++, I recommend you using CMake, SDL2 and emscripten to build and deploy for github pages.

If you want to start something from scratch you can use this repo to start have a SDL2 project with all libraries already set. It builds and publish a Github page via Github actions automatically, you can check it running here. It features CMake tooling, IMGUI for debug interfaces, SDL2, SDL2_ttf, SDL_image, SDL_mixer,

"},{"location":"portfolio/09-get-ready/#2023","title":"2023","text":"

Here goes a list of portfolios

"},{"location":"portfolio/09-get-ready/common-intenterview-questions/","title":"Common interview questions","text":"

Resources: - https://debbie.codes/blog/interviewing-with-the-big-tech-companies/

"},{"location":"portfolio/10-frontend/","title":"Frontend for your portfolio","text":"

Here goes a curated templates for a quick start: - https://github.com/techfolios/template - the easiest one - https://github.com/rammcodes/Dopefolio - straight to the point developer portfolio - https://github.com/ashutosh1919/masterPortfolio - animated with a strong opening - https://smaranjitghose.github.io/awesome-portfolio-websites a good compilation on how to build and deploy your portfolio with a good pre-made template

But for this class, we are going to follow this template, sofork this boilerplate if you want a more robust webapp experience.

"},{"location":"portfolio/10-frontend/#frontend-frameworks","title":"Frontend frameworks","text":"

There are many frontend frameworks floating around, but in order to speed up your learning curve on how to deploy a fully customized webpage, I am going to use this combination of technologies:

  • React for building website;
  • Vite for tooling;
  • Tailwindcss for styling;

Some examples with this stack:

  • https://reactjsexample.com/a-portfolio-page-using-react-js-and-tailwind-css/
  • https://github.com/InfiniBrains/reactjs-vite-tailwindcss-boilerplate

Watch this video to get a fast entry to this stack Here goes an introductory video about this combination.

"},{"location":"portfolio/12-promoting/","title":"How to promote yourself and your work","text":"

For most of us, game developers, the most important thing is to make games. But, in order to make games, we need to promote ourselves and our work. In this section, we will learn how to do that.

"},{"location":"portfolio/12-promoting/#defining-the-target-to-be-promoted","title":"Defining the target to be promoted","text":"

Before we start promoting, we need to define what we want to promote. The main difference between promoting ourselves or our work is the tone, the message and the medium being promoted. So we can build a successful strategy.

In ether path you chose, consider the following questions:

  • What is the target audience?
  • What is the target platform?
  • What is the target medium?
  • What is the target message and content?
  • What is the target call to action?
  • What is the target result?
  • How to measure the success?
  • How to improve the promotion?
"},{"location":"portfolio/12-promoting/#defining-the-audience","title":"Defining the Audience","text":"

Before creating and running a promotion campaigns, we need to define the audience. The audience is the group of people we want to reach with our promotion and it can defined by the following:

  • Recruiters, HR, and hiring managers;
  • Other game developers, especially those who are in the same field as you;
  • Game players;
  • Journalists, writers and critics;
  • Investors;
  • Communities;
"},{"location":"portfolio/12-promoting/#about-platforms","title":"About Platforms","text":"

To reach specific audiences, we need to be in the same platform they are. For example: - Game players: Steam, Twitch, YouTube, itchio, GameJolt, Discord; - Journalists: Twitter, LinkedIn; - Investors: AngelList, Ycombinator, LinkedIn, Crunchbase; - Communities: Reddit, Discord, Facebook, Twitter; - Recruiters: mostly Linkedin.

Social media is a great way to promote yourself as a game developer. You can use it to share your work, your thoughts, your ideas, and your opinions. You can also use it to connect with other developers and learn from them.

Here goes my opinion about the most important platforms:

  • Twitter: it is the best and easy way to communicate with anyone in the world. The distance between to reach anyone is zero. And it has an awesome tagging structure. It is a great way to share your thoughts and ideas and ask for feedbacks. It is a great way to connect with other developers and learn from them. You can also use it to share your work and promote your games.
  • LinkedIn: It is a great way to connect with recruiters and hiring managers. Usually you will see other developers publishing their thoughts and ideas, so try to post relevant comments on their publications to get noticed and improve your visibility.
  • Facebook: It is mostly a general purpose social media. You can use it to connect with your friends and family, and collect feedbacks for your content. It is a great way to promote your finished games.
  • Instagram and Tiktok: Are more focused in fast, small and visual content. You can use it to promote your games and your work, but it is not the best way to share your thoughts and ideas.
  • Reddit: This one is the best for collecting feedbacks from other developers about your content, but the reach is limited.
  • Discord: The best tool be in touch with communities, you can build your own community for your game and be in direct contact with yours consumers. Another good use is to be in direct contact with other developers and learn from them.
  • YouTube and Twitch: The best way to share your work and promote your games.
  • Medium and Blogs in general: The best way to share your thoughts and ideas and ask for feedbacks. You can use it in conjunction with other platforms to catch the general attention and bring them to your content.
"},{"location":"portfolio/12-promoting/#mediums","title":"Mediums","text":"

The mediums are: Social media posts, Blog posts, Email, Podcasts, Videos, Events, Conferences, Meetups, Workshops, Webinars, Webcasts, and more.

For each type of medium, we need to plan the content, the frequency, and the duration. We have very nice tools to help us with that, like Buffer, Hootsuite and many others.

"},{"location":"portfolio/12-promoting/#message-and-tone","title":"Message and tone","text":"

The message is the main idea we want to communicate. The tone is the way we want to communicate it. You have to match the tone with the message in the given platform to reach the right audience. So plan ahead how you want to communicate your message and what tone you want to use.

When planning the message, it is good to plan the emotions we want to trigger in the audience. For example, if we want to promote our game, we can use the following emotions: Excitement, Joy, Curiosity, and Fun. If we want to promote yourself by doing something interesting, you can use the following emotions: Curiosity, Fun, Surprise and Pride.

"},{"location":"portfolio/12-promoting/#call-to-action","title":"Call to action","text":"

The call to action is the action we want your audience to take. It can be: Download the game, Read my Resume, be part of by community, Take a look on my Repository, Buy the game, Play the game, Follow me, Subscribe, Share, Like, Comment, and more.

"},{"location":"portfolio/12-promoting/#results","title":"Results","text":"

Whatever is your goal, you need to define the results you want to achieve so you should track and measure your progress. You can use tools like Google Analytics mostly for web content, Google Firebase for apps and games and many other.

Here some ideas of results you can track: Number of downloads, page views, number of people reaching you, number of followers, number of subscribers, number of likes, number of comments, number of shares, number of retweets, number of reposts and more.

"},{"location":"portfolio/12-promoting/#improving-the-promotion","title":"Improving the promotion","text":"

If you really want to go deep in this rabbit hole, I highly recommend you to create performance measurements such as KPI dashboard to track your progress and improve your promotion. You can use tools like Google Data Studio or Tableau. With the KPI dashboard, you can track your progress and improve your promotion. You can also use it to track your competitors and learn from them.

Another good strategy is to A/B test your promotion. You can use tools like Google Optimize to create different versions of your promotion and test which one is the best. You can also use it to test different messages, tones, and call to actions. I cannot stress enough how important it is to test your promotion, the most successful companies in the world do it. Zynga even quoted once \"We are not in the business of making games, we are in the business of testing games\" and \"We are a data warehouse maskerated as a game company\". So being data-driven and customer-centric is the key to success.

"},{"location":"portfolio/12-promoting/#homework","title":"Homework","text":"
  • Create a promotion strategy for yourself and your work.
  • What would be your first content and medium to promote?
  • What is the message and the tone?
  • Define your call to action.
  • How do you measure your results?
  • How would you plan to improve your promotion?
"},{"location":"portfolio/12-promoting/#conclusion","title":"Conclusion","text":"

I hope you enjoyed this content. If you have any questions, please create an issue in this repository. If you want to contribute, please create a pull request. If you want to support me, please share this content with your friends and colleagues. If you want to support me financially, please consider buying me a coffee or a very fancy wine.

"},{"location":"portfolio/13-cover-letter/","title":"How to write an Awesome Cover Letter","text":""},{"location":"portfolio/13-cover-letter/#what-is-a-cover-letter","title":"What is a cover letter?","text":"

A cover letter is a document that is sent together with your resume. It is a way to introduce yourself to the company, explain why you're applying for the job, and why you're a good fit for the position. You should also explain why you're interested in the company, and why you want to work for them.

Nowadays writing a Cover Letter seems to be a lost art. Most of the time, people just send their resume and that's it. But, if you want to stand out from the crowd, you should write a cover letter.

In a cover letter you can be more personal to sell yourself more effectively. The core of it is to link your skills and history to what they do and need. Now lets see how to write a cover letter.

"},{"location":"portfolio/13-cover-letter/#strategies-to-write-a-cover-letter","title":"Strategies to write a cover letter","text":"

There are many strategies to write a cover letter. But the main idea is to be personal and try to sell yourself more effectively. Here are some strategies to write a cover letter:

  • Be clear, concise and specific. You should try to be clear and try to sell yourself more effectively. Don't waste their time with long and boring paragraphs. You can do that by linking your skills and history to what they do and need. You can also try to show your personality and your passion for the job;
  • Be personal, enthusiastic and professional: You should try to be personal setting the best tone that matches your style and the company, just don't exaggerate. You can also try to show your personality and your passion for the job. But, you should also be professional and try to be polite and respectful. If you're unsure about the company culture, you can do that by using a formal language and a professional tone;
"},{"location":"portfolio/13-cover-letter/#knowing-your-audience","title":"Knowing your audience","text":"

Usually, game companies are interested in people who are passionate about games. But there are some core differences between what profiles AAA game studios and Indie Studios seek for. AAA usually follow the path of the specialist, while Indie Studios usually, the generalist. So try to match this style of writing in your cover letter.

Another relevant aspect is the company culture. You should try to match the tone of your cover letter to the company culture. If you're unsure about the company culture, you can do that by using a formal language and a professional tone. Or try to connect with some employees of the company and ask them about the company culture.

Research about the company. Try to find out what they do, what they are looking for, and what they are interested in. You can do that by reading their website, their blog, and their social media. They tend to prefer people that have culture, passion and goals aligned with theirs. So try to show that you are passionate about their products and their goals.

Play their games, and use their products. An awesome icebreaker can be yourself telling about some funny bug or how you enjoyed the game connecting it to your life. It would be awesome if you can show that you are a fan of their products to the point to even create mods or fan art.

"},{"location":"portfolio/13-cover-letter/#write-interesting-content","title":"Write interesting content","text":"

You should try to write memorable sentences to maintain your reader engaged. One strategy is to start the paragraphs with a short and powerful sentence that summarizes the the topic you are about to write. Arguably, you can also try to use a powerful quote to start your cover letter.

Your first sentence plays a huge role in your cover letter, it should be meaningful to you and to the reader. Chances are, they wont be reading the whole cover letter, so you should try to make the first sentence as interesting as possible. Try to be catchy and try to make them want to read more, but take care not to exaggerate.

Sometimes your content is really relevant to you but it might not be that relevant to the company or the job. Sometimes we get too excited and we want to tell everything about ourselves and how passionate we are, by try telling all the things you ever did. But you should try to be clear and concise. Just add some breadcrumbs for the reader ask you in the interview about the things you didn't mention in the cover letter.

"},{"location":"portfolio/13-cover-letter/#strengths","title":"Strengths","text":"

You should try to highlight your strengths. You can do that by using a list of your skills and achievements. They will try to extrapolate the value you brought to the previous companies you worked for to themselves. So try show that you are a good fit for the job by giving success stories about your acchievents. Some examples:

  • AAA centred: I published a game on Steam with 100k downloads while a student. I acted as the main developer and tech lead, responsible for creating tools for level designers and AI system for the game. Besides that, I played a fundamental role to cut the scope of the game to make it possible to be released on time and consequently the sanity of the team;
  • Indie: I am fearless. I am not afraid to fail or take risks. This behavior pressures me to have a good plan and to be prepared for the worst. Once we tried a very ambitious feature that we thought would be awesome, we tracked the adoption of it, just to discover that nobody used it. We learned from it and we tried again with a smaller scope and it worked. We released the game on time and we were happy with the result;

Pay attention that some companies might not like to see that you are a risk taker. So try to be careful with that, and ask some employees of the company and ask them about the company culture.

"},{"location":"portfolio/13-cover-letter/#closure","title":"Closure","text":"

You should try to close your cover letter with summary, thank them for their consideration and time, and add a call to action. You can also try to add a call to action to connect with you on social media or to visit your website, or just say that you are in hopes to talk with them in person soon.

"},{"location":"portfolio/13-cover-letter/#create-a-template","title":"Create a Template","text":"

You should try to create a template for your cover letter. A way of doing it is to add replaceable tags for the company name, the job title, and the date. Try to mark those tags in some colorful way, so you can easily find them and replace them. You can also try to add some comments to help you remember what to write in each tag.

Another strategy to templating your cover letter is to create one template for every type of company. For example, you can create a template for AAA game studios, another for Indie game studios, and another for game companies. You can also create a template for each type of job. For example, you can create a template for a game designer, another for a gameplay developer, and another for a UI/frontend developer.

But if you pursue this path, you have to pay attention to the examples and products/games that you use in your cover letter. You will have to change them to match the company you are applying for.

"},{"location":"portfolio/13-cover-letter/#homework","title":"Homework","text":"

Write a Cover Letter for a game company.

"},{"location":"support/50rs-button/","title":"50rs button","text":""},{"location":"tools/git/","title":"Try Git","text":"

This document started as a copy from this Source

Here is a helpful three-part tutorial:

  1. Read About Version Control & the excellent Intro to Git
  2. Install Git for the command line. See the information below.
  3. Do the Try Git interactive tutorial. It basically runs you through using Git on the command line and with Github.

This information below contains recommended resources for learning Git and Github, which we will use this semester to store, manage and share our projects.

GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers free accounts for open source projects. As of May 2011, GitHub was the most popular open source code repository site. The site provides social networking functionality such as feeds, followers and the network graph to display how developers work on their versions of a repository. [Wikipedia]

Installing Git

Mac OSX

  • Git can be installed in Xcode via installing the Command Line Tools at Preferences->Downloads->Components
  • You can also install Git via the download from the git website or through package management tools such as Homebrew and Macports

Windows

  • Install Git for Windows which includes a Unix-like Bash terminal environment that matches the commands in the Try Git tutorial.
  • If you're familiar with the Win/DOS Command shell but are new to Bash, check out this DOS - Bash command comparison

Linux

  • Install git through your distro's package management system

Configure Git

  • Set you username and email address (only need to do this once).
  • $ git config --global user.name \"YOUR_FULL_NAME\"\n$ git config --global user.email \"YOUR_EMAIL_ADDRESS\"
  • Turn on git colors with makes reading status and diffs much easier (only need to do this once). You shouldn't need to do this if you're using the Git Bash installed by Git for Windows.
  • $ git config --global color.ui true
Useful Command Line Commands

The following are pulled form the excellent Introduction to Git. Bash/Shell A small list of the bread and butter Bash/Shell/Terminal commands. Some of these commands respond to the\"-h\" or \"--help\" options which print out a small usage reference. Many of the simple commands (ls, cp, mv) don't respond to \"--help\" but will simply print out a usage line when they don't understand the given arguments.

$ ls --help

Also, most have manual pages which can be reached by using the \"man\" command and then the program name. Here's how to open the manual page for ls:

$ man ls

Use the UP & DOWN arrow keys to scroll and 'q' to quit.

  • ls - list contents of the current dir
  • cd - change directory; ~/ refers to your home dir, . refers to the current dir, ../ refers to one directory up, ../../ refers to 2 dirs up, etc
  • pwd - prints full path to the current dir (where we are)
  • mkdir - make a new dir
  • touch - create an empty file or update the timestamp on an existing file
  • mv - move a file or dir
  • cp - copy a file or folder; the -R option copies files & folders recursively (need to copy the entire contents of a given folder if it als contains folders)

Git This is just a small list of git commands. See the references below for more detailed info. All of the git commands respond to \"--help\".

  • git init - initialize a dir for git source control management
  • git clone - clone a git repository from another location (another git controlled folder, somewhere online, GIthub, etc)
  • git checkout - switch to a branch, commit, or tag; the base location is the master branch
  • git status - print status of the staging area (modified files, current branch, etc)
  • git add - add a file or folder to the staging area, responds to wildcards like *.txt and . which refers to all modified files (careful with this one!)
  • git rm - remove a file or folder form the staging area, removing a modfied file may require the -f argument to force it, -r adds files recursively (useful within folders).
  • git mv - move or rename files or folders, only works for files currently managed by git (aka added previously)
  • git commit -m \"some message\" - commit the current staging area (adds, modifications, removals); the -m option specifies the log message
  • git branch some_branch - creates a branch called \"some_branch\"; don;t forget to switch to it using git checkout!
  • git merge some_branch - merge a branch into the current branch, in this case merge \"some_branch\" with \"master\"
References

Books & Tutorials

  • Try Git online course by Code School + Github. (thx @codeSchool)
  • Pro Git book by Scott Chacon (free PDF). (thx @hilarymason)
  • Interactive Tutorial by Code School. (thx @maxhawkins, @raunaqgupta)

Client Apps:

  • SourceTree (thx @smallfly)
  • Tower app for Mac OSX ($30 for students). (thx @pitaru)
  • Github for Mac
  • Git-Friendly shell scripts by Jamie Wilkinson. (thx @jamiew)

Videos:

  • Github Learning Series Video Tutorials. (thx @julianoliver)
  • Github's official YouTube channel. (thx @matthewmccull)
  • Getting Git video by Scott Chacon. (thx @richbate)
  • Mastering Git Basics by Tom Preston-Werner. (thx @maxhawkins)
  • Code Journal Part 1 by James Paterson. (thx @joshuadavis)
  • GitCasts. (thx @bgstaal)

Web Sites/Pages:

  • Official Git Reference.
  • Github Official Teaching Materials. (thx @matthewmccull)
  • Github Setup Bootcamp.
  • Getting Started with Git by Git-SCM. (thx @julianoliver)
  • Introduction to Git & Git Workflow for Beginners by Steve Klise. (thx @atduskgreg)
  • A Visual Git Reference by Mark Lodato. (thx @moskovich)
  • The openFrameworks Git Workflow by the OF community. (thx @zachlieberman)
  • Git - The Simple Guide by Roger Dudler. (thx @lennyjpg)
  • How to Learn Git (Link Roundup) by Kevin Suttle. (thx @kevinSuttle)
  • A Successful Git Branching Model by @nvie. (thx @smallfly)

Cheat Sheets:

  • Zach Lieberman's Cheatsheet. (thx @zachlieberman)
  • Git Cheatsheet by Andrew Peterson/NDP Software. (thx @julienbayle)
  • Git Developer Cheatsheet (PDF) by Salesforce.com. (thx @julienbayle)
"},{"location":"blog/archive/2024/","title":"2024","text":""},{"location":"blog/archive/2023/","title":"2023","text":""},{"location":"blog/category/neuro-divergence/","title":"neuro divergence","text":""},{"location":"blog/category/teaching/","title":"teaching","text":""},{"location":"blog/category/autism/","title":"autism","text":""},{"location":"blog/category/adhd/","title":"adhd","text":""},{"location":"blog/category/high-abilities/","title":"high abilities","text":""},{"location":"blog/category/giftedness/","title":"giftedness","text":""},{"location":"blog/category/algorithms/","title":"algorithms","text":""},{"location":"blog/category/data-structures/","title":"data structures","text":""},{"location":"blog/category/c/","title":"c++","text":""},{"location":"blog/category/optimization/","title":"optimization","text":""},{"location":"blog/category/memory/","title":"memory","text":""},{"location":"blog/category/cache/","title":"cache","text":""},{"location":"blog/category/map/","title":"map","text":""},{"location":"blog/category/unordered_map/","title":"unordered_map","text":""},{"location":"blog/category/maze/","title":"maze","text":""},{"location":"blog/category/vector/","title":"vector","text":""},{"location":"blog/category/bitfield/","title":"bitfield","text":""},{"location":"blog/category/maze-generation/","title":"maze generation","text":""},{"location":"blog/category/gamedev/","title":"gamedev","text":""},{"location":"blog/category/cmake/","title":"cmake","text":""},{"location":"blog/category/cpm/","title":"cpm","text":""},{"location":"blog/category/sdl3/","title":"sdl3","text":""},{"location":"blog/category/sdl2/","title":"sdl2","text":""},{"location":"blog/category/clion/","title":"clion","text":""},{"location":"blog/category/ferpa/","title":"ferpa","text":""},{"location":"blog/category/privacy/","title":"privacy","text":""},{"location":"blog/category/academic-honesty/","title":"academic honesty","text":""},{"location":"blog/category/plagiarism/","title":"plagiarism","text":""},{"location":"blog/category/ai/","title":"ai","text":""},{"location":"blog/category/chatgpt/","title":"chatgpt","text":""},{"location":"blog/category/canvas/","title":"canvas","text":""},{"location":"blog/category/turnitin/","title":"turnitin","text":""},{"location":"blog/category/moss/","title":"moss","text":""},{"location":"blog/category/github-copilot/","title":"github copilot","text":""},{"location":"blog/category/mixed-reality/","title":"mixed Reality","text":""},{"location":"blog/category/virtual-reality/","title":"virtual reality","text":""},{"location":"blog/category/augmented-reality/","title":"augmented reality","text":""},{"location":"blog/category/augmented-virtuality/","title":"augmented virtuality","text":""},{"location":"blog/category/philosophy/","title":"philosophy","text":""}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..d67f49da --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,515 @@ + + + + https://courses.tolstenko.net/ + 2024-09-16 + + + https://courses.tolstenko.net/advanced/ + 2024-09-16 + + + https://courses.tolstenko.net/advanced/01-introduction/ + 2024-09-16 + + + https://courses.tolstenko.net/advanced/01-introduction/setup/ + 2024-09-16 + + + https://courses.tolstenko.net/advanced/02-oop/ + 2024-09-16 + + + https://courses.tolstenko.net/advanced/03-pointers/ + 2024-09-16 + + + https://courses.tolstenko.net/advanced/04-operators/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/01-introduction/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/02-analysis/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/03-dynamic-data/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/04-sorting/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/05-divide-and-conquer/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/06-hashtables/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/07-midterm/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/08-stack-and-queue/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/09-break/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/10-graphs/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/11-dijkstra/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/12-mst/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/13-bst/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/14-heap/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/15-project/ + 2024-09-16 + + + https://courses.tolstenko.net/algorithms/16-finals/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/00-introduction/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/01-pcg/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/02-sm/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/03-boardgames/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/04-spatialhashing/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/05-kdtree/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/06-pathfinding/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/07-automatedtesting/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/09-minmax/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/animation/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/assignments/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/assignments/flocking/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/assignments/genai/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/assignments/life/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/assignments/maze/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/assignments/rng/ + 2024-09-16 + + + https://courses.tolstenko.net/artificialintelligence/readings/spatial-quantization/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2023/07/28/the-problem-with-ai-trolley-dilemma/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2023/09/09/setup-sdl-with-cmake-and-cpm/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2023/08/30/ferpa-consent/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2024/01/29/differences-between-map-vs-unordered_map/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2023/10/02/memory-efficient-data-structure-for-procedural-maze-generation/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2023/08/09/lets-talk-about-virtual-reality/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2024/08/19/neurodivergence-in-the-game-development/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/2023/08/24/notes-on-submissions/ + 2024-09-16 + + + https://courses.tolstenko.net/dojo/ + 2024-09-16 + + + https://courses.tolstenko.net/dojo/Full-Cycle-SDL-Development/ + 2024-09-16 + + + https://courses.tolstenko.net/dojo/The-most-asked-interview-question/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/01-introduction/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/02-tooling/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/03-datatypes/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/04-conditionals/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/05-loops/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/06-functions/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/07-streams/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/08-arrays/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/09-recursion/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/10-sorting/ + 2024-09-16 + + + https://courses.tolstenko.net/intro/11-structs/ + 2024-09-16 + + + https://courses.tolstenko.net/introgameprog/ + 2024-09-16 + + + https://courses.tolstenko.net/introgameprog/02-GameDevTools/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/01-introduction/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/02-cases/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/02-cases/example.com/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/03-structure/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/04-communication/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/05-strategy/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/06-reels/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/07-hosting/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/08-cms/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/09-get-ready/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/09-get-ready/common-intenterview-questions/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/10-frontend/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/11-dynamic/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/12-promoting/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/13-cover-letter/ + 2024-09-16 + + + https://courses.tolstenko.net/portfolio/14-cv/ + 2024-09-16 + + + https://courses.tolstenko.net/support/50rs-button/ + 2024-09-16 + + + https://courses.tolstenko.net/tools/git/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/archive/2024/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/archive/2023/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/neuro-divergence/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/teaching/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/autism/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/adhd/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/high-abilities/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/giftedness/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/algorithms/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/data-structures/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/c/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/optimization/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/memory/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/cache/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/map/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/unordered_map/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/maze/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/vector/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/bitfield/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/maze-generation/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/gamedev/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/cmake/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/cpm/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/sdl3/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/sdl2/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/clion/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/ferpa/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/privacy/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/academic-honesty/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/plagiarism/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/ai/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/chatgpt/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/canvas/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/turnitin/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/moss/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/github-copilot/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/mixed-reality/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/virtual-reality/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/augmented-reality/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/augmented-virtuality/ + 2024-09-16 + + + https://courses.tolstenko.net/blog/category/philosophy/ + 2024-09-16 + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 00000000..ecec3f78 Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/support/50rs-button/index.html b/support/50rs-button/index.html new file mode 100644 index 00000000..bc6f3355 --- /dev/null +++ b/support/50rs-button/index.html @@ -0,0 +1,30 @@ + 50rs button - Awesome GameDev Resources

50rs button

Estimated time to read: 1 minute

\ No newline at end of file diff --git a/tools/git/index.html b/tools/git/index.html new file mode 100644 index 00000000..5a7a643e --- /dev/null +++ b/tools/git/index.html @@ -0,0 +1,13 @@ + Try Git - Awesome GameDev Resources

Try Git

Estimated time to read: 21 minutes

This document started as a copy from this Source

Here is a helpful three-part tutorial:

  1. Read About Version Control & the excellent Intro to Git
  2. Install Git for the command line. See the information below.
  3. Do the Try Git interactive tutorial. It basically runs you through using Git on the command line and with Github.

This information below contains recommended resources for learning Git and Github, which we will use this semester to store, manage and share our projects.

setuptocat1

GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers free accounts for open source projects. As of May 2011, GitHub was the most popular open source code repository site. The site provides social networking functionality such as feeds, followers and the network graph to display how developers work on their versions of a repository. [Wikipedia]

Installing Git

Mac OSX

  • Git can be installed in Xcode via installing the Command Line Tools at Preferences->Downloads->Components
  • You can also install Git via the download from the git website or through package management tools such as Homebrew and Macports

Windows

  • Install Git for Windows which includes a Unix-like Bash terminal environment that matches the commands in the Try Git tutorial.
  • If you're familiar with the Win/DOS Command shell but are new to Bash, check out this DOS - Bash command comparison

Linux

  • Install git through your distro's package management system

Configure Git

  • Set you username and email address (only need to do this once).
  • $ git config --global user.name "YOUR_FULL_NAME"
    +$ git config --global user.email "YOUR_EMAIL_ADDRESS"
  • Turn on git colors with makes reading status and diffs much easier (only need to do this once). You shouldn't need to do this if you're using the Git Bash installed by Git for Windows.
  • $ git config --global color.ui true

Useful Command Line Commands

The following are pulled form the excellent Introduction to Git. Bash/Shell A small list of the bread and butter Bash/Shell/Terminal commands. Some of these commands respond to the"-h" or "--help" options which print out a small usage reference. Many of the simple commands (ls, cp, mv) don't respond to "--help" but will simply print out a usage line when they don't understand the given arguments.

$ ls --help

Also, most have manual pages which can be reached by using the "man" command and then the program name. Here's how to open the manual page for ls:

$ man ls

Use the UP & DOWN arrow keys to scroll and 'q' to quit.

  • ls - list contents of the current dir
  • cd - change directory; ~/ refers to your home dir, . refers to the current dir, ../ refers to one directory up, ../../ refers to 2 dirs up, etc
  • pwd - prints full path to the current dir (where we are)
  • mkdir - make a new dir
  • touch - create an empty file or update the timestamp on an existing file
  • mv - move a file or dir
  • cp - copy a file or folder; the -R option copies files & folders recursively (need to copy the entire contents of a given folder if it als contains folders)

Git This is just a small list of git commands. See the references below for more detailed info. All of the git commands respond to "--help".

  • git init - initialize a dir for git source control management
  • git clone - clone a git repository from another location (another git controlled folder, somewhere online, GIthub, etc)
  • git checkout - switch to a branch, commit, or tag; the base location is the master branch
  • git status - print status of the staging area (modified files, current branch, etc)
  • git add - add a file or folder to the staging area, responds to wildcards like *.txt and . which refers to all modified files (careful with this one!)
  • git rm - remove a file or folder form the staging area, removing a modfied file may require the -f argument to force it, -r adds files recursively (useful within folders).
  • git mv - move or rename files or folders, only works for files currently managed by git (aka added previously)
  • git commit -m "some message" - commit the current staging area (adds, modifications, removals); the -m option specifies the log message
  • git branch some_branch - creates a branch called "some_branch"; don;t forget to switch to it using git checkout!
  • git merge some_branch - merge a branch into the current branch, in this case merge "some_branch" with "master"

References

Books & Tutorials

Client Apps:

Videos:

Web Sites/Pages:

Cheat Sheets:

\ No newline at end of file