37
“Agile GIS”: Building application- specific spatial analytic software from freely available software tools Lance A. Waller, Andrew B. Barclay Department of Biostatistics Rollins School of Public Health Emory University [email protected] Partially supported by NIEHS Grant 2 R01 ES07750-05A1

“Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

“Agile GIS”: Building application-specific spatial analytic software from freely available software tools

Lance A. Waller, Andrew B. BarclayDepartment of Biostatistics

Rollins School of Public HealthEmory University

[email protected] supported by NIEHS Grant 2 R01 ES07750-05A1

Page 2: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Outline

“Lean” and “agile” software tools.Two motivating examples:

Environmental justice.Sea turtle nesting patterns.

Conclusions.

Page 3: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Making methodology applicable:

We want a software tool that a) accesses GIS location/attribute data,b) performs GIS operations, ANDc) calculates/plots statistical quantities.

GIS does a) and b) easily.Statistical packages do c) easily.How do we get both?

Page 4: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

“Lean” and “agile” software

Close tie between user and developer.Use “toolbox” of objects and functions to address application (“agile”), but little else (“lean”).End user:

implements method accurately and efficiently, BUTdoesn’t master GIS or statistical

packages.

Page 5: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Illustration of “lean” and “agile”

GIS

Statistical Package

“Lean and agile” alternative

Page 6: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Advantage of “lean and agile”

Shorter learning curve.For example, put user of (software A) “behind the wheel” of (software B)…

Page 7: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Ingredients (GIS component):

Minimal functionality:Location/attribute data queriesLayering and buffering

GIS Toolkits (http://freegis.org/)GRASS (C++), Berkeley GIS Viewer, GISToolkit, OpenMap, Jshape, GeoTools.

Why Java?LightweightObject-orientedBrowser platform

Page 8: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Ingredients (Statistics/plotting):

Tools providing numerical computing power (e.g. simulation)Tools graphical display of resultsTools linking statistical results to geographic displaysComponents (e.g. Java Beans, OmegaHat, R)

Page 9: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Two examples of “lean agility”

Environmental justiceMap census demographicsMap environmental hazardsCompare exposure distributions for different subpopulations

Fishing pier vs. sea turtlesMap sea turtle emergencesMap fishing pierCompare emergence patterns around pier.

Page 10: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Child Welfare in Georgia

Type mix of substantiated incidents of child abuse by county.Locations of foster children.Basic question: What is the geographic distribution of (some statistic of interest)?

Page 11: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Environmental Justice

Environmental Justice: Do subgroups of the population bear a disproportionate impact of environmental hazards?LULU? NIMBY!One question of interest: Assess disparate impact due to different sites.Compare distribution of exposures between subgroups.Question: Who is exposed where?

Page 12: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Basic GIS operations:

Layering

Page 13: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Basic GIS operations:

BufferingFind areas within a user-specified distance of:• points• lines• areas

Buffers around an area

Buffers around a line feature

Page 14: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

EJ and GIS

Typical GIS assessment of environmental justice:

Layer census data (population counts in tracts), emission locations (TRI sites).Buffer for some radius (e.g., 1 km), report population proportions inside buffers (“exposed”) and outside buffers (“unexposed”)

Page 15: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Allegheny County, PA

499 census tracts (1990 Census).Compare census reported “black” and “white” subpopulations.200 air emission sites in EPA’s Toxic Release Inventory (TRI) for Allegheny and surrounding counties for 1990.

Page 16: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Allegheny County, PA 1990

86.46%12.23%4km buffer

85.57%13.13%3km buffer

85.16%13.63%2km buffer

86.49%12.56%1km buffer

87.09%12.01%Site in Tract

Tract data

87.56%11.20%Everyone

Allegheny County

Race Category“Black” “White”

“Exposed”

Page 17: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Other options:Waller, Louis, and Carlin (1997,1999) compare the exposure distributions between subgroups.Exposure surrogate: inverse distance from tract centroid to closest TRI site.Plot cumulative distributions of exposure surrogate for each subpopulation.Illustrates whether subpopulations experience different exposure “profiles”.

Page 18: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Example: Environmental Justice

Maps census boundaries.Layers TRI sites and calculates distances.Click on map, CDFs by subgroup plotted. Mouse to find impact on particular tracts.Visually identifies sites by disparate impact with respect to exposure surrogate.http://childwelfare.net/abb/stats/AgileGIS/geotools/scdf1/

Page 19: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Sea Turtle Nesting Patterns

Juno Beach, FLPremier nesting beach for endangered loggerheads.990 ft. fishing pierAssess impact of pier on nesting patterns.8,000-10,000 GPS coordinates per year 1997-2000.Question: Do emergence patterns differ between years?

Page 20: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

The life cycle of sea turtles

tofino.ex.ac.uk/euroturtle/ biology/lifec.htm

Page 21: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Juno Beach, Florida

Palm Beach CountyNesting beach for loggerhead and green turtles.Nesting season: May-September.Lighting restrictions in place.990-ft. fishing pier constructed 1997-1999.Permitting requires impact assessment.Palm Beach Co. Environmental Resources Management in charge of assessment.

Page 22: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Traci and Bud at the pier

Page 23: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Our data

Volunteers from the MarinelifeCenter, Juno Beach, Florida patrol beach each morning during nesting season.

Page 24: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

How do you find a turtle nest?

Females emerge from ocean, and leave trackways.

Not all emergences result in nests (“non-nesting emergence” or “false crawl”).

Page 25: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Data (continued)

Global Positioning System (GPS) readings of each observed crawl.10,240 GPS’ed emergences in 1998 (12,183 observed).8,786 GPS’ed emergences in 1999.11,614 GPS’ed emergences in 2000.

Page 26: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

A day on the beach…

Page 27: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Data (continued)

Differential GPS (referenced to Coast Guard Station): submeteraccuracy.Measured as feet from northern reference point.Attribute data: species, nesting/nonnesting, predation.

Page 28: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Juno Beach GIS data

#

#

###

#

#

#

## #

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

##

## #

##

#

#

##

#

#

##

#

##

##

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

##

#

##

#

#

##

###

##

##

##

# #

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

###

#

#

#

#

#

##

#

##

#

##

#

#

#

##

#

###

##

#

#

#

##

##

#

#

##

##

#

#

##

#

#

#

##

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

#

##

#

##

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

##

##

##

#

#

#

#

#

#

#

#

#

#

#

##

#

##

## #

####

##

##

#

##

#

#

#

#

##

#

# #

##

#

##

#

##

#

#

#

#

####

#

##

#

##

#

###

#

##

#

#

#

#

##

#

##

###

###

#

#

#

#

#

#

##

##

#

#

#

#

##

#

#

#

#

#

#

##

#

#

##

#

###

#

####

##

##

#

#

#

#

# #

#

#

#

#

#

##

#

#

##

#

#

#

#

#

##

####

#

#

##

#

##

###

##

##

#

#

#

#

###

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

##

###

##

#

##

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

##

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

####

##

##

#

##

#

###

#

#

#

#

#

##

##

#

#

##

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

###

#

###

##

#

##

###

#

##

#

###

#

####

#

#

##

#

##

#

#

#

##

##

#

#

#

#

##

#

###

#

#

#

#

#

#

## ###

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

####

#

#

##

#

# #

#

#

#

#

##

#

#

#

###

#

#

#

#

#

##

#

#

###

#

#

#

#

#

#

#

##

##

######

#

#

#

#

##

#

#

##

#

#

#

#

#

###

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

# #

##

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

###

##

#

#

#

##

#

#

###

#

#

#

#

#

###

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

###

#

##

#

##

#

##

#

#

#

##

####

###

#

#

#

#

#

#

#

###

#

#

#

#

#

#

##

#

##

#

#

##

#

#

##

#

#

#

##

##

#

#

#

#

#

#

#

#

#

##

####

#

#

##

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

##

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

##

#

#

#

#

#

#

#

#

##

##

###

#

#

#

###

##

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

###

#

##

##

##

##

##

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

## #

##

#

#

#

#

##

#

#

#

#

##

###

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

##

##

#

#

#

#

##

##

###

#

#

#

#

# ##

#

#

#

#

#

##

#

#

#

#

##

#

#

###

##

#

#

##

#

##

#

# ##

#

###

#

#

##

###

##

##

#

#

#

#

#

#

#

#

##

##

#

#

#

###

##

#

#

#

##

###

#

##

#

##

#

##

#

#

#

#

#

##

##

##

#

##

#

#

#

#

###

#

###

##

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

##

##

#

#

#

#

#

##

###

##

#

#

##

#

#

###

#

##

#

#

#

#

#

# #

#

#

##

#

##

#

#

#

#

#

#

##

#

#

#

##

#

##

#

#

##

#

#

#

#

#

# #

#

###

#

##

#

#

#

#

#

#

####

# #

#

#

#

##

#

#

#

##

#

#

#

##

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

##

#

#

#

# ##

#

#

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

###

###

#

#

#

#

##

##

##

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

###

#

##

#

##

#

#

#

#

##

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

##

###

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

##

#

###

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

##

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

# #

##

#

#

##

#

#

##

#

#

#

#

#

#

# #

#

#

#

#

#

##

#

##

##

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

## #

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

####

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

# #

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

# #

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

####

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#Y

#Y

#Y

######################################################################################################################################################################################################

####

#

################################

#

###################################################################################################################################################################################################

#########

######################

#

######################################################################################################################################################################################################################################################################################################

#############################

################################################

#

###########

##########################

############################################################################################################################################################################################################

################################################################

#########################

########

#

######################################################

#

##########################################################################################################################################################################################

#

##########

#############################################################################################################################################################################################

####################################################

#

######

################################################################

###########################################################

####################

#######################################################################################

##############################################################################################

###############################################################################################################################################################

####################

###

######

#

########################################################

#

####################################

#

##

#######

#################

####

############

####

#######

########

###########

##############

#

##

#

#####

####################

########

########

#####

####

#

###

####

##

##

###

##

####

###

#

#####

########################################

#####################

##############################################

########

#####################

######

#########

#########################################

######################

#######

#########################

#####################

###########

###############################################

##########

##############################################

#

####

#########

#####################################################

########################################################################################################################################################################################################################

##################################################################################################################################################

#########################################################################################

#

######################

#

###########################################################################################################################################################

#

##########################################################################

#

################################

###############

##############################################################################################################

#################################################

#

##########################################################

###############################################################################################################

#########################################################

#

#############

#################

###############

#

#############################################

################################################

#

####################################

#

##########################################################################

####################################################################

#############################################

######################################################################################################################################

#

##

####################

##

###############################################################################################################################

#

#################################################

###################################################

###########################################################################################################################################

#

###################################################

#

####################################################

############

#

###################################################################################################################################################################

#############################################################################

###########################################################################################################################################################

#

###################################################################################

#

#

###############################################################################

########################################################################################################

##

#

######################

#

############################################

#

##############################################################################################################

##################################

#

############################

###############################################################################################################################################################################################

#

######

####################################################################

#############################################################################################################

##

###################################################################

###################################################################################################################################################

##############################################################################

#

##########################################################################################################################################################################################################

####################################################################################################################################################################################

########

##

#########################################################################################

#####################################################################################################################

###########################################################################################################################################

#

########################################################

#

###############################

#

#############################################################

#################################################################################################

################################################################################################################################################

#

############################################################################################################################################

#####################################################################################################################################################

#####

########################################################################################################################################################################################

#

######

#

##

#

########

##

##

##

#######

#

#

####

#

#

##

######

###

##

######

####

###

###

######

########

######

###

#

#

###

#

#

###

#

######

##

##

##

##

#########

#

#

######

##

#########

########

#

#

####

#

#

###

##################

##

#

####

###

##

##

##

#########

###

#

#####

##

####

#

#######

####################

#

#

#

##

###

###

######

#

#

##

##

##

##

###

#

##

###

####

#

#

#

#

####

##

#######

##

#

############

#

##

###############

#

#

#

#

#

##

#

##

#

#######

##

##

#######

##

#

########

#############

#########

####

#

#

#

#

####

#

#

#

##

#

######

#

######################

##

#

#########

##

##

##

#

#

#

##

#####

###

###

#

##

####

############

###

#

##

####

#####

#####

#

##

#####################

##

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

####

#

#

##

#

#

#

#

###

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

##

#

#

##

##

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#####

#

##

#

#

#

#

####

##

#

##

#

#

#

#

#

#

##

#

#

#

####

#

#

#

#

#

####

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

###

###

###

##

##

#

#

##

###

#

##

#

#

###

#

##

######

#

##

##

#

#

###

##

#

#

#

##

#

#

##

#

#

#

#

#

#

##

##

#

#

#

#

##

#

#

##

#

#

#

###

##

##

#

###

#

#

###

####

#

######

####

##

##

##

##

#

#

##

#######

#

######

######

##

#####

#

##

###

####

#

##

######

###

###

#

#

##

#

###

##

##

###

###

###

########

###

#

#####

#

#

#########

##

######

#

##

#

#

##

#

#

#

#

#

#

##

##

#

###

##

#######

#########

#

####

#

##

###

##

#

#

##

##

#

###

###

#

#

###

##

#

#

########

#####

#####

#########

####

######

####

###

#

#

####

###

#

#

#

#####

##

##

#

##

#

##

#############

##

#

#

##

#

###

##

#

######

###

#####

####

#####

##

##

##

#

#

#

#

###

##

#

#

#

#

#

#

###

####

##

##

##

#

##

#########

##

##

########

#####

#

###

##

##

##

#

#

#

#

#

#####

#

##

##

###

###

#

#

##

##

##

###

#

##

#

##

#########

##

#####

#################

#

##

##

##

###

#

###

#

#

###

##

##

#

##

###

##

####

###

#

######

####

#####

#

##

#######

##

#

##

###

##

#

####

##

######

##

#####

#

#

#

#

#######

###########

###########

##

###

##

#

##

##

#

######

#########

################

#

#

#

#

##

####

#

#

#

###

#######

##

###

######

#

#

#

#

#####

#

#####

###

#

######

#

##########

#######

#####

##########

#

###

#

#####

#

#

#############

#######

#####

####

###

##

#

#

##

#

####

#

#

##

##

#

####

##########

#######

####

#

###

###

######

########

#####

#

#

##

#######

###

####

###################

#####

#

###

####

#

####

###

#

###

#

#####

#

####

#

##

#

##

#

###

########

#

#

###

###

##

#

#

###

########

#

#

#

#

####

##

#

#

##

#

###

#

#

#

#

#

#

###

#

#

###

####

#################

######

##

##

#####

#

#

#

#########

#

##########

#

####

#

##

#

###

#####

###################################

####

#####

#

########################

########

####

###############################

##########

##

###########

#######

########

####

####################

##########

#######

######################

######

#

##########

#

#

#

####

#

###############

####

#

#######

##########

#

###

#

######

###

#

##

#######

##

#######

######

#

##

##########

##

##

##

#

#

###

####

##

#

#######

#

###################

################################

##

####

#

#######

#

#

####

##

###

#######

####

######

##

######

##

#

#######

#

#

######

##

#####

#############

##

######################

#########

######

########

#####

####

###########

#########

########

#

####

##########

######

#

##

##

##

#

###

#

####

#########

######

#####

#

#######

###############

#

#########

#######

#

#######

#####

############

####

##

#

#####

###

#

######

#

##

##

#

##

#

######

#

##

##########

#

########

#####################

#######

###########

#

##

########

###

############

###

###

#

#

###############

#####################

#

###

##########################

###

###

################

#######

#

####

###################

##########

#####

#####

#

###

###

##

#

###

#

#

#

######

##

#####

###

######

#

######################################

##################

######

##

###############

#

#######

##

###################

###############

###

###########

####################

################

#######

#

#

##

###

#############

#

#######

#

########

###############################################################################

#############

#

##############################

#####

##

#

#

######

#

#

#####

##

####

#

###

#####

#

##

############

#

#

###

#########

######

#

###

##

###

##

######

##

####################

#

##

####

##

##############

##

###

##########

#######

#############

#############

######

####

#

#

#

#

#

##

###

#

###

#

##

###

##

##

#####

#

#########

##

#

#

####################

#####

#####

#

##########

########

#

###

#####

##

##

############

######

######

##

####

##

###

#

#

##########

############################

#

####

####

#############################

###############

###########

##############

########

#######

##################################

#####

##

#########################################

########

#######

#####

##########

#####

####

##############

###########################################

################

#####

#

#############

###########

###

#############

########

###

#

########

#######

#

##############

###########

#########

##

###

#

###

#

##

######

#####

##

####

#

#

####

##############

#

#####

#####

#

#

####

#

##

####

#

#

###

##################

##

##########

####

#####

##

#

###

#

######

#

#######

##

##

#

#########

#######

###

##

#####

##

############################

#####

###

####

#########

############################

##############

#######

#####################

####################

#

############################

##

#################

############

##########################

##

##############

#################################

#############

######

#########

##

##########

#####################

####################

################

#

############

##########################################

####################################

#############################################################################

#####

##############################################################

#

###############################################

##############

#####

##################################################################

######

#####

#############

############################

#########

######################################################

#######################

###

####################################

#####

########

#########

#

#

######################################################################

##

##########

#

##

###

#####################

#

########

##

#######

#

##############

########

############

##

#############################

##

######

###

########

###############

###

###############

################

#####

####

##################

########

####

###

#

#########

#########################

#####

#################

##

###

###############################

#################

####

############

######

##############

###

#########################

###########

####

#####################

####

#############################

###########

###

########

##

#####

################

#####

#######################

####

#######

##

###

############

#######

#

###########################################

######

###########

####

##

#####

#####

######

####

################

#######

########################

#

###

##

####

##############

########################

#

#############################################

###

###############################

########################

##########

#

#

#

########

#######

##

#############################################

##########

##

#

#####

######

######

##

#####

##############

#######

#

#########

#####

#####

###############

##################

#####

##################

##

##########

############

#########################

##

########################################

###############

#######

######

#

#

####

#############

###########

#####

#

######

###

#####

####

###########

####

##############

#####

##########################

###

####

##

###########

#

################################################################

#

###########

##

###

#

#########

####

#######################

#######################################

###########

###

#

##

#####################

##

##############

######################

#################

#########################

#

#

#######

#########

###########

#######

##################

####

#######

#################################

##

####

#######

###############################################################

######################

#####

##

##

####

##

###

########

####

#

###

####

###

##

#

###

##############################

########

##

####

##########

#

####

############

##################

####

#

#######

#####

#######

#

#

#

##

###

#

###

###

#

########

#################

#########

#############

##

##

#

#

#########

#########

#

##########

###########

########

#######

######

###

######

####

###

#######

#

##

##

##

#####################################

#

#############################

#

#

############

##

###

##

######

##

###

#

###

#

###

####

#

#

###

##

######

##########

#######

#

#

####

######

######

#####

###

#

#

####

#######

##

#

######

########

######

#######

######

#

#

##

#

######

##

#

####

###

##############

#######

###############################

###########################

###############

##

#######

###################################

######

##

############

#####

###

##

#

######################

######

###

#

######

##

###

#############

######

####################

#########################################

####################

############

##

####

####

###

######

#########

#

#####

#####

##

###############

###

#

#####

#

#

####

###

####################################

###############

######

######

##

##

########

###########

###############

################

#

##

#

#

#########

##

######

##

#

###

####

##

#

#

##

#

##

##

#

########

########

#########

#############

###

#

###

#

###########

#########

####

###

##

#

###

##########

#

#

##########

#

#

#

##

####

#####

####

###

###

########

###########

##

#

#########

###

#

#

###

####

#######################

########

##########

#######

##

#######

#####

#

###########

###############

###

#########

############

#

#########

######

###

############################

########

#####

#

##

#####

###

####

######

#

#

#

#

#

####

#######

#

#

##

#

####

##

###

#

####

#

#

##

######

#

#

##

#####

##

#

###

#

####

####

#

##

###########

###

########

##

#

#

#

#

#

#######

#####

###########

####

#

#

#

##

##

#

#

#

##

#

#

#########

#

#

#

#######

#

####

####

#

#######

#

#

#########

##

##

###

#######

##

#######

#####

#########

#

##

##

#

#

##

###

###

#

##

#

#

#

####

#

#

#

###

##

######

##

###

####

##

#

##

###

###

#

##

#

####

#

#####################

##

#

###

###

###

##

#####

#

#

######

#####

#

################################

###

###

##

#

#

#

##

#################

###########

###

##

#

#######

#######

#####

######

#

#

########

##

########

#############

############

###

#

########

#

#

##

##

#############

#######

##

#

#

###

#

#

#####

##########

###

#######

#

###

##

######

###

######

####

#########

###########

##

#

##

##

################

#################

####

#

#######

##

#

##

#######

#

#######

##

#

##

#

#######

####

######

####

#

#########

#

###

##

##

###

#

#

##

##

#

#

#

#

##########

####

##

##

#

#

#

##

#####

########

#####################

##########

##

##

##################################

#####

###

##################

######

##########

#

#

#####

###

#####

#

####################

#####

###

#

##

###

##

##

#####

##

##

##

##############

#####

#######

#

#

####

#####

########

###

##

##

##

######

###

####

#########

##########

#

###

###

###########

###

###########

#######

##

#########

#

########

#####

####

#

######

#

###

##

########

##

#

#

##

#

#

#

##

###

#

#

##

######

#

###########

#

#

######

##

####

#

#

#

###

######

####

#######

#

#

############

##

####

#########

#####

######

####

##

##

##

#####

#

###

#

#####

#

#

######

##

#

#####

##

#

#

###

######

###

#

####

#######

######

##

#

#############

######################

#

###########

#######

####

###

#

#

##

##

##

#

#

##

##

########

#

#

#

##

##

####################

######

##

#

#########

#

#

##

#

#

##

##

#

#

###

######

#####

#

#

###

###

####

###

#

#

#

#

#####

##

#

##

###

#

##

#

#####

#

##

##

#

####

#

#

#

#####

###

#

#

##

#

#

##

#

##

#####

#

###

#

#

###

######

##

#

#

##

#

###

#

##

#

#

#

#

#

#

#

#

#

#

#######

#

#

##

#

####

##

###

#

#

#

#

###

##

##

#

#

#

###

####

##

##

#

##

####

#

####

#

#

#

#

###

#

#

#

##

#

###

#

#

#

######

##########

#

#

#

##

##

###

##

###########

#

#

################

####

#

#####

##

#

######

#

##

##

##

#

#

#

#

#

#

##

###

##

#

###

#

##

#

#

###

#

##

#

#

###

#

##

#

#

####

#

#

#

#

#

###

##

#

####

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

###

#

##

#

#

#

##

##

#

####

####

##

#

#

###

#

##

##

###

##

#

####

#####

#

#

#####

#

###

#

###

##

####

###########

###

#

#

#

##

#

##

#

#

#

###

##

#

#

#

#

##

#

##

#

####

#

#

##

#

#

#

##

#

##

#

#

###

###

#

#

#

##

###

##

#

####

#

##

##

#

#

#

##

##

#

##

##

#

###

#

##

##

###

#

####

##

####

###

#

#

#

#

#

#

#

##

#

##

#

##

##

##

##

##

##

#

#

#

#

#

#

#

#

#

###

#

##

###

##

#

#

#

#

##

#####

####

#######

#

#######

###

###

#

##

###

###

#

#

##

###

#

##

##

#

#

##

#

##

#

#

###

#

#

#

##

#

#########

##

#

###

##

##

#

#

#

#

#

#

##

#

#

##

####

#

#

#

#

##

#

#

#

#

#

#

#

#

###

###

#

#

#

#

#

#

#

#

##

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

##

#

##

##

#

#

#

#

##

###

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

###

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

##

#

#

#

###

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#######

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

######

#

##

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

###

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

##

#

##

##

#

#

###

###

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

#

###

#

#####

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

##

###

##

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

##

########

##

###

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

##

#

#

#

#

#

#

###

####

###

##

#

###

###

#####

#

#

##

#

##

###

#

#

#

#

#

#

#

##

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

##

#

#

##

#

###

#

#

###

#

##

##

#

#

#

##

##

#

#

##

#

##

#

#

#

#

#

#

#

##

#

#

#

#

####

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#####

#

#

#####

####

##

#

#

#

###

####

###

####

####

####

#

#

#

##

###

##

#

#

##

#####

#

###

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

#

###

##########

#

##

##

#

##

#

###

##

#

#

#

#

#

#

#

#

#####

##

#

#

#####

###

##

##

###

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

##

#

#

#

#

###

##

#

##

#

##

#

#

#####

###

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#####

#

#

##

#######

###

#

###

#

##

#

###

#

###

##

###

##

##

#

##

#

#

###

##

#

#

#

##

#

#

#

#

#

#

##

#

#

#####

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

##

##

#

#

##

##

#

#

###

##

#

#

#

###

##

#

#

#####

#

#

##

#

#

#

#

##

#

#

###

#

#

#

#

##

#

####

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#####

#

#

#

#

##

#

#

#

##

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

####

#

####

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#####

#

#

#####

#

#

#####

####

##

##

#

##

#

###

#

#

###

###

#

##

#####

#

##

#

#

#

##

#

#

#

#

#

#

##

##

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

###

###

##

#

##

##

#

#

#

##

#

#

###

#

#

#

#

#

##

####

#

##

#

#

#

#

#

###

#

##

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

##

##

##

##

##

#

#

##

#

######

##

#

#

#####

#

#

#

#

#

#

#

######

#####

#

#

#

#

#

##

#

#

#

#

##

##

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

####

#

###

#

#

#

#

##

#

#

#

##

##

#

#

##

#

##

##

#

#

##

#

#

#

#

#

###

##

#

#

###

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

##

#

#

#

##

#

#

#

###

###

##

#

#

###

##

##

#

##

#

#

#

#

#

#

####

#

###

#

#

##

#

#

##

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

##

###

##

#

###

#

#

#

##

#

#

####

##

#####

#

#

#

###

#

#

##

##

#

###

###

#

##

##

#

#

#

#

##

#

#####

#

#

#

#

#

#

##

#

##

##

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#####

#

#

#

#

#

##

#

##

#

#

#

#

#

##

#

##

##

#

##

#

#

##

#

#

##

#

##

#

#

###

######

###

#

##

###

##

#

#

###

#

#

#

#

####

#

##

##

##

##

#

#

#

##

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

###

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

######

#

#

###

###########

##

#

#####

##

#

#######

#

#

#

##

#

#

###

##

#

#

#####

#####

###

#

###########

####

##

##

######

#

##

##

############

##

###

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

##

#

#

#

#

#

#

##

##

##

###

#

#

#

#

#

###

#

##

#

#

#

###

#

##

#

##

#

###

#

##########

##

#############

####

###

##

##

#

##

#

#

#

#

#

#

#####

####

##

#

#####

#

##

###

####

############

######

##

######

#

################

##########

####

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

##

##

#

##

####

#

###

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

###

#

#

##

##

##

#

#

#

##

##

#

###

#

####

##

#

#

########

###

######

#

##

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

##

#

#

##

##

##

#

###

#

###

#

###

##

#

#

#########

#

#

#

##

#####

##

#

#

##

#

###

####

######

#

#

#

#

#

##

#

#

#####

#

#

##

#

#

##

#

#

###

##

###

##

#

#

###

##

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

#

###

#

#

###

####

####

##

#

########

##

##

#

#

##

####

#######

####

###

##

#

####

##

####

#

#

#

#

#

#

#

##

##

#

#

##

#

#

#

####

##

###

#

###

#

#

#

#

#

#

#

##

#

###

#

#

#

#

#

#

#

#

#

#

#

#

##

#

####

#

#

#

#

#

#

#

#

##

#####

##

##

#

#

####

#

#

##

#

#

######

######

##

###

#######

#

#

##

#

##

##

#

####

##

##

#####

#######

####

#########

#

##

###

#

###

#######

###

########

##

#################

############################################

#########

##

###

##

##############

###########################

######

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

###

##

#

#

##

##

#

##

#

#

#

#

#

#

#

###

##

#

#

#

####

###

##

#

#

####

#

#

##

#

#

##

#

########

#

###

#

##

#

######

#########

#

#

##

#####

#

#

##

####

#

##

#

###

#

##

##

##

###

####

#

####

####

####

#######

##

##

##

##

##

##########

##########

##############

##################

##

#

#

#

#

#

#

#

##

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

###

#

##

#

#

#

#

###

#

###

#

#

#

#

#

##

###

#

#

#

####

#

#######

#

###

####

#########

#

###

#

#

#

#

#

###

#####

#

#

#

##

###

##

#

#

#

#

#

####

##########

#

##

#############

#####

#

##

#####

###

######

#

###############

###

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

##

##

#

#

#

#

#

###

#

##

##

###

#

#

#

##########

##

###

#

###

#

#

#####

###

#

#####

###

###

#

##

#

#

#

#

##

###

###

#

##

#

##

#

##

#####

##

####

#

###

##

########################

#

###

###

######

###

#

####

####

#######

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

##

#

##

#

#

####

###

#########

#

##

##

#

###

###

################

#####

#

####

######

###

######

#####

#

#

#

#

####

#

#################

###

#

#

##

##

####

#

##

##

######

#

###

#

#########

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

###

#

###

####

##############

#

#

#

####

#

###

###########

###########

####

#################

##

###

#

####

##

##

##

#

##

#

#

##

#

##

###

#

#

##

#

##

#

##

##

##

####

#

##

##

###

####

#

####

##########

#######

##

#######

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

##

#

##

############

#

##

#####

####

#

##

##

#

###

###

#

##

##

#

##########

##

##

##

#

#

#

#

#

#

##

#

##

#

#

#

#

######

#####

######

##

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

##

#

#

#

#

#

##

#

##

#

#

########

#

#

##

#

#

#

###########

#

#

######

#

#

#

######

##

#

##

####

#

#

#

##

#

###

#

#

###

######

#

#

##

##

#

###

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#######

########

###

#######

##

#

##

###

###

#

#

###

####

#########

#

#

##

####

##########

###

#

###

####

###

#

##

###

#

#

#

#

###

###

####

#

#

#####

#

#

#

#

###

#

#

##

#

####

#

#

###

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

##

#

#

##

##

##

###

#

##

#

#

#

####

#

##

#

#

#

#

##

#

#

#####

##

##

#

#

#

##

##

#########

##

#

##

##

#

#####

#

####

#

##

####

#

##

#

#

#

#

#

###

####

#

#

##

####

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

##

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

###

##

####

##

#

#####

#

####

#

#

#####

#

##

#

##

##

#

#

###

##

#

##

##

#

#

#

#

#

####

#

##

#

##

#

#

####

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

##

#

#

#

#

##

#

#

###

#

#

#

#

###

#

#

#

#

#

#

#

#

#

####

#

#######

######

##

#####

###

#######

#

##

##

#

#

#

#####

#

#

#

#

##

#####

###

#

#

#

#

#

#

##

#

##

###

##

#

#

####

##

##

##

#

##

###

###

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

####

#

#

#

#####

#

##

####

##

#

#####

####

####

#

###

##

#

##

#

##

#

###

###

#

##

##

####

###

#

##

###

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

####

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

##

##

#

#

#

##

##

#

#

#

####

##

####

#######

##

#

####

#

###

#

##

#

##

##

##

#

#

#

##

#####

#

####

###

##

#

#

#

#

##

#

##

##

#

#

#

#

##

#

###

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

##

#

#

####

##

#

#

#

#

##

#

#

##

##

#

#

####

#

#

#

#

#

#

#

#

#

#

#

##

#

#

####

##

##

###

##

##

###

#

##

##

####

###

#

#####

###

##

#

#

#

#

#

###

#

##

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

##

#

#

##

#

##

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

###

##

#####

#

####

###

#

##

##

#

##

##

###

##

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

##

##

##

#

###

#

#

#

##

#

####

##

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

####

##

#

#####

#

#

##

#

##

##

#

##

#

#

####

#

##

##

#

###

#

##

#

#

#

#

#

#

###

###

#

#

#

#

##

##

#

#

#

#

#

#

#

###

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

##

#

####

#

#

#

#

#

#

#

##

#

###

#

#

#

#

#

##

##

##

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

##

##

##

#

##

#

#

#

#

#

##

#

#

###

#

#

#

#

#

#

##

###

#

#

#

#

####

#

#

##

#

#

###

#####

##

#

#

#

#

#

#

#

#

##

###

#

##

##

##

#

#

#

#

#

##

###

#

#

#

##

####

#

#

#

#

#

#######

#####

######

#

#

#####

#

#

#

##

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

##

#

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

###

##

#

####

#######

#

#

##

#

##

#

###

#

#

###

#

#

#

#

######

##

###

#

#

#

#

#

#

#

#

####

#######

#

##

#

#

##

#

#

#

####

###

###

#

#####

#

########

##

####

###

#

#

###

##

#############

########

###

##

###

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

###

##

######

#

#

#

####

###

#

#

##

#

#

#

###

#

#

#

#

#

##

##

#

#

#####

#

#####

#

#

#

###

####

##########

##

#

###

####

#

#

###

###

##

##

#

#

#

##

##

#####

##

#####

###

#

###

#########

#############

#

#########

####

###

#

#

##

###

#

#

#

########

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

##

###

##

#

##

#####

#

#####

#

#

#

######

##

##

#

#

#

#

#

#

#

#

####

#

##

#

###

#

###

#####

#

#

#

###

###

#####

#

#

####

####

#

#

#

#

####

#

#

##

#

#####

#

#

#

#

#

#

##

#

#

#

#

##

#

###

#

#

#

##

#

#

##

##########

##

##

##

#

#

#

#

##

###

###

#

##

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

########

#

#

#

#

#

#

###

##

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#########

#

##

####

#

#

###

####

##

#

###

####

##

###

#

###########

#

###

#

####

########

#

#

###

#

#######

##

##

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

##

#

#

##

#####

#

#

####

####

#

##

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

####

#

###

##

##

##

#

#

######

##

##

###

####

##########

#

##

###

#

#

#

#

##

##

#

#

#

####

##

#

#

#

##

#

#

#

####

##

###

######

#####

##

###

##

#####

##

##

#

#

###

#

#

#

##

###

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

###

##

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

###

##

###

###

########

#

####

####

##

###

#

#

###

#

###

###

#

#

#

#

#

##

########

######

#

#

#

#

#

##

#

#

#

####

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

####

#

#

#

#

##

#

#

#

##

#

#

#

#####

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

##

#

#

#

#

#

#

##

###

#

##

##

#

###

##

##

#

#

####

#

####

####

##

###

##

###

##

#

#

##

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

##

#

#

##

#

#

##

##

##

#

#

#

#

#

##

##

#

#

#

#

#

#

###

#

###

#

#

#

##

#

####

########

###

####

##

##

#

#

##

#######

#

######

##

##

####

#

#####

###

###

#

#

##

#

#

#

#

#

#####

#

#####

##

##

###

##

#

#####

####

####

####

#

##

##

#

############

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

##

######

###

####

#

##

#

#

####

######

#####

#

####

###

#####

#

####

########

###

#

#

#

#

#

##

####

####

#

#

#

####

#

#

#

#

#

###

#

##

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

####

#

#

#

#

#

#

#

#

#

#

#

#

#

#####

#

#

#

###

###

#

#

##

#

##

#

##

#

##

###

#

###

#

###

#

#

######

#

#

##

####

#

#

#

###

##

#

##

###

#

##

####

#

#

#

#

#

#

#

#

##

#

###

#

##

#

#

#

#

#

###

####

#

#

#

#

#

#

#

#

#

#

##

#

##

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

##

##

##

#

##

#

#

#

#

###

###

#

#

#

#

##

#

#

##

##

#

#

#

#

#

#

###

####

#

##

##

#

##

##

#

#

#

##

#

#

#

#

#

#

###

##

#

##

###

#

####

#

##

###########

#

#

#

#

#

#

##

#

#

#

#

#

#

#

####

#

####

###

#

##

#

#####

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#

#

#

###

##

##

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

######

#####

##

#

#

##

##

#

#

#

##

#

#

#

#

##

###

#

####

##

#

###

#

###

#############

###

###

##

##

#

##

#

#

#

#

#

#

##

##

#

###

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

##

#

####

#

#

#

#

#

#

#

###

###

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

###

##

#

##

#

#

#

#

#

##

#

#

#

#

#

######

#

#

##

#

#

#

#

#

##

#

####

#

#

#

##

###

#

##

##

###

##

#

###

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

###

#

#

##

#

#

#

##

#

#

#

#

#

#

#

##

#

##

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#######

#

#

#

#

#

#

##

#

##

##

###

#

#

#

#

#####

#

#

#

##

#

#

#

#

#

##

#

##

#

#

####

##

##

##

#

#

#

#

##

##

#

#

#

#

##

#

#

#

#

#

#

###

###

#

#

###

#

#

#

#

#

#

##

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

##

#

#

###

#

##

#

#

#

#

#

#

#

###

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

##

###

#

#

##

####

##

###

#

#

#

####

##

####

##

##

##

#

##

###

#

#

###

#

#

#

#

#

#

####

##

#

#

##

#

##

##

####

###

########

##

###

#########

#

###

#

#

##

##

####

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#####

#######

#

##

##

#

#

#

###

###

#####

##

##

#########

########

##

##

#

#######

#####

##

#

##

#

##

#

####

#

#

###

#

#

#

#

##

#

#

###

###

#

##

###

###

###

##

##

#

#

##

#

#

####

######

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#####

##

##

#

#

#

###

#

#

#

#

#

##

#

####

######

##

####

##########

###

#######

#

####

#

#

######

##

###

#

##

#

#

#

##

####

#

#

####

##

####

#

#

##

#

#

#

#

##

###

#

#

#

##

#

#

##

#

##

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#####

###

#

#

#

###

##

#######

#

#

##

###

#

####

##

#

##

#

#

##

#

##

#

######

#

#

######

##############

#

#

###

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

##

#######

#

##

#

#

##

##

##

##

#

####

##

#

###

#

#

#

##

##

###

###

##

#

#

#

#

#

##

#

#

###

#

#

##

#

#

#

##

#

#

##

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

##

###

#

#

#

#

##

##

#

#

#

##

#

#

#

#

#

#

#

###

#

#

#

#

#

##

#

##

#

#

####

#####

##

###

##

###

#

###

##

######

###

##

######

#

#

#

#

#

#

##

#

#

#

##

###

#

#

##

###

##

##

###

###

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

###

#

##

#

#

#

##

####

#

#

#

#

#

###

###

##

##

##

######

##

#

#

#

##

#

#

##

###

##

#

#

##

#

##

#

#

#

#

#

##

#

#

#

#

##

#

#

###

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

###

#

##

#

#

#

###

###

#

##

#

#

##

#

#

###

#

##

##

##

#

#

######

##

#

####

#

#

#

#

#

#

#

#

##

##

#

#

##

###

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

##

#

##

#

#

#

##

##

#

#

##

#

###

##

#

#

#

#

#

##

#

###

#

#

#

#

#

##

#

#

#

#

#

##

#

###

###########

###

#

##

#

##

#

#

#

#

#

#

#

#

#

#

######

###

#

##

##

#

###

##

##

#

#

#

#

##

####

##

##

#

##

#

#

#

#

#

####

#

#

#

#

####

#

###

#

##

######

###

##

#

#

#

#####

#

##

#

###

####

#

####

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

####

#

#

#

#

##

#

#

#

##

##

#

##

######

####

#

#

#

#

##

#

##

####

####

######

#

####

##

####

#

#

#

###

#

#

##

##

###

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

##

#

#

#

#

#

###

#

#

##

#

#

#

##

#

##

##

#

####

##

##

###

#

#

#

##

##

##

###

#

#

#

#

#

#

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

###

#

#

#

#

######

####

#

#

##

#

#####

#

##

#

###

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

####

#

########

##

##

##

#

#

##

######

#

###

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

#

#

###

###

#

#

#

#

#

#####

#

##

##

#

##

#

#

#

###

#############

#

####

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

####

####

##

#

###

#

##

#

##

#

###

#

#

##

##

#

##

##

#

#

##

#

#

#

#

#

#

##############

####

########

##

##

#

##

#

#

#

##

##

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

####

#

##

#

#

#

#

##

####

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#####

###

#

##

#

##

#

#

#

#

#

####

#

#

#

#

#

###

#

#

#

#

#

#

#

########

##

#

###

###

####

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

##

##

###

####

#

##

##

##

###

################

#

##

#

#

#

#

###

#

#

####

##

##########

#####

#

#

##

####

#

#

#

##

#

#

#####

#

#

#

#

#

#

##

####

##

#

###

#

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

##

#

#

###

#

#

#

#

#

#

#

#

#

##

###

#

#

#

#

#######

#

#

#

#########

#

#

##

##

###

#

##

##

########

######

#

###

#

#

#

###

##

#

#

#

#

##

#

##

##

##

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

###

#

##

#

##

#

####

#

#

####

###

#

#

#

##

####

###

#

###

##

#

##

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

####

##

####

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

#

#

#

###

#

###

###

##

#

#

#

###

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

###

#

#

##

#

#

#

#

#

#

#

#

##

#

##

#

####

##

##

#

#

#

#

#

###

###

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

##

#

#

#

#

#

##

#

#

#

###

#

###

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

###

#

#

#

#

#

#

#

##

#

#####

####

#

#

#####

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

##

#

#

#

##

#

#

#

#

#

####

##

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

###

#

##

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

##

#

#

#

###

#

#

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

##

#

#

#

#

#

#

#

#

###

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

##

#

#

#

#

#

#

#

#

#

#

###

##

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

##

#

#

#

#

#

#

#

#

#

#

#

#

#

#Y#Y

#Y

#Y

Juno Beach Turtle Nesting Data 1998-2000Layers: PhotographsGPS EmergencesINB Zones

Page 29: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Statistics

Consider emergence locations along a line.Want “intensity” function (number of emergences per unit area).Estimate intensity for each year via kernel estimators.H0: Intensities the same for each year.H0: ratio = 1 everywhere along beach.

Page 30: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Significance

Monte Carlo envelopes.“Random labelling”.Keep emergence locations, randomly assign year to each location.Calculate ratio of intensities to assess amount of “wiggle” under H0.

Page 31: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Intensities

Log(ratio of intensities)

Page 32: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Software

Software:Input: .dbf file for a particular year.Processing: R + splancs (spatial point process add on library)

• scan for location and species information in .dbf file

• calculate intensities, ratios, and Monte Carlo confidence bands.

Output: Bitmap figures that can be layered into ArcView GIS with aerial photographs, and GPS locations.

Page 33: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Extract species, location“Linearize” beach (loess)

Project points to curveKernel estimationRatio calculation

Random labelling simulationsCreate .bmp figure

GPS data to .dbf file

Extract species,location

.bmp to ArcView for display

http://cran.r-project.org/

Page 34: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Proof of concept: Bud applies softwaredeveloped for Juno Beach to assessimpact of beach renourishment projecton different stretch ofbeach.

Conclusion: Turtles move south of impactedarea.

Bud’s graphic >>>>>>

Page 35: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Pros to agile GIS

Provides targeted (lean) software for user.Particularly useful for repeated tasks.Built from components rather than forcing large package to do something it wasn’t designed to do.Each user uses majority of functionality of software.Free and open-source software (http://sourceforge.net/).

Page 36: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Cons to agile GIS

Constantly under development.Multiple tasks?Lower level programming for developers.Free software.

Page 37: “Agile GIS”: Building application- specific spatial analytic software …web1.sph.emory.edu/users/lwaller/AgileGIS.Waller.pdf · 2002-10-23 · “Agile GIS”: Building application-specific

Conclusions

Result: Agile GIS tools for environmental justice/wildlife monitoring.Developing idea.Brings methodology directly to end user.Attractive alternative to mastering two domains.

www.sph.emory.edu/~lwaller