diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..a5ab743 Binary files /dev/null and b/.DS_Store differ diff --git a/.gitignore b/.gitignore index 97d3085..469a259 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ bin/ *.so *.o libsrvcli/ +benchmarks/ diff --git a/.gitmodules b/.gitmodules index f80c4e9..f1aa480 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ -[submodule "libsrvcli"] - path = libsrvcli - url = https://github.com/nandavelugoti/libsrvcli.git +[submodule "benchmarks/sorting-benchmarks"] + path = benchmarks/sorting-benchmarks + url = https://github.com/dopecoder/sorting-benchmark.git +[submodule "benchmarks/ram-bench"] + path = benchmarks/ram-bench + url = https://github.com/dopecoder/ram_bench.git diff --git a/.vscode/settings.json b/.vscode/settings.json index 26cfccc..e03956d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -60,6 +60,11 @@ "tuple": "cpp", "type_traits": "cpp", "typeinfo": "cpp", - "utility": "cpp" + "utility": "cpp", + "deque": "cpp", + "fstream": "cpp", + "iomanip": "cpp", + "numeric": "cpp", + "stack": "cpp" } } \ No newline at end of file diff --git a/Makefile b/Makefile index 5ddb47a..1440154 100644 --- a/Makefile +++ b/Makefile @@ -12,11 +12,11 @@ all: libsrvcli/libsrvcli.so rmp_client.o rmp_server.o libsrvcli/libsrvcli.so: $(MAKE) -C libsrvcli/ -rmp_server.o: rmp/rmp_server.cpp - $(CC) $(CFLAGS) rmp/rmp_server.cpp -o rmp_server.o $(LDFLAGS) +rmp_server.o: server/rmp_server.cpp + $(CC) $(CFLAGS) server/rmp_server.cpp -o rmp_server.o $(LDFLAGS) -rmp_client.o: rmp/rmp_client.cpp uffdman.o - $(CC) $(CFLAGS) rmp/rmp_client.cpp -o rmp_client.o $(LDFLAGS) -luffdman.o +rmp_client.o: client/rmp_client.cpp uffdman.o + $(CC) $(CFLAGS) client/rmp_client.cpp -o rmp_client.o $(LDFLAGS) -luffdman.o uffdman.o: uffdman/uffdman.cpp $(CC) $(CFLAGS) uffdman/uffdman.cpp -o uffdman.o $(LDFLAGS) diff --git a/README.md b/README.md index 8510931..6aae921 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,313 @@ -# rmpool: Remote Memory Pool -## An extensible mechanism for pooling memory among remote machines + + +# RMP: Remote Memory Pool +### A Research project under [Prof. Kyle Hale](https://www.halek.co/): +* [Nithin Rao](https://www.halek.co/authors/nithin-rao/) +* [Nanda Velugoti](https://www.halek.co/authors/nanda-velugoti/) + +## To Run the test program, + +``` +cd server +make +./bin/server 127.0.0.1 6768 +``` + +``` +cd client +make +./bin/client 127.0.0.1 6768 +``` + +## Abstract + +Memory management is one of the key components ofany software system +environment. For most of the cases local memory (localphysical RAM) to allocate, read, write +and free memory regions in a program. In these casesthe amount of memory available to it is +limited for a program. Remote Memory Pool (RMP) isdesigned to address this memory +limitation, by providing a way for programs to allocatememory remotely. We do this by +implementing RMP as a user-level library that allowsusers to set up a server program that +servers the remote memory and a client program canuse that remote memory from the server. +Not only that RMP does this exposing a truly minimalAPI, just three to be exact, for the client +program to allocate remote memory. Also the readsand writes to this remote memory does not +involve invocation of any external API or methods.Reading and writing is done just like a +variable access in C. To achieve this we use somelinux kernel mechanisms such as userfaultfd +to resolve reads and writes under the hood. This meansthat users can start using RMP without +any major changes to their existing program code. + +## Introduction + +In the evolution of distributed systems, managingmemory gets even more difficult. Many +of the implementations of remote memory expose APIsfor reading and writing data to memory +remotely, which makes it very hard for the developersto integrate such implementations into +their existing programs to use remote memory. Evenfor developers to write new programs with +these remote memory implementations need to use APIslike read/write to do memory +operations. + +Remote Memory Pool (RMP) is implemented as a userspace library that exposes basic +initialization, allocation and freeing APIs for usersto manage remote memory. All the reads and +writes to this is remote memory is done as usual meaningusing variables. + +In normal use cases of memory allocation and access,the memory is allocated in the +local physical RAM of the machine. With our implementationof RMP (Remote Memory Pool) +users can allocate memory, with page granularity,on a remote server’s physical RAM and +access (Read/Write) in real-time on demand. The objectivehere is to provide the user with a +minimal API that looks like a generic memory allocationAPI, such as malloc, while taking care +of sending and receiving the data back and forth withoutthe user having to change his code +significantly. + +What exactly are we trying to accomplish? Below arethe examples illustrating how memory is +allocated, accessed and freed locally (normal) andremotely (RMP). + + +``` +Accessing Local Memory +``` +``` +Accessing Remote Memory (RMP) +``` +## Userfaultfd + +The userfaultfd mechanism is designed to allow a threadin a multithreaded program to +perform user-space paging for the other threads inthe process. When a page fault occurs for +one of the regions registered to the userfaultfd object,the faulting thread is put to sleep and an +event is generated that can be read via the userfaultfdfile descriptor. The fault-handling thread +reads events from this file descriptor and servicesthem using operations described in +ioctl_userfaultfd(2). When servicing the page faultevents, the fault-handling thread can trigger +a wake-up for the sleeping thread. + +It is possible for the faulting threads and the fault-handlingthreads to run in the context +of processes. In this case, these threads may belongto differ‐ ent programs, and the program +that executes the faulting threads will not necessarilycooperate with those that handle the page + + +faults. In such non-cooperative mode, the process that monitors userfaultfd and handles page +faults needs to be aware of the changes in the memorylayout of the faulting process to avoid +mem‐ ory corruption. + +After the userfaultfd object is created with userfaultfd(),the application must enable it +using the UFFDIO_API ioctl(2) operation. This operationallows a handshake between the +kernel and user space to determine the API versionand supported features. This operation +must be performed before any of the other ioctl(2)operations de‐ scribed below (or those +operations fail with the EINVAL error). + +After a successful UFFDIO_API operation, the applicationthen registers memory +address ranges using UFFDIO_REGISTER ioctl(2) operation. After successful completion of a +UFFDIO_REGISTER operation, a page fault occurringin the requested memory range, and +satisfying the defined at the registration time, willbe forwarded by the kernel to the user-space +application. The application can then use the UFFDIO_COPYor UFFDIO_ZEROPAGE ioctl( +operations to resolve the page fault. + + +## Problems with userfaultfd + +**There are two basic problems:** + +1. A pagefault (userfault) won't occur for subsequentreads/writes once it is + resolved/handled. +2. In a pagefault due to a write, we won't get the data(part of faulting instruction) that is + being written in the userfault handler. + +## Our Solution: Off-by-one invalidation + +**Off-by-one Invalidation:** If a pagefault occurs, thenthe faulting address and operation +(read/write) is saved, so that it can be invalidatedwhen the next pagefault occurs. + +### Constraints: + +1. At Most two pages of memory is required. +2. The memory of the entity which is resolving pageswill be behind by one memory + address in terms of consistency. Since the name Off-by-one. + +## RMP Components + +RMP as library has a + +**Server Component** +● Exposes user API to setup RMP server: rmp_server_init() +● Serves pages to clients by sending a page on readand receiving a page on write. +**Client Component** +● Registers with userfaultfd manager to listen to pagefaults +● Exposes user API: rmp_init(), rmp_alloc(n_pages),rmp_free(addr) +● Communicates with the server by sending a page onwrite and receiving a page on read. +**Userfaultfd Manager** +● Handles user page faults on the registered region. +● A fault handler thread gets an userfault event withfault address and operation type +(R/W) + + +## Under the hood of RMP + +**Process of allocation, access and freeing of remotememory:** + +1. Client requests to allocate n pages on a remote server. +2. Server allocates the n pages in memory and returnsa mapped handle. +3. Client stores the handle by mapping it to the localaddress. +4. Client then registers the local region with UFFD Manager +5. UFFD Manager then registers the region as a UFFD regionand starts a fault handler + thread for that region. +6. A read/write to this region will cause a page faultthat will be caught by the appropriate + fault handler thread, which then is forwarded to theRMP Client to resolve the fault. +7. This read/write will be resolved by requesting theserver by sending the appropriate + handle that was stored in step 3 and the calculatedoffset of the page within the region. + The offset is calculated by, + Offset =(Faulting Address - Region Start Address) / Page Size +8. After repeating step 7 for all the accesses to allthe remote memory regions, the client + then can send a free request to Server, which serverfrees the region in it’s memory after + which the client does the same. + + +## Using RMP: Server/Client API and Example + +## Programs + +**Server API:** +● void rmp_server_init(server_conn_config); +**Client API:** +● void rmp_init(server_conn_config); +● void* rmp_alloc(long n_pages); +● void rmp_free(void* addr); + +``` +Client.c Server.c +``` +## Testing and Evaluation + +### Testing Setup: + +``` +Server 4 Core, 8GB RAM, Gigabit Ethernet +``` +``` +Client 4 Core, 1GB RAM, Gigabit Ethernet +``` + +### Test Suites: + +``` +● Program to allocate 1000, 10000, 100000 sized arraysand fill them up with numbers +and calculate the sum. + ○ Sequential Read Write Execution + ○ Random Read Write Execution +● Insertion Sort Algorithm +``` +### Results + +**1. Sequential Access** + +``` +Operation Type Mode Time (seconds) +``` +``` +Sequential Read Local 2.59893e- +``` +``` +Sequential Read Remote 2.3117e- +``` +``` +Sequential Write Local 3.22393e- +``` +``` +Sequential Write Remote 6.4034e- +``` +**Observation:** Sequential remote accesses are slowerin the order of 10^4 microseconds + +**2. Random Access** + +``` +Operation Type Mode Time (seconds) +``` +``` +Random Read Local 0.0774958e- +``` +``` +Random Read Remote 0. +``` +``` +Random Write Local 0.0857879e- +``` +``` +Random Write Remote 0. +``` +**Observation:** Random remote accesses are slower inthe order of 10^9 microseconds + +3. **Insertion Sort (** 100000 Elements) + +``` +Local Execution Time 10.7446 Seconds +``` +``` +Remote Execution Time 199.1882 Seconds +``` + +**Observation:** Remote accesses are slower in the orderof 20x compared to local accesses + +### Graphs + +**Graphs for Insertion Sort with RMP:** 1000 to 1M elements + +``` +Linear view Logarithmic view +``` +## RMP Advantages and Disadvantages + +``` +Advantages Disadvantages +``` +``` +Clients can access more memory than it’s +own local memory (given that remote +machines can satisfy the client’s +requirement). +``` +``` +Not as fast as local memory. Speed of the +memory accesses is dependent on the +network communication type (RDMA, TCP/IP, +etc). +``` +``` +Minimal development or integration or porting +effort required. +``` +``` +Scaling and load balancing is not taken care +of in the current implementation. +``` +``` +Extensible, meaning that this implementation +can be extended to support many more +features. (see next section). +``` +``` +Currently every read/write will result in a +network communication (which is costly). This +can be solved by implementing a client side +cache. +``` +``` +This can be extended to implement +distributed remote memory. +``` +``` +Handling consistency and recovery in a +scenario with unexpected crashes is really +difficult as a lot state information and logging +is required +``` + +## Possible Improvements and Extensions + +``` +● Use upcoming linux kernel patches for userfaultfdthat resolves the problems that we +faced earlier instead of using the Off-by-one invalidationsolution proposed before. +● Use RDMA instead of TCP/IP (expected performance improvements) + ○ Hardware (RoCE or Infiniband) + ○ Software (SoftRoCE) +● Extend it to work with NDP (Near Data Processing)units. +● Support multiple servers and clients (distributedremote memory) +● A distributed memory with +● Discovery mechanism for available RMP servers +● Nodes in the network act as both servers and clients. +``` diff --git a/benchmarks/bench.sh b/benchmarks/bench.sh deleted file mode 100755 index 39e8ccd..0000000 --- a/benchmarks/bench.sh +++ /dev/null @@ -1,45 +0,0 @@ - -# QUICKSORT - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so ./bin/quicksort-1-thousand > qs-1-thousand-remote -# ./bin/quicksort-1-thousand > qs-1-thousand-local - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so ./bin/quicksort-10-thousand > qs-10-thousand-remote -# ./bin/quicksort-10-thousand > qs-10-thousand-local - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so ./bin/quicksort-100-thousand > qs-100-thousand-remote -# ./bin/quicksort-100-thousand > qs-100-thousand-local - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so ./bin/quicksort-1-million > qs-1-million-remote -# ./bin/quicksort-1-million > qs-1-million-local - -# MAGICK CONVERT - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so time convert img.jpg img.png > convert-1-remote 2>&1 -# time convert img.jpg img.png > convert-1-local 2>&1 - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so time convert input.png -colorspace RGB +sigmoidal-contrast 11.6933 \ -# -define filter:filter=Sinc -define filter:window=Jinc -define filter:lobes=3 \ -# -resize 400% -sigmoidal-contrast 11.6933 -colorspace sRGB output.png > convert-2-remote 2>&1 - -# time convert input.png -colorspace RGB +sigmoidal-contrast 11.6933 \ -# -define filter:filter=Sinc -define filter:window=Jinc -define filter:lobes=3 \ -# -resize 400% -sigmoidal-contrast 11.6933 -colorspace sRGB output.png > convert-2-local 2>&1 - -# SYSBENCH - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so sysbench --test=memory --memory-block-size=64K --memory-total-size=100G --num-threads=1 run > sysbench-64K-remote -# sysbench --test=memory --memory-block-size=64K --memory-total-size=100G --num-threads=1 run > sysbench-64K-local - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so sysbench --test=memory --memory-block-size=1M --memory-total-size=100G --num-threads=1 run > sysbench-1M-remote -# sysbench --test=memory --memory-block-size=1M --memory-total-size=100G --num-threads=1 run > sysbench-1M-local - -# LD_PRELOAD=../preloadlib/bin/preloadlib.so sysbench --test=memory --memory-block-size=4M --memory-total-size=100G --num-threads=1 run > sysbench-4M-remote -# sysbench --test=memory --memory-block-size=4M --memory-total-size=100G --num-threads=1 run > sysbench-4M-local - -# MEMORY TEST - -memory_test 0 21 > mem-test-local -LD_PRELOAD=../preloadlib/bin/preloadlib.so memory_test 0 21 > mem-test-remote - - diff --git a/benchmarks/build.sh b/benchmarks/build.sh new file mode 100755 index 0000000..b5f27ee --- /dev/null +++ b/benchmarks/build.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +g++ throughput_benchmark.cpp -o tb +# g++ latency-benchmark.cpp -o lb \ No newline at end of file diff --git a/benchmarks/buildnbench-local.sh b/benchmarks/buildnbench-local.sh new file mode 100755 index 0000000..0b32c96 --- /dev/null +++ b/benchmarks/buildnbench-local.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# create a output directory +mkdir -p data +mkdir -p data/sorting-benchmarks +mkdir -p data/ram-bench +mkdir -p data/sysbench + + +# SORTING-BENCHMARK + +printf "Started SORTING-BENCHMARK" + +cd sorting-benchmarks + +cmake CMakeLists.txt +make + +./runtime_local.sh + +cd .. + +printf "Finished SORTING-BENCHMARK\n" + + +# RAM-BENCH + +printf "Running RAM-BENCH" + +cd ram-bench + +./build_and_run_local.sh + +cd .. + +printf "Finished RAM-BENCH\n" + +# SYSBENCH + +printf "Started SYSBENCH" + +sysbench --test=memory --memory-block-size=64K --memory-total-size=100G --num-threads=1 run > ./data/sysbench/sysbench-64K-local + +sysbench --test=memory --memory-block-size=1M --memory-total-size=100G --num-threads=1 run > ./data/sysbench/sysbench-1M-local + +sysbench --test=memory --memory-block-size=4M --memory-total-size=100G --num-threads=1 run > ./data/sysbench/sysbench-4M-local + +printf "Finished SYSBENCH\n" + +## Use perf to display the number of pagefaults for an example program such as malloc + +# MEMORY TEST + +# memory_test 0 21 > mem-test-local +# LD_PRELOAD=../preloadlib/bin/preloadlib.so memory_test 0 21 > mem-test-remote + +# MAGICK CONVERT + +# LD_PRELOAD=../preloadlib/bin/preloadlib.so time convert img.jpg img.png > convert-1-remote 2>&1 +# time convert img.jpg img.png > convert-1-local 2>&1 + +# LD_PRELOAD=../preloadlib/bin/preloadlib.so time convert input.png -colorspace RGB +sigmoidal-contrast 11.6933 \ +# -define filter:filter=Sinc -define filter:window=Jinc -define filter:lobes=3 \ +# -resize 400% -sigmoidal-contrast 11.6933 -colorspace sRGB output.png > convert-2-remote 2>&1 + +# time convert input.png -colorspace RGB +sigmoidal-contrast 11.6933 \ +# -define filter:filter=Sinc -define filter:window=Jinc -define filter:lobes=3 \ +# -resize 400% -sigmoidal-contrast 11.6933 -colorspace sRGB output.png > convert-2-local 2>&1 diff --git a/benchmarks/buildnbench-remote.sh b/benchmarks/buildnbench-remote.sh new file mode 100755 index 0000000..fdcdfe2 --- /dev/null +++ b/benchmarks/buildnbench-remote.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# create a output directory +mkdir -p data +mkdir -p data/sorting-benchmarks +mkdir -p data/ram-bench +mkdir -p data/sysbench + + +# # SORTING-BENCHMARK + +# printf "Started SORTING-BENCHMARK" + +# cd sorting-benchmarks + +# cmake CMakeLists.txt +# make + +# ./runtime_remote.sh + +# cd .. + +# printf "Finished SORTING-BENCHMARK\n" + + +# # RAM-BENCH + +# printf "Running RAM-BENCH" + +# cd ram-bench + +# ./build_and_run_remote.sh + +# cd .. + +# printf "Finished RAM-BENCH\n" + +# SYSBENCH + +printf "Started SYSBENCH" + +LD_PRELOAD=../preloadlib/bin/preloadlib.so sysbench --test=memory --memory-block-size=64K --memory-total-size=100G --num-threads=1 run > ./data/sysbench/sysbench-64K-remote + +LD_PRELOAD=../preloadlib/bin/preloadlib.so sysbench --test=memory --memory-block-size=1M --memory-total-size=100G --num-threads=1 run > ./data/sysbench/sysbench-1M-remote + +LD_PRELOAD=../preloadlib/bin/preloadlib.so sysbench --test=memory --memory-block-size=4M --memory-total-size=100G --num-threads=1 run > ./data/sysbench/sysbench-4M-remote + +printf "Finished SYSBENCH\n" + +## Use perf to display the number of pagefaults for an example program such as malloc + +# MEMORY TEST + +# memory_test 0 21 > mem-test-local +# LD_PRELOAD=../preloadlib/bin/preloadlib.so memory_test 0 21 > mem-test-remote + +# MAGICK CONVERT + +# LD_PRELOAD=../preloadlib/bin/preloadlib.so time convert img.jpg img.png > convert-1-remote 2>&1 +# time convert img.jpg img.png > convert-1-local 2>&1 + +# LD_PRELOAD=../preloadlib/bin/preloadlib.so time convert input.png -colorspace RGB +sigmoidal-contrast 11.6933 \ +# -define filter:filter=Sinc -define filter:window=Jinc -define filter:lobes=3 \ +# -resize 400% -sigmoidal-contrast 11.6933 -colorspace sRGB output.png > convert-2-remote 2>&1 + +# time convert input.png -colorspace RGB +sigmoidal-contrast 11.6933 \ +# -define filter:filter=Sinc -define filter:window=Jinc -define filter:lobes=3 \ +# -resize 400% -sigmoidal-contrast 11.6933 -colorspace sRGB output.png > convert-2-local 2>&1 diff --git a/benchmarks/convert-1-local b/benchmarks/convert-1-local deleted file mode 100644 index d34a6e1..0000000 --- a/benchmarks/convert-1-local +++ /dev/null @@ -1 +0,0 @@ -./bench.sh: line 19: convert: command not found diff --git a/benchmarks/convert-1-remote b/benchmarks/convert-1-remote deleted file mode 100644 index ffde449..0000000 --- a/benchmarks/convert-1-remote +++ /dev/null @@ -1,4 +0,0 @@ -time: cannot run convert: No such file or directory -Command exited with non-zero status 127 -0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 1560maxresident)k -0inputs+0outputs (0major+36minor)pagefaults 0swaps diff --git a/benchmarks/convert-2-local b/benchmarks/convert-2-local deleted file mode 100644 index 842812a..0000000 --- a/benchmarks/convert-2-local +++ /dev/null @@ -1 +0,0 @@ -./bench.sh: line 25: convert: command not found diff --git a/benchmarks/convert-2-remote b/benchmarks/convert-2-remote deleted file mode 100644 index e69de29..0000000 diff --git a/benchmarks/img.jpg b/benchmarks/img.jpg deleted file mode 100644 index 9b7620b..0000000 Binary files a/benchmarks/img.jpg and /dev/null differ diff --git a/benchmarks/install-deps.sh b/benchmarks/install-deps.sh new file mode 100755 index 0000000..cd28469 --- /dev/null +++ b/benchmarks/install-deps.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +sudo apt install gnuplot +sudo apt install clang +sudo apt install cmake +sudo apt install libc++-dev diff --git a/benchmarks/latency-benchmark.cpp b/benchmarks/latency-benchmark.cpp new file mode 100644 index 0000000..6e39d9b --- /dev/null +++ b/benchmarks/latency-benchmark.cpp @@ -0,0 +1,291 @@ +#include +#include +#include +#include +#include +#include +#include + +// void print(const char *str) +// { +// write(STDOUT_FILENO, str, strlen(str)); +// } + +void isIntSumValid(int num, int sum) +{ + if (sum == ((num * (num - 1)) / 2)) + { + std::cout << "SUM is valid" << std::endl; + } + else + { + std::cout << "SUM is invalid" << std::endl; + } +} + +void isDoubleSumValid(double num, double sum) +{ + if (sum == ((num * (num - 1)) / 2)) + { + std::cout << "SUM is valid" << std::endl; + } + else + { + std::cout << "SUM is invalid" << std::endl; + } +} + +// Function to return the next random number +int getNum(std::vector &v) +{ + + // Size of the vector + int n = v.size(); + + // Generate a random number + srand(time(NULL)); + + // Make sure the number is within + // the index range + int index = rand() % n; + + // Get random number from the vector + int num = v[index]; + + // Remove the number from the vector + std::swap(v[index], v[n - 1]); + v.pop_back(); + + // Return the removed number + return num; +} + +// Function to generate n non-repeating random numbers +std::vector getIndexArray(int n) +{ + std::vector v(n); + + // Fill the vector with the values + // 1, 2, 3, ..., n + for (int i = 0; i < n; i++) + v[i] = i + 1; + + return v; +} + +void bench_for_int(int num) +{ + int n = num * sizeof(int); + int sum = 0; + + int *p = (int *)malloc(n); + std::chrono::duration total_latency + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(int)); i++) + { + printf("%d\n", i); + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + p[i] = i; + } + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(int)); i++) + { + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------INT SEQ " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds."; + // read time + std::cout << "Read Time " << read_time.count() << " seconds."; + // total time + std::cout << "Total Time " << total_time.count() << " seconds."; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds."; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds."; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds."; + + // Sum + std::cout << "Sum " << sum << std::endl; + + isIntSumValid(num, sum); +} + +void bench_for_double(int num) +{ + int n = num * sizeof(double); + double sum = 0; + double j = 0; + + double *p = (double *)malloc(n); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(double)); i++) + { + printf("%d\n", i); + p[i] = j; + j++; + } + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(double)); i++) + { + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------DOUBLE SEQ " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds." << std::endl; + // read time + std::cout << "Read Time " << read_time.count() << " seconds." << std::endl; + // total time + std::cout << "Total Time " << total_time.count() << " seconds." << std::endl; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds." << std::endl; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds." << std::endl; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds." << std::endl; + + // Sum + std::cout << "Sum " << sum << std::endl; + isDoubleSumValid((double)num, sum); +} + +void bench_for_int_random(int num) +{ + int n = num * sizeof(int); + int sum = 0; + int i = 0; + + int *p = (int *)malloc(n); + std::vector idx1 = getIndexArray(num); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + while (idx1.size()) + { + i = getNum(idx1); + p[i] = i; + } + std::vector idx2 = getIndexArray(num); + + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + while (idx2.size()) + { + i = getNum(idx2); + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------INT RAND " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds." << std::endl; + // read time + std::cout << "Read Time " << read_time.count() << " seconds." << std::endl; + // total time + std::cout << "Total Time " << total_time.count() << " seconds." << std::endl; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds." << std::endl; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds." << std::endl; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds." << std::endl; + + // Sum + std::cout << "Sum " << sum << std::endl; + isIntSumValid(num, sum); +} + +void bench_for_double_random(int num) +{ + int n = num * sizeof(double); + int sum = 0; + int i = 0; + double j = 0; + + double *p = (double *)malloc(n); + std::vector idx1 = getIndexArray(num); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + while (idx1.size()) + { + i = getNum(idx1); + p[i] = i; + } + std::vector idx2 = getIndexArray(num); + + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + while (idx2.size()) + { + i = getNum(idx2); + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------DOUBLE RAND " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds."; + // read time + std::cout << "Read Time " << read_time.count() << " seconds."; + // total time + std::cout << "Total Time " << total_time.count() << " seconds."; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds."; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds."; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds."; + + // Sum + std::cout << "Sum " << sum << std::endl; + isDoubleSumValid((double)num, sum); +} + +int main(int argc, char *argv[]) +{ + bench_for_int(1024); + bench_for_int(10240); + bench_for_int(102400); + bench_for_int(1024000); + + bench_for_double(1024); + bench_for_double(10240); + bench_for_double(102400); + bench_for_double(1024000); + + bench_for_int_random(1024); + bench_for_int_random(10240); + bench_for_int_random(102400); + bench_for_int_random(1024000); + + bench_for_double_random(1024); + bench_for_double_random(10240); + bench_for_double_random(102400); + bench_for_double_random(1024000); +} \ No newline at end of file diff --git a/benchmarks/matmul/matmul.c b/benchmarks/matmul/matmul.c deleted file mode 100644 index 3120505..0000000 --- a/benchmarks/matmul/matmul.c +++ /dev/null @@ -1,1977 +0,0 @@ -# include -# include -# include -# include -# include -# include - -# define MACHINE APPLE_MAC - -# include "matmul.h" - -void abortm ( ); -void chop(char*,int,int); -void Docom(); -void Explain ( ); -void Flclos ( ); -void Flopen ( ); -void Gbye ( ); -void Getcom ( ); -void Getlda(char*); -void Getn(char*); -void Getord(char*, int*); -void Getsho(char* ,int); -void Hello ( ); -void Help ( ); -void Init ( ); -int min(int,int); -void Mult ( ); -int Nstep ( ); -void Pdump ( ); -void Printr ( ); -void Putinp(); -void Putout(); -void Record ( ); -void Result(short lchop); -#if MACHINE == VAX_VMS -void second(int*); -#elif MACHINE == IBM_PC -void second(long*); -#elif MACHINE == IBM_RS6 -void second(long*); -#elif MACHINE == CRAY -extern float SDOT(); -extern SAXPY(); -extern SGEMM(); -void second(long*); -#else -void second(long*,long*); -#endif -void Setval ( ); -void Shoord ( ); -void taxpy(int n,float *sa,float *sx,int incx,float *sy,int incy); -void _TDOT(); -float tdot(); -void TSTART ( ); -void TSTOP ( ); -void TMSTART ( ); -void TMSTOP ( ); -void Zero ( int len ); - -/******************************************************************************/ - -int main ( ) - -/******************************************************************************/ -/* - Purpose: - - MAIN is the main program for MATMUL. - - Discussion: - - MATMUL is an interactive C program that sets up, carries out, - and times a matrix multiplication. MATMUL can use several different - algorithms and matrix sizes, and can be run on many different computers. - - The main program is very simple. - - First some initialization is done, and then the program gets a command - from the user, executes it, and repeats. - - File usage: - - matmul.inp, record of input, created by MATMUL. - matmul.out, record of input/output, created by MATMUL. - matmul.hlp, help file. (Not available) - matmul.dat, data file, created by MATMUL. - matmul.exp, explanation file, read by MATMUL. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 15 May 2009 - - Author: - - John Burkardt, Paul Puglielli. -*/ -{ - Init ( ); - - for ( ; ; ) - { - Getcom ( ); - Docom ( ); - } - return 0; -} -/******************************************************************************/ - -void abortm ( ) - -/******************************************************************************/ -/* - Purpose: - - ABORTM is called to terminate execution. - - Discussion: - - ABORTM dumps the results to a file, says "goodbye" to the user, - and closes all files. -*/ -{ - Pdump(); - Gbye(); - Flclos(); - - exit ( 1 ); -} -/******************************************************************************/ - -void chop ( char *STRING, int ILO, int IHI ) - -/******************************************************************************/ -/* - CHOP "chops" out entries ILO through IHI of STRING, shifts the string - down, and pads the end of the string with NULLs. -*/ -{ - size_t l; - int i,j; - - l=strlen(STRING); - i=ILO; - for(j=IHI+1;j22) - { - getchar(); - line=0; - } - } - fclose ( ifilee ); - - ifilee=NULL; - - return; -} -/******************************************************************************/ - -void Flclos() - -/******************************************************************************/ -/* - FLCLOS closes all the files -*/ -{ - if (ifilei) - fclose(ifilei); - if (ifileo) - fclose(ifileo); - if (ifileh) - fclose(ifileh); - if (ifiled) - fclose(ifiled); - - return; -} -/******************************************************************************/ - -void Flopen() - -/******************************************************************************/ -/* - FLOPEN opens all the files. EXCEPT for matmul.dat, which is opened in Pdump. -*/ -{ - char outline[80]; - ifileo=fopen(fileo,"w"); - if(!ifileo) - { - sprintf(outline,"MATMUL could not open the output file %s",fileo); - Putout(outline); - Putout("This is not a serious problem, but it does mean there\n"); - Putout("will not be a transcript of the input and output\n"); - } - - ifilei=fopen(filei,"w"); - if(!ifilei) - { - sprintf(outline,"MATMUL could not open the output file %s\n",filei); - Putout(outline); - Putout("This is not a serious problem, but it does mean there\n"); - Putout("will not be a record of you output.\n"); - } -/* -HELP system not available yet! - ifileh=fopen(fileh,"r"); - if(!ifileh) - { - sprintf(outline,"MATMUL could not open the help file %s\n",fileh); - Putout(outline); - Putout("This is not a serious problem, but it does mean that\n"); - Putout("the full help system will not be available.\n"); - } -*/ - ifileh=NULL; - - return; -} -/******************************************************************************/ - -void Gbye() - -/******************************************************************************/ -/* - GBYE says goodbye to the user, and prints a reminder about files created - by the program. -*/ -{ - char outline[80]; - - if(ifilei) - sprintf(outline,"A copy of your input is in the file %s\n",filei); - else - sprintf(outline,"MATMUL could not create the input file %s\n",filei); - Putout(outline); - - if(ifiled) - sprintf(outline,"A copy of your results is in the file %s\n",filed); - else - sprintf(outline,"MATMUL could not create the result file %s\n",filed); - Putout(outline); - - if(ifileo) - sprintf(outline,"A copy of the entire session is in the file %s\n",fileo); - else - sprintf(outline,"MATMUL could not create the session file %s\n",fileo); - Putout(outline); - - printf ( "\n" ); - printf ( "MATMUL:\n" ); - printf ( " Normal end of execution.\n" ); - - return; -} -/******************************************************************************/ - -void Getcom() - -/******************************************************************************/ -/* - GETCOM reads the next command from the user. -*/ -{ - short i; - char cx; - - Putout("Command? (Type H for help):"); - for(i=0;((cx=getchar()) != '\n'); i++) - command[i]=toupper(cx); - Putinp(); - - return; -} -/******************************************************************************/ - -void Getlda(char *str) - -/******************************************************************************/ -/* - GETLDA gets a new value of LDA from the user. -*/ -{ - char outline[80]; - int temp; - - CHRCTI(str,&temp); - if (str == NULL) - Putout("I did not understand your definition of LDA.\n"); - if(temp < 0) - { - Putout("The assignment of LDA was not acceptable!\n"); - Putout("LDA must be positive.\n"); - } - else if (temp > LENA) - { - Putout("The assignment of LDA was not acceptable!\n"); - sprintf(outline,"LDA must be no greater than %d.\n",LENA); - Putout(outline); - } - else - { - lda=temp; - sprintf(outline,"LDA has been set to %d.\n",lda); - Putout(outline); - } - - if (lda < n) - { - n=lda; - Putout("\nNote: Since the value of N must always be no greater\n"); - Putout("than LDA, MATMUL has just decreased the value of N.\n"); - sprintf(outline,"N has been set to %d\n",n); - Putout(outline); - } - - return; -} -/******************************************************************************/ - -void Getn ( char *str ) - -/******************************************************************************/ -/* - GETN reads a new value of N from the user. -*/ -{ - char outline[80]; - char s[80]; - int temp; - int i; - int j; - int l; - int mult; - - if ( !str[0] ) - { - Putout("I could not understand your definition of N.\n"); - return; - } - - l=strlen(str); - memset(s,'\0',l); - -/* - Get first number -*/ - for(i=0;( (i LENA) - { - Putout("The value of N that you chose is not acceptable!\n"); - sprintf(outline,"N must be no greater than %d\n",LENA); - Putout(outline); - } - else - { - n=temp; - nlo=temp; - nhi=temp; - sprintf(outline,"N has been set to %d\n",n); - Putout(outline); - } - -/* - Read second number -*/ - -/* - if (str[i] == NULL) -*/ - if ( !str[i] ) - return; - - i++; - for(j=0;((i LENA) - { - Putout("The value of NHI that you chose is not acceptable!\n"); - sprintf(outline,"NHI must be no greater than %d\n",LENA); - Putout(outline); - } - else - { - nhi=temp; - sprintf(outline,"NHI has been set to %d\n",nhi); - Putout(outline); - ninc=1; - } - -/* Check for multipy */ - i++; - if (str[i] == '*') - { - mult=TRUE; - i++; - } - else - mult=FALSE; - -/* - Get third and last number -*/ - if ( !str[i] ) - return; - - for(j=0;((i nhi) && (ninc > 1)) ninc*=-1; - sprintf(outline,"NINC has been set to %d\n",ninc); - Putout(outline); - } - else - { - ninc=0; - nmult=temp; - sprintf(outline,"NMULT has been set to %d\n",nmult); - Putout(outline); - } - return; -} -/******************************************************************************/ - -void Getord(char *str, int *error) - -/******************************************************************************/ -/* - GETORD reads a new value of ORDER from the user. -*/ -{ - char ctemp[10],outline[80]; - - strncpy(ctemp,str,10); - if ( - (strncmp(ctemp,"ALL",3)!=0) && (strncmp(ctemp,"IJK",3)!=0) && - (strncmp(ctemp,"IKJ",3)!=0) && (strncmp(ctemp,"JIK",3)!=0) && - (strncmp(ctemp,"JKI",3)!=0) && (strncmp(ctemp,"KIJ",3)!=0) && - (strncmp(ctemp,"KJI",3)!=0) && (strncmp(ctemp,"R8_IJK",6)!=0) && - (strncmp(ctemp,"UIJK",4)!=0) && (strncmp(ctemp,"IUJK",4)!=0) && - (strncmp(ctemp,"IJUK",4)!=0) && (strncmp(ctemp,"PIJKA",5)!=0) && - (strncmp(ctemp,"PIJKP",5)!=0) && (strncmp(ctemp,"SDOT",4)!=0) && - (strncmp(ctemp,"TAXPYC",6)!=0) && (strncmp(ctemp,"TAXPYR",6)!=0) && - (strncmp(ctemp,"SAXPYC",6)!=0) && (strncmp(ctemp,"IIJK",4)!=0) && - (strncmp(ctemp,"TDOT",4)!=0) && (strncmp(ctemp,"SAXPYR",6)!=0) && - (strncmp(ctemp,"SGEMM",5)!=0) && (strncmp(ctemp,"SGEMMS",6)!=0) && - (strncmp(ctemp,"MIJK",4)!=0) &&(strncmp(ctemp,"NIJK",4)!=0) && - (strncmp(ctemp,"SIJK",4)!=0) &&(strncmp(ctemp,"MXMA",4)!=0)) - { - Putout("The order you chose was not a valid choice.\n"); - Putout("\nYour command was not carried out.\n"); - *error=1; - } - else - { - sprintf(outline,"ORDER has been set to %s\n",ctemp); - Putout(outline); - strcpy(order,ctemp); - } - return; -} -/******************************************************************************/ - -void Getsho(char *str,int lval) - -/******************************************************************************/ -/* - GETSHO gets information from the user about what is to be printed out - as results after a multiplication is carried out. -*/ -{ - if ((strncmp(str,"ALL",3) == 0) || (strncmp(str,"all",3) == 0)) - mshow=langshow=ashow=cshow=fshow=lshow=nshow=noshow=tshow=lval; - else if ((strncmp(str,"MACHINE",7) == 0) || (strncmp(str,"machine",7) == 0)) - mshow=lval; - else if ((strncmp(str,"LANGUAGE",8) == 0) || (strncmp(str,"language",8) == 0)) - langshow=lval; - else if ((strncmp(str,"A(N,N)",6) == 0) || (strncmp(str,"a(n,n)",6) == 0)) - ashow=lval; - else if ((strncmp(str,"ORDER",5) == 0) || (strncmp(str,"order",5) == 0)) - cshow=lval; - else if ((strncmp(str,"MFLOPS",6) == 0) || (strncmp(str,"mflops",6) == 0)) - fshow=lval; - else if ((strncmp(str,"LDA",3) == 0) || (strncmp(str,"lda",3) == 0)) - lshow=lval; - else if ((str[0]=='N') || (str[0]=='n')) - nshow=lval; - else if ((strncmp(str,"OPS",3) == 0) || (strncmp(str,"ops",3) == 0)) - noshow=lval; - else if ((strncmp(str,"TIME",4) == 0) || (strncmp(str,"time",4) == 0)) - tshow=lval; - else - { - Putout("That is not a legal name! \n"); - Putout("Legal names are ORDER, LDA, N, TIME, OPS, LANGUAGE, MACHINE, MFLOPS and A(N,N).\n"); - } - return; -} -/******************************************************************************/ - -void Hello() - -/******************************************************************************/ -/* - HELLO says hello to the user, printing the version, machine, and so on. -*/ -{ - char out[80]; - - printf ( "\n" ); - printf ( "MATMUL\n" ); - printf ( " C version\n" ); - printf ( " An interactive demonstration of the speed of"); - Putout(" matrix multiplication.\n"); - sprintf(out,"Version 1.0c, last compiled on %s. ",LASTMOD); - Putout(out); - sprintf(out,"This version is for a %s\n",machine[MACHINE]); - Putout(out); - Putout("\nIf you\'ve never used this program before, type EXPLAIN.\n\n"); - return; -} -/******************************************************************************/ - -void Help() - -/******************************************************************************/ -/* - HELP prints a list of the available commands. -*/ -{ - Putout("This is the list of legal commands.\n"); - if(ifilee) - Putout("E Explain what this program does.\n"); - Putout("H Help. List the legal commands.\n"); - Putout("LDA=value Assigns the leading dimension of arrays.\n"); - Putout("M Multiply two matrices.\n"); - Putout("N=value Assigns the size of the arrays.\n"); - Putout("ORDER=name Chooses the algorithm for multiplication.\n"); - Putout("P Prints out current values and results.\n"); - Putout("Q Quit.\n"); - Putout("NOSHOW=name Value of NAME should not be included in output.\n"); - Putout(" NAME=ORDER, LDA, N, TIME, OPS or MFLOPS\n"); - Putout("SHOW=name Value of NAME should be included in output.\n"); - Putout(" NAME=ORDER, LDA, N, TIME, OPS or MFLOPS\n\n"); - return; -} -/*****************************************************************************/ - -void r8_ijk ( ) - -/*****************************************************************************/ -/* - Purose: - - R8_IJK uses R8 arithmetic and IJK order. -*/ -{ - double da[LENA][LENA]; - double db[LENA][LENA]; - double dc[LENA][LENA]; - int i; - int j; - int k; - - for ( i = 0; i < n; i++ ) - { - for ( j = 0; j < n; j++ ) - { - da[i][j] = 0.0; - db[i][j] = 1.0; - dc[i][j] = 1.0; - } - } - - sec1 = cpu_time ( ); - - for ( i = 0; i < n; i++ ) - { - for ( j = 0; j < n; j++ ) - { - for ( k = 0; k < n; k++ ) - { - da[i][k] = da[i][k] + db[i][j] * dc[j][k]; - } - } - } - sec2 = cpu_time ( ); - - a[n-1][n-1] = ( float ) da[n-1][n-1]; - - return; -} - - -void NIJK() -/****************************************************************************** - NIJK multiplies A=B*C using index order IJK with integers instead of - floating point numbers. -******************************************************************************/ -{ - int i,j,k; - long ia[LENA][LENA]; - long ib[LENA][LENA],ic[LENA][LENA]; - - for(i=0;i 0)) || ((nlo > nhi) && (ninc < 0)) ) - { - n+=ninc; - ido=1; - if ( ((n < nhi) && (nhi <= nlo)) || ((n > nhi) && (nhi >= nlo)) ) - { - ido=0; - n=nlo; - } - } - else - ido=2; - return(ido); - } - if (nmult > 1) - { - if ( nlo < nhi) - { - n= n*nmult; - ido=1; - if ( ((n < nhi) && (nhi <= nlo)) || ((n > nhi) && (nhi >= nlo)) ) - { - ido=0; - n=nlo; - } - } - else - ido = 2; - return(ido); - } - - ido=3; - return(ido); -} -/******************************************************************************/ - -void Pdump() - -/******************************************************************************/ -/* - PDUMP writes the timing results to a data file. -*/ -{ - int i; - if(iplot >0 ) - { - ifiled=fopen(filed,"w"); - if(ifiled) - for(i=1;i<=iplot;i++) - fprintf(ifiled,"%-5s %-3d %-3d %-9.6f %-11d %-9.6f %-6.3f\n", - cplot[i],lplot[i],nplot[i],tplot[i],noplot[i],fplot[i],aplot[i]); - } - else - ifiled=NULL; - - return; -} -/******************************************************************************/ - -void Printr() - -/******************************************************************************/ -/* - PRINTR prints out the current values of parameters that the user should - be interested in, including: - - the algorithm, - the leading dimension, - the maximum allowable dimension, - the actual size of arrays, - the number of multiplications carried out. -*/ -{ char outline[80]; - sprintf(outline,"The algorithm chosen is %s\n",order); - Putout(outline); - sprintf(outline,"The leading dimension of arrays, LDA, is %d\n",lda); - Putout(outline); - sprintf(outline,"The maximum legal choice for LDA is %d\n",LENA); - Putout(outline); - sprintf(outline,"The actual size of the arrays, N, is %d\n",n); - Putout(outline); - sprintf(outline,"A total of %d cases have been run.\n",iplot); - Putout(outline); - - return; -} - - - -void Putinp() -/****************************************************************************** - PUTINP prints the user's most recent input line to the command file and - to the output file. -******************************************************************************/ -{ - size_t i; - - i=strlen(command); - if (i) - { - if (ifilei) - fprintf(ifilei,"%s\n",command); - if (ifileo) - fprintf(ifileo,"%s\n",command); - } - else - { - fprintf(ifilei," \n"); - fprintf(ifilei," \n"); - } - return; -} - - -void Putout(char *outstr) -/****************************************************************************** - PUTOUT prints a line of output to the user's screen, and to the output file. -******************************************************************************/ -{ - size_t i; - - i=strlen(outstr); - if (i) - { - printf("%s",outstr); - if (ifileo) - fprintf(ifileo,"%s",outstr); - } - else - { - printf("\n"); - if (ifileo) - fprintf(ifileo,"\n"); - } - return; -} - -void Record() -/****************************************************************************** - RECORD stores the results for the latest multiplication into various arrays. -******************************************************************************/ -{ - if(iplot < MAXPLT) - { - iplot++; - aplot[iplot]=a[n-1][n-1]; - strcpy(cplot[iplot],order); - lplot[iplot]=lda; - nplot[iplot]=n; -#if MACHINE == VAX_VMS - tot_seconds=sec2-sec1; - tplot[iplot]=(float)tot_seconds/100.0; -#elif ((MACHINE == IBM_PC) || (MACHINE == IBM_RS6)) - tot_seconds=sec2-sec1; - tplot[iplot]=(float)tot_seconds/CLOCKS_PER_SEC; -#elif MACHINE == CRAY - tot_seconds=sec2-sec1; - tplot[iplot]=(float)tot_seconds*0.000000006; -#else - tot_seconds=sec2-sec1; - tot_microseconds=micro2-micro1; - tot_microseconds=tot_microseconds+(tot_seconds*1000000); - tplot[iplot]=(float)((tot_microseconds/1000000.0)); -#endif - - if(tplot[iplot] == 0.0)tplot[iplot]=1.0; - noplot[iplot]=2*n*n*n; - fplot[iplot]=0.000001 * (float)((float)noplot[iplot]/tplot[iplot]); - } - else - { - Putout("There is no more room to record results.\n"); - Putout("This is not a serious error, but it does mean\n"); - Putout("and any further results will not make it into\n"); - Putout("the results file.\n"); - } - return; -} - - - -void Result ( short lchop ) -/****************************************************************************** - RESULT prints out the results of all, or some, of the multiplications. -******************************************************************************/ -{ - char out[81]; - int i; - - if ( ilo <= ihi ) - { -/* - Prepare the header string. Then chop out items that are not being shown. - It's important to do this chopping in reverse order! -*/ - memset(out,'\0',80); - - sprintf(out," %-8s %3s %3s %10s %8s %10s %8s %-12s %8s\n","ORDER","LDA","N","Time","Ops","MFLOPS","A(N,N)","MACHINE","LANGUAGE"); - - if (lchop) - { - if (!langshow) chop(out,70,78); - if (!mshow) chop(out,57,69); - if (!ashow) chop(out,48,56); - if (!fshow) chop(out,37,47); - if (!noshow) chop(out,28,36); - if (!tshow) chop(out,17,27); - if (!nshow) chop(out,13,16); - if (!lshow) chop(out,9,12); - if (!cshow) chop(out,0,8); - Putout(out); - } - - memset(out,'\0',80); -/*Print out the values requested.*/ - for(i=ilo;i<=min(ihi,iplot);i++) - { - sprintf(out," %-8s %3d %3d %10.6f %8d %10.6f %8.3f %-12s %8s\n",cplot[i],lplot[i],nplot[i],tplot[i],noplot[i],fplot[i],aplot[i],machine[MACHINE],"C "); - if (lchop) - { - if (!langshow) chop(out,70,78); - if (!mshow) chop(out,57,69); - if (!ashow) chop(out,48,56); - if (!fshow) chop(out,37,47); - if (!noshow) chop(out,28,36); - if (!tshow) chop(out,17,27); - if (!nshow) chop(out,13,16); - if (!lshow) chop(out,9,12); - if (!cshow) chop(out,0,8); - } - if (lplot[i] != 0) Putout(out); - } - } - return; -} - -float tdot(int n,float *sx,int incx,float *sy,int incy ) -/****************************************************************************** - the C code for the TDOT routine -******************************************************************************/ -/* - PURPOSE - Forms the dot product of a vector. - - INPUT - n Number of elements to sum. - sx Address of first element of x vector. - incx Incrament for the x vector. - sy Address of first element of y vector. - incy incrament for the y vector. - - OUPUT - sdot Dot product x and y. float returned - due to `C' language features. -*/ -{ - int i; - float stemp=0.0e0; - - if( n<1 ) - return( stemp ); - - if( incx == incy ) - { - if( incx == 1 ) - { - /* Both increments = 1 */ - for( i=0; i0 ) - { - /* Equal, positive, non-unit increments. */ - for( i=0; i0 ) - { - /* Equal, positive, non-unit increments. */ - for(i=0; i -/* MATMUL.H HEADER FILE FOR USE WITH MATMUL.C - -******************************************************************************* - - This is the Header file for MATMUL - - MATMUL is an interactive program that sets up, carries out, - and times a matrix multiplication. MATMUL can use several different - algorithms and matrix sizes, and can be run on many different computers. - - The original MATMUL was written by John Burkardt of the Pittsburgh - Supercomputing Center. - - This C version was created by Paul Puglielli of the Piitsburgh - Supercomputing Center. - - -******************************************************************************* - Making a version for a given machine: - If on a UNIX machine, use the "make.csh" script to compile the most optimized - executable possible. - - On VMS use the make.com script - - On the PC enter the line "#define MACHINE IBM_PC to the top of the matmul.h - header file and compiler with any C Compiler. -******************************************************************************/ - -#define MAXPLT 250 /* NUMBER OF RUNS POSSIBLE */ - -/** MACHINE TYPES **/ -#define CRAY 0 -#define CM2 1 -#define DEC_ULTRIX 2 -#define VAX_VMS 3 -#define IBM_PC 4 -#define APPLE_MAC 5 -#define HP_9000 6 -#define VAX_STATION 7 -#define IBM_RS6 8 -#define MAX_MACH 9 - -/** Set LENA to a maximum depending on type of MACHINE **/ -#if MACHINE == APPLE_MAC -#define LENA 128 -#elif MACHINE == CRAY -#define LENA 512 -#elif MACHINE == IBM_PC -#define LENA 128 -#elif MACHINE == IBM_RS6 -#define LENA 256 -#elif MACHINE == VAX_STATION -#define LENA 128 -#elif MACHINE == HP_9000 -#define LENA 512 -#define _INCLUDE_HPUX_SOURCE -#else -#define LENA 256 -#endif - - -#define TRUE 1 -#define FALSE 0 - -#define NROLL 4 -const char LASTMOD[10]="25-MAR-92"; -/* All GLOBAL variables are listed here. */ -char cplot[MAXPLT][10], /* array to hold commands */ - command[30], /* string to hold current command */ - order[15], /* type of Multiplication order */ - filed[15], /* data file name string */ - filee[45], /* explain file name. string */ - fileh[15], /* string for help file name */ - filei[15], /* string for ".inp" file name */ - fileo[15], /* string for ".out" file name */ - output[80], /* buffer for output */ - machine[MAX_MACH][80]; /* string table of Machine names*/ - - -FILE *ifiled, /* file pointer for ".dat" file */ - *ifilee, /* file pointer for explain file */ - *ifileh, /* file pointer for help file */ - *ifilei, /* file pointer for ".inp" file */ - *ifileo; /* file pointer for ".out" file */ - -int - n=16, - ilo, - ihi, - ido, - nlo, - nhi, - ninc, - nmult, - lda= LENA , - ierr, - iplot, - lplot[MAXPLT], - noplot[MAXPLT], - nplot[MAXPLT]; - - -#if MACHINE == VAX_VMS -int -#else -long -#endif - sec1, /* second part of start time */ - sec2, /* second part of end time */ - micro1, /* microsecond part of start time */ - micro2, /* microsecond part of end time */ - tot_seconds, /* total seconds a multiplication took */ - tot_microseconds; /* total microseconds a multiplication took */ - -/* these shorts are used as LOGICALS*/ -short ashow, - cshow, - fshow, - lshow, - nshow, - tshow, - mshow, - langshow, - noshow; - -float - a[LENA][LENA], /* Array A destination of B*C*/ - b[LENA][LENA], /* Array B */ - c[LENA][LENA], /* Array C */ - aplot[MAXPLT], /* hold values of A(n,n) for each run */ - tplot[MAXPLT], /* hold values of TIME for each run */ - fplot[MAXPLT]; /* hold value of MFLOPS for each run */ - - diff --git a/benchmarks/matmul/matmul.inp b/benchmarks/matmul/matmul.inp deleted file mode 100644 index 0c1816b..0000000 --- a/benchmarks/matmul/matmul.inp +++ /dev/null @@ -1,7 +0,0 @@ -P -N=100000 -H -ORDER=R8_IJK -M -Q -Y diff --git a/benchmarks/matmul/matmul.out b/benchmarks/matmul/matmul.out deleted file mode 100644 index b598c47..0000000 --- a/benchmarks/matmul/matmul.out +++ /dev/null @@ -1,40 +0,0 @@ - matrix multiplication. -Version 1.0c, last compiled on 25-MAR-92. This version is for a Apple Macintosh - -If you've never used this program before, type EXPLAIN. - -Command? (Type H for help):P -The algorithm chosen is IJK -The leading dimension of arrays, LDA, is 128 -The maximum legal choice for LDA is 128 -The actual size of the arrays, N, is 16 -A total of 0 cases have been run. -Command? (Type H for help):N=100000 -The value of N that you chose is not acceptable! -N must be no greater than 128 -Command? (Type H for help):H -This is the list of legal commands. -H Help. List the legal commands. -LDA=value Assigns the leading dimension of arrays. -M Multiply two matrices. -N=value Assigns the size of the arrays. -ORDER=name Chooses the algorithm for multiplication. -P Prints out current values and results. -Q Quit. -NOSHOW=name Value of NAME should not be included in output. - NAME=ORDER, LDA, N, TIME, OPS or MFLOPS -SHOW=name Value of NAME should be included in output. - NAME=ORDER, LDA, N, TIME, OPS or MFLOPS - -Command? (Type H for help):ORDER=R8_IJK -ORDER has been set to R8_IJK -Command? (Type H for help):M - ORDER LDA N Time Ops MFLOPS A(N,N) MACHINE LANGUAGE - R8_IJK 128 0 1.000000 0 0.000000 0.000 Apple Macintosh C -The matrix multiplication has been carried out. -Command? (Type H for help):Q -Please type "Y" to confirm that you want to quit. -Command? (Type H for help):Y -A copy of your input is in the file matmul.inp -A copy of your results is in the file matmul.dat -A copy of the entire session is in the file matmul.out diff --git a/benchmarks/matmul/matmul.sh b/benchmarks/matmul/matmul.sh deleted file mode 100755 index 6ffe1a7..0000000 --- a/benchmarks/matmul/matmul.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /bin/bash -# -gcc -c -Wall matmul.c -if [ $? -ne 0 ]; then - echo "Compile error." - exit -fi -# -gcc matmul.o -lm -if [ $? -ne 0 ]; then - echo "Load error." - exit -fi -# -rm matmul.o -# -chmod ugo+x a.out -mv a.out /usr/bin/matmul -# -echo "Normal end of execution." diff --git a/benchmarks/matmul/matmul_input.txt b/benchmarks/matmul/matmul_input.txt deleted file mode 100644 index 0c1816b..0000000 --- a/benchmarks/matmul/matmul_input.txt +++ /dev/null @@ -1,7 +0,0 @@ -P -N=100000 -H -ORDER=R8_IJK -M -Q -Y diff --git a/benchmarks/matmul/matmul_test.sh b/benchmarks/matmul/matmul_test.sh deleted file mode 100755 index 5e53aa1..0000000 --- a/benchmarks/matmul/matmul_test.sh +++ /dev/null @@ -1,10 +0,0 @@ -#! /bin/bash -# -/usr/bin/matmul < matmul_input.txt > matmul_test.txt -if [ $? -ne 0 ]; then - echo "Run error." - exit -fi -# -echo "Normal end of execution." - diff --git a/benchmarks/matmul/matmul_test.txt b/benchmarks/matmul/matmul_test.txt deleted file mode 100644 index 3e1c660..0000000 --- a/benchmarks/matmul/matmul_test.txt +++ /dev/null @@ -1,42 +0,0 @@ - -MATMUL - C version - An interactive demonstration of the speed of matrix multiplication. -Version 1.0c, last compiled on 25-MAR-92. This version is for a Apple Macintosh - -If you've never used this program before, type EXPLAIN. - -Command? (Type H for help):The algorithm chosen is IJK -The leading dimension of arrays, LDA, is 128 -The maximum legal choice for LDA is 128 -The actual size of the arrays, N, is 16 -A total of 0 cases have been run. -Valid choices for the order are: - ALL R8_IJK IIJK IUJK UIJK IJUK - IJK IKJ JIK JKI KIJ KJI PIJKA PIJKP TAXPYC TAXPYR TDOT -Command? (Type H for help):The value of N that you chose is not acceptable! -N must be no greater than 128 -Command? (Type H for help):This is the list of legal commands. -H Help. List the legal commands. -LDA=value Assigns the leading dimension of arrays. -M Multiply two matrices. -N=value Assigns the size of the arrays. -ORDER=name Chooses the algorithm for multiplication. -P Prints out current values and results. -Q Quit. -NOSHOW=name Value of NAME should not be included in output. - NAME=ORDER, LDA, N, TIME, OPS or MFLOPS -SHOW=name Value of NAME should be included in output. - NAME=ORDER, LDA, N, TIME, OPS or MFLOPS - -Command? (Type H for help):ORDER has been set to R8_IJK -Command? (Type H for help): ORDER LDA N Time Ops MFLOPS A(N,N) MACHINE LANGUAGE - R8_IJK 128 0 1.000000 0 0.000000 0.000 Apple Macintosh C -The matrix multiplication has been carried out. -Command? (Type H for help):Please type "Y" to confirm that you want to quit. -Command? (Type H for help):A copy of your input is in the file matmul.inp -A copy of your results is in the file matmul.dat -A copy of the entire session is in the file matmul.out - -MATMUL: - Normal end of execution. diff --git a/benchmarks/mem-test-local b/benchmarks/mem-test-local deleted file mode 100644 index 50e4945..0000000 --- a/benchmarks/mem-test-local +++ /dev/null @@ -1,176 +0,0 @@ -30 October 2020 10:22:51 AM - -MEMORY_TEST - C version - Try to see how big vectors and matrices can be. - - User value of N_LOG_MIN = 0 - - User value of N_LOG_MAX = 21 - -I4VEC Memory Test - -Log2(N) N Ave CPU Real - - 0 1 2.00 2.00e-06 0.00e+00 - 1 2 2.00 1.00e-06 0.00e+00 - 2 4 1.50 1.00e-06 0.00e+00 - 3 8 1.12 1.00e-06 0.00e+00 - 4 16 0.81 1.00e-06 0.00e+00 - 5 32 0.97 1.00e-06 0.00e+00 - 6 64 1.03 2.00e-06 0.00e+00 - 7 128 1.04 3.00e-06 0.00e+00 - 8 256 1.04 5.00e-06 0.00e+00 - 9 512 1.00 8.00e-06 0.00e+00 - 10 1024 1.00 1.80e-05 0.00e+00 - 11 2048 1.02 3.10e-05 0.00e+00 - 12 4096 1.00 6.10e-05 0.00e+00 - 13 8192 1.00 1.23e-04 0.00e+00 - 14 16384 1.00 2.49e-04 0.00e+00 - 15 32768 1.01 5.70e-04 0.00e+00 - 16 65536 1.00 1.04e-03 0.00e+00 - 17 131072 1.00 2.06e-03 0.00e+00 - 18 262144 1.00 4.09e-03 0.00e+00 - 19 524288 1.00 8.18e-03 0.00e+00 - 20 1048576 1.00 1.67e-02 0.00e+00 - 21 2097152 1.00 3.35e-02 0.00e+00 - -R4VEC Memory Test - -Log2(N) N Ave CPU Real - - 0 1 1.83 2.00e-06 0.00e+00 - 1 2 1.68 9.98e-07 0.00e+00 - 2 4 1.45 9.98e-07 0.00e+00 - 3 8 1.10 9.98e-07 0.00e+00 - 4 16 0.84 1.01e-06 0.00e+00 - 5 32 0.96 2.00e-06 0.00e+00 - 6 64 1.06 2.00e-06 0.00e+00 - 7 128 1.03 3.00e-06 0.00e+00 - 8 256 1.04 4.00e-06 0.00e+00 - 9 512 1.01 9.00e-06 0.00e+00 - 10 1024 1.01 1.50e-05 0.00e+00 - 11 2048 1.01 2.90e-05 0.00e+00 - 12 4096 1.00 5.60e-05 0.00e+00 - 13 8192 1.00 1.12e-04 0.00e+00 - 14 16384 1.00 2.23e-04 0.00e+00 - 15 32768 1.00 4.85e-04 0.00e+00 - 16 65536 1.00 1.02e-03 0.00e+00 - 17 131072 1.00 1.95e-03 0.00e+00 - 18 262144 1.00 3.89e-03 0.00e+00 - 19 524288 1.00 7.77e-03 0.00e+00 - 20 1048576 1.00 1.54e-02 0.00e+00 - 21 2097152 1.00 3.07e-02 0.00e+00 - -R8VEC Memory Test - -Log2(N) N Ave CPU Real - - 0 1 1.83 2.00e-06 0.00e+00 - 1 2 1.68 1.00e-06 0.00e+00 - 2 4 1.45 1.00e-06 0.00e+00 - 3 8 1.10 1.00e-06 0.00e+00 - 4 16 0.84 1.00e-06 0.00e+00 - 5 32 0.96 1.00e-06 0.00e+00 - 6 64 1.06 2.00e-06 0.00e+00 - 7 128 1.03 3.00e-06 0.00e+00 - 8 256 1.04 5.00e-06 0.00e+00 - 9 512 1.01 9.00e-06 0.00e+00 - 10 1024 1.01 1.50e-05 0.00e+00 - 11 2048 1.01 3.00e-05 0.00e+00 - 12 4096 1.00 5.90e-05 0.00e+00 - 13 8192 1.00 1.16e-04 0.00e+00 - 14 16384 1.00 2.30e-04 0.00e+00 - 15 32768 1.00 4.59e-04 0.00e+00 - 16 65536 1.00 9.17e-04 0.00e+00 - 17 131072 1.00 1.90e-03 0.00e+00 - 18 262144 1.00 3.74e-03 0.00e+00 - 19 524288 1.00 7.51e-03 0.00e+00 - 20 1048576 1.00 1.55e-02 0.00e+00 - 21 2097152 1.00 6.31e-02 0.00e+00 - -I4MAT Memory Test - -Log2(N) N N1 N2 Ave CPU Real - - 0 1 1 1 2.000000 2.995133e-06 0.000000e+00 - 1 2 1 2 2.000000 9.983778e-07 0.000000e+00 - 2 4 2 2 1.500000 2.011657e-06 0.000000e+00 - 3 8 2 4 1.125000 9.983778e-07 0.000000e+00 - 4 16 4 4 0.812500 2.011657e-06 0.000000e+00 - 5 32 4 8 0.968750 1.996756e-06 0.000000e+00 - 6 64 8 8 1.031250 2.011657e-06 0.000000e+00 - 7 128 8 16 1.039062 2.995133e-06 0.000000e+00 - 8 256 16 16 1.042969 4.991889e-06 0.000000e+00 - 9 512 16 32 1.001953 9.998679e-06 0.000000e+00 - 10 1024 32 32 1.000977 1.600385e-05 0.000000e+00 - 11 2048 32 64 1.016602 3.100932e-05 0.000000e+00 - 12 4096 64 64 1.004639 6.000698e-05 0.000000e+00 - 13 8192 64 128 1.003662 1.199991e-04 0.000000e+00 - 14 16384 128 128 1.004944 2.359897e-04 0.000000e+00 - 15 32768 128 256 1.005280 4.719943e-04 0.000000e+00 - 16 65536 256 256 1.000458 1.283005e-03 0.000000e+00 - 17 131072 256 512 1.001213 1.936004e-03 0.000000e+00 - 18 262144 512 512 1.001144 3.755003e-03 0.000000e+00 - 19 524288 512 1024 1.001167 7.668003e-03 0.000000e+00 - 20 1048576 1024 1024 1.000424 1.504199e-02 0.000000e+00 - 21 2097152 1024 2048 1.000325 3.018600e-02 0.000000e+00 - -R4MAT Memory Test - -Log2(N) N N1 N2 Ave CPU Real - - 0 1 1 1 1.83 2.00e-06 0.00e+00 - 1 2 1 2 1.68 1.01e-06 0.00e+00 - 2 4 2 2 1.45 2.00e-06 0.00e+00 - 3 8 2 4 1.10 1.01e-06 0.00e+00 - 4 16 4 4 0.84 1.01e-06 0.00e+00 - 5 32 4 8 0.96 1.01e-06 0.00e+00 - 6 64 8 8 1.06 2.00e-06 0.00e+00 - 7 128 8 16 1.03 2.98e-06 0.00e+00 - 8 256 16 16 1.04 5.01e-06 0.00e+00 - 9 512 16 32 1.01 9.00e-06 0.00e+00 - 10 1024 32 32 1.01 1.60e-05 0.00e+00 - 11 2048 32 64 1.01 3.10e-05 0.00e+00 - 12 4096 64 64 1.00 6.00e-05 0.00e+00 - 13 8192 64 128 1.00 1.21e-04 0.00e+00 - 14 16384 128 128 1.00 2.37e-04 0.00e+00 - 15 32768 128 256 1.00 4.73e-04 0.00e+00 - 16 65536 256 256 1.00 9.34e-04 0.00e+00 - 17 131072 256 512 1.00 1.88e-03 0.00e+00 - 18 262144 512 512 1.00 3.86e-03 0.00e+00 - 19 524288 512 1024 1.00 7.54e-03 0.00e+00 - 20 1048576 1024 1024 1.00 1.50e-02 0.00e+00 - 21 2097152 1024 2048 1.00 3.00e-02 0.00e+00 - -R8MAT Memory Test - -Log2(N) N N1 N2 Ave CPU Real - - 0 1 1 1 1.83 1.01e-06 0.00e+00 - 1 2 1 2 1.68 1.01e-06 0.00e+00 - 2 4 2 2 1.45 9.83e-07 0.00e+00 - 3 8 2 4 1.10 1.01e-06 0.00e+00 - 4 16 4 4 0.84 9.83e-07 0.00e+00 - 5 32 4 8 0.96 2.00e-06 0.00e+00 - 6 64 8 8 1.06 3.99e-06 0.00e+00 - 7 128 8 16 1.03 3.01e-06 0.00e+00 - 8 256 16 16 1.04 5.99e-06 0.00e+00 - 9 512 16 32 1.01 9.00e-06 0.00e+00 - 10 1024 32 32 1.01 1.60e-05 0.00e+00 - 11 2048 32 64 1.01 3.10e-05 0.00e+00 - 12 4096 64 64 1.00 6.00e-05 0.00e+00 - 13 8192 64 128 1.00 1.19e-04 0.00e+00 - 14 16384 128 128 1.00 2.35e-04 0.00e+00 - 15 32768 128 256 1.00 4.68e-04 0.00e+00 - 16 65536 256 256 1.00 9.37e-04 0.00e+00 - 17 131072 256 512 1.00 1.86e-03 0.00e+00 - 18 262144 512 512 1.00 3.72e-03 0.00e+00 - 19 524288 512 1024 1.00 7.85e-03 0.00e+00 - 20 1048576 1024 1024 1.00 1.58e-02 0.00e+00 - 21 2097152 1024 2048 1.00 3.47e-02 0.00e+00 - -MEMORY_TEST - Normal end of execution. - -30 October 2020 10:22:51 AM diff --git a/benchmarks/mem-test-remote b/benchmarks/mem-test-remote deleted file mode 100644 index ddbed71..0000000 --- a/benchmarks/mem-test-remote +++ /dev/null @@ -1,176 +0,0 @@ -30 October 2020 10:22:51 AM - -MEMORY_TEST - C version - Try to see how big vectors and matrices can be. - - User value of N_LOG_MIN = 0 - - User value of N_LOG_MAX = 21 - -I4VEC Memory Test - -Log2(N) N Ave CPU Real - - 0 1 2.00 5.06e-04 0.00e+00 - 1 2 2.00 2.97e-04 0.00e+00 - 2 4 1.50 3.84e-04 0.00e+00 - 3 8 1.12 2.90e-04 0.00e+00 - 4 16 0.81 2.97e-04 0.00e+00 - 5 32 0.97 3.15e-04 0.00e+00 - 6 64 1.03 1.88e-04 0.00e+00 - 7 128 1.04 1.88e-04 0.00e+00 - 8 256 1.04 2.28e-04 0.00e+00 - 9 512 1.00 3.38e-04 0.00e+00 - 10 1024 1.00 2.94e-04 0.00e+00 - 11 2048 1.02 1.21e-03 0.00e+00 - 12 4096 1.00 1.09e-04 0.00e+00 - 13 8192 1.00 2.03e-04 0.00e+00 - 14 16384 1.00 4.10e-04 0.00e+00 - 15 32768 1.01 8.56e-04 0.00e+00 - 16 65536 1.00 1.68e-03 0.00e+00 - 17 131072 1.00 3.24e-03 0.00e+00 - 18 262144 1.00 6.68e-03 0.00e+00 - 19 524288 1.00 1.35e-02 0.00e+00 - 20 1048576 1.00 2.79e-02 0.00e+00 - 21 2097152 1.00 6.02e-01 1.01e+02 - -R4VEC Memory Test - -Log2(N) N Ave CPU Real - - 0 1 1.83 3.00e-05 0.00e+00 - 1 2 1.68 2.80e-05 0.00e+00 - 2 4 1.45 2.90e-05 0.00e+00 - 3 8 1.10 2.80e-05 0.00e+00 - 4 16 0.84 2.80e-05 0.00e+00 - 5 32 0.96 3.90e-05 0.00e+00 - 6 64 1.06 2.90e-05 0.00e+00 - 7 128 1.03 3.00e-05 0.00e+00 - 8 256 1.04 4.40e-05 0.00e+00 - 9 512 1.01 4.00e-05 0.00e+00 - 10 1024 1.01 5.30e-05 0.00e+00 - 11 2048 1.01 7.70e-05 0.00e+00 - 12 4096 1.00 1.30e-04 0.00e+00 - 13 8192 1.00 2.35e-04 0.00e+00 - 14 16384 1.00 4.36e-04 0.00e+00 - 15 32768 1.00 8.71e-04 0.00e+00 - 16 65536 1.00 1.63e-03 0.00e+00 - 17 131072 1.00 3.28e-03 0.00e+00 - 18 262144 1.00 6.42e-03 0.00e+00 - 19 524288 1.00 1.29e-02 0.00e+00 - 20 1048576 1.00 2.60e-02 0.00e+00 - 21 2097152 1.00 5.18e-02 0.00e+00 - -R8VEC Memory Test - -Log2(N) N Ave CPU Real - - 0 1 1.83 2.40e-04 0.00e+00 - 1 2 1.68 1.90e-04 0.00e+00 - 2 4 1.45 2.71e-04 0.00e+00 - 3 8 1.10 1.52e-04 0.00e+00 - 4 16 0.84 1.83e-04 0.00e+00 - 5 32 0.96 2.77e-04 0.00e+00 - 6 64 1.06 2.76e-04 0.00e+00 - 7 128 1.03 2.10e-04 0.00e+00 - 8 256 1.04 2.31e-04 0.00e+00 - 9 512 1.01 2.30e-04 0.00e+00 - 10 1024 1.01 1.88e-04 0.00e+00 - 11 2048 1.01 2.93e-04 0.00e+00 - 12 4096 1.00 3.04e-04 0.00e+00 - 13 8192 1.00 4.28e-04 0.00e+00 - 14 16384 1.00 6.29e-04 0.00e+00 - 15 32768 1.00 1.05e-03 0.00e+00 - 16 65536 1.00 1.92e-03 0.00e+00 - 17 131072 1.00 3.65e-03 1.00e+00 - 18 262144 1.00 7.90e-03 0.00e+00 - 19 524288 1.00 1.53e-02 0.00e+00 - 20 1048576 1.00 2.92e-02 0.00e+00 - 21 2097152 1.00 6.45e-02 0.00e+00 - -I4MAT Memory Test - -Log2(N) N N1 N2 Ave CPU Real - - 0 1 1 1 2.000000 3.280044e-04 0.000000e+00 - 1 2 1 2 2.000000 1.649857e-04 0.000000e+00 - 2 4 2 2 1.500000 2.509952e-04 0.000000e+00 - 3 8 2 4 1.125000 3.999472e-05 0.000000e+00 - 4 16 4 4 0.812500 9.095669e-05 0.000000e+00 - 5 32 4 8 0.968750 2.902746e-05 0.000000e+00 - 6 64 8 8 1.031250 2.998114e-05 0.000000e+00 - 7 128 8 16 1.039062 2.998114e-05 0.000000e+00 - 8 256 16 16 1.042969 3.302097e-05 0.000000e+00 - 9 512 16 32 1.001953 4.696846e-05 0.000000e+00 - 10 1024 32 32 1.000977 5.400181e-05 0.000000e+00 - 11 2048 32 64 1.016602 1.790524e-04 0.000000e+00 - 12 4096 64 64 1.004639 1.320243e-04 0.000000e+00 - 13 8192 64 128 1.003662 2.430081e-04 0.000000e+00 - 14 16384 128 128 1.004944 4.400015e-04 0.000000e+00 - 15 32768 128 256 1.005280 9.500384e-04 0.000000e+00 - 16 65536 256 256 1.000458 2.168000e-03 0.000000e+00 - 17 131072 256 512 1.001213 4.905999e-03 0.000000e+00 - 18 262144 512 512 1.001144 7.425010e-03 0.000000e+00 - 19 524288 512 1024 1.001167 1.493698e-02 0.000000e+00 - 20 1048576 1024 1024 1.000424 2.865398e-02 0.000000e+00 - 21 2097152 1024 2048 1.000325 5.350304e-02 0.000000e+00 - -R4MAT Memory Test - -Log2(N) N N1 N2 Ave CPU Real - - 0 1 1 1 1.83 3.21e-05 0.00e+00 - 1 2 1 2 1.68 2.90e-05 0.00e+00 - 2 4 2 2 1.45 2.90e-05 0.00e+00 - 3 8 2 4 1.10 2.80e-05 0.00e+00 - 4 16 4 4 0.84 2.71e-05 0.00e+00 - 5 32 4 8 0.96 2.80e-05 0.00e+00 - 6 64 8 8 1.06 2.90e-05 0.00e+00 - 7 128 8 16 1.03 3.00e-05 0.00e+00 - 8 256 16 16 1.04 3.30e-05 0.00e+00 - 9 512 16 32 1.01 5.01e-05 0.00e+00 - 10 1024 32 32 1.01 5.29e-05 0.00e+00 - 11 2048 32 64 1.01 7.90e-05 0.00e+00 - 12 4096 64 64 1.00 1.29e-04 0.00e+00 - 13 8192 64 128 1.00 2.35e-04 0.00e+00 - 14 16384 128 128 1.00 4.47e-04 0.00e+00 - 15 32768 128 256 1.00 8.38e-04 0.00e+00 - 16 65536 256 256 1.00 1.67e-03 0.00e+00 - 17 131072 256 512 1.00 3.38e-03 0.00e+00 - 18 262144 512 512 1.00 6.52e-03 0.00e+00 - 19 524288 512 1024 1.00 1.31e-02 0.00e+00 - 20 1048576 1024 1024 1.00 2.64e-02 0.00e+00 - 21 2097152 1024 2048 1.00 5.26e-02 0.00e+00 - -R8MAT Memory Test - -Log2(N) N N1 N2 Ave CPU Real - - 0 1 1 1 1.83 1.98e-04 0.00e+00 - 1 2 1 2 1.68 1.36e-04 0.00e+00 - 2 4 2 2 1.45 2.68e-04 0.00e+00 - 3 8 2 4 1.10 3.28e-04 0.00e+00 - 4 16 4 4 0.84 2.97e-04 0.00e+00 - 5 32 4 8 0.96 2.07e-04 1.00e+00 - 6 64 8 8 1.06 2.64e-04 0.00e+00 - 7 128 8 16 1.03 2.08e-04 0.00e+00 - 8 256 16 16 1.04 3.11e-04 0.00e+00 - 9 512 16 32 1.01 2.70e-04 0.00e+00 - 10 1024 32 32 1.01 2.18e-04 0.00e+00 - 11 2048 32 64 1.01 2.89e-04 0.00e+00 - 12 4096 64 64 1.00 2.75e-04 0.00e+00 - 13 8192 64 128 1.00 3.61e-04 0.00e+00 - 14 16384 128 128 1.00 5.93e-04 0.00e+00 - 15 32768 128 256 1.00 9.95e-04 0.00e+00 - 16 65536 256 256 1.00 1.93e-03 0.00e+00 - 17 131072 256 512 1.00 4.20e-03 0.00e+00 - 18 262144 512 512 1.00 7.30e-03 0.00e+00 - 19 524288 512 1024 1.00 1.45e-02 0.00e+00 - 20 1048576 1024 1024 1.00 2.97e-02 0.00e+00 - 21 2097152 1024 2048 1.00 5.81e-02 0.00e+00 - -MEMORY_TEST - Normal end of execution. - -30 October 2020 10:24:35 AM diff --git a/benchmarks/memory_test.c b/benchmarks/memory_test.c deleted file mode 100644 index ecb7274..0000000 --- a/benchmarks/memory_test.c +++ /dev/null @@ -1,948 +0,0 @@ -#include -#include -#include -#include - -int main(int argc, char *argv[]); -int i4_power(int i, int j); -void i4mat_memory_test(int n_log); -void i4vec_memory_test(int n_log); -float r4_cpu_time(); -float r4_real_time(); -void r4mat_memory_test(int n_log); -void r4vec_memory_test(int n_log); -double r8_cpu_time(); -double r8_real_time(); -void r8mat_memory_test(int n_log); -void r8vec_memory_test(int n_log); -void timestamp(); - -/******************************************************************************/ - -int main(int argc, char *argv[]) - -/******************************************************************************/ -/* - Purpose: - - MAIN is the main program for MEMORY_TEST. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt -*/ -{ - int n_log; - int n_log_max; - int n_log_min; - - timestamp(); - - printf("\n"); - printf("MEMORY_TEST\n"); - printf(" C version\n"); - printf(" Try to see how big vectors and matrices can be.\n"); - - if (argc <= 1) - { - n_log_min = 0; - printf("\n"); - printf(" Using default value of N_LOG_MIN = %d\n", n_log_min); - } - else - { - n_log_min = atoi(argv[1]); - printf("\n"); - printf(" User value of N_LOG_MIN = %d\n", n_log_min); - } - if (argc <= 2) - { - n_log_max = 24; - printf("\n"); - printf(" Using default value of N_LOG_MAX = %d\n", n_log_max); - } - else - { - n_log_max = atoi(argv[2]); - printf("\n"); - printf(" User value of N_LOG_MAX = %d\n", n_log_max); - } - /* - I4VEC test. -*/ - printf("\n"); - printf("I4VEC Memory Test\n"); - printf("\n"); - printf("Log2(N) N Ave CPU Real\n"); - printf("\n"); - - for (n_log = n_log_min; n_log <= n_log_max; n_log++) - { - i4vec_memory_test(n_log); - } - /* - R4VEC test. -*/ - printf("\n"); - printf("R4VEC Memory Test\n"); - printf("\n"); - printf("Log2(N) N Ave CPU Real\n"); - printf("\n"); - - for (n_log = n_log_min; n_log <= n_log_max; n_log++) - { - r4vec_memory_test(n_log); - } - /* - R8VEC test. -*/ - printf("\n"); - printf("R8VEC Memory Test\n"); - printf("\n"); - printf("Log2(N) N Ave CPU Real\n"); - printf("\n"); - - for (n_log = n_log_min; n_log <= n_log_max; n_log++) - { - r8vec_memory_test(n_log); - } - /* - I4MAT test. -*/ - printf("\n"); - printf("I4MAT Memory Test\n"); - printf("\n"); - printf("Log2(N) N N1 N2 Ave CPU Real\n"); - printf("\n"); - - for (n_log = n_log_min; n_log <= n_log_max; n_log++) - { - i4mat_memory_test(n_log); - } - /* - R4MAT test. -*/ - printf("\n"); - printf("R4MAT Memory Test\n"); - printf("\n"); - printf("Log2(N) N N1 N2 Ave CPU Real\n"); - printf("\n"); - - for (n_log = n_log_min; n_log <= n_log_max; n_log++) - { - r4mat_memory_test(n_log); - } - /* - R8MAT test. -*/ - printf("\n"); - printf("R8MAT Memory Test\n"); - printf("\n"); - printf("Log2(N) N N1 N2 Ave CPU Real\n"); - printf("\n"); - - for (n_log = n_log_min; n_log <= n_log_max; n_log++) - { - r8mat_memory_test(n_log); - } - /* - Terminate. -*/ - printf("\n"); - printf("MEMORY_TEST\n"); - printf(" Normal end of execution.\n"); - printf("\n"); - timestamp(); - - return 0; -} -/******************************************************************************/ - -int i4_power(int i, int j) - -/******************************************************************************/ -/* - Purpose: - - I4_POWER returns the value of I^J. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 April 2004 - - Author: - - John Burkardt - - Parameters: - - Input, int I, J, the base and the power. J should be nonnegative. - - Output, int I4_POWER, the value of I^J. -*/ -{ - int k; - int value; - - if (j < 0) - { - if (i == 1) - { - value = 1; - } - else if (i == 0) - { - printf("\n"); - printf("I4_POWER - Fatal error!\n"); - printf(" I^J requested, with I = 0 and J negative.\n"); - exit(1); - } - else - { - value = 0; - } - } - else if (j == 0) - { - if (i == 0) - { - printf("\n"); - printf("I4_POWER - Fatal error!\n"); - printf(" I^J requested, with I = 0 and J = 0.\n"); - exit(1); - } - else - { - value = 1; - } - } - else if (j == 1) - { - value = i; - } - else - { - value = 1; - for (k = 1; k <= j; k++) - { - value = value * i; - } - } - return value; -} -/******************************************************************************/ - -void i4mat_memory_test(int n_log) - -/******************************************************************************/ -/* - Purpose: - - I4MAT_MEMORY_TEST declares and uses an I4MAT of size N. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt - - Parameters: - - Input, int N_LOG, the logarithm base 2 of N. -*/ -{ - float average; - float cpu_diff; - float cpu_time1; - float cpu_time2; - int i; - int *i4mat; - int j; - int n; - int n1; - int n1_log; - int n2; - int n2_log; - float real_diff; - float real_time1; - float real_time2; - unsigned int seed = 123456789; - float x; - - n = i4_power(2, n_log); - - n1_log = n_log / 2; - n1 = i4_power(2, n1_log); - n2_log = n_log - n1_log; - n2 = i4_power(2, n2_log); - - printf(" %4d %12d", n_log, n); - - srandom(seed); - - real_time1 = r4_real_time(); - cpu_time1 = r4_cpu_time(); - - i4mat = (int *)malloc(n1 * n2 * sizeof(int)); - - for (j = 0; j < n2; j++) - { - for (i = 0; i < n1; i++) - { - x = (float)random() / (float)RAND_MAX; - i4mat[i + j * n1] = (int)(3.0 * x); - } - } - - average = 0.0; - for (j = 0; j < n2; j++) - { - for (i = 0; i < n1; i++) - { - average = average + (float)i4mat[i + j * n1]; - } - } - average = average / (float)n1 / (float)n2; - - cpu_time2 = r4_cpu_time(); - real_time2 = r4_real_time(); - - cpu_diff = cpu_time2 - cpu_time1; - real_diff = real_time2 - real_time1; - - printf(" %12d %12d %4f %10e %10e\n", - n1, n2, average, cpu_diff, real_diff); - - free(i4mat); - - return; -} -/******************************************************************************/ - -void i4vec_memory_test(int n_log) - -/******************************************************************************/ -/* - Purpose: - - I4VEC_MEMORY_TEST declares and uses an I4VEC of size N. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt - - Parameters: - - Input, int N_LOG, the logarithm base 2 of N. -*/ -{ - float average; - float cpu_diff; - float cpu_time1; - float cpu_time2; - int i; - int *i4vec; - int n; - float real_diff; - float real_time1; - float real_time2; - unsigned int seed = 123456789; - float x; - - n = i4_power(2, n_log); - - printf(" %4d %12d", n_log, n); - - srandom(seed); - - real_time1 = r4_real_time(); - cpu_time1 = r4_cpu_time(); - - i4vec = (int *)malloc(n * sizeof(int)); - - for (i = 0; i < n; i++) - { - x = (float)random() / (float)RAND_MAX; - i4vec[i] = (int)(3.0 * x); - } - - average = 0.0; - for (i = 0; i < n; i++) - { - average = average + (float)i4vec[i]; - } - average = average / (float)n; - - cpu_time2 = r4_cpu_time(); - real_time2 = r4_real_time(); - - cpu_diff = cpu_time2 - cpu_time1; - real_diff = real_time2 - real_time1; - - printf(" %4.2f %10.2e %10.2e\n", average, cpu_diff, real_diff); - - free(i4vec); - - return; -} -/******************************************************************************/ - -float r4_cpu_time() - -/******************************************************************************/ -/* - Purpose: - - R4_CPU_TIME reports the elapsed CPU time. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 16 November 2006 - - Author: - - John Burkardt - - Parameters: - - Output, float R4_CPU_TIME, the current total elapsed CPU time in second. -*/ -{ - float value; - - value = (float)clock() / (float)CLOCKS_PER_SEC; - - return value; -} -/******************************************************************************/ - -float r4_real_time() - -/******************************************************************************/ -/* - Purpose: - - R4_REAL_TIME returns the current real time. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 16 November 2006 - - Author: - - John Burkardt - - Parameters: - - Output, float R4_REAL_TIME, the real time in seconds. -*/ -{ - time_t now; - static time_t then = 0; - float value; - - if (then == 0) - { - then = time(NULL); - } - - now = time(NULL); - - value = (float)difftime(now, then); - - return value; -} -/******************************************************************************/ - -void r4mat_memory_test(int n_log) - -/******************************************************************************/ -/* - Purpose: - - R4MAT_MEMORY_TEST declares and uses an R4MAT of size N. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt - - Parameters: - - Input, int N_LOG, the logarithm base 2 of N. -*/ -{ - float average; - float cpu_diff; - float cpu_time1; - float cpu_time2; - int i; - int j; - int n; - int n1; - int n1_log; - int n2; - int n2_log; - float *r4mat; - float real_diff; - float real_time1; - float real_time2; - unsigned int seed = 123456789; - float x; - - n = i4_power(2, n_log); - - n1_log = n_log / 2; - n1 = i4_power(2, n1_log); - n2_log = n_log - n1_log; - n2 = i4_power(2, n2_log); - - printf(" %4d %12d", n_log, n); - - srandom(seed); - - real_time1 = r4_real_time(); - cpu_time1 = r4_cpu_time(); - - r4mat = (float *)malloc(n1 * n2 * sizeof(float)); - - for (j = 0; j < n2; j++) - { - for (i = 0; i < n1; i++) - { - x = (float)random() / (float)RAND_MAX; - r4mat[i + j * n1] = 2.0 * x; - } - } - - average = 0.0; - for (j = 0; j < n2; j++) - { - for (i = 0; i < n1; i++) - { - average = average + r4mat[i + j * n1]; - } - } - average = average / (float)n1 / (float)n2; - - cpu_time2 = r4_cpu_time(); - real_time2 = r4_real_time(); - - cpu_diff = cpu_time2 - cpu_time1; - real_diff = real_time2 - real_time1; - - printf(" %12d %12d %4.2f %10.2e %10.2e\n", - n1, n2, average, cpu_diff, real_diff); - - free(r4mat); - - return; -} -/******************************************************************************/ - -void r4vec_memory_test(int n_log) - -/******************************************************************************/ -/* - Purpose: - - R4VEC_MEMORY_TEST declares and uses an R4VEC of size N. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt - - Parameters: - - Input, int N_LOG, the logarithm base 2 of N. -*/ -{ - float average; - float cpu_diff; - float cpu_time1; - float cpu_time2; - int i; - int n; - float *r4vec; - float real_diff; - float real_time1; - float real_time2; - unsigned int seed = 123456789; - float x; - - n = i4_power(2, n_log); - - printf(" %4d %12d", n_log, n); - - srandom(seed); - - real_time1 = r4_real_time(); - cpu_time1 = r4_cpu_time(); - - r4vec = (float *)malloc(n * sizeof(float)); - - for (i = 0; i < n; i++) - { - x = (float)random() / (float)RAND_MAX; - r4vec[i] = (2.0 * x); - } - - average = 0.0; - for (i = 0; i < n; i++) - { - average = average + r4vec[i]; - } - average = average / (float)n; - - cpu_time2 = r4_cpu_time(); - real_time2 = r4_real_time(); - - cpu_diff = cpu_time2 - cpu_time1; - real_diff = real_time2 - real_time1; - - printf(" %4.2f %10.2e %10.2e\n", average, cpu_diff, real_diff); - - free(r4vec); - - return; -} -/******************************************************************************/ - -double r8_cpu_time() - -/******************************************************************************/ -/* - Purpose: - - R8_CPU_TIME reports the elapsed CPU time. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 16 November 2006 - - Author: - - John Burkardt - - Parameters: - - Output, double R8_CPU_TIME, the current total elapsed CPU time in second. -*/ -{ - double value; - - value = (double)clock() / (double)CLOCKS_PER_SEC; - - return value; -} -/******************************************************************************/ - -double r8_real_time() - -/******************************************************************************/ -/* - Purpose: - - R8_REAL_TIME returns the current real time. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 16 November 2006 - - Author: - - John Burkardt - - Parameters: - - Output, double R8_REAL_TIME, the real time in seconds. -*/ -{ - time_t now; - static time_t then = 0; - double value; - - if (then == 0) - { - then = time(NULL); - } - - now = time(NULL); - - value = difftime(now, then); - - return value; -} -/******************************************************************************/ - -void r8mat_memory_test(int n_log) - -/******************************************************************************/ -/* - Purpose: - - R8MAT_MEMORY_TEST declares and uses an R8MAT of size N. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt - - Parameters: - - Input, int N_LOG, the logarithm base 2 of N. -*/ -{ - double average; - float cpu_diff; - float cpu_time1; - float cpu_time2; - int i; - int j; - int n; - int n1; - int n1_log; - int n2; - int n2_log; - double *r8mat; - float real_diff; - float real_time1; - float real_time2; - unsigned int seed = 123456789; - double x; - - n = i4_power(2, n_log); - - n1_log = n_log / 2; - n1 = i4_power(2, n1_log); - n2_log = n_log - n1_log; - n2 = i4_power(2, n2_log); - - printf(" %4d %12d", n_log, n); - - srandom(seed); - - real_time1 = r4_real_time(); - cpu_time1 = r4_cpu_time(); - - r8mat = (double *)malloc(n1 * n2 * sizeof(double)); - - for (j = 0; j < n2; j++) - { - for (i = 0; i < n1; i++) - { - x = (double)random() / (double)RAND_MAX; - r8mat[i + j * n1] = 2.0 * x; - } - } - - average = 0.0; - for (j = 0; j < n2; j++) - { - for (i = 0; i < n1; i++) - { - average = average + r8mat[i + j * n1]; - } - } - average = average / (double)n1 / (double)n2; - - cpu_time2 = r4_cpu_time(); - real_time2 = r4_real_time(); - - cpu_diff = cpu_time2 - cpu_time1; - real_diff = real_time2 - real_time1; - - printf(" %12d %12d %4.2f %10.2e %10.2e\n", - n1, n2, average, cpu_diff, real_diff); - - free(r8mat); - - return; -} -/******************************************************************************/ - -void r8vec_memory_test(int n_log) - -/******************************************************************************/ -/* - Purpose: - - R8VEC_MEMORY_TEST declares and uses an R8VEC of size N. - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 01 December 2010 - - Author: - - John Burkardt - - Parameters: - - Input, int N_LOG, the logarithm base 2 of N. -*/ -{ - double average; - double cpu_diff; - double cpu_time1; - double cpu_time2; - int i; - int n; - double *r8vec; - double real_diff; - double real_time1; - double real_time2; - unsigned int seed = 123456789; - double x; - - n = i4_power(2, n_log); - - printf(" %4d %12d", n_log, n); - - srandom(seed); - - real_time1 = r8_real_time(); - cpu_time1 = r8_cpu_time(); - - r8vec = (double *)malloc(n * sizeof(double)); - - for (i = 0; i < n; i++) - { - x = (double)random() / (double)RAND_MAX; - r8vec[i] = (2.0 * x); - } - - average = 0.0; - for (i = 0; i < n; i++) - { - average = average + r8vec[i]; - } - average = average / (double)n; - - cpu_time2 = r8_cpu_time(); - real_time2 = r8_real_time(); - - cpu_diff = cpu_time2 - cpu_time1; - real_diff = real_time2 - real_time1; - - printf(" %4.2f %10.2e %10.2e\n", average, cpu_diff, real_diff); - - free(r8vec); - - return; -} -/******************************************************************************/ - -void timestamp() - -/******************************************************************************/ -/* - Purpose: - - TIMESTAMP prints the current YMDHMS date as a time stamp. - - Example: - - May 31 2001 09:45:54 AM - - Licensing: - - This code is distributed under the GNU LGPL license. - - Modified: - - 03 October 2003 - - Author: - - John Burkardt - - Parameters: - - None -*/ -{ -#define TIME_SIZE 40 - - static char time_buffer[TIME_SIZE]; - const struct tm *tm; - time_t now; - - now = time(NULL); - tm = localtime(&now); - - strftime(time_buffer, TIME_SIZE, "%d %B %Y %I:%M:%S %p", tm); - - printf("%s\n", time_buffer); - - return; -#undef TIME_SIZE -} diff --git a/benchmarks/memory_test.sh b/benchmarks/memory_test.sh deleted file mode 100755 index 05621b6..0000000 --- a/benchmarks/memory_test.sh +++ /dev/null @@ -1,20 +0,0 @@ -#! /bin/bash -# -gcc -c -Wall -I $HOME/include memory_test.c -if [ $? -ne 0 ]; then - echo "Compile error." - exit -fi -# -gcc memory_test.o -lm -if [ $? -ne 0 ]; then - echo "Load error." - exit -fi -# -rm memory_test.o -# -chmod ugo+x a.out -mv a.out /usr/bin/memory_test -# -echo "Normal end of execution." diff --git a/benchmarks/qs-1-million-local b/benchmarks/qs-1-million-local deleted file mode 100644 index b56be10..0000000 --- a/benchmarks/qs-1-million-local +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 100000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 12.952528 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 12.938765 seconds diff --git a/benchmarks/qs-1-million-rem b/benchmarks/qs-1-million-rem deleted file mode 100644 index e69de29..0000000 diff --git a/benchmarks/qs-1-million-remote b/benchmarks/qs-1-million-remote deleted file mode 100644 index 6d81d5b..0000000 --- a/benchmarks/qs-1-million-remote +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 100000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 13.312455 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 13.087744 seconds diff --git a/benchmarks/qs-1-thousand-local b/benchmarks/qs-1-thousand-local deleted file mode 100644 index 73b7ffe..0000000 --- a/benchmarks/qs-1-thousand-local +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 1000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 0.001517 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 0.001553 seconds diff --git a/benchmarks/qs-1-thousand-remote b/benchmarks/qs-1-thousand-remote deleted file mode 100644 index ba6683d..0000000 --- a/benchmarks/qs-1-thousand-remote +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 1000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 0.001393 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 0.001357 seconds diff --git a/benchmarks/qs-10-thousand-local b/benchmarks/qs-10-thousand-local deleted file mode 100644 index 23e6dc5..0000000 --- a/benchmarks/qs-10-thousand-local +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 10000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 0.141668 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 0.130813 seconds diff --git a/benchmarks/qs-10-thousand-remote b/benchmarks/qs-10-thousand-remote deleted file mode 100644 index 1ba7b94..0000000 --- a/benchmarks/qs-10-thousand-remote +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 10000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 0.143340 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 0.130245 seconds diff --git a/benchmarks/qs-100-thousand-local b/benchmarks/qs-100-thousand-local deleted file mode 100644 index c6877d6..0000000 --- a/benchmarks/qs-100-thousand-local +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 100000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 13.216379 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 13.143430 seconds diff --git a/benchmarks/qs-100-thousand-remote b/benchmarks/qs-100-thousand-remote deleted file mode 100644 index 437840f..0000000 --- a/benchmarks/qs-100-thousand-remote +++ /dev/null @@ -1,9 +0,0 @@ - - Array size: 100000 - Filling the array with sorted numbers... Done! - >> Running sort on randomly generated numbers. - TIME ELAPSED: 13.276895 seconds - - Filling the array with sorted numbers... Done! - >> Running sort on sequential numbers. - TIME ELAPSED: 13.106945 seconds diff --git a/benchmarks/quicksort.c b/benchmarks/quicksort.c deleted file mode 100644 index 67fc8fb..0000000 --- a/benchmarks/quicksort.c +++ /dev/null @@ -1,140 +0,0 @@ -// You need to uncomment and comment some blocks in order to benchmark, it is not full automatic. - -#include -#include -#include - -// Inputs -#define ARRAY_SIZE 100000 -#define LOGS_ON 0 - -void print_array(int *arr) -{ - printf("\n ["); - int i; - - for (i = 0; i < ARRAY_SIZE - 1; ++i) - printf("%d, ", arr[i]); - - printf("%d]", arr[ARRAY_SIZE - 1]); -} - -void swap(int *a, int *b) -{ - int tmp = *a; - *a = *b; - *b = tmp; -} - -void quicksort(int *arr, int left, int right) -{ - if (LOGS_ON) - printf("\n\n WILL QUICKSORT BETWEEN INDEXES [%d, %d]", left, right); - - int i = left, j = right; - // Partition - { - // Pivot is the random one (2) - //swap(&arr[left], &arr[(((rand() << 15) ^ rand()) % (right - left)) + left]); - // Pivot is the second lowest one from left, mid and right (3) - /* - int mid = (left + right) / 2; - if((arr[left] < arr[mid] && arr[mid] < arr[right]) || - (arr[right] < arr[mid] && arr[mid] < arr[left])){ - swap(&arr[left], &arr[mid]); - } - else if((arr[mid] < arr[right] && arr[right] < arr[left]) || - (arr[left] < arr[right] && arr[right] < arr[mid])){ - swap(&arr[left], &arr[right]); - } - */ - // Pivot is the most left by default (1), nothing to do special - int pivot = arr[left]; - - while (i <= j) - { - while (arr[i] < pivot) - i++; - - while (arr[j] > pivot) - j--; - - if (i <= j) - { - swap(&arr[i], &arr[j]); - i++; - j--; - } - } - - if (LOGS_ON) - { - printf("\n After partitioning with pivot value of %d: ", pivot); - print_array(arr); - } - } - // Recursion - { - if (left < j) - quicksort(arr, left, j); - - if (i < right) - quicksort(arr, i, right); - } -} - -void benchmark_quicksort(int *arr) -{ - if (LOGS_ON) - { - print_array(arr); - } - - // Measure the time, start - struct timeval tvBegin, tvEnd, tvDiff; - gettimeofday(&tvBegin, NULL); - quicksort(arr, 0, ARRAY_SIZE - 1); - // Measure the time, end - gettimeofday(&tvEnd, NULL); - long int diff = (tvEnd.tv_usec + 1000000 * tvEnd.tv_sec) - (tvBegin.tv_usec + 1000000 * tvBegin.tv_sec); - tvDiff.tv_sec = diff / 1000000; - tvDiff.tv_usec = diff % 1000000; - printf("\n TIME ELAPSED: %ld.%06ld seconds\n", tvDiff.tv_sec, tvDiff.tv_usec); -} - -int fill_array(int *arr, int fill_sorted) -{ - printf("\n Filling the array "); - int i; - - if (fill_sorted) - { - printf("with sorted numbers..."); - - for (i = 0; i < ARRAY_SIZE; ++i) - arr[i] = i; - } - else - { - printf("with random numbers..."); - - for (i = 0; i < ARRAY_SIZE; ++i) - arr[i] = rand(); - } - - printf(" Done!"); -} - -int main() -{ - printf("\n Array size: %d", ARRAY_SIZE); - int *numbers = malloc(sizeof(int) * ARRAY_SIZE); - fill_array(numbers, 1); - printf("\n >> Running sort on randomly generated numbers."); - benchmark_quicksort(numbers); - fill_array(numbers, 1); - printf("\n >> Running sort on sequential numbers."); - benchmark_quicksort(numbers); - free(numbers); - return 0; -} \ No newline at end of file diff --git a/benchmarks/ram-bench b/benchmarks/ram-bench new file mode 160000 index 0000000..250f65d --- /dev/null +++ b/benchmarks/ram-bench @@ -0,0 +1 @@ +Subproject commit 250f65db877b4eb46419f727801d7ca0f244ea3b diff --git a/benchmarks/sorting-benchmarks b/benchmarks/sorting-benchmarks new file mode 160000 index 0000000..caadc4a --- /dev/null +++ b/benchmarks/sorting-benchmarks @@ -0,0 +1 @@ +Subproject commit caadc4a87d42c3278e14964e7d09bc967d8c796e diff --git a/benchmarks/stream/stream b/benchmarks/stream/stream deleted file mode 100755 index 3fe100b..0000000 Binary files a/benchmarks/stream/stream and /dev/null differ diff --git a/benchmarks/sysbench-1M-local b/benchmarks/sysbench-1M-local deleted file mode 100644 index 3213699..0000000 --- a/benchmarks/sysbench-1M-local +++ /dev/null @@ -1,37 +0,0 @@ -sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3) - -Running the test with following options: -Number of threads: 1 -Initializing random number generator from current time - - -Running memory speed test with the following options: - block size: 1024KiB - total size: 102400MiB - operation: write - scope: global - -Initializing worker threads... - -Threads started! - -Total operations: 102400 (14719.05 per second) - -102400.00 MiB transferred (14719.05 MiB/sec) - - -General statistics: - total time: 6.9552s - total number of events: 102400 - -Latency (ms): - min: 0.07 - avg: 0.07 - max: 8.12 - 95th percentile: 0.07 - sum: 6923.14 - -Threads fairness: - events (avg/stddev): 102400.0000/0.00 - execution time (avg/stddev): 6.9231/0.00 - diff --git a/benchmarks/sysbench-1M-remote b/benchmarks/sysbench-1M-remote deleted file mode 100644 index 4bf2975..0000000 --- a/benchmarks/sysbench-1M-remote +++ /dev/null @@ -1,37 +0,0 @@ -sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3) - -Running the test with following options: -Number of threads: 1 -Initializing random number generator from current time - - -Running memory speed test with the following options: - block size: 1024KiB - total size: 102400MiB - operation: write - scope: global - -Initializing worker threads... - -Threads started! - -Total operations: 102400 (14440.76 per second) - -102400.00 MiB transferred (14440.76 MiB/sec) - - -General statistics: - total time: 7.0893s - total number of events: 102400 - -Latency (ms): - min: 0.07 - avg: 0.07 - max: 14.17 - 95th percentile: 0.07 - sum: 7054.51 - -Threads fairness: - events (avg/stddev): 102400.0000/0.00 - execution time (avg/stddev): 7.0545/0.00 - diff --git a/benchmarks/sysbench-4M-local b/benchmarks/sysbench-4M-local deleted file mode 100644 index a09053b..0000000 --- a/benchmarks/sysbench-4M-local +++ /dev/null @@ -1,37 +0,0 @@ -sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3) - -Running the test with following options: -Number of threads: 1 -Initializing random number generator from current time - - -Running memory speed test with the following options: - block size: 4096KiB - total size: 102400MiB - operation: write - scope: global - -Initializing worker threads... - -Threads started! - -Total operations: 25600 ( 3225.96 per second) - -102400.00 MiB transferred (12903.82 MiB/sec) - - -General statistics: - total time: 7.9338s - total number of events: 25600 - -Latency (ms): - min: 0.30 - avg: 0.31 - max: 4.60 - 95th percentile: 0.33 - sum: 7909.39 - -Threads fairness: - events (avg/stddev): 25600.0000/0.00 - execution time (avg/stddev): 7.9094/0.00 - diff --git a/benchmarks/sysbench-4M-remote b/benchmarks/sysbench-4M-remote deleted file mode 100644 index ae084ac..0000000 --- a/benchmarks/sysbench-4M-remote +++ /dev/null @@ -1,37 +0,0 @@ -sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3) - -Running the test with following options: -Number of threads: 1 -Initializing random number generator from current time - - -Running memory speed test with the following options: - block size: 4096KiB - total size: 102400MiB - operation: write - scope: global - -Initializing worker threads... - -Threads started! - -Total operations: 25600 ( 3062.90 per second) - -102400.00 MiB transferred (12251.60 MiB/sec) - - -General statistics: - total time: 8.3563s - total number of events: 25600 - -Latency (ms): - min: 0.29 - avg: 0.33 - max: 16.66 - 95th percentile: 0.37 - sum: 8326.43 - -Threads fairness: - events (avg/stddev): 25600.0000/0.00 - execution time (avg/stddev): 8.3264/0.00 - diff --git a/benchmarks/sysbench-64K-local b/benchmarks/sysbench-64K-local deleted file mode 100644 index 3a1a5dc..0000000 --- a/benchmarks/sysbench-64K-local +++ /dev/null @@ -1,37 +0,0 @@ -sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3) - -Running the test with following options: -Number of threads: 1 -Initializing random number generator from current time - - -Running memory speed test with the following options: - block size: 64KiB - total size: 102400MiB - operation: write - scope: global - -Initializing worker threads... - -Threads started! - -Total operations: 1638400 (223500.78 per second) - -102400.00 MiB transferred (13968.80 MiB/sec) - - -General statistics: - total time: 7.3289s - total number of events: 1638400 - -Latency (ms): - min: 0.00 - avg: 0.00 - max: 19.81 - 95th percentile: 0.00 - sum: 7068.52 - -Threads fairness: - events (avg/stddev): 1638400.0000/0.00 - execution time (avg/stddev): 7.0685/0.00 - diff --git a/benchmarks/sysbench-64K-remote b/benchmarks/sysbench-64K-remote deleted file mode 100644 index 3909857..0000000 --- a/benchmarks/sysbench-64K-remote +++ /dev/null @@ -1,37 +0,0 @@ -sysbench 1.0.11 (using system LuaJIT 2.1.0-beta3) - -Running the test with following options: -Number of threads: 1 -Initializing random number generator from current time - - -Running memory speed test with the following options: - block size: 64KiB - total size: 102400MiB - operation: write - scope: global - -Initializing worker threads... - -Threads started! - -Total operations: 1638400 (220691.51 per second) - -102400.00 MiB transferred (13793.22 MiB/sec) - - -General statistics: - total time: 7.4222s - total number of events: 1638400 - -Latency (ms): - min: 0.00 - avg: 0.00 - max: 14.39 - 95th percentile: 0.00 - sum: 7140.93 - -Threads fairness: - events (avg/stddev): 1638400.0000/0.00 - execution time (avg/stddev): 7.1409/0.00 - diff --git a/benchmarks/throughput_benchmark.cpp b/benchmarks/throughput_benchmark.cpp new file mode 100644 index 0000000..0620fec --- /dev/null +++ b/benchmarks/throughput_benchmark.cpp @@ -0,0 +1,289 @@ +#include +#include +#include +#include +#include +#include +#include + +// void print(const char *str) +// { +// write(STDOUT_FILENO, str, strlen(str)); +// } + +void isIntSumValid(int num, int sum) +{ + if (sum == ((num * (num - 1)) / 2)) + { + std::cout << "SUM is valid" << std::endl; + } + else + { + std::cout << "SUM is invalid" << std::endl; + } +} + +void isDoubleSumValid(double num, double sum) +{ + if (sum == ((num * (num - 1)) / 2)) + { + std::cout << "SUM is valid" << std::endl; + } + else + { + std::cout << "SUM is invalid" << std::endl; + } +} + +// Function to return the next random number +int getNum(std::vector &v) +{ + + // Size of the vector + int n = v.size(); + + // Generate a random number + srand(time(NULL)); + + // Make sure the number is within + // the index range + int index = rand() % n; + + // Get random number from the vector + int num = v[index]; + + // Remove the number from the vector + std::swap(v[index], v[n - 1]); + v.pop_back(); + + // Return the removed number + return num; +} + +// Function to generate n non-repeating random numbers +std::vector getIndexArray(int n) +{ + std::vector v(n); + + // Fill the vector with the values + // 1, 2, 3, ..., n + for (int i = 0; i < n; i++) + v[i] = i; + + return v; +} + +void bench_for_int(int num) +{ + int n = num * sizeof(int); + int sum = 0; + + int *p = (int *)malloc(n); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(int)); i++) + { + // printf("%d\n", i); + p[i] = i; + } + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(int)); i++) + { + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------INT SEQ " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds." << std::endl; + // read time + std::cout << "Read Time " << read_time.count() << " seconds." << std::endl; + // total time + std::cout << "Total Time " << total_time.count() << " seconds." << std::endl; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds." << std::endl; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds." << std::endl; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds." << std::endl; + + // Sum + std::cout << "Sum " << sum << std::endl; + + isIntSumValid(num, sum); +} + +void bench_for_double(int num) +{ + int n = num * sizeof(double); + double sum = 0; + double j = 0; + + double *p = (double *)malloc(n); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(double)); i++) + { + // printf("%d\n", i); + p[i] = j; + j++; + } + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + + for (int i = 0; i < (n / sizeof(double)); i++) + { + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------DOUBLE SEQ " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds." << std::endl; + // read time + std::cout << "Read Time " << read_time.count() << " seconds." << std::endl; + // total time + std::cout << "Total Time " << total_time.count() << " seconds." << std::endl; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds." << std::endl; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds." << std::endl; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds." << std::endl; + + // Sum + std::cout << "Sum " << sum << std::endl; + isDoubleSumValid((double)num, sum); +} + +void bench_for_int_random(int num) +{ + int n = num * sizeof(int); + int sum = 0; + int i = 0; + + int *p = (int *)malloc(n); + std::vector idx1 = getIndexArray(num); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + while (idx1.size()) + { + i = getNum(idx1); + p[i] = i; + } + std::vector idx2 = getIndexArray(num); + + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + while (idx2.size()) + { + i = getNum(idx2); + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------INT RAND " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds." << std::endl; + // read time + std::cout << "Read Time " << read_time.count() << " seconds." << std::endl; + // total time + std::cout << "Total Time " << total_time.count() << " seconds." << std::endl; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds." << std::endl; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds." << std::endl; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds." << std::endl; + + // Sum + std::cout << "Sum " << sum << std::endl; + isIntSumValid(num, sum); +} + +void bench_for_double_random(int num) +{ + int n = num * sizeof(double); + int i = 0; + double sum = 0; + double j = 0; + + double *p = (double *)malloc(n); + std::vector idx1 = getIndexArray(num); + std::chrono::high_resolution_clock::time_point t1 = std::chrono::high_resolution_clock::now(); + + while (idx1.size()) + { + i = getNum(idx1); + p[i] = i; + } + std::vector idx2 = getIndexArray(num); + + std::chrono::high_resolution_clock::time_point t2 = std::chrono::high_resolution_clock::now(); + while (idx2.size()) + { + i = getNum(idx2); + sum += p[i]; + } + std::chrono::high_resolution_clock::time_point t3 = std::chrono::high_resolution_clock::now(); + + std::chrono::duration total_time = std::chrono::duration_cast>(t3 - t1); + std::chrono::duration read_time = std::chrono::duration_cast>(t3 - t2); + std::chrono::duration write_time = std::chrono::duration_cast>(t2 - t1); + + std::cout << "--------------DOUBLE RAND " << num << " ---------------" << std::endl; + + // write time + std::cout << "Write Time " << write_time.count() << " seconds." << std::endl; + // read time + std::cout << "Read Time " << read_time.count() << " seconds." << std::endl; + // total time + std::cout << "Total Time " << total_time.count() << " seconds." << std::endl; + // Avg read time / element + std::cout << "Avg Read Time " << read_time.count() / num << " seconds." << std::endl; + // Avg write time / element + std::cout << "Avg Write Time " << write_time.count() / num << " seconds." << std::endl; + // Avg total time / element + std::cout << "Avg Total Time " << total_time.count() / num << " seconds." << std::endl; + + // Sum + std::cout << "Sum " << sum << std::endl; + isDoubleSumValid((double)num, sum); +} + +int main(int argc, char *argv[]) +{ + // bench_for_int(1024); + // bench_for_int(10240); + // bench_for_int(102400); + // bench_for_int(1024000); + + // bench_for_double(1024); + // bench_for_double(10240); + // bench_for_double(102400); + // bench_for_double(1024000); + + bench_for_int_random(1024); + bench_for_int_random(10240); + bench_for_int_random(102400); + bench_for_int_random(1024000); + + bench_for_double_random(1024); + bench_for_double_random(10240); + bench_for_double_random(102400); + bench_for_double_random(1024000); +} \ No newline at end of file diff --git a/client/Makefile b/client/Makefile index 86ff9b9..521d74d 100644 --- a/client/Makefile +++ b/client/Makefile @@ -1,10 +1,12 @@ CXX=g++ -OTH_INC_DIR = ../include -CXXFLAGS=-c -I $(OTH_INC_DIR) # Ugly! -DEPS = $(OTH_INC_DIR)/uffdman.hpp +INC_DIR = ../include +CXXFLAGS=-c -Wall -I $(INC_DIR) # Ugly! SRC=../uffdman/*.cpp -all: client +all: client #preloadlib + +# preloadlib: uffdman.o +# g++ bin/uffdman.o bin/rmp_client.o -shared -fPIC -o ./bin/preloadlib.so preloadlib.cpp -ldl -lpthread client: uffdman.o $(CXX) -o bin/client -pthread bin/uffdman.o bin/rmp_client.o bin/client.o @@ -25,7 +27,7 @@ rmp_client.o: client.o $(CXX) $(CXXFLAGS) rmp_client.cpp -o bin/rmp_client.o client.o: mkdir - $(CXX) -c client.cpp -o bin/client.o + $(CXX) $(CXXFLAGS) client.cpp -o bin/client.o mkdir: mkdir -p bin diff --git a/client/client.cpp b/client/client.cpp index 6f1b9ae..c666eac 100644 --- a/client/client.cpp +++ b/client/client.cpp @@ -8,6 +8,8 @@ int main(int argc, char const *argv[]) { double sum = 0; + double sum2 = 0; + double sum3 = 0; if (argc != 3) { std::cout << "Invalid args!" << std::endl; @@ -27,6 +29,12 @@ int main(int argc, char const *argv[]) printf(" RMP_INIT returned %d\n ", client.rmp_init()); double *data = (double *)client.rmp_alloc(11); + double *data2 = (double *)client.rmp_alloc(11); + double *data3 = (double *)client.rmp_alloc(11); + + printf("data 1 : %lx\n", data); + printf("data 2 : %lx\n", data2); + printf("data 3 : %lx\n", data3); for (int i = 0; i < ((10 * PAGE_SIZE) / sizeof(double)); i++) { @@ -39,5 +47,29 @@ int main(int argc, char const *argv[]) sum += data[i]; } - printf("Sum : %f\n", sum); + for (int i = 0; i < ((10 * PAGE_SIZE) / sizeof(double)); i++) + { + data2[i] = i; + } + + for (int i = 0; i < ((10 * PAGE_SIZE) / sizeof(double)); i++) + { + printf("Value at %lx is %f\n", (data2 + i), data2[i]); + sum2 += data2[i]; + } + + for (int i = 0; i < ((10 * PAGE_SIZE) / sizeof(double)); i++) + { + data3[i] = i; + } + + for (int i = 0; i < ((10 * PAGE_SIZE) / sizeof(double)); i++) + { + printf("Value at %lx is %f\n", (data3 + i), data3[i]); + sum3 += data3[i]; + } + + printf("Sum 1 : %f\n", sum); + printf("Sum 2 : %f\n", sum2); + printf("Sum 3 : %f\n", sum3); } \ No newline at end of file diff --git a/client/out b/client/out deleted file mode 100644 index e686a90..0000000 --- a/client/out +++ /dev/null @@ -1,8159 +0,0 @@ -127.0.0.1 -6767 -socketfd : 3, connected : 1 -Handle : 0 -FAULT HANDLER STARTED - -fault_handler_thread(): - poll() returns: nready = 1; POLLIN = 1; POLLERR = - UFFD_EVENT_PAGEFAULT event: uffd = 4; flags = 1; address = 7f4045215000; Rounded address = 7f4045215000 - (uffdio_copy.copy returned 4096 - -fault_handler_thread(): - poll() returns: nready = 1; POLLIN = 1; POLLERR = - UFFD_EVENT_PAGEFAULT event: uffd = 4; flags = 1; address = 7f4045216000; Rounded address = 7f4045216000 -Prev Resolved Address = 7f4045215000; invalidate_prev_resolved_page : Saving page to server as the page is dirty -rmp_pagefault_resovler: Offset = 0; Start Address = 7f4045215000; Faulting Address = 7f4045215000 -entered (rmp_write_page) -socketfd : 3, connected : 1 -send returned (rmp_write_page) -recv returned (rmp_write_page) -Error (rmp_write_page) : 0 - (uffdio_copy.copy returned 4096 - -fault_handler_thread(): - poll() returns: nready = 1; POLLIN = 1; POLLERR = - UFFD_EVENT_PAGEFAULT event: uffd = 4; flags = 0; address = 7f4045215000; Rounded address = 7f4045215000 -Prev Resolved Address = 7f4045216000; invalidate_prev_resolved_page : Saving page to server as the page is dirty -rmp_pagefault_resovler: Offset = 4096; Start Address = 7f4045215000; Faulting Address = 7f4045216000 -entered (rmp_write_page) -socketfd : 3, connected : 1 -send returned (rmp_write_page) -recv returned (rmp_write_page) -Error (rmp_write_page) : 3 -Calling rmp_page_resolver with faulting_addr : 7f4045215000 and Rounded : 7f4045215000 -rmp_pagefault_resovler: Offset = 0; Start Address = 7f4045215000; Faulting Address = 7f4045215000 -entered (rmp_read_page) -socketfd : 3, connected : 1 -send returned (rmp_read_page) -recv returned (rmp_read_page) -Error (rmp_read_page) : 0 -Data (rmp_read_page) :  -Value at 7f4045215000 is 1 -Value at 7f4045215001 is 1 -Value at 7f4045215002 is 1 -Value at 7f4045215003 is 1 -Value at 7f4045215004 is 1 -Value at 7f4045215005 is 1 -Value at 7f4045215006 is 1 -Value at 7f4045215007 is 1 -Value at 7f4045215008 is 1 -Value at 7f4045215009 is 1 -Value at 7f404521500a is 1 -Value at 7f404521500b is 1 -Value at 7f404521500c is 1 -Value at 7f404521500d is 1 -Value at 7f404521500e is 1 -Value at 7f404521500f is 1 -Value at 7f4045215010 is 1 -Value at 7f4045215011 is 1 -Value at 7f4045215012 is 1 -Value at 7f4045215013 is 1 -Value at 7f4045215014 is 1 -Value at 7f4045215015 is 1 -Value at 7f4045215016 is 1 -Value at 7f4045215017 is 1 -Value at 7f4045215018 is 1 -Value at 7f4045215019 is 1 -Value at 7f404521501a is 1 -Value at 7f404521501b is 1 -Value at 7f404521501c is 1 -Value at 7f404521501d is 1 -Value at 7f404521501e is 1 -Value at 7f404521501f is 1 -Value at 7f4045215020 is 1 -Value at 7f4045215021 is 1 -Value at 7f4045215022 is 1 -Value at 7f4045215023 is 1 -Value at 7f4045215024 is 1 -Value at 7f4045215025 is 1 -Value at 7f4045215026 is 1 -Value at 7f4045215027 is 1 -Value at 7f4045215028 is 1 -Value at 7f4045215029 is 1 -Value at 7f404521502a is 1 -Value at 7f404521502b is 1 -Value at 7f404521502c is 1 -Value at 7f404521502d is 1 -Value at 7f404521502e is 1 -Value at 7f404521502f is 1 -Value at 7f4045215030 is 1 -Value at 7f4045215031 is 1 -Value at 7f4045215032 is 1 -Value at 7f4045215033 is 1 -Value at 7f4045215034 is 1 -Value at 7f4045215035 is 1 -Value at 7f4045215036 is 1 -Value at 7f4045215037 is 1 -Value at 7f4045215038 is 1 -Value at 7f4045215039 is 1 -Value at 7f404521503a is 1 -Value at 7f404521503b is 1 -Value at 7f404521503c is 1 -Value at 7f404521503d is 1 -Value at 7f404521503e is 1 -Value at 7f404521503f is 1 -Value at 7f4045215040 is 1 -Value at 7f4045215041 is 1 -Value at 7f4045215042 is 1 -Value at 7f4045215043 is 1 -Value at 7f4045215044 is 1 -Value at 7f4045215045 is 1 -Value at 7f4045215046 is 1 -Value at 7f4045215047 is 1 -Value at 7f4045215048 is 1 -Value at 7f4045215049 is 1 -Value at 7f404521504a is 1 -Value at 7f404521504b is 1 -Value at 7f404521504c is 1 -Value at 7f404521504d is 1 -Value at 7f404521504e is 1 -Value at 7f404521504f is 1 -Value at 7f4045215050 is 1 -Value at 7f4045215051 is 1 -Value at 7f4045215052 is 1 -Value at 7f4045215053 is 1 -Value at 7f4045215054 is 1 -Value at 7f4045215055 is 1 -Value at 7f4045215056 is 1 -Value at 7f4045215057 is 1 -Value at 7f4045215058 is 1 -Value at 7f4045215059 is 1 -Value at 7f404521505a is 1 -Value at 7f404521505b is 1 -Value at 7f404521505c is 1 -Value at 7f404521505d is 1 -Value at 7f404521505e is 1 -Value at 7f404521505f is 1 -Value at 7f4045215060 is 1 -Value at 7f4045215061 is 1 -Value at 7f4045215062 is 1 -Value at 7f4045215063 is 1 -Value at 7f4045215064 is 1 -Value at 7f4045215065 is 1 -Value at 7f4045215066 is 1 -Value at 7f4045215067 is 1 -Value at 7f4045215068 is 1 -Value at 7f4045215069 is 1 -Value at 7f404521506a is 1 -Value at 7f404521506b is 1 -Value at 7f404521506c is 1 -Value at 7f404521506d is 1 -Value at 7f404521506e is 1 -Value at 7f404521506f is 1 -Value at 7f4045215070 is 1 -Value at 7f4045215071 is 1 -Value at 7f4045215072 is 1 -Value at 7f4045215073 is 1 -Value at 7f4045215074 is 1 -Value at 7f4045215075 is 1 -Value at 7f4045215076 is 1 -Value at 7f4045215077 is 1 -Value at 7f4045215078 is 1 -Value at 7f4045215079 is 1 -Value at 7f404521507a is 1 -Value at 7f404521507b is 1 -Value at 7f404521507c is 1 -Value at 7f404521507d is 1 -Value at 7f404521507e is 1 -Value at 7f404521507f is 1 -Value at 7f4045215080 is 1 -Value at 7f4045215081 is 1 -Value at 7f4045215082 is 1 -Value at 7f4045215083 is 1 -Value at 7f4045215084 is 1 -Value at 7f4045215085 is 1 -Value at 7f4045215086 is 1 -Value at 7f4045215087 is 1 -Value at 7f4045215088 is 1 -Value at 7f4045215089 is 1 -Value at 7f404521508a is 1 -Value at 7f404521508b is 1 -Value at 7f404521508c is 1 -Value at 7f404521508d is 1 -Value at 7f404521508e is 1 -Value at 7f404521508f is 1 -Value at 7f4045215090 is 1 -Value at 7f4045215091 is 1 -Value at 7f4045215092 is 1 -Value at 7f4045215093 is 1 -Value at 7f4045215094 is 1 -Value at 7f4045215095 is 1 -Value at 7f4045215096 is 1 -Value at 7f4045215097 is 1 -Value at 7f4045215098 is 1 -Value at 7f4045215099 is 1 -Value at 7f404521509a is 1 -Value at 7f404521509b is 1 -Value at 7f404521509c is 1 -Value at 7f404521509d is 1 -Value at 7f404521509e is 1 -Value at 7f404521509f is 1 -Value at 7f40452150a0 is 1 -Value at 7f40452150a1 is 1 -Value at 7f40452150a2 is 1 -Value at 7f40452150a3 is 1 -Value at 7f40452150a4 is 1 -Value at 7f40452150a5 is 1 -Value at 7f40452150a6 is 1 -Value at 7f40452150a7 is 1 -Value at 7f40452150a8 is 1 -Value at 7f40452150a9 is 1 -Value at 7f40452150aa is 1 -Value at 7f40452150ab is 1 -Value at 7f40452150ac is 1 -Value at 7f40452150ad is 1 -Value at 7f40452150ae is 1 -Value at 7f40452150af is 1 -Value at 7f40452150b0 is 1 -Value at 7f40452150b1 is 1 -Value at 7f40452150b2 is 1 -Value at 7f40452150b3 is 1 -Value at 7f40452150b4 is 1 -Value at 7f40452150b5 is 1 -Value at 7f40452150b6 is 1 -Value at 7f40452150b7 is 1 -Value at 7f40452150b8 is 1 -Value at 7f40452150b9 is 1 -Value at 7f40452150ba is 1 -Value at 7f40452150bb is 1 -Value at 7f40452150bc is 1 -Value at 7f40452150bd is 1 -Value at 7f40452150be is 1 -Value at 7f40452150bf is 1 -Value at 7f40452150c0 is 1 -Value at 7f40452150c1 is 1 -Value at 7f40452150c2 is 1 -Value at 7f40452150c3 is 1 -Value at 7f40452150c4 is 1 -Value at 7f40452150c5 is 1 -Value at 7f40452150c6 is 1 -Value at 7f40452150c7 is 1 -Value at 7f40452150c8 is 1 -Value at 7f40452150c9 is 1 -Value at 7f40452150ca is 1 -Value at 7f40452150cb is 1 -Value at 7f40452150cc is 1 -Value at 7f40452150cd is 1 -Value at 7f40452150ce is 1 -Value at 7f40452150cf is 1 -Value at 7f40452150d0 is 1 -Value at 7f40452150d1 is 1 -Value at 7f40452150d2 is 1 -Value at 7f40452150d3 is 1 -Value at 7f40452150d4 is 1 -Value at 7f40452150d5 is 1 -Value at 7f40452150d6 is 1 -Value at 7f40452150d7 is 1 -Value at 7f40452150d8 is 1 -Value at 7f40452150d9 is 1 -Value at 7f40452150da is 1 -Value at 7f40452150db is 1 -Value at 7f40452150dc is 1 -Value at 7f40452150dd is 1 -Value at 7f40452150de is 1 -Value at 7f40452150df is 1 -Value at 7f40452150e0 is 1 -Value at 7f40452150e1 is 1 -Value at 7f40452150e2 is 1 -Value at 7f40452150e3 is 1 -Value at 7f40452150e4 is 1 -Value at 7f40452150e5 is 1 -Value at 7f40452150e6 is 1 -Value at 7f40452150e7 is 1 -Value at 7f40452150e8 is 1 -Value at 7f40452150e9 is 1 -Value at 7f40452150ea is 1 -Value at 7f40452150eb is 1 -Value at 7f40452150ec is 1 -Value at 7f40452150ed is 1 -Value at 7f40452150ee is 1 -Value at 7f40452150ef is 1 -Value at 7f40452150f0 is 1 -Value at 7f40452150f1 is 1 -Value at 7f40452150f2 is 1 -Value at 7f40452150f3 is 1 -Value at 7f40452150f4 is 1 -Value at 7f40452150f5 is 1 -Value at 7f40452150f6 is 1 -Value at 7f40452150f7 is 1 -Value at 7f40452150f8 is 1 -Value at 7f40452150f9 is 1 -Value at 7f40452150fa is 1 -Value at 7f40452150fb is 1 -Value at 7f40452150fc is 1 -Value at 7f40452150fd is 1 -Value at 7f40452150fe is 1 -Value at 7f40452150ff is 1 -Value at 7f4045215100 is 1 -Value at 7f4045215101 is 1 -Value at 7f4045215102 is 1 -Value at 7f4045215103 is 1 -Value at 7f4045215104 is 1 -Value at 7f4045215105 is 1 -Value at 7f4045215106 is 1 -Value at 7f4045215107 is 1 -Value at 7f4045215108 is 1 -Value at 7f4045215109 is 1 -Value at 7f404521510a is 1 -Value at 7f404521510b is 1 -Value at 7f404521510c is 1 -Value at 7f404521510d is 1 -Value at 7f404521510e is 1 -Value at 7f404521510f is 1 -Value at 7f4045215110 is 1 -Value at 7f4045215111 is 1 -Value at 7f4045215112 is 1 -Value at 7f4045215113 is 1 -Value at 7f4045215114 is 1 -Value at 7f4045215115 is 1 -Value at 7f4045215116 is 1 -Value at 7f4045215117 is 1 -Value at 7f4045215118 is 1 -Value at 7f4045215119 is 1 -Value at 7f404521511a is 1 -Value at 7f404521511b is 1 -Value at 7f404521511c is 1 -Value at 7f404521511d is 1 -Value at 7f404521511e is 1 -Value at 7f404521511f is 1 -Value at 7f4045215120 is 1 -Value at 7f4045215121 is 1 -Value at 7f4045215122 is 1 -Value at 7f4045215123 is 1 -Value at 7f4045215124 is 1 -Value at 7f4045215125 is 1 -Value at 7f4045215126 is 1 -Value at 7f4045215127 is 1 -Value at 7f4045215128 is 1 -Value at 7f4045215129 is 1 -Value at 7f404521512a is 1 -Value at 7f404521512b is 1 -Value at 7f404521512c is 1 -Value at 7f404521512d is 1 -Value at 7f404521512e is 1 -Value at 7f404521512f is 1 -Value at 7f4045215130 is 1 -Value at 7f4045215131 is 1 -Value at 7f4045215132 is 1 -Value at 7f4045215133 is 1 -Value at 7f4045215134 is 1 -Value at 7f4045215135 is 1 -Value at 7f4045215136 is 1 -Value at 7f4045215137 is 1 -Value at 7f4045215138 is 1 -Value at 7f4045215139 is 1 -Value at 7f404521513a is 1 -Value at 7f404521513b is 1 -Value at 7f404521513c is 1 -Value at 7f404521513d is 1 -Value at 7f404521513e is 1 -Value at 7f404521513f is 1 -Value at 7f4045215140 is 1 -Value at 7f4045215141 is 1 -Value at 7f4045215142 is 1 -Value at 7f4045215143 is 1 -Value at 7f4045215144 is 1 -Value at 7f4045215145 is 1 -Value at 7f4045215146 is 1 -Value at 7f4045215147 is 1 -Value at 7f4045215148 is 1 -Value at 7f4045215149 is 1 -Value at 7f404521514a is 1 -Value at 7f404521514b is 1 -Value at 7f404521514c is 1 -Value at 7f404521514d is 1 -Value at 7f404521514e is 1 -Value at 7f404521514f is 1 -Value at 7f4045215150 is 1 -Value at 7f4045215151 is 1 -Value at 7f4045215152 is 1 -Value at 7f4045215153 is 1 -Value at 7f4045215154 is 1 -Value at 7f4045215155 is 1 -Value at 7f4045215156 is 1 -Value at 7f4045215157 is 1 -Value at 7f4045215158 is 1 -Value at 7f4045215159 is 1 -Value at 7f404521515a is 1 -Value at 7f404521515b is 1 -Value at 7f404521515c is 1 -Value at 7f404521515d is 1 -Value at 7f404521515e is 1 -Value at 7f404521515f is 1 -Value at 7f4045215160 is 1 -Value at 7f4045215161 is 1 -Value at 7f4045215162 is 1 -Value at 7f4045215163 is 1 -Value at 7f4045215164 is 1 -Value at 7f4045215165 is 1 -Value at 7f4045215166 is 1 -Value at 7f4045215167 is 1 -Value at 7f4045215168 is 1 -Value at 7f4045215169 is 1 -Value at 7f404521516a is 1 -Value at 7f404521516b is 1 -Value at 7f404521516c is 1 -Value at 7f404521516d is 1 -Value at 7f404521516e is 1 -Value at 7f404521516f is 1 -Value at 7f4045215170 is 1 -Value at 7f4045215171 is 1 -Value at 7f4045215172 is 1 -Value at 7f4045215173 is 1 -Value at 7f4045215174 is 1 -Value at 7f4045215175 is 1 -Value at 7f4045215176 is 1 -Value at 7f4045215177 is 1 -Value at 7f4045215178 is 1 -Value at 7f4045215179 is 1 -Value at 7f404521517a is 1 -Value at 7f404521517b is 1 -Value at 7f404521517c is 1 -Value at 7f404521517d is 1 -Value at 7f404521517e is 1 -Value at 7f404521517f is 1 -Value at 7f4045215180 is 1 -Value at 7f4045215181 is 1 -Value at 7f4045215182 is 1 -Value at 7f4045215183 is 1 -Value at 7f4045215184 is 1 -Value at 7f4045215185 is 1 -Value at 7f4045215186 is 1 -Value at 7f4045215187 is 1 -Value at 7f4045215188 is 1 -Value at 7f4045215189 is 1 -Value at 7f404521518a is 1 -Value at 7f404521518b is 1 -Value at 7f404521518c is 1 -Value at 7f404521518d is 1 -Value at 7f404521518e is 1 -Value at 7f404521518f is 1 -Value at 7f4045215190 is 1 -Value at 7f4045215191 is 1 -Value at 7f4045215192 is 1 -Value at 7f4045215193 is 1 -Value at 7f4045215194 is 1 -Value at 7f4045215195 is 1 -Value at 7f4045215196 is 1 -Value at 7f4045215197 is 1 -Value at 7f4045215198 is 1 -Value at 7f4045215199 is 1 -Value at 7f404521519a is 1 -Value at 7f404521519b is 1 -Value at 7f404521519c is 1 -Value at 7f404521519d is 1 -Value at 7f404521519e is 1 -Value at 7f404521519f is 1 -Value at 7f40452151a0 is 1 -Value at 7f40452151a1 is 1 -Value at 7f40452151a2 is 1 -Value at 7f40452151a3 is 1 -Value at 7f40452151a4 is 1 -Value at 7f40452151a5 is 1 -Value at 7f40452151a6 is 1 -Value at 7f40452151a7 is 1 -Value at 7f40452151a8 is 1 -Value at 7f40452151a9 is 1 -Value at 7f40452151aa is 1 -Value at 7f40452151ab is 1 -Value at 7f40452151ac is 1 -Value at 7f40452151ad is 1 -Value at 7f40452151ae is 1 -Value at 7f40452151af is 1 -Value at 7f40452151b0 is 1 -Value at 7f40452151b1 is 1 -Value at 7f40452151b2 is 1 -Value at 7f40452151b3 is 1 -Value at 7f40452151b4 is 1 -Value at 7f40452151b5 is 1 -Value at 7f40452151b6 is 1 -Value at 7f40452151b7 is 1 -Value at 7f40452151b8 is 1 -Value at 7f40452151b9 is 1 -Value at 7f40452151ba is 1 -Value at 7f40452151bb is 1 -Value at 7f40452151bc is 1 -Value at 7f40452151bd is 1 -Value at 7f40452151be is 1 -Value at 7f40452151bf is 1 -Value at 7f40452151c0 is 1 -Value at 7f40452151c1 is 1 -Value at 7f40452151c2 is 1 -Value at 7f40452151c3 is 1 -Value at 7f40452151c4 is 1 -Value at 7f40452151c5 is 1 -Value at 7f40452151c6 is 1 -Value at 7f40452151c7 is 1 -Value at 7f40452151c8 is 1 -Value at 7f40452151c9 is 1 -Value at 7f40452151ca is 1 -Value at 7f40452151cb is 1 -Value at 7f40452151cc is 1 -Value at 7f40452151cd is 1 -Value at 7f40452151ce is 1 -Value at 7f40452151cf is 1 -Value at 7f40452151d0 is 1 -Value at 7f40452151d1 is 1 -Value at 7f40452151d2 is 1 -Value at 7f40452151d3 is 1 -Value at 7f40452151d4 is 1 -Value at 7f40452151d5 is 1 -Value at 7f40452151d6 is 1 -Value at 7f40452151d7 is 1 -Value at 7f40452151d8 is 1 -Value at 7f40452151d9 is 1 -Value at 7f40452151da is 1 -Value at 7f40452151db is 1 -Value at 7f40452151dc is 1 -Value at 7f40452151dd is 1 -Value at 7f40452151de is 1 -Value at 7f40452151df is 1 -Value at 7f40452151e0 is 1 -Value at 7f40452151e1 is 1 -Value at 7f40452151e2 is 1 -Value at 7f40452151e3 is 1 -Value at 7f40452151e4 is 1 -Value at 7f40452151e5 is 1 -Value at 7f40452151e6 is 1 -Value at 7f40452151e7 is 1 -Value at 7f40452151e8 is 1 -Value at 7f40452151e9 is 1 -Value at 7f40452151ea is 1 -Value at 7f40452151eb is 1 -Value at 7f40452151ec is 1 -Value at 7f40452151ed is 1 -Value at 7f40452151ee is 1 -Value at 7f40452151ef is 1 -Value at 7f40452151f0 is 1 -Value at 7f40452151f1 is 1 -Value at 7f40452151f2 is 1 -Value at 7f40452151f3 is 1 -Value at 7f40452151f4 is 1 -Value at 7f40452151f5 is 1 -Value at 7f40452151f6 is 1 -Value at 7f40452151f7 is 1 -Value at 7f40452151f8 is 1 -Value at 7f40452151f9 is 1 -Value at 7f40452151fa is 1 -Value at 7f40452151fb is 1 -Value at 7f40452151fc is 1 -Value at 7f40452151fd is 1 -Value at 7f40452151fe is 1 -Value at 7f40452151ff is 1 -Value at 7f4045215200 is 1 -Value at 7f4045215201 is 1 -Value at 7f4045215202 is 1 -Value at 7f4045215203 is 1 -Value at 7f4045215204 is 1 -Value at 7f4045215205 is 1 -Value at 7f4045215206 is 1 -Value at 7f4045215207 is 1 -Value at 7f4045215208 is 1 -Value at 7f4045215209 is 1 -Value at 7f404521520a is 1 -Value at 7f404521520b is 1 -Value at 7f404521520c is 1 -Value at 7f404521520d is 1 -Value at 7f404521520e is 1 -Value at 7f404521520f is 1 -Value at 7f4045215210 is 1 -Value at 7f4045215211 is 1 -Value at 7f4045215212 is 1 -Value at 7f4045215213 is 1 -Value at 7f4045215214 is 1 -Value at 7f4045215215 is 1 -Value at 7f4045215216 is 1 -Value at 7f4045215217 is 1 -Value at 7f4045215218 is 1 -Value at 7f4045215219 is 1 -Value at 7f404521521a is 1 -Value at 7f404521521b is 1 -Value at 7f404521521c is 1 -Value at 7f404521521d is 1 -Value at 7f404521521e is 1 -Value at 7f404521521f is 1 -Value at 7f4045215220 is 1 -Value at 7f4045215221 is 1 -Value at 7f4045215222 is 1 -Value at 7f4045215223 is 1 -Value at 7f4045215224 is 1 -Value at 7f4045215225 is 1 -Value at 7f4045215226 is 1 -Value at 7f4045215227 is 1 -Value at 7f4045215228 is 1 -Value at 7f4045215229 is 1 -Value at 7f404521522a is 1 -Value at 7f404521522b is 1 -Value at 7f404521522c is 1 -Value at 7f404521522d is 1 -Value at 7f404521522e is 1 -Value at 7f404521522f is 1 -Value at 7f4045215230 is 1 -Value at 7f4045215231 is 1 -Value at 7f4045215232 is 1 -Value at 7f4045215233 is 1 -Value at 7f4045215234 is 1 -Value at 7f4045215235 is 1 -Value at 7f4045215236 is 1 -Value at 7f4045215237 is 1 -Value at 7f4045215238 is 1 -Value at 7f4045215239 is 1 -Value at 7f404521523a is 1 -Value at 7f404521523b is 1 -Value at 7f404521523c is 1 -Value at 7f404521523d is 1 -Value at 7f404521523e is 1 -Value at 7f404521523f is 1 -Value at 7f4045215240 is 1 -Value at 7f4045215241 is 1 -Value at 7f4045215242 is 1 -Value at 7f4045215243 is 1 -Value at 7f4045215244 is 1 -Value at 7f4045215245 is 1 -Value at 7f4045215246 is 1 -Value at 7f4045215247 is 1 -Value at 7f4045215248 is 1 -Value at 7f4045215249 is 1 -Value at 7f404521524a is 1 -Value at 7f404521524b is 1 -Value at 7f404521524c is 1 -Value at 7f404521524d is 1 -Value at 7f404521524e is 1 -Value at 7f404521524f is 1 -Value at 7f4045215250 is 1 -Value at 7f4045215251 is 1 -Value at 7f4045215252 is 1 -Value at 7f4045215253 is 1 -Value at 7f4045215254 is 1 -Value at 7f4045215255 is 1 -Value at 7f4045215256 is 1 -Value at 7f4045215257 is 1 -Value at 7f4045215258 is 1 -Value at 7f4045215259 is 1 -Value at 7f404521525a is 1 -Value at 7f404521525b is 1 -Value at 7f404521525c is 1 -Value at 7f404521525d is 1 -Value at 7f404521525e is 1 -Value at 7f404521525f is 1 -Value at 7f4045215260 is 1 -Value at 7f4045215261 is 1 -Value at 7f4045215262 is 1 -Value at 7f4045215263 is 1 -Value at 7f4045215264 is 1 -Value at 7f4045215265 is 1 -Value at 7f4045215266 is 1 -Value at 7f4045215267 is 1 -Value at 7f4045215268 is 1 -Value at 7f4045215269 is 1 -Value at 7f404521526a is 1 -Value at 7f404521526b is 1 -Value at 7f404521526c is 1 -Value at 7f404521526d is 1 -Value at 7f404521526e is 1 -Value at 7f404521526f is 1 -Value at 7f4045215270 is 1 -Value at 7f4045215271 is 1 -Value at 7f4045215272 is 1 -Value at 7f4045215273 is 1 -Value at 7f4045215274 is 1 -Value at 7f4045215275 is 1 -Value at 7f4045215276 is 1 -Value at 7f4045215277 is 1 -Value at 7f4045215278 is 1 -Value at 7f4045215279 is 1 -Value at 7f404521527a is 1 -Value at 7f404521527b is 1 -Value at 7f404521527c is 1 -Value at 7f404521527d is 1 -Value at 7f404521527e is 1 -Value at 7f404521527f is 1 -Value at 7f4045215280 is 1 -Value at 7f4045215281 is 1 -Value at 7f4045215282 is 1 -Value at 7f4045215283 is 1 -Value at 7f4045215284 is 1 -Value at 7f4045215285 is 1 -Value at 7f4045215286 is 1 -Value at 7f4045215287 is 1 -Value at 7f4045215288 is 1 -Value at 7f4045215289 is 1 -Value at 7f404521528a is 1 -Value at 7f404521528b is 1 -Value at 7f404521528c is 1 -Value at 7f404521528d is 1 -Value at 7f404521528e is 1 -Value at 7f404521528f is 1 -Value at 7f4045215290 is 1 -Value at 7f4045215291 is 1 -Value at 7f4045215292 is 1 -Value at 7f4045215293 is 1 -Value at 7f4045215294 is 1 -Value at 7f4045215295 is 1 -Value at 7f4045215296 is 1 -Value at 7f4045215297 is 1 -Value at 7f4045215298 is 1 -Value at 7f4045215299 is 1 -Value at 7f404521529a is 1 -Value at 7f404521529b is 1 -Value at 7f404521529c is 1 -Value at 7f404521529d is 1 -Value at 7f404521529e is 1 -Value at 7f404521529f is 1 -Value at 7f40452152a0 is 1 -Value at 7f40452152a1 is 1 -Value at 7f40452152a2 is 1 -Value at 7f40452152a3 is 1 -Value at 7f40452152a4 is 1 -Value at 7f40452152a5 is 1 -Value at 7f40452152a6 is 1 -Value at 7f40452152a7 is 1 -Value at 7f40452152a8 is 1 -Value at 7f40452152a9 is 1 -Value at 7f40452152aa is 1 -Value at 7f40452152ab is 1 -Value at 7f40452152ac is 1 -Value at 7f40452152ad is 1 -Value at 7f40452152ae is 1 -Value at 7f40452152af is 1 -Value at 7f40452152b0 is 1 -Value at 7f40452152b1 is 1 -Value at 7f40452152b2 is 1 -Value at 7f40452152b3 is 1 -Value at 7f40452152b4 is 1 -Value at 7f40452152b5 is 1 -Value at 7f40452152b6 is 1 -Value at 7f40452152b7 is 1 -Value at 7f40452152b8 is 1 -Value at 7f40452152b9 is 1 -Value at 7f40452152ba is 1 -Value at 7f40452152bb is 1 -Value at 7f40452152bc is 1 -Value at 7f40452152bd is 1 -Value at 7f40452152be is 1 -Value at 7f40452152bf is 1 -Value at 7f40452152c0 is 1 -Value at 7f40452152c1 is 1 -Value at 7f40452152c2 is 1 -Value at 7f40452152c3 is 1 -Value at 7f40452152c4 is 1 -Value at 7f40452152c5 is 1 -Value at 7f40452152c6 is 1 -Value at 7f40452152c7 is 1 -Value at 7f40452152c8 is 1 -Value at 7f40452152c9 is 1 -Value at 7f40452152ca is 1 -Value at 7f40452152cb is 1 -Value at 7f40452152cc is 1 -Value at 7f40452152cd is 1 -Value at 7f40452152ce is 1 -Value at 7f40452152cf is 1 -Value at 7f40452152d0 is 1 -Value at 7f40452152d1 is 1 -Value at 7f40452152d2 is 1 -Value at 7f40452152d3 is 1 -Value at 7f40452152d4 is 1 -Value at 7f40452152d5 is 1 -Value at 7f40452152d6 is 1 -Value at 7f40452152d7 is 1 -Value at 7f40452152d8 is 1 -Value at 7f40452152d9 is 1 -Value at 7f40452152da is 1 -Value at 7f40452152db is 1 -Value at 7f40452152dc is 1 -Value at 7f40452152dd is 1 -Value at 7f40452152de is 1 -Value at 7f40452152df is 1 -Value at 7f40452152e0 is 1 -Value at 7f40452152e1 is 1 -Value at 7f40452152e2 is 1 -Value at 7f40452152e3 is 1 -Value at 7f40452152e4 is 1 -Value at 7f40452152e5 is 1 -Value at 7f40452152e6 is 1 -Value at 7f40452152e7 is 1 -Value at 7f40452152e8 is 1 -Value at 7f40452152e9 is 1 -Value at 7f40452152ea is 1 -Value at 7f40452152eb is 1 -Value at 7f40452152ec is 1 -Value at 7f40452152ed is 1 -Value at 7f40452152ee is 1 -Value at 7f40452152ef is 1 -Value at 7f40452152f0 is 1 -Value at 7f40452152f1 is 1 -Value at 7f40452152f2 is 1 -Value at 7f40452152f3 is 1 -Value at 7f40452152f4 is 1 -Value at 7f40452152f5 is 1 -Value at 7f40452152f6 is 1 -Value at 7f40452152f7 is 1 -Value at 7f40452152f8 is 1 -Value at 7f40452152f9 is 1 -Value at 7f40452152fa is 1 -Value at 7f40452152fb is 1 -Value at 7f40452152fc is 1 -Value at 7f40452152fd is 1 -Value at 7f40452152fe is 1 -Value at 7f40452152ff is 1 -Value at 7f4045215300 is 1 -Value at 7f4045215301 is 1 -Value at 7f4045215302 is 1 -Value at 7f4045215303 is 1 -Value at 7f4045215304 is 1 -Value at 7f4045215305 is 1 -Value at 7f4045215306 is 1 -Value at 7f4045215307 is 1 -Value at 7f4045215308 is 1 -Value at 7f4045215309 is 1 -Value at 7f404521530a is 1 -Value at 7f404521530b is 1 -Value at 7f404521530c is 1 -Value at 7f404521530d is 1 -Value at 7f404521530e is 1 -Value at 7f404521530f is 1 -Value at 7f4045215310 is 1 -Value at 7f4045215311 is 1 -Value at 7f4045215312 is 1 -Value at 7f4045215313 is 1 -Value at 7f4045215314 is 1 -Value at 7f4045215315 is 1 -Value at 7f4045215316 is 1 -Value at 7f4045215317 is 1 -Value at 7f4045215318 is 1 -Value at 7f4045215319 is 1 -Value at 7f404521531a is 1 -Value at 7f404521531b is 1 -Value at 7f404521531c is 1 -Value at 7f404521531d is 1 -Value at 7f404521531e is 1 -Value at 7f404521531f is 1 -Value at 7f4045215320 is 1 -Value at 7f4045215321 is 1 -Value at 7f4045215322 is 1 -Value at 7f4045215323 is 1 -Value at 7f4045215324 is 1 -Value at 7f4045215325 is 1 -Value at 7f4045215326 is 1 -Value at 7f4045215327 is 1 -Value at 7f4045215328 is 1 -Value at 7f4045215329 is 1 -Value at 7f404521532a is 1 -Value at 7f404521532b is 1 -Value at 7f404521532c is 1 -Value at 7f404521532d is 1 -Value at 7f404521532e is 1 -Value at 7f404521532f is 1 -Value at 7f4045215330 is 1 -Value at 7f4045215331 is 1 -Value at 7f4045215332 is 1 -Value at 7f4045215333 is 1 -Value at 7f4045215334 is 1 -Value at 7f4045215335 is 1 -Value at 7f4045215336 is 1 -Value at 7f4045215337 is 1 -Value at 7f4045215338 is 1 -Value at 7f4045215339 is 1 -Value at 7f404521533a is 1 -Value at 7f404521533b is 1 -Value at 7f404521533c is 1 -Value at 7f404521533d is 1 -Value at 7f404521533e is 1 -Value at 7f404521533f is 1 -Value at 7f4045215340 is 1 -Value at 7f4045215341 is 1 -Value at 7f4045215342 is 1 -Value at 7f4045215343 is 1 -Value at 7f4045215344 is 1 -Value at 7f4045215345 is 1 -Value at 7f4045215346 is 1 -Value at 7f4045215347 is 1 -Value at 7f4045215348 is 1 -Value at 7f4045215349 is 1 -Value at 7f404521534a is 1 -Value at 7f404521534b is 1 -Value at 7f404521534c is 1 -Value at 7f404521534d is 1 -Value at 7f404521534e is 1 -Value at 7f404521534f is 1 -Value at 7f4045215350 is 1 -Value at 7f4045215351 is 1 -Value at 7f4045215352 is 1 -Value at 7f4045215353 is 1 -Value at 7f4045215354 is 1 -Value at 7f4045215355 is 1 -Value at 7f4045215356 is 1 -Value at 7f4045215357 is 1 -Value at 7f4045215358 is 1 -Value at 7f4045215359 is 1 -Value at 7f404521535a is 1 -Value at 7f404521535b is 1 -Value at 7f404521535c is 1 -Value at 7f404521535d is 1 -Value at 7f404521535e is 1 -Value at 7f404521535f is 1 -Value at 7f4045215360 is 1 -Value at 7f4045215361 is 1 -Value at 7f4045215362 is 1 -Value at 7f4045215363 is 1 -Value at 7f4045215364 is 1 -Value at 7f4045215365 is 1 -Value at 7f4045215366 is 1 -Value at 7f4045215367 is 1 -Value at 7f4045215368 is 1 -Value at 7f4045215369 is 1 -Value at 7f404521536a is 1 -Value at 7f404521536b is 1 -Value at 7f404521536c is 1 -Value at 7f404521536d is 1 -Value at 7f404521536e is 1 -Value at 7f404521536f is 1 -Value at 7f4045215370 is 1 -Value at 7f4045215371 is 1 -Value at 7f4045215372 is 1 -Value at 7f4045215373 is 1 -Value at 7f4045215374 is 1 -Value at 7f4045215375 is 1 -Value at 7f4045215376 is 1 -Value at 7f4045215377 is 1 -Value at 7f4045215378 is 1 -Value at 7f4045215379 is 1 -Value at 7f404521537a is 1 -Value at 7f404521537b is 1 -Value at 7f404521537c is 1 -Value at 7f404521537d is 1 -Value at 7f404521537e is 1 -Value at 7f404521537f is 1 -Value at 7f4045215380 is 1 -Value at 7f4045215381 is 1 -Value at 7f4045215382 is 1 -Value at 7f4045215383 is 1 -Value at 7f4045215384 is 1 -Value at 7f4045215385 is 1 -Value at 7f4045215386 is 1 -Value at 7f4045215387 is 1 -Value at 7f4045215388 is 1 -Value at 7f4045215389 is 1 -Value at 7f404521538a is 1 -Value at 7f404521538b is 1 -Value at 7f404521538c is 1 -Value at 7f404521538d is 1 -Value at 7f404521538e is 1 -Value at 7f404521538f is 1 -Value at 7f4045215390 is 1 -Value at 7f4045215391 is 1 -Value at 7f4045215392 is 1 -Value at 7f4045215393 is 1 -Value at 7f4045215394 is 1 -Value at 7f4045215395 is 1 -Value at 7f4045215396 is 1 -Value at 7f4045215397 is 1 -Value at 7f4045215398 is 1 -Value at 7f4045215399 is 1 -Value at 7f404521539a is 1 -Value at 7f404521539b is 1 -Value at 7f404521539c is 1 -Value at 7f404521539d is 1 -Value at 7f404521539e is 1 -Value at 7f404521539f is 1 -Value at 7f40452153a0 is 1 -Value at 7f40452153a1 is 1 -Value at 7f40452153a2 is 1 -Value at 7f40452153a3 is 1 -Value at 7f40452153a4 is 1 -Value at 7f40452153a5 is 1 -Value at 7f40452153a6 is 1 -Value at 7f40452153a7 is 1 -Value at 7f40452153a8 is 1 -Value at 7f40452153a9 is 1 -Value at 7f40452153aa is 1 -Value at 7f40452153ab is 1 -Value at 7f40452153ac is 1 -Value at 7f40452153ad is 1 -Value at 7f40452153ae is 1 -Value at 7f40452153af is 1 -Value at 7f40452153b0 is 1 -Value at 7f40452153b1 is 1 -Value at 7f40452153b2 is 1 -Value at 7f40452153b3 is 1 -Value at 7f40452153b4 is 1 -Value at 7f40452153b5 is 1 -Value at 7f40452153b6 is 1 -Value at 7f40452153b7 is 1 -Value at 7f40452153b8 is 1 -Value at 7f40452153b9 is 1 -Value at 7f40452153ba is 1 -Value at 7f40452153bb is 1 -Value at 7f40452153bc is 1 -Value at 7f40452153bd is 1 -Value at 7f40452153be is 1 -Value at 7f40452153bf is 1 -Value at 7f40452153c0 is 1 -Value at 7f40452153c1 is 1 -Value at 7f40452153c2 is 1 -Value at 7f40452153c3 is 1 -Value at 7f40452153c4 is 1 -Value at 7f40452153c5 is 1 -Value at 7f40452153c6 is 1 -Value at 7f40452153c7 is 1 -Value at 7f40452153c8 is 1 -Value at 7f40452153c9 is 1 -Value at 7f40452153ca is 1 -Value at 7f40452153cb is 1 -Value at 7f40452153cc is 1 -Value at 7f40452153cd is 1 -Value at 7f40452153ce is 1 -Value at 7f40452153cf is 1 -Value at 7f40452153d0 is 1 -Value at 7f40452153d1 is 1 -Value at 7f40452153d2 is 1 -Value at 7f40452153d3 is 1 -Value at 7f40452153d4 is 1 -Value at 7f40452153d5 is 1 -Value at 7f40452153d6 is 1 -Value at 7f40452153d7 is 1 -Value at 7f40452153d8 is 1 -Value at 7f40452153d9 is 1 -Value at 7f40452153da is 1 -Value at 7f40452153db is 1 -Value at 7f40452153dc is 1 -Value at 7f40452153dd is 1 -Value at 7f40452153de is 1 -Value at 7f40452153df is 1 -Value at 7f40452153e0 is 1 -Value at 7f40452153e1 is 1 -Value at 7f40452153e2 is 1 -Value at 7f40452153e3 is 1 -Value at 7f40452153e4 is 1 -Value at 7f40452153e5 is 1 -Value at 7f40452153e6 is 1 -Value at 7f40452153e7 is 1 -Value at 7f40452153e8 is 1 -Value at 7f40452153e9 is 1 -Value at 7f40452153ea is 1 -Value at 7f40452153eb is 1 -Value at 7f40452153ec is 1 -Value at 7f40452153ed is 1 -Value at 7f40452153ee is 1 -Value at 7f40452153ef is 1 -Value at 7f40452153f0 is 1 -Value at 7f40452153f1 is 1 -Value at 7f40452153f2 is 1 -Value at 7f40452153f3 is 1 -Value at 7f40452153f4 is 1 -Value at 7f40452153f5 is 1 -Value at 7f40452153f6 is 1 -Value at 7f40452153f7 is 1 -Value at 7f40452153f8 is 1 -Value at 7f40452153f9 is 1 -Value at 7f40452153fa is 1 -Value at 7f40452153fb is 1 -Value at 7f40452153fc is 1 -Value at 7f40452153fd is 1 -Value at 7f40452153fe is 1 -Value at 7f40452153ff is 1 -Value at 7f4045215400 is 1 -Value at 7f4045215401 is 1 -Value at 7f4045215402 is 1 -Value at 7f4045215403 is 1 -Value at 7f4045215404 is 1 -Value at 7f4045215405 is 1 -Value at 7f4045215406 is 1 -Value at 7f4045215407 is 1 -Value at 7f4045215408 is 1 -Value at 7f4045215409 is 1 -Value at 7f404521540a is 1 -Value at 7f404521540b is 1 -Value at 7f404521540c is 1 -Value at 7f404521540d is 1 -Value at 7f404521540e is 1 -Value at 7f404521540f is 1 -Value at 7f4045215410 is 1 -Value at 7f4045215411 is 1 -Value at 7f4045215412 is 1 -Value at 7f4045215413 is 1 -Value at 7f4045215414 is 1 -Value at 7f4045215415 is 1 -Value at 7f4045215416 is 1 -Value at 7f4045215417 is 1 -Value at 7f4045215418 is 1 -Value at 7f4045215419 is 1 -Value at 7f404521541a is 1 -Value at 7f404521541b is 1 -Value at 7f404521541c is 1 -Value at 7f404521541d is 1 -Value at 7f404521541e is 1 -Value at 7f404521541f is 1 -Value at 7f4045215420 is 1 -Value at 7f4045215421 is 1 -Value at 7f4045215422 is 1 -Value at 7f4045215423 is 1 -Value at 7f4045215424 is 1 -Value at 7f4045215425 is 1 -Value at 7f4045215426 is 1 -Value at 7f4045215427 is 1 -Value at 7f4045215428 is 1 -Value at 7f4045215429 is 1 -Value at 7f404521542a is 1 -Value at 7f404521542b is 1 -Value at 7f404521542c is 1 -Value at 7f404521542d is 1 -Value at 7f404521542e is 1 -Value at 7f404521542f is 1 -Value at 7f4045215430 is 1 -Value at 7f4045215431 is 1 -Value at 7f4045215432 is 1 -Value at 7f4045215433 is 1 -Value at 7f4045215434 is 1 -Value at 7f4045215435 is 1 -Value at 7f4045215436 is 1 -Value at 7f4045215437 is 1 -Value at 7f4045215438 is 1 -Value at 7f4045215439 is 1 -Value at 7f404521543a is 1 -Value at 7f404521543b is 1 -Value at 7f404521543c is 1 -Value at 7f404521543d is 1 -Value at 7f404521543e is 1 -Value at 7f404521543f is 1 -Value at 7f4045215440 is 1 -Value at 7f4045215441 is 1 -Value at 7f4045215442 is 1 -Value at 7f4045215443 is 1 -Value at 7f4045215444 is 1 -Value at 7f4045215445 is 1 -Value at 7f4045215446 is 1 -Value at 7f4045215447 is 1 -Value at 7f4045215448 is 1 -Value at 7f4045215449 is 1 -Value at 7f404521544a is 1 -Value at 7f404521544b is 1 -Value at 7f404521544c is 1 -Value at 7f404521544d is 1 -Value at 7f404521544e is 1 -Value at 7f404521544f is 1 -Value at 7f4045215450 is 1 -Value at 7f4045215451 is 1 -Value at 7f4045215452 is 1 -Value at 7f4045215453 is 1 -Value at 7f4045215454 is 1 -Value at 7f4045215455 is 1 -Value at 7f4045215456 is 1 -Value at 7f4045215457 is 1 -Value at 7f4045215458 is 1 -Value at 7f4045215459 is 1 -Value at 7f404521545a is 1 -Value at 7f404521545b is 1 -Value at 7f404521545c is 1 -Value at 7f404521545d is 1 -Value at 7f404521545e is 1 -Value at 7f404521545f is 1 -Value at 7f4045215460 is 1 -Value at 7f4045215461 is 1 -Value at 7f4045215462 is 1 -Value at 7f4045215463 is 1 -Value at 7f4045215464 is 1 -Value at 7f4045215465 is 1 -Value at 7f4045215466 is 1 -Value at 7f4045215467 is 1 -Value at 7f4045215468 is 1 -Value at 7f4045215469 is 1 -Value at 7f404521546a is 1 -Value at 7f404521546b is 1 -Value at 7f404521546c is 1 -Value at 7f404521546d is 1 -Value at 7f404521546e is 1 -Value at 7f404521546f is 1 -Value at 7f4045215470 is 1 -Value at 7f4045215471 is 1 -Value at 7f4045215472 is 1 -Value at 7f4045215473 is 1 -Value at 7f4045215474 is 1 -Value at 7f4045215475 is 1 -Value at 7f4045215476 is 1 -Value at 7f4045215477 is 1 -Value at 7f4045215478 is 1 -Value at 7f4045215479 is 1 -Value at 7f404521547a is 1 -Value at 7f404521547b is 1 -Value at 7f404521547c is 1 -Value at 7f404521547d is 1 -Value at 7f404521547e is 1 -Value at 7f404521547f is 1 -Value at 7f4045215480 is 1 -Value at 7f4045215481 is 1 -Value at 7f4045215482 is 1 -Value at 7f4045215483 is 1 -Value at 7f4045215484 is 1 -Value at 7f4045215485 is 1 -Value at 7f4045215486 is 1 -Value at 7f4045215487 is 1 -Value at 7f4045215488 is 1 -Value at 7f4045215489 is 1 -Value at 7f404521548a is 1 -Value at 7f404521548b is 1 -Value at 7f404521548c is 1 -Value at 7f404521548d is 1 -Value at 7f404521548e is 1 -Value at 7f404521548f is 1 -Value at 7f4045215490 is 1 -Value at 7f4045215491 is 1 -Value at 7f4045215492 is 1 -Value at 7f4045215493 is 1 -Value at 7f4045215494 is 1 -Value at 7f4045215495 is 1 -Value at 7f4045215496 is 1 -Value at 7f4045215497 is 1 -Value at 7f4045215498 is 1 -Value at 7f4045215499 is 1 -Value at 7f404521549a is 1 -Value at 7f404521549b is 1 -Value at 7f404521549c is 1 -Value at 7f404521549d is 1 -Value at 7f404521549e is 1 -Value at 7f404521549f is 1 -Value at 7f40452154a0 is 1 -Value at 7f40452154a1 is 1 -Value at 7f40452154a2 is 1 -Value at 7f40452154a3 is 1 -Value at 7f40452154a4 is 1 -Value at 7f40452154a5 is 1 -Value at 7f40452154a6 is 1 -Value at 7f40452154a7 is 1 -Value at 7f40452154a8 is 1 -Value at 7f40452154a9 is 1 -Value at 7f40452154aa is 1 -Value at 7f40452154ab is 1 -Value at 7f40452154ac is 1 -Value at 7f40452154ad is 1 -Value at 7f40452154ae is 1 -Value at 7f40452154af is 1 -Value at 7f40452154b0 is 1 -Value at 7f40452154b1 is 1 -Value at 7f40452154b2 is 1 -Value at 7f40452154b3 is 1 -Value at 7f40452154b4 is 1 -Value at 7f40452154b5 is 1 -Value at 7f40452154b6 is 1 -Value at 7f40452154b7 is 1 -Value at 7f40452154b8 is 1 -Value at 7f40452154b9 is 1 -Value at 7f40452154ba is 1 -Value at 7f40452154bb is 1 -Value at 7f40452154bc is 1 -Value at 7f40452154bd is 1 -Value at 7f40452154be is 1 -Value at 7f40452154bf is 1 -Value at 7f40452154c0 is 1 -Value at 7f40452154c1 is 1 -Value at 7f40452154c2 is 1 -Value at 7f40452154c3 is 1 -Value at 7f40452154c4 is 1 -Value at 7f40452154c5 is 1 -Value at 7f40452154c6 is 1 -Value at 7f40452154c7 is 1 -Value at 7f40452154c8 is 1 -Value at 7f40452154c9 is 1 -Value at 7f40452154ca is 1 -Value at 7f40452154cb is 1 -Value at 7f40452154cc is 1 -Value at 7f40452154cd is 1 -Value at 7f40452154ce is 1 -Value at 7f40452154cf is 1 -Value at 7f40452154d0 is 1 -Value at 7f40452154d1 is 1 -Value at 7f40452154d2 is 1 -Value at 7f40452154d3 is 1 -Value at 7f40452154d4 is 1 -Value at 7f40452154d5 is 1 -Value at 7f40452154d6 is 1 -Value at 7f40452154d7 is 1 -Value at 7f40452154d8 is 1 -Value at 7f40452154d9 is 1 -Value at 7f40452154da is 1 -Value at 7f40452154db is 1 -Value at 7f40452154dc is 1 -Value at 7f40452154dd is 1 -Value at 7f40452154de is 1 -Value at 7f40452154df is 1 -Value at 7f40452154e0 is 1 -Value at 7f40452154e1 is 1 -Value at 7f40452154e2 is 1 -Value at 7f40452154e3 is 1 -Value at 7f40452154e4 is 1 -Value at 7f40452154e5 is 1 -Value at 7f40452154e6 is 1 -Value at 7f40452154e7 is 1 -Value at 7f40452154e8 is 1 -Value at 7f40452154e9 is 1 -Value at 7f40452154ea is 1 -Value at 7f40452154eb is 1 -Value at 7f40452154ec is 1 -Value at 7f40452154ed is 1 -Value at 7f40452154ee is 1 -Value at 7f40452154ef is 1 -Value at 7f40452154f0 is 1 -Value at 7f40452154f1 is 1 -Value at 7f40452154f2 is 1 -Value at 7f40452154f3 is 1 -Value at 7f40452154f4 is 1 -Value at 7f40452154f5 is 1 -Value at 7f40452154f6 is 1 -Value at 7f40452154f7 is 1 -Value at 7f40452154f8 is 1 -Value at 7f40452154f9 is 1 -Value at 7f40452154fa is 1 -Value at 7f40452154fb is 1 -Value at 7f40452154fc is 1 -Value at 7f40452154fd is 1 -Value at 7f40452154fe is 1 -Value at 7f40452154ff is 1 -Value at 7f4045215500 is 1 -Value at 7f4045215501 is 1 -Value at 7f4045215502 is 1 -Value at 7f4045215503 is 1 -Value at 7f4045215504 is 1 -Value at 7f4045215505 is 1 -Value at 7f4045215506 is 1 -Value at 7f4045215507 is 1 -Value at 7f4045215508 is 1 -Value at 7f4045215509 is 1 -Value at 7f404521550a is 1 -Value at 7f404521550b is 1 -Value at 7f404521550c is 1 -Value at 7f404521550d is 1 -Value at 7f404521550e is 1 -Value at 7f404521550f is 1 -Value at 7f4045215510 is 1 -Value at 7f4045215511 is 1 -Value at 7f4045215512 is 1 -Value at 7f4045215513 is 1 -Value at 7f4045215514 is 1 -Value at 7f4045215515 is 1 -Value at 7f4045215516 is 1 -Value at 7f4045215517 is 1 -Value at 7f4045215518 is 1 -Value at 7f4045215519 is 1 -Value at 7f404521551a is 1 -Value at 7f404521551b is 1 -Value at 7f404521551c is 1 -Value at 7f404521551d is 1 -Value at 7f404521551e is 1 -Value at 7f404521551f is 1 -Value at 7f4045215520 is 1 -Value at 7f4045215521 is 1 -Value at 7f4045215522 is 1 -Value at 7f4045215523 is 1 -Value at 7f4045215524 is 1 -Value at 7f4045215525 is 1 -Value at 7f4045215526 is 1 -Value at 7f4045215527 is 1 -Value at 7f4045215528 is 1 -Value at 7f4045215529 is 1 -Value at 7f404521552a is 1 -Value at 7f404521552b is 1 -Value at 7f404521552c is 1 -Value at 7f404521552d is 1 -Value at 7f404521552e is 1 -Value at 7f404521552f is 1 -Value at 7f4045215530 is 1 -Value at 7f4045215531 is 1 -Value at 7f4045215532 is 1 -Value at 7f4045215533 is 1 -Value at 7f4045215534 is 1 -Value at 7f4045215535 is 1 -Value at 7f4045215536 is 1 -Value at 7f4045215537 is 1 -Value at 7f4045215538 is 1 -Value at 7f4045215539 is 1 -Value at 7f404521553a is 1 -Value at 7f404521553b is 1 -Value at 7f404521553c is 1 -Value at 7f404521553d is 1 -Value at 7f404521553e is 1 -Value at 7f404521553f is 1 -Value at 7f4045215540 is 1 -Value at 7f4045215541 is 1 -Value at 7f4045215542 is 1 -Value at 7f4045215543 is 1 -Value at 7f4045215544 is 1 -Value at 7f4045215545 is 1 -Value at 7f4045215546 is 1 -Value at 7f4045215547 is 1 -Value at 7f4045215548 is 1 -Value at 7f4045215549 is 1 -Value at 7f404521554a is 1 -Value at 7f404521554b is 1 -Value at 7f404521554c is 1 -Value at 7f404521554d is 1 -Value at 7f404521554e is 1 -Value at 7f404521554f is 1 -Value at 7f4045215550 is 1 -Value at 7f4045215551 is 1 -Value at 7f4045215552 is 1 -Value at 7f4045215553 is 1 -Value at 7f4045215554 is 1 -Value at 7f4045215555 is 1 -Value at 7f4045215556 is 1 -Value at 7f4045215557 is 1 -Value at 7f4045215558 is 1 -Value at 7f4045215559 is 1 -Value at 7f404521555a is 1 -Value at 7f404521555b is 1 -Value at 7f404521555c is 1 -Value at 7f404521555d is 1 -Value at 7f404521555e is 1 -Value at 7f404521555f is 1 -Value at 7f4045215560 is 1 -Value at 7f4045215561 is 1 -Value at 7f4045215562 is 1 -Value at 7f4045215563 is 1 -Value at 7f4045215564 is 1 -Value at 7f4045215565 is 1 -Value at 7f4045215566 is 1 -Value at 7f4045215567 is 1 -Value at 7f4045215568 is 1 -Value at 7f4045215569 is 1 -Value at 7f404521556a is 1 -Value at 7f404521556b is 1 -Value at 7f404521556c is 1 -Value at 7f404521556d is 1 -Value at 7f404521556e is 1 -Value at 7f404521556f is 1 -Value at 7f4045215570 is 1 -Value at 7f4045215571 is 1 -Value at 7f4045215572 is 1 -Value at 7f4045215573 is 1 -Value at 7f4045215574 is 1 -Value at 7f4045215575 is 1 -Value at 7f4045215576 is 1 -Value at 7f4045215577 is 1 -Value at 7f4045215578 is 1 -Value at 7f4045215579 is 1 -Value at 7f404521557a is 1 -Value at 7f404521557b is 1 -Value at 7f404521557c is 1 -Value at 7f404521557d is 1 -Value at 7f404521557e is 1 -Value at 7f404521557f is 1 -Value at 7f4045215580 is 1 -Value at 7f4045215581 is 1 -Value at 7f4045215582 is 1 -Value at 7f4045215583 is 1 -Value at 7f4045215584 is 1 -Value at 7f4045215585 is 1 -Value at 7f4045215586 is 1 -Value at 7f4045215587 is 1 -Value at 7f4045215588 is 1 -Value at 7f4045215589 is 1 -Value at 7f404521558a is 1 -Value at 7f404521558b is 1 -Value at 7f404521558c is 1 -Value at 7f404521558d is 1 -Value at 7f404521558e is 1 -Value at 7f404521558f is 1 -Value at 7f4045215590 is 1 -Value at 7f4045215591 is 1 -Value at 7f4045215592 is 1 -Value at 7f4045215593 is 1 -Value at 7f4045215594 is 1 -Value at 7f4045215595 is 1 -Value at 7f4045215596 is 1 -Value at 7f4045215597 is 1 -Value at 7f4045215598 is 1 -Value at 7f4045215599 is 1 -Value at 7f404521559a is 1 -Value at 7f404521559b is 1 -Value at 7f404521559c is 1 -Value at 7f404521559d is 1 -Value at 7f404521559e is 1 -Value at 7f404521559f is 1 -Value at 7f40452155a0 is 1 -Value at 7f40452155a1 is 1 -Value at 7f40452155a2 is 1 -Value at 7f40452155a3 is 1 -Value at 7f40452155a4 is 1 -Value at 7f40452155a5 is 1 -Value at 7f40452155a6 is 1 -Value at 7f40452155a7 is 1 -Value at 7f40452155a8 is 1 -Value at 7f40452155a9 is 1 -Value at 7f40452155aa is 1 -Value at 7f40452155ab is 1 -Value at 7f40452155ac is 1 -Value at 7f40452155ad is 1 -Value at 7f40452155ae is 1 -Value at 7f40452155af is 1 -Value at 7f40452155b0 is 1 -Value at 7f40452155b1 is 1 -Value at 7f40452155b2 is 1 -Value at 7f40452155b3 is 1 -Value at 7f40452155b4 is 1 -Value at 7f40452155b5 is 1 -Value at 7f40452155b6 is 1 -Value at 7f40452155b7 is 1 -Value at 7f40452155b8 is 1 -Value at 7f40452155b9 is 1 -Value at 7f40452155ba is 1 -Value at 7f40452155bb is 1 -Value at 7f40452155bc is 1 -Value at 7f40452155bd is 1 -Value at 7f40452155be is 1 -Value at 7f40452155bf is 1 -Value at 7f40452155c0 is 1 -Value at 7f40452155c1 is 1 -Value at 7f40452155c2 is 1 -Value at 7f40452155c3 is 1 -Value at 7f40452155c4 is 1 -Value at 7f40452155c5 is 1 -Value at 7f40452155c6 is 1 -Value at 7f40452155c7 is 1 -Value at 7f40452155c8 is 1 -Value at 7f40452155c9 is 1 -Value at 7f40452155ca is 1 -Value at 7f40452155cb is 1 -Value at 7f40452155cc is 1 -Value at 7f40452155cd is 1 -Value at 7f40452155ce is 1 -Value at 7f40452155cf is 1 -Value at 7f40452155d0 is 1 -Value at 7f40452155d1 is 1 -Value at 7f40452155d2 is 1 -Value at 7f40452155d3 is 1 -Value at 7f40452155d4 is 1 -Value at 7f40452155d5 is 1 -Value at 7f40452155d6 is 1 -Value at 7f40452155d7 is 1 -Value at 7f40452155d8 is 1 -Value at 7f40452155d9 is 1 -Value at 7f40452155da is 1 -Value at 7f40452155db is 1 -Value at 7f40452155dc is 1 -Value at 7f40452155dd is 1 -Value at 7f40452155de is 1 -Value at 7f40452155df is 1 -Value at 7f40452155e0 is 1 -Value at 7f40452155e1 is 1 -Value at 7f40452155e2 is 1 -Value at 7f40452155e3 is 1 -Value at 7f40452155e4 is 1 -Value at 7f40452155e5 is 1 -Value at 7f40452155e6 is 1 -Value at 7f40452155e7 is 1 -Value at 7f40452155e8 is 1 -Value at 7f40452155e9 is 1 -Value at 7f40452155ea is 1 -Value at 7f40452155eb is 1 -Value at 7f40452155ec is 1 -Value at 7f40452155ed is 1 -Value at 7f40452155ee is 1 -Value at 7f40452155ef is 1 -Value at 7f40452155f0 is 1 -Value at 7f40452155f1 is 1 -Value at 7f40452155f2 is 1 -Value at 7f40452155f3 is 1 -Value at 7f40452155f4 is 1 -Value at 7f40452155f5 is 1 -Value at 7f40452155f6 is 1 -Value at 7f40452155f7 is 1 -Value at 7f40452155f8 is 1 -Value at 7f40452155f9 is 1 -Value at 7f40452155fa is 1 -Value at 7f40452155fb is 1 -Value at 7f40452155fc is 1 -Value at 7f40452155fd is 1 -Value at 7f40452155fe is 1 -Value at 7f40452155ff is 1 -Value at 7f4045215600 is 1 -Value at 7f4045215601 is 1 -Value at 7f4045215602 is 1 -Value at 7f4045215603 is 1 -Value at 7f4045215604 is 1 -Value at 7f4045215605 is 1 -Value at 7f4045215606 is 1 -Value at 7f4045215607 is 1 -Value at 7f4045215608 is 1 -Value at 7f4045215609 is 1 -Value at 7f404521560a is 1 -Value at 7f404521560b is 1 -Value at 7f404521560c is 1 -Value at 7f404521560d is 1 -Value at 7f404521560e is 1 -Value at 7f404521560f is 1 -Value at 7f4045215610 is 1 -Value at 7f4045215611 is 1 -Value at 7f4045215612 is 1 -Value at 7f4045215613 is 1 -Value at 7f4045215614 is 1 -Value at 7f4045215615 is 1 -Value at 7f4045215616 is 1 -Value at 7f4045215617 is 1 -Value at 7f4045215618 is 1 -Value at 7f4045215619 is 1 -Value at 7f404521561a is 1 -Value at 7f404521561b is 1 -Value at 7f404521561c is 1 -Value at 7f404521561d is 1 -Value at 7f404521561e is 1 -Value at 7f404521561f is 1 -Value at 7f4045215620 is 1 -Value at 7f4045215621 is 1 -Value at 7f4045215622 is 1 -Value at 7f4045215623 is 1 -Value at 7f4045215624 is 1 -Value at 7f4045215625 is 1 -Value at 7f4045215626 is 1 -Value at 7f4045215627 is 1 -Value at 7f4045215628 is 1 -Value at 7f4045215629 is 1 -Value at 7f404521562a is 1 -Value at 7f404521562b is 1 -Value at 7f404521562c is 1 -Value at 7f404521562d is 1 -Value at 7f404521562e is 1 -Value at 7f404521562f is 1 -Value at 7f4045215630 is 1 -Value at 7f4045215631 is 1 -Value at 7f4045215632 is 1 -Value at 7f4045215633 is 1 -Value at 7f4045215634 is 1 -Value at 7f4045215635 is 1 -Value at 7f4045215636 is 1 -Value at 7f4045215637 is 1 -Value at 7f4045215638 is 1 -Value at 7f4045215639 is 1 -Value at 7f404521563a is 1 -Value at 7f404521563b is 1 -Value at 7f404521563c is 1 -Value at 7f404521563d is 1 -Value at 7f404521563e is 1 -Value at 7f404521563f is 1 -Value at 7f4045215640 is 1 -Value at 7f4045215641 is 1 -Value at 7f4045215642 is 1 -Value at 7f4045215643 is 1 -Value at 7f4045215644 is 1 -Value at 7f4045215645 is 1 -Value at 7f4045215646 is 1 -Value at 7f4045215647 is 1 -Value at 7f4045215648 is 1 -Value at 7f4045215649 is 1 -Value at 7f404521564a is 1 -Value at 7f404521564b is 1 -Value at 7f404521564c is 1 -Value at 7f404521564d is 1 -Value at 7f404521564e is 1 -Value at 7f404521564f is 1 -Value at 7f4045215650 is 1 -Value at 7f4045215651 is 1 -Value at 7f4045215652 is 1 -Value at 7f4045215653 is 1 -Value at 7f4045215654 is 1 -Value at 7f4045215655 is 1 -Value at 7f4045215656 is 1 -Value at 7f4045215657 is 1 -Value at 7f4045215658 is 1 -Value at 7f4045215659 is 1 -Value at 7f404521565a is 1 -Value at 7f404521565b is 1 -Value at 7f404521565c is 1 -Value at 7f404521565d is 1 -Value at 7f404521565e is 1 -Value at 7f404521565f is 1 -Value at 7f4045215660 is 1 -Value at 7f4045215661 is 1 -Value at 7f4045215662 is 1 -Value at 7f4045215663 is 1 -Value at 7f4045215664 is 1 -Value at 7f4045215665 is 1 -Value at 7f4045215666 is 1 -Value at 7f4045215667 is 1 -Value at 7f4045215668 is 1 -Value at 7f4045215669 is 1 -Value at 7f404521566a is 1 -Value at 7f404521566b is 1 -Value at 7f404521566c is 1 -Value at 7f404521566d is 1 -Value at 7f404521566e is 1 -Value at 7f404521566f is 1 -Value at 7f4045215670 is 1 -Value at 7f4045215671 is 1 -Value at 7f4045215672 is 1 -Value at 7f4045215673 is 1 -Value at 7f4045215674 is 1 -Value at 7f4045215675 is 1 -Value at 7f4045215676 is 1 -Value at 7f4045215677 is 1 -Value at 7f4045215678 is 1 -Value at 7f4045215679 is 1 -Value at 7f404521567a is 1 -Value at 7f404521567b is 1 -Value at 7f404521567c is 1 -Value at 7f404521567d is 1 -Value at 7f404521567e is 1 -Value at 7f404521567f is 1 -Value at 7f4045215680 is 1 -Value at 7f4045215681 is 1 -Value at 7f4045215682 is 1 -Value at 7f4045215683 is 1 -Value at 7f4045215684 is 1 -Value at 7f4045215685 is 1 -Value at 7f4045215686 is 1 -Value at 7f4045215687 is 1 -Value at 7f4045215688 is 1 -Value at 7f4045215689 is 1 -Value at 7f404521568a is 1 -Value at 7f404521568b is 1 -Value at 7f404521568c is 1 -Value at 7f404521568d is 1 -Value at 7f404521568e is 1 -Value at 7f404521568f is 1 -Value at 7f4045215690 is 1 -Value at 7f4045215691 is 1 -Value at 7f4045215692 is 1 -Value at 7f4045215693 is 1 -Value at 7f4045215694 is 1 -Value at 7f4045215695 is 1 -Value at 7f4045215696 is 1 -Value at 7f4045215697 is 1 -Value at 7f4045215698 is 1 -Value at 7f4045215699 is 1 -Value at 7f404521569a is 1 -Value at 7f404521569b is 1 -Value at 7f404521569c is 1 -Value at 7f404521569d is 1 -Value at 7f404521569e is 1 -Value at 7f404521569f is 1 -Value at 7f40452156a0 is 1 -Value at 7f40452156a1 is 1 -Value at 7f40452156a2 is 1 -Value at 7f40452156a3 is 1 -Value at 7f40452156a4 is 1 -Value at 7f40452156a5 is 1 -Value at 7f40452156a6 is 1 -Value at 7f40452156a7 is 1 -Value at 7f40452156a8 is 1 -Value at 7f40452156a9 is 1 -Value at 7f40452156aa is 1 -Value at 7f40452156ab is 1 -Value at 7f40452156ac is 1 -Value at 7f40452156ad is 1 -Value at 7f40452156ae is 1 -Value at 7f40452156af is 1 -Value at 7f40452156b0 is 1 -Value at 7f40452156b1 is 1 -Value at 7f40452156b2 is 1 -Value at 7f40452156b3 is 1 -Value at 7f40452156b4 is 1 -Value at 7f40452156b5 is 1 -Value at 7f40452156b6 is 1 -Value at 7f40452156b7 is 1 -Value at 7f40452156b8 is 1 -Value at 7f40452156b9 is 1 -Value at 7f40452156ba is 1 -Value at 7f40452156bb is 1 -Value at 7f40452156bc is 1 -Value at 7f40452156bd is 1 -Value at 7f40452156be is 1 -Value at 7f40452156bf is 1 -Value at 7f40452156c0 is 1 -Value at 7f40452156c1 is 1 -Value at 7f40452156c2 is 1 -Value at 7f40452156c3 is 1 -Value at 7f40452156c4 is 1 -Value at 7f40452156c5 is 1 -Value at 7f40452156c6 is 1 -Value at 7f40452156c7 is 1 -Value at 7f40452156c8 is 1 -Value at 7f40452156c9 is 1 -Value at 7f40452156ca is 1 -Value at 7f40452156cb is 1 -Value at 7f40452156cc is 1 -Value at 7f40452156cd is 1 -Value at 7f40452156ce is 1 -Value at 7f40452156cf is 1 -Value at 7f40452156d0 is 1 -Value at 7f40452156d1 is 1 -Value at 7f40452156d2 is 1 -Value at 7f40452156d3 is 1 -Value at 7f40452156d4 is 1 -Value at 7f40452156d5 is 1 -Value at 7f40452156d6 is 1 -Value at 7f40452156d7 is 1 -Value at 7f40452156d8 is 1 -Value at 7f40452156d9 is 1 -Value at 7f40452156da is 1 -Value at 7f40452156db is 1 -Value at 7f40452156dc is 1 -Value at 7f40452156dd is 1 -Value at 7f40452156de is 1 -Value at 7f40452156df is 1 -Value at 7f40452156e0 is 1 -Value at 7f40452156e1 is 1 -Value at 7f40452156e2 is 1 -Value at 7f40452156e3 is 1 -Value at 7f40452156e4 is 1 -Value at 7f40452156e5 is 1 -Value at 7f40452156e6 is 1 -Value at 7f40452156e7 is 1 -Value at 7f40452156e8 is 1 -Value at 7f40452156e9 is 1 -Value at 7f40452156ea is 1 -Value at 7f40452156eb is 1 -Value at 7f40452156ec is 1 -Value at 7f40452156ed is 1 -Value at 7f40452156ee is 1 -Value at 7f40452156ef is 1 -Value at 7f40452156f0 is 1 -Value at 7f40452156f1 is 1 -Value at 7f40452156f2 is 1 -Value at 7f40452156f3 is 1 -Value at 7f40452156f4 is 1 -Value at 7f40452156f5 is 1 -Value at 7f40452156f6 is 1 -Value at 7f40452156f7 is 1 -Value at 7f40452156f8 is 1 -Value at 7f40452156f9 is 1 -Value at 7f40452156fa is 1 -Value at 7f40452156fb is 1 -Value at 7f40452156fc is 1 -Value at 7f40452156fd is 1 -Value at 7f40452156fe is 1 -Value at 7f40452156ff is 1 -Value at 7f4045215700 is 1 -Value at 7f4045215701 is 1 -Value at 7f4045215702 is 1 -Value at 7f4045215703 is 1 -Value at 7f4045215704 is 1 -Value at 7f4045215705 is 1 -Value at 7f4045215706 is 1 -Value at 7f4045215707 is 1 -Value at 7f4045215708 is 1 -Value at 7f4045215709 is 1 -Value at 7f404521570a is 1 -Value at 7f404521570b is 1 -Value at 7f404521570c is 1 -Value at 7f404521570d is 1 -Value at 7f404521570e is 1 -Value at 7f404521570f is 1 -Value at 7f4045215710 is 1 -Value at 7f4045215711 is 1 -Value at 7f4045215712 is 1 -Value at 7f4045215713 is 1 -Value at 7f4045215714 is 1 -Value at 7f4045215715 is 1 -Value at 7f4045215716 is 1 -Value at 7f4045215717 is 1 -Value at 7f4045215718 is 1 -Value at 7f4045215719 is 1 -Value at 7f404521571a is 1 -Value at 7f404521571b is 1 -Value at 7f404521571c is 1 -Value at 7f404521571d is 1 -Value at 7f404521571e is 1 -Value at 7f404521571f is 1 -Value at 7f4045215720 is 1 -Value at 7f4045215721 is 1 -Value at 7f4045215722 is 1 -Value at 7f4045215723 is 1 -Value at 7f4045215724 is 1 -Value at 7f4045215725 is 1 -Value at 7f4045215726 is 1 -Value at 7f4045215727 is 1 -Value at 7f4045215728 is 1 -Value at 7f4045215729 is 1 -Value at 7f404521572a is 1 -Value at 7f404521572b is 1 -Value at 7f404521572c is 1 -Value at 7f404521572d is 1 -Value at 7f404521572e is 1 -Value at 7f404521572f is 1 -Value at 7f4045215730 is 1 -Value at 7f4045215731 is 1 -Value at 7f4045215732 is 1 -Value at 7f4045215733 is 1 -Value at 7f4045215734 is 1 -Value at 7f4045215735 is 1 -Value at 7f4045215736 is 1 -Value at 7f4045215737 is 1 -Value at 7f4045215738 is 1 -Value at 7f4045215739 is 1 -Value at 7f404521573a is 1 -Value at 7f404521573b is 1 -Value at 7f404521573c is 1 -Value at 7f404521573d is 1 -Value at 7f404521573e is 1 -Value at 7f404521573f is 1 -Value at 7f4045215740 is 1 -Value at 7f4045215741 is 1 -Value at 7f4045215742 is 1 -Value at 7f4045215743 is 1 -Value at 7f4045215744 is 1 -Value at 7f4045215745 is 1 -Value at 7f4045215746 is 1 -Value at 7f4045215747 is 1 -Value at 7f4045215748 is 1 -Value at 7f4045215749 is 1 -Value at 7f404521574a is 1 -Value at 7f404521574b is 1 -Value at 7f404521574c is 1 -Value at 7f404521574d is 1 -Value at 7f404521574e is 1 -Value at 7f404521574f is 1 -Value at 7f4045215750 is 1 -Value at 7f4045215751 is 1 -Value at 7f4045215752 is 1 -Value at 7f4045215753 is 1 -Value at 7f4045215754 is 1 -Value at 7f4045215755 is 1 -Value at 7f4045215756 is 1 -Value at 7f4045215757 is 1 -Value at 7f4045215758 is 1 -Value at 7f4045215759 is 1 -Value at 7f404521575a is 1 -Value at 7f404521575b is 1 -Value at 7f404521575c is 1 -Value at 7f404521575d is 1 -Value at 7f404521575e is 1 -Value at 7f404521575f is 1 -Value at 7f4045215760 is 1 -Value at 7f4045215761 is 1 -Value at 7f4045215762 is 1 -Value at 7f4045215763 is 1 -Value at 7f4045215764 is 1 -Value at 7f4045215765 is 1 -Value at 7f4045215766 is 1 -Value at 7f4045215767 is 1 -Value at 7f4045215768 is 1 -Value at 7f4045215769 is 1 -Value at 7f404521576a is 1 -Value at 7f404521576b is 1 -Value at 7f404521576c is 1 -Value at 7f404521576d is 1 -Value at 7f404521576e is 1 -Value at 7f404521576f is 1 -Value at 7f4045215770 is 1 -Value at 7f4045215771 is 1 -Value at 7f4045215772 is 1 -Value at 7f4045215773 is 1 -Value at 7f4045215774 is 1 -Value at 7f4045215775 is 1 -Value at 7f4045215776 is 1 -Value at 7f4045215777 is 1 -Value at 7f4045215778 is 1 -Value at 7f4045215779 is 1 -Value at 7f404521577a is 1 -Value at 7f404521577b is 1 -Value at 7f404521577c is 1 -Value at 7f404521577d is 1 -Value at 7f404521577e is 1 -Value at 7f404521577f is 1 -Value at 7f4045215780 is 1 -Value at 7f4045215781 is 1 -Value at 7f4045215782 is 1 -Value at 7f4045215783 is 1 -Value at 7f4045215784 is 1 -Value at 7f4045215785 is 1 -Value at 7f4045215786 is 1 -Value at 7f4045215787 is 1 -Value at 7f4045215788 is 1 -Value at 7f4045215789 is 1 -Value at 7f404521578a is 1 -Value at 7f404521578b is 1 -Value at 7f404521578c is 1 -Value at 7f404521578d is 1 -Value at 7f404521578e is 1 -Value at 7f404521578f is 1 -Value at 7f4045215790 is 1 -Value at 7f4045215791 is 1 -Value at 7f4045215792 is 1 -Value at 7f4045215793 is 1 -Value at 7f4045215794 is 1 -Value at 7f4045215795 is 1 -Value at 7f4045215796 is 1 -Value at 7f4045215797 is 1 -Value at 7f4045215798 is 1 -Value at 7f4045215799 is 1 -Value at 7f404521579a is 1 -Value at 7f404521579b is 1 -Value at 7f404521579c is 1 -Value at 7f404521579d is 1 -Value at 7f404521579e is 1 -Value at 7f404521579f is 1 -Value at 7f40452157a0 is 1 -Value at 7f40452157a1 is 1 -Value at 7f40452157a2 is 1 -Value at 7f40452157a3 is 1 -Value at 7f40452157a4 is 1 -Value at 7f40452157a5 is 1 -Value at 7f40452157a6 is 1 -Value at 7f40452157a7 is 1 -Value at 7f40452157a8 is 1 -Value at 7f40452157a9 is 1 -Value at 7f40452157aa is 1 -Value at 7f40452157ab is 1 -Value at 7f40452157ac is 1 -Value at 7f40452157ad is 1 -Value at 7f40452157ae is 1 -Value at 7f40452157af is 1 -Value at 7f40452157b0 is 1 -Value at 7f40452157b1 is 1 -Value at 7f40452157b2 is 1 -Value at 7f40452157b3 is 1 -Value at 7f40452157b4 is 1 -Value at 7f40452157b5 is 1 -Value at 7f40452157b6 is 1 -Value at 7f40452157b7 is 1 -Value at 7f40452157b8 is 1 -Value at 7f40452157b9 is 1 -Value at 7f40452157ba is 1 -Value at 7f40452157bb is 1 -Value at 7f40452157bc is 1 -Value at 7f40452157bd is 1 -Value at 7f40452157be is 1 -Value at 7f40452157bf is 1 -Value at 7f40452157c0 is 1 -Value at 7f40452157c1 is 1 -Value at 7f40452157c2 is 1 -Value at 7f40452157c3 is 1 -Value at 7f40452157c4 is 1 -Value at 7f40452157c5 is 1 -Value at 7f40452157c6 is 1 -Value at 7f40452157c7 is 1 -Value at 7f40452157c8 is 1 -Value at 7f40452157c9 is 1 -Value at 7f40452157ca is 1 -Value at 7f40452157cb is 1 -Value at 7f40452157cc is 1 -Value at 7f40452157cd is 1 -Value at 7f40452157ce is 1 -Value at 7f40452157cf is 1 -Value at 7f40452157d0 is 1 -Value at 7f40452157d1 is 1 -Value at 7f40452157d2 is 1 -Value at 7f40452157d3 is 1 -Value at 7f40452157d4 is 1 -Value at 7f40452157d5 is 1 -Value at 7f40452157d6 is 1 -Value at 7f40452157d7 is 1 -Value at 7f40452157d8 is 1 -Value at 7f40452157d9 is 1 -Value at 7f40452157da is 1 -Value at 7f40452157db is 1 -Value at 7f40452157dc is 1 -Value at 7f40452157dd is 1 -Value at 7f40452157de is 1 -Value at 7f40452157df is 1 -Value at 7f40452157e0 is 1 -Value at 7f40452157e1 is 1 -Value at 7f40452157e2 is 1 -Value at 7f40452157e3 is 1 -Value at 7f40452157e4 is 1 -Value at 7f40452157e5 is 1 -Value at 7f40452157e6 is 1 -Value at 7f40452157e7 is 1 -Value at 7f40452157e8 is 1 -Value at 7f40452157e9 is 1 -Value at 7f40452157ea is 1 -Value at 7f40452157eb is 1 -Value at 7f40452157ec is 1 -Value at 7f40452157ed is 1 -Value at 7f40452157ee is 1 -Value at 7f40452157ef is 1 -Value at 7f40452157f0 is 1 -Value at 7f40452157f1 is 1 -Value at 7f40452157f2 is 1 -Value at 7f40452157f3 is 1 -Value at 7f40452157f4 is 1 -Value at 7f40452157f5 is 1 -Value at 7f40452157f6 is 1 -Value at 7f40452157f7 is 1 -Value at 7f40452157f8 is 1 -Value at 7f40452157f9 is 1 -Value at 7f40452157fa is 1 -Value at 7f40452157fb is 1 -Value at 7f40452157fc is 1 -Value at 7f40452157fd is 1 -Value at 7f40452157fe is 1 -Value at 7f40452157ff is 1 -Value at 7f4045215800 is 1 -Value at 7f4045215801 is 1 -Value at 7f4045215802 is 1 -Value at 7f4045215803 is 1 -Value at 7f4045215804 is 1 -Value at 7f4045215805 is 1 -Value at 7f4045215806 is 1 -Value at 7f4045215807 is 1 -Value at 7f4045215808 is 1 -Value at 7f4045215809 is 1 -Value at 7f404521580a is 1 -Value at 7f404521580b is 1 -Value at 7f404521580c is 1 -Value at 7f404521580d is 1 -Value at 7f404521580e is 1 -Value at 7f404521580f is 1 -Value at 7f4045215810 is 1 -Value at 7f4045215811 is 1 -Value at 7f4045215812 is 1 -Value at 7f4045215813 is 1 -Value at 7f4045215814 is 1 -Value at 7f4045215815 is 1 -Value at 7f4045215816 is 1 -Value at 7f4045215817 is 1 -Value at 7f4045215818 is 1 -Value at 7f4045215819 is 1 -Value at 7f404521581a is 1 -Value at 7f404521581b is 1 -Value at 7f404521581c is 1 -Value at 7f404521581d is 1 -Value at 7f404521581e is 1 -Value at 7f404521581f is 1 -Value at 7f4045215820 is 1 -Value at 7f4045215821 is 1 -Value at 7f4045215822 is 1 -Value at 7f4045215823 is 1 -Value at 7f4045215824 is 1 -Value at 7f4045215825 is 1 -Value at 7f4045215826 is 1 -Value at 7f4045215827 is 1 -Value at 7f4045215828 is 1 -Value at 7f4045215829 is 1 -Value at 7f404521582a is 1 -Value at 7f404521582b is 1 -Value at 7f404521582c is 1 -Value at 7f404521582d is 1 -Value at 7f404521582e is 1 -Value at 7f404521582f is 1 -Value at 7f4045215830 is 1 -Value at 7f4045215831 is 1 -Value at 7f4045215832 is 1 -Value at 7f4045215833 is 1 -Value at 7f4045215834 is 1 -Value at 7f4045215835 is 1 -Value at 7f4045215836 is 1 -Value at 7f4045215837 is 1 -Value at 7f4045215838 is 1 -Value at 7f4045215839 is 1 -Value at 7f404521583a is 1 -Value at 7f404521583b is 1 -Value at 7f404521583c is 1 -Value at 7f404521583d is 1 -Value at 7f404521583e is 1 -Value at 7f404521583f is 1 -Value at 7f4045215840 is 1 -Value at 7f4045215841 is 1 -Value at 7f4045215842 is 1 -Value at 7f4045215843 is 1 -Value at 7f4045215844 is 1 -Value at 7f4045215845 is 1 -Value at 7f4045215846 is 1 -Value at 7f4045215847 is 1 -Value at 7f4045215848 is 1 -Value at 7f4045215849 is 1 -Value at 7f404521584a is 1 -Value at 7f404521584b is 1 -Value at 7f404521584c is 1 -Value at 7f404521584d is 1 -Value at 7f404521584e is 1 -Value at 7f404521584f is 1 -Value at 7f4045215850 is 1 -Value at 7f4045215851 is 1 -Value at 7f4045215852 is 1 -Value at 7f4045215853 is 1 -Value at 7f4045215854 is 1 -Value at 7f4045215855 is 1 -Value at 7f4045215856 is 1 -Value at 7f4045215857 is 1 -Value at 7f4045215858 is 1 -Value at 7f4045215859 is 1 -Value at 7f404521585a is 1 -Value at 7f404521585b is 1 -Value at 7f404521585c is 1 -Value at 7f404521585d is 1 -Value at 7f404521585e is 1 -Value at 7f404521585f is 1 -Value at 7f4045215860 is 1 -Value at 7f4045215861 is 1 -Value at 7f4045215862 is 1 -Value at 7f4045215863 is 1 -Value at 7f4045215864 is 1 -Value at 7f4045215865 is 1 -Value at 7f4045215866 is 1 -Value at 7f4045215867 is 1 -Value at 7f4045215868 is 1 -Value at 7f4045215869 is 1 -Value at 7f404521586a is 1 -Value at 7f404521586b is 1 -Value at 7f404521586c is 1 -Value at 7f404521586d is 1 -Value at 7f404521586e is 1 -Value at 7f404521586f is 1 -Value at 7f4045215870 is 1 -Value at 7f4045215871 is 1 -Value at 7f4045215872 is 1 -Value at 7f4045215873 is 1 -Value at 7f4045215874 is 1 -Value at 7f4045215875 is 1 -Value at 7f4045215876 is 1 -Value at 7f4045215877 is 1 -Value at 7f4045215878 is 1 -Value at 7f4045215879 is 1 -Value at 7f404521587a is 1 -Value at 7f404521587b is 1 -Value at 7f404521587c is 1 -Value at 7f404521587d is 1 -Value at 7f404521587e is 1 -Value at 7f404521587f is 1 -Value at 7f4045215880 is 1 -Value at 7f4045215881 is 1 -Value at 7f4045215882 is 1 -Value at 7f4045215883 is 1 -Value at 7f4045215884 is 1 -Value at 7f4045215885 is 1 -Value at 7f4045215886 is 1 -Value at 7f4045215887 is 1 -Value at 7f4045215888 is 1 -Value at 7f4045215889 is 1 -Value at 7f404521588a is 1 -Value at 7f404521588b is 1 -Value at 7f404521588c is 1 -Value at 7f404521588d is 1 -Value at 7f404521588e is 1 -Value at 7f404521588f is 1 -Value at 7f4045215890 is 1 -Value at 7f4045215891 is 1 -Value at 7f4045215892 is 1 -Value at 7f4045215893 is 1 -Value at 7f4045215894 is 1 -Value at 7f4045215895 is 1 -Value at 7f4045215896 is 1 -Value at 7f4045215897 is 1 -Value at 7f4045215898 is 1 -Value at 7f4045215899 is 1 -Value at 7f404521589a is 1 -Value at 7f404521589b is 1 -Value at 7f404521589c is 1 -Value at 7f404521589d is 1 -Value at 7f404521589e is 1 -Value at 7f404521589f is 1 -Value at 7f40452158a0 is 1 -Value at 7f40452158a1 is 1 -Value at 7f40452158a2 is 1 -Value at 7f40452158a3 is 1 -Value at 7f40452158a4 is 1 -Value at 7f40452158a5 is 1 -Value at 7f40452158a6 is 1 -Value at 7f40452158a7 is 1 -Value at 7f40452158a8 is 1 -Value at 7f40452158a9 is 1 -Value at 7f40452158aa is 1 -Value at 7f40452158ab is 1 -Value at 7f40452158ac is 1 -Value at 7f40452158ad is 1 -Value at 7f40452158ae is 1 -Value at 7f40452158af is 1 -Value at 7f40452158b0 is 1 -Value at 7f40452158b1 is 1 -Value at 7f40452158b2 is 1 -Value at 7f40452158b3 is 1 -Value at 7f40452158b4 is 1 -Value at 7f40452158b5 is 1 -Value at 7f40452158b6 is 1 -Value at 7f40452158b7 is 1 -Value at 7f40452158b8 is 1 -Value at 7f40452158b9 is 1 -Value at 7f40452158ba is 1 -Value at 7f40452158bb is 1 -Value at 7f40452158bc is 1 -Value at 7f40452158bd is 1 -Value at 7f40452158be is 1 -Value at 7f40452158bf is 1 -Value at 7f40452158c0 is 1 -Value at 7f40452158c1 is 1 -Value at 7f40452158c2 is 1 -Value at 7f40452158c3 is 1 -Value at 7f40452158c4 is 1 -Value at 7f40452158c5 is 1 -Value at 7f40452158c6 is 1 -Value at 7f40452158c7 is 1 -Value at 7f40452158c8 is 1 -Value at 7f40452158c9 is 1 -Value at 7f40452158ca is 1 -Value at 7f40452158cb is 1 -Value at 7f40452158cc is 1 -Value at 7f40452158cd is 1 -Value at 7f40452158ce is 1 -Value at 7f40452158cf is 1 -Value at 7f40452158d0 is 1 -Value at 7f40452158d1 is 1 -Value at 7f40452158d2 is 1 -Value at 7f40452158d3 is 1 -Value at 7f40452158d4 is 1 -Value at 7f40452158d5 is 1 -Value at 7f40452158d6 is 1 -Value at 7f40452158d7 is 1 -Value at 7f40452158d8 is 1 -Value at 7f40452158d9 is 1 -Value at 7f40452158da is 1 -Value at 7f40452158db is 1 -Value at 7f40452158dc is 1 -Value at 7f40452158dd is 1 -Value at 7f40452158de is 1 -Value at 7f40452158df is 1 -Value at 7f40452158e0 is 1 -Value at 7f40452158e1 is 1 -Value at 7f40452158e2 is 1 -Value at 7f40452158e3 is 1 -Value at 7f40452158e4 is 1 -Value at 7f40452158e5 is 1 -Value at 7f40452158e6 is 1 -Value at 7f40452158e7 is 1 -Value at 7f40452158e8 is 1 -Value at 7f40452158e9 is 1 -Value at 7f40452158ea is 1 -Value at 7f40452158eb is 1 -Value at 7f40452158ec is 1 -Value at 7f40452158ed is 1 -Value at 7f40452158ee is 1 -Value at 7f40452158ef is 1 -Value at 7f40452158f0 is 1 -Value at 7f40452158f1 is 1 -Value at 7f40452158f2 is 1 -Value at 7f40452158f3 is 1 -Value at 7f40452158f4 is 1 -Value at 7f40452158f5 is 1 -Value at 7f40452158f6 is 1 -Value at 7f40452158f7 is 1 -Value at 7f40452158f8 is 1 -Value at 7f40452158f9 is 1 -Value at 7f40452158fa is 1 -Value at 7f40452158fb is 1 -Value at 7f40452158fc is 1 -Value at 7f40452158fd is 1 -Value at 7f40452158fe is 1 -Value at 7f40452158ff is 1 -Value at 7f4045215900 is 1 -Value at 7f4045215901 is 1 -Value at 7f4045215902 is 1 -Value at 7f4045215903 is 1 -Value at 7f4045215904 is 1 -Value at 7f4045215905 is 1 -Value at 7f4045215906 is 1 -Value at 7f4045215907 is 1 -Value at 7f4045215908 is 1 -Value at 7f4045215909 is 1 -Value at 7f404521590a is 1 -Value at 7f404521590b is 1 -Value at 7f404521590c is 1 -Value at 7f404521590d is 1 -Value at 7f404521590e is 1 -Value at 7f404521590f is 1 -Value at 7f4045215910 is 1 -Value at 7f4045215911 is 1 -Value at 7f4045215912 is 1 -Value at 7f4045215913 is 1 -Value at 7f4045215914 is 1 -Value at 7f4045215915 is 1 -Value at 7f4045215916 is 1 -Value at 7f4045215917 is 1 -Value at 7f4045215918 is 1 -Value at 7f4045215919 is 1 -Value at 7f404521591a is 1 -Value at 7f404521591b is 1 -Value at 7f404521591c is 1 -Value at 7f404521591d is 1 -Value at 7f404521591e is 1 -Value at 7f404521591f is 1 -Value at 7f4045215920 is 1 -Value at 7f4045215921 is 1 -Value at 7f4045215922 is 1 -Value at 7f4045215923 is 1 -Value at 7f4045215924 is 1 -Value at 7f4045215925 is 1 -Value at 7f4045215926 is 1 -Value at 7f4045215927 is 1 -Value at 7f4045215928 is 1 -Value at 7f4045215929 is 1 -Value at 7f404521592a is 1 -Value at 7f404521592b is 1 -Value at 7f404521592c is 1 -Value at 7f404521592d is 1 -Value at 7f404521592e is 1 -Value at 7f404521592f is 1 -Value at 7f4045215930 is 1 -Value at 7f4045215931 is 1 -Value at 7f4045215932 is 1 -Value at 7f4045215933 is 1 -Value at 7f4045215934 is 1 -Value at 7f4045215935 is 1 -Value at 7f4045215936 is 1 -Value at 7f4045215937 is 1 -Value at 7f4045215938 is 1 -Value at 7f4045215939 is 1 -Value at 7f404521593a is 1 -Value at 7f404521593b is 1 -Value at 7f404521593c is 1 -Value at 7f404521593d is 1 -Value at 7f404521593e is 1 -Value at 7f404521593f is 1 -Value at 7f4045215940 is 1 -Value at 7f4045215941 is 1 -Value at 7f4045215942 is 1 -Value at 7f4045215943 is 1 -Value at 7f4045215944 is 1 -Value at 7f4045215945 is 1 -Value at 7f4045215946 is 1 -Value at 7f4045215947 is 1 -Value at 7f4045215948 is 1 -Value at 7f4045215949 is 1 -Value at 7f404521594a is 1 -Value at 7f404521594b is 1 -Value at 7f404521594c is 1 -Value at 7f404521594d is 1 -Value at 7f404521594e is 1 -Value at 7f404521594f is 1 -Value at 7f4045215950 is 1 -Value at 7f4045215951 is 1 -Value at 7f4045215952 is 1 -Value at 7f4045215953 is 1 -Value at 7f4045215954 is 1 -Value at 7f4045215955 is 1 -Value at 7f4045215956 is 1 -Value at 7f4045215957 is 1 -Value at 7f4045215958 is 1 -Value at 7f4045215959 is 1 -Value at 7f404521595a is 1 -Value at 7f404521595b is 1 -Value at 7f404521595c is 1 -Value at 7f404521595d is 1 -Value at 7f404521595e is 1 -Value at 7f404521595f is 1 -Value at 7f4045215960 is 1 -Value at 7f4045215961 is 1 -Value at 7f4045215962 is 1 -Value at 7f4045215963 is 1 -Value at 7f4045215964 is 1 -Value at 7f4045215965 is 1 -Value at 7f4045215966 is 1 -Value at 7f4045215967 is 1 -Value at 7f4045215968 is 1 -Value at 7f4045215969 is 1 -Value at 7f404521596a is 1 -Value at 7f404521596b is 1 -Value at 7f404521596c is 1 -Value at 7f404521596d is 1 -Value at 7f404521596e is 1 -Value at 7f404521596f is 1 -Value at 7f4045215970 is 1 -Value at 7f4045215971 is 1 -Value at 7f4045215972 is 1 -Value at 7f4045215973 is 1 -Value at 7f4045215974 is 1 -Value at 7f4045215975 is 1 -Value at 7f4045215976 is 1 -Value at 7f4045215977 is 1 -Value at 7f4045215978 is 1 -Value at 7f4045215979 is 1 -Value at 7f404521597a is 1 -Value at 7f404521597b is 1 -Value at 7f404521597c is 1 -Value at 7f404521597d is 1 -Value at 7f404521597e is 1 -Value at 7f404521597f is 1 -Value at 7f4045215980 is 1 -Value at 7f4045215981 is 1 -Value at 7f4045215982 is 1 -Value at 7f4045215983 is 1 -Value at 7f4045215984 is 1 -Value at 7f4045215985 is 1 -Value at 7f4045215986 is 1 -Value at 7f4045215987 is 1 -Value at 7f4045215988 is 1 -Value at 7f4045215989 is 1 -Value at 7f404521598a is 1 -Value at 7f404521598b is 1 -Value at 7f404521598c is 1 -Value at 7f404521598d is 1 -Value at 7f404521598e is 1 -Value at 7f404521598f is 1 -Value at 7f4045215990 is 1 -Value at 7f4045215991 is 1 -Value at 7f4045215992 is 1 -Value at 7f4045215993 is 1 -Value at 7f4045215994 is 1 -Value at 7f4045215995 is 1 -Value at 7f4045215996 is 1 -Value at 7f4045215997 is 1 -Value at 7f4045215998 is 1 -Value at 7f4045215999 is 1 -Value at 7f404521599a is 1 -Value at 7f404521599b is 1 -Value at 7f404521599c is 1 -Value at 7f404521599d is 1 -Value at 7f404521599e is 1 -Value at 7f404521599f is 1 -Value at 7f40452159a0 is 1 -Value at 7f40452159a1 is 1 -Value at 7f40452159a2 is 1 -Value at 7f40452159a3 is 1 -Value at 7f40452159a4 is 1 -Value at 7f40452159a5 is 1 -Value at 7f40452159a6 is 1 -Value at 7f40452159a7 is 1 -Value at 7f40452159a8 is 1 -Value at 7f40452159a9 is 1 -Value at 7f40452159aa is 1 -Value at 7f40452159ab is 1 -Value at 7f40452159ac is 1 -Value at 7f40452159ad is 1 -Value at 7f40452159ae is 1 -Value at 7f40452159af is 1 -Value at 7f40452159b0 is 1 -Value at 7f40452159b1 is 1 -Value at 7f40452159b2 is 1 -Value at 7f40452159b3 is 1 -Value at 7f40452159b4 is 1 -Value at 7f40452159b5 is 1 -Value at 7f40452159b6 is 1 -Value at 7f40452159b7 is 1 -Value at 7f40452159b8 is 1 -Value at 7f40452159b9 is 1 -Value at 7f40452159ba is 1 -Value at 7f40452159bb is 1 -Value at 7f40452159bc is 1 -Value at 7f40452159bd is 1 -Value at 7f40452159be is 1 -Value at 7f40452159bf is 1 -Value at 7f40452159c0 is 1 -Value at 7f40452159c1 is 1 -Value at 7f40452159c2 is 1 -Value at 7f40452159c3 is 1 -Value at 7f40452159c4 is 1 -Value at 7f40452159c5 is 1 -Value at 7f40452159c6 is 1 -Value at 7f40452159c7 is 1 -Value at 7f40452159c8 is 1 -Value at 7f40452159c9 is 1 -Value at 7f40452159ca is 1 -Value at 7f40452159cb is 1 -Value at 7f40452159cc is 1 -Value at 7f40452159cd is 1 -Value at 7f40452159ce is 1 -Value at 7f40452159cf is 1 -Value at 7f40452159d0 is 1 -Value at 7f40452159d1 is 1 -Value at 7f40452159d2 is 1 -Value at 7f40452159d3 is 1 -Value at 7f40452159d4 is 1 -Value at 7f40452159d5 is 1 -Value at 7f40452159d6 is 1 -Value at 7f40452159d7 is 1 -Value at 7f40452159d8 is 1 -Value at 7f40452159d9 is 1 -Value at 7f40452159da is 1 -Value at 7f40452159db is 1 -Value at 7f40452159dc is 1 -Value at 7f40452159dd is 1 -Value at 7f40452159de is 1 -Value at 7f40452159df is 1 -Value at 7f40452159e0 is 1 -Value at 7f40452159e1 is 1 -Value at 7f40452159e2 is 1 -Value at 7f40452159e3 is 1 -Value at 7f40452159e4 is 1 -Value at 7f40452159e5 is 1 -Value at 7f40452159e6 is 1 -Value at 7f40452159e7 is 1 -Value at 7f40452159e8 is 1 -Value at 7f40452159e9 is 1 -Value at 7f40452159ea is 1 -Value at 7f40452159eb is 1 -Value at 7f40452159ec is 1 -Value at 7f40452159ed is 1 -Value at 7f40452159ee is 1 -Value at 7f40452159ef is 1 -Value at 7f40452159f0 is 1 -Value at 7f40452159f1 is 1 -Value at 7f40452159f2 is 1 -Value at 7f40452159f3 is 1 -Value at 7f40452159f4 is 1 -Value at 7f40452159f5 is 1 -Value at 7f40452159f6 is 1 -Value at 7f40452159f7 is 1 -Value at 7f40452159f8 is 1 -Value at 7f40452159f9 is 1 -Value at 7f40452159fa is 1 -Value at 7f40452159fb is 1 -Value at 7f40452159fc is 1 -Value at 7f40452159fd is 1 -Value at 7f40452159fe is 1 -Value at 7f40452159ff is 1 -Value at 7f4045215a00 is 1 -Value at 7f4045215a01 is 1 -Value at 7f4045215a02 is 1 -Value at 7f4045215a03 is 1 -Value at 7f4045215a04 is 1 -Value at 7f4045215a05 is 1 -Value at 7f4045215a06 is 1 -Value at 7f4045215a07 is 1 -Value at 7f4045215a08 is 1 -Value at 7f4045215a09 is 1 -Value at 7f4045215a0a is 1 -Value at 7f4045215a0b is 1 -Value at 7f4045215a0c is 1 -Value at 7f4045215a0d is 1 -Value at 7f4045215a0e is 1 -Value at 7f4045215a0f is 1 -Value at 7f4045215a10 is 1 -Value at 7f4045215a11 is 1 -Value at 7f4045215a12 is 1 -Value at 7f4045215a13 is 1 -Value at 7f4045215a14 is 1 -Value at 7f4045215a15 is 1 -Value at 7f4045215a16 is 1 -Value at 7f4045215a17 is 1 -Value at 7f4045215a18 is 1 -Value at 7f4045215a19 is 1 -Value at 7f4045215a1a is 1 -Value at 7f4045215a1b is 1 -Value at 7f4045215a1c is 1 -Value at 7f4045215a1d is 1 -Value at 7f4045215a1e is 1 -Value at 7f4045215a1f is 1 -Value at 7f4045215a20 is 1 -Value at 7f4045215a21 is 1 -Value at 7f4045215a22 is 1 -Value at 7f4045215a23 is 1 -Value at 7f4045215a24 is 1 -Value at 7f4045215a25 is 1 -Value at 7f4045215a26 is 1 -Value at 7f4045215a27 is 1 -Value at 7f4045215a28 is 1 -Value at 7f4045215a29 is 1 -Value at 7f4045215a2a is 1 -Value at 7f4045215a2b is 1 -Value at 7f4045215a2c is 1 -Value at 7f4045215a2d is 1 -Value at 7f4045215a2e is 1 -Value at 7f4045215a2f is 1 -Value at 7f4045215a30 is 1 -Value at 7f4045215a31 is 1 -Value at 7f4045215a32 is 1 -Value at 7f4045215a33 is 1 -Value at 7f4045215a34 is 1 -Value at 7f4045215a35 is 1 -Value at 7f4045215a36 is 1 -Value at 7f4045215a37 is 1 -Value at 7f4045215a38 is 1 -Value at 7f4045215a39 is 1 -Value at 7f4045215a3a is 1 -Value at 7f4045215a3b is 1 -Value at 7f4045215a3c is 1 -Value at 7f4045215a3d is 1 -Value at 7f4045215a3e is 1 -Value at 7f4045215a3f is 1 -Value at 7f4045215a40 is 1 -Value at 7f4045215a41 is 1 -Value at 7f4045215a42 is 1 -Value at 7f4045215a43 is 1 -Value at 7f4045215a44 is 1 -Value at 7f4045215a45 is 1 -Value at 7f4045215a46 is 1 -Value at 7f4045215a47 is 1 -Value at 7f4045215a48 is 1 -Value at 7f4045215a49 is 1 -Value at 7f4045215a4a is 1 -Value at 7f4045215a4b is 1 -Value at 7f4045215a4c is 1 -Value at 7f4045215a4d is 1 -Value at 7f4045215a4e is 1 -Value at 7f4045215a4f is 1 -Value at 7f4045215a50 is 1 -Value at 7f4045215a51 is 1 -Value at 7f4045215a52 is 1 -Value at 7f4045215a53 is 1 -Value at 7f4045215a54 is 1 -Value at 7f4045215a55 is 1 -Value at 7f4045215a56 is 1 -Value at 7f4045215a57 is 1 -Value at 7f4045215a58 is 1 -Value at 7f4045215a59 is 1 -Value at 7f4045215a5a is 1 -Value at 7f4045215a5b is 1 -Value at 7f4045215a5c is 1 -Value at 7f4045215a5d is 1 -Value at 7f4045215a5e is 1 -Value at 7f4045215a5f is 1 -Value at 7f4045215a60 is 1 -Value at 7f4045215a61 is 1 -Value at 7f4045215a62 is 1 -Value at 7f4045215a63 is 1 -Value at 7f4045215a64 is 1 -Value at 7f4045215a65 is 1 -Value at 7f4045215a66 is 1 -Value at 7f4045215a67 is 1 -Value at 7f4045215a68 is 1 -Value at 7f4045215a69 is 1 -Value at 7f4045215a6a is 1 -Value at 7f4045215a6b is 1 -Value at 7f4045215a6c is 1 -Value at 7f4045215a6d is 1 -Value at 7f4045215a6e is 1 -Value at 7f4045215a6f is 1 -Value at 7f4045215a70 is 1 -Value at 7f4045215a71 is 1 -Value at 7f4045215a72 is 1 -Value at 7f4045215a73 is 1 -Value at 7f4045215a74 is 1 -Value at 7f4045215a75 is 1 -Value at 7f4045215a76 is 1 -Value at 7f4045215a77 is 1 -Value at 7f4045215a78 is 1 -Value at 7f4045215a79 is 1 -Value at 7f4045215a7a is 1 -Value at 7f4045215a7b is 1 -Value at 7f4045215a7c is 1 -Value at 7f4045215a7d is 1 -Value at 7f4045215a7e is 1 -Value at 7f4045215a7f is 1 -Value at 7f4045215a80 is 1 -Value at 7f4045215a81 is 1 -Value at 7f4045215a82 is 1 -Value at 7f4045215a83 is 1 -Value at 7f4045215a84 is 1 -Value at 7f4045215a85 is 1 -Value at 7f4045215a86 is 1 -Value at 7f4045215a87 is 1 -Value at 7f4045215a88 is 1 -Value at 7f4045215a89 is 1 -Value at 7f4045215a8a is 1 -Value at 7f4045215a8b is 1 -Value at 7f4045215a8c is 1 -Value at 7f4045215a8d is 1 -Value at 7f4045215a8e is 1 -Value at 7f4045215a8f is 1 -Value at 7f4045215a90 is 1 -Value at 7f4045215a91 is 1 -Value at 7f4045215a92 is 1 -Value at 7f4045215a93 is 1 -Value at 7f4045215a94 is 1 -Value at 7f4045215a95 is 1 -Value at 7f4045215a96 is 1 -Value at 7f4045215a97 is 1 -Value at 7f4045215a98 is 1 -Value at 7f4045215a99 is 1 -Value at 7f4045215a9a is 1 -Value at 7f4045215a9b is 1 -Value at 7f4045215a9c is 1 -Value at 7f4045215a9d is 1 -Value at 7f4045215a9e is 1 -Value at 7f4045215a9f is 1 -Value at 7f4045215aa0 is 1 -Value at 7f4045215aa1 is 1 -Value at 7f4045215aa2 is 1 -Value at 7f4045215aa3 is 1 -Value at 7f4045215aa4 is 1 -Value at 7f4045215aa5 is 1 -Value at 7f4045215aa6 is 1 -Value at 7f4045215aa7 is 1 -Value at 7f4045215aa8 is 1 -Value at 7f4045215aa9 is 1 -Value at 7f4045215aaa is 1 -Value at 7f4045215aab is 1 -Value at 7f4045215aac is 1 -Value at 7f4045215aad is 1 -Value at 7f4045215aae is 1 -Value at 7f4045215aaf is 1 -Value at 7f4045215ab0 is 1 -Value at 7f4045215ab1 is 1 -Value at 7f4045215ab2 is 1 -Value at 7f4045215ab3 is 1 -Value at 7f4045215ab4 is 1 -Value at 7f4045215ab5 is 1 -Value at 7f4045215ab6 is 1 -Value at 7f4045215ab7 is 1 -Value at 7f4045215ab8 is 1 -Value at 7f4045215ab9 is 1 -Value at 7f4045215aba is 1 -Value at 7f4045215abb is 1 -Value at 7f4045215abc is 1 -Value at 7f4045215abd is 1 -Value at 7f4045215abe is 1 -Value at 7f4045215abf is 1 -Value at 7f4045215ac0 is 1 -Value at 7f4045215ac1 is 1 -Value at 7f4045215ac2 is 1 -Value at 7f4045215ac3 is 1 -Value at 7f4045215ac4 is 1 -Value at 7f4045215ac5 is 1 -Value at 7f4045215ac6 is 1 -Value at 7f4045215ac7 is 1 -Value at 7f4045215ac8 is 1 -Value at 7f4045215ac9 is 1 -Value at 7f4045215aca is 1 -Value at 7f4045215acb is 1 -Value at 7f4045215acc is 1 -Value at 7f4045215acd is 1 -Value at 7f4045215ace is 1 -Value at 7f4045215acf is 1 -Value at 7f4045215ad0 is 1 -Value at 7f4045215ad1 is 1 -Value at 7f4045215ad2 is 1 -Value at 7f4045215ad3 is 1 -Value at 7f4045215ad4 is 1 -Value at 7f4045215ad5 is 1 -Value at 7f4045215ad6 is 1 -Value at 7f4045215ad7 is 1 -Value at 7f4045215ad8 is 1 -Value at 7f4045215ad9 is 1 -Value at 7f4045215ada is 1 -Value at 7f4045215adb is 1 -Value at 7f4045215adc is 1 -Value at 7f4045215add is 1 -Value at 7f4045215ade is 1 -Value at 7f4045215adf is 1 -Value at 7f4045215ae0 is 1 -Value at 7f4045215ae1 is 1 -Value at 7f4045215ae2 is 1 -Value at 7f4045215ae3 is 1 -Value at 7f4045215ae4 is 1 -Value at 7f4045215ae5 is 1 -Value at 7f4045215ae6 is 1 -Value at 7f4045215ae7 is 1 -Value at 7f4045215ae8 is 1 -Value at 7f4045215ae9 is 1 -Value at 7f4045215aea is 1 -Value at 7f4045215aeb is 1 -Value at 7f4045215aec is 1 -Value at 7f4045215aed is 1 -Value at 7f4045215aee is 1 -Value at 7f4045215aef is 1 -Value at 7f4045215af0 is 1 -Value at 7f4045215af1 is 1 -Value at 7f4045215af2 is 1 -Value at 7f4045215af3 is 1 -Value at 7f4045215af4 is 1 -Value at 7f4045215af5 is 1 -Value at 7f4045215af6 is 1 -Value at 7f4045215af7 is 1 -Value at 7f4045215af8 is 1 -Value at 7f4045215af9 is 1 -Value at 7f4045215afa is 1 -Value at 7f4045215afb is 1 -Value at 7f4045215afc is 1 -Value at 7f4045215afd is 1 -Value at 7f4045215afe is 1 -Value at 7f4045215aff is 1 -Value at 7f4045215b00 is 1 -Value at 7f4045215b01 is 1 -Value at 7f4045215b02 is 1 -Value at 7f4045215b03 is 1 -Value at 7f4045215b04 is 1 -Value at 7f4045215b05 is 1 -Value at 7f4045215b06 is 1 -Value at 7f4045215b07 is 1 -Value at 7f4045215b08 is 1 -Value at 7f4045215b09 is 1 -Value at 7f4045215b0a is 1 -Value at 7f4045215b0b is 1 -Value at 7f4045215b0c is 1 -Value at 7f4045215b0d is 1 -Value at 7f4045215b0e is 1 -Value at 7f4045215b0f is 1 -Value at 7f4045215b10 is 1 -Value at 7f4045215b11 is 1 -Value at 7f4045215b12 is 1 -Value at 7f4045215b13 is 1 -Value at 7f4045215b14 is 1 -Value at 7f4045215b15 is 1 -Value at 7f4045215b16 is 1 -Value at 7f4045215b17 is 1 -Value at 7f4045215b18 is 1 -Value at 7f4045215b19 is 1 -Value at 7f4045215b1a is 1 -Value at 7f4045215b1b is 1 -Value at 7f4045215b1c is 1 -Value at 7f4045215b1d is 1 -Value at 7f4045215b1e is 1 -Value at 7f4045215b1f is 1 -Value at 7f4045215b20 is 1 -Value at 7f4045215b21 is 1 -Value at 7f4045215b22 is 1 -Value at 7f4045215b23 is 1 -Value at 7f4045215b24 is 1 -Value at 7f4045215b25 is 1 -Value at 7f4045215b26 is 1 -Value at 7f4045215b27 is 1 -Value at 7f4045215b28 is 1 -Value at 7f4045215b29 is 1 -Value at 7f4045215b2a is 1 -Value at 7f4045215b2b is 1 -Value at 7f4045215b2c is 1 -Value at 7f4045215b2d is 1 -Value at 7f4045215b2e is 1 -Value at 7f4045215b2f is 1 -Value at 7f4045215b30 is 1 -Value at 7f4045215b31 is 1 -Value at 7f4045215b32 is 1 -Value at 7f4045215b33 is 1 -Value at 7f4045215b34 is 1 -Value at 7f4045215b35 is 1 -Value at 7f4045215b36 is 1 -Value at 7f4045215b37 is 1 -Value at 7f4045215b38 is 1 -Value at 7f4045215b39 is 1 -Value at 7f4045215b3a is 1 -Value at 7f4045215b3b is 1 -Value at 7f4045215b3c is 1 -Value at 7f4045215b3d is 1 -Value at 7f4045215b3e is 1 -Value at 7f4045215b3f is 1 -Value at 7f4045215b40 is 1 -Value at 7f4045215b41 is 1 -Value at 7f4045215b42 is 1 -Value at 7f4045215b43 is 1 -Value at 7f4045215b44 is 1 -Value at 7f4045215b45 is 1 -Value at 7f4045215b46 is 1 -Value at 7f4045215b47 is 1 -Value at 7f4045215b48 is 1 -Value at 7f4045215b49 is 1 -Value at 7f4045215b4a is 1 -Value at 7f4045215b4b is 1 -Value at 7f4045215b4c is 1 -Value at 7f4045215b4d is 1 -Value at 7f4045215b4e is 1 -Value at 7f4045215b4f is 1 -Value at 7f4045215b50 is 1 -Value at 7f4045215b51 is 1 -Value at 7f4045215b52 is 1 -Value at 7f4045215b53 is 1 -Value at 7f4045215b54 is 1 -Value at 7f4045215b55 is 1 -Value at 7f4045215b56 is 1 -Value at 7f4045215b57 is 1 -Value at 7f4045215b58 is 1 -Value at 7f4045215b59 is 1 -Value at 7f4045215b5a is 1 -Value at 7f4045215b5b is 1 -Value at 7f4045215b5c is 1 -Value at 7f4045215b5d is 1 -Value at 7f4045215b5e is 1 -Value at 7f4045215b5f is 1 -Value at 7f4045215b60 is 1 -Value at 7f4045215b61 is 1 -Value at 7f4045215b62 is 1 -Value at 7f4045215b63 is 1 -Value at 7f4045215b64 is 1 -Value at 7f4045215b65 is 1 -Value at 7f4045215b66 is 1 -Value at 7f4045215b67 is 1 -Value at 7f4045215b68 is 1 -Value at 7f4045215b69 is 1 -Value at 7f4045215b6a is 1 -Value at 7f4045215b6b is 1 -Value at 7f4045215b6c is 1 -Value at 7f4045215b6d is 1 -Value at 7f4045215b6e is 1 -Value at 7f4045215b6f is 1 -Value at 7f4045215b70 is 1 -Value at 7f4045215b71 is 1 -Value at 7f4045215b72 is 1 -Value at 7f4045215b73 is 1 -Value at 7f4045215b74 is 1 -Value at 7f4045215b75 is 1 -Value at 7f4045215b76 is 1 -Value at 7f4045215b77 is 1 -Value at 7f4045215b78 is 1 -Value at 7f4045215b79 is 1 -Value at 7f4045215b7a is 1 -Value at 7f4045215b7b is 1 -Value at 7f4045215b7c is 1 -Value at 7f4045215b7d is 1 -Value at 7f4045215b7e is 1 -Value at 7f4045215b7f is 1 -Value at 7f4045215b80 is 1 -Value at 7f4045215b81 is 1 -Value at 7f4045215b82 is 1 -Value at 7f4045215b83 is 1 -Value at 7f4045215b84 is 1 -Value at 7f4045215b85 is 1 -Value at 7f4045215b86 is 1 -Value at 7f4045215b87 is 1 -Value at 7f4045215b88 is 1 -Value at 7f4045215b89 is 1 -Value at 7f4045215b8a is 1 -Value at 7f4045215b8b is 1 -Value at 7f4045215b8c is 1 -Value at 7f4045215b8d is 1 -Value at 7f4045215b8e is 1 -Value at 7f4045215b8f is 1 -Value at 7f4045215b90 is 1 -Value at 7f4045215b91 is 1 -Value at 7f4045215b92 is 1 -Value at 7f4045215b93 is 1 -Value at 7f4045215b94 is 1 -Value at 7f4045215b95 is 1 -Value at 7f4045215b96 is 1 -Value at 7f4045215b97 is 1 -Value at 7f4045215b98 is 1 -Value at 7f4045215b99 is 1 -Value at 7f4045215b9a is 1 -Value at 7f4045215b9b is 1 -Value at 7f4045215b9c is 1 -Value at 7f4045215b9d is 1 -Value at 7f4045215b9e is 1 -Value at 7f4045215b9f is 1 -Value at 7f4045215ba0 is 1 -Value at 7f4045215ba1 is 1 -Value at 7f4045215ba2 is 1 -Value at 7f4045215ba3 is 1 -Value at 7f4045215ba4 is 1 -Value at 7f4045215ba5 is 1 -Value at 7f4045215ba6 is 1 -Value at 7f4045215ba7 is 1 -Value at 7f4045215ba8 is 1 -Value at 7f4045215ba9 is 1 -Value at 7f4045215baa is 1 -Value at 7f4045215bab is 1 -Value at 7f4045215bac is 1 -Value at 7f4045215bad is 1 -Value at 7f4045215bae is 1 -Value at 7f4045215baf is 1 -Value at 7f4045215bb0 is 1 -Value at 7f4045215bb1 is 1 -Value at 7f4045215bb2 is 1 -Value at 7f4045215bb3 is 1 -Value at 7f4045215bb4 is 1 -Value at 7f4045215bb5 is 1 -Value at 7f4045215bb6 is 1 -Value at 7f4045215bb7 is 1 -Value at 7f4045215bb8 is 1 -Value at 7f4045215bb9 is 1 -Value at 7f4045215bba is 1 -Value at 7f4045215bbb is 1 -Value at 7f4045215bbc is 1 -Value at 7f4045215bbd is 1 -Value at 7f4045215bbe is 1 -Value at 7f4045215bbf is 1 -Value at 7f4045215bc0 is 1 -Value at 7f4045215bc1 is 1 -Value at 7f4045215bc2 is 1 -Value at 7f4045215bc3 is 1 -Value at 7f4045215bc4 is 1 -Value at 7f4045215bc5 is 1 -Value at 7f4045215bc6 is 1 -Value at 7f4045215bc7 is 1 -Value at 7f4045215bc8 is 1 -Value at 7f4045215bc9 is 1 -Value at 7f4045215bca is 1 -Value at 7f4045215bcb is 1 -Value at 7f4045215bcc is 1 -Value at 7f4045215bcd is 1 -Value at 7f4045215bce is 1 -Value at 7f4045215bcf is 1 -Value at 7f4045215bd0 is 1 -Value at 7f4045215bd1 is 1 -Value at 7f4045215bd2 is 1 -Value at 7f4045215bd3 is 1 -Value at 7f4045215bd4 is 1 -Value at 7f4045215bd5 is 1 -Value at 7f4045215bd6 is 1 -Value at 7f4045215bd7 is 1 -Value at 7f4045215bd8 is 1 -Value at 7f4045215bd9 is 1 -Value at 7f4045215bda is 1 -Value at 7f4045215bdb is 1 -Value at 7f4045215bdc is 1 -Value at 7f4045215bdd is 1 -Value at 7f4045215bde is 1 -Value at 7f4045215bdf is 1 -Value at 7f4045215be0 is 1 -Value at 7f4045215be1 is 1 -Value at 7f4045215be2 is 1 -Value at 7f4045215be3 is 1 -Value at 7f4045215be4 is 1 -Value at 7f4045215be5 is 1 -Value at 7f4045215be6 is 1 -Value at 7f4045215be7 is 1 -Value at 7f4045215be8 is 1 -Value at 7f4045215be9 is 1 -Value at 7f4045215bea is 1 -Value at 7f4045215beb is 1 -Value at 7f4045215bec is 1 -Value at 7f4045215bed is 1 -Value at 7f4045215bee is 1 -Value at 7f4045215bef is 1 -Value at 7f4045215bf0 is 1 -Value at 7f4045215bf1 is 1 -Value at 7f4045215bf2 is 1 -Value at 7f4045215bf3 is 1 -Value at 7f4045215bf4 is 1 -Value at 7f4045215bf5 is 1 -Value at 7f4045215bf6 is 1 -Value at 7f4045215bf7 is 1 -Value at 7f4045215bf8 is 1 -Value at 7f4045215bf9 is 1 -Value at 7f4045215bfa is 1 -Value at 7f4045215bfb is 1 -Value at 7f4045215bfc is 1 -Value at 7f4045215bfd is 1 -Value at 7f4045215bfe is 1 -Value at 7f4045215bff is 1 -Value at 7f4045215c00 is 1 -Value at 7f4045215c01 is 1 -Value at 7f4045215c02 is 1 -Value at 7f4045215c03 is 1 -Value at 7f4045215c04 is 1 -Value at 7f4045215c05 is 1 -Value at 7f4045215c06 is 1 -Value at 7f4045215c07 is 1 -Value at 7f4045215c08 is 1 -Value at 7f4045215c09 is 1 -Value at 7f4045215c0a is 1 -Value at 7f4045215c0b is 1 -Value at 7f4045215c0c is 1 -Value at 7f4045215c0d is 1 -Value at 7f4045215c0e is 1 -Value at 7f4045215c0f is 1 -Value at 7f4045215c10 is 1 -Value at 7f4045215c11 is 1 -Value at 7f4045215c12 is 1 -Value at 7f4045215c13 is 1 -Value at 7f4045215c14 is 1 -Value at 7f4045215c15 is 1 -Value at 7f4045215c16 is 1 -Value at 7f4045215c17 is 1 -Value at 7f4045215c18 is 1 -Value at 7f4045215c19 is 1 -Value at 7f4045215c1a is 1 -Value at 7f4045215c1b is 1 -Value at 7f4045215c1c is 1 -Value at 7f4045215c1d is 1 -Value at 7f4045215c1e is 1 -Value at 7f4045215c1f is 1 -Value at 7f4045215c20 is 1 -Value at 7f4045215c21 is 1 -Value at 7f4045215c22 is 1 -Value at 7f4045215c23 is 1 -Value at 7f4045215c24 is 1 -Value at 7f4045215c25 is 1 -Value at 7f4045215c26 is 1 -Value at 7f4045215c27 is 1 -Value at 7f4045215c28 is 1 -Value at 7f4045215c29 is 1 -Value at 7f4045215c2a is 1 -Value at 7f4045215c2b is 1 -Value at 7f4045215c2c is 1 -Value at 7f4045215c2d is 1 -Value at 7f4045215c2e is 1 -Value at 7f4045215c2f is 1 -Value at 7f4045215c30 is 1 -Value at 7f4045215c31 is 1 -Value at 7f4045215c32 is 1 -Value at 7f4045215c33 is 1 -Value at 7f4045215c34 is 1 -Value at 7f4045215c35 is 1 -Value at 7f4045215c36 is 1 -Value at 7f4045215c37 is 1 -Value at 7f4045215c38 is 1 -Value at 7f4045215c39 is 1 -Value at 7f4045215c3a is 1 -Value at 7f4045215c3b is 1 -Value at 7f4045215c3c is 1 -Value at 7f4045215c3d is 1 -Value at 7f4045215c3e is 1 -Value at 7f4045215c3f is 1 -Value at 7f4045215c40 is 1 -Value at 7f4045215c41 is 1 -Value at 7f4045215c42 is 1 -Value at 7f4045215c43 is 1 -Value at 7f4045215c44 is 1 -Value at 7f4045215c45 is 1 -Value at 7f4045215c46 is 1 -Value at 7f4045215c47 is 1 -Value at 7f4045215c48 is 1 -Value at 7f4045215c49 is 1 -Value at 7f4045215c4a is 1 -Value at 7f4045215c4b is 1 -Value at 7f4045215c4c is 1 -Value at 7f4045215c4d is 1 -Value at 7f4045215c4e is 1 -Value at 7f4045215c4f is 1 -Value at 7f4045215c50 is 1 -Value at 7f4045215c51 is 1 -Value at 7f4045215c52 is 1 -Value at 7f4045215c53 is 1 -Value at 7f4045215c54 is 1 -Value at 7f4045215c55 is 1 -Value at 7f4045215c56 is 1 -Value at 7f4045215c57 is 1 -Value at 7f4045215c58 is 1 -Value at 7f4045215c59 is 1 -Value at 7f4045215c5a is 1 -Value at 7f4045215c5b is 1 -Value at 7f4045215c5c is 1 -Value at 7f4045215c5d is 1 -Value at 7f4045215c5e is 1 -Value at 7f4045215c5f is 1 -Value at 7f4045215c60 is 1 -Value at 7f4045215c61 is 1 -Value at 7f4045215c62 is 1 -Value at 7f4045215c63 is 1 -Value at 7f4045215c64 is 1 -Value at 7f4045215c65 is 1 -Value at 7f4045215c66 is 1 -Value at 7f4045215c67 is 1 -Value at 7f4045215c68 is 1 -Value at 7f4045215c69 is 1 -Value at 7f4045215c6a is 1 -Value at 7f4045215c6b is 1 -Value at 7f4045215c6c is 1 -Value at 7f4045215c6d is 1 -Value at 7f4045215c6e is 1 -Value at 7f4045215c6f is 1 -Value at 7f4045215c70 is 1 -Value at 7f4045215c71 is 1 -Value at 7f4045215c72 is 1 -Value at 7f4045215c73 is 1 -Value at 7f4045215c74 is 1 -Value at 7f4045215c75 is 1 -Value at 7f4045215c76 is 1 -Value at 7f4045215c77 is 1 -Value at 7f4045215c78 is 1 -Value at 7f4045215c79 is 1 -Value at 7f4045215c7a is 1 -Value at 7f4045215c7b is 1 -Value at 7f4045215c7c is 1 -Value at 7f4045215c7d is 1 -Value at 7f4045215c7e is 1 -Value at 7f4045215c7f is 1 -Value at 7f4045215c80 is 1 -Value at 7f4045215c81 is 1 -Value at 7f4045215c82 is 1 -Value at 7f4045215c83 is 1 -Value at 7f4045215c84 is 1 -Value at 7f4045215c85 is 1 -Value at 7f4045215c86 is 1 -Value at 7f4045215c87 is 1 -Value at 7f4045215c88 is 1 -Value at 7f4045215c89 is 1 -Value at 7f4045215c8a is 1 -Value at 7f4045215c8b is 1 -Value at 7f4045215c8c is 1 -Value at 7f4045215c8d is 1 -Value at 7f4045215c8e is 1 -Value at 7f4045215c8f is 1 -Value at 7f4045215c90 is 1 -Value at 7f4045215c91 is 1 -Value at 7f4045215c92 is 1 -Value at 7f4045215c93 is 1 -Value at 7f4045215c94 is 1 -Value at 7f4045215c95 is 1 -Value at 7f4045215c96 is 1 -Value at 7f4045215c97 is 1 -Value at 7f4045215c98 is 1 -Value at 7f4045215c99 is 1 -Value at 7f4045215c9a is 1 -Value at 7f4045215c9b is 1 -Value at 7f4045215c9c is 1 -Value at 7f4045215c9d is 1 -Value at 7f4045215c9e is 1 -Value at 7f4045215c9f is 1 -Value at 7f4045215ca0 is 1 -Value at 7f4045215ca1 is 1 -Value at 7f4045215ca2 is 1 -Value at 7f4045215ca3 is 1 -Value at 7f4045215ca4 is 1 -Value at 7f4045215ca5 is 1 -Value at 7f4045215ca6 is 1 -Value at 7f4045215ca7 is 1 -Value at 7f4045215ca8 is 1 -Value at 7f4045215ca9 is 1 -Value at 7f4045215caa is 1 -Value at 7f4045215cab is 1 -Value at 7f4045215cac is 1 -Value at 7f4045215cad is 1 -Value at 7f4045215cae is 1 -Value at 7f4045215caf is 1 -Value at 7f4045215cb0 is 1 -Value at 7f4045215cb1 is 1 -Value at 7f4045215cb2 is 1 -Value at 7f4045215cb3 is 1 -Value at 7f4045215cb4 is 1 -Value at 7f4045215cb5 is 1 -Value at 7f4045215cb6 is 1 -Value at 7f4045215cb7 is 1 -Value at 7f4045215cb8 is 1 -Value at 7f4045215cb9 is 1 -Value at 7f4045215cba is 1 -Value at 7f4045215cbb is 1 -Value at 7f4045215cbc is 1 -Value at 7f4045215cbd is 1 -Value at 7f4045215cbe is 1 -Value at 7f4045215cbf is 1 -Value at 7f4045215cc0 is 1 -Value at 7f4045215cc1 is 1 -Value at 7f4045215cc2 is 1 -Value at 7f4045215cc3 is 1 -Value at 7f4045215cc4 is 1 -Value at 7f4045215cc5 is 1 -Value at 7f4045215cc6 is 1 -Value at 7f4045215cc7 is 1 -Value at 7f4045215cc8 is 1 -Value at 7f4045215cc9 is 1 -Value at 7f4045215cca is 1 -Value at 7f4045215ccb is 1 -Value at 7f4045215ccc is 1 -Value at 7f4045215ccd is 1 -Value at 7f4045215cce is 1 -Value at 7f4045215ccf is 1 -Value at 7f4045215cd0 is 1 -Value at 7f4045215cd1 is 1 -Value at 7f4045215cd2 is 1 -Value at 7f4045215cd3 is 1 -Value at 7f4045215cd4 is 1 -Value at 7f4045215cd5 is 1 -Value at 7f4045215cd6 is 1 -Value at 7f4045215cd7 is 1 -Value at 7f4045215cd8 is 1 -Value at 7f4045215cd9 is 1 -Value at 7f4045215cda is 1 -Value at 7f4045215cdb is 1 -Value at 7f4045215cdc is 1 -Value at 7f4045215cdd is 1 -Value at 7f4045215cde is 1 -Value at 7f4045215cdf is 1 -Value at 7f4045215ce0 is 1 -Value at 7f4045215ce1 is 1 -Value at 7f4045215ce2 is 1 -Value at 7f4045215ce3 is 1 -Value at 7f4045215ce4 is 1 -Value at 7f4045215ce5 is 1 -Value at 7f4045215ce6 is 1 -Value at 7f4045215ce7 is 1 -Value at 7f4045215ce8 is 1 -Value at 7f4045215ce9 is 1 -Value at 7f4045215cea is 1 -Value at 7f4045215ceb is 1 -Value at 7f4045215cec is 1 -Value at 7f4045215ced is 1 -Value at 7f4045215cee is 1 -Value at 7f4045215cef is 1 -Value at 7f4045215cf0 is 1 -Value at 7f4045215cf1 is 1 -Value at 7f4045215cf2 is 1 -Value at 7f4045215cf3 is 1 -Value at 7f4045215cf4 is 1 -Value at 7f4045215cf5 is 1 -Value at 7f4045215cf6 is 1 -Value at 7f4045215cf7 is 1 -Value at 7f4045215cf8 is 1 -Value at 7f4045215cf9 is 1 -Value at 7f4045215cfa is 1 -Value at 7f4045215cfb is 1 -Value at 7f4045215cfc is 1 -Value at 7f4045215cfd is 1 -Value at 7f4045215cfe is 1 -Value at 7f4045215cff is 1 -Value at 7f4045215d00 is 1 -Value at 7f4045215d01 is 1 -Value at 7f4045215d02 is 1 -Value at 7f4045215d03 is 1 -Value at 7f4045215d04 is 1 -Value at 7f4045215d05 is 1 -Value at 7f4045215d06 is 1 -Value at 7f4045215d07 is 1 -Value at 7f4045215d08 is 1 -Value at 7f4045215d09 is 1 -Value at 7f4045215d0a is 1 -Value at 7f4045215d0b is 1 -Value at 7f4045215d0c is 1 -Value at 7f4045215d0d is 1 -Value at 7f4045215d0e is 1 -Value at 7f4045215d0f is 1 -Value at 7f4045215d10 is 1 -Value at 7f4045215d11 is 1 -Value at 7f4045215d12 is 1 -Value at 7f4045215d13 is 1 -Value at 7f4045215d14 is 1 -Value at 7f4045215d15 is 1 -Value at 7f4045215d16 is 1 -Value at 7f4045215d17 is 1 -Value at 7f4045215d18 is 1 -Value at 7f4045215d19 is 1 -Value at 7f4045215d1a is 1 -Value at 7f4045215d1b is 1 -Value at 7f4045215d1c is 1 -Value at 7f4045215d1d is 1 -Value at 7f4045215d1e is 1 -Value at 7f4045215d1f is 1 -Value at 7f4045215d20 is 1 -Value at 7f4045215d21 is 1 -Value at 7f4045215d22 is 1 -Value at 7f4045215d23 is 1 -Value at 7f4045215d24 is 1 -Value at 7f4045215d25 is 1 -Value at 7f4045215d26 is 1 -Value at 7f4045215d27 is 1 -Value at 7f4045215d28 is 1 -Value at 7f4045215d29 is 1 -Value at 7f4045215d2a is 1 -Value at 7f4045215d2b is 1 -Value at 7f4045215d2c is 1 -Value at 7f4045215d2d is 1 -Value at 7f4045215d2e is 1 -Value at 7f4045215d2f is 1 -Value at 7f4045215d30 is 1 -Value at 7f4045215d31 is 1 -Value at 7f4045215d32 is 1 -Value at 7f4045215d33 is 1 -Value at 7f4045215d34 is 1 -Value at 7f4045215d35 is 1 -Value at 7f4045215d36 is 1 -Value at 7f4045215d37 is 1 -Value at 7f4045215d38 is 1 -Value at 7f4045215d39 is 1 -Value at 7f4045215d3a is 1 -Value at 7f4045215d3b is 1 -Value at 7f4045215d3c is 1 -Value at 7f4045215d3d is 1 -Value at 7f4045215d3e is 1 -Value at 7f4045215d3f is 1 -Value at 7f4045215d40 is 1 -Value at 7f4045215d41 is 1 -Value at 7f4045215d42 is 1 -Value at 7f4045215d43 is 1 -Value at 7f4045215d44 is 1 -Value at 7f4045215d45 is 1 -Value at 7f4045215d46 is 1 -Value at 7f4045215d47 is 1 -Value at 7f4045215d48 is 1 -Value at 7f4045215d49 is 1 -Value at 7f4045215d4a is 1 -Value at 7f4045215d4b is 1 -Value at 7f4045215d4c is 1 -Value at 7f4045215d4d is 1 -Value at 7f4045215d4e is 1 -Value at 7f4045215d4f is 1 -Value at 7f4045215d50 is 1 -Value at 7f4045215d51 is 1 -Value at 7f4045215d52 is 1 -Value at 7f4045215d53 is 1 -Value at 7f4045215d54 is 1 -Value at 7f4045215d55 is 1 -Value at 7f4045215d56 is 1 -Value at 7f4045215d57 is 1 -Value at 7f4045215d58 is 1 -Value at 7f4045215d59 is 1 -Value at 7f4045215d5a is 1 -Value at 7f4045215d5b is 1 -Value at 7f4045215d5c is 1 -Value at 7f4045215d5d is 1 -Value at 7f4045215d5e is 1 -Value at 7f4045215d5f is 1 -Value at 7f4045215d60 is 1 -Value at 7f4045215d61 is 1 -Value at 7f4045215d62 is 1 -Value at 7f4045215d63 is 1 -Value at 7f4045215d64 is 1 -Value at 7f4045215d65 is 1 -Value at 7f4045215d66 is 1 -Value at 7f4045215d67 is 1 -Value at 7f4045215d68 is 1 -Value at 7f4045215d69 is 1 -Value at 7f4045215d6a is 1 -Value at 7f4045215d6b is 1 -Value at 7f4045215d6c is 1 -Value at 7f4045215d6d is 1 -Value at 7f4045215d6e is 1 -Value at 7f4045215d6f is 1 -Value at 7f4045215d70 is 1 -Value at 7f4045215d71 is 1 -Value at 7f4045215d72 is 1 -Value at 7f4045215d73 is 1 -Value at 7f4045215d74 is 1 -Value at 7f4045215d75 is 1 -Value at 7f4045215d76 is 1 -Value at 7f4045215d77 is 1 -Value at 7f4045215d78 is 1 -Value at 7f4045215d79 is 1 -Value at 7f4045215d7a is 1 -Value at 7f4045215d7b is 1 -Value at 7f4045215d7c is 1 -Value at 7f4045215d7d is 1 -Value at 7f4045215d7e is 1 -Value at 7f4045215d7f is 1 -Value at 7f4045215d80 is 1 -Value at 7f4045215d81 is 1 -Value at 7f4045215d82 is 1 -Value at 7f4045215d83 is 1 -Value at 7f4045215d84 is 1 -Value at 7f4045215d85 is 1 -Value at 7f4045215d86 is 1 -Value at 7f4045215d87 is 1 -Value at 7f4045215d88 is 1 -Value at 7f4045215d89 is 1 -Value at 7f4045215d8a is 1 -Value at 7f4045215d8b is 1 -Value at 7f4045215d8c is 1 -Value at 7f4045215d8d is 1 -Value at 7f4045215d8e is 1 -Value at 7f4045215d8f is 1 -Value at 7f4045215d90 is 1 -Value at 7f4045215d91 is 1 -Value at 7f4045215d92 is 1 -Value at 7f4045215d93 is 1 -Value at 7f4045215d94 is 1 -Value at 7f4045215d95 is 1 -Value at 7f4045215d96 is 1 -Value at 7f4045215d97 is 1 -Value at 7f4045215d98 is 1 -Value at 7f4045215d99 is 1 -Value at 7f4045215d9a is 1 -Value at 7f4045215d9b is 1 -Value at 7f4045215d9c is 1 -Value at 7f4045215d9d is 1 -Value at 7f4045215d9e is 1 -Value at 7f4045215d9f is 1 -Value at 7f4045215da0 is 1 -Value at 7f4045215da1 is 1 -Value at 7f4045215da2 is 1 -Value at 7f4045215da3 is 1 -Value at 7f4045215da4 is 1 -Value at 7f4045215da5 is 1 -Value at 7f4045215da6 is 1 -Value at 7f4045215da7 is 1 -Value at 7f4045215da8 is 1 -Value at 7f4045215da9 is 1 -Value at 7f4045215daa is 1 -Value at 7f4045215dab is 1 -Value at 7f4045215dac is 1 -Value at 7f4045215dad is 1 -Value at 7f4045215dae is 1 -Value at 7f4045215daf is 1 -Value at 7f4045215db0 is 1 -Value at 7f4045215db1 is 1 -Value at 7f4045215db2 is 1 -Value at 7f4045215db3 is 1 -Value at 7f4045215db4 is 1 -Value at 7f4045215db5 is 1 -Value at 7f4045215db6 is 1 -Value at 7f4045215db7 is 1 -Value at 7f4045215db8 is 1 -Value at 7f4045215db9 is 1 -Value at 7f4045215dba is 1 -Value at 7f4045215dbb is 1 -Value at 7f4045215dbc is 1 -Value at 7f4045215dbd is 1 -Value at 7f4045215dbe is 1 -Value at 7f4045215dbf is 1 -Value at 7f4045215dc0 is 1 -Value at 7f4045215dc1 is 1 -Value at 7f4045215dc2 is 1 -Value at 7f4045215dc3 is 1 -Value at 7f4045215dc4 is 1 -Value at 7f4045215dc5 is 1 -Value at 7f4045215dc6 is 1 -Value at 7f4045215dc7 is 1 -Value at 7f4045215dc8 is 1 -Value at 7f4045215dc9 is 1 -Value at 7f4045215dca is 1 -Value at 7f4045215dcb is 1 -Value at 7f4045215dcc is 1 -Value at 7f4045215dcd is 1 -Value at 7f4045215dce is 1 -Value at 7f4045215dcf is 1 -Value at 7f4045215dd0 is 1 -Value at 7f4045215dd1 is 1 -Value at 7f4045215dd2 is 1 -Value at 7f4045215dd3 is 1 -Value at 7f4045215dd4 is 1 -Value at 7f4045215dd5 is 1 -Value at 7f4045215dd6 is 1 -Value at 7f4045215dd7 is 1 -Value at 7f4045215dd8 is 1 -Value at 7f4045215dd9 is 1 -Value at 7f4045215dda is 1 -Value at 7f4045215ddb is 1 -Value at 7f4045215ddc is 1 -Value at 7f4045215ddd is 1 -Value at 7f4045215dde is 1 -Value at 7f4045215ddf is 1 -Value at 7f4045215de0 is 1 -Value at 7f4045215de1 is 1 -Value at 7f4045215de2 is 1 -Value at 7f4045215de3 is 1 -Value at 7f4045215de4 is 1 -Value at 7f4045215de5 is 1 -Value at 7f4045215de6 is 1 -Value at 7f4045215de7 is 1 -Value at 7f4045215de8 is 1 -Value at 7f4045215de9 is 1 -Value at 7f4045215dea is 1 -Value at 7f4045215deb is 1 -Value at 7f4045215dec is 1 -Value at 7f4045215ded is 1 -Value at 7f4045215dee is 1 -Value at 7f4045215def is 1 -Value at 7f4045215df0 is 1 -Value at 7f4045215df1 is 1 -Value at 7f4045215df2 is 1 -Value at 7f4045215df3 is 1 -Value at 7f4045215df4 is 1 -Value at 7f4045215df5 is 1 -Value at 7f4045215df6 is 1 -Value at 7f4045215df7 is 1 -Value at 7f4045215df8 is 1 -Value at 7f4045215df9 is 1 -Value at 7f4045215dfa is 1 -Value at 7f4045215dfb is 1 -Value at 7f4045215dfc is 1 -Value at 7f4045215dfd is 1 -Value at 7f4045215dfe is 1 -Value at 7f4045215dff is 1 -Value at 7f4045215e00 is 1 -Value at 7f4045215e01 is 1 -Value at 7f4045215e02 is 1 -Value at 7f4045215e03 is 1 -Value at 7f4045215e04 is 1 -Value at 7f4045215e05 is 1 -Value at 7f4045215e06 is 1 -Value at 7f4045215e07 is 1 -Value at 7f4045215e08 is 1 -Value at 7f4045215e09 is 1 -Value at 7f4045215e0a is 1 -Value at 7f4045215e0b is 1 -Value at 7f4045215e0c is 1 -Value at 7f4045215e0d is 1 -Value at 7f4045215e0e is 1 -Value at 7f4045215e0f is 1 -Value at 7f4045215e10 is 1 -Value at 7f4045215e11 is 1 -Value at 7f4045215e12 is 1 -Value at 7f4045215e13 is 1 -Value at 7f4045215e14 is 1 -Value at 7f4045215e15 is 1 -Value at 7f4045215e16 is 1 -Value at 7f4045215e17 is 1 -Value at 7f4045215e18 is 1 -Value at 7f4045215e19 is 1 -Value at 7f4045215e1a is 1 -Value at 7f4045215e1b is 1 -Value at 7f4045215e1c is 1 -Value at 7f4045215e1d is 1 -Value at 7f4045215e1e is 1 -Value at 7f4045215e1f is 1 -Value at 7f4045215e20 is 1 -Value at 7f4045215e21 is 1 -Value at 7f4045215e22 is 1 -Value at 7f4045215e23 is 1 -Value at 7f4045215e24 is 1 -Value at 7f4045215e25 is 1 -Value at 7f4045215e26 is 1 -Value at 7f4045215e27 is 1 -Value at 7f4045215e28 is 1 -Value at 7f4045215e29 is 1 -Value at 7f4045215e2a is 1 -Value at 7f4045215e2b is 1 -Value at 7f4045215e2c is 1 -Value at 7f4045215e2d is 1 -Value at 7f4045215e2e is 1 -Value at 7f4045215e2f is 1 -Value at 7f4045215e30 is 1 -Value at 7f4045215e31 is 1 -Value at 7f4045215e32 is 1 -Value at 7f4045215e33 is 1 -Value at 7f4045215e34 is 1 -Value at 7f4045215e35 is 1 -Value at 7f4045215e36 is 1 -Value at 7f4045215e37 is 1 -Value at 7f4045215e38 is 1 -Value at 7f4045215e39 is 1 -Value at 7f4045215e3a is 1 -Value at 7f4045215e3b is 1 -Value at 7f4045215e3c is 1 -Value at 7f4045215e3d is 1 -Value at 7f4045215e3e is 1 -Value at 7f4045215e3f is 1 -Value at 7f4045215e40 is 1 -Value at 7f4045215e41 is 1 -Value at 7f4045215e42 is 1 -Value at 7f4045215e43 is 1 -Value at 7f4045215e44 is 1 -Value at 7f4045215e45 is 1 -Value at 7f4045215e46 is 1 -Value at 7f4045215e47 is 1 -Value at 7f4045215e48 is 1 -Value at 7f4045215e49 is 1 -Value at 7f4045215e4a is 1 -Value at 7f4045215e4b is 1 -Value at 7f4045215e4c is 1 -Value at 7f4045215e4d is 1 -Value at 7f4045215e4e is 1 -Value at 7f4045215e4f is 1 -Value at 7f4045215e50 is 1 -Value at 7f4045215e51 is 1 -Value at 7f4045215e52 is 1 -Value at 7f4045215e53 is 1 -Value at 7f4045215e54 is 1 -Value at 7f4045215e55 is 1 -Value at 7f4045215e56 is 1 -Value at 7f4045215e57 is 1 -Value at 7f4045215e58 is 1 -Value at 7f4045215e59 is 1 -Value at 7f4045215e5a is 1 -Value at 7f4045215e5b is 1 -Value at 7f4045215e5c is 1 -Value at 7f4045215e5d is 1 -Value at 7f4045215e5e is 1 -Value at 7f4045215e5f is 1 -Value at 7f4045215e60 is 1 -Value at 7f4045215e61 is 1 -Value at 7f4045215e62 is 1 -Value at 7f4045215e63 is 1 -Value at 7f4045215e64 is 1 -Value at 7f4045215e65 is 1 -Value at 7f4045215e66 is 1 -Value at 7f4045215e67 is 1 -Value at 7f4045215e68 is 1 -Value at 7f4045215e69 is 1 -Value at 7f4045215e6a is 1 -Value at 7f4045215e6b is 1 -Value at 7f4045215e6c is 1 -Value at 7f4045215e6d is 1 -Value at 7f4045215e6e is 1 -Value at 7f4045215e6f is 1 -Value at 7f4045215e70 is 1 -Value at 7f4045215e71 is 1 -Value at 7f4045215e72 is 1 -Value at 7f4045215e73 is 1 -Value at 7f4045215e74 is 1 -Value at 7f4045215e75 is 1 -Value at 7f4045215e76 is 1 -Value at 7f4045215e77 is 1 -Value at 7f4045215e78 is 1 -Value at 7f4045215e79 is 1 -Value at 7f4045215e7a is 1 -Value at 7f4045215e7b is 1 -Value at 7f4045215e7c is 1 -Value at 7f4045215e7d is 1 -Value at 7f4045215e7e is 1 -Value at 7f4045215e7f is 1 -Value at 7f4045215e80 is 1 -Value at 7f4045215e81 is 1 -Value at 7f4045215e82 is 1 -Value at 7f4045215e83 is 1 -Value at 7f4045215e84 is 1 -Value at 7f4045215e85 is 1 -Value at 7f4045215e86 is 1 -Value at 7f4045215e87 is 1 -Value at 7f4045215e88 is 1 -Value at 7f4045215e89 is 1 -Value at 7f4045215e8a is 1 -Value at 7f4045215e8b is 1 -Value at 7f4045215e8c is 1 -Value at 7f4045215e8d is 1 -Value at 7f4045215e8e is 1 -Value at 7f4045215e8f is 1 -Value at 7f4045215e90 is 1 -Value at 7f4045215e91 is 1 -Value at 7f4045215e92 is 1 -Value at 7f4045215e93 is 1 -Value at 7f4045215e94 is 1 -Value at 7f4045215e95 is 1 -Value at 7f4045215e96 is 1 -Value at 7f4045215e97 is 1 -Value at 7f4045215e98 is 1 -Value at 7f4045215e99 is 1 -Value at 7f4045215e9a is 1 -Value at 7f4045215e9b is 1 -Value at 7f4045215e9c is 1 -Value at 7f4045215e9d is 1 -Value at 7f4045215e9e is 1 -Value at 7f4045215e9f is 1 -Value at 7f4045215ea0 is 1 -Value at 7f4045215ea1 is 1 -Value at 7f4045215ea2 is 1 -Value at 7f4045215ea3 is 1 -Value at 7f4045215ea4 is 1 -Value at 7f4045215ea5 is 1 -Value at 7f4045215ea6 is 1 -Value at 7f4045215ea7 is 1 -Value at 7f4045215ea8 is 1 -Value at 7f4045215ea9 is 1 -Value at 7f4045215eaa is 1 -Value at 7f4045215eab is 1 -Value at 7f4045215eac is 1 -Value at 7f4045215ead is 1 -Value at 7f4045215eae is 1 -Value at 7f4045215eaf is 1 -Value at 7f4045215eb0 is 1 -Value at 7f4045215eb1 is 1 -Value at 7f4045215eb2 is 1 -Value at 7f4045215eb3 is 1 -Value at 7f4045215eb4 is 1 -Value at 7f4045215eb5 is 1 -Value at 7f4045215eb6 is 1 -Value at 7f4045215eb7 is 1 -Value at 7f4045215eb8 is 1 -Value at 7f4045215eb9 is 1 -Value at 7f4045215eba is 1 -Value at 7f4045215ebb is 1 -Value at 7f4045215ebc is 1 -Value at 7f4045215ebd is 1 -Value at 7f4045215ebe is 1 -Value at 7f4045215ebf is 1 -Value at 7f4045215ec0 is 1 -Value at 7f4045215ec1 is 1 -Value at 7f4045215ec2 is 1 -Value at 7f4045215ec3 is 1 -Value at 7f4045215ec4 is 1 -Value at 7f4045215ec5 is 1 -Value at 7f4045215ec6 is 1 -Value at 7f4045215ec7 is 1 -Value at 7f4045215ec8 is 1 -Value at 7f4045215ec9 is 1 -Value at 7f4045215eca is 1 -Value at 7f4045215ecb is 1 -Value at 7f4045215ecc is 1 -Value at 7f4045215ecd is 1 -Value at 7f4045215ece is 1 -Value at 7f4045215ecf is 1 -Value at 7f4045215ed0 is 1 -Value at 7f4045215ed1 is 1 -Value at 7f4045215ed2 is 1 -Value at 7f4045215ed3 is 1 -Value at 7f4045215ed4 is 1 -Value at 7f4045215ed5 is 1 -Value at 7f4045215ed6 is 1 -Value at 7f4045215ed7 is 1 -Value at 7f4045215ed8 is 1 -Value at 7f4045215ed9 is 1 -Value at 7f4045215eda is 1 -Value at 7f4045215edb is 1 -Value at 7f4045215edc is 1 -Value at 7f4045215edd is 1 -Value at 7f4045215ede is 1 -Value at 7f4045215edf is 1 -Value at 7f4045215ee0 is 1 -Value at 7f4045215ee1 is 1 -Value at 7f4045215ee2 is 1 -Value at 7f4045215ee3 is 1 -Value at 7f4045215ee4 is 1 -Value at 7f4045215ee5 is 1 -Value at 7f4045215ee6 is 1 -Value at 7f4045215ee7 is 1 -Value at 7f4045215ee8 is 1 -Value at 7f4045215ee9 is 1 -Value at 7f4045215eea is 1 -Value at 7f4045215eeb is 1 -Value at 7f4045215eec is 1 -Value at 7f4045215eed is 1 -Value at 7f4045215eee is 1 -Value at 7f4045215eef is 1 -Value at 7f4045215ef0 is 1 -Value at 7f4045215ef1 is 1 -Value at 7f4045215ef2 is 1 -Value at 7f4045215ef3 is 1 -Value at 7f4045215ef4 is 1 -Value at 7f4045215ef5 is 1 -Value at 7f4045215ef6 is 1 -Value at 7f4045215ef7 is 1 -Value at 7f4045215ef8 is 1 -Value at 7f4045215ef9 is 1 -Value at 7f4045215efa is 1 -Value at 7f4045215efb is 1 -Value at 7f4045215efc is 1 -Value at 7f4045215efd is 1 -Value at 7f4045215efe is 1 -Value at 7f4045215eff is 1 -Value at 7f4045215f00 is 1 -Value at 7f4045215f01 is 1 -Value at 7f4045215f02 is 1 -Value at 7f4045215f03 is 1 -Value at 7f4045215f04 is 1 -Value at 7f4045215f05 is 1 -Value at 7f4045215f06 is 1 -Value at 7f4045215f07 is 1 -Value at 7f4045215f08 is 1 -Value at 7f4045215f09 is 1 -Value at 7f4045215f0a is 1 -Value at 7f4045215f0b is 1 -Value at 7f4045215f0c is 1 -Value at 7f4045215f0d is 1 -Value at 7f4045215f0e is 1 -Value at 7f4045215f0f is 1 -Value at 7f4045215f10 is 1 -Value at 7f4045215f11 is 1 -Value at 7f4045215f12 is 1 -Value at 7f4045215f13 is 1 -Value at 7f4045215f14 is 1 -Value at 7f4045215f15 is 1 -Value at 7f4045215f16 is 1 -Value at 7f4045215f17 is 1 -Value at 7f4045215f18 is 1 -Value at 7f4045215f19 is 1 -Value at 7f4045215f1a is 1 -Value at 7f4045215f1b is 1 -Value at 7f4045215f1c is 1 -Value at 7f4045215f1d is 1 -Value at 7f4045215f1e is 1 -Value at 7f4045215f1f is 1 -Value at 7f4045215f20 is 1 -Value at 7f4045215f21 is 1 -Value at 7f4045215f22 is 1 -Value at 7f4045215f23 is 1 -Value at 7f4045215f24 is 1 -Value at 7f4045215f25 is 1 -Value at 7f4045215f26 is 1 -Value at 7f4045215f27 is 1 -Value at 7f4045215f28 is 1 -Value at 7f4045215f29 is 1 -Value at 7f4045215f2a is 1 -Value at 7f4045215f2b is 1 -Value at 7f4045215f2c is 1 -Value at 7f4045215f2d is 1 -Value at 7f4045215f2e is 1 -Value at 7f4045215f2f is 1 -Value at 7f4045215f30 is 1 -Value at 7f4045215f31 is 1 -Value at 7f4045215f32 is 1 -Value at 7f4045215f33 is 1 -Value at 7f4045215f34 is 1 -Value at 7f4045215f35 is 1 -Value at 7f4045215f36 is 1 -Value at 7f4045215f37 is 1 -Value at 7f4045215f38 is 1 -Value at 7f4045215f39 is 1 -Value at 7f4045215f3a is 1 -Value at 7f4045215f3b is 1 -Value at 7f4045215f3c is 1 -Value at 7f4045215f3d is 1 -Value at 7f4045215f3e is 1 -Value at 7f4045215f3f is 1 -Value at 7f4045215f40 is 1 -Value at 7f4045215f41 is 1 -Value at 7f4045215f42 is 1 -Value at 7f4045215f43 is 1 -Value at 7f4045215f44 is 1 -Value at 7f4045215f45 is 1 -Value at 7f4045215f46 is 1 -Value at 7f4045215f47 is 1 -Value at 7f4045215f48 is 1 -Value at 7f4045215f49 is 1 -Value at 7f4045215f4a is 1 -Value at 7f4045215f4b is 1 -Value at 7f4045215f4c is 1 -Value at 7f4045215f4d is 1 -Value at 7f4045215f4e is 1 -Value at 7f4045215f4f is 1 -Value at 7f4045215f50 is 1 -Value at 7f4045215f51 is 1 -Value at 7f4045215f52 is 1 -Value at 7f4045215f53 is 1 -Value at 7f4045215f54 is 1 -Value at 7f4045215f55 is 1 -Value at 7f4045215f56 is 1 -Value at 7f4045215f57 is 1 -Value at 7f4045215f58 is 1 -Value at 7f4045215f59 is 1 -Value at 7f4045215f5a is 1 -Value at 7f4045215f5b is 1 -Value at 7f4045215f5c is 1 -Value at 7f4045215f5d is 1 -Value at 7f4045215f5e is 1 -Value at 7f4045215f5f is 1 -Value at 7f4045215f60 is 1 -Value at 7f4045215f61 is 1 -Value at 7f4045215f62 is 1 -Value at 7f4045215f63 is 1 -Value at 7f4045215f64 is 1 -Value at 7f4045215f65 is 1 -Value at 7f4045215f66 is 1 -Value at 7f4045215f67 is 1 -Value at 7f4045215f68 is 1 -Value at 7f4045215f69 is 1 -Value at 7f4045215f6a is 1 -Value at 7f4045215f6b is 1 -Value at 7f4045215f6c is 1 -Value at 7f4045215f6d is 1 -Value at 7f4045215f6e is 1 -Value at 7f4045215f6f is 1 -Value at 7f4045215f70 is 1 -Value at 7f4045215f71 is 1 -Value at 7f4045215f72 is 1 -Value at 7f4045215f73 is 1 -Value at 7f4045215f74 is 1 -Value at 7f4045215f75 is 1 -Value at 7f4045215f76 is 1 -Value at 7f4045215f77 is 1 -Value at 7f4045215f78 is 1 -Value at 7f4045215f79 is 1 -Value at 7f4045215f7a is 1 -Value at 7f4045215f7b is 1 -Value at 7f4045215f7c is 1 -Value at 7f4045215f7d is 1 -Value at 7f4045215f7e is 1 -Value at 7f4045215f7f is 1 -Value at 7f4045215f80 is 1 -Value at 7f4045215f81 is 1 -Value at 7f4045215f82 is 1 -Value at 7f4045215f83 is 1 -Value at 7f4045215f84 is 1 -Value at 7f4045215f85 is 1 -Value at 7f4045215f86 is 1 -Value at 7f4045215f87 is 1 -Value at 7f4045215f88 is 1 -Value at 7f4045215f89 is 1 -Value at 7f4045215f8a is 1 -Value at 7f4045215f8b is 1 -Value at 7f4045215f8c is 1 -Value at 7f4045215f8d is 1 -Value at 7f4045215f8e is 1 -Value at 7f4045215f8f is 1 -Value at 7f4045215f90 is 1 -Value at 7f4045215f91 is 1 -Value at 7f4045215f92 is 1 -Value at 7f4045215f93 is 1 -Value at 7f4045215f94 is 1 -Value at 7f4045215f95 is 1 -Value at 7f4045215f96 is 1 -Value at 7f4045215f97 is 1 -Value at 7f4045215f98 is 1 -Value at 7f4045215f99 is 1 -Value at 7f4045215f9a is 1 -Value at 7f4045215f9b is 1 -Value at 7f4045215f9c is 1 -Value at 7f4045215f9d is 1 -Value at 7f4045215f9e is 1 -Value at 7f4045215f9f is 1 -Value at 7f4045215fa0 is 1 -Value at 7f4045215fa1 is 1 -Value at 7f4045215fa2 is 1 -Value at 7f4045215fa3 is 1 -Value at 7f4045215fa4 is 1 -Value at 7f4045215fa5 is 1 -Value at 7f4045215fa6 is 1 -Value at 7f4045215fa7 is 1 -Value at 7f4045215fa8 is 1 -Value at 7f4045215fa9 is 1 -Value at 7f4045215faa is 1 -Value at 7f4045215fab is 1 -Value at 7f4045215fac is 1 -Value at 7f4045215fad is 1 -Value at 7f4045215fae is 1 -Value at 7f4045215faf is 1 -Value at 7f4045215fb0 is 1 -Value at 7f4045215fb1 is 1 -Value at 7f4045215fb2 is 1 -Value at 7f4045215fb3 is 1 -Value at 7f4045215fb4 is 1 -Value at 7f4045215fb5 is 1 -Value at 7f4045215fb6 is 1 -Value at 7f4045215fb7 is 1 -Value at 7f4045215fb8 is 1 -Value at 7f4045215fb9 is 1 -Value at 7f4045215fba is 1 -Value at 7f4045215fbb is 1 -Value at 7f4045215fbc is 1 -Value at 7f4045215fbd is 1 -Value at 7f4045215fbe is 1 -Value at 7f4045215fbf is 1 -Value at 7f4045215fc0 is 1 -Value at 7f4045215fc1 is 1 -Value at 7f4045215fc2 is 1 -Value at 7f4045215fc3 is 1 -Value at 7f4045215fc4 is 1 -Value at 7f4045215fc5 is 1 -Value at 7f4045215fc6 is 1 -Value at 7f4045215fc7 is 1 -Value at 7f4045215fc8 is 1 -Value at 7f4045215fc9 is 1 -Value at 7f4045215fca is 1 -Value at 7f4045215fcb is 1 -Value at 7f4045215fcc is 1 -Value at 7f4045215fcd is 1 -Value at 7f4045215fce is 1 -Value at 7f4045215fcf is 1 -Value at 7f4045215fd0 is 1 -Value at 7f4045215fd1 is 1 -Value at 7f4045215fd2 is 1 -Value at 7f4045215fd3 is 1 -Value at 7f4045215fd4 is 1 -Value at 7f4045215fd5 is 1 -Value at 7f4045215fd6 is 1 -Value at 7f4045215fd7 is 1 -Value at 7f4045215fd8 is 1 -Value at 7f4045215fd9 is 1 -Value at 7f4045215fda is 1 -Value at 7f4045215fdb is 1 -Value at 7f4045215fdc is 1 -Value at 7f4045215fdd is 1 -Value at 7f4045215fde is 1 -Value at 7f4045215fdf is 1 -Value at 7f4045215fe0 is 1 -Value at 7f4045215fe1 is 1 -Value at 7f4045215fe2 is 1 -Value at 7f4045215fe3 is 1 -Value at 7f4045215fe4 is 1 -Value at 7f4045215fe5 is 1 -Value at 7f4045215fe6 is 1 -Value at 7f4045215fe7 is 1 -Value at 7f4045215fe8 is 1 -Value at 7f4045215fe9 is 1 -Value at 7f4045215fea is 1 -Value at 7f4045215feb is 1 -Value at 7f4045215fec is 1 -Value at 7f4045215fed is 1 -Value at 7f4045215fee is 1 -Value at 7f4045215fef is 1 -Value at 7f4045215ff0 is 1 -Value at 7f4045215ff1 is 1 -Value at 7f4045215ff2 is 1 -Value at 7f4045215ff3 is 1 -Value at 7f4045215ff4 is 1 -Value at 7f4045215ff5 is 1 -Value at 7f4045215ff6 is 1 -Value at 7f4045215ff7 is 1 -Value at 7f4045215ff8 is 1 -Value at 7f4045215ff9 is 1 -Value at 7f4045215ffa is 1 -Value at 7f4045215ffb is 1 -Value at 7f4045215ffc is 1 -Value at 7f4045215ffd is 1 -Value at 7f4045215ffe is 1 -Value at 7f4045215fff is 1 - (uffdio_copy.copy returned 4096 - -fault_handler_thread(): - poll() returns: nready = 1; POLLIN = 1; POLLERR = - UFFD_EVENT_PAGEFAULT event: uffd = 4; flags = 0; address = 7f4045216000; Rounded address = 7f4045216000 -Prev Resolved Address = 7f4045215000; Calling rmp_page_resolver with faulting_addr : 7f4045216000 and Rounded : 7f4045216000 -rmp_pagefault_resovler: Offset = 4096; Start Address = 7f4045215000; Faulting Address = 7f4045216000 -entered (rmp_read_page) -socketfd : 3, connected : 1 -send returned (rmp_read_page) -recv returned (rmp_read_page) -Error (rmp_read_page) : 0 -Data (rmp_read_page) :  -Value at 7f4045216000 is 1 -Value at 7f4045216001 is 1 -Value at 7f4045216002 is 1 -Value at 7f4045216003 is 1 -Value at 7f4045216004 is 1 -Value at 7f4045216005 is 1 -Value at 7f4045216006 is 1 -Value at 7f4045216007 is 1 -Value at 7f4045216008 is 1 -Value at 7f4045216009 is 1 -Value at 7f404521600a is 1 -Value at 7f404521600b is 1 -Value at 7f404521600c is 1 -Value at 7f404521600d is 1 -Value at 7f404521600e is 1 -Value at 7f404521600f is 1 -Value at 7f4045216010 is 1 -Value at 7f4045216011 is 1 -Value at 7f4045216012 is 1 -Value at 7f4045216013 is 1 -Value at 7f4045216014 is 1 -Value at 7f4045216015 is 1 -Value at 7f4045216016 is 1 -Value at 7f4045216017 is 1 -Value at 7f4045216018 is 1 -Value at 7f4045216019 is 1 -Value at 7f404521601a is 1 -Value at 7f404521601b is 1 -Value at 7f404521601c is 1 -Value at 7f404521601d is 1 -Value at 7f404521601e is 1 -Value at 7f404521601f is 1 -Value at 7f4045216020 is 1 -Value at 7f4045216021 is 1 -Value at 7f4045216022 is 1 -Value at 7f4045216023 is 1 -Value at 7f4045216024 is 1 -Value at 7f4045216025 is 1 -Value at 7f4045216026 is 1 -Value at 7f4045216027 is 1 -Value at 7f4045216028 is 1 -Value at 7f4045216029 is 1 -Value at 7f404521602a is 1 -Value at 7f404521602b is 1 -Value at 7f404521602c is 1 -Value at 7f404521602d is 1 -Value at 7f404521602e is 1 -Value at 7f404521602f is 1 -Value at 7f4045216030 is 1 -Value at 7f4045216031 is 1 -Value at 7f4045216032 is 1 -Value at 7f4045216033 is 1 -Value at 7f4045216034 is 1 -Value at 7f4045216035 is 1 -Value at 7f4045216036 is 1 -Value at 7f4045216037 is 1 -Value at 7f4045216038 is 1 -Value at 7f4045216039 is 1 -Value at 7f404521603a is 1 -Value at 7f404521603b is 1 -Value at 7f404521603c is 1 -Value at 7f404521603d is 1 -Value at 7f404521603e is 1 -Value at 7f404521603f is 1 -Value at 7f4045216040 is 1 -Value at 7f4045216041 is 1 -Value at 7f4045216042 is 1 -Value at 7f4045216043 is 1 -Value at 7f4045216044 is 1 -Value at 7f4045216045 is 1 -Value at 7f4045216046 is 1 -Value at 7f4045216047 is 1 -Value at 7f4045216048 is 1 -Value at 7f4045216049 is 1 -Value at 7f404521604a is 1 -Value at 7f404521604b is 1 -Value at 7f404521604c is 1 -Value at 7f404521604d is 1 -Value at 7f404521604e is 1 -Value at 7f404521604f is 1 -Value at 7f4045216050 is 1 -Value at 7f4045216051 is 1 -Value at 7f4045216052 is 1 -Value at 7f4045216053 is 1 -Value at 7f4045216054 is 1 -Value at 7f4045216055 is 1 -Value at 7f4045216056 is 1 -Value at 7f4045216057 is 1 -Value at 7f4045216058 is 1 -Value at 7f4045216059 is 1 -Value at 7f404521605a is 1 -Value at 7f404521605b is 1 -Value at 7f404521605c is 1 -Value at 7f404521605d is 1 -Value at 7f404521605e is 1 -Value at 7f404521605f is 1 -Value at 7f4045216060 is 1 -Value at 7f4045216061 is 1 -Value at 7f4045216062 is 1 -Value at 7f4045216063 is 1 -Value at 7f4045216064 is 1 -Value at 7f4045216065 is 1 -Value at 7f4045216066 is 1 -Value at 7f4045216067 is 1 -Value at 7f4045216068 is 1 -Value at 7f4045216069 is 1 -Value at 7f404521606a is 1 -Value at 7f404521606b is 1 -Value at 7f404521606c is 1 -Value at 7f404521606d is 1 -Value at 7f404521606e is 1 -Value at 7f404521606f is 1 -Value at 7f4045216070 is 1 -Value at 7f4045216071 is 1 -Value at 7f4045216072 is 1 -Value at 7f4045216073 is 1 -Value at 7f4045216074 is 1 -Value at 7f4045216075 is 1 -Value at 7f4045216076 is 1 -Value at 7f4045216077 is 1 -Value at 7f4045216078 is 1 -Value at 7f4045216079 is 1 -Value at 7f404521607a is 1 -Value at 7f404521607b is 1 -Value at 7f404521607c is 1 -Value at 7f404521607d is 1 -Value at 7f404521607e is 1 -Value at 7f404521607f is 1 -Value at 7f4045216080 is 1 -Value at 7f4045216081 is 1 -Value at 7f4045216082 is 1 -Value at 7f4045216083 is 1 -Value at 7f4045216084 is 1 -Value at 7f4045216085 is 1 -Value at 7f4045216086 is 1 -Value at 7f4045216087 is 1 -Value at 7f4045216088 is 1 -Value at 7f4045216089 is 1 -Value at 7f404521608a is 1 -Value at 7f404521608b is 1 -Value at 7f404521608c is 1 -Value at 7f404521608d is 1 -Value at 7f404521608e is 1 -Value at 7f404521608f is 1 -Value at 7f4045216090 is 1 -Value at 7f4045216091 is 1 -Value at 7f4045216092 is 1 -Value at 7f4045216093 is 1 -Value at 7f4045216094 is 1 -Value at 7f4045216095 is 1 -Value at 7f4045216096 is 1 -Value at 7f4045216097 is 1 -Value at 7f4045216098 is 1 -Value at 7f4045216099 is 1 -Value at 7f404521609a is 1 -Value at 7f404521609b is 1 -Value at 7f404521609c is 1 -Value at 7f404521609d is 1 -Value at 7f404521609e is 1 -Value at 7f404521609f is 1 -Value at 7f40452160a0 is 1 -Value at 7f40452160a1 is 1 -Value at 7f40452160a2 is 1 -Value at 7f40452160a3 is 1 -Value at 7f40452160a4 is 1 -Value at 7f40452160a5 is 1 -Value at 7f40452160a6 is 1 -Value at 7f40452160a7 is 1 -Value at 7f40452160a8 is 1 -Value at 7f40452160a9 is 1 -Value at 7f40452160aa is 1 -Value at 7f40452160ab is 1 -Value at 7f40452160ac is 1 -Value at 7f40452160ad is 1 -Value at 7f40452160ae is 1 -Value at 7f40452160af is 1 -Value at 7f40452160b0 is 1 -Value at 7f40452160b1 is 1 -Value at 7f40452160b2 is 1 -Value at 7f40452160b3 is 1 -Value at 7f40452160b4 is 1 -Value at 7f40452160b5 is 1 -Value at 7f40452160b6 is 1 -Value at 7f40452160b7 is 1 -Value at 7f40452160b8 is 1 -Value at 7f40452160b9 is 1 -Value at 7f40452160ba is 1 -Value at 7f40452160bb is 1 -Value at 7f40452160bc is 1 -Value at 7f40452160bd is 1 -Value at 7f40452160be is 1 -Value at 7f40452160bf is 1 -Value at 7f40452160c0 is 1 -Value at 7f40452160c1 is 1 -Value at 7f40452160c2 is 1 -Value at 7f40452160c3 is 1 -Value at 7f40452160c4 is 1 -Value at 7f40452160c5 is 1 -Value at 7f40452160c6 is 1 -Value at 7f40452160c7 is 1 -Value at 7f40452160c8 is 1 -Value at 7f40452160c9 is 1 -Value at 7f40452160ca is 1 -Value at 7f40452160cb is 1 -Value at 7f40452160cc is 1 -Value at 7f40452160cd is 1 -Value at 7f40452160ce is 1 -Value at 7f40452160cf is 1 -Value at 7f40452160d0 is 1 -Value at 7f40452160d1 is 1 -Value at 7f40452160d2 is 1 -Value at 7f40452160d3 is 1 -Value at 7f40452160d4 is 1 -Value at 7f40452160d5 is 1 -Value at 7f40452160d6 is 1 -Value at 7f40452160d7 is 1 -Value at 7f40452160d8 is 1 -Value at 7f40452160d9 is 1 -Value at 7f40452160da is 1 -Value at 7f40452160db is 1 -Value at 7f40452160dc is 1 -Value at 7f40452160dd is 1 -Value at 7f40452160de is 1 -Value at 7f40452160df is 1 -Value at 7f40452160e0 is 1 -Value at 7f40452160e1 is 1 -Value at 7f40452160e2 is 1 -Value at 7f40452160e3 is 1 -Value at 7f40452160e4 is 1 -Value at 7f40452160e5 is 1 -Value at 7f40452160e6 is 1 -Value at 7f40452160e7 is 1 -Value at 7f40452160e8 is 1 -Value at 7f40452160e9 is 1 -Value at 7f40452160ea is 1 -Value at 7f40452160eb is 1 -Value at 7f40452160ec is 1 -Value at 7f40452160ed is 1 -Value at 7f40452160ee is 1 -Value at 7f40452160ef is 1 -Value at 7f40452160f0 is 1 -Value at 7f40452160f1 is 1 -Value at 7f40452160f2 is 1 -Value at 7f40452160f3 is 1 -Value at 7f40452160f4 is 1 -Value at 7f40452160f5 is 1 -Value at 7f40452160f6 is 1 -Value at 7f40452160f7 is 1 -Value at 7f40452160f8 is 1 -Value at 7f40452160f9 is 1 -Value at 7f40452160fa is 1 -Value at 7f40452160fb is 1 -Value at 7f40452160fc is 1 -Value at 7f40452160fd is 1 -Value at 7f40452160fe is 1 -Value at 7f40452160ff is 1 -Value at 7f4045216100 is 1 -Value at 7f4045216101 is 1 -Value at 7f4045216102 is 1 -Value at 7f4045216103 is 1 -Value at 7f4045216104 is 1 -Value at 7f4045216105 is 1 -Value at 7f4045216106 is 1 -Value at 7f4045216107 is 1 -Value at 7f4045216108 is 1 -Value at 7f4045216109 is 1 -Value at 7f404521610a is 1 -Value at 7f404521610b is 1 -Value at 7f404521610c is 1 -Value at 7f404521610d is 1 -Value at 7f404521610e is 1 -Value at 7f404521610f is 1 -Value at 7f4045216110 is 1 -Value at 7f4045216111 is 1 -Value at 7f4045216112 is 1 -Value at 7f4045216113 is 1 -Value at 7f4045216114 is 1 -Value at 7f4045216115 is 1 -Value at 7f4045216116 is 1 -Value at 7f4045216117 is 1 -Value at 7f4045216118 is 1 -Value at 7f4045216119 is 1 -Value at 7f404521611a is 1 -Value at 7f404521611b is 1 -Value at 7f404521611c is 1 -Value at 7f404521611d is 1 -Value at 7f404521611e is 1 -Value at 7f404521611f is 1 -Value at 7f4045216120 is 1 -Value at 7f4045216121 is 1 -Value at 7f4045216122 is 1 -Value at 7f4045216123 is 1 -Value at 7f4045216124 is 1 -Value at 7f4045216125 is 1 -Value at 7f4045216126 is 1 -Value at 7f4045216127 is 1 -Value at 7f4045216128 is 1 -Value at 7f4045216129 is 1 -Value at 7f404521612a is 1 -Value at 7f404521612b is 1 -Value at 7f404521612c is 1 -Value at 7f404521612d is 1 -Value at 7f404521612e is 1 -Value at 7f404521612f is 1 -Value at 7f4045216130 is 1 -Value at 7f4045216131 is 1 -Value at 7f4045216132 is 1 -Value at 7f4045216133 is 1 -Value at 7f4045216134 is 1 -Value at 7f4045216135 is 1 -Value at 7f4045216136 is 1 -Value at 7f4045216137 is 1 -Value at 7f4045216138 is 1 -Value at 7f4045216139 is 1 -Value at 7f404521613a is 1 -Value at 7f404521613b is 1 -Value at 7f404521613c is 1 -Value at 7f404521613d is 1 -Value at 7f404521613e is 1 -Value at 7f404521613f is 1 -Value at 7f4045216140 is 1 -Value at 7f4045216141 is 1 -Value at 7f4045216142 is 1 -Value at 7f4045216143 is 1 -Value at 7f4045216144 is 1 -Value at 7f4045216145 is 1 -Value at 7f4045216146 is 1 -Value at 7f4045216147 is 1 -Value at 7f4045216148 is 1 -Value at 7f4045216149 is 1 -Value at 7f404521614a is 1 -Value at 7f404521614b is 1 -Value at 7f404521614c is 1 -Value at 7f404521614d is 1 -Value at 7f404521614e is 1 -Value at 7f404521614f is 1 -Value at 7f4045216150 is 1 -Value at 7f4045216151 is 1 -Value at 7f4045216152 is 1 -Value at 7f4045216153 is 1 -Value at 7f4045216154 is 1 -Value at 7f4045216155 is 1 -Value at 7f4045216156 is 1 -Value at 7f4045216157 is 1 -Value at 7f4045216158 is 1 -Value at 7f4045216159 is 1 -Value at 7f404521615a is 1 -Value at 7f404521615b is 1 -Value at 7f404521615c is 1 -Value at 7f404521615d is 1 -Value at 7f404521615e is 1 -Value at 7f404521615f is 1 -Value at 7f4045216160 is 1 -Value at 7f4045216161 is 1 -Value at 7f4045216162 is 1 -Value at 7f4045216163 is 1 -Value at 7f4045216164 is 1 -Value at 7f4045216165 is 1 -Value at 7f4045216166 is 1 -Value at 7f4045216167 is 1 -Value at 7f4045216168 is 1 -Value at 7f4045216169 is 1 -Value at 7f404521616a is 1 -Value at 7f404521616b is 1 -Value at 7f404521616c is 1 -Value at 7f404521616d is 1 -Value at 7f404521616e is 1 -Value at 7f404521616f is 1 -Value at 7f4045216170 is 1 -Value at 7f4045216171 is 1 -Value at 7f4045216172 is 1 -Value at 7f4045216173 is 1 -Value at 7f4045216174 is 1 -Value at 7f4045216175 is 1 -Value at 7f4045216176 is 1 -Value at 7f4045216177 is 1 -Value at 7f4045216178 is 1 -Value at 7f4045216179 is 1 -Value at 7f404521617a is 1 -Value at 7f404521617b is 1 -Value at 7f404521617c is 1 -Value at 7f404521617d is 1 -Value at 7f404521617e is 1 -Value at 7f404521617f is 1 -Value at 7f4045216180 is 1 -Value at 7f4045216181 is 1 -Value at 7f4045216182 is 1 -Value at 7f4045216183 is 1 -Value at 7f4045216184 is 1 -Value at 7f4045216185 is 1 -Value at 7f4045216186 is 1 -Value at 7f4045216187 is 1 -Value at 7f4045216188 is 1 -Value at 7f4045216189 is 1 -Value at 7f404521618a is 1 -Value at 7f404521618b is 1 -Value at 7f404521618c is 1 -Value at 7f404521618d is 1 -Value at 7f404521618e is 1 -Value at 7f404521618f is 1 -Value at 7f4045216190 is 1 -Value at 7f4045216191 is 1 -Value at 7f4045216192 is 1 -Value at 7f4045216193 is 1 -Value at 7f4045216194 is 1 -Value at 7f4045216195 is 1 -Value at 7f4045216196 is 1 -Value at 7f4045216197 is 1 -Value at 7f4045216198 is 1 -Value at 7f4045216199 is 1 -Value at 7f404521619a is 1 -Value at 7f404521619b is 1 -Value at 7f404521619c is 1 -Value at 7f404521619d is 1 -Value at 7f404521619e is 1 -Value at 7f404521619f is 1 -Value at 7f40452161a0 is 1 -Value at 7f40452161a1 is 1 -Value at 7f40452161a2 is 1 -Value at 7f40452161a3 is 1 -Value at 7f40452161a4 is 1 -Value at 7f40452161a5 is 1 -Value at 7f40452161a6 is 1 -Value at 7f40452161a7 is 1 -Value at 7f40452161a8 is 1 -Value at 7f40452161a9 is 1 -Value at 7f40452161aa is 1 -Value at 7f40452161ab is 1 -Value at 7f40452161ac is 1 -Value at 7f40452161ad is 1 -Value at 7f40452161ae is 1 -Value at 7f40452161af is 1 -Value at 7f40452161b0 is 1 -Value at 7f40452161b1 is 1 -Value at 7f40452161b2 is 1 -Value at 7f40452161b3 is 1 -Value at 7f40452161b4 is 1 -Value at 7f40452161b5 is 1 -Value at 7f40452161b6 is 1 -Value at 7f40452161b7 is 1 -Value at 7f40452161b8 is 1 -Value at 7f40452161b9 is 1 -Value at 7f40452161ba is 1 -Value at 7f40452161bb is 1 -Value at 7f40452161bc is 1 -Value at 7f40452161bd is 1 -Value at 7f40452161be is 1 -Value at 7f40452161bf is 1 -Value at 7f40452161c0 is 1 -Value at 7f40452161c1 is 1 -Value at 7f40452161c2 is 1 -Value at 7f40452161c3 is 1 -Value at 7f40452161c4 is 1 -Value at 7f40452161c5 is 1 -Value at 7f40452161c6 is 1 -Value at 7f40452161c7 is 1 -Value at 7f40452161c8 is 1 -Value at 7f40452161c9 is 1 -Value at 7f40452161ca is 1 -Value at 7f40452161cb is 1 -Value at 7f40452161cc is 1 -Value at 7f40452161cd is 1 -Value at 7f40452161ce is 1 -Value at 7f40452161cf is 1 -Value at 7f40452161d0 is 1 -Value at 7f40452161d1 is 1 -Value at 7f40452161d2 is 1 -Value at 7f40452161d3 is 1 -Value at 7f40452161d4 is 1 -Value at 7f40452161d5 is 1 -Value at 7f40452161d6 is 1 -Value at 7f40452161d7 is 1 -Value at 7f40452161d8 is 1 -Value at 7f40452161d9 is 1 -Value at 7f40452161da is 1 -Value at 7f40452161db is 1 -Value at 7f40452161dc is 1 -Value at 7f40452161dd is 1 -Value at 7f40452161de is 1 -Value at 7f40452161df is 1 -Value at 7f40452161e0 is 1 -Value at 7f40452161e1 is 1 -Value at 7f40452161e2 is 1 -Value at 7f40452161e3 is 1 -Value at 7f40452161e4 is 1 -Value at 7f40452161e5 is 1 -Value at 7f40452161e6 is 1 -Value at 7f40452161e7 is 1 -Value at 7f40452161e8 is 1 -Value at 7f40452161e9 is 1 -Value at 7f40452161ea is 1 -Value at 7f40452161eb is 1 -Value at 7f40452161ec is 1 -Value at 7f40452161ed is 1 -Value at 7f40452161ee is 1 -Value at 7f40452161ef is 1 -Value at 7f40452161f0 is 1 -Value at 7f40452161f1 is 1 -Value at 7f40452161f2 is 1 -Value at 7f40452161f3 is 1 -Value at 7f40452161f4 is 1 -Value at 7f40452161f5 is 1 -Value at 7f40452161f6 is 1 -Value at 7f40452161f7 is 1 -Value at 7f40452161f8 is 1 -Value at 7f40452161f9 is 1 -Value at 7f40452161fa is 1 -Value at 7f40452161fb is 1 -Value at 7f40452161fc is 1 -Value at 7f40452161fd is 1 -Value at 7f40452161fe is 1 -Value at 7f40452161ff is 1 -Value at 7f4045216200 is 1 -Value at 7f4045216201 is 1 -Value at 7f4045216202 is 1 -Value at 7f4045216203 is 1 -Value at 7f4045216204 is 1 -Value at 7f4045216205 is 1 -Value at 7f4045216206 is 1 -Value at 7f4045216207 is 1 -Value at 7f4045216208 is 1 -Value at 7f4045216209 is 1 -Value at 7f404521620a is 1 -Value at 7f404521620b is 1 -Value at 7f404521620c is 1 -Value at 7f404521620d is 1 -Value at 7f404521620e is 1 -Value at 7f404521620f is 1 -Value at 7f4045216210 is 1 -Value at 7f4045216211 is 1 -Value at 7f4045216212 is 1 -Value at 7f4045216213 is 1 -Value at 7f4045216214 is 1 -Value at 7f4045216215 is 1 -Value at 7f4045216216 is 1 -Value at 7f4045216217 is 1 -Value at 7f4045216218 is 1 -Value at 7f4045216219 is 1 -Value at 7f404521621a is 1 -Value at 7f404521621b is 1 -Value at 7f404521621c is 1 -Value at 7f404521621d is 1 -Value at 7f404521621e is 1 -Value at 7f404521621f is 1 -Value at 7f4045216220 is 1 -Value at 7f4045216221 is 1 -Value at 7f4045216222 is 1 -Value at 7f4045216223 is 1 -Value at 7f4045216224 is 1 -Value at 7f4045216225 is 1 -Value at 7f4045216226 is 1 -Value at 7f4045216227 is 1 -Value at 7f4045216228 is 1 -Value at 7f4045216229 is 1 -Value at 7f404521622a is 1 -Value at 7f404521622b is 1 -Value at 7f404521622c is 1 -Value at 7f404521622d is 1 -Value at 7f404521622e is 1 -Value at 7f404521622f is 1 -Value at 7f4045216230 is 1 -Value at 7f4045216231 is 1 -Value at 7f4045216232 is 1 -Value at 7f4045216233 is 1 -Value at 7f4045216234 is 1 -Value at 7f4045216235 is 1 -Value at 7f4045216236 is 1 -Value at 7f4045216237 is 1 -Value at 7f4045216238 is 1 -Value at 7f4045216239 is 1 -Value at 7f404521623a is 1 -Value at 7f404521623b is 1 -Value at 7f404521623c is 1 -Value at 7f404521623d is 1 -Value at 7f404521623e is 1 -Value at 7f404521623f is 1 -Value at 7f4045216240 is 1 -Value at 7f4045216241 is 1 -Value at 7f4045216242 is 1 -Value at 7f4045216243 is 1 -Value at 7f4045216244 is 1 -Value at 7f4045216245 is 1 -Value at 7f4045216246 is 1 -Value at 7f4045216247 is 1 -Value at 7f4045216248 is 1 -Value at 7f4045216249 is 1 -Value at 7f404521624a is 1 -Value at 7f404521624b is 1 -Value at 7f404521624c is 1 -Value at 7f404521624d is 1 -Value at 7f404521624e is 1 -Value at 7f404521624f is 1 -Value at 7f4045216250 is 1 -Value at 7f4045216251 is 1 -Value at 7f4045216252 is 1 -Value at 7f4045216253 is 1 -Value at 7f4045216254 is 1 -Value at 7f4045216255 is 1 -Value at 7f4045216256 is 1 -Value at 7f4045216257 is 1 -Value at 7f4045216258 is 1 -Value at 7f4045216259 is 1 -Value at 7f404521625a is 1 -Value at 7f404521625b is 1 -Value at 7f404521625c is 1 -Value at 7f404521625d is 1 -Value at 7f404521625e is 1 -Value at 7f404521625f is 1 -Value at 7f4045216260 is 1 -Value at 7f4045216261 is 1 -Value at 7f4045216262 is 1 -Value at 7f4045216263 is 1 -Value at 7f4045216264 is 1 -Value at 7f4045216265 is 1 -Value at 7f4045216266 is 1 -Value at 7f4045216267 is 1 -Value at 7f4045216268 is 1 -Value at 7f4045216269 is 1 -Value at 7f404521626a is 1 -Value at 7f404521626b is 1 -Value at 7f404521626c is 1 -Value at 7f404521626d is 1 -Value at 7f404521626e is 1 -Value at 7f404521626f is 1 -Value at 7f4045216270 is 1 -Value at 7f4045216271 is 1 -Value at 7f4045216272 is 1 -Value at 7f4045216273 is 1 -Value at 7f4045216274 is 1 -Value at 7f4045216275 is 1 -Value at 7f4045216276 is 1 -Value at 7f4045216277 is 1 -Value at 7f4045216278 is 1 -Value at 7f4045216279 is 1 -Value at 7f404521627a is 1 -Value at 7f404521627b is 1 -Value at 7f404521627c is 1 -Value at 7f404521627d is 1 -Value at 7f404521627e is 1 -Value at 7f404521627f is 1 -Value at 7f4045216280 is 1 -Value at 7f4045216281 is 1 -Value at 7f4045216282 is 1 -Value at 7f4045216283 is 1 -Value at 7f4045216284 is 1 -Value at 7f4045216285 is 1 -Value at 7f4045216286 is 1 -Value at 7f4045216287 is 1 -Value at 7f4045216288 is 1 -Value at 7f4045216289 is 1 -Value at 7f404521628a is 1 -Value at 7f404521628b is 1 -Value at 7f404521628c is 1 -Value at 7f404521628d is 1 -Value at 7f404521628e is 1 -Value at 7f404521628f is 1 -Value at 7f4045216290 is 1 -Value at 7f4045216291 is 1 -Value at 7f4045216292 is 1 -Value at 7f4045216293 is 1 -Value at 7f4045216294 is 1 -Value at 7f4045216295 is 1 -Value at 7f4045216296 is 1 -Value at 7f4045216297 is 1 -Value at 7f4045216298 is 1 -Value at 7f4045216299 is 1 -Value at 7f404521629a is 1 -Value at 7f404521629b is 1 -Value at 7f404521629c is 1 -Value at 7f404521629d is 1 -Value at 7f404521629e is 1 -Value at 7f404521629f is 1 -Value at 7f40452162a0 is 1 -Value at 7f40452162a1 is 1 -Value at 7f40452162a2 is 1 -Value at 7f40452162a3 is 1 -Value at 7f40452162a4 is 1 -Value at 7f40452162a5 is 1 -Value at 7f40452162a6 is 1 -Value at 7f40452162a7 is 1 -Value at 7f40452162a8 is 1 -Value at 7f40452162a9 is 1 -Value at 7f40452162aa is 1 -Value at 7f40452162ab is 1 -Value at 7f40452162ac is 1 -Value at 7f40452162ad is 1 -Value at 7f40452162ae is 1 -Value at 7f40452162af is 1 -Value at 7f40452162b0 is 1 -Value at 7f40452162b1 is 1 -Value at 7f40452162b2 is 1 -Value at 7f40452162b3 is 1 -Value at 7f40452162b4 is 1 -Value at 7f40452162b5 is 1 -Value at 7f40452162b6 is 1 -Value at 7f40452162b7 is 1 -Value at 7f40452162b8 is 1 -Value at 7f40452162b9 is 1 -Value at 7f40452162ba is 1 -Value at 7f40452162bb is 1 -Value at 7f40452162bc is 1 -Value at 7f40452162bd is 1 -Value at 7f40452162be is 1 -Value at 7f40452162bf is 1 -Value at 7f40452162c0 is 1 -Value at 7f40452162c1 is 1 -Value at 7f40452162c2 is 1 -Value at 7f40452162c3 is 1 -Value at 7f40452162c4 is 1 -Value at 7f40452162c5 is 1 -Value at 7f40452162c6 is 1 -Value at 7f40452162c7 is 1 -Value at 7f40452162c8 is 1 -Value at 7f40452162c9 is 1 -Value at 7f40452162ca is 1 -Value at 7f40452162cb is 1 -Value at 7f40452162cc is 1 -Value at 7f40452162cd is 1 -Value at 7f40452162ce is 1 -Value at 7f40452162cf is 1 -Value at 7f40452162d0 is 1 -Value at 7f40452162d1 is 1 -Value at 7f40452162d2 is 1 -Value at 7f40452162d3 is 1 -Value at 7f40452162d4 is 1 -Value at 7f40452162d5 is 1 -Value at 7f40452162d6 is 1 -Value at 7f40452162d7 is 1 -Value at 7f40452162d8 is 1 -Value at 7f40452162d9 is 1 -Value at 7f40452162da is 1 -Value at 7f40452162db is 1 -Value at 7f40452162dc is 1 -Value at 7f40452162dd is 1 -Value at 7f40452162de is 1 -Value at 7f40452162df is 1 -Value at 7f40452162e0 is 1 -Value at 7f40452162e1 is 1 -Value at 7f40452162e2 is 1 -Value at 7f40452162e3 is 1 -Value at 7f40452162e4 is 1 -Value at 7f40452162e5 is 1 -Value at 7f40452162e6 is 1 -Value at 7f40452162e7 is 1 -Value at 7f40452162e8 is 1 -Value at 7f40452162e9 is 1 -Value at 7f40452162ea is 1 -Value at 7f40452162eb is 1 -Value at 7f40452162ec is 1 -Value at 7f40452162ed is 1 -Value at 7f40452162ee is 1 -Value at 7f40452162ef is 1 -Value at 7f40452162f0 is 1 -Value at 7f40452162f1 is 1 -Value at 7f40452162f2 is 1 -Value at 7f40452162f3 is 1 -Value at 7f40452162f4 is 1 -Value at 7f40452162f5 is 1 -Value at 7f40452162f6 is 1 -Value at 7f40452162f7 is 1 -Value at 7f40452162f8 is 1 -Value at 7f40452162f9 is 1 -Value at 7f40452162fa is 1 -Value at 7f40452162fb is 1 -Value at 7f40452162fc is 1 -Value at 7f40452162fd is 1 -Value at 7f40452162fe is 1 -Value at 7f40452162ff is 1 -Value at 7f4045216300 is 1 -Value at 7f4045216301 is 1 -Value at 7f4045216302 is 1 -Value at 7f4045216303 is 1 -Value at 7f4045216304 is 1 -Value at 7f4045216305 is 1 -Value at 7f4045216306 is 1 -Value at 7f4045216307 is 1 -Value at 7f4045216308 is 1 -Value at 7f4045216309 is 1 -Value at 7f404521630a is 1 -Value at 7f404521630b is 1 -Value at 7f404521630c is 1 -Value at 7f404521630d is 1 -Value at 7f404521630e is 1 -Value at 7f404521630f is 1 -Value at 7f4045216310 is 1 -Value at 7f4045216311 is 1 -Value at 7f4045216312 is 1 -Value at 7f4045216313 is 1 -Value at 7f4045216314 is 1 -Value at 7f4045216315 is 1 -Value at 7f4045216316 is 1 -Value at 7f4045216317 is 1 -Value at 7f4045216318 is 1 -Value at 7f4045216319 is 1 -Value at 7f404521631a is 1 -Value at 7f404521631b is 1 -Value at 7f404521631c is 1 -Value at 7f404521631d is 1 -Value at 7f404521631e is 1 -Value at 7f404521631f is 1 -Value at 7f4045216320 is 1 -Value at 7f4045216321 is 1 -Value at 7f4045216322 is 1 -Value at 7f4045216323 is 1 -Value at 7f4045216324 is 1 -Value at 7f4045216325 is 1 -Value at 7f4045216326 is 1 -Value at 7f4045216327 is 1 -Value at 7f4045216328 is 1 -Value at 7f4045216329 is 1 -Value at 7f404521632a is 1 -Value at 7f404521632b is 1 -Value at 7f404521632c is 1 -Value at 7f404521632d is 1 -Value at 7f404521632e is 1 -Value at 7f404521632f is 1 -Value at 7f4045216330 is 1 -Value at 7f4045216331 is 1 -Value at 7f4045216332 is 1 -Value at 7f4045216333 is 1 -Value at 7f4045216334 is 1 -Value at 7f4045216335 is 1 -Value at 7f4045216336 is 1 -Value at 7f4045216337 is 1 -Value at 7f4045216338 is 1 -Value at 7f4045216339 is 1 -Value at 7f404521633a is 1 -Value at 7f404521633b is 1 -Value at 7f404521633c is 1 -Value at 7f404521633d is 1 -Value at 7f404521633e is 1 -Value at 7f404521633f is 1 -Value at 7f4045216340 is 1 -Value at 7f4045216341 is 1 -Value at 7f4045216342 is 1 -Value at 7f4045216343 is 1 -Value at 7f4045216344 is 1 -Value at 7f4045216345 is 1 -Value at 7f4045216346 is 1 -Value at 7f4045216347 is 1 -Value at 7f4045216348 is 1 -Value at 7f4045216349 is 1 -Value at 7f404521634a is 1 -Value at 7f404521634b is 1 -Value at 7f404521634c is 1 -Value at 7f404521634d is 1 -Value at 7f404521634e is 1 -Value at 7f404521634f is 1 -Value at 7f4045216350 is 1 -Value at 7f4045216351 is 1 -Value at 7f4045216352 is 1 -Value at 7f4045216353 is 1 -Value at 7f4045216354 is 1 -Value at 7f4045216355 is 1 -Value at 7f4045216356 is 1 -Value at 7f4045216357 is 1 -Value at 7f4045216358 is 1 -Value at 7f4045216359 is 1 -Value at 7f404521635a is 1 -Value at 7f404521635b is 1 -Value at 7f404521635c is 1 -Value at 7f404521635d is 1 -Value at 7f404521635e is 1 -Value at 7f404521635f is 1 -Value at 7f4045216360 is 1 -Value at 7f4045216361 is 1 -Value at 7f4045216362 is 1 -Value at 7f4045216363 is 1 -Value at 7f4045216364 is 1 -Value at 7f4045216365 is 1 -Value at 7f4045216366 is 1 -Value at 7f4045216367 is 1 -Value at 7f4045216368 is 1 -Value at 7f4045216369 is 1 -Value at 7f404521636a is 1 -Value at 7f404521636b is 1 -Value at 7f404521636c is 1 -Value at 7f404521636d is 1 -Value at 7f404521636e is 1 -Value at 7f404521636f is 1 -Value at 7f4045216370 is 1 -Value at 7f4045216371 is 1 -Value at 7f4045216372 is 1 -Value at 7f4045216373 is 1 -Value at 7f4045216374 is 1 -Value at 7f4045216375 is 1 -Value at 7f4045216376 is 1 -Value at 7f4045216377 is 1 -Value at 7f4045216378 is 1 -Value at 7f4045216379 is 1 -Value at 7f404521637a is 1 -Value at 7f404521637b is 1 -Value at 7f404521637c is 1 -Value at 7f404521637d is 1 -Value at 7f404521637e is 1 -Value at 7f404521637f is 1 -Value at 7f4045216380 is 1 -Value at 7f4045216381 is 1 -Value at 7f4045216382 is 1 -Value at 7f4045216383 is 1 -Value at 7f4045216384 is 1 -Value at 7f4045216385 is 1 -Value at 7f4045216386 is 1 -Value at 7f4045216387 is 1 -Value at 7f4045216388 is 1 -Value at 7f4045216389 is 1 -Value at 7f404521638a is 1 -Value at 7f404521638b is 1 -Value at 7f404521638c is 1 -Value at 7f404521638d is 1 -Value at 7f404521638e is 1 -Value at 7f404521638f is 1 -Value at 7f4045216390 is 1 -Value at 7f4045216391 is 1 -Value at 7f4045216392 is 1 -Value at 7f4045216393 is 1 -Value at 7f4045216394 is 1 -Value at 7f4045216395 is 1 -Value at 7f4045216396 is 1 -Value at 7f4045216397 is 1 -Value at 7f4045216398 is 1 -Value at 7f4045216399 is 1 -Value at 7f404521639a is 1 -Value at 7f404521639b is 1 -Value at 7f404521639c is 1 -Value at 7f404521639d is 1 -Value at 7f404521639e is 1 -Value at 7f404521639f is 1 -Value at 7f40452163a0 is 1 -Value at 7f40452163a1 is 1 -Value at 7f40452163a2 is 1 -Value at 7f40452163a3 is 1 -Value at 7f40452163a4 is 1 -Value at 7f40452163a5 is 1 -Value at 7f40452163a6 is 1 -Value at 7f40452163a7 is 1 -Value at 7f40452163a8 is 1 -Value at 7f40452163a9 is 1 -Value at 7f40452163aa is 1 -Value at 7f40452163ab is 1 -Value at 7f40452163ac is 1 -Value at 7f40452163ad is 1 -Value at 7f40452163ae is 1 -Value at 7f40452163af is 1 -Value at 7f40452163b0 is 1 -Value at 7f40452163b1 is 1 -Value at 7f40452163b2 is 1 -Value at 7f40452163b3 is 1 -Value at 7f40452163b4 is 1 -Value at 7f40452163b5 is 1 -Value at 7f40452163b6 is 1 -Value at 7f40452163b7 is 1 -Value at 7f40452163b8 is 1 -Value at 7f40452163b9 is 1 -Value at 7f40452163ba is 1 -Value at 7f40452163bb is 1 -Value at 7f40452163bc is 1 -Value at 7f40452163bd is 1 -Value at 7f40452163be is 1 -Value at 7f40452163bf is 1 -Value at 7f40452163c0 is 1 -Value at 7f40452163c1 is 1 -Value at 7f40452163c2 is 1 -Value at 7f40452163c3 is 1 -Value at 7f40452163c4 is 1 -Value at 7f40452163c5 is 1 -Value at 7f40452163c6 is 1 -Value at 7f40452163c7 is 1 -Value at 7f40452163c8 is 1 -Value at 7f40452163c9 is 1 -Value at 7f40452163ca is 1 -Value at 7f40452163cb is 1 -Value at 7f40452163cc is 1 -Value at 7f40452163cd is 1 -Value at 7f40452163ce is 1 -Value at 7f40452163cf is 1 -Value at 7f40452163d0 is 1 -Value at 7f40452163d1 is 1 -Value at 7f40452163d2 is 1 -Value at 7f40452163d3 is 1 -Value at 7f40452163d4 is 1 -Value at 7f40452163d5 is 1 -Value at 7f40452163d6 is 1 -Value at 7f40452163d7 is 1 -Value at 7f40452163d8 is 1 -Value at 7f40452163d9 is 1 -Value at 7f40452163da is 1 -Value at 7f40452163db is 1 -Value at 7f40452163dc is 1 -Value at 7f40452163dd is 1 -Value at 7f40452163de is 1 -Value at 7f40452163df is 1 -Value at 7f40452163e0 is 1 -Value at 7f40452163e1 is 1 -Value at 7f40452163e2 is 1 -Value at 7f40452163e3 is 1 -Value at 7f40452163e4 is 1 -Value at 7f40452163e5 is 1 -Value at 7f40452163e6 is 1 -Value at 7f40452163e7 is 1 -Value at 7f40452163e8 is 1 -Value at 7f40452163e9 is 1 -Value at 7f40452163ea is 1 -Value at 7f40452163eb is 1 -Value at 7f40452163ec is 1 -Value at 7f40452163ed is 1 -Value at 7f40452163ee is 1 -Value at 7f40452163ef is 1 -Value at 7f40452163f0 is 1 -Value at 7f40452163f1 is 1 -Value at 7f40452163f2 is 1 -Value at 7f40452163f3 is 1 -Value at 7f40452163f4 is 1 -Value at 7f40452163f5 is 1 -Value at 7f40452163f6 is 1 -Value at 7f40452163f7 is 1 -Value at 7f40452163f8 is 1 -Value at 7f40452163f9 is 1 -Value at 7f40452163fa is 1 -Value at 7f40452163fb is 1 -Value at 7f40452163fc is 1 -Value at 7f40452163fd is 1 -Value at 7f40452163fe is 1 -Value at 7f40452163ff is 1 -Value at 7f4045216400 is 1 -Value at 7f4045216401 is 1 -Value at 7f4045216402 is 1 -Value at 7f4045216403 is 1 -Value at 7f4045216404 is 1 -Value at 7f4045216405 is 1 -Value at 7f4045216406 is 1 -Value at 7f4045216407 is 1 -Value at 7f4045216408 is 1 -Value at 7f4045216409 is 1 -Value at 7f404521640a is 1 -Value at 7f404521640b is 1 -Value at 7f404521640c is 1 -Value at 7f404521640d is 1 -Value at 7f404521640e is 1 -Value at 7f404521640f is 1 -Value at 7f4045216410 is 1 -Value at 7f4045216411 is 1 -Value at 7f4045216412 is 1 -Value at 7f4045216413 is 1 -Value at 7f4045216414 is 1 -Value at 7f4045216415 is 1 -Value at 7f4045216416 is 1 -Value at 7f4045216417 is 1 -Value at 7f4045216418 is 1 -Value at 7f4045216419 is 1 -Value at 7f404521641a is 1 -Value at 7f404521641b is 1 -Value at 7f404521641c is 1 -Value at 7f404521641d is 1 -Value at 7f404521641e is 1 -Value at 7f404521641f is 1 -Value at 7f4045216420 is 1 -Value at 7f4045216421 is 1 -Value at 7f4045216422 is 1 -Value at 7f4045216423 is 1 -Value at 7f4045216424 is 1 -Value at 7f4045216425 is 1 -Value at 7f4045216426 is 1 -Value at 7f4045216427 is 1 -Value at 7f4045216428 is 1 -Value at 7f4045216429 is 1 -Value at 7f404521642a is 1 -Value at 7f404521642b is 1 -Value at 7f404521642c is 1 -Value at 7f404521642d is 1 -Value at 7f404521642e is 1 -Value at 7f404521642f is 1 -Value at 7f4045216430 is 1 -Value at 7f4045216431 is 1 -Value at 7f4045216432 is 1 -Value at 7f4045216433 is 1 -Value at 7f4045216434 is 1 -Value at 7f4045216435 is 1 -Value at 7f4045216436 is 1 -Value at 7f4045216437 is 1 -Value at 7f4045216438 is 1 -Value at 7f4045216439 is 1 -Value at 7f404521643a is 1 -Value at 7f404521643b is 1 -Value at 7f404521643c is 1 -Value at 7f404521643d is 1 -Value at 7f404521643e is 1 -Value at 7f404521643f is 1 -Value at 7f4045216440 is 1 -Value at 7f4045216441 is 1 -Value at 7f4045216442 is 1 -Value at 7f4045216443 is 1 -Value at 7f4045216444 is 1 -Value at 7f4045216445 is 1 -Value at 7f4045216446 is 1 -Value at 7f4045216447 is 1 -Value at 7f4045216448 is 1 -Value at 7f4045216449 is 1 -Value at 7f404521644a is 1 -Value at 7f404521644b is 1 -Value at 7f404521644c is 1 -Value at 7f404521644d is 1 -Value at 7f404521644e is 1 -Value at 7f404521644f is 1 -Value at 7f4045216450 is 1 -Value at 7f4045216451 is 1 -Value at 7f4045216452 is 1 -Value at 7f4045216453 is 1 -Value at 7f4045216454 is 1 -Value at 7f4045216455 is 1 -Value at 7f4045216456 is 1 -Value at 7f4045216457 is 1 -Value at 7f4045216458 is 1 -Value at 7f4045216459 is 1 -Value at 7f404521645a is 1 -Value at 7f404521645b is 1 -Value at 7f404521645c is 1 -Value at 7f404521645d is 1 -Value at 7f404521645e is 1 -Value at 7f404521645f is 1 -Value at 7f4045216460 is 1 -Value at 7f4045216461 is 1 -Value at 7f4045216462 is 1 -Value at 7f4045216463 is 1 -Value at 7f4045216464 is 1 -Value at 7f4045216465 is 1 -Value at 7f4045216466 is 1 -Value at 7f4045216467 is 1 -Value at 7f4045216468 is 1 -Value at 7f4045216469 is 1 -Value at 7f404521646a is 1 -Value at 7f404521646b is 1 -Value at 7f404521646c is 1 -Value at 7f404521646d is 1 -Value at 7f404521646e is 1 -Value at 7f404521646f is 1 -Value at 7f4045216470 is 1 -Value at 7f4045216471 is 1 -Value at 7f4045216472 is 1 -Value at 7f4045216473 is 1 -Value at 7f4045216474 is 1 -Value at 7f4045216475 is 1 -Value at 7f4045216476 is 1 -Value at 7f4045216477 is 1 -Value at 7f4045216478 is 1 -Value at 7f4045216479 is 1 -Value at 7f404521647a is 1 -Value at 7f404521647b is 1 -Value at 7f404521647c is 1 -Value at 7f404521647d is 1 -Value at 7f404521647e is 1 -Value at 7f404521647f is 1 -Value at 7f4045216480 is 1 -Value at 7f4045216481 is 1 -Value at 7f4045216482 is 1 -Value at 7f4045216483 is 1 -Value at 7f4045216484 is 1 -Value at 7f4045216485 is 1 -Value at 7f4045216486 is 1 -Value at 7f4045216487 is 1 -Value at 7f4045216488 is 1 -Value at 7f4045216489 is 1 -Value at 7f404521648a is 1 -Value at 7f404521648b is 1 -Value at 7f404521648c is 1 -Value at 7f404521648d is 1 -Value at 7f404521648e is 1 -Value at 7f404521648f is 1 -Value at 7f4045216490 is 1 -Value at 7f4045216491 is 1 -Value at 7f4045216492 is 1 -Value at 7f4045216493 is 1 -Value at 7f4045216494 is 1 -Value at 7f4045216495 is 1 -Value at 7f4045216496 is 1 -Value at 7f4045216497 is 1 -Value at 7f4045216498 is 1 -Value at 7f4045216499 is 1 -Value at 7f404521649a is 1 -Value at 7f404521649b is 1 -Value at 7f404521649c is 1 -Value at 7f404521649d is 1 -Value at 7f404521649e is 1 -Value at 7f404521649f is 1 -Value at 7f40452164a0 is 1 -Value at 7f40452164a1 is 1 -Value at 7f40452164a2 is 1 -Value at 7f40452164a3 is 1 -Value at 7f40452164a4 is 1 -Value at 7f40452164a5 is 1 -Value at 7f40452164a6 is 1 -Value at 7f40452164a7 is 1 -Value at 7f40452164a8 is 1 -Value at 7f40452164a9 is 1 -Value at 7f40452164aa is 1 -Value at 7f40452164ab is 1 -Value at 7f40452164ac is 1 -Value at 7f40452164ad is 1 -Value at 7f40452164ae is 1 -Value at 7f40452164af is 1 -Value at 7f40452164b0 is 1 -Value at 7f40452164b1 is 1 -Value at 7f40452164b2 is 1 -Value at 7f40452164b3 is 1 -Value at 7f40452164b4 is 1 -Value at 7f40452164b5 is 1 -Value at 7f40452164b6 is 1 -Value at 7f40452164b7 is 1 -Value at 7f40452164b8 is 1 -Value at 7f40452164b9 is 1 -Value at 7f40452164ba is 1 -Value at 7f40452164bb is 1 -Value at 7f40452164bc is 1 -Value at 7f40452164bd is 1 -Value at 7f40452164be is 1 -Value at 7f40452164bf is 1 -Value at 7f40452164c0 is 1 -Value at 7f40452164c1 is 1 -Value at 7f40452164c2 is 1 -Value at 7f40452164c3 is 1 -Value at 7f40452164c4 is 1 -Value at 7f40452164c5 is 1 -Value at 7f40452164c6 is 1 -Value at 7f40452164c7 is 1 -Value at 7f40452164c8 is 1 -Value at 7f40452164c9 is 1 -Value at 7f40452164ca is 1 -Value at 7f40452164cb is 1 -Value at 7f40452164cc is 1 -Value at 7f40452164cd is 1 -Value at 7f40452164ce is 1 -Value at 7f40452164cf is 1 -Value at 7f40452164d0 is 1 -Value at 7f40452164d1 is 1 -Value at 7f40452164d2 is 1 -Value at 7f40452164d3 is 1 -Value at 7f40452164d4 is 1 -Value at 7f40452164d5 is 1 -Value at 7f40452164d6 is 1 -Value at 7f40452164d7 is 1 -Value at 7f40452164d8 is 1 -Value at 7f40452164d9 is 1 -Value at 7f40452164da is 1 -Value at 7f40452164db is 1 -Value at 7f40452164dc is 1 -Value at 7f40452164dd is 1 -Value at 7f40452164de is 1 -Value at 7f40452164df is 1 -Value at 7f40452164e0 is 1 -Value at 7f40452164e1 is 1 -Value at 7f40452164e2 is 1 -Value at 7f40452164e3 is 1 -Value at 7f40452164e4 is 1 -Value at 7f40452164e5 is 1 -Value at 7f40452164e6 is 1 -Value at 7f40452164e7 is 1 -Value at 7f40452164e8 is 1 -Value at 7f40452164e9 is 1 -Value at 7f40452164ea is 1 -Value at 7f40452164eb is 1 -Value at 7f40452164ec is 1 -Value at 7f40452164ed is 1 -Value at 7f40452164ee is 1 -Value at 7f40452164ef is 1 -Value at 7f40452164f0 is 1 -Value at 7f40452164f1 is 1 -Value at 7f40452164f2 is 1 -Value at 7f40452164f3 is 1 -Value at 7f40452164f4 is 1 -Value at 7f40452164f5 is 1 -Value at 7f40452164f6 is 1 -Value at 7f40452164f7 is 1 -Value at 7f40452164f8 is 1 -Value at 7f40452164f9 is 1 -Value at 7f40452164fa is 1 -Value at 7f40452164fb is 1 -Value at 7f40452164fc is 1 -Value at 7f40452164fd is 1 -Value at 7f40452164fe is 1 -Value at 7f40452164ff is 1 -Value at 7f4045216500 is 1 -Value at 7f4045216501 is 1 -Value at 7f4045216502 is 1 -Value at 7f4045216503 is 1 -Value at 7f4045216504 is 1 -Value at 7f4045216505 is 1 -Value at 7f4045216506 is 1 -Value at 7f4045216507 is 1 -Value at 7f4045216508 is 1 -Value at 7f4045216509 is 1 -Value at 7f404521650a is 1 -Value at 7f404521650b is 1 -Value at 7f404521650c is 1 -Value at 7f404521650d is 1 -Value at 7f404521650e is 1 -Value at 7f404521650f is 1 -Value at 7f4045216510 is 1 -Value at 7f4045216511 is 1 -Value at 7f4045216512 is 1 -Value at 7f4045216513 is 1 -Value at 7f4045216514 is 1 -Value at 7f4045216515 is 1 -Value at 7f4045216516 is 1 -Value at 7f4045216517 is 1 -Value at 7f4045216518 is 1 -Value at 7f4045216519 is 1 -Value at 7f404521651a is 1 -Value at 7f404521651b is 1 -Value at 7f404521651c is 1 -Value at 7f404521651d is 1 -Value at 7f404521651e is 1 -Value at 7f404521651f is 1 -Value at 7f4045216520 is 1 -Value at 7f4045216521 is 1 -Value at 7f4045216522 is 1 -Value at 7f4045216523 is 1 -Value at 7f4045216524 is 1 -Value at 7f4045216525 is 1 -Value at 7f4045216526 is 1 -Value at 7f4045216527 is 1 -Value at 7f4045216528 is 1 -Value at 7f4045216529 is 1 -Value at 7f404521652a is 1 -Value at 7f404521652b is 1 -Value at 7f404521652c is 1 -Value at 7f404521652d is 1 -Value at 7f404521652e is 1 -Value at 7f404521652f is 1 -Value at 7f4045216530 is 1 -Value at 7f4045216531 is 1 -Value at 7f4045216532 is 1 -Value at 7f4045216533 is 1 -Value at 7f4045216534 is 1 -Value at 7f4045216535 is 1 -Value at 7f4045216536 is 1 -Value at 7f4045216537 is 1 -Value at 7f4045216538 is 1 -Value at 7f4045216539 is 1 -Value at 7f404521653a is 1 -Value at 7f404521653b is 1 -Value at 7f404521653c is 1 -Value at 7f404521653d is 1 -Value at 7f404521653e is 1 -Value at 7f404521653f is 1 -Value at 7f4045216540 is 1 -Value at 7f4045216541 is 1 -Value at 7f4045216542 is 1 -Value at 7f4045216543 is 1 -Value at 7f4045216544 is 1 -Value at 7f4045216545 is 1 -Value at 7f4045216546 is 1 -Value at 7f4045216547 is 1 -Value at 7f4045216548 is 1 -Value at 7f4045216549 is 1 -Value at 7f404521654a is 1 -Value at 7f404521654b is 1 -Value at 7f404521654c is 1 -Value at 7f404521654d is 1 -Value at 7f404521654e is 1 -Value at 7f404521654f is 1 -Value at 7f4045216550 is 1 -Value at 7f4045216551 is 1 -Value at 7f4045216552 is 1 -Value at 7f4045216553 is 1 -Value at 7f4045216554 is 1 -Value at 7f4045216555 is 1 -Value at 7f4045216556 is 1 -Value at 7f4045216557 is 1 -Value at 7f4045216558 is 1 -Value at 7f4045216559 is 1 -Value at 7f404521655a is 1 -Value at 7f404521655b is 1 -Value at 7f404521655c is 1 -Value at 7f404521655d is 1 -Value at 7f404521655e is 1 -Value at 7f404521655f is 1 -Value at 7f4045216560 is 1 -Value at 7f4045216561 is 1 -Value at 7f4045216562 is 1 -Value at 7f4045216563 is 1 -Value at 7f4045216564 is 1 -Value at 7f4045216565 is 1 -Value at 7f4045216566 is 1 -Value at 7f4045216567 is 1 -Value at 7f4045216568 is 1 -Value at 7f4045216569 is 1 -Value at 7f404521656a is 1 -Value at 7f404521656b is 1 -Value at 7f404521656c is 1 -Value at 7f404521656d is 1 -Value at 7f404521656e is 1 -Value at 7f404521656f is 1 -Value at 7f4045216570 is 1 -Value at 7f4045216571 is 1 -Value at 7f4045216572 is 1 -Value at 7f4045216573 is 1 -Value at 7f4045216574 is 1 -Value at 7f4045216575 is 1 -Value at 7f4045216576 is 1 -Value at 7f4045216577 is 1 -Value at 7f4045216578 is 1 -Value at 7f4045216579 is 1 -Value at 7f404521657a is 1 -Value at 7f404521657b is 1 -Value at 7f404521657c is 1 -Value at 7f404521657d is 1 -Value at 7f404521657e is 1 -Value at 7f404521657f is 1 -Value at 7f4045216580 is 1 -Value at 7f4045216581 is 1 -Value at 7f4045216582 is 1 -Value at 7f4045216583 is 1 -Value at 7f4045216584 is 1 -Value at 7f4045216585 is 1 -Value at 7f4045216586 is 1 -Value at 7f4045216587 is 1 -Value at 7f4045216588 is 1 -Value at 7f4045216589 is 1 -Value at 7f404521658a is 1 -Value at 7f404521658b is 1 -Value at 7f404521658c is 1 -Value at 7f404521658d is 1 -Value at 7f404521658e is 1 -Value at 7f404521658f is 1 -Value at 7f4045216590 is 1 -Value at 7f4045216591 is 1 -Value at 7f4045216592 is 1 -Value at 7f4045216593 is 1 -Value at 7f4045216594 is 1 -Value at 7f4045216595 is 1 -Value at 7f4045216596 is 1 -Value at 7f4045216597 is 1 -Value at 7f4045216598 is 1 -Value at 7f4045216599 is 1 -Value at 7f404521659a is 1 -Value at 7f404521659b is 1 -Value at 7f404521659c is 1 -Value at 7f404521659d is 1 -Value at 7f404521659e is 1 -Value at 7f404521659f is 1 -Value at 7f40452165a0 is 1 -Value at 7f40452165a1 is 1 -Value at 7f40452165a2 is 1 -Value at 7f40452165a3 is 1 -Value at 7f40452165a4 is 1 -Value at 7f40452165a5 is 1 -Value at 7f40452165a6 is 1 -Value at 7f40452165a7 is 1 -Value at 7f40452165a8 is 1 -Value at 7f40452165a9 is 1 -Value at 7f40452165aa is 1 -Value at 7f40452165ab is 1 -Value at 7f40452165ac is 1 -Value at 7f40452165ad is 1 -Value at 7f40452165ae is 1 -Value at 7f40452165af is 1 -Value at 7f40452165b0 is 1 -Value at 7f40452165b1 is 1 -Value at 7f40452165b2 is 1 -Value at 7f40452165b3 is 1 -Value at 7f40452165b4 is 1 -Value at 7f40452165b5 is 1 -Value at 7f40452165b6 is 1 -Value at 7f40452165b7 is 1 -Value at 7f40452165b8 is 1 -Value at 7f40452165b9 is 1 -Value at 7f40452165ba is 1 -Value at 7f40452165bb is 1 -Value at 7f40452165bc is 1 -Value at 7f40452165bd is 1 -Value at 7f40452165be is 1 -Value at 7f40452165bf is 1 -Value at 7f40452165c0 is 1 -Value at 7f40452165c1 is 1 -Value at 7f40452165c2 is 1 -Value at 7f40452165c3 is 1 -Value at 7f40452165c4 is 1 -Value at 7f40452165c5 is 1 -Value at 7f40452165c6 is 1 -Value at 7f40452165c7 is 1 -Value at 7f40452165c8 is 1 -Value at 7f40452165c9 is 1 -Value at 7f40452165ca is 1 -Value at 7f40452165cb is 1 -Value at 7f40452165cc is 1 -Value at 7f40452165cd is 1 -Value at 7f40452165ce is 1 -Value at 7f40452165cf is 1 -Value at 7f40452165d0 is 1 -Value at 7f40452165d1 is 1 -Value at 7f40452165d2 is 1 -Value at 7f40452165d3 is 1 -Value at 7f40452165d4 is 1 -Value at 7f40452165d5 is 1 -Value at 7f40452165d6 is 1 -Value at 7f40452165d7 is 1 -Value at 7f40452165d8 is 1 -Value at 7f40452165d9 is 1 -Value at 7f40452165da is 1 -Value at 7f40452165db is 1 -Value at 7f40452165dc is 1 -Value at 7f40452165dd is 1 -Value at 7f40452165de is 1 -Value at 7f40452165df is 1 -Value at 7f40452165e0 is 1 -Value at 7f40452165e1 is 1 -Value at 7f40452165e2 is 1 -Value at 7f40452165e3 is 1 -Value at 7f40452165e4 is 1 -Value at 7f40452165e5 is 1 -Value at 7f40452165e6 is 1 -Value at 7f40452165e7 is 1 -Value at 7f40452165e8 is 1 -Value at 7f40452165e9 is 1 -Value at 7f40452165ea is 1 -Value at 7f40452165eb is 1 -Value at 7f40452165ec is 1 -Value at 7f40452165ed is 1 -Value at 7f40452165ee is 1 -Value at 7f40452165ef is 1 -Value at 7f40452165f0 is 1 -Value at 7f40452165f1 is 1 -Value at 7f40452165f2 is 1 -Value at 7f40452165f3 is 1 -Value at 7f40452165f4 is 1 -Value at 7f40452165f5 is 1 -Value at 7f40452165f6 is 1 -Value at 7f40452165f7 is 1 -Value at 7f40452165f8 is 1 -Value at 7f40452165f9 is 1 -Value at 7f40452165fa is 1 -Value at 7f40452165fb is 1 -Value at 7f40452165fc is 1 -Value at 7f40452165fd is 1 -Value at 7f40452165fe is 1 -Value at 7f40452165ff is 1 -Value at 7f4045216600 is 1 -Value at 7f4045216601 is 1 -Value at 7f4045216602 is 1 -Value at 7f4045216603 is 1 -Value at 7f4045216604 is 1 -Value at 7f4045216605 is 1 -Value at 7f4045216606 is 1 -Value at 7f4045216607 is 1 -Value at 7f4045216608 is 1 -Value at 7f4045216609 is 1 -Value at 7f404521660a is 1 -Value at 7f404521660b is 1 -Value at 7f404521660c is 1 -Value at 7f404521660d is 1 -Value at 7f404521660e is 1 -Value at 7f404521660f is 1 -Value at 7f4045216610 is 1 -Value at 7f4045216611 is 1 -Value at 7f4045216612 is 1 -Value at 7f4045216613 is 1 -Value at 7f4045216614 is 1 -Value at 7f4045216615 is 1 -Value at 7f4045216616 is 1 -Value at 7f4045216617 is 1 -Value at 7f4045216618 is 1 -Value at 7f4045216619 is 1 -Value at 7f404521661a is 1 -Value at 7f404521661b is 1 -Value at 7f404521661c is 1 -Value at 7f404521661d is 1 -Value at 7f404521661e is 1 -Value at 7f404521661f is 1 -Value at 7f4045216620 is 1 -Value at 7f4045216621 is 1 -Value at 7f4045216622 is 1 -Value at 7f4045216623 is 1 -Value at 7f4045216624 is 1 -Value at 7f4045216625 is 1 -Value at 7f4045216626 is 1 -Value at 7f4045216627 is 1 -Value at 7f4045216628 is 1 -Value at 7f4045216629 is 1 -Value at 7f404521662a is 1 -Value at 7f404521662b is 1 -Value at 7f404521662c is 1 -Value at 7f404521662d is 1 -Value at 7f404521662e is 1 -Value at 7f404521662f is 1 -Value at 7f4045216630 is 1 -Value at 7f4045216631 is 1 -Value at 7f4045216632 is 1 -Value at 7f4045216633 is 1 -Value at 7f4045216634 is 1 -Value at 7f4045216635 is 1 -Value at 7f4045216636 is 1 -Value at 7f4045216637 is 1 -Value at 7f4045216638 is 1 -Value at 7f4045216639 is 1 -Value at 7f404521663a is 1 -Value at 7f404521663b is 1 -Value at 7f404521663c is 1 -Value at 7f404521663d is 1 -Value at 7f404521663e is 1 -Value at 7f404521663f is 1 -Value at 7f4045216640 is 1 -Value at 7f4045216641 is 1 -Value at 7f4045216642 is 1 -Value at 7f4045216643 is 1 -Value at 7f4045216644 is 1 -Value at 7f4045216645 is 1 -Value at 7f4045216646 is 1 -Value at 7f4045216647 is 1 -Value at 7f4045216648 is 1 -Value at 7f4045216649 is 1 -Value at 7f404521664a is 1 -Value at 7f404521664b is 1 -Value at 7f404521664c is 1 -Value at 7f404521664d is 1 -Value at 7f404521664e is 1 -Value at 7f404521664f is 1 -Value at 7f4045216650 is 1 -Value at 7f4045216651 is 1 -Value at 7f4045216652 is 1 -Value at 7f4045216653 is 1 -Value at 7f4045216654 is 1 -Value at 7f4045216655 is 1 -Value at 7f4045216656 is 1 -Value at 7f4045216657 is 1 -Value at 7f4045216658 is 1 -Value at 7f4045216659 is 1 -Value at 7f404521665a is 1 -Value at 7f404521665b is 1 -Value at 7f404521665c is 1 -Value at 7f404521665d is 1 -Value at 7f404521665e is 1 -Value at 7f404521665f is 1 -Value at 7f4045216660 is 1 -Value at 7f4045216661 is 1 -Value at 7f4045216662 is 1 -Value at 7f4045216663 is 1 -Value at 7f4045216664 is 1 -Value at 7f4045216665 is 1 -Value at 7f4045216666 is 1 -Value at 7f4045216667 is 1 -Value at 7f4045216668 is 1 -Value at 7f4045216669 is 1 -Value at 7f404521666a is 1 -Value at 7f404521666b is 1 -Value at 7f404521666c is 1 -Value at 7f404521666d is 1 -Value at 7f404521666e is 1 -Value at 7f404521666f is 1 -Value at 7f4045216670 is 1 -Value at 7f4045216671 is 1 -Value at 7f4045216672 is 1 -Value at 7f4045216673 is 1 -Value at 7f4045216674 is 1 -Value at 7f4045216675 is 1 -Value at 7f4045216676 is 1 -Value at 7f4045216677 is 1 -Value at 7f4045216678 is 1 -Value at 7f4045216679 is 1 -Value at 7f404521667a is 1 -Value at 7f404521667b is 1 -Value at 7f404521667c is 1 -Value at 7f404521667d is 1 -Value at 7f404521667e is 1 -Value at 7f404521667f is 1 -Value at 7f4045216680 is 1 -Value at 7f4045216681 is 1 -Value at 7f4045216682 is 1 -Value at 7f4045216683 is 1 -Value at 7f4045216684 is 1 -Value at 7f4045216685 is 1 -Value at 7f4045216686 is 1 -Value at 7f4045216687 is 1 -Value at 7f4045216688 is 1 -Value at 7f4045216689 is 1 -Value at 7f404521668a is 1 -Value at 7f404521668b is 1 -Value at 7f404521668c is 1 -Value at 7f404521668d is 1 -Value at 7f404521668e is 1 -Value at 7f404521668f is 1 -Value at 7f4045216690 is 1 -Value at 7f4045216691 is 1 -Value at 7f4045216692 is 1 -Value at 7f4045216693 is 1 -Value at 7f4045216694 is 1 -Value at 7f4045216695 is 1 -Value at 7f4045216696 is 1 -Value at 7f4045216697 is 1 -Value at 7f4045216698 is 1 -Value at 7f4045216699 is 1 -Value at 7f404521669a is 1 -Value at 7f404521669b is 1 -Value at 7f404521669c is 1 -Value at 7f404521669d is 1 -Value at 7f404521669e is 1 -Value at 7f404521669f is 1 -Value at 7f40452166a0 is 1 -Value at 7f40452166a1 is 1 -Value at 7f40452166a2 is 1 -Value at 7f40452166a3 is 1 -Value at 7f40452166a4 is 1 -Value at 7f40452166a5 is 1 -Value at 7f40452166a6 is 1 -Value at 7f40452166a7 is 1 -Value at 7f40452166a8 is 1 -Value at 7f40452166a9 is 1 -Value at 7f40452166aa is 1 -Value at 7f40452166ab is 1 -Value at 7f40452166ac is 1 -Value at 7f40452166ad is 1 -Value at 7f40452166ae is 1 -Value at 7f40452166af is 1 -Value at 7f40452166b0 is 1 -Value at 7f40452166b1 is 1 -Value at 7f40452166b2 is 1 -Value at 7f40452166b3 is 1 -Value at 7f40452166b4 is 1 -Value at 7f40452166b5 is 1 -Value at 7f40452166b6 is 1 -Value at 7f40452166b7 is 1 -Value at 7f40452166b8 is 1 -Value at 7f40452166b9 is 1 -Value at 7f40452166ba is 1 -Value at 7f40452166bb is 1 -Value at 7f40452166bc is 1 -Value at 7f40452166bd is 1 -Value at 7f40452166be is 1 -Value at 7f40452166bf is 1 -Value at 7f40452166c0 is 1 -Value at 7f40452166c1 is 1 -Value at 7f40452166c2 is 1 -Value at 7f40452166c3 is 1 -Value at 7f40452166c4 is 1 -Value at 7f40452166c5 is 1 -Value at 7f40452166c6 is 1 -Value at 7f40452166c7 is 1 -Value at 7f40452166c8 is 1 -Value at 7f40452166c9 is 1 -Value at 7f40452166ca is 1 -Value at 7f40452166cb is 1 -Value at 7f40452166cc is 1 -Value at 7f40452166cd is 1 -Value at 7f40452166ce is 1 -Value at 7f40452166cf is 1 -Value at 7f40452166d0 is 1 -Value at 7f40452166d1 is 1 -Value at 7f40452166d2 is 1 -Value at 7f40452166d3 is 1 -Value at 7f40452166d4 is 1 -Value at 7f40452166d5 is 1 -Value at 7f40452166d6 is 1 -Value at 7f40452166d7 is 1 -Value at 7f40452166d8 is 1 -Value at 7f40452166d9 is 1 -Value at 7f40452166da is 1 -Value at 7f40452166db is 1 -Value at 7f40452166dc is 1 -Value at 7f40452166dd is 1 -Value at 7f40452166de is 1 -Value at 7f40452166df is 1 -Value at 7f40452166e0 is 1 -Value at 7f40452166e1 is 1 -Value at 7f40452166e2 is 1 -Value at 7f40452166e3 is 1 -Value at 7f40452166e4 is 1 -Value at 7f40452166e5 is 1 -Value at 7f40452166e6 is 1 -Value at 7f40452166e7 is 1 -Value at 7f40452166e8 is 1 -Value at 7f40452166e9 is 1 -Value at 7f40452166ea is 1 -Value at 7f40452166eb is 1 -Value at 7f40452166ec is 1 -Value at 7f40452166ed is 1 -Value at 7f40452166ee is 1 -Value at 7f40452166ef is 1 -Value at 7f40452166f0 is 1 -Value at 7f40452166f1 is 1 -Value at 7f40452166f2 is 1 -Value at 7f40452166f3 is 1 -Value at 7f40452166f4 is 1 -Value at 7f40452166f5 is 1 -Value at 7f40452166f6 is 1 -Value at 7f40452166f7 is 1 -Value at 7f40452166f8 is 1 -Value at 7f40452166f9 is 1 -Value at 7f40452166fa is 1 -Value at 7f40452166fb is 1 -Value at 7f40452166fc is 1 -Value at 7f40452166fd is 1 -Value at 7f40452166fe is 1 -Value at 7f40452166ff is 1 -Value at 7f4045216700 is 1 -Value at 7f4045216701 is 1 -Value at 7f4045216702 is 1 -Value at 7f4045216703 is 1 -Value at 7f4045216704 is 1 -Value at 7f4045216705 is 1 -Value at 7f4045216706 is 1 -Value at 7f4045216707 is 1 -Value at 7f4045216708 is 1 -Value at 7f4045216709 is 1 -Value at 7f404521670a is 1 -Value at 7f404521670b is 1 -Value at 7f404521670c is 1 -Value at 7f404521670d is 1 -Value at 7f404521670e is 1 -Value at 7f404521670f is 1 -Value at 7f4045216710 is 1 -Value at 7f4045216711 is 1 -Value at 7f4045216712 is 1 -Value at 7f4045216713 is 1 -Value at 7f4045216714 is 1 -Value at 7f4045216715 is 1 -Value at 7f4045216716 is 1 -Value at 7f4045216717 is 1 -Value at 7f4045216718 is 1 -Value at 7f4045216719 is 1 -Value at 7f404521671a is 1 -Value at 7f404521671b is 1 -Value at 7f404521671c is 1 -Value at 7f404521671d is 1 -Value at 7f404521671e is 1 -Value at 7f404521671f is 1 -Value at 7f4045216720 is 1 -Value at 7f4045216721 is 1 -Value at 7f4045216722 is 1 -Value at 7f4045216723 is 1 -Value at 7f4045216724 is 1 -Value at 7f4045216725 is 1 -Value at 7f4045216726 is 1 -Value at 7f4045216727 is 1 -Value at 7f4045216728 is 1 -Value at 7f4045216729 is 1 -Value at 7f404521672a is 1 -Value at 7f404521672b is 1 -Value at 7f404521672c is 1 -Value at 7f404521672d is 1 -Value at 7f404521672e is 1 -Value at 7f404521672f is 1 -Value at 7f4045216730 is 1 -Value at 7f4045216731 is 1 -Value at 7f4045216732 is 1 -Value at 7f4045216733 is 1 -Value at 7f4045216734 is 1 -Value at 7f4045216735 is 1 -Value at 7f4045216736 is 1 -Value at 7f4045216737 is 1 -Value at 7f4045216738 is 1 -Value at 7f4045216739 is 1 -Value at 7f404521673a is 1 -Value at 7f404521673b is 1 -Value at 7f404521673c is 1 -Value at 7f404521673d is 1 -Value at 7f404521673e is 1 -Value at 7f404521673f is 1 -Value at 7f4045216740 is 1 -Value at 7f4045216741 is 1 -Value at 7f4045216742 is 1 -Value at 7f4045216743 is 1 -Value at 7f4045216744 is 1 -Value at 7f4045216745 is 1 -Value at 7f4045216746 is 1 -Value at 7f4045216747 is 1 -Value at 7f4045216748 is 1 -Value at 7f4045216749 is 1 -Value at 7f404521674a is 1 -Value at 7f404521674b is 1 -Value at 7f404521674c is 1 -Value at 7f404521674d is 1 -Value at 7f404521674e is 1 -Value at 7f404521674f is 1 -Value at 7f4045216750 is 1 -Value at 7f4045216751 is 1 -Value at 7f4045216752 is 1 -Value at 7f4045216753 is 1 -Value at 7f4045216754 is 1 -Value at 7f4045216755 is 1 -Value at 7f4045216756 is 1 -Value at 7f4045216757 is 1 -Value at 7f4045216758 is 1 -Value at 7f4045216759 is 1 -Value at 7f404521675a is 1 -Value at 7f404521675b is 1 -Value at 7f404521675c is 1 -Value at 7f404521675d is 1 -Value at 7f404521675e is 1 -Value at 7f404521675f is 1 -Value at 7f4045216760 is 1 -Value at 7f4045216761 is 1 -Value at 7f4045216762 is 1 -Value at 7f4045216763 is 1 -Value at 7f4045216764 is 1 -Value at 7f4045216765 is 1 -Value at 7f4045216766 is 1 -Value at 7f4045216767 is 1 -Value at 7f4045216768 is 1 -Value at 7f4045216769 is 1 -Value at 7f404521676a is 1 -Value at 7f404521676b is 1 -Value at 7f404521676c is 1 -Value at 7f404521676d is 1 -Value at 7f404521676e is 1 -Value at 7f404521676f is 1 -Value at 7f4045216770 is 1 -Value at 7f4045216771 is 1 -Value at 7f4045216772 is 1 -Value at 7f4045216773 is 1 -Value at 7f4045216774 is 1 -Value at 7f4045216775 is 1 -Value at 7f4045216776 is 1 -Value at 7f4045216777 is 1 -Value at 7f4045216778 is 1 -Value at 7f4045216779 is 1 -Value at 7f404521677a is 1 -Value at 7f404521677b is 1 -Value at 7f404521677c is 1 -Value at 7f404521677d is 1 -Value at 7f404521677e is 1 -Value at 7f404521677f is 1 -Value at 7f4045216780 is 1 -Value at 7f4045216781 is 1 -Value at 7f4045216782 is 1 -Value at 7f4045216783 is 1 -Value at 7f4045216784 is 1 -Value at 7f4045216785 is 1 -Value at 7f4045216786 is 1 -Value at 7f4045216787 is 1 -Value at 7f4045216788 is 1 -Value at 7f4045216789 is 1 -Value at 7f404521678a is 1 -Value at 7f404521678b is 1 -Value at 7f404521678c is 1 -Value at 7f404521678d is 1 -Value at 7f404521678e is 1 -Value at 7f404521678f is 1 -Value at 7f4045216790 is 1 -Value at 7f4045216791 is 1 -Value at 7f4045216792 is 1 -Value at 7f4045216793 is 1 -Value at 7f4045216794 is 1 -Value at 7f4045216795 is 1 -Value at 7f4045216796 is 1 -Value at 7f4045216797 is 1 -Value at 7f4045216798 is 1 -Value at 7f4045216799 is 1 -Value at 7f404521679a is 1 -Value at 7f404521679b is 1 -Value at 7f404521679c is 1 -Value at 7f404521679d is 1 -Value at 7f404521679e is 1 -Value at 7f404521679f is 1 -Value at 7f40452167a0 is 1 -Value at 7f40452167a1 is 1 -Value at 7f40452167a2 is 1 -Value at 7f40452167a3 is 1 -Value at 7f40452167a4 is 1 -Value at 7f40452167a5 is 1 -Value at 7f40452167a6 is 1 -Value at 7f40452167a7 is 1 -Value at 7f40452167a8 is 1 -Value at 7f40452167a9 is 1 -Value at 7f40452167aa is 1 -Value at 7f40452167ab is 1 -Value at 7f40452167ac is 1 -Value at 7f40452167ad is 1 -Value at 7f40452167ae is 1 -Value at 7f40452167af is 1 -Value at 7f40452167b0 is 1 -Value at 7f40452167b1 is 1 -Value at 7f40452167b2 is 1 -Value at 7f40452167b3 is 1 -Value at 7f40452167b4 is 1 -Value at 7f40452167b5 is 1 -Value at 7f40452167b6 is 1 -Value at 7f40452167b7 is 1 -Value at 7f40452167b8 is 1 -Value at 7f40452167b9 is 1 -Value at 7f40452167ba is 1 -Value at 7f40452167bb is 1 -Value at 7f40452167bc is 1 -Value at 7f40452167bd is 1 -Value at 7f40452167be is 1 -Value at 7f40452167bf is 1 -Value at 7f40452167c0 is 1 -Value at 7f40452167c1 is 1 -Value at 7f40452167c2 is 1 -Value at 7f40452167c3 is 1 -Value at 7f40452167c4 is 1 -Value at 7f40452167c5 is 1 -Value at 7f40452167c6 is 1 -Value at 7f40452167c7 is 1 -Value at 7f40452167c8 is 1 -Value at 7f40452167c9 is 1 -Value at 7f40452167ca is 1 -Value at 7f40452167cb is 1 -Value at 7f40452167cc is 1 -Value at 7f40452167cd is 1 -Value at 7f40452167ce is 1 -Value at 7f40452167cf is 1 -Value at 7f40452167d0 is 1 -Value at 7f40452167d1 is 1 -Value at 7f40452167d2 is 1 -Value at 7f40452167d3 is 1 -Value at 7f40452167d4 is 1 -Value at 7f40452167d5 is 1 -Value at 7f40452167d6 is 1 -Value at 7f40452167d7 is 1 -Value at 7f40452167d8 is 1 -Value at 7f40452167d9 is 1 -Value at 7f40452167da is 1 -Value at 7f40452167db is 1 -Value at 7f40452167dc is 1 -Value at 7f40452167dd is 1 -Value at 7f40452167de is 1 -Value at 7f40452167df is 1 -Value at 7f40452167e0 is 1 -Value at 7f40452167e1 is 1 -Value at 7f40452167e2 is 1 -Value at 7f40452167e3 is 1 -Value at 7f40452167e4 is 1 -Value at 7f40452167e5 is 1 -Value at 7f40452167e6 is 1 -Value at 7f40452167e7 is 1 -Value at 7f40452167e8 is 1 -Value at 7f40452167e9 is 1 -Value at 7f40452167ea is 1 -Value at 7f40452167eb is 1 -Value at 7f40452167ec is 1 -Value at 7f40452167ed is 1 -Value at 7f40452167ee is 1 -Value at 7f40452167ef is 1 -Value at 7f40452167f0 is 1 -Value at 7f40452167f1 is 1 -Value at 7f40452167f2 is 1 -Value at 7f40452167f3 is 1 -Value at 7f40452167f4 is 1 -Value at 7f40452167f5 is 1 -Value at 7f40452167f6 is 1 -Value at 7f40452167f7 is 1 -Value at 7f40452167f8 is 1 -Value at 7f40452167f9 is 1 -Value at 7f40452167fa is 1 -Value at 7f40452167fb is 1 -Value at 7f40452167fc is 1 -Value at 7f40452167fd is 1 -Value at 7f40452167fe is 1 -Value at 7f40452167ff is 1 -Value at 7f4045216800 is 1 -Value at 7f4045216801 is 1 -Value at 7f4045216802 is 1 -Value at 7f4045216803 is 1 -Value at 7f4045216804 is 1 -Value at 7f4045216805 is 1 -Value at 7f4045216806 is 1 -Value at 7f4045216807 is 1 -Value at 7f4045216808 is 1 -Value at 7f4045216809 is 1 -Value at 7f404521680a is 1 -Value at 7f404521680b is 1 -Value at 7f404521680c is 1 -Value at 7f404521680d is 1 -Value at 7f404521680e is 1 -Value at 7f404521680f is 1 -Value at 7f4045216810 is 1 -Value at 7f4045216811 is 1 -Value at 7f4045216812 is 1 -Value at 7f4045216813 is 1 -Value at 7f4045216814 is 1 -Value at 7f4045216815 is 1 -Value at 7f4045216816 is 1 -Value at 7f4045216817 is 1 -Value at 7f4045216818 is 1 -Value at 7f4045216819 is 1 -Value at 7f404521681a is 1 -Value at 7f404521681b is 1 -Value at 7f404521681c is 1 -Value at 7f404521681d is 1 -Value at 7f404521681e is 1 -Value at 7f404521681f is 1 -Value at 7f4045216820 is 1 -Value at 7f4045216821 is 1 -Value at 7f4045216822 is 1 -Value at 7f4045216823 is 1 -Value at 7f4045216824 is 1 -Value at 7f4045216825 is 1 -Value at 7f4045216826 is 1 -Value at 7f4045216827 is 1 -Value at 7f4045216828 is 1 -Value at 7f4045216829 is 1 -Value at 7f404521682a is 1 -Value at 7f404521682b is 1 -Value at 7f404521682c is 1 -Value at 7f404521682d is 1 -Value at 7f404521682e is 1 -Value at 7f404521682f is 1 -Value at 7f4045216830 is 1 -Value at 7f4045216831 is 1 -Value at 7f4045216832 is 1 -Value at 7f4045216833 is 1 -Value at 7f4045216834 is 1 -Value at 7f4045216835 is 1 -Value at 7f4045216836 is 1 -Value at 7f4045216837 is 1 -Value at 7f4045216838 is 1 -Value at 7f4045216839 is 1 -Value at 7f404521683a is 1 -Value at 7f404521683b is 1 -Value at 7f404521683c is 1 -Value at 7f404521683d is 1 -Value at 7f404521683e is 1 -Value at 7f404521683f is 1 -Value at 7f4045216840 is 1 -Value at 7f4045216841 is 1 -Value at 7f4045216842 is 1 -Value at 7f4045216843 is 1 -Value at 7f4045216844 is 1 -Value at 7f4045216845 is 1 -Value at 7f4045216846 is 1 -Value at 7f4045216847 is 1 -Value at 7f4045216848 is 1 -Value at 7f4045216849 is 1 -Value at 7f404521684a is 1 -Value at 7f404521684b is 1 -Value at 7f404521684c is 1 -Value at 7f404521684d is 1 -Value at 7f404521684e is 1 -Value at 7f404521684f is 1 -Value at 7f4045216850 is 1 -Value at 7f4045216851 is 1 -Value at 7f4045216852 is 1 -Value at 7f4045216853 is 1 -Value at 7f4045216854 is 1 -Value at 7f4045216855 is 1 -Value at 7f4045216856 is 1 -Value at 7f4045216857 is 1 -Value at 7f4045216858 is 1 -Value at 7f4045216859 is 1 -Value at 7f404521685a is 1 -Value at 7f404521685b is 1 -Value at 7f404521685c is 1 -Value at 7f404521685d is 1 -Value at 7f404521685e is 1 -Value at 7f404521685f is 1 -Value at 7f4045216860 is 1 -Value at 7f4045216861 is 1 -Value at 7f4045216862 is 1 -Value at 7f4045216863 is 1 -Value at 7f4045216864 is 1 -Value at 7f4045216865 is 1 -Value at 7f4045216866 is 1 -Value at 7f4045216867 is 1 -Value at 7f4045216868 is 1 -Value at 7f4045216869 is 1 -Value at 7f404521686a is 1 -Value at 7f404521686b is 1 -Value at 7f404521686c is 1 -Value at 7f404521686d is 1 -Value at 7f404521686e is 1 -Value at 7f404521686f is 1 -Value at 7f4045216870 is 1 -Value at 7f4045216871 is 1 -Value at 7f4045216872 is 1 -Value at 7f4045216873 is 1 -Value at 7f4045216874 is 1 -Value at 7f4045216875 is 1 -Value at 7f4045216876 is 1 -Value at 7f4045216877 is 1 -Value at 7f4045216878 is 1 -Value at 7f4045216879 is 1 -Value at 7f404521687a is 1 -Value at 7f404521687b is 1 -Value at 7f404521687c is 1 -Value at 7f404521687d is 1 -Value at 7f404521687e is 1 -Value at 7f404521687f is 1 -Value at 7f4045216880 is 1 -Value at 7f4045216881 is 1 -Value at 7f4045216882 is 1 -Value at 7f4045216883 is 1 -Value at 7f4045216884 is 1 -Value at 7f4045216885 is 1 -Value at 7f4045216886 is 1 -Value at 7f4045216887 is 1 -Value at 7f4045216888 is 1 -Value at 7f4045216889 is 1 -Value at 7f404521688a is 1 -Value at 7f404521688b is 1 -Value at 7f404521688c is 1 -Value at 7f404521688d is 1 -Value at 7f404521688e is 1 -Value at 7f404521688f is 1 -Value at 7f4045216890 is 1 -Value at 7f4045216891 is 1 -Value at 7f4045216892 is 1 -Value at 7f4045216893 is 1 -Value at 7f4045216894 is 1 -Value at 7f4045216895 is 1 -Value at 7f4045216896 is 1 -Value at 7f4045216897 is 1 -Value at 7f4045216898 is 1 -Value at 7f4045216899 is 1 -Value at 7f404521689a is 1 -Value at 7f404521689b is 1 -Value at 7f404521689c is 1 -Value at 7f404521689d is 1 -Value at 7f404521689e is 1 -Value at 7f404521689f is 1 -Value at 7f40452168a0 is 1 -Value at 7f40452168a1 is 1 -Value at 7f40452168a2 is 1 -Value at 7f40452168a3 is 1 -Value at 7f40452168a4 is 1 -Value at 7f40452168a5 is 1 -Value at 7f40452168a6 is 1 -Value at 7f40452168a7 is 1 -Value at 7f40452168a8 is 1 -Value at 7f40452168a9 is 1 -Value at 7f40452168aa is 1 -Value at 7f40452168ab is 1 -Value at 7f40452168ac is 1 -Value at 7f40452168ad is 1 -Value at 7f40452168ae is 1 -Value at 7f40452168af is 1 -Value at 7f40452168b0 is 1 -Value at 7f40452168b1 is 1 -Value at 7f40452168b2 is 1 -Value at 7f40452168b3 is 1 -Value at 7f40452168b4 is 1 -Value at 7f40452168b5 is 1 -Value at 7f40452168b6 is 1 -Value at 7f40452168b7 is 1 -Value at 7f40452168b8 is 1 -Value at 7f40452168b9 is 1 -Value at 7f40452168ba is 1 -Value at 7f40452168bb is 1 -Value at 7f40452168bc is 1 -Value at 7f40452168bd is 1 -Value at 7f40452168be is 1 -Value at 7f40452168bf is 1 -Value at 7f40452168c0 is 1 -Value at 7f40452168c1 is 1 -Value at 7f40452168c2 is 1 -Value at 7f40452168c3 is 1 -Value at 7f40452168c4 is 1 -Value at 7f40452168c5 is 1 -Value at 7f40452168c6 is 1 -Value at 7f40452168c7 is 1 -Value at 7f40452168c8 is 1 -Value at 7f40452168c9 is 1 -Value at 7f40452168ca is 1 -Value at 7f40452168cb is 1 -Value at 7f40452168cc is 1 -Value at 7f40452168cd is 1 -Value at 7f40452168ce is 1 -Value at 7f40452168cf is 1 -Value at 7f40452168d0 is 1 -Value at 7f40452168d1 is 1 -Value at 7f40452168d2 is 1 -Value at 7f40452168d3 is 1 -Value at 7f40452168d4 is 1 -Value at 7f40452168d5 is 1 -Value at 7f40452168d6 is 1 -Value at 7f40452168d7 is 1 -Value at 7f40452168d8 is 1 -Value at 7f40452168d9 is 1 -Value at 7f40452168da is 1 -Value at 7f40452168db is 1 -Value at 7f40452168dc is 1 -Value at 7f40452168dd is 1 -Value at 7f40452168de is 1 -Value at 7f40452168df is 1 -Value at 7f40452168e0 is 1 -Value at 7f40452168e1 is 1 -Value at 7f40452168e2 is 1 -Value at 7f40452168e3 is 1 -Value at 7f40452168e4 is 1 -Value at 7f40452168e5 is 1 -Value at 7f40452168e6 is 1 -Value at 7f40452168e7 is 1 -Value at 7f40452168e8 is 1 -Value at 7f40452168e9 is 1 -Value at 7f40452168ea is 1 -Value at 7f40452168eb is 1 -Value at 7f40452168ec is 1 -Value at 7f40452168ed is 1 -Value at 7f40452168ee is 1 -Value at 7f40452168ef is 1 -Value at 7f40452168f0 is 1 -Value at 7f40452168f1 is 1 -Value at 7f40452168f2 is 1 -Value at 7f40452168f3 is 1 -Value at 7f40452168f4 is 1 -Value at 7f40452168f5 is 1 -Value at 7f40452168f6 is 1 -Value at 7f40452168f7 is 1 -Value at 7f40452168f8 is 1 -Value at 7f40452168f9 is 1 -Value at 7f40452168fa is 1 -Value at 7f40452168fb is 1 -Value at 7f40452168fc is 1 -Value at 7f40452168fd is 1 -Value at 7f40452168fe is 1 -Value at 7f40452168ff is 1 -Value at 7f4045216900 is 1 -Value at 7f4045216901 is 1 -Value at 7f4045216902 is 1 -Value at 7f4045216903 is 1 -Value at 7f4045216904 is 1 -Value at 7f4045216905 is 1 -Value at 7f4045216906 is 1 -Value at 7f4045216907 is 1 -Value at 7f4045216908 is 1 -Value at 7f4045216909 is 1 -Value at 7f404521690a is 1 -Value at 7f404521690b is 1 -Value at 7f404521690c is 1 -Value at 7f404521690d is 1 -Value at 7f404521690e is 1 -Value at 7f404521690f is 1 -Value at 7f4045216910 is 1 -Value at 7f4045216911 is 1 -Value at 7f4045216912 is 1 -Value at 7f4045216913 is 1 -Value at 7f4045216914 is 1 -Value at 7f4045216915 is 1 -Value at 7f4045216916 is 1 -Value at 7f4045216917 is 1 -Value at 7f4045216918 is 1 -Value at 7f4045216919 is 1 -Value at 7f404521691a is 1 -Value at 7f404521691b is 1 -Value at 7f404521691c is 1 -Value at 7f404521691d is 1 -Value at 7f404521691e is 1 -Value at 7f404521691f is 1 -Value at 7f4045216920 is 1 -Value at 7f4045216921 is 1 -Value at 7f4045216922 is 1 -Value at 7f4045216923 is 1 -Value at 7f4045216924 is 1 -Value at 7f4045216925 is 1 -Value at 7f4045216926 is 1 -Value at 7f4045216927 is 1 -Value at 7f4045216928 is 1 -Value at 7f4045216929 is 1 -Value at 7f404521692a is 1 -Value at 7f404521692b is 1 -Value at 7f404521692c is 1 -Value at 7f404521692d is 1 -Value at 7f404521692e is 1 -Value at 7f404521692f is 1 -Value at 7f4045216930 is 1 -Value at 7f4045216931 is 1 -Value at 7f4045216932 is 1 -Value at 7f4045216933 is 1 -Value at 7f4045216934 is 1 -Value at 7f4045216935 is 1 -Value at 7f4045216936 is 1 -Value at 7f4045216937 is 1 -Value at 7f4045216938 is 1 -Value at 7f4045216939 is 1 -Value at 7f404521693a is 1 -Value at 7f404521693b is 1 -Value at 7f404521693c is 1 -Value at 7f404521693d is 1 -Value at 7f404521693e is 1 -Value at 7f404521693f is 1 -Value at 7f4045216940 is 1 -Value at 7f4045216941 is 1 -Value at 7f4045216942 is 1 -Value at 7f4045216943 is 1 -Value at 7f4045216944 is 1 -Value at 7f4045216945 is 1 -Value at 7f4045216946 is 1 -Value at 7f4045216947 is 1 -Value at 7f4045216948 is 1 -Value at 7f4045216949 is 1 -Value at 7f404521694a is 1 -Value at 7f404521694b is 1 -Value at 7f404521694c is 1 -Value at 7f404521694d is 1 -Value at 7f404521694e is 1 -Value at 7f404521694f is 1 -Value at 7f4045216950 is 1 -Value at 7f4045216951 is 1 -Value at 7f4045216952 is 1 -Value at 7f4045216953 is 1 -Value at 7f4045216954 is 1 -Value at 7f4045216955 is 1 -Value at 7f4045216956 is 1 -Value at 7f4045216957 is 1 -Value at 7f4045216958 is 1 -Value at 7f4045216959 is 1 -Value at 7f404521695a is 1 -Value at 7f404521695b is 1 -Value at 7f404521695c is 1 -Value at 7f404521695d is 1 -Value at 7f404521695e is 1 -Value at 7f404521695f is 1 -Value at 7f4045216960 is 1 -Value at 7f4045216961 is 1 -Value at 7f4045216962 is 1 -Value at 7f4045216963 is 1 -Value at 7f4045216964 is 1 -Value at 7f4045216965 is 1 -Value at 7f4045216966 is 1 -Value at 7f4045216967 is 1 -Value at 7f4045216968 is 1 -Value at 7f4045216969 is 1 -Value at 7f404521696a is 1 -Value at 7f404521696b is 1 -Value at 7f404521696c is 1 -Value at 7f404521696d is 1 -Value at 7f404521696e is 1 -Value at 7f404521696f is 1 -Value at 7f4045216970 is 1 -Value at 7f4045216971 is 1 -Value at 7f4045216972 is 1 -Value at 7f4045216973 is 1 -Value at 7f4045216974 is 1 -Value at 7f4045216975 is 1 -Value at 7f4045216976 is 1 -Value at 7f4045216977 is 1 -Value at 7f4045216978 is 1 -Value at 7f4045216979 is 1 -Value at 7f404521697a is 1 -Value at 7f404521697b is 1 -Value at 7f404521697c is 1 -Value at 7f404521697d is 1 -Value at 7f404521697e is 1 -Value at 7f404521697f is 1 -Value at 7f4045216980 is 1 -Value at 7f4045216981 is 1 -Value at 7f4045216982 is 1 -Value at 7f4045216983 is 1 -Value at 7f4045216984 is 1 -Value at 7f4045216985 is 1 -Value at 7f4045216986 is 1 -Value at 7f4045216987 is 1 -Value at 7f4045216988 is 1 -Value at 7f4045216989 is 1 -Value at 7f404521698a is 1 -Value at 7f404521698b is 1 -Value at 7f404521698c is 1 -Value at 7f404521698d is 1 -Value at 7f404521698e is 1 -Value at 7f404521698f is 1 -Value at 7f4045216990 is 1 -Value at 7f4045216991 is 1 -Value at 7f4045216992 is 1 -Value at 7f4045216993 is 1 -Value at 7f4045216994 is 1 -Value at 7f4045216995 is 1 -Value at 7f4045216996 is 1 -Value at 7f4045216997 is 1 -Value at 7f4045216998 is 1 -Value at 7f4045216999 is 1 -Value at 7f404521699a is 1 -Value at 7f404521699b is 1 -Value at 7f404521699c is 1 -Value at 7f404521699d is 1 -Value at 7f404521699e is 1 -Value at 7f404521699f is 1 -Value at 7f40452169a0 is 1 -Value at 7f40452169a1 is 1 -Value at 7f40452169a2 is 1 -Value at 7f40452169a3 is 1 -Value at 7f40452169a4 is 1 -Value at 7f40452169a5 is 1 -Value at 7f40452169a6 is 1 -Value at 7f40452169a7 is 1 -Value at 7f40452169a8 is 1 -Value at 7f40452169a9 is 1 -Value at 7f40452169aa is 1 -Value at 7f40452169ab is 1 -Value at 7f40452169ac is 1 -Value at 7f40452169ad is 1 -Value at 7f40452169ae is 1 -Value at 7f40452169af is 1 -Value at 7f40452169b0 is 1 -Value at 7f40452169b1 is 1 -Value at 7f40452169b2 is 1 -Value at 7f40452169b3 is 1 -Value at 7f40452169b4 is 1 -Value at 7f40452169b5 is 1 -Value at 7f40452169b6 is 1 -Value at 7f40452169b7 is 1 -Value at 7f40452169b8 is 1 -Value at 7f40452169b9 is 1 -Value at 7f40452169ba is 1 -Value at 7f40452169bb is 1 -Value at 7f40452169bc is 1 -Value at 7f40452169bd is 1 -Value at 7f40452169be is 1 -Value at 7f40452169bf is 1 -Value at 7f40452169c0 is 1 -Value at 7f40452169c1 is 1 -Value at 7f40452169c2 is 1 -Value at 7f40452169c3 is 1 -Value at 7f40452169c4 is 1 -Value at 7f40452169c5 is 1 -Value at 7f40452169c6 is 1 -Value at 7f40452169c7 is 1 -Value at 7f40452169c8 is 1 -Value at 7f40452169c9 is 1 -Value at 7f40452169ca is 1 -Value at 7f40452169cb is 1 -Value at 7f40452169cc is 1 -Value at 7f40452169cd is 1 -Value at 7f40452169ce is 1 -Value at 7f40452169cf is 1 -Value at 7f40452169d0 is 1 -Value at 7f40452169d1 is 1 -Value at 7f40452169d2 is 1 -Value at 7f40452169d3 is 1 -Value at 7f40452169d4 is 1 -Value at 7f40452169d5 is 1 -Value at 7f40452169d6 is 1 -Value at 7f40452169d7 is 1 -Value at 7f40452169d8 is 1 -Value at 7f40452169d9 is 1 -Value at 7f40452169da is 1 -Value at 7f40452169db is 1 -Value at 7f40452169dc is 1 -Value at 7f40452169dd is 1 -Value at 7f40452169de is 1 -Value at 7f40452169df is 1 -Value at 7f40452169e0 is 1 -Value at 7f40452169e1 is 1 -Value at 7f40452169e2 is 1 -Value at 7f40452169e3 is 1 -Value at 7f40452169e4 is 1 -Value at 7f40452169e5 is 1 -Value at 7f40452169e6 is 1 -Value at 7f40452169e7 is 1 -Value at 7f40452169e8 is 1 -Value at 7f40452169e9 is 1 -Value at 7f40452169ea is 1 -Value at 7f40452169eb is 1 -Value at 7f40452169ec is 1 -Value at 7f40452169ed is 1 -Value at 7f40452169ee is 1 -Value at 7f40452169ef is 1 -Value at 7f40452169f0 is 1 -Value at 7f40452169f1 is 1 -Value at 7f40452169f2 is 1 -Value at 7f40452169f3 is 1 -Value at 7f40452169f4 is 1 -Value at 7f40452169f5 is 1 -Value at 7f40452169f6 is 1 -Value at 7f40452169f7 is 1 -Value at 7f40452169f8 is 1 -Value at 7f40452169f9 is 1 -Value at 7f40452169fa is 1 -Value at 7f40452169fb is 1 -Value at 7f40452169fc is 1 -Value at 7f40452169fd is 1 -Value at 7f40452169fe is 1 -Value at 7f40452169ff is 1 -Value at 7f4045216a00 is 1 -Value at 7f4045216a01 is 1 -Value at 7f4045216a02 is 1 -Value at 7f4045216a03 is 1 -Value at 7f4045216a04 is 1 -Value at 7f4045216a05 is 1 -Value at 7f4045216a06 is 1 -Value at 7f4045216a07 is 1 -Value at 7f4045216a08 is 1 -Value at 7f4045216a09 is 1 -Value at 7f4045216a0a is 1 -Value at 7f4045216a0b is 1 -Value at 7f4045216a0c is 1 -Value at 7f4045216a0d is 1 -Value at 7f4045216a0e is 1 -Value at 7f4045216a0f is 1 -Value at 7f4045216a10 is 1 -Value at 7f4045216a11 is 1 -Value at 7f4045216a12 is 1 -Value at 7f4045216a13 is 1 -Value at 7f4045216a14 is 1 -Value at 7f4045216a15 is 1 -Value at 7f4045216a16 is 1 -Value at 7f4045216a17 is 1 -Value at 7f4045216a18 is 1 -Value at 7f4045216a19 is 1 -Value at 7f4045216a1a is 1 -Value at 7f4045216a1b is 1 -Value at 7f4045216a1c is 1 -Value at 7f4045216a1d is 1 -Value at 7f4045216a1e is 1 -Value at 7f4045216a1f is 1 -Value at 7f4045216a20 is 1 -Value at 7f4045216a21 is 1 -Value at 7f4045216a22 is 1 -Value at 7f4045216a23 is 1 -Value at 7f4045216a24 is 1 -Value at 7f4045216a25 is 1 -Value at 7f4045216a26 is 1 -Value at 7f4045216a27 is 1 -Value at 7f4045216a28 is 1 -Value at 7f4045216a29 is 1 -Value at 7f4045216a2a is 1 -Value at 7f4045216a2b is 1 -Value at 7f4045216a2c is 1 -Value at 7f4045216a2d is 1 -Value at 7f4045216a2e is 1 -Value at 7f4045216a2f is 1 -Value at 7f4045216a30 is 1 -Value at 7f4045216a31 is 1 -Value at 7f4045216a32 is 1 -Value at 7f4045216a33 is 1 -Value at 7f4045216a34 is 1 -Value at 7f4045216a35 is 1 -Value at 7f4045216a36 is 1 -Value at 7f4045216a37 is 1 -Value at 7f4045216a38 is 1 -Value at 7f4045216a39 is 1 -Value at 7f4045216a3a is 1 -Value at 7f4045216a3b is 1 -Value at 7f4045216a3c is 1 -Value at 7f4045216a3d is 1 -Value at 7f4045216a3e is 1 -Value at 7f4045216a3f is 1 -Value at 7f4045216a40 is 1 -Value at 7f4045216a41 is 1 -Value at 7f4045216a42 is 1 -Value at 7f4045216a43 is 1 -Value at 7f4045216a44 is 1 -Value at 7f4045216a45 is 1 -Value at 7f4045216a46 is 1 -Value at 7f4045216a47 is 1 -Value at 7f4045216a48 is 1 -Value at 7f4045216a49 is 1 -Value at 7f4045216a4a is 1 -Value at 7f4045216a4b is 1 -Value at 7f4045216a4c is 1 -Value at 7f4045216a4d is 1 -Value at 7f4045216a4e is 1 -Value at 7f4045216a4f is 1 -Value at 7f4045216a50 is 1 -Value at 7f4045216a51 is 1 -Value at 7f4045216a52 is 1 -Value at 7f4045216a53 is 1 -Value at 7f4045216a54 is 1 -Value at 7f4045216a55 is 1 -Value at 7f4045216a56 is 1 -Value at 7f4045216a57 is 1 -Value at 7f4045216a58 is 1 -Value at 7f4045216a59 is 1 -Value at 7f4045216a5a is 1 -Value at 7f4045216a5b is 1 -Value at 7f4045216a5c is 1 -Value at 7f4045216a5d is 1 -Value at 7f4045216a5e is 1 -Value at 7f4045216a5f is 1 -Value at 7f4045216a60 is 1 -Value at 7f4045216a61 is 1 -Value at 7f4045216a62 is 1 -Value at 7f4045216a63 is 1 -Value at 7f4045216a64 is 1 -Value at 7f4045216a65 is 1 -Value at 7f4045216a66 is 1 -Value at 7f4045216a67 is 1 -Value at 7f4045216a68 is 1 -Value at 7f4045216a69 is 1 -Value at 7f4045216a6a is 1 -Value at 7f4045216a6b is 1 -Value at 7f4045216a6c is 1 -Value at 7f4045216a6d is 1 -Value at 7f4045216a6e is 1 -Value at 7f4045216a6f is 1 -Value at 7f4045216a70 is 1 -Value at 7f4045216a71 is 1 -Value at 7f4045216a72 is 1 -Value at 7f4045216a73 is 1 -Value at 7f4045216a74 is 1 -Value at 7f4045216a75 is 1 -Value at 7f4045216a76 is 1 -Value at 7f4045216a77 is 1 -Value at 7f4045216a78 is 1 -Value at 7f4045216a79 is 1 -Value at 7f4045216a7a is 1 -Value at 7f4045216a7b is 1 -Value at 7f4045216a7c is 1 -Value at 7f4045216a7d is 1 -Value at 7f4045216a7e is 1 -Value at 7f4045216a7f is 1 -Value at 7f4045216a80 is 1 -Value at 7f4045216a81 is 1 -Value at 7f4045216a82 is 1 -Value at 7f4045216a83 is 1 -Value at 7f4045216a84 is 1 -Value at 7f4045216a85 is 1 -Value at 7f4045216a86 is 1 -Value at 7f4045216a87 is 1 -Value at 7f4045216a88 is 1 -Value at 7f4045216a89 is 1 -Value at 7f4045216a8a is 1 -Value at 7f4045216a8b is 1 -Value at 7f4045216a8c is 1 -Value at 7f4045216a8d is 1 -Value at 7f4045216a8e is 1 -Value at 7f4045216a8f is 1 -Value at 7f4045216a90 is 1 -Value at 7f4045216a91 is 1 -Value at 7f4045216a92 is 1 -Value at 7f4045216a93 is 1 -Value at 7f4045216a94 is 1 -Value at 7f4045216a95 is 1 -Value at 7f4045216a96 is 1 -Value at 7f4045216a97 is 1 -Value at 7f4045216a98 is 1 -Value at 7f4045216a99 is 1 -Value at 7f4045216a9a is 1 -Value at 7f4045216a9b is 1 -Value at 7f4045216a9c is 1 -Value at 7f4045216a9d is 1 -Value at 7f4045216a9e is 1 -Value at 7f4045216a9f is 1 -Value at 7f4045216aa0 is 1 -Value at 7f4045216aa1 is 1 -Value at 7f4045216aa2 is 1 -Value at 7f4045216aa3 is 1 -Value at 7f4045216aa4 is 1 -Value at 7f4045216aa5 is 1 -Value at 7f4045216aa6 is 1 -Value at 7f4045216aa7 is 1 -Value at 7f4045216aa8 is 1 -Value at 7f4045216aa9 is 1 -Value at 7f4045216aaa is 1 -Value at 7f4045216aab is 1 -Value at 7f4045216aac is 1 -Value at 7f4045216aad is 1 -Value at 7f4045216aae is 1 -Value at 7f4045216aaf is 1 -Value at 7f4045216ab0 is 1 -Value at 7f4045216ab1 is 1 -Value at 7f4045216ab2 is 1 -Value at 7f4045216ab3 is 1 -Value at 7f4045216ab4 is 1 -Value at 7f4045216ab5 is 1 -Value at 7f4045216ab6 is 1 -Value at 7f4045216ab7 is 1 -Value at 7f4045216ab8 is 1 -Value at 7f4045216ab9 is 1 -Value at 7f4045216aba is 1 -Value at 7f4045216abb is 1 -Value at 7f4045216abc is 1 -Value at 7f4045216abd is 1 -Value at 7f4045216abe is 1 -Value at 7f4045216abf is 1 -Value at 7f4045216ac0 is 1 -Value at 7f4045216ac1 is 1 -Value at 7f4045216ac2 is 1 -Value at 7f4045216ac3 is 1 -Value at 7f4045216ac4 is 1 -Value at 7f4045216ac5 is 1 -Value at 7f4045216ac6 is 1 -Value at 7f4045216ac7 is 1 -Value at 7f4045216ac8 is 1 -Value at 7f4045216ac9 is 1 -Value at 7f4045216aca is 1 -Value at 7f4045216acb is 1 -Value at 7f4045216acc is 1 -Value at 7f4045216acd is 1 -Value at 7f4045216ace is 1 -Value at 7f4045216acf is 1 -Value at 7f4045216ad0 is 1 -Value at 7f4045216ad1 is 1 -Value at 7f4045216ad2 is 1 -Value at 7f4045216ad3 is 1 -Value at 7f4045216ad4 is 1 -Value at 7f4045216ad5 is 1 -Value at 7f4045216ad6 is 1 -Value at 7f4045216ad7 is 1 -Value at 7f4045216ad8 is 1 -Value at 7f4045216ad9 is 1 -Value at 7f4045216ada is 1 -Value at 7f4045216adb is 1 -Value at 7f4045216adc is 1 -Value at 7f4045216add is 1 -Value at 7f4045216ade is 1 -Value at 7f4045216adf is 1 -Value at 7f4045216ae0 is 1 -Value at 7f4045216ae1 is 1 -Value at 7f4045216ae2 is 1 -Value at 7f4045216ae3 is 1 -Value at 7f4045216ae4 is 1 -Value at 7f4045216ae5 is 1 -Value at 7f4045216ae6 is 1 -Value at 7f4045216ae7 is 1 -Value at 7f4045216ae8 is 1 -Value at 7f4045216ae9 is 1 -Value at 7f4045216aea is 1 -Value at 7f4045216aeb is 1 -Value at 7f4045216aec is 1 -Value at 7f4045216aed is 1 -Value at 7f4045216aee is 1 -Value at 7f4045216aef is 1 -Value at 7f4045216af0 is 1 -Value at 7f4045216af1 is 1 -Value at 7f4045216af2 is 1 -Value at 7f4045216af3 is 1 -Value at 7f4045216af4 is 1 -Value at 7f4045216af5 is 1 -Value at 7f4045216af6 is 1 -Value at 7f4045216af7 is 1 -Value at 7f4045216af8 is 1 -Value at 7f4045216af9 is 1 -Value at 7f4045216afa is 1 -Value at 7f4045216afb is 1 -Value at 7f4045216afc is 1 -Value at 7f4045216afd is 1 -Value at 7f4045216afe is 1 -Value at 7f4045216aff is 1 -Value at 7f4045216b00 is 1 -Value at 7f4045216b01 is 1 -Value at 7f4045216b02 is 1 -Value at 7f4045216b03 is 1 -Value at 7f4045216b04 is 1 -Value at 7f4045216b05 is 1 -Value at 7f4045216b06 is 1 -Value at 7f4045216b07 is 1 -Value at 7f4045216b08 is 1 -Value at 7f4045216b09 is 1 -Value at 7f4045216b0a is 1 -Value at 7f4045216b0b is 1 -Value at 7f4045216b0c is 1 -Value at 7f4045216b0d is 1 -Value at 7f4045216b0e is 1 -Value at 7f4045216b0f is 1 -Value at 7f4045216b10 is 1 -Value at 7f4045216b11 is 1 -Value at 7f4045216b12 is 1 -Value at 7f4045216b13 is 1 -Value at 7f4045216b14 is 1 -Value at 7f4045216b15 is 1 -Value at 7f4045216b16 is 1 -Value at 7f4045216b17 is 1 -Value at 7f4045216b18 is 1 -Value at 7f4045216b19 is 1 -Value at 7f4045216b1a is 1 -Value at 7f4045216b1b is 1 -Value at 7f4045216b1c is 1 -Value at 7f4045216b1d is 1 -Value at 7f4045216b1e is 1 -Value at 7f4045216b1f is 1 -Value at 7f4045216b20 is 1 -Value at 7f4045216b21 is 1 -Value at 7f4045216b22 is 1 -Value at 7f4045216b23 is 1 -Value at 7f4045216b24 is 1 -Value at 7f4045216b25 is 1 -Value at 7f4045216b26 is 1 -Value at 7f4045216b27 is 1 -Value at 7f4045216b28 is 1 -Value at 7f4045216b29 is 1 -Value at 7f4045216b2a is 1 -Value at 7f4045216b2b is 1 -Value at 7f4045216b2c is 1 -Value at 7f4045216b2d is 1 -Value at 7f4045216b2e is 1 -Value at 7f4045216b2f is 1 -Value at 7f4045216b30 is 1 -Value at 7f4045216b31 is 1 -Value at 7f4045216b32 is 1 -Value at 7f4045216b33 is 1 -Value at 7f4045216b34 is 1 -Value at 7f4045216b35 is 1 -Value at 7f4045216b36 is 1 -Value at 7f4045216b37 is 1 -Value at 7f4045216b38 is 1 -Value at 7f4045216b39 is 1 -Value at 7f4045216b3a is 1 -Value at 7f4045216b3b is 1 -Value at 7f4045216b3c is 1 -Value at 7f4045216b3d is 1 -Value at 7f4045216b3e is 1 -Value at 7f4045216b3f is 1 -Value at 7f4045216b40 is 1 -Value at 7f4045216b41 is 1 -Value at 7f4045216b42 is 1 -Value at 7f4045216b43 is 1 -Value at 7f4045216b44 is 1 -Value at 7f4045216b45 is 1 -Value at 7f4045216b46 is 1 -Value at 7f4045216b47 is 1 -Value at 7f4045216b48 is 1 -Value at 7f4045216b49 is 1 -Value at 7f4045216b4a is 1 -Value at 7f4045216b4b is 1 -Value at 7f4045216b4c is 1 -Value at 7f4045216b4d is 1 -Value at 7f4045216b4e is 1 -Value at 7f4045216b4f is 1 -Value at 7f4045216b50 is 1 -Value at 7f4045216b51 is 1 -Value at 7f4045216b52 is 1 -Value at 7f4045216b53 is 1 -Value at 7f4045216b54 is 1 -Value at 7f4045216b55 is 1 -Value at 7f4045216b56 is 1 -Value at 7f4045216b57 is 1 -Value at 7f4045216b58 is 1 -Value at 7f4045216b59 is 1 -Value at 7f4045216b5a is 1 -Value at 7f4045216b5b is 1 -Value at 7f4045216b5c is 1 -Value at 7f4045216b5d is 1 -Value at 7f4045216b5e is 1 -Value at 7f4045216b5f is 1 -Value at 7f4045216b60 is 1 -Value at 7f4045216b61 is 1 -Value at 7f4045216b62 is 1 -Value at 7f4045216b63 is 1 -Value at 7f4045216b64 is 1 -Value at 7f4045216b65 is 1 -Value at 7f4045216b66 is 1 -Value at 7f4045216b67 is 1 -Value at 7f4045216b68 is 1 -Value at 7f4045216b69 is 1 -Value at 7f4045216b6a is 1 -Value at 7f4045216b6b is 1 -Value at 7f4045216b6c is 1 -Value at 7f4045216b6d is 1 -Value at 7f4045216b6e is 1 -Value at 7f4045216b6f is 1 -Value at 7f4045216b70 is 1 -Value at 7f4045216b71 is 1 -Value at 7f4045216b72 is 1 -Value at 7f4045216b73 is 1 -Value at 7f4045216b74 is 1 -Value at 7f4045216b75 is 1 -Value at 7f4045216b76 is 1 -Value at 7f4045216b77 is 1 -Value at 7f4045216b78 is 1 -Value at 7f4045216b79 is 1 -Value at 7f4045216b7a is 1 -Value at 7f4045216b7b is 1 -Value at 7f4045216b7c is 1 -Value at 7f4045216b7d is 1 -Value at 7f4045216b7e is 1 -Value at 7f4045216b7f is 1 -Value at 7f4045216b80 is 1 -Value at 7f4045216b81 is 1 -Value at 7f4045216b82 is 1 -Value at 7f4045216b83 is 1 -Value at 7f4045216b84 is 1 -Value at 7f4045216b85 is 1 -Value at 7f4045216b86 is 1 -Value at 7f4045216b87 is 1 -Value at 7f4045216b88 is 1 -Value at 7f4045216b89 is 1 -Value at 7f4045216b8a is 1 -Value at 7f4045216b8b is 1 -Value at 7f4045216b8c is 1 -Value at 7f4045216b8d is 1 -Value at 7f4045216b8e is 1 -Value at 7f4045216b8f is 1 -Value at 7f4045216b90 is 1 -Value at 7f4045216b91 is 1 -Value at 7f4045216b92 is 1 -Value at 7f4045216b93 is 1 -Value at 7f4045216b94 is 1 -Value at 7f4045216b95 is 1 -Value at 7f4045216b96 is 1 -Value at 7f4045216b97 is 1 -Value at 7f4045216b98 is 1 -Value at 7f4045216b99 is 1 -Value at 7f4045216b9a is 1 -Value at 7f4045216b9b is 1 -Value at 7f4045216b9c is 1 -Value at 7f4045216b9d is 1 -Value at 7f4045216b9e is 1 -Value at 7f4045216b9f is 1 -Value at 7f4045216ba0 is 1 -Value at 7f4045216ba1 is 1 -Value at 7f4045216ba2 is 1 -Value at 7f4045216ba3 is 1 -Value at 7f4045216ba4 is 1 -Value at 7f4045216ba5 is 1 -Value at 7f4045216ba6 is 1 -Value at 7f4045216ba7 is 1 -Value at 7f4045216ba8 is 1 -Value at 7f4045216ba9 is 1 -Value at 7f4045216baa is 1 -Value at 7f4045216bab is 1 -Value at 7f4045216bac is 1 -Value at 7f4045216bad is 1 -Value at 7f4045216bae is 1 -Value at 7f4045216baf is 1 -Value at 7f4045216bb0 is 1 -Value at 7f4045216bb1 is 1 -Value at 7f4045216bb2 is 1 -Value at 7f4045216bb3 is 1 -Value at 7f4045216bb4 is 1 -Value at 7f4045216bb5 is 1 -Value at 7f4045216bb6 is 1 -Value at 7f4045216bb7 is 1 -Value at 7f4045216bb8 is 1 -Value at 7f4045216bb9 is 1 -Value at 7f4045216bba is 1 -Value at 7f4045216bbb is 1 -Value at 7f4045216bbc is 1 -Value at 7f4045216bbd is 1 -Value at 7f4045216bbe is 1 -Value at 7f4045216bbf is 1 -Value at 7f4045216bc0 is 1 -Value at 7f4045216bc1 is 1 -Value at 7f4045216bc2 is 1 -Value at 7f4045216bc3 is 1 -Value at 7f4045216bc4 is 1 -Value at 7f4045216bc5 is 1 -Value at 7f4045216bc6 is 1 -Value at 7f4045216bc7 is 1 -Value at 7f4045216bc8 is 1 -Value at 7f4045216bc9 is 1 -Value at 7f4045216bca is 1 -Value at 7f4045216bcb is 1 -Value at 7f4045216bcc is 1 -Value at 7f4045216bcd is 1 -Value at 7f4045216bce is 1 -Value at 7f4045216bcf is 1 -Value at 7f4045216bd0 is 1 -Value at 7f4045216bd1 is 1 -Value at 7f4045216bd2 is 1 -Value at 7f4045216bd3 is 1 -Value at 7f4045216bd4 is 1 -Value at 7f4045216bd5 is 1 -Value at 7f4045216bd6 is 1 -Value at 7f4045216bd7 is 1 -Value at 7f4045216bd8 is 1 -Value at 7f4045216bd9 is 1 -Value at 7f4045216bda is 1 -Value at 7f4045216bdb is 1 -Value at 7f4045216bdc is 1 -Value at 7f4045216bdd is 1 -Value at 7f4045216bde is 1 -Value at 7f4045216bdf is 1 -Value at 7f4045216be0 is 1 -Value at 7f4045216be1 is 1 -Value at 7f4045216be2 is 1 -Value at 7f4045216be3 is 1 -Value at 7f4045216be4 is 1 -Value at 7f4045216be5 is 1 -Value at 7f4045216be6 is 1 -Value at 7f4045216be7 is 1 -Value at 7f4045216be8 is 1 -Value at 7f4045216be9 is 1 -Value at 7f4045216bea is 1 -Value at 7f4045216beb is 1 -Value at 7f4045216bec is 1 -Value at 7f4045216bed is 1 -Value at 7f4045216bee is 1 -Value at 7f4045216bef is 1 -Value at 7f4045216bf0 is 1 -Value at 7f4045216bf1 is 1 -Value at 7f4045216bf2 is 1 -Value at 7f4045216bf3 is 1 -Value at 7f4045216bf4 is 1 -Value at 7f4045216bf5 is 1 -Value at 7f4045216bf6 is 1 -Value at 7f4045216bf7 is 1 -Value at 7f4045216bf8 is 1 -Value at 7f4045216bf9 is 1 -Value at 7f4045216bfa is 1 -Value at 7f4045216bfb is 1 -Value at 7f4045216bfc is 1 -Value at 7f4045216bfd is 1 -Value at 7f4045216bfe is 1 -Value at 7f4045216bff is 1 -Value at 7f4045216c00 is 1 -Value at 7f4045216c01 is 1 -Value at 7f4045216c02 is 1 -Value at 7f4045216c03 is 1 -Value at 7f4045216c04 is 1 -Value at 7f4045216c05 is 1 -Value at 7f4045216c06 is 1 -Value at 7f4045216c07 is 1 -Value at 7f4045216c08 is 1 -Value at 7f4045216c09 is 1 -Value at 7f4045216c0a is 1 -Value at 7f4045216c0b is 1 -Value at 7f4045216c0c is 1 -Value at 7f4045216c0d is 1 -Value at 7f4045216c0e is 1 -Value at 7f4045216c0f is 1 -Value at 7f4045216c10 is 1 -Value at 7f4045216c11 is 1 -Value at 7f4045216c12 is 1 -Value at 7f4045216c13 is 1 -Value at 7f4045216c14 is 1 -Value at 7f4045216c15 is 1 -Value at 7f4045216c16 is 1 -Value at 7f4045216c17 is 1 -Value at 7f4045216c18 is 1 -Value at 7f4045216c19 is 1 -Value at 7f4045216c1a is 1 -Value at 7f4045216c1b is 1 -Value at 7f4045216c1c is 1 -Value at 7f4045216c1d is 1 -Value at 7f4045216c1e is 1 -Value at 7f4045216c1f is 1 -Value at 7f4045216c20 is 1 -Value at 7f4045216c21 is 1 -Value at 7f4045216c22 is 1 -Value at 7f4045216c23 is 1 -Value at 7f4045216c24 is 1 -Value at 7f4045216c25 is 1 -Value at 7f4045216c26 is 1 -Value at 7f4045216c27 is 1 -Value at 7f4045216c28 is 1 -Value at 7f4045216c29 is 1 -Value at 7f4045216c2a is 1 -Value at 7f4045216c2b is 1 -Value at 7f4045216c2c is 1 -Value at 7f4045216c2d is 1 -Value at 7f4045216c2e is 1 -Value at 7f4045216c2f is 1 -Value at 7f4045216c30 is 1 -Value at 7f4045216c31 is 1 -Value at 7f4045216c32 is 1 -Value at 7f4045216c33 is 1 -Value at 7f4045216c34 is 1 -Value at 7f4045216c35 is 1 -Value at 7f4045216c36 is 1 -Value at 7f4045216c37 is 1 -Value at 7f4045216c38 is 1 -Value at 7f4045216c39 is 1 -Value at 7f4045216c3a is 1 -Value at 7f4045216c3b is 1 -Value at 7f4045216c3c is 1 -Value at 7f4045216c3d is 1 -Value at 7f4045216c3e is 1 -Value at 7f4045216c3f is 1 -Value at 7f4045216c40 is 1 -Value at 7f4045216c41 is 1 -Value at 7f4045216c42 is 1 -Value at 7f4045216c43 is 1 -Value at 7f4045216c44 is 1 -Value at 7f4045216c45 is 1 -Value at 7f4045216c46 is 1 -Value at 7f4045216c47 is 1 -Value at 7f4045216c48 is 1 -Value at 7f4045216c49 is 1 -Value at 7f4045216c4a is 1 -Value at 7f4045216c4b is 1 -Value at 7f4045216c4c is 1 -Value at 7f4045216c4d is 1 -Value at 7f4045216c4e is 1 -Value at 7f4045216c4f is 1 -Value at 7f4045216c50 is 1 -Value at 7f4045216c51 is 1 -Value at 7f4045216c52 is 1 -Value at 7f4045216c53 is 1 -Value at 7f4045216c54 is 1 -Value at 7f4045216c55 is 1 -Value at 7f4045216c56 is 1 -Value at 7f4045216c57 is 1 -Value at 7f4045216c58 is 1 -Value at 7f4045216c59 is 1 -Value at 7f4045216c5a is 1 -Value at 7f4045216c5b is 1 -Value at 7f4045216c5c is 1 -Value at 7f4045216c5d is 1 -Value at 7f4045216c5e is 1 -Value at 7f4045216c5f is 1 -Value at 7f4045216c60 is 1 -Value at 7f4045216c61 is 1 -Value at 7f4045216c62 is 1 -Value at 7f4045216c63 is 1 -Value at 7f4045216c64 is 1 -Value at 7f4045216c65 is 1 -Value at 7f4045216c66 is 1 -Value at 7f4045216c67 is 1 -Value at 7f4045216c68 is 1 -Value at 7f4045216c69 is 1 -Value at 7f4045216c6a is 1 -Value at 7f4045216c6b is 1 -Value at 7f4045216c6c is 1 -Value at 7f4045216c6d is 1 -Value at 7f4045216c6e is 1 -Value at 7f4045216c6f is 1 -Value at 7f4045216c70 is 1 -Value at 7f4045216c71 is 1 -Value at 7f4045216c72 is 1 -Value at 7f4045216c73 is 1 -Value at 7f4045216c74 is 1 -Value at 7f4045216c75 is 1 -Value at 7f4045216c76 is 1 -Value at 7f4045216c77 is 1 -Value at 7f4045216c78 is 1 -Value at 7f4045216c79 is 1 -Value at 7f4045216c7a is 1 -Value at 7f4045216c7b is 1 -Value at 7f4045216c7c is 1 -Value at 7f4045216c7d is 1 -Value at 7f4045216c7e is 1 -Value at 7f4045216c7f is 1 -Value at 7f4045216c80 is 1 -Value at 7f4045216c81 is 1 -Value at 7f4045216c82 is 1 -Value at 7f4045216c83 is 1 -Value at 7f4045216c84 is 1 -Value at 7f4045216c85 is 1 -Value at 7f4045216c86 is 1 -Value at 7f4045216c87 is 1 -Value at 7f4045216c88 is 1 -Value at 7f4045216c89 is 1 -Value at 7f4045216c8a is 1 -Value at 7f4045216c8b is 1 -Value at 7f4045216c8c is 1 -Value at 7f4045216c8d is 1 -Value at 7f4045216c8e is 1 -Value at 7f4045216c8f is 1 -Value at 7f4045216c90 is 1 -Value at 7f4045216c91 is 1 -Value at 7f4045216c92 is 1 -Value at 7f4045216c93 is 1 -Value at 7f4045216c94 is 1 -Value at 7f4045216c95 is 1 -Value at 7f4045216c96 is 1 -Value at 7f4045216c97 is 1 -Value at 7f4045216c98 is 1 -Value at 7f4045216c99 is 1 -Value at 7f4045216c9a is 1 -Value at 7f4045216c9b is 1 -Value at 7f4045216c9c is 1 -Value at 7f4045216c9d is 1 -Value at 7f4045216c9e is 1 -Value at 7f4045216c9f is 1 -Value at 7f4045216ca0 is 1 -Value at 7f4045216ca1 is 1 -Value at 7f4045216ca2 is 1 -Value at 7f4045216ca3 is 1 -Value at 7f4045216ca4 is 1 -Value at 7f4045216ca5 is 1 -Value at 7f4045216ca6 is 1 -Value at 7f4045216ca7 is 1 -Value at 7f4045216ca8 is 1 -Value at 7f4045216ca9 is 1 -Value at 7f4045216caa is 1 -Value at 7f4045216cab is 1 -Value at 7f4045216cac is 1 -Value at 7f4045216cad is 1 -Value at 7f4045216cae is 1 -Value at 7f4045216caf is 1 -Value at 7f4045216cb0 is 1 -Value at 7f4045216cb1 is 1 -Value at 7f4045216cb2 is 1 -Value at 7f4045216cb3 is 1 -Value at 7f4045216cb4 is 1 -Value at 7f4045216cb5 is 1 -Value at 7f4045216cb6 is 1 -Value at 7f4045216cb7 is 1 -Value at 7f4045216cb8 is 1 -Value at 7f4045216cb9 is 1 -Value at 7f4045216cba is 1 -Value at 7f4045216cbb is 1 -Value at 7f4045216cbc is 1 -Value at 7f4045216cbd is 1 -Value at 7f4045216cbe is 1 -Value at 7f4045216cbf is 1 -Value at 7f4045216cc0 is 1 -Value at 7f4045216cc1 is 1 -Value at 7f4045216cc2 is 1 -Value at 7f4045216cc3 is 1 -Value at 7f4045216cc4 is 1 -Value at 7f4045216cc5 is 1 -Value at 7f4045216cc6 is 1 -Value at 7f4045216cc7 is 1 -Value at 7f4045216cc8 is 1 -Value at 7f4045216cc9 is 1 -Value at 7f4045216cca is 1 -Value at 7f4045216ccb is 1 -Value at 7f4045216ccc is 1 -Value at 7f4045216ccd is 1 -Value at 7f4045216cce is 1 -Value at 7f4045216ccf is 1 -Value at 7f4045216cd0 is 1 -Value at 7f4045216cd1 is 1 -Value at 7f4045216cd2 is 1 -Value at 7f4045216cd3 is 1 -Value at 7f4045216cd4 is 1 -Value at 7f4045216cd5 is 1 -Value at 7f4045216cd6 is 1 -Value at 7f4045216cd7 is 1 -Value at 7f4045216cd8 is 1 -Value at 7f4045216cd9 is 1 -Value at 7f4045216cda is 1 -Value at 7f4045216cdb is 1 -Value at 7f4045216cdc is 1 -Value at 7f4045216cdd is 1 -Value at 7f4045216cde is 1 -Value at 7f4045216cdf is 1 -Value at 7f4045216ce0 is 1 -Value at 7f4045216ce1 is 1 -Value at 7f4045216ce2 is 1 -Value at 7f4045216ce3 is 1 -Value at 7f4045216ce4 is 1 -Value at 7f4045216ce5 is 1 -Value at 7f4045216ce6 is 1 -Value at 7f4045216ce7 is 1 -Value at 7f4045216ce8 is 1 -Value at 7f4045216ce9 is 1 -Value at 7f4045216cea is 1 -Value at 7f4045216ceb is 1 -Value at 7f4045216cec is 1 -Value at 7f4045216ced is 1 -Value at 7f4045216cee is 1 -Value at 7f4045216cef is 1 -Value at 7f4045216cf0 is 1 -Value at 7f4045216cf1 is 1 -Value at 7f4045216cf2 is 1 -Value at 7f4045216cf3 is 1 -Value at 7f4045216cf4 is 1 -Value at 7f4045216cf5 is 1 -Value at 7f4045216cf6 is 1 -Value at 7f4045216cf7 is 1 -Value at 7f4045216cf8 is 1 -Value at 7f4045216cf9 is 1 -Value at 7f4045216cfa is 1 -Value at 7f4045216cfb is 1 -Value at 7f4045216cfc is 1 -Value at 7f4045216cfd is 1 -Value at 7f4045216cfe is 1 -Value at 7f4045216cff is 1 -Value at 7f4045216d00 is 1 -Value at 7f4045216d01 is 1 -Value at 7f4045216d02 is 1 -Value at 7f4045216d03 is 1 -Value at 7f4045216d04 is 1 -Value at 7f4045216d05 is 1 -Value at 7f4045216d06 is 1 -Value at 7f4045216d07 is 1 -Value at 7f4045216d08 is 1 -Value at 7f4045216d09 is 1 -Value at 7f4045216d0a is 1 -Value at 7f4045216d0b is 1 -Value at 7f4045216d0c is 1 -Value at 7f4045216d0d is 1 -Value at 7f4045216d0e is 1 -Value at 7f4045216d0f is 1 -Value at 7f4045216d10 is 1 -Value at 7f4045216d11 is 1 -Value at 7f4045216d12 is 1 -Value at 7f4045216d13 is 1 -Value at 7f4045216d14 is 1 -Value at 7f4045216d15 is 1 -Value at 7f4045216d16 is 1 -Value at 7f4045216d17 is 1 -Value at 7f4045216d18 is 1 -Value at 7f4045216d19 is 1 -Value at 7f4045216d1a is 1 -Value at 7f4045216d1b is 1 -Value at 7f4045216d1c is 1 -Value at 7f4045216d1d is 1 -Value at 7f4045216d1e is 1 -Value at 7f4045216d1f is 1 -Value at 7f4045216d20 is 1 -Value at 7f4045216d21 is 1 -Value at 7f4045216d22 is 1 -Value at 7f4045216d23 is 1 -Value at 7f4045216d24 is 1 -Value at 7f4045216d25 is 1 -Value at 7f4045216d26 is 1 -Value at 7f4045216d27 is 1 -Value at 7f4045216d28 is 1 -Value at 7f4045216d29 is 1 -Value at 7f4045216d2a is 1 -Value at 7f4045216d2b is 1 -Value at 7f4045216d2c is 1 -Value at 7f4045216d2d is 1 -Value at 7f4045216d2e is 1 -Value at 7f4045216d2f is 1 -Value at 7f4045216d30 is 1 -Value at 7f4045216d31 is 1 -Value at 7f4045216d32 is 1 -Value at 7f4045216d33 is 1 -Value at 7f4045216d34 is 1 -Value at 7f4045216d35 is 1 -Value at 7f4045216d36 is 1 -Value at 7f4045216d37 is 1 -Value at 7f4045216d38 is 1 -Value at 7f4045216d39 is 1 -Value at 7f4045216d3a is 1 -Value at 7f4045216d3b is 1 -Value at 7f4045216d3c is 1 -Value at 7f4045216d3d is 1 -Value at 7f4045216d3e is 1 -Value at 7f4045216d3f is 1 -Value at 7f4045216d40 is 1 -Value at 7f4045216d41 is 1 -Value at 7f4045216d42 is 1 -Value at 7f4045216d43 is 1 -Value at 7f4045216d44 is 1 -Value at 7f4045216d45 is 1 -Value at 7f4045216d46 is 1 -Value at 7f4045216d47 is 1 -Value at 7f4045216d48 is 1 -Value at 7f4045216d49 is 1 -Value at 7f4045216d4a is 1 -Value at 7f4045216d4b is 1 -Value at 7f4045216d4c is 1 -Value at 7f4045216d4d is 1 -Value at 7f4045216d4e is 1 -Value at 7f4045216d4f is 1 -Value at 7f4045216d50 is 1 -Value at 7f4045216d51 is 1 -Value at 7f4045216d52 is 1 -Value at 7f4045216d53 is 1 -Value at 7f4045216d54 is 1 -Value at 7f4045216d55 is 1 -Value at 7f4045216d56 is 1 -Value at 7f4045216d57 is 1 -Value at 7f4045216d58 is 1 -Value at 7f4045216d59 is 1 -Value at 7f4045216d5a is 1 -Value at 7f4045216d5b is 1 -Value at 7f4045216d5c is 1 -Value at 7f4045216d5d is 1 -Value at 7f4045216d5e is 1 -Value at 7f4045216d5f is 1 -Value at 7f4045216d60 is 1 -Value at 7f4045216d61 is 1 -Value at 7f4045216d62 is 1 -Value at 7f4045216d63 is 1 -Value at 7f4045216d64 is 1 -Value at 7f4045216d65 is 1 -Value at 7f4045216d66 is 1 -Value at 7f4045216d67 is 1 -Value at 7f4045216d68 is 1 -Value at 7f4045216d69 is 1 -Value at 7f4045216d6a is 1 -Value at 7f4045216d6b is 1 -Value at 7f4045216d6c is 1 -Value at 7f4045216d6d is 1 -Value at 7f4045216d6e is 1 -Value at 7f4045216d6f is 1 -Value at 7f4045216d70 is 1 -Value at 7f4045216d71 is 1 -Value at 7f4045216d72 is 1 -Value at 7f4045216d73 is 1 -Value at 7f4045216d74 is 1 -Value at 7f4045216d75 is 1 -Value at 7f4045216d76 is 1 -Value at 7f4045216d77 is 1 -Value at 7f4045216d78 is 1 -Value at 7f4045216d79 is 1 -Value at 7f4045216d7a is 1 -Value at 7f4045216d7b is 1 -Value at 7f4045216d7c is 1 -Value at 7f4045216d7d is 1 -Value at 7f4045216d7e is 1 -Value at 7f4045216d7f is 1 -Value at 7f4045216d80 is 1 -Value at 7f4045216d81 is 1 -Value at 7f4045216d82 is 1 -Value at 7f4045216d83 is 1 -Value at 7f4045216d84 is 1 -Value at 7f4045216d85 is 1 -Value at 7f4045216d86 is 1 -Value at 7f4045216d87 is 1 -Value at 7f4045216d88 is 1 -Value at 7f4045216d89 is 1 -Value at 7f4045216d8a is 1 -Value at 7f4045216d8b is 1 -Value at 7f4045216d8c is 1 -Value at 7f4045216d8d is 1 -Value at 7f4045216d8e is 1 -Value at 7f4045216d8f is 1 -Value at 7f4045216d90 is 1 -Value at 7f4045216d91 is 1 -Value at 7f4045216d92 is 1 -Value at 7f4045216d93 is 1 -Value at 7f4045216d94 is 1 -Value at 7f4045216d95 is 1 -Value at 7f4045216d96 is 1 -Value at 7f4045216d97 is 1 -Value at 7f4045216d98 is 1 -Value at 7f4045216d99 is 1 -Value at 7f4045216d9a is 1 -Value at 7f4045216d9b is 1 -Value at 7f4045216d9c is 1 -Value at 7f4045216d9d is 1 -Value at 7f4045216d9e is 1 -Value at 7f4045216d9f is 1 -Value at 7f4045216da0 is 1 -Value at 7f4045216da1 is 1 -Value at 7f4045216da2 is 1 -Value at 7f4045216da3 is 1 -Value at 7f4045216da4 is 1 -Value at 7f4045216da5 is 1 -Value at 7f4045216da6 is 1 -Value at 7f4045216da7 is 1 -Value at 7f4045216da8 is 1 -Value at 7f4045216da9 is 1 -Value at 7f4045216daa is 1 -Value at 7f4045216dab is 1 -Value at 7f4045216dac is 1 -Value at 7f4045216dad is 1 -Value at 7f4045216dae is 1 -Value at 7f4045216daf is 1 -Value at 7f4045216db0 is 1 -Value at 7f4045216db1 is 1 -Value at 7f4045216db2 is 1 -Value at 7f4045216db3 is 1 -Value at 7f4045216db4 is 1 -Value at 7f4045216db5 is 1 -Value at 7f4045216db6 is 1 -Value at 7f4045216db7 is 1 -Value at 7f4045216db8 is 1 -Value at 7f4045216db9 is 1 -Value at 7f4045216dba is 1 -Value at 7f4045216dbb is 1 -Value at 7f4045216dbc is 1 -Value at 7f4045216dbd is 1 -Value at 7f4045216dbe is 1 -Value at 7f4045216dbf is 1 -Value at 7f4045216dc0 is 1 -Value at 7f4045216dc1 is 1 -Value at 7f4045216dc2 is 1 -Value at 7f4045216dc3 is 1 -Value at 7f4045216dc4 is 1 -Value at 7f4045216dc5 is 1 -Value at 7f4045216dc6 is 1 -Value at 7f4045216dc7 is 1 -Value at 7f4045216dc8 is 1 -Value at 7f4045216dc9 is 1 -Value at 7f4045216dca is 1 -Value at 7f4045216dcb is 1 -Value at 7f4045216dcc is 1 -Value at 7f4045216dcd is 1 -Value at 7f4045216dce is 1 -Value at 7f4045216dcf is 1 -Value at 7f4045216dd0 is 1 -Value at 7f4045216dd1 is 1 -Value at 7f4045216dd2 is 1 -Value at 7f4045216dd3 is 1 -Value at 7f4045216dd4 is 1 -Value at 7f4045216dd5 is 1 -Value at 7f4045216dd6 is 1 -Value at 7f4045216dd7 is 1 -Value at 7f4045216dd8 is 1 -Value at 7f4045216dd9 is 1 -Value at 7f4045216dda is 1 -Value at 7f4045216ddb is 1 -Value at 7f4045216ddc is 1 -Value at 7f4045216ddd is 1 -Value at 7f4045216dde is 1 -Value at 7f4045216ddf is 1 -Value at 7f4045216de0 is 1 -Value at 7f4045216de1 is 1 -Value at 7f4045216de2 is 1 -Value at 7f4045216de3 is 1 -Value at 7f4045216de4 is 1 -Value at 7f4045216de5 is 1 -Value at 7f4045216de6 is 1 -Value at 7f4045216de7 is 1 -Value at 7f4045216de8 is 1 -Value at 7f4045216de9 is 1 -Value at 7f4045216dea is 1 -Value at 7f4045216deb is 1 -Value at 7f4045216dec is 1 -Value at 7f4045216ded is 1 -Value at 7f4045216dee is 1 -Value at 7f4045216def is 1 -Value at 7f4045216df0 is 1 -Value at 7f4045216df1 is 1 -Value at 7f4045216df2 is 1 -Value at 7f4045216df3 is 1 -Value at 7f4045216df4 is 1 -Value at 7f4045216df5 is 1 -Value at 7f4045216df6 is 1 -Value at 7f4045216df7 is 1 -Value at 7f4045216df8 is 1 -Value at 7f4045216df9 is 1 -Value at 7f4045216dfa is 1 -Value at 7f4045216dfb is 1 -Value at 7f4045216dfc is 1 -Value at 7f4045216dfd is 1 -Value at 7f4045216dfe is 1 -Value at 7f4045216dff is 1 -Value at 7f4045216e00 is 1 -Value at 7f4045216e01 is 1 -Value at 7f4045216e02 is 1 -Value at 7f4045216e03 is 1 -Value at 7f4045216e04 is 1 -Value at 7f4045216e05 is 1 -Value at 7f4045216e06 is 1 -Value at 7f4045216e07 is 1 -Value at 7f4045216e08 is 1 -Value at 7f4045216e09 is 1 -Value at 7f4045216e0a is 1 -Value at 7f4045216e0b is 1 -Value at 7f4045216e0c is 1 -Value at 7f4045216e0d is 1 -Value at 7f4045216e0e is 1 -Value at 7f4045216e0f is 1 -Value at 7f4045216e10 is 1 -Value at 7f4045216e11 is 1 -Value at 7f4045216e12 is 1 -Value at 7f4045216e13 is 1 -Value at 7f4045216e14 is 1 -Value at 7f4045216e15 is 1 -Value at 7f4045216e16 is 1 -Value at 7f4045216e17 is 1 -Value at 7f4045216e18 is 1 -Value at 7f4045216e19 is 1 -Value at 7f4045216e1a is 1 -Value at 7f4045216e1b is 1 -Value at 7f4045216e1c is 1 -Value at 7f4045216e1d is 1 -Value at 7f4045216e1e is 1 -Value at 7f4045216e1f is 1 -Value at 7f4045216e20 is 1 -Value at 7f4045216e21 is 1 -Value at 7f4045216e22 is 1 -Value at 7f4045216e23 is 1 -Value at 7f4045216e24 is 1 -Value at 7f4045216e25 is 1 -Value at 7f4045216e26 is 1 -Value at 7f4045216e27 is 1 -Value at 7f4045216e28 is 1 -Value at 7f4045216e29 is 1 -Value at 7f4045216e2a is 1 -Value at 7f4045216e2b is 1 -Value at 7f4045216e2c is 1 -Value at 7f4045216e2d is 1 -Value at 7f4045216e2e is 1 -Value at 7f4045216e2f is 1 -Value at 7f4045216e30 is 1 -Value at 7f4045216e31 is 1 -Value at 7f4045216e32 is 1 -Value at 7f4045216e33 is 1 -Value at 7f4045216e34 is 1 -Value at 7f4045216e35 is 1 -Value at 7f4045216e36 is 1 -Value at 7f4045216e37 is 1 -Value at 7f4045216e38 is 1 -Value at 7f4045216e39 is 1 -Value at 7f4045216e3a is 1 -Value at 7f4045216e3b is 1 -Value at 7f4045216e3c is 1 -Value at 7f4045216e3d is 1 -Value at 7f4045216e3e is 1 -Value at 7f4045216e3f is 1 -Value at 7f4045216e40 is 1 -Value at 7f4045216e41 is 1 -Value at 7f4045216e42 is 1 -Value at 7f4045216e43 is 1 -Value at 7f4045216e44 is 1 -Value at 7f4045216e45 is 1 -Value at 7f4045216e46 is 1 -Value at 7f4045216e47 is 1 -Value at 7f4045216e48 is 1 -Value at 7f4045216e49 is 1 -Value at 7f4045216e4a is 1 -Value at 7f4045216e4b is 1 -Value at 7f4045216e4c is 1 -Value at 7f4045216e4d is 1 -Value at 7f4045216e4e is 1 -Value at 7f4045216e4f is 1 -Value at 7f4045216e50 is 1 -Value at 7f4045216e51 is 1 -Value at 7f4045216e52 is 1 -Value at 7f4045216e53 is 1 -Value at 7f4045216e54 is 1 -Value at 7f4045216e55 is 1 -Value at 7f4045216e56 is 1 -Value at 7f4045216e57 is 1 -Value at 7f4045216e58 is 1 -Value at 7f4045216e59 is 1 -Value at 7f4045216e5a is 1 -Value at 7f4045216e5b is 1 -Value at 7f4045216e5c is 1 -Value at 7f4045216e5d is 1 -Value at 7f4045216e5e is 1 -Value at 7f4045216e5f is 1 -Value at 7f4045216e60 is 1 -Value at 7f4045216e61 is 1 -Value at 7f4045216e62 is 1 -Value at 7f4045216e63 is 1 -Value at 7f4045216e64 is 1 -Value at 7f4045216e65 is 1 -Value at 7f4045216e66 is 1 -Value at 7f4045216e67 is 1 -Value at 7f4045216e68 is 1 -Value at 7f4045216e69 is 1 -Value at 7f4045216e6a is 1 -Value at 7f4045216e6b is 1 -Value at 7f4045216e6c is 1 -Value at 7f4045216e6d is 1 -Value at 7f4045216e6e is 1 -Value at 7f4045216e6f is 1 -Value at 7f4045216e70 is 1 -Value at 7f4045216e71 is 1 -Value at 7f4045216e72 is 1 -Value at 7f4045216e73 is 1 -Value at 7f4045216e74 is 1 -Value at 7f4045216e75 is 1 -Value at 7f4045216e76 is 1 -Value at 7f4045216e77 is 1 -Value at 7f4045216e78 is 1 -Value at 7f4045216e79 is 1 -Value at 7f4045216e7a is 1 -Value at 7f4045216e7b is 1 -Value at 7f4045216e7c is 1 -Value at 7f4045216e7d is 1 -Value at 7f4045216e7e is 1 -Value at 7f4045216e7f is 1 -Value at 7f4045216e80 is 1 -Value at 7f4045216e81 is 1 -Value at 7f4045216e82 is 1 -Value at 7f4045216e83 is 1 -Value at 7f4045216e84 is 1 -Value at 7f4045216e85 is 1 -Value at 7f4045216e86 is 1 -Value at 7f4045216e87 is 1 -Value at 7f4045216e88 is 1 -Value at 7f4045216e89 is 1 -Value at 7f4045216e8a is 1 -Value at 7f4045216e8b is 1 -Value at 7f4045216e8c is 1 -Value at 7f4045216e8d is 1 -Value at 7f4045216e8e is 1 -Value at 7f4045216e8f is 1 -Value at 7f4045216e90 is 1 -Value at 7f4045216e91 is 1 -Value at 7f4045216e92 is 1 -Value at 7f4045216e93 is 1 -Value at 7f4045216e94 is 1 -Value at 7f4045216e95 is 1 -Value at 7f4045216e96 is 1 -Value at 7f4045216e97 is 1 -Value at 7f4045216e98 is 1 -Value at 7f4045216e99 is 1 -Value at 7f4045216e9a is 1 -Value at 7f4045216e9b is 1 -Value at 7f4045216e9c is 1 -Value at 7f4045216e9d is 1 -Value at 7f4045216e9e is 1 -Value at 7f4045216e9f is 1 -Value at 7f4045216ea0 is 1 -Value at 7f4045216ea1 is 1 -Value at 7f4045216ea2 is 1 -Value at 7f4045216ea3 is 1 -Value at 7f4045216ea4 is 1 -Value at 7f4045216ea5 is 1 -Value at 7f4045216ea6 is 1 -Value at 7f4045216ea7 is 1 -Value at 7f4045216ea8 is 1 -Value at 7f4045216ea9 is 1 -Value at 7f4045216eaa is 1 -Value at 7f4045216eab is 1 -Value at 7f4045216eac is 1 -Value at 7f4045216ead is 1 -Value at 7f4045216eae is 1 -Value at 7f4045216eaf is 1 -Value at 7f4045216eb0 is 1 -Value at 7f4045216eb1 is 1 -Value at 7f4045216eb2 is 1 -Value at 7f4045216eb3 is 1 -Value at 7f4045216eb4 is 1 -Value at 7f4045216eb5 is 1 -Value at 7f4045216eb6 is 1 -Value at 7f4045216eb7 is 1 -Value at 7f4045216eb8 is 1 -Value at 7f4045216eb9 is 1 -Value at 7f4045216eba is 1 -Value at 7f4045216ebb is 1 -Value at 7f4045216ebc is 1 -Value at 7f4045216ebd is 1 -Value at 7f4045216ebe is 1 -Value at 7f4045216ebf is 1 -Value at 7f4045216ec0 is 1 -Value at 7f4045216ec1 is 1 -Value at 7f4045216ec2 is 1 -Value at 7f4045216ec3 is 1 -Value at 7f4045216ec4 is 1 -Value at 7f4045216ec5 is 1 -Value at 7f4045216ec6 is 1 -Value at 7f4045216ec7 is 1 -Value at 7f4045216ec8 is 1 -Value at 7f4045216ec9 is 1 -Value at 7f4045216eca is 1 -Value at 7f4045216ecb is 1 -Value at 7f4045216ecc is 1 -Value at 7f4045216ecd is 1 -Value at 7f4045216ece is 1 -Value at 7f4045216ecf is 1 -Value at 7f4045216ed0 is 1 -Value at 7f4045216ed1 is 1 -Value at 7f4045216ed2 is 1 -Value at 7f4045216ed3 is 1 -Value at 7f4045216ed4 is 1 -Value at 7f4045216ed5 is 1 -Value at 7f4045216ed6 is 1 -Value at 7f4045216ed7 is 1 -Value at 7f4045216ed8 is 1 -Value at 7f4045216ed9 is 1 -Value at 7f4045216eda is 1 -Value at 7f4045216edb is 1 -Value at 7f4045216edc is 1 -Value at 7f4045216edd is 1 -Value at 7f4045216ede is 1 -Value at 7f4045216edf is 1 -Value at 7f4045216ee0 is 1 -Value at 7f4045216ee1 is 1 -Value at 7f4045216ee2 is 1 -Value at 7f4045216ee3 is 1 -Value at 7f4045216ee4 is 1 -Value at 7f4045216ee5 is 1 -Value at 7f4045216ee6 is 1 -Value at 7f4045216ee7 is 1 -Value at 7f4045216ee8 is 1 -Value at 7f4045216ee9 is 1 -Value at 7f4045216eea is 1 -Value at 7f4045216eeb is 1 -Value at 7f4045216eec is 1 -Value at 7f4045216eed is 1 -Value at 7f4045216eee is 1 -Value at 7f4045216eef is 1 -Value at 7f4045216ef0 is 1 -Value at 7f4045216ef1 is 1 -Value at 7f4045216ef2 is 1 -Value at 7f4045216ef3 is 1 -Value at 7f4045216ef4 is 1 -Value at 7f4045216ef5 is 1 -Value at 7f4045216ef6 is 1 -Value at 7f4045216ef7 is 1 -Value at 7f4045216ef8 is 1 -Value at 7f4045216ef9 is 1 -Value at 7f4045216efa is 1 -Value at 7f4045216efb is 1 -Value at 7f4045216efc is 1 -Value at 7f4045216efd is 1 -Value at 7f4045216efe is 1 -Value at 7f4045216eff is 1 -Value at 7f4045216f00 is 1 -Value at 7f4045216f01 is 1 -Value at 7f4045216f02 is 1 -Value at 7f4045216f03 is 1 -Value at 7f4045216f04 is 1 -Value at 7f4045216f05 is 1 -Value at 7f4045216f06 is 1 -Value at 7f4045216f07 is 1 -Value at 7f4045216f08 is 1 -Value at 7f4045216f09 is 1 -Value at 7f4045216f0a is 1 -Value at 7f4045216f0b is 1 -Value at 7f4045216f0c is 1 -Value at 7f4045216f0d is 1 -Value at 7f4045216f0e is 1 -Value at 7f4045216f0f is 1 -Value at 7f4045216f10 is 1 -Value at 7f4045216f11 is 1 -Value at 7f4045216f12 is 1 -Value at 7f4045216f13 is 1 -Value at 7f4045216f14 is 1 -Value at 7f4045216f15 is 1 -Value at 7f4045216f16 is 1 -Value at 7f4045216f17 is 1 -Value at 7f4045216f18 is 1 -Value at 7f4045216f19 is 1 -Value at 7f4045216f1a is 1 -Value at 7f4045216f1b is 1 -Value at 7f4045216f1c is 1 -Value at 7f4045216f1d is 1 -Value at 7f4045216f1e is 1 -Value at 7f4045216f1f is 1 -Value at 7f4045216f20 is 1 -Value at 7f4045216f21 is 1 -Value at 7f4045216f22 is 1 -Value at 7f4045216f23 is 1 -Value at 7f4045216f24 is 1 -Value at 7f4045216f25 is 1 -Value at 7f4045216f26 is 1 -Value at 7f4045216f27 is 1 -Value at 7f4045216f28 is 1 -Value at 7f4045216f29 is 1 -Value at 7f4045216f2a is 1 -Value at 7f4045216f2b is 1 -Value at 7f4045216f2c is 1 -Value at 7f4045216f2d is 1 -Value at 7f4045216f2e is 1 -Value at 7f4045216f2f is 1 -Value at 7f4045216f30 is 1 -Value at 7f4045216f31 is 1 -Value at 7f4045216f32 is 1 -Value at 7f4045216f33 is 1 -Value at 7f4045216f34 is 1 -Value at 7f4045216f35 is 1 -Value at 7f4045216f36 is 1 -Value at 7f4045216f37 is 1 -Value at 7f4045216f38 is 1 -Value at 7f4045216f39 is 1 -Value at 7f4045216f3a is 1 -Value at 7f4045216f3b is 1 -Value at 7f4045216f3c is 1 -Value at 7f4045216f3d is 1 -Value at 7f4045216f3e is 1 -Value at 7f4045216f3f is 1 -Value at 7f4045216f40 is 1 -Value at 7f4045216f41 is 1 -Value at 7f4045216f42 is 1 -Value at 7f4045216f43 is 1 -Value at 7f4045216f44 is 1 -Value at 7f4045216f45 is 1 -Value at 7f4045216f46 is 1 -Value at 7f4045216f47 is 1 -Value at 7f4045216f48 is 1 -Value at 7f4045216f49 is 1 -Value at 7f4045216f4a is 1 -Value at 7f4045216f4b is 1 -Value at 7f4045216f4c is 1 -Value at 7f4045216f4d is 1 -Value at 7f4045216f4e is 1 -Value at 7f4045216f4f is 1 -Value at 7f4045216f50 is 1 -Value at 7f4045216f51 is 1 -Value at 7f4045216f52 is 1 -Value at 7f4045216f53 is 1 -Value at 7f4045216f54 is 1 -Value at 7f4045216f55 is 1 -Value at 7f4045216f56 is 1 -Value at 7f4045216f57 is 1 -Value at 7f4045216f58 is 1 -Value at 7f4045216f59 is 1 -Value at 7f4045216f5a is 1 -Value at 7f4045216f5b is 1 -Value at 7f4045216f5c is 1 -Value at 7f4045216f5d is 1 -Value at 7f4045216f5e is 1 -Value at 7f4045216f5f is 1 -Value at 7f4045216f60 is 1 -Value at 7f4045216f61 is 1 -Value at 7f4045216f62 is 1 -Value at 7f4045216f63 is 1 -Value at 7f4045216f64 is 1 -Value at 7f4045216f65 is 1 -Value at 7f4045216f66 is 1 -Value at 7f4045216f67 is 1 -Value at 7f4045216f68 is 1 -Value at 7f4045216f69 is 1 -Value at 7f4045216f6a is 1 -Value at 7f4045216f6b is 1 -Value at 7f4045216f6c is 1 -Value at 7f4045216f6d is 1 -Value at 7f4045216f6e is 1 -Value at 7f4045216f6f is 1 -Value at 7f4045216f70 is 1 -Value at 7f4045216f71 is 1 -Value at 7f4045216f72 is 1 -Value at 7f4045216f73 is 1 -Value at 7f4045216f74 is 1 -Value at 7f4045216f75 is 1 -Value at 7f4045216f76 is 1 -Value at 7f4045216f77 is 1 -Value at 7f4045216f78 is 1 -Value at 7f4045216f79 is 1 -Value at 7f4045216f7a is 1 -Value at 7f4045216f7b is 1 -Value at 7f4045216f7c is 1 -Value at 7f4045216f7d is 1 -Value at 7f4045216f7e is 1 -Value at 7f4045216f7f is 1 -Value at 7f4045216f80 is 1 -Value at 7f4045216f81 is 1 -Value at 7f4045216f82 is 1 -Value at 7f4045216f83 is 1 -Value at 7f4045216f84 is 1 -Value at 7f4045216f85 is 1 -Value at 7f4045216f86 is 1 -Value at 7f4045216f87 is 1 -Value at 7f4045216f88 is 1 -Value at 7f4045216f89 is 1 -Value at 7f4045216f8a is 1 -Value at 7f4045216f8b is 1 -Value at 7f4045216f8c is 1 -Value at 7f4045216f8d is 1 -Value at 7f4045216f8e is 1 -Value at 7f4045216f8f is 1 -Value at 7f4045216f90 is 1 -Value at 7f4045216f91 is 1 -Value at 7f4045216f92 is 1 -Value at 7f4045216f93 is 1 -Value at 7f4045216f94 is 1 -Value at 7f4045216f95 is 1 -Value at 7f4045216f96 is 1 -Value at 7f4045216f97 is 1 -Value at 7f4045216f98 is 1 -Value at 7f4045216f99 is 1 -Value at 7f4045216f9a is 1 -Value at 7f4045216f9b is 1 -Value at 7f4045216f9c is 1 -Value at 7f4045216f9d is 1 -Value at 7f4045216f9e is 1 -Value at 7f4045216f9f is 1 -Value at 7f4045216fa0 is 1 -Value at 7f4045216fa1 is 1 -Value at 7f4045216fa2 is 1 -Value at 7f4045216fa3 is 1 -Value at 7f4045216fa4 is 1 -Value at 7f4045216fa5 is 1 -Value at 7f4045216fa6 is 1 -Value at 7f4045216fa7 is 1 -Value at 7f40452 \ No newline at end of file diff --git a/client/rmp_client.cpp b/client/rmp_client.cpp index 3596a34..043241b 100644 --- a/client/rmp_client.cpp +++ b/client/rmp_client.cpp @@ -10,6 +10,7 @@ #include #include #include "uffdman.hpp" +#include "rmp_types.hpp" #include "rmp_client.hpp" #define PAGE_SIZE sysconf(_SC_PAGE_SIZE) @@ -23,25 +24,49 @@ #define printf(exp...) printf(exp); #else #define err(msg) -#define printf(exp...) printf(exp); +#define printf(exp...) #endif +char *print_stmt = ""; int socketfd; bool connected = false; std::unordered_map *addr_hndl_map; std::unordered_map *addr_npages_map; +void print(int n) +{ + // If number is smaller than 0, put a - sign + // and change number to positive + if (n < 0) + { + write(STDOUT_FILENO, "-", 1); + n = -n; + } + + // Remove the last digit and recur + if (n / 10) + print(n / 10); + + char s = ((n % 10) + '0'); + // Print the last digit + write(STDOUT_FILENO, &s, 1); +} + void rmp_write_page(rmp::handle hd, ul offset, void *page) { + + // print_stmt = "Entered rmp_write_page\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); + if (!connected) { return; } - double *pg = (double *)page; - for (int i = 0; i < 4096 / sizeof(double); i++) + int *pg = (int *)page; + for (int i = 0; i < 4096 / sizeof(int); i++) { - printf("Write Value : %f\n", pg[i]); + printf("Write Value : %d\n", pg[i]); } rmp::packet send_pkt; @@ -54,15 +79,32 @@ void rmp_write_page(rmp::handle hd, ul offset, void *page) rmp::packet return_pkt; + // print_stmt = "SEND BYTES (rmp_write_page): "; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); + // print((int)send(socketfd, &send_pkt, sizeof(rmp::packet), 0)); send(socketfd, &send_pkt, sizeof(rmp::packet), 0); + usleep(1000); + + // print_stmt = "\nSent req (rmp_write_page)\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); recv(socketfd, &return_pkt, sizeof(rmp::packet), 0); + usleep(1000); + + // print_stmt = "Recvd req (rmp_write_page)\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); printf("Error (rmp_write_page) : %u\n", return_pkt.error); + + // print_stmt = "Exiting rmp_write_page\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); } void rmp_read_page(rmp::handle hd, ul offset, void *page) { + // print_stmt = "Entered rmp_read_page\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); + if (!connected) { return; @@ -77,17 +119,31 @@ void rmp_read_page(rmp::handle hd, ul offset, void *page) rmp::packet return_pkt; + // print_stmt = "SEND BYTES (rmp_read_page) : "; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); + // print((int)send(socketfd, &send_pkt, sizeof(rmp::packet), 0)); send(socketfd, &send_pkt, sizeof(rmp::packet), 0); + usleep(1000); + + // print_stmt = "\nSent req (rmp_read_page)\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); recv(socketfd, &return_pkt, sizeof(rmp::packet), 0); + usleep(1000); + + // print_stmt = "Recvd req (rmp_read_page)\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); memcpy(page, return_pkt.data, PAGE_SIZE); - double *pg = (double *)page; - for (int i = 0; i < 4096 / sizeof(double); i++) + int *pg = (int *)page; + for (int i = 0; i < 4096 / sizeof(int); i++) { - printf("Read Value : %f\n", pg[i]); + printf("Read Value : %d\n", pg[i]); } + + // print_stmt = "Exiting rmp_read_page\n"; + write(STDOUT_FILENO, print_stmt, strlen(print_stmt)); } void rmp_pagefault_resovler(void *start_addr, void *faulting_addr, int is_write, void *page) @@ -152,6 +208,8 @@ int rmp::Client::rmp_init() printf("Error while establishing connection to server\n"); return -1; } + + uffdman_init(); uffdman_register_page_resolver(&rmp_pagefault_resovler); // Initialize the maps @@ -186,8 +244,10 @@ void *rmp::Client::rmp_alloc(u32 npages) rmp::packet return_pkt; send(socketfd, &send_pkt, sizeof(rmp::packet), 0); + usleep(1000); recv(socketfd, &return_pkt, sizeof(rmp::packet), 0); + usleep(1000); printf("Handle : %d\n", return_pkt.hndl); diff --git a/include/rmp.hpp b/include/rmp.hpp deleted file mode 100644 index ec31145..0000000 --- a/include/rmp.hpp +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef RMP_HPP -#define RMP_HPP - -#include "ConnectionConfig.hpp" - -int rmp_init(ConnectionConfig); -void *rmp_alloc(long); -void rmp_free(void *); - -void rmp_server_init(ConnectionConfig); - -#endif diff --git a/client/rmp_client.hpp b/include/rmp_client.hpp similarity index 96% rename from client/rmp_client.hpp rename to include/rmp_client.hpp index dc97dc5..0801f0b 100644 --- a/client/rmp_client.hpp +++ b/include/rmp_client.hpp @@ -4,13 +4,10 @@ #include #include #include - -typedef unsigned int u32; -typedef unsigned long ul; +#include "rmp_types.hpp" namespace rmp { - typedef long handle; // Request contains fields required to // complete a client's request diff --git a/server/rmp_server.hpp b/include/rmp_server.hpp similarity index 90% rename from server/rmp_server.hpp rename to include/rmp_server.hpp index 0109bf8..312279a 100644 --- a/server/rmp_server.hpp +++ b/include/rmp_server.hpp @@ -2,21 +2,10 @@ #include #include - -typedef unsigned int u32; -typedef unsigned long ul; - -static u32 ALLOC_FAILED = 1; -static u32 READ_FAILED = 2; -static u32 WRITE_FAILED = 3; -static u32 FREE_FAILED = 4; -static u32 UNKNOWN_ACTION = 5; -static u32 INVALID_HANDLE = 6; +#include "rmp_types.hpp" namespace rmp { - typedef long handle; - // Request contains fields required to // complete a client's request typedef struct @@ -104,6 +93,7 @@ namespace rmp inline bool contains_key(rmp::handle handle) { + std::lock_guard guard(this->addr_map_lock); return this->addr_map.find(handle) != this->addr_map.end(); } }; diff --git a/include/rmp_types.hpp b/include/rmp_types.hpp index 49007e6..ec6b045 100644 --- a/include/rmp_types.hpp +++ b/include/rmp_types.hpp @@ -1,16 +1,34 @@ -#ifndef RMPTYPES_HPP -#define RMPTYPES_HPP +#pragma once +typedef unsigned int u32; typedef unsigned long ul; -typedef int rmp_handle; +static u32 ALLOC_FAILED = 1; +static u32 READ_FAILED = 2; +static u32 WRITE_FAILED = 3; +static u32 FREE_FAILED = 4; +static u32 UNKNOWN_ACTION = 5; +static u32 INVALID_HANDLE = 6; -enum rmp_req_type +namespace rmp { - ALLOC_PAGES, - READ_PAGE, - WRITE_PAGE, - FREE_PAGES -}; + typedef long handle; -#endif + // enum req_type + // { + // ALLOC_PAGES, + // READ_PAGE, + // WRITE_PAGE, + // FREE_PAGES + // } rmp_req; + + // enum error_type + // { + // ALLOC_FAILED, + // READ_FAILED, + // WRITE_FAILED, + // FREE_FAILED, + // UNKNOWN_ACTION, + // INVALID_HANDLE + // } rmp_err; +} // namespace rmp diff --git a/include/uffdman.hpp b/include/uffdman.hpp index 2d7402d..b16cea6 100644 --- a/include/uffdman.hpp +++ b/include/uffdman.hpp @@ -1,5 +1,9 @@ #pragma once +void uffdman_init(); + +void uffdman_destroy(); + void uffdman_register_page_resolver(void (*handler)(void *start_addr, void *faulting_addr, int is_write, void *page)); void uffdman_unregister_page_resolver(); diff --git a/preloadlib/Makefile b/preloadlib/Makefile index 1bef71e..6cd8289 100644 --- a/preloadlib/Makefile +++ b/preloadlib/Makefile @@ -4,7 +4,7 @@ SRC=../uffdman/uffdman.cpp ../client/rmp_client.cpp all: preloadlib preload-tests preloadlib: mkdir - g++ -g -I ../include -I ../client/ $(SRC) -shared -fPIC -o ./bin/preloadlib.so preloadlib.cpp -ldl -lpthread + g++ -Wall -I ../include $(SRC) -shared -fPIC -o ./bin/preloadlib.so preloadlib.cpp -ldl -lpthread preload-tests: $(MAKE) -C tests/ all diff --git a/preloadlib/notes b/preloadlib/notes deleted file mode 100644 index 1db758a..0000000 --- a/preloadlib/notes +++ /dev/null @@ -1,15 +0,0 @@ -invalidate_prev_resolved_page -fault_handler_thread -uffdman_unregister_region - -set exec-wrapper env 'LD_PRELOAD=./bin/preloadlib.so' -file ./a.out - - - -1. quicksort -2. matrix multiplication -3. convert img.jpg rose.png -4. sysbench --test=memory --memory-block-size=1M --memory-total-size=100G --num-threads=1 run - -All of these for local and remote allocation \ No newline at end of file diff --git a/preloadlib/out b/preloadlib/out deleted file mode 100644 index 657ee1c..0000000 --- a/preloadlib/out +++ /dev/null @@ -1,129 +0,0 @@ -preloadlib.so: (malloc) called -preloadlib.so: (check_conn) called -preloadlib.so: (preloadlib_init) called -preloadlib.so: Successfully hooked -preloadlib.so: (preloadlib_init) exiting -preloadlib.so: (init) called -preloadlib.so: (init) rmp_init Started -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (init) rmp_init finished -preloadlib.so: (init) exiting -rmp_fd is initialized! -preloadlib.so: (check_conn) exiting -preloadlib.so: (malloc) remote allocation -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) remote allocation finished -preloadlib.so: (malloc) exiting -preloadlib.so: (malloc) called -preloadlib.so: (check_conn) called -rmp_fd is initialized! -preloadlib.so: (check_conn) exiting -preloadlib.so: (malloc) remote allocation -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) called -preloadlib.so: (malloc) local allocation started -preloadlib.so: (malloc) local allocation done -preloadlib.so: (malloc) remote allocation finished -preloadlib.so: (malloc) exiting diff --git a/preloadlib/preloadlib.cpp b/preloadlib/preloadlib.cpp index e60c49a..40c67f0 100644 --- a/preloadlib/preloadlib.cpp +++ b/preloadlib/preloadlib.cpp @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include "rmp_client.hpp" @@ -31,7 +33,9 @@ static int preloadlib_init_pending = 0; static int do_local_allocation = 0; int rmp_fd = -1; +pthread_t mainthread_id; rmp::Client *client; +extern std::mutex fault_handler_cr; void print(const char *str) { @@ -58,10 +62,12 @@ static void rmp_conn_init(void) // 6767}; rmp::config conf{ - "10.237.15.93", - 6767}; + "127.0.0.1", + 6768}; + std::lock_guard guard(fault_handler_cr); do_local_allocation = 1; + mainthread_id = pthread_self(); print("preloadlib.so: (init) rmp_init Started\n"); client = new rmp::Client(conf); rmp_fd = client->rmp_init(); @@ -146,6 +152,21 @@ void free(void *ptr) print("preloadlib.so: (free) exiting\n"); } +void *local_malloc(size_t size) +{ + void *result; + print("preloadlib.so: (malloc) local allocation started\n"); + if (stdlib_malloc == NULL) + { + preloadlib_init(); + print("preloadlib.so: (malloc) stdlib_malloc is NULL\n"); + return NULL; + } + result = stdlib_malloc(size); + print("preloadlib.so: (malloc) local allocation done\n"); + return result; +} + void *malloc(size_t size) { print("preloadlib.so: (malloc) called\n"); @@ -153,29 +174,28 @@ void *malloc(size_t size) void *result; if (do_local_allocation) { - print("preloadlib.so: (malloc) local allocation started\n"); - if (stdlib_malloc == NULL) - { - preloadlib_init(); - print("preloadlib.so: (malloc) stdlib_malloc is NULL\n"); - return NULL; - } - result = stdlib_malloc(size); - print("preloadlib.so: (malloc) local allocation done\n"); - return result; + return local_malloc(size); } if (check_conn()) { + if (pthread_self() != mainthread_id) + { + return local_malloc(size); + } + + std::lock_guard guard(fault_handler_cr); //call rmp_alloc print("preloadlib.so: (malloc) remote allocation\n"); do_local_allocation = 1; long npages = ceil((float)size / (float)PAGE_SIZE); // printf("Size : %ld, PAGE SIZE : %ld, Pages : %ld\n", size, PAGE_SIZE, npages); result = (void *)client->rmp_alloc(npages); + fault_handler_cr.unlock(); print("preloadlib.so: (malloc) remote allocation finished\n"); do_local_allocation = 0; + return result; } // else // { @@ -183,6 +203,6 @@ void *malloc(size_t size) // } //fprintf(stderr, "preloadlib.so: malloc(0x%zx) = %p\n", size, result); - print("preloadlib.so: (malloc) exiting\n"); - return result; + print("preloadlib.so: (malloc) failed\n"); + return NULL; } \ No newline at end of file diff --git a/preloadlib/tests/malloc_test.c b/preloadlib/tests/malloc_test.c index ba271ca..6af48ef 100644 --- a/preloadlib/tests/malloc_test.c +++ b/preloadlib/tests/malloc_test.c @@ -10,31 +10,63 @@ void print(const char *str) static int foo() { - int n = 2048; + int n = 4096 * 100; int sum = 0; int *p = (int *)malloc(n); // memset(p, 1, n); - for (int i = 0; i < n; i++) + for (int i = 0; i < (n / sizeof(int)); i++) { + // write(STDOUT_FILENO, i + '0', strlen(i + '0')); + // write(STDOUT_FILENO, '\n', 1); + printf("%d\n", i); p[i] = i; } - for (int i = 0; i < n; i++) + for (int i = 0; i < (n / sizeof(int)); i++) { sum += p[i]; } + + // // memset(p, 1, n); + // for (int i = 0; i < (n / sizeof(int)) / 2; i++) + // { + // // write(STDOUT_FILENO, i + '0', strlen(i + '0')); + // // write(STDOUT_FILENO, '\n', 1); + // printf("%d\n", i); + // p[i] = i; + // } + + // for (int i = 0; i < (n / sizeof(int)) / 2; i++) + // { + // sum += p[i]; + // } + + // // memset(p, 1, n); + // for (int i = (n / sizeof(int)) / 2; i < (n / sizeof(int)); i++) + // { + // // write(STDOUT_FILENO, i + '0', strlen(i + '0')); + // // write(STDOUT_FILENO, '\n', 1); + // printf("%d\n", i); + // p[i] = i; + // } + + // for (int i = (n / sizeof(int)) / 2; i < (n / sizeof(int)); i++) + // { + // sum += p[i]; + // } return sum; } int main(int argc, char *argv[]) { - int i; - const int limit = 100; - void *malloc_ptrs[limit]; - getchar(); + // int i; + // const int limit = 100; + // void *malloc_ptrs[limit]; + // getchar(); // printf("Hello World!\n"); + printf("%d\n", foo()); #if 0 printf("%s\n", "malloc_test: (main) called"); diff --git a/rmp/rmp_client.cpp b/rmp/rmp_client.cpp deleted file mode 100644 index 81f6223..0000000 --- a/rmp/rmp_client.cpp +++ /dev/null @@ -1,217 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include "rmp.hpp" -#include "rmp_types.hpp" -#include "libsrvcli.hpp" -#include "uffdman.hpp" - -#ifndef DEBUG_PRINTS -#define DEBUG_PRINTS 0 -#endif - -#if DEBUG_PRINTS -#define err(msg) perror(msg) -#define cout(exp) cout << exp; -#else -#define err(msg) -#define cout(exp) -#endif - -#define PAGE_SIZE sysconf(_SC_PAGE_SIZE) - -/* - Potential TODO: - - convert client and server to classes - - useful for multiple instances of servers/clients. - - Guests can have proxy server objects - */ - -using namespace std; - -// static ConnectionConfig server_conf; -static unordered_map *addr_hndl_map; -static unordered_map *addr_npages_map; - -Client *cli; -int sockfd = -1; - -static ul srv_n_pages; -static rmp_handle srv_handle; -static ul srv_page, srv_offset; -static enum rmp_req_type req_type; - -// static void srv_alloc_pages(int sockfd) -// { -// req_type = ALLOC_PAGES; -// send(sockfd, &req_type, sizeof(enum rmp_req_type), 0); -// cout("Sending request type: " << req_type << endl); -// send(sockfd, &srv_n_pages, sizeof(ul), 0); -// cout("Sending no. of pages: " << srv_n_pages << endl); -// recv(sockfd, &srv_handle, sizeof(rmp_handle), 0); -// cout("Received server handle: " << srv_handle << endl); -// } - -// static void srv_read_page(int sockfd) -// { -// req_type = READ_PAGE; -// send(sockfd, &req_type, sizeof(enum rmp_req_type), 0); -// cout("Sending request type: " << req_type << endl); -// send(sockfd, &srv_handle, sizeof(rmp_handle), 0); -// cout("Sending server handle: " << srv_handle << endl); -// send(sockfd, &srv_offset, sizeof(ul), 0); -// cout("Sending offset: " << srv_offset << endl); -// recv(sockfd, &srv_page, sizeof(ul), 0); -// cout("Received page: " << srv_page << endl); -// } - -// static void srv_write_page(int sockfd) -// { -// req_type = WRITE_PAGE; -// send(sockfd, &req_type, sizeof(enum rmp_req_type), 0); -// cout("Sending request type: " << req_type << endl); -// send(sockfd, &srv_handle, sizeof(rmp_handle), 0); -// cout("Sending server handle: " << srv_handle << endl); -// send(sockfd, &srv_offset, sizeof(ul), 0); -// cout("Sending offset: " << srv_offset << endl); -// send(sockfd, &srv_page, sizeof(ul), 0); -// cout("Sending page: " << srv_page << endl); -// } - -// static void srv_free_pages(int sockfd) -// { -// req_type = FREE_PAGES; -// send(sockfd, &req_type, sizeof(enum rmp_req_type), 0); -// cout("Sending request type: " << req_type << endl); -// send(sockfd, &srv_handle, sizeof(rmp_handle), 0); -// cout("Sending server handle: " << srv_handle << endl); -// } - -static void rmp_write_page(rmp_handle hd, ul offset, void *page) -{ - // send page to server with write request - // srv_handle = hd; - // srv_offset = offset; - // srv_page = page; - // srv_write_page(sockfd); -} - -static ul rmp_read_page(rmp_handle hd, ul offset, void *page) -{ - // srv_handle = hd; - // srv_offset = offset; - // srv_read_page(sockfd); - // return srv_page; - memset(page, 1, 4096); -} - -void rmp_pagefault_resovler(void *start_addr, void *faulting_addr, int is_write, void *page) -{ - ul offset = (((ul)faulting_addr & ~(PAGE_SIZE - 1)) - (ul)start_addr); - rmp_handle hndl = addr_hndl_map->at((ul)start_addr); - // char *str = "INSIDE rmp_pagefault_resovler\n"; - // write(STDOUT_FILENO, str, strlen(str)); - printf("rmp_pagefault_resovler: "); - printf("Offset = %ld; ", offset); - printf("Start Address = %" PRIx64 "; ", start_addr); - printf("Faulting Address = %" PRIx64 "\n", faulting_addr); - if (is_write) - { - rmp_write_page(hndl, offset, page); - } - else - { - rmp_read_page(hndl, offset, page); - } -} - -int rmp_init(ConnectionConfig conf) -{ - cli = new Client(conf); - sockfd = cli->connectToServer(); - if (sockfd == -1) - { - err("Error while establishing connection to server"); - return -1; - } - uffdman_register_page_resolver(&rmp_pagefault_resovler); - - // Initialize the maps - addr_hndl_map = new unordered_map(); - addr_npages_map = new unordered_map(); - - return 0; -} - -void *rmp_alloc(long n_pages) -{ - long size = n_pages * PAGE_SIZE; - void *new_addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - - if (new_addr == MAP_FAILED) - { - err("Error while allocating memory on client"); - return (char *)MAP_FAILED; - } - - ul ul_addr = (ul)new_addr; - - // request for new allocation of n_pages - srv_n_pages = n_pages; - srv_alloc_pages(sockfd); - if (srv_handle == -1) - { - err("Error while allocating memory on server"); - return (char *)MAP_FAILED; - } - - uffdman_register_region(new_addr, n_pages); - - addr_hndl_map->insert({ul_addr, srv_handle}); - addr_npages_map->insert({ul_addr, n_pages}); - - return new_addr; -} - -void rmp_free(void *addr) -{ - auto exists = addr_hndl_map->find((ul)addr); - printf("RMP FREE called\n"); - - if (exists != addr_hndl_map->end()) - { - rmp_handle hndl = addr_hndl_map->at((ul)addr); - - // send free request for hndl to server - srv_handle = hndl; - - uffdman_unregister_region(addr); - - auto addr_npages_exists = addr_npages_map->find((ul)addr); - if (addr_npages_exists != addr_npages_map->end()) - { - // free the invalid address that is stored in the table - if (munmap(addr, addr_npages_map->at((ul)addr) * PAGE_SIZE) == -1) - err("Erro while freeing memory on client"); - - // remove stored references of address and size - addr_npages_map->erase((ul)addr); - } - addr_hndl_map->erase((ul)addr); - printf("Calling srv_free_pages\n"); - srv_free_pages(sockfd); - } - printf("RMP FREE exiting\n"); -} - -void rmp_destroy() -{ - delete addr_hndl_map; - delete addr_npages_map; -} diff --git a/rmp/rmp_server.cpp b/rmp/rmp_server.cpp deleted file mode 100644 index 21528cc..0000000 --- a/rmp/rmp_server.cpp +++ /dev/null @@ -1,169 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "rmp.hpp" -#include "rmp_types.hpp" -#include "libsrvcli.hpp" - -#ifndef DEBUG_PRINTS -#define DEBUG_PRINTS 0 -#endif - -#if DEBUG_PRINTS -#define err(msg) perror(msg) -#define cout(exp) cout << exp; -#else -#define err(msg) -#define cout(exp) -#endif - -#define PAGE_SIZE sysconf(_SC_PAGE_SIZE) - -using namespace std; - -static ConnectionConfig server_conf; -static Server *server; - -static rmp_handle alloc_count = 0; - -static unordered_map hndl_addr_map; -static unordered_map addr_npages_map; - -static rmp_handle rmp_server_alloc(long n_pages) -{ - long mem_region_size = n_pages * PAGE_SIZE; - - char *remote_mem_region = (char *)mmap(NULL, mem_region_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); - - if (remote_mem_region == MAP_FAILED) - { - err("Error while allocting memory on server"); - return -1; - } - - ++alloc_count; - ul ul_addr = (ul)remote_mem_region; - - hndl_addr_map[alloc_count] = ul_addr; - addr_npages_map[ul_addr] = n_pages; - - return alloc_count; -} - -static void rmp_server_free(rmp_handle hndl) -{ - ul addr = hndl_addr_map[hndl]; - ul n_pages = addr_npages_map[addr]; - long size = n_pages * PAGE_SIZE; - if (munmap((char *)addr, size) == -1) - err("Error while freeing memory on server"); - hndl_addr_map.erase(hndl); - addr_npages_map.erase(addr); -} - -static void rmp_server_write(rmp_handle hndl, long offset, ul page) -{ - ul addr = hndl_addr_map[hndl]; - *((char *)(addr + offset)) = (page); -} - -static ul rmp_server_read(rmp_handle hndl, long offset) -{ - ul addr = hndl_addr_map[hndl]; - return (ul) * ((char *)(addr + offset)); -} - -static ul srv_n_pages; -static rmp_handle srv_handle; -static ul srv_page, srv_offset; -static enum rmp_req_type req_type; -static void alloc_pages(int sockfd) -{ - recv(sockfd, &srv_n_pages, sizeof(ul), 0); - cout("Received no. of pages: " << srv_n_pages << endl); - srv_handle = rmp_server_alloc(srv_n_pages); - - send(sockfd, &srv_handle, sizeof(rmp_handle), 0); - cout("Sending server handle: " << srv_handle << endl); -} - -static void read_page(int sockfd) -{ - recv(sockfd, &srv_handle, sizeof(rmp_handle), 0); - cout("Received handle: " << srv_handle << endl); - recv(sockfd, &srv_offset, sizeof(ul), 0); - cout("Received offset: " << srv_offset << endl); - - srv_page = rmp_server_read(srv_handle, srv_offset); - send(sockfd, &srv_page, sizeof(ul), 0); - cout("Sending page: " << srv_page << endl); -} - -static void write_page(int sockfd) -{ - recv(sockfd, &srv_handle, sizeof(rmp_handle), 0); - cout("Received handle: " << srv_handle << endl); - recv(sockfd, &srv_offset, sizeof(ul), 0); - cout("Received offset: " << srv_offset << endl); - recv(sockfd, &srv_page, sizeof(ul), 0); - cout("Received page: " << srv_page << endl); - - rmp_server_write(srv_handle, srv_offset, srv_page); -} - -static void free_pages(int sockfd) -{ - recv(sockfd, &srv_handle, sizeof(rmp_handle), 0); - cout("Received handle: " << srv_handle << endl); - - rmp_server_free(srv_handle); -} - -void on_client_connected(int sockfd) -{ - bool disconnect = false; - while (!disconnect) - { - enum rmp_req_type req_type; - size_t bytes_recieved = recv(sockfd, &req_type, sizeof(enum rmp_req_type), 0); - if (bytes_recieved == 0) - { - cout("Disconnecting" << endl); - disconnect = true; - } - - cout("Received request type: " << req_type << endl); - - switch (req_type) - { - case ALLOC_PAGES: - alloc_pages(sockfd); - break; - case READ_PAGE: - read_page(sockfd); - break; - case WRITE_PAGE: - write_page(sockfd); - break; - case FREE_PAGES: - free_pages(sockfd); - disconnect = true; - break; - } - } - close(sockfd); -} - -void rmp_server_init(ConnectionConfig conf) -{ - // restrict incoming/outgoing requests/responses to only given guest - server_conf = conf; - - // start a server w/ given config - server = new Server(&on_client_connected, conf); - server->start(); // Non blocking call -} diff --git a/server/.DS_Store b/server/.DS_Store new file mode 100644 index 0000000..8266462 Binary files /dev/null and b/server/.DS_Store differ diff --git a/server/Makefile b/server/Makefile index 3e0f1b0..2214f00 100644 --- a/server/Makefile +++ b/server/Makefile @@ -1,5 +1,5 @@ CXX=g++ -INC_DIR = ./ +INC_DIR = ../include CXXFLAGS=-c -Wall -I$(INC_DIR) # Ugly! DEPS = $(INC_DIR)/rmp.hpp @@ -9,16 +9,16 @@ server: server.o $(CXX) -o bin/server -pthread bin/server.o bin/rmp_server.o server.o: rmp_test - $(CXX) -c server.cpp -o bin/server.o + $(CXX) $(CXXFLAGS) -c server.cpp -o bin/server.o rmp_test: rmp_test.o $(CXX) -o bin/rmp_test -pthread bin/rmp_test.o bin/rmp_server.o rmp_test.o: rmp_server.o - $(CXX) -c rmp_test.cpp -o bin/rmp_test.o + $(CXX) $(CXXFLAGS) rmp_test.cpp -o bin/rmp_test.o rmp_server.o: mkdir - $(CXX) -c rmp_server.cpp -o bin/rmp_server.o + $(CXX) $(CXXFLAGS) rmp_server.cpp -o bin/rmp_server.o diff --git a/server/out b/server/out new file mode 100644 index 0000000..eff4f56 --- /dev/null +++ b/server/out @@ -0,0 +1,2 @@ +10.237.15.93 +6768 diff --git a/server/rmp_server.cpp b/server/rmp_server.cpp index 665d2fa..e02c66e 100644 --- a/server/rmp_server.cpp +++ b/server/rmp_server.cpp @@ -1,5 +1,6 @@ #include #include +#include "rmp_types.hpp" #include "rmp_server.hpp" void handle_alloc(rmp::Server *rmp_server, rmp::packet *packet) diff --git a/server/rmp_test.cpp b/server/rmp_test.cpp index 6e73ba7..84b98f0 100644 --- a/server/rmp_test.cpp +++ b/server/rmp_test.cpp @@ -1,8 +1,9 @@ -#include "rmp_server.hpp" #include #include #include +#include "rmp_types.hpp" +#include "rmp_server.hpp" int passed = 0, failed = 0; @@ -62,7 +63,7 @@ rmp::packet *get_free_packet(rmp::handle hndl) bool test_alloc_basic() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = get_alloc_packet(10, 4096); s->handle(alloc_req); @@ -77,7 +78,7 @@ bool test_alloc_basic() bool test_alloc_100pages() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = get_alloc_packet(100, 4096); s->handle(alloc_req); @@ -92,8 +93,8 @@ bool test_alloc_100pages() bool test_alloc_a_lot_of_pages() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); - rmp::packet *alloc_req = get_alloc_packet(10000000000000000000000000, 4096); + rmp::Server *s = new rmp::Server(rmp::config()); + rmp::packet *alloc_req = get_alloc_packet(1000000000000, 4096); s->handle(alloc_req); @@ -108,7 +109,7 @@ bool test_alloc_a_lot_of_pages() bool test_read() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = new rmp::packet; alloc_req->action = 0; alloc_req->npages = 10; @@ -150,7 +151,7 @@ bool test_read() bool test_read_wrong_offset() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = new rmp::packet; alloc_req->action = 0; alloc_req->npages = 10; @@ -191,7 +192,7 @@ bool test_read_wrong_offset() bool test_read_wrong_handle() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *read_req = new rmp::packet; read_req->action = 1; read_req->offset = 0; @@ -211,7 +212,7 @@ bool test_read_wrong_handle() bool test_write() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = new rmp::packet; alloc_req->action = 0; alloc_req->npages = 10; @@ -243,7 +244,7 @@ bool test_write() bool test_write_wrong_offset() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = new rmp::packet; alloc_req->action = 0; alloc_req->npages = 10; @@ -275,7 +276,7 @@ bool test_write_wrong_offset() bool test_write_wrong_handle() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); char *msg = "Hello World!"; rmp::packet *write_req = new rmp::packet; @@ -299,7 +300,7 @@ bool test_write_wrong_handle() bool test_free() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = new rmp::packet; alloc_req->action = 0; alloc_req->npages = 10; @@ -330,7 +331,7 @@ bool test_free() bool test_free_and_read() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *alloc_req = new rmp::packet; alloc_req->action = 0; alloc_req->npages = 10; @@ -371,7 +372,7 @@ bool test_free_and_read() bool test_free_wrong_handle() { bool valid; - rmp::Server *s = new rmp::Server(rmp::config{}); + rmp::Server *s = new rmp::Server(rmp::config()); rmp::packet *free_req = new rmp::packet; free_req->action = 3; free_req->size = 4096; diff --git a/server/server.cpp b/server/server.cpp index 712cad6..2de271a 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -7,6 +7,7 @@ #include #include #include + #include "rmp_server.hpp" #define PORT 6767 @@ -17,7 +18,85 @@ rmp::Server *server; void *connection_handler(void *); void init() { - server = new rmp::Server(rmp::config{}); + server = new rmp::Server(rmp::config()); +} + +/* + * Reads n bytes from sd into where p points to. + * + * returns 0 on succes or -1 on error. + * + * Note: + * The function's name is inspired by and dedicated to "W. Richard Stevens" (RIP). + */ +int readn(int sd, void *p, size_t n) +{ + size_t bytes_to_read = n; + size_t bytes_read = 0; + + while (bytes_to_read > bytes_read) + { + ssize_t result = read(sd, p + bytes_read, bytes_to_read); + if (-1 == result) + { + if ((EAGAIN == errno) || (EWOULDBLOCK == errno)) + { + continue; + } + +#ifdef DEBUG + { + int errno_save = errno; + perror("read() failed"); + errno = errno_save; + } +#endif + + break; + } + else if (0 == result) + { +#ifdef DEBUG + { + int errno_save = errno; + fprintf(stderr, "%s: Connection closed by peer.", __FUNCTION__); + errno = errno_save; + } +#endif + + break; + } + + bytes_to_read -= result; + bytes_read += result; + } + + return (bytes_read < bytes_to_read) ? -1 : 0; +} + +int writen(const int sd, void *b, const size_t s, const int retry_on_interrupt) +{ + size_t n = s; + while (0 < n) + { + ssize_t result = write(sd, b, n); + if (-1 == result) + { + if ((retry_on_interrupt && (errno == EINTR)) || (errno == EWOULDBLOCK) || (errno == EAGAIN)) + { + continue; + } + else + { + break; + } + } + + n -= result; + b += result; + } + + return (0 < n) ? -1 : 0; } int main(int argc, char const *argv[]) @@ -104,40 +183,58 @@ void *connection_handler(void *thread_info) rmp::thread_req *info = (rmp::thread_req *)thread_info; int sock = info->client_sock; - while ((read_size = recv(sock, req, sizeof(rmp::packet), 0)) > 0) + // while (readn(sock, req, sizeof(*req)) != -1) + while ((read_size = recv(sock, req, sizeof(*req), 0)) > 0) { - printf("Recieved Bytes : %ld\n", read_size); - printf("action : %d\n", req->action); - if (read_size == sizeof(rmp::packet)) + // printf("Recieved Bytes : %ld\n", read_size); + // printf("action : %d\n", req->action); + // printf("handle : %d\n", req->hndl); + // printf("error : %d\n", req->error); + // if (read_size == sizeof(rmp::packet)) + // { + // if (req->action == 0 || req->action == 1 || req->action == 2 || req->action == 3) + // { + info->server->handle(req); + // printf("Handle Returned For Action : %d\n", req->action); + + size_t sent_bytes = send(sock, req, sizeof(rmp::packet), 0); + // sleep(0.1); + // printf("Sent Bytes : %d\n", sent_bytes); + + // int retry_on_interrupt = 1; + // int result = writen(sock, req, sizeof(*req), retry_on_interrupt); + // if (-1 == result) + // { + // perror("writen()"); + // } + + // printf("Finished writing back results : %d\n", req->action); + if (req->action == 0) { - - info->server->handle(req); - // printf("Handle Returned For Action : %d\n", req->action); - send(sock, req, sizeof(rmp::packet), 0); - // printf("Finished writing back results : %d\n", req->action); - if (req->action == 0) - { - printf("Allocated %d pages with handle : %d\n", req->npages, req->hndl); - } - else if (req->action == 1) - { - printf("Client Reading page : %d for handle : %d\n", req->offset, req->hndl); - } - else if (req->action == 2) - { - printf("Client Writing page : %d for handle : %d\n", req->offset, req->hndl); - } - else if (req->action == 3) - { - printf("Client Freeing handle : %d\n", req->hndl); - } + printf("Allocated %d pages with handle : %d\n", req->npages, req->hndl); } - else + else if (req->action == 1) { - break; + printf("Client Reading page : %d for handle : %d\n", req->offset, req->hndl); + } + else if (req->action == 2) + { + printf("Client Writing page : %d for handle : %d\n", req->offset, req->hndl); } + else if (req->action == 3) + { + printf("Client Freeing handle : %d\n", req->hndl); + } + // } + // } + // else + // { + // break; + // } } + printf("READ SIZE IN THE END : %d\n", read_size); + if (read_size == 0) { puts("Client disconnected"); diff --git a/server/server_out b/server/server_out new file mode 100644 index 0000000..eff4f56 --- /dev/null +++ b/server/server_out @@ -0,0 +1,2 @@ +10.237.15.93 +6768 diff --git a/temp b/temp new file mode 100644 index 0000000..87bc9e0 --- /dev/null +++ b/temp @@ -0,0 +1,19 @@ +--------------INT RAND 10240 --------------- +Write Time 82.4949 seconds. +Read Time 81.7159 seconds. +Total Time 164.211 seconds. +Avg Read Time 0.00798007 seconds. +Avg Write Time 0.00805615 seconds. +Avg Total Time 0.0160362 seconds. +Sum 97697967 +SUM is invalid + +--------------INT RAND 102400 --------------- +Write Time 1007.39 seconds. +Read Time 1002 seconds. +Total Time 2009.38 seconds. +Avg Read Time 0.00978514 seconds. +Avg Write Time 0.00983775 seconds. +Avg Total Time 0.0196229 seconds. +Sum 1795668907 +SUM is invalid diff --git a/tests/Makefile b/tests/Makefile deleted file mode 100644 index 7c612bb..0000000 --- a/tests/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -SRC=../libsrvcli/*.cpp ../uffdman/*.cpp ../rmp/*.cpp - -all: test_srv test_cli - -test_srv: mkdir - g++ -g -o bin/test_srv -I../include -I../libsrvcli/include -DDEBUG_PRINTS=1 $(SRC) test_server.cpp -lpthread - -test_cli: mkdir - g++ -g -o bin/test_cli -I../include -I../libsrvcli/include -DDEBUG_PRINTS=1 $(SRC) test_client.cpp -lpthread - -mkdir: - mkdir -p bin - -clean: - rm -rf bin diff --git a/tests/test_client.cpp b/tests/test_client.cpp deleted file mode 100644 index aa54d99..0000000 --- a/tests/test_client.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include -#include -#include "rmp.hpp" - -using namespace std; - -int main(int argc, char **argv) -{ - if (argc != 4) - { - cout << "Invalid args!" << endl; - cout << "Usage: ./test_cli " << endl; - return 1; - } - - ConnectionConfig config( - (argv[1]), - (argv[2]), - ""); - - int n = atoi(argv[3]); - int sum = 0; - - rmp_init(config); - - char *addr = (char *)rmp_alloc(n); - - // cout << sizeof(char) << endl; - for (int i = 0; i < 4096 * 5; i++) - { - // cout << (char *)(addr + i) << " : " << addr[i] << endl; - // printf("%lx : %d\n", (char *)(addr + i), addr[i]); - addr[i] = 1; - } - - cout << "Finished Writing" << endl; - - // memset(addr, 1, sizeof(char) * 8192); - - // 4096 = sizeof(int) * 1024 - - // addr[1024] = 'z'; - for (int i = 0; i < 4096 * 5; i++) - { - // cout << (char *)(addr + i) << " : " << addr[i] << endl; - // printf("%lx : %d\n", (char *)(addr + i), addr[i]); - sum += addr[i]; - } - - cout << "Sum : " << sum << endl; - - // addr[4800] = 'y'; - - // cout << "2: " << addr[4800] << endl; - // /* - // for(int i=0; i - -#include "rmp.hpp" -#include "ConnectionConfig.hpp" - -using namespace std; - -int main(int argc, char **argv) -{ - if (argc != 3) - { - cout << "Invalid args!" << endl; - cout << "Usage: ./test_srv " << endl; - return 1; - } - - ConnectionConfig config(argv[1], argv[2], ""); - cout << config.getIP() << endl; - cout << config.getPort() << endl; - - rmp_server_init(config); - - while (true) - { - } - - return 0; -} diff --git a/uffdman/uffdman.cpp b/uffdman/uffdman.cpp index 0b08eb7..8211506 100644 --- a/uffdman/uffdman.cpp +++ b/uffdman/uffdman.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include "uffdman.hpp" @@ -35,7 +36,7 @@ #define print(exp...) printf(exp); #else #define err(msg) -#define print(exp...) printf(exp); +#define print(exp...) #endif #define PAGE_SIZE sysconf(_SC_PAGE_SIZE) @@ -43,6 +44,10 @@ using namespace std; +bool uffd_initialized = false; + +mutex fault_handler_cr; + static unordered_map *addr_tid_map; // Double sided maps for starting address of a region to uffd @@ -58,11 +63,15 @@ static void (*page_resolver)(void *start_addr, void *faulting_addr, int is_write void uffdman_init() { - uffd_prev_resolved_addr = new unordered_map(); - uffd_prev_resolved_op = new unordered_map(); - addr_tid_map = new unordered_map(); - start_addr_uffd_map = new unordered_map(); - uffd_start_addr_map = new unordered_map(); + if (!uffd_initialized) + { + uffd_prev_resolved_addr = new unordered_map(); + uffd_prev_resolved_op = new unordered_map(); + addr_tid_map = new unordered_map(); + start_addr_uffd_map = new unordered_map(); + uffd_start_addr_map = new unordered_map(); + uffd_initialized = true; + } } void uffdman_destroy() @@ -128,12 +137,12 @@ static void invalidate_prev_resolved_page(long uffd) // Invalidate previous page after resolving it void *prev_page = (void *)prev_resolved_addr; - printf("Prev Resolved Address = %" PRIx64 "; ", prev_resolved_addr); + print("Prev Resolved Address = %" PRIx64 "; ", prev_resolved_addr); if (prev_resolved_op) { // Resolve only if write - printf("invalidate_prev_resolved_page : Saving page to server as the page is dirty\n"); + print("invalidate_prev_resolved_page : Saving page to server as the page is dirty\n"); page_resolver(region_start_addr, (void *)prev_resolved_addr, prev_resolved_op, prev_page); } @@ -149,9 +158,10 @@ static void handle_unmap_event(long uffd) static void *fault_handler_thread(void *arg) { - print("FAULT HANDLER STARTED\n") static struct uffd_msg msg; /* Data read from userfaultfd */ - static int fault_cnt = 0; /* Number of faults so far handled */ - long uffd; /* userfaultfd file descriptor */ + print("FAULT HANDLER STARTED\n"); + static struct uffd_msg msg; /* Data read from userfaultfd */ + static int fault_cnt = 0; /* Number of faults so far handled */ + long uffd; /* userfaultfd file descriptor */ static void *page = NULL; struct uffdio_copy uffdio_copy; ssize_t nread; @@ -214,12 +224,13 @@ static void *fault_handler_thread(void *arg) print("flags = %" PRIx64 "; ", msg.arg.pagefault.flags); print("address = %" PRIx64 "; ", msg.arg.pagefault.address); print("Rounded address = %" PRIx64 "\n", PGROUNDDOWN(msg.arg.pagefault.address)); - fault_cnt++; void *faulting_addr = (void *)msg.arg.pagefault.address; int faulting_op = msg.arg.pagefault.flags & UFFD_PAGEFAULT_FLAG_WRITE; + std::lock_guard guard(fault_handler_cr); + invalidate_prev_resolved_page(uffd); if (!faulting_op) @@ -332,7 +343,6 @@ int uffdman_register_region(void *addr, unsigned long n_pages) } /* Create a thread that will process the userfaultfd events */ - int out = pthread_create(&thrd_id, NULL, fault_handler_thread, (void *)uffd); if (out != 0) { @@ -341,9 +351,6 @@ int uffdman_register_region(void *addr, unsigned long n_pages) return -1; } - // Initialize the maps - uffdman_init(); - addr_tid_map->insert({(unsigned long)addr, thrd_id}); start_addr_uffd_map->insert({(unsigned long)addr, uffd}); uffd_start_addr_map->insert({uffd, (unsigned long)addr});