toward fine-grained online task characteristics estimation in scientific workflows

Post on 24-May-2015

161 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Presentation held at WORKS'13 - Denver, USA Abstract. Task characteristics estimations such as runtime, disk space, and memory consumption, are commonly used by scheduling algorithms and resource provisioning techniques to provide successful and efficient workflow executions. These methods assume that accurate estimations are available, but in production systems it is hard to compute such estimates with good accuracy. In this work, we first profile three real scientific workflows collecting fine-grained information such as process I/O, runtime, memory usage, and CPU utilization. We then propose a method to automatically characterize workflow task needs based on these profiles. Our method estimates task runtime, disk space, and memory consumption based on the size of tasks input data. It looks for correlations between the parameters of a dataset, and if no correlation is found, the dataset is divided into smaller subsets by using a clustering technique. Task behavior estimates are done based on the ratio parameter/input data size if they are correlated, or based on the mean value. However, task dependencies in scientific workflows lead to a chain of estimation errors. To correct such errors, we propose an online estimation process based on the MAPE-K loop where task executions are constantly monitored and estimates are updated accordingly. Experiment results show that our online estimation process yields much more accurate predictions than an offline approach, where all task needs are estimated at once. More information: www.rafaelsilva.com

TRANSCRIPT

Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Rafael  Ferreira  da  Silva1,2,  Gideon  Juve2,  Ewa  Deelman2,  Tristan  Glatard1,3,  Frédéric  Desprez4,  Douglas  Thain5,  Benjamín  Tovar5,  Miron  Livny6  

1University of Lyon, CNRS, INSERM, CREATIS, Villeurbanne, France 2University of Southern California, Information Sciences Institute, Marina Del Rey, CA, USA 3McConnell Brain Imaging Centre, Montreal Neurological Institute, McGill University, Canada 4INRIA, University of Lyon, LIP, ENS Lyon, Lyon, France 5University of Notre Dame, Notre Dame, IN, USA 6University of Wisconsin Madison, Madison, WI, USA

2

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

3

Outline

!  Introduction !  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

4

Context

!  Methods assume that accurate estimations are available –  It is hard to compute accurate estimations in production systems

!  A successful workflow execution mainly depends on how tasks are planned and executed

!  We propose a method to online estimate fine-grained task characteristics

Scheduling  and  Resource  Provisioning  

Algorithms  

Task  CharacterisPcs:  RunPme  Disk  Space  

Memory  ConsumpPon  

5

Scientific Workflows

•  Directed Acyclic Graph (DAG) •  Nodes denote tasks •  Edges denote task dependencies

mProjectPP mDiffFit mConcatFit mBgModel mBackground

mImgtbl mAdd mShrink mJPEGSmall (20 node) Montage Workflow

fastQSplit

filterContams

sol2sanger

fastq2bfq

map

mapMerge

maqIndex

pileup

Epigenomics Workflow

�����������������

���

Periodogram Workflow

6

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

7

Workflow Execution Profiling

!  Workflows were executed using Pegasus WMS

and profiled using Kickstart profiling tool –  Monitors and records fine-grained data –  E.g. process I/O, runtime, memory usage, CPU utilization

!  3 runs of each workflow with different datasets –  16-core cluster

5 Dual core MP OpteronTM Processor 250 2.4GHz / 8GB RAM 3 Dual core MD AMD OpteronTM Processor 275 2.2 GHz / 8GB RAM

8

Execution Profile: Montage Workflow

Task estimation could be based on mean values

Task estimation based on average may lead to significant estimation errors

9

Automatic Workflow Characterization

•  Characterize tasks based on their estimation capability •  Runtime, I/O write, memory peak ! estimated from I/O read

•  Enforces correlation statistics to identify statistical relationships between parameters •  High correlation values yield accurate estimations

Constant values

Correlated if ρ > 0.8

Epigenomics workflow

10

Density-Based Clustering

●●●●●●

●●●●●●

●●●

●●

●●●

●●●●

●●●●●●●●

●●●

●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●

●●

●●●●●●

●●●●●●●●

●●●●●●●●●●

●●●●●●●●●

●●

●●●●

●●●●●●●●●●●●●

●●●●

●●

●●●

●●

●●

●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●●●

●●●

●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●

●●●●

●●●●

●●

●●●●●

●●●●●

●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●

●●●●

●●

●●

●●●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●

●●●

●●●

●●●●

●●●●●

●●

●●●●●●

●●

●●●●

●●

●●●●

●●●●

●●●

●●●●●●●●●●

●●●

●●

●●

●●●

●●●●●

●●●

●●

●●●●●●

●●●●●●●

●●●

●●

●●●●●●●●

●●●●●●●●●●●●●●

●●●

●●●●●●

●●●

●●

●●●●●●

●●●●●●●

●●●●●●●

●●●●●●●●●●●

●●●●●●●

●●

●●

●●●●●●

●●●●●●

●●●●

●●●●

●●

●●●●●●●

●●●●●●

●●●

●●●●●

●●

●●●●●●●

●●●

●●●●

●●●●●●●●●●●●●●

●●●

●●●●

●●●

●●●●●●●●●●●

●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●

●●

●●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●●●●●

●●

●●●●

●●●●●●●●

●●●●●●●●●●●●●

●●●●●

●●●●

●●●●●●●●●●●●

●●●●●●●●●●●●●●●

●●●

●●●

●●

●●●●●

●●●●

●●●●

●●

●●

●●●●●

●●

●●●●●

●●●●

●●

●●

●●

●●

●●●●●●●●●●●

●●

●●●

●●●●●●●●●●●●

●●●●●●

●●●●●●●●●●●

●●●●●●●●

●●●●

●●

●●

●●●

●●●

●●●

●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●

●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●

●●

●●

●●●●

●●

●●●

●●●●●●●●●

●●●●

●●●●

●●●●●●●●●●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●

●●

●●●●●

●●

●●●●●●●●●●●●

●●●

●●●●●

●●●

●●●●●●●●

●●●●

●●

●●●

●●●●●●●

●●●●●

●●●●●●

●●●●●●●

●●

●●

●●●●●●

●●

●●●●●●

●●●●●

●●●

●●●●

●●●

●●●●

●●●●●●●●●

●●●●●●

●●●●

●●●●●●●

●●●●

●●

●●●●●●●●●●●●●●●●

●●●●●●

●●●●●●●●

●●●●●●●●●

●●●●●●

●●●●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●●

●●●●●●●●●●●●●

●●●

●●

●●●●●●●

●●

●●●

●●●●●●●●

●●

●●●●●●●

●●●

●●●●●●●●●●●●●●●●

●●●●

●●●

●●●●●

●●●●●

●●

●●●

●●●

●●●●●

●●

●●●●●●●●●

●●●●●●●●●●●●●●●

●●

●●●●

●●

●●●●●●●●●●●

●●●●●●●●●●●●●●●

●●●●●●●

●●

●●●●●●

●●●●

●●

●●●●●●●●

●●●●●●

●●●●●●●

●●

●●

●●●●●●●●●●

●●

●●

●●●●●●

●●●●●

●●●

●●●

●●

●●●

●●●●●

●●●●●●●●●●●

●●●●●

●●

●●

●●

●●●●●●●

●●●●●●●●

●●●●●●●

●●●●●

●●●●●●●

●●●●●●●●●

●●

●●

●●●●●

●●●

●●

●●●●●●●●●●●●●

●●●●●●●●●

●●●●●●●

●●●●●

●●

●●●

●●●●●

●●●●●●

●●●●●●●●●●●●●●

●●●●

●●●●●●

●●●●

●●

●●●●●●●●

●●●●

●●●●●●●●

●●

●●

●●●

●●

●●●●●●●

●●

●●●●●●

●●

●●●●●●

●●●●●●●●

●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●●●●

●●●

●●

●●●●

●●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●●

●●●●

●●●●●●

●●●●●●●●●●

●●●●●●●●●●●

●●●

●●●●

●●●●●●●●●

●●●●●●●●

●●

●●●●●●

●●●

●●●●

●●●●●●●

●●●●●●●●●

●●●●●

●●

●●

●●●●●

●●●

●●●●●●

●●

●●●

●●●●

●●●

●●●●

●●●●●●●●●●

●●●●

●●

●●●●

●●

●●

●●●

●●●●●●

●●

●●●●●

●●●●●●

●●●●●●●●●●●●●●●●●●●●●

●●●●●●

●●●

●●●●●●

●●●●●●●●●●●●

●●

●●

●●●●●●

●●

●●

●●●●●●●●●●●●●●●●●●●●

●●

●●●●●●

●●●●●

●●

●●●

●●●●●●●●●●●●●●●●●●●

●●

●●●●●

●●

●●●●●●●●●

●●●●●●●●

●●●●●●●●●

●●●●●●●●

●●●●●

●●●●

●●●●●●

●●●●

●●

●●●●

●●●

●●

●●●●●

●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●

●●●●

●●●

●●●●●●●●●●

●●●●

●●●●●●●●●●

●●

●●●●●●●●●●●●

●●●●●●●●●●●●

●●

●●●●

●●

●●

●●●●

●●●●●

●●●●●●●●●

●●

●●●

●●●●●●

●●●●●●●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●

●●●●

●●

●●

●●

●●●●●●●●●●●

●●●●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●

●●●

●●●●

●●

●●●●

●●●●●●●●●

●●●●●●●

●●●●●●●●●●●●●●

●●●●●●●●●●

●●●

●●

●●●●

●●●

●●●

●●●

●●

●●●●●

●●

●●●●●

●●

●●●●●●●●●●●

●●●●

●●●

●●●●

●●

●●●●●●●●●●●●

●●●●

●●●●

●●●●●

●●●

●●●

●●●●●

●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●

●●

●●●●●

●●●●●●●●●

●●●●●●●

●●●●

●●●●●●●●●●●●●●

●●●●●●●●

●●

●●●●●●●

●●●●●●●

●●●●●●●

●●

●●●●

●●●●●●●●

●●

●●●

●●●●●●●●

●●●●●●

●●●●●●●●●●●●

●●

●●●

●●

●●●

●●●●

●●●

●●●●●●●●●●●●●●●●

●●●●●

●●

●●

●●●●

●●●●

●●●●●●●●

●●●●●●●●

●●

●●●●●

●●

●●●

●●

●●

●●

●●●●●●●●

●●●●●

●●

●●

●●●●●

●●

●●●

●●●●

●●●●●

●●●●●●

●●●●●●●

●●●●●●●●

●●

●●●●

●●●

●●●●●●●

●●●

●●

●●●

●●●●●●●

●●●

●●

●●

●●

●●

●●●●●●●

●●●

●●

●●●●

●●●

●●●

●●

●●●●

●●●●●●●●●●

●●

●●

●●●●●

●●

●●

●●●●●

●●●●●

●●●●

●●

●●

●●

●●●●●●●●

●●

●●●

●●●●

●●●●●

●●●●●●●●●●●●

●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●

●●●●●●●●●●

●●

●●

●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●●●●●●

●●

●●●●

●●●

●●

●●●●●●●●●

●●●●●

●●●●●●●

●●●

●●

●●

●●●●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●●●

●●●●●

●●●●

●●●●●

●●●●●●●●●

●●●●●●●

●●

●●●●

●●●●●●●●●

●●

●●

●●●●●●●●●●●

●●

●●

●●●●●

●●●●●●●

●●

●●●

●●

●●

●●●●●●

●●●

●●●●●

●●

●●

●●●●●●

●●

●●

●●

●●●●●●●

●●

●●●●●●●●●●●●●●●●●

●●●●●●●●

●●●

●●●●

●●●●●●

●●●●●

●●

●●●●●●●●●●●●●●

●●●

●●●●●●●

●●●●●●●●●●●

●●●●●●●

●●●●

●●●●●●●●●●●●

●●●●●●

●●

●●●●●●●●●●●●

●●●

●●●●●●●●●●●●●

●●●●

●●●

●●●●●●●●

●●

●●●●●●●●

●●●●●●

●●●●●

●●

●●●●

●●●●●●●●●●●

●●●●●●

●●●●

●●●●●●●●

●●●●●●

●●●●●

●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●

●●●●●

●●●●●●

●●●●●●●●

●●●

●●●

●●

●●●●●●●●●●●●●●●●●●●

●●●●

●●●●●

●●

●●●●●●

●●

●●●●

●●

●●●

●●

●●●●●

●●●●●●

●●●

●●

●●●

●●●●

●●●

●●●●

●●

●●●●

●●●●●●●

●●

●●●●

●●

●●●●●●●●

●●●●●●●

●●●●●●●

●●

●●●

●●●●●●●●

●●●●●●

●●●

●●●

●●●

●●●●●●●●●●

●●●●●●●●

●●●●●

●●●●●●●●

●●●●

●●●●●●●●●●●

●●

●●●●●●●●●●●●●

●●●●●●●

●●●

●●●●●●●●●●

●●●●●

●●

●●●●

●●●

●●●●●●●

●●●●●●●●●●

●●●●●

●●●●●●●●●●●

●●●●●●●

●●

●●●●●●●

●●

●●●●●●●●●

●●●●●

●●●●

●●

●●

●●●●●●

●●●●●●●●●

●●●●●●●●●●

●●●●

●●●●●●●

●●●●

●●

●●●

●●

●●●●●●●●●●●

●●●●●

●●●●●

●●●●●

●●

●●

●●●●●

●●●●●●●●●●●●

●●

●●●

●●●●●●

●●

●●

●●●●

●●

●●●

●●

●●●●●●●

●●

●●

●●●●●●●●●●

●●●●●●●●●●

●●

●●

●●●●●●●

●●

●●●●●●●●

●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●

●●

●●

●●●●●

●●

●●●

●●●●●●●●●●●

●●

●●●●●●

●●

●●●

●●●●●●●●●●

●●●●●●●●

●●●

●●●●●

●●

●●●

●●●

●●

●●●●●●●

●●●

●●●●●●●●●●●●●●●●●●

●●●●

●●●●

●●●●

●●●●●●●●●

●●●●●●●●

●●●●●●●●

●●●●

●●●

●●

●●●●

●●●●●●●

●●●●

●●●●●●

●●●

●●●

●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●

●●●●●●●

●●●●●●

●●●●●

●●●●●●●●

●●●

●●●●●

●●●

●●●●●●

●●●

●●●●

●●

●●●

●●●●●●●●

●●●

●●●●●●●

●●●●

●●●●●

●●

●●●●●

●●●●●●●●●●●●●●

●●●●●●●

●●●●●

●●●●

●●

●●●●●●●●

●●

●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●●

●●

●●●●●●●●●

●●●●●●●●

●●

●●●●●●

●●●●●

●●

●●●●●●●●●●

●●●●

●●●●●●●●●●●

●●

●●●●●●●●●

●●●

●●●●●●●●

●●

●●●●

●●

●●●●

●●●●●●●●●●●●●●

●●

●●●●●●●

●●●●●

●●●●●●●●●

●●●●●

●●

●●●●

●●●●●

●●

●●

●●

●●●●●●●●●●●●

●●●

●●●●●●●●

●●●●●●●●

●●●●●●

●●●●●

●●

●●●●●●●●●●

●●●

●●

●●

●●●●●●●●●

●●●●

●●

●●●●●●●●

●●●●●●●●●●

●●

●●●

●●

●●●

●●

●●

●●●●●●●

●●●●●●●●●●●●

●●●●●●

●●●

●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●

●●

●●●●

●●●

●●●

●●

●●●

●●

●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●

●●

●●●●●●●●●●●●●

●●●●●●

●●●●●

●●

●●

●●●●●●●●●●●

●●●●

●●

●●

●●

●●●●●●

●●●●●●

●●

●●●

●●●

●●

●●●

●●●●●●●●●

●●

●●●●●

●●●●●●●●●●

●●●●

●●

●●

●●

●●●●●●●

●●●

●●●●

●●●●●●●

●●●●●●●●

●●

●●●●●●●

●●●●

●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●●●●

●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●

●●●

●●●●●●●●●

●●●●

●●●

●●●●●●●●●●●●●●●●●

●●

●●●●●●●●●●●

●●●●●●●●●●●●

●●

●●

●●●●●●●●●●●●●

●●●●●●

●●

●●●●●●●●●●●●

●●●

●●●●●●●●●

●●

●●

●●●●●●

●●

●●●●●●

●●●●●●

●●

●●●●

●●●●●●●●

●●●

●●●●●●●●●●●

●●●●●●●●

●●●

●●●

●●

●●

●●●●●

●●●

●●●●●

●●●●●

●●

●●●●●●●●●

●●●●●●●

●●●●●●●●

●●●●●●●●●●●●●●●

●●●●●●●●●●●

●●●

●●●●

●●●●●●

●●

●●

●●●●●●●

●●●●●●

●●●●●●●●●●●●●

●●●●●●

●●●

●●●

●●

●●●●

●●●●●●●●●●●●●●●●●●●

●●●●●●●●●●

●●●

●●●

●●●●●

●●

●●●●

●●

●●

●●●●

●●

●●

●●

●●●●

●●

●●

●●●●●●●●●●

●●

●●

●●●●

●●

●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●

●●●●●●●●

●●

●●●●

●●●●●●●●●●●

●●

●●

●●●●

●●●●●

●●●●●

●●●●●

●●●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●

●●

●●●●●●●●●

●●●●●●●●●●

●●●●●

●●

●●●●●

●●●●●●●●●

●●●●●●●●●

●●●●

●●●

●●

●●

●●●

●●

●●●

●●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●

●●●

●●●

●●

●●

●●●

●●●●●●●

●●●●●●●●●●●●●

●●●●●●●●

●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●●●

●●●●●●●●●●●●●●

●●●●●●

●●●

●●●●●

●●●●

●●●

●●●●●●●●

●●●●●●●

●●●●●●

●●●●●●

●●●●●

●●●●●●

●●

●●●

●●●●●●●●●●●●

●●●

●●●

●●●●●

●●

●●●●●●●●●●

●●●●●●●●●●●●●

●●●●●●●●●●●●●●●●●●

●●●●●●

●●●●

●●●

●●

●●●●

●●●●

●●●

●●

●●●

●●

●●●

●●●●●●●●●●●●●●●

●●●●●●●

●●●●●●●●

●●●●

●●●●●

●●●●●●●●●●●●●●●●●●●

●●●

●●●●●●●●●

●●●●●●●●●●●

●●●●●●●●●●

●●●●●●●●●●●

●●●●●

●●●●●●●

●●●●●

●●●●

●●●

●●

●●

●●

●●●●●

●●

●●●●●

●●●

●●●●●

●●

●●●●●●●●

●●●●

●●●●

●●●

●●●●●●●●●●●

●●●●●

●●●●●●●●●

●●●●●●

●●●●●●●●

●●

●●●●●●●

●●●

●●●●●●●●

●●●●●●

●●●●●●●●●●●

●●●

●●●

●●●●●●●●●●●●●●●●●

●●●●

●●●●

●●●

●●●●●●●●●●

●●●●

●●●●●●●●●●●●

●●●●●●●●

●●●●

●●●

●●●●●●●●

●●

●●●●●●

●●●●

●●●●

●●●●●●●●●

●●

●●

●●●●●●

●●●●

●●

●●●

●●

●●●●●●●●●●●●

●●

●●●●●●●●●●

●●●●●●●●●●●●

●●●●

●●●●●

●●

●●

●●●●●●●●●●●●●●●●●●●●●●●●●

●●●●●

●●●●●●●●

●●

●●●●●●●●

●●●●●●

●●●●●●●●

●●2.5

5.0

7.5

10.0

2 3 4 5I/O Read (MB)

Dura

tion

(s)

mProjectPP

●● ●●●●●● ●●●●

●●●●● ●●●●●● ●●●● ● ●●● ●● ●●●

●●●

●●●

●● ●

●●●●●● ●●●

●●●

●●● ●● ● ●●●

● ●●

●●●● ●● ●●●●●●

●● ●

●●●●●●

●●● ●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●

●●●● ●●

●●● ●●● ●●●

●●● ●●●

●●●

●●●●●● ●●●●●● ●●●●●●●●●

●●●

●●●●●●● ●●●●● ● ●●●●●●● ●

●●●

●●● ●●●●●●

●●●

●●●●●●

●●●

●●●● ●●● ●●●●●

●●● ●● ●

●● ●●●●●●● ●●●● ●● ●●● ●●●

●●●

●●●

●●●

● ●● ●●●●●● ●●●●●●●● ●●●●●●●● ●● ●●● ●● ●●●●●●● ●●●●●●

●●●

●●●●

● ●●●●●●●●●

●●●●●●●●● ●●●

●●●●●●

●● ● ●●● ●● ●●●● ●●●●●●● ●● ●● ●

●●● ●●●

●●●●●●

●●●

●●● ●●●●●●

●●●

●●● ●●●●●●● ●●

●●● ●●●

●●●●●●

●●●

●●●●●● ●●● ●● ●●●●

●●● ●●●●● ●

●● ●●●●●●● ●●●

● ●●

● ●●●

●●

●●

●●●

●●●

●●●●●●

●●● ●●●●● ●

● ●● ●●● ●●●

●●●

●●●●●●● ●●●● ●

●●●●●●●●●

●● ●●●●

●●●

●●● ●●●

●●●

●●●

●●●

●●●●●●

●● ● ●●●

●●● ●● ●●●●● ●● ●●● ●●●

●●●

●●● ●●●●●●

●●●

●● ● ●●●●●●●●● ●● ●●●●

●●

●●● ●●●

●●●

●●●●●● ●●●

● ●●●●●●●●●●●● ●● ●●●● ●●●●●●●●●●●●

●●

●●

●●●●●●●● ●● ●

●●●

●●● ●●●●● ●●●●●●● ●●● ●●●

●● ●

●● ●●●●●● ●●●●●●● ●●●

●●●

● ●●●●● ●●● ●● ●● ●●

●●●●●●

●●●●●● ●●●●●●●

●●

●● ●●

●●●

●●● ●●● ●●●● ●●●●●

●●●

●●● ●● ●●● ●● ●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●

●●● ●●●

●●●

● ●●●●● ●● ●

●●●

●●●

●●●

●●●● ●●

●● ●

●●●●●●●●●

●●●

●● ●●●● ●●●

●●●

● ●●●●●● ●● ●●● ●●● ●●●●●●●●● ●●●●●●●● ●●● ●●● ●●●●

● ●●

●●●● ●●● ●● ●●●●●●●●● ●●●●●●

●●●●●●

●● ●●●●●●● ● ●● ●●● ●●●

●●●

●●●●●●

● ●●

●●● ●●●● ●●●●●

●●● ●●●●● ●

●●●

●●●

●●●● ●●●●●●●●●●●

● ●●

●●● ●●●●●● ●●● ●●●

●●●

●●●

●●●●

●●

●●

●●●

● ●●

●●● ● ●●● ●●●●● ●●●●●●

●●●●●●

●●● ●●●●● ●

●●●●●●

● ●●● ●●●●● ●●●●●●●●●●●●●●● ●●●●●●

● ●●

●●● ●●

●●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●●●●●

● ●●

● ●●●●●●

●●

●●●●●●●

●● ●●● ●

●●●●●● ●●●●●●●●●

●●●● ●●

●●●●●●●●● ● ●● ●● ●●●● ●●●●●● ●●●●●●

●●●

●●●●●●

●● ●

●● ●● ●● ●●●

●●●● ●●● ●●

●●●●●●●●●●●● ●●● ●●●●●●

●●●

●●● ●●●●●●

●●●●

●●●●●

●●

● ●●●●●●

●●●

● ●●

● ●

●●●●●●●●●●●●

●●●

●●●

●●●

● ●● ●●●●●●●●●●●●

●● ●

●●●

●●●

●●● ●●●●●● ●●●●●●●●● ●●●●●●

●●●

●● ●●●● ●●●

● ●● ●●●

●●●●●●●●●● ●● ●●●●● ●

●●●

●●●●●●● ●●●● ●●● ●●●●

●●●

●● ● ●●●●●●●●● ●●●

● ●●

●●●●●● ●

●●

●●●● ●●●

● ●●

●● ●

●●●

●●●●●●

●●●

●●●

●●●● ●●●●●●●●

●●●

●●● ●●●● ●● ●●●●●● ●●●● ●●

●●●

●●●●●●●●●● ●● ●●●●●●●●●●●● ●●●●●●●●●

●●●

●● ●

● ●●

●●●●●● ●●● ●● ●

●●●

●●● ●●●●●● ●●●

●●●

●●● ●● ●●● ●

●●●

●●●●●●

● ●●

●●●

●●●●●●

●●●●● ●●●● ●●●● ●● ●●●●●● ●●●●●●●●● ●●● ●●●

●●●●●●

● ●●● ●●●●●●●●● ●●

●●●

●● ●

●●●

●●●● ●●● ●●●●● ●● ●●●●

●●●

●●●●●●● ●●●●●●●●●●● ●●●●●● ●●●●●● ●●●● ●●

●●●

●● ●●●●●●● ●●●

●●● ●● ●

●●●

●●● ●● ●

●●●

●●

●●

● ●●●●● ● ●●●●●

●● ●

●●●●●●

●●●

●●●

●●● ●●●●●●●●● ●●●●●●●●● ●●● ●●●●●● ●●●●●●

●●●

●● ●● ●●

●●●

●●● ●●● ●●●●●● ●●●●●●●● ●●●● ●●●● ●●●●●

● ●●

●●●

●●●●●●

●●●

● ●●●●● ●●●

●●● ●●●

●●●

●●● ●● ●●●● ● ●●● ●●

●●● ●●●●

● ●●●

●●●●●● ●●● ●●● ●

●●

●●●●

●●● ●●●

●●●●●● ●● ● ●● ●●●●●●●●●●●●● ●●●

●●●●●●

●● ●

● ●●

●●● ●●●●●● ●●●●●●

●●●●●● ●●●

●●●

● ●● ●

●●

●●●

●●●

●●

●●●

●●●

●●●●●●

●● ●● ●●●●● ●●●●●●

●●

●● ●

●● ●

●●● ●●●●●●●●●

●●●

●●● ●●●●●● ●●●

●●●

●●●●●●●●●●●● ●●●

●● ●● ●●

●●● ●●●

●●●

●●●●●●●●●●●●●●● ●●●●● ●●●●

●●●

●●●

●●●

●●●

●● ●●●●

●●●●●●

● ●●●● ●●●●●●● ●●●

●●

●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●

●●

●●●

●●●

●●● ●●●● ●● ●● ●●●●●●●

●●● ● ●●

●●●●●●

●●●

●●●●● ●●

●●

●●●● ●●●●●●●●● ●●●●●●●●● ●● ● ●●●●●● ●●●●●●●●●

●●●

●●●● ●●●●●●●●●●● ●●●●●●●●●

●●●●●●

●●● ●●●●●●

●● ●

●●●●●●

●●●

●●●●●●

●●●

●● ●● ●●

●●●

●●●

●●●

●●●●●● ●●●●●●

●●●

●● ●●●●●●●

●●●

●●●● ●●

●●●

● ●● ●●● ●● ●●●● ●● ●●●●

●●●

●●● ●●●●● ●

●●●

●●●●●●● ●●●● ●● ●●●●●● ●●●●● ●●●

●●●

●●● ●●●

●●●

●●● ●●●

●●●

●●●●●●●●● ●

●●

●●●● ●●●

●●●

●●●●●●●● ●●●●

●●●

●●● ●●●

●●●

●●●●●● ●●●

●●

●●

●●

●● ●

●●

●●

●●● ●● ●●●

●●●

●●●●●●●●● ●●●●●● ●● ●●●●

●● ●

●●●●●●

●●●

●●●●●●●●●

●●●

●●●●● ●

●●●

●●● ●●●● ●●

●●●

●●●●●●●●● ●● ●●●●

● ●●

●●● ●●●●●●

●●● ●●●

●●●●●●

●●●

●● ●

●●●

●●● ●● ●●●●

●●●●●●

●●●

●●●

●●●

●●●

●●●●●●●● ●● ●●

●●●

●●●●● ●●●●●●●●●●●●● ●●●

●●●

●●● ●●●● ●●

●●

● ●●●

●●●

●●●●

● ●● ●

●●● ●●●●●●

●● ●● ●● ●●●●●●●●● ●●●

●●●

●●● ●●●●●●●●●● ●●

● ●●

●●● ●●●

●●● ●●●

●●●●● ●●●●

●●● ●●●● ●●●● ●●●●●● ●●●●●●● ●●●●●●●●●●●●● ●● ●●●●●●

●●●

●●●●●● ●●●● ●●●●●● ●●●●●●●● ●●●●●● ●●●●● ●

●●●

●●●● ●●●● ● ●●●● ●●●●●●●●●●●●●● ●● ●● ●● ● ●●● ●●●●● ●

●●

●●

●●● ●●●

● ●●

●● ●

●●●

● ●●

● ●●● ●●

●●●

●●●●

●● ●● ●● ●● ●●●●●●●

●●●

●●●

● ●●

● ●●● ●● ●●●

●●●

●●●

●●●●

●●

●●●●●●●●●

●●●

●●● ●●●

●●●

●●●●●●● ●●●●●●●● ●●●

●●●

●●●●●● ●●●

●●●

●●●● ●●● ●● ●●● ●●●●●●

●●●

●● ●●●● ●● ● ●● ●

●●●

●●●●●●●●●

●●●

●●●

●● ●

●●●

●●●

● ●●

●●●

●●● ●● ●●●●●●●● ●●●● ●●●● ●●●●●● ●●●●●● ●●●●●● ●●●● ●●●●●● ●●●●●

● ●●

●●●●● ●●●●

●●● ●●●●

● ●

●● ●●

●●●

● ●●

●●●

● ●

●●● ●● ●● ●●

●●●

●●●

●●●●●● ●●●

●●●

●● ●

●●●

● ●● ●●●

●●● ●●●● ●●●●● ●●●● ●●

●●●

●●●●●●

●●●

●● ●●●● ●●●

●●

● ●●●●●

●●●

●●●●●●●●● ●●● ●●●

●●

●● ●●●

●● ●

●●●●●●

●●●

●●●●●● ●●●

●●● ●● ●

●●●

●●●●●●●●●●●●●●● ●● ● ●●●●●●● ●●

●●

●●●●● ●●●

●●●

●●●

● ●●

●●● ●●● ●

●●

●●●●●●●

●●●●●●

●● ●●● ●●●●●●●

●●●

●●●●●●●●● ●●●●

●●

●●●●●

●●●

●●●

●●●●●●

●●●●●●●●●●●● ●●● ●●●●●●

●●●

●●● ●● ●●● ●● ●●●●● ●●●●●●●●● ●●●●●● ●●●● ●● ●● ●●●● ●●●●●●

●●●

●●●

● ●

● ●

●●

●●●

●●●● ●●● ●●● ●●●● ●

● ●●

●●●●● ●●●●

●●●

● ●●

●●●●● ●

●● ●●●●

●● ●

●●●●●●●● ●● ●●● ●●

●●●

●●● ●●● ●●●● ●●●●●●●●

●●

●●●●●●

●●●●●●●●●

● ●● ●●● ●●●●●● ●

●●

●●●

●●●●●● ●●●●●●

●●●

●●● ●●●●●●●●●

●●

● ●●●● ●

●●●

●● ●●● ●● ●● ●● ● ●●●● ●●●● ●

●●●

●●● ●●●●●● ●●●●●● ●●●●●● ●●●● ●●● ●●● ●●●●●●●●

●●●

●●● ●● ●●●● ●●●●●● ●●● ●●●●●●●●● ●●●●●● ●●●

●●●● ●● ●●●

●●●

●●●

●●●●●● ● ●●● ●●

●● ●

● ●●

●●● ●●●

●●●●●●●●●

●● ●●●●●

● ●

●●●●● ●●●●●●● ●●●●●●●●●●●

●●●

●●●●●●●

●● ●●●●

●●●

●● ●

●●●●●●

●●●●●● ●

●●

●●●●●●● ●●●●●● ●●●●● ●● ●

●●

●●●●●●●●● ●●●●

●●●

●● ●●●●

● ●●

●●● ●●●●●●●● ●●● ●●●● ●●●●●●●●●

●●●

● ●●● ●●

● ●●

●●●

●●●

●●●●●● ●●●●●●

●●●

●●●●●●●●●●●● ●●●●●●● ●●

●●●

●●●

●●●●●●●

●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●●● ●●

●●●

●●●●●●●●● ● ●●●●

● ●●●●●●● ●

● ●

●●● ●●●● ●● ●●●●● ●● ●●●●●●

●●●

●●●●●●●●● ●●●●●● ●● ●●● ●●●●●●●

●●● ●●●

●●●●●● ●●●●●●

●●●

●●● ●●●●●●●●● ●● ●●●●● ●●

●●●

●●●

●●● ●●●

●●●

●●●

● ●●●●● ●●●●●●

●●

●●●

●●

●●

●●●●● ●

●●● ●●●

●●●

●●●●●● ●●●●●●

●●●

● ●●

●●●

●●●●●● ●●●

●●●

●●●●●●●●● ●● ●

● ●●

●●● ●●●

●●●

●●●●● ●●●● ●●●●●●

●●

●●●

●● ●

● ●●●● ●●●●●●●

●●

● ●●●

●● ●●●●

●●

●●●●●●●●● ●● ●●●●

●●●●●●●●

●●● ●●●●●● ●●● ●●●●●●●●●

● ●● ●●●

●●●●●●●●● ●●●●●●●●●● ●●● ●●● ● ●●●●●●●

●●●

●●●●●●

●●●

●● ●●●●

●● ●

●●●

●●●

●●●● ●● ●● ●●●●●● ●●●●●●●

●●●●●●

● ●●

●●●

●●●●●●●●●●●●

●●●

●●●

● ●●

●● ●●●● ●●●

●●●

● ●●●● ●

●● ●●● ●

●● ●● ●● ●●●● ●●●●●●●● ●●●●●●●●●

●●

● ●●●●●

●●●●●●

●●● ●●●

●●●●●●

●●● ●●●● ●●● ●● ●●●●●●

●●●

●●● ●●●

● ●●

●●●● ●●

● ●●

●●●●●● ●●●●●●●● ●●●●

●●●

●●● ●●●● ●● ●●● ●● ●●●●●●● ●●●●● ●

●●●

●●●●●●

●●●

●●●

●●

●●●●●●

●●●

●● ●●● ●●●●

●● ●

●●● ●●●●●●

●●●

●●●

●●●●●●●●● ●● ●

●●●●●●●● ●●● ●● ●● ●● ●● ●●●● ●●● ●●

●●

● ●

● ● ●●●●●●●●●●●●●●● ●● ●●●●

●●●

●●●

●●●

●●●●●● ●●●●●●● ●●●●●●●●

●●●

●● ●●●● ●●●●●●●●●●●●●●●●●●

●●●

●●● ●●●●● ●●●●

●●●

●●●●●●

●●●●●●

●●●●● ●●●● ●●●●●● ●●●

●●

●●●●●●

●●●●●●

●●●●●●●●●● ●● ●● ●

●●● ●● ●

●● ●

● ●●

● ●● ●●●● ●● ●●●●●● ●● ●●●●●●●

●●●●●●

●●●●● ●●●●●● ●●●●●●●

●●

●●

●●●●

●●●●●●●●●

●●●

●●●

●●●

●●●●●● ●●●●●● ●● ●●●●

●●●

●●●

●● ●

●●● ●●●●●●

●●●

●●●●●●

●●●

●●●●●●●●●●●●

●●

●●●

●●●

●● ●●●●●●●●●● ●●● ●●●●● ●

●●●

●●● ●●●

●●●

●●●

●● ●

●●● ●●●●

●●●

●●●

●●●

●● ●●● ●● ●●

● ●

● ●

●●●

●●●●●●

●●●

●●●●●●●●● ●●●●●● ●● ●●●●

●●●●● ●●●●

●●●

●●● ●●●●

●●

● ●●●●●●●●● ●● ●●●●●●● ●●●●●●

●●●

●●● ●●●

● ●●

● ●●

●●●●

●●

●● ●●●● ●●●

●●●

●● ●

● ●●

●●●●●●●●● ●●●●●● ●●●●●●●●● ●●●●●●

●●● ●●●

●●●

●●●

●●●

●●●

●●●●●●●●●

●●●

●●●

●●●● ●●● ●●● ●●● ●●●●●

●●●

●●● ●●●

●●●

● ●●●●●● ●●

●● ●●● ●

●●●● ●●●● ● ● ●●●●●

●●

●●●●●● ●●●● ●●●●●●●●● ●●●●●

● ●●●●●● ●● ●●●● ●●●●●● ●●● ●●●●●●●●● ●●●●●●●●● ●● ●●●● ● ●●●●● ●●● ●●●●● ●● ●●

●●●

●●●●●●●●● ●●● ●● ●●●●●●●●

●●●●

●●●

●●●

●●●

●●●

●●● ●●●●●● ●●●●●● ●●● ●●●●●● ●●●●●● ●● ●●●●●● ●

● ●●

●●●● ●●● ●●●●●

●●●●●●● ●●●●●

●●●●●●● ●●●●●

●●

●●●● ●●●

●●

●● ●●●● ● ●●●

●●●

●●●

●●●●●● ●●●

●● ●●

●●

●●

●●●●●●●●●

●●●

●●●●● ●●●●● ●●● ●●

●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●

●●●

●● ●

●●●

●●●

●●●●●● ●● ●●●●

●●●●●

● ●

●●

●●

●●●

●●●

●●●●●●● ●●●●●● ●● ●●●●●● ●●●●●● ●●●● ●●●●● ●●●

●●●

●● ● ●●●●●●●●● ●●●●●●

●●

● ●●●●●●●●

●●●●●●

●●●●●● ●●●●●●

●●●

● ●●●●● ●

●●

●●● ●● ●●●●●

●●●

●●●

●●●

●●●●●●

●●●

●●●

●●●

●● ●

●●●

●●●

● ●●

●●

●●●●

●●● ●●●

●● ●

●●●

●●●●

● ●

●● ●

●●●

●●● ●●●●●●

●●●

●●●●●●● ●●●●●●●●

●●●

● ●●

●● ●

●●●●●●●●● ●●●●●●● ●●●●●● ●●●●● ●●●●●●●

●●

●●● ●●●

●●●● ●●● ●● ●

●●

●●

●●● ●●●●●●●● ● ●● ●

●●● ●●●

●●●

●●

●●●

●●●●●●

●●● ● ●● ●● ●

●● ●●●●

●●●●●●●●● ●●●●●● ●●●●●●●●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●

●●● ●●●●●●●●●

●●●●●●

●●●●●● ●●●

● ●●●●●●●●●●●●●● ●● ●

●●●

● ●●● ●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ● ●●●●●●●● ●●● ●●● ●● ●● ●●●●●●● ●●●●● ●●●● ●●●●●●●

●●

●●● ●●●

●●●

●●●

●●●●●●●●●●●●●●●

●●●

●●●●●●

●●●●● ● ●● ●● ●● ●●●● ●●

●●

●●●●●●●●●●●●●●

●●●

●●●

●●●●●

●●

●●●

●●● ●●●

●●●●●●

●●●

●● ●●● ●

● ●●● ●● ●● ●●●●●●●●● ●●●● ●●●●●●

●●● ●●●

●● ●

●●● ●● ●

●●● ●● ●

●●●

●●●●●●●●● ●●● ●●●●●● ●●●●●● ●●●● ●●●●●●●●●●●●●●●●●

● ●●●●●●

●●●●●●

●●●

●●●

●●●

●●● ●●●

● ●●●●●●●● ●●●●●●●●● ●●● ●●●●●● ●●● ●●●● ●●●●●●●● ●●●●●●●●●●●● ●●● ●● ●●● ●●●● ●●●●●● ●●● ●●●●●● ●●●●●●●●●●●●●●● ●●●●●●●●●●● ●● ●●

●●●

●●●●●● ●●●●

●●● ●●● ●●●●●●●●●

●●●

●●●●●●

●●●

●●● ●●●

●●●

●● ●

● ●●

●●●

●●●●●●●●●●●●●

●●

●●●●

●● ●

●●●●●● ●●● ●●●●●● ●●●

● ●●

●●●●●●● ●●●● ●●●●●●●●●●● ●●● ●●● ●●● ●●● ●●●●●

●●● ●●●●●●

●●●●● ●●●●●●●

●●●

●●●● ●● ●

●●●

●●●

●●●

●●●●●●●●●●●● ●●●●●●

●●●

● ●● ●●●●●●

●●●

●●●●● ●●●●●●●

●●●

●●●●● ●●●●●●●●●●

●●●●●●

●●●●●●

●●●

●● ●●●● ●● ●●●●● ●●●●●●●● ●●●

● ●●

●● ●●●● ●● ●●●●

● ●

●●● ●● ●●●●●●●●●● ●●

●● ●●●●

●● ●●●●●●● ●●● ●● ●

●●●

●●● ●●●●●●●●●●●●● ●●● ●●●●●●●●

●●●

●●●●●●

●●●

●●●

●●●

●●●●●●●●●●● ●●●●● ●●

● ●●

●●●●●● ●●●●●●

●●●

●●● ●● ●

●●●

●●●●●●●●● ●●●●●●

●●●

● ● ●●●●●● ●●● ●●● ●

● ●●

●●●●●●●●●●●● ●

● ●● ●●●●● ●●● ●●●● ●● ●●●●

●●●

●●●●●●

●●●

●●● ●●●●●●●●● ●●●●●● ●● ●● ●●●●● ●●●

●●●

●●●●●●●●●

●●●●

●●

● ●● ●●●●

●●●●●●●●●

●●●

●●●●●● ●●

●●●●

●● ● ●●●●●● ●●● ●●●

●●●

●●●

●●●

●●● ●●●● ●●●● ● ●●●●●●

●●●

● ●

●●●● ●●●●●●●●● ●●●●●●●●●

●●●

●●● ●● ●●●●●●●

● ●●

●●●●●●●●●

● ●●●●●

●●●

●●

●●

●●●

●● ●●●●●●● ●●● ●● ●

●●●

●●●

●●●

●●● ●● ●●●●

●●● ●●●

●● ●●●●●●● ●●●●●●●●●

●●●

● ●● ●●●●● ● ●●●

●●

● ●●● ●

●●● ●●●

●● ●

●● ●●●●●● ●

●●●●● ● ●●●

●●●

●●●●●●● ●●

●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●

●● ●● ●●

●●●

●●●

●●●

●●●

●●●● ●●●●●●●●●●●●●●●●●

●●●

●●●

●●●

●●●

●●●

●● ●

●●● ●●●

●●●● ●●●●●●●●● ●●●●● ●●● ●●● ●●●●●●●●●

●●●●●● ●●●

●●●● ●●●●●●●● ●●●

●●●

●●● ●●● ●●●●●●●●● ●●●● ●●●●●●●●

●●●

● ●● ●● ●●●

●●

●●

●●●● ●

●●●

●●●●●●●●●●●●●●● ●●● ●●●●●●●●●●●●●●●

● ●●●●●●

●●

●●

●●●

●●●●● ●●●●

●●●

●●●●●●

●●●

●●●● ●● ●●● ●● ●●●●

●●●

● ●●●●●● ●●●●● ●●●●●●●●●

●●●

●●● ●●●●●●

● ●●

●●●

● ●●

●●●

●●●

●●● ●● ●

●●●

●●●●

●●

●●

●●●●●● ●●●

●● ●●●●

●●●

●●●

● ●●●●●●●●

●●●

●●

● ●●●

●●●●●●

●●● ●●●●●●●●● ●●● ●● ●●● ●●●● ●●● ●●●

●●●

●●●

●●●

●●●●●● ●●●●● ●●●● ●●●●●●●●●

●●●

●●●●●●●

●●●●

●●●

●● ●

● ●●

●●●

●● ●●● ●●●●

●● ●

●●●

●● ●● ●●

●●● ●●●● ●●●●●●●●●●●●●● ●●●

●●●

● ●●● ●● ●● ●●●●

●●●

●● ●●●●●●●●●●●●● ●●● ●●●

●●

●●●

●●●●● ● ●●●

●●●

●●●●●● ●●●

●●●

●●● ●●●

●●●

●● ●●●● ●

●●

●●●● ●● ●●●

●●● ●●●

●●●

●●●●●●

●●●

●●● ●●●

●●●

●●● ●●●● ●●●●●●●● ●●●

●●●

● ●●

●●●

●●●

●●●

●●●●●● ●●● ●●●

●●●

● ●● ●●●●●●

●●●

●●● ●●●●●●●●●

●●●

●●●● ●●●●●

●● ●

●●●●● ●

● ●

●●●

●●● ●●●

● ● ●● ●●●●●●●●

●●●

●●●

●●●● ●● ●●●

●●●●●●●●●

● ●●●●●

●● ●

●●●●●● ●● ●●●●

●●●

●●●●●●●●●

●●●●●●

●● ● ●● ●●●●

●●● ●●●

●●●

●●● ●●●

●●●

●●● ●●●

●●● ●●●

●●●●●●● ●● ●●● ●●●

● ●●

●●●● ●● ●●●●●●

●●● ●●●

●●●●●●●●●

●●●

●●●

●●●

●●●●●●● ●● ● ●● ●●●

●●● ●● ●

●●●● ●● ●●● ●● ●

●● ●

●●●●●● ●●●●●●●●●●●●●●●

●●●

●●● ●● ●

●●●

● ●●●●●●●●●●●●●●●●●●● ●●●● ●● ●●●●●● ●●● ●●●● ●●●●●● ●● ●● ●●●● ● ●●●●●●

●●●

●●●●●●●●●

●●●●●●

●●● ●●●● ●●● ●●●●●●●●●●● ●●●●● ●●●●

●●●

●●●●●● ●●●●●●

●● ●

●●●●●●●●● ●●●

●●●

●●●

●●●

●● ●● ● ●●●●●●● ●●● ●●●●●●●●● ●●●●●●● ●●● ●●

●●●

●● ●● ●●●●●

●●●● ●● ●●●

●● ●●●●

●●●

●● ●●●●

●●●

●●● ●●●●●●

●●●

●●●●●● ●● ●● ●●● ●●● ●● ●● ●●●●

●●●

●●●

●●●

●●● ●●●●●●●●●●●●

●●●

●●

●●●●●●

●●●●●●

●●●

●● ●●●●●●●● ●●●●●●●●

●●

●●●●

● ●●●●●

●●●

●●● ●●● ●●●●●●● ●●

●●●

●●●●●●●●●●● ●●●●

●●●

●● ●● ●●

● ●●●●●●●●

●●●

●●●●●●

●●●● ●●●● ●●●●● ●●●●●● ●●●●●● ●●●●● ●●●● ●●●

●●●

●● ●

●●●

●●● ●●●●●● ●●●●●●

●●●● ●●

●●●●●●●●● ●●●●● ●● ●● ●●● ●●●●●● ●●● ●●●

●●●

●●● ●●●●●● ●●●●●●●●●

●●●

●●●●●●

● ●●

●●●●●●

●●●●●●

●●●●●●●● ●●●●●●●

●●●

●●● ● ●●●●●●●●●● ●

●●

●●●●●●●●●●● ●● ●●● ●

●●●

●●●● ●● ●●● ●●●● ●● ●●● ●●●●●●●●●

●●●

● ●● ●● ●●●●

●● ●●

●●

● ●●●●● ●●●●● ● ●●●

●●●

●●●●● ●●●●●●● ●●●●●●● ●●●●● ●●●●●●

●●●●

●●

● ●●●

●●●●●●

●●● ●●●●●●●●● ●●●●●● ●●●

●●●

●●● ●● ●●●●

●●

●●

●●●● ● ●●●● ●●●● ●●●●●●

●●●

●●●●●●

●●●

●● ●● ●●

●●●

●●●

●●●

●●● ●●●●●● ●●●

●●●

●●●● ●● ●●●●●● ●●●

●●●●●●

●●●●●●●●●●●●

●●●

● ●●● ●●

●●●●●●●

●●●

●●●

●●●●●●

●● ●●●●●●● ●●●●●●●●● ●●●● ●●●●●

●●●

●●●●●●● ●●

●●●

●●●●●●

● ●●● ●●

●●●

●●●

●●●●● ●●● ●

●●●

●●●●● ●●●●

●●●

●●●● ●●● ●● ●● ●●●●●●●

●● ●

●●● ●●●

●●● ●●●

● ●● ● ●●●● ●●● ●●●●●●● ●●●●●●●●●

●●●

●●●● ●● ●● ●● ●●●●● ●●●● ●●●●● ●●●●●●

●●●

●●●●●● ●●●●●● ● ●●● ●●●●●●●● ●●●

●●●

●●●●●●●●● ●● ●●● ● ●●●● ●●●●●

●●●

●●●●●●

●● ●

●●●●●●

●●●

●● ●●●● ●●●

●●●

●●●●●● ●●● ●●●●●●●●● ●● ●● ●●

●●●●● ●●●●

●●●

●● ●●●●

●●●●●●

●●● ●●●

●●●

●●●●●●

●● ●

●●● ●● ●● ●● ●

●●

●●●●●●●●● ●●● ●● ●● ●● ●

●●●

●●

●● ●●● ●●● ●●

●● ●

●●●●●● ●●● ●●●●●●

●●●

●●●●●● ●●●●● ●●●● ●● ●

●●●●●●

●●● ●●●

●●●

●●●●●●●●● ●●●●● ●●●● ●●●● ●● ●●●●●●

●●●

●● ●

●●●● ●●● ●● ● ●●●● ●●●●

●●●

●●●

●●●●●●

●●●

●●● ●●●

●●●

●●●●●●

●●●

●●●

●●●●●● ●●●●●●●●●●●● ●●●

●●●

●●●●●●● ●●●●●

●●●

● ●●●● ●●●● ●●●●● ●●●● ●●●●●●●●●

●●●

● ●●

●●●●● ●●●●●●●●●●

●●●●●●

● ●●●●● ●●●● ●●●●● ●

●●

● ●●●●● ●●

●●

●●

● ●●●● ● ●●●●●●●● ●●●● ● ●●● ●●●●● ●● ●●●●

●●●

● ●●●● ●●●●

●●●

●●●

●●●●●●●●●●●● ●●●

●●

●●

●●●

●●●●●●●●●

●●●

●●●●●●

●●●

●●●

●●●

●●●●●●

●●●

●●● ●●●●●●

●●● ●

●●

●●●●●●●●●

●●●

●● ●● ●●●●●●●●●●● ●●●●●●

●●● ●● ●

●●●●● ●●●●●●●●●●●●● ●●● ●● ●●●●

●●●

●● ●● ●●●●●●●●

●●●

●●●●●●●●●

●● ●

●●●●●●●●●●●● ●●●

●●●

●●●● ●● ●● ●●●●

●●●

●● ●●● ● ●●●●●●●●● ●●●

●●● ●

●●

●●

●●●

●● ●

●●● ●●●

●●●●●●

●●●

●●● ●● ●●●●

●●●

●●● ●●●● ●● ●●●●●●●●● ●●● ●●●

●●

●●●

● ●● ●● ●

● ●●

●●●●●● ●●●●●●●●● ●●●●●●●●● ●●● ●●●

●●●

●●●●●●●●●

●●●

●●● ●● ●●

●●

●●●●●●●

●●● ●●●

●●●

●●● ●●● ●●●

●●●

●● ●

●●●

●●●

●●

●●●● ●●●● ●●●●●●●●●

● ●●●●●

●●

● ●●●●●●

●●●

●●●

●●●

●● ●●●●●●● ●●●

●●●

●●● ●● ●●● ●●●●

●●●

●●●●●● ●●●●● ●

●●●

●●●

●●●

●●●●● ●●●●●●● ●●●● ●●●● ●●● ●

●●●

●●● ●●●

●●●

●●●●●●● ● ●● ●● ●● ●●●●

● ●●

●●●●●● ●●● ●●●●●● ●●● ●●●

●●●

●● ●

●●●

●●●●●● ●●●●

● ●

● ●●●●●● ●●●●● ●●●●

●● ●

●●●●●●●●●●●●●●● ●●●●●●●●● ●●● ●●●● ●●●●●●●●●●●●● ●●● ●●●●

●●●

●●●

●● ● ●●●

●●●

●●●●●●● ●● ●●●

●●●

●●●

●●● ●●●

●●●

●●●●●●

●●

●●●

●●●

●●●●●● ● ●●

●●●

●●● ●●●

●●●

● ●●●●● ●●●● ●●●●● ●●●●●●●●● ●● ●●●● ●●●●●●●●● ●●●●●●●●●

●●●

●●● ●●●●●●●●●●●● ●●●●●● ●●●●●●

●●●

●●●●●●●●●

●●●

●●●● ●●● ●● ●●● ●●● ●

●●

● ●

●●●

●●● ●● ●●●● ●●●

●● ●●●●

●● ●●●●● ●●●●● ●●●●●●

●●●

●●

●●

● ●●

●●●

●●●● ●●

●●●●●●

●●●

● ●●

●●●

●●●

●●●

●●●

●●

●●

●●

●●

●● ● ●●● ●●●●●● ●●●●●●

●●● ●●●

●●●

●●●●

●●●

● ●● ●●●

●●●

●●● ●●●●●●●●● ●●●●● ●●●● ●●●●●●●●● ●●●●●●●●●

●● ●

●● ●●● ●●● ●●●●

●●● ●●●●●●

●●●●●●

●●●

●●● ●● ●

●●● ●●●●●●

●●● ●●●●●●● ●● ●●● ●●●●●●

●●●

●●● ●●●

●●●●● ●

●●●

●●●

●● ●●●●

●●●

●●● ●●●

●●●●●●

●●●

●●●

●●●●

●●

●●●●● ●● ●●●●●●●● ●

●●

●● ●●● ●●●●●● ●●●●●●●●●●●● ●●●●●● ●●●

●●●●●● ●●●●●●●

● ●●

●●●

●● ●●●●

●●● ●●● ●●●

●●●

● ●● ●●●●●●● ●●

●● ●

● ●●●●●

●●●

●●●●●●●

●●

● ●●● ●● ●●● ●●●●●●● ●●● ●●●●●●

●●●

●● ●● ●● ●●●

●●●●●●

●●●●●● ●●●●●●●● ●●●●

●●● ●●● ●●●●●● ●●●

●●●

●●●

●●●

●●●●● ●

●●●

●●●●●●

●●●●

●● ●●●●●●●●●● ●●●●

●●

● ●

●●● ●● ●●●●

●●● ●●●

●●●●●●●●●

●●● ●●●●●●

●● ●●●● ●●●●●● ●●●

●●●

●●● ● ●●●● ●●● ● ●●●

●●●

●● ● ●● ●●●●●●● ● ●●

●●●

●●

●●●

●●● ●●●●●● ●● ●●● ●●●● ● ●●

●●●●

●●

●●●

● ●● ●●●

●●● ●●●● ●●●● ●●●●

●●●●●●

●●●

●●●

●●●●●● ●●●●●●●●●●●●

●●●● ●●● ●●●

●●●

●●●

●●● ●● ●●●● ● ●●

●●●

●● ●●●● ●● ●●

●●● ●●●

●●●●●●●●●

●●

●●●●

●●●

●●● ● ●●●●● ●●●●●● ●●● ●●●● ●●●●● ●●●●●●●●●

●●●

●●●

● ●●

●●● ●● ●●● ●

●●●

●●●●

●●

●● ●●

●●●

●●●

●●●●●●

●● ●● ●● ●●●●●●●●●●●●●●●●●●●●●●●

●●

● ●●●

● ●●

●●●●●●

●●●

●●●

●●●

●●●●●● ●●●

●●●

●●●●●●●● ●

●●●

●●●●●● ●●●●

●●●

●●

●●●

● ●●●●●●●●●●● ●●●

●●●

●●●

●●●

●●● ●●●

●●●

●●●●●●

●●●

●●●●●●●●● ●● ●●● ● ●●● ●●●●●●

●●●

● ●●●●● ●●● ●● ●●

●●

●●

●● ●●●●

●●●

●● ●

● ●●

●●●●●●●●●●●●

●● ●

●●● ●●● ●● ●

●●●

●●● ●●●●●●●●●●●● ●●●

● ●●●

●●●

● ●●●●●

●●●

●●●●●●●●● ●●●●●●●●●●●● ●●●● ●●● ●●● ●●

● ●●

●● ●

●● ●

●●● ●● ●

●●●●●●

●●●● ●●

●●●● ●●●● ●●●●●

●●●

●● ● ●●●

●●●

●●●

● ●

●●●●

●●●

●● ●

●●●●●●

●● ●●● ●●●●●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●●●● ●●●● ●●

●●

● ●●●●●●●●●●●●●●

●●●

●●●● ●● ●● ●●●●●●●

●●●●●●

●●● ●●●●●● ●

●● ●●●●● ●●●● ●●●●● ●●●●● ●●●●●● ●●●●

●●●●●●●●●●●●

●●●

●● ●● ●●● ●● ●●●●●●●● ●

●●●

● ●●● ●●

● ●●

●●●

●●●

●●● ●●●●●●

●●●

●●●

●●●●●●● ●●●●●● ●●●●●● ●●● ●●●●● ●

●●●●●●

●●●

●●●●●●

●●●●●● ● ●● ●● ●●●● ●●●

●●●

●● ●●●●●●●

●● ●●

●●

●●●●●

●●●

● ●●

●●●●●●

●●●●●●●● ●

●●●

●●●

●● ●

●●●●●● ●●●

●● ●●

●●●●

●●●

●● ●● ●●

●●●●●●

●● ●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●● ●●● ●●●●●●●●●●●● ●●●

●●●● ●●

●● ●

●●●

●●

●●●●●●●●● ●●●●●●

●●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●●

●●●

●●● ●●●

●● ●

●● ●●●● ●●●●●● ●●● ●●● ●●●● ●● ●●● ●●●●●●●●●●●● ●●●●●●

●●●

●●●● ●● ●●●●●● ●●●●●●

●●● ●

●●●

●●● ●●●●●● ●●●●●●● ● ● ●●●● ●●● ●●●●●●●●

●●●

●●●

●●●

●●● ●●●●●●●● ●●●●

● ●

●●●

● ●

●●●

● ●● ●●●

●●●

●●●

●●●

●●● ●● ●

●●●

●●●●●●

●●●●●●

●●● ●

●●● ●●●●●●

●●●

●●●●●● ●●●●●●●●●● ●●●●●●●●●●●●●●●●● ●●●

●●●

●●●

●●●

● ●●●●●●●● ●●●●●●● ●●●●●

●●●

●●● ●●●●●● ● ●●●●●●●●●●● ●●●●●●●●● ●●●

● ●● ●●●

●●●●●●

●●●

●●●●●●● ●●● ●● ●●● ●●●

● ●●

●●●●● ●●●●

●● ●● ●●

●●● ●●●●●● ●●●

●●●

●● ●

●●●● ●●●●● ●●●●

●●●

●●●

● ●●

●●

●●●●

●●● ●●●● ●●● ●● ●●

●●●

●●

●●●●●●

●●

●● ●●●

● ●●

●●●● ● ●●●● ●● ● ●●●●●●●●●●●● ●●●

●●●

●● ●

●●●●●●

●● ● ●●●● ●●● ●● ●●●●●●● ●● ●● ●●●● ●●●

●●●

●●●●●●●●● ●●●●●●●● ●●●● ●●●●●● ●

●●

●●●● ●●●

●● ●●●●●●●

● ●● ●●● ●●●●●●

●●●

● ●●

●●

●●●●●● ●●●

●● ●●●●

●●●

●●● ●●●●●●●●●

● ●●●●● ●●●●●●●●● ●●●

●● ●●●● ●●●●●● ●●●

●● ●● ●● ●● ●

●●●●●●

●●● ●●●●●● ●●● ●●●●● ●●● ●●●●

●●●

●●●● ●●●● ●

●●●

●●●●●●

● ●●

●●●

● ●● ●●●

●●●

●●●

●●●●●● ●●●

●●●

●● ● ●●●●●●

●●●

●●

●●

●●●●●●

●●●

●●●

●● ●●●●

●●●

●●●●●●

●●●

●●●

●●●●●●● ●● ●●●●

●● ●

● ●● ●●●

●●●● ●●●●●

●●●

●●●●●●

●●●

●●● ●●●● ●●

●●●●●●

●● ●●●●

●●●

●●

●●●

●●●

●●●

●●●

●●●

●●●●●●● ●● ●●●●●●●●●●●●

●●●

●●●

●●● ●●●● ●●●●

●●

● ●

●●●●●●

●●●

●● ●●●●● ●●● ●●●● ●●●●

●● ●

●●●

●●●●●●● ●● ●●●●●●●●● ●● ●● ●● ●● ●● ●●●●● ●●● ●● ●●● ●●●●●

●●

●●●●●

●●●

●● ●●●●●●●● ●●●●●●●● ●●● ●●●

●●●

●●●●●●

●●●

●●●●● ●

● ●● ●●●

●●● ●●●●●● ●●●

●● ●

●●●●●● ●●●

●●●

●●● ●●●●●● ●● ●● ●● ●●●●● ●●● ●● ●● ●●●●●● ●●● ●●●●●● ●●●●●●●●●●●● ●●●●●● ●●●

●●●

●● ●●●●●●●● ●●●● ●●●● ●●●

●●●

●●● ●●

●●

●●●●●●

● ●●●●● ●●● ●●●

●●●

●●●●●● ●●●

●●

●●● ●●●●●●

●●●

● ●●●●●

●●●

●●● ●●●● ●●

●●● ●●●●●●

● ●●●●●● ●●● ●●● ●●●●●● ●● ●●●●●●●●●●●● ●●●●●●●●●●●●●●● ●● ●●●● ●●●●●●●●●●●●

●●●●● ●●●●

●●●

●●●

●●● ●●●

●●●● ●●

●●●●●●

●●●

●●●

●●●

●●● ●●●●●●●●● ●●● ●● ●● ●●

●● ●

●●●

●●●

●●●●●●●

●●● ●

●●●

● ●● ●●●●●● ●●●

● ●●●●●●

●●●

●●●●● ●●●●● ●●

●●●

●●● ●●●●●● ●●●●● ●

●●●

●●● ●●●●●● ●

●●● ●● ●● ● ●●●●

●●● ●● ●

●● ●●●●

●●●●●●●

●●

● ●●●●●●●

●●●

●●●● ●● ●● ●●●●●●●●●●

●●●

●●●

●●●

● ●● ●●●

●●●

●●●

●●●

● ●●

●●●●●●●●●●●●●●● ●●●

●●●

●●●

●●

●●●

●●●

●● ●●●● ●●● ●●●

●●●

●● ●●●●●●●

●●●

●●●●●●●●●●●●●●●●●● ●●●

●●●

●● ●

●●●

● ●●●●● ●●●●●● ●●●●●●●●●●● ●●●●●●●●●●

●●●

●●● ●●●

●●●

●●●

● ●

●● ●

●●●● ●● ●●● ●

●●●

●●●●●●●● ●●●● ●●●●●●

●●●

●●●

●● ●

●●● ●●● ●●●●● ●

●●●

● ●●●●●●●● ●●● ●●●●●● ●●●●●●●●●

●●● ●●●

●●●●●●

● ●●

●●● ●●●● ●●●●● ●●●●●● ●●● ●●●

●●

●●

● ●●●●●●

●●●

●● ●●●● ●

●●

●● ●● ●●●●●●●●● ●●●

●●●

●●● ●●●●●●●●●●●●●●●

●●●

●● ●

●●● ●●●

●●●●●●●●● ●●●●●●●●●●●● ●●●●●●

● ●●

●●●●●●●●●

●● ●

● ●● ●●●

●●● ●●●

●●●

● ●●●●● ●●●●● ●●● ●● ●● ●● ●

●●●

●●

●●

● ●●●●●●● ●●●●● ●●●● ●● ●●● ●●●●●● ●●●

●●● ●●●

●●●●●●●●●●●● ●●●●●●

●●

●●●●●●●●●●●●●●●●●●●

●●

●●

●● ●● ●●●●●● ●●●●●● ●●●● ●●●●● ●●●●●●●●●

●●●

● ●● ●●●●●● ●● ●

●●●

●●●

●●●

●●●

●●●

● ●● ●● ●●● ●●●●

●●●

●●●

●●●

●●●●

●●●

●●●● ●● ●●●

●●●

●● ●●●●

●●●

● ●● ●● ●● ●●●● ●●●●

●●●

●●●

●●●

●●●●●● ●●● ●●●

●● ●

●● ●

●●●

●● ●●●●

●●●

●● ●● ●●

●●●

●●●●●● ●●● ●●●

●●●●●● ●●●

● ●● ●●●●

●●

●● ●●

●●●

●●●

● ●●

●●●

●●●

●●●●● ● ●●●●

●●

●●

● ●●

● ●●

●●●

●●●

●●● ●●●●● ●

● ●●

●● ●●●●

●● ●●●●

●●

●●●

●●●●●●●●●●●●● ●●●●●

●●●

●●● ● ●●●●●

●●●

●●●

●●● ●●●

● ●●●●●● ●●●●● ●●●●● ●●●● ●●● ●● ●●● ●● ●● ●●●

●●●

●●●● ●●

●●●

●●●●●●● ●●●●●

●●●

●●●●●● ●●●●●● ●●●●●●●●● ●●●● ●● ●●●

●●●

●●● ●●●●● ●

●●●

●●

●● ●●

●●●

●●● ●●●

●●●●●●●●●●●●

●●● ●●●

● ●●●● ●●●●●● ●●●●● ●●●●●

●●●

●● ●●●● ●● ●● ●●●●●●●●

●●●

●● ●●● ●● ●● ● ●●●●●

●●●● ●●

●●● ●●●● ●●●●●●●● ●●●●●●

●●●

●●●●●● ●

●●

● ●●●●●●●●●● ●● ●●●●●● ●●●●●●● ●● ●●●● ●●

●●●

●●● ●●●●●●

●●●

●●●●●●

●●●

●●●●●●●●●

●●●

●●●●●●

●●●

● ●●●●●●●● ●●●

●●●

●●●

●●●

●●●●●●●●●● ●● ●● ●●●●●●●●●●● ●●

●● ●●●●

●●●●●●

●●●

●●●●●●●● ●●●●

●●●

●●●●●●

●●●

● ●● ●●●●●● ●●●

●●●

●●● ●●●●●●

●●●●●●

● ●● ●●● ●●●● ● ●

●●●

●● ●●● ●● ●●

●●● ●●●●●●●●●

● ●●

●●●●●●●●● ●●●●●●●●●●●● ●●● ●●●●●● ●● ●●●●●●● ●● ●

● ●●

●●●●● ●● ●●●●●●● ●●●●

● ●●●●●

●●●●●●●●●●●●●●●

●●

●●

●●●

●●●●

●●● ●●●● ●●● ●● ● ●●

● ●●

●●●●● ●

●●

●●

●● ●

●●●

●●●

●●●

●●● ●●●

●●●●●●●●● ●●●

●●

● ●●●●●●●●●●●●

●●●

●●● ●●●●● ●

●●●

●●●●●●● ●

●● ●

● ●

●●● ●●●● ●●●●●●

●●●

●●●

● ●●

● ●●●●● ●●●

● ●●

●●●●●● ●●●● ●● ●●●

●●

●● ●●● ●●●

● ●●

● ●● ●●●● ●●●●●●●●●● ● ●●●

●●●

●● ●●●●● ●●●●●

●●●

●●●●●● ●●●●●●●●●

●●●

●●●

●●●●●●

●●●

●●●●●●

●●●●●●

●●●●●●

●●●●●●● ●●

●●●

●●●

●●●

●●●

●●● ●● ●● ●●●●●●●●

●●●

●● ●●●● ●● ●●●● ●●●

● ●●

●●● ●●● ●● ●●●● ●●●●●● ●●● ●● ●●● ● ●●●●●●●●●● ● ●● ●●●●● ●●●●● ●●●●●●●●●● ●●●●●● ●●●●●●

●●●

●●●●●● ●● ●

●●●● ●●

●●●

●●●● ●●●●●●● ●●●●● ●● ●

●●●

●●● ●● ●

●●● ●●● ●●●

●●●●●●●●● ●●●●●●

●●●

●●● ●●●● ●● ●● ●●●●●●●●●● ●●●●●●●●● ●●●●●●●●● ●●●

●●●●●●

●●● ●●●●

●●●

●●●

●●● ●●●

●●●

●●●

● ●●

●●●

●●

●●● ●●●

● ●●

●●●

●●●●●●

●●●●●● ●

●●

● ●●●●●● ●● ●

●●●

●●●●●●●●●●●● ●● ●● ●● ●● ●●●●●●●●●● ●●●●● ● ●●●● ●●● ●●●●●● ●●●●●●●●●●● ●●● ●

●●

●● ●●●●●

●●●

●●●

●●●

●●●

●●●

●●●●● ●

● ●●●●● ●●●●● ● ●●●● ●●● ●● ●●●●●●

●●●

●●●

●●●

●●●●●●

●●●

● ●●●● ●●●●●●●●●● ●●●

● ●●

●●●●●●

●●●

●●●

●●●●●● ●●●

●●●

●●●● ●● ●●●●●●● ●●●●●● ●●●●● ●●●●●●●●● ●●●●●●

●●●

●●●

●●●●●●●●●● ●●●●●●●●●●●●●●●● ●●●●

●●●

● ●●●●●●●●

●● ●

●●●

● ●●●●●●●●●●● ●●●●●●●●●

●●●

●●● ●● ● ●

● ●

● ●●●

●●

●● ●●●●● ●●●●●●●●

●●●

● ●● ●● ●●●●

●●●

●●

●●

●●●

●●●

●●●●●●● ●●●●● ●●●●●●●●●

●●●

●●●● ● ●●●● ●

●●

● ●●●●●● ●●● ●●● ●●●●●●

●●●● ●●

●●● ●●●●●● ●●●

●●●

●●● ●●●●● ●●●●●●●●●●

●●●

●●● ●●●●●● ●● ●

●●●●●●

●●●

● ●●

●●●●●●

●●●

● ●● ●●●

●●●

● ●●● ●●●●●●●● ●● ●● ●●

●●●

●●●

●●●

●●●

●●● ●●●●●●

●●

●●●● ●● ●●●●●●●●●●●●● ●●●●●●●●●● ●●●●●●

●●

●●●●●●●

●●●● ●●

●●●

●●● ●●●

●●

●●●●●●●●

●●●

●●● ●●●●●● ●● ●●●● ●●●●●●●●●● ●● ●● ●

●●●

●●●●●● ●●●●●●●●●

●●●

●●●

●●

●●●●

●●●●●●●●●● ●●●●●●●●●●● ●●●

●●●● ●●

●●

●●●

●●●●●●●●●●●●● ●●● ●●●●●●

●● ●●● ● ●●●●●●●●● ●●●

●●●

●●● ●●●

●●●

● ●●

●●●

●●●●●●●● ●●●● ●●●●● ●●● ●●●● ●●● ●

●●

●●

●●

●●

●●●●●●

● ●

●●

●● ●● ●●● ●●●

●●●

●●●●●●●● ● ● ●●● ●●●●●●●●

●●●

●●● ●●● ●●●

●●●

●●●● ●●

●●●● ●●

●●● ●●●●●● ●●●●●●●●● ●●●●●● ●●●●●●●●●●●● ●●●

●●

●●●●● ●●●

●●●

●●●●●●

●●●●●● ●●●

●●● ●●●●●●●●●●●● ●●●●●● ●●●●●●

●●●●●●●●●●●●

●●●●●●●

●●

●●

●●●●●● ●●●●● ●

●●● ●● ● ●●●●●● ●●●●●●●●● ●● ●●● ●

●●●● ●●

●●●● ●● ●●●

●●●

●●●● ●●●●● ●●●●●● ●● ● ●● ●●●● ●●●●●●

●●●

●●●●●● ●●●

●●

●●●●●● ●●●●●●●●●● ●●●●●●●● ●●●●● ●●●●

●●●

● ●● ●●●● ●● ●●●●●●●●●

●●●●●● ●●●

●●●

●●

●●

●●●● ●●● ●

● ●

● ●

●●●●●●●●● ●● ●●●●● ●●●●● ●● ●

●●●

●●●●● ●

●●●

●●● ●●●

●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●●●●●●● ●●●●●●●●●●●●● ●●

●●● ●● ●●●●●●●●●● ●●●●●● ●

●●

● ●

●●●

●●●

●● ●

●●●

●●●●●● ●●●●●●●●●●

●●●●

● ●● ●●● ●●●●●●

●●● ●●●●●●

●●●● ●●

●●●

●●●●●●

●●●

●●●●●●●●● ●●●●●●●●●●●●

●●●

●●●●●● ●●● ● ●●●●●

●●●

●●●●●● ●●●● ●●●●●●● ●●●● ●●● ●●●●●●●●●

●●●

●●●●●● ●●● ●●●● ●●●●●●●●●●●●●●●●●● ●●

●●●

●●● ●●●●●●

●●●

●●●●●●●●●●●●●●● ●●●●● ● ●●●

●●●

●● ● ●

●●

● ●●

●●● ●●●

●●●

●●● ● ●●● ●●●●●

●●●●●●

●●●●●● ● ●● ●● ●

● ●●

●●● ●●●●●●●

● ●

●●●

●● ●●●● ●●●●● ●●●●●●●●●● ●● ●●●●

● ●●

●●●

●●●

● ●●● ●● ●●●

● ●●●●●

● ●● ●●●

●●●●●●

●●●●●●

●●●

●●●●●● ●●● ●●●●●● ●●●

●● ●

● ●●● ●● ●●●●●●●●● ●●●

●●● ●●●

●●●

●●●●●●

●●●

●●●

●●●● ●●

●●●

●● ●

●●●

●●● ●●●●●●●●● ●●●

●●● ●● ●

● ●●●●●● ●●●●●

●●●

●●●

● ●● ●●● ●●●

● ●●●●● ●●●●●●●●● ●●●● ●● ●●● ●●●

●●●

●●●●●● ●●● ●●●

● ●●●●●

●● ●●●●

●●●

●●● ●●●

●●●

●●●

●●●

●● ●●● ●●●●●●●●●● ●●●

●●●

● ●●●●●●●●●●● ●●●

●●●

● ●● ●● ●

●●●

●● ●

●●●

●● ●● ●●

●●●

●●●

●●● ●●●

●●●●●●●●●●●●● ●●●●●●●● ●●●

●●●

● ●●

●●●

●●●●●●●●●●●●●●● ●

●●

●●●

●●●

●●●● ●●

●●●●● ●

● ●●●●●

●●●●●●

●●● ●●●

● ●●●

●●

● ●●●●

●●● ●●●●●●●●●

●●● ●●●●●●●●●● ●●● ●● ●

●●●●●● ●●●

●●● ●

●●●

●●

●●●●●● ●●●

●●●●●●

●●

● ●●●●

●●

● ●●●● ●●● ●●●●●●●● ●●●

●● ● ●●●●●●

●●●●●● ●●●

●●●

● ●●● ●●

●●● ●●●

●●●●●●●●●● ●● ●● ●●●● ●●●●●●

●●●

●●●●●● ●●●●●●●●●● ●●●●●

●●● ●● ●●●●

●●

●●

●●●●● ●

●●● ●●●

●●● ●● ●●●●●●●● ●●●●●

●●●

●●●● ●●●●● ●●●●● ●

●●●

●●●●●●

●●●

● ●●● ●●●●● ●● ●●●●●●● ● ●● ●●●●

● ● ●● ●●●●● ●●●●●●●●●

●● ●

●● ●●●●●●●●●●●● ●●●●●●●●●● ●●●●●●●●●●●●●●●●●●● ●●●●●

●●●

● ●●●●●●●● ●●●●●● ●●●●●●●●●

●●●● ●●● ●

● ●●●●● ●●●●●●●●● ●●●●●● ●●●●●●●●●

●●●●●●

●●●

●●●

●● ●●●●●●●●●● ●●●●●● ●● ●●● ●

● ●●● ●●

● ●●●● ●● ●● ●●● ●●●●●●

●●●

●●● ●●●●●●●●●

●●●●● ●●

●●●

●●●●●●●●● ●●●● ●●● ●● ●●●

●●●

●●●

●●●●●●●●● ●●●●●● ●●●

●●●

●●● ●●●●●●●●● ●●●●●● ●● ●●●●●●●

●●●

● ●●●●●

●●

● ●

●● ●●●●● ●●●●●●● ●●● ● ●●● ●●●●●●● ●

●●● ●●●

●●●

●●●

●● ●

●●●

●●●

●●●

●●●

●●●● ●● ●● ●● ●●●●●●●● ●●●

●●●

●●●● ●●●●●

●●●

●●● ●●●●●●

●●●

●●●

●●●

●●●

●●●

●●● ● ●●

● ●●

●●● ●●●

●●●

●●●

●●●

●●● ●●●

●● ●

●●●●●●●●●

●●●

●●● ●● ●● ● ●

●●●

●● ●●●●●●●●●● ●●●●●● ●●●●●

●●●

●●●●●●● ●●● ●●●●● ●● ●●●●●●● ●●●

●●●

●●●●●●●●●

●● ●●●●

● ●●●●●● ●●●●●● ●●●●●●●● ●●●●●●

●●●

●●●

●●● ●●●

●●● ●●●● ●●

●●●

●● ●●●● ●●●

●●

●●

●●●

●●●

●●●

●● ●●●●

●● ●●●● ●●●● ●● ●●●●●● ●●● ●●●

● ●

●● ●●

●●●●●● ●●●●● ●

● ●● ● ●●●●●●●●●●●

● ●●

●●●

●●●●●●

●●

●●●

●●●●●●●●●

●●●

●● ● ●●●●● ●● ●● ●●●●●● ●●●

●●●

●●●

●●●

●●●●●● ●

●●●●●● ●●●●●●

●●●

●●● ●●●

●●

●● ●●● ●●●●●●● ●●

●●●

●●●

●●●

●●● ●● ●● ●●

●●●

●●●●●●●●● ●●●

●●●

●●●

●●●●● ●●●●● ●● ●● ●●●● ●●●●●●●●● ●

●●

●●●

●●

● ●●●● ●

● ●● ●●●

●●● ●●●●●● ●●●●●●

●●●● ●●●●●●●●●●●●●●●●●●

●●●

●●●●●●●●●●● ●

●●●

●●● ●●●

● ●●●●●●●●

●●●●●●●●● ●●●●● ●●●● ●●● ●●●●●●

●●●

●●●

●●

●●● ●●●●●●

● ●●

●●●

●●●

●●●

●●●

●●●

●●●

●● ●

●●●

●●●●

●●●

●●● ●●●●●● ●●●

●●●●

●●

●●●

●● ●

●●●●●● ●● ●●●● ●

●●

● ●● ●

●●●

●●●●●●●●●●●●●●● ●●●●● ●●●● ●●●●●●

●●●●●●●●●

● ●●● ●● ●● ●●●●●●●

● ●

● ●●●

● ●●●●●●●●● ● ● ●●● ● ●●● ●●●●●●● ●● ●●

●●●

●●●

●●●

●●●● ●●● ●● ●●● ●●●

●●●●●●

●●● ●●● ●●● ●●●●●●●●● ●●●●●●● ●●●●●●● ●●● ●●●● ●●●

●●

●●●●●●● ●●

●● ●

●●●● ●●● ●●

●●●

●● ●●●●●●● ●●●●●●

●●●

●●● ●●● ● ●●●●●●●● ● ●●●●●●●● ●●●●●●●●●

●●●

●●● ●●●●● ●● ●●●●●●●●●●● ●●●●●●● ●● ●

●●●

●●●

●●●●●●●●●●●●

●●●

●●●

●●●

●●●

●●●

●●●●●●●●●●●●●●●●●●●●●

●●●

●●

● ●●●●

●●●

●●●● ●●

●●●

●●● ●●●●●●●●●●●●

● ●●●●●

●●●

●●●

●●●

●●●●●●●

●●

●●

●●●● ●●●● ●●● ●● ●●●

●● ●

●●●

●●●●●● ●● ●●●●

●●●

●●●

●●●

●●●●●●●●● ●●●

●●●

●●● ●●●●●● ●●●● ●●● ●●●●● ●●● ●●●●●●● ●●●●●●●●

●●●

●●● ●●●

●●

●● ●●● ●●● ●●●●●●●●●●●● ●●●●● ●●●●●●● ●●●●●● ●● ●●●●

●●●

●●●

● ●●

● ●

● ●●●●●●●

●●

● ●●●●●●

●●●

●●●●●●●●● ●●●● ●●●●●●●●

●●●

●●●●●● ●

●●

●●●●

●●●● ●●

●●●●●●

●●●

●● ● ●●●●● ●●●●

●●●

●●●●●● ●●●

●●●

●●●

●●●

●● ●

●●●

●●●●●●●●●

●●●●●●

●●● ●●●

●●●

●●●

●●● ●●●

●●●●●● ●●●● ●● ●● ●●●●●● ●●●●●●● ●●●●●●●●●●●● ●● ●

●●●

●●●

●● ●

●● ●●●● ●●●●●● ●●●●●●

●●●

● ●●●●●

●●●

●●● ●● ●● ●●●●●●●●

● ●

●●●●●●● ●●●●●●●● ●●●●●●●●● ●●●●●●● ●●● ●●

●●●

●●● ●●●●●● ●●●●●● ●●●●●●●●●

●●●

●●●● ●●●●● ●●●●●●●●●

●●●

●●●●●● ●● ●● ●● ●● ●●●●●●● ●●●●●●●●● ●● ●● ●●● ●● ●

●● ●●●●●● ●●●●●●●●●●●●●

● ●●

●● ●

●●●

●● ●●●●● ●●●

●●●

● ●●

●●

●●●●● ●● ●●● ●●●

●●●

●●●●●● ●●●●●●●● ●●●●

●●●

●●● ●● ●●●●

●●●●●●●●●●●● ●●●●●●●●●

●●●

●●●●●● ●●● ●●●

● ●● ●●●

●●●●●● ●●●●●● ●●●●● ● ●●●●●●●●●

●●●

●● ● ●●● ●● ●

●●●

●●●

●●●

●●●●●● ●●●●●●

●●●

●●●●●● ●●●

●●

●●

● ●●

●●●

●●●

●●●● ●●● ●●●●● ●●●

● ●●●●●● ●●●●●●●●●

●●●●●● ●

●●

●●

●●●

●●●●

●●

●●●●●

●●●●●●

●●●●●●

●● ●

●●● ●●●●●●●●●

●●●

●●●●●●

● ●● ●●●●●●

●●● ●● ●●●●

●●● ●●●

●●● ●●●

●●●

●●●●●● ●●●●●● ●●●● ●● ●● ●●

●●

●●●

●●●

●●●

●●●●●●

●●●●

●●

●●

●●●●●●

●● ●●●●●●●● ●●●●●

●●●

● ●●●●● ●●●

●● ●

●● ●● ●● ●●● ●●● ●●●●●●

●●●●●●

●● ●

●●●

● ●●

●●●

●●●●●● ●●● ●●●●●●● ●●

●●●

●●●●●● ●●●●● ●●●●● ●●●●●

● ●●●●●

●●●●●● ●●●● ●● ●● ●

●●●

● ●●

●●●

●●●

●●●

●●●

● ●● ●●●●●●●●●

●● ●

●●● ●●● ●●● ●●●

●●●

●●● ●●●●●●

●●● ●

●●

●● ●●● ●●●●●● ●●● ●●●

●●●

●●● ●●● ●●●●●●

●●●

●● ●●●●

●●●●●●

●●●

●●●

●●●

●●● ●●●●●●

●●●

●●●

●●●

●●●

● ●●●● ●

●●●

●●● ●● ● ●●●●● ●●●●

●●●

●●●●●●

● ●

●●

●●●

●●

●● ●●●● ●●●

●●●

●●●

●●● ●● ●

● ●●

●●●●●●

●●●

●●●● ●● ●●●●● ●●●●● ●●

●●●

● ●●●● ●●●●●●●

●●●●●●

●●●●●● ●● ●●●●●●●●● ● ●●●

●●●

●●●●●● ●●●●● ●●●● ●●●

●●●

●● ●●●● ●●●

●●●

●● ●● ●●

●●●

●●●●●●

●● ●● ●●●

●●●

●●●

● ●●

●●●

●● ●● ●●

●●●●● ●●●●● ●●●●● ●●●

●●●

● ●●● ●●

●●●

●●● ●● ● ●●●●●●● ●●●●● ●●●●●●●●●

●●●

●●● ●●● ●●●●●● ●● ● ●●●●●● ●● ●

●●●

●●● ●●●●●●

● ●●

●●

●●●

●●●

●● ●●● ●●● ●●●●●●●●●● ●●● ●● ●●●●●●●●● ● ●● ●

●●●

●●●●●●●●● ●●●●●●●●●●●● ●●●

●●●

●●

● ●● ●

●●●

●●●

●●●

●●●●●●●●●

●●●

●●● ●●●● ●●●●●●● ●

●●●

●●●

●●●

●●●●● ●●●●●●● ●● ●●●●

●●●●●●●●●

●●● ●●● ●●●●● ●

●●●

●●●● ●●●●● ●●●●●●

●●

●●●●

●●●

●●●

●●● ●●●

● ●●

●●● ●●●●●●●●●

●● ●●●● ●●● ●●● ●●●● ●●

●● ●

● ●

●●●●●● ●

●●●●

●●

●●●●●

● ●●● ●● ●

●●

●●

●●● ●● ●

●●●

●●● ●●●●●●●●●● ●●

●● ●

● ●●●● ●●●● ●●●●●● ●●●●●●●●●●●●●●● ●●●●●●●●● ●●●●●●●●● ●●● ●●●●●●

●●●

●●● ●●●

●●●● ●●●●● ●● ●●●● ●●●

●●●

●●●●●●●●●●

●●

● ●● ●●●●●● ●

●●●

● ●● ● ●●●●●

●●●

●●●●●● ●●● ●● ●●●●

●● ●●●●

●● ●●●●●●● ●●●

●●●

●●●

●●●

● ●●●●●●●● ●●●

●●●

●●●●●●●●● ●● ●●●●●●●● ●●●● ● ●● ●●●● ●● ●

●●●

● ●●● ●●●● ●●●●●●● ●●● ●●●

●●●

●● ●●●●●●●●●● ●●● ●●●

●●●●●●●

●●●

● ●●

●●

●●● ●●●●●●● ●●●●●●●● ●●●●

●●

●●●●●

●●●●●●● ●●●●●

●●●

● ●●●●● ●●●

●●●

● ●●●●● ●●●●●●●●● ●●●●●●

●●●

●●●●●●

●●●

●●● ●●● ●●●●●●

●●●

●● ●● ●● ●●●●●●● ●●● ●● ●●●●●●

● ●●

●●●

● ●● ●● ●

●●●

●●●

●●●

●●

●●●●●●●

●●●●●●

●●●

●●● ●● ●

● ●● ●●●● ●●●

●●●

●●●●●●●●●● ●●● ●● ●●●●●●● ●● ●●●●●● ●●●

●●●

●●● ●●● ●● ●●● ●●●●●●●

●●

●●

●●●

●●●●●●

●●●

●●●

●●●

● ●●●●● ●●● ●● ●● ●●●●●●●●● ●● ●●●●●●

●●●

●●●●● ●●● ●●●●●● ●● ●● ●●●● ●●●●● ● ●●

●●●

●●●

●●●

●●●●

●●

●●●●●●●●● ●● ●

●●●

●●● ●●●●● ●● ●● ●●●●●● ●●●

●●●

●●●●●● ●●●

●●●● ●●

●●●●● ●● ●● ●●●

●●●

●●●

●●●

●●●●●● ●

● ●

●●●

●● ●

●●●

●● ●●●● ●● ●●●●● ●● ●● ●●●●● ●● ●●● ●●●

●●●●●●

●● ●●●● ●●●●●●●● ●

●●●

●●

●●●

●●

● ●●●

●● ●●●●

●●●●●●●●● ●●●

●● ●

●●●●●●●●●●● ●

●●●

●●●●●● ●●●●●●

●●●

●●●

●●●●●●

● ●● ●●●●●● ●●●●●● ●●●●●●●●●

●●●

●● ●●●●

● ●●●●●●●●

●●●●●●●●●

● ●● ●● ●

●●●● ●●

●●●

●●●●●●

●●●

●●●●

●●

●●

●●●●● ●●● ●●●

●●●

●●●

●●●

● ●●●●● ●●●

●●●●●●● ●●

●● ●0.0

2.5

5.0

7.5

10.0

12.5

0 10 20 30I/O Read (MB)

I/O W

rite

(MB)

mDiffFit

Identifies groups of high density areas where no correlation is found

11

Density-Based Clustering: Epigenomics workflow

!  Datasets with high correlation values are not clustered

c: clusters per task type ρ: correlation value σ: standard deviation

Higher correlation values

Smaller standard deviation values

Constant values

12

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process !  Experiments and Evaluation

!  Conclusions

13

Task Estimation Process

•  Based on Regression Trees •  Built offline from historical data analyses

Tasks are classified by application, then task type

Estimation of runtime, I/O write, or memory peak

If strong correlated to the input data: •  Estimation based on the ratio

parameter/input data size •  Otherwise, estimation based on the mean

14

Example of Estimation Rules

Rules for I/O write estimation of the Periodogram workflow

15

Online Estimation Process

•  Based on the MAPE-K loop •  Task executions are constantly monitored •  Estimated values are updated, and a new prediction is done

Offline Estimation

Monitoring

Tasks submission

Analysis

Task completion

Correct estimation?

yes

New Estimation

no

Execution

Replanning

Online Estimation Process

16

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

17

Experiment Conditions

•  Trace analysis of 3 workflow applications •  Montage •  Epigenomics •  Periodogram

•  Leave-one-out cross-validation •  Evaluate the accuracy of our online estimation process •  3 different workflow execution traces for each workflow

•  Simulator •  Simple DAG analyzer •  Replays workflow executions

18

Results: Average Estimation Errors - Montage

Online Process Avg. Runtime Error: 18% Avg. I/O Write Error: 9% Avg. Memory Error: 13%

Offline Process Avg. Runtime Error: 43% Avg. I/O Write Error: 56% Avg. Memory Error: 53%

Poor output data estimations leads to a chain of estimation errors in scientific workflows

19

Results: Average Estimation Errors - Epigenomics

Online Process Avg. Runtime Error: 13% Avg. I/O Write Error: 5% Avg. Memory Error: 8%

Offline Process Avg. Runtime Error: 29% Avg. I/O Write Error: 57% Avg. Memory Error: 48%

Poor output data estimations leads to a chain of estimation errors in scientific workflows

20

Results: Average Estimation Errors - Periodogram

•  Experiment Conclusions •  Online strategy counterbalances the propagation of estimation

errors •  Estimation of first-level tasks have strong influence in

subsequent estimations

BoT: the online approach produces the same result as the offline

21

Outline

!  Introduction

!  Workflow Characterization

!  Task Estimation Process

!  Experiments and Evaluation

!  Conclusions

22

Conclusions

!  Summary of contributions –  Automated method that characterizes scientific workflow executions –  Fine-grained characterization of 3 real scientific workflows –  An online estimation process to predict fine-grained task needs

!  Future Work –  Analysis of the impact of re-planning a workflow when using an online

estimation strategy –  Sensitivity analysis of the correlation value ρ –  Increase the number of workflow samples –  Compare the results with other monitoring tools

Toward Fine-Grained Online Task Characteristics Estimation in Scientific Workflows

Thank  you.  

Ques%ons?  

rafsilva@isi.edu  

h/p://pegasus.isi.edu  

top related